:root{
  --wall:#34444c; --wall-2:#2b3a41; --ink:#1f272b; --manila:#efe3c3; --manila-2:#e4d5ad; --chalk:#eef2ee;
  --accent:#f26a1b; --ok:#2f8f5b; --warn:#d9a21b; --bad:#c9372c; --muted:#8fa0a6;
  --display:"Barlow Condensed","Oswald","Arial Narrow","Roboto Condensed",Impact,sans-serif;
  --body:"Source Sans 3","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:15px/1.45 var(--body);color:var(--chalk);background:var(--wall-2)}
a{color:inherit}
button,input{font:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.shell{display:grid;grid-template-columns:76px 1fr;min-height:100vh;
  background:radial-gradient(circle at 12px 12px,rgba(0,0,0,.28) 0 3px,transparent 3.5px) 0 0/28px 28px,var(--wall)}
.rail{position:sticky;top:0;height:100vh;background:var(--ink);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:10px 6px;border-right:4px solid var(--accent)}
.rail a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 2px;border-radius:6px;text-decoration:none;color:#b9c5c9;font:600 12px/1 var(--display);letter-spacing:.04em}
.rail a span{font-size:13px}
.rail svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.rail a:hover{background:#2c373c;color:#fff}
.rail a[aria-current=page]{background:var(--accent);color:#1b1208}
.rail .brand{color:var(--accent);margin-bottom:8px}
.rail .brand:hover{background:transparent}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:18px;padding:14px 26px;background:rgba(31,39,43,.92);backdrop-filter:blur(3px);position:sticky;top:0;z-index:20;border-bottom:2px dashed rgba(255,255,255,.18)}
.top h1{margin:0;font:700 30px/1 var(--display);letter-spacing:.03em;white-space:nowrap}
.finder{position:relative;flex:1;max-width:560px;margin-left:auto}
.finder input{width:100%;padding:9px 14px;border-radius:6px;border:2px solid #56686f;background:var(--wall-2);color:var(--chalk)}
.finder input::placeholder{color:#9db0b6}
.drop{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--manila);color:var(--ink);border-radius:6px;box-shadow:0 12px 30px rgba(0,0,0,.45);max-height:70vh;overflow:auto;padding:6px}
.drop h4{margin:8px 8px 2px;font:700 14px var(--display);letter-spacing:.05em;color:#6b5d3a}
.drop button{display:flex;justify-content:space-between;gap:12px;width:100%;text-align:left;background:none;border:0;padding:7px 8px;border-radius:4px;color:inherit;cursor:pointer}
.drop button:hover,.drop button[aria-selected=true]{background:var(--manila-2)}
.drop .n{color:#6b5d3a;font-variant-numeric:tabular-nums}
.drop .none{padding:10px 8px;color:#6b5d3a}
.status{display:flex;align-items:center;gap:12px}
.stamp{font-size:13px;color:var(--muted);white-space:nowrap}
.stamp.fresh{animation:fresh 1.6s ease-out}
@keyframes fresh{from{color:var(--accent)}to{color:var(--muted)}}
.bell{position:relative;background:none;border:2px solid #56686f;border-radius:6px;width:40px;height:38px;color:var(--chalk);cursor:pointer}
.bell svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.bell b{position:absolute;top:-8px;right:-8px;background:var(--accent);color:#1b1208;border-radius:10px;padding:0 6px;font-size:12px}
main{padding:22px 26px 60px;outline:none}
.err,.empty,.loading{padding:18px;border:2px dashed #56686f;border-radius:8px;color:#c7d3d6}
.err{border-color:var(--bad)}
.tiles{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:24px}
.tag{position:relative;background:var(--manila);color:var(--ink);padding:12px 18px 10px 34px;border-radius:4px 14px 14px 4px;min-width:150px;box-shadow:0 3px 0 rgba(0,0,0,.35)}
.tag::before{content:"";position:absolute;left:10px;top:50%;width:12px;height:12px;margin-top:-6px;border-radius:50%;background:var(--wall);box-shadow:inset 0 2px 3px rgba(0,0,0,.6)}
.tag b{display:block;font:700 34px/1 var(--display);font-variant-numeric:tabular-nums}
.tag span{font-size:13px;color:#4f4527}
.tag.hot b{color:var(--bad)}
.lanes{display:grid;grid-template-columns:repeat(5,minmax(210px,1fr));gap:16px;align-items:start;overflow-x:auto;padding-bottom:10px}
.lane{background:rgba(20,28,32,.55);border-radius:8px;padding:10px;min-height:200px}
.lane h2{margin:2px 4px 10px;display:flex;justify-content:space-between;align-items:baseline;font:700 22px var(--display);letter-spacing:.05em;border-bottom:3px solid var(--lane,#fff);padding-bottom:4px}
.lane h2 em{font-style:normal;color:var(--lane,#fff);font-variant-numeric:tabular-nums}
.ticket{position:relative;background:var(--manila);color:var(--ink);border-radius:3px;padding:20px 12px 10px;margin-bottom:12px;box-shadow:0 3px 0 rgba(0,0,0,.35);border-top:6px solid var(--kind,#999)}
.ticket::before{content:"";position:absolute;left:50%;top:-1px;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:var(--wall);box-shadow:inset 0 2px 3px rgba(0,0,0,.6)}
.ticket .no{font:700 18px var(--display);letter-spacing:.06em}
.ticket p{margin:4px 0 8px;font-size:14px}
.ticket footer{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:#4f4527;border-top:1px dashed #b7a77a;padding-top:6px}
.ticket .late{color:var(--bad);font-weight:700}
.kind{font:600 12px var(--display);letter-spacing:.05em;color:#4f4527}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:18px}
.card{background:var(--manila);color:var(--ink);border-radius:4px;padding:16px 16px 12px;position:relative;box-shadow:0 3px 0 rgba(0,0,0,.35)}
.card h3{margin:0 0 8px;font:700 20px var(--display);letter-spacing:.04em}
.card .box{position:relative;height:250px}
.card .empty{border-color:#b7a77a;color:#6b5d3a}
.map-wrap{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:16px;height:calc(100vh - 120px);min-height:480px}
.panel{background:var(--manila);color:var(--ink);border-radius:6px;padding:12px;display:flex;flex-direction:column;min-height:0}
.seg{display:flex;gap:6px;margin-bottom:10px}
.seg button{flex:1;padding:7px 4px;border-radius:4px;border:2px solid var(--ink);background:transparent;color:var(--ink);font:700 16px var(--display);letter-spacing:.04em;cursor:pointer}
.seg button[aria-pressed=true]{background:var(--ink);color:var(--manila)}
.panel input[type=search]{width:100%;padding:8px 10px;border-radius:4px;border:2px solid #9a8a5c;background:#fbf5e3;color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.chip{border:1.5px solid var(--ink);border-radius:14px;padding:2px 10px;background:#fbf5e3;color:var(--ink);cursor:pointer;font-size:13px}
.chip.on{background:var(--accent);border-color:var(--accent);color:#1b1208}
.tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0 8px;font-size:13px}
.btn{border:2px solid var(--ink);background:var(--ink);color:var(--manila);border-radius:4px;padding:5px 12px;font:700 15px var(--display);letter-spacing:.04em;cursor:pointer}
.btn.on{background:var(--accent);border-color:var(--accent);color:#1b1208}
.linkbtn{background:none;border:0;padding:0;color:#7a3a0d;text-decoration:underline;cursor:pointer}
.list{list-style:none;margin:0;padding:0;overflow:auto;flex:1;border-top:1px dashed #b7a77a}
.list li button{display:grid;grid-template-columns:1fr auto;gap:2px 10px;width:100%;text-align:left;background:none;border:0;border-bottom:1px dashed #cdbd8e;padding:8px 4px;color:var(--ink);cursor:pointer}
.list li button:hover{background:var(--manila-2)}
.list .t{font-weight:700}.list .s{grid-column:1;font-size:13px;color:#5d5230}
.list .d{grid-row:1/3;grid-column:2;align-self:center;font:700 20px var(--display);font-variant-numeric:tabular-nums}
.hint{font-size:12.5px;color:#5d5230;margin:6px 0 0}
#map{border-radius:6px;overflow:hidden;min-height:400px;border:3px solid var(--ink)}
.maplibregl-popup-content{color:var(--ink);font-family:var(--body)}
.radio{position:fixed;right:0;top:0;bottom:0;width:360px;max-width:92vw;background:var(--ink);z-index:40;box-shadow:-10px 0 30px rgba(0,0,0,.5);display:flex;flex-direction:column;border-left:4px solid var(--accent)}
.radio[hidden],.sheet[hidden],.drop[hidden]{display:none}
.radio-head{display:flex;justify-content:space-between;padding:14px 16px;font:700 22px var(--display);border-bottom:1px dashed #56686f}
.radio-head button{background:none;border:0;color:var(--chalk);font-size:26px;cursor:pointer}
.radio ol{list-style:none;margin:0;padding:10px;overflow:auto}
.radio li{background:var(--manila);color:var(--ink);padding:8px 10px;border-radius:3px;margin-bottom:8px;border-left:6px solid var(--ok);font-size:14px}
.radio li.updated{border-left-color:var(--warn)}.radio li.deleted{border-left-color:var(--bad)}
.radio li small{display:block;color:#5d5230}
.radio li.empty{border:0;background:none;color:#b9c5c9}
.toasts{position:fixed;left:96px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:50;max-width:min(420px,80vw)}
.toast{background:var(--manila);color:var(--ink);padding:9px 14px;border-radius:4px;border-left:6px solid var(--ok);box-shadow:0 6px 18px rgba(0,0,0,.45);font-size:14px;animation:in .25s ease-out}
.toast.updated{border-left-color:var(--warn)}.toast.deleted{border-left-color:var(--bad)}
@keyframes in{from{transform:translateY(10px);opacity:0}}
.sheet{position:fixed;inset:70px 0 0 76px;z-index:30;background:rgba(20,28,32,.7);display:flex;justify-content:center;align-items:flex-start;padding:30px;overflow:auto}
.sheet .paper{background:var(--manila);color:var(--ink);border-radius:6px;padding:18px 20px;width:min(760px,100%);box-shadow:0 14px 40px rgba(0,0,0,.5)}
.sheet h2{margin:0 0 4px;font:700 26px var(--display);letter-spacing:.04em}
.rec{border-top:1px dashed #b7a77a;padding:10px 0;display:grid;grid-template-columns:max-content 1fr;gap:2px 14px;font-size:14px}
.rec dt{color:#5d5230}.rec dd{margin:0}
@media (max-width:820px){
  .shell{grid-template-columns:1fr}
  .rail{position:fixed;bottom:0;top:auto;height:auto;flex-direction:row;z-index:35;border-right:0;border-top:4px solid var(--accent);padding:4px;justify-content:space-around}
  .rail .brand{display:none}.rail a span{font-size:11px}
  .top{flex-wrap:wrap;gap:8px;padding:10px 14px}.finder{order:3;flex-basis:100%;max-width:none}
  main{padding:14px 14px 90px}.map-wrap{grid-template-columns:1fr;height:auto}#map{height:380px}
  .sheet{inset:0;padding:12px}.toasts{left:12px;bottom:78px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
