body,html{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,Apple Color Emoji,Segoe UI Emoji}.eyebrow{margin:0 0 .35rem;color:#1d4ed8;font-size:.72rem;font-weight:800;letter-spacing:.12em}.app-navbar{box-shadow:0 4px 18px rgba(30,64,175,.18)}.navbar-nav-wrap{display:flex;flex:1 1;align-items:center}.admin-nav-link{margin-left:auto;padding:.38rem .78rem!important;border:1px solid hsla(0,0%,100%,.52);border-radius:999px;color:#fff!important;font-size:.82rem;font-weight:700}.home-shell{max-width:1320px;margin:0 auto;padding:.75rem 0 3rem;color:#142038}.home-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);grid-gap:3rem;gap:3rem;align-items:center;min-height:420px;padding:clamp(2rem,5vw,4.5rem);overflow:hidden;border-radius:26px;background:radial-gradient(circle at 95% 10%,rgba(96,165,250,.3),transparent 33%),linear-gradient(135deg,#eff6ff,#f8fafc 58%,#ecfdf5);border:1px solid #dbeafe}.home-hero h1{margin:0 0 1.1rem;font-size:clamp(2.25rem,5vw,4.25rem);line-height:1.08;letter-spacing:-.055em;font-weight:800}.home-hero>div>p:not(.eyebrow){max-width:690px;color:#526176;font-size:1.03rem;line-height:1.8}.home-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.6rem}.home-actions a,.primary-link{padding:.8rem 1.15rem;border-radius:10px;font-weight:750;text-decoration:none}.home-primary,.primary-link{color:#fff;background:#1d4ed8;box-shadow:0 8px 24px rgba(29,78,216,.22)}.home-secondary{color:#1e3a8a;border:1px solid #bfdbfe;background:#fff}.home-layer-card{display:grid;grid-gap:.25rem;gap:.25rem;padding:1.25rem;border-radius:18px;background:hsla(0,0%,100%,.82);box-shadow:0 16px 50px rgba(30,64,175,.13);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.home-layer-card span{margin-top:.7rem;color:#64748b;font-size:.72rem;font-weight:750;letter-spacing:.08em}.home-layer-card strong{padding:.7rem .8rem;border-left:4px solid #2563eb;border-radius:5px;background:#eff6ff;font-size:.94rem}.home-layer-card strong:nth-of-type(2){border-color:#ea580c;background:#fff7ed}.home-layer-card strong:nth-of-type(3){border-color:#16a34a;background:#f0fdf4}.home-features{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1rem;gap:1rem;margin:1rem 0}.home-features article{padding:1.4rem;border:1px solid #e2e8f0;border-radius:16px;background:#fff}.home-features b{color:#2563eb;font-size:.78rem;letter-spacing:.1em}.home-features h2{margin:.65rem 0 .35rem;font-size:1.05rem;font-weight:750}.home-admin-note,.home-features p{margin:0;color:#64748b;font-size:.84rem;line-height:1.7}.home-admin-note{padding:.7rem .2rem;text-align:right}.home-admin-note a{color:#1d4ed8;font-weight:700}.container{max-width:1100px;margin:0 auto;padding:16px}.nav-groups{display:flex;gap:12px;justify-content:flex-end;padding:8px 0}.nav-group{display:flex;gap:8px;padding:4px 8px;border:1px solid #212529;border-radius:8px}.nav-group a{text-decoration:none;color:#212529}.nav-group a:hover{color:#0d6efd}.evacuation-page{--ink:#132033;--muted:#5b6677;--panel:#f8fafc;color:var(--ink);max-width:1600px;margin:0 auto;padding:0 0 2rem}.evacuation-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;margin-bottom:1rem}.evacuation-header h1{margin:.1rem 0 .35rem;font-size:clamp(1.55rem,3vw,2.35rem);font-weight:750;letter-spacing:-.03em}.evacuation-header p{margin:0;color:var(--muted)}.evacuation-header .eyebrow{color:#1d4ed8;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.connection-badge{flex:none;padding:.45rem .75rem;border-radius:999px;font-size:.78rem;font-weight:700}.connection-badge.online{color:#166534;background:#dcfce7}.connection-badge.offline{color:#9a3412;background:#ffedd5}.evacuation-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(310px,390px);grid-gap:1rem;gap:1rem;min-height:690px}.map-panel{min-width:0;position:relative;overflow:hidden;border:1px solid #d9e0e8;border-radius:18px;background:#e7edf4;box-shadow:0 12px 35px rgba(15,23,42,.1)}.evacuation-map{width:100%;height:100%;min-height:690px}.map-loading{display:grid;place-items:center;color:var(--muted)}.map-toolbar{position:absolute;z-index:2;top:.8rem;left:.8rem;display:flex;gap:.35rem;padding:.35rem;border:1px solid rgba(203,213,225,.8);border-radius:12px;background:hsla(0,0%,100%,.94);box-shadow:0 5px 20px rgba(15,23,42,.15)}.map-toolbar button{border:0;border-radius:8px;padding:.48rem .65rem;color:#334155;background:transparent;font-size:.72rem;font-weight:750}.map-toolbar button.active{color:#fff;background:#1d4ed8}.map-toolbar button:disabled{opacity:.38}.map-legend{position:absolute;z-index:2;left:1rem;bottom:1rem;display:flex;flex-wrap:wrap;gap:.75rem;padding:.65rem .8rem;border-radius:12px;background:hsla(0,0%,100%,.92);box-shadow:0 5px 20px rgba(15,23,42,.15);font-size:.75rem;font-weight:650}.map-legend span{display:flex;align-items:center;gap:.35rem}.map-legend i{display:inline-block;width:1.2rem;height:.35rem;border-radius:999px}.legend-route{background:#2563eb}.legend-hazard{background:#f97316}.legend-edge{background:#dc2626}.map-legend .risk-gradient i{width:4rem;background:linear-gradient(90deg,#d3d3d3,#4682b4,#228b22,#ff8c00,#b22222)}.building-popup{display:grid;min-width:200px;grid-gap:.35rem;gap:.35rem;color:#172033}.building-popup>strong{margin-bottom:.15rem;font-size:.9rem}.building-popup>div{display:flex;justify-content:space-between;gap:1rem;font-size:.74rem}.building-popup span{color:#64748b}.building-popup b{text-align:right;font-weight:700}.control-panel{overflow:auto;max-height:78vh;padding:.9rem;border:1px solid #d9e0e8;border-radius:18px;background:var(--panel)}.notice{margin-bottom:.65rem;padding:.65rem .75rem;border-radius:10px;font-size:.82rem}.notice.info{color:#1e3a8a;background:#dbeafe}.notice.warning{color:#854d0e;background:#fef3c7}.notice.error{color:#991b1b;background:#fee2e2}.control-section{padding:.85rem .2rem;border-bottom:1px solid #e2e8f0}.control-section h2{margin:0 0 .7rem;font-size:1rem;font-weight:750}.control-section p{color:var(--muted);font-size:.78rem;line-height:1.5}.control-section label{display:grid;grid-gap:.3rem;gap:.3rem;margin:.55rem 0;color:#334155;font-size:.78rem;font-weight:650}.control-section input,.control-section select,.control-section textarea{width:100%;border:1px solid #cbd5e1;border-radius:9px;background:#fff;padding:.55rem .6rem;color:var(--ink);font:inherit}.place-search{margin-bottom:.7rem}.place-search>label{margin-top:0}.place-search>div{display:grid;grid-template-columns:1fr auto;grid-gap:.35rem;gap:.35rem}.place-search button{border:0;border-radius:9px;padding:.55rem .75rem;color:#fff;background:#1d4ed8;font-size:.78rem;font-weight:750}.search-results{position:relative;z-index:3;display:grid;margin:-.45rem 0 .7rem;overflow:hidden;border:1px solid #cbd5e1;border-radius:9px;background:#fff}.search-results button{border:0;border-bottom:1px solid #e2e8f0;padding:.55rem .65rem;color:#1e293b;background:#fff;text-align:left;font-size:.76rem}.search-results button:last-child{border-bottom:0}.search-results button:hover{background:#eff6ff}.segmented-control{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:.35rem;gap:.35rem}.danger-action,.primary-action,.secondary-action,.segmented-control button{border:0;border-radius:9px;padding:.6rem .7rem;font-size:.8rem;font-weight:700}.segmented-control button{color:#334155;background:#e2e8f0}.segmented-control button.active{color:#fff;background:#2563eb}.segmented-control button.active.danger{background:#ea580c}.danger-action,.primary-action,.secondary-action{width:100%;margin-top:.5rem}.primary-action{color:#fff;background:#1d4ed8}.danger-action{color:#fff;background:#c2410c}.secondary-action{color:#1e3a8a;background:#dbeafe}button:disabled{cursor:not-allowed;opacity:.48}.route-summary{margin:.7rem 0 0}.route-summary div{display:flex;justify-content:space-between;padding:.28rem 0}.route-summary dt{color:var(--muted);font-size:.78rem;font-weight:500}.route-summary dd{margin:0;font-size:.82rem;font-weight:750}.avoidance-reasons{margin-top:.65rem;padding:.65rem;border-radius:9px;color:#7c2d12;background:#ffedd5;font-size:.76rem}.avoidance-reasons ul{margin:.35rem 0 0;padding-left:1.1rem}.version-panel{display:grid;grid-gap:.2rem;gap:.2rem;padding:.75rem .2rem 0;color:var(--muted);font-size:.68rem}.evacuation-marker{width:22px;height:22px;border:3px solid #fff;border-radius:50% 50% 50% 0;box-shadow:0 2px 8px rgba(15,23,42,.35);transform:rotate(-45deg)}.evacuation-marker.start{background:#2563eb}.evacuation-marker.destination{background:#16a34a}.evacuation-marker.report{background:#ea580c}.evacuation-marker.search{background:#7c3aed}.admin-dashboard,.admin-shell{max-width:1440px;margin:0 auto;color:#152033}.admin-shell{min-height:70vh;display:grid;place-items:center}.admin-login-card{width:min(100%,430px);display:grid;grid-gap:.8rem;gap:.8rem;padding:2rem;border:1px solid #dbe3ee;border-radius:20px;background:#fff;box-shadow:0 22px 70px rgba(15,23,42,.12)}.admin-login-card h1{margin:0;font-size:1.65rem}.admin-login-card p{margin:0;color:#64748b;line-height:1.65}.admin-login-card label{display:grid;grid-gap:.35rem;gap:.35rem;color:#334155;font-size:.8rem;font-weight:700}.admin-login-card input{width:100%;padding:.65rem;border:1px solid #cbd5e1;border-radius:9px}.admin-login-card>a{color:#1d4ed8;text-align:center;font-size:.8rem}.admin-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.admin-header h1{margin:.1rem 0 .25rem;font-size:clamp(1.55rem,3vw,2.25rem);font-weight:800;letter-spacing:-.035em}.admin-header p:last-child{margin:0;color:#64748b}.admin-logout{padding:.5rem .75rem;border:1px solid #cbd5e1;border-radius:9px;color:#475569;background:#fff;font-size:.78rem;font-weight:700}.admin-kpis{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:.75rem;gap:.75rem;margin-bottom:.75rem}.admin-kpis div{display:grid;grid-gap:.15rem;gap:.15rem;padding:.9rem 1rem;border:1px solid #e2e8f0;border-radius:13px;background:#fff}.admin-kpis span{color:#64748b;font-size:.72rem}.admin-kpis strong{font-size:1.05rem}.admin-tabs{display:flex;gap:.35rem;padding:.35rem;margin-bottom:.75rem;border-radius:12px;background:#eef2f7}.admin-tabs button{flex:1 1;padding:.7rem;border:0;border-radius:9px;color:#475569;background:transparent;font-size:.82rem;font-weight:750}.admin-tabs button.active{color:#1e3a8a;background:#fff;box-shadow:0 2px 8px rgb(15 23 42/8%)}.admin-tabs span{display:inline-grid;place-items:center;min-width:1.2rem;height:1.2rem;margin-left:.25rem;border-radius:999px;color:#fff;background:#ea580c;font-size:.65rem}.admin-pipeline-grid{display:grid;grid-template-columns:minmax(330px,.72fr) minmax(0,1.28fr);grid-gap:.85rem;gap:.85rem;align-items:start}.admin-panel{padding:1rem;border:1px solid #dce4ee;border-radius:16px;background:#f8fafc}.admin-panel-heading{display:flex;align-items:baseline;gap:.65rem;margin-bottom:.8rem}.admin-panel-heading span{color:#2563eb;font-size:.65rem;font-weight:800;letter-spacing:.12em}.admin-panel h2,.admin-panel-heading h2{margin:0;font-size:1.05rem;font-weight:800}.area-mode-tabs{display:grid;grid-template-columns:1fr 1fr;grid-gap:.35rem;gap:.35rem;margin-bottom:.8rem;padding:.3rem;border-radius:11px;background:#e8eef7}.area-mode-tabs button{border:0;border-radius:8px;padding:.58rem .45rem;color:#475569;background:transparent;font-size:.73rem;font-weight:800}.area-mode-tabs button.active{color:#1e3a8a;background:#fff;box-shadow:0 2px 8px rgb(15 23 42/8%)}.admin-map-help{margin:.6rem 0 .35rem;color:#64748b;font-size:.72rem}.admin-area-map{width:100%;height:300px;overflow:hidden;border:1px solid #cbd5e1;border-radius:12px;background:#e2e8f0}.admin-area-marker{width:22px;height:22px;border:4px solid #fff;border-radius:50%;background:#2563eb;box-shadow:0 3px 10px rgba(15,23,42,.35)}.area-summary{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.45rem;gap:.45rem;margin-top:.65rem}.area-summary div{display:grid;grid-gap:.1rem;gap:.1rem;min-width:0;padding:.55rem .6rem;border:1px solid #e2e8f0;border-radius:9px;background:#fff}.area-summary span{color:#64748b;font-size:.65rem}.area-summary strong{overflow-wrap:anywhere;font-size:.75rem}.tile-coordinates{margin-top:.7rem;font-size:.75rem}.tile-coordinates summary{cursor:pointer;color:#475569;font-weight:700}.tile-coordinates>div{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.45rem;gap:.45rem;margin-top:.5rem}.tile-coordinates label{display:grid;grid-gap:.2rem;gap:.2rem;color:#64748b}.tile-coordinates input{width:100%;padding:.45rem;border:1px solid #cbd5e1;border-radius:8px}.pipeline-stage{padding:.9rem;margin-bottom:.7rem;border:1px solid #e2e8f0;border-radius:12px;background:#fff}.admin-log h3,.artifact-list h3,.pipeline-stage h3{margin:0;font-size:.88rem;font-weight:800}.pipeline-stage p{margin:.35rem 0 .7rem;color:#64748b;font-size:.75rem}.pipeline-stage>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.4rem;gap:.4rem}.pipeline-stage button{padding:.6rem;border:1px solid #bfdbfe;border-radius:8px;color:#1e3a8a;background:#eff6ff;font-size:.75rem;font-weight:700}.artifact-list{margin-top:.9rem}.artifact-list>div{display:grid;grid-template-columns:auto minmax(130px,1fr) auto;grid-gap:.45rem;gap:.45rem;align-items:center;padding:.45rem 0;border-bottom:1px solid #e2e8f0;font-size:.75rem}.artifact-list small{color:#64748b;text-align:right}.artifact-missing,.artifact-ready{width:.55rem;height:.55rem;border-radius:50%;background:#16a34a}.artifact-missing{background:#cbd5e1}.admin-log{margin-top:.9rem}.admin-log>div{display:flex;justify-content:space-between}.admin-log button{border:0;color:#64748b;background:transparent;font-size:.7rem}.admin-log pre{min-height:80px;max-height:180px;margin:.4rem 0 0;padding:.7rem;overflow:auto;border-radius:9px;color:#dbeafe;background:#0f172a;white-space:pre-wrap;font-size:.68rem}.route-test-panel{display:grid;grid-template-columns:1fr 1fr;grid-gap:2rem;gap:2rem;align-items:center;min-height:340px;padding:clamp(1.3rem,4vw,3rem)}.route-test-panel li,.route-test-panel p{color:#64748b;font-size:.82rem;line-height:1.65}.route-test-panel ul{margin-bottom:1.5rem}.route-test-flow{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:center}.route-test-flow span{padding:.8rem 1rem;border:1px solid #bfdbfe;border-radius:10px;color:#1e3a8a;background:#fff;font-weight:750}.route-test-flow i{color:#2563eb;font-style:normal}.hazard-admin-list{display:grid;grid-gap:.6rem;gap:.6rem}.hazard-admin-list article{padding:.85rem;border:1px solid #e2e8f0;border-radius:11px;background:#fff}.hazard-admin-list article>div{display:flex;gap:.5rem;align-items:center}.hazard-admin-list time{margin-left:auto;color:#94a3b8;font-size:.68rem}.hazard-admin-list p{margin:.5rem 0;color:#475569;font-size:.8rem}.hazard-admin-list small{color:#64748b}.hazard-admin-list footer{display:flex;gap:.4rem;margin-top:.7rem}.hazard-admin-list footer button{padding:.45rem .65rem;border:0;border-radius:8px;color:#fff;background:#15803d;font-size:.72rem;font-weight:700}.hazard-admin-list footer button.reject{background:#b91c1c}.hazard-status{padding:.18rem .4rem;border-radius:999px;color:#854d0e;background:#fef3c7;font-size:.62rem;font-weight:800}.hazard-status.verified{color:#166534;background:#dcfce7}.hazard-status.expired,.hazard-status.rejected{color:#475569;background:#e2e8f0}.admin-future{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:.85rem 0 2rem;padding:.75rem 1rem;border:1px dashed #cbd5e1;border-radius:12px;color:#64748b;font-size:.72rem}.admin-future strong{color:#334155}.admin-future span{padding:.25rem .5rem;border-radius:999px;background:#f1f5f9}@media (max-width:900px){.navbar-nav-wrap{align-items:flex-start;flex-direction:column;width:100%}.admin-nav-link{margin:.35rem 0 0}.home-hero{gap:1.5rem}.home-features,.home-hero{grid-template-columns:1fr}.home-admin-note{text-align:left}.admin-kpis{grid-template-columns:repeat(2,1fr)}.admin-pipeline-grid,.route-test-panel{grid-template-columns:1fr}.evacuation-header{align-items:stretch;flex-direction:column}.connection-badge{align-self:flex-start}.evacuation-grid{grid-template-columns:1fr}.evacuation-map,.map-panel{min-height:58vh}.control-panel{max-height:none}}@media (max-width:560px){.admin-kpis{grid-template-columns:1fr}.admin-tabs{overflow-x:auto}.admin-tabs button{min-width:105px}.pipeline-stage>div{grid-template-columns:1fr}.artifact-list>div{grid-template-columns:auto 1fr}.artifact-list small{grid-column:2;text-align:left}}