.isjh { --map-ink:#153b63; --map-line:#dce4ec; --map-muted:#56687b; color:#1b2c3d; margin:1.5rem 0 3rem; font-family:"Atkinson Next",system-ui,sans-serif; }
.isjh *, .isjh-admin * { box-sizing:border-box; }
.isjh-heading { display:flex; justify-content:space-between; align-items:center; gap:1rem; border-top:3px solid var(--map-ink); padding-top:1.25rem; }
.entry .isjh h2 { font-size:clamp(1.4rem,2.5vw,2rem); margin:.2rem 0 .65rem; }
.isjh-eyebrow { font-size:.8rem; text-transform:uppercase; letter-spacing:.06em; color:var(--map-muted); margin:0; }
.isjh-year { white-space:nowrap; color:var(--map-ink); background:#eaf0f7; padding:.45rem .7rem; border-radius:.3rem; font-weight:700; }
.isjh-description { color:var(--map-muted); font-size:.95rem; }
.isjh button, .isjh input, .isjh select { font:inherit; }
.isjh button { cursor:pointer; }
.isjh button:focus-visible, .isjh input:focus-visible, .isjh select:focus-visible, .isjh summary:focus-visible { outline:3px solid #e4a617; outline-offset:3px; }
.isjh-filters { border:1px solid var(--map-line); background:#f7f9fc; border-radius:.4rem; padding:1rem; }
.isjh-filters summary { cursor:pointer; color:var(--map-ink); font-weight:700; }
.isjh-filter-grid { display:grid; grid-template-columns:2fr 1.5fr 1.2fr 1fr; gap:1rem; padding-top:1rem; }
.isjh-filter-grid>label { display:flex; flex-direction:column; gap:.35rem; font-size:.9rem; font-weight:700; }
.isjh-filter-grid input[type=search],.isjh-filter-grid select { width:100%; min-height:44px; border:1px solid #aab8c8; border-radius:.25rem; padding:.55rem; background:#fff; color:#182d42; font-weight:400; }
.isjh-filter-grid fieldset { border:0; padding:0; margin:0; grid-column:span 3; display:flex; flex-wrap:wrap; gap:.6rem 1.5rem; align-items:center; }
.isjh-filter-grid legend { font-size:.85rem; font-weight:700; margin-bottom:.4rem; }
.isjh-filter-grid fieldset label { display:inline-flex; align-items:center; gap:.4rem; font-size:.9rem; min-height:32px; }
.isjh input[type=checkbox] { width:18px; height:18px; accent-color:#194d89; }
.isjh-secondary,.isjh-toolbar button { padding:.5rem .8rem; border:1px solid #b1c0cf; border-radius:.25rem; background:#fff; color:var(--map-ink); min-height:40px; align-self:end; }
.isjh-toolbar { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 0 0; margin-top:1rem; border-top:1px solid var(--map-line); }
.isjh-toolbar p { margin:0; font-size:.95rem; font-weight:700; }
.isjh button:disabled { cursor:default; opacity:.55; }
.isjh-layout { display:grid; grid-template-columns:minmax(0,1fr); border:1px solid var(--map-line); border-radius:.4rem; overflow:hidden; margin-top:1rem; }
.isjh-map-column { min-width:0; background:#f0f3f7; }
.isjh-map-frame { position:relative; isolation:isolate; }
.isjh-map-frame:fullscreen { background:#e7edf3; width:100%; height:100%; }
.isjh-map-frame:fullscreen .isjh-canvas { height:100%; }
.isjh-canvas { width:100%; height:600px; background:#e7edf3; }
.isjh-map-status { margin:0; padding:.65rem 1rem; font-size:.85rem; color:var(--map-muted); background:#fff; border-top:1px solid var(--map-line); }
.isjh-scroll-hint { margin:0; padding:.35rem 1rem .65rem; font-size:.8rem; color:var(--map-muted); background:#fff; }
.isjh-legend { position:absolute; z-index:3; left:12px; top:12px; width:min(270px,calc(100% - 76px)); padding:0; background:#fff; border:1px solid #b8c6d5; border-radius:.35rem; box-shadow:0 2px 10px #153b6326; color:#1b2c3d; }
.isjh-legend summary { cursor:pointer; font-weight:700; font-size:.9rem; padding:.7rem .8rem; }
.isjh-legend [data-role=category-count] { font-size:.8rem; color:var(--map-muted); white-space:nowrap; }
.isjh-legend-body { max-height:365px; max-height:min(365px,calc(100dvh - 220px)); overflow:auto; overscroll-behavior:contain; border-top:1px solid var(--map-line); padding:.65rem .75rem; touch-action:pan-y; }
.isjh-legend-actions { display:flex; flex-wrap:wrap; gap:.5rem; padding-bottom:.6rem; }
.isjh-legend-actions button { border:1px solid #b1c0cf; border-radius:.25rem; padding:.35rem .45rem; color:var(--map-ink); background:#f5f8fc; font-size:.75rem; min-height:32px; }
.entry .isjh-legend ul { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:1fr; gap:.2rem; }
.entry .isjh-legend li { margin:0; padding:0; font-size:.8rem; line-height:1.3; }
.isjh-legend label { display:flex; align-items:center; gap:.5rem; padding:.35rem 0; cursor:pointer; min-height:38px; }
.isjh-legend input[type=checkbox] { flex-shrink:0; margin:0; }
.isjh-legend .isjh-badge { width:24px; height:24px; font-size:10px; }
.isjh-legend .isjh-type-label { display:grid; grid-template-columns:18px minmax(0,1fr) auto; gap:.5rem; padding:.4rem 0; font-size:.8rem; }
.isjh-type-count { font-size:.75rem; color:var(--map-muted); font-weight:600; font-variant-numeric:tabular-nums; }
.isjh-type-group-row { display:grid; grid-template-columns:18px minmax(0,1fr) auto; align-items:center; gap:.5rem; }
.isjh-types-toggle { border:0; background:none; color:inherit; padding:.45rem 0; text-align:left; font-size:.8rem!important; min-height:36px; }
.isjh-types-toggle::before { content:'▸'; display:inline-block; width:1rem; }
.isjh-types-toggle[aria-expanded=true]::before { content:'▾'; }
.entry .isjh-other-types { margin:.25rem 0 0!important; padding:.25rem 0 0 1.4rem!important; border-top:1px solid var(--map-line); }
.isjh-badge { display:inline-flex; width:28px; height:28px; border-radius:50%; align-items:center; justify-content:center; flex-shrink:0; color:#fff; font-weight:700; font-size:11px; }
.isjh-directory { border-top:1px solid var(--map-line); background:#fff; min-width:0; }
.entry .isjh-directory h3 { font-size:1rem; margin:0; padding:1rem; border-bottom:1px solid var(--map-line); }
.entry .isjh-directory ol { padding:0; margin:0; list-style:none; }
.isjh-directory li { margin:0; padding:0; border-bottom:1px solid #e7ecf2; }
.isjh-directory li button { display:flex; align-items:flex-start; gap:.6rem; width:100%; border:0; background:#fff; padding:.85rem; text-align:left; color:#173a60; }
.isjh-directory li button:hover,.isjh-directory li button[aria-pressed=true] { background:#eef4fb; }
.isjh-directory strong { display:block; font-size:.9rem; line-height:1.35; }
.isjh-directory small { display:block; color:var(--map-muted); font-size:.8rem; margin-top:.25rem; }
.isjh [data-role=detail]:empty { display:none; }
.isjh [data-role=detail] { padding:1rem; background:#edf3fa; border-bottom:2px solid #315d9d; }
.entry .isjh h4 { font-size:1.05rem; margin:0 0 .5rem; }
.isjh [data-role=detail] p { font-size:.85rem; line-height:1.4; margin:.45rem 0; overflow-wrap:anywhere; }
.isjh-parent { border:0; padding:0; background:none; color:#194d89; text-decoration:underline; text-align:left; }
.isjh-position { font-size:.75rem!important; color:#4c6178; }
.isjh [data-role=empty] { padding:1rem; }
.isjh-source { font-size:.8rem; color:var(--map-muted); margin:.8rem 0; }
.isjh-popup-unit { display:block; width:100%; border:0; background:#f1f5fa; color:#153b63; padding:.6rem; margin:.4rem 0; cursor:pointer; text-align:left; }
.isjh .maplibregl-ctrl-attrib { font-size:10px; }
.isjh [hidden],.isjh-admin [hidden] { display:none!important; }
.isjh-admin { max-width:1250px; }
.isjh-admin-form { margin:1rem 0; }
.isjh-import,.isjh-editor { margin:1rem 0; padding:1rem; border:1px solid #c3c4c7; background:#fff; }
.isjh-import summary { cursor:pointer; }
.isjh-actions { display:flex; gap:1rem; }
.isjh-admin-map { height:400px; margin:1rem 0; background:#e7edf3; }
.isjh-admin #isjh-unit { max-width:min(75vw,800px); }
.isjh-report { margin-top:1rem; }
@media(max-width:1050px) { .isjh-filter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .isjh-filter-grid fieldset { grid-column:auto; } }
@media(max-width:700px) { .isjh-heading { align-items:flex-start; } .isjh-year { font-size:.8rem; } .isjh-filter-grid { grid-template-columns:1fr; } .isjh-canvas { height:440px; } .isjh-toolbar { align-items:flex-start; } .isjh-toolbar p { font-size:.85rem; } .isjh-toolbar button { font-size:.8rem; flex-shrink:0; } .isjh-legend { left:8px; top:8px; } .isjh-legend-body { max-height:270px; max-height:min(270px,calc(100dvh - 220px)); } }

.isjh-directory [data-unit] { scroll-margin-top:5rem; }
.isjh-directory li:has(> [aria-expanded=true]) { border-left:3px solid #315d9d; }

.isjh .isjh-warning { color:#92400e!important; font-weight:600; }

/* Compact filters, with full-size touch targets on phones. */
.isjh-filters { padding:.65rem .85rem; }
.isjh-filter-grid { gap:.5rem .8rem; padding-top:.55rem; }
.isjh-filter-grid>label { gap:.2rem; }
.isjh-filter-grid input[type=search],.isjh-filter-grid select { min-height:38px; padding:.35rem .5rem; }
.isjh-filter-grid legend { float:left; margin:0 .8rem 0 0; padding:0; line-height:32px; }
.isjh-secondary,.isjh-toolbar button { min-height:36px; padding:.3rem .65rem; }
.isjh-toolbar { gap:.65rem; padding-top:.5rem; margin-top:.5rem; }
.isjh-toolbar p { font-size:.85rem; }
@media(max-width:700px) {
    .isjh-filter-grid input[type=search],.isjh-filter-grid select,
    .isjh-secondary,.isjh-toolbar button { min-height:44px; }
    .isjh-filter-grid fieldset label { min-height:44px; }
    .isjh-filter-grid legend { float:none; line-height:1.4; }
}

.isjh-visible-legend { background:transparent; border:0; border-radius:.3rem; padding:.45rem .6rem; max-width:285px; max-height:230px; overflow:auto; color:#1b2c3d; box-shadow:none; }
.entry .isjh-visible-legend ul { list-style:none; margin:0; padding:0; display:grid; gap:.3rem; }
.isjh-visible-legend li { display:flex; gap:.45rem; align-items:center; font-size:.75rem; line-height:1.25; margin:0; padding:0; }
.isjh-visible-legend .isjh-badge { width:23px; height:23px; font-size:10px; }
@media(max-width:700px) { .isjh-visible-legend { max-width:235px; max-height:125px; } }

.isjh-visible-legend { max-width:min(470px,calc(100vw - 50px)); max-height:none; overflow:visible; padding:.3rem .4rem; }
.entry .isjh-visible-legend ul { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.2rem .7rem; }
.isjh-visible-legend li { gap:.35rem; font-size:.7rem; }
.isjh-visible-legend .isjh-badge { width:21px; height:21px; font-size:9px; }
.isjh-visible-toggle { display:none; }
@media(max-width:700px) {
    .isjh-visible-legend { max-width:235px; max-height:none; }
    .entry .isjh-visible-legend ul { grid-template-columns:minmax(0,1fr); }
    .isjh-visible-legend:not(.isjh-legend-expanded) li:nth-child(n+4) { display:none; }
    .isjh-visible-toggle { display:block; min-height:44px; border:0; padding:.25rem 0; background:transparent; color:#153b63; font-size:.75rem!important; text-decoration:underline; text-align:left; }
}

/* Size columns to their labels instead of stretching across the map. */
.entry .isjh-visible-legend ul { grid-template-columns:repeat(2,max-content); gap:.15rem .65rem; }
.isjh-visible-legend { width:max-content; }
@media(max-width:700px) { .entry .isjh-visible-legend ul { grid-template-columns:minmax(0,1fr); } }
