/* Palette and lockup match BI Web; typography follows its desktop adaptation. */
:root {
  --paper:#F6F6F1; --ink:#36412E; --sub:#626659; --muted:#676D5E;
  --green:#596735; --line:#E3E5DA; --tint:#EFF2E4; --olive:#879753;
  --card:#FFFFFF; --danger:#B34434; --success:#397555; --warning:#80541E; --warning-bg:#F7EEDC;
  --num:'DIN Alternate','Helvetica Neue',sans-serif;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink); background:var(--paper); font-size:14px; line-height:1.6;
  font-variant-numeric:tabular-nums; color-scheme:light;
}
* { box-sizing:border-box; }
body { margin:0; overflow-wrap:anywhere; }
button,input,select,textarea { font:inherit; color:inherit; }
button,a { touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
a { color:var(--green); text-underline-offset:4px; }
.topbar { min-height:96px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; gap:24px; padding:24px 32px; background:var(--paper); }
.brand { display:block; text-decoration:none; flex-shrink:0; }
.brand img { display:block; width:188px; height:26.4375px; object-fit:contain; }
.brand span { display:block; font-size:11px; color:var(--sub); letter-spacing:1px; font-weight:400; margin-top:10px; }
#identity { display:flex; align-items:center; justify-content:flex-end; gap:12px; flex-wrap:wrap; font-size:13px; }
main { max-width:1320px; margin:auto; padding:28px 32px calc(60px + env(safe-area-inset-bottom)); min-width:0; }
h1 { font-size:28px; line-height:1.35; margin:8px 0 12px; font-weight:600; color:var(--green); }
h2 { font-size:17px; line-height:1.5; font-weight:600; margin:0 0 16px; border-left:3px solid var(--olive); padding-left:10px; }
h3 { font-size:15px; line-height:1.5; font-weight:600; margin:12px 0; }
p { margin:0 0 14px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:24px; margin:20px 0; min-width:0; }
.hero { background:var(--tint); }
.muted { font-size:12px; color:var(--muted); line-height:1.7; }
.intro { max-width:700px; color:var(--sub); line-height:1.85; }
.grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.grid>.card { margin:0; }
.stack { display:grid; gap:12px; }
.row { display:flex; gap:12px; align-items:center; flex-wrap:wrap; justify-content:space-between; }
.actions { display:flex; align-items:stretch; gap:12px; flex-wrap:wrap; margin:8px 0 16px; }
.actions>* { min-width:0; }
.actions:has(.primary)>button,.actions:has(.primary)>.button { min-height:48px; }
.field { display:block; margin:16px 0; font-size:13px; color:var(--sub); }
.field>span { display:block; margin-bottom:6px; }
input,select,textarea { display:block; width:100%; border:1px solid var(--line); border-radius:8px; padding:10px 12px; background:var(--card); min-height:44px; line-height:1.5; color:var(--ink); }
input,select { height:44px; }
textarea { min-height:112px; resize:vertical; }
input:disabled,select:disabled,textarea:disabled { color:var(--sub); background:var(--paper); cursor:default; }
input[type=checkbox] { width:20px; height:20px; min-height:20px; margin:0; accent-color:var(--green); }
input[type=file] { height:auto; }
button,.button { display:inline-flex; justify-content:center; align-items:center; min-height:44px; padding:10px 16px; border:1px solid var(--line); border-radius:8px; background:var(--card); color:var(--green); text-decoration:none; text-align:center; font-size:14px; font-weight:400; cursor:pointer; line-height:1.5; transition:background-color .14s ease,border-color .14s ease,color .14s ease,transform .12s ease; }
button:hover:not(:disabled),.button:hover { background:var(--tint); border-color:var(--olive); }
button.primary,.button.primary { background:var(--green); color:var(--card); border-color:var(--green); min-height:48px; }
button.primary:hover:not(:disabled),.button.primary:hover { background:#4D5A2E; border-color:#4D5A2E; }
form>button[type=submit] { width:auto; margin-top:16px; }
.web-form { max-width:880px; container-type:inline-size; }
.web-form[data-form="create-person"],.web-form[data-form="update-person"] { max-width:720px; }
.web-form:is([data-form="create-person"],[data-form="update-person"]) .form-fields>.field:first-child { grid-column:1/-1; }
.form-fields { display:grid; grid-template-columns:minmax(0,1fr); gap:16px 20px; }
.form-fields>.field,.form-fields .admin-option { margin:0; min-width:0; }
.form-fields>:not(.field),.form-fields>.field:has(textarea) { grid-column:1/-1; }
.form-fields>p { margin:0; }
.form-fields #defect-fields { display:grid; gap:16px 20px; grid-template-columns:minmax(0,1fr); }
.form-fields #defect-fields>.field { margin:0; }
.form-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:20px; }
.form-actions>button { min-height:48px; min-width:104px; }
.web-form>.error:not([hidden]) { margin-top:16px; }
@container (min-width:560px) {
 .form-fields,.form-fields #defect-fields { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:780px) {
 .form-actions>button { flex:1; }
}
.link { border-color:transparent; background:transparent; }
.danger { color:var(--danger); border-color:var(--danger); }
button:disabled,button.primary:disabled { background:var(--line); color:var(--muted); border-color:var(--line); cursor:default; }
.error { padding:12px; color:var(--warning); background:var(--warning-bg); border:1px solid #E6D7BB; border-radius:8px; white-space:pre-wrap; font-size:13px; }
.error h2 { color:var(--warning); border:0; padding:0; margin:0 0 8px; }
.success { padding:12px; color:var(--success); background:#EDF5EE; border-radius:8px; }
.badge { display:inline-block; padding:3px 8px; border:1px solid var(--line); border-radius:6px; background:var(--tint); font-size:12px; white-space:nowrap; }
.badge.failed,.badge.open { color:var(--danger); background:#FBEFEB; }
.badge.passed,.badge.closed { color:var(--success); background:#EDF5EE; }
.metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; margin:20px 0; border:1px solid var(--line); border-radius:12px; background:var(--card); overflow:hidden; }
.metrics>div { min-width:0; padding:20px; border-right:1px solid var(--line); }
.metrics>div:first-child { background:var(--tint); }
.metrics>div:last-child { border-right:0; }
.metrics strong { font-family:var(--num); font-size:30px; font-weight:500; font-variant-numeric:tabular-nums; display:block; line-height:1.25; margin-bottom:8px; }
.metrics>div:first-child strong { font-size:34px; color:var(--green); }
.metrics span { font-size:12px; color:var(--muted); }
.list-row { padding:16px 0; border-top:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:16px; overflow-wrap:anywhere; }
.list-row>div { min-width:0; flex:1; }
.list-row button { flex-shrink:0; }
.filters { display:flex; gap:12px; flex-wrap:wrap; }
.filters select,.filters input { width:auto; flex:1; min-width:160px; }
.group { padding:12px 0; }
.group>h3 { background:var(--tint); padding:12px; border-radius:8px; }
.check-title { font-size:14px; font-weight:500; margin:0 0 6px; }
.standard { white-space:pre-wrap; line-height:1.8; overflow-wrap:anywhere; }
.source { font-size:11px; color:var(--muted); line-height:1.7; overflow-wrap:anywhere; }
.options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.option { display:flex; gap:8px; align-items:center; min-height:44px; font-size:14px; }
.photos { display:flex; gap:12px; flex-wrap:wrap; }
.photos figure { margin:0; width:160px; }
.photos img { display:block; width:160px; height:130px; object-fit:cover; border-radius:8px; }
.photos figcaption { font-size:12px; margin:6px 0; color:var(--muted); }
.check-detail { max-width:850px; margin:auto; }
.qr { width:240px; height:240px; object-fit:contain; display:block; margin:16px 0; background:var(--paper); }
#message { position:fixed; bottom:calc(16px + env(safe-area-inset-bottom)); left:50%; transform:translateX(-50%); max-width:calc(100% - 32px); padding:12px 20px; border:1px solid var(--line); border-radius:8px; background:var(--green); color:white; display:none; }
#message.visible { display:block; }
.report-check { break-inside:avoid; }
.report-check h3 { font-size:15px; }
.report-meta { display:flex; gap:18px; flex-wrap:wrap; }
.empty { padding:20px 0; color:var(--muted); font-size:13px; }
:focus-visible { outline:2px solid var(--green); outline-offset:3px; }
button:active:not(:disabled) { opacity:.72; transform:translateY(1px); }
#app>.card,#app>.grid,#app>.login,#app>h1,#app>.page-heading,#app>.workspace-grid { animation:engineering-enter .18s ease-out; }
@keyframes engineering-enter { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }
@media(max-width:780px) {
  .grid { grid-template-columns:1fr; }
  .topbar { padding:20px 16px; align-items:center; }
  .brand img { width:152px; height:21.375px; }
  .topbar #identity { font-size:12px; }
  main { padding:20px 16px calc(40px + env(safe-area-inset-bottom)); }
  h1 { font-size:24px; }
  .card { padding:16px; margin:16px 0; }
  .grid>.card { margin:0; }
  .options { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .metrics>div { padding:16px; border-bottom:1px solid var(--line); }
  .metrics>div:nth-child(2n) { border-right:0; }
  .metrics>div:nth-last-child(-n+2) { border-bottom:0; }
  .metrics strong { font-size:25px; }
  .metrics>div:first-child strong { font-size:30px; }
  .list-row { flex-wrap:wrap; }
  .list-row>div { flex-basis:100%; }
  .actions>* { flex:1; }
  .actions .button { white-space:normal; }
}
@media(max-width:400px) {
  .topbar { flex-wrap:wrap; gap:16px; }
  #identity { width:100%; justify-content:space-between; }
  .options { grid-template-columns:1fr; }
  .photos figure,.photos img { width:120px; }
  .photos img { height:110px; }
}
/* Engineering archive: an explicit grid, quiet metadata and task-first rhythm. */
html { scroll-behavior:smooth; scroll-padding-top:24px; }
input[type=hidden],[hidden] { display:none!important; }
.skip-link { position:fixed; top:12px; left:16px; z-index:20; padding:12px 20px; background:var(--card); border:1px solid var(--green); transform:translateY(-160%); }
.skip-link:focus { transform:translateY(0); }
.topbar { min-height:100px; padding-inline:max(32px,calc((100vw - 1256px)/2)); }
.brand span { letter-spacing:.12em; margin-top:12px; }
main { padding-top:40px; }
h1 { font-size:36px; line-height:1.28; letter-spacing:-.035em; text-wrap:balance; }
h2 { letter-spacing:.015em; }
.page-heading { padding-bottom:28px; margin-bottom:24px; border-bottom:1px solid var(--line); }
.eyebrow { font-size:12px; letter-spacing:.09em; margin:0 0 16px; color:var(--sub); }
.heading-line { display:flex; align-items:baseline; gap:16px; flex-wrap:wrap; justify-content:space-between; }
.scope-count { font-size:12px; font-variant-numeric:tabular-nums; }
.page-description { color:var(--sub); font-size:14px; line-height:1.8; margin:14px 0 0; max-width:65ch; }
.section-heading { display:flex; justify-content:space-between; align-items:baseline; gap:16px; flex-wrap:wrap; margin-bottom:20px; }
.section-heading h2 { margin-bottom:0; }
.section-caption { color:var(--muted); font-size:12px; margin:0; }
.workspace-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(280px,1fr); gap:24px; align-items:start; }
.workspace-grid .card { margin:0; }
.workspace-grid:has(.workspace-tools:empty) { grid-template-columns:1fr; }
.workspace-tools { display:grid; gap:16px; min-width:0; }
.project-register { padding:28px; }
.project-row { padding:28px 0; gap:20px; }
.project-row h3 { font-size:20px; line-height:1.5; margin:0 0 8px; letter-spacing:-.015em; }
.row-index { font-family:var(--num); font-size:12px; font-variant-numeric:tabular-nums; color:var(--muted); flex-shrink:0; align-self:flex-start; padding-top:4px; }
.register-note { font-size:12px; color:var(--muted); margin:16px 0 0; padding-top:16px; border-top:1px solid var(--line); }
.disclosure { align-self:start; }
.disclosure>summary { cursor:pointer; font-size:16px; font-weight:500; display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:44px; list-style:none; }
.disclosure>summary::-webkit-details-marker,.version-details>summary::-webkit-details-marker { display:none; }
.disclosure-mark { font-size:24px; line-height:1; font-weight:400; transition:transform .18s ease; }
.disclosure[open]>.disclosure-mark,.disclosure[open]>summary .disclosure-mark { transform:rotate(45deg); }
.disclosure[open]>summary { padding-bottom:16px; border-bottom:1px solid var(--line); margin-bottom:16px; }
.disclosure[open]>form { animation:engineering-enter .18s ease-out; }
.report-create { margin-top:24px; border-top:1px solid var(--line); padding-top:12px; }
.version-details { font-size:12px; margin-top:14px; max-width:65ch; }
.version-details>summary { list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:8px; min-height:44px; color:var(--muted); }
.version-details>summary::after { content:'+'; font-size:16px; }
.version-details[open]>summary::after { content:'−'; }
.version-details .source { display:block; padding:8px 0; }
.back-actions { margin:0 0 12px; }
.back-actions button { background:transparent; border-color:transparent; justify-content:flex-start; padding-left:0; }
.section-nav { display:flex; align-items:center; gap:8px 28px; flex-wrap:wrap; margin:0 0 24px; padding-bottom:4px; border-bottom:1px solid var(--line); }
.section-nav a { display:inline-flex; align-items:center; gap:8px; min-height:44px; text-decoration:none; font-size:13px; border-bottom:2px solid transparent; }
.section-nav a:hover,.section-nav a:focus-visible { border-bottom-color:var(--green); }
.section-nav span { font-family:var(--num); font-size:11px; }
.overview-card { padding:28px; }
.metrics { grid-template-columns:1.5fr repeat(3,minmax(0,1fr)); margin:0 0 24px; }
.metrics>div { padding:24px; display:flex; flex-direction:column; justify-content:center; }
.metrics>div:first-child { align-items:flex-start; }
.metrics strong { font-size:30px; margin:0 0 10px; line-height:1.15; }
.metrics>div:first-child strong { font-size:44px; margin:10px 0 16px; }
.metrics strong small { font-size:20px; font-weight:400; white-space:nowrap; }
.completion-track { display:block; width:100%; height:3px; border:0; appearance:none; background:var(--line); color:var(--green); }
.completion-track::-webkit-progress-bar { background:var(--line); }
.completion-track::-webkit-progress-value { background:var(--green); }
.completion-track::-moz-progress-bar { background:var(--green); }
.section-scores { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:32px; }
.section-scores .list-row { padding:14px 0; font-size:13px; gap:12px; flex-wrap:wrap; }
.section-scores .list-row>span:last-child { font-variant-numeric:tabular-nums; }
.summary-note { color:var(--muted); font-size:12px; margin:14px 0 0; line-height:1.8; }
.checks-card { margin-top:28px; }
.filters { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)) minmax(200px,1.3fr); gap:12px; position:sticky; top:0; z-index:4; background:var(--card); padding:16px 0 20px; border-bottom:1px solid var(--line); }
.filters label { min-width:0; }
.filters label>span { display:block; font-size:12px; color:var(--sub); margin:0 0 6px; }
.filters select,.filters input { width:100%; min-width:0; }
.group { padding:24px 0 0; }
.group>h3 { margin:0; padding:12px 16px; font-size:13px; letter-spacing:.02em; }
.check-item { display:grid; grid-template-columns:24px minmax(0,1fr) auto; align-items:start; gap:18px; padding:24px 0; }
.check-item:first-of-type { border-top:0; }
.check-item>div { min-width:0; }
.check-heading { display:flex; gap:12px; align-items:baseline; flex-wrap:wrap; margin-bottom:10px; }
.check-title { font-size:16px; font-weight:500; line-height:1.5; margin:0; }
.check-preview { font-size:13px; color:var(--sub); line-height:1.85; margin:0 0 10px; max-width:75ch; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.check-score { font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; margin:0; }
.row-action { gap:8px; transition:transform .16s ease,border-color .14s ease,background-color .14s ease; }
@media(hover:hover) and (pointer:fine) { .row-action:hover:not(:disabled) { transform:translateX(3px); } }
.row-action:disabled::before { content:''; display:block; flex-shrink:0; width:12px; height:12px; border:1px solid currentColor; border-right-color:transparent; border-radius:50%; animation:engineering-spin .65s linear infinite; }
@keyframes engineering-spin { to { transform:rotate(360deg); } }
input,select,textarea { transition:border-color .14s ease,outline-offset .14s ease; }
input:focus-visible,select:focus-visible,textarea:focus-visible { outline-offset:2px; }
.check-detail { max-width:920px; }
.check-detail>h1 { font-size:32px; margin-bottom:28px; }
.check-detail .standard { max-width:70ch; line-height:1.95; }
.management-grid { margin-top:32px; align-items:start; }
#message { z-index:10; }
@media(min-width:781px) {
  .page-heading:has(.version-details) { position:relative; padding-right:210px; }
  .page-heading>.version-details { position:absolute; right:0; bottom:28px; max-width:190px; margin:0; }
  .page-heading>.version-details[open] { position:static; max-width:65ch; }
  .overview-card { padding:24px; }
  .overview-card .section-heading { margin-bottom:16px; }
  .overview-card .metrics { margin-bottom:16px; }
  .overview-card .metrics>div { padding:16px 24px; }
  .overview-card .metrics>div:first-child strong { margin:8px 0 12px; }
}
@media(max-width:1000px) { .workspace-grid { grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr); } .project-row { flex-wrap:wrap; } .project-row>div { flex-basis:calc(100% - 44px); } .project-row>.row-action { margin-left:36px; } .filters { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:780px) {
  .topbar { min-height:88px; padding:20px 16px; }
  main { padding-top:28px; }
  h1 { font-size:28px; }
  .page-heading { padding-bottom:24px; margin-bottom:20px; }
  .eyebrow { font-size:11px; margin-bottom:12px; }
  .page-description { font-size:13px; }
  .workspace-grid { grid-template-columns:1fr; gap:20px; }
  .project-register,.overview-card { padding:20px; }
  .project-row h3 { font-size:18px; }
  .project-row>div { flex-basis:auto; }
  .project-row>.row-action { margin-left:0; }
  .section-heading { gap:8px 16px; margin-bottom:16px; }
  .section-nav { gap:4px 20px; margin-bottom:20px; }
  .section-nav a { font-size:12px; }
  .metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .metrics>div { padding:18px; }
  .metrics strong { font-size:25px; }
  .metrics>div:first-child strong { font-size:36px; }
  .metrics strong small { font-size:16px; }
  .section-scores { grid-template-columns:1fr; }
  .back-actions { justify-content:flex-start; }
  .back-actions>* { flex:initial; }
  .check-item { grid-template-columns:20px minmax(0,1fr); gap:12px; padding:20px 0; }
  .check-item>.row-action { grid-column:2; justify-self:start; }
  .check-title { font-size:15px; }
  .check-preview { -webkit-line-clamp:3; }
  .filters { padding:12px 0 16px; gap:12px; }
  .check-detail>h1 { font-size:26px; }
}
@media(max-width:400px) {
  .project-register,.overview-card { padding:16px; }
  .project-row { display:grid; grid-template-columns:20px minmax(0,1fr); gap:12px; }
  .project-row>.row-action { grid-column:2; justify-self:start; }
  .metrics>div { padding:14px; }
  .metrics>div:first-child strong { font-size:32px; }
  .filters { gap:8px; }
  .filters label>span { font-size:11px; }
  .filters select,.filters input { font-size:13px; padding-inline:8px; }
}

@media(max-height:560px) { .filters { position:static; } }

body.report { max-width:1000px; margin:0 auto; padding:32px 24px; background:white; line-height:1.7; }
.report-brand { display:block; width:188px; height:26.4375px; object-fit:contain; margin-bottom:28px; }
.report h1 { font-size:26px; }
.report h2 { margin-top:28px; }
.report article { border-top:1px solid var(--line); padding:16px 0; break-inside:avoid; }
.report .preserve { white-space:pre-wrap; overflow-wrap:anywhere; }
.report table { border-collapse:collapse; width:100%; font-size:13px; }
.report th,.report td { border:1px solid var(--line); padding:9px; text-align:left; }
.report th { background:var(--tint); }
.report-photos { display:flex; gap:12px; flex-wrap:wrap; }
.report-photos figure { margin:8px 0; max-width:220px; }
.report-photos img { display:block; width:100%; max-height:200px; object-fit:contain; }
.report-photos figcaption { font-size:12px; color:var(--muted); }
@media(max-width:480px) {
  body.report { padding:20px 16px; }
  .report-brand { width:152px; height:21.375px; }
  .report h1 { font-size:22px; }
  .report table { font-size:12px; }
  .report th,.report td { padding:6px; }
  .report-photos figure { max-width:calc(50% - 6px); }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none!important; transition:none!important; }
  .row-action:hover:not(:disabled) { transform:none; }
  button:active:not(:disabled) { transform:none; }
}
@media print {
  .topbar,button,.actions,.filters,.section-nav,.skip-link,#message { display:none; }
  main { padding:0; max-width:none; }
  .card { break-inside:avoid; border-radius:0; }
  body,body.report { background:#fff; padding:0; max-width:none; font-size:11pt; color:#222; }
  .report h1 { font-size:20pt; }
  .report h2 { font-size:14pt; break-after:avoid; }
  .report article { break-inside:auto; }
  .report-photos { break-inside:avoid; }
  .report-photos img { max-height:180px; }
  .report a { color:inherit; }
  .report th { background:#F0F0EB; }
}


/* Project preparation and report follow-up use the existing paper/olive tokens. */
.template-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(320px,1fr); gap:24px; align-items:start; }
.template-layout>.card { margin:0; }
.template-filters { grid-template-columns:minmax(120px,.7fr) minmax(0,1fr); position:static; }
.template-item { gap:12px; padding:14px 0; }
.template-item h3 { font-size:14px; margin:0 0 5px; }
#template-items { max-height:65vh; overflow:auto; overscroll-behavior:contain; padding-right:8px; margin-top:16px; }
.template-editor { position:sticky; top:24px; }
.template-editor textarea { min-height:160px; }
.admin-option { grid-column:1/-1; font-size:12px; }
.report-actions { margin-bottom:24px; }
.report-document { background:var(--card); border:1px solid var(--line); padding:48px; max-width:1100px; margin:0 auto; }
.report-cover { padding-bottom:32px; border-bottom:2px solid var(--green); }
.report-title-line { display:flex; justify-content:space-between; align-items:flex-start; gap:24px; }
.report-title-line h1 { margin-top:0; font-size:32px; }
.report-subtitle { font-size:18px; letter-spacing:.08em; color:var(--sub); margin:12px 0 28px; }
.report-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 32px; margin:20px 0 28px; }
.report-meta>div,.issue-meta>div { min-width:0; }
.report-meta dt,.issue-meta dt { color:var(--muted); font-size:12px; margin-bottom:4px; }
.report-meta dd,.issue-meta dd { margin:0; font-size:13px; overflow-wrap:anywhere; }
.report-conclusion { padding:20px; border-left:3px solid var(--olive); background:var(--tint); margin-bottom:20px; }
.report-follow-up,.report-overview { margin-top:36px; }
.report-follow-up>.section-heading,.report-overview>.section-heading { padding-bottom:16px; border-bottom:1px solid var(--line); }
.report-issue { padding:24px; border:1px solid var(--line); border-radius:8px; margin-top:20px; }
.report-issue .section-heading { margin-bottom:16px; align-items:flex-start; }
.report-issue .eyebrow { margin:0 0 6px; font-size:11px; }
.report-issue h3 { font-size:18px; margin:0; }
.issue-finding { border-left:2px solid var(--olive); padding-left:16px; }
.issue-meta { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:20px 0; padding:16px 0; border-block:1px solid var(--line); }
.report-evidence { margin:12px 0; }
.report-evidence .photos { gap:12px; }
.report-evidence .photos figure { width:160px; max-width:100%; }
.report-evidence img { width:100%; height:150px; object-fit:contain; background:var(--paper); border:1px solid var(--line); }
.repair-workspace { background:var(--paper); border:1px solid var(--line); border-radius:8px; padding:20px; margin:20px 0; }
.repair-workspace h4 { font-size:16px; margin:0 0 12px; font-weight:500; }
.repair-workspace form+form { margin-top:24px; padding-top:8px; border-top:1px solid var(--line); }
.issue-history { border-top:1px solid var(--line); padding-top:12px; margin-top:20px; }
.issue-history>summary { font-size:13px; font-weight:400; }
.report-timeline { padding:0 0 0 20px; margin:16px 0 0; list-style:none; border-left:1px solid var(--line); }
.report-timeline>li { position:relative; margin:0 0 24px; min-width:0; }
.report-timeline>li::before { content:''; position:absolute; left:-24px; top:8px; width:7px; height:7px; border:1px solid var(--green); border-radius:50%; background:var(--card); }
.report-timeline strong { font-size:13px; font-weight:500; }
.report-timeline .standard { font-size:13px; margin-bottom:8px; }
.report-appendix { margin-top:32px; border-top:1px solid var(--line); padding-top:16px; }
.report-appendix>summary { font-size:16px; }
.report-appendix .report-check { padding:24px 0; border-top:1px solid var(--line); }
.report-appendix .report-check:first-of-type { border-top:0; }
.report-footer { margin-top:32px; padding-top:20px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; }
#report-share { padding:16px; background:var(--tint); border:1px solid var(--line); border-radius:8px; margin:16px 0; }
#report-share .field { margin-top:0; }
#report-share p { margin-bottom:0; }
.report-masthead { display:flex; justify-content:space-between; align-items:flex-start; gap:24px; padding-bottom:24px; border-bottom:1px solid var(--line); margin-bottom:28px; }
.report-masthead .report-brand { margin:0; }
.report-masthead p { margin:0; }
.report-table { width:100%; border-collapse:collapse; }
.report-table thead { display:table-header-group; }
.report-table th,.report-table td { border:1px solid var(--line); padding:10px; vertical-align:top; text-align:left; font-size:12px; }
.report-table th { background:var(--tint); font-weight:500; }
.report-signatures { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; border-top:1px solid var(--line); padding-top:24px; margin-top:36px; }
body.report { background:var(--paper); max-width:1160px; }
body.report .report-document { padding:40px; }
body.report .report-issue { break-inside:avoid; }
body.report .report-evidence img { max-height:180px; }
body.report .report-appendix article { break-inside:auto; }
@media(max-width:780px) {
 .template-layout { grid-template-columns:1fr; gap:20px; }
 .template-editor { position:static; }
 #template-items { max-height:45vh; }
 .report-document,body.report .report-document { padding:24px; }
 .report-title-line h1 { font-size:26px; }
 .report-title-line { flex-wrap:wrap; gap:0 16px; }
 .report-subtitle { font-size:16px; margin-bottom:16px; }
 .report-meta { gap:16px; }
 .report-issue { padding:16px; }
 .report-issue h3 { font-size:16px; }
 .report-masthead { flex-wrap:wrap; }
 .repair-workspace { padding:16px; }
 .report-actions { gap:8px; }
 .report-actions>* { flex:1 1 140px; }
}
@media(max-width:400px) {
 .report-document,body.report .report-document { padding:16px; }
 .report-meta,.issue-meta,.report-signatures { grid-template-columns:1fr; }
 .report-meta { gap:12px; }
 .report-follow-up,.report-overview { margin-top:28px; }
 .report-issue { padding:14px; }
 .repair-workspace { padding:12px; }
 .report-evidence .photos figure { width:120px; }
 .report-evidence img { height:120px; }
}
@page { size:A4; margin:16mm; }
@media print {
 .report-document,body.report .report-document { border:0; padding:0; max-width:none; }
 body.report { margin:0; }
 .report-masthead,.report-cover,.report-overview { break-inside:auto; }
 .report-meta { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .issue-meta { grid-template-columns:repeat(3,minmax(0,1fr)); }
 .report-signatures { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .report-issue,.report-evidence,.report-signatures { break-inside:avoid; }
 .report-timeline>li { break-inside:avoid; }
 .report-appendix,.report-appendix article,.report-check { break-inside:auto; }
 .report-evidence img { max-height:180px; height:auto; object-fit:contain; }
 .report-table thead { display:table-header-group; }
 .report-table tr { break-inside:avoid; }
 .report-table { font-size:9pt; }
 .report-appendix>summary,.issue-history>summary { break-after:avoid; }
 .report-follow-up { margin-top:24px; }
 .report-issue { border-radius:0; padding:16px; }
 .repair-workspace,#report-share { display:none; }
 h1,h2,h3,h4 { break-after:avoid; }
}
/* The protected HTML export applies the document class to its body. */
body.report.report-document { background:var(--card); max-width:1100px; padding:40px; margin:32px auto; }
.report-evidence { display:flex; flex-wrap:wrap; gap:12px; }
.report-evidence>.photos { width:100%; }
.report-evidence>figure { margin:0; width:180px; max-width:100%; }
.report-evidence>figure figcaption { font-size:11px; color:var(--muted); margin-top:6px; }
@media(max-width:780px) { body.report.report-document { padding:24px; margin:0 auto; } }
@media(max-width:400px) { body.report.report-document { padding:16px; } .report-evidence>figure { width:120px; } }
@media print { body.report.report-document { margin:0; padding:0; border:0; max-width:none; } .report-evidence>figure { width:180px; } }

/* BI Web shell: shared hierarchy, proportions and interaction placement. */
.shell { display:grid; grid-template-columns:240px minmax(0,1fr); min-height:100vh; }
.sidebar { background:var(--paper); padding:32px 22px 24px; display:flex; flex-direction:column; position:sticky; top:0; height:100vh; border-right:1px solid var(--line); }
.sidebar .brand { width:188px; }
.brand-sub { font-size:11px; color:var(--sub); margin:14px 0 42px; letter-spacing:1px; }
.nav { display:grid; gap:6px; }
.nav button { display:flex; align-items:center; justify-content:flex-start; gap:13px; width:100%; text-align:left; color:var(--sub); background:transparent; border-color:transparent; padding:12px; min-height:48px; border-radius:8px; }
.nav button.active { background:var(--tint); color:var(--green); border-color:var(--line); font-weight:600; }
.nav-index { font-family:var(--num); font-size:11px; color:var(--muted); font-weight:400; }
.sidebar-footer { margin-top:auto; padding-top:22px; border-top:1px solid var(--line); font-size:11px; line-height:1.9; color:var(--muted); }
.sidebar-footer strong { color:var(--green); font-size:12px; font-weight:500; }
.main { padding:26px 40px calc(60px + env(safe-area-inset-bottom)); max-width:1600px; width:100%; min-width:0; }
.main>main { max-width:none; margin:0; padding:0; }
.main>.topbar { min-height:0; padding:0 0 22px; margin-bottom:30px; gap:20px; }
.topbar .eyebrow { margin:0; font-size:11px; letter-spacing:1.6px; font-weight:500; }
.topbar-user { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:6px; font-size:13px; }
.topbar .actions { align-items:center; margin:0; gap:8px; }
button.quiet { background:transparent; border-color:transparent; color:var(--sub); }
#identity { justify-content:flex-start; }
.main h1 { font-size:28px; letter-spacing:-.6px; line-height:1.35; }
.page-heading { padding-bottom:0; border:0; margin:26px 0 24px; }
.page-heading>.eyebrow { font-family:var(--num); font-size:11px; color:var(--muted); margin-bottom:8px; }
.loading { min-height:50vh; display:flex; align-items:center; justify-content:center; color:var(--sub); }
.login-mode .shell { display:block; }
.login-mode .main { max-width:none; padding:0; }
.login { max-width:none; margin:0; min-height:100vh; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:0; padding:0; align-items:stretch; }
.login-art { background:var(--tint); color:var(--green); padding:48px clamp(32px,5vw,80px); display:flex; flex-direction:column; justify-content:space-between; border-right:1px solid var(--line); gap:60px; }
.login-art .brand img { width:224px; height:31.5px; }
.login-art .brand-sub { margin-bottom:0; }
.login-art .eyebrow { font-size:11px; letter-spacing:1.6px; margin:0; }
.login-art h1 { font-size:clamp(32px,3.3vw,48px); font-weight:500; line-height:1.5; letter-spacing:-1px; margin:16px 0 20px; text-wrap:initial; }
.login-art p { max-width:420px; line-height:1.9; color:var(--sub); }
.login-principles { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; border-top:1px solid var(--line); padding-top:22px; }
.login-principles span { display:block; font-size:11px; color:var(--muted); font-family:var(--num); margin-bottom:8px; }
.login-principles strong { font-size:12px; font-weight:500; }
.login-form { display:flex; align-items:center; justify-content:center; padding:48px 32px calc(48px + env(safe-area-inset-bottom)); background:var(--paper); }
.login-box { width:380px; max-width:100%; min-width:0; }
.login-box h1 { font-size:26px; margin-top:0; }
.login-box .description { color:var(--sub); font-size:13px; line-height:1.85; }
.login-box .qr { width:220px; height:220px; max-width:100%; border:1px solid var(--line); border-radius:12px; margin:24px auto 16px; background:var(--card); }
.qr-placeholder { display:flex; align-items:center; justify-content:center; color:var(--sub); font-size:13px; }
#login-status { text-align:center; min-height:22px; }
.full { width:100%; min-height:48px; }
.login-help { margin:18px 0 0; }
#message { z-index:30; }
@media(max-width:1100px) { .shell { grid-template-columns:208px minmax(0,1fr); } .sidebar { padding-inline:16px; } .sidebar .brand,.sidebar .brand img { width:174px; height:24.47px; } .main { padding-inline:28px; } .workspace-grid { grid-template-columns:1fr; } }
@media(max-width:780px) {
 .shell { display:block; }
 .sidebar { position:static; height:auto; padding:24px 24px 16px; border-right:0; border-bottom:1px solid var(--line); }
 .sidebar .brand,.sidebar .brand img { width:188px; height:26.4375px; }
 .sidebar .brand-sub { margin:10px 0 20px; }
 .nav { grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }
 .nav button { justify-content:center; padding:10px 6px; min-height:44px; gap:6px; font-size:12px; }
 .nav-index,.sidebar-footer { display:none; }
 .main { padding:24px 24px calc(40px + env(safe-area-inset-bottom)); }
 .main>.topbar { margin-bottom:24px; align-items:flex-start; flex-wrap:wrap; }
 .main h1 { font-size:24px; }
 .topbar #identity { width:auto; }
 .page-heading { margin:24px 0 20px; }
 .login { display:block; }
 .login-art { padding:28px; gap:28px; }
 .login-art>div:nth-child(2),.login-principles { display:none; }
 .login-art .brand img { width:188px; height:26.4375px; }
 .login-form { padding:36px 24px calc(36px + env(safe-area-inset-bottom)); }
 .login-box { width:440px; }
 .login-box h1 { font-size:26px; }
}
@media(max-width:480px) {
 .sidebar { padding:22px 18px 14px; }
 .main { padding:22px 18px calc(40px + env(safe-area-inset-bottom)); }
 .main>.topbar { gap:14px; padding-bottom:18px; }
 .topbar .actions { width:100%; }
 .topbar .actions button { flex:1; }
}
@media(prefers-reduced-motion:reduce) { .nav button,.login button { transition:none; } }
@media print { .sidebar,.main>.topbar { display:none; } .shell { display:block; } .main { padding:0; max-width:none; } }
/* Personnel follows the BI list → detail flow; forms appear only on demand. */
.person-heading { margin:24px 0; }
.person-heading h1 { margin-bottom:10px; overflow-wrap:anywhere; }
.person-heading p { margin:0; }
.person-editor { max-width:680px; }
.person-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.person-facts span,.person-facts strong { display:block; overflow-wrap:anywhere; }
.person-facts span { font-size:12px; color:var(--sub); margin-bottom:6px; }
.person-facts strong { font-size:14px; font-weight:500; }
.people-table-wrap { max-width:100%; }
.people-table { width:100%; border-collapse:collapse; text-align:left; font-size:13px; }
.people-table th { font-size:11px; font-weight:500; color:var(--sub); padding:12px; background:var(--paper); border-block:1px solid var(--line); }
.people-table td { padding:16px 12px; border-bottom:1px solid var(--line); vertical-align:middle; overflow-wrap:anywhere; }
.people-table tr:last-child td { border-bottom:0; }
.people-table td:first-child { min-width:120px; }
.people-table td small { display:block; font-size:11px; line-height:1.8; color:var(--sub); margin-top:6px; }
.people-table button { font-size:12px; }
.people-table .cell-label { display:none; }
.person-invitation { border-top:1px solid var(--line); padding-top:18px; margin-top:18px; }
.verification-code { margin:16px 0 0; color:var(--green); font-size:16px; font-variant-numeric:tabular-nums; letter-spacing:.04em; }
.person-invite-code { margin-top:20px; }
.person-invite-code .qr { border:1px solid var(--line); border-radius:12px; max-width:100%; }
.person-invite-code .muted { max-width:440px; }
@media(max-width:780px) {
 .person-facts { grid-template-columns:1fr; gap:16px; }
 .people-table,.people-table tbody,.people-table tr,.people-table td { display:block; width:100%; }
 .people-table thead { display:none; }
 .people-table tr { padding:18px 0; border-top:1px solid var(--line); }
 .people-table tr:first-child { padding-top:0; border-top:0; }
 .people-table td { padding:7px 0; border:0; }
 .people-table td:first-child { font-size:15px; }
 .people-table td:last-child button { flex:1; }
 .people-table .cell-label { display:block; font-size:11px; color:var(--sub); margin-bottom:6px; }
 .person-invitation .row { align-items:flex-start; }
}
.people-table td:nth-child(2) { min-width:136px; }
.people-table td:nth-child(3) { min-width:130px; }
.people-table td:last-child { width:172px; white-space:nowrap; }
.people-actions { display:flex; flex-wrap:wrap; gap:8px; }
.people-table button { min-width:64px; white-space:nowrap; }
@media(max-width:780px) { .people-table td:last-child { width:100%; } }
.delete-entry { display:flex; justify-content:flex-end; border-top:1px solid var(--line); margin-top:24px; padding-top:8px; }
button.quiet-delete { color:var(--muted); font-size:12px; min-height:44px; padding:8px 12px; background:transparent; border-color:transparent; }
button.quiet-delete:hover:not(:disabled) { color:var(--danger); text-decoration:underline; background:transparent; border-color:transparent; }
button.quiet-delete:disabled { color:var(--muted); background:transparent; border-color:transparent; }
.delete-confirmation { max-width:760px; border-color:var(--danger); }
.delete-warning { border-left:4px solid var(--danger); padding-left:18px; margin-bottom:24px; }
.delete-warning h2 { color:var(--danger); padding:0; border:0; margin-bottom:12px; }
.delete-project-name { font-size:20px; font-weight:600; overflow-wrap:anywhere; }
.delete-impact { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; padding:20px; margin:20px 0; background:var(--paper); border-radius:8px; }
.delete-impact dt { font-size:12px; color:var(--sub); }
.delete-impact dd { margin:6px 0 0; font-size:24px; font-family:var(--num); font-variant-numeric:tabular-nums; }
.delete-acknowledge { display:flex; align-items:flex-start; gap:10px; min-height:44px; margin:20px 0; font-size:14px; cursor:pointer; }
.delete-acknowledge input { flex-shrink:0; margin-top:2px; }
.delete-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); margin:20px 0 0; }
button.primary.danger { color:var(--card); background:var(--danger); border-color:var(--danger); }
button.primary.danger:hover:not(:disabled) { background:var(--danger); border-color:var(--danger); opacity:.88; }
button.primary.danger:disabled { color:var(--muted); background:var(--line); border-color:var(--line); }
@media(max-width:780px) { .delete-impact { grid-template-columns:repeat(2,minmax(0,1fr)); padding:16px; } .delete-actions { grid-template-columns:1fr; } }
/* Match BI's desktop multi-select authorization controls. */
.project-selection { border:0; margin:0; padding:0; min-width:0; }
.project-selection legend { font-size:12px; color:var(--sub); padding:0; margin-bottom:8px; }
.project-selection-toolbar { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; }
.project-selection-toolbar label { display:flex; align-items:center; gap:9px; min-height:44px; color:var(--green); cursor:pointer; }
.project-selection-toolbar .muted { margin:0; }
.project-options { display:flex; flex-wrap:wrap; gap:8px; margin:6px 0 12px; }
.project-options label { display:flex; align-items:center; gap:9px; min-height:44px; max-width:100%; padding:10px 12px; background:var(--paper); border:1px solid var(--line); border-radius:7px; cursor:pointer; font-size:12px; }
.project-options label:has(input:checked) { border-color:var(--olive); background:var(--tint); color:var(--green); }
.project-options input,.project-selection-toolbar input { width:18px; height:18px; min-height:18px; flex:0 0 18px; }
.project-grant-form>button[type=submit] { width:auto; min-height:48px; padding-inline:20px; margin-top:4px; }
/* Requirement numbers use the same quiet tags as the mini-program. */
.standard-content { margin:12px 0; font-size:14px; line-height:1.8; color:var(--ink); }
.standard-line { white-space:pre-wrap; overflow-wrap:anywhere; }
.standard-line+.standard-line { margin-top:8px; }
.numbered-line { display:flex; gap:10px; align-items:flex-start; }
.requirement-number { box-sizing:border-box; flex-shrink:0; min-width:26px; padding:0 3px; border-radius:4px; background:var(--tint); color:var(--green); font-family:var(--num); font-size:12px; line-height:25px; text-align:center; font-variant-numeric:tabular-nums; }
.requirement-text { display:block; flex:1; min-width:0; }
.check-preview .standard-content { margin:0; }
.check-group-title { border-bottom:1px solid var(--line); padding-bottom:12px; margin-bottom:8px; }
.check-group-title .eyebrow { margin-bottom:4px; }
.check-group-title h3 { margin:0; font-size:15px; }
.issue-list-entry { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.issue-list-entry h2 { margin-bottom:8px; }
.issue-list-entry p { margin:0; }
.issue-list-entry button { flex-shrink:0; }
.issue-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border:1px solid var(--line); border-radius:12px; background:var(--card); margin:20px 0; }
.issue-summary>div { padding:20px; border-right:1px solid var(--line); }
.issue-summary>div:last-child { border:0; }
.issue-summary strong,.issue-summary span { display:block; }
.issue-summary strong { font-family:var(--num); font-size:30px; font-weight:500; }
.issue-summary span { font-size:12px; color:var(--sub); }
.issue-summary .overdue-number { color:var(--danger); }
.issue-filter { margin-bottom:16px; }
.project-issues .issue-card h2 { border:0; padding:0; margin:0; }
.issue-deadline { display:flex; gap:12px 24px; flex-wrap:wrap; margin-bottom:12px; font-size:13px; }
.issue-overdue { border-left:3px solid var(--danger); background:#FBEFEB; }
.report-issue.issue-overdue { padding:20px; margin-inline:-20px; }
.overdue-notice { color:var(--danger); font-size:13px; font-weight:500; }
.report-deadline { padding:12px 16px; border-left:3px solid var(--olive); background:var(--tint); font-size:14px; }
.public-issues.login-mode .main { max-width:1040px; margin:auto; padding:28px; }
.final-letter { max-width:800px; background:#fff; border:1px solid var(--line); padding:56px 64px; margin:24px auto; font-size:15px; line-height:2; }
.final-letter .letter-brand { font-size:12px; letter-spacing:2px; color:var(--green); border-bottom:2px solid var(--olive); padding-bottom:16px; margin-bottom:36px; }
.final-letter h1 { text-align:center; font-size:25px; margin:0 0 40px; }
.final-letter p { margin-bottom:16px; }
.letter-attachments { margin:24px 0; padding:16px 20px; background:var(--paper); font-size:13px; }
.letter-attachments p { margin:0; }
.final-letter footer { margin-top:48px; text-align:right; font-size:14px; }
.final-letter footer p { margin:0; }
@media(max-width:780px) {
 .issue-list-entry { flex-wrap:wrap; }
 .issue-list-entry button { width:100%; }
 .issue-summary>div { padding:14px 10px; }
 .issue-summary strong { font-size:25px; }
 .report-issue.issue-overdue { margin-inline:-12px; padding:12px; }
 .public-issues.login-mode .main { padding:20px 16px; }
 .final-letter { padding:24px 18px; font-size:14px; }
 .final-letter h1 { font-size:22px; }
 .final-letter footer { text-align:left; }
}
@media print {
 .sidebar,.topbar,.back-actions,.actions,.issue-filter,#issue-share,#message { display:none!important; }
 .shell { display:block; }
 .main,.public-issues.login-mode .main { margin:0; padding:0; max-width:none; }
 main { padding:0; }
 .issue-card,.final-letter { break-inside:avoid; }
 .issue-card button { display:none; }
 .issue-overdue { border:1px solid var(--danger); border-left-width:3px; print-color-adjust:exact; }
}

.project-issues { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.project-issues .issue-card { margin:0; }
@media(max-width:1100px) { .project-issues { grid-template-columns:minmax(0,1fr); } }
@media print { .project-issues { display:block; } .project-issues .issue-card { margin:12px 0; } }
