[hidden] { display:none !important }
:root { --bg:#f6f7f9; --panel:#ffffff; --ink:#1b1f27; --muted:#667085; --line:#e4e7ec; --accent:#2f6fde; --accent-ink:#ffffff;
  --status-proposed:#2f6fde; --status-attention:#c98a00; --status-unsupported:#d64545; --status-accepted:#2e9e6b; --status-committed:#1f7a4d; --status-rejected:#8a94a6; --status-unrouted:#7a5bd6;
  --conf-high:#2e9e6b; --conf-mid:#c98a00; --conf-low:#d64545;
  --channel-sftpgo-share:#1f9bc4; --channel-sftpgo:#3b63d8; --channel-storagebox:#8a5bd6; --channel-whatsapp:#25a35a; --channel-telegram:#2aa1da; --channel-cli:#667085; --channel-email:#c58a12; --channel-web-drop:#d8601f;
  --radius:10px; --shadow:0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.1); }
:root[data-theme="dark"] { --bg:#0f1218; --panel:#171b23; --ink:#e7eaf0; --muted:#98a2b3; --line:#262c38; --accent:#6c9cf5; --accent-ink:#0f1218; --shadow:0 1px 2px rgba(0,0,0,.4); }
* { box-sizing:border-box } html,body { margin:0; background:var(--bg); color:var(--ink); font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif }
a { color:var(--accent) } code { font-size:.9em; background:var(--line); padding:0 .3em; border-radius:4px } .muted { color:var(--muted) }
button { font:inherit; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.45rem .8rem; cursor:pointer }
button.ghost:hover { border-color:var(--accent) } button.primary { background:var(--accent); color:var(--accent-ink); border-color:var(--accent) }
input { font:inherit; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.45rem .7rem }
.top { display:flex; align-items:center; gap:1rem; padding:.7rem 1rem; background:var(--panel); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:5; flex-wrap:wrap }
.brand { display:flex; align-items:center; gap:.5rem; font-size:1.05rem } .logo { color:var(--accent); font-size:1.3rem } .brand .muted { font-size:.9rem }
.status { display:flex; align-items:center; gap:.4rem; font-size:.9rem; color:var(--muted); margin-left:auto } .status .dot { width:.6rem; height:.6rem; border-radius:50%; background:var(--status-accepted) }
.status.down .dot { background:var(--status-unsupported) } .status.paused .dot { background:var(--status-attention) }
.actions { display:flex; gap:.4rem }
.counters { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:.6rem; padding:.9rem 1rem 0 }
.counter { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:.6rem .8rem; box-shadow:var(--shadow) } .counter b { display:block; font-size:1.5rem; line-height:1.2 } .counter span { color:var(--muted); font-size:.85rem }
.counter.warn b { color:var(--status-attention) } .counter.bad b { color:var(--status-unsupported) }
.filters { display:flex; gap:.6rem; padding:.8rem 1rem 0; flex-wrap:wrap; align-items:center } .chips { display:flex; gap:.35rem; flex-wrap:wrap }
.chip { border:1px solid var(--line); background:var(--panel); border-radius:999px; padding:.2rem .65rem; font-size:.85rem; cursor:pointer; display:inline-flex; gap:.35rem; align-items:center }
.chip.on { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--panel)) } .chip .n { color:var(--muted) }
main { padding:.8rem 1rem 3rem } table.inbox { width:100%; border-collapse:separate; border-spacing:0; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow) }
.inbox th { text-align:left; font-weight:600; font-size:.8rem; color:var(--muted); padding:.55rem .7rem; border-bottom:1px solid var(--line); text-transform:uppercase; letter-spacing:.03em }
.inbox td { padding:.55rem .7rem; border-bottom:1px solid var(--line); vertical-align:middle } .inbox tr:last-child td { border-bottom:0 } .inbox tbody tr { cursor:pointer } .inbox tbody tr:hover { background:color-mix(in srgb, var(--accent) 6%, var(--panel)) }
.inbox tr.new td:first-child { box-shadow:inset 3px 0 0 var(--accent) } .num { text-align:right; font-variant-numeric:tabular-nums }
.avatar { display:inline-grid; place-items:center; width:1.9rem; height:1.9rem; border-radius:50%; color:#fff; font-size:.8rem; font-weight:600; margin-right:.5rem; vertical-align:middle }
.badge { display:inline-flex; align-items:center; gap:.3rem; border-radius:6px; padding:.1rem .45rem; font-size:.78rem; color:#fff; white-space:nowrap }
.pill { display:inline-block; border-radius:999px; padding:.1rem .6rem; font-size:.78rem; border:1px solid; white-space:nowrap }
.pill.seen,.pill.settling { color:var(--status-attention); border-color:var(--status-attention) } .pill.registered { color:var(--status-accepted); border-color:var(--status-accepted) }
.pill.gone { color:var(--status-rejected); border-color:var(--status-rejected); text-decoration:line-through } .pill.failed { color:var(--status-unsupported); border-color:var(--status-unsupported) }
.file { display:flex; flex-direction:column } .file small { color:var(--muted) } .kind { font-size:1.05rem; margin-right:.4rem }
.empty { text-align:center; color:var(--muted); padding:2rem }
.drawer { position:fixed; top:0; right:0; height:100%; width:min(520px,100%); background:var(--panel); border-left:1px solid var(--line); box-shadow:-4px 0 24px rgba(0,0,0,.12); z-index:25; overflow:auto; padding:1rem }
.drawer-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:.6rem } .drawer dl { display:grid; grid-template-columns:9rem 1fr; gap:.3rem .6rem; font-size:.92rem } .drawer dt { color:var(--muted) } .drawer dd { margin:0; word-break:break-all }
.drawer h4 { margin:1rem 0 .4rem } .drawer ul { padding-left:1.1rem; margin:0 } .drawer li { margin:.2rem 0; font-size:.9rem }
body.login { display:grid; place-items:center; min-height:100vh } .login-card { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:1.6rem; width:min(360px,92vw); box-shadow:var(--shadow) }
.login-card h1 { margin:0 0 .2rem } .login-card form { display:flex; flex-direction:column; gap:.6rem; margin-top:1rem } .err { color:var(--status-unsupported); margin:0 }
@media (max-width:720px) { .inbox th:nth-child(2),.inbox td:nth-child(2),.inbox th:nth-child(7),.inbox td:nth-child(7) { display:none } .top { gap:.5rem } .brand .muted { display:none } .status { order:3; width:100%; margin-left:0 } .actions { margin-left:auto } .counters { grid-template-columns:repeat(2,1fr) } }

button.info { border:0; background:transparent; color:var(--accent); padding:0 .2rem; font-size:1rem; cursor:pointer; vertical-align:baseline }
button.info.big { font-size:1.25rem; padding:.3rem .55rem; border:1px solid var(--line); border-radius:8px; background:var(--panel) }
.inbox td.act { width:2.5rem; text-align:center }
.pill.queued,.pill.registered { color:var(--muted); border-color:var(--line) } .pill.normalising { color:var(--status-proposed); border-color:var(--status-proposed) }
.pill.normalised { color:var(--status-accepted); border-color:var(--status-accepted) } .pill.parse-failed { color:var(--status-unsupported); border-color:var(--status-unsupported) }
.warnchip { display:inline-block; font-size:.72rem; color:var(--status-attention); border:1px dashed var(--status-attention); border-radius:6px; padding:0 .35rem; margin:.15rem .2rem 0 0 }
.popover { position:fixed; z-index:30; top:4.5rem; right:1rem; width:min(460px,calc(100% - 2rem)); background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); box-shadow:0 8px 30px rgba(0,0,0,.18); padding:1rem }
.popover dl { display:grid; grid-template-columns:8.5rem 1fr; gap:.45rem .6rem; font-size:.9rem; margin:.7rem 0 } .popover dd { margin:0 }
.viewer { position:fixed; inset:0; z-index:20; background:var(--bg); display:flex; flex-direction:column }
.v-head { display:flex; align-items:center; gap:.8rem; padding:.6rem 1rem; background:var(--panel); border-bottom:1px solid var(--line); flex-wrap:wrap }
.v-title { display:flex; flex-direction:column; min-width:0; flex:1 } .v-title b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.v-actions { display:flex; gap:.4rem; align-items:center } a.btn { border:1px solid var(--line); border-radius:8px; padding:.35rem .7rem; text-decoration:none; color:var(--ink); background:var(--panel) }
.v-tabs { display:flex; gap:.3rem } .v-tabs button.on { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--panel)) }
.v-body { flex:1; overflow:auto; padding:1rem; display:flex; flex-direction:column; align-items:center }
.v-body img.full { max-width:100%; max-height:calc(100vh - 8rem); object-fit:contain; border-radius:6px; box-shadow:var(--shadow) }
.v-body iframe.pdf { width:min(1100px,100%); flex:1; min-height:calc(100vh - 8rem); border:1px solid var(--line); border-radius:6px; background:#fff }
.v-body video { max-width:100%; max-height:60vh; border-radius:6px; background:#000 } .v-body audio { width:min(700px,100%) }
.doc { width:min(900px,100%); background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:1.2rem 1.5rem; line-height:1.55; box-shadow:var(--shadow); overflow-wrap:anywhere }
.doc h1,.doc h2,.doc h3,.doc h4 { margin:1.1em 0 .4em; line-height:1.25 } .doc h1 { font-size:1.45rem } .doc h2 { font-size:1.2rem } .doc h3,.doc h4 { font-size:1.05rem }
.doc .synthetic { color:var(--muted); font-weight:600; font-size:.95rem; border-top:1px solid var(--line); padding-top:.6rem }
.doc table { border-collapse:collapse; margin:.6rem 0; font-size:.9rem; display:block; overflow-x:auto } .doc td,.doc th { border:1px solid var(--line); padding:.25rem .5rem; vertical-align:top }
.doc pre { background:var(--bg); padding:.7rem; border-radius:6px; overflow-x:auto; font-size:.85rem } .doc .page { color:var(--muted); font-size:.78rem; text-align:center; margin:.8rem 0; border-top:1px dashed var(--line) }
.doc .ts { color:var(--accent); font-variant-numeric:tabular-nums; font-size:.85rem; margin-right:.3rem } .doc p { margin:.45rem 0 } .doc img { max-width:100% }
.doc .chat { margin:.15rem 0; white-space:pre-wrap } .kids { width:min(900px,100%); margin-top:1rem } .kids a { cursor:pointer }
.v-note { color:var(--muted); margin:.6rem 0; text-align:center; max-width:700px }
@media (max-width:720px) { .v-body { padding:.5rem } .doc { padding:.8rem } .v-tabs { order:3; width:100% } }
.v-title { flex:1 1 0; min-width:0 } .v-title b, .v-title small { display:block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.v-actions { flex-shrink:0; margin-left:auto; position:relative; z-index:1 }
main { overflow-x:auto } html, body { max-width:100%; overflow-x:clip }   /* clip, not hidden: hidden made body a scroll container and broke the sticky side panel (2026-10-30) */
.pdf-mobile { display:flex; flex-direction:column; align-items:center; gap:.8rem; width:100% } .pdf-mobile img { max-width:100%; border:1px solid var(--line); border-radius:6px; box-shadow:var(--shadow) }
a.btn.primary { background:var(--accent); color:var(--accent-ink); border-color:var(--accent); padding:.6rem 1.1rem; font-weight:600 }

/* ===================== phase 2: review UI (2026-10-28). Tokens from SPEC-06 §2.2; types v2 add event/opinion/progress ===================== */
:root { --status-proposed:#2a62c9; --status-attention:#9a5b00; --status-unsupported:#b3261e; --status-accepted:#1d7a4b; --status-committed:#166a3f; --status-rejected:#5f6675; --status-unrouted:#7a3fc0;
  --conf-high:#1d7a4b; --conf-mid:#9a5b00; --conf-low:#b3261e; --mark:#fff1a8; --mark-on:#ffd54a; --warn-bg:#fff6e5; --ok-bg:#e7f5ec; --err-bg:#fdecea;
  --type-task:#0897a9; --type-event:#bc4945; --type-deadline:#b24981; --type-decision:#9f6713; --type-policy:#4087de; --type-strategy:#069c82; --type-requirement:#6566c9;
  --type-reference:#369e4e; --type-question:#8d58b7; --type-idea:#b65400; --type-risk:#7c9217; --type-opinion:#8a6d55; --type-contact:#a48203; --type-progress:#3d7f99;
  --type-instruction:#bc4945; --type-new:#ab3ba5; --type-other:#5f6675; }
:root[data-theme="dark"] { --status-proposed:#7fb0f0; --status-attention:#f0b454; --status-unsupported:#ff8a80; --status-accepted:#6fd49a; --status-committed:#2e9e63; --status-rejected:#9aa3b5; --status-unrouted:#c49af0;
  --conf-high:#6fd49a; --conf-mid:#f0b454; --conf-low:#ff8a80; --mark:#5a4a12; --mark-on:#8a6d10; --warn-bg:#2d2414; --ok-bg:#15291e; --err-bg:#331a1a;
  --type-task:#0aa3b6; --type-event:#c65954; --type-deadline:#bc598c; --type-decision:#ab7225; --type-policy:#5192e4; --type-strategy:#0ba88c; --type-requirement:#7174d1;
  --type-reference:#4ba75d; --type-question:#9766c0; --type-idea:#c06325; --type-risk:#879c35; --type-opinion:#a88a72; --type-contact:#af8c11; --type-progress:#5a9bb5;
  --type-instruction:#c65954; --type-new:#ca66c3; --type-other:#9aa3b5; }
.small { font-size:.82rem } .n { color:var(--muted); font-variant-numeric:tabular-nums } .center { text-align:center } .warn { color:var(--status-attention) }
kbd { font:600 .75rem ui-monospace,monospace; border:1px solid var(--line); border-bottom-width:2px; border-radius:4px; padding:0 .3rem; background:var(--bg) }
button.ok { border-color:var(--status-accepted); color:var(--status-accepted) } button.ok:hover:not(:disabled) { background:var(--ok-bg) }
button.no { border-color:color-mix(in srgb, var(--status-unsupported) 50%, var(--line)); color:var(--status-unsupported) } button.no:hover { background:var(--err-bg) }
button.danger { background:var(--status-unsupported); color:#fff; border-color:var(--status-unsupported) } button.small { padding:.2rem .55rem; font-size:.82rem }
button:disabled { opacity:.45; cursor:not-allowed } button.link { border:0; background:none; padding:.1rem 0; color:var(--ink); text-align:left; cursor:pointer } button.link:hover { color:var(--accent) }
:focus-visible { outline:2px solid var(--accent); outline-offset:2px }
/* header tabs */
.tabs { display:flex; gap:.2rem } .tabs a { text-decoration:none; color:var(--muted); padding:.35rem .7rem; border-radius:8px; font-weight:600; font-size:.95rem }
.tabs a:hover { color:var(--ink); background:var(--bg) } .tabs a.on { color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--panel)) } .tabs .n:not(:empty) { margin-left:.25rem; font-size:.8rem; background:var(--bg); border-radius:999px; padding:0 .4rem; color:var(--ink) }
.status .chain { color:var(--accent) } .status .chain.bad { color:var(--status-unsupported) }
.app-view { padding:0; overflow:visible } .loading { padding:2rem; color:var(--muted); text-align:center }
.pill.unrouted { color:var(--status-unrouted); border-color:var(--status-unrouted) } .pill.processing { color:var(--status-proposed); border-color:var(--status-proposed) } .pill.staged { color:var(--status-proposed); border-color:var(--status-proposed); background:color-mix(in srgb, var(--status-proposed) 10%, var(--panel)) } .pill.committed { color:#fff; background:var(--status-committed); border-color:var(--status-committed) } .pill.processed { color:var(--status-proposed); border-color:var(--status-proposed) }
a.rv-link { font-size:.8rem; font-weight:600; margin-right:.3rem; text-decoration:none; border:1px solid var(--accent); border-radius:6px; padding:.05rem .4rem }
.toast { position:fixed; left:50%; bottom:1.2rem; transform:translateX(-50%); z-index:60; background:var(--ink); color:var(--bg); padding:.6rem 1rem; border-radius:10px; box-shadow:0 6px 24px rgba(0,0,0,.25); max-width:min(640px,92vw); font-size:.92rem }
.toast.bad { background:var(--status-unsupported); color:#fff } .toast.warn { background:var(--status-attention); color:#fff }
/* chips */
.tchip { display:inline-flex; align-items:center; gap:.25rem; border-radius:6px; padding:.05rem .45rem; font-size:.76rem; font-weight:600; color:#fff; background:var(--tc,var(--type-other)); white-space:nowrap; line-height:1.5 }
.t-task{--tc:var(--type-task)} .t-event{--tc:var(--type-event)} .t-deadline{--tc:var(--type-deadline)} .t-decision{--tc:var(--type-decision)} .t-policy{--tc:var(--type-policy)} .t-strategy{--tc:var(--type-strategy)}
.t-requirement{--tc:var(--type-requirement)} .t-reference{--tc:var(--type-reference)} .t-question{--tc:var(--type-question)} .t-idea{--tc:var(--type-idea)} .t-risk{--tc:var(--type-risk)} .t-opinion{--tc:var(--type-opinion)}
.t-contact{--tc:var(--type-contact)} .t-progress{--tc:var(--type-progress)} .t-instruction{--tc:var(--type-instruction)} .t-new{--tc:var(--type-new)} .t-other{--tc:var(--type-other)}
:root[data-theme="dark"] .tchip { color:#0d0f18 }
.tchip.t-other { background:transparent; color:var(--type-other); border:1px dashed var(--type-other) }
.stance { display:inline-block; border-radius:999px; padding:0 .5rem; font-size:.74rem; font-weight:600; white-space:nowrap; border:1.5px solid; line-height:1.45 }
.s-decided { background:var(--status-accepted); border-color:var(--status-accepted); color:#fff } :root[data-theme="dark"] .s-decided { color:#0d0f18 }
.s-proposed { color:var(--status-attention); border-color:var(--status-attention); background:transparent }
.s-open { color:var(--status-proposed); border-color:var(--status-proposed); border-style:dashed; background:transparent }
.s-opinion { color:var(--muted); border-color:var(--line); background:var(--bg); font-style:italic }
.pchip { display:inline-flex; align-items:center; gap:.3rem; border:1px solid var(--line); border-radius:999px; padding:0 .55rem; font-size:.8rem; white-space:nowrap; background:var(--panel) }
.pchip.big { font-size:.95rem; font-weight:600; padding:.1rem .7rem } .pchip.cross { border-color:var(--status-unrouted); color:var(--status-unrouted); font-weight:600; background:color-mix(in srgb, var(--status-unrouted) 9%, var(--panel)) }
.pchip.unfiled { border-style:dashed; color:var(--muted) } .pdot { width:9px; height:9px; border-radius:50%; display:inline-block; flex:none }
.conf { display:inline-flex; align-items:center; gap:.3rem; font-size:.8rem; font-variant-numeric:tabular-nums; color:var(--cc); white-space:nowrap } .conf .segs { display:inline-flex; gap:2px }
.conf .segs i { width:5px; height:11px; border-radius:1px; background:var(--line) } .conf .segs i.on { background:var(--cc) }
.conf.c-high{--cc:var(--conf-high)} .conf.c-mid{--cc:var(--conf-mid)} .conf.c-low{--cc:var(--conf-low)}
.vpill { font-size:.74rem; border-radius:999px; padding:0 .45rem; border:1px solid; white-space:nowrap }
.v-verified { color:var(--status-accepted); border-color:var(--status-accepted) } .v-weak { color:var(--status-attention); border-color:var(--status-attention); border-style:dashed } .v-unsupported { color:#fff; background:var(--status-unsupported); border-color:var(--status-unsupported) }
.spill { font-size:.74rem; border-radius:999px; padding:0 .5rem; border:1px solid; white-space:nowrap }
.st-proposed { color:var(--status-proposed); border-color:var(--status-proposed) } .st-accepted,.st-edited { color:var(--status-accepted); border-color:var(--status-accepted) }
.st-committed { background:var(--status-committed); color:#fff; border-color:var(--status-committed) } .st-rejected,.st-merged { color:var(--status-rejected); border-color:var(--status-rejected) } .st-overridden { color:var(--status-unrouted); border-color:var(--status-unrouted) }
.achip { font-size:.72rem; color:var(--status-attention); border:1px dashed var(--status-attention); border-radius:6px; padding:0 .35rem; white-space:nowrap }
.echip { display:inline-flex; align-items:baseline; gap:.25rem; font-size:.8rem; border:1px solid var(--line); border-radius:999px; padding:0 .5rem; background:var(--bg) }
.echip i { font-style:normal; color:var(--muted) } .echip small { color:var(--muted); font-size:.7rem } .echip.new { border-style:dashed; border-color:var(--type-new) } .echip.unres { border-color:var(--status-attention) }
/* item card */
.it { position:relative; background:var(--panel); border:1px solid var(--line); border-left:4px solid var(--cc,var(--line)); border-radius:8px; padding:.6rem .75rem; margin:.45rem 0; display:flex; flex-direction:column; gap:.35rem; scroll-margin:5rem; cursor:default }
.it.c-high{--cc:var(--conf-high)} .it.c-mid{--cc:var(--conf-mid)} .it.c-low{--cc:var(--conf-low)}
.it.focus { box-shadow:0 0 0 2px var(--accent); } .it:focus { outline:none }
.it.is-accepted,.it.is-edited { background:color-mix(in srgb, var(--status-accepted) 5%, var(--panel)) } .it.is-rejected .it-title { text-decoration:line-through; color:var(--muted) }
.it-top { display:flex; align-items:center; gap:.4rem; flex-wrap:wrap } .it-title { flex:1 1 12rem; min-width:0; font-size:.98rem; line-height:1.3 }
.it-doc { font-size:.82rem } .it-doc a { color:var(--muted) }
.it-dest { font-size:.84rem; color:var(--muted); border-left:2px solid var(--line); padding-left:.45rem }
.it-body { margin:0; font-size:.9rem; color:var(--ink); overflow-wrap:anywhere }
.it-fields { display:flex; flex-wrap:wrap; gap:.3rem .5rem; font-size:.84rem } .fv b { font-weight:600; color:var(--muted); margin-right:.2rem; font-size:.78rem; text-transform:uppercase; letter-spacing:.02em }
.fv.dflt { text-decoration:underline dotted; text-underline-offset:3px } .fv.unres { background:var(--warn-bg); color:var(--status-attention); border:1px dashed var(--status-attention); border-radius:6px; padding:0 .35rem; cursor:pointer }
.it-ents { display:flex; flex-wrap:wrap; gap:.3rem }
.it-quote { margin:0; font-size:.86rem; font-style:italic; color:var(--ink); background:var(--bg); border-left:3px solid var(--status-accepted); padding:.3rem .5rem; border-radius:0 6px 6px 0; cursor:pointer; overflow-wrap:anywhere }
.it-quote small { font-style:normal; color:var(--muted); margin-left:.4rem } .it-quote.q-unsupported { border-left-color:var(--status-unsupported) } .it-quote.q-corrected,.it-quote.q-fragments { border-left-color:var(--status-attention) } .it-quote.none { cursor:default; color:var(--muted) }
.it-quote:hover { background:color-mix(in srgb, var(--accent) 8%, var(--bg)) }
.it-meta { display:flex; flex-wrap:wrap; gap:.3rem .4rem; align-items:center }
.it-why summary { font-size:.8rem; color:var(--muted); cursor:pointer } .it-why ul { margin:.2rem 0 0; padding-left:1.1rem; font-size:.84rem }
.it-actions { display:flex; flex-wrap:wrap; gap:.3rem } .it-actions button { padding:.25rem .6rem; font-size:.84rem }
/* document review */
.rv { padding:.6rem 1rem 0 } .rv-head { padding-bottom:.5rem } .rv-title { display:flex; align-items:baseline; gap:.8rem; flex-wrap:wrap } .rv-title h1 { font-size:1.25rem; margin:.1rem 0; overflow-wrap:anywhere }
.back { font-size:.9rem; text-decoration:none } .rv-meta { font-size:.86rem; display:flex; flex-wrap:wrap; gap:.2rem; align-items:center } .rv-summary { margin:.3rem 0; max-width:1100px; font-size:.9rem; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; cursor:pointer } .rv-summary.full { display:block }
.rv-note { background:var(--warn-bg); border:1px solid color-mix(in srgb, var(--status-attention) 40%, var(--line)); border-radius:8px; padding:.45rem .7rem; margin:.4rem 0; font-size:.9rem } .rv-note.run { background:color-mix(in srgb, var(--accent) 8%, var(--panel)); border-color:var(--line) } .rv-note.bad { background:var(--err-bg) }
.rv-actions { display:flex; gap:.4rem; flex-wrap:wrap; margin-top:.3rem }
.rv-cols { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.12fr); gap:1rem; height:calc(100vh - 4.5rem); min-height:420px; scroll-margin-top:4rem }
.rv-text, .rv-side { overflow:auto; min-height:0 } .rv-side { padding-right:.2rem }
.rv-tabs { display:flex; gap:.3rem; align-items:center; position:sticky; top:0; background:var(--bg); padding:.2rem 0 .4rem; z-index:1 } .rv-tabs button.on { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--panel)) }
.rv-texttoggle { display:none } .rv-doc { width:100% } .rv-text iframe.pdf { width:100%; height:calc(100% - 3rem); border:1px solid var(--line); border-radius:6px } .rv-text img.full { max-width:100% }
mark.ev { background:var(--mark); color:inherit; border-radius:2px; cursor:pointer; box-shadow:0 1px 0 var(--status-accepted) } mark.ev.q-unsupported { box-shadow:0 1px 0 var(--status-unsupported) }
mark.ev.on { background:var(--mark-on); outline:1px solid var(--status-attention) } mark.ev.flash { animation:flash 1.2s ease } @keyframes flash { 0%,40% { background:var(--accent); color:var(--accent-ink) } }
.rv-block { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:.6rem .75rem; margin:0 0 .6rem }
h3.blk { margin:0; font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted) }
.route { border-left:5px solid var(--pc) } .route-top { display:flex; align-items:center; gap:.5rem; flex-wrap:wrap } .route .why { margin:.4rem 0; font-size:.9rem }
.signals summary { font-size:.84rem; color:var(--muted); cursor:pointer } table.sig { border-collapse:collapse; font-size:.82rem; margin:.4rem 0; width:100% } .sig th,.sig td { text-align:left; padding:.15rem .4rem; border-bottom:1px solid var(--line) } .sig th { color:var(--muted); font-weight:600 } .sig tr.cur td { font-weight:700 }
.alts { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; margin:.4rem 0 } .alt { display:inline-flex; align-items:center; gap:.3rem; font-size:.85rem; padding:.2rem .55rem } .alt small { color:var(--muted) }
.route-act { display:flex; gap:.4rem; flex-wrap:wrap; margin-top:.3rem }
.elsewhere { border-color:var(--status-unrouted); background:color-mix(in srgb, var(--status-unrouted) 6%, var(--panel)) } .els { display:flex; flex-direction:column; gap:.15rem; margin:.35rem 0; font-size:.88rem }
.ecards { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.4rem } .ecard { border:1px dashed var(--type-new); border-radius:8px; padding:.35rem .55rem; font-size:.88rem; display:flex; flex-direction:column; gap:.25rem } .ecard.done { border-style:solid; border-color:var(--line); opacity:.7 } .ecard div { display:flex; gap:.25rem; flex-wrap:wrap }
.items-head { display:flex; justify-content:space-between; gap:.5rem; flex-wrap:wrap; align-items:center; position:sticky; top:0; z-index:2 }
.fchips { display:flex; gap:.3rem; flex-wrap:wrap } .seg { display:inline-flex } .seg button { border-radius:0; padding:.25rem .6rem; font-size:.84rem } .seg button:first-child { border-radius:8px 0 0 8px } .seg button:last-child { border-radius:0 8px 8px 0; margin-left:-1px } .seg button.on { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--panel)); position:relative }
button.chip { font:inherit; font-size:.84rem }
.grp { margin:0 0 .7rem } .grp-h { display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; position:sticky; top:2.9rem; background:var(--bg); padding:.3rem 0; z-index:1 }
.grp-t { border:0; background:none; padding:.1rem .2rem; display:inline-flex; align-items:center; gap:.35rem; font-weight:600 } .grp-t .n { font-weight:600 } .grp-more { margin:.2rem 0 0 1.4rem }
.tp-card { background:var(--panel); border:1px solid var(--type-new); border-left:5px solid var(--type-new); border-radius:var(--radius); padding:.6rem .75rem; margin:.4rem 0 } .tp-card.quiet { border-color:var(--line); border-left-color:color-mix(in srgb, var(--type-new) 45%, var(--line)) }
.tp-top { display:flex; gap:.5rem; align-items:center; flex-wrap:wrap } .tp-def { margin:.35rem 0; font-style:italic } .tp-items { margin:.2rem 0 .4rem; padding-left:1.1rem; font-size:.88rem } .tp-act { display:flex; gap:.4rem; flex-wrap:wrap }
.rej summary { cursor:pointer; color:var(--muted) } .rej ul { padding-left:1.1rem; font-size:.9rem } .rej li { margin:.2rem 0 }
.rv-foot { position:sticky; bottom:0; background:var(--panel); border:1px solid var(--line); border-radius:8px; padding:.4rem .7rem; font-size:.86rem; margin-bottom:.6rem }
/* pages: queue, projects, types */
.page { padding:.8rem 1rem 3rem; max-width:1200px; margin:0 auto } h1.ph { font-size:1.3rem; margin:.2rem 0 .6rem } h2.sh { font-size:1rem; margin:1rem 0 .4rem } h3.sh { font-size:.9rem; color:var(--muted); margin:.8rem 0 .3rem }
.q-head { position:sticky; top:var(--top-h,3.7rem); z-index:3; background:var(--bg); padding:.3rem 0 .4rem; border-bottom:1px solid var(--line) } .q-filters { display:flex; flex-wrap:wrap; gap:.5rem; align-items:end }
.fsel { display:flex; flex-direction:column; font-size:.75rem; color:var(--muted); gap:.1rem } .fsel select, .fld select { font:inherit; font-size:.88rem; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.3rem .45rem }
.fchk { font-size:.88rem; display:flex; gap:.3rem; align-items:center } .q-bar { display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; margin-top:.4rem }
.q-list .it { margin:.55rem 0; scroll-margin-top:15rem; scroll-margin-bottom:1rem } .queue .it.focus { box-shadow:0 0 0 2px var(--accent), 0 4px 18px rgba(0,0,0,.08) }
.pgrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:.8rem }
.pcard { display:flex; flex-direction:column; gap:.35rem; background:var(--panel); border:1px solid var(--line); border-left:6px solid var(--pc); border-radius:var(--radius); padding:.7rem .85rem; text-decoration:none; color:var(--ink); box-shadow:var(--shadow) }
.pcard:hover { border-color:var(--pc) } .pc-top { display:flex; justify-content:space-between; gap:.4rem; align-items:center } .pc-one { margin:0; font-size:.88rem; color:var(--muted) }
.pc-counts { display:flex; flex-wrap:wrap; gap:.2rem .8rem; font-size:.86rem } .pc-counts .warnc b { color:var(--status-attention) } .pc-types { display:flex; flex-wrap:wrap; gap:.3rem } .tcount { font-size:.82rem; display:inline-flex; gap:.2rem; align-items:center; text-decoration:none; color:var(--ink) }
.proj h1.band { border-left:6px solid var(--pc); padding-left:.6rem } .pcols { display:grid; grid-template-columns:2fr 1fr; gap:1.4rem } ul.plain { list-style:none; padding:0; margin:0 } ul.plain li { padding:.25rem 0; border-bottom:1px solid var(--line); font-size:.92rem }
.tags { display:flex; flex-wrap:wrap; gap:.3rem } .tag { font-size:.8rem; border:1px solid var(--line); border-radius:6px; padding:0 .4rem } .tag.proposed { border-style:dashed } p.pre { white-space:pre-wrap; font-size:.88rem }
dl.kv { display:grid; grid-template-columns:7rem 1fr; gap:.2rem .5rem; font-size:.85rem } dl.kv dd { margin:0; overflow-wrap:anywhere }
.tlist { display:flex; flex-direction:column; gap:.25rem } .trow { display:grid; grid-template-columns:14px 8.5rem 4rem 1fr 3rem auto; gap:.5rem; align-items:center; background:var(--panel); border:1px solid var(--line); border-radius:8px; padding:.35rem .6rem; font-size:.88rem }
.trow.retired { opacity:.6 } .swatch { width:14px; height:14px; border-radius:3px; background:var(--tc) } .tdef { color:var(--muted) } .trow .n { text-align:right }
/* dialogs */
dialog.dlg { border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--ink); padding:0; width:min(480px,94vw); box-shadow:0 18px 60px rgba(0,0,0,.3) } dialog.dlg.wide { width:min(720px,96vw) }
dialog.dlg::backdrop { background:rgba(10,12,20,.45) } .dlg-body { padding:1rem 1.1rem; display:flex; flex-direction:column; gap:.6rem; margin:0 } .dlg-body h3 { margin:0; display:flex; gap:.5rem; align-items:center }
.dlg-actions { display:flex; justify-content:flex-end; gap:.5rem; margin-top:.3rem } .pick-list { display:flex; flex-direction:column; gap:.25rem; max-height:55vh; overflow:auto }
.pick { display:flex; align-items:center; gap:.5rem; text-align:left; padding:.45rem .6rem } .pick .pl { font-weight:600 } .pick small { margin-left:auto; text-align:right } .pick.cur { border-color:var(--accent) } .pick:hover, .pick:focus { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 7%, var(--panel)) }
.fld { display:flex; flex-direction:column; gap:.2rem; font-size:.85rem } .fld > span { color:var(--muted) } .fld input, .fld textarea { font:inherit; font-size:.92rem; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.4rem .55rem } .fld textarea { resize:vertical }
.fld-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:.5rem .8rem } dl.keys { display:grid; grid-template-columns:auto 1fr; gap:.35rem .8rem; margin:0; font-size:.9rem } dl.keys dd { margin:0 }
/* phone */
@media (max-width:900px) { .rv-cols { grid-template-columns:1fr; height:auto } .rv-text, .rv-side { overflow:visible } .rv-texttoggle { display:inline-block; margin-left:auto }
  .rv-text:not(.show) #rv-textbody, .rv-text:not(.show) .rv-tabs > button:not(.rv-texttoggle) { display:none } .rv-text { order:2 } .rv-side { order:1 } .grp-h { top:0 } .items-head { position:static }
  .pcols { grid-template-columns:1fr } }
@media (max-width:720px) { .tabs { order:4; width:100%; overflow-x:auto } .tabs a { padding:.35rem .55rem } .rv { padding:.5rem .6rem 0 } .page { padding:.6rem .6rem 3rem } .q-head { position:static }
  .it-actions button { flex:1 1 30%; padding:.55rem .4rem; font-size:.95rem } .it-actions button[data-act="reassign"], .it-actions button[data-act="retype"] { flex:1 1 45%; padding:.35rem; font-size:.85rem }
  .trow { grid-template-columns:14px 1fr 3rem; } .trow .tdef, .trow > .muted { grid-column:1 / -1 } .rv-title h1 { font-size:1.1rem } .fsel { flex:1 1 40% } .fsel select { width:100% } }

.elsewhere .pchip { vertical-align:middle }
@media (max-width:720px) { .q-list .it { scroll-margin-top:4.5rem } }
.q-fdet > summary { cursor:pointer; color:var(--muted); font-size:.88rem; margin-bottom:.3rem } @media (min-width:721px) { .q-fdet > summary { display:none } }

/* 2026-10-28 phase-2 fixes: suggested projects (F5), entity questions (F10) */
.pchip.sugg { border-style:dashed; background:transparent }
button.small.sugg { border-style:dashed; color:var(--muted) }
.els .els-sug { display:inline-flex; align-items:center; gap:.3rem; flex-wrap:wrap }
.ent-ask { display:flex; flex-direction:column; gap:.5rem; margin:.5rem 0 }
.ent-row { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; padding:.35rem 0; border-bottom:1px solid var(--line) }
.ent-row .ent-btns { margin-left:auto; display:inline-flex; gap:.3rem; flex-wrap:wrap }
/* Also involves (owner rule 2026-10-28): other projects / teams of a cross-project item, their role and ask */
.it-also { display:flex; flex-wrap:wrap; align-items:baseline; gap:.3rem .6rem; font-size:.82rem; cursor:pointer }
.it-also .also-lab { color:var(--muted); font-size:.74rem; text-transform:uppercase; letter-spacing:.02em; font-weight:600 }
.also-row { display:inline-flex; flex-wrap:wrap; align-items:baseline; gap:.25rem; min-width:0 }
.also-ask { color:var(--ink); overflow-wrap:anywhere } .also-ask.none { color:var(--status-attention); font-style:italic }
.rchip { font-size:.7rem; border:1px solid var(--line); border-radius:4px; padding:0 .3rem; color:var(--muted); white-space:nowrap }
.rchip.r-contributor { border-color:var(--status-unrouted); color:var(--status-unrouted) }
.also-box { border:1px solid var(--line); border-radius:8px; padding:.4rem .6rem .6rem; margin:.6rem 0 0; min-width:0 }
.also-box legend { font-weight:600; font-size:.85rem; padding:0 .3rem } .also-box legend small { font-weight:400 }
.also-rows { display:flex; flex-direction:column; gap:.4rem; margin-bottom:.4rem }
.also-edit { display:flex; flex-wrap:wrap; gap:.3rem; align-items:center; min-width:0 }
.also-edit > * { min-width:0 } .also-edit [data-a="who"] { flex:1 1 9rem } .also-edit [data-a="entity"] { flex:1 1 8rem } .also-edit [data-a="role"] { flex:0 1 8rem }
.also-edit [data-a="ask"] { flex:3 1 14rem } .also-edit [data-a="del"] { flex:0 0 auto } .also-edit input[hidden] { display:none }
@media (max-width:720px) { .also-edit { padding-bottom:.4rem; border-bottom:1px dashed var(--line) } .also-edit [data-a="ask"] { flex-basis:calc(100% - 3rem) } }

/* ===================== Revamp 2026-10-28: compact shell, Inbox list, Review master-detail, compact items ===================== */
.top { flex-wrap:nowrap; gap:.75rem; padding:.45rem 1rem; min-height:52px }
.brand { text-decoration:none; color:var(--ink); flex-shrink:0 }
.tabs a { display:inline-flex; align-items:center; gap:.3rem } .tabs .ti { display:none }
button.icon, a.icon.btn { width:2.2rem; height:2.2rem; padding:0; display:inline-grid; place-items:center; border-radius:8px; border:1px solid transparent; background:transparent; color:var(--muted); font-size:1.05rem; text-decoration:none }
button.icon:hover, a.icon.btn:hover { border-color:var(--line); color:var(--ink); background:var(--bg) }
button.icon.spin { animation:spin 1s linear infinite } @keyframes spin { to { transform:rotate(360deg) } }
.status { border:1px solid var(--line); background:var(--panel); border-radius:999px; padding:.25rem .7rem; font-size:.84rem; cursor:pointer; white-space:nowrap }
.status:hover { border-color:var(--accent) } .status.busy .dot { background:var(--accent); animation:pulse 1.2s ease-in-out infinite } @keyframes pulse { 50% { opacity:.35 } }
.popover.sys { top:3.6rem } .popover.sys .err { color:var(--status-unsupported) }
.sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0) }
button.link { border:0; background:none; color:var(--accent); padding:0; text-decoration:underline; cursor:pointer }
.btn { display:inline-flex; align-items:center; gap:.3rem; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.4rem .75rem; text-decoration:none; font-size:.9rem }
.btn.small, button.small { padding:.2rem .55rem; font-size:.82rem }

/* Inbox */
.ipage { max-width:1240px; margin:0 auto }
.ibar { position:sticky; top:var(--top-h,52px); z-index:4; background:var(--bg); padding:.7rem 1rem .5rem; display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; border-bottom:1px solid var(--line) }
.buckets { display:flex; gap:.3rem; flex-wrap:wrap }
.bk { border-radius:999px; padding:.3rem .8rem; font-size:.88rem; font-weight:600; color:var(--muted) } .bk .n { font-weight:500; margin-left:.15rem; font-variant-numeric:tabular-nums }
.bk.on { color:var(--accent); border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--panel)) }
.bk.b-review:not(.on) .n { color:var(--status-proposed); font-weight:700 } .bk.b-failed .n { color:var(--status-unsupported); font-weight:700 }
.itools { display:flex; gap:.4rem; align-items:center; margin-left:auto; flex-wrap:wrap }
.itools input[type=search] { width:min(320px,60vw) } .itools select { font:inherit; font-size:.88rem; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.4rem .5rem; max-width:12rem }
.imain { padding:.2rem 1rem 4rem }
.iday { font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); padding:1rem .2rem .35rem }
.ilist { display:flex; flex-direction:column }
.irow { display:grid; grid-template-columns:2rem minmax(0,1fr) auto 3.6rem 1.6rem; align-items:center; gap:.7rem; padding:.5rem .7rem; background:var(--panel); border:1px solid var(--line); border-top-width:0; cursor:pointer; outline:none }
.iday + .irow { border-top-width:1px; border-radius:var(--radius) var(--radius) 0 0 } .irow:has(+ .iday), .irow:last-child { border-radius:0 0 var(--radius) var(--radius) } .iday + .irow:has(+ .iday), .iday + .irow:last-child { border-radius:var(--radius) }
.irow:hover { background:color-mix(in srgb, var(--accent) 5%, var(--panel)) } .irow.sel { box-shadow:inset 3px 0 0 var(--accent); background:color-mix(in srgb, var(--accent) 8%, var(--panel)) }
.irow.new .ititle b::after { content:"new"; margin-left:.45rem; font-size:.66rem; font-weight:700; color:var(--accent); border:1px solid var(--accent); border-radius:999px; padding:0 .35rem; vertical-align:2px }
.irow .avatar { margin:0; width:2rem; height:2rem }
.imid { min-width:0 } .ititle { display:flex; align-items:baseline; gap:.4rem; min-width:0 } .ititle b { font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap } .ititle .kind { flex-shrink:0 }
.isub { font-size:.8rem; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis } .isub .sep { font-style:normal; margin:0 .35rem; opacity:.6 } .isub .who { color:var(--ink) } .isub .unv { color:var(--status-attention); margin-left:.15rem }
.isub .pj { color:var(--ink); font-weight:600 } .isub .note { font-style:italic } .isub .warnchip { margin:0 } .isub .fn { font-family:ui-monospace,monospace; font-size:.76rem }
.istate { justify-self:end } .itime { text-align:right; font-size:.82rem; color:var(--muted); font-variant-numeric:tabular-nums }
a.btn.rv { padding:.25rem .65rem; font-size:.82rem; font-weight:600; border-color:var(--status-proposed); color:var(--status-proposed) } a.btn.rv b { background:var(--status-proposed); color:#fff; border-radius:999px; padding:0 .4rem; font-size:.74rem }
.pill.normalised { color:var(--muted); border-color:var(--line) } .pill.staged { color:var(--status-proposed); border-color:var(--status-proposed) } .pill.reviewed { color:var(--status-accepted); border-color:var(--status-accepted) }
.pill.registered, .pill.normalising, .pill.processing { color:var(--accent); border-color:var(--accent) } .pill.parse-failed { color:var(--status-unsupported); border-color:var(--status-unsupported) }
.empty { text-align:center; color:var(--muted); padding:2.5rem 1rem }
.v-back { font-size:1.1rem; padding:.3rem .6rem }

/* compact item rows (document review: unfocused items; Review queue: the list) */
.it.compact { padding:.35rem .6rem; margin:.25rem 0; gap:0; cursor:pointer }
.it.compact .it-top { flex-wrap:nowrap } .it.compact .it-title { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:500 }
.it.compact:hover { border-color:color-mix(in srgb, var(--accent) 40%, var(--line)) }
.it-flags { display:inline-flex; gap:.35rem; align-items:center; font-size:.8rem; flex-shrink:0 }
.vg { font-weight:700 } .vg.v-verified { color:var(--status-accepted) } .vg.v-weak { color:var(--status-attention) } .vg.v-unsupported { color:var(--status-unsupported) }
.ag { color:var(--status-attention); font-weight:600 } .achip.more { border-style:solid; cursor:help }
.it.compact .tchip { font-size:.7rem } .it.compact .conf .segs { display:none }
.it.compact.is-accepted .it-title, .it.compact.is-edited .it-title { color:var(--muted) } .it.compact.is-rejected .it-title { text-decoration:line-through; color:var(--muted) }

/* Review queue: master-detail */
.qpage { max-width:1480px; margin:0 auto; padding:.6rem 1rem 1rem }
.qbar { display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; padding-bottom:.6rem }
.qcount { font-size:.92rem; color:var(--muted) } .qcount b { color:var(--ink); font-size:1.05rem }
.qf { position:relative } .qf summary { cursor:pointer; list-style:none; border:1px solid var(--line); border-radius:8px; padding:.25rem .65rem; font-size:.86rem; background:var(--panel) } .qf summary::-webkit-details-marker { display:none }
.qf summary .n { background:var(--accent); color:var(--accent-ink); border-radius:999px; padding:0 .4rem; font-size:.74rem }
@media (min-width:981px) { .qf { display:contents } .qf summary { display:none } }
.qfilters { display:flex; flex-wrap:wrap; gap:.4rem; align-items:center } .qfilters .fsel { flex-direction:row } .fchk { font-size:.86rem; display:inline-flex; gap:.3rem; align-items:center; white-space:nowrap }
.qd { display:grid; grid-template-columns:minmax(330px, 40%) minmax(0,1fr); gap:1rem; min-height:320px }
.qlist { overflow:auto; padding-right:.3rem; overscroll-behavior:contain }
.qgrp { display:flex; align-items:center; gap:.45rem; padding:.75rem .2rem .2rem; font-size:.84rem; position:sticky; top:0; background:var(--bg); z-index:1 }
.qgrp:first-child { padding-top:.1rem } .qdoc { font-weight:700; color:var(--ink); text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0 } .qdoc:hover { text-decoration:underline }
.qgrp button { margin-left:auto; flex-shrink:0 }
.qrow.focus { box-shadow:0 0 0 2px var(--accent); background:color-mix(in srgb, var(--accent) 6%, var(--panel)) }
.qdetail { overflow:auto; overscroll-behavior:contain; padding:0 .2rem 1rem }
.qnav { display:flex; align-items:center; gap:.5rem; padding:.1rem 0 .3rem; position:sticky; top:0; background:var(--bg); z-index:2 } .qnav-r { margin-left:auto; display:flex; gap:.3rem; align-items:center }
.qnav [data-close]:empty { display:none }
.qdetail .it { margin-top:.2rem; padding:.9rem 1rem; gap:.55rem } .qdetail .it-title { font-size:1.08rem }
.qdetail .it-actions { position:sticky; bottom:-1rem; background:var(--panel); padding:.55rem 0 .3rem; margin-top:.2rem; border-top:1px solid var(--line) }
.qempty { text-align:center; padding:4rem 1rem; color:var(--muted) } .qempty .big { font-size:1.2rem; color:var(--ink) }
.center { text-align:center }

/* phones and narrow windows */
@media (max-width:980px) {
  .qd { display:block } .qlist { overflow:visible; padding:0 } .qdetail:not(.sheet) { display:none }
  .qdetail.sheet { display:block; position:fixed; inset:0; z-index:40; background:var(--bg); padding:0 .8rem calc(5.5rem + env(safe-area-inset-bottom)); overflow:auto }
  .qdetail.sheet .qnav { padding:.6rem 0 .4rem; border-bottom:1px solid var(--line); margin:0 -.8rem; padding-inline:.8rem }
  .qdetail.sheet .it-actions { position:fixed; left:0; right:0; bottom:0; margin:0; padding:.6rem .8rem calc(.6rem + env(safe-area-inset-bottom)); border-top:1px solid var(--line); box-shadow:0 -4px 16px rgba(0,0,0,.08); display:grid; grid-template-columns:1fr 1fr 1fr; gap:.4rem; z-index:41 }
  .qdetail.sheet .it-actions button { padding:.7rem .3rem; font-size:.95rem } .qdetail.sheet .it-actions button.ok { grid-column:1 / span 2 }
  body.sheet-open { overflow:hidden }
}
@media (max-width:720px) {
  .top { padding:.4rem .7rem; gap:.4rem } .brand b { display:none } .status { margin-left:auto; order:0; width:auto } .actions { margin-left:0 } #classic { display:none }
  .tabs { position:fixed; left:0; right:0; bottom:0; z-index:30; order:0; width:auto; background:var(--panel); border-top:1px solid var(--line); display:grid; grid-template-columns:repeat(4,1fr); gap:0; padding:0 0 env(safe-area-inset-bottom); overflow:visible }
  .tabs a { flex-direction:column; gap:0; padding:.45rem 0 .4rem; border-radius:0; font-size:.72rem; position:relative } .tabs .ti { display:block; font-size:1.15rem; line-height:1.2 }
  .tabs a.on { background:transparent } .tabs .n:not(:empty) { position:absolute; top:.2rem; left:calc(50% + .45rem); margin:0; background:var(--status-unsupported); color:#fff; font-size:.66rem; padding:0 .32rem }
  body { padding-bottom:calc(3.6rem + env(safe-area-inset-bottom)) } body.sheet-open .tabs { display:none }
  .toast { bottom:calc(4.4rem + env(safe-area-inset-bottom)) }
  .ibar { padding:.5rem .7rem .45rem; gap:.4rem } .buckets { flex-wrap:nowrap; overflow-x:auto; width:100%; scrollbar-width:none; padding-bottom:.1rem } .bk { flex-shrink:0 }
  .itools { margin-left:0; width:100%; flex-wrap:nowrap } .itools input[type=search] { flex:1; width:auto; min-width:0 } .itools select { max-width:7.5rem; font-size:.82rem }
  .imain { padding:.2rem .5rem 2rem }
  .irow { grid-template-columns:2rem minmax(0,1fr) auto; grid-template-areas:"av mid time" "av mid state"; row-gap:.15rem; padding:.55rem .6rem }
  .irow .avatar { grid-area:av; align-self:start } .imid { grid-area:mid } .itime { grid-area:time } .istate { grid-area:state } .irow .info { display:none }
  .isub { white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical }
  .qpage { padding:.4rem .5rem 1rem } .qbar { gap:.4rem } .qfilters { padding:.5rem 0 } .qfilters .fsel { flex:1 1 45% } .qfilters .fsel select { width:100% }
  .qf[open] { width:100%; order:9 }
  .popover.sys { top:3.2rem; left:.5rem; right:.5rem; width:auto }
  .viewer { padding-bottom:0 } .v-head { padding:.5rem .6rem; gap:.5rem }
}
.vg, .vg.v-weak, .vg.v-verified, .vg.v-unsupported { border:0; padding:0; background:none; border-radius:0 }
.irow.new .ititle b::after { content:none } .irow.new .ititle::before { content:""; width:.5rem; height:.5rem; border-radius:50%; background:var(--accent); flex-shrink:0; align-self:center; margin-left:-.15rem }
.isub .p.fn { font-family:ui-monospace,monospace; font-size:.76rem } .isub .p.pj { color:var(--ink); font-weight:600 } .isub .p.note { font-style:italic }
@media (max-width:720px) { .isub .p.fn, .isub .p.sz { display:none } }
/* compact rows must not widen their column (nowrap titles) */
.rv-cols > *, .rv-side, .grp, .qlist, .qdetail { min-width:0 } .it { min-width:0; max-width:100% }
@media (max-width:900px) { .rv-cols { grid-template-columns:minmax(0,1fr) } }

/* ===================== Calm light-gray theme + lineage + content (2026-10-28, owner: light gray, modern, calming) ===================== */
:root { --bg:#eef0f3; --panel:#ffffff; --panel-2:#f6f7f9; --ink:#2a2f37; --muted:#7b828e; --line:#e3e6ea; --accent:#5576c9; --accent-ink:#ffffff;
  --status-proposed:#5576c9; --status-attention:#bf8a2f; --status-unsupported:#c9605c; --status-accepted:#3f9474; --status-committed:#2f7a5c; --status-rejected:#9aa1ac; --status-unrouted:#8a74c9;
  --conf-high:#3f9474; --conf-mid:#bf8a2f; --conf-low:#c9605c; --radius:12px; --shadow:0 1px 2px rgba(17,24,39,.04), 0 2px 8px rgba(17,24,39,.04) }
:root[data-theme="dark"] { --panel-2:#1d222b }
html, body { font-size:14.5px; -webkit-font-smoothing:antialiased }
.top { background:color-mix(in srgb, var(--panel) 82%, transparent); backdrop-filter:saturate(1.4) blur(10px); -webkit-backdrop-filter:saturate(1.4) blur(10px); border-bottom-color:var(--line) }
button, .btn, input, select { border-radius:9px } button:hover, .btn:hover { background:var(--panel-2) } button.primary:hover, a.btn.primary:hover { background:color-mix(in srgb, var(--accent) 88%, #000) }
.btn.tiny, button.tiny { padding:.08rem .45rem; font-size:.75rem; border-radius:7px } .btn.ghost, button.ghost { background:transparent }
a.btn.primary, .btn.primary { background:var(--accent); color:var(--accent-ink); border-color:var(--accent) }
.tabs a { font-weight:600; color:var(--muted) } .tabs a.on { background:color-mix(in srgb, var(--accent) 10%, var(--panel)); color:var(--accent) }
.pill, .spill { border:0 !important; background:color-mix(in srgb, currentColor 12%, transparent); font-weight:600; padding:.12rem .6rem }
.bk { background:var(--panel); border-color:transparent; box-shadow:var(--shadow) } .bk.on { box-shadow:0 0 0 1.5px var(--accent) inset }
.itools input[type=search], .itools select { background:var(--panel); border-color:transparent; box-shadow:var(--shadow) }
.ibar { background:color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter:blur(8px); border-bottom:0 }
.iday { padding:1.1rem .3rem .4rem; letter-spacing:.06em }
.irow, .iday + .irow, .irow:has(+ .iday), .irow:last-child, .iday + .irow:has(+ .iday), .iday + .irow:last-child { border:0; border-radius:10px; margin-bottom:5px; box-shadow:var(--shadow) }
.irow:hover { background:var(--panel-2) } .irow.sel { box-shadow:0 0 0 1.5px var(--accent), var(--shadow); background:var(--panel) }
.it { border-color:var(--line); border-radius:10px; box-shadow:var(--shadow) } .it.compact { box-shadow:none }
.qgrp, .qnav { background:var(--bg) }
.fp-empty { color:var(--muted); text-align:center; padding:3rem 1.5rem; font-size:.92rem }
.fp-load { padding:1.5rem }

/* Files: list + lineage panel */
.ipage { max-width:1560px }
.fsplit { display:grid; grid-template-columns:minmax(0,1fr); gap:1rem; padding:0 1rem }
.fsplit .imain { padding:.2rem 0 4rem }
.fpanel { display:none }
@media (min-width:1101px) {
  .fsplit { grid-template-columns:minmax(0,1fr) minmax(380px,460px) }
  .fpanel { display:block; position:sticky; top:calc(var(--top-h,52px) + 4.3rem); align-self:start; max-height:calc(100vh - var(--top-h,52px) - 5.3rem); overflow:auto; background:var(--panel); border-radius:var(--radius); box-shadow:var(--shadow); padding:1rem 1.1rem 1.2rem; margin-top:.9rem }
  .fp-back { display:none }
}
@media (max-width:1100px) {
  body.fp-open .fpanel { display:block; position:fixed; inset:0; z-index:40; background:var(--bg); overflow:auto; padding:0 .9rem 2rem }
  body.fp-open { overflow:hidden } body.fp-open .tabs { display:none }
  .fp-head { position:sticky; top:0; background:var(--bg); padding:.6rem 0; z-index:2 }
}
.fp-head { display:flex; align-items:center; gap:.6rem; padding-bottom:.6rem; margin-bottom:.4rem; border-bottom:1px solid var(--line) }
.fp-title { flex:1; min-width:0; display:flex; gap:.45rem; align-items:baseline } .fp-title b { font-size:1.02rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.fp-acts { display:flex; gap:.35rem; align-items:center }

/* lineage timeline */
.lineage { list-style:none; margin:.7rem 0 0; padding:0 }
.ln-st { display:grid; grid-template-columns:1.7rem minmax(0,1fr); gap:.75rem; position:relative; padding-bottom:1.15rem }
.ln-st::before { content:""; position:absolute; left:.8rem; top:1.75rem; bottom:.15rem; width:2px; background:var(--line); border-radius:2px }
.ln-st:last-child::before { display:none } .ln-st:last-child { padding-bottom:.2rem }
.ln-dot { width:1.7rem; height:1.7rem; border-radius:50%; display:grid; place-items:center; font-size:.78rem; font-weight:800; background:var(--panel-2); border:2px solid var(--line); color:var(--muted) }
.ln-done .ln-dot { background:color-mix(in srgb, var(--status-accepted) 13%, var(--panel)); border-color:color-mix(in srgb, var(--status-accepted) 55%, var(--panel)); color:var(--status-accepted) }
.ln-done::before { background:color-mix(in srgb, var(--status-accepted) 35%, var(--line)) }
.ln-warn .ln-dot { background:color-mix(in srgb, var(--status-attention) 14%, var(--panel)); border-color:color-mix(in srgb, var(--status-attention) 60%, var(--panel)); color:var(--status-attention) }
.ln-fail .ln-dot { background:color-mix(in srgb, var(--status-unsupported) 14%, var(--panel)); border-color:var(--status-unsupported); color:var(--status-unsupported) }
.ln-now .ln-dot { border-color:var(--accent); animation:pulse 1.4s ease-in-out infinite } .ln-wait .ln-dot { border-style:dashed; background:transparent }
.ln-wait .ln-h b { color:var(--muted) }
.ln-c { min-width:0 } .ln-h { display:flex; flex-wrap:wrap; align-items:baseline; gap:.15rem .55rem; min-height:1.7rem; padding-top:.2rem } .ln-h b { font-size:.96rem } .ln-sub { color:var(--muted); font-size:.84rem }
.ln-arr { background:var(--panel-2); border-radius:9px; padding:.5rem .65rem; margin:.35rem 0; font-size:.86rem; display:flex; flex-wrap:wrap; gap:.15rem .6rem; align-items:baseline }
.ln-arr .who { font-weight:600 } .ln-arr .unv { font-size:.72rem; color:var(--status-attention); font-weight:600 } .ln-arr .chn { color:var(--ink) }
.ln-fn { width:100%; font-family:ui-monospace,monospace; font-size:.78rem; color:var(--muted); overflow-wrap:anywhere } .ln-cap { width:100%; font-style:italic }
.ln-meta { font-size:.8rem; color:var(--muted); margin:.25rem 0 .1rem; overflow-wrap:anywhere }
.ln-files { margin:.35rem 0 .55rem } .ln-sum { font-size:.86rem; margin:.4rem 0; color:var(--ink) }
.ln-proj { margin:.3rem 0; display:flex; gap:.4rem; align-items:center; flex-wrap:wrap }
.ln-steps summary, .ln-kids summary { cursor:pointer; font-size:.82rem; color:var(--muted); margin:.3rem 0 } .ln-kids ul { margin:.3rem 0; padding-left:1.1rem; font-size:.86rem }
.ln-bar { height:6px; background:var(--panel-2); border-radius:9px; overflow:hidden; margin:.45rem 0 .6rem } .ln-bar i { display:block; height:100%; background:var(--status-accepted); border-radius:9px }
.s3row { display:grid; grid-template-columns:minmax(4.5rem,auto) minmax(0,1fr) auto; gap:.5rem; align-items:center; padding:.28rem 0; font-size:.82rem; border-bottom:1px dashed var(--line) }
.s3row:last-child { border-bottom:0 } .s3l { color:var(--ink); font-weight:600; white-space:nowrap }
.s3k { font-size:.74rem; background:var(--panel-2); color:var(--muted); padding:.1rem .4rem; border-radius:6px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.s3a { display:flex; gap:.25rem }
p.warn, .warn { color:var(--status-attention) } p.err { color:var(--status-unsupported) }

/* Content: sections grouped by file + section detail */
.cpage { max-width:1560px; margin:0 auto; padding:.5rem 1rem 1rem }
.cbar { display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; padding:.3rem 0 .8rem }
.cfilter-doc { width:100%; font-size:.92rem; display:flex; gap:.5rem; align-items:center }
.csplit { display:grid; grid-template-columns:minmax(360px,43%) minmax(0,1fr); gap:1rem; min-height:360px }
.clist { overflow:auto; padding:2px 4px 1rem 2px; overscroll-behavior:contain }
.cgrp { background:var(--panel); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:.7rem; overflow:hidden }
.cgrp-h { display:flex; align-items:center; gap:.5rem; padding:.65rem .85rem; cursor:pointer; position:sticky; top:0; background:var(--panel); z-index:1 }
.cgrp-h:hover { background:var(--panel-2) } .cgrp-h .tw { color:var(--muted); width:.8rem } .cg-t { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.93rem }
.cg-l { font-size:.78rem; color:var(--muted); text-decoration:none; white-space:nowrap } .cg-l:hover { color:var(--accent) }
.crow { display:grid; grid-template-columns:.65rem minmax(0,1fr) auto; gap:.65rem; width:100%; text-align:left; border:0; border-top:1px solid var(--line); border-radius:0; background:none; padding:.55rem .85rem; font:inherit; color:var(--ink); cursor:pointer }
.crow:hover { background:var(--panel-2) } .crow.on { background:color-mix(in srgb, var(--accent) 8%, var(--panel)); box-shadow:inset 3px 0 0 var(--accent) }
.cr-m { min-width:0 } .cr-h { display:block; font-weight:600; font-size:.9rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.cr-x { display:block; font-size:.8rem; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin-top:.05rem }
.sid { font-style:normal; color:var(--muted); font-size:.72rem; margin-right:.4rem; font-family:ui-monospace,monospace; font-weight:500 }
.cr-r { display:flex; align-items:center; gap:.4rem; align-self:center }
.sdot { width:.6rem; height:.6rem; border-radius:50%; margin-top:.42rem; display:inline-block; flex-shrink:0 }
.sdot.s-warn { background:var(--status-attention) } .sdot.s-ok { background:var(--status-accepted) } .sdot.s-none { background:#cfd4db } .sdot.s-wait { border:1.5px dashed var(--muted); background:transparent }
.cbadge { font-size:.74rem; font-weight:600; border-radius:999px; padding:.1rem .55rem; white-space:nowrap }
.cbadge.warn { color:var(--status-attention); background:color-mix(in srgb, var(--status-attention) 13%, transparent) } .cbadge.ok { color:var(--status-accepted); background:color-mix(in srgb, var(--status-accepted) 12%, transparent) }
.cbadge.none { color:var(--muted) } .cbadge.wait { color:var(--muted); background:var(--panel-2) }
.cdetail { background:var(--panel); border-radius:var(--radius); box-shadow:var(--shadow); overflow:auto; padding:1rem 1.2rem 1.5rem; overscroll-behavior:contain }
.cd-head { display:flex; gap:.5rem; align-items:center; padding-bottom:.7rem; border-bottom:1px solid var(--line) }
.crumbs { display:flex; flex-wrap:wrap; gap:.3rem .45rem; align-items:baseline; font-size:.88rem; min-width:0 } .crumbs a { color:var(--accent); text-decoration:none } .crumbs a:hover { text-decoration:underline } .crumbs .cs { color:var(--muted) } .crumbs b { font-size:1rem }
.cd-meta { display:grid; gap:.5rem; padding:.8rem 0; border-bottom:1px solid var(--line) }
.cdm { display:grid; grid-template-columns:6.5rem minmax(0,1fr); gap:.6rem; align-items:center } .cdm .lbl { font-size:.74rem; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:700 }
.cdm .small { display:flex; flex-wrap:wrap; gap:.3rem .45rem; align-items:center }
.cstat { display:inline-flex; gap:.4rem; align-items:center; font-weight:600 } .cstat .sdot { margin:0 } .cstat.s-warn { color:var(--status-attention) } .cstat.s-ok { color:var(--status-accepted) }
.cd-items h3, .cd-text h3 { font-size:.76rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin:1rem 0 .4rem; display:flex; gap:.4rem; align-items:center }
.cd-items h3 .n { background:var(--panel-2); color:var(--ink); border-radius:999px; padding:0 .45rem; font-size:.74rem }
.cd-text .doc { background:var(--panel-2); border-radius:10px; padding:.9rem 1.1rem; font-size:.95rem; line-height:1.6; max-width:none; margin:0; box-shadow:none; border:0 }
.cd-text mark.ev { cursor:pointer } .cd-text mark.ev.on { outline:2px solid var(--accent) }
@media (max-width:1100px) {
  .csplit { display:block } .clist { overflow:visible; padding:0 } .cdetail:not(.sheet) { display:none }
  .cdetail.sheet { display:block; position:fixed; inset:0; z-index:40; border-radius:0; padding:0 .9rem 2rem }
  .cdetail.sheet .cd-head { position:sticky; top:0; background:var(--panel); padding-top:.6rem; z-index:2 }
}
@media (min-width:1101px) { .cd-head .fp-back { display:none } }
@media (max-width:720px) { .tabs { grid-template-columns:repeat(5,1fr) } .cpage { padding:.4rem .5rem 1rem } .cbar .itools { width:100% } .cdm { grid-template-columns:1fr; gap:.2rem } }
.cdm .small > .pchip { flex-shrink:0 }
.ln-sum { display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; overflow:hidden; cursor:pointer } .ln-sum.full { -webkit-line-clamp:unset; display:block }
@media (max-width:1100px) { .cd-head { flex-wrap:wrap } .cd-head .crumbs { width:100% } }
@media (max-width:720px) { .it.compact .pchip, .it.compact .spill { display:none } }
.viewer { z-index:50 } .drawer { z-index:55 } .popover { z-index:58 } dialog.dlg { z-index:60 }
/* backdrop-filter makes .top the containing block of the fixed bottom tabs: phones get a solid header */
@media (max-width:720px) { .top { backdrop-filter:none; -webkit-backdrop-filter:none; background:var(--panel) } }
* { -webkit-tap-highlight-color:transparent }
/* 2026-10-29: copy-S3 button on file rows; the row grid gets one actions cell */
.irow { grid-template-columns:2rem minmax(0,1fr) auto 3.6rem auto }
.iacts { display:inline-flex; gap:.1rem; align-items:center }
button.icopy { border:0; background:transparent; color:var(--muted); padding:0 .25rem; font-size:1rem; cursor:pointer; border-radius:6px; line-height:1 } button.icopy:hover { color:var(--accent); background:var(--panel-2) }
@media (max-width:720px) { .iacts { display:none } }
/* owner actions under the lineage (2026-10-29: cancel / delete / restore) */
.fp-manage { display:flex; flex-wrap:wrap; align-items:center; gap:.45rem; margin:.4rem 0 1rem; padding:.6rem .7rem; border:1px solid var(--line); border-radius:10px }
.fp-manage p { margin:0; flex-basis:100% }
.fp-manage.gone { border-color:var(--status-unsupported); background:color-mix(in srgb, var(--status-unsupported) 6%, transparent) }
button.danger-text { color:var(--status-unsupported) }
.del-dlg .chk { display:flex; gap:.45rem; align-items:center; margin:.6rem 0 .2rem; font-size:.9rem }
.del-dlg button:disabled { opacity:.45; cursor:not-allowed }
.pill.cancelled { background:color-mix(in srgb, var(--status-attention) 16%, transparent); color:var(--status-attention) }
/* Versions (SPEC-13, 2026-10-29) */
.vs-page { --op-restyled:#b07cc6; --op-split:#d9733b; --op-merged:#d9733b; --op-same:#98a2b3; --op-changed:#c98a00; --op-moved:#2f6fde; --op-added:#2e9e6b; --op-removed:#d64545; --op-section:#667085 }
.vs-h { font-size:1rem; margin:1.4rem 0 .5rem } .vs-work { display:block; margin-top:.2rem }
.vs-search { display:flex; gap:.4rem; margin:.6rem 0 } .vs-search input { flex:1; min-width:0 }
.vs-hits { display:grid; gap:.4rem } .vs-hit { display:grid; gap:.15rem; padding:.5rem .7rem; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); color:var(--ink); text-decoration:none }
.vs-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:.6rem }
.vs-card { display:grid; gap:.35rem; padding:.75rem .85rem; background:var(--panel); border:1px solid var(--line); border-left:3px solid var(--status-attention); border-radius:var(--radius); color:var(--ink); text-decoration:none; box-shadow:var(--shadow) }
.vs-ct { display:flex; justify-content:space-between; gap:.5rem } .vtag { font-size:.78rem; border:1px solid var(--line); border-radius:6px; padding:0 .4rem }
.vs-list { display:grid; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden }
.vs-row { display:flex; justify-content:space-between; gap:1rem; padding:.55rem .8rem; border-bottom:1px solid var(--line); color:var(--ink); text-decoration:none; flex-wrap:wrap }
.vs-row:last-child { border-bottom:0 } .vs-row:hover { background:color-mix(in srgb, var(--accent) 5%, var(--panel)) }
.lyr { display:inline-block; font-size:.72rem; border-radius:5px; padding:0 .35rem; border:1px solid; margin-left:.15rem; vertical-align:1px }
.lyr-code { color:#475467; border-color:#98a2b3 } .lyr-slm { color:#7a5bd6; border-color:#7a5bd6 } .lyr-llm { color:#2f6fde; border-color:#2f6fde } .lyr.low { border-style:dashed }
.vs-stats { display:flex; flex-wrap:wrap; gap:.35rem .8rem; align-items:center; font-size:.85rem }
.vs-st { display:inline-flex; align-items:center; gap:.3rem } .vs-st i { width:.7rem; height:.7rem; border-radius:3px; background:var(--op-same) }
.vs-st.op-changed i { background:var(--op-changed) } .vs-st.op-moved i { background:var(--op-moved) } .vs-st.op-added i { background:var(--op-added) } .vs-st.op-removed i { background:var(--op-removed) }
.vs-tl { display:flex; gap:.35rem; flex-wrap:wrap; margin:.4rem 0 .8rem }
.vs-v { display:grid; text-align:center; padding:.3rem .7rem; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--ink); text-decoration:none; font-weight:600 }
.vs-v small { font-weight:400; color:var(--muted); font-size:.72rem } .vs-v.on { border-color:var(--accent); box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 25%, transparent) }
.vs-v.st-proposed { border-left:3px solid var(--status-attention) } .vs-v.st-declined { opacity:.6; text-decoration:line-through }
.vs-head { display:grid; gap:.6rem; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:.8rem .9rem; box-shadow:var(--shadow) }
.vs-head textarea { width:100%; font:inherit; border:1px solid var(--line); border-radius:8px; padding:.5rem; background:var(--bg); color:var(--ink) }
.vs-notes { white-space:pre-wrap; background:var(--bg); border-radius:8px; padding:.5rem .6rem } .vs-acts { display:flex; gap:.5rem; align-items:center; flex-wrap:wrap }
.vs-flowbox { margin-top:1rem } .vs-legend { display:flex; gap:.9rem; flex-wrap:wrap; margin-bottom:.5rem }
.vs-cols { position:relative; display:grid; grid-template-columns:minmax(0,1fr) clamp(48px,12vw,150px) minmax(0,1fr); align-items:start }
.vs-col { display:grid; gap:4px; position:relative; z-index:1; grid-row:1 } .vs-col.c-old { grid-column:1 } .vs-col.c-new { grid-column:3 } .vs-col h4 { margin:0 0 .3rem; font-size:.8rem; color:var(--muted); font-weight:600 }
.vs-svg { position:absolute; inset:0; pointer-events:none; z-index:0; overflow:visible }
.vs-seg { display:flex; flex-direction:column; justify-content:center; gap:3px; font-size:.78rem; line-height:1.3; padding:.25rem .45rem; border-radius:6px; background:var(--panel); border:1px solid var(--line); border-left:4px solid var(--op-same); cursor:pointer; min-height:22px; overflow:hidden }
.vs-seg .vs-tx { overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:break-word }
.vs-seg.grp { background:color-mix(in srgb, var(--op-same) 10%, var(--panel)) }
.vs-seg.op-changed { border-left-color:var(--op-changed) } .vs-seg.op-moved { border-left-color:var(--op-moved) } .vs-seg.op-added { border-left-color:var(--op-added); background:color-mix(in srgb, var(--op-added) 8%, var(--panel)) }
.vs-seg.op-removed { border-left-color:var(--op-removed); background:color-mix(in srgb, var(--op-removed) 7%, var(--panel)) } .vs-seg.op-section { border-left-color:var(--op-section) }
.vs-seg:hover, .vs-seg.sel { border-color:var(--accent) }
.vs-mix { display:flex; height:5px; border-radius:3px; overflow:hidden; gap:1px } .vs-mix i { background:var(--op-same) }
.vs-mix i.op-changed { background:var(--op-changed) } .vs-mix i.op-moved { background:var(--op-moved) } .vs-mix i.op-added { background:var(--op-added) } .vs-mix i.op-removed { background:var(--op-removed) }
.vs-svg path { fill:none; stroke:var(--op-same); opacity:.45 } .vs-svg path.op-changed { stroke:var(--op-changed); opacity:.8 } .vs-svg path.op-moved { stroke:var(--op-moved); opacity:.75; stroke-dasharray:5 3 }
.vs-svg path.hot { opacity:1; stroke-width:4 }
.vs-det { margin-top:.8rem; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:.7rem .8rem }
.vs-wd { white-space:pre-wrap; margin:.4rem 0 0 } .vs-wd del { background:color-mix(in srgb, var(--op-removed) 18%, transparent); color:inherit } .vs-wd ins { background:color-mix(in srgb, var(--op-added) 20%, transparent); text-decoration:none }
@media (max-width:720px) { .vs-seg { font-size:.72rem; padding:.2rem .3rem } .vs-cols { grid-template-columns:minmax(0,1fr) 36px minmax(0,1fr) } }
.vs-st.op-restyled i, .vs-mix i.op-restyled { background:var(--op-restyled) } .vs-st.op-split i, .vs-st.op-merged i, .vs-mix i.op-split, .vs-mix i.op-merged { background:var(--op-split) }
.vs-seg.op-restyled { border-left-color:var(--op-restyled) } .vs-seg.op-split, .vs-seg.op-merged { border-left-color:var(--op-split) }
.vs-svg path.op-restyled { stroke:var(--op-restyled); opacity:.8 } .vs-svg path.op-split, .vs-svg path.op-merged { stroke:var(--op-split); opacity:.85 }
.fp-manage.locked { border-color:var(--status-unrouted); background:color-mix(in srgb, var(--status-unrouted) 7%, transparent) }
.pill.locked { background:color-mix(in srgb, var(--status-unrouted) 14%, transparent); color:var(--status-unrouted); border-color:var(--status-unrouted) }
.iacts .idel { border:0; background:none; cursor:pointer; opacity:.55; padding:.15rem .3rem; font-size:.9rem } .iacts .idel:hover { opacity:1 }
/* deleted / erased / locked file: a banner first, stages greyed (2026-10-30) */
.ln-banner { display:grid; gap:.15rem; margin:.7rem 0 .2rem; padding:.6rem .75rem; border-radius:10px; font-size:.86rem; border:1px solid }
.ln-banner span { color:var(--muted); font-size:.82rem }
.ln-banner.b-deleted { border-color:color-mix(in srgb, var(--status-unsupported) 35%, transparent); background:color-mix(in srgb, var(--status-unsupported) 6%, var(--panel)); color:var(--status-unsupported) }
.ln-banner.b-locked { border-color:color-mix(in srgb, var(--status-unrouted) 35%, transparent); background:color-mix(in srgb, var(--status-unrouted) 6%, var(--panel)); color:var(--status-unrouted) }
.lineage.is-off .ln-st { opacity:.55; filter:grayscale(1) }
.lineage.is-locked .ln-st[data-stage="read"], .lineage.is-locked .ln-st[data-stage="processed"], .lineage.is-locked .ln-st[data-stage="reviewed"] { opacity:.55; filter:grayscale(1) }
/* Trash (2026-10-30) */
.del-opts { display:flex; flex-wrap:wrap; align-items:center; gap:.3rem .8rem; font-size:.84rem; padding:.45rem .6rem; border:1px solid var(--line); border-radius:8px; background:var(--panel-2) }
.del-opts > span { color:var(--muted); font-weight:600; font-size:.78rem }
.del-opts .chk { display:inline-flex; gap:.35rem; align-items:center; margin:0 } .del-opts input:disabled + * , .del-opts input:disabled { opacity:.6 }
.trash-acts { display:inline-flex; gap:.3rem } .isub .trashinfo { color:var(--status-unsupported) }
/* Trash: erase for good and the orphan banner (2026-10-30) */
.orphans { display:flex; align-items:center; justify-content:space-between; gap:.8rem; flex-wrap:wrap; margin:.4rem 0 .6rem; padding:.55rem .8rem; border:1px solid var(--line); border-left:3px solid var(--status-attention, #b7791f); border-radius:8px; background:var(--panel); font-size:13px }
.orphans:has(.muted) { border-left-color:var(--line) }
.trash-acts .er-btn { color:var(--status-rejected, #c0392b) }
.trash-acts .er-btn:hover { border-color:var(--status-rejected, #c0392b) }
.erase-list { margin:.2rem 0 .6rem 1.1rem; padding:0 } .erase-list li { margin:.25rem 0 }
/* evidence highlights coloured by the derived item's type (2026-10-30); .t-<type> sets --tc */
mark.ev[data-type] { background:color-mix(in srgb, var(--tc) 16%, transparent); box-shadow:0 2px 0 color-mix(in srgb, var(--tc) 75%, transparent); transition:background .15s, opacity .15s }
mark.ev[data-type]:hover { background:color-mix(in srgb, var(--tc) 26%, transparent) }
mark.ev[data-type].on { background:color-mix(in srgb, var(--tc) 34%, transparent); outline:1.5px solid var(--tc); outline-offset:1px }
mark.ev.mk-dim { background:transparent; box-shadow:0 1px 0 color-mix(in srgb, var(--tc) 30%, transparent); opacity:.75 }
.mk-legend { display:inline-flex; flex-wrap:wrap; gap:.3rem; margin-left:.5rem; vertical-align:middle }
.mk-key { min-height:22px !important; padding:0 .5rem !important; font-size:11.5px !important; border-radius:999px !important; border:1px solid color-mix(in srgb, var(--tc) 45%, transparent) !important;
  background:color-mix(in srgb, var(--tc) 12%, var(--panel)) !important; color:var(--ink) !important; box-shadow:none !important }
.mk-key::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--tc); margin-right:.35rem; display:inline-block }
.mk-key.on { background:color-mix(in srgb, var(--tc) 30%, var(--panel)) !important; border-color:var(--tc) !important }
/* ---------- visual item card (2026-10-30); .t-<type> sets --tc ---------- */
.it.itv { border-left:4px solid var(--tc, var(--line)) !important; padding-left:.9rem }
.it.compact[class*=" t-"] { border-left:3px solid var(--tc) !important }
.itv-head { display:grid; grid-template-columns:auto 1fr auto; gap:.7rem; align-items:start; margin-bottom:.45rem }
.itv-icon { width:36px; height:36px; border-radius:10px; display:grid; place-items:center; background:color-mix(in srgb, var(--tc) 14%, var(--panel)); color:var(--tc) }
.itv-icon svg.ic { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round }
.itv-ttl { min-width:0 } .itv-ttl .it-title { display:block; font-size:15px; line-height:1.3; margin-top:.1rem }
.itv-kicker { display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; font-size:11px; letter-spacing:.04em; text-transform:uppercase; color:var(--muted) }
.itv-kicker > b { color:var(--tc); font-weight:700 }
.itv-kicker .st { text-transform:none; letter-spacing:0; font-size:11.5px; padding:0 .45rem; border-radius:999px; border:1px solid var(--line); color:var(--ink) }
.itv-kicker .st-decided { border-color:color-mix(in srgb, var(--status-accepted, #2f855a) 50%, transparent); color:var(--status-accepted, #2f855a) }
.itv-kicker .st-proposed { border-style:dashed } .itv-kicker .st-open { border-color:color-mix(in srgb, #8d58b7 50%, transparent); color:#8d58b7 }
.itv-doc { display:inline-flex; align-items:center; gap:.3rem; font-size:12px; color:var(--muted); text-decoration:none; margin-top:.15rem } .itv-doc svg.ic { width:13px; height:13px; fill:none; stroke:currentColor; stroke-width:1.8 }
.itv-gauge { --c:var(--conf-high); width:44px; height:44px; border-radius:50%; display:grid; place-items:center; background:conic-gradient(var(--c) calc(var(--p) * 1%), var(--line) 0) }
.itv-gauge.c-mid { --c:var(--conf-mid) } .itv-gauge.c-low { --c:var(--conf-low) }
.itv-gauge b { width:34px; height:34px; border-radius:50%; background:var(--panel); display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums }
.itv-gauge b::after { content:"%"; font-size:8px; font-weight:600; color:var(--muted); margin-left:1px }
.itv-facts { display:flex; flex-wrap:wrap; gap:.4rem; margin:.45rem 0 }
.fact { display:inline-flex; align-items:center; gap:.45rem; padding:.3rem .55rem .3rem .35rem; border:1px solid var(--line); border-radius:10px; background:var(--panel); font-size:13px; line-height:1.2; max-width:100% }
.fact .fl { display:flex; flex-direction:column; min-width:0 } .fact .fl small { font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted) }
.fact.f-text { padding-left:.6rem }
.fact .av { width:26px; height:26px; border-radius:50%; display:grid; place-items:center; font-size:11px; font-weight:700; color:#fff; background:var(--tc, var(--accent)); flex:none }
.fact .cal { width:32px; border-radius:6px; overflow:hidden; text-align:center; border:1px solid color-mix(in srgb, var(--tc) 40%, var(--line)); flex:none; background:var(--panel) }
.fact .cal i { display:block; font-style:normal; font-size:9px; font-weight:700; text-transform:uppercase; color:#fff; background:var(--tc); line-height:1.45 }
.fact .cal b { display:block; font-size:14px; line-height:1.35 }
.fact.f-date.soon { border-color:var(--conf-mid) } .fact.f-date.past { opacity:.75 }
.fact.f-unres { border-style:dashed; border-color:var(--conf-low); cursor:pointer } .fact .q { width:26px; height:26px; border-radius:50%; display:grid; place-items:center; font-weight:700; color:var(--conf-low); border:1.5px dashed var(--conf-low) }
.dflt .fact { border-style:dotted } 
.itv-route { display:flex; flex-wrap:wrap; align-items:center; gap:.3rem; margin:.35rem 0 .5rem; font-size:12px }
.itv-route .step { padding:.15rem .55rem; border-radius:999px; background:color-mix(in srgb, var(--tc) 10%, var(--panel)); border:1px solid color-mix(in srgb, var(--tc) 30%, var(--line)); color:var(--ink) }
.itv-route .arr svg.ic { width:13px; height:13px; fill:none; stroke:var(--muted); stroke-width:2 }
.itv .it-quote { border-left:3px solid var(--tc) !important; background:color-mix(in srgb, var(--tc) 6%, var(--panel)) }
/* Review: source documents picked for bulk actions (2026-10-30) */
.qpick { display:inline-flex; align-items:center; padding:0 .15rem; cursor:pointer } .qpick input { width:16px; height:16px; margin:0; accent-color:var(--accent); cursor:pointer }
.qgrp.picked { background:color-mix(in srgb, var(--accent) 8%, var(--panel)) }
.qbulk { position:sticky; top:0; z-index:3; display:flex; align-items:center; flex-wrap:wrap; gap:.45rem; padding:.45rem .6rem; background:var(--panel); border-bottom:1px solid var(--line); font-size:13px }
.qbulk.on { background:color-mix(in srgb, var(--accent) 7%, var(--panel)); border-bottom-color:color-mix(in srgb, var(--accent) 35%, var(--line)) }
.qbulk .qb-n { margin-right:.2rem }
.fp-versions { display:flex; align-items:center; flex-wrap:wrap; gap:.5rem; margin:.6rem 0; padding:.5rem .7rem; border:1px solid var(--line); border-radius:8px; background:var(--panel); font-size:13px }
/* details inside the side panel (2026-10-30) */
.fp-info { margin:.8rem 0 1rem; border:1px solid var(--line); border-radius:8px; background:var(--panel) }
.fp-info > summary { cursor:pointer; padding:.5rem .75rem; font-weight:600; font-size:13px; list-style:none } .fp-info > summary::-webkit-details-marker { display:none }
.fp-info > summary::before { content:"▸"; display:inline-block; width:1em; color:var(--muted); transition:transform .15s } .fp-info[open] > summary::before { transform:rotate(90deg) }
.fp-info-body { padding:0 .75rem .7rem; font-size:12.5px; overflow-wrap:anywhere } .fp-info-body dl { display:grid; grid-template-columns:auto 1fr; gap:.2rem .7rem; margin:.3rem 0 } .fp-info-body dt { color:var(--muted) }
.fp-info-body h4 { margin:.7rem 0 .3rem; font-size:12.5px } .fp-info-body ul { margin:.2rem 0; padding-left:1.1rem }
.vs-blk { display:grid; grid-template-columns:auto 1fr; gap:.1rem .5rem; padding:.35rem 0; border-top:1px solid var(--line-2, var(--line)) } .vs-blk:first-of-type { border-top:0 }
.vs-blk .vs-bn { grid-row:span 2; font-size:11px; color:var(--muted); min-width:1.2rem; text-align:right; padding-top:.15rem } .vs-blk .vs-wd { margin:0 } .vs-blk small { grid-column:2 }
/* diagram: a clicked bar expands in place (2026-10-30) */
.vs-exp { margin:-2px 0 .45rem; padding:.45rem .6rem .5rem; border:1px solid var(--line); border-top:0; border-radius:0 0 8px 8px; background:var(--panel); font-size:12.5px; max-height:60vh; overflow:auto }
.vs-exph { margin-bottom:.3rem; color:var(--muted) } .vs-exph b { color:var(--ink) }
.vs-blk.op-added { box-shadow:inset 3px 0 0 #3f9474 } .vs-blk.op-removed { box-shadow:inset 3px 0 0 #c9605c } .vs-blk.op-changed, .vs-blk.op-restyled { box-shadow:inset 3px 0 0 #bf8a2f }
.vs-blk.op-moved { box-shadow:inset 3px 0 0 #5576c9 } .vs-blk { padding-left:.5rem }
.vs-seg.sel { border-bottom-left-radius:0; border-bottom-right-radius:0 }
/* version choices (2026-10-30) */
.vs-choicebar { display:flex; align-items:center; flex-wrap:wrap; gap:.5rem; margin:.5rem 0; padding:.45rem .65rem; border:1px solid var(--line); border-radius:8px; background:var(--panel-2, var(--panel)); font-size:13px }
.vs-blk > div { min-width:0 } .vs-acts { display:flex; align-items:center; gap:.4rem; margin-top:.2rem }
.vs-pick { display:inline-flex; align-items:center; gap:.3rem; font-size:11.5px; padding:.05rem .45rem; border-radius:999px; border:1px solid color-mix(in srgb, #3f9474 45%, var(--line)); color:#2f7a5a; cursor:pointer }
.vs-pick.off { border-color:var(--line); color:var(--muted); background:repeating-linear-gradient(135deg, transparent 0 5px, color-mix(in srgb, var(--muted) 10%, transparent) 5px 10px) }
.vs-pick input { margin:0; accent-color:#3f9474 }
.vs-blk.is-left .vs-wd { opacity:.5; text-decoration:line-through; text-decoration-color:color-mix(in srgb, var(--muted) 60%, transparent) }
.vs-unw, .vs-left-tag { font-size:10.5px; padding:0 .4rem; border-radius:999px; background:color-mix(in srgb, #8a6d55 15%, var(--panel)); color:#8a6d55; border:1px dashed #8a6d55 }
.vs-allbtns { margin-left:.5rem; display:inline-flex; gap:.3rem } .vs-allbtns button { min-height:22px !important; font-size:11px !important; padding:0 .45rem !important }
.vs-seg.vs-all-left { background-image:repeating-linear-gradient(135deg, transparent 0 6px, color-mix(in srgb, var(--muted) 14%, transparent) 6px 12px) !important; opacity:.75 }
.vs-lc { display:inline-block; width:max-content; align-self:flex-start; margin-left:.4rem; font-size:10.5px; padding:0 .35rem; border-radius:999px; border:1px dashed var(--muted); color:var(--muted) }
.vs-hist { margin:.5rem 0; font-size:13px } .vs-hist ul { margin:.3rem 0; padding-left:1.1rem; max-height:16rem; overflow:auto } .vs-hist li { margin:.2rem 0 }
/* diagram narrowed to one change type (2026-10-30) */
.vs-filter { display:flex; flex-wrap:wrap; gap:.35rem; margin:.2rem 0 .6rem }
.vs-filter button, .vs-stats button.vs-st { display:inline-flex; align-items:center; gap:.35rem; min-height:26px !important; padding:0 .6rem !important; border-radius:999px !important; border:1px solid var(--line) !important; background:var(--panel) !important; font-size:12px !important; color:var(--ink) !important; box-shadow:none !important; cursor:pointer }
.vs-filter button.on, .vs-stats button.vs-st.on { border-color:var(--ink) !important; background:color-mix(in srgb, var(--ink) 8%, var(--panel)) !important; font-weight:600 }
.vs-filter .vs-showall { color:var(--accent) !important }
.vs-seg[hidden], .vs-exp[hidden], .vs-blk[hidden] { display:none !important }
/* sender / channel filters as icons (2026-10-30) */
.picker { position:relative; display:inline-flex }
.pk-btn { position:relative; width:34px !important; min-height:32px; display:inline-flex; align-items:center; justify-content:center; gap:2px; color:var(--muted) }
.pk-btn svg.ic { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round }
.pk-btn.on { width:auto !important; padding:0 .4rem !important; color:var(--accent); background:color-mix(in srgb, var(--accent) 10%, transparent) !important; border-color:color-mix(in srgb, var(--accent) 35%, transparent) !important }
.pk-av { display:inline-grid; place-items:center; width:20px; height:20px; border-radius:50%; color:#fff; font-size:9.5px; font-weight:700; flex:none }
.pk-gl { display:inline-grid; place-items:center; min-width:18px; color:var(--muted) } .pk-gl svg.ic { width:15px; height:15px }
.pk-menu { position:absolute; right:0; top:calc(100% + 4px); z-index:40; min-width:220px; max-height:60vh; overflow:auto; padding:.3rem; background:var(--panel); border:1px solid var(--line); border-radius:10px; box-shadow:0 12px 32px rgba(16,24,40,.14) }
.pk-h { font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); padding:.3rem .5rem .2rem }
.pk-menu button { display:flex; align-items:center; gap:.5rem; width:100%; min-height:32px; padding:0 .5rem !important; border:0 !important; background:transparent !important; box-shadow:none !important; border-radius:7px; font-size:13px; color:var(--ink); text-align:left; justify-content:flex-start }
.pk-menu button:hover { background:var(--bg) !important } .pk-mk { width:1em; color:var(--accent); font-weight:700 } .pk-n { margin-left:auto; color:var(--muted); font-size:12px; font-variant-numeric:tabular-nums }
.pk-menu { min-width:260px } .pk-menu button { white-space:nowrap } .pk-menu button > :not(.pk-n):not(.pk-mk):not(.pk-av):not(.pk-gl) { overflow:hidden; text-overflow:ellipsis }
.tgl { display:inline-flex; align-items:center; gap:1px; padding:1px; border:1px solid var(--line); border-radius:9px; background:var(--panel) }
.tgl .tg { width:30px !important; min-height:28px !important; display:inline-grid; place-items:center; color:var(--muted); border-radius:7px !important; border:0 !important; background:transparent !important; box-shadow:none !important }
.tgl .tg svg.ic { width:16px; height:16px } .tgl .tg:hover { color:var(--ink); background:var(--bg) !important }
.tgl .tg.on { color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, transparent) !important }
/* delete / restore / erase: three different actions, three different looks (2026-10-30) */
.act-delete, .act-restore, .act-erase { display:inline-flex; align-items:center; justify-content:center; gap:.35rem; border-radius:8px !important; cursor:pointer; box-shadow:none !important }
.act-delete svg.ic, .act-restore svg.ic, .act-erase svg.ic { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round }
.act-delete { color:var(--muted) !important; background:transparent !important; border:1px solid transparent !important }
.act-delete:hover { color:#c0392b !important; border-color:color-mix(in srgb, #c0392b 40%, transparent) !important; background:color-mix(in srgb, #c0392b 6%, transparent) !important }
.act-restore { color:#2f7a5a !important; background:color-mix(in srgb, #2f855a 9%, var(--panel)) !important; border:1px solid color-mix(in srgb, #2f855a 40%, transparent) !important }
.act-restore:hover { background:color-mix(in srgb, #2f855a 16%, var(--panel)) !important }
.act-erase { color:#fff !important; background:#c0392b !important; border:1px solid #c0392b !important }
.act-erase:hover { background:#a93226 !important; border-color:#a93226 !important }
.trash-acts .act-restore, .trash-acts .act-erase { width:30px !important; min-height:28px !important; padding:0 !important; margin-left:.25rem }
.fp-acts .act-delete, .fp-acts .act-erase { width:32px !important; min-height:30px !important; padding:0 !important }
.tr-acts { display:flex; gap:.5rem; margin-top:.5rem } .lab { min-height:32px !important; padding:0 .75rem !important; font-size:13px !important; font-weight:600 }
.act-view { display:inline-flex; align-items:center; justify-content:center; width:32px !important; min-height:30px !important; padding:0 !important; color:var(--ink-2, var(--ink)) !important; background:transparent !important; border:1px solid var(--line) !important; border-radius:8px !important; box-shadow:none !important }
.act-view:hover { border-color:color-mix(in srgb, var(--ink) 25%, var(--line)) !important; background:var(--bg) !important }
.act-view svg.ic { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round }
.fp-acts .act-restore { width:32px !important; min-height:30px !important; padding:0 !important }
.fp-acts { display:inline-flex; align-items:center; gap:.3rem }
/* one icon standard for row and panel actions (2026-10-30, owner: "icon sizes consistent with previous sizes"; "erase look
   exactly like trash but red"): the same borderless icon buttons as copy/details; meaning by colour only */
.act-view, .act-delete, .act-restore, .act-erase { width:30px !important; height:30px !important; min-height:0 !important; padding:0 !important; border:0 !important; background:transparent !important; box-shadow:none !important; border-radius:6px !important }
.iacts .act-view, .iacts .act-delete, .trash-acts .act-restore, .trash-acts .act-erase { width:26px !important; height:26px !important; margin:0 !important }
.act-view svg.ic, .act-delete svg.ic, .act-restore svg.ic, .act-erase svg.ic { width:16px !important; height:16px !important; stroke-width:1.75 !important }
.act-view { color:var(--muted) !important } .act-view:hover { color:var(--ink) !important; background:var(--line-2, var(--bg)) !important }
.act-delete { color:var(--muted) !important } .act-delete:hover { color:#c0392b !important; background:var(--line-2, var(--bg)) !important }
.act-restore { color:#2f855a !important } .act-restore:hover { color:#276749 !important; background:color-mix(in srgb, #2f855a 10%, transparent) !important }
.act-erase { color:#c0392b !important } .act-erase:hover { color:#a93226 !important; background:color-mix(in srgb, #c0392b 10%, transparent) !important }
/* labelled versions in the panel's Trash block keep the same look, with text */
.tr-acts .lab { width:auto !important; height:30px !important; padding:0 .55rem !important; gap:.35rem; font-size:13px !important; font-weight:600 }
.iacts .idel.act-delete { opacity:1 }
/* compact delete dialog */
.del-dlg.compact { gap:.45rem; width:min(420px, 92vw) } .del-dlg.compact h3 { margin:0; font-size:15px } .del-dlg.compact p { margin:0 }
.del-dlg.compact .del-reason { height:32px; width:100% } .del-dlg.compact .del-opts { display:flex; flex-wrap:wrap; align-items:center; gap:.3rem .8rem; padding:.35rem .5rem; font-size:12.5px }
.del-dlg.compact .del-opts > span { color:var(--muted) } .del-dlg.compact .dlg-actions { margin-top:.2rem }
.fp-acts .act-view, .fp-acts .act-delete, .fp-acts .act-restore, .fp-acts .act-erase { width:30px !important; height:30px !important; min-height:0 !important }
.iacts button, .trash-acts .act-restore, .trash-acts .act-erase { width:26px !important; height:26px !important; min-height:0 !important }
/* erase dialog: stored artefacts as tiles (2026-10-30) */
.er-dlg { width:min(640px, 94vw) } .er-dlg h3 { display:flex; align-items:center; gap:.5rem } .er-head { color:#c0392b; display:inline-flex } .er-head svg.ic { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.9 }
.er-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(185px, 1fr)); gap:.45rem; margin:.4rem 0 }
.er-tile { position:relative; display:grid; grid-template-columns:auto 1fr auto; gap:.5rem; align-items:start; padding:.5rem .55rem; border:1px solid color-mix(in srgb, #c0392b 22%, var(--line)); border-radius:9px; background:color-mix(in srgb, #c0392b 3%, var(--panel)) }
.er-ic { width:28px; height:28px; border-radius:7px; display:grid; place-items:center; color:#c0392b; background:color-mix(in srgb, #c0392b 10%, var(--panel)) }
.er-ic svg.ic, .er-open svg.ic { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round }
.er-tx { min-width:0; display:grid; gap:.1rem } .er-tx b { font-size:12.5px; overflow-wrap:anywhere } .er-tx small { color:var(--muted); font-size:11.5px; overflow-wrap:anywhere }
.er-types { display:flex; flex-wrap:wrap; gap:.2rem; margin-top:.15rem } .er-types .tchip { font-size:10.5px; padding:0 .35rem }
.er-open { color:var(--muted); display:inline-grid; place-items:center; width:24px; height:24px; border-radius:6px } .er-open:hover { color:var(--accent); background:var(--bg) }
.er-confirm { display:grid; grid-template-columns:1fr 10rem; gap:.4rem } .er-confirm input { height:32px }
.er-dlg .er-word { font-weight:700; letter-spacing:.1em }
.isub .times { font-size:11px; padding:0 .4rem; border-radius:999px; border:1px solid var(--line); color:var(--muted) }
.act-stop { width:30px !important; height:30px !important; min-height:0 !important; padding:0 !important; border:0 !important; background:transparent !important; box-shadow:none !important; border-radius:6px !important; color:#b7791f !important }
.act-stop:hover { background:color-mix(in srgb, #b7791f 10%, transparent) !important } .act-stop svg.ic { width:15px !important; height:15px !important; fill:currentColor !important; stroke:currentColor }
.act-lock { width:30px !important; height:30px !important; min-height:0 !important; padding:0 !important; border:0 !important; background:transparent !important; box-shadow:none !important; border-radius:6px !important; color:var(--muted) !important }
.iacts .act-lock { width:26px !important; height:26px !important }
.act-lock:hover { color:var(--ink) !important; background:var(--line-2, var(--bg)) !important } .act-lock.on { color:var(--accent) !important }
.act-lock svg.ic { width:16px !important; height:16px !important; fill:none; stroke:currentColor; stroke-width:1.75 }
.irow .iacts .act-lock.on { opacity:1 }
/* Files: bulk selection (2026-10-30) */
.irow { grid-template-columns:22px auto 1fr auto auto auto }
.isel { display:inline-flex; align-items:center; justify-content:center; width:22px } .isel input { width:15px; height:15px; margin:0; accent-color:var(--accent); cursor:pointer; opacity:.35 }
.irow:hover .isel input, .isel input:checked, .bulkbar .isel input { opacity:1 }
.bulkbar { position:sticky; top:0; z-index:4; display:flex; align-items:center; flex-wrap:wrap; gap:.45rem; padding:.35rem .6rem; margin:.2rem 0 .4rem; border:1px solid var(--line); border-radius:9px; background:var(--panel); font-size:13px }
.bulkbar.on { border-color:color-mix(in srgb, var(--accent) 40%, var(--line)); background:color-mix(in srgb, var(--accent) 5%, var(--panel)) }
.bulkbar button { display:inline-flex; align-items:center; gap:.3rem } .bulkbar svg.ic { width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.8 }
.bulkbar .bk-del { color:#c0392b } .bulkbar .bk-res { color:#2f855a } .bulkbar .bk-er { color:#fff !important; background:#c0392b !important; border-color:#c0392b !important }
/* panel top row: icons never shrink or overlap; the title gives way (2026-10-30) */
.fp-acts { flex:none !important; flex-wrap:nowrap !important } .fp-acts > button, .fp-acts > a { flex:none !important }
.fp-head { display:flex; align-items:center; gap:.5rem; min-width:0 } .fp-head > :not(.fp-acts) { min-width:0; overflow:hidden; text-overflow:ellipsis }
@media (max-width:720px) { .isel, .bulkbar { display:none !important } }
/* project indicator on file rows (2026-10-30, owner: "add a visual indicator which project the file belongs to") */
.pjchip { display:inline-flex; align-items:center; gap:.3rem; margin-left:.5rem; padding:0 .45rem; border-radius:999px; font-size:11.5px; font-weight:600; line-height:1.6; white-space:nowrap; flex:none;
  color:color-mix(in srgb, var(--pc) 80%, var(--ink)); background:color-mix(in srgb, var(--pc) 12%, var(--panel)); border:1px solid color-mix(in srgb, var(--pc) 35%, transparent) }
.pjchip i { width:7px; height:7px; border-radius:50%; background:var(--pc) } .pjchip.prop { border-style:dashed; background:transparent }
.irow.has-pj { box-shadow:inset 3px 0 0 var(--pc) }
.ititle { display:flex; align-items:center; min-width:0 } .ititle b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0 }
@media (max-width:720px) { .pjchip { font-size:0; gap:0; padding:3px; margin-left:.35rem } .pjchip i { width:9px; height:9px } }
/* item count in a circle (2026-10-30) */
.icount { display:inline-grid; place-items:center; min-width:28px; height:28px; padding:0 .4rem; border-radius:999px; font-size:12.5px; font-weight:700; font-variant-numeric:tabular-nums; text-decoration:none;
  color:var(--muted); background:var(--panel-2, var(--bg)); border:1px solid var(--line) }
.icount.open { color:#fff; background:var(--accent); border-color:var(--accent) }
.icount:hover { filter:brightness(1.08); box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent) }
/* impact view (2026-10-30) */
.rv-impact { margin-left:auto; white-space:nowrap } .rv-title { display:flex; align-items:center; gap:.6rem }
.imp-page { max-width:1320px } .imp-route { display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:.6rem; margin:.6rem 0 1rem }
.imp-rcard { display:grid; gap:.2rem; padding:.7rem .8rem; border:1px solid var(--line); border-radius:10px; background:var(--panel) } .imp-rcard b { font-size:15px }
.imp-k { font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted) } .imp-rcard small { color:var(--muted) }
.imp-bar { display:block; height:6px; border-radius:999px; background:var(--line-2, var(--line)); overflow:hidden } .imp-bar i { display:block; height:100%; background:var(--accent); border-radius:999px }
.imp-bar.sm { width:70px; display:inline-block; vertical-align:middle }
.imp-alts { list-style:none; margin:0; padding:0; display:grid; gap:.2rem; font-size:12.5px } .imp-alts li { display:grid; grid-template-columns:1fr auto auto; gap:.5rem; align-items:center }
.imp-flow { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:.8rem }
.imp-cols { position:relative; display:grid; grid-template-columns:minmax(170px,1fr) 90px minmax(210px,1.2fr) 90px minmax(230px,1.3fr); align-items:start }
.imp-col { display:grid; gap:.45rem; position:relative; z-index:1 } .imp-col h4 { margin:0 0 .2rem; font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:600 }
.imp-svg { position:absolute; inset:0; pointer-events:none; overflow:visible; z-index:0 }
.imp-ed { transition:stroke-opacity .15s } .imp-ed.hot { stroke-opacity:.95 !important } .imp-lab { font-size:10.5px; font-weight:700; fill:var(--ink); paint-order:stroke; stroke:var(--panel); stroke-width:3px }
.imp-node { position:relative; display:grid; gap:.25rem; padding:.5rem .6rem; border:1px solid var(--line); border-radius:9px; background:var(--panel); cursor:pointer }
.imp-node:hover, .imp-node.sel { border-color:color-mix(in srgb, var(--accent) 45%, var(--line)); box-shadow:0 2px 8px rgba(16,24,40,.06) }
.imp-node.g { border-left:3px solid var(--tc) } .imp-node .imp-n { position:absolute; right:.6rem; top:.45rem; font-size:15px; font-variant-numeric:tabular-nums }
.imp-node.p { border-left:4px solid var(--pc) } .imp-ph { display:flex; align-items:center; gap:.4rem } .imp-ph i { width:9px; height:9px; border-radius:50%; background:var(--pc) }
.imp-node.p small { color:var(--muted); font-size:11.5px } .imp-tag { font-size:10px; padding:0 .35rem; border-radius:999px; background:var(--accent); color:#fff }
.imp-linked { display:inline-flex; align-items:center; gap:.25rem } .imp-linked svg.ic, .imp-ri svg.ic, .imp-rec > svg.ic { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.8 }
.imp-agrp { display:grid; gap:.35rem; padding-left:.5rem; border-left:3px solid color-mix(in srgb, var(--pc) 60%, transparent); margin-bottom:.4rem } .imp-ah { font-size:11.5px; font-weight:700; color:color-mix(in srgb, var(--pc) 80%, var(--ink)) }
.imp-node.a b:first-child { font-size:13px; padding-right:2rem } .imp-types, .imp-imp { display:flex; flex-wrap:wrap; gap:.2rem } .imp-types .tchip { font-size:10.5px; padding:0 .35rem }
.imp-b { font-size:10.5px; padding:0 .4rem; border-radius:999px; color:var(--ic); border:1px solid color-mix(in srgb, var(--ic) 45%, transparent); background:color-mix(in srgb, var(--ic) 8%, var(--panel)); white-space:nowrap }
.imp-items { margin-top:.8rem; border-top:1px solid var(--line); padding-top:.6rem; display:grid; gap:.25rem } .imp-ih { font-size:13px; margin-bottom:.2rem }
.imp-it { display:grid; grid-template-columns:auto 1fr auto; gap:.15rem .6rem; align-items:center; padding:.35rem .45rem; border-radius:8px; text-decoration:none; color:var(--ink) } .imp-it:hover { background:var(--bg) }
.imp-it small { grid-column:2 / -1 } .imp-tt { overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.imp-recs { margin-top:1rem } .imp-rec { display:grid; grid-template-columns:auto 1fr auto; gap:.6rem; align-items:center; padding:.6rem .75rem; margin:.35rem 0; border:1px solid var(--line); border-radius:10px; background:var(--panel); text-decoration:none; color:var(--ink) }
.imp-rec:hover { border-color:var(--accent) } .imp-ri { width:28px; height:28px; border-radius:8px; display:grid; place-items:center; background:var(--bg); color:var(--accent) }
.imp-rec.lv-check .imp-ri { color:#b7791f } .imp-rec.lv-assign .imp-ri { color:#6b5bb5 } .imp-rec.lv-file .imp-ri { color:#2f855a }
@media (max-width:900px) { .imp-cols { grid-template-columns:1fr; gap:.8rem } .imp-svg { display:none } }
.imp-cols { grid-template-columns:minmax(180px,1fr) minmax(220px,1.1fr) minmax(260px,1.3fr) !important; column-gap:110px }
.glink { display:flex; flex-wrap:wrap; align-items:center; gap:.45rem; margin:.4rem 0 .8rem } .glink-url { width:min(360px, 100%); font-size:12.5px }
/* where a settled document goes next (2026-10-30) */
.rv-next { display:flex; flex-wrap:wrap; align-items:center; gap:.35rem; width:100%; margin-top:.35rem } .rv-next:empty { display:none }
.rv-next-l { font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:600 }
.rv-dest { display:inline-flex; align-items:center; gap:.4rem; padding:.15rem .55rem; border-radius:999px; border:1px dashed color-mix(in srgb, var(--accent) 45%, var(--line)); font-size:12.5px; background:var(--panel) }
.rv-dest.st-applied { border-style:solid; border-color:color-mix(in srgb, #2f855a 50%, var(--line)) } .rv-dest.st-declined { opacity:.6 }
.rv-dest small { color:var(--muted); font-size:11px } .rv-title { flex-wrap:wrap }

/* Delegate to Orion (2026-10-30) */
.it-actions button.orion { border-color:#7c5cc4; color:#7c5cc4; display:inline-flex; gap:.3rem; align-items:center }
.it-actions button.orion:hover { background:#7c5cc4; color:#fff }
.orion-chip { display:inline-flex; gap:.3rem; align-items:center; font-size:.82rem; padding:.2rem .6rem; border-radius:999px; border:1px solid #7c5cc4; color:#7c5cc4; text-decoration:none; background:color-mix(in srgb, #7c5cc4 8%, var(--panel)) }
.orion-chip.s-done { border-color:var(--status-accepted); color:var(--status-accepted) } .orion-chip.s-failed { border-color:var(--status-unsupported); color:var(--status-unsupported) }

/* who is signed in (2026-10-31) */
.me-chip { display:inline-flex; align-items:center; gap:.4rem; padding:2px 8px 2px 2px; border:1px solid var(--line); border-radius:999px; font-size:12px; max-width:220px }
.me-chip .av { width:24px; height:24px; border-radius:50%; display:grid; place-items:center; background:var(--accent); color:#fff; font-weight:700; font-size:11px; flex:none }
.me-chip .nm { display:grid; line-height:1.1; overflow:hidden } .me-chip small { color:var(--muted); font-size:10.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
@media (max-width:720px) { .me-chip .nm { display:none } }

/* access lock (2026-11-01, filelocks.py): the Lock dialog, the panel's lock box, a member's locked panel and viewer */
dialog.dlg:has(.al-dlg) { width:min(520px, 94vw) } .al-dlg { gap:.7rem; box-sizing:border-box; min-width:0 } .al-dlg > * { min-width:0 } .al-dlg h3 { font-size:15px; gap:.55rem; align-items:center; min-width:0 }
.al-dlg h3 .al-t { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap } .al-dlg .al-name { font-weight:500; color:var(--muted) }
.al-head { width:28px; height:28px; border-radius:8px; display:grid; place-items:center; flex:none; color:var(--status-unrouted); background:color-mix(in srgb, var(--status-unrouted) 12%, var(--panel)) }
.al-dlg svg.ic, .fp-locked svg.ic, .fp-manage.acl svg.ic, .v-locked svg.ic { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; flex:none; vertical-align:-3px }
.al-dlg fieldset { border:0; margin:0; padding:0; display:grid; gap:.4rem; min-width:0 } .al-dlg legend { font-size:12px; font-weight:600; color:var(--muted); padding:0; margin-bottom:.35rem; text-transform:none }
.al-dlg legend small { font-weight:400 }
.al-opt { display:grid; grid-template-columns:auto auto 1fr; gap:.6rem; align-items:center; padding:.55rem .7rem; border:1px solid var(--line); border-radius:10px; cursor:pointer; background:var(--panel) }
.al-opt input { margin:0; accent-color:var(--accent) } .al-opt b { display:block; font-size:13.5px; font-weight:600 } .al-opt small { display:block; color:var(--muted); font-size:12px; line-height:1.35 }
.al-opt .al-ic { width:26px; height:26px; border-radius:7px; display:grid; place-items:center; background:var(--panel-2, var(--bg)); color:var(--muted) }
.al-opt:has(input:checked) { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 6%, var(--panel)) } .al-opt:has(input:checked) .al-ic { color:var(--accent) }
.al-opt:has(input:focus-visible) { outline:2px solid var(--accent); outline-offset:1px }
.al-sub { display:flex; flex-wrap:wrap; gap:.5rem .8rem; align-items:center; padding:.1rem 0 .1rem .2rem } .al-sub[hidden] { display:none }
.al-sub select { font:inherit; font-size:13px; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.35rem .5rem; max-width:100%; flex:1 1 220px }
.al-sub .chk, .al-have .chk { display:inline-flex; gap:.35rem; align-items:center; font-size:13px; margin:0 }
.al-chips { display:flex; flex-wrap:wrap; gap:.35rem } .al-chip { display:inline-flex; align-items:center; gap:.4rem; min-height:30px; padding:2px 10px 2px 3px; border:1px solid var(--line); border-radius:999px; background:var(--panel); color:var(--ink); font:inherit; font-size:13px; cursor:pointer }
.al-chip .av { width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font-size:10px; font-weight:700; background:var(--line-2, var(--panel-2)); color:var(--muted) }
.al-chip.on { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 10%, var(--panel)); color:var(--accent) } .al-chip.on .av { background:var(--accent); color:#fff }
.al-pw { border-top:1px solid var(--line) !important; padding-top:.65rem !important } .al-pw p { margin:0 }
.al-pwf { display:grid; grid-template-columns:1fr 1fr; gap:.45rem } .al-pwf[hidden] { display:none }
.al-pwf input { font:inherit; font-size:13.5px; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.42rem .55rem; min-width:0 }
.al-have { display:flex; flex-wrap:wrap; gap:.35rem .8rem; align-items:center; font-size:13px } .al-have > span { flex:1 1 100%; display:inline-flex; gap:.4rem; align-items:center }
.al-msg:empty { display:none } .al-dlg .dlg-actions { align-items:center } .al-sp { flex:1 } .al-unlock { display:inline-flex; gap:.35rem; align-items:center }
@media (max-width:520px) { .al-pwf { grid-template-columns:1fr } .al-dlg .dlg-actions { flex-wrap:wrap } }
.fp-manage.acl { border-color:color-mix(in srgb, var(--status-unrouted) 45%, var(--line)); background:color-mix(in srgb, var(--status-unrouted) 6%, var(--panel)); display:block }
.fp-manage.acl .al-line { display:flex; gap:.55rem; align-items:flex-start; margin:0; color:var(--status-unrouted) } .fp-manage.acl .al-line > span { color:var(--ink); display:grid; gap:.1rem }
.fp-manage.acl .al-line small { color:var(--muted); font-size:12px } .fp-manage.acl .tr-acts { flex-wrap:wrap; align-items:center }
.fp-manage.acl .tr-acts button.small { display:inline-flex; gap:.35rem; align-items:center }
.fp-manage button.small svg.ic { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.8; vertical-align:-2px }
.fp-locked { margin:1rem 0; padding:1.4rem 1rem; border:1px solid color-mix(in srgb, var(--status-unrouted) 40%, var(--line)); border-radius:12px; text-align:center; display:grid; gap:.5rem; justify-items:center; background:color-mix(in srgb, var(--status-unrouted) 5%, var(--panel)) }
.fp-locked .fl-ic { width:40px; height:40px; border-radius:12px; display:grid; place-items:center; color:var(--status-unrouted); background:color-mix(in srgb, var(--status-unrouted) 12%, var(--panel)) }
.fp-locked .fl-ic svg.ic { width:20px; height:20px } .fp-locked p { margin:0; max-width:340px }
.fl-pw { display:flex; gap:.4rem; width:min(320px, 100%) } .fl-pw input { flex:1; min-width:0; font:inherit; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.45rem .6rem }
.v-locked { display:grid; justify-items:center; gap:.5rem; padding:3rem 1rem; color:var(--status-unrouted) } .v-locked b { color:var(--ink) } .v-locked svg.ic { width:28px; height:28px }
.act-lock.on.denied { color:var(--status-unrouted) !important }
body.is-member .act-lock.own-only { display:none !important }
.lkbadge { display:inline-grid; place-items:center; width:18px; height:18px; border-radius:5px; flex:none; color:var(--status-unrouted); background:color-mix(in srgb, var(--status-unrouted) 12%, transparent) }
.lkbadge svg.ic { width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:2.1; stroke-linecap:round; stroke-linejoin:round } .lkbadge.denied { color:var(--muted); background:var(--line-2, var(--panel-2)) }
/* access, round 2 (2026-11-01): invites by phone, requests, the panel's Access section */
.al-chip.inv { border-style:dashed } .al-chip.inv i { font-style:normal; color:var(--muted); font-size:11.5px } .al-chip.inv.on i { color:inherit }
.al-add { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto; gap:.4rem; width:100%; margin-top:.15rem }
.al-add input { font:inherit; font-size:13px; border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:.38rem .5rem; min-width:0 }
.al-addn { margin:0 !important; width:100% } @media (max-width:520px) { .al-add { grid-template-columns:1fr 1fr } .al-add .al-addb { grid-column:1 / -1 } }
.fp-locked .fl-req { min-width:200px } .fp-locked .fl-or { margin-top:.3rem }
.fp-access { margin:.2rem 0 .8rem; border:1px solid var(--line); border-radius:10px; background:var(--panel) }
.fp-access > summary { cursor:pointer; padding:.55rem .7rem; display:flex; gap:.45rem; align-items:center; font-weight:600; font-size:13.5px; list-style:none }
.fp-access > summary::-webkit-details-marker { display:none } .fp-access > summary small { margin-left:auto; color:var(--muted); font-weight:400; font-size:12px }
.fp-access svg.ic { width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round }
.fa-n { font-size:11px; font-weight:700; color:#fff; background:var(--status-attention); border-radius:999px; padding:1px 7px }
.fa-body { padding:0 .7rem .7rem; display:grid; gap:.35rem } .fa-h { display:flex; justify-content:space-between; align-items:center; gap:.5rem; font-size:11.5px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; margin-top:.4rem }
.fa-row { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.4rem; align-items:center; padding:.45rem .55rem; border:1px solid var(--line); border-radius:8px; font-size:13px }
.fa-row small { display:block; color:var(--muted); font-size:11.5px } .fa-row.open { border-color:color-mix(in srgb, var(--status-attention) 50%, var(--line)) } .fa-acts { display:flex; gap:.3rem }
.fa-seg { text-transform:none; letter-spacing:0; font-weight:400 } .fa-seg button { font-size:11.5px; min-height:24px; padding:0 .5rem }
.fa-log { width:100%; border-collapse:collapse; font-size:12.5px } .fa-log td { padding:.35rem .3rem; border-top:1px solid var(--line); vertical-align:top } .fa-log td small { display:block; color:var(--muted); font-size:11px }
.fa-log td.m { color:var(--muted); white-space:nowrap } .fa-log td.ok { color:var(--status-accepted) } .fa-log td.bad { color:var(--status-unsupported) } .fa-log tr.no td:first-child { box-shadow:inset 2px 0 0 var(--status-unsupported) }
.fa-attr { margin:.2rem 0 0; font-size:10.5px; color:var(--muted) }
/* SPEC-19 (2026-11-04): the owner's passkey reminder under the header */
.pk-hint { display:flex; align-items:center; gap:.7rem; padding:.5rem 1rem; background:color-mix(in srgb, var(--status-attention) 12%, var(--panel)); border-bottom:1px solid color-mix(in srgb, var(--status-attention) 35%, var(--line)); font-size:.88rem }
.pk-hint span { flex:1 } .pk-hint .btn { white-space:nowrap }
@media (max-width:720px) { .pk-hint { flex-wrap:wrap; font-size:.82rem } }
