:root{--navy:#030181;--navyd:#02014a;--ink:#1e1e21;--mut:#565a6e;--line:#e3e6f1;--soft:#f1f3fb;--gold:#d9b25f;--green:#2e9e2a;--red:#c0392b;--amber:#d98d00}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;font-family:Roboto,"Segoe UI",Arial,sans-serif;color:var(--ink);background:#f6f7fb;font-size:14px}
a{color:var(--navy)}h1{font-size:22px;margin:0 0 16px}h2{font-size:16px;margin:22px 0 10px;color:var(--navy)}
.top{background:var(--navy);color:#fff;display:flex;justify-content:space-between;align-items:center;padding:10px 22px}
.brand{display:flex;align-items:center;gap:12px}.logo{width:40px;height:40px;border-radius:50%;background:#fff;display:block;object-fit:contain}
.fn{font-weight:700;font-size:15px}.app{font-size:12px;color:#c9cee0}.user{font-size:13px}.user a{color:#fff}.role{background:rgba(255,255,255,.18);padding:2px 8px;border-radius:10px;font-size:11px;text-transform:uppercase}
.wrap{display:flex;min-height:calc(100vh - 100px)}.side{width:230px;background:#fff;border-right:1px solid var(--line);padding:14px 0}
.side a{display:block;padding:9px 20px;color:var(--ink);text-decoration:none;font-weight:500}.side a.on,.side a:hover{background:var(--soft);color:var(--navy)}
.engnav{margin:8px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 0}.engname{padding:6px 20px;font-weight:700;color:var(--navy)}.engname small{display:block;font-weight:400;color:var(--mut);font-size:11px}
.side a.sub{padding-left:32px;font-size:13px}.main{flex:1;min-width:0;padding:22px 28px 120px;max-width:1200px}  /* room at the foot so the last row scrolls clear of Luna */
.foot{padding:12px 22px;font-size:12px;color:var(--mut);border-top:1px solid var(--line);background:#fff}
.flash{padding:10px 14px;border-radius:6px;margin-bottom:12px}.flash.ok{background:#e7f6e7;color:#1e5e1e}.flash.error{background:#fdecea;color:#8b1e12}.flash.warn{background:#fff5df;color:#7a5200}
table.t{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
table.t th{background:var(--navy);color:#fff;text-align:left;padding:9px 10px;font-size:12px;letter-spacing:.04em}table.t td{padding:8px 10px;border-top:1px solid var(--line);vertical-align:top}
table.t tr:nth-child(even) td{background:#fafbfe}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:16px}
.grid{display:grid;gap:14px}.g1{grid-template-columns:1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
.kpi{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px}.kpi .n{font-size:26px;font-weight:700;color:var(--navy)}.kpi .l{font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.bar{position:relative;height:18px;background:#e9ecf7;border-radius:9px;overflow:hidden;min-width:120px}.bar span{display:block;height:100%;background:var(--navy);border-radius:9px}.bar.rev span{background:var(--green)}.bar b{position:absolute;right:8px;top:1px;font-size:11px;color:#fff;mix-blend-mode:difference}
.phase{padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:#fff}.phase h3{margin:0 0 8px;font-size:14px;color:var(--navy)}.phase .m{font-size:12px;color:var(--mut);margin:4px 0}
form.f{display:grid;gap:10px;max-width:760px}form.f>*{min-width:0}form.f label{display:block;font-size:12px;color:var(--mut);margin-bottom:3px}form.f input,form.f select,form.f textarea{width:100%;padding:8px;border:1px solid #cfd4e6;border-radius:6px;font:inherit}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.btn{display:inline-block;background:var(--navy);color:#fff;border:0;padding:8px 14px;border-radius:6px;font:inherit;cursor:pointer;text-decoration:none;font-weight:500}
.btn.sm{padding:4px 9px;font-size:12px}.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--navy)}.btn.green{background:var(--green)}.btn.warn{background:var(--amber)}.btn.red{background:var(--red)}
.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;background:var(--soft);color:var(--navy);text-transform:capitalize;white-space:nowrap}
.b-complete,.b-reviewed,.b-cleared,.b-approved,.b-accepted,.b-received,.b-locked,.b-signed_partner{background:#e7f6e7;color:#1e5e1e}.b-open,.b-requested,.b-proposed,.b-draft{background:#fff5df;color:#7a5200}.b-not_started,.b-prospect{background:#eee;color:#555}
.b-fieldwork,.b-in_progress,.b-planning{background:#e8ebff;color:var(--navy)}.b-reported,.b-archived{background:#e0e0f5;color:#333}
.inl{display:inline}.mut{color:var(--mut);font-size:12px}.right{text-align:right}.stamp{font-size:11px;color:var(--mut)}.tiny{font-size:11px}
.toolbar{display:flex;gap:8px;align-items:center;margin:8px 0 14px;flex-wrap:wrap}.login{max-width:380px;margin:60px auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:26px}

/* v0.2 finance tables */
.t td.r,.t th.r{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.t td.hi{background:#fff3cd;color:#7a5200;font-weight:600}.t tr.tot td{font-weight:700;border-top:2px solid var(--navy);background:var(--soft)}
.t select,.t input[type=number]{font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--line);border-radius:5px}
textarea{font:inherit;padding:8px;border:1px solid var(--line);border-radius:6px;width:100%;box-sizing:border-box}
.t td:first-child b{white-space:nowrap}

/* ==================== v0.11 — tablets and iPad ====================
   The firm works on iPads in the field. Below 1100px the sidebar becomes a drawer, wide tables scroll
   inside their own box instead of stretching the page, controls grow to a thumb-sized target, and form
   text is 16px so iOS Safari does not zoom the page when a field is focused. */
html{-webkit-text-size-adjust:100%}
img,svg{max-width:100%}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;margin-bottom:2px}
.tw table.t{margin-bottom:0}
.menubtn{display:none}
.navtog{position:absolute;opacity:0;pointer-events:none}
.navscrim{display:none}
.drawerhead{display:none}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:18px;padding:6px 12px;font-size:12px;cursor:pointer;user-select:none;min-height:34px}
.chip input{margin:0;width:16px;height:16px}
.chip:has(input:checked){background:#e8ebff;border-color:var(--navy);color:var(--navy);font-weight:600}

@media (max-width:1100px){
  .top{padding:8px 14px;gap:10px}
  .brand .app{display:none}.user{font-size:12px}
  .menubtn{display:inline-block;background:rgba(255,255,255,.16);color:#fff;border-radius:8px;padding:9px 14px;font-weight:600;cursor:pointer;min-height:40px;line-height:22px}
  .wrap{display:block;min-height:auto}
  .side{position:fixed;top:0;left:0;bottom:0;width:290px;max-width:86vw;z-index:60;overflow-y:auto;-webkit-overflow-scrolling:touch;
        transform:translateX(-102%);transition:transform .2s ease;box-shadow:0 0 24px rgba(0,0,0,.18);padding-top:0}
  .navtog:checked ~ .wrap .side{transform:none}
  .drawerhead{display:flex;align-items:center;gap:10px;background:var(--navy);color:#fff;padding:10px 14px;position:sticky;top:0;z-index:2}
  .drawerhead .logo{width:30px;height:30px}.drawerhead b{flex:1;font-size:14px}
  .closebtn{font-size:26px;line-height:1;padding:2px 10px;cursor:pointer;border-radius:8px;background:rgba(255,255,255,.16)}
  .navtog:checked ~ .navscrim{display:block;position:fixed;inset:0;background:rgba(3,1,129,.28);z-index:55}
  .main{padding:16px 14px 110px;max-width:100%}
  h1{font-size:20px}
  .g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}
  .row{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
  form.f{max-width:100%}
}
/* Touch sizing applies to any tablet, including an iPad in landscape wider than the layout breakpoint:
   thumb-sized controls, and 16px fields so iOS Safari does not zoom the page on focus. */
@media (pointer:coarse),(hover:none),(max-width:1100px){
  .side a{padding:13px 20px;font-size:15px}.side a.sub{padding:11px 20px 11px 30px;font-size:14px}
  form.f input,form.f select,form.f textarea,textarea,.t select,.t input,input,select{font-size:16px}
  form.f input,form.f select,form.f textarea{padding:10px;min-height:42px}
  .btn{padding:11px 16px;min-height:42px}.btn.sm{padding:8px 12px;font-size:13px;min-height:36px}
  summary.btn{min-height:36px;line-height:20px}
  .toolbar{gap:10px}
  table.t th{padding:10px 12px}table.t td{padding:10px 12px}
  .t select,.t input[type=number]{padding:8px;min-height:38px}
  .kpi .n{font-size:22px}
  .chip{min-height:40px;padding:8px 14px;font-size:13px}
  a.tiny{display:inline-block;padding:4px 0;font-size:12px}
}
@media (max-width:760px){
  .g4,.g3,.g2{grid-template-columns:1fr}
  .row{grid-template-columns:1fr}
  /* the grid collapses to one column, so a field spanning 2 or 3 desktop columns must not
     force implicit columns off the edge of the phone screen */
  .row>*{grid-column:1 / -1 !important;min-width:0;max-width:100%}
  .row input:not([type=hidden]),.row select,.row textarea{width:100%}
  /* wide search boxes (inline min-widths meant for desktop) shrink to the screen */
  .toolbar input:not([type=hidden]){min-width:0 !important;flex:1 1 160px;max-width:100%}
  .user .role{display:none}
}
@media print{.menubtn,.navscrim,.tw{display:revert}.tw{overflow:visible}}

/* ==================== v0.12 — palette, breadcrumbs, autosave, next actions ==================== */
.crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--mut);margin:-4px 0 12px}
.crumbs a{color:var(--mut);text-decoration:none}.crumbs a:hover{color:var(--navy);text-decoration:underline}.crumbs span{opacity:.5}
.palbtn{margin-left:auto;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 10px;font:inherit;font-size:12px;color:var(--mut);cursor:pointer;display:flex;gap:6px;align-items:center;min-height:34px}
.palbtn:hover{border-color:var(--navy);color:var(--navy)}
.palbtn kbd{background:var(--soft);border-radius:4px;padding:1px 5px;font-size:11px;font-family:inherit}
.pal{position:fixed;inset:0;background:rgba(3,1,129,.25);z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px}
.pal[hidden]{display:none!important}
.palbox{background:#fff;width:min(680px,100%);border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.28);overflow:hidden}
#palq{width:100%;border:0;border-bottom:1px solid var(--line);padding:16px 18px;font:inherit;font-size:16px;outline:none}
.pallist{max-height:52vh;overflow-y:auto}
.palrow{padding:10px 18px;cursor:pointer;border-bottom:1px solid #f2f4fb;font-size:13px;display:flex;gap:8px;align-items:baseline}
.palrow.on{background:var(--soft)}
.palk{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);background:var(--soft);border-radius:8px;padding:2px 7px;white-space:nowrap}
.palfoot{padding:8px 18px;font-size:11px;color:var(--mut);background:#fafbfe;border-top:1px solid var(--line)}
.saved{display:block;font-size:11px;margin-top:3px;min-height:14px;color:var(--mut)}
.saved.ok{color:#1e5e1e}.saved.err{color:#b00020}.saved.busy{color:var(--mut)}
.na{display:flex;flex-direction:column;gap:8px;margin:10px 0 4px}
.na .act{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:10px;padding:10px 14px}
.na .act.stop{border-left-color:#b00020}.na .act.watch{border-left-color:var(--amber)}.na .act.do{border-left-color:var(--navy)}
.na .act .t{font-weight:600}.na .act .w{font-size:12px;color:var(--mut)}
.na .act .go{margin-left:auto}
@media (max-width:760px){ .na .act{flex-wrap:wrap} .na .act .go{margin-left:0} .palbtn{margin-left:0} }
/* assertion chips inside data tables stay compact so rows do not tower */
.t .chips{min-width:210px;gap:4px}
.t .chip{padding:3px 8px;min-height:26px;font-size:11px;gap:4px}
.t .chip input{width:13px;height:13px}
@media (pointer:coarse),(hover:none){ .t .chip{min-height:34px;padding:6px 10px;font-size:12px} .t .chips{min-width:240px} }

/* v1.0 — the engagement file grouped by audit stage, each group collapsible */
.navgrp{border-top:1px solid var(--line)}
.navgrp summary{list-style:none;cursor:pointer;padding:10px 20px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--mut);display:flex;align-items:center;gap:6px}
.navgrp summary::-webkit-details-marker{display:none}
.navgrp summary::before{content:"";display:none}
.navgrp summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--navy);border-bottom:2px solid var(--navy);transform:rotate(-45deg);transition:transform .18s;flex:none;opacity:.85}
.navgrp[open] summary::after{transform:rotate(45deg)}
.navgrp summary:hover{background:var(--soft);color:var(--navy)}
.navgrp[open] summary{color:var(--navy)}
.navgrp a.sub{padding-left:38px}
@media (pointer:coarse),(hover:none),(max-width:1100px){ .navgrp summary{padding:14px 20px;font-size:13px} .navgrp a.sub{padding-left:38px} }

/* ==================== Luna — the assistant ==================== */
/* The chat launcher: Luna's face in a circle, fixed at the lower right of every page, with a small
   navy chat badge so it reads as something to talk to rather than as decoration. The label sits beside
   it and appears on hover or keyboard focus, so the resting state is just her. */
/* The chat launcher.
   On a wide screen Luna stands at the lower right as a whole figure, the way a mascot assistant does; on a
   narrow one she becomes the round head badge, because a standing figure would cover too much of a working
   paper on a phone. Both images ship, and CSS picks one — no JavaScript, and nothing to go wrong if the
   viewport changes mid-session.
   The figure is transparent art, so the button has no background and no border: a circular border would cut
   her ears off, and a box behind her would undo the point of a cut-out mascot. */
.lunabtn{position:fixed;right:18px;bottom:14px;z-index:150;padding:0;
  background:none;border:0;cursor:pointer;font:inherit;color:var(--navy);display:block;
  width:96px;height:auto;line-height:0;
  filter:drop-shadow(0 10px 14px rgba(20,24,48,.28))}
.lunabtn:hover,.lunabtn:focus-visible{filter:drop-shadow(0 14px 20px rgba(20,24,48,.38))}
.lunabtn img{width:100%;height:auto;display:block;object-fit:contain}
.lunabtn .lunaclip{display:block}
.lunabtn .lunahead-sm{display:none}          /* the round badge, shown only on narrow screens */
/* the badge that says "this is a conversation" */
/* the badge marks her as something to talk to; it belongs on the round head, not on the standing figure */
.lunabtn .lunabadge{display:none;position:absolute;right:9px;bottom:7px;width:20px;height:20px;border-radius:50%;
  background:var(--navy);border:2px solid #fff;align-items:center;justify-content:center}
.lunabtn .lunabadge::before{content:'';width:10px;height:8px;border-radius:3px 3px 3px 0;background:#fff}
/* the label, revealed on hover and always available to a screen reader */
.lunabtn .lunalabel{position:absolute;right:100%;margin-right:6px;top:38%;transform:translateY(-50%) translateX(6px);
  white-space:nowrap;background:#fff;border:1px solid var(--line);border-radius:20px;padding:7px 14px;
  font-weight:600;font-size:13px;color:var(--navy);box-shadow:0 6px 18px rgba(3,1,129,.16);
  opacity:0;pointer-events:none;transition:opacity .16s ease,transform .16s ease}
.lunabtn:hover .lunalabel,.lunabtn:focus-visible .lunalabel{opacity:1;transform:translateY(-50%) translateX(0)}
.lunapanel{position:fixed;right:18px;bottom:18px;z-index:160;width:min(420px,calc(100vw - 36px));max-height:min(640px,calc(100vh - 36px));
  background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 48px rgba(3,1,129,.28);display:flex;flex-direction:column;overflow:hidden}
.lunapanel[hidden]{display:none!important}
.lunahead{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--navy);color:#fff}
.lunahead img{width:38px;height:38px;border-radius:50%;background:#fff}
.lunahead .mut{color:#c9cee0}
.lunax{margin-left:auto;background:rgba(255,255,255,.18);border:0;color:#fff;font-size:22px;line-height:1;border-radius:8px;padding:2px 10px;cursor:pointer;min-height:34px}
.lunalog{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px;min-height:180px;background:#fbfcff}
.lunamsg{display:flex;gap:8px;align-items:flex-start}
.lunamsg.me{justify-content:flex-end}
.lunamsg img{width:28px;height:28px;border-radius:50%;flex:none;background:#fff;border:1px solid var(--line)}
.lunabubble{background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 12px;font-size:13px;max-width:88%}
.lunamsg.me .lunabubble{background:var(--soft);border-color:#dfe4f6}
.lunabubble ul{margin:6px 0 0 16px;padding:0}.lunabubble li{margin-bottom:4px}
.lunachips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px 0}
.lunachips .chip{font-size:11px;padding:5px 10px;min-height:28px;border-radius:14px}
.lunaform{display:flex;gap:8px;padding:10px 12px}
.lunaform input{flex:1;padding:10px;border:1px solid #cfd4e6;border-radius:10px;font:inherit;font-size:16px}
.lunafoot{padding:0 14px 10px;font-size:11px}
@media (max-width:760px){
  .lunabtn .lunalabel{display:none}
  .lunabtn{width:68px;height:68px;right:10px;bottom:10px;filter:drop-shadow(0 8px 16px rgba(3,1,129,.30))}
  .lunabtn .lunabody{display:none}
  .lunabtn .lunahead-sm{display:block}
  .lunabtn .lunabadge{display:flex;right:7px;bottom:6px;width:17px;height:17px}
  .lunapanel{right:8px;left:8px;bottom:8px;width:auto} }
@media print{ .lunabtn,.lunapanel{display:none!important} }

/* ---- Luna, animated: she breathes while she waits, perks up when opened, and wiggles when she answers ---- */
@keyframes luna-bob{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-3px) rotate(-2deg)}}
@keyframes luna-wiggle{0%{transform:rotate(0)}20%{transform:rotate(-12deg) scale(1.06)}40%{transform:rotate(10deg) scale(1.06)}60%{transform:rotate(-7deg)}80%{transform:rotate(4deg)}100%{transform:rotate(0)}}
@keyframes luna-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
@keyframes luna-slide{from{transform:translateY(14px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes luna-dot{0%,80%,100%{transform:translateY(0);opacity:.45}40%{transform:translateY(-4px);opacity:1}}
.lunabtn img{animation:luna-bob 3.4s ease-in-out infinite;transform-origin:50% 92%}
.lunabtn:hover img{animation:luna-wiggle .7s ease-in-out}
.lunapanel:not([hidden]){animation:luna-slide .22s ease-out}
.lunahead img{animation:luna-pop .35s ease-out}
.lunapanel.thinking .lunahead img{animation:luna-bob 1.1s ease-in-out infinite}
.lunapanel.talk .lunahead img{animation:luna-wiggle .7s ease-in-out}
.lunamsg.luna .lunabubble{animation:luna-slide .2s ease-out}
.lunadots{display:inline-flex;gap:4px;align-items:flex-end;height:12px}
.lunadots i{width:6px;height:6px;border-radius:50%;background:var(--navy);display:block;animation:luna-dot 1.1s infinite}
.lunadots i:nth-child(2){animation-delay:.15s}.lunadots i:nth-child(3){animation-delay:.3s}
@media (prefers-reduced-motion:reduce){
  .lunabtn,.lunabtn img,.lunahead img,.lunapanel:not([hidden]),.lunamsg.luna .lunabubble,.lunadots i{animation:none!important}
}
/* touch targets inside Luna */
@media (pointer:coarse),(hover:none),(max-width:1100px){
  .lunachips .chip{min-height:34px;font-size:12px;padding:7px 12px}
  .lunax{min-height:38px;padding:4px 12px}
  .lunaform button{min-height:38px}
}

/* ============ v1.1 — report pack, signature block and public verification ============ */
.sigblock{border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:8px;padding:14px 16px;background:#fbfcff;max-width:640px}
.sigfirm{font-weight:700;letter-spacing:.4px;margin-bottom:34px}
.signame{font-weight:700;text-transform:uppercase}
.sigrole{margin-bottom:6px}
.sigcreds{font-size:12px;line-height:1.55;color:#333}
.vqrow{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.vqbox{flex:none;border:1px solid var(--line);border-radius:8px;padding:8px;background:#fff;line-height:0}
.vcode{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:20px;font-weight:700;letter-spacing:1px;color:var(--navy)}
.vstamp{display:inline-flex;gap:10px;align-items:center;border:1px solid #cfd4e6;border-radius:8px;padding:8px 12px;background:#fff}
.vstampqr{line-height:0;flex:none}
.vstamptext{font-size:11px;line-height:1.5}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

/* the public page has no application chrome at all */
.vbody{background:#f4f6fb;margin:0;font-family:Roboto,system-ui,-apple-system,"Segoe UI",sans-serif;color:#1b1b22}
.vwrap{max-width:720px;margin:0 auto;padding:24px 16px 48px}
.vhead{display:flex;align-items:center;gap:12px;padding:8px 0 18px;border-bottom:2px solid var(--navy)}
.vhead img{width:44px;height:44px;border-radius:50%}
.vbody h1{font-size:24px;margin:22px 0 10px;color:var(--navy)}
.vbody h2{font-size:17px;margin:0 0 10px;color:var(--navy)}
.vlead{color:#4a4f63;margin-bottom:18px}
.vcard{background:#fff;border:1px solid #dfe3f0;border-radius:12px;padding:18px 20px;margin-bottom:16px}
.vcard.vgreen{border-left:5px solid #1a7f43}
.vcard.vamber{border-left:5px solid #b7791f}
.vcard.vred{border-left:5px solid #b42318}
.vcard.vgrey{border-left:5px solid #8a8fa2}
.vbig{font-size:18px;font-weight:600;margin:0 0 12px}
.vgreen .vbig{color:#1a7f43}.vamber .vbig{color:#8a5a06}.vred .vbig{color:#b42318}
.vref{font-family:ui-monospace,monospace;font-size:18px;font-weight:700;letter-spacing:1px}
.vdl{display:grid;grid-template-columns:210px 1fr;gap:6px 16px;margin:12px 0 0;font-size:14px}
.vdl dt{color:#5b6076}
.vdl dd{margin:0}
.vform{display:flex;flex-direction:column;gap:8px;max-width:420px}
.vform label{font-size:13px;color:#5b6076}
.vform input{padding:12px;border:1px solid #cfd4e6;border-radius:8px;font:inherit;font-size:16px;text-transform:none}
.vform .btn{align-self:flex-start}
.vwrong{color:#b42318;font-size:14px}
.vtable{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px}
.vtable th,.vtable td{border-bottom:1px solid #e6e9f4;padding:8px 6px;text-align:left;vertical-align:top}
.vtable tr.vmatch{background:#eafaf0}
.vtable tr.vmiss{opacity:.55}
.vhashcell{word-break:break-all;font-size:11px;letter-spacing:.5px}
.vhash{font-size:13px;display:inline-block;margin-top:6px}
.vhash.ok{color:#1a7f43;font-weight:600}
.vhash.bad{color:#b42318;font-weight:600}
.vfoot{margin-top:24px;padding-top:14px;border-top:1px solid #dfe3f0}
@media (max-width:560px){ .vdl{grid-template-columns:1fr} .vdl dt{margin-top:8px} }
@media print{ .vstamp{border-color:#000} }
.accsel{font-size:11px;padding:2px 4px;margin-bottom:3px;display:block;width:100%;border:1px solid #d7dbe9;border-radius:5px;color:#5b6076;background:#fbfcff}

/* ---- audit program steps, branches and the review ladder (v1.3) ---- */
.card.step{border-left:4px solid #030181}
.card.step.sub{margin-left:26px;border-left-color:#8b8fd6;background:#fbfbff}
.card.step.na{opacity:.62}
.card.step.dormant{opacity:.55;border-left-style:dashed}
.card.step .brq{margin:10px 0;padding:10px 12px;background:#f2f3fb;border-radius:6px}
.card.step .brq label{display:block;font-weight:600;margin-bottom:6px}
.ladder{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 4px}
.ladder .lstep{flex:1 1 180px;min-width:150px;border:1px solid #dfe3f0;border-radius:6px;padding:8px 10px;background:#fff}
.ladder .lstep b{display:block;font-size:12px;letter-spacing:.02em}
.ladder .lstep.ok{border-color:#b9dfc8;background:#f3faf5}
.ladder .lstep.open{border-color:#e9cfa6;background:#fdf8f0}
.ladder .lstep.extra{border-style:dashed}
.ladder .lstep .stamp{display:block;margin-top:2px;font-size:11px;color:#5b6076}
@media (max-width:560px){ .card.step.sub{margin-left:10px} .ladder .lstep{flex:1 1 100%} }
.card.step details.ret{margin-top:8px}
.card.step details.ret[open]{background:#fdf6f0;border:1px solid #e9cfa6;border-radius:6px;padding:8px 10px}
.card.step details.rethist{margin-top:8px}
.card.step details.rethist summary{cursor:pointer;color:#a4560b}

/* ---- the Firm's working paper header block ---- */
.wph{width:100%;border-collapse:collapse;margin:0 0 14px;font-size:13px;background:#fff;border:1px solid #cfd4e6}
.wph th{text-align:left;font-weight:600;color:#5b6076;background:#f5f6fc;padding:5px 9px;border:1px solid #e2e5ee;width:170px;vertical-align:top}
.wph td{padding:5px 9px;border:1px solid #e2e5ee}
@media print{ .wph{border-color:#000} .wph th,.wph td{border-color:#000} }
@media (max-width:620px){ .wph th{width:auto} .wph tr{display:block;border-bottom:1px solid #e2e5ee} .wph th,.wph td{display:block;width:auto;border:0} }
tr.missingdoc td{background:#fdecee}
tr.missingdoc td:first-child{box-shadow:inset 3px 0 0 #a11028}
td.warnc,.warnc{color:#a4560b;font-weight:600}
.creply{border-left:3px solid #cfd4e6;padding:6px 10px;margin:6px 0 6px 12px;background:#fbfcff;border-radius:0 6px 6px 0;font-size:13px}

/* ---- Stage progress: one stacked column per stage, three states, nothing else ----
   Pastel red is work nobody has started, orange is work prepared but not reviewed, fern green is work
   that is finished. The three are the whole vocabulary, so a chart can be read across a room.

   The columns are drawn in three dimensions, and the depth is geometry rather than decoration: each slab
   has a front face, a right-hand side face skewed 45 degrees, and — on the slab that finishes the column
   — a top face, so the stack reads as one solid block extruded towards the reader. Two pseudo-elements
   and no library, which is why it costs nothing to load and prints as it appears. */
.stchart{display:flex;gap:30px;align-items:flex-end;flex-wrap:wrap;padding:6px 4px 0;
  justify-content:flex-start;border-bottom:2px solid #d7dbe8}
.stcolwrap{flex:0 1 64px;min-width:56px;max-width:72px;text-align:center}
.stchart.big .stcolwrap{flex:0 1 80px;max-width:88px}
.stcol{--d:8px;--h:124px;height:var(--h);width:calc(100% - var(--d));
  margin:var(--d) var(--d) 0 0;display:flex;flex-direction:column;justify-content:flex-end;position:relative}
.stcol > *{position:relative;display:flex;align-items:center;justify-content:center;flex:none;
  font-size:11px;font-weight:700;text-decoration:none;white-space:nowrap;overflow:visible;
  transition:filter .12s ease}
/* the right-hand side face, on every slab */
.stcol > *::after{content:'';position:absolute;right:calc(var(--d) * -1);top:0;width:var(--d);height:100%;
  transform:skewY(-45deg);transform-origin:left top;background:inherit;filter:brightness(.74)}
/* the top face, only on the slab that finishes the column */
.stcol > .cap::before{content:'';position:absolute;left:0;top:calc(var(--d) * -1);width:100%;height:var(--d);
  transform:skewX(-45deg);transform-origin:bottom left;background:inherit;filter:brightness(1.16)}
.stcol a:hover{filter:brightness(1.08);z-index:3}
.stcol .s-open{background:#FF6961;color:#5e1713}
.stcol .s-working{background:#F09537;color:#4d2a06}
.stcol .s-done{background:#4F7942;color:#fff}
.stcol .s-none{background:#e3e6ef;color:#767b8e;font-weight:500;font-size:10px}
.stlabel{font-size:11px;font-weight:700;color:var(--navy);margin-top:8px;line-height:1.2;white-space:nowrap}
.stpc{white-space:nowrap}
.stpc{font-size:11px;color:#5a5f70;margin-top:2px}
.stcol.lg{--d:10px;--h:186px}.stcol.lg > *{font-size:12px}
@media print{ .stcol > *::after,.stcol > .cap::before{display:none} .stcol{margin:0} }
.stkey{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:12px;color:#4a4f63;margin:14px 0 0}
.stkey b{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.stkey i{width:12px;height:12px;border-radius:2px;display:inline-block;position:relative}
.stkey i::before{content:'';position:absolute;left:0;top:-4px;width:100%;height:4px;background:inherit;
  transform:skewX(-45deg);transform-origin:bottom left;filter:brightness(1.16)}
.stkey i::after{content:'';position:absolute;right:-4px;top:0;width:4px;height:100%;background:inherit;
  transform:skewY(-45deg);transform-origin:left top;filter:brightness(.74)}
.stkey .k-open{background:#FF6961}.stkey .k-working{background:#F09537}.stkey .k-done{background:#4F7942}
.stcap{font-size:11px;color:#5a5f70;margin-top:3px;display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.stcap b{font-weight:700}
.stcap .c-open{color:#c0392f}.stcap .c-working{color:#a4690b}.stcap .c-done{color:#3d5f33}
/* the per-engagement drawer of what is pending and what is due */
.stpend{margin-top:8px;border:1px solid var(--line);border-radius:10px;background:#fbfcff}
.stpend>summary{cursor:pointer;padding:9px 12px;font-weight:600;font-size:13px;color:var(--navy);list-style:none;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.stpend>summary::-webkit-details-marker{display:none}
.stpend>summary::before{content:'\25B8';color:#8a8fa3;font-size:12px}
.stpend[open]>summary::before{content:'\25BE'}
.stpend .pbody{padding:0 12px 12px}
.stpend ul{margin:6px 0 0;padding-left:0;list-style:none}
.stpend li{display:flex;gap:8px;align-items:flex-start;padding:5px 0;border-top:1px solid #edeff6;font-size:13px}
.stpend li:first-child{border-top:0}
.stpend li .dot{width:9px;height:9px;border-radius:50%;flex:none;margin-top:5px}
.stpend li .dot.open{background:#FF6961}.stpend li .dot.working{background:#F09537}
.stpend li a{margin-left:auto;flex:none}
.stfilters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin:0 0 14px}
.stfilters label{display:block;font-size:11px;color:#5a5f70;margin-bottom:3px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.stfilters select{padding:8px 10px;border:1px solid #cfd4e6;border-radius:8px;font:inherit;font-size:14px;background:#fff;min-width:180px}
.dline{display:flex;gap:8px;align-items:center;font-size:12.5px;padding:4px 0;border-top:1px solid #edeff6}
.dline:first-child{border-top:0}
.dline .dd{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:600}
.dline .late{color:#c0392f}.dline .soon{color:#a4690b}.dline .ok{color:#4a4f63}
@media (max-width:760px){ .stfilters select{width:100%} .stfilters>div{flex:1 1 100%} }

/* ---- structured working papers ---- */
.objective{background:var(--soft);border-color:#dfe3f3}
form.paper{max-width:100%;display:block}form.paper .pf{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:8px;display:grid;grid-template-columns:minmax(220px,38%) 1fr;gap:6px 16px;align-items:start}
form.paper .pf.wide,form.paper .pf:has(.grid){grid-template-columns:1fr}form.paper .pf label{font-size:13px;color:var(--ink);margin:0}form.paper .pf .pfin{display:grid;gap:6px}
form.paper .pf .pfin input,form.paper .pf .pfin select,form.paper .pf .pfin textarea{width:100%;padding:7px;border:1px solid #cfd4e6;border-radius:6px;font:inherit}
form.paper .pf .pfin input[placeholder^="Details"]{font-size:12px;background:#fbfbfe}.req{color:var(--red)}.pf .tiny.mut{grid-column:1/-1;margin-top:-4px}
.pf .inq{grid-template-columns:2fr 2fr 1fr}
table.t.grid td{padding:4px 6px}table.t.grid input,table.t.grid select{width:100%;min-width:110px;padding:5px;border:1px solid #cfd4e6;border-radius:5px;font:inherit;font-size:12px}
table.t.grid tr.removed td{opacity:.45;text-decoration:line-through}details.addrow{margin-top:6px}details.addrow summary{cursor:pointer;color:var(--navy);font-size:13px;font-weight:500}
.toolbar.sticky{position:sticky;bottom:0;background:#f6f7fbee;padding:10px 0;border-top:1px solid var(--line);backdrop-filter:blur(3px);z-index:2}
select.outcome{font-weight:600;color:var(--navy)}
@media (max-width:700px){form.paper .pf{grid-template-columns:1fr}.pf .inq{grid-template-columns:1fr}}
/* ---- letters ---- */
.letter{font-family:Georgia,"Times New Roman",serif;font-size:13.5px;line-height:1.5;max-width:720px}.letter h3{font-size:14px;margin:14px 0 6px;color:var(--navy)}.letter p{margin:0 0 10px}.letter ul{margin:0 0 10px 20px}.letter .sig{margin:14px 0 10px}
.letterwrap{grid-template-columns:1fr 1fr}@media (max-width:1000px){.letterwrap{grid-template-columns:1fr}}
table.t.tick td b{font-family:Consolas,monospace}
/* ---- standards register ---- */
.stdlist details.std{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:6px}.stdlist details.std summary{cursor:pointer}.stdlist details.std.check summary{border-left:4px solid var(--amber);padding-left:8px}.stdlist details.std.withdrawn summary{opacity:.7}.stdbody{padding:6px 0 2px}.stdbody p{margin:4px 0}
.b-current{background:#e7f6e7;color:#1e5e1e}.b-revised{background:#e7f6e7;color:#1e5e1e}.b-check{background:#fff5df;color:#7a5200}.b-withdrawn{background:#eee;color:#555}

/* ---- loading feedback ---- */
.spin{display:inline-block;width:12px;height:12px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;vertical-align:-2px;animation:aacspin .8s linear infinite}.btn.ghost .spin{border-color:rgba(3,1,129,.3);border-top-color:var(--navy)}
@keyframes aacspin{to{transform:rotate(360deg)}}form.busy{opacity:.85}
button.btn:disabled{opacity:.7;cursor:progress}

/* ==================== v1.6 — the bell, the queue, drafts, aging, empty states ==================== */
.top{position:relative}
.user{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;position:relative}
.user .uname{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2;text-align:right}
.user .uname b{font-size:13px;font-weight:600}.user .uname .role{margin-top:3px}
/* the account menu: the name and role, then one button that opens My account, Notifications and Sign out */
.acct{position:relative;margin-left:6px}
.acctbtn{background:none;border:0;color:#fff;border-radius:24px;padding:2px 4px 2px 2px;font:inherit;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;gap:4px}
.avatar{display:inline-block;border-radius:50%;object-fit:cover;background:#fff;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.25);vertical-align:middle;flex:none}
.avatar.ini{display:inline-flex;align-items:center;justify-content:center;background:#e8ebff;color:var(--navy);font-weight:700;letter-spacing:.02em}
.accthead{flex-direction:row!important;align-items:center;gap:10px}.accthead .avatar{box-shadow:none;border-color:var(--line)}
.acctbtn:hover .avatar,.acctbtn:focus-visible .avatar{box-shadow:0 0 0 3px rgba(255,255,255,.55)}.acctbtn:focus-visible{outline:2px solid #fff;outline-offset:1px}.acctbtn:focus:not(:focus-visible){outline:none}
.acctbtn .caret{font-size:11px;opacity:.8}
.acctdrop{position:absolute;right:0;top:46px;min-width:230px;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 44px rgba(3,1,129,.22);z-index:171;overflow:hidden;padding:6px 0;text-align:left}
.acctdrop[hidden]{display:none}
.user .acctdrop a{display:block;padding:10px 16px;color:var(--ink);text-decoration:none;font-size:13px;font-weight:500}
.user .acctdrop a:hover,.user .acctdrop a:focus-visible{background:var(--soft);color:var(--navy)}
.user .acctdrop a .tiny{display:block;font-weight:400;color:var(--mut)}
.user .acctdrop a.signout{border-top:1px solid var(--line);margin-top:4px;color:var(--red)}
.accthead{padding:8px 16px 10px;border-bottom:1px solid var(--line);margin-bottom:4px;display:flex;flex-direction:column;gap:2px}.accthead b{color:var(--navy)}
/* the bell sits at the far right, after the account menu */
.bell{position:static;margin-left:4px;display:inline-flex;align-items:center}
.bellbtn{background:rgba(255,255,255,.12);border:0;color:#fff;border-radius:50%;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;position:relative;padding:0}
.bellbtn:hover,.bellbtn:focus-visible{background:rgba(255,255,255,.22);outline:2px solid #fff;outline-offset:1px}
.bellbtn:focus:not(:focus-visible){outline:none}
.bellcount{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#e5484d;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--navy);line-height:1}
.bellcount[hidden]{display:none}
@keyframes bell-ring{0%,100%{transform:rotate(0)}20%{transform:rotate(14deg)}40%{transform:rotate(-12deg)}60%{transform:rotate(8deg)}80%{transform:rotate(-6deg)}}
.bellbtn.ring svg{animation:bell-ring .9s ease-in-out;transform-origin:50% 10%}
.belldrop{position:absolute;right:0;top:48px;width:min(400px,calc(100vw - 24px));background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 44px rgba(3,1,129,.22);z-index:170;overflow:hidden}
.belldrop[hidden]{display:none}
.bellhead{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line)}.bellhead b{flex:1;font-size:14px;color:var(--navy)}
.belllist{max-height:min(420px,60vh);overflow-y:auto}
.bellrow{display:flex;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);font-size:13px;line-height:1.35}
.bellrow:hover{background:var(--soft)}.bellrow.unread{background:#f3f4ff}.bellrow.unread .belltxt b{color:var(--navy)}
.bellrow.mut{display:block;padding:18px 14px;text-align:center}
.bellico{flex:none;width:26px;height:26px;border-radius:50%;background:var(--soft);color:var(--navy);display:flex;align-items:center;justify-content:center;font-size:13px}
.belltxt{display:flex;flex-direction:column;gap:2px;min-width:0}.belltxt b{font-weight:600;font-size:13px}
.bellfoot{padding:8px 14px;font-size:12px;border-top:1px solid var(--line);background:#fafbfe}
.user .belldrop a{color:var(--navy)}.user .belldrop a.bellrow{color:var(--ink)}.user .belldrop{font-size:13px;text-align:left}
.navn{display:inline-block;margin-left:8px;background:#e5484d;color:#fff;border-radius:10px;font-size:11px;font-weight:700;padding:1px 7px;vertical-align:1px}
.navn:empty{display:none}
tr.nt-unread td{background:#f3f4ff!important}.nt-ico{font-size:16px;text-align:center;color:var(--navy)}
@media (max-width:760px){ .bell{margin-left:0} .belldrop,.acctdrop{position:fixed;left:8px;right:8px;top:58px;width:auto} .acctbtn{padding:8px 10px} .user .uname{display:none} .user{flex-wrap:nowrap;flex:none} .brand{min-width:0} .brand .fn{font-size:13px;line-height:1.15;max-width:130px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical} .acctbtn{min-height:40px} .bellbtn{width:36px;height:36px} }
@media print{ .bell{display:none!important} }

/* the review queue */
.queue-item{display:grid;grid-template-columns:1fr auto;gap:10px 18px;align-items:start}
.queue-item .qmeta{font-size:12px;color:var(--mut);margin-top:2px}
.queue-actions{display:flex;flex-direction:column;gap:8px;min-width:170px}
.queue-actions form{margin:0}.queue-actions .btn{width:100%;text-align:center}
.qnext{border-left:4px solid var(--navy);padding-left:14px}
@media (max-width:760px){ .queue-item{grid-template-columns:1fr} .queue-actions{min-width:0} }

/* aging tint on trackers: quiet for a week, amber after, red after two */
.age{display:inline-block;font-size:11px;padding:1px 7px;border-radius:9px;background:#eef0f6;color:#4a4f63;white-space:nowrap}
.age.amber{background:#fff1cc;color:#6b4a00}.age.red{background:#fde2e2;color:#8b1e12;font-weight:600}
tr.age-amber td{background:#fffaf0!important}tr.age-red td{background:#fff5f5!important}

/* empty states: what belongs here and the first thing to do */
.empty{border:1px dashed #c9cee0;border-radius:12px;padding:26px 22px;text-align:center;background:#fbfcff;margin:8px 0 16px;max-width:640px}
.empty .empty-t{font-weight:700;color:var(--navy);font-size:15px;margin-bottom:6px}
.empty p{margin:0 0 12px;color:var(--mut);font-size:13px}

/* sticky headers on long tables */
.tw{max-height:none}
table.t thead th,table.t tr:first-child th{position:sticky;top:0;z-index:3}
@media (max-width:1100px){ table.t thead th,table.t tr:first-child th{top:0} }

/* paper section navigation and the draft indicator */
.paperwrap{display:grid;grid-template-columns:1fr 220px;gap:18px;align-items:start}
.secnav{position:sticky;top:12px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 0;font-size:13px;max-height:calc(100vh - 40px);overflow-y:auto}
.secnav a{display:flex;align-items:center;gap:8px;padding:7px 12px;color:var(--ink);text-decoration:none}
.secnav a:hover,.secnav a.on{background:var(--soft);color:var(--navy)}
.secnav .tick{flex:none;width:16px;height:16px;border-radius:50%;border:2px solid #c9cee0;display:inline-flex;align-items:center;justify-content:center;font-size:10px;color:#fff}
.secnav .tick.done{background:var(--green);border-color:var(--green)}.secnav .tick.part{border-color:var(--amber);background:#fff}.secnav .tick.none{border-color:#e3e6f1;color:#9aa0b8}
.secnav .secnav-t{padding:4px 12px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.draftbar{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--mut);padding:6px 0}
.draftbar .dot{width:8px;height:8px;border-radius:50%;background:#c9cee0}.draftbar.dirty .dot{background:var(--amber)}.draftbar.saved .dot{background:var(--green)}.draftbar.err .dot{background:var(--red)}
@media (max-width:1100px){ .paperwrap{grid-template-columns:1fr} .secnav{position:static;max-height:none;display:flex;flex-wrap:wrap;padding:6px} .secnav a{padding:6px 10px} .secnav .secnav-t{width:100%} }

/* review-status badges carry a mark as well as a colour (colour-blind safe) */
.badge.b-reviewed::before,.badge.b-cleared::before,.badge.b-approved::before,.badge.b-signed_partner::before,.badge.b-complete::before{content:"✓ "}
.badge.b-open::before,.badge.b-requested::before,.badge.b-proposed::before,.badge.b-draft::before{content:"○ "}
.badge.b-prepared::before,.badge.b-in_progress::before,.badge.b-received::before{content:"◐ "}
/* contrast: amber and gold text on white meet WCAG AA */
.b-open,.b-requested,.b-proposed,.b-draft{color:#5c3d00}
.btn.warn{color:#1e1e21}
.kpi .l{color:#4a4f63}
.mut{color:#4d5166}
/* headline figures are links */
a.kpi-go{display:block;text-decoration:none;color:inherit;transition:box-shadow .12s,transform .12s}
a.kpi-go:hover,a.kpi-go:focus-visible{box-shadow:0 8px 20px rgba(3,1,129,.14);transform:translateY(-1px);border-color:var(--navy)}
a.kpi-go .go{opacity:0;transition:opacity .12s}a.kpi-go:hover .go{opacity:1}
/* keyboard focus is always visible */
a:focus-visible,button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #7b8cff;outline-offset:2px}
/* a table's rounded corners are clipped without making it a scroll container, so header rows can stick */
table.t{overflow:clip}

/* the bar that appears when rows are ticked */
.bulkbar{position:sticky;top:0;z-index:4;display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#e8ebff;border:1px solid var(--navy);border-radius:8px;padding:8px 12px;margin:8px 0;font-size:13px}
.bulkbar[hidden]{display:none}

/* the kind of procedure (PSA 500) */
.evt{display:inline-block;font-size:10.5px;padding:1px 7px;border-radius:9px;background:#eef0f6;color:#3b4160;white-space:nowrap;margin:1px 2px 1px 0;border:1px solid transparent}
.evt-confirmation{background:#e3f2ff;color:#0b4a8b}.evt-analytical{background:#e9f7ec;color:#1e5e1e}.evt-recalculation,.evt-reperformance{background:#fff1cc;color:#6b4a00}
.evt-observation,.evt-inspection_assets{background:#f3e8ff;color:#5b2a86}.evt-inquiry{background:#fde2e2;color:#8b1e12}.evt-walkthrough{background:#e0f7f4;color:#0b5e55}.evt-judgement{background:#f1f1f1;color:#555}
.evgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin:8px 0 14px}
.evcard{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;text-decoration:none;color:var(--ink)}
.evcard b{color:var(--navy)}.evcard .n{font-size:22px;font-weight:700;color:var(--navy)}.evcard:hover,.evcard.on{border-color:var(--navy);box-shadow:0 6px 18px rgba(3,1,129,.12)}

/* Luna can be dragged; while she moves nothing else reacts */
.lunabtn img,.lunahead img{-webkit-user-drag:none;user-select:none;pointer-events:none}
.lunabtn{cursor:grab}.lunabtn.dragging{cursor:grabbing}.lunabtn.dragging img{animation:none!important}
.lunapanel.dragging{user-select:none;box-shadow:0 24px 60px rgba(3,1,129,.36)}
.lunabtn .lunalabel::after{content:" · drag to move";font-weight:400;color:var(--mut)}
/* AGA footnotes: the standards behind a section */
sup.fn{font-size:.7em;line-height:0;vertical-align:super}sup.fn a{text-decoration:none;color:var(--navy);font-weight:700}
.fnotes{margin:12px 0 0;padding:8px 0 0 20px;border-top:1px solid var(--line);font-size:11.5px;color:#4d5166}.fnotes li{margin:2px 0}.fnback{text-decoration:none;color:#9aa0b8}
