:root{color:#132421;background:#f4fbf6;font-family:ui-rounded,Avenir Next,Hiragino Sans,Noto Sans CJK SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.app-shell{min-height:100dvh;padding:max(18px,env(safe-area-inset-top)) 12px max(28px,env(safe-area-inset-bottom));background:linear-gradient(135deg,rgba(6,199,85,.18),transparent 30%),linear-gradient(315deg,rgba(31,135,255,.12),transparent 34%),#f4fbf6}.hero,.workspace,.result-panel{width:min(100%,980px);margin-inline:auto}.hero{padding:8px 2px 18px}.hero-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.brand-pill{display:inline-flex;align-items:center;gap:9px;color:#087a45;font-size:13px}.brand-pill span{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:#06c755;color:#fff;font-weight:950;box-shadow:0 12px 28px #06c7553d}.brand-pill strong{font-weight:950}.locale-select{min-width:128px;padding:6px;border:1px solid rgba(32,75,68,.12);border-radius:8px;background:#ffffffb8;display:grid;gap:2px}.close-liff-button{margin-top:12px;min-height:38px;padding:0 12px;border:0;border-radius:8px;background:#142523;color:#fff;display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:950}.close-liff-button svg{width:16px;height:16px}.locale-select span{color:#60736f;font-size:10px;font-weight:900;text-transform:uppercase}.locale-select select{border:0;background:transparent;color:#142523;font:inherit;font-size:13px;font-weight:950}.hero h1{margin:16px 0 8px;font-size:clamp(44px,12vw,84px);line-height:.88;letter-spacing:0}.hero p{max-width:590px;margin:0;color:#506763;font-size:16px;font-weight:800;line-height:1.55}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px;align-items:start}.preview-panel,.controls,.result-panel{border:1px solid rgba(32,75,68,.12);border-radius:8px;background:#ffffffe6;box-shadow:0 18px 52px #1425231a}.preview-panel{overflow:hidden;overscroll-behavior:contain}.preview-stage{min-height:560px;padding:28px;display:grid;place-items:center;background:linear-gradient(90deg,rgba(20,37,35,.045) 1px,transparent 1px),linear-gradient(0deg,rgba(20,37,35,.045) 1px,transparent 1px),#edf7f2;background-size:24px 24px}.photo-frame{position:relative;width:min(72vw,310px);aspect-ratio:var(--photo-ratio);overflow:hidden;touch-action:none;overscroll-behavior:contain;border:1px solid rgba(20,37,35,.22);border-radius:4px;background:var(--photo-bg);box-shadow:0 24px 60px #14252338}.source-photo{position:absolute;top:50%;left:50%;width:100%;height:100%;object-fit:cover;transform-origin:center;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none;will-change:transform}.rendered-preview-photo{width:100%;height:100%;display:block;object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none}.empty-upload{width:100%;height:100%;border:0;background:transparent;color:#23725e;display:grid;place-items:center;align-content:center;gap:10px;font-weight:950}.empty-upload svg{width:42px;height:42px}.status-row{min-height:52px;padding:12px 16px;display:flex;justify-content:space-between;gap:10px;align-items:center;color:#506763;font-size:13px;font-weight:900}.controls{padding:12px}.file-input{display:none}.upload-button,.primary-action,.secondary-action,.share-action{width:100%;min-height:48px;border:0;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:15px;font-weight:950}.upload-button,.share-action{background:#06c755;color:#fff;box-shadow:0 14px 30px #06c7553d}.control-group{margin-top:12px;padding:12px;border:1px solid rgba(32,75,68,.12);border-radius:8px;background:#fbfefd}.group-title{margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:10px}.group-title strong{font-size:14px;font-weight:950}.group-title span{color:#6a7c78;font-size:12px;font-weight:850}.with-icon{display:inline-flex;align-items:center;gap:7px}.size-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.size-option{min-height:72px;padding:10px;border:1px solid rgba(32,75,68,.14);border-radius:8px;background:#fff;color:#1c3631;text-align:left}.size-option strong,.size-option span{display:block}.size-option strong{font-size:13px;font-weight:950}.size-option span{margin-top:4px;color:#667874;font-size:12px;font-weight:850}.size-option.selected{border-color:#06c7558f;background:#eafff2;box-shadow:inset 0 0 0 1px #06c7552e}.custom-size-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.number-row{min-width:0;min-height:50px;padding:8px 10px;border:1px solid rgba(32,75,68,.14);border-radius:8px;background:#fff;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center}.number-row span,.number-row small{color:#506763;font-size:12px;font-weight:950}.number-row select{min-width:0;width:100%;border:0;border-bottom:1px solid rgba(32,75,68,.18);border-radius:0;background:transparent;color:#142523;font-size:16px;font-weight:950;text-align:right}.reset-button{width:34px;height:34px;border:1px solid rgba(32,75,68,.15);border-radius:999px;background:#fff;color:#315b55}.slider-row{min-height:38px;display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:10px;color:#506763;font-size:13px;font-weight:950}.slider-row input{accent-color:#06c755}.action-grid{margin-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.action-grid .primary-action,.action-grid .share-action{grid-column:1 / -1}.primary-action{background:#142523;color:#fff}.secondary-action{background:#e9f4f1;color:#24433e}.primary-action:disabled,.secondary-action:disabled,.share-action:disabled{opacity:.48}.upload-button svg,.primary-action svg,.secondary-action svg,.share-action svg,.reset-button svg,.with-icon svg{width:18px;height:18px}.result-panel{margin-top:14px;padding:16px;display:grid;grid-template-columns:minmax(0,.9fr) minmax(220px,.45fr);gap:18px;align-items:center}.result-panel h2{margin:0 0 6px;font-size:20px}.result-panel p{margin:0;color:#506763;font-size:13px;font-weight:800;line-height:1.5}.result-images{display:grid;align-items:center;justify-content:center}.result-images img{width:min(100%,260px);max-height:320px;border:1px solid rgba(20,37,35,.14);border-radius:4px;background:#fff;object-fit:contain;box-shadow:0 16px 34px #1425231f}.print-panel{width:min(100%,980px);margin:14px auto 0;padding:16px;border:1px solid rgba(32,75,68,.12);border-radius:8px;background:#ffffffeb;box-shadow:0 18px 52px #1425231a}.print-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.print-header h2{margin:0 0 6px;font-size:20px}.print-header p{max-width:620px;margin:0;color:#506763;font-size:13px;font-weight:800;line-height:1.5}.print-header>span{padding:7px 10px;border-radius:999px;background:#eafff2;color:#087a45;white-space:nowrap;font-size:12px;font-weight:950}.print-grid{margin-top:14px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:12px}.print-grid fieldset{min-width:0;margin:0;padding:12px;border:1px solid rgba(32,75,68,.12);border-radius:8px;background:#fbfefd}.print-grid legend{padding:0 6px;color:#142523;font-size:13px;font-weight:950}.store-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.paper-options{display:grid;gap:8px}.store-option,.paper-option{min-height:62px;padding:10px;border:1px solid rgba(32,75,68,.14);border-radius:8px;background:#fff;display:grid;gap:4px;color:#1c3631}.store-option{grid-template-columns:46px minmax(0,1fr);align-items:center;gap:10px}.store-option input,.paper-option input{position:absolute;opacity:0;pointer-events:none}.store-option strong,.paper-option strong{font-size:13px;font-weight:950}.store-logo-wrap{width:46px;height:34px;border:1px solid rgba(32,75,68,.1);border-radius:6px;background:#fff;display:grid;place-items:center;overflow:hidden}.store-logo-wrap img{max-width:40px;max-height:24px;object-fit:contain}.store-option span,.paper-option span,.provider-note{color:#667874;font-size:12px;font-weight:850}.store-option.selected,.paper-option.selected{border-color:#06c7558f;background:#eafff2;box-shadow:inset 0 0 0 1px #06c7552e}.provider-note{display:block;margin-top:10px;line-height:1.45}.reservation-actions{margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.reservation-actions .primary-action,.reservation-actions .secondary-action{width:100%}.credential-card{margin-top:14px;padding:14px;border:1px solid rgba(6,199,85,.18);border-radius:8px;background:linear-gradient(135deg,rgba(6,199,85,.1),transparent 34%),#fff;display:grid;grid-template-columns:minmax(0,1fr) 132px;gap:14px;align-items:center}.reservation-number{padding:12px;border-radius:8px;background:#f1fbf6}.reservation-number span{display:block;color:#667874;font-size:12px;font-weight:900}.reservation-number strong{display:block;margin-top:4px;color:#0b6f65;font-size:clamp(24px,7vw,42px);line-height:1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-weight:950}.qr-code{width:132px;height:132px;padding:8px;border:1px solid rgba(32,75,68,.12);border-radius:8px;background:#fff}.credential-card dl{grid-column:1 / -1;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.credential-card dl div{padding:10px;border-radius:8px;background:#fff9f0}.credential-card dt{color:#667874;font-size:12px;font-weight:900}.credential-card dd{margin:4px 0 0;color:#142523;font-size:13px;font-weight:950}.credential-button{grid-column:1 / -1;min-height:46px;border:0;border-radius:8px;background:#142523;color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:14px;font-weight:950}.credential-button svg{width:18px;height:18px}.debug-panel{margin-top:14px;padding:12px;border:1px solid rgba(20,37,35,.14);border-radius:8px;background:#f7faf8}.debug-panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.debug-panel h2{margin:0;color:#142523;font-size:16px}.debug-panel-header span{color:#667874;font-size:12px;font-weight:800}.debug-alert{margin-top:10px;padding:10px;border:1px solid rgba(255,126,95,.28);border-radius:8px;background:#fff7f2;display:grid;gap:6px}.debug-alert strong{color:#7a351c;font-size:13px}.debug-alert span{color:#674c42;font-size:12px;line-height:1.45}.debug-alert a{width:fit-content;min-height:34px;padding:0 12px;border-radius:8px;background:#142523;color:#fff;display:inline-flex;align-items:center;text-decoration:none;font-size:12px;font-weight:900}.debug-actions{margin-top:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.debug-actions button{min-height:38px;border:1px solid rgba(20,37,35,.16);border-radius:8px;background:#fff;color:#142523;font-size:12px;font-weight:900}.debug-actions button:disabled{cursor:not-allowed;opacity:.52}.debug-log{margin:10px 0 0;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word;border-radius:8px;background:#101918;color:#d9fff0;padding:10px;font-size:11px;line-height:1.45}.qr-page{min-height:100svh;padding:22px;background:linear-gradient(135deg,rgba(6,199,85,.16),transparent 34%),linear-gradient(315deg,rgba(255,126,95,.12),transparent 38%),#f6fbf8;display:grid;place-items:center}.qr-page-card{width:min(100%,420px);padding:18px;border:1px solid rgba(6,199,85,.18);border-radius:8px;background:#fffffff5;box-shadow:0 22px 70px #14252324;display:grid;gap:16px}.qr-page-heading{display:grid;gap:6px}.qr-page-store{display:flex;align-items:center;gap:10px}.qr-page-store img{width:42px;height:42px;border-radius:8px;border:1px solid rgba(32,75,68,.12);background:#fff;object-fit:contain}.qr-page-heading span,.qr-page-number span,.qr-page-meta span{color:#607672;font-size:12px;font-weight:950}.qr-page-heading h1{margin:0;color:#10201f;font-size:26px;line-height:1.08}.qr-page-heading p{margin:0;color:#1e3d37;font-size:14px;font-weight:900}.qr-page-number,.qr-page-meta{padding:14px;border-radius:8px;background:#f1fbf6;display:grid;gap:4px}.qr-page-number strong{color:#0b6f65;font:950 36px/1 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.qr-page-code{width:min(100%,300px);justify-self:center;padding:14px;border:1px solid rgba(32,75,68,.12);border-radius:8px;background:#fff}.qr-page-meta strong{color:#10201f;font-size:18px}.qr-page-button{min-height:48px;border-radius:8px;background:#142523;color:#fff;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:950}@media(max-width:820px){.app-shell{padding-inline:10px}.workspace{grid-template-columns:1fr;gap:8px}.preview-panel{position:sticky;top:max(8px,env(safe-area-inset-top));z-index:4}.preview-stage{min-height:216px;padding:12px;background-size:18px 18px}.photo-frame{width:min(48vw,172px);box-shadow:0 14px 34px #1425232e}.status-row{min-height:38px;padding:8px 12px;font-size:12px}.result-panel{grid-template-columns:1fr}.hero-topline,.print-header{align-items:stretch;flex-direction:column}.locale-select{width:100%}.print-grid,.credential-card,.credential-card dl,.reservation-actions{grid-template-columns:1fr}.debug-panel-header{align-items:flex-start;flex-direction:column}.debug-actions{grid-template-columns:1fr}.qr-code{justify-self:center}}@media(max-width:380px){.hero h1{font-size:40px}.custom-size-grid{grid-template-columns:1fr}}
