/* ============================================================
   Indian Games — shared stylesheet for the catalogue and every
   game page. Uses the same tokens as ../css/site.css: light-first,
   dark opt-in through [data-theme="dark"] (stored under "theme").
   ============================================================ */

:root{
  --bg:#F6F8FA; --bg-2:#FFFFFF; --bg-3:#EDF2F6;
  --line:#DCE4EB; --line-2:#C2D0DB;
  --ink:#0C1620; --ink-2:#44566A; --ink-3:#5E7183;
  --accent:#0D7A70; --accent-ink:#FFFFFF; --accent-dim:#D5F3EF;
  --warn:#A65200; --crit:#B3211C; --good:#15803D;
  --radius:10px; --radius-lg:16px;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --maxw:1180px;
  --shadow:0 1px 2px rgba(14,30,48,.05), 0 12px 28px -16px rgba(14,30,48,.20);

  /* The board itself */
  --board:#FFFFFF; --board-edge:#DCE4EB; --board-line:#334155; --board-pt:#E2E8F0;
  --board-mark:#0D7A70; --board-den:#FDE2DC; --board-ink:#0C1620; --board-ink-2:#5E7183;
  --board-slot:#F1F5F9; --board-face:#FFFFFF; --board-track:#0D7A70;

  /* Piece colours (names kept from the traditional sets) */
  --haldi:#F5B731; --jamun:#8B5CF6; --tiger:#EF5A47; --goat:#F2DDB0; --ink-piece:#3A4756;
  --bone:#EEF2F6; --neel:#3B82F6; --hara:#22A06B;
  --haldi-text:#A36F00; --jamun-text:#6D42D6; --tiger-text:#D2402E; --goat-text:#9C7C3A;
  --neel-text:#1D5FD1; --hara-text:#15803D;
}
[data-theme="dark"]{
  --bg:#0A0E13; --bg-2:#0F151C; --bg-3:#141C25;
  --line:#1E2A36; --line-2:#2A3947;
  --ink:#E8EEF4; --ink-2:#A6B4C2; --ink-3:#6D7E8E;
  --accent:#5EEAD4; --accent-ink:#062B26; --accent-dim:#1B4A45;
  --warn:#FBBF24; --crit:#F87171; --good:#4ADE80;
  --shadow:0 1px 0 rgba(255,255,255,.03) inset, 0 12px 32px -12px rgba(0,0,0,.6);

  --board:#121A24; --board-edge:#2A3947; --board-line:#C3D0DC; --board-pt:#1F2B38;
  --board-mark:#5EEAD4; --board-den:#4A2622; --board-ink:#E8EEF4; --board-ink-2:#A6B4C2;
  --board-slot:#1B2532; --board-face:#243140; --board-track:#5EEAD4;

  --haldi-text:#F5B731; --jamun-text:#B196FF; --tiger-text:#FF8A75; --goat-text:#F2DDB0;
  --neel-text:#7EB6FF; --hara-text:#6EE0A8;
}

/* Legacy names still used by a few game-specific rules */
:root{
  --surface:var(--bg-2); --surface-2:var(--bg-3); --text:var(--ink); --muted:var(--ink-3);
  --rule:var(--line); --hl:var(--accent); --cap:var(--crit); --focus:var(--accent);
  --font-display:var(--sans); --font-body:var(--sans);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--sans);font-size:15px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;display:flex;flex-direction:column;
}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:64px 64px;
  -webkit-mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 0%,transparent 75%);
          mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 0%,transparent 75%);
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.02em;font-weight:700}
p{margin:0}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

/* ---------- Site header (mirrors the main site) ---------- */
header.site{
  position:sticky;top:0;z-index:50;
  background:color-mix(in srgb,var(--bg) 82%,transparent);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
          backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid transparent;transition:border-color .2s;
}
@supports not (background:color-mix(in srgb,red 50%,transparent)){header.site{background:var(--bg)}}
header.site.stuck{border-bottom-color:var(--line)}
.hbar{max-width:var(--maxw);margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:14px;height:60px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:-.02em;color:var(--ink);flex:none}
.brand:hover{text-decoration:none}
.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-dim);flex:none}
.brand small{display:block;font:500 11px/1 var(--mono);color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;margin-top:3px}
.crumbs{display:flex;align-items:center;gap:7px;font:500 12.5px/1 var(--mono);color:var(--ink-3);min-width:0;white-space:nowrap;overflow:hidden}
.crumbs a{color:var(--ink-2);flex:none}
.crumbs a:hover{color:var(--accent);text-decoration:none}
.crumbs .sep{opacity:.45;flex:none}
.crumbs b{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis}
.hbtns{margin-left:auto;display:flex;gap:8px;flex:none}
.iconbtn{
  width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line);
  background:var(--bg-2);border-radius:9px;color:var(--ink-2);cursor:pointer;
}
.iconbtn:hover{color:var(--ink);border-color:var(--line-2)}
.iconbtn .i-sun{display:none}
[data-theme="dark"] .iconbtn .i-sun{display:block}
[data-theme="dark"] .iconbtn .i-moon{display:none}
@media(max-width:640px){
  .brand>span:not(.dot){display:none}
  .brand{width:36px;height:36px;justify-content:center;gap:0}
  .crumbs .lg{display:none}
  .hbar{gap:12px;padding:0 16px}
}

/* ---------- Page frame ---------- */
.wrap{
  max-width:1080px;width:100%;margin:0 auto;padding:22px 20px 44px;
  display:grid;gap:18px;position:relative;z-index:1;flex:1;align-content:start;
}
/* Grid and flex children must be allowed to shrink, or a wide board stretches the whole page. */
.wrap>*,.game>*{min-width:0}
@media(max-width:560px){.wrap{padding:16px 16px 36px;gap:14px}}
header.top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 28px;flex-wrap:wrap}
.back{
  display:inline-flex;align-items:center;gap:6px;margin-bottom:12px;
  font:500 11.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);
}
.back:hover{color:var(--accent);text-decoration:none}
h1{font-size:clamp(28px,5vw,40px);font-weight:800;letter-spacing:-.035em;line-height:1.05;text-wrap:balance}
h1 .sub{display:block;font-size:14px;font-weight:500;letter-spacing:0;line-height:1.4;color:var(--ink-3);margin-top:8px}
.origin{color:var(--ink-2);font-size:14px;line-height:1.55;max-width:46ch}
.origin b{color:var(--ink);font-weight:600}
.intro{color:var(--ink-2);font-size:15.5px;max-width:70ch}

/* ---------- Game layout ---------- */
.game{display:grid;grid-template-columns:minmax(0,1fr) 312px;gap:18px;align-items:start}
@media(max-width:820px){.game{grid-template-columns:minmax(0,1fr)}}

.status{
  display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;justify-content:space-between;
  background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;box-shadow:var(--shadow);
}
.turn{display:flex;align-items:center;gap:10px;font-size:14.5px;min-width:0}
.dot{background:var(--ink-3)}
.turn .dot{width:16px;height:16px;border-radius:50%;flex:none;box-shadow:inset 0 -2px 0 rgba(0,0,0,.18);transition:background .3s}
.turn .dot.think{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
.turn b{font-weight:650}
.turn small{display:block;color:var(--ink-3);font-size:12.5px}
.counts{display:flex;gap:16px;flex-wrap:wrap;font-variant-numeric:tabular-nums}
.counts div{line-height:1.1;text-align:right}
.counts .n{display:block;font:700 22px/1 var(--sans);letter-spacing:-.03em}
.counts .n.sc{font-size:22px}
.counts .l{display:block;font:500 10px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:4px}
.c-jamun{color:var(--jamun-text)} .c-haldi{color:var(--haldi-text)} .c-tiger,.c-sindoor{color:var(--tiger-text)}
.c-goat{color:var(--goat-text)} .c-ink{color:var(--ink-2)} .c-neel{color:var(--neel-text)} .c-hara{color:var(--hara-text)} .c-bone{color:var(--ink-2)}

/* Dice, shells and the throw button share the status bar */
.dicebox{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.die{
  width:44px;height:44px;border-radius:10px;background:var(--bg-3);border:1px solid var(--line);
  display:grid;place-items:center;font:700 22px/1 var(--sans);letter-spacing:-.02em;position:relative;
}
.die.mod{background:var(--bg-2);border-style:dashed}
.die.used{opacity:.35;text-decoration:line-through}
.die.roll{animation:spin .5s ease-in-out}
.die small{position:absolute;bottom:-15px;left:0;right:0;text-align:center;font:500 8.5px/1 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap}
.dicebox:has(.die small){padding-bottom:12px}
@keyframes spin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(200deg) scale(1.2)}100%{transform:rotate(360deg) scale(1)}}
.total{font:700 20px/1 var(--sans);min-width:44px;text-align:center;font-variant-numeric:tabular-nums}
.shells{display:flex;gap:4px}
.shell{width:16px;height:24px;border-radius:50%;background:var(--bg-3);border:1.5px solid var(--line-2);position:relative;transition:all .2s}
.shell.up{background:var(--accent-dim);border-color:var(--accent)}
.shell.up::after{content:"";position:absolute;left:5px;top:4px;width:3px;height:14px;border-radius:3px;background:var(--accent)}

/* ---------- Board ---------- */
.boardbox{position:relative;max-width:640px}
svg.board{
  display:block;width:100%;height:auto;max-width:100%;border-radius:14px;box-shadow:var(--shadow);
  overflow:visible;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;
}
.board-bg{fill:var(--board);stroke:var(--board-edge);stroke-width:1.5}
.board-grid{stroke:var(--board-line);opacity:.09}
.lines{fill:none;stroke:var(--board-line);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.lines.dark{stroke-width:3.5}
.pt{fill:var(--board-pt);stroke:var(--board-line);stroke-width:2}
.pt.den{fill:var(--board-den)}
.mark{fill:var(--board-mark);opacity:.9}
.point{fill:transparent;cursor:pointer}
.point:focus{outline:none}
.point:focus-visible{stroke:var(--accent);stroke-width:3;fill:color-mix(in srgb,var(--accent) 15%,transparent)}
.target{fill:var(--accent);opacity:0;pointer-events:none}
.target.on{opacity:.6;animation:tgt 1.1s ease-in-out infinite}
.target.soft{opacity:.25}
.target.on.capture{fill:var(--crit)}
@keyframes tgt{0%,100%{r:13}50%{r:17}}
.piece{transition:transform .45s cubic-bezier(.3,.9,.35,1.12);cursor:pointer;will-change:transform}
.piece.static{transition:none}
.piece .disc{filter:drop-shadow(0 3px 3px rgba(0,0,0,.28))}
.piece.jump{animation:leap .45s ease-in-out}
@keyframes leap{0%{filter:drop-shadow(0 2px 2px rgba(0,0,0,.3))}50%{filter:drop-shadow(0 22px 12px rgba(0,0,0,.3))}100%{filter:drop-shadow(0 2px 2px rgba(0,0,0,.3))}}
.piece .sel{opacity:0;fill:none;stroke:var(--accent);stroke-width:4;transition:opacity .2s}
.piece.movable .sel{opacity:.4;stroke-dasharray:6 6}
.piece.selected .sel{opacity:1;stroke-dasharray:none}
.piece.chaining .sel{opacity:1;stroke:var(--crit);stroke-dasharray:none;animation:pulse2 .9s ease-in-out infinite}
.piece.removable .sel{opacity:.9;stroke:var(--crit);stroke-dasharray:4 5}
@keyframes pulse2{0%,100%{stroke-width:4}50%{stroke-width:7}}
.piece.gone{animation:vanish .5s ease-in forwards;pointer-events:none}
@keyframes vanish{0%{opacity:1}55%{opacity:1;transform:var(--tf) scale(1.15) rotate(15deg)}100%{opacity:0;transform:var(--tf) scale(.2) rotate(110deg)}}
.piece.stuck .disc{filter:drop-shadow(0 3px 3px rgba(0,0,0,.28)) saturate(.5) brightness(.8)}
.trail{fill:none;stroke:var(--accent);stroke-width:4;stroke-dasharray:2 10;stroke-linecap:round;opacity:.7;pointer-events:none}
.millglow{fill:none;stroke:var(--good);stroke-width:14;stroke-linecap:round;opacity:.35;pointer-events:none}

/* Generic on-board text and markers used by the race and dice boards */
.num{font:700 30px/1 var(--sans);letter-spacing:-.03em;fill:var(--board-ink);opacity:.85}
.numd{font:500 15px/1 var(--sans);fill:var(--board-ink-2)}
.count{font:700 16px/1 var(--sans);fill:var(--board-ink);text-anchor:middle;pointer-events:none}
.gridline{stroke:var(--board-line);stroke-width:1.5;opacity:.35}
.track,.spiral{fill:none;stroke:var(--board-track);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;opacity:.55}
.gate{fill:var(--board);stroke:var(--board-track);stroke-width:8}
.stack,.pawn{cursor:pointer}
.stack .ring,.pawn .ring{opacity:0;fill:none;stroke:var(--accent);stroke-width:4;stroke-dasharray:6 6}
.stack.movable .ring,.pawn.movable .ring{opacity:1}
.stack.chosen .ring{opacity:1;stroke-dasharray:none}

/* A wide board can scroll sideways on a phone instead of shrinking to nothing */
@media(max-width:600px){
  .boardbox.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:14px;max-width:100%}
  .boardbox.scroll svg.board{min-width:560px;box-shadow:none}
}

@media (prefers-reduced-motion:reduce){
  .piece{transition:none}
  .piece.jump,.target.on,.turn .dot.think,.piece.chaining .sel,.die.roll{animation:none}
  .piece.gone{animation:none;opacity:0}
}

/* ---------- Trays, logs, bars ---------- */
.tray{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.tray .side{display:flex;flex-direction:column;gap:6px}
.cap{font:500 10.5px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.tray .row{display:flex;gap:4px;flex-wrap:wrap}
.tok{width:14px;height:14px;border-radius:50%;box-shadow:inset 0 -2px 0 rgba(0,0,0,.18);transition:all .35s;background:var(--ink-3)}
.tok.dead{background:transparent!important;box-shadow:inset 0 0 0 1.5px var(--line-2)}
.tok.used{background:transparent!important;box-shadow:inset 0 0 0 1.5px var(--line-2);opacity:.6}
.chainbar{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;
  border-radius:var(--radius);background:var(--bg-2);border:1px solid var(--accent);box-shadow:var(--shadow);
}
.chainbar span{font-size:14px}
.msg{min-height:20px;color:var(--ink-3);font-size:13.5px;margin-top:8px}
.log{margin-top:12px;font-size:13.5px;color:var(--ink-3);display:grid;gap:4px;max-height:140px;overflow:auto}
.log div:first-child{color:var(--ink)}
.scores{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.score{
  display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--line);border-radius:9px;
  background:var(--bg-2);font-size:13.5px;font-variant-numeric:tabular-nums;
}
.score .sw{width:12px;height:12px;border-radius:50%;flex:none}
.score b{font:700 17px/1 var(--sans);letter-spacing:-.02em}
.score.reserve{cursor:pointer}
.score.reserve.movable{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim)}
.score.out{opacity:.5;text-decoration:line-through}

/* ---------- Side panel ---------- */
.panel{display:grid;gap:14px}
.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow)}
.card h2{font-size:15px;font-weight:650;letter-spacing:-.01em;margin:0 0 12px}
fieldset{border:0;padding:0;margin:0;display:grid;gap:6px;min-width:0}
fieldset+fieldset{margin-top:14px}
legend{font:500 10.5px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px;padding:0}
.opt{
  display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;border:1px solid var(--line);
  background:var(--bg);cursor:pointer;font-size:13.5px;color:var(--ink-2);line-height:1.35;
}
.opt:hover{border-color:var(--line-2)}
.opt:has(input:checked){border-color:var(--accent);background:var(--accent-dim);color:var(--ink)}
.opt input{margin:0;accent-color:var(--accent);flex:none}
.seg{display:flex;gap:6px}
.seg .opt{flex:1;justify-content:center;padding:8px 4px;text-align:center}
.seat{
  display:flex;align-items:center;gap:8px;padding:6px 8px 6px 10px;border:1px solid var(--line);border-radius:9px;
  background:var(--bg);font-size:13.5px;
}
.seat select{
  font:500 13px/1.3 var(--sans);padding:5px 8px;border-radius:7px;border:1px solid var(--line);
  background:var(--bg-2);color:var(--ink);margin-left:auto;
}
.seat .sw{width:13px;height:13px;border-radius:50%;flex:none}
.btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
button{
  font:600 14px/1.2 var(--sans);border-radius:9px;border:1px solid var(--line);background:var(--bg-2);color:var(--ink);
  padding:10px 15px;min-height:40px;cursor:pointer;transition:transform .15s,border-color .15s,filter .15s;
}
button:hover{border-color:var(--line-2);transform:translateY(-1px)}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
button.primary:hover{filter:brightness(1.08)}
button.small{padding:7px 11px;font-size:13px;min-height:34px}
button:disabled{opacity:.45;cursor:default;transform:none;filter:none}
button:focus-visible,.opt:focus-within{outline:2px solid var(--accent);outline-offset:2px}
details.rules summary{
  cursor:pointer;font-size:15px;font-weight:650;letter-spacing:-.01em;list-style:none;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
details.rules summary::-webkit-details-marker{display:none}
details.rules summary::after{content:"+";font:500 18px/1 var(--mono);color:var(--ink-3)}
details.rules[open] summary::after{content:"–"}
details.rules[open] summary{margin-bottom:4px}
.rules p{margin:8px 0 0;font-size:14px;color:var(--ink-2);max-width:62ch;line-height:1.55}
.rules p b{font-weight:650;color:var(--ink)}
.rules .k{display:inline-block;width:11px;height:11px;border-radius:50%;vertical-align:-1px;margin-right:4px}
.note{font-size:13px;color:var(--ink-3);border-left:3px solid var(--accent);padding-left:10px;margin:12px 0 0}
.foot{color:var(--ink-3);font-size:12.5px;line-height:1.55;max-width:70ch}
.foot a{color:inherit;text-decoration:underline;text-underline-offset:3px}

/* ---------- End-of-game overlay ---------- */
.over{
  position:absolute;inset:0;display:grid;place-items:center;background:rgba(8,14,20,.55);border-radius:14px;
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .4s;z-index:5;padding:12px;
}
.over.show{opacity:1;pointer-events:auto}
.over .box{
  background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px 24px;text-align:center;
  max-width:320px;width:100%;box-shadow:var(--shadow);transform:translateY(12px);transition:transform .4s;
}
.over.show .box{transform:none}
.over h3{font-size:24px;font-weight:800;letter-spacing:-.03em;margin:0 0 6px}
.over p{margin:0 0 14px;color:var(--ink-2);font-size:14px}

/* ---------- Colour utilities (kept last so they beat component defaults) ---------- */
.bg-jamun{background:var(--jamun)} .bg-haldi{background:var(--haldi)} .bg-tiger,.bg-sindoor{background:var(--tiger)}
.bg-goat{background:var(--goat)} .bg-ink{background:var(--ink-piece)} .bg-bone{background:var(--bone);box-shadow:inset 0 0 0 1px var(--line-2)}
.bg-neel{background:var(--neel)} .bg-hara{background:var(--hara)}

/* ---------- Catalogue ---------- */
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.pills{display:flex;gap:6px;flex-wrap:wrap}
.pill{font:500 12.5px/1 var(--sans);padding:9px 13px;border-radius:8px;cursor:pointer;background:var(--bg-2);border:1px solid var(--line);color:var(--ink-2);min-height:0}
.pill:hover{border-color:var(--line-2);color:var(--ink);transform:none}
.pill[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:650}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.gcard{
  display:flex;flex-direction:column;gap:10px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:18px;color:inherit;box-shadow:var(--shadow);transition:transform .15s,border-color .15s;
}
.gcard:hover{transform:translateY(-2px);border-color:var(--accent);text-decoration:none}
.gcard h2{font-size:17px;font-weight:700;letter-spacing:-.02em;line-height:1.2}
.gcard h2 .nat{display:block;font-size:13px;font-weight:500;letter-spacing:0;color:var(--ink-3);margin-top:3px}
.gcard p{font-size:13.5px;color:var(--ink-2);flex:1;line-height:1.5}
.meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font:500 11.5px/1 var(--mono);color:var(--ink-3);letter-spacing:.02em}
.tag{font:600 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;padding:5px 8px;border-radius:5px;background:var(--bg-3);border:1px solid var(--line);color:var(--ink-2)}
.tokens{display:flex;gap:4px}
.tk{width:13px;height:13px;border-radius:50%;box-shadow:inset 0 -2px 0 rgba(0,0,0,.18)}
.empty{padding:30px;text-align:center;color:var(--ink-3);font-size:14px;grid-column:1/-1}

/* ---------- Footer ---------- */
footer.site{border-top:1px solid var(--line);background:var(--bg-2);padding:22px 0;position:relative;z-index:1;margin-top:auto}
footer.site .fin{
  max-width:var(--maxw);margin:0 auto;padding:0 20px;display:flex;justify-content:space-between;gap:8px 24px;flex-wrap:wrap;
  font-size:13px;color:var(--ink-3);
}
