:root {
  color-scheme: light;
  --ink: #162333;
  --muted: #647386;
  --line: #d9e1e8;
  --surface: #ffffff;
  --surface-soft: #f4f7fa;
  --brand: #0b5cad;
  --brand-dark: #08467f;
  --positive: #177245;
  --warning: #9a5d00;
  --danger: #b42318;
  --shadow: 0 12px 32px rgb(19 37 56 / 8%);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
body { margin: 0; background: #edf2f6; color: var(--ink); font-size: 16px; line-height: 1.5; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: var(--brand); }
[hidden], .hidden { display: none !important; }
.skip-link { position: absolute; left: 1rem; top: -4rem; z-index: 10; padding: .65rem 1rem; background: var(--ink); color: #fff; border-radius: .5rem; }
.skip-link:focus { top: 1rem; }
.topbar { min-height: 72px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .8rem clamp(1rem, 4vw, 3.5rem); background: var(--surface); border-bottom: 1px solid var(--line); }
.brand { display: inline-flex; align-items: center; gap: .7rem; color: var(--ink); text-decoration: none; font-weight: 800; letter-spacing: .13em; }
.brand-mark { display: grid; place-items: center; width: 2.25rem; height: 2.25rem; background: var(--brand); color: #fff; border-radius: .65rem; letter-spacing: 0; }
.institutional-header { display: grid; flex: 1; gap: .05rem; max-width: 48rem; margin-inline: 1rem; font-size: .72rem; line-height: 1.25; }
.institutional-header strong { font-weight: 800; }
.institutional-header span { font-style: italic; }
.session-area { display: flex; align-items: center; gap: .9rem; min-width: 0; }
.session-label { display: flex; flex-direction: column; align-items: flex-start; gap: .15rem; text-align: left; color: var(--muted); font-size: .85rem; min-width: 0; overflow-wrap: anywhere; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 2.75rem; padding: .65rem 1rem; border: 1px solid transparent; border-radius: .55rem; cursor: pointer; text-decoration: none; font-weight: 700; transition: background .15s ease, border-color .15s ease, transform .15s ease; }
.button:hover { transform: translateY(-1px); }
.button:focus-visible, .nav-item:focus-visible, .text-input:focus-visible, .combo-button:focus-visible, .combo-options button:focus-visible { outline: 3px solid rgb(11 92 173 / 30%); outline-offset: 2px; }
.button-primary { background: var(--brand); color: #fff; }
.button-primary:hover { background: var(--brand-dark); }
.button-secondary { background: #fff; border-color: #b8c5d1; color: var(--brand-dark); }
.button-quiet { background: transparent; border-color: var(--line); color: var(--ink); }
.button-large { min-height: 3.25rem; padding-inline: 1.25rem; }
.global-message { position: fixed; z-index: 1000; top: 1rem; right: 1rem; display: flex; align-items: start; gap: .8rem; width: min(26rem, calc(100vw - 2rem)); margin: 0; padding: .65rem .8rem; border-radius: .55rem; background: #fff4e5; color: #6d3f00; border: 1px solid #f1c27d; box-shadow: var(--shadow); font-size: .85rem; line-height: 1.4; }
.global-message-close { flex: 0 0 auto; border: 0; background: transparent; color: inherit; font-size: 1.25rem; line-height: 1; cursor: pointer; }
.global-message.success { background: #def6e8; color: var(--positive); border-color: #9dd5b2; }
.auth-view { display: grid; place-items: center; min-height: calc(100vh - 72px); padding: 2rem 1rem 4rem; }
.auth-card { width: min(100%, 32rem); padding: clamp(1.5rem, 4vw, 3rem); background: var(--surface); border: 1px solid var(--line); border-radius: 1rem; box-shadow: var(--shadow); }
.auth-card .button { width: 100%; margin-top: 1rem; }
.auth-card p { color: var(--muted); }
.public-mode .topbar { display: none; }
.public-mode .auth-view { min-height: 100vh; }
.public-home-card { width: min(100%, 32rem); padding: clamp(2rem, 5vw, 3rem); text-align: center; }
.public-brand { display: block; margin-bottom: 1rem; color: var(--brand-dark); font-weight: 850; }
.public-home-card h1 { margin-bottom: 1.6rem; font-size: clamp(1.3rem, 3vw, 1.75rem); line-height: 1.3; }
.public-department { margin-bottom: 1.7rem; font-size: 1.12rem; font-style: italic; line-height: 1.45; }
.public-home-card .button { margin-top: 0; }
.public-home-card .public-apk-download { margin-top: 1rem; }
.project-codes, .project-responsible { color: var(--ink) !important; font-size: .78rem; font-weight: 650; }
.project-codes { margin: .8rem 0 1.3rem; }
.project-responsible { margin-bottom: 0; }
.eyebrow { display: block; margin-bottom: .35rem; color: var(--brand); font-size: .74rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
h1, h2, p { margin-top: 0; }
h1 { margin-bottom: .45rem; font-size: clamp(1.75rem, 3vw, 2.5rem); line-height: 1.15; }
h2 { margin-bottom: .25rem; font-size: 1.3rem; line-height: 1.2; }
.helper-text, .field-help { font-size: .85rem; }
.dashboard-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); min-height: calc(100vh - 72px); }
.sidebar { min-width: 0; display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem 1rem; background: #15283b; color: #d9e7f4; }
.sidebar-project { display: grid; gap: .12rem; padding: 0 .75rem 1rem; border-bottom: 1px solid #aec5d8; color: #fff; font-size: .68rem; line-height: 1.3; }
.sidebar-project span { margin-top: .55rem; }
.sidebar-heading { padding: 0 .75rem; color: #8fb1ce; font-size: .76rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.main-navigation { display: grid; gap: .3rem; }
.nav-item { padding: .72rem .8rem; color: #d9e7f4; background: transparent; border: 1px solid transparent; border-radius: .5rem; text-align: left; cursor: pointer; }
.nav-item:hover, .nav-item.active { background: #234664; border-color: #3c678b; color: #fff; }
.sidebar-note { display: flex; gap: .55rem; align-items: flex-start; margin-top: auto; padding: .8rem; color: #aec5d8; font-size: .8rem; }
.status-dot { flex: 0 0 auto; width: .7rem; height: .7rem; margin-top: .35rem; border-radius: 50%; }
.status-dot-neutral { background: #91a9bd; }
.main-content { min-width: 0; width: min(100%, 1180px); margin: 0 auto; padding: clamp(1.25rem, 3vw, 3rem); }
.page-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.page-heading p { margin-bottom: 0; color: var(--muted); }
.last-updated { color: var(--muted); font-size: .8rem; }
.metric-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.metric-card, .content-card { background: var(--surface); border: 1px solid var(--line); border-radius: .8rem; box-shadow: 0 3px 12px rgb(19 37 56 / 3%); }
.metric-card { display: grid; gap: .15rem; padding: 1.1rem; }
.metric-label { color: var(--muted); font-size: .85rem; }
.metric-card strong { font-size: 1.85rem; }
.metric-note { color: var(--muted); font-size: .78rem; }
.content-card { padding: clamp(1.1rem, 2.5vw, 1.7rem); }
.narrow-card { max-width: 44rem; }
.card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.content-card > p { color: var(--muted); }
.status-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .25rem .6rem; border-radius: 999px; font-size: .76rem; font-weight: 750; white-space: nowrap; }
.status-neutral { background: #eaf0f5; color: #53677a; }
.status-warning { background: #fff0d6; color: var(--warning); }
.status-positive { background: #def6e8; color: var(--positive); }
.status-danger { background: #fde6e4; color: var(--danger); }
.overview-card { margin-top: 1rem; }
.empty-state { display: grid; gap: .35rem; place-items: start; margin-top: 1.5rem; padding: 1.4rem; background: var(--surface-soft); border: 1px dashed #b8c6d2; border-radius: .7rem; color: var(--muted); }
.empty-state strong { color: var(--ink); }
.empty-icon { color: var(--brand); font-size: 1.8rem; }
.subject-list { width: 100%; margin: 0; padding-left: 1.25rem; color: var(--ink); }
.subject-list li + li { margin-top: .45rem; }
.field-label { display: block; margin-top: 1rem; margin-bottom: .35rem; font-weight: 700; }
.text-input { width: 100%; min-height: 2.8rem; padding: .6rem .75rem; background: #fff; color: var(--ink); border: 1px solid #aebdca; border-radius: .45rem; }
.field-help { margin: .35rem 0 1rem; color: var(--muted); }
.activation-form .button { margin-top: 1.25rem; }
.health-details { min-height: 6rem; padding: 1rem; margin-bottom: 1rem; background: var(--surface-soft); border-radius: .55rem; }
.health-details p { margin: 0; color: var(--muted); }
.qr-frame { display: grid; place-items: center; min-height: 15rem; margin: 1.25rem 0; padding: 1rem; background: #fff; border: 1px solid var(--line); border-radius: .7rem; }
.qr-frame img { width: min(100%, 15rem); aspect-ratio: 1; object-fit: contain; image-rendering: pixelated; }
.qr-unavailable { max-width: 16rem; color: var(--muted); text-align: center; }
.qr-details { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 0 0 1rem; }
.qr-details div { padding: .7rem; background: var(--surface-soft); border-radius: .5rem; }
.qr-details dt { color: var(--muted); font-size: .75rem; }
.qr-details dd { margin: .2rem 0 0; font-weight: 700; }
.qr-details small { display: block; margin-top: .25rem; color: var(--warning); }
.dialog-warning { color: var(--warning); font-size: .86rem; }
.noscript { margin: 1rem; padding: 1rem; background: #fff; }
@media (max-width: 800px) {
  .institutional-header { display: none; }
  .dashboard-layout { grid-template-columns: 1fr; }
  .sidebar { padding: .75rem 1rem; }
  .main-navigation { display: flex; overflow-x: auto; }
  .nav-item { flex: 0 0 auto; white-space: nowrap; }
  .sidebar-note { display: none; }
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .topbar { align-items: flex-start; flex-direction: column; }
  .session-area { width: 100%; justify-content: space-between; }
  .page-heading { align-items: flex-start; flex-direction: column; }
  .metric-grid { grid-template-columns: 1fr; }
  .card-heading { flex-direction: column; }
  .qr-details { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; } }

/* Dashboard subject catalogue: the viewport owns the scroll, never the page. */
.dashboard-card { padding: 1rem; }
.dashboard-toolbar { display: flex; align-items: center; gap: .8rem; margin-bottom: 1rem; }
.search-field { flex: 1; }
.search-field .text-input { min-height: 2.5rem; }
.subject-card-viewport { max-height: min(52vh, 34rem); min-height: 0; overflow: auto; padding: 0; scrollbar-gutter: stable; }
.subject-card-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.subject-card { min-width: 0; overflow: hidden; background: var(--surface-soft); border: 1px solid var(--line); border-radius: .75rem; }
.subject-card-head, .subject-card-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .8rem 1rem; }
.subject-card-head { min-height: 3.3rem; background: var(--surface); border-bottom: 1px solid var(--line); }
.subject-card-head { flex-wrap: wrap; }
.subject-details-toggle { flex: 0 0 auto; padding: .35rem .55rem; }
.subject-card-details[hidden] { display: none; }
.subject-identity { display: flex; align-items: center; min-width: 0; color: var(--muted); font-size: .83rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.device-icon { display: grid; place-items: center; width: 2rem; height: 2rem; margin-right: .55rem; border-radius: .45rem; background: var(--surface-soft); color: var(--brand); font-size: 1.3rem; }
.device-status { margin-right: .25rem; font-weight: 800; }
.status-active { color: var(--positive); }
.status-inactive { color: var(--danger); }
.device-toggle { flex: 0 0 auto; width: 2.5rem; height: 1.35rem; padding: .15rem; border: 0; border-radius: 999px; background: #c5d0da; cursor: pointer; }
.device-toggle span { display: block; width: 1.05rem; height: 1.05rem; border-radius: 50%; background: #fff; transition: transform .15s ease; }
.device-toggle.is-on { background: #18cdb5; }
.device-toggle.is-on span { transform: translateX(1.15rem); }
.subject-card-row { border-bottom: 1px solid var(--line); color: var(--muted); font-size: .83rem; }
.subject-card-row span:last-child { color: var(--ink); font-weight: 700; text-align: right; }
.subject-card-actions { display: flex; gap: .45rem; padding: .75rem 1rem; }
.card-action { flex: 1; min-width: 0; min-height: 2.3rem; padding: .4rem .55rem; font-size: .78rem; }
.card-action:last-child { color: var(--danger); }
.button:disabled, .combo-button:disabled, .card-action:disabled, .device-toggle:disabled { opacity: .48; cursor: not-allowed; transform: none; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

.combobox { position: relative; }
.combo-button { width: 100%; min-height: 2.8rem; padding: .6rem .75rem; background: #fff; border: 1px solid #aebdca; border-radius: .45rem; color: var(--ink); text-align: left; cursor: pointer; }
.combo-options { position: absolute; z-index: 5; right: 0; left: 0; max-height: 15rem; overflow-y: auto; margin-top: .25rem; padding: .25rem; background: #fff; border: 1px solid #aebdca; border-radius: .45rem; box-shadow: var(--shadow); }
.combo-options button { display: block; width: 100%; padding: .6rem .7rem; background: transparent; border: 0; border-radius: .3rem; color: var(--ink); text-align: left; cursor: pointer; }
.combo-options button:hover, .combo-options button[aria-selected="true"] { background: #eaf2f8; color: var(--brand-dark); }

.modal-layer { position: fixed; z-index: 20; inset: 0; display: grid; place-items: center; padding: 1rem; background: rgb(12 26 39 / 70%); }
.modal-layer-inner { width: min(100%, 44rem); max-height: calc(100vh - 2rem); overflow: hidden; }
.custom-modal { max-height: calc(100vh - 2rem); overflow: auto; background: var(--surface); border: 1px solid var(--line); border-radius: 1rem; box-shadow: 0 24px 80px rgb(0 0 0 / 25%); }
.modal-heading { margin: 0; padding: 1.25rem 1.5rem 1rem; border-bottom: 1px solid var(--line); }
.modal-body { padding: 1.25rem 1.5rem; }
.modal-actions { display: flex; justify-content: flex-end; gap: .7rem; padding: 1rem 1.5rem; border-top: 1px solid var(--line); background: var(--surface-soft); }
.modal-layer[aria-hidden="false"] { isolation: isolate; }
.measurement-list { overflow: auto; max-height: 22rem; border: 1px solid var(--line); border-radius: .5rem; }
.measurement-row { display: flex; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; border-bottom: 1px solid var(--line); }
.measurement-row:last-child { border-bottom: 0; }
.measurement-row time { color: var(--muted); white-space: nowrap; }
.qr-frame { min-height: 15rem; }
.configuration-form { display: grid; gap: 1rem; }
.form-edit-button { justify-self: end; }
.form-validation, .dialog-error { margin: 0; padding: .8rem 1rem; border: 1px solid #efb0aa; border-radius: .5rem; background: #fde6e4; color: var(--danger); }
.form-validation ul { margin: .45rem 0 0; padding-left: 1.2rem; }
.field-error { color: var(--danger); font-size: .78rem; font-weight: 650; }
.field-valid { color: #18734d; font-size: 1rem; font-weight: 800; }
[aria-invalid="true"] { border-color: var(--danger) !important; outline-color: var(--danger); }
.form-field:has([aria-invalid="true"]) > .field-caption { color: var(--danger); }
.form-field:has(.field-valid:not(.hidden)) > .field-caption { color: #18734d; }
.priority-rules-help { margin: 0; color: var(--muted); font-size: .82rem; font-weight: 400; }
.priority-rules-field.field-invalid > strong { color: var(--danger); }
.priority-rule-list { display: grid; gap: .55rem; }
.priority-rule-card { display: grid; grid-template-columns: minmax(12rem, 2fr) repeat(2, minmax(8rem, 1fr)) auto; align-items: center; gap: .5rem; padding: .65rem; border: 1px solid var(--line); border-radius: .45rem; background: var(--surface-soft); }
.priority-rule-card input { min-width: 0; min-height: 2.3rem; }
.priority-rule-card label { display: grid; gap: .25rem; color: var(--ink); font-size: .75rem; font-weight: 650; }
.priority-rule-card label:has(input[aria-invalid="true"]) { color: var(--danger); }
.priority-rule-card label:has(.field-valid:not(.hidden)) { color: #18734d; }
.dialog-status { margin: .5rem 0 0; color: var(--muted); font-size: .86rem; }
.configuration-review ul { max-height: 16rem; overflow: auto; margin: .75rem 0 0; padding-left: 1.2rem; }
.technical-details { grid-column: 1 / -1; border: 1px solid var(--line); border-radius: .55rem; background: var(--surface-soft); }
.technical-details summary { padding: .75rem .85rem; color: var(--brand-dark); cursor: pointer; font-weight: 750; }
.technical-fields { padding: 0 .85rem .85rem; }
.health-component { display: flex; justify-content: space-between; gap: 1rem; padding: .5rem 0; border-top: 1px solid var(--line); color: var(--muted); }
.health-component strong { color: var(--ink); }
.subject-pagination { display: flex; justify-content: flex-end; gap: .7rem; padding-top: 1rem; }
.subject-page-note { margin: .75rem 0 0; color: var(--muted); font-size: .82rem; }
.filter-combobox { flex: 0 1 13rem; min-width: 11rem; }
.form-sections { display: grid; gap: 1.25rem; }
.profile-configurations-card { display: grid; gap: .8rem; }
.profile-configuration-editor { min-width: 0; }
.profile-configuration-status { margin: 0; color: var(--muted); white-space: pre-line; }
.profile-configurations-card > .configuration-form { margin-top: .5rem; }
.profile-impact { display: grid; gap: .45rem; }
.profile-impact-summary { padding: .75rem; border-left: .25rem solid var(--warning); background: var(--surface-soft); font-weight: 650; }
.profile-impact ul { margin: .25rem 0; padding-left: 1.25rem; }
.profile-diff-row { overflow-wrap: anywhere; }
.subject-assignment-form .form-section { max-width: 54rem; }
.form-section { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.form-section h3 { grid-column: 1 / -1; margin: 0; color: var(--brand-dark); font-size: .9rem; text-transform: uppercase; letter-spacing: .08em; }
.form-field { position: relative; display: grid; gap: .3rem; min-width: 0; font-size: .8rem; font-weight: 700; }
.form-field .text-input, .form-field .combo-button { min-height: 2.5rem; font-size: .9rem; font-weight: 400; }
.field-caption { width: fit-content; border-radius: .2rem; cursor: help; outline-offset: .18rem; }
.field-tooltip { z-index: 4; visibility: hidden; position: absolute; width: min(22rem, calc(100vw - 3rem)); margin-top: 1.4rem; padding: .55rem .65rem; border: 1px solid #98a9b8; border-radius: .4rem; background: #13283a; box-shadow: var(--shadow); color: #fff; font-size: .78rem; font-weight: 500; line-height: 1.35; opacity: 0; pointer-events: none; }
.field-caption:hover + .field-tooltip, .field-caption:focus + .field-tooltip { visibility: visible; opacity: 1; }
.configuration-validation-help { margin: 0; padding: .7rem .8rem; border-left: .25rem solid var(--brand); background: var(--surface-soft); color: var(--muted); font-size: .84rem; }
.measurement-field { grid-column: 1 / -1; }
.measurement-selector { display: grid; gap: .65rem; padding: .75rem; border: 1px solid var(--line); border-radius: .5rem; background: var(--surface); font-weight: 400; }
.measurement-selection-status, .measurement-profile-notice, .measurement-empty { margin: 0; color: var(--muted); font-size: .82rem; }
.measurement-profile-notice { padding: .55rem .65rem; border-left: .2rem solid var(--warning); background: #fff7dd; color: var(--ink); }
.measurement-subheading { color: var(--brand-dark); font-size: .8rem; }
.measurement-all-action { justify-self: start; }
.measurement-card-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: .5rem; }
.measurement-card { display: flex; align-items: center; justify-content: space-between; gap: .6rem; min-width: 0; padding: .55rem .65rem; border: 1px solid var(--line); border-radius: .45rem; background: var(--surface-soft); }
.measurement-card span { min-width: 0; overflow-wrap: anywhere; }
.measurement-card-action { flex: 0 0 auto; min-height: 2rem; padding: .3rem .5rem; font-size: .75rem; }
.measurement-selected { border-color: #8abfb5; background: #edf9f6; }
.measurement-warning { border-color: #d19c39; background: #fff7dd; }
input[readonly] { background: #eef1f4; color: var(--muted); cursor: not-allowed; }
@media (max-width: 700px) { .dashboard-toolbar { align-items: stretch; flex-direction: column; } .filter-combobox { min-width: 0; } .subject-card-viewport { max-height: 52vh; } .form-section { grid-template-columns: 1fr; } .form-section h3 { grid-column: auto; } .technical-details { grid-column: auto; } .modal-actions { flex-wrap: wrap; } .priority-rule-card { grid-template-columns: 1fr; } .global-message { top: .5rem; right: .5rem; width: calc(100vw - 1rem); } }

/* W2: operational tables and controls, never biometric values. */
.w2-field { display:grid; gap:.4rem; margin-block:.8rem; min-width:0; }
.w2-list { display:grid; gap:1rem; margin-block:1rem; }
.w2-check { display:flex; align-items:center; gap:.6rem; padding:.5rem; }
.w2-review { padding:1rem; background:var(--surface-soft); border:1px solid var(--line); }
#w2-exports > *, #w2-periods > *, #w2-acquisitions > * { margin-block:1rem; }
.w2-table { width:100%; border-collapse:collapse; background:var(--surface); }
.w2-table th, .w2-table td { padding:.6rem; text-align:left; border-bottom:1px solid var(--line); }
.device-table-scroll { width:100%; overflow-x:auto; border:1px solid var(--line); border-radius:.65rem; }
.device-table { width:100%; border-collapse:collapse; background:var(--surface-soft); }
.device-table th, .device-table td { padding:.8rem 1rem; text-align:left; border-bottom:1px solid var(--line); vertical-align:middle; }
.device-table thead th { background:var(--surface); color:var(--muted); font-size:.82rem; }
.device-table tbody tr:last-child > * { border-bottom:0; }
.device-table tbody th { font-weight:750; }
.device-sort { padding:0; border:0; background:transparent; color:inherit; font:inherit; font-weight:800; cursor:pointer; }
.device-sort:focus-visible { outline:3px solid rgb(11 92 173 / 30%); outline-offset:3px; }
.device-profile-summary { white-space:pre-line; font-size:.88rem; }
.device-row-actions { display:flex; gap:.45rem; white-space:nowrap; }
.device-pagination { display:flex; align-items:center; justify-content:flex-end; gap:.65rem; padding-top:1rem; }
.device-result-count { margin-right:auto; color:var(--muted); font-size:.85rem; }
.device-form { display:grid; gap:.85rem; }
.device-form .form-field { display:grid; gap:.3rem; }
.device-form .field-caption { font-size:.9rem; font-weight:750; }
.device-form .field-help { margin:0; color:var(--muted); font-size:.82rem; }
.device-validation { margin:0; padding:.65rem .8rem; border:1px solid #e2a6a2; border-left:.25rem solid var(--danger); border-radius:.35rem; background:#fff1f0; color:var(--danger); }
.device-form [aria-invalid="true"] { border-color:var(--danger); }
@media (max-width:700px) { .device-pagination { flex-wrap:wrap; } .device-result-count { flex-basis:100%; } .device-row-actions { flex-direction:column; } }
.w2-bar-row { display:grid; grid-template-columns:minmax(9rem,13rem) minmax(0,1fr); gap:.6rem; margin:.3rem; }
.w2-bar { background:var(--brand); color:white; min-width:1.8rem; text-align:right; padding-right:.4rem; border-radius:.2rem; }
.w2-bars { max-height:25rem; overflow:auto; }

.subject-runtime-details { display: block; }
.subject-runtime-details dl { margin: 0; }
.subject-runtime-details dd { margin: 0; text-align: right; font-weight: 600; }

.modal-heading-with-action { flex-direction: row; align-items: center; }
.modal-heading-with-action > div { min-width: 0; }
.modal-heading-with-action > .form-edit-button { flex-shrink: 0; margin-left: auto; }

/* Acquisition results scroll independently and remain inside the workspace. */
#w2-acquisitions, #view-acquisitions { min-width: 0; max-width: 100%; }
.acquisition-filters { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto; align-items: end; gap: .8rem; }
.acquisition-filters, .acquisition-filters .text-input, .acquisition-filters .combo-button, .acquisition-filters .button { font-size: .875rem; }
.acquisition-filters > .w2-field { min-width: 0; margin: 0; }
.acquisition-filters .text-input, .acquisition-filters .combo-button { width: 100%; min-width: 0; max-width: 100%; }
.acquisition-filters > button { align-self: end; min-height: 2.8rem; }
.acquisition-filters > .dialog-error { grid-column: 1 / -1; }
.acquisition-results { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; min-width: 0; }
.acquisition-scroll { min-width: 0; max-width: 100%; height: min(50vh, 28rem); overflow: auto; padding: .7rem; background: var(--surface-soft); }
.acquisition-scroll .w2-bars { max-height: none; overflow: visible; }
.acquisition-scroll .w2-table thead { position: sticky; top: 0; background: var(--surface); }
.acquisition-scroll td { overflow-wrap: anywhere; }
.acquisition-subject-picker { position: relative; }
.acquisition-subject-picker summary { cursor: pointer; }
.acquisition-subject-options { position: absolute; z-index: 5; top: 100%; right: 0; width: min(22rem, 80vw); padding: .6rem; border: 1px solid var(--line); border-radius: .5rem; background: var(--surface); box-shadow: 0 .4rem 1rem #0002; }
.acquisition-subject-options > button { margin: .2rem; }
.acquisition-subject-list { max-height: 15rem; overflow: auto; overflow-wrap: anywhere; }
@media (max-width: 700px) { .acquisition-results { grid-template-columns: minmax(0, 1fr); } .acquisition-scroll { height: 35vh; } }

.acquisition-scroll caption { caption-side: top; text-align: left; font-weight: 700; padding-bottom: .75rem; }
.acquisition-sort { display: inline-flex; align-items: center; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; font-weight: inherit; cursor: pointer; text-align: left; }
.acquisition-sort:focus-visible { outline: 2px solid var(--brand); outline-offset: .25rem; }
@media (max-width: 1200px) { .acquisition-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); } .acquisition-filters > button { justify-self: end; grid-column: 2; } }
@media (max-width: 520px) { .acquisition-filters { grid-template-columns: minmax(0, 1fr); } .acquisition-filters > button { grid-column: 1; } }

.subject-results-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: .8rem; }
.subject-results-footer .subject-pagination { padding: 0; flex-wrap: wrap; }
#subject-total { margin: 0 0 0 auto; text-align: right; font-weight: 600; }

.subject-table .subject-card { border: 0; border-radius: 0; overflow: visible; }
.subject-table thead { position: sticky; top: 0; z-index: 1; }
.subject-table .subject-table-summary > th { white-space: nowrap; }
.subject-table .subject-table-summary > td { white-space: nowrap; }
.subject-table .subject-table-detail-row[hidden] { display: none; }
.subject-table .subject-table-detail-row > td { padding: 0; white-space: normal; }
.subject-table .subject-card:not(:last-child) > tr:last-child > * { border-bottom: 1px solid var(--line); }

.subject-catalog-card .dashboard-toolbar { flex-wrap: wrap; }
.subject-catalog-card .search-field { min-width: 0; flex: 1 1 14rem; }
.subject-catalog-card .filter-combobox { min-width: 0; flex: 1 1 11rem; }

@media (max-width:700px) { .subject-catalog-card .filter-combobox, .subject-catalog-card .search-field { flex: 0 0 auto; width: 100%; } }

.session-username { color: var(--ink); font-weight: 750; }
.nav-item { display: flex; align-items: center; gap: .7rem; }
.nav-icon { width: 1.2rem; height: 1.2rem; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.nav-separator { width: 100%; border: 0; border-top: 1px solid #3c566d; margin: .6rem 0; }
.sidebar-project-reference { display: grid; gap: .3rem; margin-top: auto; padding: 1rem .75rem 0; border-top: 1px solid #3c566d; color: #aec5d8; font-size: .7rem; line-height: 1.45; overflow-wrap: anywhere; }
@media (max-width:800px) { .nav-separator { width: 0; height: auto; border-top: 0; border-left: 1px solid #3c566d; flex: 0 0 1px; align-self: stretch; margin: .2rem .4rem; } }

.period-form .acquisition-subject-options { left: 0; right: auto; width: min(28rem, 100%); }

.period-dates, .period-output-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem 1rem; min-width: 0; }
.period-form fieldset { min-width: 0; }
@media (max-width: 600px) { .period-dates, .period-output-grid { grid-template-columns: minmax(0, 1fr); } }

/* Collection periods share the device registry table styling. */
.period-table td { vertical-align: top; }
.period-table td:first-child, .period-table td:nth-child(2) { white-space: nowrap; }
.period-output-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
.period-row-actions { display: flex; flex-wrap: nowrap; gap: .4rem; }
.period-row-actions .button { flex-shrink: 0; white-space: nowrap; }
.period-output-tag { display: inline-block; padding: .25rem .55rem; border: 1px solid var(--line); border-radius: .45rem; background: var(--surface); font-size: .8rem; white-space: nowrap; }
.period-scope { min-width: 0; margin: 0 0 1rem; border: 1px solid var(--line); border-radius: .5rem; padding: .8rem; }
.period-outputs { min-width: 0; border: 0; padding: 0; margin: 0; }
.period-list-card > .muted { margin-bottom: 0; }

/* Compact scope tables scroll inside the period form. */
.period-scope-scroll { max-height: 14rem; overflow: auto; overscroll-behavior: contain; }
.period-scope-table { font-size: .82rem; }
.period-scope-table th, .period-scope-table td { padding: .4rem .55rem; white-space: nowrap; }
.period-scope-table thead th { position: sticky; top: 0; z-index: 1; }
.period-scope-table .button { min-height: 2rem; padding: .3rem .55rem; font-size: .8rem; }
.period-scope-scroll:focus-visible { outline: 3px solid rgb(11 92 173 / 30%); outline-offset: 2px; }

.period-output-options > legend { font-size: .85rem; }
.period-output-grid .w2-check { font-size: .82rem; padding: .35rem; }
.period-output-tag { font-size: .75rem; }

.period-identity { border:0; padding:0; margin:0; display:grid; gap:1rem; min-width:0; }
.period-identity textarea { resize:vertical; width:100%; }
.period-search-form { display:grid; grid-template-columns:minmax(12rem,1fr) minmax(10rem,16rem) auto auto; gap:1rem; align-items:end; }
.period-filter-control { position:relative; display:flex; align-items:center; }
.period-filter-control .text-input { width:100%; min-width:0; padding-right:2.6rem; }
.period-filter-clear { position:absolute; right:.3rem; padding:.15rem .5rem; border:0; background:transparent; font-size:1.35rem; min-height:2rem; }
.period-search-form .w2-field { min-width:0; margin:0; }
.period-revision { color:var(--muted); }
@media(max-width:760px) { .period-search-form { grid-template-columns:minmax(0,1fr) minmax(0,1fr); } }

.ordinary-export-formats { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:1rem; }
.ordinary-export-form .period-dates { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:1rem; }
.ordinary-export-form .w2-field { min-width:0; }
.ordinary-export-form input[type=datetime-local] { font-size:.875rem; min-width:0; }

.export-period-header { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.export-period-header h3 { flex:1; min-width:0; margin:0; }
.export-period-toggle { border:0; background:transparent; color:inherit; font:inherit; font-weight:inherit; text-align:left; cursor:pointer; overflow-wrap:anywhere; padding:.5rem 0; }
.export-period-header .period-row-actions { flex-shrink:0; margin-left:auto; }
.export-period-body[hidden] { display:none; }
.export-period-body { margin-top:1rem; }
.export-period-body .device-table-scroll { max-height:28rem; overflow:auto; }
.export-period-toggle:focus-visible { outline:2px solid var(--brand); outline-offset:3px; }
