/* Comedy Mic Open — a dark room lit from above.
   Tokens are the ones locked in 02-visual-direction.md. */
:root{
  --stage:#0E0C0B; --riser:#181413; --card:#15110F; --ink:#EDE7DE; --tungsten:#E8A33D;
  --brick:#B4593A; --dust:#8A8179; --cool:#6C8CA0; --hair:rgba(237,231,222,.14);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:#241511; color:var(--ink); min-height:100vh;
  font-family:Newsreader,Georgia,"Times New Roman",serif; font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
/* the wall: canvas-painted brick, then the spotlight, then the vignette */
#wall{position:fixed;inset:0;z-index:-3;background:#3A211A center/cover no-repeat;
  background-image:url("https://images.unsplash.com/photo-1592853598064-5a7fa150592c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=2400");
  background-attachment:fixed}
@media(max-width:900px){#wall{background-image:url("https://images.unsplash.com/photo-1592853598064-5a7fa150592c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=1200");background-attachment:scroll}}
#light{position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:radial-gradient(85% 55% at 50% 6%,
    rgba(255,190,110,.24) 0%, rgba(255,160,70,.09) 38%, rgba(0,0,0,0) 70%)}
#vig{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(115% 95% at 50% 12%,
    rgba(0,0,0,.10) 22%, rgba(0,0,0,.52) 72%, rgba(0,0,0,.84) 100%)}

.wrap{max-width:1080px;margin:0 auto;padding:26px 20px 34px}
h1,h2,h3,.ui{font-family:Archivo,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}
.mono{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}

/* ---------- header ---------- */
header{padding:70px 0 34px;text-align:center}
.mark{font-family:Archivo,sans-serif;font-weight:800;letter-spacing:-.03em;line-height:.92;
  font-size:clamp(38px,9vw,88px);margin:0;text-transform:uppercase;
  text-shadow:0 2px 34px rgba(255,183,94,.20)}
.mark .b{display:block;color:var(--tungsten)}
.sub{font-size:clamp(16px,2.4vw,19px);line-height:1.5;color:#DAD2C5;max-width:34em;
  margin:20px auto 0}
.how{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;color:#A29A8D;margin:22px 0 0}
.how b{color:var(--tungsten);font-weight:400}

/* ---------- grid ---------- */
main{padding:34px 0 10px}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px 26px;list-style:none;
  margin:0;padding:0}
/* an odd last card centres itself rather than hanging off the left */
.grid > :last-child:nth-child(3n+1){grid-column:2}
@media(max-width:820px){
  .grid{grid-template-columns:repeat(2,1fr);gap:24px 14px}
  .grid > :last-child:nth-child(3n+1){grid-column:auto}
  .grid > :last-child:nth-child(2n+1){grid-column:1 / -1;max-width:52%;margin:0 auto}
}
/* phones: one poster per row. Two columns leaves ~160px cards, which is too
   narrow for the name plate — every title truncates to a single letter. */
@media(max-width:560px){
  .grid{grid-template-columns:1fr;gap:26px}
  .grid > :last-child:nth-child(2n+1){grid-column:auto;max-width:none;margin:0}
  main{padding:20px 0 10px}
  /* stop the button orphaning at its natural width when the row wraps */
  .email{flex-direction:column}
  .email input,.email button{width:100%}
}

.card{perspective:1700px;min-width:0}
.flip{position:relative;transform-style:preserve-3d;
  transition:transform .55s cubic-bezier(.2,.72,.2,1)}
.card.open .flip{transform:rotateY(180deg)}
.face{background:var(--card);color:var(--ink);backface-visibility:hidden;border-radius:2px;
  border:1px solid rgba(0,0,0,.55);
  box-shadow:0 2px 5px rgba(0,0,0,.65),0 24px 46px -20px rgba(0,0,0,1)}
/* the light follows attention */
.card .flip{filter:brightness(.74) saturate(.92);transition:transform .55s cubic-bezier(.2,.72,.2,1),filter .3s ease}
.card.lit .flip,.card:hover .flip,.card:focus-within .flip{filter:none}
.card.lit .face,.card:hover .face{box-shadow:0 2px 5px rgba(0,0,0,.65),
  0 28px 62px -18px rgba(0,0,0,1),0 0 64px -10px rgba(232,163,61,.38)}

.back{position:absolute;inset:0;transform:rotateY(180deg);display:flex;flex-direction:column;
  overflow:hidden;cursor:pointer}

/* front */
.shot{display:block;width:100%;height:auto;aspect-ratio:340/481;object-fit:contain;object-position:center;
  background:#0B0908;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.6)}
.plate{display:flex;align-items:center;gap:10px;padding:10px 11px}
.plate .txt{flex:1;min-width:0;cursor:pointer;text-align:left;background:none;border:0;
  padding:0;font:inherit;color:inherit}
.school{font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.19em;
  text-transform:uppercase;color:var(--brick);display:block}
.name{font-family:Archivo,sans-serif;font-weight:700;font-size:15px;letter-spacing:-.01em;
  display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.tallybar{display:flex;align-items:center;gap:4px;flex:none}
.net{font-family:"JetBrains Mono",monospace;font-weight:700;font-size:14px;min-width:2.4em;
  text-align:center;font-variant-numeric:tabular-nums;color:var(--ink)}
.net.pos{color:var(--tungsten)}
.net.neg{color:#7E97A8}
.vote{width:31px;height:31px;padding:0;display:grid;place-items:center;cursor:pointer;
  background:transparent;border:1px solid var(--hair);border-radius:2px;
  color:#968D84;transition:background .14s,color .14s,border-color .14s}
.vote svg{width:12px;height:12px;display:block}
.vote:hover{border-color:var(--ink);color:var(--ink)}
.vote:active{transform:translateY(1px)}
.vote:focus-visible,.txt:focus-visible,.shot:focus-visible,.more:focus-visible,
.email input:focus-visible,.email button:focus-visible{outline:2px solid var(--tungsten);
  outline-offset:2px}
.vote[aria-pressed="true"].up{background:var(--tungsten);border-color:var(--tungsten);color:#1A1206}
.vote[aria-pressed="true"].down{background:#40555F;border-color:#40555F;color:var(--ink)}

/* back */
.bhead{display:flex;gap:12px;align-items:center;padding:13px 14px 11px;
  border-bottom:1px solid var(--hair)}
.rank{flex:none;width:44px;height:44px;border:2px solid var(--tungsten);border-radius:50%;
  display:grid;place-items:center;transform:rotate(-10deg)}
.rank b{font-family:"JetBrains Mono",monospace;font-size:16px;color:var(--tungsten);line-height:1}
.rank i{font-family:"JetBrains Mono",monospace;font-style:normal;font-size:6.5px;
  letter-spacing:.16em;color:var(--tungsten);text-transform:uppercase}
.bstats .n{font-family:Archivo,sans-serif;font-weight:800;font-size:26px;line-height:1;
  font-variant-numeric:tabular-nums}
.bstats .s{font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.11em;
  text-transform:uppercase;color:var(--dust);margin-top:5px;font-variant-numeric:tabular-nums}
.bbody{padding:12px 14px;overflow-y:auto;flex:1;display:flex;flex-direction:column}
.bbody .hd{font-family:Archivo,sans-serif;font-weight:700;font-size:15px;margin:0 0 2px}
.bbody .sb{font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--brick);margin:0 0 9px}
.bbody .why{font-size:12.8px;line-height:1.5;margin:0;color:#BCB3A9}
.bfoot{padding:0 14px 13px;display:flex;align-items:center;gap:10px}
.more{flex:1;display:block;text-align:center;text-decoration:none;
  font-family:Archivo,sans-serif;font-weight:700;font-size:12.5px;letter-spacing:.02em;
  background:var(--tungsten);color:#1A1206;padding:10px 12px;border-radius:2px}
.more:hover{background:#F2B357}
.shut{font-family:"JetBrains Mono",monospace;font-size:9px;letter-spacing:.11em;
  text-transform:uppercase;color:var(--dust);flex:none}

/* ---------- email ---------- */
.signup{margin:56px 0 0;padding:34px 26px;background:rgba(26,22,20,.72);
  border:1px solid rgba(246,241,231,.13);border-radius:3px;text-align:center;
  backdrop-filter:blur(3px)}
.signup h2{font-size:clamp(21px,3.4vw,28px);font-weight:800;letter-spacing:-.02em;margin:0 0 8px}
.signup p{margin:0 auto;max-width:44ch;color:#C4BCB0;font-size:16px}
.email{display:flex;gap:9px;max-width:430px;margin:22px auto 0;flex-wrap:wrap}
.email input{flex:1;min-width:190px;background:rgba(14,12,11,.7);border:1px solid rgba(246,241,231,.24);
  color:var(--ink);padding:12px 13px;border-radius:2px;font:inherit;font-size:15.5px}
.email input::placeholder{color:#7C756C}
.email button{background:var(--tungsten);color:#1A1206;border:0;border-radius:2px;
  padding:12px 20px;font-family:Archivo,sans-serif;font-weight:800;font-size:14px;
  letter-spacing:.02em;cursor:pointer}
.email button:hover{background:#F2B357}
.note{font-family:"JetBrains Mono",monospace;font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dust);margin:14px 0 0;min-height:1em}
.note.good{color:var(--tungsten)}
.note.bad{color:#D98A72}

footer{padding:44px 0 60px;text-align:center}
footer .mono{font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:#5A544D}
footer a{color:#7E766C}

/* ---------- poster detail page ---------- */
.detail{max-width:900px;margin:0 auto;padding:40px 20px 70px}
.back-link{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--dust);text-decoration:none;display:inline-block;
  margin-bottom:26px}
.back-link:hover{color:var(--tungsten)}
.dgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;align-items:start}
@media(max-width:760px){.dgrid{grid-template-columns:1fr;gap:26px}}
.dgrid img{width:100%;display:block;background:#0B0908;border-radius:2px;
  box-shadow:0 3px 6px rgba(0,0,0,.5),0 30px 60px -22px rgba(0,0,0,.95)}
.dgrid h1{font-family:Archivo,sans-serif;font-weight:800;font-size:clamp(30px,5vw,46px);
  letter-spacing:-.03em;line-height:1;margin:0 0 8px}
.dmeta{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--tungsten);margin:0 0 20px}
.dgrid p.body{color:#BCB3A9;font-size:17px;line-height:1.65}
.dstats{display:flex;gap:26px;margin:26px 0 0;padding:18px 0;
  border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.dstats div{min-width:0}
.dstats b{font-family:Archivo,sans-serif;font-weight:800;font-size:24px;display:block;
  font-variant-numeric:tabular-nums}
.dstats span{font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--dust)}

@media(prefers-reduced-motion:reduce){
  .flip{transition:none}
  .card,.card .flip{transition:none!important}
}

/* Unsplash API terms require photographer credit for the wall plate. */
.credit{position:fixed;right:8px;bottom:6px;z-index:5;
  font-family:"JetBrains Mono",monospace;font-size:8.5px;letter-spacing:.08em;
  text-transform:uppercase;color:rgba(237,231,222,.26)}
.credit a{color:inherit;text-decoration:none}
.credit a:hover{color:rgba(237,231,222,.6)}
@media(max-width:600px){.credit{position:static;display:block;text-align:center;
  padding:22px 0 10px}}
