:root{--primary-color:#2b5876;--secondary-color:#4e4376;--accent-color:#ff5252;--text-primary:#f5f5f5;--text-secondary:#aaa;--glass-bg:#141923d9;--glass-border:#ffffff1a;--success-color:#4caf50;--danger-color:#f44336;--info-color:#2196f3;--warning-color:#ff9800;--bg-color:#121212}*{box-sizing:border-box;margin:0;padding:0;font-family:Heebo,sans-serif}body,html{background-color:var(--bg-color);width:100%;height:100%;color:var(--text-primary);overflow:hidden}.hidden{opacity:0;pointer-events:none;display:none!important}.app-container{flex-direction:column;width:100vw;height:100vh;display:flex;position:relative}.map-container{z-index:1;flex:1;width:100%}.alert-banner{z-index:1002;flex-shrink:0;justify-content:center;align-items:center;gap:8px;height:38px;font-size:.9rem;font-weight:700;transition:background .3s,color .3s;display:flex}.status-routine{background:var(--success-color);color:#fff}.status-alert{background:var(--danger-color);color:#fff;animation:1s infinite alternate pulse-bg}
.status-early{background:#f9a825;color:#1a1a1a;animation:1.2s infinite alternate pulse-bg-amber}
.status-caution{background:#e65100;color:#fff;font-weight:700}
.status-pending-match{background:#ff8f00;color:#1a1a1a;font-weight:700}
@keyframes pulse-bg-amber{0%{background:#f9a825}to{background:#ff6f00}}
.nav-overlay.arrived-overlay{background:linear-gradient(180deg,#b71c1ce6 0%,#1a1a1acc 100%);border:2px solid #ff5252}
.nav-overlay.nav-urgent{animation:.6s ease-in-out infinite alternate nav-pulse}
@keyframes nav-pulse{0%{box-shadow:0 0 0 0 #f4433699}to{box-shadow:0 0 24px 4px #f44336cc}}
#nav-distance.urgent-distance{color:#ff5252!important;font-weight:900}
#nav-distance.pulse-text{animation:.8s ease-in-out infinite pulse-text-k}
@keyframes pulse-text-k{0%,to{opacity:1}50%{opacity:.65}}@keyframes pulse-bg{0%{background:#f44336}to{background:#b71c1c}}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(14px);border:1px solid var(--glass-border);z-index:1000;box-shadow:0 8px 32px #00000080}.top-nav{pointer-events:auto;border-radius:12px;flex-direction:column;gap:10px;padding:10px 14px;transition:top .3s,opacity .3s;display:flex;position:absolute;top:46px;left:10px;right:10px}.header-main{justify-content:space-between;align-items:center;width:100%;display:flex}.logo-area{align-items:center;gap:8px;display:flex}.shield-icon{font-size:20px}h1{margin:0;font-size:1.15rem;font-weight:600}.actions{align-items:center;gap:8px;display:flex}.lang-select{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;outline:none;padding:4px;font-size:.85rem}.lang-select option{background:var(--bg-color);color:#fff}.icon-btn{cursor:pointer;color:#fff;background:#ffffff26;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.1rem;transition:all .25s;display:flex}.icon-btn:hover{background:#ffffff40;transform:scale(1.05)}.icon-btn:active{transform:scale(.95)}.controls-row{flex-direction:row;align-items:center;gap:10px;width:100%;display:flex}.transport-toggle{background:#0006;border:1px solid #ffffff1a;border-radius:20px;flex-shrink:0;padding:4px;display:flex}.transport-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:16px;padding:4px 12px;font-size:.95rem;transition:all .2s}.transport-btn.active{background:var(--primary-color);color:#fff;box-shadow:0 2px 4px #0000004d}.filter-chips{flex-grow:1;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.filter-chips::-webkit-scrollbar{display:none}.chip{color:#fff;white-space:nowrap;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:16px;padding:4px 12px;font-size:.85rem;transition:all .2s}.chip.active,.chip:hover{background:var(--primary-color);border-color:var(--primary-color);font-weight:700}.bottom-panel{border-radius:20px 20px 0 0;flex-direction:column;min-height:20vh;max-height:40vh;padding:12px 16px;transition:transform .4s cubic-bezier(.175,.885,.32,1.275);display:flex;position:absolute;bottom:0;left:0;right:0}.panel-handle{background:#ffffff4d;border-radius:2px;width:40px;height:4px;margin:0 auto 12px}.status-bar{border-bottom:1px solid #ffffff1a;align-items:center;gap:10px;margin-bottom:8px;padding-bottom:12px;display:flex}#status-text{font-size:.95rem;font-weight:400}.pulse-indicator{background-color:var(--danger-color);border-radius:50%;width:12px;height:12px;animation:1.5s infinite pulse;box-shadow:0 0 #f44336}.pulse-indicator.success{background-color:var(--success-color);animation:1.5s infinite pulse-success;box-shadow:0 0 #4caf50}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #f44336b3}70%{transform:scale(1);box-shadow:0 0 0 8px #f4433600}to{transform:scale(.95);box-shadow:0 0 #f4433600}}@keyframes pulse-success{0%{transform:scale(.95);box-shadow:0 0 #4caf50b3}70%{transform:scale(1);box-shadow:0 0 0 8px #4caf5000}to{transform:scale(.95);box-shadow:0 0 #4caf5000}}.spaces-list{scrollbar-width:none;flex-direction:column;gap:10px;padding-bottom:16px;display:flex;overflow-y:auto}.spaces-list::-webkit-scrollbar{display:none}.space-card{cursor:pointer;background:#ffffff0d;border:1px solid #0000;border-radius:12px;flex-direction:column;gap:8px;padding:12px;transition:background .2s,transform .2s;display:flex}.space-card:hover{background:#ffffff1a;border-color:#ffffff26;transform:translateY(-2px)}.space-card-top{justify-content:space-between;align-items:flex-start;display:flex}.space-card-info{flex:1;margin-left:8px}.space-card-info h3{color:#fff;align-items:center;gap:6px;margin-bottom:2px;font-size:1.05rem;display:flex}.space-card-info p{color:var(--text-secondary);margin-bottom:0;font-size:.85rem}.space-card-distance{text-align:left;flex-direction:column;align-items:flex-end;display:flex}.distance-value{color:var(--success-color);font-size:1.15rem;font-weight:800}.closest-badge{color:var(--accent-color);background:#ff52521a;border-radius:4px;margin-top:4px;padding:2px 6px;font-size:.7rem;font-weight:700}.space-card-bottom{justify-content:space-between;align-items:center;margin-top:2px;display:flex}.eta-box{color:#00e5ff;background:#00e5ff1a;border-radius:16px;padding:4px 10px;font-size:.85rem;font-weight:600}.navigate-btn{background:linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);color:#fff;cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;padding:6px 14px;font-size:.85rem;font-weight:600;transition:opacity .2s,transform .1s;display:flex}.navigate-btn:hover{opacity:.9}.navigate-btn:active{transform:scale(.96)}.nav-overlay{z-index:1005;border-radius:16px;flex-direction:column;padding:16px;transition:opacity .4s,transform .4s;display:flex;position:absolute;top:46px;left:10px;right:10px}.nav-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.stop-btn{color:#ff5252;background:#f4433633!important;border-color:#f4433666!important}.share-btn{color:#4caf50;border-color:#4caf5066!important}.speaker-btn{color:#00e5ff}.speaker-btn.muted{color:var(--text-secondary);text-decoration:line-through}.nav-instruction-box{text-align:center;flex:1;padding:0 5px}#nav-instruction{color:#fff;margin-bottom:2px;font-size:1.15rem;font-weight:800}#nav-distance{color:#00e5ff;font-size:.95rem;font-weight:600;transition:color .3s;display:inline-block}.compass-wrapper{justify-content:center;align-items:center;margin-top:16px;margin-bottom:4px;display:flex}.compass-arrow{filter:drop-shadow(0 0 10px #4caf5099);width:100px;height:100px;transition:transform .4s ease-out}.compass-arrow svg{width:100%;height:100%}.red-alert-overlay{-webkit-backdrop-filter:blur(12px);z-index:9005;text-align:center;color:#fff;background:#e60000e6;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:absolute;inset:38px 0 0}.pulse-alert{animation:1s infinite alternate mega-pulse}.alert-title{text-shadow:0 4px 10px #00000080;margin-bottom:12px;font-size:3.5rem;font-weight:900}.alert-desc{text-shadow:0 2px 5px #00000080;max-width:85%;margin:0 auto;font-size:1.25rem;font-weight:600}@keyframes mega-pulse{0%{opacity:.9;transform:scale(1)}to{opacity:1;transform:scale(1.05)}}.custom-user-marker{background-color:var(--accent-color);border:3px solid #fff;border-radius:50%;animation:2s infinite pulse;box-shadow:0 0 15px #ff5252cc}.custom-space-marker{border:2px solid #fff;border-radius:50%;transition:transform .2s;box-shadow:0 0 10px #00000080}.custom-space-marker:hover{transform:scale(1.2)}.route-line-anim{stroke-dasharray:20;animation:20s linear infinite dash}@keyframes dash{to{stroke-dashoffset:-1000px}}.leaflet-control-zoom{display:none!important}.leaflet-control-attribution{color:#ffffff80!important;background:#00000080!important;font-size:.7rem!important}.leaflet-control-attribution a{color:#ffffffb3!important}.splash-screen{z-index:99999;background:radial-gradient(circle,#1a2a40 0%,#0a1118 100%);justify-content:center;align-items:center;transition:opacity .6s cubic-bezier(.165,.84,.44,1),visibility .6s;display:flex;position:fixed;inset:0}.splash-content{text-align:center;color:#fff;flex-direction:column;justify-content:center;align-items:center;animation:1.2s cubic-bezier(.165,.84,.44,1) fade-in-up;display:flex}.splash-logo{object-fit:contain;filter:drop-shadow(0 0 15px #00e5ff4d);border-radius:36px;width:180px;height:auto;max-height:180px;margin-bottom:24px;animation:4s ease-in-out infinite float}.splash-title{letter-spacing:1px;background:linear-gradient(135deg,#fff 0%,#00e5ff 100%);-webkit-text-fill-color:transparent;text-shadow:0 5px 15px #00e5ff33;-webkit-background-clip:text;margin:0;font-size:4rem;font-weight:900}.splash-subtitle{letter-spacing:3px;color:#a0aec0;margin-bottom:40px;font-size:1.4rem;font-weight:300}.splash-credit{color:#cbd5e1;border-top:1px solid #ffffff1a;width:100%;margin-bottom:50px;padding-top:15px;font-size:1.1rem;font-weight:400}.enter-btn{background:linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);color:#fff;cursor:pointer;border:1px solid #fff3;border-radius:40px;padding:16px 45px;font-size:1.3rem;font-weight:600;transition:all .3s;box-shadow:0 10px 20px #0006}.enter-btn:hover{border-color:#fff6;transform:translateY(-3px);box-shadow:0 15px 30px #00e5ff66}.enter-btn:active{transform:translateY(1px)}@keyframes fade-in-up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-12px)}to{transform:translateY(0)}}
.user-position-marker-wrap{background:0 0!important;border:none!important}.user-position-marker-inner{width:44px;height:44px;border-radius:50%;background:#141923f0;border:3px solid #fff;box-shadow:0 0 16px #00e5ff73,0 4px 14px #00000080;display:flex;align-items:center;justify-content:center}.user-position-emoji{font-size:26px;line-height:1;display:block}.install-pwa-btn{cursor:pointer;color:#fff;background:var(--success-color);border:2px solid #ffffff59;border-radius:999px;align-items:center;gap:6px;min-height:38px;padding:0 12px 0 10px;font-size:.78rem;font-weight:700;transition:transform .15s,box-shadow .2s,background .2s;display:flex;box-shadow:0 2px 10px #00000059}.install-pwa-btn:hover{background:#43a047;border-color:#fff9;transform:scale(1.02)}.install-pwa-btn:active{transform:scale(.98)}.install-pwa-icon{font-size:1.05rem;line-height:1}.install-pwa-label{white-space:nowrap;letter-spacing:.02em}@media (max-width:380px){.install-pwa-label{font-size:.72rem;padding-inline-end:2px}}.install-help-modal{z-index:10050;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.install-help-modal.hidden{display:none!important}.install-help-scrim{cursor:pointer;opacity:1;background:#000000a6;border:none;width:100%;height:100%;transition:opacity .2s;position:absolute;inset:0}.install-help-dialog{z-index:1;pointer-events:auto;text-align:center;max-width:min(92vw,400px);padding:22px 20px 18px;position:relative}.install-help-heading{color:#fff;margin-bottom:12px;font-size:1.2rem;font-weight:800;line-height:1.3}.install-help-text{color:var(--text-secondary);text-align:start;white-space:pre-line;margin-bottom:18px;font-size:.95rem;font-weight:500;line-height:1.55}.install-help-close-btn{margin-top:4px;padding:12px 28px;font-size:1rem}.defense-badge-slot:empty{display:none!important;height:0;margin:0;padding:0;overflow:hidden}.defense-badge{text-align:center;max-width:min(92vw,440px);padding:10px 18px;border-radius:14px;font-size:15px;font-weight:800;line-height:1.35;letter-spacing:.02em;background:#080c12f5;box-shadow:0 6px 28px #0000008c;pointer-events:none;box-sizing:border-box}.defense-badge--floating{position:fixed;left:50%;transform:translateX(-50%);top:44px;z-index:1003}.defense-badge--in-nav{position:relative;left:auto;transform:none;top:auto;z-index:2;max-width:100%;width:100%;font-size:.8rem;padding:8px 10px;margin:0 0 8px;border-radius:10px;box-shadow:0 2px 12px #00000059,inset 0 0 0 1px #ffffff14}@media (max-width:720px){.top-nav{padding-top:12px;padding-bottom:12px;gap:12px}.header-main{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:8px 10px;align-items:center;width:100%}.logo-area{grid-column:1;grid-row:1;min-width:0}.logo-area h1{font-size:1.05rem;line-height:1.2}.actions{grid-column:1/-1;grid-row:2;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;width:100%}.install-pwa-btn{flex-shrink:0}.lang-select{flex:0 1 auto;min-width:0;max-width:min(42vw,140px)}.controls-row{flex-direction:column;align-items:stretch;gap:12px}.transport-toggle{align-self:flex-start}.filter-chips{flex-grow:0;width:100%;flex-wrap:wrap;overflow-x:visible;gap:8px;padding-bottom:0;justify-content:flex-start}.chip{font-size:.78rem;padding:6px 10px}}@media (max-width:360px){.install-pwa-label{display:none}.install-pwa-btn{padding:0 10px;gap:0}}
.oref-monitor-box{margin-bottom:8px;flex-shrink:0;border:1px solid #ffffff14;border-radius:12px;background:#0006;overflow:hidden}.oref-monitor-box.hidden{display:none!important}.oref-monitor-summary{cursor:pointer;list-style:none;font-size:.76rem;font-weight:600;padding:8px 10px;background:#ffffff08;display:flex;align-items:center;gap:6px;-webkit-user-select:none;user-select:none}.oref-monitor-summary::-webkit-details-marker{display:none}.oref-monitor-summary::after{content:'▸';margin-inline-start:auto;font-size:.7rem;opacity:.85;transition:transform .2s}.oref-monitor-box[open] .oref-monitor-summary::after{transform:rotate(90deg)}.oref-monitor-summary-text{flex:1;min-width:0;line-height:1.35}.oref-monitor{text-align:start;border:none;border-radius:0;border-top:1px solid #ffffff14;margin:0;padding:8px 10px 10px;font-size:.76rem;line-height:1.45;max-height:min(30vh,240px);overflow-y:auto}.oref-monitor-status{font-weight:700;margin-bottom:8px;opacity:.95}.oref-monitor-status--ok{color:#81c784}.oref-monitor-status--bad{color:#ffab91}.oref-monitor-hint{color:var(--text-secondary);margin-bottom:8px;font-size:.74rem}.oref-monitor-section{margin-top:8px}.oref-monitor-section-title{color:#ffe082;font-weight:700;font-size:.8rem;margin-bottom:4px}.oref-monitor-list{list-style:none;padding:0;margin:0}.oref-monitor-list li{color:var(--text-secondary);border-bottom:1px solid #ffffff0d;padding:4px 0;font-size:.76rem}.oref-monitor-list li:last-child{border-bottom:none}.oref-monitor-list .oref-line-title{color:var(--text-primary);font-weight:600;display:block}.oref-monitor-list .oref-line-meta{opacity:.85;font-size:.72rem;margin-top:2px}.oref-monitor-hint--ok{color:#a5d6a7}
