/* ============================================================================
   ReqPub v2 - design system
   Brand: Inter, #2563FF, ink scale, mono eyebrows, rounded-square chevron mark.
   Light is the brand default; dark honors prefers-color-scheme and the toggle.
   ============================================================================ */

:root{
  --ink:#0a0a0a; --ink-2:#262626; --ink-3:#474747; --ink-4:#606060;
  --line:#ececec; --line-2:#dcdcdc; --bg:#ffffff; --bg-2:#fafafa; --bg-3:#f2f2f2;
  --radius:14px; --radius-sm:10px; --radius-lg:20px;
  --shadow:0 1px 2px rgba(0,0,0,.04), 0 10px 30px rgba(0,0,0,.045);
  --shadow-sm:0 1px 2px rgba(0,0,0,.05);
  --brand:#2563FF; --brand-600:#1d4ed8; --brand-700:#1e40af;
  --sky:#e6f0ff; --sky-2:#dbe7ff;
  --amber:#a35b09; --amber-bg:#fdf3e5; --good:#0f7a4f; --good-bg:#e7f6ee;
  --bad:#b42318; --bad-bg:#fdecea;
  --purple:#7c3aed; --teal:#0891b2;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
  --ease:cubic-bezier(.2,.7,.2,1);
  --glass:rgba(255,255,255,.86);
  color-scheme:light;
}
[data-theme="dark"]{
  --ink:#f2f2f2; --ink-2:#d6d6d6; --ink-3:#a8a8a8; --ink-4:#8a8a8a;
  --line:#26282c; --line-2:#34363c; --bg:#101114; --bg-2:#16171b; --bg-3:#1e2025;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 30px rgba(0,0,0,.35);
  --shadow-sm:0 1px 2px rgba(0,0,0,.5);
  --sky:#15233f; --sky-2:#1d3157;
  --amber:#e2a23b; --amber-bg:#2a2113; --good:#3dcf8e; --good-bg:#11291d;
  --bad:#f97066; --bad-bg:#2d1513;
  --glass:rgba(16,17,20,.86);
  color-scheme:dark;
}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;background:transparent}
::selection{background:var(--brand);color:#fff}
.mono{font-family:var(--mono)}
a{color:var(--brand);text-decoration:underline;text-underline-offset:2px}
#root{height:100%}

/* ---- Buttons ---- */
.btn{display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 18px;border-radius:var(--radius-sm);
  font-weight:560;letter-spacing:-.01em;white-space:nowrap;
  transition:transform .14s var(--ease),background .14s var(--ease),border-color .14s var(--ease),box-shadow .14s var(--ease)}
.btn-primary{background:var(--brand);color:#fff}
.btn-primary:hover{transform:translateY(-1px);background:var(--brand-600);box-shadow:0 6px 18px rgba(37,99,255,.30)}
.btn-primary:active{transform:translateY(0)}
.btn-primary:disabled{opacity:.32;cursor:not-allowed;transform:none;box-shadow:none}
.btn-sec{background:var(--bg);color:var(--ink);border:1px solid var(--line-2)}
.btn-sec:hover{background:var(--bg-3);border-color:var(--ink-4)}
.btn-ghost{color:var(--ink-3);height:38px;padding:0 12px}
.btn-ghost:hover{color:var(--ink);background:var(--bg-3)}
.btn-sm{height:34px;padding:0 12px;font-size:13px;border-radius:8px}
.btn-danger{background:var(--bad);color:#fff}
.btn-danger:hover{filter:brightness(.94)}
.icobtn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;
  color:var(--ink-3);transition:.14s var(--ease)}
.icobtn:hover{color:var(--ink);background:var(--bg-3)}
.icobtn:disabled{opacity:.3;cursor:not-allowed}
.icobtn.on{background:var(--ink);color:var(--bg)}
svg.i{width:17px;height:17px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;display:block}
svg.i-sm{width:14px;height:14px}

/* ---- Type + chips ---- */
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}
.eyebrow.xd{color:var(--ink)}
.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:999px;
  border:1px solid var(--line-2);font-size:11px;font-weight:560;color:var(--ink-2);letter-spacing:.01em}
.pill .mono{font-size:11px}
.pill-solid{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.pill-brand{background:var(--brand);color:#fff;border-color:var(--brand)}
.pill-good{background:var(--good-bg);color:var(--good);border-color:transparent}
.pill-amber{background:var(--amber-bg);color:var(--amber);border-color:transparent}
.pill-bad{background:var(--bad-bg);color:var(--bad);border-color:transparent}

/* Document/approval status chips */
.stchip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;
  font-size:11px;font-weight:620;letter-spacing:.02em}
.stchip::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.stchip.draft{background:var(--bg-3);color:var(--ink-3)}
.stchip.in_review{background:var(--amber-bg);color:var(--amber)}
.stchip.approved{background:var(--good-bg);color:var(--good)}
.stchip.changes_requested{background:var(--bad-bg);color:var(--bad)}

/* ---- Inputs ---- */
.input,.textarea{width:100%;background:var(--bg);border:1px solid var(--line-2);border-radius:var(--radius-sm);
  padding:11px 13px;transition:border-color .14s var(--ease),box-shadow .14s var(--ease);outline:none}
select.input{padding-top:0;padding-bottom:0;line-height:normal}
.input:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,255,.14)}
.textarea{resize:vertical;line-height:1.6;min-height:104px;field-sizing:content;max-height:60vh}
.gta{resize:vertical;min-height:42px;line-height:1.5;white-space:pre-wrap;overflow-x:hidden;field-sizing:content;max-height:50vh}
.input::placeholder,.textarea::placeholder{color:var(--ink-4)}
.input:read-only{color:var(--ink-3)}
.choice{display:flex;flex-wrap:wrap;gap:8px}
.chip{height:40px;padding:0 16px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--bg);
  font-weight:520;transition:.14s var(--ease)}
.chip:hover{border-color:var(--ink-4)}
.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chip-sm{height:30px;padding:0 11px;font-size:13px;border-radius:8px}
.seg{display:inline-flex;background:var(--bg-3);padding:3px;border-radius:11px;gap:2px}
.seg button{height:32px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:540;color:var(--ink-3);transition:.14s var(--ease)}
.seg button.on{background:var(--bg);color:var(--ink);box-shadow:var(--shadow-sm)}

/* ---- Layout ---- */
.app{display:flex;flex-direction:column;height:100%}
.topbar{height:60px;flex:0 0 60px;border-bottom:1px solid var(--line);display:flex;align-items:center;
  justify-content:space-between;padding:0 18px;background:var(--glass);backdrop-filter:saturate(140%) blur(10px);
  position:relative;z-index:5}
.brandmark{width:26px;height:26px;border-radius:7px;background:var(--brand);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.brandmark svg{width:15px;height:15px;stroke:#fff;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.split{flex:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0}
.pane-intake{overflow-y:auto;border-right:1px solid var(--line);background:var(--bg)}
.pane-doc{overflow:hidden;background:var(--bg-2);display:flex;flex-direction:column}
.fab{display:none}
@media(max-width:920px){
  .split{grid-template-columns:1fr}
  .pane-doc{display:none}
  .pane-doc.show{display:flex;position:fixed;inset:60px 0 0 0;z-index:25;border-left:none}
  .fab{display:inline-flex;position:fixed;right:18px;bottom:18px;width:52px;height:52px;border-radius:50%;
    background:var(--brand);color:#fff;align-items:center;justify-content:center;
    box-shadow:0 8px 24px rgba(37,99,255,.35);z-index:30}
}
.wrap{max-width:960px;margin:0 auto;padding:56px 28px 80px}
.page{max-width:660px;margin:0 auto;padding:40px 40px 80px}
@media(max-width:520px){ .page{padding:28px 22px 60px} .qcard{padding:22px} }

/* ---- Cards ---- */
.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow)}
.qcard{padding:30px}
.row-card{border:1px solid var(--line);border-radius:var(--radius);padding:14px;background:var(--bg-2)}
.pcard{display:block;width:100%;text-align:left;background:var(--bg);border:1px solid var(--line);
  border-radius:var(--radius);padding:18px;transition:.16s var(--ease)}
.pcard:hover{transform:translateY(-2px);border-color:var(--ink-4);box-shadow:var(--shadow)}
.rise{animation:rise .5s var(--ease) both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  padding:40px;color:var(--ink-3)}
.empty svg{width:40px;height:40px;stroke:var(--line-2);stroke-width:1.4;fill:none;margin-bottom:14px}

/* ---- Progress ---- */
.ptrack{height:2px;background:var(--line);border-radius:2px;overflow:hidden}
.pfill{height:100%;background:var(--ink);transition:width .4s var(--ease)}
.dot{width:9px;height:9px;border-radius:50%;flex:0 0 9px;border:1.5px solid var(--line-2)}
.dot.some{background:var(--ink-4);border-color:var(--ink-4)}
.dot.done{background:var(--ink);border-color:var(--ink)}

/* ---- Doc pane ---- */
.doc-tools{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;
  padding:10px 16px;border-bottom:1px solid var(--line);background:var(--glass);backdrop-filter:blur(8px);
  min-height:54px;gap:8px;flex-wrap:wrap}
.doc-scroll{flex:1;min-height:0;overflow-y:auto}
.doc-anim{animation:fade .28s var(--ease)}
.hl{font-weight:700;color:var(--ink);background:var(--sky-2);border-radius:3px;box-shadow:0 0 0 2px var(--sky-2);transition:background .1s}
@keyframes fade{from{opacity:.55}to{opacity:1}}

/* ---- Rendered markdown document ---- */
.md h1{font-size:27px;line-height:1.18;letter-spacing:-.022em;font-weight:660;margin:0 0 6px}
.md .doc-meta{font-family:var(--mono);font-size:11.5px;color:var(--ink-2);letter-spacing:.01em;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 0;margin:14px 0 8px}
.md .part{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);
  margin:34px 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line-2)}
.md h2{font-size:19px;letter-spacing:-.015em;font-weight:640;margin:34px 0 10px;display:block}
.md h2 .secn{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--ink-2);font-weight:600;margin-bottom:5px}
.md h2 .secn::before{content:'SECTION '}
.md h3{font-size:14.5px;font-weight:600;color:var(--ink-2);margin:18px 0 6px;display:flex;gap:8px;align-items:baseline}
.md h3 .secn{font-family:var(--mono);font-size:12px;color:var(--ink-4)}
.md p{margin:8px 0;color:var(--ink-2);line-height:1.68}
.md ul,.md ol{margin:8px 0;padding-left:20px;color:var(--ink-2)}
.md li{margin:4px 0;line-height:1.6}
.md strong{color:var(--ink);font-weight:620}
.md code{font-family:var(--mono);font-size:.86em;background:var(--bg-3);padding:1px 5px;border-radius:5px}
.md table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px;border:1px solid var(--line-2);border-radius:10px;overflow:hidden}
.md th{text-align:left;font-weight:600;color:var(--ink-2);background:var(--bg-2);padding:8px 11px;
  border-bottom:1px solid var(--line-2);font-size:11.5px;letter-spacing:.01em;vertical-align:top}
.md td{padding:8px 11px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:top;line-height:1.5}
.md tr:last-child td{border-bottom:none}
.md td.idc,.md th.idc{font-family:var(--mono);font-size:11.5px;white-space:nowrap;color:var(--ink)}
.md h2#docsec-functional{color:var(--brand)}
.md h2#docsec-functional .secn{color:var(--brand)}
.md h2#docsec-functional + table{border:1.5px solid var(--brand);box-shadow:0 0 0 4px var(--sky)}
.md h2#docsec-functional + table th{background:var(--sky);color:var(--ink)}
.md h2#docsec-functional + table td.idc{color:var(--brand);font-weight:620}

/* ---- Presence + save state ---- */
.pres{display:flex;align-items:center}
.pres .pav{width:26px;height:26px;border-radius:50%;border:2px solid var(--bg);background:var(--brand);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:680;margin-left:-7px}
.pres .pav:first-child{margin-left:0}
.pres .pav.p2{background:var(--purple)} .pres .pav.p3{background:var(--teal)}
.pres .pav.p4{background:var(--amber)} .pres .pav.p5{background:var(--good)}
.editing-chip{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:999px;
  background:var(--sky);color:var(--brand);font-size:11px;font-weight:600;animation:fade .2s var(--ease)}
.editing-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;animation:pulse 1.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.savechip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border-radius:999px;
  font-size:11.5px;font-weight:580;border:1px solid var(--line-2);color:var(--ink-3);transition:.2s}
.savechip.saving{color:var(--ink-2)}
.savechip.saved{color:var(--good);border-color:transparent;background:var(--good-bg)}
.savechip.offline{color:var(--amber);border-color:transparent;background:var(--amber-bg)}
.savechip.error{color:var(--bad);border-color:transparent;background:var(--bad-bg);cursor:pointer}
.savechip .spin{width:11px;height:11px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:50%;
  animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.conflict-note{font-size:11.5px;color:var(--amber);background:var(--amber-bg);border-radius:7px;padding:5px 9px;margin-top:6px}

/* ---- Toast / overlays / modals ---- */
.toast{position:fixed;right:18px;bottom:18px;background:var(--ink);color:var(--bg);font-size:13px;padding:10px 14px;
  border-radius:10px;display:flex;align-items:center;gap:8px;box-shadow:0 8px 24px rgba(0,0,0,.2);z-index:80;animation:rise .25s var(--ease)}
.umbtn{display:inline-flex;align-items:center;gap:6px;height:38px;padding:3px 9px 3px 3px;border-radius:999px;
  border:1px solid var(--line-2);background:var(--bg);transition:.14s var(--ease)}
.umbtn:hover{border-color:var(--ink-4);background:var(--bg-3)}
.umav{width:30px;height:30px;border-radius:50%;background:var(--brand);color:#fff;display:inline-flex;align-items:center;
  justify-content:center;font-size:12px;font-weight:680;flex:0 0 auto}
.umav.lg{width:42px;height:42px;font-size:15px}
.umback{position:fixed;inset:0;z-index:58}
.umpop{position:fixed;top:56px;right:16px;width:290px;background:var(--bg);border:1px solid var(--line-2);border-radius:14px;
  box-shadow:0 16px 44px rgba(15,23,42,.18);z-index:59;overflow:hidden;animation:rise .16s var(--ease)}
.umhead{display:flex;gap:12px;align-items:flex-start;padding:16px}
.umname{font-size:14.5px;font-weight:620;letter-spacing:-.01em;line-height:1.2}
.umsub{font-size:12px;color:var(--ink-4);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.umrole{display:inline-flex;font-size:10.5px;font-weight:600;color:var(--brand);background:var(--sky);
  border:1px solid var(--sky-2);border-radius:999px;padding:2px 8px;letter-spacing:.02em}
.umsep{height:1px;background:var(--line)}
.umitem{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 16px;font-size:13.5px;
  color:var(--ink-2);transition:.12s}
.umitem:hover{background:var(--bg-3);color:var(--ink);text-decoration:none}
.umitem svg.i{width:16px;height:16px;color:var(--ink-4)}
.umitem.danger{color:var(--bad)} .umitem.danger svg.i{color:var(--bad)}
.modal-back{position:fixed;inset:0;background:rgba(10,10,10,.45);display:flex;align-items:center;justify-content:center;
  padding:22px;z-index:65}
.modal-card{background:var(--bg);border-radius:18px;max-width:480px;width:100%;max-height:88vh;overflow:auto;
  box-shadow:0 30px 70px rgba(0,0,0,.3);padding:24px}
.modal-card h3{margin:0;font-size:19px;font-weight:680;letter-spacing:-.02em}
.modal-x{width:34px;height:34px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--ink-3);flex:0 0 auto}
.modal-x:hover{background:var(--bg-3);color:var(--ink)}
.fldlabel{font-size:12px;font-weight:560;color:var(--ink-3);margin:14px 0 6px}
.acctchip{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px 0 4px;border-radius:999px;
  border:1px solid var(--line-2);background:var(--bg);font-size:13px;font-weight:560;color:var(--ink);transition:.14s var(--ease)}
.acctchip:hover{background:var(--bg-3);border-color:var(--ink-4)}
.acctdot{width:24px;height:24px;border-radius:7px;background:var(--ink);color:var(--bg);display:inline-flex;
  align-items:center;justify-content:center;font-size:11px;font-weight:680;flex:0 0 auto}
.hint{font-size:12.5px;color:var(--ink-3);line-height:1.55}
.lbl{font-size:13px;font-weight:560;color:var(--ink);margin-bottom:5px;display:block}
.seclbl{display:flex;align-items:center;gap:9px;padding-bottom:9px;border-bottom:1px solid var(--line);margin-bottom:16px}
hr.sep{border:none;border-top:1px solid var(--line);margin:0}

/* ---- Command palette ---- */
.pal-back{position:fixed;inset:0;background:rgba(10,10,10,.4);z-index:70;display:flex;align-items:flex-start;
  justify-content:center;padding:14vh 20px 20px}
.pal{width:100%;max-width:560px;background:var(--bg);border:1px solid var(--line-2);border-radius:16px;
  box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden;animation:rise .16s var(--ease)}
.pal input{width:100%;border:none;outline:none;background:none;padding:16px 18px;font-size:15px;color:var(--ink);
  border-bottom:1px solid var(--line)}
.pal-list{max-height:46vh;overflow-y:auto;padding:6px}
.pal-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:10px 12px;border-radius:10px;
  font-size:13.5px;color:var(--ink-2)}
.pal-item.on,.pal-item:hover{background:var(--bg-3);color:var(--ink)}
.pal-item .k{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--ink-4);
  border:1px solid var(--line-2);border-radius:5px;padding:1px 6px}
.pal-sec{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);
  padding:10px 12px 4px}

/* ---- Activity timeline ---- */
.tl{border-left:1px solid var(--line-2);margin-left:5px;padding-left:18px}
.tl-item{position:relative;padding-bottom:18px}
.tl-item::before{content:"";position:absolute;left:-23px;top:5px;width:9px;height:9px;border-radius:50%;
  background:var(--bg);border:2px solid var(--line-2)}
.tl-item.hot::before{background:var(--brand);border-color:var(--brand)}

/* ---- Live edit-follow in the document pane ---- */
.doc-flash{background:var(--sky);box-shadow:0 0 0 6px var(--sky);border-radius:6px;transition:background 1.2s var(--ease),box-shadow 1.2s var(--ease)}
.doc-flash.fade{background:transparent;box-shadow:0 0 0 6px transparent}

/* ---- Presentation mode ---- */
.present-back{position:fixed;inset:0;background:var(--bg);z-index:90;display:flex;flex-direction:column}
.present-bar{height:54px;flex:0 0 54px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--line);background:var(--glass);backdrop-filter:blur(8px)}
.present-scroll{flex:1;min-height:0;overflow-y:auto}
.present-scroll .page{max-width:780px;padding:56px 48px 120px}
.present-scroll .md h1{font-size:34px}
.present-scroll .md h2{font-size:22px}
.present-scroll .md p,.present-scroll .md li{font-size:16.5px;line-height:1.75}
.present-scroll .md td,.present-scroll .md th{font-size:14px}

/* ---- Workspace switcher (anchored left under the topbar) ---- */
.umpop.left{left:16px;right:auto;width:300px}

/* ---- Access hub ---- */
.acc-sec{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);padding:18px;margin-bottom:14px}
.acc-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.acc-ic{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.acc-head h3{font-size:14.5px;font-weight:640;letter-spacing:-.01em;margin:0}
.acc-sub{font-size:11.5px;color:var(--ink-4);line-height:1.5;margin:0 0 12px 44px}
.acc-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.acc-row:first-of-type{border-top:none}

/* ---- Print / PDF (designed, co-branded) ---- */
#printArea{display:none}

/* Cover: a full first page. The collaborator's logo leads; ReqPub co-signs. */
.rp-cover{display:flex;flex-direction:column;min-height:9.4in;padding:0}
.rp-cover-top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:22px;border-bottom:1px solid var(--line-2)}
.rp-lockup{display:flex;flex-direction:column;gap:10px;min-width:0}
.rp-logo{max-height:96px;max-width:340px;object-fit:contain;object-position:left top}
.rp-nologo{height:2px}
.rp-client{font-size:17px;font-weight:640;letter-spacing:-.01em;color:var(--ink)}
.rp-by{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex:0 0 auto}
.rp-by-t{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4)}
.rp-by-brand{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:680;letter-spacing:-.02em;color:var(--ink)}
.rp-mk{width:22px;height:22px;border-radius:6px;background:var(--brand);display:inline-flex;align-items:center;justify-content:center;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
.rp-cover-mid{flex:1;display:flex;flex-direction:column;justify-content:center;padding:44px 0}
.rp-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--brand);margin-bottom:14px}
.rp-title{font-size:44px;line-height:1.06;letter-spacing:-.03em;font-weight:680;color:var(--ink);margin:0 0 18px}
.rp-status{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 15px;border-radius:999px;
  font-size:13px;font-weight:640;letter-spacing:.02em;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.rp-status::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.rp-status.draft{background:var(--bg-3);color:var(--ink-3)}
.rp-status.in_review{background:var(--amber-bg);color:var(--amber)}
.rp-status.approved{background:var(--good-bg);color:var(--good)}
.rp-status.changes_requested{background:var(--bad-bg);color:var(--bad)}
.rp-cover-foot{border-top:2.5px solid var(--brand);padding-top:20px}
.rp-rail{display:flex;flex-wrap:wrap;gap:34px}
.rp-rail-k{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-bottom:3px}
.rp-rail-v{font-size:14px;font-weight:600;color:var(--ink)}
.rp-appr{margin-top:22px}
.rp-appr-h{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-bottom:9px}
.rp-appr-row{display:flex;align-items:center;gap:11px;padding:7px 0;border-top:1px solid var(--line)}
.rp-appr-mark{width:20px;height:20px;border-radius:50%;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;background:var(--bg-3);color:var(--ink-4);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.rp-appr-mark.yes{background:var(--good-bg);color:var(--good)}
.rp-appr-role{flex:1;font-size:13.5px;color:var(--ink-2)}
.rp-appr-state{font-size:11px;font-weight:640}
.rp-appr-state.approved{color:var(--good)} .rp-appr-state.pending{color:var(--ink-4)}
.rp-appr-state.changes_requested{color:var(--bad)}
.rp-runhead{display:none}

@media print{
  @page{margin:0.7in 0.72in;size:letter}
  body *{visibility:hidden}
  #printArea,#printArea *{visibility:visible}
  #printArea{display:block;position:absolute;inset:0;padding:0}
  body{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff}
  .rp-cover{break-after:page;min-height:9.2in}
  .rp-body{padding-top:6px}
  /* Running header on document pages (not the cover). */
  .rp-runhead{display:flex;justify-content:space-between;align-items:center;
    font-family:var(--mono);font-size:8.5px;letter-spacing:.06em;color:var(--ink-4);
    border-bottom:1px solid var(--line);padding-bottom:5px;margin-bottom:2px}
  .rp-body .md h1{display:none}         /* title already on the cover */
  .rp-body .md .doc-meta{margin-top:0}
  .md{color:#111}
  .md h2,.md h3,.md .part{break-after:avoid}
  .md .part{color:var(--brand)!important;margin-top:22px}
  /* The reference standard: every section opens its own page; the first
     follows the cover directly. */
  .rp-body .md h2{break-before:page;margin-top:0;padding-top:8px}
  .rp-body .md h2:first-of-type{break-before:auto}
  .md h2{font-size:16pt} .md h3{font-size:12.5pt}
  .md h2 .secn,.md h3 .secn,.md td.idc{color:var(--brand)!important}
  .md p,.md li{font-size:10.5pt;line-height:1.55}
  .md table{break-inside:auto;font-size:9pt} .md tr{break-inside:avoid}
  .md thead{display:table-header-group}   /* repeat table headers across pages */
  .md th{background:#eef3ff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .md h2#docsec-functional + table{box-shadow:none!important;border:1.5px solid var(--brand)!important}
}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
.qcard.kb-focus{outline:2px solid var(--brand);outline-offset:2px;transition:outline-color .2s}

/* ---- Weekly update dashboard (v2.35.0) ----
   One screen on desktop and tablet: the board itself caps its height and the
   two lists scroll internally when authored content overflows, so the page
   never scrolls to read the board. On narrow phones the columns stack into
   one and the caps come off, so the sections flow rather than shrink text
   below readability. */
.updash{border:1px solid var(--line);border-radius:16px;background:var(--panel,#fff);padding:22px 24px}
.updash-h1{font-size:21px;font-weight:660;letter-spacing:-.02em;line-height:1.25}
.updash-meta{font-size:12px;color:var(--ink-2);margin-top:4px;line-height:1.6}
.updash-issued{font-size:13px;color:var(--ink);margin-top:6px}
.updash-issued strong{font-weight:680}
.updash-grid{display:grid;grid-template-columns:minmax(230px,300px) minmax(0,1fr);gap:22px;margin-top:18px}
.updash-scroll{overflow:auto;max-height:calc(100vh - 360px);min-height:120px}
.updash-tablebox{position:relative;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:2px;background:var(--panel,#fff)}
.updash-tablebox::after{content:'';position:absolute;top:1px;right:1px;bottom:9px;width:22px;border-radius:0 11px 11px 0;background:linear-gradient(to right,transparent,var(--panel,#fff) 78%);pointer-events:none}
.updash-tablebox .updash-scroll{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.updash-tablebox .updash-scroll::-webkit-scrollbar{height:8px}
.updash-tablebox .updash-scroll::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:99px}
.updash-tablebox .updash-scroll::-webkit-scrollbar-track{background:transparent}
/* Phase tabs, per the sketch: named blocks on a baseline. The current phase
   is the one filled tab, completed phases carry a check, upcoming stay
   quiet. Not clickable: this row presents one authored choice. */
.updash-tabs{display:flex;align-items:flex-end;gap:5px;overflow-x:auto;border-bottom:1.5px solid var(--ink-2);padding:0 2px}
.updash-tab{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-bottom:none;border-radius:9px 9px 0 0;padding:7px 14px 8px;font-size:12px;font-weight:620;background:var(--bg);color:var(--ink-2);white-space:nowrap;cursor:default}
.updash-tab.done{color:var(--ink-2);background:var(--panel,#fff)}
.updash-tab.cur{background:var(--ink);border-color:var(--ink);color:var(--panel,#fff);font-weight:700;padding-top:9px}
.updash-tab.up{opacity:.5}
.updash-tab.sel{border-color:var(--ink);color:var(--ink);opacity:1;box-shadow:inset 0 -2.5px 0 var(--brand)}
.updash-tab.cur.sel{box-shadow:none;color:var(--panel,#fff)}
.updash-vctx{font-size:12px;color:var(--ink-2);padding:8px 2px 0}
/* The table, per the sketch: a labeled header row, the type box and the
   permanent id together, the title with its notes line beneath, and notes
   expanding full-width under the row. */
.updash-head{display:grid;grid-template-columns:86px minmax(130px,1.2fr) minmax(150px,1.6fr) minmax(130px,1.4fr) minmax(100px,1fr) 90px 78px;gap:10px;padding:0 8px 7px;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);font-weight:660}
.updash-row{display:grid;grid-template-columns:86px minmax(130px,1.2fr) minmax(150px,1.6fr) minmax(130px,1.4fr) minmax(100px,1fr) 90px 78px;gap:10px;align-items:start;padding:9px 8px;border-top:1px solid var(--line);font-size:12.5px;line-height:1.5;cursor:pointer}
.updash-row:hover{background:var(--bg)}
.updash-upd{display:inline-flex;align-items:center;gap:7px;min-width:0}
.updash-typebox{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;border:1.5px solid currentColor;border-radius:6px;font-family:var(--mono);font-size:10.5px;font-weight:700;flex:0 0 auto}
.updash-id{font-family:var(--mono);font-size:10.5px;font-weight:700;color:var(--ink-2)}
.updash-titlecell{min-width:0}
.updash-title{display:block;font-weight:640;overflow-wrap:anywhere}
.updash-noteslink{display:inline-block;margin-top:2px;font-size:11px;color:var(--ink-2);text-decoration:underline;text-underline-offset:2px}
.updash-cell{min-width:0;color:var(--ink-2);overflow-wrap:anywhere}
.updash-notes{border-top:1px dashed var(--line);background:var(--bg);padding:9px 12px 10px 104px;font-size:12.5px;color:var(--ink-2);line-height:1.55;white-space:pre-wrap}
.updash-kr{display:flex;gap:9px;align-items:flex-start;padding:6px 0;font-size:13px;line-height:1.5}
.updash-kr .box{width:16px;height:16px;border:1.5px solid var(--ink-2);border-radius:5px;flex:0 0 auto;margin-top:2px;display:inline-flex;align-items:center;justify-content:center}
.updash-kr.done .box{background:var(--ink);border-color:var(--ink);color:var(--panel,#fff)}
.updash-kr.done .txt{text-decoration:line-through;color:var(--ink-2)}
.updkey-h{font-size:19px;font-weight:680;letter-spacing:-.015em;border-bottom:1.5px solid var(--ink);padding-bottom:7px;margin-bottom:10px}
.updkey-line{font-size:13.5px;line-height:1.6;color:var(--ink);padding:3px 0}
.updsec{display:flex;align-items:center;gap:10px;padding:12px 18px;margin-top:8px;cursor:pointer;user-select:none}
.updsec:hover{background:var(--bg)}
.updsec-t{font-weight:660;font-size:13.5px}
.updsec-m{font-size:11.5px;color:var(--ink-2);flex:1}
.updsec-c{color:var(--ink-2);display:inline-flex}
/* In-app help: the beacon, the panel dialog, the spotlight, the studio. */
.help-beacon{position:fixed;right:18px;bottom:18px;width:38px;height:38px;border-radius:999px;border:1px solid var(--line-2);background:var(--panel,#fff);color:var(--ink-2);font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.10);z-index:60}
.help-beacon:hover{color:var(--ink);border-color:var(--ink-3)}
.help-beacon:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.help-panel{position:fixed;right:18px;bottom:66px;width:min(400px,calc(100vw - 36px));max-height:min(74vh,600px);display:flex;flex-direction:column;background:var(--panel,#fff);border:1px solid var(--line);border-radius:16px;padding:16px 18px 12px;box-shadow:0 14px 40px rgba(0,0,0,.16);z-index:61}
.help-scroll{overflow:auto;min-height:0;flex:1 1 auto}
.help-ph{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;flex:0 0 auto}
.help-pt{font-size:15px;font-weight:680;letter-spacing:-.01em;line-height:1.2}
.help-psub{font-size:11.5px;color:var(--ink-2);margin-top:2px}
.help-foot{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);margin-top:12px;padding-top:10px;flex:0 0 auto}
.help-stamp{font-size:9.5px;color:var(--ink-3)}
.help-path{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:12px;background:var(--bg)}
.help-path-h{display:flex;align-items:baseline;gap:8px;font-size:12px;font-weight:660;margin-bottom:6px;width:100%;background:none;border:0;padding:0;font-family:inherit;cursor:pointer;text-align:left;color:var(--ink)}
.help-path-folded .help-path-h{margin-bottom:0}
.help-path-chev{color:var(--ink-3);font-size:10px}
.help-offroute{font-size:11.5px;color:var(--ink-2);background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:8px 10px;margin-top:10px}
.help-path-n{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--ink-2)}
.help-path-bar{height:4px;border-radius:99px;background:var(--line);overflow:hidden;margin-bottom:8px}
.help-path-bar span{display:block;height:100%;background:var(--brand);border-radius:99px;transition:width .4s var(--ease)}
.help-path-row{display:flex;align-items:center;gap:8px;font-size:12px;padding:3px 0;color:var(--ink)}
.help-path-row.ok{color:var(--ink-2)}
.help-path-mark{width:14px;text-align:center;font-weight:700;color:var(--brand)}
.help-path-row.ok .help-path-mark{color:var(--ok,#1a7f37)}
.help-path-done{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:8px}
.help-empty{font-size:12.5px;color:var(--ink-3);line-height:1.6;padding:10px 2px 6px}
.help-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;border-radius:8px;padding:6px 8px;font:inherit;font-size:12.5px;cursor:pointer}
.help-item > span:first-child{font-weight:560!important;color:var(--brand)}
.help-item:hover > span:first-child{text-decoration:underline;text-underline-offset:2px}
.help-group{font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin:12px 0 4px;padding:0 8px}
.help-group:first-child{margin-top:2px}
.help-item:hover,.help-item.on{background:var(--bg)}
.help-body{font-size:13px;line-height:1.6}
.help-body h1,.help-body h2,.help-body h3{font-size:13.5px;margin:10px 0 4px}
.help-body p{margin:6px 0}
.help-body code{font-family:var(--mono);font-size:11.5px;background:var(--bg);padding:1px 4px;border-radius:4px}
.help-dimcatch{position:fixed;inset:0;z-index:70;background:transparent}
.help-window{position:fixed;z-index:71;pointer-events:none;border:2px solid var(--brand);border-radius:14px;box-shadow:0 0 0 200vmax rgba(8,8,12,.62);transition:top .28s var(--ease),left .28s var(--ease),width .28s var(--ease),height .28s var(--ease),border-width .28s var(--ease)}
.help-lit{position:relative;z-index:71;box-shadow:0 0 0 3px var(--brand),0 0 0 6px var(--panel,#fff);border-radius:8px}
.help-spot{position:fixed;width:320px;background:var(--panel,#fff);border:1px solid var(--line);border-radius:12px;padding:12px 14px;box-shadow:0 12px 34px rgba(0,0,0,.22);z-index:72;top:25%;left:calc(50% - 160px)}
.modal-card.help-studio{width:min(940px,calc(100vw - 44px));max-width:940px;max-height:86vh;overflow:auto;padding:22px 26px 24px}
.hs-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px}
.hs-head > div:first-child{flex:1;min-width:0}
.hs-grid{display:grid;grid-template-columns:250px minmax(0,1fr);gap:24px}
.hs-list{border-right:1px solid var(--line);padding-right:18px;display:flex;flex-direction:column;gap:2px;min-height:300px}
.hs-row{flex-direction:column;align-items:flex-start;gap:3px;padding:9px 10px}
.hs-rowt{font-weight:620;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.hs-rowm{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--ink-3)}
.hs-empty{font-size:12.5px;color:var(--ink-3);line-height:1.6;padding:8px 2px}
.hs-field{margin-bottom:16px}
.hs-field:last-child{margin-bottom:0}
.hs-label{font-size:11px;font-weight:660;letter-spacing:.02em;color:var(--ink-2);margin-bottom:6px;display:flex;align-items:baseline;gap:8px}
.hs-hint{font-weight:480;color:var(--ink-3);font-size:10.5px;letter-spacing:0}
.hs-two{display:grid;grid-template-columns:200px minmax(0,1fr);gap:16px;margin-bottom:16px}
.hs-checks{display:flex;gap:14px;align-items:center;height:36px;flex-wrap:wrap}
.hs-check{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;cursor:pointer}
.hs-anchors{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.hs-anchor{font-size:10.5px;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:2px 7px;color:var(--ink-2);cursor:default}
.hs-actions{display:flex;align-items:center;gap:10px;margin:2px 0 18px;padding-top:2px}
.hs-status{font-size:11px;color:var(--ink-2);flex:1}
.hs-actions .danger{margin-left:auto}
.hs-preview{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--bg)}
@media (max-width:860px){.hs-grid{grid-template-columns:1fr}.hs-list{border-right:none;padding-right:0;flex-direction:row;flex-wrap:wrap;min-height:0}.hs-two{grid-template-columns:1fr}}
@media print{.help-beacon,.help-panel,.help-dimcatch,.help-window,.help-spot{display:none!important}}
@media (max-width:760px){
  .updash{padding:16px}
  .updash-grid{grid-template-columns:1fr;gap:16px}
  .updash-scroll{max-height:none}
  .updash-head{display:none}
  .updash-row{grid-template-columns:86px 1fr;grid-auto-rows:auto}
  .updash-row .updash-cell{grid-column:1/-1;padding-left:2px}
  .updash-row .updash-cell::before{content:attr(data-l) ': ';color:var(--ink-2);font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:660}
  .updash-notes{padding-left:12px}
}
@media print{
  .updash-scroll{max-height:none;overflow:visible}
  .updash-tabs{overflow:visible}
  .updash-row{break-inside:avoid}
}

/* ---- The create card: shape, then reality ------------------------------
   The chips choose what the record looks like. The practice control chooses
   whether it is real, which is a different class of decision and an
   irreversible one, so a rule separates them. The consequences are revealed
   by the checkbox itself through a sibling selector: no handler, no state,
   and they appear at the moment they begin to apply rather than sitting
   permanently above the control people use most. */
.rp-new-rule{height:1px;background:var(--line);margin:14px 0 12px}
.rp-practice{display:flex;align-items:flex-start;gap:9px;cursor:pointer;font-size:12.5px;color:var(--ink-3);padding-bottom:4px}
.rp-practice input{margin-top:2px;flex:none}
.rp-practice-label{display:block;font-weight:640;color:var(--ink-2)}
.rp-practice-lede{display:block;color:var(--ink-4);font-size:11.5px;margin-top:2px}
.rp-practice-detail{display:none;margin-top:10px;padding:10px 12px;border:1px solid var(--amber);border-left-width:3px;
  border-radius:9px;color:var(--amber);background:var(--amber-bg);font-size:11.5px;line-height:1.55;max-width:66ch}
.rp-practice:has(input:checked) + .rp-practice-detail{display:block}

/* The create card ended flush against the panel below it, so the practice
   control and the next section read as one block. A card needs a floor. */
.rp-newcard{padding-bottom:22px !important}
.rp-newcard + *{margin-top:18px}
