:root{--bg:#15110e;--bg-deep:#0d0a08;--surface:#211912;--surface-2:#2c2118;--line:#f7ece017;--line-strong:#f7ece029;--ink:#f7ece0;--ink-dim:#cdb9a6;--muted:#97826f;--ember:#ffb24a;--ember-soft:#ffcf86;--coral:#ff5a3c;--coral-2:#ff7d4a;--mint:#6fe0b0;--radius:20px;--radius-sm:14px;--radius-pill:999px;--shadow-card:0 18px 40px -22px #000000e6;--glow-ember:0 0 0 1px #ffb24a2e, 0 14px 50px -16px #ff8a3280;--glow-coral:0 10px 30px -8px #ff5a3c8c;--font-display:"Fraunces", "Noto Serif TC", "Noto Serif JP", Georgia, serif;--font-body:"Hanken Grotesk", "Noto Sans TC", "Noto Sans JP", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-body);color:var(--ink);background:var(--bg-deep);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}body:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(120% 80% at 75% -10%, #ff8a3238, transparent 55%), radial-gradient(90% 70% at 10% 110%, #ff5a3c29, transparent 50%), radial-gradient(60% 50% at 50% 40%, #3c281a73, transparent 70%), var(--bg);position:fixed;inset:0}body:after{content:"";z-index:1;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.app{z-index:2;max-width:480px;min-height:100dvh;padding-bottom:116px;padding-bottom:calc(116px + env(safe-area-inset-bottom));margin:0 auto;position:relative;overflow-x:clip}.header{z-index:30;-webkit-backdrop-filter:blur(14px);background:linear-gradient(#0d0a08eb,#0d0a088c 70%,#0000);justify-content:space-between;align-items:center;gap:10px;padding:14px 18px;display:flex;position:sticky;top:0}.brand{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:26px;font-style:italic;font-weight:600;line-height:1;text-decoration:none}.brand b{color:var(--ember);font-style:italic}.header-tools{align-items:center;gap:8px;display:flex}.icon-btn{border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--ink-dim);font:600 12.5px/1 var(--font-body);cursor:pointer;background:#f7ece00a;align-items:center;gap:6px;padding:8px 12px;transition:transform .15s,border-color .2s,color .2s,background .2s;display:inline-flex}.icon-btn:hover{color:var(--ink);border-color:var(--line-strong)}.icon-btn:active{transform:scale(.94)}.lang-select{appearance:none;border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--ink);font:600 12.5px/1 var(--font-body);cursor:pointer;background:#f7ece00a url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23cdb9a6' stroke-width='2'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E") right 12px center no-repeat;padding:8px 30px 8px 14px}.lang-select:focus-visible{outline:2px solid var(--ember)}.btn{cursor:pointer;font-family:var(--font-body);color:#2a0f06;background:linear-gradient(135deg, var(--coral-2), var(--coral));border-radius:var(--radius-pill);letter-spacing:.01em;box-shadow:var(--glow-coral);border:0;padding:11px 20px;font-weight:800;transition:transform .12s cubic-bezier(.34,1.56,.64,1),filter .2s}.btn:hover{filter:brightness(1.06)}.btn:active{transform:scale(.93)}.btn-block{border-radius:16px;width:100%;padding:17px;font-size:17px;display:block}.btn-ember{background:linear-gradient(135deg, var(--ember-soft), var(--ember));box-shadow:var(--glow-ember)}.btn-ghost{color:var(--ink);border:1px solid var(--line-strong);box-shadow:none;background:0 0}.add-btn{cursor:pointer;color:#2a0f06;background:linear-gradient(135deg, var(--coral-2), var(--coral));width:42px;height:42px;box-shadow:var(--glow-coral);border:0;border-radius:50%;flex-shrink:0;place-items:center;font-size:22px;line-height:1;transition:transform .14s cubic-bezier(.34,1.6,.64,1);display:grid}.add-btn:active{transform:scale(.82)rotate(-8deg)}.card{background:linear-gradient(180deg, var(--surface-2), var(--surface));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card);transition:transform .25s,border-color .25s,box-shadow .25s;position:relative;overflow:hidden}a.card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-card), var(--glow-ember);transform:translateY(-3px)}.img-wrap{background:var(--surface);position:relative;overflow:hidden}.img-wrap img{object-fit:cover;width:100%;height:100%;display:block}.img-shade{background:linear-gradient(#0000 45%,#0d0a08a8);position:absolute;inset:0}.tag{border-radius:var(--radius-pill);font:800 12px/1 var(--font-body);border:1px solid var(--line-strong);color:var(--ember);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d0a0899;align-items:center;gap:4px;padding:4px 10px;display:inline-flex}.eyebrow{font:800 11px/1 var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:var(--ember)}.muted{color:var(--muted)}.price{font-family:var(--font-display);letter-spacing:-.01em;font-weight:600}.display{font-family:var(--font-display);letter-spacing:-.02em;font-weight:600;line-height:1.02}.display .it{color:var(--ember);font-style:italic}.chips{scroll-snap-type:x proximity;gap:9px;padding:4px 18px 16px;display:flex;overflow-x:auto}.chip{scroll-snap-align:start;white-space:nowrap;border-radius:var(--radius-pill);border:1px solid var(--line-strong);color:var(--ink-dim);font:700 13px/1 var(--font-body);cursor:pointer;background:#f7ece008;flex:none;padding:9px 16px;transition:color .2s,transform .12s;position:relative}.chip:active{transform:scale(.94)}.chip[data-on=true]{color:#2a0f06;border-color:#0000}.chip-bg{border-radius:var(--radius-pill);background:linear-gradient(135deg, var(--ember-soft), var(--ember));z-index:-1;position:absolute;inset:0}.cartbar-wrap{left:0;right:0;bottom:calc(18px + env(safe-area-inset-bottom));z-index:40;width:min(444px,100% - 28px);margin:0 auto;position:fixed}.cartbar{cursor:pointer;color:#2a0f06;background:linear-gradient(135deg, var(--coral-2), var(--coral));width:100%;font-family:var(--font-body);border:0;border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:13px 14px 13px 20px;font-weight:800;display:flex;box-shadow:0 18px 44px -14px #ff5a3cb3}.cartbar .go{border-radius:var(--radius-pill);background:#0d0a0838;align-items:center;gap:8px;padding:8px 14px;display:inline-flex}.toast-host{left:0;right:0;bottom:calc(96px + env(safe-area-inset-bottom));z-index:60;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(444px,100% - 28px);margin:0 auto;display:flex;position:fixed}.toast{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font:700 13.5px/1.2 var(--font-body);color:var(--ink);background:#211912eb;border-radius:14px;align-items:center;gap:10px;padding:11px 16px;display:flex;box-shadow:0 14px 34px -16px #000000e6}.toast .dot{background:var(--mint);color:#06231a;border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:13px;display:grid}.flyer{z-index:70;object-fit:cover;pointer-events:none;box-shadow:var(--glow-ember);border-radius:12px;position:fixed}@keyframes shimmer{to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg, var(--surface) 25%, var(--surface-2) 37%, var(--surface) 63%);background-size:200% 100%;animation:1.3s linear infinite shimmer}.bignum{font-family:var(--font-display);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-weight:600}.divider{background:var(--line);border:0;height:1px;margin:0}.levelstrip{border:1px solid var(--line);background:#f7ece009;border-radius:14px;margin-top:16px;padding:12px 14px}.bar{border-radius:var(--radius-pill);background:#f7ece017;height:6px;margin-top:8px;overflow:hidden}.bar-fill{border-radius:var(--radius-pill);background:linear-gradient(90deg, var(--ember), var(--coral));height:100%;transition:width .5s}::-webkit-scrollbar{width:0;height:0}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
