@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1zakzi6q17d4o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.2htf8h-pf57mm.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.3skwie1wjplzh.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.3zhbgtelpa5ua.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3vf5yzuqk3fsd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1wmoa0e_blxrz.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/04c5164763c40239-s.1zakzi6q17d4o.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/26f284dcc38c84c0-s.2htf8h-pf57mm.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/7e7f32a39836f228-s.3skwie1wjplzh.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/fa39153a3fc630ba-s.3zhbgtelpa5ua.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3vf5yzuqk3fsd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/051742360c26797e-s.p.1wmoa0e_blxrz.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_a67bf4ed-module__9gygEa__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_a67bf4ed-module__9gygEa__variable{--font-mono-loaded:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--font-sans:var(--font-sans-loaded,"Zen Kaku Gothic New"), -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans TC", sans-serif;--font-mono:var(--font-mono-loaded,"JetBrains Mono"), ui-monospace, SFMono-Regular, Menlo, monospace;--fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:18px;--fs-2xl:22px;--fs-3xl:26px;--fs-4xl:32px;--fs-5xl:38px;--fw-normal:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-extrabold:800;--fw-black:900;--lh-tight:1.2;--lh-snug:1.4;--lh-base:1.6;--lh-relaxed:1.8;--sp-2:2px;--sp-4:4px;--sp-6:6px;--sp-8:8px;--sp-10:10px;--sp-12:12px;--sp-16:16px;--sp-20:20px;--sp-24:24px;--sp-32:32px;--sp-40:40px;--sp-48:48px;--sp-64:64px;--sp-80:80px;--radius-xs:2px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:24px;--radius-full:100px;--radius:var(--radius-sm);--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 2px 8px #0000000f;--shadow-lg:0 8px 24px #00000014;--shadow-xl:0 12px 40px #00000029;--shadow:var(--shadow-md);--c-bg:#faf8f3;--c-bg-alt:#f0ede4;--c-paper:#fff;--c-ink:#1a1a1a;--c-ink-soft:#5a5a5a;--c-ink-mute:#999;--c-line:#e5e1d4;--c-line-strong:#c8c2b0;--c-accent:#d63384;--c-accent-strong:#b82a6f;--c-accent-soft:#ffe5ee;--c-ok:#2d8659;--c-ok-strong:#226d48;--c-ok-soft:#d8f0e2;--c-warn:#c2410c;--c-warn-soft:#ffe8d6;--c-warn-ink:#9a3412;--c-danger:#dc2626;--c-danger-soft:#fee2e2;--c-danger-line:#fca5a5;--c-amber:#f59e0b;--c-amber-soft:#fef3c7;--c-amber-line:#fed7aa;--c-amber-ink:#92400e;--c-violet:#7c3aed;--c-violet-soft:#ddd6fe;--c-violet-ink:#5b21b6;--c-new:#16a34a;--c-used:#ea580c;--c-overlay:#00000080;--c-scrim-strong:#000000a6;--c-on-dark:#fff;--c-on-dark-soft:#ffffff40;--bg:var(--c-bg);--bg-alt:var(--c-bg-alt);--paper:var(--c-paper);--ink:var(--c-ink);--ink-soft:var(--c-ink-soft);--ink-mute:var(--c-ink-mute);--line:var(--c-line);--line-strong:var(--c-line-strong);--accent:var(--c-accent);--accent-soft:var(--c-accent-soft);--ok:var(--c-ok);--ok-soft:var(--c-ok-soft);--warn:var(--c-warn);--warn-soft:var(--c-warn-soft);--z-under:0;--z-content:1;--z-raised:2;--z-dropdown:10;--z-fab:50;--z-nav:100;--z-modal:200;--z-toast:300;--touch-target:44px;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--dur-fast:.15s;--dur-base:.2s;--dur-slow:.3s;--ease:cubic-bezier(.4, 0, .2, 1);--container-max:1600px;--container-gutter:80px;--nav-height:64px;--nav-height-sm:56px;--cart-bar-height:68px;--admin-sidebar-w:232px;--admin-bottomnav-h:56px}
*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);line-height:var(--lh-base);font-weight:var(--fw-normal);flex-direction:column;min-height:100dvh;display:flex}.app-main{flex:1;min-width:0}.sans{font-family:var(--font-sans)}.mono{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
.topnav{background:var(--paper);border-bottom:1px solid var(--line);z-index:var(--z-nav);position:sticky;top:0}.topnav-inner{max-width:min(var(--container-max), calc(100vw - var(--container-gutter) * 2));padding:0 var(--sp-24);height:var(--nav-height);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.brand{font-weight:var(--fw-extrabold);letter-spacing:.02em;align-items:center;gap:var(--sp-10);cursor:pointer;color:var(--ink);font-size:20px;text-decoration:none;display:flex}.brand-mark{background:var(--ink);width:32px;height:32px;color:var(--bg);font-size:var(--fs-xl);font-weight:var(--fw-black);border-radius:var(--radius-xs);flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:flex}.role-switch{gap:var(--sp-4);background:var(--bg-alt);padding:var(--sp-4);border-radius:var(--radius);display:flex}.role-btn{padding:var(--sp-8) 18px;font-family:inherit;font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;border-radius:var(--radius-xs);color:var(--ink-soft);transition:all var(--dur-fast);white-space:nowrap;background:0 0;border:none;text-decoration:none}.role-btn.active,.role-btn[data-active=true]{background:var(--ink);color:var(--bg)}.topnav-actions{gap:var(--sp-12);flex-shrink:0;align-items:center;display:flex}.topnav-status{font-size:var(--fs-xs);color:var(--ink-mute);white-space:nowrap}.topnav-logout{font-size:var(--fs-xs);white-space:nowrap}.brand-text{white-space:nowrap}.role-btn-short{display:none}.role-btn-long{display:inline}.page-container{max-width:min(var(--container-max), calc(100vw - var(--container-gutter) * 2));padding:var(--sp-32) var(--sp-24) var(--sp-80);margin:0 auto}@media (max-width:999px){.page-container,.topnav-inner{max-width:100%}}.page-header{margin-bottom:var(--sp-32);justify-content:space-between;align-items:flex-end;gap:var(--sp-24);flex-wrap:wrap;display:flex}.page-title{font-size:var(--fs-4xl);font-weight:var(--fw-extrabold);letter-spacing:-.01em;line-height:var(--lh-tight)}.page-subtitle{color:var(--ink-soft);font-size:var(--fs-md);margin-top:var(--sp-4)}.crumb{font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:var(--sp-8);font-weight:var(--fw-medium)}.section-title{font-size:var(--fs-2xl);font-weight:var(--fw-bold);margin-bottom:var(--sp-16);align-items:baseline;gap:var(--sp-12);display:flex}.section-title .count{font-size:var(--fs-md);font-weight:var(--fw-normal);color:var(--ink-mute)}.section+.section{margin-top:48px}
.btn{align-items:center;gap:var(--sp-8);padding:var(--sp-10) var(--sp-20);border:1px solid var(--ink);background:var(--ink);color:var(--bg);font-family:inherit;font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;border-radius:var(--radius);transition:all var(--dur-fast);white-space:nowrap;text-decoration:none;display:inline-flex}.btn:hover{background:#000;border-color:#000}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-outline{color:var(--ink);background:0 0}.btn-outline:hover{background:var(--ink);color:var(--bg)}.btn-ghost{border-color:var(--line-strong);color:var(--ink-soft);background:0 0}.btn-ghost:hover{color:var(--ink);border-color:var(--ink);background:var(--paper)}.btn-accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn-accent:hover{background:#b82a6f;border-color:#b82a6f}.btn-danger{color:var(--warn);border-color:var(--warn);background:0 0}.btn-danger:hover{background:var(--warn);color:#fff}.btn-success{background:var(--ok);border-color:var(--ok);color:#fff}.btn-success:hover{background:#226d48;border-color:#226d48}.btn-sm{gap:4px;padding:6px 12px;font-size:13px}.btn-lg{padding:14px 28px;font-size:15px}.btn-xl{padding:16px 32px;font-size:16px;font-weight:600}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--sp-24)}.panel-title{font-size:17px;font-weight:var(--fw-bold);margin-bottom:var(--sp-16);align-items:center;gap:var(--sp-12);display:flex}.panel-title:before{content:"";background:var(--accent);flex-shrink:0;width:4px;height:18px}.form-group{margin-bottom:20px}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-row-3{grid-template-columns:1fr 1fr 1fr;gap:16px;display:grid}label{font-size:var(--fs-sm);font-weight:var(--fw-medium);margin-bottom:var(--sp-6);color:var(--ink-soft);display:block}label .req{color:var(--accent)}input[type=text],input[type=number],input[type=tel],input[type=email],input[type=date],input[type=datetime-local],textarea,select{width:100%;padding:var(--sp-10) 14px;border:1px solid var(--line-strong);border-radius:var(--radius);font-family:inherit;font-size:var(--fs-md);background:var(--paper);transition:all var(--dur-fast);color:var(--ink)}input:focus,textarea:focus,select:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px #0000000d}textarea{resize:vertical;min-height:80px}.help-text{color:var(--ink-mute);margin-top:4px;font-size:12px}.radio-group{gap:var(--sp-8);flex-wrap:wrap;display:flex}.radio-option{flex:1;min-width:120px;position:relative}.radio-option input[type=radio]{opacity:0;position:absolute}.radio-option label{padding:var(--sp-12) var(--sp-16);border:1.5px solid var(--line-strong);border-radius:var(--radius);cursor:pointer;text-align:center;font-weight:var(--fw-medium);color:var(--ink-soft);font-size:var(--fs-md);transition:all var(--dur-fast);margin:0;display:block}.radio-option input[type=radio]:checked+label{border-color:var(--ink);background:var(--ink);color:var(--bg)}.table-wrap{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);overflow:auto hidden}table{border-collapse:collapse;width:100%;font-size:var(--fs-md)}th{text-align:left;padding:14px var(--sp-16);background:var(--bg-alt);border-bottom:1px solid var(--line);font-weight:var(--fw-semibold);font-size:var(--fs-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}td{padding:14px var(--sp-16);border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:none}tr.row-hover:hover{background:var(--bg);cursor:pointer}tr.row-clickable:focus-visible{outline:2px solid var(--accent,#6366f1);outline-offset:-2px}.orders-table td{white-space:nowrap}.orders-table td.allow-wrap{white-space:normal}.drag-handle{cursor:grab;color:var(--ink-mute);padding:var(--sp-4) var(--sp-6);border-radius:var(--radius-sm);touch-action:none;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.drag-handle:hover{color:var(--ink);background:var(--bg-alt)}.drag-handle:active{cursor:grabbing}.campaign-actions-bar{justify-content:space-between;align-items:center;gap:var(--sp-16);flex-wrap:wrap;display:flex}.campaign-actions-left,.campaign-actions-right{gap:var(--sp-8);flex-wrap:wrap;display:flex}.campaign-actions-right{justify-content:flex-end}@media (max-width:768px){.campaign-actions-left,.campaign-actions-right{flex-basis:100%}.campaign-actions-right{justify-content:flex-start}}.stat-grid{gap:var(--sp-16);margin-bottom:var(--sp-32);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.stat-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--sp-20)}.stat-label{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:var(--sp-8)}.stat-value{font-size:30px;font-weight:var(--fw-extrabold);letter-spacing:-.02em}.badge{align-items:center;gap:var(--sp-4);padding:3px var(--sp-10);font-size:var(--fs-xs);font-weight:var(--fw-medium);border-radius:var(--radius-full);background:var(--bg-alt);color:var(--ink-soft);white-space:nowrap;display:inline-flex}.badge-active{background:var(--ok-soft);color:var(--ok)}.badge-closed{background:var(--bg-alt);color:var(--ink-mute)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-accent{background:var(--accent-soft);color:var(--accent)}.badge-draft{color:#92400e;background:#fef3c7}.badge-ready{color:#9a3412;background:#fed7aa}.badge-completed{color:#5b21b6;background:#ddd6fe}.badge-soldout{color:var(--c-danger);border:1.5px solid var(--c-danger);padding:var(--sp-2) var(--sp-8);border-radius:var(--radius-sm);font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.1em;background:var(--c-paper);font-family:var(--font-mono);display:inline-block}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.dot-ok{background:var(--ok)}.dot-warn{background:var(--warn)}.dot-mute{background:var(--ink-mute)}.field-error{font-size:var(--fs-xs);color:var(--c-danger);margin-top:var(--sp-4);align-items:center;gap:var(--sp-4);display:flex}input[aria-invalid=true],textarea[aria-invalid=true],select[aria-invalid=true]{border-color:var(--c-danger)}input[aria-invalid=true]:focus,textarea[aria-invalid=true]:focus{box-shadow:0 0 0 3px #dc26261f}
.campaign-grid{gap:var(--sp-20);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-auto-flow:row;display:grid}.campaign-card{border-radius:var(--radius-md);cursor:pointer;transition:all var(--dur-base);border:1px solid var(--line);background:var(--paper);color:inherit;text-decoration:none;display:block;overflow:hidden}.campaign-card:hover{box-shadow:var(--shadow-lg);border-color:var(--ink);transform:translateY(-3px)}.campaign-card.is-closed,.campaign-card.is-completed{opacity:.7}.campaign-card-cover{aspect-ratio:16/9;padding:var(--sp-20);color:#fff;flex-direction:column;justify-content:flex-end;display:flex;position:relative;overflow:hidden}.campaign-card-cover:after{content:"";pointer-events:none;background:linear-gradient(#0000000d 0%,#000000a6 100%);position:absolute;inset:0}.campaign-card-cover>*{z-index:1;position:relative}.campaign-card-status{z-index:var(--z-raised);position:absolute;top:12px;left:12px}.campaign-card-title{font-weight:var(--fw-extrabold);font-size:var(--fs-2xl);letter-spacing:-.01em;line-height:1.25}.campaign-card-title-mobile{display:none}.campaign-card-body{padding:var(--sp-16) var(--sp-20);font-size:var(--fs-sm);justify-content:space-between;align-items:center;display:flex}.campaign-card-meta{color:var(--ink-soft)}.shop-header{border-radius:var(--radius-md);margin-bottom:var(--sp-32);color:#fff;flex-direction:column;justify-content:flex-end;min-height:200px;display:flex;position:relative;overflow:hidden}.shop-header-bg{z-index:0;position:absolute;inset:0}.shop-header-bg img{object-fit:cover;width:100%;height:100%}.shop-header-overlay{z-index:var(--z-content);background:linear-gradient(#0000001a 0%,#000000b3 100%);position:absolute;inset:0}.shop-header-content{z-index:2;padding:48px 32px;position:relative}.shop-tag{padding:var(--sp-4) var(--sp-12);background:var(--accent);border-radius:var(--radius-full);font-size:var(--fs-2xs);font-weight:var(--fw-semibold);letter-spacing:.1em;margin-bottom:var(--sp-12);display:inline-block}.shop-tag.is-closed{background:#ffffff40}.shop-tag.is-stock{background:#2d8659}.shop-tag.is-completed{background:#7c3aed}.shop-tag.is-ready{background:#f59e0b}.shop-name{font-size:var(--fs-5xl);font-weight:var(--fw-extrabold);margin-bottom:var(--sp-8);line-height:var(--lh-tight);letter-spacing:-.02em}.shop-meta{gap:var(--sp-24);font-size:var(--fs-md);opacity:.9;margin-top:var(--sp-12);flex-wrap:wrap;display:flex}.shop-meta-item{align-items:center;gap:6px;display:flex}.product-grid{gap:var(--sp-20);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.product-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);transition:all var(--dur-base);flex-direction:column;display:flex;overflow:hidden}.product-card:hover:not(.disabled){border-color:var(--ink);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.product-card.disabled{opacity:.55}.product-card.sold-out .product-img img{filter:grayscale()brightness(.78)}.product-card.sold-out .product-name{color:var(--ink-mute)}.product-card.sold-out .product-price{color:var(--ink-mute);text-decoration:line-through}.product-img{aspect-ratio:1;background:var(--bg-alt);width:100%;color:var(--ink-mute);font-size:var(--fs-sm);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.product-img img{object-fit:cover;width:100%;height:100%;transition:opacity var(--dur-base)}.product-condition-tag{padding:var(--sp-4) var(--sp-10);border-radius:var(--radius-sm);font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.04em;background:var(--c-new);color:var(--c-paper);z-index:var(--z-raised);position:absolute;top:8px;left:8px;box-shadow:0 1px 3px #0000002e}.product-condition-tag.used{background:var(--c-used);color:var(--c-paper)}.product-condition-row{margin-bottom:var(--sp-6);line-height:1}.product-condition-chip{border-radius:var(--radius-sm);font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.04em;white-space:nowrap;padding:3px 9px;display:inline-block}.product-condition-chip.is-new{background:var(--c-new);color:var(--c-paper)}.product-condition-chip.is-used{background:var(--c-used);color:var(--c-paper)}.product-limited-tag{padding:var(--sp-4) 9px;border-radius:var(--radius-sm);font-size:var(--fs-2xs);font-weight:var(--fw-bold);color:#fff;z-index:var(--z-raised);letter-spacing:.05em;text-overflow:ellipsis;white-space:nowrap;background:#fb923c;max-width:60%;position:absolute;top:8px;right:8px;overflow:hidden;box-shadow:0 1px 3px #00000026}.sold-out-overlay{pointer-events:none;z-index:var(--z-dropdown);background:0 0;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.sold-out-stamp{color:var(--c-paper);background:var(--c-danger);font-weight:var(--fw-black);letter-spacing:.06em;padding:var(--sp-10) 22px;white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;border-radius:0;font-family:Inter,Noto Sans TC,Helvetica Neue,system-ui,-apple-system,sans-serif;font-size:30px;transform:rotate(-12deg);box-shadow:0 4px 14px #00000059}.product-body{padding:var(--sp-16);flex-direction:column;flex:1;display:flex}.product-name{font-weight:var(--fw-semibold);margin-bottom:var(--sp-4);font-size:15px;line-height:var(--lh-snug)}.product-jp-price{font-size:var(--fs-xs);color:var(--ink-mute);font-family:var(--font-mono)}.product-stock{font-size:var(--fs-2xs);color:var(--ink-mute);margin-top:var(--sp-2)}.product-stock.low{color:var(--warn);font-weight:600}.product-price{font-size:var(--fs-2xl);font-weight:var(--fw-extrabold);color:var(--accent);margin:var(--sp-8) 0;letter-spacing:-.02em}.variant-row{margin:8px 0}.variant-label{font-size:var(--fs-2xs);color:var(--ink-mute);letter-spacing:.05em;text-transform:uppercase;margin-bottom:var(--sp-4);font-weight:var(--fw-medium)}.variant-options{gap:var(--sp-4);flex-wrap:wrap;display:flex}.variant-chip{padding:var(--sp-4) var(--sp-10);border:1px solid var(--line-strong);border-radius:var(--radius);font-size:var(--fs-xs);cursor:pointer;background:var(--paper);color:var(--ink-soft);transition:all var(--dur-fast);white-space:nowrap;font-family:inherit}.variant-chip:hover{border-color:var(--ink)}.variant-chip.selected{background:var(--ink);color:var(--bg);border-color:var(--ink)}.variant-chip-disabled{opacity:.4;cursor:not-allowed;text-decoration:line-through}.variant-chip-disabled:hover{border-color:var(--line-strong)}.product-actions{align-items:center;gap:var(--sp-8);margin-top:var(--sp-8);flex-wrap:wrap;display:flex}.product-add-btn{white-space:nowrap;padding:var(--sp-10);background:var(--ink);color:var(--bg);border-radius:var(--radius);font-family:inherit;font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;transition:all var(--dur-fast);border:none;flex:110px}.product-add-btn:hover:not(:disabled){background:#000}.product-add-btn:disabled{background:var(--bg-alt);color:var(--ink-mute);cursor:not-allowed}.product-add-btn.is-added{background:var(--accent)}.product-add-btn.is-limit:disabled{background:var(--c-warn);color:#fff;opacity:.9}.product-add-btn.is-buyer-limit:disabled{background:var(--ink-mute);color:#fff;opacity:.9}.product-spacer{flex:1}.qty-stepper{--focus-inset:-2px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);flex:none;align-items:center;display:inline-flex;overflow:hidden}.qty-stepper-btn{background:var(--bg);width:32px;height:36px;font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;border:none}.qty-stepper-btn:focus-visible,.qty-btn:focus-visible{outline-offset:-2px}.qty-stepper-btn:hover:not(:disabled){background:var(--bg-alt)}.qty-stepper-btn:disabled{color:var(--ink-mute);cursor:not-allowed;opacity:.5}.qty-stepper-value{text-align:center;min-width:32px;font-size:var(--fs-md);font-weight:var(--fw-semibold);padding:0 var(--sp-6);-webkit-user-select:none;user-select:none}.qty-control{border:1px solid var(--line-strong);border-radius:var(--radius);flex:1;justify-content:center;align-items:center;display:flex;overflow:hidden}.qty-btn{background:var(--paper);cursor:pointer;width:32px;height:32px;font-size:var(--fs-lg);color:var(--ink-soft);border:none}.qty-btn:hover{background:var(--bg-alt)}.qty-btn:disabled{opacity:.3;cursor:not-allowed}.qty-display{text-align:center;font-weight:var(--fw-semibold);font-size:var(--fs-md);flex:1}.cart-campaign-group{margin-bottom:16px}.cart-campaign-group:last-child{margin-bottom:0}.cart-campaign-header{padding:var(--sp-8) var(--sp-12);background:var(--bg-alt);border-radius:var(--radius);margin-bottom:var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-semibold);justify-content:space-between;align-items:center;display:flex}.cart-campaign-name{color:var(--ink)}.cart-campaign-subtotal{color:var(--ink-soft);font-family:var(--font-mono)}.cart-item{align-items:center;gap:var(--sp-16);padding:var(--sp-12) 0;border-bottom:1px solid var(--line);display:flex}.cart-item:last-child{border:none}.cart-item-thumb{background:var(--bg-alt);border-radius:var(--radius);flex-shrink:0;width:56px;height:56px;overflow:hidden}.cart-item-thumb img{object-fit:cover;width:100%;height:100%}.cart-item-info{flex:1;min-width:0}.cart-item-name{font-weight:var(--fw-semibold);font-size:var(--fs-md);margin-bottom:var(--sp-2)}.cart-item-variant{font-size:var(--fs-xs);color:var(--ink-soft);margin-bottom:var(--sp-2)}.cart-item-price{font-size:var(--fs-sm);color:var(--ink-soft);font-family:var(--font-mono)}.cart-item-remove{color:var(--ink-mute);cursor:pointer;padding:var(--sp-4) var(--sp-8);font-size:var(--fs-xl);background:0 0;border:none}.cart-item-remove:hover{color:var(--warn)}.cart-summary{background:var(--bg-alt);padding:var(--sp-16);border-radius:var(--radius);margin-top:var(--sp-16)}.summary-row{padding:var(--sp-4) 0;justify-content:space-between;display:flex}.summary-row.total{font-size:var(--fs-2xl);font-weight:var(--fw-extrabold);border-top:1px solid var(--line);margin-top:var(--sp-8);padding-top:var(--sp-12);letter-spacing:-.01em}.shop-layout{display:block}.shop-main{min-width:0}.shop-aside{display:none}@media (min-width:1024px){.shop-layout.has-aside{gap:var(--sp-32);grid-template-columns:minmax(0,1fr) 320px;align-items:start;display:grid}.shop-layout.has-aside .shop-aside{top:calc(var(--nav-height) + var(--sp-20));display:block;position:sticky}.shop-layout.has-aside .product-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}}.shop-desc{font-size:var(--fs-md);opacity:.9;margin-top:var(--sp-8);white-space:pre-wrap;max-width:64ch}.shop-closed-notice{justify-content:center;align-items:center;gap:var(--sp-8);padding:var(--sp-12) var(--sp-16);margin-bottom:var(--sp-20);background:var(--bg-alt);border-radius:var(--radius-md);color:var(--ink-soft);font-size:var(--fs-md);display:flex}.cart-aside{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--sp-20);gap:var(--sp-12);flex-direction:column;display:flex}.cart-aside-head{justify-content:space-between;align-items:center;display:flex}.cart-aside-title{align-items:center;gap:var(--sp-8);font-weight:var(--fw-bold);font-size:var(--fs-lg);display:inline-flex}.cart-aside-count{font-size:var(--fs-xs);color:var(--ink-soft);background:var(--bg-alt);padding:2px var(--sp-10);border-radius:var(--radius-full)}.cart-aside-empty{color:var(--ink-mute);font-size:var(--fs-sm);line-height:var(--lh-relaxed);padding:var(--sp-8) 0}.cart-aside-list{gap:var(--sp-8);flex-direction:column;max-height:40vh;list-style:none;display:flex;overflow-y:auto}.cart-aside-list li{gap:var(--sp-8);font-size:var(--fs-sm);grid-template-columns:minmax(0,1fr) auto auto;align-items:baseline;display:grid}.cart-aside-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.cart-aside-variant{color:var(--ink-mute);margin-left:var(--sp-6);font-size:var(--fs-xs)}.cart-aside-qty{color:var(--ink-soft)}.cart-aside-total{border-top:1px solid var(--line);padding-top:var(--sp-12);font-size:var(--fs-xl);font-weight:var(--fw-extrabold);justify-content:space-between;align-items:baseline;display:flex}.cart-aside-cta,.cart-aside-edit{justify-content:center}.summary-note{font-size:var(--fs-2xs);font-weight:var(--fw-normal);color:var(--ink-mute);margin-left:var(--sp-4)}.cart-bar{z-index:var(--z-fab);align-items:center;gap:var(--sp-12);min-height:var(--cart-bar-height);padding:var(--sp-10) var(--sp-16) calc(var(--sp-10) + var(--safe-bottom));background:var(--paper);border-top:1px solid var(--line);animation:sheet-up var(--dur-slow) var(--ease);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #00000014}.cart-bar-info{column-gap:var(--sp-8);text-align:left;min-width:0;color:var(--ink);cursor:pointer;background:0 0;border:none;flex:1;grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:baseline;padding:0;font-family:inherit;display:grid}.cart-bar-count{font-size:var(--fs-sm);color:var(--ink-soft)}.cart-bar-total{font-size:var(--fs-xl);font-weight:var(--fw-extrabold);letter-spacing:-.01em}.cart-bar-note{font-size:var(--fs-2xs);color:var(--ink-mute);grid-column:1/-1}.cart-bar-cta{min-width:112px;min-height:var(--touch-target);font-weight:var(--fw-bold);font-size:var(--fs-lg);flex:none;justify-content:center}@media (min-width:1024px){.cart-bar{display:none}}.cart-lines{flex-direction:column;display:flex}.cart-item .qty-control{flex:none;width:auto}.cart-item .qty-display{min-width:28px}.cart-item-remove{border-radius:var(--radius-sm);justify-content:center;align-items:center;display:inline-flex}@media (max-width:640px){.cart-item{gap:var(--sp-10) var(--sp-12);flex-wrap:wrap}.cart-item-info{flex:calc(100% - 68px)}.cart-item .qty-control{margin-left:68px}.cart-item-remove{margin-left:auto}}.form-section{margin:0 0 var(--sp-24);border:none;min-width:0;padding:0}.checkout-submit{font-weight:var(--fw-bold);flex:1;justify-content:center}.checkout-summary{background:var(--bg-alt);border-radius:var(--radius-md);padding:0 var(--sp-16);margin-bottom:var(--sp-24)}.checkout-summary>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:var(--sp-12);min-height:48px;font-weight:var(--fw-semibold);list-style:none;display:flex}.checkout-summary>summary::-webkit-details-marker{display:none}.checkout-summary>summary:before{content:"";border-right:2px solid var(--ink-mute);border-bottom:2px solid var(--ink-mute);width:8px;height:8px;margin-right:var(--sp-4);transition:transform var(--dur-fast);flex-shrink:0;transform:rotate(-45deg)}.checkout-summary[open]>summary:before{transform:rotate(45deg)}.checkout-summary>summary>span:first-of-type{flex:1}.checkout-summary-total{font-size:var(--fs-lg);font-weight:var(--fw-extrabold)}.checkout-summary-list{border-top:1px dashed var(--line-strong);padding:var(--sp-12) 0 var(--sp-4);gap:var(--sp-6);font-size:var(--fs-sm);flex-direction:column;list-style:none;display:flex}.checkout-summary-list li{gap:var(--sp-10);grid-template-columns:minmax(0,1fr) auto auto;display:grid}.checkout-summary-name{min-width:0}.checkout-summary-variant{color:var(--ink-mute);margin-left:var(--sp-6);font-size:var(--fs-xs)}.checkout-summary-note{font-size:var(--fs-xs);color:var(--ink-mute);padding:var(--sp-4) 0 var(--sp-12)}.rules-panel,.rules-disclosure{background:var(--bg-alt);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius-md);padding:0 var(--sp-16)}.rules-panel{margin:var(--sp-24) 0}.rules-disclosure{margin-bottom:var(--sp-12)}.rules-panel>summary,.rules-disclosure>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:var(--sp-12);min-height:48px;font-weight:var(--fw-semibold);font-size:var(--fs-md);list-style:none;display:flex}.rules-panel>summary::-webkit-details-marker{display:none}.rules-disclosure>summary::-webkit-details-marker{display:none}.rules-panel-title,.rules-disclosure>summary>span:first-of-type{align-items:center;gap:var(--sp-6);display:inline-flex}.rules-panel-hint{font-size:var(--fs-xs);font-weight:var(--fw-normal);color:var(--ink-mute)}.rules-panel[open] .rules-panel-hint{display:none}.rules-disclosure>summary{justify-content:flex-start}.rules-text{white-space:pre-wrap;font-family:inherit;font-size:var(--fs-sm);line-height:var(--lh-relaxed);color:var(--ink-soft);padding:var(--sp-4) 0 var(--sp-16);border-top:1px dashed var(--line-strong);margin:0}.rules-disclosure .rules-text{max-height:40vh;overflow-y:auto}.agree-box{align-items:center;gap:var(--sp-10);cursor:pointer;padding:var(--sp-12) 14px;min-height:var(--touch-target);background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--radius-md);font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--ink);transition:background var(--dur-fast), border-color var(--dur-fast);margin:0;display:flex}.agree-box input[type=checkbox]{width:20px;height:20px;accent-color:var(--c-ok);flex-shrink:0;margin:0}.agree-box.is-checked{background:var(--ok-soft);border-color:var(--ok)}.agree-box.is-error{border-color:var(--c-danger)}@media (min-width:641px) and (max-width:768px){.product-grid{gap:var(--sp-12);grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}@media (max-width:640px){.product-grid{gap:var(--sp-10);grid-template-columns:1fr}.product-card{flex-direction:row;align-items:stretch}.product-card:hover:not(.disabled){box-shadow:none;transform:none}.product-img{aspect-ratio:auto;flex:0 0 112px;align-self:stretch;width:112px;min-height:112px}.product-body{padding:var(--sp-12) var(--sp-12) var(--sp-12) 14px;min-width:0}.product-name{font-size:var(--fs-md)}.product-price{font-size:var(--fs-xl);margin:var(--sp-4) 0 var(--sp-6)}.product-condition-row{margin-bottom:var(--sp-4)}.product-limited-tag{max-width:80%}.sold-out-stamp{padding:var(--sp-6) var(--sp-10);font-size:16px}.variant-row{margin:var(--sp-4) 0}.product-actions{gap:var(--sp-8);margin-top:var(--sp-6)}.product-add-btn{padding:var(--sp-10) var(--sp-8);flex:96px}}.product-photo-picker{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.product-photo-picker button{border:1px solid var(--border,#ddd);cursor:pointer;background:#fff;border-radius:6px;width:40px;height:40px;padding:2px}.product-photo-picker button[aria-pressed=true]{border:2px solid var(--accent);padding:1px}.product-photo-picker img{object-fit:contain;width:100%;height:100%}.product-photo-picker button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.modal{background:var(--c-overlay);z-index:var(--z-modal);padding:var(--sp-20);animation:modal-fade var(--dur-base) var(--ease);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-box{background:var(--paper);border-radius:var(--radius-lg);width:100%;max-width:600px;max-height:min(90vh,90dvh);box-shadow:var(--shadow-xl);animation:modal-pop var(--dur-base) var(--ease);outline:none;flex-direction:column;display:flex;overflow:hidden}.modal-box.sm{max-width:440px}.modal-box.lg{max-width:760px}.modal-box.xl{max-width:900px}.sheet-handle{display:none}.modal-header{padding:var(--sp-20) var(--sp-24);border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:var(--sp-12);background:var(--paper);flex-shrink:0;display:flex}.modal-heading{min-width:0}.modal-title{font-size:var(--fs-xl);font-weight:var(--fw-bold);line-height:var(--lh-snug)}.modal-desc{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:var(--sp-4)}.modal-close{cursor:pointer;color:var(--ink-mute);width:40px;height:40px;transition:background var(--dur-fast), color var(--dur-fast);background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin:-8px -10px -8px 0;display:flex}.modal-close:hover{background:var(--bg-alt);color:var(--ink)}.modal-body{padding:var(--sp-24);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:auto;min-height:0;overflow-y:auto}.modal-footer{background:var(--paper);border-top:1px solid var(--line);padding:var(--sp-16) var(--sp-24);gap:var(--sp-8);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;display:flex}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-pop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}.modal.is-sheet{align-items:flex-end;padding:0}.modal.is-sheet .modal-box{border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-width:640px;max-height:min(92vh,92dvh);animation:sheet-up var(--dur-slow) var(--ease)}.modal.is-sheet .sheet-handle{border-radius:var(--radius-full);background:var(--line-strong);width:40px;height:4px;margin:var(--sp-10) auto 0;flex-shrink:0;display:block}.modal.is-sheet .modal-header{padding-top:var(--sp-12)}.modal.is-sheet .modal-footer{padding-bottom:calc(var(--sp-16) + var(--safe-bottom))}@media (max-width:640px){.modal.is-auto{align-items:flex-end;padding:0}.modal.is-auto .modal-box{border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-width:none;max-height:min(92vh,92dvh);animation:sheet-up var(--dur-slow) var(--ease)}.modal.is-auto .sheet-handle{border-radius:var(--radius-full);background:var(--line-strong);width:40px;height:4px;margin:var(--sp-10) auto 0;flex-shrink:0;display:block}.modal.is-auto .modal-header{padding:var(--sp-12) var(--sp-20) var(--sp-16)}.modal.is-auto .modal-body{padding:var(--sp-20)}.modal.is-auto .modal-footer{padding:var(--sp-12) var(--sp-20) calc(var(--sp-12) + var(--safe-bottom))}.modal.is-fullscreen{padding:0}.modal.is-fullscreen .modal-box{width:100%;max-width:none;height:100dvh;max-height:none;animation:sheet-up var(--dur-slow) var(--ease);border-radius:0}.modal.is-fullscreen .modal-header{padding:calc(var(--sp-16) + var(--safe-top)) var(--sp-20) var(--sp-16)}.modal.is-fullscreen .modal-body{padding:var(--sp-20)}.modal.is-fullscreen .modal-footer{padding:var(--sp-12) var(--sp-20) calc(var(--sp-12) + var(--safe-bottom))}.modal-footer .btn{min-height:var(--touch-target);flex:auto;justify-content:center}.modal-footer .btn-ghost{flex:none}}.confirm-message{font-size:var(--fs-md);color:var(--ink-soft);line-height:var(--lh-relaxed);white-space:pre-wrap}.btn-danger-solid{background:var(--c-danger);border-color:var(--c-danger);color:#fff}.btn-danger-solid:hover{background:#b91c1c;border-color:#b91c1c}.back-link{align-items:center;gap:var(--sp-6);min-height:36px;padding:var(--sp-6) var(--sp-10) var(--sp-6) var(--sp-6);margin:0 0 var(--sp-16) calc(var(--sp-6) * -1);border-radius:var(--radius-sm);color:var(--ink-soft);font-size:var(--fs-md);font-weight:var(--fw-medium);transition:color var(--dur-fast), background var(--dur-fast);text-decoration:none;display:inline-flex}.back-link:hover{color:var(--ink);background:var(--bg-alt)}.empty-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--ink-soft)}.empty-hint{font-size:var(--fs-sm);color:var(--ink-mute);margin-top:var(--sp-6);line-height:var(--lh-relaxed)}.empty-action{margin-top:var(--sp-20)}.empty-actions{gap:var(--sp-8);flex-wrap:wrap;justify-content:center;display:flex}.error-digest{text-align:center;font-size:var(--fs-xs);color:var(--ink-mute);margin-top:var(--sp-8)}.receipt{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--sp-32);max-width:720px;margin:0 auto}.receipt-id{text-align:center;margin-bottom:var(--sp-32);padding-bottom:var(--sp-24);border-bottom:2px dashed var(--line-strong)}.receipt-id-label{font-size:var(--fs-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:var(--sp-6)}.receipt-id-value{font-family:var(--font-mono);font-size:var(--fs-3xl);font-weight:var(--fw-bold);letter-spacing:.05em}.copy-btn{border:1px dashed var(--line-strong);padding:var(--sp-4) var(--sp-10);border-radius:var(--radius);font-family:inherit;font-size:var(--fs-2xs);cursor:pointer;color:var(--ink-soft);margin-left:var(--sp-8);background:0 0}.copy-btn:hover{color:var(--ink);border-color:var(--ink)}.status-pending{color:var(--ink-mute)}.status-bought{color:var(--ok)}.status-failed{color:var(--accent)}.status-partial{color:var(--warn)}.status-shipped{color:var(--c-violet)}.toast-stack{left:50%;bottom:calc(var(--sp-24) + var(--safe-bottom));align-items:center;gap:var(--sp-8);z-index:var(--z-toast);pointer-events:none;flex-direction:column-reverse;width:min(100vw - 32px,480px);display:flex;position:fixed;transform:translate(-50%)}.toast{align-items:center;gap:var(--sp-8);background:var(--ink);color:var(--bg);padding:var(--sp-12) var(--sp-20);border-radius:var(--radius-full);font-size:var(--fs-md);font-weight:var(--fw-medium);box-shadow:var(--shadow-lg);pointer-events:auto;cursor:pointer;max-width:100%;line-height:var(--lh-snug);animation:toast-in var(--dur-base) var(--ease);display:inline-flex}.toast.is-leaving{animation:toast-out var(--dur-fast) var(--ease) forwards}.toast-icon{flex-shrink:0;display:inline-flex}.toast-success{background:var(--c-ok);color:#fff}.toast-error{background:var(--c-danger);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(6px)}}@media (max-width:1023px){body.has-cart-bar .toast-stack{bottom:calc(var(--cart-bar-height) + var(--sp-12) + var(--safe-bottom))}}.modal.is-drawer{justify-content:flex-start;align-items:stretch;padding:0}.modal.is-drawer .modal-box{border-radius:0;width:min(86vw,360px);max-width:360px;height:100dvh;max-height:100dvh;margin:0;animation:.22s cubic-bezier(.22,1,.36,1) drawer-enter}.modal.is-drawer .sheet-handle{display:none}.modal.is-drawer .modal-header{padding-top:max(20px,env(safe-area-inset-top))}.modal.is-drawer .modal-body{padding:12px 16px max(24px,env(safe-area-inset-bottom));overscroll-behavior:contain;overflow-y:auto}@keyframes drawer-enter{0%{transform:translate(-100%)}to{transform:translate(0)}}@media (prefers-reduced-motion:reduce){.modal.is-drawer .modal-box{animation:none}}
.order-layout{gap:var(--sp-20);max-width:960px;margin:0 auto;display:grid}@media (min-width:900px){.order-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start}.order-main{gap:var(--sp-20);min-width:0;display:grid}.order-side{gap:var(--sp-20);top:calc(var(--nav-height) + var(--sp-20));display:grid;position:sticky}}@media (max-width:899px){.order-main,.order-side{display:contents}}.order-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--sp-20) var(--sp-24)}.order-card-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:var(--sp-12);justify-content:space-between;align-items:center;gap:var(--sp-8);display:flex}.order-status{border-top:4px solid var(--tone,var(--c-ok))}.order-status.tone-ok{--tone:var(--c-ok)}.order-status.tone-accent{--tone:var(--c-accent)}.order-status.tone-warn{--tone:var(--c-warn)}.order-status.tone-danger{--tone:var(--c-danger)}.order-status.tone-mute{--tone:var(--ink-mute)}.order-status-eyebrow{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:var(--sp-6)}.order-status-headline{font-size:var(--fs-3xl);font-weight:var(--fw-extrabold);letter-spacing:-.01em;line-height:var(--lh-tight);color:var(--ink)}.order-status-sub{color:var(--ink-soft);font-size:var(--fs-md);margin-top:var(--sp-6);line-height:var(--lh-relaxed)}.order-status .timeline{margin-top:var(--sp-24)}.timeline{gap:0;list-style:none;display:flex}.tl-step{text-align:center;min-width:0;padding:0 var(--sp-4);flex-direction:column;flex:1 1 0;align-items:center;display:flex;position:relative}.tl-step:before{content:"";background:var(--line);z-index:0;width:100%;height:2px;position:absolute;top:13px;left:-50%}.tl-step:first-child:before{display:none}.tl-step.is-done:before,.tl-step.is-current:before{background:var(--c-ok)}.tl-step.is-failed:before{background:var(--c-danger)}.tl-dot{z-index:1;background:var(--paper);border:2px solid var(--line-strong);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex;position:relative}.is-done .tl-dot{background:var(--c-ok);border-color:var(--c-ok)}.is-current .tl-dot{background:var(--paper);border-color:var(--tone,var(--c-accent))}.is-failed .tl-dot{background:var(--c-danger);border-color:var(--c-danger)}.is-skipped .tl-dot{opacity:.6;border-style:dashed}.tl-pulse{background:var(--tone,var(--c-accent));border-radius:50%;width:12px;height:12px;animation:1.6s ease-in-out infinite tl-pulse}@keyframes tl-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--tone,var(--c-accent)) 35%, transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb, var(--tone,var(--c-accent)) 0%, transparent)}}.tl-body{margin-top:var(--sp-8);min-width:0}.tl-label{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--ink);display:block}.is-upcoming .tl-label,.is-skipped .tl-label{color:var(--ink-mute);font-weight:var(--fw-medium)}.is-current .tl-label{color:var(--tone,var(--c-accent))}.tl-detail{font-size:var(--fs-xs);color:var(--ink-mute);line-height:var(--lh-snug);margin-top:2px;display:block}.is-failed .tl-detail{color:var(--c-danger)}@media (max-width:640px){.timeline{flex-direction:column;gap:0}.tl-step{text-align:left;align-items:flex-start;gap:var(--sp-12);padding:0 0 var(--sp-16);flex-direction:row}.tl-step:last-child{padding-bottom:0}.tl-step:before{width:2px;height:calc(100% - 28px);display:block;top:28px;left:13px}.tl-step:first-child:before{display:block}.tl-step:last-child:before{display:none}.tl-step.is-upcoming:before,.tl-step.is-skipped:before{background:var(--line)}.tl-body{margin-top:3px}.tl-label{display:inline}.tl-detail{margin-left:var(--sp-6);display:inline}}.pay-cta{background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-lg);padding:var(--sp-20);align-items:center;gap:var(--sp-12);text-align:center;flex-direction:column;display:flex}.pay-cta-title{font-weight:var(--fw-bold);font-size:var(--fs-lg)}.pay-cta .btn{width:100%;max-width:360px;min-height:48px;font-size:var(--fs-lg);font-weight:var(--fw-bold);justify-content:center}.pay-cta-url{font-size:var(--fs-xs);color:var(--ink-mute);word-break:break-all;max-width:100%}.order-number{align-items:center;gap:var(--sp-8);flex-wrap:wrap;display:flex}.order-number-value{font-family:var(--font-mono);font-size:var(--fs-xl);font-weight:var(--fw-bold);letter-spacing:.04em}.order-meta{gap:var(--sp-8);font-size:var(--fs-md);display:grid}.order-meta-row{gap:var(--sp-12);grid-template-columns:72px minmax(0,1fr);align-items:baseline;display:grid}.order-meta-row dt{color:var(--ink-mute);font-size:var(--fs-sm)}.order-meta-row dd{overflow-wrap:anywhere;margin:0}.order-items{flex-direction:column;list-style:none;display:flex}.order-item{gap:var(--sp-12);padding:var(--sp-12) 0;border-bottom:1px solid var(--line);grid-template-columns:56px minmax(0,1fr) auto;align-items:center;display:grid}.order-item:last-child{border-bottom:none}.order-item-thumb{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-alt);object-fit:cover;width:56px;height:56px;color:var(--ink-mute);justify-content:center;align-items:center;display:flex}.order-item-name{font-weight:var(--fw-semibold);line-height:var(--lh-snug)}.order-item-meta{font-size:var(--fs-xs);color:var(--ink-mute);margin-top:2px}.order-item-right{text-align:right;gap:2px;display:grid}.order-item-price{font-family:var(--font-mono);font-size:var(--fs-sm)}.order-item-qty{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-mute)}.order-item-status{font-size:var(--fs-2xs);font-weight:var(--fw-semibold);padding:1px var(--sp-8);border-radius:var(--radius-full);background:var(--bg-alt);color:var(--ink-soft);justify-self:end;display:inline-block}.order-item-status.status-bought{background:var(--ok-soft);color:var(--ok)}.order-item-status.status-partial{background:var(--warn-soft);color:var(--warn)}.order-item-status.status-failed{background:var(--accent-soft);color:var(--accent)}.order-total{border-top:1px solid var(--line);margin-top:var(--sp-8);padding-top:var(--sp-12);font-size:var(--fs-2xl);font-weight:var(--fw-extrabold);justify-content:space-between;align-items:baseline;display:flex}.order-total-adjusted{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:var(--sp-4);justify-content:space-between;display:flex}.order-footnote{font-size:var(--fs-sm);color:var(--ink-mute);text-align:center;line-height:var(--lh-relaxed)}.order-cancel-zone{align-items:center;gap:var(--sp-8);padding-top:var(--sp-16);border-top:1px dashed var(--line-strong);font-size:var(--fs-xs);color:var(--ink-mute);flex-direction:column;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
.admin-shell{display:block}.admin-sidebar{display:none}.admin-shell-main{min-width:0;padding-bottom:calc(var(--admin-bottomnav-h) + var(--safe-bottom))}.admin-bottomnav{z-index:var(--z-nav);background:var(--paper);border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}body.has-open-modal .admin-bottomnav{visibility:hidden;pointer-events:none}.admin-bottomnav-item{min-height:var(--admin-bottomnav-h);font-family:inherit;font-size:var(--fs-2xs);font-weight:var(--fw-medium);color:var(--ink-mute);cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:3px;text-decoration:none;display:flex;position:relative}.admin-bottomnav-item.is-active{color:var(--accent);font-weight:var(--fw-semibold)}.admin-bottomnav-item.is-active:before{content:"";background:var(--accent);border-radius:0 0 2px 2px;height:2px;position:absolute;top:0;left:25%;right:25%}.admin-bottomnav-badge{border-radius:var(--radius-full);background:var(--c-danger);color:#fff;min-width:16px;height:16px;font-size:10px;font-weight:var(--fw-bold);justify-content:center;align-items:center;padding:0 4px;display:flex;position:absolute;top:6px;left:calc(50% + 6px)}.admin-more-list{gap:var(--sp-4);flex-direction:column;list-style:none;display:flex}.admin-more-list a,.admin-more-list button{align-items:center;gap:var(--sp-12);min-height:48px;padding:0 var(--sp-12);border-radius:var(--radius-md);color:var(--ink);font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;text-align:left;background:0 0;border:none;width:100%;font-family:inherit;text-decoration:none;display:flex}.admin-more-list a:hover,.admin-more-list button:hover{background:var(--bg-alt)}@media (min-width:1024px){.admin-shell{grid-template-columns:var(--admin-sidebar-w) minmax(0, 1fr);min-height:calc(100dvh - var(--nav-height));display:grid}.admin-sidebar{top:var(--nav-height);height:calc(100dvh - var(--nav-height));background:var(--paper);border-right:1px solid var(--line);padding:var(--sp-20) var(--sp-12);gap:var(--sp-4);flex-direction:column;display:flex;position:sticky;overflow-y:auto}.admin-bottomnav{display:none}.admin-shell-main{padding-bottom:0}.admin-shell .page-container{max-width:1280px;padding:var(--sp-32) var(--sp-32) var(--sp-80)}}.admin-sidebar-cta{text-align:center;min-height:44px;margin-bottom:var(--sp-12);grid-template-columns:16px auto 16px;justify-content:center;align-items:center;gap:8px;line-height:1.4;display:grid}.admin-sidebar-cta:after{content:"";width:16px}.admin-nav-section{font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);font-weight:var(--fw-semibold);margin:var(--sp-16) var(--sp-12) var(--sp-6)}.admin-nav-link{align-items:center;gap:var(--sp-10);min-height:40px;padding:var(--sp-8) var(--sp-12);border-radius:var(--radius-sm);color:var(--ink-soft);font-size:var(--fs-md);font-weight:var(--fw-medium);transition:background var(--dur-fast), color var(--dur-fast);text-decoration:none;display:flex}.admin-nav-link:hover{background:var(--bg);color:var(--ink)}.admin-nav-link.is-active{background:var(--bg-alt);color:var(--ink);font-weight:var(--fw-semibold)}.admin-nav-link .badge{margin-left:auto}.admin-sidebar-foot{padding-top:var(--sp-16);border-top:1px solid var(--line);margin-top:auto}.filter-bar{gap:var(--sp-10);margin-bottom:var(--sp-16);flex-wrap:wrap;align-items:center;display:flex}.chip-row{gap:var(--sp-6);scrollbar-width:none;flex-wrap:nowrap;max-width:100%;padding-bottom:2px;display:flex;overflow-x:auto}.chip-row::-webkit-scrollbar{display:none}.chip{align-items:center;gap:var(--sp-4);min-height:34px;padding:var(--sp-6) var(--sp-12);border:1px solid var(--line-strong);border-radius:var(--radius-full);background:var(--paper);color:var(--ink-soft);font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;cursor:pointer;transition:all var(--dur-fast);display:inline-flex}.chip:hover{border-color:var(--ink);color:var(--ink)}.chip.is-active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip-count{font-size:var(--fs-2xs);opacity:.7}.search-field{flex:220px;max-width:360px;position:relative}.search-field input{padding-left:36px}.search-field>svg{color:var(--ink-mute);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}@media (max-width:640px){.search-field{flex-basis:100%;max-width:none}}.section-head{justify-content:space-between;align-items:center;gap:var(--sp-12);margin-bottom:var(--sp-16);flex-wrap:wrap;display:flex}.section-head h3{font-size:var(--fs-xl);font-weight:var(--fw-bold)}.section-head-actions{gap:var(--sp-8);flex-wrap:wrap;display:flex}.toggle-label{align-items:center;gap:var(--sp-6);font-size:var(--fs-sm);color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:var(--fw-normal);margin:0;display:inline-flex}.toggle-label input{width:16px;height:16px;accent-color:var(--ink);margin:0}.email-chip{white-space:nowrap;cursor:default;border:1px solid #0000;border-radius:3px;align-items:center;gap:3px;padding:2px 6px;font-family:inherit;font-size:10px;display:inline-flex}.email-chip.is-sent{background:var(--ok-soft);color:var(--c-ok-strong);border-color:var(--ok-soft)}.email-chip.is-failed{background:var(--c-danger-soft);color:var(--c-danger);border-color:var(--c-danger-line);font-weight:var(--fw-semibold);cursor:pointer}.email-chip.is-failed:disabled{cursor:not-allowed;opacity:.7}.email-chips{flex-wrap:wrap;gap:4px;display:flex}.callout{background:var(--c-amber-soft);border-left:3px solid var(--c-amber);padding:var(--sp-12) var(--sp-16);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--c-amber-ink)}.callout-label{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;font-weight:var(--fw-medium);margin-bottom:var(--sp-4);opacity:.8}@media (max-width:1023px){.table-cards{background:0 0;border:none;border-radius:0;overflow:visible}.table-cards table,.table-cards tbody{width:100%;display:block}.table-cards thead{display:none}.table-cards tr{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--sp-10) 14px;margin-bottom:var(--sp-10);display:block}.table-cards tr.row-hover:hover{background:var(--paper)}.table-cards td{justify-content:space-between;align-items:flex-start;gap:var(--sp-12);padding:var(--sp-6) 0;white-space:normal;font-size:var(--fs-md);border:none;min-width:0;display:flex}.table-cards td:before{content:attr(data-label);color:var(--ink-mute);font-size:var(--fs-xs);flex:0 0 64px;padding-top:3px}.table-cards td[data-label=""]:before{display:none}.table-cards td.td-full{padding-top:var(--sp-10);margin-top:var(--sp-4);border-top:1px dashed var(--line);display:block}.table-cards td.td-full:before{display:none}.table-cards td.td-primary{font-weight:var(--fw-semibold)}.table-cards td>.td-value{text-align:right;min-width:0}.table-cards .td-actions{gap:var(--sp-6);flex-wrap:wrap;display:flex}.table-cards .td-actions .btn{flex:calc(50% - 6px);justify-content:center;min-height:40px}}.save-bar{z-index:var(--z-fab);align-items:center;gap:var(--sp-12);padding:var(--sp-10) var(--sp-16) calc(var(--sp-10) + var(--safe-bottom));background:var(--paper);border-top:1px solid var(--line);animation:sheet-up var(--dur-slow) var(--ease);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #00000014}.save-bar-msg{min-width:0;font-size:var(--fs-sm);color:var(--ink-soft);flex:1}.save-bar .btn{min-height:var(--touch-target)}@media (max-width:1023px){.save-bar{bottom:calc(var(--admin-bottomnav-h) + var(--safe-bottom));padding-bottom:var(--sp-10)}.save-bar-msg{display:none}.save-bar .btn{flex:1;justify-content:center}.save-bar .btn-ghost{flex:none}}@media (min-width:1024px){.save-bar{left:var(--admin-sidebar-w)}}body.has-save-bar .page-container{padding-bottom:140px}.sub-nav{background:var(--bg-alt);border-radius:var(--radius-md);padding:var(--sp-4);gap:var(--sp-2);margin-bottom:var(--sp-24);flex-wrap:wrap;display:inline-flex}.admin-toolbar{align-items:center;gap:var(--sp-8);margin-bottom:var(--sp-24);display:flex}.admin-toolbar-tabs{margin-bottom:0}.admin-toolbar-actions{gap:var(--sp-8);flex-wrap:wrap;margin-left:auto;display:flex}@media (max-width:768px){.admin-toolbar{align-items:stretch;gap:var(--sp-10);flex-direction:column}.admin-toolbar-tabs{width:100%;display:flex}.admin-toolbar-tabs .sub-nav-btn{text-align:center;flex:1}.admin-toolbar-actions{gap:var(--sp-6);grid-template-columns:repeat(3,1fr);width:100%;margin-left:0;display:grid}.admin-toolbar-actions .btn{width:100%;padding:var(--sp-8) var(--sp-4);font-size:var(--fs-xs);white-space:nowrap;justify-content:center}}.sub-nav-btn{padding:var(--sp-8) var(--sp-16);font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--ink-soft);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;text-decoration:none;display:inline-block}.sub-nav-btn.active,.sub-nav-btn[data-active=true]{background:var(--paper);color:var(--ink);box-shadow:var(--shadow-xs)}.add-tile{border:2px dashed var(--line-strong);border-radius:var(--radius-md);padding:var(--sp-32) var(--sp-20);text-align:center;cursor:pointer;color:var(--ink-mute);transition:all var(--dur-fast);width:100%;font-family:inherit;font-size:var(--fs-md);background:0 0}.add-tile:hover{border-color:var(--ink);color:var(--ink);background:var(--paper)}.empty{text-align:center;padding:60px var(--sp-20);color:var(--ink-mute)}.empty-icon{margin-bottom:var(--sp-16);opacity:.3;font-size:36px;font-weight:var(--fw-bold)}.empty.compact{padding:32px 20px}.section-divider{background:var(--line);height:1px;margin:var(--sp-24) 0}.form-section-title{font-size:15px;font-weight:var(--fw-bold);margin-bottom:var(--sp-12);align-items:center;gap:var(--sp-8);display:flex}.form-section-title:before{content:"";background:var(--ink);flex-shrink:0;width:3px;height:14px}.img-preview{margin-top:var(--sp-8);aspect-ratio:16/9;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-alt);width:100%;font-size:var(--fs-xs);color:var(--ink-mute);justify-content:center;align-items:center;display:flex;overflow:hidden}.img-preview img{object-fit:cover;width:100%;height:100%}.cover-preview{aspect-ratio:16/9;border-radius:var(--radius);width:100%;padding:var(--sp-20);color:#fff;margin-top:var(--sp-8);flex-direction:column;justify-content:flex-end;display:flex;position:relative;overflow:hidden}.cover-preview-overlay{background:linear-gradient(#0000000d 0%,#000000a6 100%);position:absolute;inset:0}.cover-preview>*{z-index:1;position:relative}.cover-preview img.cover-bg{object-fit:cover;width:100%;height:100%;z-index:var(--z-under);position:absolute;inset:0}.tag-row{flex-wrap:wrap;gap:6px;display:flex}.countdown{font-family:var(--font-mono);font-weight:var(--fw-semibold);font-size:var(--fs-sm);padding:var(--sp-4) var(--sp-10);border-radius:var(--radius-full);align-items:center;gap:var(--sp-6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff26;display:inline-flex}.product-mini-list{gap:var(--sp-8);flex-direction:column;display:flex}.product-mini-row{gap:var(--sp-8);padding:var(--sp-10) var(--sp-12);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);font-size:var(--fs-sm);grid-template-columns:1fr auto auto auto;align-items:center;display:grid}.product-mini-row .pmr-name{font-weight:600}.product-mini-row .pmr-meta{color:var(--ink-mute);font-size:12px}.email-copy-link{color:var(--accent);cursor:pointer;font-family:var(--font-mono);font-size:var(--fs-xs);border-bottom:1px dashed;text-decoration:none}.email-copy-link:hover{background:var(--accent-soft);padding:1px var(--sp-4);border-bottom-color:#0000;border-radius:3px;margin:-1px -4px}.es-tpl-tab,.cm-email-tab{padding:var(--sp-8) var(--sp-16);font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--ink-soft);cursor:pointer;transition:all var(--dur-fast);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px}.es-tpl-tab:hover,.cm-email-tab:hover{color:var(--ink)}.es-tpl-tab.active,.cm-email-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.variants-editor{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.variants-editor+.variants-editor{margin-top:12px}.variants-editor-header{margin-bottom:var(--sp-10);justify-content:space-between;align-items:center;display:flex}.variants-editor-title{font-weight:var(--fw-semibold);font-size:var(--fs-sm)}.variant-list{gap:var(--sp-8);flex-direction:column;display:flex}.variant-item-row{align-items:center;gap:var(--sp-8);display:flex}.variant-item-row input[type=text]{flex:1}.variant-remove-btn{color:var(--ink-mute);cursor:pointer;padding:var(--sp-4) var(--sp-8);font-size:var(--fs-xl);background:0 0;border:none}.variant-remove-btn:hover{color:var(--warn)}.add-variant-btn{margin-top:var(--sp-8);width:100%;padding:var(--sp-8);border:1px dashed var(--line-strong);border-radius:var(--radius);cursor:pointer;font-family:inherit;font-size:var(--fs-sm);color:var(--ink-soft);background:0 0}.add-variant-btn:hover{border-color:var(--ink);color:var(--ink)}.color-swatch-thumb{border-radius:var(--radius);background:var(--bg-alt);border:1px solid var(--line);cursor:pointer;flex-shrink:0;width:32px;height:32px;position:relative;overflow:hidden}.color-swatch-thumb img{object-fit:cover;width:100%;height:100%}.theme-grid{gap:var(--sp-10);grid-template-columns:repeat(auto-fill,minmax(110px,1fr));display:grid}.theme-swatch{aspect-ratio:16/9;border-radius:var(--radius);cursor:pointer;transition:all var(--dur-fast);border:2px solid #0000;position:relative;overflow:hidden}.theme-swatch:hover{transform:translateY(-2px)}.theme-swatch.selected{border-color:var(--ink);box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--ink)}.theme-swatch-label{padding:var(--sp-4) var(--sp-8);font-size:var(--fs-2xs);color:#fff;font-weight:var(--fw-medium);background:#0006;position:absolute;bottom:0;left:0;right:0}.spinner{border:2px solid var(--line);border-top-color:var(--ink);border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-spinner{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}.loading-overlay{padding:60px var(--sp-20);color:var(--ink-mute);justify-content:center;align-items:center;gap:var(--sp-12);display:flex}
@media (max-width:768px){.topnav-inner{padding:0 var(--sp-12);height:var(--nav-height-sm);gap:var(--sp-8)}.brand{font-size:var(--fs-md);gap:var(--sp-6);min-width:0}.brand-text{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.topnav-actions{gap:var(--sp-6);flex-shrink:0}.topnav-status{display:none}.role-btn{padding:var(--sp-6) 14px;font-size:var(--fs-md)}.role-btn-long{display:none}.role-btn-short{display:inline}.page-container{padding:20px 16px 100px}body.has-cart-bar .page-container{padding-bottom:calc(var(--cart-bar-height) + var(--sp-32) + var(--safe-bottom))}.page-title{font-size:24px}.section-title{font-size:18px}.form-row,.form-row-3{grid-template-columns:1fr}.panel{padding:18px}table{font-size:13px}th,td{padding:10px 12px}.receipt{padding:20px}.shop-header-content{padding:28px 20px}.shop-name{font-size:24px}.shop-meta{gap:var(--sp-12);font-size:var(--fs-xs)}.campaign-card-title{font-size:18px}.product-mini-row{grid-template-columns:1fr auto}}@media (max-width:640px){.campaign-grid{gap:var(--sp-12);grid-template-columns:1fr}.campaign-card{flex-direction:row;align-items:stretch;display:flex}.campaign-card:hover{transform:none}.campaign-card-cover{aspect-ratio:1;flex:0 0 120px;min-height:120px;padding:0}.campaign-card-cover .campaign-card-title{display:none}.campaign-card-cover:after{background:linear-gradient(#0000 0%,#00000040 100%)}.campaign-card-status{transform-origin:0 0;top:6px;left:6px;transform:scale(.85)}.campaign-card-body{padding:var(--sp-12) 14px;justify-content:space-between;align-items:flex-start;gap:var(--sp-4);flex-direction:column;flex:1;min-width:0;display:flex}.campaign-card-title-mobile{-webkit-line-clamp:2;font-weight:var(--fw-extrabold);letter-spacing:-.01em;color:var(--ink);-webkit-box-orient:vertical;width:100%;font-size:15px;line-height:1.3;display:-webkit-box;overflow:hidden}.campaign-card-body>.campaign-card-meta,.campaign-card-body>span,.campaign-card-body>div:not(.campaign-card-title-mobile){font-size:var(--fs-xs);line-height:var(--lh-snug)}}@media (pointer:coarse){.btn{min-height:var(--touch-target)}.btn-sm{min-height:40px;padding:var(--sp-8) 14px}.modal-close{width:var(--touch-target);height:var(--touch-target)}.variant-chip{min-height:36px;padding:var(--sp-6) var(--sp-12)}.qty-stepper-btn,.qty-btn{width:var(--touch-target);height:var(--touch-target)}.product-add-btn,.back-link{min-height:var(--touch-target)}.cart-item-remove{min-width:var(--touch-target);min-height:var(--touch-target)}.drag-handle{min-width:40px;min-height:40px}input[type=text],input[type=number],input[type=tel],input[type=email],input[type=date],input[type=datetime-local],textarea,select{min-height:var(--touch-target);font-size:16px}}
.os-page{background:var(--bg);flex-direction:column;min-height:100dvh;display:flex}.os-header{background:var(--ink);color:var(--bg);padding:var(--sp-16) var(--sp-24);justify-content:space-between;align-items:center;gap:var(--sp-16);z-index:var(--z-dropdown);display:flex;position:sticky;top:0}.os-header-title{font-size:var(--fs-xl);font-weight:var(--fw-bold)}.os-header-meta{font-size:var(--fs-sm);opacity:.7}.os-progress-bar{height:6px;margin-top:var(--sp-8);background:#ffffff26;border-radius:3px;width:240px;overflow:hidden}.os-progress-fill{background:var(--accent);height:100%;transition:width var(--dur-slow)}.os-content{width:100%;max-width:1100px;padding:var(--sp-32) var(--sp-24);flex:1;margin:0 auto}.os-round-tabs{gap:var(--sp-4);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--sp-4);margin-bottom:var(--sp-20);flex-wrap:nowrap;display:flex;overflow-x:auto}.os-round-tab{padding:var(--sp-10) 18px;font-family:inherit;font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--ink-soft);cursor:pointer;border-radius:var(--radius);white-space:nowrap;align-items:center;gap:var(--sp-8);transition:all var(--dur-fast);background:0 0;border:none;display:inline-flex}.os-round-tab:hover{background:var(--bg-alt)}.os-round-tab.active{background:var(--ink);color:var(--bg)}.os-round-tab.active:hover{background:var(--ink)}.os-round-tab.in-progress{background:var(--accent-soft);color:var(--accent)}.os-round-tab.in-progress.active{background:var(--accent);color:#fff}.os-round-tab.completed{color:var(--ok)}.os-round-tab.completed.active{background:var(--ok);color:#fff}.os-round-tab-mark{border-radius:50%;width:8px;height:8px;display:inline-block}.os-round-tab .os-round-tab-mark.dot-progress{background:var(--accent)}.os-round-tab .os-round-tab-mark.dot-done{background:var(--ok)}.os-round-tab .os-round-tab-mark.dot-pending{background:var(--line-strong)}.os-round-tab.active .os-round-tab-mark{background:#fff}.os-round-page{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}.os-round-page-header{padding:var(--sp-20) var(--sp-24);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:var(--sp-12);background:var(--bg-alt);flex-wrap:wrap;display:flex}.os-round-page-header.in-progress{background:var(--accent-soft)}.os-round-page-header.completed{background:var(--ok-soft)}.os-round-page-title{font-size:var(--fs-2xl);font-weight:var(--fw-extrabold);letter-spacing:-.01em;align-items:center;gap:var(--sp-12);display:flex}.os-round-page-title .badge{font-size:var(--fs-xs);padding:var(--sp-4) var(--sp-10);font-weight:var(--fw-semibold)}.os-round-page-meta{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:var(--sp-4)}.os-round-page-body{padding:var(--sp-24)}.os-round-products{gap:var(--sp-16);flex-direction:column;display:flex}.os-round-product{border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-16) 18px;transition:border-color var(--dur-base), background var(--dur-base)}.os-round-product.is-done{border-color:var(--ok);background:#2d86590a}.os-round-product.is-done .os-round-product-header{border-bottom-color:#2d865933}.os-round-product-header{align-items:center;gap:var(--sp-12);margin-bottom:var(--sp-12);padding-bottom:var(--sp-10);border-bottom:1px dashed var(--line);display:flex}.os-round-product-thumb{background:var(--bg-alt);border-radius:var(--radius);flex-shrink:0;width:44px;height:44px;overflow:hidden}.os-round-product-thumb img{object-fit:cover;width:100%;height:100%}.os-round-product-name{font-size:var(--fs-lg);font-weight:var(--fw-bold);align-items:center;gap:var(--sp-8);flex-wrap:wrap;flex:1;display:flex}.os-round-product-meta{font-size:var(--fs-xs);color:var(--ink-mute);margin-top:var(--sp-2);font-weight:var(--fw-normal)}.os-round-page-footer{padding:var(--sp-20) var(--sp-24);border-top:1px solid var(--line);background:var(--bg);align-items:center;gap:var(--sp-12);flex-wrap:wrap;justify-content:space-between;display:flex}.os-round-page-footer .footer-help{font-size:var(--fs-sm);color:var(--ink-soft);flex:1;min-width:200px}.os-round-page-footer .footer-actions{gap:var(--sp-8);flex-wrap:wrap;align-items:center;display:flex}.os-round-result-summary{align-items:center;gap:var(--sp-16);flex:1;min-width:200px;display:flex}.os-round-result-summary .result-label{font-size:var(--fs-xs);color:var(--ink-mute);letter-spacing:.1em;text-transform:uppercase}.os-round-result-summary .result-value{font-size:var(--fs-xl);font-weight:var(--fw-extrabold);font-family:var(--font-mono)}.os-empty-round-product{font-size:var(--fs-sm);color:var(--ink-mute);padding:var(--sp-8) 0;text-align:center}.os-round-bulk-fill{background:var(--bg);padding:var(--sp-16) var(--sp-20);margin-top:var(--sp-16);border-radius:var(--radius);border:1px dashed var(--line-strong);gap:var(--sp-12);flex-wrap:wrap;align-items:center;display:flex}.os-round-bulk-fill label{font-weight:var(--fw-medium);font-size:var(--fs-md);color:var(--ink);margin:0}.os-product-list{gap:var(--sp-12);margin-bottom:var(--sp-24);flex-direction:column;display:flex}.os-product-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);transition:all var(--dur-base);overflow:hidden}.os-product-card.is-done{border-color:var(--ok);background:var(--ok-soft)}.os-product-summary{padding:var(--sp-16) var(--sp-20);align-items:center;gap:var(--sp-16);cursor:pointer;display:flex}.os-product-summary:hover{background:var(--bg-alt)}.os-product-card.is-done .os-product-summary:hover{background:#2d86591a}.os-product-thumb{border-radius:var(--radius);background:var(--bg-alt);flex-shrink:0;width:60px;height:60px;overflow:hidden}.os-product-thumb img{object-fit:cover;width:100%;height:100%}.os-product-info{flex:1;min-width:0}.os-product-name{margin-bottom:4px;font-size:16px;font-weight:700}.os-product-progress{font-size:var(--fs-sm);color:var(--ink-soft);gap:var(--sp-16);flex-wrap:wrap;display:flex}.os-progress-num{font-family:var(--font-mono);font-weight:var(--fw-semibold);font-size:var(--fs-xl);color:var(--ink)}.os-product-detail{padding:0 var(--sp-20) var(--sp-20);border-top:1px solid var(--line)}.os-product-card.is-done .os-product-detail{border-top-color:#2d865933}.os-round{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);margin-top:var(--sp-12);overflow:hidden}.os-round.active{border-color:var(--accent);border-width:2px}.os-round.done{background:var(--bg);opacity:.85}.os-round-header{padding:var(--sp-12) var(--sp-16);justify-content:space-between;align-items:center;gap:var(--sp-8);font-weight:var(--fw-semibold);flex-wrap:wrap;display:flex}.os-round.active .os-round-header{background:var(--accent-soft)}.os-round.done .os-round-header{background:var(--ok-soft)}.os-round-title{align-items:center;gap:var(--sp-8);font-size:15px;display:flex}.os-round-status{font-size:var(--fs-xs);padding:var(--sp-2) var(--sp-8);border-radius:var(--radius-full);font-weight:var(--fw-medium)}.os-round-status.active{background:var(--accent);color:#fff}.os-round-status.done{background:var(--ok);color:#fff}.os-round-body{padding:var(--sp-12) var(--sp-16)}.os-allocation-list{gap:var(--sp-6);flex-direction:column;display:flex}.os-alloc-item{align-items:center;gap:var(--sp-10);padding:var(--sp-8) var(--sp-12);background:var(--bg);border-radius:var(--radius);font-size:var(--fs-md);display:flex}.os-alloc-item.checked{background:var(--ok-soft)}.os-alloc-order{font-family:var(--font-mono);color:var(--ink-soft);min-width:36px;font-weight:700}.os-alloc-name{flex:1;font-weight:500}.os-alloc-variant{color:var(--ink-soft);font-size:12px}.os-alloc-qty{color:var(--ink);font-weight:700}.os-round-footer{padding:var(--sp-12) var(--sp-16);background:var(--bg);border-top:1px solid var(--line);align-items:center;gap:var(--sp-12);flex-wrap:wrap;display:flex}.os-round-footer label{font-size:var(--fs-sm);margin:0}.os-round-footer input[type=number]{width:80px;padding:var(--sp-6) var(--sp-10)}.os-shopkeeper-modal-content{text-align:center;padding:var(--sp-40) var(--sp-24)}.os-shopkeeper-title{font-size:var(--fs-2xl);font-weight:var(--fw-bold);margin-bottom:var(--sp-8)}.os-shopkeeper-meta{color:var(--ink-soft);font-size:var(--fs-md);margin-bottom:var(--sp-32)}.os-shopkeeper-list{gap:var(--sp-12);text-align:left;flex-direction:column;display:flex}.os-shopkeeper-item{background:var(--bg);border-radius:var(--radius);font-size:var(--fs-xl);font-weight:var(--fw-semibold);justify-content:space-between;align-items:center;gap:var(--sp-16);padding:14px 18px;display:flex}.os-shopkeeper-item-info{flex:1;align-items:center;gap:14px;min-width:0;display:flex}.os-shopkeeper-thumb{border-radius:var(--radius);background:var(--paper);border:1px solid var(--line);flex-shrink:0;width:56px;height:56px;overflow:hidden}.os-shopkeeper-thumb img{object-fit:cover;width:100%;height:100%}.os-shopkeeper-name{text-align:left;line-height:1.3;font-size:var(--fs-lg);flex:1}.os-shopkeeper-qty{font-family:var(--font-mono);font-size:var(--fs-3xl);font-weight:var(--fw-extrabold);color:var(--accent);flex-shrink:0}.os-rules-list{gap:var(--sp-10);flex-direction:column;display:flex}.os-rule-card{border:1px solid var(--line);border-radius:var(--radius);padding:14px var(--sp-16);background:var(--paper)}.os-rule-card-header{justify-content:space-between;align-items:center;gap:var(--sp-12);flex-wrap:wrap;display:flex}.os-rule-card-name{font-weight:var(--fw-semibold);font-size:var(--fs-md);flex:1;min-width:160px}.os-rule-card-meta{font-size:var(--fs-xs);color:var(--ink-mute);margin-top:var(--sp-2);font-weight:var(--fw-normal)}.os-rule-card-controls{align-items:center;gap:var(--sp-12);flex-wrap:wrap;display:flex}.os-rule-limit-input{text-align:center;width:80px!important}.os-color-merge-row{margin-top:var(--sp-12);padding-top:var(--sp-12);border-top:1px dashed var(--line);align-items:center;gap:var(--sp-12);flex-wrap:wrap;display:flex}.os-toggle{align-items:center;gap:var(--sp-8);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.os-toggle input[type=checkbox]{cursor:pointer;width:16px;height:16px}.os-toggle-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--ink)}.os-toggle-help{font-size:var(--fs-xs);color:var(--ink-mute);margin-left:var(--sp-24);margin-top:var(--sp-4);width:100%;line-height:1.5}.os-status-banner{background:var(--ok-soft);border:1px solid var(--ok);color:var(--ok);padding:var(--sp-16) var(--sp-20);border-radius:var(--radius-md);margin-bottom:var(--sp-24);font-weight:var(--fw-semibold);justify-content:space-between;align-items:center;gap:var(--sp-12);flex-wrap:wrap;font-size:15px;display:flex}@media (max-width:768px){.os-content{padding:20px 16px}.os-progress-bar{width:120px}.os-round-tab{padding:8px 12px;font-size:13px}.os-round-page-header{padding:16px 18px}.os-round-page-title{font-size:18px}.os-round-page-body,.os-round-page-footer{padding:16px}.os-round-product{padding:12px 14px}.os-round-product-thumb{width:36px;height:36px}}
.activity-spinner{vertical-align:middle;border:2px solid;border-right-color:#0000;border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.8s linear infinite activity-spin;display:inline-block}.navigation-loading{min-height:240px;color:var(--text,#202734);justify-content:center;align-items:center;gap:16px;padding:32px;display:flex}.navigation-loading p{opacity:.7;margin:6px 0 0;font-size:14px}.submit-activity{z-index:1200;color:#202734;pointer-events:none;background:#fff;border:1px solid #dce3ec;border-radius:12px;align-items:center;gap:12px;width:max-content;max-width:calc(100vw - 32px);padding:16px 20px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #17284026}.submit-activity small{color:#526071;margin-top:4px;display:block}@keyframes activity-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.activity-spinner{animation:none}}

