:root { --bg:#14100e; --card:#201a17; --ink:#f6efe9; --muted:#a89a90; --hot:#e2562b; --ok:#3f9c62; }
* { box-sizing: border-box; }
body { margin:0; padding:16px; background:var(--bg); color:var(--ink);
  font:16px/1.4 system-ui,-apple-system,sans-serif; }
h1 { font-size:20px; margin:0 0 16px; }
.card { background:var(--card); border-radius:12px; padding:14px; margin-bottom:12px; }
.row { display:flex; justify-content:space-between; gap:12px; align-items:baseline; }
.muted { color:var(--muted); font-size:14px; }
.tag { display:inline-block; font-size:12px; padding:2px 8px; border-radius:999px; background:#2e2521; }
.tag.repeat { background:#2a3d2f; color:#9fe0b6; }
.tag.label { background:#3d3020; color:#e6c288; }
button { font:inherit; padding:12px 16px; border:0; border-radius:10px;
  background:var(--hot); color:#fff; width:100%; margin-top:10px; }
button.secondary { background:#2e2521; color:var(--ink); }
button:disabled { opacity:.5; }
.total { position:sticky; bottom:0; background:var(--card); padding:14px;
  border-radius:12px; font-weight:600; }
.tabs { display:flex; gap:8px; margin-bottom:12px; }
.tab { flex:1; width:auto; margin-top:0; padding:14px 12px; font-size:15px; font-weight:600;
  background:var(--card); color:var(--muted); }
.tab.active { background:var(--hot); color:#fff; }
.gate { max-width:320px; margin:20vh auto; display:grid; gap:12px; }
.gate input { padding:12px; border-radius:10px; border:1px solid #3a2f2a; background:#181310; color:var(--ink); }
.error { color:var(--hot); }
#map { height:52vh; border-radius:12px; margin-bottom:12px; }
