/* Consult Optio outreach. Phone first: it is used standing up, one-handed,
   between jobs. Nothing clickable is under 44px and no input is under 16px,
   which is the size below which an iPhone zooms the page on focus. */
@font-face{font-family:Manrope;src:url(fonts/Manrope-variable.woff2) format('woff2');
  font-weight:400 800;font-style:normal;font-display:swap}
:root{
  --bg:#faf6f0; --card:#ffffff; --ink:#14100d; --text:#3b322b; --muted:#6a5f56;
  --line:#e7dfd3; --line-strong:#8c8070;
  --ember:#c1440e; --ember-dark:#9e360a; --ember-tint:#fdefe7;
  --go:#1a6b4a; --go-tint:#eaf4ee; --alert:#9b1c1c; --alert-tint:#fbeaea;
  --warn:#7a4d00; --warn-tint:#fdf3dc; --blue:#1d4f8f; --blue-tint:#e9f0fa;
  --r:12px; --r-sm:8px; --shadow:0 1px 2px rgba(20,16,13,.06); --float:0 18px 50px rgba(20,16,13,.22);
  --sans:Manrope,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;
  --tabs-h:60px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,p,ul,ol,dl,dd{margin:0} ul,ol{padding:0;list-style:none}
a{color:var(--ember)}
[hidden]{display:none !important}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:#fff;color:var(--ink);padding:12px 16px;font-weight:700}
.skip:focus{left:0}

/* ---------- frame ---------- */
.top{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:9px;color:var(--ember);text-decoration:none;min-height:44px}
.brand span{font-weight:800;font-size:19px;letter-spacing:-.02em;color:var(--ink)}
.top-date{margin-left:auto;font-size:14px;font-weight:600;color:var(--muted)}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);
  background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0)}
.tabs a{position:relative;display:flex;align-items:center;justify-content:center;min-height:var(--tabs-h);
  font-size:13px;font-weight:700;color:var(--muted);text-decoration:none;border-top:3px solid transparent}
.tabs a[aria-current="page"]{color:var(--ember);border-top-color:var(--ember)}
.tab-n{position:absolute;top:7px;left:calc(50% + 16px);min-width:20px;height:20px;padding:0 6px;border-radius:999px;
  background:var(--ember);color:#fff;font-size:12px;line-height:20px;text-align:center}
main{max-width:980px;margin:0 auto;padding:18px 16px calc(var(--tabs-h) + 40px)}
main:focus{outline:none}
@media(min-width:900px){
  .tabs{position:sticky;top:65px;bottom:auto;grid-template-columns:repeat(5,max-content);gap:6px;justify-content:center;
    border-top:0;border-bottom:1px solid var(--line);padding:0 16px}
  .tabs a{min-height:48px;padding:0 18px;font-size:15px;border-top:0;border-bottom:3px solid transparent}
  .tabs a[aria-current="page"]{border-bottom-color:var(--ember)}
  .tab-n{position:static;margin-right:8px}
  main{padding-bottom:64px}
}

/* ---------- type ---------- */
h1{font-size:26px;line-height:1.15;font-weight:800;letter-spacing:-.025em;color:var(--ink)}
h2{font-size:19px;line-height:1.25;font-weight:800;letter-spacing:-.015em;color:var(--ink)}
h3{font-size:16px;font-weight:700;color:var(--ink)}
.lede{color:var(--muted);margin-top:6px;max-width:62ch}
.small{font-size:14px} .muted{color:var(--muted)} .strong{font-weight:700;color:var(--ink)}
.stack{display:grid;gap:14px} .stack-lg{display:grid;gap:22px}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.spread{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}
.grow{flex:1 1 0;min-width:0}
.mt{margin-top:14px} .mt-lg{margin-top:26px}

/* ---------- controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 18px;border-radius:var(--r-sm);
  border:1.5px solid var(--line-strong);background:var(--card);color:var(--ink);font:inherit;font-weight:700;font-size:15px;
  text-decoration:none;cursor:pointer;text-align:center;line-height:1.2}
.btn:hover{border-color:var(--ink)}
.btn-primary{background:var(--ember);border-color:var(--ember);color:#fff}
.btn-primary:hover{background:var(--ember-dark);border-color:var(--ember-dark)}
.btn-go{background:var(--go);border-color:var(--go);color:#fff}
.btn-quiet{border-color:transparent;background:transparent;color:var(--ember);padding:0 10px;text-decoration:underline;text-underline-offset:3px}
.btn-danger{color:var(--alert);border-color:#d9a3a3}
.btn-sm{min-height:44px;padding:0 13px;font-size:14px}
.btn-block{display:flex;width:100%}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;pointer-events:none}
label.f{display:grid;gap:5px;font-size:14px;font-weight:700;color:var(--ink)}
label.f .hint{font-weight:500;color:var(--muted)}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=search],input[type=number],input[type=date],select,textarea{
  width:100%;min-height:46px;padding:10px 12px;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);
  background:#fff;color:var(--ink);font:inherit;font-size:16px}
textarea{min-height:120px;resize:vertical;line-height:1.45}
input:focus,select:focus,textarea:focus{border-color:var(--ink);outline:2px solid var(--ink);outline-offset:1px}
.check{display:flex;gap:10px;align-items:center;min-height:44px;font-weight:600;color:var(--ink);cursor:pointer}
.check input{width:22px;height:22px;flex:0 0 22px;accent-color:var(--ember)}
.grid2{display:grid;gap:12px;grid-template-columns:1fr}
@media(min-width:620px){.grid2{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr 1fr 1fr}}
.grid3{display:grid;gap:12px}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);overflow:hidden;background:#fff}
.seg button{min-height:46px;padding:0 8px;border:0;background:transparent;font:inherit;font-size:14px;font-weight:700;color:var(--muted);cursor:pointer}
.seg button+button{border-left:1.5px solid var(--line-strong)}
.seg button[aria-pressed="true"]{background:var(--ink);color:#fff}

/* ---------- surfaces ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow);min-width:0}
.card-tight{padding:12px 14px}
.banner{border-radius:var(--r);padding:14px 16px;border:1px solid;display:grid;gap:8px}
.banner-warn{background:var(--warn-tint);border-color:#e5c877;color:#4d3100}
.banner-info{background:var(--blue-tint);border-color:#b5cbe8;color:#0f2f57}
.banner-bad{background:var(--alert-tint);border-color:#e0aaaa;color:#5d0f0f}
.banner-ok{background:var(--go-tint);border-color:#a9d1bc;color:#0e4630}
.banner .btn{justify-self:start}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:2px 10px;border-radius:999px;font-size:13px;font-weight:700;
  background:#f1ebe2;color:var(--text);white-space:nowrap}
.chip-new{background:var(--go-tint);color:var(--go)} .chip-have{background:#f1ebe2;color:var(--muted)}
.chip-maybe{background:var(--warn-tint);color:var(--warn)} .chip-no{background:var(--alert-tint);color:var(--alert)}
.chip-blue{background:var(--blue-tint);color:var(--blue)} .chip-ember{background:var(--ember-tint);color:var(--ember-dark)}
.empty{text-align:center;padding:36px 16px;color:var(--muted)}
.empty h2{margin-bottom:6px}
.sec-head{display:flex;align-items:baseline;gap:10px;margin:26px 0 10px}
.sec-head .count{font-size:14px;font-weight:700;color:var(--muted)}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;font-size:14px}
.kv dt{color:var(--muted)} .kv dd{color:var(--ink);font-weight:600;overflow-wrap:anywhere}

/* ---------- today ---------- */
.task{display:grid;gap:12px}
.task-head{display:flex;gap:10px;align-items:flex-start;justify-content:space-between}
.task-name{font-size:17px;font-weight:800;color:var(--ink);background:none;border:0;padding:0;text-align:left;font-family:inherit;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;
  text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px;overflow-wrap:anywhere}
.task-meta{font-size:13px;color:var(--muted);margin-top:2px}
.msg{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px;font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink)}
.msg.clip{max-height:118px;overflow:hidden;position:relative}
.msg.clip::after{content:"";position:absolute;left:0;right:0;bottom:0;height:44px;background:linear-gradient(transparent,var(--bg))}
.msg-subject{font-weight:800;color:var(--ink);font-size:15px}
.msg-to{font-size:14px;color:var(--muted);overflow-wrap:anywhere}
.msg-foot{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-strong);color:var(--muted);font-size:13px}
.phone-big{font-size:22px;font-weight:800;color:var(--ink);letter-spacing:.01em}
.actions{display:flex;flex-wrap:wrap;gap:8px}
.actions .btn{flex:1 1 auto}
.blocked{background:var(--warn-tint);border:1px solid #e5c877;border-radius:var(--r-sm);padding:12px;color:#4d3100;font-size:14px;display:grid;gap:10px}
.sums{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px}
.sum{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;text-align:center}
.sum b{display:block;font-size:24px;font-weight:800;color:var(--ink);line-height:1.1}
.sum span{font-size:13px;color:var(--muted);font-weight:600}

/* ---------- lists ---------- */
.list{display:grid;gap:8px}
.item{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:start;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:12px 14px;min-width:0}
.item.no-check{grid-template-columns:1fr}
.item input[type=checkbox]{width:22px;height:22px;margin-top:3px;accent-color:var(--ember)}
.item-main{min-width:0;display:grid;gap:4px}
.item-name{font-weight:800;color:var(--ink);overflow-wrap:anywhere}
button.item-name{background:none;border:0;padding:0;font:inherit;font-weight:800;text-align:left;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;
  text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}
.item-sub{font-size:14px;color:var(--muted);overflow-wrap:anywhere}
.item.dim{opacity:.62}
.sticky-bar{position:sticky;bottom:calc(var(--tabs-h) + env(safe-area-inset-bottom,0px) + 8px);z-index:10;background:var(--ink);color:#fff;border-radius:var(--r);
  padding:12px;display:grid;gap:10px;box-shadow:var(--float);margin-top:14px}
.sticky-bar select{background:#fff}
.sticky-bar label.f{color:#fff}
@media(min-width:900px){.sticky-bar{bottom:16px}}
.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px}
.filters{display:grid;gap:10px;grid-template-columns:1fr 1fr}
.filters .wide{grid-column:1/-1}
@media(min-width:760px){.filters{grid-template-columns:2fr 1fr 1fr 1fr 1fr}.filters .wide{grid-column:auto}}
.saved{display:flex;flex-wrap:wrap;gap:8px}
.saved .btn{min-height:44px;font-size:14px}

/* ---------- drawer & modal ---------- */
.drawer{position:fixed;inset:0;z-index:50;background:rgba(20,16,13,.5);display:flex;justify-content:flex-end}
.drawer-in{width:min(560px,100%);height:100%;background:var(--bg);overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 16px calc(28px + env(safe-area-inset-bottom,0px));box-shadow:var(--float)}
.drawer-head{position:sticky;top:0;z-index:2;background:var(--bg);padding:12px 0 10px;display:flex;gap:10px;align-items:flex-start;
  border-bottom:1px solid var(--line);margin-bottom:14px}
.drawer-head h2{flex:1;min-width:0;overflow-wrap:anywhere}
.modal{position:fixed;inset:0;z-index:60;background:rgba(20,16,13,.55);display:flex;align-items:flex-end;justify-content:center}
.modal-in{width:min(620px,100%);max-height:92vh;overflow-y:auto;background:var(--card);border-radius:var(--r) var(--r) 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom,0px));box-shadow:var(--float)}
@media(min-width:700px){.modal{align-items:center}.modal-in{border-radius:var(--r)}}
.timeline{display:grid;gap:10px}
.tl{display:grid;grid-template-columns:auto 1fr;gap:10px;font-size:14px}
.tl time{color:var(--muted);white-space:nowrap}
.dupe{display:grid;gap:10px;grid-template-columns:1fr}
@media(min-width:700px){.dupe{grid-template-columns:1fr 1fr}}

/* ---------- flows ---------- */
.step{border:1px solid var(--line);border-radius:var(--r);background:var(--card);padding:14px;display:grid;gap:10px}
.step-top{display:grid;grid-template-columns:96px 1fr auto;gap:10px;align-items:end}
.fields{display:flex;flex-wrap:wrap;gap:6px}
.fields button{min-height:36px;padding:0 10px;border-radius:999px;border:1px solid var(--line-strong);background:#fff;font:inherit;font-size:13px;font-weight:700;color:var(--ink);cursor:pointer}
.flowline{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:14px;color:var(--muted)}
.flowline .chip{font-weight:700}
table.t{width:100%;border-collapse:collapse;font-size:14px}
table.t th{text-align:left;font-weight:700;color:var(--muted);padding:6px 8px 6px 0;border-bottom:1px solid var(--line)}
table.t td{padding:8px 8px 8px 0;border-bottom:1px solid var(--line);vertical-align:top;overflow-wrap:anywhere}
.scroll-x{overflow-x:auto}

/* ---------- login ---------- */
#login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.login-card{width:min(400px,100%);display:grid;gap:14px}

/* ---------- toasts ---------- */
.toasts{position:fixed;left:12px;right:12px;bottom:calc(var(--tabs-h) + 14px + env(safe-area-inset-bottom,0px));z-index:80;display:grid;gap:8px;justify-items:center;pointer-events:none}
.toast{pointer-events:auto;max-width:560px;background:var(--ink);color:#fff;border-radius:var(--r-sm);padding:12px 16px;font-size:15px;font-weight:600;box-shadow:var(--float)}
.toast.bad{background:var(--alert)}
.toast{display:flex;align-items:center;gap:14px}
.toast button{flex:none;min-height:44px;padding:0 14px;border-radius:var(--r-sm);border:1px solid rgba(255,255,255,.55);background:transparent;color:#fff;font:inherit;font-weight:800;cursor:pointer}
.done-row{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:8px 0;border-top:1px solid var(--line)}
.done-row:first-child{border-top:0}
.done-row .grow{min-width:0;overflow-wrap:anywhere}
button.sum{font:inherit;cursor:pointer;width:100%;min-height:44px}
@media(min-width:900px){.toasts{bottom:20px}}

@media (prefers-reduced-motion: reduce){*{animation:none !important;transition:none !important;scroll-behavior:auto !important}}

/* ---------- letters ---------- */
.letter{background:#fff;color:#000;width:210mm;min-height:297mm;padding:0 22mm 18mm;margin:0 auto 16px;position:relative;
  font-family:Georgia,"Times New Roman",serif;font-size:11.5pt;line-height:1.5;box-shadow:var(--shadow)}
.letter-from{position:absolute;top:14mm;right:22mm;text-align:right;font-family:var(--sans);font-size:9.5pt;line-height:1.4;white-space:pre-line}
.letter-from b{font-size:11pt}
/* sits where the window of a DL envelope falls when A4 is folded in three */
.letter-to{position:absolute;top:47mm;left:22mm;width:85mm;height:32mm;font-family:var(--sans);font-size:11pt;line-height:1.35;white-space:pre-line}
.letter-body{padding-top:96mm;white-space:pre-wrap}
.letter-date{margin-bottom:8mm}
.letter-small{position:absolute;left:22mm;right:22mm;bottom:12mm;font-family:var(--sans);font-size:7.5pt;line-height:1.35;color:#333}
.print-bar{position:sticky;top:0;z-index:5;background:var(--ink);color:#fff;padding:12px 16px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
#print-root{position:fixed;inset:0;z-index:90;background:#d9d2c6;overflow:auto}
.letter-scale{padding:16px 0}
@media(max-width:820px){.letter-scale{zoom:.46}}
@page{size:A4;margin:0}
@media print{
  body{background:#fff}
  body>*:not(#print-root){display:none !important}
  #print-root{position:static;overflow:visible;background:#fff}
  .print-bar{display:none !important}
  .letter-scale{zoom:1;padding:0}
  .letter{box-shadow:none;margin:0;page-break-after:always;break-after:page}
  .letter:last-child{page-break-after:auto;break-after:auto}
}

/* ---------- finding details ---------- */
.bar{height:10px;border-radius:999px;background:var(--line);overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--brand,#c1440e);transition:width .2s}
.found{display:grid;gap:10px}
.found-row{display:flex;gap:10px;align-items:center;justify-content:space-between}
.found-row .grow{min-width:0;overflow-wrap:anywhere}
.stages{gap:6px}
.stages .btn[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.more-filters summary{list-style:none} .more-filters summary::-webkit-details-marker{display:none}
.group-row{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--line)}
.group-row:first-child{border-top:0;padding-top:0}
@media(min-width:760px){.group-row{grid-template-columns:200px 1fr;gap:16px}}
button.linkish{background:none;border:0;padding:0;font:inherit;color:var(--ink);text-align:left;cursor:pointer;min-height:44px;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}
.trade-card>summary{list-style:none;cursor:pointer;min-height:44px;display:grid;gap:2px;align-content:center}
.trade-card>summary::-webkit-details-marker{display:none}
.trade-card[open]>summary{border-bottom:1px solid var(--line);padding-bottom:10px}

/* ---------- two products ---------- */
/* Graft gets its own colour everywhere, so it is always plain which side you are on. */
body[data-brand="graft"]{--ember:#0d6466;--ember-dark:#094a4c;--ember-tint:#e1f1f1}
.brand-switch{display:flex;border:1.5px solid var(--line-strong);border-radius:999px;overflow:hidden;background:#fff;flex:0 0 auto}
.brand-switch button{min-height:44px;padding:0 14px;border:0;background:transparent;font:inherit;font-size:14px;font-weight:800;
  color:var(--muted);cursor:pointer;white-space:nowrap}
.brand-switch button[aria-pressed="true"]{background:var(--ember);color:#fff}
@media(max-width:560px){ .top-date{display:none} .brand span{display:none} .brand-switch{margin-left:auto} }
@media(max-width:340px){ .brand-switch button{padding:0 10px;font-size:13px} }
.score{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:28px;padding:0 8px;border-radius:999px;
  background:var(--ink);color:#fff;font-size:13px;font-weight:800}
.score-lo{background:#efe8de;color:var(--muted)}
.graft-card dl.kv{margin-top:4px}
.regs{display:grid;gap:8px}
.reg{display:flex;flex-wrap:wrap;align-items:center;gap:8px;justify-content:space-between;border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 10px}
.reg label.check{flex:1 1 180px}
.tracks{display:flex;flex-wrap:wrap;gap:8px}
/* research library */
.lib-item{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:6px;min-width:0}
.lib-item p{margin:0}
.lib-md{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px;margin:10px 0 0;font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:60vh;overflow:auto;color:var(--ink)}
.lib-links{margin:10px 0 0;padding-left:22px;display:grid;gap:6px;font-size:14px;overflow-wrap:anywhere}
details>summary{cursor:pointer}
