.firemap-root{width:100%;height:100%;position:relative;overflow:hidden}.firemap-canvas{position:absolute;inset:0}.panel-toggle{top:var(--sp-4);left:var(--sp-4);z-index:43;font-size:var(--fs-lg);color:var(--text-1);border-radius:var(--radius-md);position:absolute}.side-panel{top:var(--sp-4);left:calc(var(--sp-4) + 56px);bottom:var(--sp-4);z-index:42;width:min(360px,100vw - 2rem);padding:var(--sp-4);gap:var(--sp-3);transition:transform var(--t-med), opacity var(--t-med);scrollbar-width:thin;scrollbar-color:#ffffff26 transparent;flex-direction:column;display:flex;position:absolute;overflow-y:auto}.side-panel.closed{opacity:0;pointer-events:none;transform:translate(-120%)}.panel-header h2{font-size:var(--fs-lg);margin:0;font-weight:700}.panel-header .count{background:var(--gradient-ember);color:#0000;font-size:var(--fs-xl);font-variant-numeric:tabular-nums;background-clip:text}.panel-header .count-conf{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap;font-weight:500}.mock-banner{margin:var(--sp-2) 0 0;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);color:var(--ember-300);border-radius:var(--radius-sm);background:#f59e0b1f;border:1px solid #f59e0b4d}.filters{gap:var(--sp-2);flex-direction:column;display:flex}.filter-row{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.filter-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);min-width:72px}.chip{padding:var(--sp-1) var(--sp-3);min-height:32px;font-size:var(--fs-sm);color:var(--text-2);border:1px solid var(--glass-border);transition:all var(--t-fast);background:#ffffff0d;border-radius:999px}.chip:hover{color:var(--text-1);border-color:#fff3}.chip:disabled{opacity:.45;cursor:not-allowed}.chip-beta{letter-spacing:.06em;color:var(--ember-300);vertical-align:super;font-size:.6rem;font-weight:700}.chip.active{color:#fff;background:var(--gradient-ember);box-shadow:var(--glow-ember);border-color:#0000}.fire-list{gap:var(--sp-1);scrollbar-width:thin;scrollbar-color:#ffffff26 transparent;flex-direction:column;flex:none;margin:0;padding:0;list-style:none;display:flex;overflow:visible}.fire-item{align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-3);text-align:left;border-radius:var(--radius-sm);transition:background var(--t-fast);display:flex}.fire-item:hover{background:#ffffff0f}.fire-item .dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;box-shadow:0 0 8px}.fire-info{flex-direction:column;min-width:0;display:flex}.fire-info strong{font-size:var(--fs-sm);color:var(--text-1)}.fire-info small{font-size:var(--fs-xs);color:var(--text-2)}.loading{padding:var(--sp-4);color:var(--text-2);text-align:center}.panel-footer p{font-size:var(--fs-xs);color:var(--text-2);margin:0}.week-badge{z-index:28;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);white-space:nowrap;border-radius:999px;display:flex;position:absolute;top:64px;left:50%;transform:translate(-50%)}.week-badge-dot{background:var(--ember-400);width:8px;height:8px;box-shadow:0 0 8px var(--ember-400);border-radius:50%;animation:1.5s infinite blink}.week-badge-date{font-variant-numeric:tabular-nums;text-transform:capitalize;color:var(--text-1);font-weight:700}.week-badge-count{font-size:var(--fs-xs);color:var(--ember-300)}@media (width<=640px){.week-badge{padding:var(--sp-1) var(--sp-3);font-size:var(--fs-sm);top:56px}}.temp-readout{z-index:25;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;border-radius:var(--radius-sm);pointer-events:none;white-space:nowrap;padding:2px 8px;font-weight:600;position:absolute}.legend{bottom:var(--sp-4);left:var(--sp-4);z-index:15;padding:var(--sp-3);gap:var(--sp-2);border-radius:var(--radius-md);flex-direction:column;max-width:260px;display:flex;position:absolute}.legend-title{font-size:var(--fs-xs);color:var(--text-2);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.legend-stops{gap:var(--sp-1) var(--sp-2);flex-wrap:wrap;margin-top:2px;display:flex}.legend-stop{font-size:var(--fs-xs);color:var(--text-1);align-items:center;gap:4px;display:inline-flex}.legend-stop i{border-radius:3px;width:12px;height:12px;display:inline-block}@media (width<=640px){.legend{display:none}}.alerts{border-top:1px solid var(--glass-border);padding-top:var(--sp-3);gap:var(--sp-2);flex-direction:column;display:flex}.alerts-title{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);margin:0}.alert-form{gap:var(--sp-2);flex-direction:column;display:flex}.alert-hint{font-size:var(--fs-xs);color:var(--info);margin:0}.alert-field{font-size:var(--fs-sm);color:var(--text-2);gap:var(--sp-1);flex-direction:column;display:flex}.alert-field input[type=range]{accent-color:var(--ember-500)}.alert-input{padding:var(--sp-2) var(--sp-3);font:inherit;font-size:var(--fs-sm);color:var(--text-1);border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:#ffffff0d}.alert-input::placeholder{color:var(--text-3)}.tg-link-btn{justify-content:center}.tg-linked{justify-content:space-between;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);color:var(--text-1);border-radius:var(--radius-sm);background:#34d3991f;border:1px solid #34d39966;display:flex}.tg-unlink{color:var(--text-3);font-size:var(--fs-sm);line-height:1}.alert-check{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-2);display:flex}.alert-check input{accent-color:var(--ember-500)}.alert-status{font-size:var(--fs-xs);color:var(--ember-300);margin:0}.zone-list{gap:var(--sp-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.zone-item{padding:var(--sp-1) var(--sp-2);font-size:var(--fs-sm);border-radius:var(--radius-sm);background:#ffffff0a;justify-content:space-between;align-items:center;display:flex}.zone-actions{flex-shrink:0;display:inline-flex}.zone-delete{color:var(--text-2);min-width:32px;min-height:32px}.zone-delete:hover{color:var(--danger)}.fire-popup .maplibregl-popup-content{background:var(--bg-2);color:var(--text-1);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-2);font-family:var(--font-sans);font-size:var(--fs-sm);padding:var(--sp-3) var(--sp-4)}.fire-popup .maplibregl-popup-tip{border-top-color:var(--bg-2)}.week-row input[type=range]{accent-color:var(--ember-500);flex:1}.week-label{font-size:var(--fs-xs);font-variant-numeric:tabular-nums;color:var(--text-1);text-align:right;min-width:86px;font-weight:700}.predict-panel{bottom:var(--sp-4);z-index:30;width:min(520px,100vw - 2rem);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-lg);gap:var(--sp-2);flex-direction:column;display:flex;position:absolute;left:50%;transform:translate(-50%)}.predict-head{align-items:center;gap:var(--sp-2);display:flex}.predict-head strong{flex:1}.predict-beta{font-size:var(--fs-xs);color:var(--ember-300);letter-spacing:.1em}.predict-status{color:var(--info);font-size:var(--fs-sm);margin:0}.predict-controls{align-items:center;gap:var(--sp-3);display:flex}.predict-controls input[type=range]{accent-color:var(--ember-500);flex:1}.predict-time{font-variant-numeric:tabular-nums;text-align:right;min-width:76px;font-weight:700}.predict-legend{align-items:center;gap:var(--sp-3);font-size:var(--fs-xs);color:var(--text-2);flex-wrap:wrap;display:flex}.predict-legend i{border-radius:3px;width:10px;height:10px;margin-right:4px;display:inline-block}.predict-wind{color:var(--text-3);margin-left:auto}.predict-disclaimer{font-size:var(--fs-xs);color:var(--ember-300);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);background:#f59e0b1a;border:1px solid #f59e0b40;margin:0}.popup-sat-btn{font-size:var(--fs-xs);color:#fff;background:var(--gradient-ember);border-radius:999px;margin-top:8px;padding:6px 12px;font-weight:600}.popup-note{font-size:var(--fs-xs);color:var(--text-3);margin-top:8px;line-height:1.35;display:block}@media (width<=640px){.side-panel{left:var(--sp-2);right:var(--sp-2);top:auto;bottom:var(--sp-2);width:auto;max-height:62vh}.panel-toggle{top:auto;bottom:calc(62vh + var(--sp-3))}.week-row{width:100%}.week-row input[type=range]{min-width:120px}.maplibregl-ctrl-top-right,.maplibregl-ctrl-top-left{margin-top:58px}}
