/* ============================================================
   The Lot — shared Fen & Ink styles (Wroot Labs)
   ============================================================ */
@font-face{font-family:"EB Garamond";src:url("fonts/EBGaramond-VF.ttf") format("truetype-variations");font-weight:400 700;font-style:normal;font-display:swap;}
@font-face{font-family:"EB Garamond";src:url("fonts/EBGaramond-Italic-VF.ttf") format("truetype-variations");font-weight:400 700;font-style:italic;font-display:swap;}
@font-face{font-family:"Inter";src:url("fonts/Inter-VF.ttf") format("truetype-variations");font-weight:100 900;font-style:normal;font-display:swap;}

:root{
  --fen:#2C3E4A; --fen-mist:#5B6B76; --ink:#1A2128;
  --reed:#C9A86A; --reed-deep:#A98748;
  --parchment:#F7F3EC; --ivory:#FBF8F1; --sunken:#EFEAE0;
  --slate-100:#E7E2D7; --slate-200:#D6D0C2; --slate-300:#B6B0A2; --slate-600:#54595E;
  --fg-quiet:#7A7E81;
  --oxblood:#8C3A2E;
  --serif:"EB Garamond",Georgia,serif;
  --sans:"Inter",system-ui,sans-serif;
  --ease:cubic-bezier(0.32,0.72,0.32,1);
}
*{box-sizing:border-box;}
html{color-scheme:light;}
body{
  margin:0;background:var(--parchment);color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:1.45;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh;
}
::selection{background:rgba(201,168,106,.35);color:var(--ink);}

/* ---- shell ---- */
.masthead{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;border-bottom:1px solid var(--slate-100);}
.masthead img{height:20px;}
.masthead a.back{font-size:13px;color:var(--fen-mist);text-decoration:none;letter-spacing:.3px;}
.masthead a.back:hover{color:var(--fen);}
.masthead .eyebrow{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.4px;color:var(--fen-mist);}
.stage{max-width:760px;margin:0 auto;padding:56px 28px 96px;}

/* ---- type ---- */
.eyebrow{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.4px;color:var(--fen-mist);}
.t-place{font-size:13px;color:var(--fg-quiet);letter-spacing:.3px;margin:0 0 10px;}
h1.scene{font-family:var(--serif);font-weight:500;color:var(--fen);font-size:46px;line-height:1.08;margin:0 0 24px;letter-spacing:.2px;}
.prose{font-family:var(--serif);font-size:19px;line-height:1.66;color:var(--ink);}
.prose p{margin:0 0 1em;}
.prose p:last-child{margin-bottom:0;}

/* ---- panels / motion ---- */
.panel{opacity:0;transform:translateY(8px);transition:opacity .5s var(--ease),transform .5s var(--ease);}
.panel.in{opacity:1;transform:none;}
.panel.gone{display:none;}
.rule{height:1px;background:var(--slate-100);border:0;margin:34px 0;}

/* ---- buttons ---- */
.btn{font-family:var(--sans);font-size:15px;font-weight:500;background:var(--fen);color:var(--ivory);border:0;border-radius:6px;padding:12px 22px;cursor:pointer;transition:background .2s var(--ease),transform .12s var(--ease);letter-spacing:.2px;}
.btn:hover{background:#22323d;}
.btn:active{transform:translateY(1px);}
.btn.ghost{background:transparent;color:var(--fen);box-shadow:inset 0 0 0 1px var(--slate-200);}
.btn.ghost:hover{background:var(--ivory);box-shadow:inset 0 0 0 1px var(--slate-300);}
.btn[disabled]{opacity:.4;cursor:default;}
.btnrow{display:flex;gap:12px;align-items:center;margin-top:30px;flex-wrap:wrap;}

/* ---- outcome shared ---- */
.verdict{font-family:var(--serif);font-size:15px;letter-spacing:1.6px;text-transform:uppercase;color:var(--reed-deep);margin:0 0 8px;font-weight:500;}
.callout{border-left:3px solid var(--reed);padding:4px 0 4px 20px;margin:26px 0;font-family:var(--serif);font-style:italic;font-size:20px;color:var(--fen-mist);line-height:1.55;}
.counterfactual{background:var(--sunken);border-radius:10px;padding:20px 22px;margin:26px 0;font-size:15px;line-height:1.6;color:var(--slate-600);}
.counterfactual .eyebrow{display:block;margin-bottom:8px;}

/* ---- meaning ledger ---- */
.ledger{border-top:1px solid var(--slate-100);margin-top:8px;}
.ledger .row{display:grid;grid-template-columns:150px 1fr;gap:18px;padding:16px 0;border-bottom:1px solid var(--slate-100);}
.ledger .k{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--fen-mist);padding-top:2px;}
.ledger .v{font-family:var(--serif);font-size:18px;line-height:1.5;color:var(--ink);}
.ledger .v .scrip{font-style:italic;color:var(--fen-mist);}
.ledger .v cite{font-style:normal;color:var(--fg-quiet);font-size:14px;font-family:var(--sans);display:block;margin-top:4px;}

.footer{max-width:760px;margin:0 auto;padding:0 28px 60px;color:var(--fg-quiet);font-size:13px;line-height:1.6;}
.footer em{color:var(--fen-mist);}

/* ============================================================
   WESLEY — three slips
   ============================================================ */
.lede{font-family:var(--serif);font-size:21px;line-height:1.6;color:var(--ink);}
.urn{margin:40px 0 8px;padding:38px 24px 30px;border-radius:12px;background:linear-gradient(180deg,var(--ivory),#F4EFE4);box-shadow:inset 0 0 0 1px var(--slate-100),0 8px 28px rgba(26,33,40,.06);text-align:center;}
.urn .hint{font-size:13px;color:var(--fg-quiet);margin:0 0 22px;letter-spacing:.3px;}
.slips{display:flex;gap:18px;justify-content:center;perspective:900px;}
.slip{width:128px;height:160px;cursor:pointer;position:relative;transition:transform .35s var(--ease);}
.slip:hover:not(.flipped){transform:translateY(-10px) rotate(-1deg);}
.slip .face{position:absolute;inset:0;border-radius:5px;display:flex;align-items:center;justify-content:center;text-align:center;backface-visibility:hidden;}
.slip .back{background:repeating-linear-gradient(135deg,rgba(169,135,72,.05) 0 8px,transparent 8px 16px),linear-gradient(180deg,#F3ECDD,#EADFC8);box-shadow:inset 0 0 0 1px var(--slate-200),0 2px 6px rgba(26,33,40,.07);}
.slip .back::after{content:"";width:30px;height:30px;border-radius:50%;background:var(--reed);opacity:.32;box-shadow:inset 0 0 0 6px rgba(247,243,236,.6);}
.slip .front{background:linear-gradient(180deg,#FBF8F1,#F4EEE1);box-shadow:inset 0 0 0 1px var(--reed),0 2px 6px rgba(26,33,40,.08);transform:rotateY(180deg);flex-direction:column;gap:8px;padding:14px;}
.slip .front .word{font-family:var(--serif);font-style:italic;font-size:21px;color:var(--fen);line-height:1.15;}
.slip .front .sub{font-size:11px;color:var(--fg-quiet);letter-spacing:.4px;}
.slip.flipped .face{transform:rotateY(180deg);}
.slip.flipped .front{transform:rotateY(0);}
.slip.faded{opacity:.32;filter:saturate(.7);pointer-events:none;}
.slip.chosen{transform:translateY(-14px) scale(1.04);}
.slip.chosen .front{box-shadow:inset 0 0 0 2px var(--reed-deep),0 12px 30px rgba(169,135,72,.22);}
@keyframes wob{0%,100%{transform:translateY(0);}25%{transform:translateY(-6px) rotate(-1.5deg);}75%{transform:translateY(-3px) rotate(1.5deg);}}
.slips.shuffling .slip{animation:wob .5s var(--ease) infinite;}
.slips.shuffling .slip:nth-child(2){animation-delay:.08s;}
.slips.shuffling .slip:nth-child(3){animation-delay:.16s;}

/* ============================================================
   ACHAN — narrowing funnel
   ============================================================ */
.breadcrumb{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:30px 0 6px;font-family:var(--serif);font-size:17px;}
.breadcrumb .crumb{color:var(--fen);}
.breadcrumb .sep{color:var(--slate-300);}
.breadcrumb .pending{color:var(--slate-300);font-style:italic;}
.field{margin:26px 0 8px;padding:30px 24px;border-radius:12px;background:linear-gradient(180deg,var(--ivory),#F4EFE4);box-shadow:inset 0 0 0 1px var(--slate-100),0 8px 28px rgba(26,33,40,.06);}
.field .level-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--fen-mist);text-align:center;margin:0 0 20px;}
.tokens{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;}
.token{
  min-width:118px;padding:14px 16px;border-radius:8px;text-align:center;
  font-family:var(--serif);font-size:18px;color:var(--fen);
  background:var(--ivory);box-shadow:inset 0 0 0 1px var(--slate-200);
  transition:all .35s var(--ease);position:relative;
}
.token .you{display:block;font-size:11px;font-family:var(--sans);letter-spacing:.6px;text-transform:uppercase;color:var(--reed-deep);margin-top:3px;}
.tokens.casting .token{animation:flick .4s var(--ease) infinite;}
@keyframes flick{0%,100%{box-shadow:inset 0 0 0 1px var(--slate-200);}50%{box-shadow:inset 0 0 0 1px var(--reed);}}
.token.faded{opacity:.28;filter:saturate(.6);}
.token.taken{background:var(--fen);color:var(--ivory);box-shadow:inset 0 0 0 2px var(--reed-deep),0 8px 24px rgba(44,62,74,.2);transform:translateY(-3px);}
.token.taken .you{color:var(--reed);}
.token.guilty.taken{background:var(--oxblood);}
.dread{text-align:center;font-family:var(--serif);font-style:italic;font-size:17px;color:var(--fen-mist);margin:18px 0 0;min-height:1.4em;}

/* ============================================================
   KLEROTERION — the bronze-ball machine
   ============================================================ */
.kleros{margin:26px 0 8px;padding:26px 22px;border-radius:12px;
  background:linear-gradient(180deg,#EDE7DA,#E3DAC6);
  box-shadow:inset 0 0 0 1px var(--slate-200),0 8px 28px rgba(26,33,40,.08);}
.kleros .machine-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--fen-mist);text-align:center;margin:0 0 18px;}
.slab{display:flex;flex-direction:column;gap:5px;}
.krow{display:grid;grid-template-columns:30px repeat(10,1fr);gap:4px;align-items:stretch;}
.krow.head .cell-h{font-size:10px;letter-spacing:.3px;color:var(--fen-mist);text-align:center;padding:2px 0;font-family:var(--sans);text-transform:uppercase;}
.krow.head .cell-h.mine{color:var(--reed-deep);font-weight:700;}
.lamp{border-radius:50%;width:22px;height:22px;justify-self:center;align-self:center;
  background:var(--sunken);box-shadow:inset 0 0 0 1px var(--slate-300);transition:all .3s var(--ease);position:relative;}
.lamp.drop{animation:drop .45s var(--ease);}
@keyframes drop{0%{transform:translateY(-26px) scale(.7);opacity:0;}60%{transform:translateY(2px);}100%{transform:translateY(0);opacity:1;}}
.lamp.white{background:radial-gradient(circle at 38% 34%,#fff,#E8E2D2);box-shadow:inset 0 0 0 1px var(--slate-300),0 0 0 2px rgba(91,122,78,.5);}
.lamp.black{background:radial-gradient(circle at 38% 34%,#4a4640,#1d1b18);box-shadow:inset 0 0 0 1px #000;}
.cell{height:30px;border-radius:4px;background:var(--ivory);box-shadow:inset 0 0 0 1px var(--slate-200);
  display:flex;align-items:center;justify-content:center;transition:all .35s var(--ease);}
.cell::after{content:"";width:7px;height:9px;border-radius:1px 1px 2px 2px;background:var(--slate-300);opacity:.7;}
.cell.mine{box-shadow:inset 0 0 0 2px var(--reed-deep);background:#FBF3E2;}
.cell.mine::after{display:none;}
.cell.mine .tag{font-size:9px;font-family:var(--sans);text-transform:uppercase;letter-spacing:.5px;color:var(--reed-deep);font-weight:700;}
.krow.seated .cell{background:#E7EDD7;box-shadow:inset 0 0 0 1px rgba(91,122,78,.5);}
.krow.seated .cell::after{background:var(--ok,#5B7A4E);opacity:.9;}
.krow.seated .cell.mine{box-shadow:inset 0 0 0 2px var(--ok,#5B7A4E);background:#DCE7C8;}
.krow.dismissed .cell{opacity:.32;}
.hopper{display:flex;align-items:center;justify-content:center;gap:7px;margin:20px 0 4px;}
.hopper .lbl{font-size:11px;color:var(--fg-quiet);letter-spacing:.4px;text-transform:uppercase;}
.hopper .ball{width:16px;height:16px;border-radius:50%;}
.hopper .ball.white{background:radial-gradient(circle at 38% 34%,#fff,#E8E2D2);box-shadow:inset 0 0 0 1px var(--slate-300);}
.hopper .ball.black{background:radial-gradient(circle at 38% 34%,#4a4640,#1d1b18);}
.hopper .ball.spent{opacity:.25;}
.machine-note{text-align:center;font-family:var(--serif);font-style:italic;font-size:15px;color:var(--fen-mist);margin:14px 0 0;min-height:1.3em;}

/* ============================================================
   GROUP — the room casts one lot (shared screen)
   ============================================================ */
.frames{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 26px;}
.frame-pill{font-family:var(--sans);font-size:14px;font-weight:500;color:var(--fen);
  background:var(--ivory);border:0;box-shadow:inset 0 0 0 1px var(--slate-200);
  border-radius:999px;padding:9px 18px;cursor:pointer;transition:all .2s var(--ease);}
.frame-pill:hover{box-shadow:inset 0 0 0 1px var(--slate-300);}
.frame-pill.active{background:var(--fen);color:var(--ivory);box-shadow:inset 0 0 0 1px var(--fen);}
.frame-blurb{font-family:var(--serif);font-style:italic;font-size:17px;color:var(--fen-mist);margin:0 0 26px;min-height:1.5em;}

.namebar{display:flex;gap:10px;margin:0 0 16px;max-width:420px;}
.namebar input{flex:1;font-family:var(--sans);font-size:15px;padding:11px 14px;border-radius:6px;
  border:0;box-shadow:inset 0 0 0 1px var(--slate-200);background:var(--ivory);color:var(--ink);}
.namebar input:focus{outline:2px solid var(--focus-ring,rgba(44,62,74,.35));outline-offset:1px;}
.roster{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 8px;min-height:44px;}
.chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--serif);font-size:18px;color:var(--fen);
  background:var(--ivory);box-shadow:inset 0 0 0 1px var(--slate-200);border-radius:999px;padding:7px 8px 7px 16px;}
.chip button{border:0;background:var(--sunken);color:var(--fen-mist);width:22px;height:22px;border-radius:50%;
  cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;}
.chip button:hover{background:var(--slate-200);color:var(--ink);}
.roster-empty{font-family:var(--serif);font-style:italic;color:var(--slate-300);font-size:17px;align-self:center;}

/* the ring of names being searched */
.ring{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin:34px 0 8px;
  padding:34px 24px;border-radius:14px;background:linear-gradient(180deg,var(--ivory),#F4EFE4);
  box-shadow:inset 0 0 0 1px var(--slate-100),0 8px 28px rgba(26,33,40,.06);}
.lotcard{font-family:var(--serif);font-size:22px;color:var(--fen);background:var(--ivory);
  box-shadow:inset 0 0 0 1px var(--slate-200);border-radius:10px;padding:18px 26px;min-width:120px;text-align:center;
  transition:transform .12s var(--ease),box-shadow .12s var(--ease),background .12s var(--ease),color .12s var(--ease);}
.lotcard.lit{background:var(--reed);color:var(--ink);box-shadow:inset 0 0 0 2px var(--reed-deep),0 6px 18px rgba(169,135,72,.28);transform:translateY(-4px) scale(1.04);}
.lotcard.fallen{background:var(--fen);color:var(--ivory);box-shadow:inset 0 0 0 2px var(--reed-deep),0 14px 36px rgba(44,62,74,.28);transform:translateY(-6px) scale(1.08);}
.lotcard.dim{opacity:.4;}
.castnote{text-align:center;font-family:var(--serif);font-style:italic;font-size:17px;color:var(--fen-mist);margin:18px 0 0;min-height:1.4em;}
.fallen-name{font-family:var(--serif);color:var(--fen);font-size:60px;line-height:1.04;margin:6px 0 18px;letter-spacing:.2px;}

/* ============================================================
   HUB
   ============================================================ */
.hub-hero{max-width:760px;margin:0 auto;padding:72px 28px 32px;}
.hub-hero h1{font-family:var(--serif);font-weight:500;color:var(--fen);font-size:60px;line-height:1.04;margin:14px 0 18px;letter-spacing:.2px;}
.hub-hero .sub{font-family:var(--serif);font-size:21px;line-height:1.6;color:var(--fen-mist);font-style:italic;max-width:60ch;}
.cards{max-width:760px;margin:0 auto;padding:8px 28px 40px;display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.card{display:block;text-decoration:none;color:inherit;background:var(--ivory);border-radius:12px;padding:26px 24px;box-shadow:inset 0 0 0 1px var(--slate-100);transition:transform .2s var(--ease),box-shadow .2s var(--ease);}
.card:hover{transform:translateY(-3px);box-shadow:inset 0 0 0 1px var(--slate-200),0 10px 28px rgba(26,33,40,.08);}
.card .tag{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--reed-deep);}
.card h2{font-family:var(--serif);font-weight:500;color:var(--fen);font-size:27px;line-height:1.12;margin:10px 0 8px;}
.card .meta{font-size:13px;color:var(--fg-quiet);margin:0 0 12px;letter-spacing:.2px;}
.card .desc{font-family:var(--serif);font-size:16px;line-height:1.5;color:var(--slate-600);}
.card.soon{opacity:.6;pointer-events:none;}
.card.soon .tag{color:var(--slate-300);}

@media(max-width:560px){
  h1.scene{font-size:34px;}
  .hub-hero h1{font-size:42px;}
  .slip{width:104px;height:134px;}
  .cards{grid-template-columns:1fr;}
  .ledger .row{grid-template-columns:1fr;gap:4px;}
}
