:root { color-scheme: dark; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: #071316; color: #f3f7f5; --glass: rgba(7, 19, 22, 0.84); --line: rgba(172, 209, 200, 0.18); --mint: #78e5c2; --muted: #9eb4af; }
* { box-sizing: border-box; }
html, body, .app-shell, #cesiumContainer { width: 100%; height: 100%; margin: 0; overflow: hidden; }
button, input { font: inherit; }
a { color: inherit; }
.app-shell { position: relative; background: radial-gradient(circle at 50% 45%, #173236, #071316 65%); }
#cesiumContainer { position: absolute; inset: 0; }
.cesium-viewer-bottom, .cesium-widget-credits { display: none !important; }
.topbar, .status-card, .control-dock, .metadata-strip { position: absolute; z-index: 2; border: 1px solid var(--line); background: var(--glass); backdrop-filter: blur(18px); box-shadow: 0 16px 50px rgba(0, 0, 0, 0.24); }
.topbar { top: 1rem; left: 1rem; right: 1rem; min-height: 4.25rem; display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 0.9rem; border-radius: 0.85rem; }
.brand { display: flex; gap: 0.75rem; align-items: center; }
.brand-mark { display: grid; place-items: center; width: 2.45rem; height: 2.45rem; border-radius: 0.55rem; background: var(--mint); color: #05231b; font-weight: 900; letter-spacing: -0.06em; }
.brand strong, .brand small, .capture-label span, .capture-label time, .status-card strong, .status-card small { display: block; }
.brand strong { font-size: 1rem; letter-spacing: 0.01em; }
.brand small { margin-top: 0.12rem; color: var(--muted); font-size: 0.76rem; letter-spacing: 0.12em; text-transform: uppercase; }
.capture-label { text-align: right; }
.capture-label span { color: var(--mint); font-size: 0.75rem; font-weight: 800; letter-spacing: 0.14em; }
.capture-label time { margin-top: 0.18rem; color: var(--muted); font-size: 0.75rem; }
.status-card { left: 1rem; bottom: 3.7rem; display: flex; gap: 0.7rem; align-items: center; padding: 0.7rem 0.85rem; border-radius: 0.75rem; }
.status-card strong { font-size: 0.84rem; }
.status-card small { margin-top: 0.16rem; max-width: 28rem; color: var(--muted); font-size: 0.76rem; }
.status-dot { width: 0.62rem; height: 0.62rem; border-radius: 50%; background: #f0b657; box-shadow: 0 0 0 0.3rem rgba(240, 182, 87, 0.12); }
.status-dot.ready { background: var(--mint); box-shadow: 0 0 0 0.3rem rgba(120, 229, 194, 0.12); }
.status-dot.error { background: #ff7a78; box-shadow: 0 0 0 0.3rem rgba(255, 122, 120, 0.12); }
.control-dock { right: 1rem; bottom: 3.7rem; width: 13rem; padding: 0.8rem; border-radius: 0.75rem; }
.control-dock button, .delivery-link { width: 100%; min-height: 2.6rem; border: 1px solid var(--line); border-radius: 0.5rem; background: rgba(255,255,255,0.06); color: inherit; cursor: pointer; }
.delivery-link { display: grid; place-items: center; margin-top: 0.6rem; text-decoration: none; }
.control-dock button:hover, .control-dock button:focus-visible, .delivery-link:hover, .delivery-link:focus-visible { border-color: var(--mint); outline: none; }
.control-dock label { display: flex; justify-content: space-between; margin: 0.75rem 0 0.35rem; color: var(--muted); font-size: 0.78rem; }
.control-dock output { color: #f3f7f5; }
.control-dock input { width: 100%; accent-color: var(--mint); }
.control-dock button:last-child { margin-top: 0.75rem; }
.metadata-strip { left: 1rem; right: 1rem; bottom: 1rem; min-height: 2.2rem; display: flex; gap: 1.25rem; align-items: center; padding: 0.45rem 0.75rem; border-radius: 0.65rem; color: var(--muted); font-size: 0.72rem; }
.metadata-strip span:last-child { margin-left: auto; }
@media (max-width: 680px) { .topbar { top: 0.65rem; left: 0.65rem; right: 0.65rem; } .brand small { letter-spacing: 0.08em; } .status-card { left: 0.65rem; right: 0.65rem; bottom: 7.3rem; } .control-dock { left: 0.65rem; right: 0.65rem; bottom: 3.4rem; width: auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.45rem; align-items: center; } .control-dock label { margin: 0; } .control-dock input { position: absolute; opacity: 0; pointer-events: none; } .control-dock button:last-of-type, .delivery-link { margin: 0; } .delivery-link { font-size: 0.78rem; text-align: center; } .metadata-strip { left: 0.65rem; right: 0.65rem; bottom: 0.65rem; justify-content: space-between; } .metadata-strip span:nth-child(2) { display: none; } }

/* Master facility layer system */
html, body, .app-shell, .viewport { width: 100%; height: 100%; margin: 0; overflow: hidden; }
.viewport { position: absolute; inset: 0; }
.is-hidden { display: none !important; }
#mapContainer { background: #0b1719; }
.ol-zoom { top: 6.25rem; right: 1rem; left: auto; }
.ol-control button { background: rgba(7, 19, 22, 0.9); color: #f3f7f5; }
.ol-scale-bar { right: 1rem; left: auto; bottom: 3.8rem; }
.topbar { z-index: 5; }
.icon-button, .close-button { border: 1px solid var(--line); background: rgba(255,255,255,.06); color: inherit; cursor: pointer; }
.icon-button { min-width: 5rem; min-height: 2.5rem; border-radius: .55rem; font-size: .78rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.close-button { width: 2rem; height: 2rem; border-radius: .45rem; font-size: 1.2rem; line-height: 1; }
.icon-button:hover, .icon-button:focus-visible, .close-button:hover, .close-button:focus-visible { border-color: var(--mint); outline: none; }
.brand { position: absolute; left: 50%; transform: translateX(-50%); }
.layer-panel { position: absolute; z-index: 4; top: 6rem; left: 1rem; bottom: 3.7rem; width: min(24rem, calc(100vw - 2rem)); padding: 1rem; overflow: auto; border: 1px solid var(--line); border-radius: .85rem; background: rgba(7,19,22,.94); backdrop-filter: blur(20px); box-shadow: 0 18px 55px rgba(0,0,0,.35); transform: translateX(calc(-100% - 2rem)); transition: transform .22s ease; }
.layer-panel.is-open { transform: translateX(0); }
.panel-heading { display: flex; justify-content: space-between; align-items: flex-start; }
.eyebrow { margin: 0 0 .25rem; color: var(--mint); font-size: .68rem; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.panel-heading h1 { margin: 0; font-size: 1.25rem; }
.panel-intro { margin: .7rem 0 1rem; color: var(--muted); font-size: .8rem; line-height: 1.45; }
.capture-group { border-top: 1px solid var(--line); }
.capture-group:last-child { border-bottom: 1px solid var(--line); }
.capture-group summary { display: flex; align-items: center; justify-content: space-between; padding: .8rem .1rem; cursor: pointer; list-style: none; }
.capture-group summary::-webkit-details-marker { display: none; }
.capture-group summary strong, .capture-group summary small, .layer-button strong, .layer-button small, .reserved-layer strong, .reserved-layer small { display: block; }
.capture-group summary strong { font-size: .88rem; }
.capture-group summary small { margin-top: .12rem; color: var(--muted); font-size: .7rem; }
.layer-count { min-width: 2.4rem; padding: .2rem .38rem; border-radius: 999px; background: rgba(120,229,194,.1); color: var(--mint); text-align: center; font-size: .65rem; font-weight: 800; text-transform: uppercase; }
.capture-description { margin: -.15rem 0 .7rem; color: var(--muted); font-size: .73rem; line-height: 1.4; }
.capture-layers { display: grid; gap: .4rem; padding-bottom: .8rem; }
.layer-button { display: grid; grid-template-columns: 2rem 1fr auto; gap: .65rem; align-items: center; width: 100%; padding: .55rem; border: 1px solid transparent; border-radius: .58rem; background: rgba(255,255,255,.04); color: inherit; text-align: left; cursor: pointer; }
.layer-button:hover, .layer-button:focus-visible { border-color: rgba(120,229,194,.45); outline: none; }
.layer-button.is-active { border-color: var(--mint); background: rgba(120,229,194,.1); }
.layer-glyph, .reserved-layer > span { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: .45rem; background: rgba(120,229,194,.12); color: var(--mint); font-size: .65rem; font-weight: 900; }
.layer-button strong { font-size: .78rem; }
.layer-button small { margin-top: .12rem; color: var(--muted); font-size: .67rem; }
.layer-view { color: var(--muted); font-size: .58rem; font-weight: 900; letter-spacing: .1em; }
.reserved-layer { display: flex; gap: .65rem; align-items: center; padding: .55rem; color: var(--muted); }
.reserved-layer p { margin: 0; }
.reserved-layer strong { color: #dce8e5; font-size: .76rem; }
.reserved-layer small { margin-top: .12rem; font-size: .67rem; }
.layer-panel .delivery-link { position: sticky; bottom: 0; background: #173832; color: #eafff8; }
.source-panel { position: absolute; inset: 0; z-index: 1; display: grid; place-content: center; justify-items: center; padding: 2rem; background: radial-gradient(circle at center, #173236, #071316 68%); text-align: center; }
.source-panel .source-icon { display: grid; place-items: center; width: 4rem; height: 4rem; margin-bottom: 1rem; border: 1px solid rgba(120,229,194,.35); border-radius: 50%; color: var(--mint); font-size: 1.7rem; }
.source-panel h2 { margin: .2rem 0 .5rem; font-size: clamp(1.5rem, 3vw, 2.4rem); }
.source-panel > p:not(.eyebrow) { max-width: 38rem; margin: 0 0 1.25rem; color: var(--muted); line-height: 1.55; }
.primary-action { display: inline-grid; place-items: center; min-height: 2.8rem; padding: 0 1rem; border-radius: .55rem; background: var(--mint); color: #05231b; font-weight: 850; text-decoration: none; }
.status-card { z-index: 3; }
.control-dock { z-index: 3; }
.metadata-strip { z-index: 3; }
.control-dock #qualityControl label { margin-top: .75rem; }

@media (max-width: 680px) {
  .brand { position: static; transform: none; }
  .brand-mark { display: none; }
  .icon-button { min-width: 4rem; }
  .layer-panel { top: 5.6rem; left: .65rem; bottom: 3.4rem; width: calc(100vw - 1.3rem); }
  .control-dock { grid-template-columns: repeat(3, 1fr); }
  .control-dock #qualityControl { display: none; }
  .source-panel { padding: 6rem 1.25rem 9rem; }
}
+

/* JS Imaging Design & Delivery Standard v1.0 — PAD consistency release 2026-10-08 */
:root {
  --mint:#77cbb5;
  --warning:#e6b866;
}
body {
  font-size:14px;
}
body button:focus-visible,
body a:focus-visible,
body select:focus-visible,
body input:focus-visible,
body textarea:focus-visible,
body summary:focus-visible {
  outline:2px solid var(--warning)!important;
  outline-offset:2px!important;
}
.field label,
.metadata-strip,
.toolbox-title,
.model-tools label,
.annotation-register-heading p:last-child {
  font-size:12px;
}
.field select,.button,
.quick-tools button,.quick-tools a,
.view-switcher button,
.general-toolbox button,.model-tools button,
.map-tool-menu summary,
.feedback-actions button,.feedback-thanks button,
.layer-object-tree-actions button,
.detail-video-actions button,
.thermal-panel-heading button,
.thermal-view-controls button,.thermal-navigation button,
.media-library-tabs button,.media-view-controls button,
.media-view-controls label,
.media-current-meta>a,.media-photo-sets a,
.media-photo-gallery article>div>a,
.annotation-register-actions button,
.close-button,.modal-close {
  min-height:44px;
}
.field select,.button { height:44px; font-size:14px; }
.quick-tools button,.quick-tools a { height:44px; font-size:13px; }
.view-switcher button { min-height:44px; font-size:13px; }
.general-toolbox button,.model-tools button,.map-tool-menu summary { font-size:13px; }
.layer-button.is-active,
.view-switcher button.is-active,
.media-library-tabs button[aria-selected="true"],
.media-view-controls button.is-active {
  border-color:var(--mint);
  background:#193129;
  color:var(--paper);
}
.thermal-warning,.thermal-footnote {
  border-left-color:var(--warning);
  background:#2a2316;
  color:#f0dfb9;
}
.modal-card p,.modal-card dd,.legal-copy p { font-size:16px; }
.standard-link a { display:inline-flex; align-items:center; min-height:44px; }
.annotation-register-logo { display:block; flex:0 0 auto; width:120px; height:58px; object-fit:contain; }
.print-export-header,.print-export-footer { display:none; }

@media print {
  body.print-preparing .print-export-header {
    position:fixed;
    z-index:20;
    top:.14in;
    left:.22in;
    right:.22in;
    display:flex!important;
    align-items:center;
    gap:.16in;
    min-height:.55in;
    padding:0 0 .08in;
    border-bottom:2px solid #111418;
    color:#111418;
    background:#fff;
  }
  body.print-preparing .print-export-header img {
    width:1.12in;
    height:.54in;
    object-fit:contain;
    background:#111418;
  }
  body.print-preparing .print-export-header>div { display:grid; gap:2px; }
  body.print-preparing .print-export-header strong { font:500 18pt/1 "Source Serif 4",Georgia,serif; }
  body.print-preparing .print-export-header span { font:600 8pt/1.25 "IBM Plex Sans",sans-serif; color:#444; }
  body.print-preparing .print-export-header dl {
    display:flex;
    gap:.2in;
    margin:0 0 0 auto;
    font:600 7pt/1.25 "IBM Plex Sans",sans-serif;
  }
  body.print-preparing .print-export-header dl div { display:grid; gap:2px; }
  body.print-preparing .print-export-header dt { color:#666; text-transform:uppercase; }
  body.print-preparing .print-export-header dd { margin:0; color:#111418; }
  body.print-preparing .print-view-snapshot {
    inset:.82in .22in .42in!important;
    width:calc(100% - .44in)!important;
    height:calc(100% - 1.24in)!important;
    background:#111418!important;
  }
  body.print-preparing .print-export-footer {
    position:fixed;
    z-index:20;
    right:.22in;
    bottom:.12in;
    left:.22in;
    display:block!important;
    color:#444;
    background:#fff;
    font:600 7pt/1.25 "IBM Plex Sans",sans-serif;
  }
  body.annotation-register-print .annotation-register-logo {
    width:1.12in!important;
    height:.54in!important;
    object-fit:contain!important;
    background:#111418!important;
  }
  body.annotation-register-print .annotation-register-heading {
    display:grid!important;
    grid-template-columns:auto 1fr!important;
    column-gap:.16in!important;
  }
}

@media(max-width:720px) {
  body.measurement-placement .status-card { max-width:280px; }
  body.measurement-placement .status-card.is-compact small { display:block; font-size:12px; line-height:1.3; }
  .topbar { min-height:58px; padding:5px max(8px,env(safe-area-inset-right)) 5px max(8px,env(safe-area-inset-left)); }
  .brand-logo { width:96px; height:48px; }
  body.mobile-project-open .topbar .controls { top:66px; }
  body.mobile-project-open .field label { font-size:12px; }
  body.mobile-project-open .field select { height:44px; font-size:14px; }
  .view-switcher { bottom:96px; }
  .view-switcher button { min-height:44px; font-size:13px; }
  .layer-panel { top:66px; bottom:40px; }
  .quick-tools { bottom:96px; }
  .quick-tools button,.quick-tools a { min-height:44px; padding:0 6px; font-size:12px; }
  .general-toolbox,.model-tools { bottom:96px; }
  .general-toolbox button,.model-tools button { min-height:44px; font-size:12px; }
  .map-tool-menu summary { min-height:44px; font-size:12px; }
  .map-tool-menu-panel { bottom:176px; }
  .status-card { top:66px; }
  .metadata-strip { min-height:36px; font-size:12px; }
  .detail-video-panel { top:66px; }
  .media-library { padding-top:66px; padding-bottom:96px; }
  .media-library-tabs button,.media-view-controls button,.media-view-controls label { min-height:44px; font-size:13px; }
  .annotation-register-heading { display:grid; grid-template-columns:auto 1fr; gap:10px; }
  .annotation-register-logo { width:96px; height:48px; }
  .annotation-register-actions { grid-column:1/-1; }
  .layer-object-tree { bottom:96px; }
  .layer-object-tree-actions button { min-height:44px; font-size:11px; }
  .annotation-info-popover { bottom:96px!important; }
  .mobile-primary-controls { min-height:60px; }
  .mobile-primary-controls button { min-height:44px; font-size:12px; }
  .ol-scale-bar { bottom:96px; }
}

/* JS Imaging 2.0 approved typography — licensed Adobe Fonts kit aom3ark */
html,body,.app-shell {
  font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif;
}
body {
  font-size:16px;
  font-weight:400;
}
button,select,input,textarea,.button,.quick-tools button,.quick-tools a,.view-switcher button,.general-toolbox button,.model-tools button,.map-tool-menu summary,.layer-button,.download-button {
  font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif;
  font-weight:600;
}
h1,h2,h3,
.panel-heading h1,.source-panel h2,.modal-card h2,
.media-library-heading h2,.media-source-note strong,
.annotation-register-heading h2,.detail-video-heading h2 {
  font-family:"ivypresto-display","Source Serif 4",Georgia,serif;
  font-style:normal;
  font-weight:300;
  letter-spacing:-.012em;
}
.panel-intro,.capture-description,.help-grid dd,.legal-copy p,
.media-library-intro,.media-source-note p,.media-current-meta p:not(.eyebrow),
.media-photo-sets p,.media-photo-gallery p,.annotation-register-summary {
  font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif;
  font-size:16px;
  font-weight:400;
}
.status-card strong,.status-card small,.layer-button strong,.layer-button small,
.annotation-info-popover,.object-editor-card,.feedback-card {
  font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif;
}
.eyebrow,.subhead,.field label,.date,.metadata-strip,.toolbox-title,
.model-tools label,.scope-badge,.layer-view,.annotation-register-heading p:last-child,
.annotation-table th,.annotation-table td:first-child,.annotation-table td:last-child,
.media-view-controls>div>span,.media-current-meta dt,.thermal-meta dt {
  font-family:"IBM Plex Mono",monospace;
}
@media print {
  body.print-preparing .print-export-header strong,
  body.annotation-register-print .annotation-register-heading h2 {
    font-family:"ivypresto-display","Source Serif 4",Georgia,serif!important;
    font-weight:300!important;
  }
  body.print-preparing .print-export-header span,
  body.print-preparing .print-export-header dl,
  body.print-preparing .print-export-footer,
  body.annotation-register-print {
    font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif!important;
  }
}



/* JS Imaging canonical web-viewer format — derived from the Prairie/Campus delivery family. */
:root { --ink:#111418; --panel:#171b20; --line:#353b42; --paper:#f5f2ea; --muted:#aeb5bb; --accent:#d2a85e; --mint:#7fd2b6; color-scheme:dark; background:var(--ink); color:var(--paper); font-family:"IBM Plex Sans",Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
body { background:var(--ink); color:var(--paper); font:14px/1.35 "IBM Plex Sans",Inter,ui-sans-serif,system-ui,sans-serif; }
button,select,input { font:inherit; }
.app-shell { background:#24272a; }
.topbar { top:0; left:0; right:0; min-height:68px; padding:7px max(14px,env(safe-area-inset-right)) 7px max(14px,env(safe-area-inset-left)); border:0; border-bottom:1px solid var(--line); border-radius:0; background:rgba(17,20,24,.96); box-shadow:0 4px 22px #0007; backdrop-filter:none; }
.brand { position:static; transform:none; min-width:max-content; }
.brand-logo { display:block; width:116px; height:54px; object-fit:contain; }
.controls { display:flex; align-items:end; gap:10px; margin-left:auto; }
.field { display:grid; gap:3px; }
.field label { color:var(--muted); font-size:9px; letter-spacing:.13em; text-transform:uppercase; }
.field select,.button { height:38px; border:1px solid var(--line); border-radius:2px; background:#20252b; color:var(--paper); padding:0 34px 0 11px; font:600 12px/1.2 "IBM Plex Sans",sans-serif; }
.annotation-field select { min-width:190px; }
.button { padding:0 12px; cursor:pointer; }
.button:hover,.button:focus-visible,.field select:focus-visible { border-color:var(--accent); outline:none; }
.date { position:absolute; z-index:901; right:14px; top:calc(100% + 12px); padding:7px 9px; border:1px solid #ffffff20; background:#111418d9; color:var(--accent); font:600 10px/1.2 "IBM Plex Mono",monospace; white-space:nowrap; pointer-events:none; }
.capture-label { display:none; }
.layer-panel { top:80px; bottom:42px; left:12px; width:min(390px,calc(100vw - 24px)); padding:16px; border:1px solid var(--accent); border-radius:0; background:#111418f5; box-shadow:0 18px 60px #000d; backdrop-filter:none; }
.panel-heading h1,.source-panel h2,.modal-card h2 { font:500 22px/1.1 "Source Serif 4",Georgia,serif; }
.eyebrow,.subhead { color:var(--accent); font:600 9px/1.2 "IBM Plex Mono",monospace; letter-spacing:.15em; text-transform:uppercase; }
.panel-intro,.capture-description,.layer-button small { color:var(--muted); }
.close-button,.modal-close { border:1px solid var(--line); border-radius:0; background:#20252b; color:var(--paper); }
.capture-group { border-color:var(--line); }
.layer-count { background:#2a2419; color:var(--accent); }
.layer-button { border-radius:2px; background:#1b2025; }
.layer-button:hover,.layer-button:focus-visible,.layer-button.is-active { border-color:var(--accent); background:#28241c; }
.layer-glyph,.reserved-layer > span { border-radius:2px; background:#2a2419; color:var(--accent); }
.layer-panel .delivery-link,.primary-action { border-radius:2px; border-color:var(--accent); background:var(--accent); color:var(--ink); }
.status-card { left:12px; bottom:108px; transform:none; max-width:min(430px,calc(100% - 24px)); padding:8px 12px; border:1px solid #ffffff24; border-radius:0; background:#111418e8; box-shadow:0 4px 18px #0008; }
.status-dot { background:var(--accent); box-shadow:none; }
.status-dot.ready { background:var(--mint); box-shadow:none; }
.status-card strong { font-size:12px; }
.status-card small { color:var(--muted); font-size:10px; }
.metadata-strip { left:0; right:0; bottom:0; min-height:32px; padding:6px 12px; border:0; border-top:1px solid var(--line); border-radius:0; background:#111418e8; box-shadow:none; color:var(--muted); font:500 9px/1.2 "IBM Plex Mono",monospace; letter-spacing:.04em; text-transform:uppercase; }
.quick-tools { position:absolute; z-index:902; right:10px; top:118px; display:flex; gap:6px; }
.mobile-primary-controls { display:none; }
.quick-tools button,.quick-tools a { display:grid; place-items:center; height:36px; border:1px solid #ffffff2b; border-radius:0; background:#111418e8; color:var(--paper); padding:0 11px; box-shadow:0 3px 12px #0008; font:700 11px/1 "IBM Plex Sans",sans-serif; text-decoration:none; cursor:pointer; }
.quick-tools button:hover,.quick-tools button:focus-visible,.quick-tools button.is-active,.quick-tools a:hover,.quick-tools a:focus-visible { border-color:var(--accent); color:#f4d99d; outline:none; }
.quick-tools button.is-saved { border-color:var(--mint); color:#baf3df; }
.quick-tools button.is-error { border-color:#d97676; color:#ffd0d0; }
.quick-tools button:disabled { cursor:wait; opacity:.72; }
.view-switcher { position:absolute; z-index:903; top:80px; left:12px; display:flex; gap:3px; padding:4px; border:1px solid var(--accent); background:#111418ed; box-shadow:0 5px 20px #0009; }
.view-switcher[hidden] { display:none; }
.view-switcher button { min-height:34px; padding:0 12px; border:1px solid var(--line); border-radius:0; background:#1b2127; color:var(--muted); font:700 10px/1 "IBM Plex Sans",sans-serif; cursor:pointer; }
.view-switcher button:hover,.view-switcher button:focus-visible,.view-switcher button.is-active { border-color:var(--accent); background:#332b1e; color:var(--paper); outline:none; }
.general-toolbox,.model-tools { position:absolute; z-index:850; top:164px; right:10px; bottom:42px; display:flex; flex-direction:column; align-items:stretch; gap:3px; width:160px; max-width:calc(100vw - 20px); padding:5px; overflow:auto; border:1px solid #596169; background:#101419ed; box-shadow:0 8px 24px #0008; }
.toolbox-title { display:flex; align-items:center; padding:0 9px; color:#8e999f; font:800 9px/1 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.general-toolbox button,.model-tools button { min-width:70px; border:1px solid #353c43; border-radius:0; background:#1b2127; color:#e1e5e8; padding:6px 9px; font:700 10px/1.15 "IBM Plex Sans",sans-serif; cursor:pointer; }
.general-toolbox button:hover,.general-toolbox button.is-active,.model-tools button:hover,.model-tools button.is-active { border-color:var(--mint); background:#193129; color:#e4fff6; }
.viewport.is-measuring canvas { cursor:crosshair!important; }
.general-toolbox button:disabled { cursor:not-allowed; opacity:.62; }
.measurement-unavailable-note { display:block; padding:5px 7px; border-left:2px solid #67717a; color:#c2c8cc; font:500 10px/1.35 "IBM Plex Sans",sans-serif; }
.general-toolbox b { display:block; margin-bottom:2px; color:var(--mint); font-size:15px; }
.specialty-map-tools { display:flex; flex-direction:column; gap:3px; }
.map-tool-menu { position:relative; display:block; }
.map-tool-menu summary { display:grid; place-items:center; width:100%; min-width:82px; padding:6px 9px; border:1px solid #353c43; background:#1b2127; color:#e1e5e8; font:700 10px/1.15 "IBM Plex Sans",sans-serif; cursor:pointer; list-style:none; }
.map-tool-menu summary::-webkit-details-marker { display:none; }
.map-tool-menu[open] summary,.map-tool-menu summary:hover,.map-tool-menu summary:focus-visible { border-color:var(--mint); background:#193129; color:#e4fff6; outline:none; }
.map-tool-menu-panel { position:fixed; top:164px; right:180px; bottom:42px; display:grid; grid-template-columns:1fr; align-content:start; gap:4px; width:min(360px,calc(100vw - 200px)); max-height:none; overflow:auto; padding:8px; border:1px solid var(--mint); background:#101419f7; box-shadow:0 14px 44px #000d; }
.map-tool-menu-panel button { display:flex; align-items:center; gap:8px; min-width:0; text-align:left; }
.map-tool-menu-panel button b { flex:0 0 18px; margin:0; text-align:center; }
.map-tool-menu-panel button span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.model-tools { border-color:var(--accent); }
.model-tools label { display:grid; min-width:130px; padding:3px 8px; color:var(--muted); font:600 9px/1.2 "IBM Plex Mono",monospace; text-transform:uppercase; }
.model-tools input { width:100%; accent-color:var(--accent); }
.scope-badge { position:absolute; z-index:902; left:50%; top:80px; transform:translateX(-50%); padding:6px 9px; border:1px solid #ffffff26; background:#111418e8; color:var(--muted); font:600 9px/1.2 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; pointer-events:none; white-space:nowrap; }
.modal { position:absolute; z-index:1200; inset:0; display:grid; place-items:center; padding:16px; background:#080a0dd1; }
.modal[hidden] { display:none; }
.modal-card { width:min(680px,100%); max-height:min(760px,calc(100dvh - 32px)); overflow:auto; border:1px solid var(--accent); background:#111418; box-shadow:0 18px 70px #000e; padding:20px; }
.modal-close { float:right; width:34px; height:34px; font-size:20px; }
.modal-card h2 { margin:0 0 6px; }
.modal-card .subhead { margin:0 0 18px; }
.help-grid { display:grid; grid-template-columns:auto 1fr; gap:10px 12px; margin:0; }
.help-grid dt { color:var(--accent); font-weight:800; }
.help-grid dd { margin:0; color:#d6d9dc; }
.legal-copy { margin-top:20px; padding-top:16px; border-top:1px solid var(--line); }
.legal-copy h3 { margin:0 0 10px; color:var(--accent); font:600 11px/1.2 "IBM Plex Mono",monospace; letter-spacing:.12em; text-transform:uppercase; }
.legal-copy p { margin:0 0 9px; color:#c9ced1; font-size:12px; line-height:1.5; }
.modal-note { margin:18px 0 0; padding:14px 0 0; border-top:1px solid var(--line); color:var(--muted); font-size:12px; }
.standard-link { margin:12px 0 0; }
.standard-link a { color:var(--accent); }
.feedback-card { width:min(500px,100%); }
.feedback-card .eyebrow { margin:0 0 8px; color:var(--accent); font:700 9px/1.2 "IBM Plex Mono",monospace; letter-spacing:.14em; text-transform:uppercase; }
.feedback-card form { display:grid; gap:9px; margin-top:18px; }
.feedback-card label { color:#dfe3e5; font-size:13px; font-weight:700; }
.feedback-card textarea { width:100%; min-height:150px; resize:vertical; border:1px solid #48515a; border-radius:2px; background:#0c0f12; color:var(--paper); padding:11px 12px; font:400 14px/1.5 "IBM Plex Sans",sans-serif; }
.feedback-card textarea:focus { border-color:var(--accent); outline:2px solid #d7ad5940; outline-offset:1px; }
.feedback-actions { display:flex; justify-content:flex-end; gap:7px; margin-top:6px; }
.feedback-actions button,.feedback-thanks button { min-height:36px; border:1px solid #48515a; border-radius:2px; background:#20252b; color:var(--paper); padding:0 14px; font-weight:700; cursor:pointer; }
.feedback-actions button.primary,.feedback-thanks button.primary { border-color:var(--accent); background:var(--accent); color:var(--ink); }
.feedback-actions button:disabled { cursor:wait; opacity:.68; }
.feedback-error { margin:0; color:#ffc4c4; font-size:12px; }
.feedback-thanks { padding:14px 0 4px; }
.feedback-thanks p:not(.eyebrow) { color:#d2d7da; line-height:1.55; }
.feedback-thanks button { margin-top:10px; }
.feedback-trap { position:absolute!important; left:-10000px!important; width:1px!important; height:1px!important; overflow:hidden!important; }
.source-panel { background:radial-gradient(circle at center,#242a2d,#111418 70%); }
.source-panel .source-icon { border-color:var(--accent); border-radius:50%; color:var(--accent); }
.ol-control button { border-radius:0; background:#20252b; color:var(--paper); }
.ol-scale-bar { bottom:42px; }
.ol-scale-text { font-family:"IBM Plex Mono",monospace; }
body.mode-cesium .general-toolbox,body.mode-source .general-toolbox { display:none; }
body.mode-geotiff .model-tools,body.mode-source .model-tools { display:none!important; }
body.mode-cesium .layer-object-tree,body.mode-source .layer-object-tree,body.mode-media .layer-object-tree { display:none; }
body.mode-cesium.thermal-annotation-active .layer-object-tree { display:block; }
body.mode-source .scope-badge { display:block; }

.layer-object-tree { position:absolute; z-index:890; left:12px; top:130px; width:min(330px,calc(100vw - 24px)); max-height:min(58vh,560px); border:1px solid #ffffff2d; background:#111418f3; box-shadow:0 12px 38px #000b; overflow:hidden; }
.layer-panel.is-open ~ .layer-object-tree { display:none; }
.layer-object-tree-toggle { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; padding:10px 11px; border:0; border-bottom:1px solid var(--line); background:#181d22; color:var(--paper); text-align:left; cursor:pointer; }
.layer-object-tree-toggle:hover,.layer-object-tree-toggle:focus-visible { background:#22282e; outline:1px solid var(--accent); outline-offset:-1px; }
.layer-object-tree-toggle span:first-child { display:grid; gap:2px; min-width:0; }
.layer-object-tree-toggle small { color:var(--muted); font:600 8px/1.2 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.layer-object-tree-toggle strong { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.layer-object-tree-count { display:grid; place-items:center; flex:0 0 28px; min-height:24px; border:1px solid #ffffff25; color:var(--accent); font:700 10px/1 "IBM Plex Mono",monospace; }
.layer-object-tree-body { max-height:calc(min(58vh,560px) - 54px); overflow:auto; padding:7px; }
.layer-object-tree.is-collapsed .layer-object-tree-toggle { border-bottom:0; }
.layer-object-tree.is-collapsed .layer-object-tree-body { display:none; }
.layer-object-tree-empty { margin:0; padding:16px 9px; color:var(--muted); font-size:12px; text-align:center; }
.layer-object-tree-summary { display:flex; flex-wrap:wrap; gap:4px; padding:2px 2px 8px; }
.layer-object-tree-summary span { border:1px solid #3a444c; background:#151b20; color:#d7dcdf; padding:5px 7px; font-size:9px; line-height:1.2; }
.all-annotations-readonly { display:block; padding:7px; border:1px solid #4c5660; background:#171d22; color:#d7dcdf; font:600 10px/1.35 "IBM Plex Sans",sans-serif; }
.general-toolbox.is-summary-readonly button:disabled { opacity:.38; }
.layer-object-tree-item { margin-bottom:6px; border:1px solid #343a40; background:#181d22; }
.layer-object-tree-item:last-child { margin-bottom:0; }
.layer-object-tree-item.is-selected { border-color:var(--accent); box-shadow:inset 3px 0 0 var(--accent); }
.layer-object-tree-item-heading { display:grid; gap:2px; width:100%; padding:9px 10px 7px; border:0; background:transparent; color:var(--paper); text-align:left; cursor:pointer; }
.layer-object-tree-item-heading:hover,.layer-object-tree-item-heading:focus-visible { background:#ffffff09; outline:none; }
.layer-object-tree-item-heading strong { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.layer-object-tree-item-heading small { overflow:hidden; color:var(--muted); font:500 9px/1.35 "IBM Plex Mono",monospace; text-overflow:ellipsis; white-space:nowrap; }
.layer-object-tree-item > p { margin:0; padding:0 10px 8px; color:#cbd1d4; font-size:11px; line-height:1.4; }
.layer-object-tree-actions { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:3px; padding:0 6px 6px; }
.layer-object-tree-actions button { min-width:0; min-height:28px; padding:4px 3px; border:1px solid #3b4249; background:#22282e; color:#dfe3e5; font-size:8.5px; font-weight:700; cursor:pointer; }
.layer-object-tree-actions button:hover,.layer-object-tree-actions button:focus-visible { border-color:var(--mint); color:#eafff8; outline:none; }
.layer-object-tree-actions button:last-child:hover,.layer-object-tree-actions button:last-child:focus-visible { border-color:#d97676; color:#ffd0d0; }

.object-editor { position:absolute; z-index:1300; inset:0; display:grid; place-items:center; padding:16px; background:#080a0dd1; }
.object-editor[hidden] { display:none; }
.object-editor-card { width:min(480px,100%); border:1px solid var(--accent); background:#111418; box-shadow:0 18px 70px #000e; padding:18px; }
.object-editor-card header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
.object-editor-card h2 { margin:0; font:500 22px/1.1 "Source Serif 4",Georgia,serif; }
.object-editor-card > label { display:block; margin:12px 0 5px; color:var(--accent); font:600 9px/1.2 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.object-editor-card input,.object-editor-card textarea { width:100%; border:1px solid var(--line); border-radius:0; background:#20252b; color:var(--paper); padding:9px 10px; font-size:14px; }
.object-editor-appearance { margin:0; padding:13px; border:1px solid var(--mint); background:#16211e; box-shadow:inset 3px 0 0 var(--mint); }
.object-editor-appearance legend { padding:0 7px; color:var(--mint); font:700 10px/1.2 "IBM Plex Mono",monospace; letter-spacing:.1em; text-transform:uppercase; }
.object-editor-appearance label { display:block; margin:8px 0 5px; color:var(--paper); font-size:12px; font-weight:800; }
.object-editor-appearance small { display:block; margin:6px 0 10px; color:#b9c8c3; font-size:10px; line-height:1.4; }
.object-editor-appearance input[type="color"] { width:100%; height:42px; padding:4px; cursor:pointer; }
.object-editor-card textarea { resize:vertical; line-height:1.45; }
.object-editor-card input:focus,.object-editor-card textarea:focus { border-color:var(--mint); outline:none; }
.object-editor-card > p { margin:10px 0 0; color:var(--muted); font:500 9px/1.4 "IBM Plex Mono",monospace; }
.object-editor-actions { display:flex; justify-content:flex-end; gap:7px; margin-top:18px; }
.object-editor-actions button { min-height:36px; padding:0 12px; border:1px solid var(--line); background:#20252b; color:var(--paper); font-weight:700; cursor:pointer; }
.object-editor-actions button:hover,.object-editor-actions button:focus-visible { border-color:var(--accent); outline:none; }
.object-editor-actions button.primary { border-color:var(--mint); background:#193129; color:#e4fff6; }

.annotation-info-popover { --annotation-color:var(--mint); position:absolute; z-index:1120; width:min(310px,calc(100vw - 16px)); border:1px solid var(--annotation-color); background:#111418f5; box-shadow:0 12px 38px #000d; color:var(--paper); }
.annotation-info-popover[hidden] { display:none; }
.annotation-info-popover header { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:10px 11px 8px; border-left:4px solid var(--annotation-color); }
.annotation-info-popover header div { display:grid; gap:2px; min-width:0; }
.annotation-info-popover header small { color:var(--muted); font:600 8px/1.2 "IBM Plex Mono",monospace; letter-spacing:.09em; text-transform:uppercase; }
.annotation-info-popover header strong { overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.annotation-info-popover header button { width:27px; height:27px; border:1px solid var(--line); background:#20252b; color:var(--paper); cursor:pointer; }
.annotation-info-popover > p { margin:0; padding:0 12px 10px 15px; color:var(--annotation-color); font:700 10px/1.35 "IBM Plex Mono",monospace; }
.annotation-info-popover details { border-top:1px solid var(--line); }
.annotation-info-popover summary { padding:9px 12px; color:#dfe3e5; font-size:11px; font-weight:800; cursor:pointer; }
.annotation-info-popover dl { display:grid; gap:7px; margin:0; padding:0 12px 12px; }
.annotation-info-popover dl div { display:grid; grid-template-columns:64px 1fr; gap:8px; }
.annotation-info-popover dt { color:var(--muted); font:600 8px/1.4 "IBM Plex Mono",monospace; text-transform:uppercase; }
.annotation-info-popover dd { margin:0; color:#e1e5e7; font-size:11px; line-height:1.4; overflow-wrap:anywhere; }

.gesture-coach { position:absolute; z-index:940; left:50%; bottom:98px; transform:translateX(-50%); display:grid; gap:3px; min-width:min(420px,calc(100vw - 24px)); padding:10px 14px; border:1px solid #ffffff2c; background:#111418e8; box-shadow:0 8px 26px #000a; text-align:center; pointer-events:none; }
.gesture-coach[hidden] { display:none; }
.gesture-coach strong { color:var(--paper); font:700 12px/1.2 "IBM Plex Sans",sans-serif; }
.gesture-coach span { color:var(--muted); font:600 9px/1.3 "IBM Plex Mono",monospace; text-transform:uppercase; }
.status-card.is-compact small { display:none; }

.detail-video-panel { position:absolute; z-index:1050; right:14px; bottom:52px; width:min(430px,calc(100vw - 28px)); border:1px solid var(--accent); background:#111418f7; box-shadow:0 16px 55px #000d; }
.detail-video-panel[hidden] { display:none; }
.detail-video-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; border-bottom:1px solid var(--line); }
.detail-video-heading .eyebrow { margin:0 0 3px; }
.detail-video-heading h2 { margin:0; font:500 17px/1.2 "Source Serif 4",Georgia,serif; }
.detail-video-actions { display:flex; gap:5px; }
.detail-video-actions button { display:grid; place-items:center; width:30px; height:30px; border:1px solid var(--line); border-radius:0; background:#20252b; color:var(--paper); font-size:18px; cursor:pointer; }
.detail-video-actions button:hover,.detail-video-actions button:focus-visible { border-color:var(--accent); outline:none; }
.detail-video-body { padding:10px; }
.detail-video-body video { display:block; width:100%; max-height:42vh; background:#050708; object-fit:contain; }
.detail-video-body p { margin:9px 0 3px; color:#d9dddf; font-size:12px; line-height:1.4; }
.detail-video-body small { color:var(--muted); font:500 9px/1.35 "IBM Plex Mono",monospace; text-transform:uppercase; }
.detail-video-panel.is-minimized .detail-video-body { display:none; }

.thermal-panel { position:absolute; z-index:1120; top:112px; right:14px; width:min(500px,calc(100vw - 28px)); max-height:calc(100vh - 160px); overflow:auto; border:1px solid var(--accent); background:#111418f7; box-shadow:0 18px 70px #000e; }
.thermal-panel[hidden] { display:none; }
.thermal-panel-heading { position:sticky; z-index:2; top:0; display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:12px 14px; border-bottom:1px solid var(--line); background:#111418fa; }
.thermal-panel-heading h2 { margin:2px 0 0; font:500 20px/1.15 "Source Serif 4",Georgia,serif; }
.thermal-capture-date { display:block; margin-top:7px; color:#ffd08e; font:700 11px/1.35 "IBM Plex Mono",monospace; letter-spacing:.055em; }
.thermal-panel-heading button { display:grid; place-items:center; width:34px; height:34px; border:1px solid var(--line); background:#20252b; color:var(--paper); font-size:20px; cursor:pointer; }
.thermal-panel-body { padding:12px; }
.thermal-warning,.thermal-footnote { margin:0 0 10px; padding:9px 10px; border-left:3px solid var(--accent); background:#241f14; color:#dfd2b5; font-size:10px; line-height:1.45; }
.thermal-image-stage { display:block; min-height:180px; max-height:42vh; overflow:auto; background:#050708; overscroll-behavior:contain; }
.thermal-image-content { position:relative; margin:auto; }
.thermal-image-stage img { display:block; width:100%; height:100%; max-width:none; max-height:none; object-fit:fill; }
#thermalDrawingCanvas { position:absolute; inset:0; width:100%; height:100%; touch-action:none; }
.thermal-image-tools { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:8px 0; }
.thermal-image-tools button { min-height:44px; padding:0 10px; border:1px solid var(--line); background:#20252b; color:var(--paper); cursor:pointer; }
.thermal-image-tools button[aria-pressed="true"] { border-color:var(--mint); background:#193129; }
.thermal-image-tools output { color:#ffd08e; font:700 11px "IBM Plex Mono",monospace; }
.thermal-image-tools label { color:var(--paper); font-size:11px; }
.thermal-image-tools select { min-height:44px; background:#20252b; color:var(--paper); border:1px solid var(--line); }
.thermal-tree-group { margin:8px 0; border-top:1px solid var(--line); }
.thermal-tree-group>summary { cursor:pointer; padding:10px 4px; color:#ffd08e; font-size:12px; font-weight:700; }
.thermal-tree-group .layer-object-tree-item-heading small { color:#ffd08e; }
.thermal-view-controls,.thermal-navigation { display:flex; gap:7px; justify-content:space-between; margin-top:9px; }
.thermal-view-controls button,.thermal-navigation button { min-height:36px; padding:0 12px; border:1px solid var(--line); background:#20252b; color:var(--paper); font-weight:750; cursor:pointer; }
.thermal-download { display:inline-flex; align-items:center; min-height:36px; padding:0 12px; border:1px solid #7fd2b6; color:#b5f0df; font-size:10px; font-weight:750; text-decoration:none; }
.thermal-view-controls button.is-active { border-color:var(--accent); color:#ffb28d; }
.thermal-view-controls button:disabled { opacity:.38; cursor:not-allowed; }
.thermal-meta { display:grid; gap:6px; margin:12px 0; }
.thermal-meta div { display:grid; grid-template-columns:115px minmax(0,1fr); gap:10px; }
.thermal-meta dt { color:#ef9b70; font:700 9px/1.4 "IBM Plex Mono",monospace; text-transform:uppercase; }
.thermal-meta dd { margin:0; color:#d7dcdf; font-size:11px; overflow-wrap:anywhere; }
.thermal-delta-tool { margin-top:10px; padding:10px; border:1px solid rgba(127,210,182,.38); background:#0b1110; }
.thermal-delta-tool summary { color:#b5f0df; font-size:11px; font-weight:800; cursor:pointer; }
.thermal-delta-tool p { margin:8px 0; color:#cbd4d1; font-size:10px; line-height:1.45; }
.thermal-delta-fields { display:grid; grid-template-columns:1fr 1fr 78px; gap:7px; }
.thermal-delta-fields label { display:grid; gap:4px; color:#ef9b70; font:700 9px/1.3 "IBM Plex Mono",monospace; text-transform:uppercase; }
.thermal-delta-fields input,.thermal-delta-fields select { min-width:0; min-height:38px; padding:6px 8px; border:1px solid var(--line); background:#20252b; color:var(--paper); font:600 14px/1 "IBM Plex Sans",sans-serif; }
.thermal-delta-tool output { display:block; margin:9px 0; color:#ffd08e; font:700 12px/1.4 "IBM Plex Mono",monospace; }
.thermal-delta-tool>button { min-height:36px; padding:0 10px; border:1px solid var(--line); background:#20252b; color:var(--paper); font-weight:700; cursor:pointer; }
.thermal-delta-tool small { display:block; margin-top:8px; color:var(--muted); font-size:9px; line-height:1.45; }
.thermal-reports { padding:10px; border:1px solid var(--line); background:#0b0e11; }
.thermal-reports > strong { color:var(--paper); font-size:11px; }
.thermal-reports > div { display:grid; gap:5px; margin-top:7px; }
.thermal-reports a { color:#ffb28d; font-size:10px; overflow-wrap:anywhere; }
.thermal-reports span { color:var(--muted); font-size:10px; }
.thermal-videos { margin-top:10px; padding:10px; border:1px solid rgba(240,183,91,.28); background:#0b0e11; }
.thermal-videos > strong { color:var(--paper); font-size:11px; }
.thermal-videos > div { display:grid; gap:5px; margin-top:7px; }
.thermal-videos a { color:var(--gold); font-size:10px; text-decoration:none; overflow-wrap:anywhere; }
.thermal-videos p { margin:8px 0 0; color:var(--muted); font-size:9px; line-height:1.45; }
.thermal-footnote { margin:10px 0 0; border-left-color:#7fd2b6; background:#14211e; }

.media-library { z-index:1; padding:168px 18px 46px; overflow:auto; background:radial-gradient(circle at 28% 15%,#20272b,#0b0e11 58%,#07090b); }
.media-library-shell { width:min(1180px,100%); min-height:calc(100vh - 142px); margin:0 auto; padding:20px; border:1px solid var(--line); background:#111418ed; box-shadow:0 24px 80px #000b; }
.media-library-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding-bottom:14px; border-bottom:1px solid var(--line); }
.media-library-heading h2 { margin:0; font:500 clamp(22px,3vw,34px)/1.05 "Source Serif 4",Georgia,serif; }
.media-library-tabs { display:flex; gap:6px; }
.media-library-tabs button,.media-view-controls button { min-height:36px; padding:0 12px; border:1px solid var(--line); background:#1b2025; color:var(--paper); font-weight:750; cursor:pointer; }
.media-library-tabs button[aria-selected="true"],.media-view-controls button.is-active { border-color:var(--accent); background:#30291e; }
.media-library-tabs button:focus-visible,.media-view-controls button:focus-visible,.media-item-list button:focus-visible,.media-photo-sets a:focus-visible,.media-photo-gallery a:focus-visible { border-color:var(--mint); outline:none; }
.media-view-controls button:disabled { opacity:.38; cursor:not-allowed; }
.media-library-intro { max-width:780px; margin:14px 0 18px; color:var(--muted); font-size:14px; line-height:1.5; }
.media-workspace { display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,320px); gap:14px; }
.media-player-card,.media-source-note,.media-photo-sets article,.media-photo-gallery article,.media-item-list { border:1px solid var(--line); background:#0b0e11; }
.media-player-frame { position:relative; display:grid; place-items:center; min-height:360px; background:#030405; overflow:hidden; }
.media-player-frame[hidden],.media-player-frame video[hidden],.media-view-controls[hidden],.media-current-meta[hidden] { display:none; }
.media-player-frame video { display:block; width:100%; max-height:62vh; background:#030405; object-fit:contain; }
.media-video-state { position:absolute; left:12px; bottom:12px; z-index:2; padding:7px 9px; border:1px solid #ffffff2b; background:#080a0de8; color:#f0f2f3; font:700 10px/1.25 "IBM Plex Mono",monospace; letter-spacing:.04em; pointer-events:none; }
.media-video-state[hidden] { display:none; }
.media-video-state.is-error { border-color:#d97969; color:#ffd6cf; }
.media-video-stamp { position:absolute; right:14px; bottom:14px; display:grid; gap:3px; justify-items:end; max-width:calc(100% - 28px); color:#fff; font:700 12px/1.25 "IBM Plex Mono",monospace; text-align:right; text-shadow:0 2px 8px #000,0 0 2px #000; pointer-events:none; }
.media-video-stamp[hidden] { display:none; }
.media-video-stamp span { padding:4px 6px; background:#0008; }
.media-player-empty { display:grid; place-items:center; gap:6px; min-height:110px; padding:22px; border-top:1px solid var(--line); text-align:center; }
.media-player-empty strong,.media-list-empty strong { color:var(--paper); }
.media-player-empty span,.media-list-empty span { color:var(--muted); font-size:12px; line-height:1.45; }
.media-view-controls { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; padding:12px; border-top:1px solid var(--line); }
.media-view-controls > div { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.media-view-controls > div > span { width:100%; color:var(--muted); font:650 9px/1.2 "IBM Plex Mono",monospace; letter-spacing:.08em; text-transform:uppercase; }
.media-view-controls label { display:flex; align-items:center; gap:5px; min-height:36px; padding:0 8px; border:1px solid var(--line); color:#dfe3e5; font-size:12px; }
.media-view-controls input { accent-color:var(--accent); }
.media-current-meta { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:14px; padding:14px; border-top:1px solid var(--line); }
.media-current-meta h3 { margin:2px 0 6px; font-size:18px; }
.media-current-meta p:not(.eyebrow) { margin:0; color:var(--muted); font-size:13px; line-height:1.45; }
.media-current-meta dl { display:grid; gap:5px; margin:0; min-width:180px; }
.media-current-meta dl div { display:grid; grid-template-columns:60px 1fr; gap:8px; }
.media-current-meta dt { color:var(--muted); font:650 9px/1.4 "IBM Plex Mono",monospace; text-transform:uppercase; }
.media-current-meta dd { margin:0; color:#e2e6e8; font-size:11px; }
.media-current-meta > a,.media-photo-sets a { align-self:end; justify-self:start; min-height:34px; padding:9px 11px; border:1px solid var(--accent); color:var(--paper); font-size:11px; font-weight:750; text-decoration:none; }
.media-item-list { align-content:start; display:grid; gap:4px; max-height:calc(100vh - 210px); padding:8px; overflow:auto; }
.media-item-list button { display:grid; gap:4px; padding:11px; border:1px solid transparent; background:#181d22; color:var(--paper); text-align:left; cursor:pointer; }
.media-item-list button:hover,.media-item-list button.is-active { border-color:var(--accent); background:#2a251d; }
.media-item-list button strong { font-size:13px; }
.media-item-list button span { color:var(--muted); font-size:10px; line-height:1.4; }
.media-list-empty { display:grid; place-items:center; gap:6px; min-height:180px; padding:20px; text-align:center; }
.media-source-note { margin-bottom:12px; padding:18px; }
.media-source-note strong { font:500 21px/1.1 "Source Serif 4",Georgia,serif; }
.media-source-note p { max-width:760px; margin:7px 0 0; color:var(--muted); font-size:13px; line-height:1.5; }
.media-photo-sets { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:10px; }
.media-photo-sets article { padding:15px; }
.media-photo-sets h3 { margin:0 0 7px; font-size:15px; }
.media-photo-sets p { margin:5px 0; color:var(--muted); font-size:12px; line-height:1.45; }
.media-photo-sets a { display:inline-block; margin-top:9px; }
.media-photo-gallery { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:10px; }
.media-photo-gallery article { min-width:0; overflow:hidden; }
.media-photo-preview { display:block; border-bottom:1px solid var(--line); background:#050708; aspect-ratio:4/3; overflow:hidden; }
.media-photo-preview img { width:100%; height:100%; object-fit:cover; transition:transform .2s ease; }
.media-photo-preview:hover img { transform:scale(1.02); }
.media-photo-gallery article > div { padding:13px; }
.media-photo-gallery h3 { margin:0 0 7px; font-size:15px; }
.media-photo-gallery p { margin:5px 0; color:var(--muted); font-size:12px; line-height:1.45; }
.media-photo-gallery article > div > a { display:inline-block; margin-top:9px; min-height:34px; padding:9px 11px; border:1px solid var(--accent); color:var(--paper); font-size:11px; font-weight:750; text-decoration:none; }

.annotation-register { position:absolute; z-index:1250; inset:0; padding:18px; overflow:auto; background:#080a0de8; }
.annotation-register[hidden] { display:none; }
.annotation-register-card { width:min(1180px,100%); margin:0 auto; border:1px solid var(--accent); background:#111418; box-shadow:0 18px 70px #000e; }
.annotation-register-heading { position:sticky; z-index:2; top:-18px; display:flex; justify-content:space-between; gap:18px; align-items:flex-start; padding:18px; border-bottom:1px solid var(--line); background:#111418f7; }
.annotation-register-heading h2 { margin:0 0 6px; font:500 24px/1.1 "Source Serif 4",Georgia,serif; }
.annotation-register-heading p:last-child { margin:0; color:var(--muted); font:500 10px/1.4 "IBM Plex Mono",monospace; overflow-wrap:anywhere; }
.annotation-register-actions { display:flex; gap:8px; flex:0 0 auto; }
.annotation-register-actions button { min-height:34px; padding:0 12px; border:1px solid var(--line); border-radius:0; background:#20252b; color:var(--paper); font-weight:700; cursor:pointer; }
.annotation-register-actions button:hover,.annotation-register-actions button:focus-visible { border-color:var(--accent); outline:none; }
.annotation-register-summary { padding:12px 18px; border-bottom:1px solid var(--line); color:#d7dcde; font-size:12px; }
.annotation-tree { padding:12px 18px 20px; }
.annotation-tree-branch { border-top:1px solid var(--line); }
.annotation-tree-branch:last-child { border-bottom:1px solid var(--line); }
.annotation-tree-branch summary { display:flex; justify-content:space-between; gap:12px; padding:12px 4px; cursor:pointer; }
.annotation-tree-branch summary strong { color:var(--paper); }
.annotation-tree-branch summary span { color:var(--accent); font:600 10px/1.4 "IBM Plex Mono",monospace; text-transform:uppercase; }
.annotation-table-wrap { overflow:auto; padding-bottom:12px; }
.annotation-table { width:100%; min-width:760px; border-collapse:collapse; font-size:11px; }
.annotation-table th,.annotation-table td { padding:8px 9px; border:1px solid var(--line); text-align:left; vertical-align:top; }
.annotation-table th { background:#20252b; color:var(--accent); font:600 9px/1.25 "IBM Plex Mono",monospace; letter-spacing:.07em; text-transform:uppercase; }
.annotation-table td { color:#dfe3e5; }
.annotation-table td:first-child,.annotation-table td:last-child { font-family:"IBM Plex Mono",monospace; font-size:9px; }
.annotation-empty { color:var(--muted)!important; font-style:italic; text-align:center!important; }
.annotation-register-legal { padding:14px 18px 18px; color:var(--muted); font-size:10px; line-height:1.45; }
.print-view-snapshot { display:none; }

@page { size:landscape; margin:0; }
@media print {
  html,body,.app-shell { width:100%!important; height:100%!important; margin:0!important; background:#fff!important; }
  .topbar,.view-switcher,.layer-panel,.quick-tools,.general-toolbox,.model-tools,.status-card,.scope-badge,.metadata-strip,.detail-video-panel,.gesture-coach,.layer-object-tree,.mobile-primary-controls,.modal,.object-editor { display:none!important; }
  .viewport { display:none!important; }
  body.print-preparing .print-view-snapshot { position:fixed; inset:0; display:block!important; width:100%; height:100%; object-fit:contain; background:#071316; }
}

@page { margin:.45in; }
@media print {
  body.annotation-register-print .app-shell > :not(.annotation-register) { display:none!important; }
  body.annotation-register-print,.annotation-register-print .app-shell { width:auto!important; height:auto!important; overflow:visible!important; background:#fff!important; color:#111!important; }
  body.annotation-register-print .annotation-register { position:static!important; display:block!important; padding:0!important; overflow:visible!important; background:#fff!important; }
  body.annotation-register-print .annotation-register-card { width:100%!important; margin:0!important; border:0!important; background:#fff!important; box-shadow:none!important; }
  body.annotation-register-print .annotation-register-heading { position:static!important; padding:0 0 12px!important; border-bottom:2px solid #222!important; background:#fff!important; color:#111!important; }
  body.annotation-register-print .annotation-register-heading h2 { color:#111!important; }
  body.annotation-register-print .annotation-register-heading p:last-child,.annotation-register-print .annotation-register-summary,.annotation-register-print .annotation-register-legal { color:#444!important; }
  body.annotation-register-print .annotation-register-actions { display:none!important; }
  body.annotation-register-print .annotation-register-summary { padding:9px 0!important; }
  body.annotation-register-print .annotation-tree { padding:0!important; }
  body.annotation-register-print .annotation-tree-branch { break-inside:avoid; border-color:#555!important; }
  body.annotation-register-print .annotation-tree-branch summary { padding:10px 0 6px!important; }
  body.annotation-register-print .annotation-tree-branch summary strong { color:#111!important; }
  body.annotation-register-print .annotation-tree-branch summary span { color:#555!important; }
  body.annotation-register-print .annotation-table-wrap { overflow:visible!important; padding-bottom:8px!important; }
  body.annotation-register-print .annotation-table { min-width:0!important; color:#111!important; font-size:9px!important; }
  body.annotation-register-print .annotation-table th,.annotation-register-print .annotation-table td { border-color:#777!important; color:#111!important; background:#fff!important; padding:5px!important; }
  body.annotation-register-print .annotation-register-legal { padding:12px 0 0!important; border-top:1px solid #555; }
}

@media(max-width:720px) {
  .topbar { min-height:50px; padding:3px max(6px,env(safe-area-inset-right)) 3px max(6px,env(safe-area-inset-left)); padding-top:max(3px,env(safe-area-inset-top)); }
  .brand-logo { width:60px; height:42px; }
  .controls { display:none; }
  body.mobile-project-open .topbar .controls { position:fixed; z-index:980; top:58px; left:8px; right:8px; display:grid; grid-template-columns:1fr; gap:5px; margin:0; padding:8px; border:1px solid var(--accent); background:#111418f7; box-shadow:0 12px 36px #000c; }
  body.mobile-project-open .controls .field { display:grid; grid-template-columns:110px minmax(0,1fr); align-items:center; gap:8px; }
  body.mobile-project-open .field label { display:block; color:var(--muted); font-size:9px; }
  body.mobile-project-open .field select { width:100%!important; max-width:none!important; height:36px; padding-left:8px; padding-right:24px; font-size:11px; }
  .button { display:none; }
  .date,.scope-badge { display:none; }
  .view-switcher { display:none!important; top:auto; left:8px; right:auto; bottom:84px; padding:3px; }
  body.mobile-view-open .view-switcher:not([hidden]) { display:flex!important; }
  .view-switcher button { min-height:36px; padding:0 11px; font-size:10px; }
  .layer-panel { z-index:1000; top:58px; left:6px; bottom:38px; width:calc(100vw - 12px); }
  .quick-tools { display:none!important; top:auto; right:8px; left:8px; bottom:84px; max-width:none; grid-template-columns:repeat(3,minmax(0,1fr)); gap:3px; padding:5px; border:1px solid var(--accent); background:#111418f3; box-shadow:0 12px 36px #000c; overflow:visible; }
  body.mobile-actions-open .quick-tools { display:grid!important; }
  .quick-tools #toolsButton { display:none; }
  .quick-tools::-webkit-scrollbar,.general-toolbox::-webkit-scrollbar,.model-tools::-webkit-scrollbar { display:none; }
  .quick-tools button,.quick-tools a { width:100%; min-width:0; min-height:31px; padding:0 4px; overflow:hidden; font-size:8.5px; white-space:nowrap; text-overflow:ellipsis; }
  .general-toolbox,.model-tools { display:none!important; top:auto; left:8px; right:8px; bottom:84px; width:auto; transform:none; grid-template-columns:repeat(3,minmax(0,1fr)); gap:3px; overflow:visible; }
  body.mobile-tools-open .general-toolbox:not(.is-hidden),body.mobile-tools-open .model-tools:not(.is-hidden) { display:grid!important; }
  .toolbox-title { display:none; }
  .specialty-map-tools { display:none; }
  .general-toolbox button,.model-tools button { min-width:0; width:100%; padding:7px 4px; font-size:8.5px; white-space:nowrap; }
  .measurement-unavailable-note { grid-column:1/-1; padding:3px 6px; font-size:9px; text-align:center; }
  .all-annotations-readonly { grid-column:1/-1; padding:5px 7px; font-size:9px; text-align:center; }
  .general-toolbox button b { display:inline; margin:0 3px 0 0; font-size:13px; }
  .map-tool-menu { display:block; }
  .map-tool-menu summary { width:100%; min-height:100%; min-width:0; font-size:8.5px; }
  .map-tool-menu-panel { position:fixed; top:auto; left:8px; right:8px; bottom:160px; grid-template-columns:repeat(2,minmax(0,1fr)); width:auto; max-height:45vh; }
  .model-tools label { display:none; }
  .status-card { left:8px; right:auto; top:58px; bottom:auto; max-width:calc(100vw - 16px); transform:none; }
  .status-card.is-compact { padding:7px 10px; }
  .metadata-strip { font-size:8px; }
  .metadata-strip span:nth-child(2) { display:none; }
  .detail-video-panel { top:58px; right:8px; bottom:auto; left:8px; width:auto; }
  .detail-video-body video { max-height:32vh; }
  .thermal-panel { inset:auto 0 80px; width:100%; max-height:68dvh; border-width:1px 0 0; border-radius:14px 14px 0 0; padding-bottom:env(safe-area-inset-bottom); }
  .thermal-image-stage { min-height:180px; max-height:34vh; }
  .thermal-image-stage img { max-height:none; }
  .thermal-view-controls { flex-wrap:wrap; }
  .thermal-view-controls button,.thermal-download { flex:1 1 30%; justify-content:center; }
  .thermal-delta-fields { grid-template-columns:1fr 1fr 72px; }
  .media-library { padding:58px 6px 84px; }
  .media-library-shell { min-height:calc(100vh - 142px); padding:10px; }
  .media-library-heading { display:grid; gap:12px; }
  .media-library-tabs { display:grid; grid-template-columns:repeat(3,1fr); }
  .media-workspace { grid-template-columns:1fr; }
  .media-player-frame { min-height:210px; }
  .media-player-frame video { max-height:42vh; }
  .media-current-meta { grid-template-columns:1fr; }
  .media-current-meta dl { min-width:0; }
  .media-item-list { max-height:32vh; }
  .gesture-coach { bottom:84px; min-width:calc(100vw - 16px); padding:9px 11px; }
  .annotation-register { padding:8px; }
  .annotation-register-heading { top:-8px; display:block; padding:12px; }
  .annotation-register-actions { margin-top:12px; }
  .annotation-register-summary,.annotation-tree { padding-left:12px; padding-right:12px; }
  .layer-object-tree { display:none; top:auto; right:8px; bottom:84px; left:8px; width:auto; max-height:52vh; }
  body.mode-geotiff.mobile-objects-open .layer-object-tree { display:block; }
  body.mode-cesium.thermal-annotation-active .layer-object-tree { display:none; }
  body.mode-cesium.thermal-annotation-active.mobile-objects-open .layer-object-tree { display:block; }
  .layer-object-tree-body { max-height:calc(52vh - 54px); }
  .layer-object-tree-actions button { min-height:32px; font-size:8px; }
  .annotation-info-popover { right:8px!important; bottom:84px!important; left:8px!important; top:auto!important; width:auto; }
  .mobile-primary-controls { position:absolute; z-index:990; right:0; bottom:32px; left:0; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1px; min-height:48px; padding:4px max(5px,env(safe-area-inset-right)) 4px max(5px,env(safe-area-inset-left)); border-top:1px solid var(--line); background:#111418ed; box-shadow:0 -8px 24px #0009; }
  .mobile-primary-controls button { min-width:0; border:1px solid #353c43; background:#1b2127; color:#dfe3e5; font-size:9px; font-weight:700; cursor:pointer; }
  .mobile-primary-controls button[aria-expanded="true"] { border-color:var(--accent); background:#332b1e; color:var(--paper); }
  .mobile-primary-controls button:disabled { opacity:.38; cursor:not-allowed; }
  .mobile-primary-controls button span { display:inline-grid; place-items:center; min-width:16px; min-height:16px; margin-left:2px; border-radius:999px; background:#ffffff12; color:var(--accent); font:700 8px/1 "IBM Plex Mono",monospace; }
  .ol-scale-bar { bottom:84px; }
  body.mobile-view-open .ol-scale-bar,
  body.mobile-project-open .ol-scale-bar,
  body.mobile-tools-open .ol-scale-bar,
  body.mobile-objects-open .ol-scale-bar,
  body.mobile-actions-open .ol-scale-bar { opacity:0; pointer-events:none; }
}

/* Final standard override: keep this after all legacy and responsive rules. */
html,body,.app-shell { font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif!important; }
body { font-size:16px!important; font-weight:400!important; }
button,select,input,textarea,.button,.quick-tools button,.quick-tools a,.view-switcher button,.general-toolbox button,.model-tools button,.map-tool-menu summary,.layer-button { font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif!important; font-weight:600!important; }
h1,h2,h3,.panel-heading h1,.source-panel h2,.modal-card h2,.media-library-heading h2,.media-source-note strong,.annotation-register-heading h2,.detail-video-heading h2 { font-family:"ivypresto-display","Source Serif 4",Georgia,serif!important; font-style:normal!important; font-weight:300!important; letter-spacing:-.012em; }
.panel-intro,.capture-description,.help-grid dd,.legal-copy p,.media-library-intro,.media-source-note p,.media-current-meta p:not(.eyebrow),.media-photo-sets p,.media-photo-gallery p,.annotation-register-summary { font-family:"neue-haas-unica","IBM Plex Sans",Arial,sans-serif!important; font-size:16px!important; font-weight:400!important; }
.eyebrow,.subhead,.field label,.date,.metadata-strip,.toolbox-title,.model-tools label,.scope-badge,.layer-view,.annotation-register-heading p:last-child,.annotation-table th,.annotation-table td:first-child,.annotation-table td:last-child,.media-view-controls>div>span,.media-current-meta dt,.thermal-meta dt { font-family:"IBM Plex Mono",monospace!important; }
:root { --mint:#77cbb5; --warning:#e6b866; }
body { font-size:14px; }
body button:focus-visible,body a:focus-visible,body select:focus-visible,body input:focus-visible,body textarea:focus-visible,body summary:focus-visible { outline:2px solid var(--warning)!important; outline-offset:2px!important; }
.field label,.metadata-strip,.toolbox-title,.model-tools label,.annotation-register-heading p:last-child { font-size:12px; }
.field select,.button,.quick-tools button,.quick-tools a,.view-switcher button,.general-toolbox button,.model-tools button,.map-tool-menu summary,.feedback-actions button,.feedback-thanks button,.layer-object-tree-actions button,.detail-video-actions button,.thermal-panel-heading button,.thermal-view-controls button,.thermal-navigation button,.media-library-tabs button,.media-view-controls button,.media-view-controls label,.media-current-meta>a,.media-photo-sets a,.media-photo-gallery article>div>a,.annotation-register-actions button,.close-button,.modal-close { min-height:44px; }
.field select,.button { height:44px; font-size:14px; }
.quick-tools button,.quick-tools a { height:44px; font-size:13px; }
.view-switcher button { min-height:44px; font-size:13px; }
.general-toolbox button,.model-tools button,.map-tool-menu summary { font-size:13px; }
.layer-button.is-active,.view-switcher button.is-active,.media-library-tabs button[aria-selected="true"],.media-view-controls button.is-active { border-color:var(--mint); background:#193129; color:var(--paper); }
.thermal-warning,.thermal-footnote { border-left-color:var(--warning); background:#2a2316; color:#f0dfb9; }
.modal-card p,.modal-card dd,.legal-copy p { font-size:16px; }
.standard-link a { display:inline-flex; align-items:center; min-height:44px; }
.annotation-register-logo { display:block; flex:0 0 auto; width:120px; height:58px; object-fit:contain; }
.print-export-header,.print-export-footer { display:none; }
@media print {
  body.print-preparing .print-export-header { position:fixed; z-index:20; top:.14in; left:.22in; right:.22in; display:flex!important; align-items:center; gap:.16in; min-height:.55in; padding:0 0 .08in; border-bottom:2px solid #111418; color:#111418; background:#fff; }
  body.print-preparing .print-export-header img { width:1.12in; height:.54in; object-fit:contain; background:#111418; }
  body.print-preparing .print-export-header>div { display:grid; gap:2px; }
  body.print-preparing .print-export-header strong { font:500 18pt/1 "Source Serif 4",Georgia,serif; }
  body.print-preparing .print-export-header span { font:600 8pt/1.25 "IBM Plex Sans",sans-serif; color:#444; }
  body.print-preparing .print-export-header dl { display:flex; gap:.2in; margin:0 0 0 auto; font:600 7pt/1.25 "IBM Plex Sans",sans-serif; }
  body.print-preparing .print-export-header dl div { display:grid; gap:2px; }
  body.print-preparing .print-export-header dt { color:#666; text-transform:uppercase; }
  body.print-preparing .print-export-header dd { margin:0; color:#111418; }
  body.print-preparing .print-view-snapshot { inset:.82in .22in .42in!important; width:calc(100% - .44in)!important; height:calc(100% - 1.24in)!important; background:#111418!important; }
  body.print-preparing .print-export-footer { position:fixed; z-index:20; right:.22in; bottom:.12in; left:.22in; display:block!important; color:#444; background:#fff; font:600 7pt/1.25 "IBM Plex Sans",sans-serif; }
  body.annotation-register-print .annotation-register-logo { width:1.12in!important; height:.54in!important; object-fit:contain!important; background:#111418!important; }
  body.annotation-register-print .annotation-register-heading { display:grid!important; grid-template-columns:auto 1fr!important; column-gap:.16in!important; }
}

/* UI standard 1.0: large targets and a lean active-placement dock. */
.ol-zoom button { width:44px; height:44px; min-width:44px; min-height:44px; font-size:24px; }
.close-button,.modal-close { min-width:44px; min-height:44px; }
#loadingRecoveryActions { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
#loadingRecoveryActions[hidden] { display:none; }
#loadingRecoveryActions button { min-height:44px; min-width:44px; padding:6px 10px; border:1px solid var(--accent); background:#20252b; color:var(--paper); font:600 14px/1.2 "neue-haas-unica",sans-serif; }
.jsi-tour button,.jsi-tour .jsi-tour-skip { min-height:44px!important; min-width:44px; }
#modelToolOptions { display:none; }
#modelTools.is-placement:not(.show-options) [data-model-tool="line"],
#modelTools.is-placement:not(.show-options) [data-model-tool="area"],
#modelTools.is-placement:not(.show-options) [data-model-tool="delta"],
#modelTools.is-placement:not(.show-options) [data-model-tool="clear"],
#modelTools.is-placement:not(.show-options) [data-model-tool="reset"],
#modelTools.is-placement:not(.show-options) #qualityControl { display:none; }
#modelTools.is-placement #modelToolOptions { display:block; }
body.measurement-placement .status-card.is-compact small { display:block; font-size:12px; line-height:1.3; }
@media(min-width:721px) {
  .model-tools,.general-toolbox { bottom:auto; max-height:calc(100dvh - 210px); }
}
@media(min-width:721px) and (max-width:1100px) {
  .quick-tools { top:140px; }
  .model-tools,.general-toolbox { top:190px; }
}
@media(max-width:720px) {
  #modelTools.is-placement:not(.show-options) [data-model-tool="line"],
  #modelTools.is-placement:not(.show-options) [data-model-tool="area"],
  #modelTools.is-placement:not(.show-options) [data-model-tool="delta"],
  #modelTools.is-placement:not(.show-options) [data-model-tool="clear"],
  #modelTools.is-placement:not(.show-options) [data-model-tool="reset"],
  #modelTools.is-placement:not(.show-options) #qualityControl { display:none; }
  #modelTools.is-placement { grid-template-columns:repeat(4,minmax(0,1fr)); }
  #modelTools.is-placement #modelToolOptions { display:block; }
  #modelTools.is-placement button { white-space:normal; font-size:12px; padding:4px; }
  #modelTools.is-placement.show-options { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:720px) {
  .topbar { min-height:58px; padding:5px max(8px,env(safe-area-inset-right)) 5px max(8px,env(safe-area-inset-left)); }
  .brand-logo { width:96px; height:48px; }
  body.mobile-project-open .topbar .controls { top:66px; }
  body.mobile-project-open .field label { font-size:12px; }
  body.mobile-project-open .field select { height:44px; font-size:14px; }
  .view-switcher { bottom:96px; }
  .view-switcher button { min-height:44px; font-size:13px; }
  .layer-panel { top:66px; bottom:40px; }
  .quick-tools { bottom:96px; }
  .quick-tools button,.quick-tools a { min-height:44px; padding:0 6px; font-size:12px; }
  .general-toolbox,.model-tools { bottom:96px; }
  .general-toolbox button,.model-tools button { min-height:44px; font-size:12px; }
  .map-tool-menu summary { min-height:44px; font-size:12px; }
  .map-tool-menu-panel { bottom:176px; }
  .status-card { top:66px; }
  .metadata-strip { min-height:36px; font-size:12px; }
  .detail-video-panel { top:66px; }
  .media-library { padding-top:66px; padding-bottom:96px; }
  .media-library-tabs button,.media-view-controls button,.media-view-controls label { min-height:44px; font-size:13px; }
  .annotation-register-heading { display:grid; grid-template-columns:auto 1fr; gap:10px; }
  .annotation-register-logo { width:96px; height:48px; }
  .annotation-register-actions { grid-column:1/-1; }
  .layer-object-tree { bottom:96px; }
  .layer-object-tree-actions button { min-height:44px; font-size:11px; }
  .annotation-info-popover { bottom:96px!important; }
  .mobile-primary-controls { min-height:60px; }
  .mobile-primary-controls button { min-height:44px; font-size:12px; }
  .ol-scale-bar { bottom:96px; }
}
