:root{--bg:#f5f6f4;--surface:#fff;--surface-soft:#f8faf8;--ink:#1d333a;--muted:#77858a;--line:#e5ebe7;--accent:#247b68;--accent-soft:#eaf4ee;--navy:#15333e;--navy-deep:#0e2732;--lime:#dbeaaf;--shadow:0 3px 14px rgba(18,48,39,.025);--orange:#c98640;--danger:#b45d52;--radius:15px;--sidebar:224px;color-scheme:light;font-family:Inter,"Noto Sans TC",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);line-height:1.65}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}a:hover{text-decoration:none}button{color:inherit}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #64b7a4;outline-offset:3px}svg:not(:where(.leaflet-overlay-pane > svg)){width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,h3,p{margin:0}h1{font-size:30px;font-weight:700;letter-spacing:-1.1px;line-height:1.35}h2{font-size:17px;letter-spacing:-.3px}h3{font-size:15px;font-weight:600}button{border:0;background:none}small{font-size:11px}.skip-link{position:fixed;top:-60px;left:250px;background:var(--navy);color:white;padding:10px;z-index:9999}.skip-link:focus{top:0}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--navy);color:#c5d0d3;padding:31px 20px 22px;display:flex;flex-direction:column;z-index:1000}.brand{display:flex;align-items:center;gap:9px;padding:0 6px;color:white}.brand-symbol{display:flex;width:39px;height:46px;align-items:center;color:var(--lime)}.brand-symbol svg{width:38px;height:38px;stroke-width:1.6}.brand strong{font-family:Arial,sans-serif;display:block;font-size:25px;line-height:1.2;letter-spacing:1.7px;font-weight:700}.brand-dot{color:var(--lime)}.brand small{font-family:Arial,sans-serif;font-size:8px;letter-spacing:1.65px;font-weight:400;display:block;margin-top:5px}.brand small b{font-size:7px;margin-left:5px;color:#9db6bd;letter-spacing:1px}.sidebar-label{font-size:11px;color:#839ea6;margin:37px 12px 12px;letter-spacing:.9px}#navigation{display:flex;flex-direction:column;gap:6px}.nav-link{display:flex;align-items:center;gap:13px;padding:11px 14px;border-radius:9px;color:#b8c8cd;font-size:13px;transition:.2s}.nav-link svg{width:18px;height:18px}.nav-link:hover{background:#244550;color:#fff}.nav-link.active{background:#e5edc6;color:#23423f;font-weight:700;box-shadow:0 4px 14px #0a233c24}.nav-link .nav-number{margin-left:auto;font-family:Arial;font-size:10px;opacity:.55}.sidebar-bottom{margin-top:auto;padding:22px 12px 0}.city-line{color:#496671;margin:28px -2px 8px}.city-line svg{width:100%;height:auto;stroke-width:1}.sidebar-date{font-size:10px;display:flex;align-items:center;gap:7px;color:#b4c9ce}.status-dot,.location-dot{display:inline-block;width:6px;height:6px;background:#a3c791;border-radius:50%;box-shadow:0 0 0 3px #a3c7910f}.sidebar-bottom p{font-size:10px;color:#7e9ca6;line-height:1.9;margin-top:10px}.sidebar-controls{display:flex;border-top:1px solid #31505a;margin-top:18px;padding-top:14px;gap:14px}.sidebar-control{width:28px;height:28px;color:#a6bdc5;display:flex;align-items:center;justify-content:center;border-radius:5px}.sidebar-control:hover{background:#31505a;color:white}.sidebar-control svg{width:17px;height:17px}.workspace{grid-column:2;min-width:0}.topbar{height:76px;border-bottom:1px solid var(--line);background:var(--surface);padding:0 36px;display:flex;align-items:center;justify-content:space-between;gap:20px}.topbar-context{display:flex;align-items:center;gap:11px;font-size:12px;white-space:nowrap}.topbar-context strong{font-size:12px;font-weight:600}.topbar-context .location-dot{background:var(--accent);height:5px;width:5px;box-shadow:none}.topbar-divider{height:14px;width:1px;background:var(--line);margin:0 4px}#local-clock{font-family:Arial,"Noto Sans TC",sans-serif;color:var(--muted);font-size:11px;letter-spacing:.3px}.topbar-tools{display:flex;align-items:center;gap:14px}.search-box{display:flex;align-items:center;gap:9px;padding:7px 11px;border:1px solid var(--line);border-radius:7px;background:var(--bg)}.search-box span{display:flex;color:#85928f}.search-box svg{width:15px;height:15px}.search-box input{width:180px;background:none;border:0;color:var(--ink);font-size:11px;outline:none}.search-box input::placeholder{color:#9aa6a4}.search-box kbd{font-size:10px;color:#a2afad;border:1px solid var(--line);padding:0 4px;border-radius:3px}.icon-button{border:1px solid var(--line);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:7px;color:#728780}.icon-button:hover{color:var(--accent);background:var(--accent-soft)}.icon-button svg{width:16px;height:16px}.mobile-only{display:none}main{padding:31px 36px 40px;max-width:1720px;margin:auto;outline:none}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:25px}.eyebrow{font-family:Arial,sans-serif;font-size:9px;font-weight:600;letter-spacing:2.3px;color:var(--accent);margin-bottom:8px}.page-description{font-size:12px;color:var(--muted);margin-top:8px;letter-spacing:.15px}.heading-tools{display:flex;align-items:center;gap:10px;padding-bottom:3px}.district-select{background:var(--surface);border:1px solid var(--line);color:var(--ink);padding:8px 33px 8px 12px;border-radius:7px;min-width:125px;font-size:12px}.button{background:var(--surface);border:1px solid var(--line);padding:8px 13px;font-size:12px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;gap:7px;line-height:1.5;white-space:nowrap;transition:.15s}.button svg{width:15px;height:15px}.button:hover{border-color:#bacbc3;background:var(--surface-soft)}.button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.button.primary:hover{background:#1c6959}.button.quiet{background:transparent;border:0;color:var(--accent);padding:4px 0}.button.small{padding:5px 9px;font-size:11px}.quick-bar{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted);margin:-4px 0 20px;flex-wrap:wrap}.quick-chip{display:flex;align-items:center;gap:5px;border:1px solid var(--line);padding:4px 9px;border-radius:20px;background:var(--surface);font-size:10px}.quick-chip svg{width:12px;height:12px}.quick-chip:hover{border-color:var(--accent)}.live-caption{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:10px}.live-caption i{width:5px;height:5px;border-radius:50%;background:var(--accent)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric{position:relative;overflow:hidden;background:var(--surface);padding:20px 20px 17px;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-height:159px}.metric.lead{background:var(--navy);border-color:var(--navy);color:white}.metric-header{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:500;color:var(--muted)}.metric.lead .metric-header{color:#c0d0d3}.metric-icon{height:31px;width:31px;border-radius:9px;background:var(--surface-soft);color:var(--accent);display:flex;align-items:center;justify-content:center}.metric.lead .metric-icon{background:#ffffff0b;color:#dce9b8}.metric-icon svg{width:19px;height:19px}.metric-value{display:flex;align-items:baseline;gap:5px;line-height:1.1;font-family:Arial,sans-serif;font-size:39px;font-weight:500;letter-spacing:-1.5px;margin-top:14px;white-space:nowrap}.metric-value .unit{font:11px "Noto Sans TC",sans-serif;letter-spacing:0;margin-left:2px;color:var(--muted);font-weight:400}.metric.lead .unit{color:#c2d5d9}.metric-bottom{font-size:10px;color:var(--muted);display:flex;gap:6px;align-items:center;justify-content:space-between;margin-top:13px;line-height:1.5}.metric.lead .metric-bottom{color:#aec4ca}.tiny-pill{display:inline-flex;align-items:center;gap:4px;font-size:9px;border-radius:4px;padding:2px 5px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}.tiny-pill.warning{background:#fcf0df;color:#b98031}.tiny-pill.muted{background:var(--surface-soft);color:var(--muted)}.metric.lead .tiny-pill{background:#c0d99220;color:#dbeaaf}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(280px,1fr);gap:22px;align-items:start}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;min-width:0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 22px 16px}.panel-head h2{font-size:15px}.panel-head p{font-size:10px;color:var(--muted);margin-top:3px}.panel-body{padding:0 22px 20px}.panel-link{font-size:10px;color:var(--accent);display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.panel-link svg{width:13px;height:13px}.stack{display:grid;gap:20px}.layer-row{display:flex;gap:7px;padding:0 22px 15px;flex-wrap:wrap}.layer-chip{border:1px solid var(--line);background:var(--surface);font-size:10px;border-radius:6px;padding:5px 8px;display:flex;align-items:center;gap:5px;color:var(--muted)}.layer-chip svg{width:13px;height:13px}.layer-chip i{height:6px;width:6px;border-radius:50%;background:var(--layer-color,var(--accent))}.layer-chip.active{background:var(--accent-soft);border-color:#cbdfd2;color:var(--accent);font-weight:500}.map-wrap{position:relative;background:#e6ebe5;border-top:1px solid var(--line)}.map-canvas{height:390px;width:100%;z-index:1;background:#e5ebe4}.map-wrap.large .map-canvas{height:520px}.map-overlay{position:absolute;left:14px;bottom:26px;background:var(--surface);border:1px solid var(--line);padding:7px 10px;font-size:10px;border-radius:6px;z-index:500;box-shadow:0 2px 10px #193c3310;color:var(--muted);max-width:calc(100% - 100px)}.map-overlay strong{color:var(--ink);font-size:11px;margin-right:4px}.map-loading{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#62766c;padding:20px;text-align:center;font-size:12px}.map-loading svg{width:38px;height:38px;opacity:.5}.map-footer{padding:10px 20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;font-size:9px;color:var(--muted)}.map-footer span{display:flex;gap:5px;align-items:center}.map-footer svg{width:12px;height:12px}.leaflet-container{font-family:inherit;color:#1d333a}.leaflet-popup-content-wrapper{border-radius:10px}.leaflet-popup-content{font:12px/1.7 "Noto Sans TC",sans-serif;min-width:180px;margin:15px}.leaflet-popup-content strong{display:block;font-size:13px;margin-bottom:4px}.leaflet-popup-content .popup-sub{color:#6e8079;font-size:11px;margin:5px 0}.leaflet-popup-content .popup-actions{display:flex;gap:10px;border-top:1px solid #e5ebe7;padding-top:8px;margin-top:8px}.leaflet-popup-content a{color:#247b68}.leaflet-popup-content button{padding:0;color:#247b68;font-size:11px}.leaflet-control-attribution{font-size:8px!important}.leaflet-control-zoom{border:1px solid #d5dfd7!important;box-shadow:none!important}.leaflet-control-zoom a{color:#335a4e!important;background:#fff!important}.bulletins{display:flex;flex-direction:column}.bulletin{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.bulletin:last-child{border-bottom:0;padding-bottom:0}.bulletin:first-child{padding-top:0}.bulletin-icon{width:30px;height:30px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:8px;background:var(--accent-soft);color:var(--accent)}.bulletin-icon svg{width:15px;height:15px}.bulletin-icon.amber{background:#faf0df;color:#bd8a40}.bulletin-icon.blue{background:#eef3f8;color:#6b8eac}.bulletin h3{font-size:12px;font-weight:500;line-height:1.6}.bulletin p{font-size:10px;color:var(--muted);margin-top:4px;line-height:1.8}.bulletin-time{display:inline-block;font-size:9px;color:var(--muted);margin-top:5px}.forecast{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.forecast-item{background:var(--surface-soft);border-radius:8px;padding:10px 4px;text-align:center;font-size:10px;color:var(--muted)}.forecast-item svg{width:24px;height:24px;margin:8px auto 4px;color:var(--orange);display:block}.forecast-item strong{font-family:Arial,sans-serif;font-size:12px;display:block;color:var(--ink);font-weight:500}.forecast-item small{display:block;font-size:9px;margin-top:4px}.source-foot{font-size:9px;color:var(--muted);padding-top:12px;display:flex;align-items:center;gap:5px;line-height:1.7}.source-foot svg{width:11px;height:11px}.section-space{margin-top:22px}.event-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:0 22px 20px}.event-preview{padding:0 18px;border-right:1px solid var(--line);display:flex;gap:12px;min-width:0}.event-preview:first-child{padding-left:0}.event-preview:last-child{border-right:0;padding-right:0}.date-tile{width:45px;min-width:45px;height:55px;background:var(--accent-soft);border:1px solid #dce8dd;border-radius:7px;text-align:center;padding:5px 0}.date-tile small{display:block;font-size:8px;letter-spacing:.6px;color:var(--accent)}.date-tile strong{font-family:Arial,sans-serif;font-size:22px;line-height:1.2;font-weight:500;color:var(--accent)}.event-preview h3{font-size:11px;line-height:1.7;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.event-preview p{font-size:9px;color:var(--muted);margin-top:6px}.empty-state{display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:var(--muted);padding:32px 20px;min-height:150px;gap:8px}.empty-state svg{width:29px;height:29px;opacity:.55}.empty-state strong{font-size:13px;font-weight:500;color:var(--ink)}.empty-state p{font-size:11px;max-width:360px;line-height:1.9}.notice{display:flex;align-items:flex-start;gap:9px;border:1px solid #dfebe2;background:var(--accent-soft);border-radius:9px;padding:12px 15px;font-size:11px;color:#567466;margin-bottom:18px}.notice svg{width:16px;height:16px;margin-top:1px}.notice.warning{background:#fbf3e8;border-color:#f0e5d2;color:#936e37}.section-tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow:auto}.section-tab{padding:11px 16px;font-size:12px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}.section-tab.active{color:var(--accent);font-weight:600;border-bottom-color:var(--accent)}.results-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:17px 20px;border-bottom:1px solid var(--line);font-size:11px;color:var(--muted)}.results-toolbar strong{color:var(--ink);font-weight:500}.result-list{max-height:520px;overflow:auto}.result-row{display:flex;align-items:center;gap:12px;padding:15px 20px;border-bottom:1px solid var(--line)}.result-row:last-child{border-bottom:0}.result-marker{width:31px;height:31px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;border-radius:8px;flex-shrink:0}.result-marker svg{width:17px;height:17px}.result-main{min-width:0;flex:1}.result-main h3{font-size:12px;line-height:1.7;overflow-wrap:anywhere}.result-main p{font-size:10px;color:var(--muted);margin-top:3px;overflow-wrap:anywhere}.result-values{text-align:right;flex-shrink:0}.result-values strong{font-size:20px;font-family:Arial;line-height:1.2;font-weight:500;color:var(--accent)}.result-values small{display:block;color:var(--muted);font-size:9px}.favorite-button{color:#a9b3ad;border:1px solid var(--line);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;flex-shrink:0}.favorite-button svg{width:14px;height:14px}.favorite-button.active{color:#b88c37;background:#fff7e5;border-color:#eadebd}.favorite-button.active svg{fill:#e7cc8240}.row-actions{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap}.row-link{font-size:10px;color:var(--accent);display:inline-flex;align-items:center;gap:4px}.row-link svg{height:12px;width:12px}.split-view{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(310px,1fr);gap:20px;align-items:start}.service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.service-card{border:1px solid var(--line);background:var(--surface);border-radius:11px;padding:19px;display:flex;align-items:flex-start;gap:12px;transition:.2s}.service-card:hover{border-color:#b7cdbf;transform:translateY(-2px)}.service-icon{height:34px;width:34px;display:flex;align-items:center;justify-content:center;color:var(--accent);background:var(--accent-soft);border-radius:9px;flex-shrink:0}.service-card h3{font-size:12px}.service-card p{font-size:10px;color:var(--muted);margin-top:5px}.service-card .external{margin-left:auto;color:var(--muted);width:14px;height:14px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:24px 0 14px}.section-title h2{font-size:16px}.section-title p{font-size:11px;color:var(--muted);margin-top:3px}.events-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.event-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;display:flex;flex-direction:column}.event-banner{height:105px;background:#e7efe5;padding:18px;display:flex;align-items:center;justify-content:space-between;position:relative;overflow:hidden}.event-banner:after{content:"";position:absolute;height:190px;width:190px;border:1px solid #8da79035;border-radius:50%;right:-10px;top:-120px;box-shadow:0 0 0 25px #8da7900a,0 0 0 50px #8da79008}.event-banner .date-tile{background:#ffffffb0;z-index:1}.event-category{font-size:10px;color:#577562;z-index:1}.event-card:nth-child(3n+2) .event-banner{background:#e8edf1}.event-card:nth-child(3n+3) .event-banner{background:#f0ece2}.event-card-content{padding:18px;display:flex;flex-direction:column;flex:1}.event-card h3{font-size:14px;line-height:1.8}.event-meta{font-size:10px;color:var(--muted);margin:10px 0;display:flex;gap:5px;align-items:flex-start}.event-meta svg{height:13px;width:13px;margin-top:2px}.event-description{font-size:11px;color:var(--muted);line-height:1.9;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.event-card-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:18px;margin-top:auto}.data-table{width:100%;border-collapse:collapse;font-size:11px;text-align:left}.table-wrap{overflow:auto}.data-table th{background:var(--surface-soft);color:var(--muted);font-weight:500;font-size:10px;padding:12px 20px;white-space:nowrap}.data-table td{padding:12px 20px;border-bottom:1px solid var(--line)}.data-table tbody tr:last-child td{border-bottom:0}.data-table td.num{text-align:right;font-family:Arial;font-size:12px;font-variant-numeric:tabular-nums}.bar-track{height:5px;max-width:120px;min-width:60px;background:var(--line);border-radius:9px;overflow:hidden}.bar-track span{display:block;background:#88b799;height:100%;border-radius:9px}.district-bar-cell{display:flex;align-items:center;gap:12px}.district-bar-cell span{font-size:10px;color:var(--muted);width:30px}.source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.source-card{padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.source-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.source-card h3{font-size:13px}.source-card p{font-size:11px;color:var(--muted);margin:8px 0;line-height:1.9}.source-card dl{display:grid;grid-template-columns:80px 1fr;font-size:10px;color:var(--muted);gap:4px;margin:12px 0}.source-card dt,.source-card dd{margin:0}.source-card dd{color:var(--ink);overflow-wrap:anywhere}.sources-explainer{padding:22px;font-size:12px;color:var(--muted);line-height:2}.sources-explainer h3{font-size:13px;color:var(--ink);margin-bottom:6px}.sources-explainer ul{padding-left:18px;margin:0}.favorite-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.favorite-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px}.favorite-card .favorite-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.favorite-card h3{font-size:14px}.favorite-card p{font-size:11px;color:var(--muted);margin-top:6px}.favorite-card .row-actions{margin-top:12px}.note-card{border-style:dashed}.site-footer{max-width:1720px;margin:0 auto;padding:20px 36px 25px;display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);font-size:9px;color:#98a59e}.site-footer strong{font-family:Arial;color:var(--accent);letter-spacing:.5px;margin-right:5px}.site-footer a{color:var(--muted)}#toast{position:fixed;bottom:30px;left:calc(50% + 100px);transform:translate(-50%,20px);background:var(--navy);color:white;padding:11px 18px;border-radius:9px;font-size:12px;z-index:2000;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;box-shadow:0 5px 25px #143e3420}#toast.visible{opacity:1;transform:translate(-50%,0)}.app-dialog{width:450px;max-width:calc(100vw - 32px);border:1px solid var(--line);border-radius:18px;background:var(--surface);color:var(--ink);padding:26px;box-shadow:0 20px 100px #143b3c44}.app-dialog::backdrop{background:#0b293988;backdrop-filter:blur(4px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:8px}.dialog-heading h2{font-size:20px}.dialog-description{font-size:11px;line-height:1.9;color:var(--muted);margin-bottom:22px}.field{display:block;margin:15px 0;font-size:12px}.field>span{display:block;margin-bottom:7px;font-weight:500}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--surface-soft);color:var(--ink);width:100%;padding:10px 12px;border-radius:7px;font-size:12px}.field textarea{resize:vertical;min-height:90px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field-help{font-size:10px;color:var(--muted);margin-top:5px}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.settings-backup{border-top:1px solid var(--line);margin-top:24px;padding-top:18px}.settings-backup p{font-size:11px;color:var(--muted);margin-bottom:12px}.settings-backup .button{margin-right:5px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.noscript{position:fixed;inset:0;background:white;padding:50px;z-index:99999}.spinning svg{animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-line{display:inline-block;width:60px;height:10px;border-radius:3px;background:linear-gradient(90deg,#9eb0a81a,#9eb0a838,#9eb0a81a);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{to{background-position:-200% 0}}.load-more{width:100%;padding:14px;color:var(--accent);font-size:11px;border-top:1px solid var(--line)}.city-intro{background:var(--navy);border-radius:var(--radius);padding:25px 28px;color:#fff;margin-bottom:22px;display:flex;justify-content:space-between;align-items:center;gap:25px}.city-intro p{color:#abc3ca;font-size:12px;margin-top:8px}.city-intro svg{height:52px;width:52px;stroke-width:1;color:#d6e6b5}.badge{font-size:10px;border:1px solid var(--line);padding:3px 7px;border-radius:5px;color:var(--muted)}.chart-caption{font-size:10px;color:var(--muted);padding:14px 20px;border-top:1px solid var(--line)}.aqi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.aqi-card{padding:17px;border:1px solid var(--line);background:var(--surface);border-radius:12px}.aqi-card h3{font-size:12px}.aqi-number{font-family:Arial;font-size:32px;line-height:1.4;margin-top:7px;font-weight:500}.aqi-card p{font-size:10px;color:var(--muted)}.pill-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.page-counter{font-size:11px;color:var(--muted)}.loading-progress{position:fixed;left:var(--sidebar);top:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);z-index:3000;animation:shimmer 1s infinite;background-size:200% 100%}body.large-type{font-size:16px}body.large-type .page-description,body.large-type .result-main p,body.large-type .event-description,body.large-type .source-card p,body.large-type .data-table,body.large-type .button,body.large-type .bulletin h3{font-size:14px}body.large-type .nav-link{font-size:15px}body.large-type .metric-bottom,body.large-type .source-foot,body.large-type .bulletin p{font-size:12px}body.dark{--bg:#10242a;--surface:#183138;--surface-soft:#1e3a41;--ink:#e2eae6;--muted:#9aafaa;--line:#2b4548;--accent:#8ec9a8;--accent-soft:#29483e;--navy:#102b36;--shadow:none;color-scheme:dark}body.dark .sidebar{background:#0c242e}body.dark .metric.lead{background:#24473e;border-color:#35574d}body.dark .button.primary{color:#15352c;background:#8ec9a8}body.dark .layer-chip.active{border-color:#577a61}body.dark .event-banner{background:#2e4a3a}body.dark .event-card:nth-child(3n+2) .event-banner{background:#2c434f}body.dark .event-card:nth-child(3n+3) .event-banner{background:#494735}body.dark .date-tile{background:#1c3c32;border-color:#3d5b48}body.dark .event-banner .date-tile{background:#213e32}body.dark .event-category{color:#b4c5b4}body.dark .notice{background:#28473b;border-color:#3f5e4b;color:#b8cec1}body.dark .notice.warning{background:#4b412b;border-color:#665938;color:#d5c09a}body.dark .bulletin-icon.amber{background:#4a412d;color:#dcc095}body.dark .bulletin-icon.blue{background:#293f4f;color:#a7bdcf}body.dark .tiny-pill.warning{background:#51432a;color:#e4c184}body.dark .favorite-button.active{background:#49442f;border-color:#6b5e3d;color:#e0c78f}
@media(min-width:1600px){:root{--sidebar:242px}.sidebar{padding-left:25px;padding-right:25px}main{padding:36px 44px 45px}.topbar{padding:0 44px}.map-canvas{height:430px}.metric{padding:22px 24px}.metric-value{font-size:43px}.panel-head{padding-top:23px}}
@media(max-width:1190px){:root{--sidebar:195px}.sidebar{padding:27px 14px 20px}.brand strong{font-size:23px}.brand-symbol{width:32px}.brand-symbol svg{width:31px}.sidebar-label{font-size:10px;margin-left:10px}.nav-link{padding:11px 12px;gap:10px;font-size:12px}.topbar{padding:0 25px}main{padding:27px 25px 32px}.dashboard-grid{grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:17px}.metrics{gap:12px}.metric{padding:17px 16px}.metric-value{font-size:34px}.panel-head{padding:18px 18px 14px}.panel-body{padding:0 18px 18px}.layer-row{padding-left:18px;padding-right:18px}.event-list{padding:0 18px 18px}.event-preview{padding:0 12px}.event-preview .date-tile{width:38px;min-width:38px}.split-view{grid-template-columns:minmax(0,1.3fr) minmax(270px,1fr);gap:16px}.result-row{padding:13px 15px;gap:9px}.service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.site-footer{padding-left:25px;padding-right:25px}.event-card-content{padding:15px}.search-box input{width:150px}h1{font-size:27px}}
@media(max-width:1000px){:root{--sidebar:175px}.sidebar{padding-left:12px;padding-right:12px}.brand{gap:6px;padding:0 5px}.brand strong{font-size:20px}.brand small{font-size:7px;letter-spacing:1px}.brand small b{font-size:6px}.sidebar-label{font-size:9px}.nav-link{padding:10px;font-size:11px;gap:9px}.nav-link .nav-number{display:none}.sidebar-bottom{padding-left:9px;padding-right:9px}.topbar{gap:10px;padding:0 21px}.topbar-context{gap:7px}.topbar-divider{margin:0 1px}.topbar-tools{gap:9px}.search-box input{width:125px}.search-box kbd{display:none}main{padding:26px 21px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:150px}.dashboard-grid{grid-template-columns:minmax(0,1fr)}.stack{grid-template-columns:1fr 1fr;align-items:start}.map-canvas{height:370px}.event-list{grid-template-columns:repeat(3,minmax(0,1fr))}.event-preview{display:block}.event-preview .date-tile{margin-bottom:10px}.events-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-view{grid-template-columns:1fr}.split-view .result-list{max-height:400px}.split-view .map-wrap.large .map-canvas{height:420px}.site-footer>span:nth-child(2){display:none}.heading-tools{gap:7px}.heading-tools .button{font-size:11px;padding:8px 10px}.district-select{min-width:108px;font-size:11px}.aqi-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){:root{--sidebar:0px}.app-shell{display:block}.sidebar{position:sticky;top:0;width:100%;height:auto;padding:0;background:var(--navy);display:block}.brand{display:none}.sidebar-label,.sidebar-bottom{display:none}#navigation{display:flex;flex-direction:row;gap:0;overflow:auto;padding:0 10px;scrollbar-width:none}#navigation::-webkit-scrollbar{display:none}.nav-link{border-radius:0;padding:14px 13px;font-size:11px;gap:6px;white-space:nowrap;border-bottom:2px solid transparent}.nav-link svg{width:15px;height:15px}.nav-link.active{background:none;color:#e0edbc;border-bottom-color:#ddeaaf;box-shadow:none}.nav-link:hover{background:#244550}.workspace{width:100%}.topbar{height:63px;padding:0 20px;background:var(--surface);flex-wrap:nowrap}.topbar-context{gap:7px}.topbar-context strong{font-size:12px}.topbar-divider{display:none}#local-clock{font-size:10px}.topbar-context{display:flex;flex-wrap:wrap;max-width:150px;row-gap:0}#local-clock{flex-basis:100%;padding-left:13px}.topbar-tools{gap:7px}.search-box{padding:6px 8px}.search-box input{width:135px;font-size:10px}.icon-button{width:29px;height:29px}.mobile-only{display:inline-flex}main{padding:25px 20px 30px}.page-heading{align-items:flex-start;gap:12px;margin-bottom:19px}.eyebrow{font-size:8px;letter-spacing:1.7px;margin-bottom:7px}h1{font-size:26px}.page-description{font-size:11px;line-height:1.85;margin-top:6px;max-width:300px}.heading-tools{padding-top:24px;flex-wrap:wrap;justify-content:flex-end}.heading-tools .button{font-size:0;gap:0;width:33px;height:34px;padding:0}.heading-tools .button svg{width:15px;height:15px}.district-select{min-width:98px;max-width:108px;font-size:10px;padding:8px 25px 8px 9px}.quick-bar{gap:7px;margin-bottom:17px;font-size:10px}.quick-chip{font-size:9px;padding:4px 7px}.live-caption{font-size:8px}.metrics{gap:11px;margin-bottom:18px}.metric{padding:16px;min-height:147px;border-radius:12px}.metric-header{font-size:10px}.metric-icon{height:26px;width:26px;border-radius:7px}.metric-icon svg{width:17px;height:17px}.metric-value{font-size:34px;margin-top:11px}.metric-value .unit{font-size:10px}.metric-bottom{font-size:9px;margin-top:13px}.tiny-pill{font-size:8px}.dashboard-grid{gap:17px}.panel{border-radius:12px}.panel-head h2{font-size:14px}.panel-head{padding:17px 17px 13px}.panel-head p{font-size:9px}.panel-body{padding:0 17px 17px}.layer-row{padding:0 17px 13px;gap:6px}.layer-chip{font-size:9px;padding:5px 7px}.map-canvas{height:340px}.stack{gap:16px}.bulletin{gap:9px;padding:10px 0}.bulletin h3{font-size:11px}.bulletin p{font-size:9px}.bulletin-icon{width:26px;height:26px;border-radius:7px}.forecast{gap:5px}.forecast-item{font-size:9px;padding:9px 3px}.forecast-item strong{font-size:10px}.forecast-item small{font-size:8px}.source-foot{font-size:8px}.section-space{margin-top:17px}.event-list{padding:0 17px 17px;gap:13px}.event-preview{padding:0 10px 0 0}.event-preview:last-child{padding-right:0}.event-preview h3{font-size:10px;-webkit-line-clamp:3}.event-preview p{font-size:8px}.site-footer{padding:17px 20px 22px;font-size:8px}.source-grid{gap:12px}.source-card{padding:17px}.source-card dl{grid-template-columns:67px 1fr;font-size:9px}.source-card p{font-size:10px}.source-card h3{font-size:12px}.favorite-grid{gap:12px}.favorite-card{padding:17px}.events-grid{gap:14px}.service-card{padding:15px;gap:9px}.service-card h3{font-size:11px}.service-card p{font-size:9px}.service-icon{width:29px;height:29px}.service-icon svg{width:17px;height:17px}#toast{left:50%;bottom:20px}.city-intro{padding:21px}.city-intro p{font-size:11px}.city-intro svg{height:43px;width:43px}.loading-progress{top:48px}.section-tab{padding:10px 12px;font-size:11px}}
@media(max-width:470px){.topbar{padding:0 16px}.topbar-context{max-width:140px}.search-box input{width:100px}.search-box{gap:5px}.topbar-tools{gap:5px}#refresh-button{display:none}main{padding:23px 16px 28px}.page-heading{gap:8px}h1{font-size:24px}.page-description{font-size:10px;max-width:230px}.heading-tools{flex-direction:column;align-items:flex-end;padding-top:19px;gap:7px}.heading-tools .button{display:none}.live-caption{flex-basis:100%;margin-left:0;padding-top:2px}.quick-bar{margin-top:-1px}.metrics{gap:10px}.metric{padding:15px 14px}.metric-value{font-size:33px}.metric-header{font-size:9px}.metric-bottom{align-items:flex-start;font-size:8px;gap:3px;min-height:27px}.metric-bottom .tiny-pill{font-size:7px}.stack{grid-template-columns:1fr}.stack .panel:first-child .bulletins{display:block}.bulletin h3{font-size:12px}.bulletin p{font-size:10px}.forecast-item{font-size:10px}.forecast-item strong{font-size:12px}.forecast-item small{font-size:9px}.forecast-item svg{height:27px;width:27px}.event-list{grid-template-columns:1fr;gap:0}.event-preview{display:flex;border-right:0;border-bottom:1px solid var(--line);padding:13px 0;gap:13px}.event-preview:first-child{padding-top:0}.event-preview:last-child{padding-bottom:0;border-bottom:0}.event-preview .date-tile{margin:0;width:42px;min-width:42px}.event-preview h3{font-size:11px;-webkit-line-clamp:2}.event-preview p{font-size:9px}.events-grid{grid-template-columns:1fr}.event-banner{height:85px}.event-card-content{padding:17px}.source-grid,.favorite-grid{grid-template-columns:1fr}.service-grid{gap:10px}.service-card{display:block;padding:14px;position:relative}.service-icon{margin-bottom:10px}.service-card .external{position:absolute;right:12px;top:15px}.service-card p{font-size:9px}.service-card h3{font-size:11px}.split-view .map-wrap.large .map-canvas{height:355px}.map-canvas{height:315px}.map-footer{padding:9px 13px;font-size:8px}.map-footer span:last-child{display:none}.notice{font-size:10px;padding:10px 12px}.site-footer{padding:16px;font-size:8px;gap:8px}.panel-link{font-size:9px}.data-table th,.data-table td{padding:11px 14px}.aqi-grid{gap:10px}.aqi-card{padding:14px}.aqi-card p{font-size:9px}.city-intro svg{display:none}.app-dialog{padding:22px}.field-row{gap:10px}.section-title h2{font-size:15px}.section-title p{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Approved bright visual system: readable labels and comfortable touch targets. */
:root{--bg:#f6f8f7;--surface:#fff;--surface-soft:#f3f7f5;--ink:#18334f;--muted:#667b8d;--line:#e1e7e9;--accent:#087c80;--accent-soft:#e4f3f0;--navy:#18334f;--radius:13px;font-size:16px}.sidebar{background:#fbfcfb;color:var(--ink);border-right:1px solid var(--line);padding:27px 18px 20px}.brand{color:var(--ink);gap:10px}.brand-symbol{color:var(--accent);width:31px}.brand-symbol svg{width:31px}.brand strong{font-family:inherit;font-size:17px;letter-spacing:.1px;white-space:nowrap}.brand small{font-size:9px;letter-spacing:1.3px;color:var(--muted)}.sidebar-label{font-size:12px;color:var(--muted);letter-spacing:0;margin-top:35px}.nav-link{font-size:14px;min-height:46px;color:#4c667c;padding:11px 12px;gap:12px}.nav-link svg{width:20px;height:20px}.nav-link.active{background:var(--accent-soft);color:var(--accent);box-shadow:none}.nav-link:hover{background:#edf4f2;color:var(--accent)}.nav-number{display:none}.sidebar-bottom{padding:15px 8px 0}.city-line{color:#b7cdc8}.sidebar-date{color:var(--muted);font-size:11px}.sidebar-bottom p{color:var(--muted);font-size:12px}.sidebar-controls{border-color:var(--line);gap:13px}.sidebar-control{color:#547284;min-width:40px;height:48px;flex-direction:column;gap:3px;font-size:11px}.sidebar-control:hover{background:var(--accent-soft);color:var(--accent)}.sidebar-control svg{height:19px;width:19px}.sidebar-control span{font-size:11px}.sidebar-control b{font-size:17px;font-weight:500}.topbar{height:80px}.topbar-context strong{font-size:14px}#local-clock{font-size:12px}.search-box{min-height:42px;border-radius:8px;padding:8px 12px}.search-box input{font-size:14px;width:210px}.search-box svg{height:18px;width:18px}.search-box kbd{font-size:12px}.icon-button{min-width:40px;min-height:40px;border-radius:8px}.icon-button svg{height:18px;width:18px}#refresh-button{width:auto;gap:6px;padding:0 11px;font-size:13px}h1{font-size:31px;letter-spacing:-.6px}.eyebrow{font-size:10px;letter-spacing:1.8px}.page-description{font-size:15px;margin-top:8px;max-width:none}.page-heading{margin-bottom:20px}.heading-tools{padding-top:0}.button{font-size:14px;min-height:42px;padding:9px 13px;gap:7px;border-radius:8px}.button svg{width:17px;height:17px}.button.small{font-size:13px;min-height:38px;padding:7px 11px}.button.quiet{min-height:34px}.district-select{font-size:14px;min-height:42px;min-width:124px;padding:8px 30px 8px 12px}.quick-bar{font-size:13px;gap:10px;margin-bottom:20px}.quick-chip{font-size:13px;min-height:38px;border-radius:7px;padding:7px 11px;gap:7px}.quick-chip svg{width:16px;height:16px}.live-caption{font-size:12px;gap:8px}.live-caption i{height:6px;width:6px}.metrics{gap:14px}.metric{min-height:178px;padding:19px 21px;background:var(--surface)}.metric.lead{background:var(--surface);border-color:var(--line);color:var(--ink)}.metric-header,.metric.lead .metric-header{font-size:15px;color:var(--ink);font-weight:600}.metric-icon,.metric.lead .metric-icon{color:var(--accent);background:var(--accent-soft);height:32px;width:32px}.metric.lead .metric-icon{background:#fff7e1;color:#dfac40}.metric-value{font-size:39px;font-weight:600;margin-top:17px;letter-spacing:-1.2px}.metric-value .unit,.metric.lead .unit{font-size:13px;color:var(--ink);font-weight:400}.metric-bottom,.metric.lead .metric-bottom{font-size:12px;color:var(--muted);margin-top:15px;flex-wrap:wrap;gap:7px;line-height:1.65}.tiny-pill,.metric.lead .tiny-pill{font-size:11px;padding:3px 7px;border-radius:6px;background:var(--accent-soft);color:var(--accent)}.tiny-pill.muted{color:var(--muted);background:var(--surface-soft)}.tiny-pill.warning{color:#95691e;background:#fff4df}.panel-head{padding:20px 21px 15px}.panel-head h2{font-size:18px;line-height:1.5}.panel-head p{font-size:12px;margin-top:4px}.panel-link{font-size:13px;min-height:36px}.panel-link svg{height:15px;width:15px}.layer-row{gap:7px;padding:0 20px 15px}.layer-chip{font-size:13px;min-height:37px;padding:7px 10px;border-radius:20px;color:#536d7c}.layer-chip svg{height:15px;width:15px}.layer-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.map-display-toggle{display:flex;gap:5px;flex-shrink:0}.map-display-toggle .button{min-height:35px;font-size:12px;padding:5px 10px}.map-canvas{height:440px}.map-wrap.large .map-canvas{height:530px}.map-footer{font-size:11px;line-height:1.6;padding:11px 18px}.map-footer svg{width:14px;height:14px}.map-overlay{font-size:12px;padding:8px 11px}.map-overlay strong{font-size:13px}.map-loading{font-size:14px}.bulletin{padding:16px 0;gap:13px}.bulletin-icon{height:35px;width:35px;border-radius:9px}.bulletin-icon svg{height:21px;width:21px}.bulletin h3{font-size:15px;font-weight:600;line-height:1.65}.bulletin p{font-size:13px;line-height:1.85;margin-top:5px}.bulletin-time{font-size:11px}.forecast-item{font-size:12px;padding:12px 5px}.forecast-item strong{font-size:15px}.forecast-item small{font-size:11px}.forecast-item svg{height:28px;width:28px}.source-foot{font-size:11px;line-height:1.8;padding-top:14px}.source-foot svg{height:13px;width:13px}.event-list{display:block;padding:0 21px 20px}.event-preview{display:flex;gap:14px;padding:15px 0;border-right:0;border-bottom:1px solid var(--line)}.event-preview:first-child{padding-top:0}.event-preview:last-child{border-bottom:0;padding-bottom:0}.date-tile,.event-preview .date-tile{height:64px;min-width:50px;width:50px;margin-bottom:0;padding:7px 0}.date-tile small{font-size:10px}.date-tile strong{font-size:25px}.event-preview h3{font-size:14px;line-height:1.7}.event-preview p{font-size:12px;margin-top:5px}.dashboard-grid{grid-template-columns:minmax(0,1.75fr) minmax(300px,1fr);gap:20px}.empty-state{padding:32px 22px;min-height:180px}.empty-state strong{font-size:16px}.empty-state p{font-size:14px;max-width:400px}.empty-state svg{width:34px;height:34px}.notice{font-size:14px;line-height:1.8;padding:14px 16px}.notice svg{height:18px;width:18px;margin-top:3px}.section-tab{font-size:15px;min-height:47px;padding:12px 17px}.results-toolbar{font-size:13px;line-height:1.7;padding:17px 20px}.result-row{padding:17px 20px;gap:12px}.result-main h3{font-size:15px;line-height:1.65}.result-main p{font-size:12px;margin-top:4px;line-height:1.75}.result-marker{height:36px;width:36px}.result-marker svg{height:22px;width:22px}.result-values strong{font-size:24px}.result-values small{font-size:11px;line-height:1.7}.favorite-button{width:40px;height:40px}.favorite-button svg{width:18px;height:18px}.row-actions{margin-top:8px;gap:13px;align-items:center}.row-link{font-size:13px;min-height:30px}.row-link svg{height:14px;width:14px}.row-time{font-size:11px;color:var(--muted)}.service-card{padding:20px;gap:13px}.service-card h3{font-size:15px}.service-card p{font-size:13px;margin-top:6px}.service-icon{width:38px;height:38px}.service-icon svg{height:22px;width:22px}.section-title h2{font-size:20px}.section-title p{font-size:13px;margin-top:5px}.event-card h3{font-size:17px;line-height:1.7}.event-description{font-size:14px;line-height:1.85}.event-meta{font-size:13px}.event-meta svg{width:15px;height:15px;margin-top:4px}.event-category{font-size:12px}.event-card-actions{padding-top:17px}.data-table{font-size:14px}.data-table th{font-size:12px;padding:13px 20px}.data-table td{padding:14px 20px}.data-table td.num{font-size:14px}.district-bar-cell span{font-size:12px;width:40px}.source-card h3{font-size:16px}.source-card p{font-size:13px}.source-card dl{font-size:12px;grid-template-columns:85px 1fr;gap:7px}.sources-explainer{font-size:14px}.sources-explainer h3{font-size:16px}.favorite-card h3{font-size:16px}.favorite-card p{font-size:14px}.badge{font-size:12px}.site-footer{font-size:11px;color:var(--muted)}.chart-caption{font-size:12px;line-height:1.9}.aqi-card h3{font-size:15px}.aqi-card p{font-size:12px}.page-counter{font-size:13px;align-self:center}.dialog-description,.settings-backup p{font-size:14px}.field{font-size:14px}.field input,.field select,.field textarea{font-size:15px;min-height:44px}.field-help{font-size:12px}#toast{font-size:14px}.load-more{font-size:14px;min-height:46px}.city-intro{background:var(--accent-soft);border:1px solid #d0e7df;color:var(--ink)}.city-intro p{color:var(--muted);font-size:14px}.city-intro svg{color:var(--accent)}.leaflet-popup-content{font-size:14px!important;line-height:1.8!important}.leaflet-popup-content strong{font-size:15px}.leaflet-popup-content .popup-sub{font-size:12px}.leaflet-popup-content button{font-size:13px;min-height:34px}.population-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}.population-number{padding:21px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.population-number p{font-size:13px;color:var(--muted)}.population-number strong{display:block;font-family:Arial;font-size:30px;line-height:1.5;margin-top:8px;color:var(--ink)}.population-number small{font-size:12px;color:var(--muted)}.trend-chart{height:210px;width:100%;stroke-width:1;display:block;overflow:visible}.trend-chart text{font-size:12px;stroke:none;fill:var(--muted);font-family:inherit}.trend-chart path{stroke:var(--accent);stroke-width:2.5;fill:none}.trend-chart line{stroke:var(--line);stroke-width:1}.population-panels{display:grid;grid-template-columns:1fr 1fr;gap:20px}.camera-panel-note{padding:16px 20px;font-size:13px;color:var(--muted);border-bottom:1px solid var(--line)}.camera-viewer{padding:20px;border-top:1px solid var(--line)}.camera-viewer h3{font-size:16px;margin-bottom:8px}.camera-viewer p{font-size:14px;color:var(--muted);margin:8px 0 14px}.camera-viewer img{display:block;max-width:100%;border-radius:8px}.camera-instructions{font-size:13px;color:var(--muted);line-height:1.9}
body.large-type .page-description,body.large-type .result-main h3,body.large-type .result-main p,body.large-type .event-description,body.large-type .source-card p,body.large-type .data-table,body.large-type .button,body.large-type .bulletin h3{font-size:17px}body.large-type .nav-link{font-size:16px}body.large-type .metric-bottom,body.large-type .source-foot,body.large-type .bulletin p{font-size:15px}body.dark .sidebar{background:#142d35;color:var(--ink);border-color:var(--line)}body.dark .brand{color:var(--ink)}body.dark .nav-link{color:#b7ccd1}body.dark .nav-link.active{color:#a9dcc5;background:#28493e}body.dark .nav-link:hover{color:#b6ddc8;background:#27483f}body.dark .sidebar-controls{border-color:var(--line)}body.dark .sidebar-control{color:#abc5c3}body.dark .metric.lead{background:var(--surface);color:var(--ink);border-color:var(--line)}body.dark .metric.lead .metric-header{color:var(--ink)}body.dark .metric.lead .metric-bottom{color:var(--muted)}body.dark .metric.lead .metric-icon{background:#50472c;color:#e8c86b}body.dark .metric.lead .unit{color:var(--ink)}body.dark .city-intro{background:var(--accent-soft);border-color:var(--line)}body.dark .layer-chip.active{color:#123e32}
@media(max-width:1190px){:root{--sidebar:205px}.sidebar{padding:26px 13px}.brand strong{font-size:15px}.brand-symbol{width:26px}.brand-symbol svg{width:26px}.nav-link{font-size:14px;gap:9px}.metric{padding:17px}.metric-header{font-size:13px}.metric-value{font-size:34px}.metric-bottom{font-size:12px}.dashboard-grid{grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr)}.topbar{padding:0 24px}.topbar-context{gap:8px}.search-box input{width:160px}#local-clock{font-size:12px}.metric-icon{width:27px;height:27px}.metric-icon svg{width:17px;height:17px}.page-description{font-size:14px}.heading-tools .button{font-size:13px}.district-select{font-size:13px;min-width:112px}.events-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1030px){.dashboard-grid{grid-template-columns:1fr}.stack{grid-template-columns:1fr 1fr;align-items:start}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-header{font-size:15px}.metric-value{font-size:38px}.map-canvas{height:400px}.page-heading{align-items:flex-start}.heading-tools{padding-top:20px}.topbar-tools{gap:8px}.topbar-context{flex-wrap:wrap;max-width:160px;gap:2px 8px}.topbar-divider{display:none}#local-clock{width:100%;font-size:11px;padding-left:13px}.source-grid{grid-template-columns:1fr}.population-panels{grid-template-columns:1fr}.brand small{font-size:8px}.service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.result-main h3{font-size:15px}}
@media(max-width:760px){:root{--sidebar:0px}.sidebar{background:var(--surface);border-right:0;border-bottom:1px solid var(--line);padding:0}.brand{display:none}#navigation{padding:0 8px}.nav-link{font-size:14px;min-height:52px;padding:12px 13px;gap:7px}.nav-link.active{border-bottom-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.nav-link:hover{background:var(--accent-soft)}.nav-link svg{height:18px;width:18px}.topbar{height:76px;padding:0 20px;gap:10px}.topbar-context{max-width:155px}.topbar-context strong{font-size:14px}#local-clock{font-size:11px}.search-box{min-height:42px;padding:7px 10px}.search-box input{width:150px;font-size:14px}.search-box svg{height:17px;width:17px}.topbar-tools{gap:7px}#refresh-button{display:none}.mobile-only{display:inline-flex}main{padding:25px 20px 30px}.page-heading{flex-wrap:wrap;align-items:flex-start;margin-bottom:18px}.page-heading>div:first-child{flex-basis:100%}h1{font-size:29px}.eyebrow{font-size:10px}.page-description{font-size:15px;max-width:none}.heading-tools{padding:0;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:10px;flex-wrap:wrap}.heading-tools .button{display:inline-flex;font-size:14px;width:auto;height:auto;min-height:43px;padding:9px 13px;gap:7px}.heading-tools .button svg{height:17px;width:17px}.district-select{font-size:14px;min-width:130px;max-width:none;min-height:43px;padding:8px 30px 8px 12px}.quick-bar{font-size:13px;gap:9px;margin:0 0 20px}.quick-chip{font-size:13px;min-height:40px;padding:8px 12px}.quick-chip svg{height:16px;width:16px}.live-caption{font-size:12px;flex-basis:100%;margin-left:0;padding-top:2px}.metrics{gap:12px}.metric{padding:18px;min-height:170px;border-radius:12px}.metric-header{font-size:14px}.metric-icon{width:28px;height:28px}.metric-value{font-size:36px;margin-top:13px}.metric-value .unit{font-size:13px}.metric-bottom{font-size:12px;margin-top:14px;min-height:0}.tiny-pill,.metric.lead .tiny-pill{font-size:11px}.panel-head{padding:18px 18px 15px;flex-wrap:wrap}.panel-head h2{font-size:18px}.panel-head p{font-size:12px}.panel-body{padding:0 18px 20px}.layer-row{padding:0 18px 15px;gap:8px}.layer-chip{font-size:13px;min-height:40px;padding:7px 11px}.map-display-toggle .button{font-size:13px;min-height:39px}.map-canvas{height:390px}.map-footer{font-size:11px;padding:12px 17px}.map-footer span:last-child{display:none}.map-overlay{font-size:12px}.stack{gap:16px}.bulletin h3{font-size:15px}.bulletin p{font-size:13px}.bulletin-icon{width:33px;height:33px}.bulletin-icon svg{height:20px;width:20px}.forecast-item{font-size:12px}.forecast-item strong{font-size:14px}.forecast-item small{font-size:11px}.source-foot{font-size:11px}.event-list{display:block;padding:0 18px 20px}.event-preview{display:flex;padding:15px 0;gap:13px}.event-preview h3{font-size:14px}.event-preview p{font-size:12px}.event-preview .date-tile{width:48px;min-width:48px;height:61px}.event-card h3{font-size:17px}.event-description{font-size:14px}.event-meta{font-size:13px}.service-card{padding:17px}.service-card h3{font-size:15px}.service-card p{font-size:13px}.service-icon{height:35px;width:35px}.source-card h3{font-size:16px}.source-card p{font-size:14px}.source-card dl{font-size:12px;grid-template-columns:80px 1fr}.favorite-card h3{font-size:16px}.favorite-card p{font-size:14px}.result-row{padding:16px 18px;gap:11px}.result-main h3{font-size:15px}.result-main p{font-size:12px}.result-values small{font-size:11px}.result-values strong{font-size:23px}.row-link{font-size:13px;min-height:34px}.favorite-button{height:42px;width:42px}.section-tab{font-size:14px;min-height:46px}.section-title h2{font-size:19px}.section-title p{font-size:13px}.notice{font-size:14px;padding:13px 15px}.city-intro{padding:22px}.city-intro p{font-size:14px}.city-intro svg{display:none}.aqi-card h3{font-size:15px}.aqi-card p{font-size:12px}.site-footer{font-size:11px;padding:20px;flex-wrap:wrap}.data-table th{font-size:12px;padding:13px 17px}.data-table td{font-size:14px;padding:13px 17px}.population-summary{gap:11px}.population-number{padding:17px}.population-number strong{font-size:25px}.population-number p{font-size:12px}.population-number small{font-size:11px}.loading-progress{top:52px}}
@media(max-width:530px){.topbar{padding:0 16px}.topbar-context{max-width:138px;flex-shrink:0}.search-box input{width:100%;min-width:0}.search-box{min-width:0}.topbar-tools{min-width:0}.search-box kbd{display:none}.topbar-context strong{font-size:13px}#local-clock{font-size:10px}.mobile-only{min-width:42px}.stack{grid-template-columns:1fr}main{padding:24px 16px 28px}h1{font-size:27px}.page-description{font-size:14px}.metrics{gap:10px}.metric{padding:16px 14px;min-height:177px}.metric-header{font-size:13px;gap:5px}.metric-icon{width:25px;height:25px}.metric-value{font-size:32px}.metric-value .unit{font-size:12px}.metric-bottom{font-size:12px;display:block;line-height:1.7}.metric-bottom .tiny-pill{margin-top:5px;display:inline-block;font-size:11px}.map-canvas{height:350px}.map-overlay{font-size:11px;max-width:calc(100% - 88px)}.map-overlay strong{font-size:12px}.service-grid{grid-template-columns:1fr}.service-card{display:flex;padding:18px;gap:13px;position:relative}.service-card .external{position:static;flex-shrink:0}.service-icon{margin:0}.service-card h3{font-size:15px}.service-card p{font-size:13px}.result-row{padding:15px 14px;gap:9px}.result-marker{width:29px;height:32px}.result-marker svg{height:21px;width:21px}.result-main h3{font-size:14px}.result-main p{font-size:12px}.result-values strong{font-size:21px}.result-values small{font-size:10px}.favorite-button{width:39px;height:42px}.row-actions{gap:9px}.result-main .row-time{flex-basis:100%;font-size:11px}.events-grid{grid-template-columns:1fr}.event-banner{height:105px}.event-card-content{padding:19px}.event-description{font-size:14px}.event-meta{font-size:13px}.panel-link{font-size:13px}.section-title{gap:10px}.section-title h2{font-size:18px}.section-title p{font-size:13px}.site-footer{font-size:11px;padding:19px 16px;display:block;line-height:2}.site-footer a{display:block}.population-summary{grid-template-columns:1fr}.population-number{padding:17px 20px;display:flex;align-items:center;gap:15px;flex-wrap:wrap}.population-number strong{margin:0 0 0 auto;font-size:26px}.population-number small{width:100%}.aqi-grid{gap:12px}.aqi-card{padding:17px}.aqi-card h3{font-size:15px}.aqi-card p{font-size:12px}.app-dialog{padding:23px}.dialog-heading h2{font-size:21px}.dialog-description{font-size:14px}.field input,.field select,.field textarea{font-size:16px}.empty-state p{font-size:14px}}
@media(max-width:530px){.metric-header{font-size:14px}.result-values small{font-size:12px}.result-values{max-width:72px}.metric-icon{flex-shrink:0}.metric-header>span:first-child{line-height:1.6}}
.camera-directories{grid-template-columns:repeat(2,minmax(0,1fr))}.camera-directories .service-card{background:var(--surface);border-color:#cfe0df}.camera-directories .service-card .row-link{margin-top:9px;font-weight:600}.camera-watch{font-weight:600;color:var(--accent);background:var(--accent-soft);padding:5px 9px;border-radius:6px;min-height:38px}.leaflet-popup-content .popup-actions{flex-wrap:wrap}@media(max-width:620px){.camera-directories{grid-template-columns:1fr}}
.camera-watch{font-size:14px;min-height:44px;padding:8px 11px}.camera-watch~.row-link{min-height:42px}.camera-directories .row-link{min-height:42px}.leaflet-popup-content .camera-watch{font-size:14px;min-height:44px}.leaflet-popup-content .popup-actions a{display:inline-flex;align-items:center}
/* Compact, touch-friendly location cards. The visible circle stays small. */
.city-map-marker{background:transparent;border:0;cursor:pointer}.city-marker-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer;touch-action:manipulation;color:var(--point-color);-webkit-tap-highlight-color:transparent}.city-marker-button>span{display:block;width:13px;height:13px;border:2px solid #fff;border-radius:50%;background:var(--point-color);box-shadow:0 1px 4px #17382e55;transition:transform .15s,box-shadow .15s;pointer-events:none}.city-marker-button:hover>span,.city-marker-button:focus-visible>span{transform:scale(1.25);box-shadow:0 0 0 4px #ffffffc9,0 1px 7px #17382e66}.city-marker-button.is-selected>span{width:16px;height:16px;box-shadow:0 0 0 5px #ffffffdd,0 0 0 7px var(--point-color)}.city-marker-button:focus-visible{outline:3px solid var(--point-color);outline-offset:-2px;background:#ffffff7a}.place-popup .leaflet-popup-content-wrapper{border-radius:14px;background:var(--surface);color:var(--ink);padding:0;box-shadow:0 5px 28px #15333e30;border:1px solid var(--line)}.place-popup .leaflet-popup-content{margin:0!important;width:280px!important;max-width:calc(100vw - 76px);font-family:inherit;font-size:14px!important;line-height:1.65!important}.place-popup .leaflet-popup-tip{background:var(--surface);box-shadow:0 3px 7px #15333e12}.leaflet-container .place-popup a.leaflet-popup-close-button{top:6px;right:6px;width:36px;height:36px;line-height:34px;font-size:25px;border-radius:8px;color:var(--muted);font-family:Arial,sans-serif}.leaflet-container .place-popup a.leaflet-popup-close-button:hover{background:var(--surface-soft);color:var(--ink)}.place-card{padding:18px 17px 16px;min-width:0}.place-card-type{display:flex;align-items:center;gap:7px;color:var(--point-color);font-size:12px;font-weight:600;min-height:23px;padding-right:26px}.place-card-type svg{width:17px;height:17px}.place-card-status{display:inline-block;font-size:11px;line-height:1.5;padding:2px 5px;border-radius:4px;font-weight:500}.place-card-status.warning{background:#fff1d7;color:#896022}.place-card-title{font-size:16px;line-height:1.65;font-weight:700;margin:8px 0 5px!important;overflow-wrap:anywhere;color:var(--ink)}.place-card-address{display:flex;align-items:flex-start;gap:6px;color:var(--muted);font-size:12px;line-height:1.8;margin:0!important}.place-card-address svg{height:13px;width:13px;margin-top:4px}.place-card-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0 12px}.place-card-stat{border:1px solid var(--line);background:var(--surface-soft);padding:11px 12px;border-radius:9px;min-width:0}.place-card-stat>span{display:block;font-size:12px;color:var(--muted)}.place-card-stat>div{display:flex;gap:5px;align-items:baseline;margin-top:4px}.place-card-stat b{font-family:Arial,sans-serif;font-size:27px;font-weight:600;letter-spacing:-.7px;line-height:1.3;color:var(--accent)}.place-card-stat small{font-size:11px;color:var(--muted);font-weight:400;white-space:nowrap}.place-card-message,.place-card-description{margin:10px 0!important;color:var(--muted);font-size:13px;line-height:1.85;overflow-wrap:anywhere}.place-card-details{border-top:1px solid var(--line);padding-top:9px;margin:10px 0;font-size:12px;color:var(--muted);line-height:1.8}.place-card-details summary{color:var(--accent);cursor:pointer;min-height:30px;font-size:13px}.place-card-details p{margin:6px 0 0!important;white-space:pre-line}.place-card-time{display:flex;gap:5px;align-items:flex-start;margin:10px 0 0!important;font-size:11px;color:var(--muted);line-height:1.8}.place-card-time svg{height:12px;width:12px;margin-top:4px}.place-card-source{font-size:11px;color:var(--muted);line-height:1.8;margin:2px 0 0!important}.place-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px;margin-top:12px}.place-card-actions .popup-action{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:8px 11px;min-height:42px;color:var(--accent);font-size:13px;font-weight:500;line-height:1.4}.place-card-actions .popup-action svg{height:15px;width:15px}.place-card-actions .popup-action.primary{color:#fff;background:#087c80;border-color:#087c80}.place-card-actions .popup-action.is-saved{background:#fff7e3;color:#9a7324;border-color:#ecdcae}.place-card-actions .popup-action.is-saved svg{fill:#e4c47733}.place-card-actions .popup-action.subtle{border-color:transparent;background:none;padding:7px 5px;font-size:12px}.place-card-actions .camera-watch{font-size:13px;min-height:42px}.place-card-actions .row-link{min-height:38px;font-size:12px}.place-popup .leaflet-popup-scrolled{border-top:0;border-bottom:0}.place-card a:focus-visible,.place-card button:focus-visible{outline:3px solid #57b3a8;outline-offset:2px}body.dark .place-card-status.warning{background:#534327;color:#e9cc88}body.dark .place-card-actions .popup-action.is-saved{background:#4b432a;color:#e9cf8d;border-color:#75653c}body.dark .city-marker-button>span{border-color:#ecf4ee}body.dark .city-marker-button.is-selected>span{box-shadow:0 0 0 5px #203d39e0,0 0 0 7px var(--point-color)}
@media(max-width:530px){.place-popup .leaflet-popup-content{width:265px!important}.place-card{padding:17px 15px 15px}.place-card-title{font-size:16px}.place-card-actions .popup-action{min-height:44px;font-size:14px}.place-card-actions .camera-watch{font-size:13px;min-height:44px}.place-card-stat small{font-size:12px}.place-card-description{font-size:13px}.place-card-stat b{font-size:27px}}
.parking-fee-info{margin:10px 0 6px;padding:9px 0;border-top:1px solid var(--line)}.parking-fee-info.needs-confirmation{background:#fff8e9;border:1px solid #eddcb5;border-radius:8px;padding:11px 12px}.parking-fee-status{display:flex;align-items:center;gap:6px!important;margin:0 0 5px!important;color:#896120!important;font-size:14px!important}.parking-fee-status svg{height:16px;width:16px}.parking-fee-status strong{font-size:14px!important;font-weight:600}.parking-fee-note{font-size:12px!important;color:var(--muted)!important;line-height:1.85!important;margin:4px 0!important}.parking-fee-details{margin:6px 0 2px;color:var(--muted);font-size:12px;line-height:1.9}.parking-fee-details summary{font-size:13px;color:var(--accent);cursor:pointer;min-height:32px;padding:4px 0}.parking-fee-raw{font-size:13px!important;white-space:pre-line;margin:6px 0!important;color:var(--ink)!important}.parking-fee-source{font-size:11px!important;line-height:1.85!important;color:var(--muted)!important;margin:7px 0!important}.parking-fee-info .fee-operator{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin:7px 0 4px;min-height:40px;border:1px solid #cbded7;background:var(--surface);border-radius:7px;padding:8px 10px;font-size:13px;color:var(--accent)}.parking-fee-info .fee-operator svg{height:14px;width:14px}.place-card .parking-fee-status strong{display:inline;margin:0}.place-card .parking-fee-info{margin:12px 0}.place-card .parking-fee-raw{font-size:13px!important}.place-card .parking-fee-note{font-size:12px!important}body.dark .parking-fee-info.needs-confirmation{background:#413b28;border-color:#6b5b37}body.dark .parking-fee-status{color:#e4cb91!important}
/* Keep mouse targets compact in dense areas; touch devices get the full 40px target. */
.leaflet-marker-pane .city-map-marker{pointer-events:none}.city-marker-button{width:24px;height:24px;margin:8px;pointer-events:auto}@media(pointer:coarse){.city-marker-button{width:40px;height:40px;margin:0}}
/* Greater Taipei destinations: explicit address lookup, separate from name filtering. */
.address-search-panel{background:var(--surface);border:1px solid #d6e5df;border-radius:13px;padding:21px 23px;margin-bottom:20px}.address-search-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:17px}.address-search-heading h2{font-size:18px}.address-search-heading p{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.8}.address-search-heading>svg{width:27px;height:27px;color:var(--accent)}.address-search-controls{display:flex;gap:10px;align-items:center}.address-search-controls input{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:11px 13px;min-height:46px;font-size:15px;background:var(--surface-soft);color:var(--ink)}.address-search-controls .button{min-height:46px;flex-shrink:0}.address-attribution{margin-top:10px;font-size:11px;color:var(--muted);line-height:1.8}.inline-source{color:var(--accent);text-decoration:underline}.inline-source svg{display:none}.address-message{font-size:13px;color:var(--muted);margin-top:12px;line-height:1.8}.address-candidates{display:grid;gap:8px;margin-top:12px}.address-candidate{display:flex;width:100%;align-items:center;gap:11px;text-align:left;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;padding:13px 15px;color:var(--ink)}.address-candidate:hover{border-color:var(--accent);background:var(--accent-soft)}.address-candidate>svg{height:20px;width:20px;color:var(--accent)}.address-candidate>span:nth-child(2){flex:1;min-width:0}.address-candidate strong{display:block;font-size:14px;line-height:1.65}.address-candidate small{display:block;font-size:12px;color:var(--muted);margin-top:3px;line-height:1.8}.address-candidate em{display:block;font-size:11px;font-style:normal;color:var(--muted);margin-top:3px}.address-select-label{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--accent);white-space:nowrap}.address-select-label svg{width:15px;height:15px}.search-centre-summary{display:flex;align-items:center;gap:12px;padding:14px 0 0;margin-top:14px;border-top:1px solid var(--line)}.search-centre-icon{background:var(--accent-soft);color:var(--accent);width:37px;height:37px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.search-centre-summary>div{flex:1;min-width:0}.search-centre-summary strong{font-size:14px;line-height:1.75;display:block;overflow-wrap:anywhere}.search-centre-summary p{font-size:12px;color:var(--muted);margin-top:3px}.radius-controls{display:flex;align-items:center;gap:8px;margin-top:13px;flex-wrap:wrap}.radius-controls>span{font-size:13px;color:var(--muted);margin-right:4px}.radius-controls .button{min-width:65px;min-height:40px}.heading-tools{flex-wrap:wrap;justify-content:flex-end}.city-select{min-width:115px}.brand strong{font-size:17px}.brand small{font-size:8px;letter-spacing:.6px}@media(max-width:1190px){.page-heading{flex-wrap:wrap}.heading-tools{padding-top:0}.brand strong{font-size:15px}}@media(max-width:760px){.heading-tools{justify-content:flex-start}.address-search-panel{padding:18px}.address-search-controls{flex-wrap:wrap}.address-search-controls input{flex-basis:100%;font-size:16px}.address-search-controls .button{flex:1}.address-search-heading h2{font-size:17px}.address-search-heading p{font-size:13px}.address-search-heading>svg{display:none}.city-select{min-width:125px}}@media(max-width:530px){.address-search-panel{padding:17px 15px}.address-candidate{padding:12px 10px;gap:8px}.address-candidate>svg{display:none}.address-select-label{font-size:12px}.address-select-label svg{width:13px;height:13px}.search-centre-summary{flex-wrap:wrap}.search-centre-summary>.button{margin-left:49px}.address-attribution{font-size:11px}.address-candidate strong{font-size:14px}.radius-controls .button{min-height:44px}.heading-tools .city-select{min-width:121px}.heading-tools .district-select{min-width:121px}}
.population-gender{display:grid;gap:15px;padding:10px 0 18px}.population-gender>div{display:flex;justify-content:space-between;gap:18px;padding:15px 17px;border-radius:9px;background:var(--surface-soft);font-size:15px}.population-gender strong{font-size:18px;font-weight:600}.population-gender p{font-size:13px;color:var(--muted)}.source-city-coverage{border-top:1px solid var(--line);padding-top:8px}.source-city-coverage p{font-size:12px!important;line-height:1.9;margin:8px 0!important}
