:root{--p301-black:#221f20;--p301-red:#ed1d26;--p301-red-dark:#c8161e;--p301-white:#fff;--p301-gray-50:#f6f6f6;--p301-gray-100:#ededed;--p301-gray-300:#cfcfcf;--p301-gray-500:#6b6b6b;--p301-gray-400:#a3a3a3;--ink:var(--p301-black);--ink-inverse:var(--p301-white);--accent:var(--p301-red);--accent-hover:var(--p301-red-dark);--surface:var(--p301-white);--surface-alt:var(--p301-gray-50);--line:var(--p301-gray-100);--line-strong:var(--p301-gray-300);--muted:var(--p301-gray-500);--font:Arial, Helvetica, sans-serif;--radius:8px;--shadow:0 1px 2px #221f200f, 0 4px 16px #221f2014;--header-h:56px;--panel-w:380px;--pin-active:var(--accent);--pin-off:var(--p301-gray-400);--pin-job:var(--ink);--radius-stroke:var(--accent);--tag-bg:var(--accent);--tag-fg:var(--ink-inverse);--focus:0 0 0 3px #ed1d2659}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--surface-alt);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:700}button,input,select{font:inherit;color:inherit}:focus-visible{box-shadow:var(--focus);outline:none}::selection{background:var(--accent);color:var(--ink-inverse)}.gate{background:var(--ink);min-height:100%;color:var(--ink-inverse);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex}.gate img{width:auto;height:56px;margin-bottom:12px}.gate p{color:var(--p301-gray-300);margin:0}.app{grid-template-rows:var(--header-h) 1fr;height:100dvh;display:grid}.header{background:var(--ink);color:var(--ink-inverse);align-items:center;gap:14px;padding:0 16px;display:flex}.header img{width:auto;height:30px}.header .count{color:var(--p301-gray-300);white-space:nowrap;margin-left:auto;font-size:13px}.header .count b{color:var(--ink-inverse)}.tag{background:var(--tag-bg);color:var(--tag-fg);letter-spacing:.08em;text-transform:uppercase;border-radius:3px;padding:3px 7px;font-size:11px;font-weight:700;line-height:1.2;display:inline-block}.tag--ink{background:var(--ink)}.tag--outline{color:var(--ink-inverse);box-shadow:inset 0 0 0 1px var(--muted);background:0 0}.tag--ghost{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong);background:0 0}.body{grid-template-columns:var(--panel-w) 1fr;min-height:0;display:grid}.panel{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.map{background:var(--p301-gray-100);min-height:0}.controls{border-bottom:1px solid var(--line);gap:10px;padding:16px;display:grid}.controls h1{font-size:18px}.controls p.lead{color:var(--muted);margin:0;font-size:13px}.search{gap:8px;display:flex}.search input{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);flex:1;min-width:0;padding:10px 12px}.search input:focus{border-color:var(--accent)}.btn{border-radius:var(--radius);cursor:pointer;background:var(--accent);color:var(--ink-inverse);border:0;padding:10px 14px;font-weight:700;transition:background .15s}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.6;cursor:progress}.btn--link{color:var(--muted);background:0 0;padding:0;font-weight:400;text-decoration:underline}.btn--link:hover{color:var(--ink);background:0 0}.filters{flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;display:flex}.filters select{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);padding:6px 8px}.toggle{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.toggle input{accent-color:var(--accent);width:16px;height:16px}.msg{color:var(--accent);margin:0;font-size:13px}.results{flex:1;padding:8px 12px 16px;overflow-y:auto}.section{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;margin:14px 4px 8px;font-size:11px;font-weight:700;display:flex}.section .n{color:var(--ink)}.card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;gap:6px;width:100%;margin-bottom:8px;padding:12px;transition:border-color .15s,box-shadow .15s;display:grid}.card:hover{border-color:var(--line-strong);box-shadow:var(--shadow)}.card[aria-current=true]{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.card .top{align-items:baseline;gap:8px;display:flex}.card .name{flex:1;font-size:15px;font-weight:700}.card .dist{white-space:nowrap;font-size:13px;font-weight:700}.card .where{color:var(--muted);font-size:13px}.card .meta{flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.card .links{gap:14px;font-size:13px;display:flex}.card a,.popup a{color:var(--ink);border-bottom:2px solid var(--accent);font-weight:700;text-decoration:none}.card a:hover,.popup a:hover{color:var(--accent)}.status{align-items:center;gap:5px;display:inline-flex}.status:before{content:"";background:var(--pin-active);border-radius:50%;width:8px;height:8px}.status--No:before{background:var(--pin-off)}.status--unk:before{box-shadow:inset 0 0 0 1.5px var(--muted);background:0 0}.empty{text-align:center;color:var(--muted);padding:24px 8px;font-size:14px}.foot{color:var(--muted);border-top:1px solid var(--line);margin:0;padding:10px 16px;font-size:11px}.pin{background:var(--pin-active);border:2px solid var(--p301-white);border-radius:50% 50% 50% 0;width:22px;height:22px;position:relative;transform:rotate(-45deg);box-shadow:0 2px 6px #221f2059}.pin:after{content:"";background:var(--p301-white);border-radius:50%;position:absolute;inset:5px}.pin--No{background:var(--pin-off)}.pin--sel{outline:3px solid #ed1d2659}.pin--job{background:var(--pin-job)}.pin--job:after{background:var(--accent)}.leaflet-container{font-family:var(--font)}.leaflet-popup-content-wrapper{border-radius:var(--radius);box-shadow:var(--shadow)}.leaflet-popup-content{margin:14px 16px}.popup{gap:6px;min-width:200px;font-size:13px;display:grid}.popup h3{font-size:15px}.popup .where{color:var(--muted)}.popup .row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}@media (max-width:760px){.header .count{display:none}.body{grid-template-rows:42vh 1fr;grid-template-columns:1fr}.map{order:-1}.panel{border-right:0;border-top:1px solid var(--line)}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
