*,*::before,*::after{box-sizing:border-box}
:root{
  --bg:#f3f6f4;--surface:#fff;--ink:#182420;--muted:#51615a;
  --brand:#114633;--brand-deep:#0c3526;--brand-weak:#e3efe8;--brand-line:#bcd6c9;
  --line:#dde4e0;--amber-ink:#8a6500;--amber-bg:#fff6dd;--amber-line:#e6c25c;
  --focus:#2c7a5b;--star:#c98a00;
  --r-s:8px;--r-m:12px;--r-l:16px;
  --t:180ms cubic-bezier(.22,.61,.36,1);
  --z-sticky:10;--z-toast:30;
  --fs-0:.8125rem;--fs-1:.9375rem;--fs-2:1.125rem;--fs-3:1.375rem;--fs-4:1.625rem;
}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:var(--fs-1)/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--ink)}
.hidden{display:none!important}
.skip{position:absolute;left:-9999px;top:0;background:var(--surface);padding:8px 14px;border-radius:0 0 8px 0;z-index:40}
.skip:focus{left:0}
:focus-visible{outline:2.5px solid var(--focus);outline-offset:2px;border-radius:4px}
button{font:inherit;color:inherit}
svg.i{width:1.05em;height:1.05em;vertical-align:-.16em;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---------- header ---------- */
header{position:sticky;top:0;z-index:var(--z-sticky);display:flex;gap:12px;align-items:center;background:var(--brand);color:#fff;padding:10px 16px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none;font-weight:750;font-size:var(--fs-2);letter-spacing:-.01em;white-space:nowrap}
#search{flex:1;min-width:160px;max-width:480px;padding:9px 13px;border-radius:9px;border:1px solid transparent;font-size:var(--fs-1);background:rgba(255,255,255,.93)}
#search:focus{outline:2.5px solid #9fd4bc;background:#fff}
header nav{display:flex;gap:4px}
header nav a{display:flex;align-items:center;gap:6px;color:#d7e8df;text-decoration:none;font-size:var(--fs-0);font-weight:600;padding:7px 10px;border-radius:8px;transition:background var(--t),color var(--t);white-space:nowrap}
header nav a:hover,header nav a[aria-current]{color:#fff;background:rgba(255,255,255,.13)}
main{max-width:960px;margin:0 auto;padding:24px 16px 64px}

/* ---------- brand filter bar ---------- */
.brandbar{position:sticky;top:0;z-index:calc(var(--z-sticky) - 1);display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface);border-bottom:1px solid var(--line);padding:8px 16px;max-width:960px;margin:0 auto}
.brandbar .bb-label{font-size:var(--fs-0);font-weight:600;color:var(--muted);margin-right:2px}
.bb-chip{font-size:var(--fs-0);font-weight:600;line-height:1;padding:6px 12px;border-radius:999px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;transition:background var(--t),color var(--t),border-color var(--t)}
.bb-chip:hover{border-color:var(--muted)}
.bb-chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.bb-calibo[aria-pressed="true"]{background:#1d5bb8;border-color:#1d5bb8}
.bb-li[aria-pressed="true"]{background:#1d7a3f;border-color:#1d7a3f}
.bb-shared[aria-pressed="true"]{background:#6741b5;border-color:#6741b5}
.bb-calibo[aria-pressed="false"]{color:#1d5bb8;border-color:#bcd0ee}
.bb-li[aria-pressed="false"]{color:#1d7a3f;border-color:#bfe0c9}
.bb-shared[aria-pressed="false"]{color:#6741b5;border-color:#d5cbef}
@media(max-width:640px){.brandbar{padding:7px 10px;gap:6px;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}.bb-chip{white-space:nowrap;flex:none}}
footer{text-align:center;color:var(--muted);font-size:var(--fs-0);padding:20px}

/* ---------- type ---------- */
h1{font-size:var(--fs-4);line-height:1.25;letter-spacing:-.015em;margin:.3em 0 .45em;text-wrap:balance}
h2{font-size:var(--fs-2);letter-spacing:-.01em;margin:1.5em 0 .55em;display:flex;align-items:center;gap:8px}
h3{font-size:var(--fs-1);margin:.2em 0}
a{color:var(--brand)}
.sub{color:var(--muted);max-width:65ch;margin:0 0 4px}

/* ---------- cards & rows ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin:12px 0 4px}
.card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 15px;text-decoration:none;color:var(--ink);display:block;transition:border-color var(--t),box-shadow var(--t)}
.card:hover{border-color:var(--brand-line);box-shadow:0 2px 10px rgba(17,70,51,.08)}
.card h3{padding-right:28px;display:flex;gap:8px;align-items:baseline}
.card p{margin:4px 0 0;color:var(--muted);font-size:var(--fs-0)}
.row{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:12px 15px;margin:8px 0;text-decoration:none;color:var(--ink);transition:border-color var(--t)}
.row:hover{border-color:var(--brand-line)}
.row small{color:var(--muted)}
.kind{font-size:11px;font-weight:600;letter-spacing:.02em;background:var(--brand-weak);color:var(--brand);border-radius:5px;padding:2px 7px;white-space:nowrap}
.kind.ws-calibo{background:#e3edfb;color:#1d5bb8}
.kind.ws-li{background:#e2f3e8;color:#1d7a3f}
.kind.ws-shared{background:#eee9f8;color:#6741b5}
.row .kind:last-child{margin-left:auto}
.bb-scope{font-size:var(--fs-0);font-weight:600;color:var(--muted)}

/* ---------- star ---------- */
.star{position:absolute;top:9px;right:9px;background:none;border:none;cursor:pointer;padding:5px;border-radius:7px;color:#b3bdb8;transition:color var(--t),transform var(--t)}
.star:hover{color:var(--star);transform:scale(1.12)}
.star[aria-pressed="true"]{color:var(--star)}
.star[aria-pressed="true"] svg{fill:var(--star)}
.star.inline{position:static;padding:6px}

/* ---------- troubleshooting hub ---------- */
.hub-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:16px 0}
.hub-opt{display:flex;flex-direction:column;gap:4px;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-l);padding:18px;cursor:pointer;text-align:left;text-decoration:none;color:var(--ink);transition:border-color var(--t),box-shadow var(--t)}
.hub-opt:hover{border-color:var(--brand);box-shadow:0 3px 12px rgba(17,70,51,.1)}
.hub-opt b{font-size:var(--fs-2);display:flex;align-items:center;gap:8px}
.hub-opt span{color:var(--muted);font-size:var(--fs-0)}

/* ---------- diagnosis trail (signature) ---------- */
.trail{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:6px 0 14px;font-size:var(--fs-0)}
.trail button{background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:4px 10px;cursor:pointer;color:var(--muted);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:border-color var(--t),color var(--t)}
.trail button:hover{border-color:var(--brand);color:var(--brand)}
.trail button[aria-current]{background:var(--brand-weak);border-color:var(--brand-line);color:var(--brand);font-weight:600}
.trail .sep{color:var(--brand-line)}
.trail .home-link{color:var(--muted);text-decoration:none;padding:4px 6px}
.trail .gen-pill{background:#e3edfb;border:1px solid #bcd0ee;color:#1d5bb8;font-weight:600}
.trail .gen-pill:hover{border-color:#1d5bb8;color:#1d5bb8}
.res-gen{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.4);border-radius:var(--r-s);padding:9px 13px;margin:10px 0;font-size:var(--fs-0)}

/* ---------- step card / player ---------- */
.step{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:24px}
.step-head{display:flex;align-items:flex-start;gap:8px}
.step-head h1{flex:1;margin:0 0 10px}
.step img{max-width:100%;height:auto;border-radius:var(--r-s);border:1px solid var(--line);margin:10px 0}
.step ul,.step ol{padding-left:1.3em}
.choices{display:flex;flex-direction:column;gap:10px;margin-top:20px}
.choices button{display:flex;align-items:center;gap:12px;width:100%;font-size:var(--fs-1);font-weight:600;text-align:left;padding:14px 16px;border-radius:var(--r-m);border:1.5px solid var(--brand);background:var(--surface);color:var(--brand);cursor:pointer;transition:background var(--t),color var(--t)}
.choices button:hover{background:var(--brand);color:#fff}
.choices .key{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:var(--brand-weak);color:var(--brand);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.choices button:hover .key{background:rgba(255,255,255,.25);color:#fff}
.resolution{background:var(--brand);color:#fff;border-radius:var(--r-m);padding:16px 18px;margin-top:18px}
.resolution a{color:#cfe8db}
.resolution .chip{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.4);color:#fff}
.player-bar{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-0);font-weight:600;padding:8px 13px;border-radius:9px;border:1px solid var(--line);background:var(--surface);cursor:pointer;color:var(--ink);text-decoration:none;transition:border-color var(--t)}
.btn:hover{border-color:var(--brand-line)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-deep)}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--brand-weak);border:1px dashed var(--brand-line);border-radius:7px;padding:4px 10px;font-size:var(--fs-0);font-weight:600;color:var(--brand);cursor:pointer;margin:4px 6px 0 0;transition:background var(--t)}
.chip:hover{background:#d2e6db}
.hint{color:var(--muted);font-size:var(--fs-0);margin-top:14px}
kbd{font:600 11px/1 inherit;background:var(--bg);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:2px 5px}

/* ---------- docs ---------- */
.doc{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:30px 34px;max-width:78ch;line-height:1.62}
.doc>:first-child{margin-top:0}
.doc>:last-child{margin-bottom:0}
.doc h1{margin:0 0 .15em}
.doc h2{font-size:var(--fs-2);margin:1.7em 0 .6em;padding-bottom:7px;border-bottom:1px solid var(--line)}
.doc h3{font-size:var(--fs-1);font-weight:700;margin:1.3em 0 .3em}
.doc p{margin:.7em 0}
.doc ul{padding-left:1.25em;margin:.7em 0}
.doc ul li{margin:.3em 0}

/* document header band */
.doc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 18px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.doc-meta .kind{font-size:11px;letter-spacing:.04em}
.doc-meta .doc-src{font-size:var(--fs-0);color:var(--muted);margin-left:auto}

/* images / figures */
.doc img{max-width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:var(--r-m);cursor:zoom-in}
.doc figure{margin:18px 0}
.doc figure img{margin:0}
.doc figcaption{font-size:var(--fs-0);color:var(--muted);margin-top:7px;padding-left:2px;border-left:2px solid var(--brand-line);padding-left:9px}
.step img{cursor:zoom-in}
#lightbox{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(12,20,16,.85);cursor:zoom-out}
#lightbox.on{display:flex}
#lightbox img{max-width:96vw;max-height:92vh;border-radius:var(--r-s);box-shadow:0 10px 50px rgba(0,0,0,.55);background:#fff}

/* numbered procedure steps → vertical numbered timeline (no checkboxes) */
.doc ol.steps{counter-reset:step;list-style:none;padding:0;margin:22px 0;position:relative}
.doc ol.steps>li{counter-increment:step;position:relative;padding:0 0 14px 56px}
.doc ol.steps>li:last-child{padding-bottom:0}
.doc ol.steps>li::before{content:counter(step);position:absolute;left:0;top:0;width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;font-weight:700;font-size:var(--fs-1);font-variant-numeric:tabular-nums;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 4px var(--brand-weak);z-index:1}
.doc ol.steps>li::after{content:"";position:absolute;left:16px;top:36px;bottom:-2px;width:2px;background:var(--brand-line)}
.doc ol.steps>li:last-child::after{display:none}
.doc ol.steps>li>span{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:13px 16px;min-height:34px;transition:border-color var(--t),box-shadow var(--t)}
.doc ol.steps>li:hover>span{border-color:var(--brand-line);box-shadow:0 3px 14px rgba(17,70,51,.08)}
/* plain (non-step) ordered lists keep simple numbering */
.doc ol:not(.steps){padding-left:1.3em;margin:.7em 0}

/* tables */
.doc table{border-collapse:separate;border-spacing:0;width:100%;margin:16px 0;font-size:var(--fs-0);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden}
.doc th,.doc td{padding:9px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.doc th{background:var(--brand-weak);color:var(--brand-deep);font-weight:700;border-bottom:1px solid var(--brand-line)}
.doc tr:last-child td{border-bottom:none}
.doc tr:nth-child(even) td{background:#fafcfb}

.doc blockquote{border:1px solid var(--line);border-left:3px solid var(--brand-line);background:var(--bg);border-radius:var(--r-s);margin:14px 0;padding:11px 15px;color:var(--muted)}

/* keyword callouts (Gate:/Note:/Important:/Warning:…) */
.callout{display:flex;gap:11px;align-items:flex-start;border-radius:var(--r-m);padding:12px 15px;margin:16px 0;font-size:var(--fs-1)}
.callout::before{flex:none;font-weight:700;line-height:1.5}
.callout b,.callout strong{font-weight:750}
.callout-warn{background:var(--amber-bg);border:1px solid var(--amber-line);color:var(--amber-ink)}
.callout-warn::before{content:"⚠"}
.callout-info{background:var(--brand-weak);border:1px solid var(--brand-line);color:var(--brand-deep)}
.callout-info::before{content:"ℹ"}

details.atomic{border:1.5px solid var(--brand-line);border-radius:var(--r-m);margin:14px 0;background:var(--brand-weak);overflow:hidden}
details.atomic summary{cursor:pointer;font-weight:700;padding:11px 15px;color:var(--brand);list-style:none;display:flex;align-items:center;gap:8px}
details.atomic summary::after{content:"▸";margin-left:auto;transition:transform var(--t)}
details.atomic[open] summary::after{transform:rotate(90deg)}
details.atomic .inner{padding:4px 18px 14px;background:var(--surface)}
.todo{display:block;background:var(--amber-bg);border:1px solid var(--amber-line);border-radius:var(--r-s);padding:9px 12px;margin:10px 0;font-size:var(--fs-0);color:var(--amber-ink);font-weight:600}

/* ---------- onboarding ---------- */
.path-item{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:13px 15px;margin:8px 0;text-decoration:none;color:var(--ink);transition:border-color var(--t)}
.path-item:hover{border-color:var(--brand-line)}
.path-item.done{opacity:.6}
.path-item input{accent-color:var(--brand);width:17px;height:17px}

/* ---------- gate & toast ---------- */
.gate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--brand);z-index:20}
.gate-card{background:var(--surface);border-radius:var(--r-l);padding:36px;max-width:340px;width:90%;text-align:center}
.gate-card input{width:100%;padding:11px;margin:16px 0 10px;border:1px solid var(--line);border-radius:9px;font-size:var(--fs-1)}
.gate-card button{width:100%;padding:11px;border:none;border-radius:9px;background:var(--brand);color:#fff;font-size:var(--fs-1);font-weight:700;cursor:pointer}
.err{color:#a22;font-size:var(--fs-0)}
#toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,8px);background:var(--ink);color:#fff;padding:9px 16px;border-radius:9px;font-size:var(--fs-0);font-weight:600;opacity:0;pointer-events:none;transition:opacity var(--t),transform var(--t);z-index:var(--z-toast)}
#toast.on{opacity:1;transform:translate(-50%,0)}
.empty{background:var(--surface);border:1px dashed var(--line);border-radius:var(--r-m);padding:26px;text-align:center;color:var(--muted)}
mark{background:#ffe9a8;border-radius:2px;padding:0 1px}

@media(max-width:640px){
  header{padding:8px 10px}
  main{padding:16px 10px 48px}
  .step,.doc{padding:18px}
  h1{font-size:var(--fs-3)}
  header nav a span.lbl{display:none}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
}

/* ---------- parts (v1.2) ---------- */
.res-sub{margin:4px 0 12px;font-size:var(--fs-0);opacity:.92}
.res-parts{background:rgba(255,255,255,.1);border-radius:var(--r-s);padding:10px 14px;margin:10px 0}
.res-parts>b{display:block;margin-bottom:6px}
.part{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:7px 0;border-top:1px solid rgba(128,128,128,.18)}
.part:first-of-type{border-top:none}
.part b{min-width:120px;text-transform:capitalize}
.part .code{font:600 var(--fs-0)/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;background:rgba(255,255,255,.16);border-radius:6px;padding:4px 9px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.doc .part .code,.addform .code{background:var(--brand-weak);color:var(--brand-deep)}
.part .unknown{font-size:var(--fs-0);font-weight:600;color:#ffd9a0}
.doc .part .unknown{color:var(--amber-ink)}
.btn.addit{background:#fff;color:var(--brand);border-color:#fff;font-weight:700}
.addform input{flex:1;min-width:130px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);font:inherit;font-size:var(--fs-0)}
.lanes{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin:12px 0 4px}
.lane{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.28);border-radius:var(--r-s);padding:12px 14px;display:flex;flex-direction:column;gap:8px;font-size:var(--fs-0)}
.lane b{font-size:var(--fs-1)}
.lane .btn{align-self:flex-start;background:#fff;border-color:#fff;color:var(--brand)}
.lane a{color:#cfe8db}
