/* Brand tokens: change these to re-skin the store. */
:root{--bg:#f5f5f7;--card:#fff;--ink:#16161a;--mute:#6b6b76;--line:#e3e3ea;--brand:#8a2be2;--brand-ink:#fff;--sale:#d32f2f;--dark:#111;--warn:#fff4d6}
*{box-sizing:border-box}body{margin:0;font:15px/1.45 system-ui,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
a{color:inherit}button{font:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:default}
input,select,textarea{font:inherit;padding:10px;border:1px solid var(--line);border-radius:8px;width:100%;background:#fff;color:inherit}
h1{margin:8px 0 12px}.small{font-size:13px}.muted{color:var(--mute)}.accent{color:var(--brand);font-weight:600}.center{text-align:center}.nowrap{white-space:nowrap}
.btn{background:var(--brand);color:var(--brand-ink);border:0;border-radius:999px;padding:10px 18px;font-weight:600}
.btn.ghost{background:transparent;color:var(--brand);border:1px solid var(--brand)}.btn.light{color:#fff;border-color:#fff}.btn.sm{padding:6px 12px;font-size:13px}
.btn.wide{width:100%;margin-top:10px}.btn.danger{background:var(--sale)}
header{position:sticky;top:0;z-index:20;background:var(--dark);color:#fff;display:flex;align-items:center;gap:12px;padding:10px 16px}
header .logo{font-weight:800;letter-spacing:.08em;flex:1;text-align:center;cursor:pointer}
header .icon{background:none;border:0;color:#fff;font-size:20px;position:relative}
.badge{position:absolute;top:-6px;right:-8px;background:var(--brand);border-radius:999px;font-size:11px;padding:1px 6px}
.ticker{background:var(--brand);color:#fff;font-size:13px;padding:4px 16px}.notice{background:var(--warn);padding:8px 16px;font-size:14px}
main{max-width:1200px;margin:0 auto;padding:16px}
footer{max-width:1200px;margin:16px auto;padding:16px;display:flex;gap:16px;flex-wrap:wrap}
.banner{background:linear-gradient(135deg,#222,#444);color:#fff;border-radius:14px;padding:36px 24px;margin-bottom:16px}.banner h1{margin:0 0 8px;font-size:32px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row input{flex:1}
.chips{display:flex;gap:8px;overflow-x:auto;padding:8px 0}.chips.sticky{position:sticky;top:52px;background:var(--bg);z-index:5}
.chip{border:1px solid var(--brand);color:var(--brand);background:#fff;border-radius:999px;padding:6px 14px;white-space:nowrap;text-decoration:none}.chip.on{background:var(--brand);color:#fff}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}
.card{background:var(--card);border-radius:12px;padding:12px;position:relative;box-shadow:0 1px 3px #0001;display:flex;flex-direction:column;gap:6px;text-decoration:none}
.card .img{aspect-ratio:1;border-radius:8px;background:#eee;display:grid;place-items:center;font-size:40px;cursor:pointer;overflow:hidden}
.card .img img{width:100%;height:100%;object-fit:cover}.card .img.big{font-size:110px}
.card .sale{position:absolute;top:8px;left:8px;background:var(--sale);color:#fff;font-size:11px;padding:2px 8px;border-radius:4px;z-index:1}
.price s{color:var(--mute)}.price b{color:var(--sale)}.price b.accent{color:var(--brand)}.unit{color:var(--mute);font-size:12px}.tag{font-size:12px;color:var(--brand);text-align:center}
.row-head{display:flex;justify-content:space-between;align-items:center;margin:24px 0 8px}.row-head h2{margin:0;font-size:20px}
.overlay{position:fixed;inset:0;background:#0007;z-index:40;display:none}.overlay.on{display:block}
.drawer{position:fixed;top:0;bottom:0;width:min(380px,92vw);background:#fff;z-index:50;transition:transform .25s;overflow:auto;padding:16px}
.drawer.left{left:0;transform:translateX(-100%)}.drawer.right{right:0;transform:translateX(100%)}.drawer.on{transform:none}
.drawer nav a{display:block;padding:10px 0;border-bottom:1px solid var(--line);text-decoration:none}
.modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;border-radius:14px;z-index:60;width:min(520px,94vw);max-height:90vh;overflow:auto;padding:20px;display:none}
.modal.on{display:block}.modal.full{width:100vw;height:100vh;max-height:none;border-radius:0}.narrow{max-width:900px;margin:0 auto}
.stack{display:flex;flex-direction:column;gap:10px}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.panel{background:#fff;border-radius:12px;padding:16px;margin-bottom:14px}.panel nav a,.side nav a{display:block;padding:6px 0}
.side{display:grid;grid-template-columns:220px 1fr;gap:14px}
.line{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}
.gate{min-height:100vh;display:grid;place-items:center;background:#0b0b10;color:#fff;padding:16px}
.gate .box{background:#17171f;border-radius:16px;padding:24px;width:min(440px,100%)}.gate input,.gate select{background:#22222c;color:#fff;border-color:#333}
.tabs{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.err{color:#e55;min-height:1em;margin:4px 0}
table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:13px;color:var(--mute)}
.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;background:#eee}.pill.needs_attention{background:#fdd}.pill.received{background:#e6dcff}
@media(max-width:640px){.two,.side{grid-template-columns:1fr}.banner h1{font-size:26px}table{font-size:13px}}
