/* pupil.press. Tokens match brand/unveiled.css: black, white, red; Conthic for the voice, Caslon for the record. */
:root{
  --black:#000; --ink:#0b0b0c; --paper:#f3efe6; --white:#fff; --red:#d0142c; --red-dim:#7a0c1a;
  --red-ink:#ef2a40;   /* the brand red lifted for small type on black: 5.1:1 (brand red is 3.8:1, fine only at display sizes) */
  --voice:"Voice","Conthic","Anton","Arial Narrow",sans-serif;
  --record:"Caslon",Georgia,serif;
  --byline:"Byline","Caslon",Georgia,serif;
  --pad:clamp(16px,4vw,64px);
  --rule:1px solid currentColor;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{background:var(--black);color:var(--paper);-webkit-text-size-adjust:100%}
body{background:var(--black);font:400 17px/1.6 var(--record);overflow-x:hidden;font-synthesis:none}
a{color:inherit}
img{display:block;max-width:100%}
::selection{background:var(--red);color:var(--white)}

/* film grain over everything, stepping like projected film */
.grain{position:fixed;inset:-50%;z-index:100;pointer-events:none;background:url(/img/grain.png);opacity:.16;
  animation:grain .9s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}17%{transform:translate(-7%,4%)}33%{transform:translate(5%,-9%)}
  50%{transform:translate(-11%,8%)}67%{transform:translate(9%,3%)}83%{transform:translate(-3%,-6%)}100%{transform:translate(0,0)}}

/* top bar */
.nav{position:relative;z-index:20;display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 var(--pad);
  border-bottom:1px solid rgba(208,20,44,.45);font:400 13px/1 var(--voice);letter-spacing:.16em;text-transform:uppercase}
.nav a{text-decoration:none;color:var(--white)}
.nav nav{display:flex;gap:clamp(14px,3vw,32px)}
.nav nav a:hover,.nav nav a:focus-visible{color:var(--red)}
.mark{display:flex;align-items:center;gap:9px}
.mark span{font-size:17px;letter-spacing:.1em;text-transform:uppercase;color:var(--red-ink)}
.ring{width:15px;height:15px;color:var(--red);flex:none}

/* panels and their corner metadata */
.panel{position:relative;padding:clamp(64px,9vw,128px) var(--pad);overflow:hidden}
.cn{position:absolute;z-index:6;max-width:44%;font:400 11px/1.25 var(--voice);letter-spacing:.16em;text-transform:uppercase;color:var(--red-ink)}
.cn.tl{top:16px;left:var(--pad)} .cn.tr{top:16px;right:var(--pad);text-align:right}
.cn.bl{bottom:16px;left:var(--pad)} .cn.br{bottom:16px;right:var(--pad);text-align:right}

/* fitted display type: site.js sets font-size so each line fills its box */
.fit,.fitw{display:block;white-space:nowrap;font-family:var(--voice);font-weight:400;text-transform:uppercase;line-height:.84;letter-spacing:-.005em}
.display{position:relative;z-index:3;color:var(--white);font-weight:400}
.display.red,.red{color:var(--red)} .display.white,.white{color:var(--white)}

/* hero: giant red caps with the eye passing through them (iris in front of the letters) */
.hero{min-height:calc(100svh - 48px);display:flex;align-items:center;justify-content:center;padding:56px 0}
.hero-art{position:relative;width:100%;height:clamp(380px,74svh,880px)}
.eye{position:absolute;top:-32%;left:50%;height:164%;width:auto;max-width:none;transform:translateX(-60%);transform-origin:60% 50%;
  animation:push 24s ease-in-out infinite alternate}
.eye.back{filter:brightness(1.05) contrast(1.1);
  -webkit-mask-image:radial-gradient(ellipse 40% 44% at 60% 50%,#000 38%,transparent 100%);mask-image:radial-gradient(ellipse 40% 44% at 60% 50%,#000 38%,transparent 100%)}
.eye.front{z-index:4;filter:brightness(1.05) contrast(1.1);pointer-events:none;
  -webkit-mask-image:radial-gradient(circle at 60% 52%,#000 0 var(--iris,13.5%),transparent calc(var(--iris,13.5%) + 1.5%));
  mask-image:radial-gradient(circle at 60% 52%,#000 0 var(--iris,13.5%),transparent calc(var(--iris,13.5%) + 1.5%))}
@keyframes push{to{transform:translateX(-60%) scale(1.06)}}
.wordmark{position:absolute;z-index:3;left:var(--pad);right:var(--pad);top:50%;transform:translateY(-50%);color:var(--red)}
.wordmark .fit{text-align:center;line-height:.8}
.hero-star{position:absolute;top:16px;left:50%;transform:translateX(-50%);z-index:6}
.hero-star .ring{width:18px;height:18px}

/* about */
.about .display .fit{color:var(--white)}
.prose{position:relative;z-index:3;max-width:40rem;margin:clamp(36px,5vw,64px) auto 0;font-size:clamp(17px,1.25vw,19px);line-height:1.68;color:var(--paper)}
.prose p+p{margin-top:1.1em}
.prose p:first-child{font-size:1.2em;line-height:1.5;color:var(--white)}
.prose em{font-style:italic}

/* the spread: giant white and red caps over a grainy B/W photograph */
.spread{min-height:min(92vh,980px);display:flex;align-items:center;background:#0d0d0d}
.spread img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1)}
.spread::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,rgba(0,0,0,.05),rgba(0,0,0,.5))}
.stack{position:relative;z-index:3;width:100%;text-align:center}
.stack .fit{line-height:.88}
.stack .w{color:var(--white)} .stack .r{color:var(--red)}

/* flat red cloth ground with thin rules and numbers between them */
.cloth{background:var(--red) url(/img/cloth.jpg) center/cover;color:var(--white);padding-bottom:clamp(48px,6vw,80px)}
.cloth .cn{color:var(--white)}
.rulerow{position:relative;z-index:3;display:flex;align-items:center;gap:clamp(10px,2vw,22px);margin-top:clamp(20px,3vw,36px);color:var(--white)}
.rulerow .rl{flex:1;height:0;border-top:2px solid currentColor;opacity:.9}
.rulerow .rn{font:400 clamp(28px,4.4vw,64px)/1 var(--voice);letter-spacing:.04em;transform:scaleX(1.35);transform-origin:center;padding:0 .25em}
.rulerow .rt{font:400 clamp(13px,1.4vw,18px)/1 var(--voice);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.rulerow .rt:empty{display:none}

/* report cards: posters */
.reports{padding-top:clamp(40px,5vw,72px)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,460px),1fr));gap:clamp(16px,2vw,28px)}
.card{position:relative}
.poster{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;text-decoration:none;background:var(--red-dim);outline-offset:3px}
.poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.poster .neg{opacity:0}
.poster:hover .neg,.poster:focus-visible .neg{animation:strobe .42s steps(1,end) 1}
@keyframes strobe{0%{opacity:1}20%{opacity:0}40%{opacity:1}60%{opacity:0}80%{opacity:1}100%{opacity:0}}
.poster::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.35),rgba(0,0,0,0) 30%,rgba(0,0,0,0) 45%,rgba(0,0,0,.72));z-index:1}
.poster .cn{color:var(--white);top:12px;bottom:auto;max-width:48%;z-index:3}
.poster .cn.tl{left:14px} .poster .cn.tr{right:14px}
.poster .cn.bl,.poster .cn.br{top:auto;bottom:12px}
.poster .cn.bl{left:14px;color:var(--white)} .poster .cn.br{right:14px;color:var(--white)}
.poster h3{position:absolute;left:14px;right:14px;bottom:34px;z-index:3;color:var(--white);line-height:.86}
.poster:hover h3,.poster:focus-visible h3{color:var(--white)}
.cardlinks{display:flex;gap:18px;justify-content:space-between;margin-top:10px;font:400 12px/1.2 var(--voice);letter-spacing:.16em;text-transform:uppercase}
.cardlinks .cl{display:flex;gap:18px;flex:none}
.cardlinks a{color:var(--red-ink);text-decoration:none} .cardlinks a:hover{color:var(--white)}
.muted{color:rgba(243,239,230,.5)}

/* map teaser */
.maphead{padding-bottom:clamp(56px,7vw,96px)}
.minimap{position:relative;height:clamp(360px,70svh,720px);border-top:1px solid rgba(208,20,44,.45);border-bottom:1px solid rgba(208,20,44,.45)}
#graph.mini{position:absolute;inset:0}
.mapcta{position:absolute;left:0;top:clamp(16px,3vw,40px);width:min(38%,460px);display:block;text-decoration:none;z-index:3;pointer-events:auto}
.mapcta .display{pointer-events:none}
.mapcta:hover .fit{color:var(--white)}
.mapnums{display:flex;flex-wrap:wrap;gap:12px 32px;margin-top:28px;font:400 15px/1 var(--voice);letter-spacing:.14em;text-transform:uppercase}
.mapnums b{font-weight:400;color:var(--red);font-size:2.2em;margin-right:6px;vertical-align:-.12em}
.mapgo{margin-top:28px;font:400 15px/1 var(--voice);letter-spacing:.16em;text-transform:uppercase}
.mapgo a{color:var(--white);text-decoration:none;border-bottom:2px solid var(--red);padding-bottom:5px}
.mapgo a:hover{color:var(--red)}

/* discussion, links, byline */
.discuss{border-top:1px solid rgba(208,20,44,.45)}
.discuss .prose{margin-top:32px}
.handles{list-style:none;max-width:40rem;margin:36px auto 0;border-top:1px solid rgba(243,239,230,.18)}
.handles li{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid rgba(243,239,230,.18);
  font:400 15px/1.2 var(--voice);letter-spacing:.12em;text-transform:uppercase}
.handles .hl{color:var(--red-ink)}
.handles a{color:var(--white);text-decoration:none} .handles a:hover{color:var(--red)}
.byline{max-width:40rem;margin:clamp(56px,8vw,110px) auto 0;text-align:center}
.byline .by{display:block;font:italic 400 clamp(22px,2.6vw,34px)/1 var(--byline);color:var(--white);margin-bottom:.15em}

/* the record: lined paper, Caslon */
.pagehead{padding-bottom:clamp(48px,6vw,80px)}
.record{padding-top:0;padding-bottom:clamp(48px,6vw,96px);background:var(--black)}
.paper{max-width:1180px;margin:0 auto;background:var(--paper);color:var(--ink);padding:clamp(28px,5vw,72px) clamp(18px,5vw,72px);
  background-image:url(/img/lines.png);background-position:0 18px;
  box-shadow:0 0 0 1px rgba(0,0,0,.4)}
.paper a{color:var(--red-dim)}
.sh{font:400 clamp(22px,2.4vw,30px)/1 var(--voice);letter-spacing:.04em;text-transform:uppercase;color:var(--red);margin:clamp(36px,4vw,56px) 0 16px}
.sh:first-of-type{margin-top:8px}
.rec{color:var(--ink);margin:0;max-width:46rem}
.rec ul{list-style:none;border-top:1px solid rgba(11,11,12,.25)}
.rec li{padding:14px 0 14px 28px;border-bottom:1px solid rgba(11,11,12,.25);position:relative}
.rec li::before{content:"";position:absolute;left:4px;top:1.15em;width:10px;height:10px;border:2px solid var(--red);border-radius:50%}
.tiers{border-collapse:collapse;width:100%;max-width:46rem}
.tiers th{text-align:left;font:400 18px/1.2 var(--voice);letter-spacing:.08em;text-transform:uppercase;color:var(--red);padding:12px 18px 12px 0;white-space:nowrap;vertical-align:top}
.tiers td{padding:12px 0}
.tiers tr{border-bottom:1px solid rgba(11,11,12,.25)}
.ledger{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5}
.ledger th{text-align:left;font:400 12px/1 var(--voice);letter-spacing:.16em;text-transform:uppercase;color:var(--red);padding:0 12px 10px 0;border-bottom:2px solid var(--ink)}
.ledger td{padding:12px 14px 12px 0;vertical-align:top;border-bottom:1px solid rgba(11,11,12,.2)}
.ledger .time{font:400 13px/1.5 var(--voice);letter-spacing:.02em;white-space:nowrap;width:3.5em;color:rgba(11,11,12,.72)}
.ledger.notime .time{display:none}
.ledger .claim{width:38%}
.ledger .src{color:rgba(11,11,12,.86);overflow-wrap:anywhere}
.ledger .tier{width:9.5em}
.ledger .tier span{display:block;font:400 13px/1.15 var(--voice);letter-spacing:.12em;text-transform:uppercase;color:var(--red)}
.ledger .tier small{display:block;margin-top:4px;font-size:12px;line-height:1.35;color:rgba(11,11,12,.72)}
.ledger tr.t-footage .tier span,.ledger tr.t-other .tier span{color:rgba(11,11,12,.72)}
.ledger tr.empty td{font-style:italic;color:rgba(11,11,12,.72)}
.corrlist{list-style:none;max-width:46rem} .corrlist li{padding:10px 0;border-bottom:1px solid rgba(11,11,12,.2);font-style:italic}
.watch{display:flex;gap:20px;font:400 13px/1 var(--voice);letter-spacing:.16em;text-transform:uppercase}
.watch a{color:var(--red);text-decoration:none}
.watch .muted{color:rgba(11,11,12,.72)}
.foot,.rnav{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:36px;font:400 13px/1.2 var(--voice);letter-spacing:.14em;text-transform:uppercase}
.foot a,.rnav a{color:var(--red);text-decoration:none}
.rnav{justify-content:space-between;border-top:2px solid var(--ink);padding-top:16px}

/* report header: the poster behind giant red caps */
.rhead{min-height:min(78vh,820px);display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:clamp(40px,5vw,72px)}
.rhead .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.rhead::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,.15) 40%,rgba(0,0,0,.85))}
.rhead .display{z-index:3}
.rhead .rulerow{color:var(--white)}
.rhead .cn{color:var(--white)}

/* the map */
.mappage .grain{opacity:.1}
.mapfull{position:relative;height:calc(100svh - 48px);background:#000}
#graph{position:absolute;inset:0}
.maptools{position:absolute;z-index:5;left:var(--pad);top:16px;width:min(320px,calc(100% - 2 * var(--pad)))}
#q{--slop-allow:redundant-border;width:100%;background:rgba(0,0,0,.75);border:1px solid rgba(208,20,44,.7);color:var(--white);padding:10px 12px;
  font:400 14px/1 var(--voice);letter-spacing:.12em;text-transform:uppercase;border-radius:0;outline:none}
#q:focus{border-color:var(--white)}
#hits{list-style:none;background:rgba(0,0,0,.92);max-height:40vh;overflow:auto}
#hits li button{all:unset;display:block;width:100%;padding:9px 12px;cursor:pointer;font:400 14px/1.2 var(--voice);letter-spacing:.1em;text-transform:uppercase;color:var(--white);box-sizing:border-box}
#hits li button:hover,#hits li button:focus-visible{background:var(--red)}
#hits small{color:rgba(243,239,230,.55);margin-left:8px;font-size:11px}
.legend{position:absolute;z-index:5;left:var(--pad);bottom:16px;list-style:none;display:flex;flex-wrap:wrap;gap:8px 18px;
  font:400 11px/1 var(--voice);letter-spacing:.16em;text-transform:uppercase;color:rgba(243,239,230,.8)}
.legend li::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:-1px}
.lg-report::before{background:var(--red)} .lg-person::before{background:var(--white)}
.lg-org::before{background:#a59f94} .lg-doc::before{background:#6d1420}
#panel{--slop-allow:redundant-border;position:absolute;z-index:8;top:0;right:0;bottom:0;width:min(400px,100%);overflow:auto;background:rgba(0,0,0,.94);
  border-left:1px solid rgba(208,20,44,.6);padding:28px 24px 40px}
#panel[hidden]{display:none}
#close{position:absolute;top:10px;right:14px;background:none;border:0;color:var(--white);font:400 30px/1 var(--voice);cursor:pointer}
#close:hover{color:var(--red)}
.p-type{font:400 11px/1 var(--voice);letter-spacing:.18em;text-transform:uppercase;color:var(--red-ink)}
.p-name{font:400 clamp(34px,4vw,48px)/.9 var(--voice);text-transform:uppercase;color:var(--white);margin:10px 0 20px;overflow-wrap:anywhere}
.p-rep{border-top:1px solid rgba(208,20,44,.6);padding:14px 0}
.p-rep h4{font:400 18px/1.05 var(--voice);letter-spacing:.06em;text-transform:uppercase}
.p-rep h4 a{color:var(--white);text-decoration:none} .p-rep h4 a:hover{color:var(--red)}
.p-rep h4 small{display:block;font-size:11px;letter-spacing:.16em;color:var(--red-ink);margin-bottom:5px}
.p-rep ul{list-style:none;margin-top:8px}
.p-rep li{font:400 14px/1.45 var(--record);color:rgba(243,239,230,.85);padding:5px 0 5px 14px;position:relative}
.p-rep li::before{content:"";position:absolute;left:0;top:.8em;width:6px;height:1px;background:var(--red)}
.p-rep li button{all:unset;cursor:pointer} .p-rep li button:hover{color:var(--red)}

@media (max-width:720px){
  body{font-size:16px}
  .nav nav{gap:14px} .nav{font-size:12px}
  .cn{font-size:11px;max-width:46%}
  .hero{min-height:auto;padding:64px 0}
  .hero-art{height:clamp(280px,48svh,420px)}
  .eye{top:-14%;height:128%}
  .spread{min-height:72vh}
  .ledger thead{display:none}
  .ledger,.ledger tbody,.ledger tr,.ledger td{display:block;width:auto}
  .ledger tr{padding:14px 0;border-bottom:1px solid rgba(11,11,12,.3)}
  .ledger td{border:0;padding:3px 0}
  .ledger .claim{width:auto;font-weight:700}
  .ledger .tier{width:auto;margin-top:4px}
  #panel{top:auto;height:58%;width:100%;border-left:0;border-top:1px solid rgba(208,20,44,.6)}
}
@media (prefers-reduced-motion:reduce){
  .grain,.eye{animation:none}
  .poster:hover .neg,.poster:focus-visible .neg{animation:none}
}
