/* Staff workbench. Brand values come from tokens.css (Naldano/brand); this file only uses its properties.
   The workbench is a process room: terracotta (atelier ink, plaster) carries the accents, forest ink the text. */
:root{color-scheme:light}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:var(--text-body)/1.6 var(--sans);min-height:100vh}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}
strong,b{font-weight:500}
em{font-style:italic}
:focus-visible{outline:2px solid var(--atelier-ink);outline-offset:2px}

/* Header: wordmark top left, then who is signed in, the customer and the session end. */
.top{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs) var(--space-s);padding:var(--space-s) var(--gutter);border-bottom:1px solid var(--line);background:var(--paper)}
.wordmark{display:inline-flex;line-height:0}
.wordmark img{height:26px;width:auto}
.top .label{margin:0}
.env-pill{font-size:12px;letter-spacing:.07em;padding:3px 12px;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--atelier-ink);background:var(--page)}
.who{margin-left:auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs) var(--space-s);font-size:14px}
.customer-switch{background:var(--page);border:1px solid var(--line);border-radius:var(--radius-pill);padding:4px 14px;cursor:pointer;font-size:14px}
.customer-switch:hover{border-color:var(--atelier-ink)}
.customer-switch .change{margin-left:8px;padding-left:8px;border-left:1px solid var(--line);color:var(--atelier-ink);text-decoration:underline;text-underline-offset:3px}
.customer-id{font-family:var(--mono);font-size:.92em;color:var(--atelier-ink)}
.session-end{font-size:13px}

.customer-nav{display:flex;flex-wrap:wrap;gap:2px var(--space-xs);padding:0 var(--gutter);border-bottom:1px solid var(--line);background:var(--page)}
.nav-item{background:none;border:0;border-bottom:2px solid transparent;padding:10px 6px;cursor:pointer;color:var(--moss);font-size:var(--text-small)}
.nav-item:hover{color:var(--ink)}
.nav-item.current{color:var(--atelier-ink);border-bottom-color:var(--atelier-ink);font-weight:500}

/* The tabs of the current section, under the four sections. */
.section-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:8px var(--gutter);border-bottom:1px solid var(--line);background:var(--paper)}
.section-tabs .tab{font-size:var(--text-small);padding:3px 14px}

main{max-width:var(--max-width);margin:0 auto;padding:var(--space-l) var(--gutter) var(--space-xl)}
/* The viewer takes the width a wide sheet or archive needs. */
main.wide{max-width:1640px}
.screen{display:flex;flex-direction:column;gap:var(--space-s);min-width:0}
.screen.start{padding-top:var(--space-xl);max-width:640px}
.screen.start .button{align-self:flex-start}

/* Label, title, sentence */
.label{font-size:var(--text-label);font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--moss);margin:0}
.title-block{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-xs)}
h1{font-family:var(--serif);font-weight:400;font-size:var(--text-chapter);letter-spacing:-.02em;line-height:1.05;margin:0;overflow-wrap:anywhere}
h2{font-family:var(--serif);font-weight:500;font-size:var(--text-entry);margin:var(--space-m) 0 0}
.lead{margin:0;max-width:68ch;color:var(--ink-soft)}
p{margin:0}
.note{color:var(--moss);font-size:var(--text-small)}
.mono{font-family:var(--mono);font-size:.88em;overflow-wrap:anywhere}

/* Buttons: pills with a fine outline; primary in atelier ink; destructive on plaster. */
.button{border:1px solid var(--ink);background:transparent;border-radius:var(--radius-pill);padding:8px 18px;cursor:pointer;font-size:var(--text-small);line-height:1.4;white-space:nowrap;transition:background .15s,color .15s}
.button:hover:not(:disabled){background:var(--ink);color:var(--page)}
.button.primary{background:var(--atelier-ink);border-color:var(--atelier-ink);color:var(--cream)}
.button.primary:hover:not(:disabled){background:var(--ink);border-color:var(--ink)}
.button.danger{background:var(--plaster);border-color:var(--atelier-ink);color:var(--atelier-ink);font-weight:500}
.button.danger:hover:not(:disabled){background:var(--atelier-ink);color:var(--cream)}
.button.quiet{border-color:var(--line);color:var(--ink-soft);padding:5px 14px}
.button.quiet:hover:not(:disabled){background:var(--parchment);color:var(--ink)}
.button:disabled{opacity:.45;cursor:not-allowed}
.button-row{display:flex;flex-wrap:wrap;gap:var(--space-xs)}
.link-button{background:none;border:0;padding:0;cursor:pointer;color:var(--atelier-ink);text-decoration:underline;text-underline-offset:3px;text-align:left;overflow-wrap:anywhere}
.back{align-self:flex-start;background:none;border:0;padding:0;cursor:pointer;color:var(--moss);font-size:var(--text-small)}
.back:hover{color:var(--ink)}

/* Forms */
.input{display:block;width:100%;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:7px 10px;font-size:var(--text-small);min-width:0}
.input:focus{outline:none;border-color:var(--atelier-ink);box-shadow:0 0 0 3px var(--plaster)}
label{display:flex;flex-direction:column;gap:4px;min-width:0}
.filters,.inline-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-s);padding:var(--space-s);background:var(--page);border:1px solid var(--line);border-radius:var(--radius)}
.filters label{flex:1 1 150px}
.filters label:first-child,.inline-form .grow{flex:2 1 240px}
.filter-actions{display:flex;gap:var(--space-xs);flex-wrap:wrap}
.inline-form label{flex:1 1 180px}
fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}
.choice{flex-direction:row;align-items:baseline;gap:10px;font-size:var(--text-small)}
.choice input{flex:none}
.deletion-form{display:flex;flex-direction:column;gap:var(--space-s);padding:var(--space-m);background:var(--page);border:1px solid var(--line);border-radius:var(--radius);max-width:760px}
.chosen-files{margin:0 0 0 28px;padding:0;list-style:none;font-size:var(--text-small);color:var(--ink-soft)}
/* A second question before a step that changes the customer's data. */
.confirm-box{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-s);border:1px solid var(--atelier-ink);border-radius:var(--radius);background:var(--page);max-width:760px;font-size:var(--text-small)}
.days-left{font-size:13px;color:var(--moss)}
.days-left.warn{color:var(--atelier-ink);font-weight:500}
.dry-run,.release-box{display:flex;flex-direction:column;gap:var(--space-s);padding:var(--space-m);border:1px solid var(--atelier-ink);border-radius:var(--radius);background:var(--page);max-width:760px}
.confirm{flex-direction:row;align-items:baseline;gap:10px}

/* Notices and job lines */
.notice{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-s);align-items:baseline;padding:10px 14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--page);font-size:var(--text-small)}
.notice.warn{background:var(--plaster);border-color:var(--atelier-ink);color:var(--atelier-ink)}
.notice.ok{background:var(--parchment);color:var(--garden-ink)}
main > .notice{margin-bottom:var(--space-s)}
.job-line{display:flex;align-items:center;gap:10px;color:var(--moss);font-size:var(--text-small)}
.spinner{width:12px;height:12px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--atelier-ink);animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spinner{animation:none}}

/* Tables: 15 px, labels as column heads, data cells in mono where they are data. */
.table-scroll,.sheet-scroll{overflow-x:auto;max-width:100%}
table.data{width:100%;border-collapse:collapse;font-size:var(--text-small)}
table.data th{font-size:var(--text-label);font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--moss);text-align:left;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
table.data td{padding:8px;border-bottom:1px solid var(--hair);vertical-align:top;overflow-wrap:break-word}
table.data tr.selected td{background:var(--page)}
table.data tr.denied td{background:var(--plaster);color:var(--atelier-ink)}
table.data .check{width:32px}
table.data .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
table.data .time{white-space:nowrap;color:var(--moss)}
table.data .actions{white-space:nowrap;text-align:right}
table.data .actions .button + .button{margin-left:6px}
.confirm-row .inline-form p{flex-basis:100%;margin:0}
/* A column head that orders the list: the head's own look, a pointer, the arrow of the order. */
button.sort{background:none;border:0;padding:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer}
button.sort:hover{color:var(--ink)}
th[aria-sort] button.sort{color:var(--atelier-ink)}
.files-table .file-name{min-width:180px}
.files-table .comment{min-width:200px;color:var(--ink-soft)}
.kind{display:block;font-size:13px;color:var(--moss)}
.type-chip{display:inline-block;white-space:nowrap;font-family:var(--mono);font-size:12px;padding:0 8px;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-soft)}
.status{display:inline-block;padding:1px 10px;border-radius:var(--radius-pill);font-size:13px;white-space:nowrap;background:var(--paper);color:var(--moss)}
.status.accepted,.status.job-done{background:var(--parchment);color:var(--garden-ink)}
.status.virus,.status.unscannable,.status.job-failed{background:var(--plaster);color:var(--atelier-ink)}
.selection-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-s);font-size:var(--text-small);color:var(--moss)}
/* The scan at a glance; each count filters the list. */
.scan-strip{display:flex;flex-wrap:wrap;align-items:center;gap:6px var(--space-xs);padding:10px var(--space-s);border:1px solid var(--line);border-radius:var(--radius);background:var(--page);font-size:var(--text-small)}
.scan-strip .label{margin-right:4px}
.scan-strip .note{flex-basis:100%}
.scan-count{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--paper);padding:1px 12px;font-size:13px;color:var(--ink);cursor:pointer}
.scan-count:hover{border-color:var(--atelier-ink)}
.scan-count.warn{background:var(--plaster);border-color:var(--atelier-ink);color:var(--atelier-ink);font-weight:500}
.scan-count.none{cursor:default;color:var(--moss)}
.files-table .scan{min-width:170px;max-width:260px}
.scan-detail{display:block;margin-top:2px;font-size:13px;line-height:1.4;color:var(--moss)}
.scan-detail.warn{color:var(--atelier-ink)}
.status.warn{font-weight:500}
.status.scanning.warn{background:var(--plaster);color:var(--atelier-ink)}
.counts-table{max-width:420px}

/* Customer choice: equal tiles in a grid, one column on a phone up to four on a wide window. Every row is as tall
   as the tallest tile, so a long name never makes one tile stand out; the grant and AI lines sit at the bottom. */
.customer-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,248px),1fr));grid-auto-rows:1fr;gap:var(--space-s)}
.customer-list li{display:flex;min-width:0}
.customer-card{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-s);padding:var(--space-m);background:var(--page);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left;transition:border-color .15s,background-color .15s}
.customer-card:hover,.customer-card:focus-visible{border-color:var(--atelier-ink)}
.customer-card:focus-visible{outline-offset:3px}
.customer-card:active{background:var(--parchment)}
.customer-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}
.customer-card .customer-id{font-size:13px;letter-spacing:.04em;color:var(--moss)}
.customer-go{flex:none;width:32px;height:32px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;color:var(--ink);transition:background-color .15s,border-color .15s,color .15s}
.customer-card:hover .customer-go,.customer-card:focus-visible .customer-go{background:var(--atelier-ink);border-color:var(--atelier-ink);color:var(--cream)}
.customer-name{font-family:var(--serif);font-size:var(--text-entry);font-weight:500;line-height:1.15;overflow-wrap:anywhere}
.customer-meta{margin-top:auto;padding-top:var(--space-s);border-top:1px solid var(--hair);display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-xs)}
.customer-until{font-size:var(--text-small);color:var(--atelier-ink);font-variant-numeric:tabular-nums}
.customer-status{font-size:13px;color:var(--atelier-ink);font-weight:500;min-height:1.4em}
.customer-status:empty{display:none}
.customer-ai{font-size:13px;padding:1px 10px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--paper);color:var(--ink-soft)}

/* Access report: tiles, filters, each file's history. */
.presets{display:flex;flex-wrap:wrap;gap:6px;align-self:flex-end}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-xs)}
.tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px var(--space-s);background:var(--page);border:1px solid var(--line);border-radius:var(--radius);text-align:left;font:inherit;color:inherit;min-width:0}
button.tile{cursor:pointer}
button.tile:hover{border-color:var(--atelier-ink)}
.tile.warn{background:var(--plaster);border-color:var(--atelier-ink)}
.tile-value{font-family:var(--serif);font-size:var(--text-entry);font-weight:500;line-height:1.2}
.tile.warn .tile-value{color:var(--atelier-ink)}
.tile-detail{font-size:13px;color:var(--moss);overflow-wrap:anywhere}
.toggle{display:inline-flex;gap:4px}
.count{font-size:12px;color:var(--moss);margin-left:4px}
.histories{display:flex;flex-direction:column;gap:var(--space-s)}
.history{border-top:1px solid var(--line);padding-top:var(--space-xs)}
.history h3{margin:0 0 6px;font-family:var(--serif);font-size:20px;font-weight:500;overflow-wrap:anywhere}
.history h3 .note{font-family:var(--sans);font-weight:400}
.history ol{list-style:none;margin:0;padding:0;font-size:var(--text-small)}
.history li{display:grid;grid-template-columns:140px minmax(0,2fr) minmax(0,1.6fr) minmax(0,1fr);gap:4px var(--space-s);padding:5px 0;border-bottom:1px solid var(--hair);align-items:baseline}
.history li .by{overflow-wrap:anywhere}
.history li .ip{color:var(--moss);font-size:12px;overflow-wrap:anywhere}
.history .type-chip{margin-left:6px}
.history li.denied .what{color:var(--atelier-ink)}

@media (max-width:760px){.history li{grid-template-columns:1fr}}

/* A file's panel beside the list. */
.file-panel{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);z-index:10;overflow:auto;display:flex;flex-direction:column;gap:var(--space-s);padding:var(--space-m);background:var(--paper);border-left:1px solid var(--line);box-shadow:-12px 0 32px rgba(39,62,52,.12)}
.file-panel-head{display:flex;justify-content:space-between;align-items:center}
.file-panel-name{margin:0;font-size:var(--text-entry);overflow-wrap:anywhere}
.file-panel h3{margin:var(--space-xs) 0 0;font-family:var(--serif);font-weight:500;font-size:20px}
.file-events{list-style:none;margin:0;padding:0;font-size:var(--text-small)}
.file-events li{display:grid;grid-template-columns:130px minmax(0,1fr) minmax(0,auto);gap:4px var(--space-s);padding:5px 0;border-bottom:1px solid var(--hair);align-items:baseline}
.file-events .by{color:var(--moss);overflow-wrap:anywhere;text-align:right}
/* Under each file name: its panel. */
.row-details{display:block;margin-top:2px;background:none;border:0;padding:0;cursor:pointer;font-size:13px;color:var(--moss);text-decoration:underline;text-underline-offset:3px}
.row-details:hover,.row-details[aria-expanded=true]{color:var(--atelier-ink)}
@media (max-width:560px){.file-events li{grid-template-columns:1fr}.file-events .by{text-align:left}}

/* Control center: four tiles of numbers and dates; a value that asks for attention is loud, the rest quiet. */
.cc-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:var(--space-s)}
.cc-tile{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-m);background:var(--page);border:1px solid var(--line);border-radius:var(--radius)}
.cc-tile h2{margin:0;font-size:var(--text-entry)}
.cc-tile dl,dl.contract{margin:0;display:flex;flex-direction:column;gap:6px}
.cc-tile .link-button{align-self:flex-start;margin-top:auto;font-size:var(--text-small)}
.cc-value{display:grid;grid-template-columns:minmax(120px,190px) minmax(0,1fr);gap:var(--space-s);font-size:var(--text-small);align-items:baseline}
.cc-value dt{color:var(--moss);font-size:13px}
.cc-value dd{margin:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.cc-value.warn dd{color:var(--atelier-ink);font-weight:500}
dl.contract{max-width:860px;padding:var(--space-m);background:var(--page);border:1px solid var(--line);border-radius:var(--radius)}
@media (max-width:560px){.cc-value{grid-template-columns:1fr;gap:0}}

/* Cases */
.item-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair)}
.item-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px var(--space-s);padding:10px 0;border-bottom:1px solid var(--hair)}
.analysis-detail{flex-basis:100%;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-s);background:var(--page);border:1px solid var(--line);border-radius:var(--radius)}
.analysis-detail .button{align-self:flex-start}
pre{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.6 var(--mono);background:var(--page);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-s)}
.analysis-text,.confirmation{font-family:var(--sans);font-size:var(--text-small);max-height:60vh;overflow:auto}

/* View: the inert view model; nothing in here is a link or loads anything. */
.file-meta{font-size:var(--text-small);color:var(--ink-soft);overflow-wrap:anywhere}
h1.file-title{font-size:clamp(28px,3vw,40px)}
/* Where you are: the file list, the file, every opened attachment or member; each level but the last opens again. */
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 0;font-size:var(--text-small)}
.crumbs li{display:inline-flex;align-items:baseline;min-width:0;overflow-wrap:anywhere}
.crumbs li + li::before{content:"›";margin:0 10px;color:var(--moss)}
.crumbs [aria-current]{color:var(--ink);font-weight:500}
.view-wrap.loading{opacity:.55}
.view{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:var(--space-m);align-items:start}
.view-main{display:flex;flex-direction:column;gap:var(--space-s);min-width:0}
.view-title{display:flex;align-items:baseline;gap:var(--space-xs);flex-wrap:wrap}
.view-name{font-family:var(--serif);font-size:var(--text-entry);font-weight:500;overflow-wrap:anywhere}
.view-body{background:var(--page);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-m);min-width:0;overflow:hidden}
.view-text{background:none;border:0;padding:0;max-height:70vh;overflow:auto}
.view-doc{font-size:var(--text-small);overflow-wrap:anywhere}
.doc-p{margin:0 0 .7em}
.doc-h{font-weight:500;margin:.8em 0 .4em}
.doc-list{margin:0 0 .7em;padding-left:1.2em}
.doc-item{display:list-item;list-style:disc}
.doc-table{display:table;border-collapse:collapse;margin:0 0 .7em}
.doc-row{display:table-row}
.doc-cell{display:table-cell;border:1px solid var(--line);padding:4px 8px;vertical-align:top}
.doc-quote{border-left:2px solid var(--line);padding-left:var(--space-s);color:var(--ink-soft);margin:0 0 .7em}
.inert-link{color:var(--atelier-ink)}
.inert-url{font-family:var(--mono);font-size:.85em;color:var(--moss)}
.inert-image{font-family:var(--mono);font-size:.85em;color:var(--moss)}
.mail-headers{display:grid;gap:2px;margin:0 0 var(--space-s);padding-bottom:var(--space-s);border-bottom:1px solid var(--line);font-size:var(--text-small)}
.mail-headers div{display:grid;grid-template-columns:80px minmax(0,1fr);gap:var(--space-xs)}
.mail-headers dt{color:var(--moss)}
.mail-headers dd{margin:0;overflow-wrap:anywhere}
.view-image{display:block;max-width:100%;height:auto;border:1px solid var(--line);background:#fff}
.view-pdf{display:flex;flex-direction:column;gap:var(--space-s)}
.pager{display:flex;align-items:center;gap:var(--space-s);font-size:var(--text-small)}
.sheet-tabs{display:flex;flex-wrap:wrap;gap:4px}
.tab{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-pill);padding:2px 12px;cursor:pointer;font-size:13px}
.tab.current{background:var(--atelier-ink);border-color:var(--atelier-ink);color:var(--cream)}
/* A sheet keeps its words whole and scrolls sideways; column letters and row numbers stay in view. */
.sheet-scroll{max-height:72vh;overflow:auto}
table.sheet{border-collapse:separate;border-spacing:0;font:12px/1.5 var(--mono)}
table.sheet th{background:var(--parchment);color:var(--moss);font-weight:400;padding:2px 8px;border:1px solid var(--line);border-width:0 1px 1px 0;position:sticky;top:0;z-index:1}
table.sheet tbody th{top:auto;left:0;text-align:right;white-space:nowrap}
table.sheet thead th:first-child{left:0;z-index:2}
table.sheet td{border:1px solid var(--line);border-width:0 1px 1px 0;padding:2px 8px;vertical-align:top;min-width:60px;max-width:360px;overflow-wrap:break-word;background:#fff}
table.sheet tr.hidden-row td{background:var(--parchment)}
.marker{color:var(--atelier-ink)}
.cell-value{display:block}
.cell-formula{display:block;color:var(--atelier-ink)}
.cell-comment{display:block;color:var(--moss);font-style:italic}
.view-side{display:flex;flex-direction:column;gap:var(--space-s);min-width:0}
/* An archive: members by folder, each opened with one click. */
.archive{display:flex;flex-direction:column;gap:var(--space-xs)}
.archive-filter{max-width:360px}
.archive-table .folder-row td{font-family:var(--mono);font-size:13px;color:var(--moss);background:var(--parchment);padding:4px 8px}
.archive-table .member{min-width:220px}
.archive-table .member .link-button{overflow-wrap:break-word}
.archive-table .refused{color:var(--atelier-ink)}
.side-block{display:flex;flex-direction:column;gap:6px;padding:var(--space-s);background:var(--page);border:1px solid var(--line);border-radius:var(--radius);font-size:var(--text-small)}
.side-block ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.flags li{display:flex;flex-direction:column}
.flag{color:var(--atelier-ink);font-weight:500}
.flag-detail{font-family:var(--mono);font-size:12px;color:var(--moss);overflow-wrap:anywhere}
.metadata{margin:0;display:flex;flex-direction:column;gap:4px}
.metadata dt{color:var(--moss);font-size:13px}
.metadata dd{margin:0;overflow-wrap:anywhere}

/* Cleanse review: spans in plaster with atelier ink; switched-off spans struck through. */
.review{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--space-m);align-items:start}
.review-main,.review-side{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}
.review-text{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.8 var(--mono);background:var(--page);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-s);max-height:70vh;overflow:auto}
mark.span{background:var(--plaster);color:var(--atelier-ink);border-bottom:2px solid var(--atelier-ink);border-radius:var(--radius);padding:0 1px;cursor:pointer}
mark.span.locked{cursor:default;border-bottom-style:double}
mark.span.off{background:transparent;color:var(--ink);border-bottom:2px dashed var(--line);text-decoration:line-through;text-decoration-color:var(--moss)}
mark.span.src-residual{border-bottom-style:dotted}
mark.span::after{content:" " attr(data-label);font:10px/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;vertical-align:super;color:var(--atelier-ink)}
mark.span.off::after{color:var(--moss)}
.add-span{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);min-height:40px}
.add-span .input{width:auto}
.counts{list-style:none;margin:0 0 var(--space-s);padding:0;display:flex;flex-wrap:wrap;gap:6px}
.counts li{font-size:13px;padding:2px 10px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--page)}
.result-text{max-height:60vh;overflow:auto}
.release-box .button{align-self:flex-start}
.release-box select{max-width:320px}
.phrase{font-size:var(--text-small);color:var(--ink-soft)}
.phrase .mono{color:var(--atelier-ink)}

@media (max-width:860px){
  .view,.review{grid-template-columns:1fr}
}
@media (max-width:560px){
  .who{margin-left:0;width:100%}
  h1{font-size:34px}
  .view-body{padding:var(--space-s)}
}
.line-mark::before{content:attr(data-line);display:inline-block;margin-right:6px;padding:0 6px;border-radius:var(--radius-pill);background:var(--atelier-ink);color:var(--cream);font:500 10px/1.6 var(--sans);letter-spacing:.04em;vertical-align:1px}
