:root{--bg: #0e1109;--panel: #171b12;--panel-2: #1f2417;--panel-line: #2c3320;--ink: #eef0e6;--ink-dim: #a4ab93;--ink-faint: #6b7259;--gold: #e8a33d;--gold-bright: #f7c25a;--origin: #5bbf86;--dest: #e8a33d;--route: #f7c25a;--danger: #d9614a;--font-display: "Bricolage Grotesque", serif;--font-mono: "IBM Plex Mono", monospace;--font-body: "IBM Plex Sans", sans-serif;--r: 12px;--sidebar-w: 380px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;width:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overflow:hidden;overscroll-behavior:none}.app{position:fixed;top:0;right:0;bottom:0;left:0;display:flex}.map-area{position:relative;flex:1;min-width:0}.map-wrap{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.leaflet-container{width:100%;height:100%;background:#0a0d07;font-family:var(--font-body)}.leaflet-tile-pane{filter:saturate(.7) brightness(.82) contrast(1.05)}.leaflet-control-attribution{background:#0e1109b3!important;color:var(--ink-faint)!important}.leaflet-control-attribution a{color:var(--ink-dim)!important}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);height:100%;background:var(--panel);border-right:1px solid var(--panel-line);display:flex;flex-direction:column;z-index:700;transition:margin-left .28s cubic-bezier(.4,0,.2,1)}.app--closed .sidebar{margin-left:calc(-1 * var(--sidebar-w))}.sb-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(env(safe-area-inset-top) + 16px) 18px 14px;border-bottom:1px solid var(--panel-line)}.sb-title h1{margin:0;font-family:var(--font-display);font-weight:800;font-size:24px;letter-spacing:-.02em;line-height:1}.sb-title span{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}.sb-close{background:var(--panel-2);border:1px solid var(--panel-line);color:var(--ink-dim);width:32px;height:32px;border-radius:9px;cursor:pointer;font-size:13px;display:block}.sb-close:hover{color:var(--gold);border-color:var(--gold)}.sb-search{padding:12px 16px;border-bottom:1px solid var(--panel-line)}.sb-search input{width:100%;background:var(--panel-2);border:1px solid var(--panel-line);border-radius:10px;color:var(--ink);font-family:var(--font-body);font-size:13.5px;padding:10px 12px;outline:none}.sb-search input::placeholder{color:var(--ink-faint)}.sb-search input:focus{border-color:var(--gold)}.sb-list{flex:1;overflow-y:auto;padding:6px 0 10px}.sb-empty{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);text-align:center;padding:24px}.sb-group{margin-bottom:4px}.sb-group-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:linear-gradient(180deg,var(--panel) 70%,rgba(23,27,18,.6));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sb-group-name{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}.sb-group-count{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);background:var(--panel-2);border-radius:20px;padding:1px 8px}.sb-row{display:flex;align-items:center;gap:10px;padding:9px 16px;border-left:2px solid transparent;transition:background .12s ease}.sb-row:hover{background:var(--panel-2)}.sb-row--nogeo{opacity:.45}.sb-row--origin{border-left-color:var(--origin);background:#5bbf8614}.sb-row--dest{border-left-color:var(--dest);background:#e8a33d14}.sb-check{flex:0 0 auto;position:relative;width:20px;height:20px;cursor:pointer}.sb-check input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.sb-check input:disabled{cursor:not-allowed}.sb-checkbox{display:block;width:20px;height:20px;border-radius:6px;border:1.5px solid var(--panel-line);background:var(--panel-2);transition:all .14s ease}.sb-check input:checked+.sb-checkbox{background:var(--gold);border-color:var(--gold)}.sb-check input:checked+.sb-checkbox:after{content:"";position:absolute;left:7px;top:3px;width:4px;height:9px;border:solid #16190f;border-width:0 2px 2px 0;transform:rotate(45deg)}.sb-check input:disabled+.sb-checkbox{opacity:.4}.sb-info{flex:1;min-width:0}.sb-name{font-size:13.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-name b{color:var(--ink-faint);font-family:var(--font-mono);font-weight:500;font-size:11px}.sb-sub{font-size:11.5px;color:var(--ink-dim);margin-top:1px;display:flex;align-items:center;gap:6px}.sb-tag{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--panel-line);border-radius:4px;padding:0 4px}.sb-roles{display:flex;gap:4px;flex:0 0 auto}.sb-role{width:28px;height:28px;border-radius:8px;border:1px solid var(--panel-line);background:var(--panel-2);color:var(--ink-dim);font-family:var(--font-mono);font-weight:600;font-size:12px;cursor:pointer;transition:all .13s ease}.sb-role:disabled{opacity:.3;cursor:not-allowed}.sb-role--a:not(:disabled):hover,.sb-role--a.is-active{background:var(--origin);border-color:var(--origin);color:#14241a}.sb-role--b:not(:disabled):hover,.sb-role--b.is-active{background:var(--dest);border-color:var(--dest);color:#2a1d05}.sb-foot{border-top:1px solid var(--panel-line);background:#12150d;padding:14px 16px calc(env(safe-area-inset-bottom) + 16px);display:flex;flex-direction:column;gap:12px}.sb-route-line{display:flex;align-items:center;gap:8px}.chip{flex:1;min-width:0;font-family:var(--font-mono);font-size:11px;padding:8px 10px;border-radius:9px;border:1px solid var(--panel-line);background:var(--panel-2);color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip.is-set{color:var(--ink)}.chip--a.is-set{border-color:var(--origin)}.chip--b.is-set{border-color:var(--dest)}.swap-btn{flex:0 0 auto;background:var(--panel-2);border:1px solid var(--panel-line);color:var(--ink-dim);width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:13px;transition:all .15s ease}.swap-btn:hover{color:var(--gold);border-color:var(--gold);transform:rotate(180deg)}.readout{display:flex;gap:1px;background:var(--panel-line);border:1px solid var(--panel-line);border-radius:var(--r);overflow:hidden;animation:rise .3s ease both}.readout-cell{flex:1;background:var(--panel);padding:11px 14px}.readout-cell .label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.readout-cell .value{font-family:var(--font-mono);font-size:21px;font-weight:600;color:var(--gold-bright);margin-top:2px;line-height:1}.readout--error{font-family:var(--font-mono);padding:12px 14px;background:var(--panel);border:1px solid var(--danger);border-radius:var(--r);color:var(--danger);font-size:12px}.nav-actions{display:flex;gap:10px}.nav-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--r);padding:13px;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:transform .12s ease}.nav-btn:active{transform:scale(.97)}.nav-btn--gmaps{background:linear-gradient(135deg,var(--gold-bright),var(--gold));color:#2a1d05}.nav-btn--waze{background:var(--panel-2);color:var(--ink);border:1px solid var(--panel-line)}.nav-btn--waze:hover{border-color:var(--gold)}.nav-btn .ic{font-size:14px}.clear-btn{align-self:center;background:none;border:none;color:var(--ink-faint);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;padding:2px 8px}.clear-btn:hover{color:var(--danger)}.hint{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);text-align:center;margin:0}.open-btn{position:absolute;top:calc(env(safe-area-inset-top) + 14px);left:14px;z-index:650;background:var(--panel);border:1px solid var(--panel-line);color:var(--ink);font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.05em;padding:11px 14px;border-radius:11px;cursor:pointer;box-shadow:0 6px 20px #00000073}.open-btn:hover{border-color:var(--gold)}.pin{display:grid;place-items:center;width:26px;height:26px;border-radius:50% 50% 50% 2px;transform:rotate(45deg);border:2px solid rgba(14,17,9,.85);box-shadow:0 3px 10px #00000080;font-family:var(--font-mono);font-weight:600;font-size:11px}.pin span{transform:rotate(-45deg);color:#16190f}.pin--default{background:#c9cdbb}.pin--origin{background:var(--origin);width:32px;height:32px}.pin--dest{background:var(--dest);width:32px;height:32px}.leaflet-popup-content-wrapper{background:var(--panel);color:var(--ink);border:1px solid var(--panel-line);border-radius:12px;box-shadow:0 12px 34px #0000008c}.leaflet-popup-tip{background:var(--panel);border:1px solid var(--panel-line)}.leaflet-popup-content{margin:12px 14px;font-family:var(--font-body)}.pop-name{font-family:var(--font-display);font-weight:600;font-size:15px;margin-bottom:2px}.pop-meta{font-size:12px;color:var(--ink-dim);margin-bottom:10px}.pop-coords{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint);margin-bottom:10px}.pop-actions{display:flex;gap:8px}.pop-btn{flex:1;border:1px solid var(--panel-line);background:var(--panel-2);color:var(--ink);font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;padding:8px 6px;border-radius:8px;cursor:pointer;transition:all .15s ease}.pop-btn--origin:hover{background:#5bbf8629;border-color:var(--origin)}.pop-btn--dest:hover{background:#e8a33d29;border-color:var(--dest)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;background:var(--bg);text-align:center;padding:24px}.overlay .spinner{width:30px;height:30px;border:3px solid var(--panel-line);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}.overlay p{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-dim)}.overlay--error p{color:var(--danger)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}@media (max-width: 720px){:root{--sidebar-w: 100%}.sidebar{position:absolute;top:0;right:0;bottom:0;left:0;border-right:none;box-shadow:0 0 40px #0009}.sb-close{display:block}}
