        :root{--bg:#070d12;--s1:#0c1520;--s2:#12202e;--s3:#1a2d3e;--bd:#1e3348;--bd2:#2a4560;--tx:#e8f0f6;--tx2:#a0bcd0;--tx3:#5c80a0;--am:#22d3ee;--am-d:rgba(34,211,238,.1);--rd:#f43f5e;--rd-d:rgba(244,63,94,.1);--gn:#34d399;--gn-d:rgba(52,211,153,.1);--or:#fb923c;--or-d:rgba(251,146,60,.1);--bl:#60a5fa;--bl-d:rgba(96,165,250,.12);--r:14px;--rs:8px;--sab:env(safe-area-inset-bottom,0px)}
        html.light{--bg:#f0f7fa;--s1:#ffffff;--s2:#e8f2f7;--s3:#d8e8f0;--bd:#c4d9e4;--bd2:#a8c4d4;--tx:#0f2b3a;--tx2:#3a6478;--tx3:#6a95a8;--am:#0891b2;--am-d:rgba(8,145,178,.08);--rd:#dc2626;--rd-d:rgba(220,38,38,.06);--gn:#059669;--gn-d:rgba(5,150,105,.06);--or:#ea580c;--or-d:rgba(234,88,12,.06);--bl:#2563eb;--bl-d:rgba(37,99,235,.06)}
        html.light .map-ctrl{background:rgba(255,255,255,.95);border-color:var(--bd);color:var(--tx2)}
        html.light .map-ctrl:hover,html.light .map-ctrl.on{border-color:var(--am);color:var(--am)}
        html.light .map-legend{background:rgba(255,255,255,.92)}
        html.light .gt-p .leaflet-popup-content-wrapper{background:var(--s1);color:var(--tx)}
        *{margin:0;padding:0;box-sizing:border-box}
        body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--tx);min-height:100dvh;overflow-x:hidden}
        .ic{width:16px;height:16px;display:inline-block;vertical-align:middle;flex-shrink:0}
        .ic-sm{width:14px;height:14px}.ic-lg{width:20px;height:20px}.ic-xl{width:24px;height:24px}
        .shell{display:flex;flex-direction:column;height:100dvh}

        /* Header — compact single row */
        .hdr{display:flex;align-items:center;padding:.35rem .5rem;border-bottom:1px solid var(--bd);background:var(--s1);flex-shrink:0;z-index:20;gap:.4rem}
        .hdr-l{display:flex;align-items:center;gap:.3rem;flex-shrink:0}
        .logo{font-size:.9rem;font-weight:800;display:flex;align-items:center;gap:.25rem}
        .logo-mark{width:22px;height:22px;background:linear-gradient(135deg,var(--am),var(--gn));border-radius:6px;display:flex;align-items:center;justify-content:center}
        .logo-mark svg{width:12px;height:12px;color:#fff}
        .logo-text{background:linear-gradient(135deg,var(--am),var(--gn));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
        .hdr-tabs{display:flex;background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:2px;flex:1;min-width:0}
        .vtab{flex:1;padding:.3rem .2rem;border-radius:6px;border:none;background:transparent;color:var(--tx3);font-family:inherit;font-size:.65rem;font-weight:600;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:.2rem;white-space:nowrap}
        .vtab.on{background:var(--am-d);color:var(--am);border:1px solid rgba(251,191,36,.2)}
        .vtab .pulse{width:6px;height:6px;border-radius:50%;background:var(--gn);animation:pulse 2s infinite}
        @keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
        .hdr-r{display:flex;gap:.2rem;flex-shrink:0}
        .hbtn{width:30px;height:30px;border-radius:7px;border:1px solid var(--bd);background:var(--s2);color:var(--tx3);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;position:relative;font-size:.8rem}
        .hbtn:hover,.hbtn.on{border-color:var(--am);color:var(--am)}
        .hbtn .notif-dot{position:absolute;top:4px;right:4px;width:5px;height:5px;background:var(--rd);border-radius:50%}
        /* Hide less-used buttons on narrow screens, show in overflow */
        @media(max-width:480px){.hdr-r .hbtn-sec{display:none}}

        /* Map */
        .map-wrap{position:relative;flex-shrink:0;height:35vh;min-height:180px}
        #map{width:100%;height:100%}
        .leaflet-container{background:var(--bg)!important}
        .map-top{position:absolute;top:.5rem;left:.5rem;right:.5rem;z-index:10;display:flex;gap:.35rem;pointer-events:none}
        .map-top>*{pointer-events:auto}
        .zone-chip{font-size:.68rem;color:var(--tx2);background:rgba(14,18,32,.92);backdrop-filter:blur(8px);padding:.3rem .6rem;border-radius:8px;border:1px solid var(--bd);display:flex;align-items:center;gap:.3rem;cursor:pointer;transition:all .15s}
        .zone-chip:hover{border-color:var(--am)}
        .map-exp{margin-left:auto;color:var(--tx3);background:rgba(14,18,32,.92);backdrop-filter:blur(8px);padding:.3rem .5rem;border-radius:8px;border:1px solid var(--bd);cursor:pointer;display:flex;align-items:center}
        .map-exp:hover{border-color:var(--am);color:var(--am)}
        .map-wrap.big{height:65vh}
        .map-wrap.map-fullscreen{position:fixed!important;top:0;left:0;right:0;bottom:0;height:100vh!important;z-index:500}
        .my-loc{width:16px;height:16px;background:var(--bl);border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 4px rgba(96,165,250,.3),0 2px 8px rgba(0,0,0,.4)}
        .my-loc::after{content:'';position:absolute;top:-8px;left:-8px;width:32px;height:32px;background:rgba(96,165,250,.15);border-radius:50%;animation:locPulse 2s infinite}
        @keyframes locPulse{0%{transform:scale(.8);opacity:1}100%{transform:scale(2.2);opacity:0}}

        /* Content */
        .rcol{flex:1;display:flex;flex-direction:column;overflow:hidden}
        .content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:var(--sab)}

        /* Score */
        .score{padding:1rem;position:relative;overflow:hidden;border-bottom:1px solid var(--bd);background:var(--s1)}
        .score::before{content:'';position:absolute;top:0;left:0;right:0;height:3px}
        .score.l-low::before{background:linear-gradient(90deg,var(--gn),transparent 60%)}
        .score.l-medium::before,.score.l-moderate::before{background:linear-gradient(90deg,var(--or),transparent 60%)}
        .score.l-high::before{background:linear-gradient(90deg,var(--rd),transparent 60%)}
        .score.l-none::before{background:linear-gradient(90deg,var(--bd),transparent 60%)}
        .score-row{display:flex;align-items:center;gap:.85rem}
        .sn{font-size:2.6rem;font-weight:800;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;min-width:52px;text-align:center}
        .sn.low{color:var(--gn)}.sn.medium,.sn.moderate{color:var(--or)}.sn.high{color:var(--rd)}.sn.none{color:var(--tx3)}
        .sb{flex:1;min-width:0}
        .sl{font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;color:var(--tx3);font-weight:600}
        .st{font-size:.95rem;font-weight:700;margin-top:.1rem}
        .sd{font-size:.72rem;color:var(--tx2);margin-top:.15rem;line-height:1.35}
        .stags{display:flex;gap:.4rem;margin-top:.6rem;flex-wrap:wrap}
        .stag{font-size:.62rem;color:var(--tx3);background:var(--s2);padding:.25rem .5rem;border-radius:6px;border:1px solid var(--bd);display:flex;align-items:center;gap:.25rem}
        .stag b{color:var(--tx2)}
        .shelp{font-size:.68rem;color:var(--am);cursor:pointer;margin-top:.5rem;display:inline-flex;align-items:center;gap:.3rem}
        .shelp:hover{text-decoration:underline}

        /* Live score banner */
        .live-banner{padding:1rem;border-bottom:1px solid var(--bd);background:var(--s1);position:relative;overflow:hidden}
        .live-banner::before{content:'';position:absolute;top:0;left:0;right:0;height:3px}
        .live-banner.l-clear::before{background:linear-gradient(90deg,var(--gn),transparent 60%)}
        .live-banner.l-slow::before{background:linear-gradient(90deg,var(--or),transparent 60%)}
        .live-banner.l-heavy::before{background:linear-gradient(90deg,var(--rd),transparent 60%)}
        .live-banner.l-gridlock::before{background:linear-gradient(90deg,#dc2626,transparent 60%)}
        .live-banner.l-loading::before{background:linear-gradient(90deg,var(--bl),transparent 60%)}
        .live-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}
        .live-title{display:flex;align-items:center;gap:.4rem;font-size:.95rem;font-weight:700}
        .live-title .pulse{width:8px;height:8px;border-radius:50%;background:var(--gn);animation:pulse 2s infinite}
        .live-updated{font-size:.6rem;color:var(--tx3)}
        .live-summary{display:flex;gap:.6rem;flex-wrap:wrap}
        .live-stat{background:var(--s2);border:1px solid var(--bd);border-radius:8px;padding:.4rem .6rem;flex:1;min-width:80px}
        .live-stat-n{font-size:1.3rem;font-weight:800;line-height:1}
        .live-stat-n.clear{color:var(--gn)}.live-stat-n.slow{color:var(--or)}.live-stat-n.heavy,.live-stat-n.gridlock{color:var(--rd)}
        .live-stat-l{font-size:.55rem;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-top:.15rem}

        /* Section */
        .sec{padding:.85rem 1rem;border-bottom:1px solid var(--bd)}
        .sec-t{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--tx3);font-weight:600;margin-bottom:.6rem;display:flex;align-items:center;gap:.35rem}

        /* Days */
        .days{display:flex;gap:4px}
        .dy{flex:1;padding:.4rem .15rem;border:1px solid var(--bd);border-radius:9px;background:0;color:var(--tx3);font-size:.62rem;text-align:center;cursor:pointer;transition:all .15s;font-family:inherit;line-height:1.2}
        .dy:hover{border-color:var(--bd2);background:var(--s2)}
        .dy.on{border-color:var(--am);background:var(--am-d);color:var(--am)}
        .dy .dn{display:block;font-weight:600}
        .dy .dd{display:block;font-size:.9rem;font-weight:800;color:var(--tx);margin:.1rem 0}
        .dy.on .dd{color:var(--am)}
        .dy .dts{display:flex;gap:2px;justify-content:center;min-height:5px}
        .dy .dt{width:5px;height:5px;border-radius:50%}
        .dt.h{background:var(--rd)}.dt.m{background:var(--or)}.dt.l{background:var(--gn)}

        /* Timeline */
        .tl-w{position:relative;touch-action:none;user-select:none}.tl-g{display:flex;gap:2px;height:72px;align-items:flex-end}
        .tb{flex:1;border-radius:4px 4px 0 0;position:relative;transition:all .2s;cursor:pointer;min-width:0}
        .tb:hover,.tb.sel{filter:brightness(1.3)}
        .tb.sel{outline:2px solid var(--am);outline-offset:-1px;border-radius:4px}
        .tb.none{background:var(--bd);opacity:.3}.tb.low{background:var(--gn)}.tb.medium{background:var(--or)}.tb.high{background:linear-gradient(to top,var(--rd),#ff6b8a)}
        .tb .tp{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--s3);border:1px solid var(--bd2);border-radius:8px;padding:.4rem .6rem;font-size:.65rem;white-space:nowrap;z-index:10;box-shadow:0 6px 20px rgba(0,0,0,.5);pointer-events:none;line-height:1.3}
        .tb:hover .tp{display:block}
        .tl-l{display:flex;justify-content:space-between;margin-top:.3rem}
        .tl-l span{font-size:.55rem;color:var(--tx3)}
        .now-l{position:absolute;top:0;bottom:16px;width:2px;background:var(--am);border-radius:1px;z-index:5;pointer-events:none}
        .now-l::after{content:'NOW';position:absolute;top:-12px;left:50%;transform:translateX(-50%);font-size:.45rem;font-weight:700;color:var(--am);letter-spacing:.04em}

        /* Road rows */
        .rd-row{display:flex;align-items:center;gap:.65rem;padding:.55rem 0;border-bottom:1px solid var(--bd)}
        .rd-row:last-child{border-bottom:0}
        .rd-row.rd-active{background:var(--am-d);border-left:3px solid var(--am);padding-left:.5rem;border-radius:6px}
        .map-search-wrap{position:absolute;top:8px;left:8px;right:8px;z-index:410}
        .map-search-input{width:100%;padding:.55rem .8rem;border-radius:12px;border:1px solid var(--bd);background:var(--s1);color:var(--tx);font-size:.8rem;font-family:inherit;outline:none;box-shadow:0 2px 12px rgba(0,0,0,.3)}
        .map-search-input::placeholder{color:var(--tx3)}
        .map-search-input:focus{border-color:var(--am)}
        .map-search-results{display:none;background:var(--s1);border:1px solid var(--bd);border-radius:12px;margin-top:4px;max-height:250px;overflow-y:auto;box-shadow:0 4px 20px rgba(0,0,0,.4)}
        .map-search-results.open{display:block}
        .msr-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .7rem;cursor:pointer;transition:background .12s;font-size:.75rem}
        .msr-item:hover,.msr-item:active{background:var(--am-d)}
        .msr-item:first-child{border-radius:12px 12px 0 0}
        .msr-item:last-child{border-radius:0 0 12px 12px}
        .msr-icon{font-size:1rem;width:24px;text-align:center}
        .msr-name{font-weight:600;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
        .msr-sub{font-size:.6rem;color:var(--tx3)}
        .map-layers{position:absolute;top:52px;right:8px;z-index:405;display:flex;flex-direction:column;gap:4px}
        .map-layers .map-ctrl{width:36px;height:36px;padding:0;font-size:1rem;display:flex;align-items:center;justify-content:center}
        .map-layers .map-ctrl.on{background:var(--am);color:#000}
        .search-overlay{position:fixed;inset:0;z-index:600;background:rgba(0,0,0,.7);display:flex;flex-direction:column;padding:1rem}
        .search-box{background:var(--s1);border-radius:16px;border:1px solid var(--bd);width:100%;max-width:480px;margin:0 auto;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}
        .search-input-wrap{display:flex;align-items:center;padding:.6rem .8rem;border-bottom:1px solid var(--bd);gap:.5rem}
        .search-input{flex:1;background:none;border:none;color:var(--tx);font-size:.9rem;outline:none;font-family:inherit}
        .search-input::placeholder{color:var(--tx3)}
        .search-tabs{display:flex;border-bottom:1px solid var(--bd)}
        .search-tab{flex:1;padding:.5rem;text-align:center;font-size:.72rem;color:var(--tx3);cursor:pointer;border:none;background:none;font-family:inherit;transition:all .15s}
        .search-tab.on{color:var(--am);border-bottom:2px solid var(--am)}
        .search-results{flex:1;overflow-y:auto;padding:.4rem}
        .search-result{display:flex;gap:.6rem;padding:.6rem;border-radius:10px;cursor:pointer;transition:background .15s;align-items:center}
        .search-result:hover,.search-result:active{background:var(--am-d)}
        .sr-icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;flex-shrink:0}
        .sr-img{width:42px;height:42px;border-radius:10px;object-fit:cover;flex-shrink:0}
        .sr-body{flex:1;min-width:0}
        .sr-name{font-weight:600;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
        .sr-sub{font-size:.65rem;color:var(--tx3);margin-top:.1rem}
        .sr-tag{font-size:.58rem;padding:.1rem .4rem;border-radius:10px;background:var(--s3);color:var(--tx2)}
        .search-loading{text-align:center;padding:2rem;color:var(--tx3);font-size:.75rem}
        .tonight-header{padding:.8rem 1rem;border-bottom:1px solid var(--bd)}
        .tonight-card{padding:.8rem 1rem;border-bottom:1px solid var(--bd);cursor:pointer;transition:background .15s}
        .tonight-card:hover,.tonight-card:active{background:var(--am-d)}
        .tonight-tag{background:var(--s2);padding:.15rem .5rem;border-radius:20px;font-size:.65rem;color:var(--tx2)}
        .rd-bar{width:6px;height:28px;border-radius:3px;flex-shrink:0}
        .rd-bar.clear{background:var(--gn)}.rd-bar.slow{background:var(--or)}.rd-bar.heavy{background:var(--rd)}.rd-bar.gridlock{background:#dc2626}
        .rd-body{flex:1;min-width:0}.rd-name{font-size:.78rem;font-weight:600;display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.rd-sub{font-size:.65rem;color:var(--tx3);margin-top:.1rem}
        .rd-del{font-size:.7rem;font-weight:600;text-align:right;white-space:nowrap}
        .rd-del.clear{color:var(--gn)}.rd-del.slow{color:var(--or)}.rd-del.heavy,.rd-del.gridlock{color:var(--rd)}
        .rd-tier{font-size:.5rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.1rem .3rem;border-radius:3px}
        .rd-tier.primary{background:var(--rd-d);color:var(--rd)}.rd-tier.secondary{background:var(--or-d);color:var(--or)}.rd-tier.tertiary{background:rgba(107,117,148,.12);color:var(--tx3)}
        .rd-grp{margin-bottom:.5rem}
        .rd-grp-t{font-size:.55rem;text-transform:uppercase;letter-spacing:.06em;color:var(--tx3);font-weight:600;padding:.35rem 0;display:flex;align-items:center;gap:.3rem}
        .rd-grp-t::after{content:'';flex:1;height:1px;background:var(--bd)}
        .rd-speed{font-size:.58rem;color:var(--tx3);display:flex;align-items:center;gap:.25rem;margin-top:.15rem}
        .rd-speed-bar{width:40px;height:4px;border-radius:2px;background:var(--s3);overflow:hidden;display:inline-block}
        .rd-speed-fill{height:100%;border-radius:2px;transition:width .3s}
        .rd-speed-fill.clear{background:var(--gn)}.rd-speed-fill.slow{background:var(--or)}.rd-speed-fill.heavy,.rd-speed-fill.gridlock{background:var(--rd)}

        /* Map legend */
        .map-legend{position:absolute;bottom:.5rem;left:.5rem;z-index:10;background:rgba(14,18,32,.92);backdrop-filter:blur(8px);padding:.4rem .6rem;border-radius:8px;border:1px solid var(--bd);display:flex;gap:.6rem;font-size:.55rem;color:var(--tx3)}
        .map-legend-i{display:flex;align-items:center;gap:.25rem}
        .map-legend-i .ln{width:16px;height:3px;border-radius:2px}
        .ln-pri{background:#f43f5e}.ln-sec{background:#fb923c}.ln-ter{background:#6b7594}


        /* Event cards */
        .ev{background:var(--s2);border:1px solid var(--bd);border-radius:var(--r);margin-bottom:.45rem;cursor:pointer;transition:all .2s;position:relative;overflow:hidden}
        .ev::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px}
        .ev.ev-high::before{background:var(--rd)}.ev.ev-medium::before{background:var(--or)}.ev.ev-low::before{background:var(--gn)}
        .ev:active{transform:scale(.98)}
        .ev-inner{padding:.8rem .85rem;display:flex;gap:.7rem}
        .ev-thumb{width:56px;height:56px;border-radius:8px;background:var(--s3);background-size:cover;background-position:center;flex-shrink:0}
        .ev-content{flex:1;min-width:0}
        .ev-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.4rem}
        .ev-name{font-size:.82rem;font-weight:600;line-height:1.25}
        .ev-ven{font-size:.68rem;color:var(--tx3);margin-top:.1rem;display:flex;align-items:center;gap:.25rem}
        .ev-pts{font-size:.58rem;font-weight:700;padding:.18rem .45rem;border-radius:5px;text-transform:uppercase;flex-shrink:0}
        .ev-pts.high{background:var(--rd-d);color:var(--rd)}.ev-pts.medium{background:var(--or-d);color:var(--or)}.ev-pts.low{background:var(--gn-d);color:var(--gn)}
        .ev-tags{display:flex;gap:.3rem;margin-top:.4rem;flex-wrap:wrap}
        .ev-t{font-size:.6rem;color:var(--tx3);display:flex;align-items:center;gap:.2rem;background:var(--s1);padding:.18rem .35rem;border-radius:4px}
        .ev-t.local{background:var(--bl-d);color:var(--bl)}
        .ev-avoid{margin:.45rem .85rem .65rem;padding:.4rem .55rem;border-radius:var(--rs);font-size:.68rem;display:flex;align-items:center;gap:.3rem}
        .ev-avoid.high{background:var(--rd-d);color:var(--rd)}.ev-avoid.medium{background:var(--or-d);color:var(--or)}.ev-avoid.low{background:var(--gn-d);color:var(--gn)}
        .ev-avoid svg{flex-shrink:0}

        /* Empty */
        .empty{text-align:center;padding:2rem 1rem;color:var(--tx3)}
        .empty svg{opacity:.3;margin-bottom:.5rem}
        .empty p{font-size:.82rem;line-height:1.4}

        /* Panels */
        .pov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:1000}
        .pov.open{display:block}
        .pnl{display:none;position:fixed;bottom:0;left:0;right:0;z-index:1001;background:var(--s1);border-radius:20px 20px 0 0;max-height:85vh;overflow-y:auto;padding-bottom:var(--sab);box-shadow:0 -8px 40px rgba(0,0,0,.5)}
        .pnl.open{display:block;animation:su .25s ease-out}
        @keyframes su{from{transform:translateY(100%)}to{transform:translateY(0)}}
        .pnl-h{display:flex;justify-content:center;padding:.6rem 0 .3rem;position:sticky;top:0;background:var(--s1);z-index:1;border-radius:20px 20px 0 0}
        .pnl-h::before{content:'';width:36px;height:4px;border-radius:2px;background:var(--bd2)}
        .pnl-hdr{display:flex;justify-content:space-between;align-items:center;padding:0 1.25rem .75rem}
        .pnl-hdr h2{font-size:1rem;font-weight:700;display:flex;align-items:center;gap:.4rem}
        .pnl-x{width:30px;height:30px;border-radius:8px;border:1px solid var(--bd);background:var(--s2);color:var(--tx3);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
        .pnl-b{padding:0 1.25rem 1.5rem}
        .pnl-b h3{font-size:.82rem;font-weight:700;margin:.9rem 0 .4rem;display:flex;align-items:center;gap:.3rem}
        .pnl-b h3:first-child{margin-top:0}
        .pnl-b p{font-size:.75rem;color:var(--tx2);line-height:1.5;margin-bottom:.35rem}

        /* Guide levels */
        .gl{display:flex;align-items:center;gap:.6rem;padding:.6rem .75rem;border-radius:10px;margin-bottom:.4rem}
        .gl-s{font-size:1.1rem;font-weight:800;min-width:45px}
        .gl-n{font-size:.78rem;font-weight:600}
        .gl-d{font-size:.68rem;color:var(--tx2);line-height:1.35}
        .gl-gn{background:var(--gn-d)}.gl-gn .gl-s{color:var(--gn)}
        .gl-or{background:var(--or-d)}.gl-or .gl-s{color:var(--or)}
        .gl-am{background:var(--am-d)}.gl-am .gl-s{color:var(--am)}
        .gl-rd{background:var(--rd-d)}.gl-rd .gl-s{color:var(--rd)}
        .gl-gy{background:rgba(107,117,148,.08)}.gl-gy .gl-s{color:var(--tx3)}

        /* Factor cards */
        .fc{background:var(--s2);border:1px solid var(--bd);border-radius:10px;padding:.7rem;margin-bottom:.4rem}
        .fc-h{display:flex;justify-content:space-between;align-items:center}
        .fc-n{font-size:.75rem;font-weight:600;display:flex;align-items:center;gap:.3rem}
        .fc-w{font-size:.6rem;color:var(--am);font-weight:600}
        .fc-d{font-size:.68rem;color:var(--tx3);margin-top:.2rem;line-height:1.35}
        .fc-ex{display:flex;gap:.3rem;margin-top:.35rem;flex-wrap:wrap}
        .fc-ex span{font-size:.6rem;background:var(--s1);padding:.15rem .4rem;border-radius:4px;color:var(--tx3)}

        /* Notifs */
        .ni{padding:.7rem 0;border-bottom:1px solid var(--bd)}
        .ni:last-child{border-bottom:0}
        .ni-t{font-size:.58rem;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em;font-weight:600;display:flex;align-items:center;gap:.3rem}
        .ni-m{font-size:.75rem;color:var(--tx2);margin-top:.15rem;line-height:1.4}
        .ni-m b{color:var(--tx)}
        .nf{margin-top:.75rem;padding:.65rem;background:var(--s2);border-radius:10px}
        .nf p{font-size:.68rem;color:var(--tx3);line-height:1.4;text-align:center;margin:0}

        /* Location */
        .sinput{width:100%;padding:.7rem .85rem;border-radius:10px;border:1px solid var(--bd);background:var(--s2);color:var(--tx);font-family:inherit;font-size:.85rem;outline:0;transition:border-color .15s}
        .sinput:focus{border-color:var(--am)}
        .sinput::placeholder{color:var(--tx3)}
        .lo{display:flex;align-items:center;gap:.7rem;padding:.7rem 0;border-bottom:1px solid var(--bd);cursor:pointer;transition:opacity .15s}
        .lo:hover{opacity:.8}.lo:last-child{border-bottom:0}
        .lo-ic{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--s2);border-radius:10px;flex-shrink:0}
        .lo-body{flex:1}
        .lo-n{font-size:.82rem;font-weight:600}
        .lo-d{font-size:.65rem;color:var(--tx3)}
        .lo-tag{font-size:.55rem;padding:.15rem .4rem;border-radius:4px;font-weight:600;flex-shrink:0}
        .lo-tag.live{background:var(--gn-d);color:var(--gn)}
        .lo-tag.soon{background:var(--am-d);color:var(--am)}
        .lo-tag.plan{background:rgba(107,117,148,.1);color:var(--tx3)}

        .vmarker{width:36px;height:36px;border-radius:8px;border:2px solid rgba(255,255,255,.2);background-size:cover;background-position:center;box-shadow:0 2px 8px rgba(0,0,0,.5);transition:all .2s}
        .vmarker-label{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-size:.55rem;font-weight:600;color:var(--tx2);white-space:nowrap;text-shadow:0 1px 3px rgba(0,0,0,.8);transition:all .2s}
        /* Small marker mode */
        .markers-small .vmarker{width:10px;height:10px;border-radius:50%;font-size:0!important;border-width:1px}
        .markers-small .vmarker-label{font-size:.5rem;bottom:-14px}
        /* Clean map mode — hide overlays */
        .map-clean .leaflet-marker-pane,.map-clean .leaflet-shadow-pane{opacity:0;pointer-events:none}

        /* Map control buttons row — pinned bottom of map */
        .map-ctrls{position:absolute;bottom:.5rem;left:50%;transform:translateX(-50%);z-index:400;display:flex;gap:.35rem;pointer-events:auto}
        .map-ctrl{background:rgba(14,18,32,.95);backdrop-filter:blur(8px);padding:.4rem .55rem;border-radius:8px;border:1px solid var(--bd2);color:var(--tx2);font-size:.65rem;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:.2rem;transition:all .15s;white-space:nowrap}
        .map-ctrl:hover,.map-ctrl.on{border-color:var(--am);color:var(--am);background:rgba(14,18,32,1)}

        /* Time picker */
        .time-pick{display:flex;align-items:center;gap:.4rem;margin-top:.5rem;flex-wrap:wrap}
        .time-pick select,.time-pick input{background:var(--s2);border:1px solid var(--bd);color:var(--tx);font-family:inherit;font-size:.72rem;padding:.3rem .5rem;border-radius:6px;outline:none}
        .time-pick select:focus,.time-pick input:focus{border-color:var(--am)}
        .time-pick label{font-size:.62rem;color:var(--tx3);font-weight:600}

        /* Refresh btn */
        .refresh-btn{background:none;border:none;color:var(--tx3);cursor:pointer;padding:.2rem;border-radius:4px;transition:all .15s;display:flex;align-items:center}
        .refresh-btn:hover{color:var(--am)}
        .refresh-btn.spinning svg{animation:spin 1s linear infinite}
        @keyframes spin{to{transform:rotate(360deg)}}

        @media(max-width:600px){.vmarker{width:28px;height:28px;border-radius:6px;font-size:.9rem!important}.vmarker-label{font-size:.45rem;bottom:-15px}}
        @media(min-width:960px){.shell{flex-direction:row}.map-wrap{flex:1;height:100%!important}.rcol{width:440px;border-left:1px solid var(--bd)}.pnl{left:auto;width:440px}}

        .gt-p .leaflet-popup-content-wrapper{background:var(--s2);color:var(--tx);border:1px solid var(--bd2);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.5)}
        .gt-p .leaflet-popup-tip{background:var(--s2)}
        .gt-p .leaflet-popup-content{margin:0;font-family:'Inter',system-ui,sans-serif}
        .pu{display:flex;gap:.65rem;padding:.7rem .85rem}
        .pu-body h3{font-size:.82rem;font-weight:700;margin-bottom:.2rem}
        .pu-body p{font-size:.68rem;color:var(--tx2);line-height:1.35;margin:.1rem 0}
        .gt-tip{background:var(--s2)!important;color:var(--tx)!important;border:1px solid var(--bd2)!important;border-radius:6px!important;font-family:'Inter',system-ui,sans-serif!important;font-size:.68rem!important;padding:.25rem .5rem!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}
        .content::-webkit-scrollbar{width:4px}.content::-webkit-scrollbar-thumb{background:var(--bd);border-radius:2px}

        /* Hide sections based on view */
        .view-predicted .live-only{display:none!important}
        .view-live .predicted-only{display:none!important}
