/* ARCH · brand v1.0 (October 2026, Venus Systems Ltd brand kit). Dark interface: Obsidian canvas, Onyx panels, Chalk text,
   Ion (#3DD9F5) used sparingly and only for interaction: primary actions, focus, selection, links and live data. Ion is
   never a status: green / amber / red are used ONLY for states. Geist + Geist Mono are bundled (fonts/, SIL OFL 1.1):
   nothing is fetched from the internet. Every colour below is a token, so the look can change without touching logic.
   Paper (the printed report, report preview, site record) keeps its own light tokens: see .paper-tokens below. */

@font-face{font-family:'Geist';font-style:normal;font-display:swap;font-weight:100 900;
  src:url('./fonts/geist-variable.woff2') format('woff2-variations'),url('./fonts/geist-variable.woff2') format('woff2')}
@font-face{font-family:'Geist Mono';font-style:normal;font-display:swap;font-weight:100 900;
  src:url('./fonts/geist-mono-variable.woff2') format('woff2-variations'),url('./fonts/geist-mono-variable.woff2') format('woff2')}

:root{
  color-scheme:dark;
  /* brand core */
  --obsidian:#0B0C0F;--onyx-0:#111216;--onyx:#1A1C22;--onyx-2:#24272F;--onyx-3:#2C3039;--chalk:#ECECEA;
  --ion:#3DD9F5;--ion-600:#34B1C8;--ion-700:#297F91;--ion-soft:#1E4E59;--ion-900:#183037;--on-ion:#111216;
  /* roles (what the components use) */
  --canvas:var(--onyx-0);          /* page background */
  --surface:var(--onyx);           /* cards, panels, inputs */
  --white:var(--onyx);             /* legacy name: a raised surface */
  --tint:var(--onyx-2);--tint-2:var(--onyx-3);   /* quiet fills: subtle buttons, notes, hover */
  --ink:var(--chalk);--ink-2:#C5C7CC;--muted:#9A9DA6;--faint:#6E717B;
  --strong:var(--chalk);           /* headings and emphasised labels */
  --line:#2A2D35;--line-2:#363A44;
  --fill:var(--ion);--fill-hover:#63E2F8;--on-fill:var(--on-ion);   /* primary actions */
  --accent:var(--ion);--steel:var(--ion);--steel-ink:var(--ion);     /* links, focus, live data */
  --select-bg:var(--ion-900);--select-line:var(--ion-700);           /* selected rows, chosen answers */
  --navy:var(--onyx-2);--navy-2:var(--onyx-3);--navy-3:#353945;      /* legacy names: dark chrome fills */
  --green:#5FD38D;--green-bg:rgba(95,211,141,.10);--green-line:rgba(95,211,141,.32);
  --amber:#E8B54A;--amber-bg:rgba(232,181,74,.10);--amber-line:rgba(232,181,74,.34);
  --red:#F06A6A;--red-bg:rgba(240,106,106,.10);--red-line:rgba(240,106,106,.34);
  --planned:#A39BFF;
  --sans:'Geist',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'Geist Mono',ui-monospace,'SFMono-Regular',Menlo,Consolas,monospace;
  --r-card:14px;--r-btn:12px;--r-tile:8px;
  --shadow:0 1px 0 rgba(255,255,255,.02) inset,0 1px 2px rgba(0,0,0,.35);
  --shadow-lift:0 10px 24px -8px rgba(0,0,0,.55),0 2px 6px -2px rgba(0,0,0,.4);
  --glow:0 0 0 1px rgba(61,217,245,.18),0 8px 28px -12px rgba(61,217,245,.35);
}
/* Paper: anything that is a document (A4 report, report preview, site record, charts) keeps the light look it prints with. */
.report-preview,.rp-sheet,.site-record,.paper-tokens{
  color-scheme:light;
  --canvas:#F5F7FA;--surface:#FFFFFF;--white:#FFFFFF;--tint:#E8EEF6;--tint-2:#DCE5F0;
  --ink:#1B2532;--ink-2:#475467;--muted:#667085;--faint:#98A2B3;--strong:#1B2532;
  --line:#E4E9F0;--line-2:#D0D8E2;--navy:#1B2532;--navy-2:#26354C;--navy-3:#33465F;
  --steel:#5C86B6;--steel-ink:#3D6591;--accent:#3D6591;--fill:#1B2532;--on-fill:#FFFFFF;
  --green:#067647;--green-bg:#ECFDF3;--green-line:#ABEFC6;--amber:#B54708;--amber-bg:#FFFAEB;--amber-line:#FEDF89;
  --red:#B42318;--red-bg:#FEF3F2;--red-line:#FECDCA;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:'ss01' 0}
::selection{background:var(--tint-2)}
[hidden]{display:none!important}

/* Typography */
h1{font-size:30px;line-height:1.15;font-weight:800;letter-spacing:-.025em;margin:6px 0 22px}
h2{font-size:20px;line-height:1.3;font-weight:750;letter-spacing:-.015em;margin:0 0 12px}
h3{font-size:16px;line-height:1.35;font-weight:700;margin:0 0 8px}
p{margin:8px 0 14px}
small{display:block;font-size:13px}
.muted,small{color:var(--muted)}
.mono,code,pre{font-family:var(--mono)}
.mono{font-size:12.5px;letter-spacing:-.01em;overflow-wrap:anywhere}
a{color:var(--steel-ink);text-underline-offset:3px}
.eyebrow{color:var(--steel-ink);font-size:13px;font-weight:700;letter-spacing:.005em}

/* Controls */
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;min-height:50px;border:1px solid var(--line-2);border-radius:var(--r-btn);padding:12px 18px;background:var(--surface);
  color:var(--strong);font-weight:650;font-size:15px;line-height:1.25;transition:background-color .15s,border-color .15s,box-shadow .15s,transform .05s;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation}
button:hover{background:var(--tint);border-color:var(--line-2)}
button:active{transform:translateY(1px)}
button:disabled{cursor:default;opacity:.5;transform:none}
:is(button,a,input,textarea,select,summary):focus-visible{outline:3px solid var(--steel);outline-offset:2px}
.primary{background:var(--fill);color:var(--on-fill);border-color:var(--fill);box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 6px 18px -8px rgba(61,217,245,.45)}
.primary:hover{background:var(--fill-hover);border-color:var(--fill-hover)}
.subtle{background:var(--tint);border-color:transparent;color:var(--strong)}
.subtle:hover{background:var(--tint-2);border-color:transparent}
.danger{color:var(--red)}
.clear{border:0;background:none;text-decoration:underline;text-underline-offset:3px;font-size:14px;font-weight:600;padding:8px 2px;min-height:44px;color:var(--steel-ink)}
.clear:hover{background:none;color:var(--strong)}
.clear.danger{color:var(--red)}
.wide{width:100%}
.button-link{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:12px 18px;border:1px solid var(--line-2);border-radius:var(--r-btn);
  color:var(--steel-ink);background:var(--surface);font-weight:650;text-decoration:none}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.actions>*{flex:1 1 150px}
.actions button[aria-pressed=true]{background:var(--tint);border-color:var(--steel)}
input:not([type=file]):not([type=checkbox]):not([type=radio]),textarea,select{width:100%;border:1px solid var(--line-2);border-radius:var(--r-tile);padding:12px 14px;
  color:var(--ink);background:var(--surface);min-height:50px;font-size:16px;transition:border-color .15s,box-shadow .15s}
input:not([type=file]):focus,textarea:focus,select:focus{border-color:var(--steel);box-shadow:0 0 0 4px rgba(61,217,245,.14);outline:none}
input::placeholder,textarea::placeholder{color:var(--faint)}
textarea{min-height:110px;resize:vertical;line-height:1.5}
select{appearance:none;-webkit-appearance:none;padding-right:42px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 7.5l5 5 5-5' fill='none' stroke='%239A9DA6' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:18px}
input[type=file]{font-size:14px;width:100%;padding:10px;border:1px dashed var(--line-2);border-radius:var(--r-tile);background:var(--canvas)}
input[type=file]::file-selector-button{font:inherit;font-weight:650;border:0;border-radius:10px;background:var(--fill);color:var(--on-fill);padding:10px 14px;margin-right:12px;cursor:pointer}
input[type=checkbox],input[type=radio]{accent-color:var(--ion)}
label{display:block;font-weight:650;font-size:14px;color:var(--ink);margin:14px 0 6px}
progress{width:100%;height:5px;border:0;border-radius:99px;overflow:hidden;background:var(--tint);appearance:none;-webkit-appearance:none}
progress::-webkit-progress-bar{background:var(--tint);border-radius:99px}
progress::-webkit-progress-value{background:var(--steel);border-radius:99px}
progress::-moz-progress-bar{background:var(--steel);border-radius:99px}

/* Header */
header{position:sticky;top:0;z-index:7;background:rgba(17,18,22,.86);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);
  border-bottom:1px solid var(--line);padding:max(12px,env(safe-area-inset-top)) max(18px,calc((100% - var(--page-w))/2 + 18px)) 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand-row{display:flex;align-items:center;gap:11px;min-width:0}
.brand-mark{width:40px;height:33px;object-fit:contain;flex:none}
.brand-word{display:block;width:77px;height:20px}
.brand{font-size:20px;letter-spacing:.2em;font-weight:800;line-height:1;color:var(--strong);display:flex;align-items:baseline}
.brand span{color:var(--steel);font-size:10px;font-weight:750;margin-left:7px;letter-spacing:.24em}
.identity{font-family:var(--mono);color:var(--muted);font-size:11px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62vw}
.pill{display:inline-flex;align-items:center;gap:7px;flex:none;font-size:12.5px;font-weight:650;border-radius:99px;padding:6px 11px 6px 10px;border:1px solid transparent;white-space:nowrap}
.pill::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
.pill.ok{background:var(--green-bg);color:var(--green);border-color:var(--green-line)}
.pill.warn{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-line)}
.pill.idle{background:var(--canvas);color:var(--ink-2);border-color:var(--line)}
.build-notice{font-size:11px;color:var(--muted);background:var(--obsidian);padding:7px 18px;text-align:center;font-weight:700;letter-spacing:.06em;border-bottom:1px solid var(--tint-2)}

/* Layout */
:root{--page-w:960px}
body.home-wide{--page-w:1440px}
main{max-width:var(--page-w);margin:auto;padding:24px 18px 230px}
.topline{display:flex;align-items:center;gap:12px;margin:0 0 20px}
.topline h1,.topline h2{margin:0}
.topline h2{font-size:21px;letter-spacing:-.02em;line-height:1.2}
.topline .grow{flex:1;min-width:0}
.topline small{margin-top:2px}
.topline>.subtle{flex:none;min-height:44px;padding:10px 14px;font-size:14px;border-radius:12px}
.section-meta{font-size:11.5px;color:var(--muted);margin-top:4px}

/* Cards and panels */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);margin:0 0 16px;padding:20px;box-shadow:var(--shadow);overflow-wrap:anywhere}
.card>h2:first-child{margin-top:0}
.context{background:var(--tint);border:1px solid var(--line-2);border-radius:16px;padding:16px 18px;margin:14px 0 20px;color:var(--ink-2);font-size:14.5px}
.context h3{font-size:13px;font-weight:700;color:var(--strong);margin:0 0 8px;letter-spacing:.01em}
.context p{margin:6px 0}
.context small{color:var(--ink-2);font-size:12.5px}
.card .context{margin:12px 0}
.warning{padding:12px 16px;background:var(--amber-bg);color:var(--amber);border:1px solid var(--amber-line);border-radius:12px;margin:12px 0;font-size:14.5px}
.empty{text-align:center;padding:32px 20px;color:var(--muted)}
.suggestion{margin-top:14px;padding:14px 16px;background:var(--canvas);border:1px solid var(--line);border-radius:14px}
.suggestion summary{cursor:pointer;font-weight:700;min-height:32px;color:var(--strong)}
.suggestion p{font-size:14px}
.suggestion button{margin-top:10px}
.field-help{margin:10px 0;font-size:12.5px}
pre{white-space:pre-wrap;font-size:12px;overflow-wrap:anywhere;background:var(--canvas);border:1px solid var(--line);border-radius:12px;padding:12px}
details>summary{cursor:pointer}

/* Examination list */
.exam-card{padding:0;overflow:hidden;border-color:var(--line-2);box-shadow:var(--shadow-lift)}
.card.exam-card{padding:0}
.exam-title{background:radial-gradient(120% 140% at 100% 0%,rgba(61,217,245,.10) 0%,rgba(61,217,245,0) 45%),var(--onyx-2);color:var(--chalk);border-bottom:1px solid var(--line-2);padding:20px 22px 18px;
  display:grid;grid-template-columns:1fr auto;column-gap:12px;align-items:start}
.exam-title small{grid-column:2;grid-row:1;align-self:start;color:var(--ink-2);font-size:10.5px;font-weight:750;letter-spacing:.12em;
  border:1px solid var(--line-2);background:rgba(255,255,255,.03);border-radius:99px;padding:4px 9px;white-space:nowrap}
.exam-title h2{grid-column:1;grid-row:1;font-size:24px;font-weight:800;letter-spacing:-.02em;margin:0;color:var(--chalk)}
.exam-title p{grid-column:1/-1;margin:3px 0 0;color:var(--ink-2);font-weight:550}
.exam-title .mono{grid-column:1/-1;color:var(--ion);font-size:12px;margin-top:6px}
.exam-content{padding:16px 22px 22px}
.exam-content p{margin:6px 0;font-size:14.5px}
.exam-content .muted{font-size:13.5px;padding-top:8px;border-top:1px solid var(--line);margin-top:12px}
.exam-content button{margin-top:8px}

/* Site sheet: section list */
.sections{border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;background:var(--surface);box-shadow:var(--shadow)}
.section-row{display:flex;gap:14px;width:100%;align-items:center;border:0;border-radius:0;border-bottom:1px solid var(--line);text-align:left;padding:16px 16px 16px 14px;background:var(--surface);min-height:68px}
.section-row:hover{background:var(--tint)}
.section-row:last-child{border-bottom:0}
.section-row>span[aria-hidden]{color:var(--faint);font-size:22px;font-weight:400;line-height:1}
.section-num{background:var(--canvas);border:1px solid var(--line);color:var(--ink-2);width:36px;height:36px;display:grid;place-items:center;border-radius:10px;font:500 12px var(--mono);flex:none}
.section-body{flex:1;min-width:0}
.section-title{font-size:15.5px;font-weight:700;color:var(--strong)}
.section-progress{display:flex;align-items:center;gap:12px;font:400 11.5px var(--mono);color:var(--muted);margin-top:8px;white-space:nowrap}
.section-progress progress{flex:1;min-width:0;width:auto}

/* Questions */
.question-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.question-top h3{flex:1;font-size:16.5px;margin:2px 0 4px}
.card>.eyebrow{font-size:12px;margin-bottom:2px}
.field-state{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;letter-spacing:.06em;font-weight:750;text-transform:uppercase;color:var(--muted);
  white-space:nowrap;padding:4px 9px;border-radius:99px;background:transparent;border:1px solid transparent;flex:none}
.field-state::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}
.field-state[data-tone=muted]{padding-left:0;color:var(--muted)}
.field-state[data-tone=muted]::before{display:none}
.field-state[data-tone=received]{color:var(--green);background:var(--green-bg);border-color:var(--green-line)}
.field-state[data-tone=waiting]{color:var(--amber);background:var(--amber-bg);border-color:var(--amber-line)}
.field-state[data-tone=attention]{color:var(--red);background:var(--red-bg);border-color:var(--red-line)}
.field-state[data-tone=steel]{color:var(--steel-ink);background:var(--tint);border-color:var(--tint-2)}
.choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;margin:14px 0 6px}
.choices button{min-height:52px;padding:10px 8px;border-radius:var(--r-tile);font-size:14.5px;font-weight:650;overflow-wrap:normal;word-break:normal;hyphens:manual;background:var(--surface)}
.choices button:hover{border-color:var(--steel);background:var(--tint)}
.choices .chosen,.choices .chosen:hover{color:var(--chalk);background:var(--select-bg);border-color:var(--ion);box-shadow:0 0 0 3px var(--tint-2)}
.sheet-grid{display:block}

/* Chips (operation states) */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;border-radius:99px;padding:5px 10px;
  white-space:normal;border:1px solid transparent}
.chip::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.received{background:var(--green-bg);color:var(--green);border-color:var(--green-line)}
.waiting{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-line)}
.attention{background:var(--red-bg);color:var(--red);border-color:var(--red-line)}
.neutral{background:var(--tint);color:var(--ink-2)}

/* Footer: sync bar + tab bar */
footer{position:fixed;bottom:0;left:0;right:0;z-index:6;background:rgba(17,18,22,.92);-webkit-backdrop-filter:saturate(1.6) blur(16px);backdrop-filter:saturate(1.6) blur(16px);
  border-top:1px solid var(--line);padding:10px 14px max(10px,env(safe-area-inset-bottom))}
.syncbar{max-width:720px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 16px;border-radius:16px;
  background:var(--canvas);border:1px solid var(--line);font-size:13.5px;font-weight:650;color:var(--ink-2)}
.syncbar.received{background:var(--green-bg);border-color:var(--green-line);color:var(--green)}
.syncbar.waiting{background:var(--amber-bg);border-color:var(--amber-line);color:var(--amber)}
.syncbar.attention{background:var(--red-bg);border-color:var(--red-line);color:var(--red)}
.syncbar.neutral{background:var(--canvas);border-color:var(--line);color:var(--ink-2)}
.sync-status{display:flex;align-items:center;gap:9px;min-width:0;line-height:1.3}
.sync-status::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.syncbar.neutral .sync-status::before{background:var(--faint)}
.syncbar.waiting .sync-status::before{animation:pulse 1.6s ease-in-out infinite}
.syncbar button{flex:none;min-height:46px;padding:10px 18px;border-radius:12px;background:var(--fill);color:var(--on-fill);border-color:var(--fill);font-size:14.5px}
.syncbar button:hover{background:var(--fill-hover)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.syncbar.waiting .sync-status::before{animation:none}button{transition:none}}
.tabs{max-width:720px;margin:8px auto 0;display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.tabs button{border:0;background:transparent;padding:6px 4px 4px;font-size:12px;font-weight:650;color:var(--ink-2);border-radius:12px;min-height:58px;
  display:flex;flex-direction:column;align-items:center;gap:1px;box-shadow:none}
.tabs button:hover{background:transparent;color:var(--strong)}
.tabs .icon{width:22px;height:22px;padding:3px;box-sizing:content-box;border-radius:10px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;margin-bottom:1px}
.tabs button.active{color:var(--strong)}
.tabs button.active .icon{background:var(--tint);color:var(--strong)}
.tabs small{font-size:10.5px;font-weight:500;color:var(--muted)}

/* Toast */
#message{position:fixed;bottom:calc(150px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(calc(100% - 28px),700px);background:var(--onyx-2);border:1px solid var(--line-2);
  color:var(--chalk);border-radius:12px;padding:12px 16px;z-index:8;display:none;font-size:14px;font-weight:550;box-shadow:0 16px 32px -10px rgba(0,0,0,.6)}
#message.visible{display:block;animation:rise .2s ease-out}
#message.error{background:#3A1A1C;border-color:var(--red-line);color:#FFD9D9}
@keyframes rise{from{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%,0)}}

/* Photos */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}
.photo-card{padding:0;overflow:hidden;position:relative}
.photo-card h2{font:500 12px var(--mono);color:var(--chalk);background:rgba(11,12,15,.82);padding:4px 9px;border-radius:8px;margin:0;position:absolute;top:10px;left:10px;z-index:1}
.photo-card img{display:block;width:100%;height:180px;object-fit:cover;background:var(--canvas);border-radius:0}
.photo-card>small,.photo-card>textarea,.photo-card>button,.photo-card>div,.photo-card>p,.photo-card>label{margin-left:14px;margin-right:14px;width:calc(100% - 28px)}
.photo-card>small{margin-top:10px}
.photo-card>button:last-child,.photo-card>div:last-child{margin-bottom:14px}
.photo-card textarea{min-height:70px;margin-top:8px}

/* Outbox */
.statrow{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0 18px}
.stat{padding:14px 16px;background:var(--surface);border-radius:16px;border:1px solid var(--line);box-shadow:var(--shadow);font-size:13px;font-weight:600;color:var(--ink-2)}
.stat strong{display:block;font-size:28px;font-weight:800;letter-spacing:-.02em;color:var(--muted);line-height:1.15}
.stat-received.has-value strong{color:var(--green)}
.stat-waiting.has-value strong{color:var(--amber)}
.stat-attention.has-value strong{color:var(--red)}
.operation{border-left:4px solid var(--line-2)}
.operation h3{margin-top:10px;font-size:14px;letter-spacing:.02em}
.operation.attention{border-color:var(--red-line);border-left-color:var(--red);background:var(--surface);color:var(--ink)}
.operation.received{border-left-color:var(--green);color:var(--ink);background:var(--surface)}
.operation.waiting{border-left-color:var(--amber);color:var(--ink);background:var(--surface)}
.operation .mono{color:var(--muted)}

/* Assorted existing components */
.equipment{border:0;padding:0;margin:12px 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px}
.equipment legend{font-size:13px;font-weight:650;color:var(--ink-2);margin-bottom:6px}
.equipment label{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;margin:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.equipment input[type=checkbox]{width:20px;min-height:20px;height:20px;padding:0}
.weather-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.weather-grid label{font-size:13.5px}
.weather-result{margin-top:16px}
.weather-result a{display:block}
.register-row{display:block;width:100%;text-align:left;margin:8px 0;border-radius:var(--r-tile)}
.register-row small{font-weight:400}
.finding{padding:12px 0;border-bottom:1px solid var(--line)}
.finding p{white-space:pre-wrap}
.check-label{display:flex;align-items:center;gap:10px}
.check-label input[type=checkbox]{width:22px;min-height:22px;height:22px}
.source-hash{overflow-wrap:anywhere;font-size:12px;font-family:var(--mono)}
.source-excerpt{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit}
.source-form input{min-width:0}
.source-form label{display:block}
.local-history-row{border-left:5px solid var(--steel)}
.local-history-row.withdrawn{border-left-color:var(--faint);opacity:.8}
.local-history-row fieldset{margin-top:16px;border:1px solid var(--line);border-radius:12px}
.local-history-row .warning:first-child{margin-top:0}
.mfa-qr{display:block;width:220px;height:220px;max-width:100%;margin:12px auto;background:#fff;border-radius:12px;padding:8px;border:1px solid var(--line)}

/* Sign-in, two-factor and set-up screens (connected build) · brand v1.0
   Obsidian backdrop with a fine engineering grid and a faint Ion glow, an Onyx card, the chalk ARCH wordmark. */
body.auth-mode{min-height:100vh;min-height:100dvh;background-color:var(--obsidian);
  background-image:radial-gradient(60% 45% at 50% 0%,rgba(61,217,245,.10),rgba(61,217,245,0) 70%),
    linear-gradient(rgba(236,236,234,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(236,236,234,.035) 1px,transparent 1px);
  background-size:100% 100%,48px 48px,48px 48px;background-position:center top,center center,center center;
  background-repeat:no-repeat,repeat,repeat;background-attachment:fixed}
body.auth-mode>header,body.auth-mode>.build-notice,body.auth-mode>footer{display:none}
body.auth-mode main.signin{max-width:none;min-height:100vh;min-height:100dvh;display:grid;place-items:center;
  padding:max(28px,env(safe-area-inset-top)) 18px max(28px,env(safe-area-inset-bottom))}
.auth-card{width:min(100%,420px);padding:36px 30px 20px;border-radius:var(--r-card);color:var(--chalk);text-align:center;
  background:var(--onyx);border:1px solid var(--line-2);
  box-shadow:0 40px 90px -30px rgba(0,0,0,.85),inset 0 1px 0 rgba(255,255,255,.04);animation:authIn .45s cubic-bezier(.2,.7,.2,1) both}
.auth-card::before{content:'';display:block;height:1px;margin:-36px -30px 35px;border-radius:var(--r-card) var(--r-card) 0 0;
  background:linear-gradient(90deg,transparent,rgba(61,217,245,.55),transparent)}
@keyframes authIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.auth-brand{display:flex;flex-direction:column;align-items:center;margin-bottom:18px}
.auth-wordmark{width:154px;height:auto;display:block}
.auth-card h1{color:var(--chalk);font-size:28px;font-weight:700;letter-spacing:-.025em;margin:10px 0 6px}
.auth-sub{color:var(--muted);font-size:14.5px;line-height:1.5;margin:0 auto 24px;max-width:320px}
.auth-form{display:grid;gap:14px;text-align:left;margin:0}
.auth-field{position:relative}
.auth-card .auth-field input.auth-input:not([type=file]){height:52px;min-height:52px;border-radius:var(--r-btn);padding:0 54px 0 18px;font-size:16px;color:var(--chalk);
  background:var(--onyx-0);border:1px solid var(--line-2);transition:border-color .15s,background-color .15s,box-shadow .15s}
.auth-card .auth-field input.auth-input:not([type=file])::placeholder{color:var(--faint)}
.auth-card .auth-field input.auth-input:not([type=file]):focus{border-color:var(--ion);box-shadow:0 0 0 4px rgba(61,217,245,.14)}
.auth-card .auth-field input.auth-input:-webkit-autofill{-webkit-text-fill-color:var(--chalk);caret-color:var(--chalk);box-shadow:0 0 0 100px var(--onyx-0) inset;transition:background-color 99999s}
.auth-field>.icon{position:absolute;right:18px;top:50%;width:20px;height:20px;transform:translateY(-50%);fill:none;stroke:var(--muted);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.auth-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--muted);display:grid;place-items:center}
.auth-eye:hover{background:var(--tint);color:var(--chalk)}
.auth-eye .icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.auth-row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12.5px;color:var(--muted);padding:0 4px}
.auth-link{background:none;border:0;min-height:36px;padding:4px 0;color:var(--ion);font-weight:600;font-size:13px;white-space:nowrap;box-shadow:none}
.auth-link:hover{background:none;color:var(--fill-hover);text-decoration:underline;text-underline-offset:3px}
.auth-card .primary{height:52px;min-height:52px;border-radius:var(--r-btn);font-weight:700;font-size:16px;margin-top:4px}
.auth-card .primary:disabled{opacity:.6}
.auth-status{min-height:20px;margin:0;text-align:center;font-size:13.5px;color:var(--ink-2)}
.auth-status[data-tone=error]{color:var(--red)}
.auth-help,.auth-context{background:var(--onyx-0);border:1px solid var(--line);border-radius:var(--r-btn);padding:12px 14px;font-size:13px;line-height:1.5;color:var(--ink-2);margin:0;text-align:left}
.auth-context{margin-top:16px}
/* Forgot password panel: message, full-width button, then the result on its own line. */
.auth-reset{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4)}
.auth-reset p{margin:0}
.auth-reset-send{width:100%;min-height:44px;border-radius:var(--r-btn);background:var(--tint);border:1px solid var(--line-2);color:var(--chalk);font-weight:700;box-shadow:none}
.auth-reset-send:hover:not(:disabled){background:var(--tint-2)}
.auth-reset-send:disabled{opacity:.7;cursor:default}
.auth-help-status:empty{display:none}
.auth-help-status{font-size:12.5px;color:var(--ink-2)}
.auth-help-status[data-tone=error]{color:var(--red)}
.auth-help code{color:var(--chalk);font-size:12.5px;overflow-wrap:anywhere}
.auth-card .mfa-qr{margin-bottom:20px}
.auth-card .auth-help.auth-key{padding:14px 16px 16px;line-height:1.6}
.auth-card .auth-help.auth-key code{display:block;margin-top:8px;font-size:14px;letter-spacing:.12em;color:var(--chalk);text-align:center}
.auth-card .auth-help+.auth-form{margin-top:26px}
.auth-card .auth-form .auth-back,.auth-card .auth-form+.auth-back{margin-top:14px}
.auth-foot{font-size:13px;color:var(--muted);margin:18px 0 0}
.auth-back{margin-top:10px}
.auth-build{font:500 10.5px var(--mono);color:var(--faint);letter-spacing:.01em;margin:16px 0 0;padding-top:14px;border-top:1px solid var(--line)}
.auth-card .mfa-qr{margin:4px auto 14px;border:0}
@media (max-width:440px){.auth-card{padding:30px 20px 18px}.auth-card::before{margin:-30px -20px 29px}.auth-card h1{font-size:25px}.auth-row{padding:0 2px}}
@media (prefers-reduced-motion:reduce){.auth-card{animation:none}}

/* Report preview (formal document look kept) */
.report-actions{display:flex;justify-content:space-between;gap:12px;margin-bottom:18px}
.report-preview{background:white;border:1px solid #AEB8C5;box-shadow:0 4px 18px #1b253214;max-width:900px;margin:auto;color:#17202b;overflow-wrap:anywhere;border-radius:6px;overflow:hidden}
.report-preview>.report-watermark{background:#912018;color:white;text-align:center;padding:10px 18px;font-weight:800;letter-spacing:.06em}
.report-head{padding:22px 28px;border-bottom:3px solid var(--navy);display:flex;align-items:flex-start;background:white}
.report-warning{margin:0;padding:16px 28px;background:#fff3d6;color:#654405;font-weight:650}
.report-issues,.report-section,.report-signoff{padding:22px 28px;border-bottom:1px solid #cdd4dd;margin:0}
.report-issues{background:#fff8eb}.report-issues li{margin:5px 0}
.report-section h2,.report-signoff h2{font-size:18px;border-bottom:1px solid #cdd4dd;padding-bottom:7px;margin-bottom:12px}
.report-section h3{font-size:15px;margin-top:18px}
.report-section p,.report-table td{white-space:pre-wrap}
.report-table{width:100%;border-collapse:collapse;font-size:14px}
.report-table th,.report-table td{border:1px solid #aeb8c5;text-align:left;vertical-align:top;padding:8px}
.report-table th{background:#edf0f5;font-weight:700}
.report-table tbody th{width:34%}
.report-missing{color:#8f2b1e;background:#fff2f0;font-weight:650}
.report-review{display:grid;grid-template-columns:minmax(160px,1fr) 2fr;margin:0}
.report-review dt,.report-review dd{padding:7px 9px;border-bottom:1px solid #dbe0e7;margin:0}
.report-review dt{font-weight:700}
.report-source{border-left:4px solid var(--steel);padding:10px 14px;background:#f4f7fa;margin:10px 0}
.report-source p{white-space:pre-wrap}
.table-scroll{overflow-x:auto}
.report-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.report-photo-grid figure{border:1px solid #aeb8c5;margin:0;padding:10px}
.report-photo-grid figure.withdrawn{opacity:.7}
.report-photo-grid img{display:block;width:100%;height:250px;object-fit:contain;background:#f1f3f6}
.report-photo-placeholder{height:250px;display:grid;place-items:center;background:#f1f3f6;color:var(--muted)}
.report-photo-grid figcaption{padding-top:8px;overflow-wrap:anywhere}
.report-photo-grid figcaption p{margin:5px 0}
.report-foot{position:static;display:block;border:0;padding:14px 28px;text-align:center;color:var(--muted);font-size:11px;background:white}
.dimension-builder{margin-top:1rem}
.dimension-table{border-collapse:collapse;min-width:1050px;width:100%}
.dimension-table th,.dimension-table td{border:1px solid var(--line);padding:.45rem;vertical-align:top}
.dimension-table th:first-child{min-width:90px}
.dimension-table th[scope=row]{position:sticky;left:0;background:#edf0f5}
.dimension-table th small{display:block;font-weight:400;white-space:nowrap}
.dimension-cell{display:grid;gap:.35rem;min-width:140px}
.dimension-cell input[type=number]{min-width:0;width:100%}
.dimension-cell>.check-label{font-size:.82rem}
.dimension-side-notes,.dimension-question{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:.75rem 0}
.dimension-scalar{display:grid;grid-template-columns:minmax(150px,.4fr) 1fr;gap:.75rem;align-items:start;margin:.75rem 0}
.dimension-preview{white-space:pre-wrap;overflow:auto;background:var(--canvas);border:1px solid var(--line);border-radius:12px;padding:.75rem}
.dimension-report-table td{min-width:90px}
.dimension-report-table tbody th{width:14%}

/* Responsive */
@media (min-width:760px){
  main{padding-top:32px}
  .card{padding:24px}
  .sheet-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  h1{font-size:34px}
}
@media (max-width:440px){
  header{padding-left:14px;padding-right:14px}
  .brand{font-size:18px}
  .brand-mark{width:36px;height:30px}
  main{padding:20px 14px 236px}
  .card{padding:18px}
  .question-top{display:block}
  .question-top .field-state{margin:2px 0 10px}
  .syncbar{font-size:12.5px;padding-left:12px}
  .syncbar button{padding:9px 14px;min-height:44px;font-size:14px}
  .statrow{gap:8px}
  .stat{padding:12px}
  .stat strong{font-size:24px}
}
@media (max-width:620px){
  .report-head{display:block;padding:18px}.report-head>div+div{margin-top:14px}
  .report-issues,.report-section,.report-signoff{padding:18px}
  .report-review{grid-template-columns:1fr}.report-review dt{padding-bottom:0;border-bottom:0}
  .report-photo-grid{grid-template-columns:1fr}
  .report-table{min-width:600px}.report-table tbody:only-child{min-width:0}.report-section>.report-table{min-width:0}
}
@media (max-width:700px){.dimension-side-notes,.dimension-question,.dimension-scalar{grid-template-columns:1fr}}

/* Print: the report preview only */
@media print{
  body{background:white;font-size:10pt}
  body>header,.build-notice,body>footer,#message,.no-print{display:none!important}
  main{max-width:none;padding:0}
  .report-preview{border:0;box-shadow:none;max-width:none;border-radius:0}
  .report-preview>.report-watermark{background:white;color:#912018;border:3px solid #912018}
  .report-section,.report-issues,.report-signoff{break-inside:avoid;padding:14px 18px}
  .report-photo-grid figure{break-inside:avoid}
  .report-photo-grid img,.report-photo-placeholder{height:190px}
  .report-table{font-size:8.5pt}
  .report-warning{background:white;border:2px solid #654405}
  .report-missing{background:white;color:#8f2b1e}
  .report-foot{display:block!important}
}
@page{size:A4;margin:12mm}

/* ARCH admin panel (dev.13) */
.admin{margin-top:22px;border-color:var(--tint-2)}
.admin-form{display:grid;gap:4px;margin:12px 0 18px;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--canvas)}
.admin-form h3{margin:0 0 4px}
.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 12px}
.admin-elements{border:0;padding:0;margin:10px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.admin-elements legend{font-size:14px;font-weight:650;margin-bottom:6px}
.admin-form .check-label{margin-top:12px;font-weight:600}
.admin-form>button{margin-top:10px}
.admin-exams h3{margin:6px 0 10px}
.admin-exam{border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin:0 0 10px;background:var(--surface)}
.admin-exam-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.admin-exam-top small{margin-top:2px}
.admin-exam-top .chip{white-space:nowrap;flex:none}
.admin-counts{font-size:13.5px;color:var(--ink-2);margin:8px 0 0}
.admin-exam .actions{margin-top:10px}
.admin-link summary{font-weight:700;color:var(--strong);min-height:40px;display:flex;align-items:center}

/* ---- Field packs (examiner) and ARCH Office (admin) ---- */
.pack-card h3{margin-top:0}
.pack-ready{color:var(--green);font-weight:600}
.pack-wait{color:var(--amber);font-weight:600}
.pack-files{list-style:none;padding:0;margin:8px 0}
.pack-files li{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.pack-kind{font:600 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ion);min-width:52px}
.pack-view{width:100%;min-height:70vh;border:1px solid var(--line);border-radius:12px;background:#fff;margin-top:10px}
img.pack-view{min-height:0;object-fit:contain}
.button-link{display:inline-block;padding:10px 14px;border-radius:999px;border:1px solid var(--line-2);color:var(--ink);text-decoration:none;font-weight:600}
.prior-panel .prior-entry{padding:10px 0;border-top:1px solid var(--line)}
.prior-panel .prior-entry:first-of-type{border-top:0}
.prior-text{white-space:pre-wrap;margin:6px 0}
.office-steps{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}
.office-steps button{flex:1 1 auto}
.office-steps button.active{background:var(--select-bg);color:var(--chalk);border-color:var(--ion-700)}
.office-row{display:flex;gap:12px;align-items:flex-start}
.office-problems{margin:8px 0;padding-left:18px;color:var(--amber)}
.office-block{border-color:var(--red-line);background:var(--red-bg)}
.badge{font:600 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;padding:6px 8px;border-radius:999px;background:var(--tint);color:var(--ink);white-space:nowrap}
.badge-verified,.badge-checked{background:var(--green-bg);color:var(--green)}
.badge-wrong_asset,.badge-rejected{background:var(--red-bg);color:var(--red)}
.badge-uploaded,.badge-proposed{background:var(--amber-bg);color:var(--amber)}

/* ---- Run A: photo export and pre-submission QA ---- */
.export-item .admin-grid{margin-top:8px}
.historic-box{margin-top:8px;border:1px dashed var(--line-2);border-radius:10px;padding:6px 10px}
.historic-box summary{cursor:pointer;font-weight:600;color:var(--ion)}
.badge-historic{background:var(--tint);color:var(--ink)}
.qa-finding{border-left:4px solid var(--amber)}
.qa-finding[data-category=must-fix]{border-left-color:var(--red)}
.qa-finding[data-category=cosmetic]{border-left-color:var(--faint)}

.export-item .office-row{flex-wrap:wrap;row-gap:6px}
.export-item .office-row .check-label{white-space:nowrap;align-items:center}
.export-item .office-row .check-label strong{white-space:nowrap}
.export-item .office-row .badge{align-self:center}
.qa-finding .office-row{flex-wrap:wrap;row-gap:6px}
.qa-finding .office-row strong{min-width:0}

/* ---- Programme screens (P1). Spacing comes from the --space-* scale so it can be tuned in one place. ---- */
:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px}
.programme .office-steps{gap:var(--space-2);margin:0 0 var(--space-6)}
.programme .card{padding:var(--space-6);margin:0 0 var(--space-5)}
.programme .card>h3{margin:0 0 var(--space-4)}
.programme .card>h3:not(:first-child),.programme .card>h4,.programme .pf-table-wrap>h4{margin:var(--space-8) 0 var(--space-3)}
.programme .card>button,.programme .card>.pf-actions{margin-top:var(--space-4)}
.programme .card>button+button{margin-left:var(--space-3)}
.programme .card>p{margin:var(--space-2) 0 var(--space-3)}
.programme label:not(.check-label){display:flex;flex-direction:column;gap:var(--space-2);font-size:14px;font-weight:600;color:var(--ink-2)}
.programme .check-label{font-size:14px;font-weight:600;margin:var(--space-2) 0}
.programme input:not([type=checkbox]),.programme select,.programme textarea{width:100%}
.pf-facts{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2) var(--space-5);margin:0 0 var(--space-4)}
.pf-facts dt{color:var(--muted)}
.pf-facts dd{margin:0}
.pf-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-4) var(--space-5);margin:0 0 var(--space-4)}
.pf-button-row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin:var(--space-4) 0 0}
.pf-button-row>button{flex:0 1 auto;min-width:170px}
.pf-workflow{margin:0 0 var(--space-2)}
.pf-danger-zone{border-top:1px solid var(--line);padding-top:var(--space-4);margin-top:var(--space-6)}
.pf-report-link{border-top:1px solid var(--line);padding-top:var(--space-5);margin-top:var(--space-6)}
.pf-confirm{margin-top:var(--space-5);padding:var(--space-5);border:1px solid var(--line-2);border-radius:var(--r-tile);background:var(--canvas)}
.pf-confirm>h4{margin:0 0 var(--space-4)}
button.danger{background:var(--red);border-color:var(--red);color:var(--on-fill)}
button.danger-outline{background:var(--surface);border-color:var(--red-line);color:var(--red)}
.pf-list{display:grid;gap:var(--space-3);margin-top:var(--space-4)}
.programme article.card.pf-row{margin:0;padding:var(--space-4) var(--space-5)}
.pf-row{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}
.pf-row>.grow{flex:1 1 260px;min-width:0}
.card>.pf-row+.pf-row,.pf-ai-box .pf-row+.pf-row{border-top:1px solid var(--line);padding-top:var(--space-4);margin-top:var(--space-4)}
.pf-chip{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;background:var(--tint);color:var(--ink-2);
  font-size:13px;font-weight:700;white-space:nowrap}
.pf-chip.pf-planned{background:rgba(163,155,255,.10);color:var(--planned)}
.pf-chip.pf-approved,.pf-chip.pf-issued{background:var(--green-bg);color:var(--green)}
.pf-chip.pf-returned,.pf-chip.pf-upload_failed{background:var(--amber-bg);color:var(--amber)}
.pf-chip.pf-cancelled{background:var(--canvas);color:var(--muted)}
.pf-error{color:var(--red);font-weight:600}
.pf-issues{background:var(--amber-bg);border-color:var(--amber-line)}
.pf-section .pf-field{margin:0 0 var(--space-5)}
.pf-grid{border:1px solid var(--line);border-radius:var(--r-tile);padding:var(--space-4) var(--space-5);margin:0 0 var(--space-5);
  display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4) var(--space-5)}
.pf-grid>legend{padding:0 var(--space-2);font-weight:700}
.pf-table-wrap{overflow-x:auto;margin:0 0 var(--space-6)}
.pf-table{border-collapse:separate;border-spacing:var(--space-3) var(--space-2);margin:0 calc(-1 * var(--space-3));min-width:560px}
.pf-table th{text-align:left;font-size:13px;font-weight:700;color:var(--ink-2);vertical-align:middle}
.pf-table td{vertical-align:top}
.pf-table-wrap>button{margin-top:var(--space-3)}
.pf-history{margin:0;padding-left:var(--space-5)}
.pf-history li{margin:var(--space-2) 0}
.pf-roles{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-6);margin:0 0 var(--space-3)}
.pf-ai-box{margin-top:var(--space-6)}
.pf-ai-box>button{margin:var(--space-4) 0}
.pf-ai{color:var(--steel-ink);margin-top:var(--space-1)}
.pf-conflict{border-color:var(--amber)!important;background:var(--amber-bg)!important}
.pf-key{background:var(--tint);padding:var(--space-4);border-radius:var(--r-tile)}
.programme details>summary{cursor:pointer;margin:var(--space-3) 0;font-weight:600}
.programme input[type=file]{margin:var(--space-4) 0}
@media (max-width:600px){
  .programme .card{padding:var(--space-5)}
  .pf-button-row>button{flex:1 1 100%}
  .programme .card>button{width:100%}
  .programme .card>button+button{margin-left:0;margin-top:var(--space-3)}
}

/* ---- Printed report (A4 sheets). --rp-* tokens set the report's own look, independent of the app theme. ---- */
:root{--rp-font:Arial,'Helvetica Neue',Helvetica,sans-serif;--rp-size:10pt;--rp-line:#000;--rp-head-bg:#fff2ac;--rp-muted:#555;--rp-backdrop:#0B0C0F}
.rp-overlay{position:fixed;inset:0;z-index:60;background:var(--rp-backdrop);overflow:auto;padding:72px 0 48px}
.rp-bar{position:fixed;top:0;left:0;right:0;z-index:61;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);background:var(--canvas);color:var(--ink);border-bottom:1px solid var(--line)}
.rp-bar strong{flex:1;font-size:15px}
.rp-bar button{min-height:42px}
.rp-pages{display:flex;flex-direction:column;align-items:center;gap:26px}
.rp-sheet{width:210mm;height:297mm;background:#fff;color:#000;padding:12mm 13mm 10mm;display:flex;flex-direction:column;
  font-family:var(--rp-font);font-size:var(--rp-size);line-height:1.3;box-shadow:0 4px 18px rgba(0,0,0,.35);overflow:hidden;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
.rp-sheet.rp-landscape{width:297mm;height:210mm}
.rp-marking{text-align:center;font-size:9pt;letter-spacing:.5px;margin-bottom:3mm}
.rp-mast{display:grid;grid-template-columns:24% 1fr 24%;border:1.2pt solid var(--rp-line)}
.rp-mast>div{padding:2mm;min-height:17mm;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.rp-mast>div+div{border-left:1.2pt solid var(--rp-line)}
.rp-mast-title{font-weight:700;font-size:11.5pt;line-height:1.35}
.rp-client{letter-spacing:.04em}
.rp-mast-side{font-weight:700;font-size:10pt}
.rp-strip{display:grid;grid-template-columns:21% 24% 24% 31%;border:1.2pt solid var(--rp-line);border-top:none;font-size:9.5pt;margin-bottom:2mm}
.rp-strip>div{padding:1.2mm 2mm}
.rp-continuation{font-weight:700;font-size:11pt;margin:1mm 0 1mm}
.rp-body{flex:1;min-height:0;overflow:hidden}
.rp-foot{display:flex;justify-content:space-between;font-size:8.5pt;padding-top:3mm;color:var(--rp-muted)}
.rp-box{border:1pt solid var(--rp-line);margin-top:3mm}
.rp-box-head{background:var(--rp-head-bg);border-bottom:1pt solid var(--rp-line);font-weight:700;font-size:10.5pt;padding:.9mm 2mm}
.rp-box-body{padding:1.3mm 2mm}
.rp-fields{display:grid;gap:1mm 3mm}
.rp-cols-1{grid-template-columns:1fr}.rp-cols-2{grid-template-columns:1fr 1fr}.rp-cols-3{grid-template-columns:1fr 1fr 1fr}
.rp-field{display:grid;grid-template-columns:minmax(0,42%) 1fr;gap:2mm;padding:.5mm 0;border-bottom:.5pt solid #ccc}
.rp-cols-1 .rp-field{grid-template-columns:1fr;border-bottom:none}
.rp-cols-1 .rp-label{font-weight:700}
.rp-label{font-weight:700;font-size:9pt}
.rp-value,.rp-text{white-space:pre-wrap;overflow-wrap:anywhere}
.rp-text{margin:0 0 1.2mm}
.rp-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:9pt}
.rp-table th,.rp-table td{border:1pt solid var(--rp-line);padding:.8mm 1.4mm;text-align:left;vertical-align:top;overflow-wrap:anywhere;line-height:1.25}
.rp-table th{font-weight:700;background:#f4f4f4}
.rp-table.rp-small{font-size:7.6pt}
.rp-empty{margin:1mm 0;color:var(--rp-muted)}
.rp-placeholder{text-align:center;padding:16mm 0}
.rp-card{margin:0 0 3mm}
.rp-card h4{margin:0 0 1mm;font-size:10.5pt}
.rp-trio{display:grid;grid-template-columns:1fr 1fr 1fr;border:1pt solid var(--rp-line);margin-top:3mm}
.rp-trio>div{padding:1.5mm 2mm}
.rp-trio>div+div{border-left:1pt solid var(--rp-line)}
.rp-trio-below{grid-column:1/-1;border-left:none!important;border-top:1pt solid var(--rp-line)}
.rp-sig{display:grid;grid-template-columns:38% 34% 28%;border:1pt solid var(--rp-line);border-top:none;min-height:12mm}
.rp-sig>div{padding:2mm;display:flex;align-items:center;gap:1mm}
.rp-sig>div+div{border-left:1pt solid var(--rp-line)}
.rp-img{display:block;width:100%;object-fit:contain;background:#111}
.rp-img-large{height:118mm}
.rp-images{display:grid;gap:4mm}
.rp-per-1 .rp-img{height:215mm}.rp-per-2 .rp-img{height:100mm}.rp-per-4 .rp-img{height:72mm}
.rp-per-4{grid-template-columns:1fr 1fr}
.rp-figure{margin:0}
.rp-figure figcaption{font-size:9pt;margin-top:1mm}
.rp-chart{margin:0}
.rp-chart svg{width:100%;height:auto}
@media print{
  @page{size:A4;margin:0}
  body.rp-printing>*:not(.rp-overlay){display:none!important}
  body.rp-printing .rp-overlay{position:static;padding:0;background:#fff;overflow:visible}
  body.rp-printing .rp-bar{display:none}
  body.rp-printing .rp-pages{gap:0;display:block}
  body.rp-printing .rp-sheet{box-shadow:none;break-after:page;height:296.5mm}
  body.rp-printing .rp-sheet.rp-landscape{height:209.5mm}
}
@page land{size:A4 landscape;margin:0}
.rp-sheet.rp-landscape{page:land}
.pf-media{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.pf-thumb{width:96px;height:72px;object-fit:cover;border-radius:8px;background:var(--canvas);border:1px solid var(--line)}
.pf-upload{display:inline-flex;align-items:center;min-height:44px;padding:10px 16px;border:1px solid var(--line-2);border-radius:var(--r-btn);
  background:var(--surface);font-weight:650;font-size:14px;cursor:pointer}
.pf-upload-main{margin-top:var(--space-3)}
.pf-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.pf-upload:focus-within{outline:3px solid var(--steel);outline-offset:2px}
.pf-note{background:var(--tint);border-radius:var(--r-tile);padding:var(--space-3) var(--space-4);font-size:14px;margin:0 0 var(--space-4)}
.pf-calc{background:var(--canvas);border:1px dashed var(--line-2);border-radius:var(--r-tile);padding:var(--space-3) var(--space-4);margin:0 0 var(--space-5)}
.pf-calc p{white-space:pre-wrap;margin:var(--space-1) 0 0}
.pf-chart{margin:var(--space-4) 0;border:1px solid var(--line);border-radius:var(--r-tile);padding:var(--space-2);background:#fff}
.pf-chart svg{width:100%;height:auto}
.pf-qa-list{margin:var(--space-2) 0 var(--space-4);padding-left:var(--space-5)}
.pf-qa-list li{margin:var(--space-1) 0}
.pf-ok{color:var(--green);font-weight:600}
.pf-steps{margin:0 0 var(--space-4);padding-left:var(--space-5)}
.pf-steps li{margin:var(--space-1) 0}
.rp-logo{display:block;height:12mm;width:100%;object-fit:contain}  /* fixed height: the layout is measured before images decode */
.pf-logos{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-5)}
.pf-logo-slot{display:flex;flex-direction:column;gap:var(--space-3);align-items:flex-start}
.pf-logo-preview{width:100%;max-width:280px;height:90px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:var(--r-tile);padding:var(--space-2)}

/* ---- Home (examinations) ----
   Header row, then examinations in a responsive grid with a side column for the account and office tools. */
body.home-wide main{padding-left:clamp(16px,3vw,40px);padding-right:clamp(16px,3vw,40px)}
.home-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-6);flex-wrap:wrap;margin:0 0 var(--space-6)}
.home-title h1{margin:2px 0 var(--space-1)}
.home-title p{margin:0}
.home-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}
.home-actions>div{display:contents}
.home-cols{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-6);align-items:start}
.home-primary{display:flex;flex-direction:column;gap:var(--space-6);min-width:0}
.home-side{display:flex;flex-direction:column;gap:var(--space-4);position:sticky;top:96px}
.home-side .card,.home-side .context{margin:0}
.exam-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:var(--space-4)}
.exam-grid .card{margin:0}
.exam-grid .empty{grid-column:1/-1}
.exam-card{display:flex;flex-direction:column}
.exam-card .exam-content{flex:1;display:flex;flex-direction:column}
.exam-card .exam-content>button{margin-top:auto}
.exam-facts{display:grid;grid-template-columns:auto 1fr;gap:var(--space-1) var(--space-4);margin:0 0 var(--space-4);font-size:14px}
.exam-facts dt{color:var(--muted)}
.exam-facts dd{margin:0;font-weight:650;text-align:right}
.side-card{padding:var(--space-5)}
.side-card h3{margin:0;font-size:15px}
.account-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}
.account-row .clear{min-height:32px;padding:4px 0}
.account-email{margin:var(--space-1) 0 var(--space-3);font-weight:600;overflow-wrap:anywhere}
.account-card .actions{margin-top:var(--space-3)}
.tool-list{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}
.tool{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;padding:var(--space-3) var(--space-4);min-height:56px}
.tool strong{font-size:14.5px}
.tool small{font-weight:500;color:var(--muted);font-size:12.5px}
.side-note{font-size:13px}
.side-note h3{font-size:12.5px}
.home-primary .admin{margin:0}
.section-head{display:grid;grid-template-columns:auto 1fr;gap:var(--space-6);align-items:end;margin-bottom:var(--space-4)}
.section-head h2{margin:0}
.section-head p{margin:0;font-size:13.5px}
.admin-exam-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-3)}
.admin-exam-grid .admin-exam{margin:0;display:flex;flex-direction:column}
.admin-exam-grid .admin-exam .actions{margin-top:auto;padding-top:var(--space-3)}
.admin-exam .actions button{flex:1}
@media (max-width:1080px){
  .home-cols{grid-template-columns:1fr}
  .home-side{position:static;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
}
@media (max-width:700px){
  .home-head{align-items:stretch}
  .home-actions{width:100%}
  .home-actions>button,.home-actions button{flex:1 1 0;white-space:nowrap}
  .home-actions>button.primary{flex:1 1 100%}
  .section-head{grid-template-columns:1fr;gap:var(--space-2)}
  .admin-exam-grid{grid-template-columns:1fr}
}

/* ---- Site record (admin export as PDF) ---- */
.data-link{font-size:12.5px;min-height:32px;padding:4px 0;margin-top:var(--space-2);align-self:flex-start;color:var(--muted)}
.sr-overlay{position:fixed;inset:0;z-index:40;background:var(--obsidian);overflow:auto;padding:0 var(--space-4) var(--space-8)}
.sr-bar{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:var(--space-3);max-width:210mm;margin:0 auto var(--space-4);padding:var(--space-3) 0;background:var(--obsidian)}
.sr-bar strong{flex:1;font-size:14px}
.site-record{page:sr;max-width:210mm;margin:0 auto;background:#fff;color:var(--ink);padding:16mm 15mm;box-shadow:var(--shadow-lift);font-size:10pt;line-height:1.45}
.sr-head{display:grid;grid-template-columns:1fr auto;gap:var(--space-6);align-items:start;padding-bottom:var(--space-4);border-bottom:2px solid var(--navy)}
.sr-kicker{font-family:var(--mono);font-size:8pt;letter-spacing:.14em;color:var(--steel-ink)}
.sr-head h1{font-size:20pt;margin:2px 0 2px;letter-spacing:-.02em}
.sr-sub{margin:0;color:var(--ink-2);font-weight:600}
.sr-facts{display:grid;grid-template-columns:auto auto;gap:2px 12px;margin:0;font-size:8.5pt}
.sr-facts dt{color:var(--muted)}
.sr-facts dd{margin:0;font-family:var(--mono);font-size:8pt;text-align:right}
.sr-note{margin:var(--space-3) 0 var(--space-5);padding:6px 10px;border-left:3px solid var(--amber);background:var(--amber-bg);font-size:8.5pt;color:#93370D}
.sr-section{margin:0 0 var(--space-5)}
.sr-section h2{font-size:11.5pt;margin:0 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line-2);break-after:avoid}
.sr-table{width:100%;border-collapse:collapse;font-size:9pt}
.sr-table th,.sr-table td{text-align:left;vertical-align:top;padding:4px 6px;border-bottom:1px solid var(--line)}
.sr-table th{width:38%;font-weight:600;color:var(--ink-2)}
.sr-table td{white-space:pre-wrap}
.sr-table tr{break-inside:avoid}
.sr-empty{color:var(--muted);font-size:9pt;margin:0}
.sr-photos{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sr-photos figure{margin:0;break-inside:avoid}
.sr-photos img,.sr-nophoto{width:100%;height:62mm;object-fit:cover;border:1px solid var(--line);border-radius:3px;background:var(--canvas)}
.sr-nophoto{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:9pt}
.sr-photos figcaption{font-size:8.5pt;margin-top:3px}
.sr-foot{margin-top:var(--space-6);padding-top:var(--space-2);border-top:1px solid var(--line);font-family:var(--mono);font-size:7.5pt;color:var(--muted)}
@media screen and (max-width:700px){
  .sr-overlay{padding:0 var(--space-2) var(--space-6)}
  .site-record{padding:var(--space-5) var(--space-4)}
  .sr-head{grid-template-columns:1fr;gap:var(--space-3)}
  .sr-facts dd{text-align:left}
  .sr-photos{grid-template-columns:1fr}
}
@page sr{size:A4;margin:14mm 14mm 16mm}
@media print{
  body.sr-printing>*:not(.sr-overlay){display:none!important}
  body.sr-printing .sr-overlay{position:static;padding:0;background:#fff;overflow:visible}
  body.sr-printing .sr-bar{display:none}
  body.sr-printing .site-record{box-shadow:none;padding:0;max-width:none}
}

/* ---------- Programme workspace: overview, examination table, tabbed record and report (tokens only) ---------- */
body.programme-wide{--page-w:1920px}   /* the office and the report writer use the whole of a large screen */
.programme .office-steps,.pf-subtabs,.pf-section-tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.programme .office-steps::-webkit-scrollbar,.pf-subtabs::-webkit-scrollbar,.pf-section-tabs::-webkit-scrollbar{display:none}
.programme .office-steps button,.pf-subtabs button,.pf-section-tabs button{flex:0 0 auto;scroll-snap-align:start;white-space:nowrap}
.pf-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin:0 0 var(--space-4)}
.pf-toolbar input[type=search]{flex:1 1 280px;width:auto}
.programme .pf-toolbar select{width:auto;flex:0 1 260px}
.pf-toolbar-title{margin:0;flex:1 1 auto}

/* overview */
.pf-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--space-3);margin:0 0 var(--space-5)}
.pf-tile{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:var(--space-4) var(--space-5);border:1px solid var(--line);
  border-radius:var(--r-tile);background:var(--surface);box-shadow:var(--shadow);text-align:left;min-height:96px;cursor:pointer}
.pf-tile:hover{box-shadow:var(--shadow-lift);border-color:var(--line-2)}
.pf-tile-n{font-size:32px;font-weight:700;line-height:1.1;color:var(--ink);font-variant-numeric:tabular-nums}
.pf-tile-l{font-size:13px;font-weight:600;color:var(--ink-2)}
.pf-tile-red{border-color:var(--red-line);background:var(--red-bg)}.pf-tile-red .pf-tile-n{color:var(--red)}
.pf-tile-amber{border-color:var(--amber-line);background:var(--amber-bg)}.pf-tile-amber .pf-tile-n{color:var(--amber)}
.pf-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--space-5);align-items:start}
.programme .pf-overview-grid .card{margin:0}
.pf-bars{display:flex;flex-direction:column;gap:2px}
.pf-bar{display:grid;grid-template-columns:minmax(120px,40%) 1fr 3ch;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-1);
  background:none;border:0;border-radius:8px;text-align:left;cursor:pointer;min-height:36px;font-weight:500}
.pf-bar:hover:not(:disabled){background:var(--canvas)}
.pf-bar:disabled{cursor:default;opacity:.6}
.pf-bar-label{font-size:13px;color:var(--ink-2)}
.pf-bar-track{height:12px;background:var(--canvas);border-radius:4px;overflow:hidden}
.pf-bar-fill{display:block;height:100%;width:var(--w,0);min-width:2px;background:var(--steel);border-radius:0 4px 4px 0}
.pf-bar-n{font-size:13px;font-weight:700;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}
.pf-due-list{display:flex;flex-direction:column;gap:2px;margin:0 0 var(--space-3)}
.pf-due{display:grid;grid-template-columns:11ch 1fr auto;gap:var(--space-3);align-items:center;padding:var(--space-2) var(--space-1);background:none;border:0;
  border-bottom:1px solid var(--line);border-radius:0;text-align:left;cursor:pointer;font-weight:400}
.pf-due:hover{background:var(--canvas)}
.pf-due-date{font-family:var(--mono);font-size:12.5px;color:var(--ink-2)}
.pf-due-ref{display:flex;flex-direction:column;min-width:0}.pf-due-ref small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-late{color:var(--red)!important;font-weight:700}
.pf-warn{color:var(--amber);font-weight:600}

/* examination table */
.pf-filters{margin:0 0 var(--space-3)}
.pf-filter-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-3);align-items:end;padding:var(--space-3) 0}
.programme .pf-filter{font-size:12.5px}
.pf-grid-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-tile);background:var(--surface);margin:var(--space-3) 0 0}
.pf-exams{width:100%;border-collapse:collapse;font-size:13.5px}
.pf-exams th{position:sticky;top:0;background:var(--canvas);text-align:left;font-size:12px;color:var(--ink-2);border-bottom:1px solid var(--line-2);padding:0;white-space:nowrap}
.pf-sort{background:none;border:0;padding:var(--space-3);font:inherit;font-weight:700;color:inherit;width:100%;text-align:left;border-radius:0;cursor:pointer;min-height:0}
.pf-exams td{padding:var(--space-3);border-bottom:1px solid var(--line);vertical-align:top}
.pf-exams tbody tr{cursor:pointer}
.pf-exams tbody tr:hover,.pf-exams tbody tr:focus-visible{background:var(--tint);outline:none}
.pf-ref{display:block;font-family:var(--mono);font-size:13px;white-space:nowrap}
.pf-sub{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.pf-exams .pf-chip{padding:3px 10px;font-size:12px;white-space:nowrap}
.pf-empty{padding:var(--space-6) 0}

/* examination record */
.pf-exam-head{align-items:flex-start}
.pf-subtabs,.pf-section-tabs{gap:var(--space-1);margin:0 0 var(--space-5);border-bottom:1px solid var(--line);padding-bottom:0}
.pf-subtabs button,.pf-section-tabs button{background:none;border:0;border-bottom:3px solid transparent;border-radius:0;padding:var(--space-3) var(--space-4);
  font-weight:600;color:var(--ink-2);display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px}
.pf-subtabs button.active,.pf-section-tabs button.active{color:var(--ink);border-bottom-color:var(--steel-ink)}
.pf-section-tabs{position:sticky;top:0;z-index:2;background:var(--canvas)}
.pf-badge{font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;background:var(--canvas);color:var(--muted);font-variant-numeric:tabular-nums}
.pf-badge:empty{display:none}
.pf-badge-done{background:var(--green-bg);color:var(--green)}
.pf-badge-todo{background:var(--amber-bg);color:var(--amber)}
.pf-section-nav{display:flex;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--line)}
.pf-report-head{display:flex;align-items:center;gap:var(--space-3);margin:0 0 var(--space-3)}
.pf-report-head h3{margin:0}
.pf-two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:var(--space-5)}
.programme .pf-two-col .card{margin:0 0 var(--space-5)}
.pf-facts-grid{display:grid;grid-template-columns:minmax(120px,40%) 1fr;gap:var(--space-2) var(--space-4);margin:0;font-size:14px}
.pf-facts-grid dt{color:var(--muted)}.pf-facts-grid dd{margin:0;overflow-wrap:anywhere}
.pf-steps-line{list-style:none;display:grid;grid-template-columns:repeat(6,1fr);gap:var(--space-2);padding:0;margin:0 0 var(--space-4);counter-reset:s}
.pf-step{position:relative;display:flex;flex-direction:column;gap:2px;padding:var(--space-3) 0 0;border-top:3px solid var(--line-2)}
.pf-step-done{border-top-color:var(--steel)}
.pf-step-label{font-size:12px;font-weight:600;color:var(--ink-2)}
.pf-step-date{font-family:var(--mono);font-size:12.5px;color:var(--muted)}
.pf-step-done .pf-step-date{color:var(--ink)}

/* phones: the examination table and report tables become cards; steps stack */
@media (max-width:760px){
  .pf-grid-wrap{border:0;background:none;overflow:visible}
  .pf-exams thead{display:none}
  .pf-exams,.pf-exams tbody,.pf-exams tr,.pf-exams td{display:block;width:100%}
  .pf-exams tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-tile);margin:0 0 var(--space-3);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow)}
  .pf-exams td{border:0;padding:3px 0;display:grid;grid-template-columns:9.5rem 1fr;gap:var(--space-3)}
  .pf-exams td::before{content:attr(data-label);color:var(--muted);font-size:12px}
  .pf-exams td[data-label="Structure"]{display:block;padding-bottom:var(--space-2);margin-bottom:var(--space-1);border-bottom:1px solid var(--line)}
  .pf-exams td[data-label="Structure"]::before{content:none}
  .pf-steps-line{grid-template-columns:repeat(2,1fr)}
  .pf-table{min-width:0;margin:0;border-spacing:0;width:100%}
  .pf-table thead{display:none}
  .pf-table,.pf-table tbody,.pf-table tr,.pf-table td,.pf-table th{display:block;width:100%}
  .pf-table tr{border:1px solid var(--line);border-radius:var(--r-tile);padding:var(--space-3);margin:0 0 var(--space-3);background:var(--surface)}
  .pf-table th.pf-row-name{font-size:14px;color:var(--ink);padding:0 0 var(--space-2)}
  .pf-table th.pf-row-blank{display:none}
  .pf-table td{padding:var(--space-1) 0}
  .pf-table td[data-label]::before{content:attr(data-label);display:block;font-size:12px;font-weight:600;color:var(--muted);margin:0 0 2px}
  .pf-table-fixed tr{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2) var(--space-3)}
  .pf-table-fixed th.pf-row-name{grid-column:1/-1}
  .pf-table-fixed td:has(textarea){grid-column:1/-1}
  .pf-section-nav button{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pf-facts-grid{grid-template-columns:1fr 1.4fr}
  .pf-two-col{grid-template-columns:1fr}
  .pf-due{grid-template-columns:10ch 1fr}
  .pf-due>small{display:none}
}
/* report sections: short boxes side by side on wider screens; long text, tables and grids full width */
@media (min-width:900px){
  .programme .pf-section{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4) var(--space-5);align-content:start}
  .programme .pf-section>*{grid-column:1/-1;margin-top:0;margin-bottom:0}
  .programme .pf-section>label.pf-field:not(:has(textarea)){grid-column:auto}
}
.programme .pf-section>label.pf-field{margin:0 0 var(--space-4)}
@media (min-width:900px){.programme .pf-section>label.pf-field{margin:0}}
@media (max-width:760px){
  .pf-exam-head{flex-wrap:wrap}
  .pf-exam-head>.grow{flex:1 1 100%;order:2}
  .pf-exam-head>.pf-chip{margin-left:auto}
  .programme .pf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);padding:var(--space-3)}
}
/* the previous checked report, under each element row */
.pf-prev-row td{background:var(--canvas);border-radius:var(--r-tile);padding:var(--space-2) var(--space-3);font-size:13px;color:var(--ink-2)}
.pf-prev-label{font-weight:700;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.pf-prev-chip{display:inline-block;margin:0 var(--space-2) 0 0;padding:1px 8px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:12px}
.pf-prev-text{display:block;white-space:pre-wrap;margin:var(--space-1) 0 0}
.programme .pf-prev-use{margin:var(--space-2) 0 0;min-height:36px;padding:6px 12px;font-size:13px}
.pf-prev-note{font-size:13px;color:var(--ink-2);background:var(--tint);border-radius:var(--r-tile);padding:var(--space-3) var(--space-4)}
@media (max-width:760px){
  .pf-table tr:has(+ tr.pf-prev-row){border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:0;border-bottom:0}
  .pf-table tr.pf-prev-row{display:block;border-top:0;border-top-left-radius:0;border-top-right-radius:0;padding:0;background:var(--canvas)}
  .pf-table tr.pf-prev-row td{display:block;border-radius:0 0 var(--r-tile) var(--r-tile)}
}
@media (min-width:761px){
  .pf-table{width:calc(100% + 2 * var(--space-3))}
  .pf-table-fixed th.pf-row-name{width:14rem}
  .pf-table td:has(textarea){width:50%}
}
.exam-title .exam-name{font-weight:700;color:var(--chalk);font-size:15px}
.exam-content button.wide+button.wide{margin-top:var(--space-2)}
/* bulk assignment in the examinations table */
.pf-exams .pf-sel{width:44px;text-align:center}
.pf-exams .pf-sel input{width:20px;height:20px}
.pf-exams tr.pf-selected{background:var(--tint)}
.pf-bulk{position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-3);padding:var(--space-3) var(--space-4);
  margin:0 0 var(--space-3);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-tile);box-shadow:var(--shadow-lift)}
.programme .pf-bulk select{width:auto;min-width:220px}
.pf-bulk-out{flex:1 1 100%;font-size:13px}
.pf-waiting{border-color:var(--amber-line);background:var(--amber-bg)}
.pf-refused{border-color:var(--red-line)}
@media (max-width:760px){
  .pf-exams td.pf-sel{display:block;text-align:left;padding:0 0 var(--space-2)}
  .pf-exams td.pf-sel::before{content:none}
  .pf-bulk{position:sticky;bottom:0;top:auto}
  .programme .pf-bulk select{min-width:0;width:100%}
  .pf-bulk>label{flex:1 1 100%}
}
/* staging (test) build: a clear banner so it is never mistaken for the live site */
body.stage-staging .build-notice{background:var(--amber-bg);color:var(--amber);font-weight:800;border-bottom:2px solid var(--amber-line)}
.wrong-build{max-width:560px;margin:15vh auto;padding:var(--space-8);border-color:var(--red-line)}
.wrong-build h1{color:var(--red);margin-top:0}
/* previous reports in bulk */
.pr-rows{display:flex;flex-direction:column;gap:2px;margin-top:var(--space-4)}
.pr-row{display:grid;grid-template-columns:32px minmax(200px,1.4fr) minmax(180px,1fr) minmax(320px,1.6fr);gap:var(--space-3);align-items:center;
  padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);font-size:13.5px}
.pr-file{min-width:0}.pr-file strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-file small{color:var(--muted)}
.pr-unmatched{background:var(--amber-bg)}.pr-failed{background:var(--red-bg)}
.pr-ref{display:flex;gap:var(--space-2);align-items:center}
.pr-facts{display:grid;grid-template-columns:1.2fr .8fr 1fr;gap:var(--space-2)}
.programme .pr-row input:not([type=checkbox]),.programme .pr-row select{min-height:38px;padding:6px 10px;font-size:13px}
.pf-prev-page{color:var(--muted)}
.pf-finding .pf-chip{padding:2px 9px;font-size:11.5px}
.pf-finding-must_fix .pf-chip{background:var(--red-bg);color:var(--red)}
.pf-finding-wording .pf-chip{background:var(--canvas);color:var(--ink-2)}
@media (max-width:760px){
  .pr-row{grid-template-columns:28px 1fr;align-items:start}
  .pr-ref,.pr-facts{grid-column:2}
  .pr-facts{grid-template-columns:1fr}
}
/* hidden file inputs stay inside their button (the programme's full-width input rule must not stretch them) */
.pf-upload{position:relative;overflow:hidden}
.programme input.pf-file{width:1px;height:1px;margin:0;padding:0;left:0;top:0}
.pr-ref select{flex:1 1 auto;min-width:0}
.pr-ref button{flex:0 0 auto;white-space:nowrap}

/* ---------- Quick search in the programme header ---------- */
.pf-topline{flex-wrap:wrap}
.pf-quick{position:relative;flex:0 1 480px;min-width:0}
.pf-quick-list{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;background:var(--surface);border:1px solid var(--line-2);
  border-radius:var(--r-tile);box-shadow:var(--shadow-lift);max-height:60vh;overflow:auto;padding:var(--space-1)}
.pf-quick-hit{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--space-3);align-items:center;width:100%;border:0;background:none;
  min-height:0;padding:var(--space-2) var(--space-3);text-align:left;border-radius:8px;font-weight:400}
.pf-quick-hit:hover,.pf-quick-hit:focus-visible{background:var(--tint);outline:none}
.pf-quick-hit span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);font-size:13px}
.pf-quick-hit .pf-chip{padding:2px 8px;font-size:11px}
.pf-quick-all{width:100%;margin-top:var(--space-1)}
.pf-quick-list>p{margin:var(--space-2) var(--space-3)}
.pf-more{margin-top:var(--space-3)}
@media (max-width:760px){.pf-quick{flex:1 1 100%;order:3}}

/* ---------- Desktop: denser controls and a side menu (phones keep the touch layout) ---------- */
@media (min-width:1100px){
  body{font-size:14.5px}
  h1{font-size:26px} h2{font-size:18px} h3{font-size:15px}
  button{min-height:38px;padding:7px 14px;border-radius:10px;font-size:14px}
  input:not([type=file]):not([type=checkbox]):not([type=radio]),textarea,select{padding:8px 12px;border-radius:9px}
  select{padding-right:34px}
  textarea{min-height:84px}
  .card{padding:16px 18px;border-radius:14px}
  .programme .card{padding:18px 22px;margin:0 0 var(--space-4)}
  .programme .card>h3:not(:first-child),.programme .card>h4,.programme .pf-table-wrap>h4{margin:var(--space-6) 0 var(--space-2)}
  .programme label:not(.check-label){font-size:13px;gap:var(--space-1)}
  .pf-shell{display:grid;grid-template-columns:210px minmax(0,1fr);gap:var(--space-6);align-items:start}
  .pf-shell>.office-steps{flex-direction:column;flex-wrap:nowrap;overflow:visible;position:sticky;top:var(--space-4);margin:0;gap:2px;
    padding:var(--space-2);background:var(--surface);border:1px solid var(--line);border-radius:14px}
  .pf-shell>.office-steps button{justify-content:flex-start;text-align:left;border:0;background:none;min-height:34px;padding:7px 12px;
    border-radius:8px;font-weight:600;color:var(--ink-2);width:100%}
  .pf-shell>.office-steps button:hover{background:var(--canvas)}
  .pf-shell>.office-steps button.active{background:var(--select-bg);color:var(--chalk);box-shadow:inset 2px 0 0 var(--ion)}
  .pf-subtabs button,.pf-section-tabs button{min-height:36px;padding:6px 12px}
  .pf-exams td{padding:8px 12px}
  .pf-sort{padding:8px 12px}
  .pf-tile{min-height:76px;padding:var(--space-3) var(--space-4)}
  .pf-tile-n{font-size:26px}
  .pf-chip{padding:4px 10px;font-size:12px}
  .pf-section-nav{margin-top:var(--space-4)}
}

/* ---------- Report writer: element-by-element, photo manager, layout with the report beside ---------- */
.ew-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:0 0 var(--space-3)}
.ew-top h4{margin:0}
.programme .ew-toggle,.programme .rw-toggle{min-height:34px;padding:6px 12px;font-size:13px}
.ew{display:grid;grid-template-columns:1fr;gap:var(--space-4)}
.ew-list{display:none}
.ew-picker{width:100%}
.ew-main{min-width:0}
.ew-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin:0 0 var(--space-3)}
.ew-head h4{margin:0;font-size:18px}
.ew-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-3);margin:0 0 var(--space-3)}
.ew-text{min-height:160px}
.ew-phrases{display:flex;flex-wrap:wrap;gap:var(--space-1);margin:var(--space-2) 0 var(--space-4)}
.programme .ew-phrase{min-height:0;padding:4px 10px;font-size:12px;font-weight:500;border-radius:999px;background:var(--canvas);color:var(--ink-2);border-color:var(--line)}
.programme .ew-phrase:hover{background:var(--tint)}
.ew-prev{background:var(--canvas);border-radius:var(--r-tile);padding:var(--space-3) var(--space-4);margin:0 0 var(--space-4);font-size:13.5px}
.ew-photos{margin:0 0 var(--space-4)}
.ew-strip{display:flex;gap:var(--space-2);overflow-x:auto;padding:var(--space-2) 0}
.ew-strip figure{margin:0;flex:0 0 96px}
.ew-strip img{width:96px;height:72px;object-fit:cover;border-radius:8px;background:var(--canvas);display:block}
.ew-strip figcaption{font-size:11px;color:var(--muted);text-align:center}
.pm-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin:0 0 var(--space-3)}
.pm-bar h4{margin:0}
.pm-bar .pf-upload-main{margin-top:0}
.pm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-3)}
.pm-card{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-tile);overflow:hidden;display:flex;flex-direction:column}
.pm-card[draggable=true]{cursor:grab}
.pm-dragging{opacity:.5}
.pm-over{outline:3px solid var(--steel);outline-offset:-3px}
.pm-thumb{position:relative;aspect-ratio:4/3;background:var(--canvas);display:grid;place-items:center}
.pm-img{width:100%;height:100%;object-fit:cover;display:block}
.pm-no{position:absolute;left:8px;top:8px;background:var(--fill);color:var(--on-fill);font-weight:700;font-size:12px;padding:2px 8px;border-radius:999px}
.pm-card figcaption{padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-2)}
.programme .pm-card textarea{min-height:56px;font-size:13px;padding:6px 8px}
.programme .pm-card input{font-size:13px;padding:6px 8px}
.pm-actions{display:flex;gap:var(--space-1)}
.programme .pm-actions button{min-height:30px;padding:4px 10px;font-size:12px}
.rw-preview{display:none}
.rw-preview-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);background:var(--surface)}
.rw-preview-head small{flex:1}
.programme .rw-preview-head button{min-height:30px;padding:4px 10px;font-size:12px}
.rw-preview-body{padding:var(--space-3);display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}
.rw-preview-body .rp-sheet{zoom:.58;box-shadow:var(--shadow-lift)}
@media print{.rw-preview{display:none!important}}

@media (min-width:1100px){
  .ew{grid-template-columns:230px minmax(0,1fr);align-items:start}
  .ew-picker{display:none}
  .ew-list{display:flex;flex-direction:column;gap:2px;max-height:70vh;overflow:auto;position:sticky;top:var(--space-4);
    border:1px solid var(--line);border-radius:var(--r-tile);padding:var(--space-1);background:var(--surface)}
  .programme .ew-item{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;gap:0;min-height:0;line-height:1.3;padding:6px 10px;border:0;border-radius:8px;
    background:none;text-align:left;font-weight:600;font-size:13px;color:var(--ink)}
  .programme .ew-item small{font-weight:400;color:var(--muted);font-size:11.5px}
  .programme .ew-item:hover{background:var(--canvas)}
  .programme .ew-item.active{background:var(--tint);box-shadow:inset 3px 0 0 var(--steel-ink)}
  .ew-item.ew-done .ew-name::after{content:' ✓';color:var(--green)}
  .rw-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:var(--space-5);align-items:start}
  .rw-layout>.pf-section-tabs{flex-direction:column;flex-wrap:nowrap;overflow:visible;position:sticky;top:var(--space-4);margin:0;border:1px solid var(--line);
    border-radius:14px;background:var(--surface);padding:var(--space-1);gap:2px}
  .rw-layout>.pf-section-tabs button{justify-content:space-between;width:100%;border:0;border-radius:8px;min-height:32px;padding:6px 10px;font-size:13px;text-align:left}
  .rw-layout>.pf-section-tabs button.active{background:var(--tint);border:0;box-shadow:inset 3px 0 0 var(--steel-ink)}
  .rw-form{min-width:0}
}
@media (min-width:1400px){
  .rw-layout.rw-with-preview{grid-template-columns:200px minmax(0,1fr) minmax(400px,.85fr)}
  .rw-with-preview .rw-preview{display:block;position:sticky;top:var(--space-4);max-height:calc(100vh - 32px);overflow:auto;
    border:1px solid var(--line);border-radius:14px;background:var(--obsidian)}
  .rw-with-preview .rw-preview[hidden]{display:none}
}

/* Defect / LSD register header (counts and bringing previous live defects forward). */
.dr{display:flex;flex-direction:column;gap:var(--space-2);margin:0 0 var(--space-3);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--r-tile);background:var(--canvas)}
.dr-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.dr-chip{display:inline-flex;align-items:baseline;gap:4px;padding:3px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:13px;color:var(--muted)}
.dr-chip strong{color:var(--ink)}
.dr-chip.dr-warn{background:var(--amber-bg);border-color:var(--amber-line);color:var(--amber)}
.dr-chip.dr-warn strong{color:var(--amber)}
.dr-carry{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}
.dr-carry li{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-top:1px solid var(--line)}
.pf-check{display:flex;align-items:center;gap:var(--space-2);font-size:14px;color:var(--ink)}
.rw-records .ew-side .pf-button-row{margin-top:var(--space-2)}

/* Running the programme: RAG dots, workload board, deadlines, review queue. */
.rag{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none;background:var(--line)}
.rag-red{background:var(--red)}.rag-amber{background:var(--amber)}.rag-green{background:var(--green)}
.pf-link{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:0;border:0;background:none;text-align:left;color:var(--ink);cursor:pointer;min-height:0}
.pf-link small{color:var(--muted);font-weight:400}
.pf-link:hover strong{text-decoration:underline}
.pf-banner{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--r-tile);border:1px solid var(--line);font-size:14px}
.pf-banner-amber{background:var(--amber-bg);border-color:var(--amber-line);color:var(--ink)}
.wl-board{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-3);align-items:flex-start;max-width:100%}
.wl-col{flex:0 0 260px;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--r-card);background:var(--canvas);max-height:75vh}
.wl-col.wl-over-col{border-color:var(--fill);box-shadow:inset 0 0 0 2px var(--steel-ink)}
.wl-unassigned{background:var(--surface)}
.wl-head h4{margin:0}
.wl-counts{display:flex;flex-wrap:wrap;gap:var(--space-2);font-size:12.5px;color:var(--muted);margin-top:4px}
.wl-counts strong{color:var(--ink)}
.wl-over,.wl-over strong{color:var(--red)}
.wl-cards{display:flex;flex-direction:column;gap:var(--space-2);overflow-y:auto}
.wl-card{display:flex;flex-direction:column;gap:6px;padding:var(--space-2) var(--space-3);border:1px solid var(--line);border-left-width:3px;border-radius:var(--r-tile);background:var(--surface);cursor:grab}
.wl-card.wl-red{border-left-color:var(--red)}.wl-card.wl-amber{border-left-color:var(--amber)}.wl-card.wl-green{border-left-color:var(--green)}
.wl-card-top{display:flex;gap:var(--space-2);align-items:flex-start}
.wl-card-top .rag{margin-top:5px}
.wl-card .wl-move{font-size:13px;padding:4px 8px;min-height:0}
.wl-dragging,.wl-moving{opacity:.45}
.wl-empty{font-size:13px}
.dl-kpis .pf-kpi small{font-size:12px}
.dl-rag td,.dl-rag th{text-align:center}
.dl-rag tbody th{text-align:left}
.dl-th{display:inline-flex;align-items:center;gap:6px}
.dl-count{min-width:44px;min-height:32px;padding:2px 10px;border-radius:999px;font-weight:700;border:1px solid var(--line);background:var(--surface)}
.dl-count.dl-red{color:var(--red);border-color:var(--red-line);background:var(--red-bg)}
.dl-count.dl-amber{color:var(--amber);border-color:var(--amber-line);background:var(--amber-bg)}
.dl-count.dl-green{color:var(--green);border-color:var(--green-line);background:var(--green-bg)}
.dl-list{margin:var(--space-4) 0}
.dl-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-3)}
.dl-settings summary{cursor:pointer;font-weight:600}
@media (max-width:760px){.wl-col{flex-basis:84vw}}
.pf-toolbar select{max-width:100%;min-width:0;text-overflow:ellipsis}

/* Notifications bell and inbox. */
.nb{position:relative;flex:none}
.nb-button{display:inline-flex;align-items:center;gap:6px}
.nb-count{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--red);color:var(--on-fill);font-size:12px;font-weight:700;display:inline-grid;place-items:center}
.nb-count[hidden]{display:none}
.nb-panel{position:absolute;right:0;top:calc(100% + 6px);width:min(420px,calc(100vw - 32px));max-height:70vh;overflow:auto;z-index:20;box-shadow:var(--shadow-lift);padding:var(--space-3)}
.nb-head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}
.nb-head h3{margin:0;flex:1}
.nb-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.nb-list li{border-top:1px solid var(--line)}
.nb-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:var(--space-2);border:0;background:none;text-align:left;color:var(--ink);min-height:0;font-weight:400}
.nb-item strong{font-weight:600}
.nb-unread .nb-item{background:var(--tint)}
.nb-unread .nb-item strong::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--fill);margin-right:6px;vertical-align:middle}
.nb-settings{display:flex;flex-direction:column;gap:6px;padding:var(--space-2) 0;border-top:1px solid var(--line)}
@media (max-width:760px){.nb{order:2}.nb-panel{position:fixed;left:16px;right:16px;top:80px;width:auto}}
.pc-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-3)}
.au-table td small{color:var(--muted);overflow-wrap:anywhere}
.au-table td:nth-child(2),.au-table td:first-child{white-space:nowrap}
.bc-hint{margin:var(--space-2) 0}
.ap-table tr.ap-bad td{background:var(--red-bg)}

/* ---- Handover stage 1: sidebar groups, avatar, examination cards, new examination, structures. Tokens only. ---- */
:root{--ex-info:var(--ink-2);--ex-info-bg:var(--tint);--ex-good:var(--green);--ex-good-bg:var(--green-bg);--ex-warn:var(--amber);--ex-warn-bg:var(--amber-bg);
  --ex-badge-uw:#2E2A1E;--ex-badge-de:var(--ion-900);--ex-badge-vi:var(--onyx-3);--ex-badge-other:var(--onyx-2)}
.pf-nav-group{display:none}
.pf-avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--onyx-2);color:var(--chalk);box-shadow:inset 0 0 0 1px var(--ion-700);
  font-weight:700;font-size:14px;flex:0 0 auto}
.pf-page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin:0 0 var(--space-4)}
.pf-page-head>h2{margin:0}
.ex-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin:0 0 var(--space-3)}
.ex-bar>input[type=search]{flex:1 1 240px;width:auto;min-height:44px}
.ex-pills{display:inline-flex;gap:2px;padding:3px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-btn)}
.ex-pill{min-height:38px;padding:6px 14px;border:0;background:none;border-radius:10px;font-weight:600;color:var(--ink-2)}
.ex-pill.active{background:var(--select-bg);color:var(--chalk);box-shadow:inset 0 0 0 1px var(--ion-700)}
.ex-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-3)}
.ex-card{display:flex;align-items:flex-start;gap:var(--space-3);text-align:left;padding:var(--space-4);min-height:0;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-tile);box-shadow:var(--shadow);font-weight:400}
.ex-card:hover{border-color:var(--line-2);box-shadow:var(--shadow-lift)}
.ex-badge{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;color:var(--chalk);
  font-weight:700;font-size:13px;background:var(--ex-badge-other)}
.ex-badge-uw{background:var(--ex-badge-uw)}.ex-badge-de{background:var(--ex-badge-de)}.ex-badge-vi{background:var(--ex-badge-vi)}
.ex-card-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.ex-card-title{font-size:15px;color:var(--ink);overflow-wrap:anywhere}
.ex-card-sub{font-size:13px}
.ex-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ex-chip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid currentColor}
.ex-chip-info{color:var(--ex-info);background:var(--ex-info-bg)}
.ex-chip-good,.ex-chip-progress{color:var(--ex-good);background:var(--ex-good-bg)}
.ex-chip-warn{color:var(--ex-warn);background:var(--ex-warn-bg)}
.ex-nowriteup{text-align:center}
.ex-nowriteup>button{margin-left:auto;margin-right:auto}
.ne-dialog{width:min(560px,calc(100vw - 32px));border:0;border-radius:var(--r-card);padding:var(--space-6);box-shadow:var(--shadow-lift);color:var(--ink)}
.ne-dialog::backdrop{background:rgba(5,6,8,.7)}
.ne-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.ne-head h2{margin:0}
.ne-x{min-height:36px;padding:4px 12px;font-size:20px}
.ne-field{display:flex;flex-direction:column;gap:var(--space-2);font-size:14px;font-weight:600;color:var(--ink-2);margin:var(--space-3) 0 0;flex:1 1 200px}
.ne-row{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.ne-hits{display:flex;flex-direction:column;gap:4px;margin-top:var(--space-2);max-height:240px;overflow:auto}
.ne-hit{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);text-align:left;min-height:44px;padding:8px 12px;font-weight:400}
.ne-offer{margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--amber-line);background:var(--amber-bg);border-radius:var(--r-tile)}
.ne-actions{justify-content:flex-end}
@media (min-width:1100px){
  .pf-shell>.office-steps .pf-nav-group{display:block;padding:var(--space-3) 12px 2px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
  .pf-shell>.office-steps .pf-nav-group:first-child{padding-top:var(--space-1)}
}
.pf-avatar-wrap{position:relative}
button.pf-avatar{min-height:40px;padding:0;border:0}
button.pf-avatar:hover{background:var(--onyx-3)}
.pf-avatar-menu{position:absolute;right:0;top:48px;z-index:30;min-width:240px;padding:var(--space-3);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-tile);box-shadow:var(--shadow-lift);display:flex;flex-direction:column;gap:var(--space-2)}
.pf-avatar-menu p{margin:0 0 var(--space-1)}
.pf-avatar-menu button{min-height:40px;text-align:left}
.pf-topline .grow{min-width:0}
.pf-topline .grow>h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- Handover stage 2: underwater site readings. Tokens only. ---- */
:root{--uw-scour:var(--red);--uw-accretion:var(--green);--uw-water-bg:rgba(61,217,245,.06)}
.uw-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:0 0 var(--space-3)}
.uw-head>button{min-height:40px;padding:6px 14px}
.uw-save{margin-left:auto;font-size:14px;font-weight:600;color:var(--muted)}
.uw-save-saved{color:var(--green)}.uw-save-offline,.uw-save-conflict{color:var(--amber)}.uw-save-error{color:var(--red)}
.uw-save button{min-height:32px;padding:4px 10px;font-size:13px}
.uw-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-3) var(--space-4)}
.programme label.uw-field{font-size:14px}
.uw-readout{margin-top:var(--space-4);font-weight:700;color:var(--green)}
.uw-pills{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0 0 var(--space-3)}
.uw-pill{min-height:40px;padding:6px 14px;display:inline-flex;gap:8px;align-items:center}
.uw-pill small{display:inline;font-size:12px}
.uw-pill.active{background:var(--select-bg);color:var(--chalk);border-color:var(--ion-700)}
.uw-pill.active small{color:var(--ink-2)}
.uw-pill.done:not(.active){border-color:var(--green-line)}
.uw-card-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.uw-card-head h3{margin:0}
.uw-pen{margin:0}
.uw-split{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}
@media (min-width:1100px){.uw-split{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}}
.uw-table-wrap{min-width:0}
.uw-table{width:100%;border-collapse:collapse}
.uw-table th{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:left;padding:4px 6px}
.uw-table td{padding:3px 4px;vertical-align:middle}
.programme .uw-table input{min-height:44px;padding:8px 10px;font-size:18px}
.programme .uw-table input.uw-raw{font-weight:700;text-align:right;border-color:var(--ion-soft)}
.programme .uw-table input.uw-prev{text-align:right}
.programme .uw-table input.uw-pos{font-weight:700;min-width:5ch}
.programme .uw-table input.uw-bad{border-color:var(--red);background:var(--red-bg)}
.uw-change{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.uw-scour{color:var(--uw-scour)}.uw-accretion{color:var(--uw-accretion)}
.uw-water td{background:var(--uw-water-bg);font-weight:700;padding:10px 8px}
.uw-x{min-height:36px;padding:2px 8px;font-size:18px;text-decoration:none;color:var(--faint)}
.uw-x:hover{color:var(--red)}
.uw-chart{border:1px solid var(--line);border-radius:var(--r-tile);background:var(--surface);padding:var(--space-2)}
.uw-chart svg{width:100%;height:auto;display:block}
.uw-set{border:1px solid var(--line);border-radius:var(--r-tile);margin:var(--space-2) 0;background:var(--canvas)}
.uw-set-head{display:flex;justify-content:space-between;align-items:center;width:100%;border:0;background:none;min-height:48px;text-align:left}
.uw-set-body{padding:0 var(--space-3) var(--space-3);background:var(--surface);border-radius:0 0 var(--r-tile) var(--r-tile)}
.uw-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3);margin:var(--space-3) 0}
.uw-tile{border:1px solid var(--line);border-radius:var(--r-tile);padding:var(--space-3) var(--space-4)}
.uw-tile strong{display:block;font-size:24px}
.uw-exports{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-3)}
.uw-export{border:1px solid var(--line);border-radius:var(--r-tile);padding:var(--space-4)}
.uw-export h4{margin:0 0 var(--space-2)}
@media (max-width:760px){.uw-table th:nth-child(1),.uw-table td:nth-child(1){width:26%}.programme .uw-table input{font-size:17px;padding:8px 6px}}
.uw-table th{white-space:nowrap}
.ew-speech-row{display:flex;gap:var(--space-2);flex-wrap:wrap;margin:var(--space-2) 0}
.ew-speech{min-height:38px;padding:6px 12px;font-size:14px}
.ew-speech[aria-pressed=true]{background:var(--red-bg);color:var(--red)}
.ai-fill{border-left:4px solid var(--steel)}
.ai-fill-list{max-height:260px;overflow:auto;font-size:14px}

/* ---- Handover stage 4: review workspace, comments, files. Tokens only. ---- */
.rv-diff{margin:var(--space-3) 0}
.rv-diff h4{margin:0 0 var(--space-1);font-size:13px;letter-spacing:.04em;text-transform:uppercase}
.rv-diff-new h4{color:var(--green)}.rv-diff-changed h4{color:var(--amber)}.rv-diff-gone h4{color:var(--red)}
.rv-diff ul{margin:0;padding-left:20px}
.rv-compare-out{margin-top:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--canvas);border-radius:var(--r-tile)}
.rv-compare-out:empty{display:none}
.rv-lsd-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.rv-lsd{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);padding:var(--space-4);margin:var(--space-3) 0;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-tile)}
@media (min-width:1100px){.rv-lsd{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.rv-lsd-exam p{margin:0 0 var(--space-2)}
.rv-lsd-eng{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3);align-items:end}
.rv-risk{align-self:center}
.rv-comments{list-style:none;padding:0;margin:0 0 var(--space-4)}
.rv-comments li{padding:var(--space-3) 0;border-bottom:1px solid var(--line)}
.rv-comment-head{display:flex;gap:var(--space-3);align-items:baseline}
.rv-comments p{margin:var(--space-1) 0 0;white-space:pre-wrap}
.rv-themes{padding:var(--space-3) var(--space-4);background:var(--amber-bg);border:1px solid var(--amber-line);border-radius:var(--r-tile);margin:var(--space-2) 0}
.rv-themes ul{margin:var(--space-2) 0 0;padding-left:20px}
.rp-chart-3 svg{height:74mm;width:100%}

/* ---- Handover stage 5: map and version history. Tokens only. ---- */
/* Dark map: the light map tiles are inverted to match the interface (markers and lines are not filtered). */
.mp-map .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.9) contrast(.85) saturate(.6)}
.mp-map.leaflet-container{background:var(--obsidian)}
.mp-map .leaflet-bar a{background:var(--onyx-2);color:var(--chalk);border-bottom-color:var(--line-2)}
.mp-map .leaflet-bar a:hover{background:var(--onyx-3)}
.mp-map .leaflet-bar{border-color:var(--line-2)}
.mp-map .leaflet-tooltip{background:var(--onyx-2);color:var(--chalk);border-color:var(--line-2);box-shadow:var(--shadow-lift)}
.mp-map .leaflet-tooltip-right::before{border-right-color:var(--line-2)}.mp-map .leaflet-tooltip-left::before{border-left-color:var(--line-2)}
.mp-map .leaflet-control-attribution{background:rgba(17,18,22,.8);color:var(--muted)}.mp-map .leaflet-control-attribution a{color:var(--ion)}
.mp-map .leaflet-popup-content-wrapper,.mp-map .leaflet-popup-tip{background:var(--onyx-2);color:var(--chalk)}
.mp-map{height:min(70vh,640px);border:1px solid var(--line);border-radius:var(--r-tile);overflow:hidden;margin:var(--space-3) 0;background:var(--canvas)}
.mp-matches{display:flex;flex-direction:column;gap:var(--space-2)}
.mp-match{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-tile)}
.mp-match button{min-height:38px;padding:6px 12px}
.vh-out{margin-top:var(--space-3)}
.vh-diff td{overflow-wrap:anywhere;max-width:40ch}

/* ---- Handover stage 6: the assistant. Tokens only. ---- */
.as-wrap{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(96px,calc(env(safe-area-inset-bottom) + 96px));z-index:40;display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-2)}
.as-bubble{width:56px;height:56px;min-height:56px;border-radius:50%;padding:0;font-size:24px;background:var(--onyx-2);color:var(--ion);border:1px solid var(--ion-700);box-shadow:var(--shadow-lift)}
.as-bubble:hover{background:var(--onyx-3)}
.as-panel{width:min(420px,calc(100vw - 32px));max-height:min(70vh,560px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-lift);padding:var(--space-4)}
.as-head{display:flex;justify-content:space-between;align-items:center}
.as-x{min-height:36px;padding:4px 12px;font-size:20px}
.as-log{flex:1;overflow:auto;display:flex;flex-direction:column;gap:var(--space-2);margin:var(--space-2) 0;min-height:80px}
.as-msg{padding:var(--space-2) var(--space-3);border-radius:var(--r-tile);max-width:92%}
.as-msg p{margin:0;white-space:pre-wrap}
.as-me{align-self:flex-end;background:var(--tint)}
.as-ai{align-self:flex-start;background:var(--canvas);border:1px solid var(--line)}
.as-err{align-self:flex-start;background:var(--red-bg);color:var(--red)}
.as-refs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.as-refs button{min-height:32px;padding:4px 10px;font-size:13px}
.as-ask{display:flex;gap:var(--space-2);align-items:flex-end}
.as-ask textarea{min-height:56px}
