:root{
    --paper:#E9E4D6;
    --paper-2:#E1DBC9;
    --card:#F2EEE2;
    --ink:#15130F;
    --ink-soft:#5B5747;
    --ink-faint:#8B8674;
    --red:#A2312B;
    --rule:#C9C1AA;
    --rule-strong:#15130F;
    --measure: 66ch;
  }

  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; }

  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:'Archivo', sans-serif;
    -webkit-font-smoothing:antialiased;
    position:relative;
  }

  /* faint grain / scanline, near-invisible */
  body::before{
    content:"";
    position:fixed;
    inset:0;
    pointer-events:none;
    z-index:500;
    background-image:
      repeating-linear-gradient(
        to bottom,
        rgba(21,19,15,0.018) 0px,
        rgba(21,19,15,0.018) 1px,
        transparent 1px,
        transparent 3px
      );
    mix-blend-mode:multiply;
  }

  a{ color:inherit; text-decoration:none; }

  .wrap{
    max-width:1180px;
    margin:0 auto;
    padding:0 32px;
  }

  /* ---------- HEADER ---------- */
  header{
    border-bottom:1px solid var(--rule-strong);
    position:sticky;
    top:0;
    background:var(--paper);
    z-index:100;
  }
  .header-inner{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    padding:22px 0 18px;
  }
  .logo{
    font-family:'Archivo Expanded', sans-serif;
    font-weight:900;
    font-size:22px;
    letter-spacing:0.02em;
    text-transform:uppercase;
    position:relative;
  }
  .logo .wel{ color:var(--red); }
  .logo sub{
    display:block;
    font-family:'IBM Plex Mono', monospace;
    font-weight:400;
    font-size:9px;
    letter-spacing:0.16em;
    color:var(--ink-faint);
    text-transform:uppercase;
    margin-top:2px;
  }
  nav{ display:flex; gap:34px; }
  nav a{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--ink-soft);
    padding-bottom:3px;
    border-bottom:1px solid transparent;
    transition:border-color .15s ease, color .15s ease;
  }
  nav a:hover{ color:var(--ink); border-color:var(--red); }
  .nav-toggle{ display:none; }

  /* ---------- HERO ---------- */
  .hero{
    padding:88px 0 70px;
    border-bottom:1px solid var(--rule);
    position:relative;
  }
  .hero-grid{
    display:grid;
    grid-template-columns:1.35fr 1fr;
    gap:56px;
    align-items:end;
  }
  h1.hero-title{
    font-family:'Archivo Expanded', sans-serif;
    font-weight:900;
    font-size:clamp(48px, 7.2vw, 94px);
    line-height:0.92;
    letter-spacing:-0.01em;
    margin:0 0 26px;
    text-transform:uppercase;
  }
  h1.hero-title .line2{ color:var(--red); }
  .hero-sub{
    font-family:'Libre Baskerville', serif;
    font-style:italic;
    font-size:clamp(19px, 2.4vw, 25px);
    color:var(--ink-soft);
    max-width:32ch;
    line-height:1.5;
    margin:0 0 36px;
  }
  .hero-redacted{
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    color:var(--ink-faint);
    max-width:48ch;
    line-height:1.9;
    margin:0;
  }
  .redact-wrap{ position:relative; display:inline; }
  .redact{
    background:var(--ink);
    color:var(--ink);
    padding:0 4px;
    border-radius:1px;
    cursor:default;
    transition:color .25s ease, background .25s ease;
  }
  .redact:hover{
    background:transparent;
    color:var(--red);
  }
  .redact-tag{
    position:absolute;
    left:0;
    bottom:-16px;
    font-size:9px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--ink-faint);
    opacity:0;
    transition:opacity .2s ease;
    white-space:nowrap;
  }
  .redact-wrap:hover .redact-tag{ opacity:1; }

  .index-widget{
    border:1px solid var(--rule-strong);
    background:var(--card);
    padding:24px 26px 22px;
    align-self:end;
  }
  .index-head{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    letter-spacing:0.1em;
    text-transform:uppercase;
    color:var(--ink-faint);
    margin-bottom:14px;
  }
  .index-score{
    display:flex;
    align-items:baseline;
    gap:10px;
    margin-bottom:16px;
  }
  .index-score .num{
    font-family:'Archivo Expanded', sans-serif;
    font-weight:900;
    font-size:44px;
    line-height:1;
    color:var(--red);
  }
  .index-score .of{
    font-family:'IBM Plex Mono', monospace;
    font-size:13px;
    color:var(--ink-faint);
  }
  .index-score .label{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    letter-spacing:0.1em;
    text-transform:uppercase;
    color:var(--ink);
    border:1px solid var(--red);
    padding:3px 8px;
    margin-left:auto;
  }
  .index-bars{ display:flex; flex-direction:column; gap:8px; margin-bottom:16px; }
  .index-bar-row{
    display:grid;
    grid-template-columns:100px 1fr 22px;
    align-items:center;
    gap:10px;
    font-family:'IBM Plex Mono', monospace;
    font-size:10px;
    letter-spacing:0.04em;
    text-transform:uppercase;
    color:var(--ink-soft);
  }
  .index-bar{ height:5px; background:var(--rule); position:relative; }
  .index-bar span{ position:absolute; inset:0 auto 0 0; background:var(--ink); }
  .index-why{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    letter-spacing:0.06em;
    text-transform:uppercase;
    border-top:1px solid var(--rule);
    padding-top:14px;
    display:inline-block;
  }
  .index-why:hover{ color:var(--red); }

  /* ---------- SECTION HEADERS ---------- */
  .section{
    padding:70px 0;
    border-bottom:1px solid var(--rule);
  }
  .section-head{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    margin-bottom:44px;
    gap:24px;
    flex-wrap:wrap;
  }
  .section-num{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    color:var(--red);
    letter-spacing:0.1em;
  }
  .section-title{
    font-family:'Archivo Expanded', sans-serif;
    font-weight:900;
    font-size:clamp(28px,3.6vw,40px);
    text-transform:uppercase;
    letter-spacing:-0.005em;
    margin:6px 0 0;
  }
  .section-note{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    color:var(--ink-faint);
    letter-spacing:0.06em;
    text-align:right;
    max-width:220px;
  }

  /* ---------- ESSAYS ---------- */
  .essay-grid{
    display:grid;
    grid-template-columns:1.5fr 1fr;
    gap:56px;
  }
  .featured-essay .meta{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    color:var(--ink-faint);
    letter-spacing:0.08em;
    text-transform:uppercase;
    margin-bottom:16px;
    display:flex;
    gap:16px;
  }
  .featured-essay h3{
    font-family:'Libre Baskerville', serif;
    font-weight:700;
    font-size:clamp(28px,3vw,38px);
    line-height:1.18;
    margin:0 0 18px;
  }
  .featured-essay p{
    font-family:'Libre Baskerville', serif;
    font-size:17px;
    line-height:1.75;
    color:var(--ink-soft);
    max-width:var(--measure);
    margin:0 0 22px;
  }
  .read-link{
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.06em;
    text-transform:uppercase;
    border-bottom:1px solid var(--ink);
    padding-bottom:3px;
    display:inline-block;
  }
  .read-link:hover{ border-color:var(--red); color:var(--red); }

  .side-essays{ display:flex; flex-direction:column; gap:30px; }
  .side-essay{
    border-top:1px solid var(--rule);
    padding-top:22px;
  }
  .side-essay .meta{
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    color:var(--ink-faint);
    letter-spacing:0.08em;
    text-transform:uppercase;
    margin-bottom:10px;
  }
  .side-essay h4{
    font-family:'Libre Baskerville', serif;
    font-size:18px;
    line-height:1.4;
    margin:0 0 8px;
    font-weight:700;
  }
  .side-essay p{
    font-family:'Archivo', sans-serif;
    font-size:13.5px;
    color:var(--ink-soft);
    line-height:1.6;
    margin:0;
  }

  /* ---------- THE CANON (dossiers) ---------- */
  .dossier-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--rule-strong);
    border:1px solid var(--rule-strong);
  }
  .dossier{
    background:var(--card);
    padding:26px 24px 28px;
  }
  .dossier-file{
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    color:var(--ink-faint);
    letter-spacing:0.08em;
    margin-bottom:16px;
  }
  .dossier h4{
    font-family:'Archivo Expanded', sans-serif;
    font-weight:900;
    font-size:19px;
    text-transform:uppercase;
    margin:0 0 4px;
    letter-spacing:-0.005em;
  }
  .dossier .author{
    font-family:'Libre Baskerville', serif;
    font-style:italic;
    font-size:13px;
    color:var(--ink-soft);
    margin-bottom:20px;
  }
  .metric{
    display:grid;
    grid-template-columns:1fr auto 26px;
    align-items:center;
    gap:10px;
    margin-bottom:7px;
    font-family:'IBM Plex Mono', monospace;
    font-size:10px;
    letter-spacing:0.04em;
    text-transform:uppercase;
    color:var(--ink-soft);
  }
  .bar{
    height:5px;
    background:var(--rule);
    position:relative;
    overflow:hidden;
  }
  .bar span{
    position:absolute; inset:0 auto 0 0;
    background:var(--ink);
  }
  .metric .val{ text-align:right; color:var(--ink); font-weight:500; }
  .dossier-mech{
    margin-top:18px;
    padding-top:16px;
    border-top:1px solid var(--rule);
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    letter-spacing:0.05em;
    color:var(--red);
    text-transform:uppercase;
  }
  .dossier-mech span{
    display:block;
    color:var(--ink-faint);
    margin-bottom:3px;
  }

  /* ---------- SURVEILLANCE NOTES ---------- */
  .notes-list{ display:flex; flex-direction:column; }
  .note-row{
    display:grid;
    grid-template-columns:110px 1fr auto;
    gap:28px;
    align-items:baseline;
    padding:20px 0;
    border-top:1px solid var(--rule);
  }
  .note-row:last-child{ border-bottom:1px solid var(--rule); }
  .note-date{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    color:var(--ink-faint);
    letter-spacing:0.05em;
  }
  .note-text{
    font-family:'Archivo', sans-serif;
    font-size:15.5px;
    line-height:1.5;
  }
  .note-text b{ font-weight:700; }
  .note-tag{
    font-family:'IBM Plex Mono', monospace;
    font-size:10px;
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--red);
    white-space:nowrap;
  }

  /* ---------- FOOTER ---------- */
  footer{ padding:50px 0 60px; }
  .footer-inner{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    flex-wrap:wrap;
    gap:24px;
  }
  .footer-line{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    color:var(--ink-faint);
    letter-spacing:0.05em;
  }
  .footer-links{ display:flex; gap:22px; }
  .footer-links a{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--ink-soft);
  }
  .footer-links a:hover{ color:var(--red); }
  .footer-quiet{
    margin-top:34px;
    padding-top:20px;
    border-top:1px solid var(--rule);
    font-family:'Libre Baskerville', serif;
    font-style:italic;
    font-size:13px;
    color:var(--ink-faint);
  }

  /* ---------- BOOK DETAIL PAGE ---------- */
  .book-hero{
    padding:60px 0 50px;
    border-bottom:1px solid var(--rule-strong);
  }
  .book-hero .dossier-file{ margin-bottom:20px; }
  .book-hero h1{
    font-family:'Archivo Expanded', sans-serif;
    font-weight:900;
    font-size:clamp(36px,5vw,58px);
    text-transform:uppercase;
    line-height:1.02;
    margin:0 0 12px;
  }
  .book-hero .book-author{
    font-family:'Libre Baskerville', serif;
    font-style:italic;
    font-size:19px;
    color:var(--ink-soft);
    margin:0 0 30px;
  }
  .book-mech-line{
    display:inline-block;
    font-family:'IBM Plex Mono', monospace;
    font-size:12px;
    letter-spacing:0.05em;
    text-transform:uppercase;
    color:var(--red);
    border:1px solid var(--red);
    padding:6px 12px;
  }

  .book-body{
    padding:60px 0;
    display:grid;
    grid-template-columns:1fr 320px;
    gap:64px;
    border-bottom:1px solid var(--rule);
  }
  .book-essay h3{
    font-family:'IBM Plex Mono', monospace;
    font-size:11px;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--red);
    margin:40px 0 14px;
  }
  .book-essay h3:first-child{ margin-top:0; }
  .book-essay p{
    font-family:'Libre Baskerville', serif;
    font-size:16px;
    line-height:1.8;
    color:var(--ink-soft);
    max-width:var(--measure);
    margin:0 0 16px;
  }

  .book-side{ display:flex; flex-direction:column; gap:32px; }
  .book-metrics{
    border:1px solid var(--rule-strong);
    background:var(--card);
    padding:24px 22px;
  }
  .book-metrics .dossier-file{ margin-bottom:14px; }

  .book-video{
    border:1px solid var(--rule-strong);
    background:var(--card);
    padding:22px;
  }
  .book-video-label{
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--ink-faint);
    margin-bottom:12px;
  }
  .book-video-frame{
    position:relative;
    width:100%;
    padding-top:56.25%;
    background:var(--rule);
    border:1px solid var(--rule-strong);
    overflow:hidden;
  }
  .book-video-frame iframe{
    position:absolute; inset:0;
    width:100%; height:100%;
    border:0;
  }

  .book-related{
    border:1px solid var(--rule-strong);
    background:var(--card);
    padding:22px;
  }
  .book-related-label{
    font-family:'IBM Plex Mono', monospace;
    font-size:10.5px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--ink-faint);
    margin-bottom:12px;
  }
  .book-related a{
    display:block;
    font-family:'Libre Baskerville', serif;
    font-style:italic;
    font-size:14px;
    color:var(--ink);
    padding:8px 0;
    border-top:1px solid var(--rule);
  }
  .book-related a:first-of-type{ border-top:none; }
  .book-related a:hover{ color:var(--red); }

  /* ---------- RESPONSIVE ---------- */
  @media (max-width:860px){
    .hero-grid{ grid-template-columns:1fr; }
    .index-widget{ max-width:420px; }
    .essay-grid{ grid-template-columns:1fr; }
    .dossier-grid{ grid-template-columns:1fr; }
    nav{ gap:20px; }
    .note-row{ grid-template-columns:1fr; gap:6px; }
    .note-tag{ order:3; }
    .book-body{ grid-template-columns:1fr; gap:36px; }
  }
  @media (max-width:560px){
    .wrap{ padding:0 20px; }
    nav{ display:none; }
    .hero{ padding:56px 0 44px; }
    .section{ padding:50px 0; }
    .section-note{ text-align:left; max-width:none; }
  }
