/* Pemilu HMTG "GEA" ITB — Panem at night. Fonts are self-hosted (OFL, see fonts/).
   Scales mirror Tailwind CSS defaults; neutrals are Tailwind stone. */
@font-face{font-family:"Cormorant Garamond";src:url("fonts/cormorant-garamond-300.7f04455649ba.woff2") format("woff2");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("fonts/cormorant-garamond-300-italic.11798db66ea5.woff2") format("woff2");font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("fonts/cormorant-garamond-400.ad42ff0a48cd.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("fonts/cormorant-garamond-500.edfa21ab8b94.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url("fonts/source-serif-4.c3548994a9a0.woff2") format("woff2");font-weight:200 900;font-style:normal;font-display:swap}

:root{
  /* Color: stone neutrals, one accent (gold), one semantic "irreversible" (blood). Ember lives only in p5 paintings. */
  --ink:#0c0a09;--coal:#1c1917;--ash:#292524;--stone-600:#57534e;--stone-500:#78716c;--dust:#a8a29e;--bone:#e7e5e4;
  --gold:#c9a35c;--blood:#7a1a14;--blood-hover:#991b1b;--error:#fca5a5;
  --line:rgb(201 163 92 / .2);--line-strong:rgb(201 163 92 / .45);
  /* Spacing (Tailwind 0.25rem steps) */
  --space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;
  --space-10:2.5rem;--space-12:3rem;--space-14:3.5rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;
  /* Type (Tailwind font-size / line-height pairs) */
  --text-xs:.75rem;--leading-xs:1rem;--text-sm:.875rem;--leading-sm:1.25rem;--text-base:1rem;--leading-base:1.5rem;
  --text-lg:1.125rem;--leading-lg:1.75rem;--text-xl:1.25rem;--leading-xl:1.75rem;--text-2xl:1.5rem;--leading-2xl:2rem;
  --text-3xl:1.875rem;--leading-3xl:2.25rem;--text-4xl:2.25rem;--leading-4xl:2.5rem;--text-5xl:3rem;--text-6xl:3.75rem;
  --text-7xl:4.5rem;--text-8xl:6rem;--text-9xl:8rem;
  /* Z-index scale: use only these */
  --z-backdrop:-10;--z-base:0;--z-dock:10;--z-header:20;--z-skip:40;--z-dialog:50;
  --shadow-lg:0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1);
  --display:"Cormorant Garamond",Garamond,"Times New Roman",serif;
  --text:"Source Serif 4",Georgia,"Times New Roman",serif;
  --gutter:var(--space-4);
  --header:4rem;
  color-scheme:dark;
}
@media (min-width:640px){:root{--gutter:var(--space-8)}}
@media (min-width:1024px){:root{--gutter:var(--space-12)}}

*,*::before,*::after{box-sizing:border-box}
html{background:var(--ink)}
body{margin:0;min-height:100dvh;display:flex;flex-direction:column;background:var(--ink);color:var(--bone);
  font-family:var(--text);font-size:var(--text-base);line-height:var(--leading-base);font-optical-sizing:auto;font-variant-numeric:lining-nums;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:var(--gold);color:var(--ink)}
a{color:inherit}
p{margin:0 0 var(--space-4)}
h1,h2,h3{margin:0;font-weight:inherit;text-wrap:balance}
p,li,dd{text-wrap:pretty}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.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}
.skip{position:absolute;left:var(--gutter);top:calc(-1 * var(--space-24));z-index:var(--z-skip);padding:var(--space-2) var(--space-4);background:var(--bone);color:var(--ink)}
.skip:focus{top:var(--space-3)}

/* Painted layers */
.backdrop{position:fixed;inset:0;z-index:var(--z-backdrop);pointer-events:none}
[data-scene] canvas{display:block;pointer-events:none}
.arena-tip{position:absolute;left:50%;top:50%;width:.5rem;height:.5rem;margin:-.25rem 0 0 -.25rem;border-radius:50%;background:var(--bone);pointer-events:none;
  animation:breathe 1.6s ease-out infinite alternate}
.is-offscreen .arena-tip{animation-play-state:paused}
[data-state=paused] .arena-tip,[data-state=between] .arena-tip{animation:none;opacity:.5}
@keyframes breathe{to{opacity:.3}}
/* Voter pages: the same arena, dimmed, as a fixed backdrop behind the ballot. body paints its own background
   (html has one too), which would cover a negative z-index, so the stage sits at base and the page rises above it. */
.voting-stage{position:fixed;inset:0;z-index:var(--z-base);overflow:hidden;perspective:1600px;perspective-origin:60% 20%;pointer-events:none}
.voting-art canvas{opacity:.42}
.voting-stage~main,.voting-stage~.foot{position:relative}

/* One arena travels between pages: hero -> login panel -> voting backdrop (cross-document view transitions;
   other browsers simply navigate). panem.js paints each arena before first render, so both ends are captured
   and cross-fade as one body while the group carries the move. */
@view-transition{navigation:auto}
.hero-art,.split-art [data-scene],.voting-art{view-transition-name:arena}
.bar{view-transition-name:bar}
/* Voter pages lift their content into its own layer, painted after the arena, so the growing arena
   passes behind the ballot during the move instead of snapping behind it at the end. */
.voting-stage~main{view-transition-name:page}
::view-transition-group(page){animation-duration:.45s}
::view-transition-old(root),::view-transition-new(root){animation-duration:.45s}
::view-transition-group(arena){animation-duration:1s;animation-timing-function:cubic-bezier(.65,0,.2,1)}
/* Growing (into the backdrop): hand over early to the larger, sharper new image. */
::view-transition-old(arena){animation:arena-out 1s both}
::view-transition-new(arena){animation:arena-in 1s both}
/* Shrinking (into the login panel): the big old image stays sharp, so let it carry most of the move. */
:root:has(.split-art)::view-transition-old(arena){animation-name:arena-hold}
:root:has(.split-art)::view-transition-new(arena){animation-name:arena-reveal}
::view-transition-old(arena):only-child{animation:arena-reveal .35s reverse both}
::view-transition-new(arena):only-child{animation:arena-reveal .6s both}
@keyframes arena-out{0%{opacity:1}40%,to{opacity:0}}
@keyframes arena-in{0%{opacity:0}40%,to{opacity:1}}
@keyframes arena-hold{0%,75%{opacity:1}to{opacity:0}}
@keyframes arena-reveal{0%,55%{opacity:0}to{opacity:1}}

/* Shell */
.bar{position:sticky;top:0;z-index:var(--z-header);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);
  min-height:var(--header);padding:env(safe-area-inset-top) max(var(--gutter),env(safe-area-inset-right)) 0 max(var(--gutter),env(safe-area-inset-left));
  background:var(--ink);border-bottom:1px solid var(--line)}
.mark{display:flex;align-items:center;gap:var(--space-3);text-decoration:none;color:var(--bone)}
.mark img{display:block;width:2.5rem;height:2.5rem;flex:none}
.nav{display:flex;align-items:center;gap:var(--space-6);font-size:var(--text-sm);line-height:var(--leading-sm)}
.nav a,.nav .navlink{position:relative;display:inline-flex;align-items:center;min-height:2.75rem;color:var(--dust);text-decoration:none;transition:color 150ms ease-out}
.nav a:hover,.nav .navlink:hover{color:var(--bone)}
.nav a[aria-current]{color:var(--bone)}
.nav a[aria-current]::after{content:"";position:absolute;left:0;right:0;bottom:var(--space-2);height:1px;background:var(--gold)}
.nav form{margin:0;display:flex;align-items:center}
.navlink{background:none;border:0;padding:0;font:inherit;cursor:pointer}
.lang{gap:var(--space-1);color:var(--stone-600)}
.lang button{min-height:2.75rem;padding:0 var(--space-1);background:none;border:0;font:inherit;font-size:var(--text-xs);color:var(--dust);cursor:pointer;transition:color 150ms ease-out}
.lang button[aria-pressed="true"]{color:var(--bone)}
.lang button:hover{color:var(--gold)}
main{flex:1;display:flex;flex-direction:column;outline:none}
.wrap{width:100%;max-width:74rem;margin:0 auto;padding:0 max(var(--gutter),env(safe-area-inset-right)) 0 max(var(--gutter),env(safe-area-inset-left))}
.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2) var(--space-6);
  padding:var(--space-6) var(--gutter) max(var(--space-6),env(safe-area-inset-bottom));border-top:1px solid var(--line);font-size:var(--text-xs);line-height:var(--leading-xs);color:var(--dust)}
.foot a{color:var(--dust);text-decoration:none;transition:color 150ms ease-out}
.foot a:hover{color:var(--bone)}

/* Messages */
.toasts{display:grid;gap:var(--space-2);padding-top:var(--space-5)}
.toast{margin:0;padding:var(--space-3) var(--space-4);border-left:2px solid var(--gold);background:var(--coal);font-size:var(--text-sm);line-height:var(--leading-sm)}
.toast.error{border-color:var(--error)}
.idle-warning{position:fixed;left:50%;bottom:max(var(--space-6),env(safe-area-inset-bottom));z-index:var(--z-dialog);width:min(calc(100% - 2 * var(--gutter)),35rem);margin:0;padding:var(--space-4) var(--space-5);border:1px solid var(--line-strong);border-left:2px solid var(--blood);background:var(--coal);transform:translateX(-50%);font-size:var(--text-base);line-height:var(--leading-base);color:var(--bone)}

/* Type */
.eyebrow{margin:0 0 var(--space-3);font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--gold)}
.title{font-family:var(--display);font-weight:300;font-size:var(--text-5xl);line-height:1}
.section-title{font-family:var(--display);font-weight:400;font-size:var(--text-3xl);line-height:var(--leading-3xl)}
.lead{max-width:34ch;font-size:var(--text-xl);line-height:var(--leading-xl);color:var(--dust)}
.quiet{max-width:52ch;color:var(--dust)}
.fine{max-width:68ch;font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust)}
.fine strong{display:block;margin-bottom:var(--space-1);font-weight:500;color:var(--bone)}
.num{font-family:var(--display);font-weight:300;font-variant-numeric:lining-nums tabular-nums}
.mono{font-variant-numeric:lining-nums tabular-nums;overflow-wrap:anywhere}
@media (min-width:768px){.title{font-size:var(--text-6xl)}}

/* Controls */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);min-height:3rem;padding:0 var(--space-6);border:1px solid var(--line-strong);background:transparent;color:var(--bone);
  font:500 var(--text-sm)/var(--leading-sm) var(--text);white-space:nowrap;text-decoration:none;cursor:pointer;
  transition:background-color 150ms ease-out,border-color 150ms ease-out,color 150ms ease-out}
.btn:hover{border-color:var(--gold);background:var(--coal)}
.btn-solid{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.btn-solid:hover{background:var(--bone);border-color:var(--bone)}
.btn-final{background:var(--blood);border-color:var(--blood);color:var(--bone)}
.btn-final:hover{background:var(--blood-hover);border-color:var(--blood-hover)}
.btn-small{min-height:2.25rem;padding:0 var(--space-4);font-size:var(--text-xs);line-height:var(--leading-xs)}
.btn .arrow{line-height:0}
.textlink{color:var(--bone);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:.3em;transition:text-decoration-color 150ms ease-out}
.textlink:hover{text-decoration-color:var(--gold)}
.back{display:inline-flex;align-items:center;gap:var(--space-2);min-height:2.75rem;margin-bottom:var(--space-5);font-size:var(--text-sm);color:var(--dust);text-decoration:none;transition:color 150ms ease-out}
.back:hover{color:var(--bone)}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4) var(--space-8)}
.gap{margin-bottom:var(--space-8)}
.gap-top{margin-top:var(--space-6)}
.privacy{margin-top:var(--space-14)}
.narrow-form{max-width:30rem}
.table-scroll form{margin:0}

/* Forms */
.field{margin:0 0 var(--space-8)}
.field label{display:block;margin-bottom:var(--space-1);font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust)}
.field input:not([type=checkbox]):not([type=radio]){width:100%;padding:var(--space-2) 0 var(--space-3);border:0;border-bottom:1px solid var(--line-strong);border-radius:0;background:transparent;color:var(--bone);
  font:400 var(--text-xl)/var(--leading-xl) var(--text);transition:border-color 150ms ease-out}
.field input[type=file]{font-size:var(--text-sm)}
.field input:focus{outline:none;border-bottom:2px solid var(--gold);padding-bottom:calc(var(--space-3) - 1px)}
.field input[aria-invalid=true]{border-bottom-color:var(--error)}
.field .help{margin-top:var(--space-2);font-size:var(--text-xs);line-height:var(--leading-xs);color:var(--dust)}
.field .help ul{margin:0;padding-left:var(--space-5)}
.errorlist{list-style:none;margin:var(--space-2) 0 0;padding:0;font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--error)}
.alert{margin:0 0 var(--space-8);padding:var(--space-3) var(--space-4);border-left:2px solid var(--error);background:var(--coal);font-size:var(--text-sm);line-height:var(--leading-sm)}
.alert .errorlist{margin:0;color:var(--bone)}
.note{max-width:64ch;padding:var(--space-4) var(--space-5);border:1px solid var(--line);background:var(--coal);font-size:var(--text-sm);line-height:var(--leading-sm)}

/* Status strip */
.status{display:flex;flex-wrap:wrap;margin:0;border-block:1px solid var(--line);font-variant-numeric:lining-nums tabular-nums}
.status-cell{display:flex;flex-direction:column;justify-content:center;gap:var(--space-1);margin:0;padding:var(--space-3) var(--space-6) var(--space-3) 0}
.status-cell+.status-cell{padding-left:var(--space-6);border-left:1px solid var(--line)}
.status-cell span{font-size:var(--text-xs);line-height:var(--leading-xs);color:var(--dust)}
.status-cell strong{display:flex;align-items:center;gap:var(--space-2);font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm)}
.status .clock{font-family:var(--display);font-weight:400;font-size:var(--text-2xl);line-height:var(--leading-2xl);color:var(--gold)}
.dot{width:.5rem;height:.5rem;flex:none;border-radius:50%;border:1px solid var(--dust)}
[data-state=open] .dot{background:var(--gold);border-color:var(--gold)}
[data-state=paused] .dot{border-color:var(--gold)}
[data-state=closed] .dot{background:var(--stone-600);border-color:var(--stone-600)}
[data-state=between] .dot{border-color:var(--gold)}
.sessions{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6);margin:var(--space-3) 0 0;padding:0;list-style:none;font-variant-numeric:lining-nums tabular-nums}
.sessions li{display:flex;flex-direction:column;gap:var(--space-1);padding-left:var(--space-3);border-left:1px solid var(--line)}
.sessions li span{font-size:var(--text-xs);line-height:var(--leading-xs);color:var(--dust)}
.sessions li strong{font-weight:400;font-size:var(--text-sm);line-height:var(--leading-sm)}
.sessions li[aria-current]{border-left-color:var(--gold)}
.sessions li.is-past{opacity:.55}
.sessions abbr{text-decoration:none;color:var(--dust)}

/* Gray placeholder portrait */
.portrait{display:block;aspect-ratio:4/5;background:var(--stone-600) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 150'%3E%3Ccircle cx='60' cy='58' r='23' fill='%2378716c'/%3E%3Cpath d='M12 150c0-36 21-55 48-55s48 19 48 55z' fill='%2378716c'/%3E%3C/svg%3E") center bottom/78% no-repeat}

/* Home */
.hero{position:relative;isolation:isolate;display:flex;align-items:flex-start;min-height:calc(100dvh - var(--header));overflow:hidden}
.hero-stage{position:absolute;inset:0;z-index:var(--z-backdrop);overflow:hidden;perspective:1600px;perspective-origin:60% 20%;pointer-events:none;
  -webkit-mask-image:linear-gradient(to right,rgb(0 0 0 / .45) 0,#000 45%),linear-gradient(to bottom,#000 75%,transparent);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(to right,rgb(0 0 0 / .45) 0,#000 45%),linear-gradient(to bottom,#000 75%,transparent);mask-composite:intersect}
/* The live arena is a tilted plane; panem.js eases --lean-* toward the pointer. */
.hero-art,.voting-art{--size:max(120vmin,100vw);position:absolute;left:60%;top:60%;width:var(--size);aspect-ratio:1;margin:calc(var(--size) / -2) 0 0 calc(var(--size) / -2);
  transform:rotateX(calc(50deg + var(--lean-y,0deg))) rotateZ(var(--lean-x,0deg)) scale(1)}
.hero-art{animation:arena-rise 1.8s cubic-bezier(.2,.7,.2,1) backwards}
.hero-art canvas,.voting-art canvas{width:100%!important;height:100%!important}
@keyframes arena-rise{from{opacity:0;transform:rotateX(80deg) rotateZ(-10deg) scale(.88)}}
/* Copy hugs the left gutter (in line with the logo) rather than the centred .wrap. */
.hero-copy{max-width:none;margin:0;padding-block:var(--space-12) var(--space-16)}
.hero-copy>*{max-width:37.5rem}
.hero-copy>.status{max-width:45rem;margin:var(--space-8) 0;background:var(--ink)}
.hero-copy>.status:has(+.sessions){margin-bottom:0;border-bottom:0}
.hero-copy>.sessions{max-width:45rem;margin:0 0 var(--space-8);padding:var(--space-3) 0 var(--space-4);border-bottom:1px solid var(--line);background:var(--ink)}
.hero-title{display:flex;flex-direction:column;margin:0 0 var(--space-6)}
.hero-word{font-family:var(--display);font-style:italic;font-weight:300;font-size:var(--text-8xl);line-height:1}
.hero-org{margin-top:var(--space-3);font-family:var(--display);font-weight:500;font-size:var(--text-2xl);line-height:var(--leading-2xl);color:var(--gold)}
@media (min-width:1024px){.hero-word{font-size:var(--text-9xl)}}
.band{padding-block:var(--space-24);border-top:1px solid var(--line)}
.band-head{margin-bottom:var(--space-10)}
.lineup{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-20)}
.lineup-office h3{margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}
.lineup-office ol{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5);margin:0;padding:0;list-style:none}
.mini .num{display:block;margin:var(--space-3) 0 0;font-size:var(--text-5xl);line-height:1;color:var(--bone)}
.mini-name{display:block;margin-top:var(--space-1);font-family:var(--display);font-weight:500;font-size:var(--text-xl);line-height:var(--leading-xl)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-12);margin:0;padding:0;list-style:none}
.steps li{padding-top:var(--space-5);border-top:1px solid var(--line);font-size:var(--text-base);color:var(--dust)}
.steps .num{display:block;margin-bottom:var(--space-2);font-size:var(--text-4xl);line-height:var(--leading-4xl);color:var(--gold)}

/* Inner pages */
.page{padding-block:var(--space-16) var(--space-24)}
.page-head{margin-bottom:var(--space-12)}
.page-head .title{margin-bottom:var(--space-4)}
.page-head.split-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--space-6)}
.pips{display:flex;align-items:center;gap:var(--space-2);margin:0}
.pips i{display:block;width:2rem;height:2px;background:var(--ash)}
.pips i.on{background:var(--gold)}

/* Dashboard */
.offices{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);margin-top:var(--space-10)}
.office{position:relative;display:flex;flex-direction:column;min-height:18rem;padding:var(--space-8);border:1px solid var(--line);background:var(--coal)}
.office .num{font-size:var(--text-5xl);line-height:1;color:var(--stone-600)}
.office h2{margin:var(--space-3) 0 auto}
.office-state{margin:var(--space-8) 0 var(--space-5);font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust);font-variant-numeric:lining-nums tabular-nums}
.office.is-sealed{border-color:var(--line-strong)}
.office.is-sealed .office-state{color:var(--bone)}
.office .sigil{position:absolute;top:var(--space-6);right:var(--space-6);width:3.5rem;height:3.5rem;color:var(--gold)}

/* Ballot */
.tributes{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8);max-width:56rem;margin:0;padding:0;border:0}
.tribute{position:relative;display:flex;flex-direction:column;padding:var(--space-4) var(--space-4) var(--space-6);border:1px solid var(--line);background:var(--coal);cursor:pointer;transition:opacity 150ms ease-out}
.tribute:hover{border-color:var(--line-strong)}
.tribute .portrait{aspect-ratio:auto;height:clamp(15rem,36dvh,26rem)}
.tribute-num{margin:var(--space-4) var(--space-2) 0;font-size:var(--text-6xl);line-height:1;color:var(--bone)}
.tribute-name{margin:var(--space-2) var(--space-2) var(--space-3);font-family:var(--display);font-weight:500;font-size:var(--text-3xl);line-height:var(--leading-3xl)}
.tribute-profile{margin:0 var(--space-2);font-size:var(--text-base);color:var(--dust)}
.tribute-mark{position:absolute;top:var(--space-6);right:var(--space-6);display:grid;place-items:center;width:1.5rem;height:1.5rem;border:1px solid var(--bone);border-radius:50%;background:var(--ink)}
.tribute-mark svg{width:.875rem;height:.875rem;opacity:0;transition:opacity 150ms ease-out}
.tribute:has(input:checked){border-color:var(--gold);outline:2px solid var(--gold);outline-offset:-2px}
.tribute:has(input:checked) .tribute-num{color:var(--gold)}
.tribute:has(input:checked) .tribute-mark{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.tribute:has(input:checked) .tribute-mark svg{opacity:1}
.tributes:has(input:checked) .tribute:not(:has(input:checked)){opacity:.55}
.tribute:has(input:focus-visible){outline:2px solid var(--bone);outline-offset:var(--space-1)}
.dock{position:sticky;bottom:0;z-index:var(--z-dock);display:flex;justify-content:flex-end;max-width:56rem;margin-top:var(--space-6);padding:var(--space-5) 0 max(var(--space-6),env(safe-area-inset-bottom))}

/* Confirm */
.verdict{display:grid;grid-template-columns:minmax(10rem,15rem) 1fr;align-items:end;gap:var(--space-12);max-width:54rem;padding-bottom:var(--space-8);border-bottom:1px solid var(--line)}
.verdict .num{display:block;font-size:var(--text-8xl);line-height:1;color:var(--bone)}
.verdict-name{display:block;margin-top:var(--space-2);font-family:var(--display);font-weight:400;font-size:var(--text-5xl);line-height:1}
.review-pick+.review-pick{margin-top:var(--space-8)}
.ballot-office+.ballot-office{margin-top:var(--space-12)}
.ballot-office>.section-title{margin:0 0 var(--space-5)}
.ballot-state{max-width:35rem;min-height:0;margin-top:var(--space-10)}
.final{max-width:54rem;margin:var(--space-8) 0;padding-left:var(--space-5);border-left:2px solid var(--blood)}
.final strong{display:block;font-family:var(--display);font-weight:500;font-size:var(--text-2xl);line-height:var(--leading-2xl)}
.final p{margin:var(--space-1) 0 0;color:var(--dust)}

/* Receipt */
.receipt-page{display:flex;flex-direction:column;align-items:center;text-align:center}
.seal{width:12.5rem;height:12.5rem;margin:0 auto var(--space-3)}
.ledger{display:grid;grid-template-columns:auto 1fr;width:100%;max-width:35rem;margin:var(--space-10) 0 var(--space-6);border-top:1px solid var(--line);text-align:left;font-variant-numeric:lining-nums tabular-nums}
.ledger dt,.ledger dd{margin:0;padding:var(--space-3) 0;border-bottom:1px solid var(--line);line-height:var(--leading-base)}
.ledger dt{padding-right:var(--space-8);font-size:var(--text-sm);color:var(--dust)}
.ledger dd{text-align:right}
.pending{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);width:100%;max-width:35rem;margin:var(--space-4) 0 var(--space-8);padding:var(--space-5) var(--space-6);border:1px solid var(--line-strong);background:var(--coal);text-align:left}
.pending p{margin:0;font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust)}
.pending strong{display:block;font-family:var(--display);font-weight:500;font-size:var(--text-3xl);line-height:var(--leading-3xl);color:var(--bone)}

/* Results */
.results-closed{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-20);font-variant-numeric:lining-nums tabular-nums}
.result-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}
.result-turnout{margin:0;text-align:right}
.result-turnout .num{display:block;font-size:var(--text-4xl);line-height:var(--leading-4xl);color:var(--gold)}
.result-turnout span{font-size:var(--text-xs);line-height:var(--leading-xs);color:var(--dust)}
.result-rows{margin:0;padding:0;list-style:none}
.result-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-2) var(--space-5);padding:var(--space-5) 0;border-bottom:1px solid var(--line)}
.result-row .num{grid-row:span 2;font-size:var(--text-5xl);line-height:1;color:var(--dust)}
.result-name{font-family:var(--display);font-weight:500;font-size:var(--text-2xl);line-height:var(--leading-2xl)}
.result-votes{grid-row:span 2;font-size:var(--text-4xl);line-height:1;text-align:right}
.meter{display:block;height:2px;background:var(--ash)}
.meter i{display:block;height:100%;background:var(--dust)}
.result-row.is-lead .num,.result-row.is-lead .result-votes{color:var(--gold)}
.result-row.is-lead .meter i{background:var(--gold)}
.waiting{display:grid;grid-template-columns:minmax(16rem,26rem) 1fr;align-items:center;gap:var(--space-16)}
.waiting-art{position:relative;width:100%;aspect-ratio:1}

/* About */
.crew{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:var(--space-4);margin:0;padding:0;list-style:none}
.member{display:flex;flex-direction:column;border:1px solid var(--line);background:var(--coal)}
.member .portrait{aspect-ratio:1;background-size:70%}
.member-text{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-4) var(--space-4)}
.member-name{font-family:var(--display);font-weight:500;font-size:var(--text-lg);line-height:1.25}
@media (min-width:1100px){.crew{grid-template-columns:repeat(7,1fr)}}
.role{font-size:var(--text-xs);line-height:var(--leading-xs);color:var(--gold);letter-spacing:.04em;text-transform:uppercase}
.nim{font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust);font-variant-numeric:lining-nums tabular-nums}
.member.is-chair{grid-column:1/-1;flex-direction:row;align-items:center;border-color:var(--line-strong)}
.member.is-chair .portrait{width:9rem;flex:none}
.member.is-chair .member-text{padding:var(--space-4) var(--space-6)}
.member.is-chair .member-name{font-size:var(--text-3xl);line-height:var(--leading-3xl)}

/* Helpdesk */
.contact{display:grid;grid-template-columns:13rem 1fr;align-items:center;gap:var(--space-8);max-width:48rem;padding:var(--space-6);border:1px solid var(--line-strong);background:var(--coal)}
.qr{margin:0}
.qr img{display:block;width:100%;height:auto;padding:var(--space-2);background:#fff}
.qr figcaption{margin-top:var(--space-2);font-size:var(--text-xs);line-height:var(--leading-xs);color:var(--dust)}
.contact .eyebrow{margin-bottom:var(--space-2)}
.contact .nim{display:block}
.contact .member-name{display:block;font-size:var(--text-3xl);line-height:var(--leading-3xl)}
.contact .phone{display:inline-block;margin:var(--space-3) 0 var(--space-5);font-size:var(--text-2xl);line-height:var(--leading-2xl);color:var(--bone);text-decoration:none}
.contact .actions{gap:var(--space-3)}
.faq-title{margin:var(--space-16) 0 var(--space-6)}
.faq{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin:0;padding:0;list-style:none}
.faq li{padding:var(--space-5) var(--space-6);border:1px solid var(--line)}
.faq strong{display:block;margin-bottom:var(--space-2);font-family:var(--display);font-weight:500;font-size:var(--text-xl);line-height:var(--leading-xl)}
.faq p{margin:0;font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust)}

/* Login and small cards */
.split{flex:1;display:grid;grid-template-columns:1.1fr 1fr;min-height:calc(100dvh - var(--header))}
.split-art{position:relative;overflow:hidden;border-right:1px solid var(--line)}
.split-art [data-scene]{position:absolute;top:50%;left:50%;width:min(92%,40rem);aspect-ratio:1;transform:translate(-50%,-50%)}
.split-form{display:flex;flex-direction:column;justify-content:center;padding:var(--space-16) var(--space-20)}
.split-form>*{width:100%;max-width:26rem}
.split-form .title,.card .title{margin-bottom:var(--space-4)}
.card{width:100%;max-width:30rem;margin:0 auto;padding-block:var(--space-24)}
.form-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-4);margin:var(--space-8) 0 var(--space-10)}
.assist{margin:0 0 var(--space-8);padding:var(--space-3) var(--space-4);border-left:2px solid var(--gold);background:var(--coal);font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust)}
.assist a{color:var(--bone)}
.btn-block{width:100%}

/* Committee */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));margin:var(--space-8) 0;border:1px solid var(--line);font-variant-numeric:lining-nums tabular-nums}
.stat{margin:0;padding:var(--space-5) var(--space-6);border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat span{display:block;font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--dust)}
.stat .num{font-size:var(--text-5xl);line-height:1}
.panel{margin-top:var(--space-14)}
.panel>h2{margin-bottom:var(--space-5);padding-bottom:var(--space-3);border-bottom:1px solid var(--line)}
.links{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-8);font-size:var(--text-sm)}
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:var(--text-sm);line-height:var(--leading-sm);text-align:left;font-variant-numeric:lining-nums tabular-nums}
th{font-weight:500;color:var(--dust)}
th,td{padding:var(--space-3) var(--space-4) var(--space-3) 0;border-bottom:1px solid var(--line)}
.kv{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-8);margin:0 0 var(--space-5);padding:0;list-style:none;font-size:var(--text-sm);color:var(--dust);font-variant-numeric:lining-nums tabular-nums}
.kv strong{font-weight:500;color:var(--bone)}
details summary{display:inline-flex;align-items:center;min-height:2.75rem;color:var(--gold);cursor:pointer}
details[open] summary{margin-bottom:var(--space-3)}

/* Alert dialog (native <dialog>, top layer) */
.confirm{z-index:var(--z-dialog);width:min(28rem,calc(100% - 2 * var(--gutter)));padding:var(--space-8);border:1px solid var(--line-strong);background:var(--coal);color:var(--bone);box-shadow:var(--shadow-lg)}
.confirm::backdrop{background:rgb(12 10 9 / .8)}
.confirm h2{margin-bottom:var(--space-3);font-family:var(--display);font-weight:500;font-size:var(--text-3xl);line-height:var(--leading-3xl)}
.confirm p{color:var(--dust)}
.confirm .actions{justify-content:flex-end;margin-top:var(--space-6)}

/* Layout breakpoints */
@media (max-width:860px){
  .hero{display:block;min-height:0}
  .hero-stage{position:relative;inset:auto;height:min(95vw,36rem);margin-top:calc(-1 * var(--space-6));
    -webkit-mask-image:linear-gradient(to bottom,#000 70%,transparent);mask-image:linear-gradient(to bottom,#000 70%,transparent)}
  .hero-art{--size:min(140vw,52rem);left:50%;top:52%}
  .voting-art{--size:170vw;left:50%;top:58%}
  .hero-copy{position:relative;padding-block:0 var(--space-16)}
  .split{display:block;min-height:0}
  .split-art{height:80vw;border-right:0}
  .split-art [data-scene]{width:96vw}
  .split-form{padding:var(--space-8) var(--gutter) var(--space-16)}
  .waiting{grid-template-columns:1fr}
  .waiting-art{max-width:22rem;margin:0 auto}
  .lineup{gap:var(--space-12)}
  .faq{grid-template-columns:1fr}
}
@media (max-width:680px){
  .bar{flex-wrap:wrap;gap:0 var(--space-4);padding-bottom:var(--space-1)}
  .nav{flex-wrap:wrap;gap:0 var(--space-3)}
  .title{font-size:var(--text-4xl);line-height:var(--leading-4xl)}
  .hero-word{font-size:var(--text-7xl)}
  .page{padding-block:var(--space-10) var(--space-20)}
  .band{padding-block:var(--space-16)}
  .status-cell{flex:1 1 50%;padding:var(--space-3) 0}
  .status-cell+.status-cell{padding-left:0;border-left:0}
  .status-cell:nth-child(even){padding-left:var(--space-4);border-left:1px solid var(--line)}
  .lineup,.offices,.results-closed,.steps{grid-template-columns:1fr}
  .crew{grid-template-columns:1fr 1fr;gap:var(--space-3)}
  .member-text{padding:var(--space-3)}
  .member-name{font-size:var(--text-lg);line-height:1.25}
  .member.is-chair .portrait{width:6.5rem}
  .member.is-chair .member-text{padding:var(--space-3) var(--space-4)}
  .member.is-chair .member-name{font-size:var(--text-2xl);line-height:var(--leading-2xl)}
  .contact{grid-template-columns:1fr;gap:var(--space-5);padding:var(--space-5)}
  .qr{max-width:13rem}
  .faq-title{margin-top:var(--space-12)}
  .tributes{grid-template-columns:1fr;gap:var(--space-4)}
  .tribute{display:grid;grid-template-columns:6rem 1fr;grid-template-rows:auto auto 1fr;column-gap:var(--space-4);padding:var(--space-3) var(--space-3) var(--space-4)}
  .tribute .portrait{grid-row:1/span 3;height:auto;aspect-ratio:4/5;align-self:start}
  .tribute-num{margin:0;font-size:var(--text-5xl)}
  .tribute-name{margin:0 var(--space-10) var(--space-2) 0;font-size:var(--text-2xl);line-height:var(--leading-2xl)}
  .tribute-profile{margin:0;font-size:var(--text-sm);line-height:var(--leading-sm)}
  .tribute-mark{top:var(--space-4);right:var(--space-4)}
  .dock{margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);background:var(--ink);border-top:1px solid var(--line)}
  .dock .btn{width:100%}
  .verdict{grid-template-columns:7.5rem 1fr;align-items:center;gap:var(--space-6)}
  .verdict .num{font-size:var(--text-6xl)}
  .verdict-name{font-size:var(--text-3xl);line-height:var(--leading-3xl)}
  .pending{flex-direction:column;align-items:stretch}
  .office{min-height:15rem;padding:var(--space-6)}
  .card{padding-block:var(--space-16)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}
