:root{--bg0:#0c0a09;--bg1:#1a1210;--peach:#ff8f6b;--peach-soft:#ffb39a;--blossom:#f7c6d0;--ink:#f5ebe6;--muted:#a89890;--line:#ffc8aa24;--glow:#ff785047;--dock:#120c0aeb;--radius:18px;--font-display:"Syne", "Noto Sans HK", sans-serif;--font-body:"Noto Sans HK", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);color:var(--ink);background:var(--bg0);overflow:hidden}button,input{font:inherit}.app{z-index:1;grid-template-rows:auto 1fr auto auto;gap:.75rem;max-width:720px;height:100%;margin:0 auto;padding:1.25rem 1.1rem 0;display:grid;position:relative}.atmosphere{z-index:0;pointer-events:none;background:radial-gradient(80% 55% at 50% -10%,#ff6e4638,#0000 55%),radial-gradient(50% 40% at 90% 80%,#f7b4c814,#0000 50%),radial-gradient(40% 35% at 10% 70%,#50281e73,#0000 55%),linear-gradient(#140e0c 0%,#0c0a09 100%);position:fixed;inset:0}.atmosphere:after{content:"";opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.brand{align-items:center;gap:.9rem;animation:.7s both rise;display:flex}.brand img{object-fit:cover;width:56px;height:56px;box-shadow:0 0 0 2px #ffa07859, 0 12px 40px var(--glow);border-radius:50%}.brand h1{font-family:var(--font-display);letter-spacing:.02em;margin:0;font-size:clamp(1.6rem,4vw,2.1rem);font-weight:800;line-height:1.1}.brand p{color:var(--muted);margin:.15rem 0 0;font-size:.92rem;font-weight:300}.chat{scroll-behavior:smooth;flex-direction:column;gap:.7rem;padding:.5rem .15rem 1rem;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;word-break:break-word;border-radius:16px;max-width:88%;padding:.75rem .95rem;font-size:.98rem;line-height:1.45;animation:.35s both rise}.msg.user{background:linear-gradient(145deg,#ff8f6b47,#ff8f6b1a);border:1px solid #ffa08240;border-bottom-right-radius:5px;align-self:flex-end}.msg.assistant{border:1px solid var(--line);background:#ffffff0a;border-bottom-left-radius:5px;align-self:flex-start}.msg.system{color:var(--muted);background:0 0;border:none;align-self:center;padding:.2rem;font-size:.85rem}.chat-link{color:var(--peach-soft);text-underline-offset:3px;font-weight:600;text-decoration:underline}.composer{grid-template-columns:auto 1fr auto;align-items:center;gap:.55rem;padding-bottom:.35rem;animation:.8s both rise;display:grid}.mic-btn,.send-btn{cursor:pointer;color:var(--ink);border:none;border:1px solid var(--line);background:#ffffff0f;transition:transform .15s,background .2s,box-shadow .2s}.mic-btn{border-radius:50%;place-items:center;width:52px;height:52px;display:grid}.mic-btn.listening{background:#ff644659;animation:1.2s infinite pulse;box-shadow:0 0 0 6px #ff785026}.send-btn{background:linear-gradient(135deg, var(--peach), #e86a4a);border:none;border-radius:999px;height:52px;padding:0 1.1rem;font-weight:600}.send-btn:disabled,.mic-btn:disabled{opacity:.45;cursor:not-allowed}.composer input{border:1px solid var(--line);height:52px;color:var(--ink);background:#ffffff0a;border-radius:999px;outline:none;padding:0 1.1rem}.composer input:focus{border-color:#ffa08273;box-shadow:0 0 0 3px #ff78501f}.composer input::placeholder{color:var(--muted)}.dock{background:linear-gradient(180deg, transparent, var(--dock) 28%);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:.85rem;min-height:88px;margin:0 -1.1rem;padding:.85rem 1.1rem 1.1rem;animation:.9s both rise;display:grid;position:sticky;bottom:0}.dock.empty{opacity:.55}.cover{object-fit:cover;background:#2a1c18;border-radius:10px;width:58px;height:58px;transition:opacity .4s;box-shadow:0 8px 24px #00000059}.cover.placeholder{color:var(--peach-soft);place-items:center;font-size:1.4rem;display:grid}.meta{min-width:0}.meta .title{white-space:nowrap;text-overflow:ellipsis;font-size:.98rem;font-weight:600;overflow:hidden}.meta .sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:.15rem;font-size:.82rem;overflow:hidden}.meta .queue{color:var(--blossom);opacity:.85;margin-top:.25rem;font-size:.75rem}.meta .tap-play{font:inherit;cursor:pointer;color:#1a1210;background:var(--peach-soft,#f3c9a8);border:0;border-radius:999px;margin-top:.35rem;padding:.35rem .75rem;font-size:.78rem;font-weight:600}.transport{gap:.35rem;display:flex}.transport button{border:1px solid var(--line);width:40px;height:40px;color:var(--ink);cursor:pointer;background:#ffffff0d;border-radius:50%;place-items:center;display:grid}.transport button:hover{background:#ff8f6b33}.suggestions{flex-wrap:wrap;gap:.4rem;padding:0 .1rem .4rem;display:flex}.suggestions button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#ffffff08;border-radius:999px;padding:.35rem .75rem;font-size:.8rem}.suggestions button:hover{color:var(--ink);border-color:#ffa08259}.status-pill{color:var(--muted);align-items:center;gap:.4rem;font-size:.75rem;display:flex}.status-pill .dot{background:var(--peach);width:7px;height:7px;box-shadow:0 0 8px var(--glow);border-radius:50%}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@media (width<=520px){.app{padding:1rem .85rem 0}.dock{margin:0 -.85rem;padding:.75rem .85rem 1rem}.brand img{width:48px;height:48px}}.top-nav{gap:.4rem;animation:.55s both rise;display:flex}.top-nav button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#ffffff08;border-radius:999px;padding:.4rem .9rem;font-size:.85rem}.top-nav button.active,.top-nav button:hover{color:var(--ink);background:#ff8f6b26;border-color:#ffa08266}.top-nav .cart-nav{margin-left:auto}.msg-block{flex-direction:column;gap:.5rem;display:flex}.product-cards{gap:.55rem;max-width:100%;animation:.4s both rise;display:grid}.product-card{border:1px solid var(--line);background:#ffffff0a;border-radius:14px;grid-template-columns:64px 1fr;gap:.7rem;padding:.65rem;display:grid}.product-card-cover{object-fit:cover;background:#2a1c18;border-radius:10px;width:64px;height:64px}.product-card-cover.placeholder,.shop-tile-cover.placeholder,.cart-thumb.placeholder{color:var(--peach-soft);background:#2a1c18;place-items:center;display:grid}.product-card-type{color:var(--blossom);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.product-card-title{font-size:.92rem;font-weight:600}.product-card-meta{color:var(--muted);margin-top:.1rem;font-size:.8rem}.product-card-actions{gap:.35rem;margin-top:.45rem;display:flex}.product-card-actions button,.shop-filters button,.variant-row button,.add-btn,.cart-header button,.qty-row button{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#ffffff0d;border-radius:999px;padding:.3rem .7rem;font-size:.78rem}.product-card-actions button:first-child,.add-btn{background:linear-gradient(135deg, var(--peach), #e86a4a);border:none;font-weight:600}.product-card-actions button.ghost,.qty-row button.ghost{color:var(--muted);background:0 0}.shop-panel{padding-bottom:.5rem;overflow-y:auto}.shop-intro h2{font-family:var(--font-display);margin:0;font-size:1.25rem}.shop-intro p{color:var(--muted);margin:.35rem 0 .85rem;font-size:.88rem}.shop-filters{gap:.4rem;margin-bottom:.85rem;display:flex}.shop-filters button.active,.variant-row button.active{color:var(--ink);background:#ff8f6b40;border-color:#ffa08273}.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.shop-tile{text-align:left;border:1px solid var(--line);color:inherit;cursor:pointer;background:#ffffff08;border-radius:14px;padding:0;overflow:hidden}.shop-tile.selected{border-color:#ffa0828c;box-shadow:0 0 0 1px #ff785033}.shop-tile img,.shop-tile-cover{aspect-ratio:1;object-fit:cover;width:100%;display:block}.shop-tile-body{flex-direction:column;gap:.2rem;padding:.55rem .65rem .7rem;display:flex}.shop-tile-body strong{font-size:.88rem;line-height:1.25}.shop-tile-body .muted,.shop-detail .muted,.price{color:var(--muted);font-size:.78rem}.badge{color:var(--blossom);letter-spacing:.04em;font-size:.68rem;display:inline-block}.shop-detail{border:1px solid var(--line);background:#ffffff0a;border-radius:16px;grid-template-columns:120px 1fr;gap:.9rem;margin-top:1rem;padding:.9rem;animation:.35s both rise;display:grid}.shop-detail img{object-fit:cover;border-radius:12px;width:120px;height:120px}.shop-detail h3{margin:.25rem 0;font-size:1.05rem}.shop-detail .price{color:var(--peach-soft);margin:.4rem 0;font-size:1rem;font-weight:600}.variant-row{flex-wrap:wrap;gap:.35rem;margin-bottom:.6rem;display:flex}.add-btn{padding:.55rem 1rem}.cart-overlay{z-index:40;justify-content:flex-end;display:flex;position:fixed;inset:0}.cart-backdrop{cursor:pointer;background:#00000073;border:none;position:absolute;inset:0}.cart-drawer{border-left:1px solid var(--line);background:#140e0c;flex-direction:column;gap:.75rem;width:min(400px,100%);height:100%;padding:1rem 1rem 1.25rem;animation:.3s both rise;display:flex;position:relative}.cart-header{justify-content:space-between;align-items:center;display:flex}.cart-header h2{font-family:var(--font-display);margin:0;font-size:1.2rem}.cart-empty{color:var(--muted);font-size:.9rem}.cart-list{flex-direction:column;flex:1;gap:.75rem;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.cart-list li{grid-template-columns:56px 1fr auto;align-items:start;gap:.65rem;display:grid}.cart-list img,.cart-thumb{object-fit:cover;border-radius:8px;width:56px;height:56px}.cart-line-meta .title{font-size:.9rem;font-weight:600}.cart-line-meta .sub{color:var(--muted);font-size:.78rem}.qty-row{align-items:center;gap:.35rem;margin-top:.35rem;display:flex}.line-total{color:var(--peach-soft);font-size:.85rem}.cart-footer{border-top:1px solid var(--line);padding-top:.85rem}.cart-total{margin-bottom:.55rem}.checkout-btn{width:100%;color:var(--muted);cursor:not-allowed;background:#ff8f6b40;border:none;border-radius:999px;padding:.75rem;font-weight:600}.checkout-note{color:var(--muted);text-align:center;margin:.45rem 0 0;font-size:.78rem}@media (width<=520px){.shop-grid,.shop-detail{grid-template-columns:1fr}.shop-detail img{aspect-ratio:1;width:100%;height:auto}}
