:root{--bg:#faf8f5;--card:#fff;--ink:#1f1b16;--muted:#6b6459;--line:#e6e0d6;--brand:#0f6b4f;--brand-ink:#fff;--accent:#c2410c;--danger:#b42318;--ok:#0f6b4f;--radius:14px}
@media (prefers-color-scheme:dark){:root{--bg:#14110e;--card:#1e1a16;--ink:#f3eee6;--muted:#a89f91;--line:#332d26;--brand:#34b98a;--brand-ink:#08241a;--accent:#fb923c;--danger:#f97066;--ok:#34b98a}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}
.top{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}
.top-in{display:flex;gap:12px;align-items:center;padding-top:12px;padding-bottom:12px}
.top h1{font-size:1.2rem;margin:0;white-space:nowrap}
#search{flex:1;min-width:0;padding:10px 14px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink)}
.cart-btn{border:0;background:var(--brand);color:var(--brand-ink);padding:10px 16px;border-radius:999px;font-weight:600;cursor:pointer}
.promo-bar{background:var(--accent);color:#fff;font-size:.85rem;text-align:center;padding:4px 16px}
.promo-bar:empty{display:none}
.chips{display:flex;gap:8px;overflow-x:auto;padding:16px 0}
.chip{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:6px 14px;border-radius:999px;cursor:pointer;white-space:nowrap}
.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;padding-bottom:48px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}
.thumb{aspect-ratio:4/3;display:grid;place-items:center;font-size:3.5rem;background:color-mix(in srgb,var(--brand) 8%,var(--card));position:relative}
.thumb img{width:100%;height:100%;object-fit:cover}
.badge{position:absolute;top:8px;left:8px;background:var(--accent);color:#fff;font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:999px}
.card-b{padding:12px;display:flex;flex-direction:column;gap:4px;flex:1}
.code{font-size:.72rem;color:var(--muted);letter-spacing:.04em}
.name{font-weight:600}
.desc{font-size:.85rem;color:var(--muted)}
.price{margin-top:auto;font-size:1.15rem;font-weight:700}
.price s{font-size:.85rem;color:var(--muted);font-weight:400;margin-right:6px}
button.add{margin-top:8px;border:0;background:var(--brand);color:var(--brand-ink);padding:10px;border-radius:10px;font-weight:600;cursor:pointer}
button.add:disabled{background:var(--line);color:var(--muted);cursor:not-allowed}
.backdrop{position:fixed;inset:0;background:#0007;opacity:0;pointer-events:none;transition:.2s;z-index:30}
.backdrop.on{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;height:100%;width:min(420px,100%);background:var(--card);z-index:40;transform:translateX(100%);transition:.25s;display:flex;flex-direction:column;padding:16px;gap:10px;overflow-y:auto}
.drawer.on{transform:none}
.drawer-head{display:flex;justify-content:space-between;align-items:center;font-size:1.1rem}
.drawer-head button{border:0;background:none;color:var(--ink);font-size:1.2rem;cursor:pointer}
.cart-lines{flex:1;display:flex;flex-direction:column;gap:10px;min-height:80px}
.line{display:grid;grid-template-columns:1fr auto;gap:4px 12px;border-bottom:1px solid var(--line);padding-bottom:10px}
.line .qty{display:flex;align-items:center;gap:8px}
.qty button{width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer}
.empty{color:var(--muted);text-align:center;padding:24px 0}
.coupon{display:flex;gap:8px}
.coupon input,fieldset input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);font:inherit}
.coupon button,.secondary{border:1px solid var(--brand);background:none;color:var(--brand);padding:10px 14px;border-radius:10px;font-weight:600;cursor:pointer}
.totals{display:grid;gap:4px;font-size:.95rem}
.totals div{display:flex;justify-content:space-between}
.totals .disc{color:var(--ok)}
.totals .grand{font-size:1.2rem;font-weight:700;border-top:1px solid var(--line);padding-top:6px;margin-top:4px}
.msg{font-size:.85rem;min-height:1em}
.msg.err{color:var(--danger)}
.msg.ok{color:var(--ok)}
.primary{border:0;background:var(--brand);color:var(--brand-ink);padding:14px;border-radius:12px;font-weight:700;font-size:1rem;cursor:pointer;width:100%}
.primary:disabled{opacity:.45;cursor:not-allowed}
dialog{border:0;border-radius:var(--radius);padding:0;width:min(560px,calc(100% - 24px));max-height:92vh;background:var(--card);color:var(--ink)}
dialog::backdrop{background:#000a}
dialog form{padding:16px;display:grid;gap:12px}
fieldset{border:1px solid var(--line);border-radius:12px;display:grid;gap:10px;padding:12px}
legend{font-weight:700;padding:0 6px}
label{display:grid;gap:4px;font-size:.85rem;color:var(--muted)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#map{height:260px;border-radius:12px;border:1px solid var(--line)}
.area-status{padding:10px 12px;border-radius:10px;background:var(--bg);font-size:.9rem}
.area-status.ok{background:color-mix(in srgb,var(--ok) 15%,var(--card));color:var(--ok);font-weight:600}
.area-status.bad{background:color-mix(in srgb,var(--danger) 15%,var(--card));color:var(--danger);font-weight:600}
.secure{color:var(--muted);text-align:center}
.status-page{max-width:520px;margin:15vh auto;text-align:center;padding:24px}
.status-page a{color:var(--brand);font-weight:600}
