@import url('https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;500;600;700&family=Oswald:wght@400;500;600;700&display=swap');
:root{--ink:#172b45;--muted:#667085;--line:#d9dee7;--paper:#f6f7f9;--white:#fff;--teal:#003DA5;--teal-dark:#002e70;--gold:#FFB81C;--blue:#55759f;--red:#b95555;--shadow:0 8px 24px rgba(21,62,66,.055)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 'Fira Sans',sans-serif}button,input,select{font:inherit}button{cursor:pointer}.topbar{height:72px;padding:0 clamp(20px,5vw,78px);background:#fff;border-bottom:1px solid #e5e8ee;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:11px;align-items:center;color:inherit;text-decoration:none}.brand-mark{width:38px;height:38px;border-radius:12px;background:var(--teal-dark);color:#f4c35d;font:800 22px Oswald,sans-serif;display:grid;place-items:center}.brand strong,.brand small{display:block}.brand strong{font:700 15px Oswald,sans-serif;letter-spacing:.01em}.brand small{font-size:11px;color:#647085;letter-spacing:.11em;text-transform:uppercase}.topbar-actions{display:flex;gap:18px;align-items:center}.live-indicator{font-size:12px;color:#657b7d;display:flex;gap:8px;align-items:center}.live-indicator i,.status-dot{width:8px;height:8px;border-radius:50%;background:#3c8a68;display:inline-block;box-shadow:0 0 0 4px #e7f1eb}.page-shell{max-width:1440px;margin:0 auto;padding:38px clamp(18px,4vw,58px) 24px}.intro-row{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:26px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.15em;color:var(--teal);text-transform:uppercase}.intro-row h1,.section-heading h2{font-family:Oswald,sans-serif;letter-spacing:-.045em}.intro-row h1{font-size:clamp(28px,3.1vw,42px);line-height:1.12;margin:8px 0 8px}.intro-copy,.section-copy{margin:0;color:var(--muted)}.updated-block{font-size:12px;color:#829297;display:flex;gap:10px;align-items:center;padding-bottom:6px}.status-dot{width:6px;height:6px;box-shadow:none}.panel,.metric-card,.chart-card{background:var(--white);border:1px solid #e4e8ef;border-radius:13px;box-shadow:var(--shadow)}.toolbar{display:flex;gap:20px;align-items:flex-end;padding:16px 18px;margin-bottom:18px}.toolbar-group,.add-source{display:flex;flex-direction:column;gap:7px}.source-group{flex:1;min-width:260px}.source-group select{height:42px;min-width:220px}.add-source{min-width:250px}.inline-control{display:flex;gap:7px}.field-label{display:block;color:#75878c;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.select-control,.toolbar select,input{background:#fff;border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:9px 11px;outline:none}.toolbar select[multiple]{height:42px;padding:8px;max-width:100%;font-size:12px}.toolbar select[multiple] option{padding:2px 4px}.inline-control input{min-width:0;flex:1}.select-control:focus,input:focus{border-color:#597eb6;box-shadow:0 0 0 3px #e8eef8}.button{border:1px solid transparent;border-radius:8px;padding:9px 13px;font-weight:700;font-size:12px;white-space:nowrap;transition:.15s ease}.button:hover{transform:translateY(-1px)}.button-light{background:#eef2f8;color:var(--teal-dark)}.button-outline{background:#fff;border-color:#cbd5e4;color:var(--teal-dark)}.button-primary{background:var(--teal-dark);color:white}.button-primary:hover{background:#003DA5}.button:disabled{opacity:.5;cursor:not-allowed;transform:none}.tabs{display:flex;gap:7px;border-bottom:1px solid #d9dee7;margin-top:17px;margin-bottom:24px}.tab{background:transparent;border:0;border-bottom:2px solid transparent;padding:13px 17px;color:#77888c;font-weight:700;font-size:13px;margin-bottom:-1px}.tab:hover{color:var(--teal)}.tab.active{color:var(--teal-dark);border-color:var(--teal)}.tab-number{color:#9aa9aa;font:600 10px Oswald,sans-serif;margin-right:9px}.tab-panel{display:none}.tab-panel.active{display:block}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin:4px 0 17px;gap:18px}.section-heading h2{font-size:23px;line-height:1.2;margin:5px 0}.section-copy{font-size:12px}.subtle{font-size:12px;color:#829297}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.metric-card{padding:17px 20px;min-height:112px}.metric-label{display:block;font-size:11px;color:#728388;font-weight:600}.metric-card strong{display:block;margin:7px 0 1px;font:800 26px Oswald,sans-serif;letter-spacing:-.04em;color:var(--teal-dark)}.metric-foot{font-size:10px;color:#95a3a4}.chart-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:13px}.chart-card{padding:17px 19px;min-width:0}.chart-card.wide{grid-column:span 2}.chart-heading{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.chart-heading h3{font:700 13px Oswald,sans-serif;margin:0;color:#253957}.chart-heading p{font-size:10px;color:#88989a;margin:4px 0 0}.chart-key{display:flex;align-items:center;gap:5px;color:#718287;font-size:10px;white-space:nowrap}.chart-key i{width:7px;height:7px;border-radius:50%;display:inline-block;margin-left:8px}.key-blue{background:var(--blue)}.key-gold{background:var(--gold)}.chart-wrap{height:230px;position:relative;margin:11px auto 2px;max-width:500px}.chart-large{height:280px;max-width:none}.chart-note{font-size:10px;color:#89999b;margin:4px 0 0}.method-note,.map-footnote{font-size:11px;color:#718387;margin:14px 2px}.method-note{padding:12px 15px;border-left:3px solid #FFB81C;background:#fff;border-radius:0 7px 7px 0}.posts-heading{align-items:flex-end}.action-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.classification-strip{display:grid;grid-template-columns:minmax(200px,.8fr) minmax(150px,.55fr) 1.5fr;align-items:center;gap:22px;padding:14px 17px;margin-bottom:13px}.coverage-line{display:flex;align-items:baseline;gap:8px;margin-top:3px}.coverage-line strong{font:800 21px Oswald,sans-serif;color:var(--teal-dark)}.coverage-line span,.coverage-progress small{color:#819194;font-size:10px}.progress-track{height:7px;border-radius:9px;background:#e8ebf0;overflow:hidden}.progress-track span{display:block;background:#5579ae;height:100%;width:0;border-radius:inherit;transition:width .3s}.coverage-help,.classify-help{font-size:10px;color:#77898c;border-left:1px solid #e3ece9;padding-left:18px}.coverage-progress small{display:block;text-align:right;margin-top:4px}.post-filters{display:flex;align-items:flex-end;gap:12px;padding:13px 15px;margin-bottom:11px}.post-filters>div{display:flex;flex-direction:column;gap:6px}.post-filters .search-wrap{flex:1}.post-filters input,.post-filters select{height:38px}.check-control{display:flex;gap:7px;align-items:center;padding:0 3px 11px;color:#657a7e;font-size:11px;white-space:nowrap}.check-control input{accent-color:var(--teal);width:15px;height:15px}.list-meta{display:flex;justify-content:space-between;color:#89999b;font-size:10px;margin:13px 4px 8px}.post-list{display:flex;flex-direction:column;gap:8px}.post-card{background:#fff;border:1px solid #e4ece9;border-radius:11px;padding:0 16px;box-shadow:0 3px 12px rgba(21,62,66,.035)}.post-topline{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;padding:13px 0 10px}.post-title{font:700 13px/1.45 Oswald,sans-serif;color:#1c3a40;margin:0}.post-meta{color:#8a999a;font-size:10px;margin-top:5px}.post-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:99px;background:#eef2f8;color:#31598f;font-size:9px;font-weight:700}.badge.unclassified{background:#fff5e5;color:#9d6b1c}.badge.location{background:#edf2fb;color:#4a6f9a}.post-actions{display:flex;gap:6px;align-items:center;flex-shrink:0}.mini-button{border:1px solid #cbd5e4;border-radius:7px;padding:6px 9px;color:var(--teal-dark);background:#fff;font-size:10px;font-weight:700}.mini-button:hover{background:#f2f5fa}.post-details{border-top:1px solid #edf1ef;padding:11px 0 13px}.post-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.65;color:#45546d;margin:0 0 11px;max-height:320px;overflow:auto}.post-footer{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.post-footer a{color:var(--teal);font-size:10px;font-weight:700;text-decoration:none}.post-footer a:hover{text-decoration:underline}.class-hit{font-size:10px;color:#647b7e;margin:4px 0}.load-more-wrap{display:flex;justify-content:center;padding:17px}.hidden{display:none!important}.map-frame-wrap{height:min(72vh,760px);min-height:460px;overflow:hidden;border:1px solid #d9dee7;border-radius:12px;background:#edf1f6;box-shadow:var(--shadow)}.map-frame-wrap iframe{width:100%;height:100%;border:0}.footer{display:flex;justify-content:space-between;border-top:1px solid #dfe8e5;margin-top:27px;padding-top:13px;color:#91a0a1;font-size:9px}.job-banner,.error-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;border-radius:9px;margin:12px 0;padding:11px 15px;background:#edf4ef;border:1px solid #d8e8dd;color:#286253}.job-copy strong,.job-copy span{display:block}.job-copy strong{font-size:11px}.job-copy span{font-size:10px;color:#577c72}.job-progress{width:min(250px,38%)}.job-progress small{display:block;text-align:right;margin-top:3px;font-size:9px;color:#66877d}.error-banner{background:#fff0ed;border-color:#f0d2ca;color:#9a4f42;font-size:11px}.empty-state{padding:30px 20px;text-align:center;color:#819194;background:#fff;border:1px dashed #d2dfdb;border-radius:10px;font-size:12px}.map-panel .section-heading{align-items:center}
@media(max-width:900px){.toolbar{flex-wrap:wrap}.source-group{flex:1 1 100%}.source-group select{width:100%}.metric-grid{grid-template-columns:repeat(2,1fr)}.chart-grid{grid-template-columns:1fr}.chart-card.wide{grid-column:auto}.classification-strip{grid-template-columns:1fr 1fr}.classify-help{grid-column:span 2}}
@media(max-width:650px){.topbar{height:62px;padding:0 16px}.live-indicator{display:none}.page-shell{padding:25px 14px 18px}.intro-row{display:block}.updated-block{margin-top:13px}.toolbar{gap:13px;padding:13px}.add-source{min-width:100%}.tabs{overflow:auto}.tab{white-space:nowrap;padding:11px}.tab-number{display:none}.section-heading{align-items:flex-start;flex-direction:column}.metric-grid{gap:8px}.metric-card{padding:13px;min-height:100px}.metric-card strong{font-size:22px}.chart-card{padding:14px}.chart-large{height:250px}.chart-key{display:none}.posts-heading{align-items:stretch}.action-row{justify-content:flex-start}.classification-strip{grid-template-columns:1fr;gap:11px}.classify-help{grid-column:auto;border-left:0;border-top:1px solid #e3ece9;padding:10px 0 0}.post-filters{display:grid;grid-template-columns:1fr 1fr}.post-filters .search-wrap{grid-column:span 2}.post-filters>div:last-of-type{grid-column:span 2}.check-control{padding:2px}.post-topline{display:block}.post-actions{margin-top:9px}.job-banner{align-items:flex-start;flex-direction:column}.job-progress{width:100%}.footer{gap:10px;flex-direction:column}.map-frame-wrap{min-height:430px}}

/* UCR-inspired, low-saturation dashboard theme */
:root{--ink:#172b45;--muted:#667085;--line:#d9dee7;--paper:#f6f7f9;--white:#fff;--teal:#003DA5;--teal-dark:#002e70;--gold:#FFB81C;--blue:#55759f;--red:#a94646;--shadow:0 8px 24px rgba(23,43,69,.055)}
.topbar{border-top:4px solid #003DA5}.brand-logo{width:118px;height:auto;max-height:42px;object-fit:contain}.ucr-logo{width:112px;height:auto;max-height:44px;object-fit:contain}
@media(max-width:650px){.brand-logo{width:88px}.ucr-logo{width:86px}.brand-divider{margin-inline:-3px}.brand strong{font-size:14px}.brand small{font-size:9px;letter-spacing:.07em}}.brand-divider{height:32px;width:1px;background:#d9dee7}.brand-mark{border-radius:4px;background:#003DA5;color:#FFB81C}.intro-row h1,.section-heading h2{font-family:'Oswald',sans-serif;font-weight:600;letter-spacing:.01em}.metric-card strong,.coverage-line strong{font-family:'Oswald',sans-serif;font-weight:600}.button-primary{background:#003DA5}.button-primary:hover{background:#002e70}.tab.active{color:#002e70;border-color:#003DA5}.eyebrow{color:#003DA5}.method-note{border-left-color:#FFB81C}.badge.theme{background:#f3f0e8;color:#725a23}

/* Scraper source controls and brand header */
.brand{gap:5px}.brand-logo-link,.ucr-logo-link{display:flex;align-items:center;flex:0 0 auto}.brand-logo{width:116px;max-height:42px}.ucr-logo{width:42px;height:42px;max-height:none}.brand-divider{margin-inline:5px}.scrape-config{padding:15px 17px;margin-bottom:14px}.scrape-config-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:13px}.scrape-config-heading .subtle{margin:5px 0 0}.scrape-config .add-source{max-width:380px;min-width:260px}.source-list{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:13px}.source-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 6px 5px 11px;border:1px solid #d4dce8;border-radius:7px;background:#f6f8fb;color:#253957;font-size:12px;font-weight:600}.source-remove{display:grid;place-items:center;width:22px;height:22px;border:0;border-radius:5px;background:transparent;color:#526780;font-size:18px;line-height:1;padding:0}.source-remove:hover{background:#e5eaf2;color:#a13e3e}.source-empty{margin:0;color:#819194;font-size:12px}.select-control,.post-filters select,.toolbar select,#filters select{appearance:none;-webkit-appearance:none;padding-right:2.6rem!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23003DA5' stroke-width='1.7'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .85rem center;background-size:11px 7px}
@media(max-width:700px){.brand{gap:4px}.brand-logo{width:86px}.ucr-logo{width:34px;height:34px}.brand-divider{margin-inline:3px}.scrape-config-heading{align-items:stretch;flex-direction:column}.scrape-config-heading .button{align-self:flex-start}.scrape-config .add-source{max-width:none;min-width:0}.scrape-config{padding:13px}.source-list{gap:6px}}
.coverage-summary #classifyButton{margin-top:9px}
.posts-tools-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:stretch;gap:14px;margin-bottom:14px}.posts-tools-grid .scrape-config,.posts-tools-grid .classification-strip{height:100%;margin:0}.posts-tools-grid .classification-strip{grid-template-columns:1fr;align-content:start;gap:11px}.posts-tools-grid .classify-help{border-left:0;border-top:1px solid #e3ece9;padding:10px 0 0}.posts-tools-grid .coverage-summary #classifyButton{margin-top:8px}@media(max-width:740px){.posts-tools-grid{grid-template-columns:1fr}.posts-tools-grid .classification-strip{grid-template-columns:1fr 1fr}.posts-tools-grid .classify-help{grid-column:span 2}}@media(max-width:650px){.posts-tools-grid .classification-strip{grid-template-columns:1fr}.posts-tools-grid .classify-help{grid-column:auto}}

/* Browse directly from chart selections. */
.chart-wrap canvas{cursor:pointer}
.post-filters{display:grid;grid-template-columns:minmax(190px,1.5fr) repeat(5,minmax(125px,1fr)) auto;align-items:end}
.post-filters>div{min-width:0}
.post-filters input,.post-filters select{width:100%;min-width:0}
@media(max-width:1050px){.post-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.post-filters .search-wrap{grid-column:span 2}.check-control{align-self:end;padding-bottom:11px}}
@media(max-width:650px){.post-filters{grid-template-columns:1fr 1fr}.post-filters .search-wrap{grid-column:span 2}.post-filters>div:last-of-type{grid-column:auto}.check-control{grid-column:span 2}}
.post-image-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:10px;margin:10px 0 14px}
.post-image-gallery a{display:block;overflow:hidden;border:1px solid #dfe5ed;border-radius:9px;background:#f3f5f8}
.post-image-gallery img{display:block;width:100%;max-height:420px;object-fit:contain}
.post-image-gallery a.image-fallback{padding:14px;color:#31598f;font-size:12px;font-weight:700;text-decoration:none}

/* Slightly larger dashboard typography for readability (~10%). */
body{font-size:16.5px}
.brand strong{font-size:16.5px}.brand small{font-size:12.1px}
.live-indicator{font-size:13.2px}
.eyebrow,.field-label{font-size:11px}
.intro-row h1{font-size:clamp(30.8px,3.41vw,46.2px)}
.updated-block{font-size:13.2px}
.toolbar select[multiple]{font-size:13.2px}
.button{font-size:13.2px}.tab{font-size:14.3px}.tab-number{font-size:11px}
.section-heading h2{font-size:25.3px}.section-copy,.subtle{font-size:13.2px}
.metric-label{font-size:12.1px}.metric-card strong{font-size:28.6px}.metric-foot{font-size:11px}
.chart-heading h3{font-size:14.3px}.chart-heading p,.chart-key,.chart-note{font-size:11px}
.method-note,.map-footnote{font-size:12.1px}
.coverage-line strong{font-size:23.1px}.coverage-line span,.coverage-progress small,.coverage-help,.classify-help{font-size:11px}
.check-control{font-size:12.1px}.post-title{font-size:14.3px}.post-meta{font-size:11px}.badge{font-size:10px}
.mini-button{font-size:11px}.post-body{font-size:13.2px}.post-footer a,.class-hit{font-size:11px}
.source-chip{font-size:13.2px}.source-remove{font-size:19.8px}
.job-copy strong{font-size:12.1px}.job-copy span,.error-banner{font-size:12.1px}.job-progress small{font-size:10px}
.empty-state{font-size:13.2px}.footer{font-size:10px}
@media(max-width:650px){.brand strong{font-size:15.4px}.brand small{font-size:9.9px}.metric-card strong{font-size:24.2px}}

/* Keep the three mix charts level, with extra width for division labels. */
.chart-grid{grid-template-columns:minmax(0,.85fr) minmax(0,.85fr) minmax(0,1.3fr)}
.chart-card.wide{grid-column:1 / -1}
@media(max-width:900px){.chart-grid{grid-template-columns:1fr}.chart-card.wide{grid-column:auto}}
.report-panel .section-heading{align-items:center}
.report-frame-wrap{height:calc(100vh - 240px);min-height:680px;overflow:hidden;border:1px solid #d9dee7;border-radius:12px;background:#f6f7f9;box-shadow:var(--shadow);margin-top:14px}
.report-frame-wrap iframe{width:100%;height:100%;border:0;background:#f6f7f9}
@media(max-width:650px){.report-frame-wrap{height:calc(100vh - 210px);min-height:560px}}

/* The mapped-only checkbox shares the filter input rule; keep it checkbox-sized. */
.post-filters input[type="checkbox"]{width:15px;min-width:15px;max-width:15px;flex:0 0 15px;padding:0}
.post-filters .check-control{display:inline-flex;width:max-content;max-width:100%;align-items:center;gap:8px;white-space:nowrap}
.post-filters .check-control input[type="checkbox"]{margin:0}
@media(max-width:650px){.post-filters .check-control{grid-column:span 2;justify-self:start}}
