@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#071c1b;--panel:#0d2927;--panel2:#123532;--line:rgba(191,232,216,.12);--text:#f2fbf7;--muted:#9ab8ad;--mint:#68e0b2;--mint2:#36bd92;--amber:#f2bd67;--danger:#fa817b;--shadow:0 18px 55px rgba(0,0,0,.22)}
*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 88% -8%,rgba(31,113,91,.25),transparent 35%),var(--bg);color:var(--text);font-family:'DM Sans',sans-serif;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}.app-shell{max-width:1120px;margin:auto;padding:0 24px 108px}.topbar{height:82px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none}.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#1a5146,#0d302c);display:grid;place-items:center;color:var(--mint);border:1px solid rgba(104,224,178,.25)}.brand-mark svg{width:31px}.brand strong{font:800 18px Manrope;letter-spacing:.08em}.brand em{color:var(--mint);font-style:normal}.brand small{display:block;color:#8ba99e;font-size:8px;letter-spacing:.22em;margin-top:2px}.top-actions{display:flex;align-items:center;gap:13px}.alpha-pill{font-size:9px;font-weight:800;letter-spacing:.12em;color:var(--amber);border:1px solid rgba(242,189,103,.25);border-radius:20px;padding:7px 10px}.alpha-pill i,.live-dot,.map-live-dot{display:inline-block;width:6px;height:6px;background:var(--amber);border-radius:50%;margin-right:5px}.icon-btn,.avatar{border:1px solid var(--line);background:var(--panel);color:var(--text);width:38px;height:38px;border-radius:12px}.avatar{background:#1b5548;color:var(--mint);font-weight:800}.welcome-row{display:flex;justify-content:space-between;align-items:end;padding:38px 0 24px}.eyebrow{font-size:9px;letter-spacing:.2em;font-weight:800;color:var(--mint);margin:0 0 9px}.welcome-row h1{font:800 clamp(30px,5vw,46px) Manrope;letter-spacing:-.055em;margin:0}.welcome-row h1 span{color:var(--mint)}.subhead{color:var(--muted);font-size:13px;margin:8px 0 0}.weather-chip{display:flex;gap:10px;align-items:center;background:rgba(18,53,50,.7);border:1px solid var(--line);padding:11px 14px;border-radius:14px}.weather-icon{font-size:24px;color:var(--amber)}.weather-chip b,.weather-chip small{display:block}.weather-chip b{font-size:11px}.weather-chip small{font-size:9px;color:var(--muted);margin-top:2px}.search-card{background:linear-gradient(115deg,#123b34,#0d2b28);border:1px solid rgba(104,224,178,.2);border-radius:18px;padding:17px;box-shadow:var(--shadow)}.search-input-wrap{display:flex;align-items:center;gap:12px;background:#061e1c;border:1px solid var(--line);border-radius:12px;padding:0 13px;height:54px}.search-pin{font-size:23px;color:var(--mint)}.search-input-wrap input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font-size:15px}.search-input-wrap input::placeholder{color:#77978c}.mic-btn{border:0;background:transparent;color:var(--mint);font-size:18px}.search-bottom{display:flex;align-items:center;justify-content:space-between;padding-top:14px}.origin-status{color:var(--muted);font-size:10px}.origin-status .live-dot{background:#708b80}.primary-btn{background:var(--mint);color:#06211b;border:0;border-radius:10px;padding:13px 17px;font-weight:800;font-size:11px;display:inline-flex;gap:17px;align-items:center;justify-content:center;box-shadow:0 7px 18px rgba(54,189,146,.14)}.primary-btn span{font-size:17px}.route-notice{display:none;color:#d4c093;font-size:10px;margin-top:12px;padding:10px;background:rgba(242,189,103,.08);border-radius:8px}.route-notice.show{display:block}.map-section,.traffic-section,.report-section{margin-top:34px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:13px}.section-heading h2,.report-copy h2{font:700 19px Manrope;margin:0;letter-spacing:-.03em}.section-heading .eyebrow{margin-bottom:5px}.locate-btn{border:1px solid rgba(104,224,178,.25);background:rgba(104,224,178,.08);color:var(--mint);border-radius:9px;padding:9px 12px;font-size:10px;font-weight:700}.map-wrap{height:390px;border:1px solid var(--line);border-radius:17px;overflow:hidden;position:relative;background:#102c29}.map-wrap #map{width:100%;height:100%;z-index:1}.map-overlay{position:absolute;z-index:400;background:rgba(5,25,23,.88);backdrop-filter:blur(8px);padding:7px 10px;border:1px solid rgba(255,255,255,.09);border-radius:7px;font-size:9px;color:#d9e8e0}.top-left{top:13px;left:13px}.bottom-left{bottom:10px;left:10px;font-size:8px}.map-live-dot{background:#8da69a}.map-center{position:absolute;z-index:400;right:13px;bottom:15px;width:40px;height:40px;border:1px solid rgba(255,255,255,.16);border-radius:12px;background:#0b2925;color:var(--mint);font-size:23px}.map-legend{display:flex;flex-wrap:wrap;gap:16px;padding:12px 2px;color:var(--muted);font-size:9px}.legend-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.legend-dot.grey{background:#9aaea5}.legend-dot.green{background:var(--mint)}.legend-note{margin-left:auto;color:#7f9b90}.compact{align-items:center}.updated-label{font-size:9px;color:#78978b}.traffic-empty{display:flex;gap:16px;align-items:center;padding:20px;background:rgba(13,41,39,.8);border:1px solid var(--line);border-radius:14px}.traffic-empty strong{font-size:12px}.traffic-empty p{font-size:10px;color:var(--muted);line-height:1.6;margin:5px 0 0;max-width:650px}.radar-icon{width:48px;height:48px;border-radius:14px;background:#163d35;position:relative;flex:none;overflow:hidden}.radar-icon span{position:absolute;border:1px solid rgba(104,224,178,.55);border-radius:50%;width:12px;height:12px;left:18px;top:18px}.radar-icon span:nth-child(2){width:27px;height:27px;left:10px;top:10px}.radar-icon span:nth-child(3){width:42px;height:42px;left:3px;top:3px}.report-card{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;background:linear-gradient(110deg,#153f37,#102e2b);border:1px solid rgba(104,224,178,.18);border-radius:16px}.report-copy h2{font-size:17px}.report-copy p:last-child{font-size:10px;line-height:1.6;color:var(--muted);max-width:580px;margin:7px 0 0}.report-btn{white-space:nowrap;border:1px solid rgba(104,224,178,.3);background:rgba(104,224,178,.1);color:var(--mint);border-radius:10px;padding:13px 17px;font-size:11px;font-weight:800}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:15px}.quick-card{display:flex;align-items:center;text-align:left;gap:12px;padding:15px;background:var(--panel);border:1px solid var(--line);border-radius:13px;color:var(--text)}.quick-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:#17443a;color:var(--mint);font-size:19px}.quick-card b,.quick-card small{display:block}.quick-card b{font-size:11px}.quick-card small{font-size:9px;color:var(--muted);margin-top:4px}.soon{margin-left:auto;font-size:7px;letter-spacing:.1em;color:#c7ad7d;border:1px solid rgba(242,189,103,.2);border-radius:5px;padding:5px}.bottom-nav{position:fixed;z-index:500;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:clamp(18px,7vw,70px);padding:10px 18px max(12px,env(safe-area-inset-bottom));background:rgba(5,22,21,.94);border-top:1px solid var(--line);backdrop-filter:blur(15px)}.nav-item{border:0;background:transparent;color:#759389;display:grid;justify-items:center;gap:3px;min-width:52px}.nav-item span{font-size:20px}.nav-item small{font-size:8px}.nav-item.active{color:var(--mint)}.dialog-card{width:min(520px,calc(100% - 28px));max-height:90vh;overflow:auto;border:1px solid rgba(104,224,178,.22);border-radius:18px;background:#0b2623;color:var(--text);padding:22px;box-shadow:0 30px 90px rgba(0,0,0,.55)}.dialog-card::backdrop{background:rgba(0,0,0,.7);backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:start;justify-content:space-between;margin-bottom:17px}.dialog-head h2{font:700 20px Manrope;margin:0}.close-btn{border:0;background:#173b35;color:var(--text);border-radius:8px;width:31px;height:31px;font-size:22px}.report-types{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}.type-option{border:1px solid var(--line);background:#102f2b;color:var(--text);border-radius:10px;padding:12px 6px;display:grid;gap:6px;justify-items:center}.type-option span{font-size:20px}.type-option b{font-size:9px}.type-option.selected{border-color:var(--mint);background:rgba(104,224,178,.12)}.field-label{display:block;font-size:10px;color:#bad0c6;margin:12px 0 7px}.dialog-card select,.dialog-card textarea{width:100%;border:1px solid var(--line);border-radius:9px;background:#061e1c;color:var(--text);padding:12px;outline:none}.dialog-card textarea{min-height:80px;resize:vertical}.privacy-hint{font-size:9px;color:#8ca99e;line-height:1.6;margin:13px 0}.full{width:100%}.form-feedback{font-size:10px;color:var(--mint);min-height:14px}.small-dialog{max-width:400px}.small-dialog p{font-size:12px;line-height:1.7;color:var(--muted)}.toast{position:fixed;z-index:1000;bottom:85px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#d8f7e8;color:#06211b;border-radius:10px;padding:11px 15px;font-size:11px;font-weight:700;box-shadow:var(--shadow);transition:.25s;max-width:calc(100% - 30px);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}
.leaflet-container{background:#163a34;font-family:'DM Sans',sans-serif}.leaflet-control-attribution{font-size:8px!important}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#0d2927;color:#f2fbf7}.leaflet-popup-content{font-size:11px}
@media(max-width:640px){.app-shell{padding:0 15px 100px}.topbar{height:68px}.welcome-row{padding:27px 0 19px;align-items:start}.welcome-row h1{font-size:31px}.weather-chip{padding:8px 9px}.weather-chip small{font-size:8px}.map-wrap{height:330px}.map-legend{gap:9px}.legend-note{margin-left:0;width:100%}.report-card{align-items:start;flex-direction:column}.report-btn{width:100%}.quick-grid{grid-template-columns:1fr}.alpha-pill{font-size:8px}.search-bottom{gap:8px}.origin-status{font-size:9px}.primary-btn{padding:12px;font-size:10px}.subhead{font-size:11px}}

.voice-status{margin:12px 0 0;padding:10px 12px;border:1px solid rgba(104,224,178,.18);border-radius:10px;background:rgba(104,224,178,.06);color:#b9d9cd;font-size:10px;line-height:1.5}.route-notice{line-height:1.55}.mic-btn{touch-action:manipulation}
