:root{--paper:#F4F4F1;--panel:#FFFFFF;--ink:#16191C;--mute:#5F6B6E;--line:#DDDFD9;--accent:#0B5563;--accent-ink:#FFFFFF;--warn:#9A6B00;--ok:#2F6B3A;--bad:#9B3A2F;--soft:#E9EEEC}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"IBM Plex Sans",-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;line-height:1.5;font-feature-settings:"tnum"}
a{color:var(--accent)}
.top{display:flex;align-items:center;justify-content:space-between;padding:14px 32px;border-bottom:1px solid var(--line);background:var(--panel)}
.top .brand{font-weight:600;letter-spacing:-.01em;text-decoration:none;color:var(--ink);font-size:17px}
.top .brand span{color:var(--mute);font-weight:400;margin-left:10px}
.top nav a{margin-left:20px;text-decoration:none;color:var(--mute)}
.top nav form{display:inline}
.wrap{max-width:1100px;margin:0 auto;padding:36px 32px 80px}
.wrap.narrow{max-width:760px}
h1{font-size:30px;font-weight:600;letter-spacing:-.02em;margin:0 0 6px}
h2{font-size:20px;font-weight:600;margin:32px 0 12px}
h3{font-size:16px;font-weight:600;margin:20px 0 8px}
p.lead{color:var(--mute);margin:0 0 28px;max-width:70ch}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:22px 24px;margin-bottom:18px}
.row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
table{width:100%;border-collapse:collapse;font-size:15px}
th{text-align:left;color:var(--mute);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--line)}
td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}
tr:last-child td{border-bottom:0}
input[type=text],input[type=password],input[type=number],textarea,select{font:inherit;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:4px;background:#fff;color:var(--ink)}
textarea{min-height:110px;resize:vertical}
label{display:block;font-size:14px;color:var(--mute);margin:14px 0 6px}
.btn{font:inherit;font-size:15px;padding:9px 16px;border-radius:4px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer;text-decoration:none;display:inline-block;line-height:1.2}
.btn.secondary{background:#fff;color:var(--accent)}
.btn.quiet{background:transparent;border-color:var(--line);color:var(--mute)}
.btn.danger{background:#fff;border-color:var(--bad);color:var(--bad)}
.btn.small{font-size:13px;padding:6px 11px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.tag{display:inline-block;font-size:12px;padding:2px 8px;border-radius:3px;background:var(--soft);color:var(--mute);vertical-align:middle}
.tag.ok{background:#E3EFE5;color:var(--ok)}.tag.warn{background:#F6EED7;color:var(--warn)}.tag.bad{background:#F5E2DF;color:var(--bad)}.tag.accent{background:#DCE8EA;color:var(--accent)}
.muted{color:var(--mute)}
.small{font-size:13px}
.mono{font-family:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}
pre{background:#1C2124;color:#E7ECE9;padding:14px 16px;border-radius:6px;overflow:auto;font-size:12.5px;line-height:1.5;max-height:340px}
.rail{position:relative;padding-left:56px;margin-top:8px}
.rail:before{content:"";position:absolute;left:19px;top:14px;bottom:14px;width:2px;background:var(--line)}
.stage{position:relative;padding:18px 0 22px;border-bottom:1px solid var(--line)}
.stage:last-child{border-bottom:0}
.stage .n{position:absolute;left:-56px;top:16px;width:40px;height:40px;border-radius:50%;background:var(--panel);border:2px solid var(--line);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--mute)}
.stage.done .n{border-color:var(--ok);color:var(--ok)}.stage.active .n{border-color:var(--accent);color:var(--accent);background:#DCE8EA}
.stage .head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.stage .head strong{font-size:17px}
.stage .desc{color:var(--mute);margin:4px 0 12px;max-width:72ch}
.stage form{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap;margin-right:12px}
.stage form input{width:auto;min-width:140px;padding:7px 10px}
.job{margin-top:12px;font-size:13px}
.job pre{max-height:180px;margin-top:6px}
.frames{display:flex;gap:10px;overflow:auto;padding:6px 0}
.frames img{width:180px;aspect-ratio:4/5;object-fit:cover;border:1px solid var(--line);border-radius:4px;background:#fff}
.copy{white-space:pre-wrap;font-size:15px;line-height:1.6;background:#FAFAF8;border:1px solid var(--line);padding:16px 18px;border-radius:4px;max-height:420px;overflow:auto}
.qa td:first-child{white-space:nowrap;font-weight:500}
.share{background:#EEF3F2;border:1px dashed var(--accent);padding:12px 16px;border-radius:4px;font-size:14px;margin:12px 0}
.share code{user-select:all}
.verify-q{margin:0 0 22px}
.verify-q .q{font-weight:500;margin-bottom:4px}
.verify-q .hint{color:var(--mute);font-size:14px;margin-bottom:8px}
.radio{display:flex;gap:18px;margin:8px 0}
.radio label{display:inline-flex;gap:6px;align-items:center;margin:0;color:var(--ink);font-size:15px}
.login{max-width:380px;margin:12vh auto;padding:32px}
@media (max-width:640px){.wrap{padding:22px 16px}.top{padding:12px 16px}.rail{padding-left:44px}.stage .n{left:-44px;width:32px;height:32px;top:18px}.rail:before{left:15px}}
/* ── P1.5 editor + client card feed ───────────────────────────────────── */
.wrap.feed{max-width:1180px}
.feed-nav{display:flex;align-items:center;gap:10px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 18px}
.tab{font:inherit;font-size:14px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--mute);cursor:pointer}
.tab.on{border-color:var(--accent);color:var(--accent);background:#DCE8EA}
.tab .muted{margin-left:4px}
.feed-channel{margin-top:14px}
.card{border:1px solid var(--line);border-radius:6px;background:var(--panel);margin:8px 0 16px;padding:4px 18px 16px;scroll-margin-top:72px}
.card.focus{box-shadow:0 0 0 3px #DCE8EA}
.card-head h4{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:15px;font-weight:600}
.chip{display:inline-block;font-size:12px;padding:2px 10px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-weight:500}
.card-body{display:grid;grid-template-columns:minmax(220px,340px) 1fr;gap:20px;align-items:start}
.card-preview{min-width:0}
.strip{position:relative}
.strip-track{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin;padding-bottom:4px}
.strip-frame{flex:0 0 100%;scroll-snap-align:start}
.strip-frame img{display:block;width:100%;aspect-ratio:var(--ratio,4/5);object-fit:contain;border:1px solid var(--line);border-radius:4px;background:#fff}
.strip-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}
.no-render{display:flex;align-items:center;justify-content:center;border:1px dashed var(--line);border-radius:4px;background:#FAFAF8;padding:16px;text-align:center;min-height:120px}
.card-copy{min-width:0}
.card-copy .copy{max-height:260px}
.count-line .count-now{font-weight:500}
.pill{display:inline-block;font-size:12px;padding:3px 10px;border-radius:999px;border:1px solid var(--line);background:var(--soft);color:var(--mute)}
.pill.good{background:#E3EFE5;color:var(--ok);border-color:#C9DECD}.pill.warn{background:#F6EED7;color:var(--warn);border-color:#E8DBB0}.pill.bad{background:#F5E2DF;color:var(--bad);border-color:#E7C4BE}.pill.note{background:#EEF3F2;color:var(--accent);border-color:#CFDEE0}.pill.muted{opacity:.8}
.drawer{margin:10px 0 0;border:1px solid var(--line);border-radius:4px;padding:6px 10px;background:#FAFAF8}
.drawer summary{cursor:pointer;color:var(--accent)}
.drawer table{margin-top:6px;font-size:13px}
.drawer td{padding:5px 6px}
.block-banner{margin:12px 0 0;padding:10px 14px;border:1px solid #E8DBB0;border-left:4px solid var(--warn);border-radius:4px;background:#FBF6E8;font-size:14px}
.decide{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.decide-form textarea{min-height:52px}
.edit-error{margin:10px 0 0;padding:8px 12px;border:1px solid #E7C4BE;border-radius:4px;background:#F5E2DF;color:var(--bad);font-size:14px}
.edit-result{margin:10px 0 0;padding:8px 12px;border-radius:4px;font-size:14px;background:#E3EFE5;color:var(--ok)}
.edit-result.warn{background:#F6EED7;color:var(--warn)}.edit-result.bad{background:#F5E2DF;color:var(--bad)}
.editor{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:6px;background:#FAFAF8}
.editor label{margin:10px 0 4px;display:flex;justify-content:space-between;gap:10px}
.editor .count{font-size:12px;color:var(--mute);white-space:nowrap}
.editor .count.over,.editor .over{color:var(--bad)}
.editor input.over,.editor textarea.over{border-color:var(--bad)}
.editor textarea{min-height:48px}
.editor-frames{align-items:flex-start}
.editor-frame{margin:0;flex:0 0 auto;width:150px;text-align:center}
.editor-frame img{width:150px;height:auto;aspect-ratio:4/5;object-fit:cover;border:1px solid var(--line);border-radius:4px;background:#fff}
.editor-frame.dirty img{outline:2px solid var(--warn)}
.editor-frame figcaption{margin-top:4px}
.editor-image{margin-top:10px}
.editor-image summary{cursor:pointer;color:var(--accent)}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;max-height:240px;overflow:auto;padding:4px;border:1px solid var(--line);border-radius:4px;background:#fff}
.lib-pick{display:block;margin:0;text-align:center;cursor:pointer;font-size:12px;color:var(--mute)}
.lib-pick input{position:absolute;opacity:0;width:0;height:0}
.lib-pick img{display:block;width:100%;aspect-ratio:1/1;object-fit:contain;border:2px solid transparent;border-radius:4px;background:#F4F4F1}
.lib-pick:has(input:checked) img{border-color:var(--accent)}
.lib-pick span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.busy{opacity:.6;pointer-events:none}
.review-counts{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}
.review-counts .stat{border:1px solid var(--line);border-radius:4px;padding:6px 12px;background:#FAFAF8;font-size:14px}
.review-counts .stat b{display:block;font-size:18px}
/* P1.6 (rows 12 / 37 / 56): the publish handoff, the history trail and the per-person links. */
input[type=datetime-local],input[type=date]{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:4px;background:#fff;color:var(--ink)}
.warn-line{color:var(--warn)}
.post{padding:16px 0;border-bottom:1px solid var(--line)}
.post:first-child{padding-top:4px}
.post:last-child{border-bottom:0;padding-bottom:4px}
.publish-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,320px);gap:20px;margin-top:12px;align-items:start}
.publish-copy textarea{font-size:13.5px;line-height:1.55;background:#FAFAF8}
.publish-files .frames img{width:120px;aspect-ratio:auto;object-fit:contain}
.publish-actions{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.publish-actions form{margin:0}
table.history td{vertical-align:top}
table.history .drawer{margin:0;background:transparent;border:0;padding:0}
table.diff td{padding:3px 6px;border-bottom:0}
table.diff .was{color:var(--bad);text-decoration:line-through;max-width:280px;overflow-wrap:anywhere}
table.diff .now{color:var(--ok);max-width:280px;overflow-wrap:anywhere}
/* P1.6x (row 24): the month calendar board. Seven columns, Monday first; a day is a box the
   operator drops a post into, so the drop target has to be the whole cell and it has to say so. */
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:10px 0 18px}
.cal-head{font-size:12px;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;padding:4px 6px}
.cal-day{min-height:112px;background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:6px}
.cal-day.out{background:#F9F9F7;opacity:.72}
.cal-day.today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.cal-day.blackout{background:repeating-linear-gradient(135deg,#F2EEE4,#F2EEE4 6px,#FBF6E8 6px,#FBF6E8 12px)}
.cal-day.drop-on{border-color:var(--accent);background:#DCE8EA}
.cal-date{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:12px;color:var(--mute);margin-bottom:4px}
.cal-day.today .cal-date span:first-child{color:var(--accent);font-weight:600}
.chip-post{border:1px solid var(--line);border-left:3px solid var(--mute);border-radius:4px;background:#FAFAF8;padding:4px 6px;margin-bottom:5px;cursor:grab}
.chip-post.ok{border-left-color:var(--ok)}.chip-post.accent{border-left-color:var(--accent)}
.chip-post.warn{border-left-color:var(--warn)}.chip-post.bad{border-left-color:var(--bad)}
.chip-post.proposed{border-style:dashed;background:transparent;cursor:default}
.chip-post.proposed[draggable="true"]{cursor:grab}
.chip-post.dragging{opacity:.5}
.chip-post.refused{outline:2px solid var(--bad)}
.chip-post .chip-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.chip-post .chip{font-size:11px;padding:1px 7px}
.chip-title{overflow-wrap:anywhere}
.chip-move{margin-top:4px}
.chip-move summary{cursor:pointer;color:var(--accent);font-size:12px}
.chip-move .chip-form{margin-top:4px}
.chip-move input[type=datetime-local]{width:100%;padding:5px 7px;font-size:12px}
.chip-move .btn{margin-top:4px}
.cal-legend{padding:14px 18px}
.cal-key{display:inline-block;width:22px;height:0;border-top:3px solid var(--accent);vertical-align:middle}
.cal-key.proposed{border-top-style:dashed;border-top-color:var(--mute)}
.cycle-plan{border-top:1px dashed var(--line);margin-top:14px;padding-top:12px}
.cycle-plan form{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.cycle-plan input[type=month],.cycle-plan input[type=text]{width:auto;min-width:150px;padding:7px 10px}
/* One column on a phone: a seven-across grid is unreadable, and the operator scrolls a list of
   days instead. The date has to name itself there, since the column header is gone. */
@media (max-width:900px){.cal-grid{grid-template-columns:1fr;gap:4px}.cal-head{display:none}
.cal-day{min-height:0}.cal-day.out{display:none}
.cal-date span:first-child{display:none}
.cal-date:before{content:attr(data-long);font-weight:600;color:var(--ink)}}
@media (max-width:760px){.card-body{grid-template-columns:1fr}.feed-nav{display:none}.publish-body{grid-template-columns:1fr}}

/* P1.5x (BUILD-BRIEF rows 21 / 47): revise-by-instruction and the version history. The diff is
   two columns that stack on a phone; <ins> / <del> are the only markup main.word_diff emits, and
   the copy inside them was escaped before it was wrapped. */
.revision{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:6px;background:#FAFAF8}
.rev-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.rev-instruction{margin:6px 0 10px;font-size:14.5px;font-style:italic;overflow-wrap:anywhere}
.rev-form label{display:flex;justify-content:space-between;gap:10px;margin:0 0 4px}
.rev-form textarea{min-height:50px}
.rev-field{margin-top:10px}
.rev-field-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-bottom:4px}
.diff-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.diff-side{min-width:0}
.diff-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin-bottom:2px}
.diff-copy{margin:0;max-height:320px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}
.diff-copy del{background:#F5E2DF;color:var(--bad);text-decoration:line-through}
.diff-copy ins{background:#E3EFE5;color:var(--ok);text-decoration:none}
.rev-actions{gap:8px;align-items:center}
.version{margin-top:14px}
.version-live{border-left:3px solid var(--ok)}
.version-diff{background:#fff}
@media (max-width:760px){.diff-grid{grid-template-columns:1fr}}

/* ── P1.3x (BUILD-BRIEF row 188): the operator discovery form ─────────────
   A long form the operator fills in once per client and adapts forever after, so it has to be
   skimmable: two columns of cards, a lock note where a compliance pack owns the answer, and a
   sticky bar that says whether there is anything to save. A channel tab renders the SAME fields
   with an inherit toggle; .pf-inherited is the greyed state (profile.js paints it, the checkbox
   is what actually means it). */
.pf-tabs{position:sticky;top:0;z-index:5;background:var(--paper);padding:8px 0;margin-bottom:8px}
.pf-tabs .tab{text-decoration:none}
.pf-views{margin:0 0 14px}
.pf-intro{padding:14px 18px}
.pf-meta td{padding:4px 8px;border-bottom:0}
.pf-section{padding:18px 20px}
.pf-section-head{margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.pf-field{border:1px solid var(--line);border-radius:5px;padding:10px 12px;background:#FCFCFB;min-width:0}
.pf-field.pf-bad{border-color:var(--bad);background:#FDF6F5}
.pf-field.pf-pack{border-left:3px solid var(--warn)}
.pf-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.pf-label{display:block;margin:0;font-size:14px;font-weight:500;color:var(--ink)}
.pf-toggle{display:inline-flex;align-items:center;gap:5px;margin:0;color:var(--mute);white-space:nowrap}
.pf-why{margin:4px 0 0}
.pf-lock{margin:4px 0 0;color:var(--warn)}
.pf-from{margin:4px 0 0;overflow-wrap:anywhere}
.pf-control{margin-top:8px}
.pf-control input[type=text],.pf-control input[type=number],.pf-control textarea,.pf-control select{padding:7px 9px;font-size:14px}
.pf-control textarea{min-height:64px}
.pf-check{display:inline-flex;align-items:center;gap:6px;margin:0 12px 4px 0;color:var(--ink);font-size:14px}
.pf-choices{display:flex;flex-wrap:wrap}
.pf-readonly{margin:0;padding:7px 9px;border:1px dashed var(--line);border-radius:4px;background:#F4F4F1;overflow-wrap:anywhere}
/* a row column the form shows but does not own (a person's asset ids) */
.pf-rows .pf-readonly{display:inline-block;padding:4px 6px}
.pf-hint{margin:4px 0 0}
.pf-msg{margin:6px 0 0;font-size:13px;color:var(--bad)}
.pf-rows-wrap{overflow-x:auto}
.pf-rows{font-size:13px}
.pf-rows th{padding:4px 6px;font-size:12px}
.pf-rows td{padding:4px 6px;border-bottom:0}
.pf-rows input[type=text],.pf-rows input[type=number],.pf-rows textarea{padding:5px 7px;font-size:13px;min-width:90px}
.pf-row-new td{opacity:.7}
.pf-field.pf-inherited .pf-control{opacity:.45}
.pf-field.pf-inherited{background:#F7F7F5}
.pf-notice{border-left:3px solid var(--accent)}
.pf-saved{border-left:3px solid var(--ok)}
.pf-errors{border-left:3px solid var(--bad)}
.pf-diff td{vertical-align:top}
.pf-bar{position:sticky;bottom:0;z-index:6;margin:18px 0 0;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 -2px 10px rgba(0,0,0,.06)}
.pf-bar-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px}
body.pf-has-changes .pf-bar{border-color:var(--warn)}
body.pf-has-changes .pf-dirty-note{color:var(--warn)}
@media (max-width:760px){.pf-grid{grid-template-columns:1fr}.pf-tabs{position:static}}

/* ── the client discovery session (/discover/<token>, P1.3x) ─────────────
   One screen per section of app.profile_form.discover_sections. Everything here is client-
   facing: no code names, no JSON, generous hit areas on a phone. `.inheriting` is the only
   class static/discover.js adds — a platform answer that is still following the main one. */
.dsc-progress{height:6px;border-radius:3px;background:var(--soft);overflow:hidden;margin:0 0 6px}
.dsc-progress span{display:block;height:100%;background:var(--accent)}
.dsc-step{margin:0 0 18px}
.dsc-q{margin:0 0 24px}
.dsc-q .q{font-weight:500;margin-bottom:4px}
.dsc-q .hint{color:var(--mute);font-size:14px;margin-bottom:8px;max-width:70ch}
.dsc-q.bad{border-left:3px solid var(--bad);padding-left:12px;margin-left:-15px}
.dsc-q.inheriting select,.dsc-q.inheriting input[type=text]{opacity:.5}
.dsc-err{color:var(--bad);font-size:14px;margin:0 0 8px}
.dsc-refused{border-color:var(--bad);background:#FDF4F2}
.dsc-refused ul{margin:8px 0 0;padding-left:20px}
.dsc-fixed{background:#FAFAF8;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:4px;padding:10px 12px;white-space:pre-wrap}
/* portrait consent on the client link: shown, never editable — it is recorded on the verification sheet */
.dsc-ro .dsc-fixed{padding:6px 8px;font-size:13px}
.dsc-floor{background:#EEF3F2;border-radius:4px;padding:8px 10px;margin:0 0 8px;white-space:pre-wrap}
.dsc-inherit{display:flex;gap:8px;align-items:center;color:var(--ink);font-size:14px;margin:0 0 8px}
.dsc-inherit input{width:auto}
.dsc-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px 16px;margin:4px 0 0}
.dsc-checks label{display:flex;gap:8px;align-items:center;color:var(--ink);font-size:15px;margin:0}
.dsc-checks input{width:auto}
.dsc-rows{display:grid;gap:10px}
.dsc-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:4px;background:#FAFAF8}
.dsc-row label{margin:0 0 2px}
.dsc-card h3{margin:0 0 14px;font-size:17px}
.dsc-nav{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:24px 0 0}
.dsc-answers{margin:0}
.dsc-answers dt{font-weight:500;margin-top:12px}
.dsc-answers dd{margin:2px 0 0;color:var(--mute);white-space:pre-wrap;overflow-wrap:anywhere}
.dsc-review-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.dsc-review-head h3{margin:0}
.dsc-changes td:first-child{font-weight:500}
.dsc-changes td{vertical-align:top}

/* ── the library's generation panel and Finish control (P1.4x) ───────────
   Nano Banana is a finisher: the panel states the tenant's category-06 policy in words before
   any control is offered, and a refused op stays visible (disabled, with the gate's reason as
   its tooltip) rather than disappearing — an operator should be able to see WHY, not only that
   the answer is no. */
.gen-panel .gen-rules{margin:0;padding-left:18px;line-height:1.6}
.gen-panel .gen-rules li{margin:0 0 2px}
.gen-panel .gen-rules code{font-size:12px}
.gen-filter{gap:6px;align-items:center;margin:0 0 10px}
.gen-filter .btn.on{background:var(--soft);color:var(--ink);border-color:var(--line)}
.asset details.fin{border-top:1px solid var(--line);padding-top:8px;margin-top:2px}
.asset details.fin summary{cursor:pointer;font-size:12px;color:var(--mute)}
.asset details.fin[open] summary{margin-bottom:8px}
.fin-form{display:grid;gap:6px}
.fin-form label{display:grid;gap:2px;margin:0;color:var(--mute);font-size:12px}
.fin-form select,.fin-form input{font-size:12px;padding:5px 6px;width:100%}
.fin-form option:disabled{color:var(--mute)}
.fin-job{margin-top:8px}
.fin-job .job{margin:0}
.asset .meta.prov{border-left:2px solid var(--accent);padding-left:8px}

/* ── P1.7 (BUILD-BRIEF rows 68 / 44): the inbox, the client's "send us something" panel and
   the proposals queue.

   The drop zone is styled as the most prominent thing on its page on purpose — it is the one
   control the owner asked to be "always existant", and a path that is hard to find is a path
   people email around instead. Each item below it is a QUESTION: .asking carries the accent
   edge, a routed item does not, so the queue's shape is readable at a glance without counting. */
.drop-panel{border-color:var(--accent);border-left-width:3px}
.drop-form{margin-top:10px}
.drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  padding:26px 18px;border:2px dashed var(--line);border-radius:6px;background:#FAFAF8;
  text-align:center;cursor:pointer;margin:0;color:var(--ink);transition:background .12s,border-color .12s}
.drop:hover{border-color:var(--accent)}
.drop.over{border-color:var(--accent);background:#DCE8EA}
.drop input[type=file]{position:absolute;width:0;height:0;opacity:0}
.drop-names{color:var(--accent);overflow-wrap:anywhere;max-width:56ch}
.drop-rest{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:12px}
.drop-rest label{margin-top:0}
.inbox-item{border-left:3px solid var(--line)}
.inbox-item.asking{border-left-color:var(--warn)}
.inbox-item.broke{border-left-color:var(--bad)}
.inbox-head h3 a{text-decoration:none}
.inbox-item .proposal{margin-top:12px;padding:10px 14px;border:1px solid var(--line);border-radius:5px;background:#FAFAF8}
.inbox-item .prev{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.inbox-item .prev ul{margin:4px 0 0;padding-left:18px}
.inbox-item .copy{max-height:300px}
.drop-route{display:flex;gap:10px;align-items:flex-start;margin:0 0 6px;padding:8px 10px;
  border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);cursor:pointer}
.drop-route:hover{border-color:var(--accent)}
.drop-route.on{border-color:var(--accent);background:#EEF3F2}
.drop-route input{width:auto;margin-top:3px}
.drop-route span{min-width:0}
.route-extra{margin:10px 0 0;padding:10px 14px;border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:5px;background:#FAFAF8}
.routed-note{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
/* the client's own drop, on the review link: quiet, at the end of the feed, never a step */
.review-inbox{border-left:3px solid var(--accent)}
.review-inbox .drop{padding:18px 14px}
.proposal-row{border-left:3px solid var(--accent)}
.proposal-row .pf-readonly{margin-top:2px;overflow-wrap:anywhere}
.proposal-row .decide{margin-top:14px}
.proposal-row .diff .was,.proposal-row .diff .now{max-width:none}
@media (max-width:760px){.drop-rest{grid-template-columns:1fr}}
