/* ==========================================================================
   COMPONENTS — editorial, bold accents, committed surfaces.
   ========================================================================== */

/* ---- 1. Scroll progress ------------------------------------------------- */
.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:1200;pointer-events:none;
  background:var(--paper-2)}
.progress__bar{height:100%;width:0;background:var(--pa);transition:width .08s linear}

/* ---- 2. Navigation — hidden --------------------------------------------- */
.nav{display:none}

/* ---- 3. Evidence badge -------------------------------------------------- */
.ev{display:inline-flex;align-items:center;gap:.4rem;flex:none;align-self:flex-start;
  font-family:var(--f-mono);font-size:.625rem;font-weight:500;
  letter-spacing:.04em;text-transform:uppercase;line-height:1;white-space:nowrap;
  padding:.35rem .6rem;border-radius:var(--r-sm);
  color:var(--c,var(--ink-3));
  background:color-mix(in srgb, var(--c,var(--ink-4)) 8%, transparent);
  border:0}
.ev::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;flex:none}
.ev--verified{--c:#087443}
.ev--audit{--c:#175CD3}
.ev--assumption{--c:#B54708}
.ev--hypothesis{--c:#5925DC}
.ev--opportunity{--c:#C01574}
.ev--expected{--c:#5925DC}
.ev--illustrative{--c:var(--ink-4)}

/* ---- 4. Section header -------------------------------------------------- */
.sec-head{display:flex;flex-direction:column;gap:var(--s3);margin-bottom:var(--blk-y)}
.sec-head__no{display:none}
.sec-head__body{display:flex;flex-direction:column;gap:var(--s4);min-width:0}
.sec-head__kicker{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap}
.sec-head__kicker .ev{white-space:normal;max-width:100%}
.sec-head__kicker > .sm{max-width:56ch;color:var(--ink-3);font-size:var(--t-xs)}
.sec-head h2{font-size:var(--t-d3);max-width:32ch}
.sec-head--major h2{font-size:var(--t-d1);max-width:28ch;letter-spacing:-.025em}
.sec-head__lead{color:var(--ink-3);max-width:58ch;font-size:var(--t-sm);line-height:1.65}

/* ---- 5. Surfaces -------------------------------------------------------- */
.panel{background:var(--paper);border-radius:var(--r-lg);
  padding:clamp(1.15rem,2.2vw,1.75rem);box-shadow:var(--sh-1)}
.panel--accent{background:var(--pa-bg);box-shadow:none}
.panel--flush{padding:0;overflow:hidden}

.card{position:relative;background:var(--paper);
  border-radius:var(--r);padding:clamp(1.05rem,1.9vw,1.4rem);box-shadow:var(--sh-1);
  display:flex;flex-direction:column;gap:var(--s3);
  transition:box-shadow var(--d-2),transform var(--d-2)}
.card:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}
.card__no{font-family:var(--f-mono);font-size:var(--t-label);color:var(--pa-ink)}
.card h3{font-size:1rem}
.card p{font-size:var(--t-sm);color:var(--ink-3);line-height:1.65}

.cell{display:flex;flex-direction:column;gap:.45rem}
.cell__v{font-size:.9375rem;font-weight:700;color:var(--ink);line-height:1.45}

/* ---- 6. Buttons --------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;gap:.5rem;
  font-size:.875rem;font-weight:600;padding:.6rem 1.1rem;border-radius:var(--r-sm);
  border:0;color:var(--ink);background:var(--paper);box-shadow:var(--sh-1);
  transition:box-shadow var(--d-1),transform var(--d-1)}
.btn:hover{box-shadow:var(--sh-2);transform:translateY(-1px)}
.btn--solid{background:var(--ink);color:#fff}
.btn--solid:hover{background:#000}
.btn--ghost{border:0;padding:0;background:none;box-shadow:none;color:var(--pa-ink)}
.btn--ghost:hover{box-shadow:none;text-decoration:underline;text-underline-offset:3px}

/* ---- 7. Chips ----------------------------------------------------------- */
.chips{display:flex;flex-wrap:wrap;gap:.35rem}
.chip{font-size:.75rem;font-weight:500;color:var(--ink-2);background:var(--paper-2);
  border-radius:var(--r-sm);padding:.25rem .5rem;white-space:nowrap}
.chip--on{color:var(--pa-ink);background:var(--pa-bg)}

/* ---- 8. Figures & device frames ----------------------------------------- */
.fig{display:flex;flex-direction:column;gap:var(--s3);min-width:0}
.fig__frame{position:relative;border-radius:var(--r-lg);
  overflow:hidden;box-shadow:var(--sh-2)}
.fig__frame img{width:100%}
.fig figcaption{display:flex;gap:var(--s3);align-items:flex-start;
  font-size:var(--t-xs);color:var(--ink-3);line-height:1.6}
.fig figcaption b{color:var(--ink);font-weight:600}

/* browser chrome — refined */
.chrome{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-3);
  background:var(--paper)}
.chrome__bar{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;
  background:var(--paper-2)}
.chrome__dots{display:flex;gap:.3rem;flex:none}
.chrome__dots i{width:7px;height:7px;border-radius:50%;background:var(--ink-5)}
.chrome__url{flex:1;min-width:0;font-family:var(--f-mono);font-size:.6875rem;
  color:var(--ink-4);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chrome__body{background:#fff}
.chrome__body img{width:100%;display:block}
.chrome--scroll .chrome__body{max-height:min(72vh,680px);overflow-y:auto;overscroll-behavior:contain}
.chrome--scroll .chrome__body::-webkit-scrollbar{width:8px}
.chrome--scroll .chrome__body::-webkit-scrollbar-track{background:var(--paper-2)}
.chrome--scroll .chrome__body::-webkit-scrollbar-thumb{background:var(--rule-2);border-radius:99px}

/* phone frame */
.phone{width:min(250px,70vw);border-radius:24px;padding:8px;
  background:var(--ink);flex:none;box-shadow:var(--sh-3)}
.phone img{width:100%;border-radius:16px}

/* ---- 9. Zoomable image + lightbox --------------------------------------- */
.zoom{position:relative;display:block;width:100%;cursor:zoom-in;overflow:hidden;
  border-radius:var(--r-lg);box-shadow:var(--sh-2);
  transition:box-shadow var(--d-2),transform var(--d-2)}
.zoom:hover{box-shadow:var(--sh-3);transform:translateY(-3px)}
.zoom img{width:100%}
.zoom__hint{position:absolute;right:.6rem;bottom:.6rem;z-index:2;
  font-family:var(--f-mono);font-size:.625rem;font-weight:500;
  letter-spacing:.03em;text-transform:uppercase;
  background:var(--ink);color:#fff;
  border-radius:var(--r-sm);padding:.3rem .5rem;
  opacity:0;transform:translateY(3px);transition:opacity var(--d-1),transform var(--d-1)}
.zoom:hover .zoom__hint,.zoom:focus-visible .zoom__hint{opacity:1;transform:none}

/* lightbox — dark, immersive */
.lightbox{position:fixed;inset:0;z-index:1500;display:none;
  background:rgba(20,20,19,.92);backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  padding:clamp(1rem,3.5vw,2.5rem);place-items:center}
.lightbox.is-open{display:grid}
.lightbox__fig{max-width:min(1440px,100%);max-height:100%;display:flex;
  flex-direction:column;gap:var(--s4);min-height:0;align-items:center}
.lightbox__img{min-height:0;object-fit:contain;max-height:calc(100vh - 8rem);
  border-radius:var(--r-lg);background:#fff}
.lightbox__cap{display:flex;gap:var(--s4);align-items:center;justify-content:center;
  flex-wrap:wrap;font-size:var(--t-xs);color:rgba(255,255,255,.6);text-align:center;max-width:80ch}
.lightbox__cap .ev{--c:rgba(255,255,255,.5);background:rgba(255,255,255,.08)}
.lightbox__x,.lightbox__nav{position:absolute;width:40px;height:40px;display:grid;
  place-items:center;border-radius:var(--r-pill);
  background:rgba(255,255,255,.08);color:rgba(255,255,255,.6);
  transition:background var(--d-1),color var(--d-1)}
.lightbox__x:hover,.lightbox__nav:hover{background:rgba(255,255,255,.16);color:#fff}
.lightbox__x{top:clamp(1rem,3vw,2rem);right:clamp(1rem,3vw,2rem)}
.lightbox__nav{top:50%;transform:translateY(-50%)}
.lightbox__nav--prev{left:clamp(.5rem,2vw,1.5rem)}
.lightbox__nav--next{right:clamp(.5rem,2vw,1.5rem)}

/* ---- 10. Horizontal scroller -------------------------------------------- */
.hscroll{overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:var(--s3);
  scrollbar-width:thin;scrollbar-color:var(--rule-2) transparent}
.hscroll::-webkit-scrollbar{height:8px}
.hscroll::-webkit-scrollbar-track{background:var(--paper-2);border-radius:99px}
.hscroll::-webkit-scrollbar-thumb{background:var(--rule-2);border-radius:99px}
.hscroll::-webkit-scrollbar-thumb:hover{background:var(--ink-4)}
.hscroll__hint{display:none;align-items:center;gap:.5rem;margin-bottom:var(--s3)}
@media (max-width:900px){.hscroll__hint{display:flex}}

/* ---- 11. Back to top ---------------------------------------------------- */
.to-top{position:fixed;right:clamp(1rem,2.5vw,1.75rem);bottom:clamp(1rem,2.5vw,1.75rem);
  z-index:1000;width:42px;height:42px;display:grid;place-items:center;
  border:0;border-radius:var(--r-pill);
  background:var(--ink);color:#fff;box-shadow:var(--sh-3);
  opacity:0;pointer-events:none;transform:translateY(8px);
  transition:opacity var(--d-2),transform var(--d-2),background var(--d-1)}
.to-top.is-on{opacity:1;pointer-events:auto;transform:none}
.to-top:hover{background:var(--pa-deep)}
