/* The Creative Room — photo challenges. Builds on the RAW 001 visual language. */
:root{
  --paper:#f4f1e9;--paper-2:#ebe7dd;--paper-3:#e2ddd1;--ink:#191a17;--ink-2:#35372f;--muted:#6f7068;--faint:#9a9a90;--line:#d9d6ce;--line-2:#c9c5ba;
  --accent:#d5ef62;--accent-ink:#3f4d07;--green:#5f8a12;--amber:#c7741a;--red:#a12f21;--gold:#b48a2c;
  --serif:'Playfair Display',Georgia,serif;--sans:'DM Sans',system-ui,Arial,sans-serif;--mono:'DM Mono',ui-monospace,monospace;
  --gutter:clamp(16px,5.3vw,76px);--max:1360px;
  --ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%}
a{color:inherit}
button{font:inherit;color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.skip-link{position:absolute;left:12px;top:-60px;background:var(--ink);color:#fff;padding:10px 14px;z-index:20;text-decoration:none;font-size:13px}
.skip-link:focus{top:12px}
#app{outline:none;min-height:70vh}

/* ---------- top bar */
.topbar{height:72px;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);font-size:11px;font-weight:700;letter-spacing:.14em;white-space:nowrap}
.brand-mark{display:grid;place-items:center;width:35px;height:35px;border:1px solid var(--ink);border-radius:50%;font:11px var(--mono);letter-spacing:-.1em}
.site-nav{display:flex;gap:clamp(14px,3vw,34px)}
.site-nav a{position:relative;text-decoration:none;font-size:13px;font-weight:500;color:var(--muted);padding:6px 0;transition:color .2s}
.site-nav a:hover{color:var(--ink)}
.site-nav a[aria-current="page"]{color:var(--ink)}
.site-nav a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--ink)}

/* ---------- shared bits */
.eyebrow{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;font:10px var(--mono);letter-spacing:.12em;color:#4e5149;text-transform:uppercase}
.eyebrow-rule{display:inline-block;width:28px;border-top:1px solid #aaa99f}
.button{appearance:none;border:0;display:inline-flex;align-items:center;justify-content:space-between;gap:28px;padding:15px 18px;font:600 12px var(--sans);letter-spacing:.04em;text-decoration:none;cursor:pointer;transition:transform .16s var(--ease-out),background .2s,opacity .2s;white-space:nowrap}
.button:active:not(:disabled){transform:scale(.97)}
.button-dark{background:var(--ink);color:#fff}
.button-light{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.button-accent{background:var(--accent);color:var(--ink)}
.button-wide{width:100%}
.button:disabled{cursor:not-allowed;opacity:.45}
@media(hover:hover) and (pointer:fine){.button-dark:hover:not(:disabled){background:var(--ink-2)}.button-light:hover:not(:disabled){background:var(--ink);color:#fff}.button-accent:hover:not(:disabled){background:#c9e64c}}
.text-link{font-size:13px;font-weight:600;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px}
@keyframes spin{to{transform:rotate(360deg)}}
.page-loading{display:flex;align-items:center;justify-content:center;gap:12px;min-height:60vh;font:11px var(--mono);letter-spacing:.08em;color:var(--muted)}
.page-error{max-width:520px;margin:12vh auto;padding:0 var(--gutter);text-align:center}
.page-error h1{font:500 36px var(--serif);letter-spacing:-.03em;margin:0 0 10px}
.page-error p{color:var(--muted);line-height:1.6}

/* ---------- challenge hero */
.ch-hero{padding:clamp(22px,3vw,34px) var(--gutter) clamp(20px,2.6vw,30px);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(20px,4vw,60px);align-items:center;max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto}
.ch-title{font:500 clamp(36px,4.6vw,64px)/1 var(--serif);letter-spacing:-.05em;margin:12px 0 10px;text-wrap:balance}
.ch-title em{color:#65685d;font-weight:500}
.ch-desc{max-width:640px;color:#5f6058;font-size:14px;line-height:1.65;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ch-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;margin-top:16px}
.ch-cover{position:relative;margin:0;display:grid;grid-template-columns:auto;gap:8px;width:clamp(120px,13vw,176px)}
.ch-cover img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:var(--paper-3)}
.ch-cover figcaption{display:grid;gap:4px;font:9px var(--mono);letter-spacing:.1em;color:var(--muted)}
.ch-cover figcaption a{color:var(--ink);text-decoration:none}
.status-pill{display:inline-flex;align-items:center;gap:9px;padding:9px 13px 9px 11px;border-radius:999px;background:var(--paper-2);font:500 10px var(--mono);letter-spacing:.1em;white-space:nowrap}
.status-dot{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.status-pill[data-tone="green"] .status-dot{background:#6f9f12;box-shadow:0 0 0 4px #dfe9c5;animation:pulse 2.4s ease-in-out infinite}
.status-pill[data-tone="amber"] .status-dot{background:var(--amber);box-shadow:0 0 0 4px #f3dfc5;animation:pulse 2.4s ease-in-out infinite}
.status-pill[data-tone="gold"]{background:var(--ink);color:var(--paper)}
.status-pill svg{width:13px;height:13px;color:var(--accent)}
@keyframes pulse{50%{box-shadow:0 0 0 7px transparent}}

/* ---------- stage tabs + progress */
.stage-nav{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.stage-tabs{position:relative;display:grid;grid-template-columns:repeat(3,1fr);max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:0 var(--gutter)}
.stage-tab{position:relative;display:flex;align-items:center;justify-content:center;gap:12px;min-height:74px;padding:14px 8px;text-decoration:none;color:var(--faint);font:600 clamp(13px,1.5vw,17px) var(--sans);letter-spacing:.16em;transition:color .2s}
.stage-tab+.stage-tab{border-left:1px solid var(--line)}
.stage-tab:hover{color:var(--ink-2)}
.stage-tab[aria-current="page"]{color:var(--ink)}
.stage-num{font:10px var(--mono);letter-spacing:.06em;color:var(--faint)}
.stage-flag{width:7px;height:7px;border-radius:50%;background:var(--accent-ink);display:none}
.stage-tab[data-live] .stage-flag{display:block;background:#6f9f12}
.stage-indicator{position:absolute;bottom:-1px;height:3px;background:var(--ink);left:0;width:0;transition:transform .32s var(--ease-out),width .32s var(--ease-out)}
.progress{display:flex;align-items:center;justify-content:center;gap:clamp(8px,2vw,20px);max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:14px var(--gutter) 16px;font:500 10px var(--mono);letter-spacing:.12em;color:var(--faint);border-top:1px solid var(--line)}
.progress-step{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.progress-mark{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line-2);font-size:10px;line-height:1}
.progress-step[data-state="done"]{color:var(--ink-2)}
.progress-step[data-state="done"] .progress-mark{background:var(--ink);border-color:var(--ink);color:var(--accent)}
.progress-step[data-state="now"]{color:var(--ink)}
.progress-step[data-state="now"] .progress-mark{border-color:var(--ink);box-shadow:inset 0 0 0 3px var(--paper);background:var(--ink)}
.progress-arrow{color:var(--line-2)}

/* ---------- panel */
.stage-panel{scroll-margin-top:150px;max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:clamp(40px,6vw,76px) var(--gutter) clamp(70px,8vw,110px)}
.stage-panel.enter{animation:panel-in .32s var(--ease-out) both}
@keyframes panel-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.stage-kicker{display:inline-flex;align-items:center;gap:10px;font:500 11px var(--mono);letter-spacing:.14em;margin:0 0 14px}
.stage-kicker::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.stage-kicker.open{color:var(--green)}
.stage-kicker.amber{color:var(--amber)}
.stage-kicker.closed{color:var(--muted)}
.stage-kicker.gold{color:var(--gold)}
.stage-heading{font:500 clamp(36px,4.8vw,62px)/1.02 var(--serif);letter-spacing:-.045em;margin:0 0 14px;text-wrap:balance}
.stage-lede{font-size:15px;line-height:1.7;color:#5f6058;margin:0;max-width:540px}

/* ---------- countdown */
.countdown{margin-top:34px}
.countdown-label{font:500 10px var(--mono);letter-spacing:.14em;color:var(--muted);margin-bottom:12px}
.countdown-digits{display:flex;align-items:flex-start;gap:clamp(6px,1.4vw,14px)}
.cd-unit{display:grid;justify-items:center;gap:8px}
.cd-num{min-width:1.9ch;text-align:center;font:500 clamp(42px,6vw,76px)/1 var(--mono);letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--ink)}
.cd-cap{font:9px var(--mono);letter-spacing:.14em;color:var(--faint)}
.cd-sep{font:400 clamp(30px,4.4vw,56px)/1.1 var(--mono);color:var(--line-2)}
.countdown-when{margin-top:14px;font:10px/1.5 var(--mono);color:var(--muted);letter-spacing:.04em}
.countdown.compact .cd-num{font-size:clamp(28px,3.2vw,40px)}
.countdown.compact .cd-sep{font-size:clamp(22px,2.4vw,30px)}
.countdown.urgent .cd-num{color:var(--red)}

/* ---------- submissions */
.submit-layout{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(36px,7vw,110px);align-items:start}
.submit-aside{position:sticky;top:180px}
.rules{list-style:none;margin:34px 0 0;padding:0;border-top:1px solid var(--line)}
.rules li{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--line);font-size:13px;color:#4f514a;line-height:1.5}
.rules b{font:500 10px var(--mono);color:var(--faint);padding-top:3px;min-width:22px}
.form-card{background:#fbfaf6;border:1px solid var(--line);padding:clamp(22px,4vw,44px)}
.form-card h3{font:500 28px var(--serif);letter-spacing:-.03em;margin:0 0 6px}
.form-card .form-sub{font-size:13px;color:var(--muted);margin:0 0 28px}
.field{display:grid;gap:8px;margin-bottom:22px}
.field label,.field .label{font:500 10px var(--mono);letter-spacing:.12em;color:#4e5149;text-transform:uppercase}
.field .req{color:var(--red);margin-left:2px}
.field .hint{font-size:12px;color:var(--muted);margin:-2px 0 0}
.input,.textarea{width:100%;border:1px solid var(--line-2);background:#fff;border-radius:0;padding:14px 14px;font:15px var(--sans);color:var(--ink);transition:border-color .2s,box-shadow .2s}
.textarea{min-height:110px;resize:vertical;line-height:1.55}
.input:focus,.textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px #19191712}
.input-prefix{position:relative}
.input-prefix span{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:15px;pointer-events:none}
.input-prefix .input{padding-left:32px}
.field.invalid .input,.field.invalid .textarea,.field.invalid .drop{border-color:var(--red);box-shadow:0 0 0 3px #a12f2114}
.field-error{font-size:12px;color:var(--red);min-height:0;margin:0}
.counter{justify-self:end;font:10px var(--mono);color:var(--faint)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.drop{position:relative;display:grid;place-items:center;min-height:220px;border:1.5px dashed var(--line-2);background:#fff;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;overflow:hidden}
.drop:hover,.drop.dragging{border-color:var(--ink);background:#fdfdfa}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.drop-empty{display:grid;justify-items:center;gap:10px;padding:26px;pointer-events:none}
.drop-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--paper-2);font-size:20px}
.drop-title{font-weight:600;font-size:14px}
.drop-rules{font:10px var(--mono);letter-spacing:.06em;color:var(--muted)}
.drop-preview{position:relative;width:100%;display:grid;grid-template-columns:120px 1fr;gap:18px;align-items:center;padding:16px;text-align:left;pointer-events:none}
.drop-preview img{width:120px;height:120px;object-fit:cover;background:var(--paper-3)}
.drop-preview strong{display:block;font-size:14px;word-break:break-all;margin-bottom:4px}
.drop-preview span{font:10px var(--mono);color:var(--muted)}
.drop-preview em{display:block;margin-top:10px;font-style:normal;font-size:12px;text-decoration:underline;color:var(--ink-2)}
.limits{display:flex;flex-wrap:wrap;gap:8px 10px;margin:4px 0 26px;font:500 10px var(--mono);letter-spacing:.08em;color:#4e5149}
.limits span{padding:7px 10px;background:var(--paper-2)}
.upload-progress{height:3px;background:var(--paper-3);margin-top:14px;overflow:hidden}
.upload-progress div{height:100%;width:0;background:var(--ink);transition:width .2s linear}
.form-error{color:var(--red);font-size:13px;line-height:1.5;margin:14px 0 0;min-height:1em}
.form-alert{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;margin:0 0 22px;background:#f6e4df;color:#6d2116;font-size:13px;line-height:1.5}
.privacy-note{font-size:11px;color:var(--muted);line-height:1.6;margin:14px 0 0}

.notice{max-width:760px}
.notice .button{margin-top:30px}
.notice-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.success-card{max-width:720px;padding:clamp(28px,5vw,56px);background:var(--ink);color:var(--paper);position:relative;overflow:hidden}
.success-card .stage-kicker{color:var(--accent)}
.success-card .stage-heading{color:var(--paper)}
.success-card p{color:#c9c8bd;line-height:1.7;font-size:15px;margin:0 0 10px;max-width:520px}
.success-check{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:var(--accent);color:var(--ink);font-size:26px;margin-bottom:26px;animation:pop .5s var(--ease-out) both}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}
.success-card .text-link{color:var(--paper);display:inline-block;margin-top:18px;background:none;border:0;border-bottom:1px solid;cursor:pointer;padding:0 0 2px}

/* ---------- voting */
.vote-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:28px 40px;margin-bottom:34px}
.vote-banner{display:flex;align-items:center;gap:12px;min-height:50px;padding:12px 16px;margin-bottom:30px;background:var(--paper-2);font-size:13px;color:#4f514a;line-height:1.5}
.vote-banner.voted{background:var(--accent);color:var(--ink)}
.vote-banner .banner-icon{font-size:15px}
.gallery{columns:3 300px;column-gap:22px}
.entry{break-inside:avoid;margin:0 0 30px;display:block}
.entry-photo{display:block;width:100%;padding:0;border:0;background:var(--paper-3);cursor:zoom-in;overflow:hidden;position:relative}
.entry-photo img{display:block;width:100%;height:auto;transition:transform .5s var(--ease-out),opacity .4s}
.entry-photo img.loading{opacity:0}
@media(hover:hover) and (pointer:fine){.entry-photo:hover img{transform:scale(1.02)}}
.entry.is-voted .entry-photo{outline:4px solid var(--accent);outline-offset:-4px}
.entry-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:12px}
.entry-who{min-width:0}
.entry-name{display:block;font:500 15px var(--sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.entry-handle{display:inline-block;font:11px var(--mono);color:var(--muted);text-decoration:none;margin-top:3px}
.entry-handle:hover{color:var(--ink)}
.vote-btn{flex:none;appearance:none;border:1px solid var(--ink);background:transparent;padding:10px 16px;font:600 11px var(--sans);letter-spacing:.08em;cursor:pointer;transition:background .2s,color .2s,transform .16s var(--ease-out)}
.vote-btn:active:not(:disabled){transform:scale(.96)}
@media(hover:hover) and (pointer:fine){.vote-btn:hover:not(:disabled){background:var(--ink);color:#fff}}
.vote-btn:disabled{cursor:not-allowed;border-color:var(--line-2);color:var(--faint)}
.vote-btn.is-mine{background:var(--accent);border-color:var(--accent);color:var(--ink);opacity:1}
.gallery-empty{padding:60px 0;text-align:center;color:var(--muted)}

/* ---------- results */
.results-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:clamp(30px,5vw,56px)}
.stats{display:flex;gap:clamp(22px,4vw,48px)}
.stat strong{display:block;font:500 clamp(30px,3.6vw,44px)/1 var(--serif);letter-spacing:-.03em}
.stat span{font:9px var(--mono);letter-spacing:.14em;color:var(--muted)}
.podium-first{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(24px,5vw,70px);align-items:center;padding-bottom:clamp(40px,6vw,70px);margin-bottom:clamp(40px,6vw,70px);border-bottom:1px solid var(--line)}
.podium-photo{position:relative;margin:0;background:var(--paper-3)}
.podium-photo img{display:block;width:100%;height:auto}
.podium-first .podium-photo{justify-self:start;width:fit-content;max-width:100%}
.podium-first .podium-photo img{width:auto;max-width:100%;max-height:78vh}
.place-badge{display:grid;place-items:center;border-radius:50%;font:600 var(--badge-size,22px)/1 var(--serif);letter-spacing:-.04em;width:var(--badge,74px);height:var(--badge,74px);background:var(--paper);color:var(--ink);box-shadow:0 0 0 1px var(--line-2)}
.place-badge sup{font:500 .42em var(--mono);letter-spacing:.04em;margin-left:1px;vertical-align:.9em}
.place-badge.gold{background:var(--accent);box-shadow:none}
.place-badge.silver{background:#e3e2dc}
.place-badge.bronze{background:#ead8c4}
.podium-photo .place-badge{position:absolute;top:16px;left:16px}
.podium-first .place-badge{--badge:clamp(84px,9vw,120px);--badge-size:clamp(34px,3.6vw,48px)}
.place-label{font:500 11px var(--mono);letter-spacing:.16em;color:var(--muted)}
.podium-name{font:500 clamp(40px,5.4vw,76px)/1 var(--serif);letter-spacing:-.05em;margin:14px 0 10px}
.podium-handle{font:14px var(--mono);color:#4f514a;text-decoration:none}
.podium-handle:hover{color:var(--ink)}
.podium-votes{display:inline-flex;align-items:baseline;gap:8px;margin-top:26px;padding-top:18px;border-top:1px solid var(--line);font:10px var(--mono);letter-spacing:.12em;color:var(--muted)}
.podium-votes strong{font:500 30px var(--serif);letter-spacing:-.03em;color:var(--ink)}
.podium-rest{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,4vw,48px)}
.podium-card .podium-photo img{aspect-ratio:4/5;object-fit:cover;max-height:none}
.podium-card .place-badge{--badge:64px;--badge-size:26px}
.podium-card .podium-name{font-size:clamp(28px,3vw,40px);margin:14px 0 6px}
.podium-card-meta{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;padding-top:6px}
.podium-card .podium-votes{margin-top:0;padding-top:0;border:0}
.podium-card .podium-votes strong{font-size:22px}
.all-entries{margin-top:clamp(60px,8vw,100px)}
.all-entries h3{font:500 clamp(26px,3vw,36px) var(--serif);letter-spacing:-.03em;margin:10px 0 24px}
.mini-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:22px 14px}
.mini-grid button{padding:0;border:0;background:none;text-align:left;cursor:zoom-in}
.mini-grid img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--paper-3)}
.mini-grid span{display:block;font-size:12px;font-weight:500;padding-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reveal{animation:rise .7s var(--ease-out) both}
.reveal:nth-child(2){animation-delay:.08s}.reveal:nth-child(3){animation-delay:.16s}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

.next-up{display:grid;grid-template-columns:auto 1fr auto;gap:22px;align-items:center;max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:18px var(--gutter);background:var(--ink);color:var(--paper)}
.next-up b{font:500 10px var(--mono);letter-spacing:.14em;color:var(--accent)}
.next-up span{font-size:14px}
.next-up a{color:var(--paper);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap}

/* ---------- past challenges */
.page-head{max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:clamp(40px,7vw,90px) var(--gutter) clamp(26px,4vw,44px)}
.page-head h1{font:500 clamp(48px,7vw,96px)/.98 var(--serif);letter-spacing:-.055em;margin:20px 0 14px}
.page-head p{color:#5f6058;font-size:15px;line-height:1.7;max-width:560px;margin:0}
.page-body{max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:0 var(--gutter) clamp(70px,9vw,120px)}
.past-list{display:grid;gap:0;border-top:1px solid var(--line)}
.past-item{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(22px,5vw,64px);padding:clamp(26px,4vw,44px) 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;align-items:center}
.past-item img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;background:var(--paper-3);transition:transform .6s var(--ease-out)}
.past-media{overflow:hidden}
@media(hover:hover) and (pointer:fine){.past-item:hover img{transform:scale(1.025)}.past-item:hover .past-cta{gap:14px}}
.past-number{font:500 11px var(--mono);letter-spacing:.14em;color:var(--muted)}
.past-item h2{font:500 clamp(30px,3.8vw,50px)/1.02 var(--serif);letter-spacing:-.04em;margin:12px 0 6px}
.past-theme{font-size:14px;color:var(--muted);margin:0 0 22px}
.past-winner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:14px}
.past-winner svg{width:16px;height:16px;color:var(--gold)}
.past-winner .muted{font:11px var(--mono);color:var(--muted)}
.past-stats{display:flex;gap:20px;margin:14px 0 22px;font:10px var(--mono);letter-spacing:.1em;color:var(--muted)}
.past-cta{display:inline-flex;gap:10px;font-weight:600;font-size:13px;transition:gap .25s var(--ease-out)}
.empty-state{padding:70px 0;text-align:center;color:var(--muted);border-top:1px solid var(--line)}
.empty-state strong{display:block;font:500 28px var(--serif);color:var(--ink);margin-bottom:8px}

/* ---------- downloads */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:34px}
.chip{appearance:none;border:1px solid var(--line-2);background:transparent;padding:10px 14px;font:500 11px var(--mono);letter-spacing:.08em;cursor:pointer;text-decoration:none;color:var(--muted);transition:all .2s}
.chip[aria-current="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.dl-card{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(26px,5vw,70px);align-items:center}
.dl-card figure{margin:0}
.dl-card figure{display:grid;justify-items:start}
.dl-card img{display:block;width:auto;max-width:100%;max-height:70vh;height:auto}
.dl-card h2{font:500 clamp(32px,4vw,52px)/1.02 var(--serif);letter-spacing:-.04em;margin:12px 0 12px}
.dl-card p{color:#5f6058;line-height:1.7;margin:0 0 30px;font-size:15px}
.dl-buttons{display:grid;gap:12px}
.dl-button{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 22px;background:var(--ink);color:#fff;text-decoration:none;transition:background .2s,transform .16s var(--ease-out)}
.dl-button:active{transform:scale(.985)}
@media(hover:hover) and (pointer:fine){.dl-button:hover{background:var(--ink-2)}}
.dl-button.light{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
@media(hover:hover) and (pointer:fine){.dl-button.light:hover{background:var(--ink);color:#fff}}
.dl-button strong{font:600 13px var(--sans);letter-spacing:.12em}
.dl-button span{font:10px var(--mono);opacity:.7;letter-spacing:.06em}
.dl-none{padding:22px;background:var(--paper-2);color:var(--muted);font-size:14px}

/* ---------- dialogs */
.confirm-dialog{width:min(440px,calc(100% - 32px));padding:30px;background:var(--paper);border:0;box-shadow:0 25px 100px #0005;color:var(--ink)}
.confirm-dialog::backdrop,.viewer::backdrop{background:#151611b8;backdrop-filter:blur(4px)}
.confirm-dialog[open]{animation:dialog-in .24s var(--ease-out)}
@keyframes dialog-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.dialog-close{position:absolute;right:14px;top:10px;border:0;background:none;font-size:28px;cursor:pointer;color:#666;line-height:1;padding:4px 8px}
.confirm-dialog img{display:block;width:100%;height:240px;object-fit:cover;margin:18px 0;background:var(--paper-3)}
.confirm-dialog h2{font:500 30px var(--serif);letter-spacing:-.03em;margin:0 0 8px}
.confirm-dialog p{font-size:13px;line-height:1.6;color:var(--muted);margin:0 0 18px}
#turnstile-box:not(:empty){margin-bottom:14px}
.viewer{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#121310f2;color:#fff}
.viewer[open]{animation:fade .2s ease-out}
@keyframes fade{from{opacity:0}}
.viewer-inner{position:relative;height:100%;display:grid;grid-template-rows:1fr auto}
.viewer-figure{margin:0;display:grid;place-items:center;padding:56px 72px 12px;min-height:0}
.viewer-figure img{max-width:100%;max-height:calc(100dvh - 160px);object-fit:contain;display:block}
.viewer-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:16px 24px 22px}
.viewer-bar strong{font:500 22px var(--serif);display:block}
.viewer-bar a{font:11px var(--mono);color:#b8b8ad;text-decoration:none}
.viewer-close{position:absolute;top:10px;right:14px;z-index:2;border:0;background:none;color:#fff;font-size:34px;cursor:pointer;padding:6px 10px;line-height:1}
.viewer-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:48px;height:48px;border-radius:50%;border:1px solid #ffffff40;background:#00000030;color:#fff;font-size:18px;cursor:pointer;transition:background .2s}
.viewer-nav:hover{background:#ffffff20}
.viewer-prev{left:14px}.viewer-next{right:14px}
.viewer .vote-btn{border-color:#fff;color:#fff}
@media(hover:hover) and (pointer:fine){.viewer .vote-btn:hover:not(:disabled){background:#fff;color:var(--ink)}}
.viewer .vote-btn:disabled{border-color:#ffffff40;color:#ffffff70}
.viewer .vote-btn.is-mine{background:var(--accent);border-color:var(--accent);color:var(--ink)}

.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);background:var(--ink);color:#fff;padding:13px 18px;font-size:13px;box-shadow:0 8px 30px #0003;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s var(--ease-out);z-index:30;max-width:calc(100% - 32px)}
.toast.visible{opacity:1;transform:translate(-50%,0)}

/* ---------- demo panel */
.demo{position:fixed;left:16px;bottom:16px;z-index:25;font:12px var(--sans)}
.demo-toggle{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border:0;border-radius:999px;background:#2b2d26;color:#fff;font:500 10px var(--mono);letter-spacing:.12em;cursor:pointer;box-shadow:0 8px 28px #0003}
.demo-toggle i{width:7px;height:7px;border-radius:50%;background:var(--accent)}
.demo-card{width:min(330px,calc(100vw - 32px));margin-bottom:10px;padding:18px;background:#1f201c;color:#e9e7de;box-shadow:0 18px 50px #0006;transform-origin:bottom left;animation:demo-in .22s var(--ease-out)}
@keyframes demo-in{from{opacity:0;transform:translateY(6px) scale(.97)}}
.demo-card h4{margin:0 0 4px;font:500 10px var(--mono);letter-spacing:.14em;color:var(--accent)}
.demo-card p{margin:0 0 12px;color:#a9a99e;font-size:12px;line-height:1.5}
.demo-clock{font:11px var(--mono);color:#fff;margin-bottom:14px;padding:8px 10px;background:#2b2d26}
.demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.demo-grid button,.demo-row button,.demo-row a{appearance:none;border:1px solid #45473f;background:transparent;color:#e9e7de;padding:9px 8px;font:500 11px var(--sans);cursor:pointer;text-align:left;text-decoration:none;transition:background .15s}
.demo-grid button:hover,.demo-row button:hover,.demo-row a:hover{background:#34362f}
.demo-grid button.wide{grid-column:1/-1}
.demo-row{display:flex;gap:6px;margin-top:10px}
.demo-row>*{flex:1;text-align:center!important}

/* ---------- footer (from the original site) */
.footer{padding:0 var(--gutter);background:var(--ink);color:#999b90;font:8px var(--mono);letter-spacing:.08em}
.footer-main{min-height:112px;display:flex;align-items:center;justify-content:space-between;gap:32px;border-bottom:1px solid #363830}
.footer-brand{display:flex;align-items:center;gap:12px;color:var(--paper);text-decoration:none;font-weight:500;white-space:nowrap}
.footer-brand-mark{display:grid;place-items:center;width:34px;height:34px;border:1px solid #55574e;border-radius:50%;color:var(--accent);font:10px var(--mono);letter-spacing:-.1em}
.footer-links{display:flex;align-items:center;gap:clamp(22px,5vw,72px)}
.footer-link{display:grid;grid-template-columns:auto auto;align-items:center;column-gap:8px;row-gap:6px;color:var(--paper);font:11px var(--sans);text-decoration:none;transition:color .2s}
.footer-link span{grid-column:1/-1;color:#92948a;font:8px var(--mono);letter-spacing:.12em}
.footer-link b{color:var(--accent);font:12px var(--sans);font-weight:400}
.footer-link:hover{color:var(--accent)}
.admin-link{padding:10px 13px;border:1px solid #45473f;border-radius:2px;color:#b6b8ad;font:9px var(--mono);letter-spacing:.06em;text-decoration:none;white-space:nowrap}
.admin-link span{padding-left:7px;color:var(--accent)}
.footer-bottom{min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:14px;color:#77796f}

/* ---------- responsive */
@media(max-width:960px){
  .submit-layout{grid-template-columns:1fr}
  .submit-aside{position:static}
  .podium-first{grid-template-columns:1fr}
  .dl-card{grid-template-columns:1fr}
}
@media(max-width:640px){
  .topbar{height:auto;min-height:62px;padding:12px 16px;flex-wrap:wrap;row-gap:8px}
  .brand{font-size:9px}.brand-mark{width:31px;height:31px}
  .site-nav{gap:16px}.site-nav a{font-size:12px}
  .ch-hero{padding:22px 16px 20px;grid-template-columns:1fr 84px;gap:16px;align-items:start}
  .ch-title{font-size:34px;margin:10px 0 8px}
  .ch-desc{font-size:13px}
  .ch-cover{width:84px}
  .ch-cover figcaption span{display:none}
  .stage-tabs{padding:0}
  .stage-tab{flex-direction:column;gap:5px;min-height:66px;font-size:11px;letter-spacing:.12em}
  .stage-flag{position:absolute;top:12px;right:12px}
  .progress{justify-content:space-between;gap:4px;padding:11px 16px 12px;font-size:8.5px;letter-spacing:.08em}
  .progress-mark{width:15px;height:15px;font-size:8px}
  .progress-step{gap:5px}
  .stage-panel{padding:34px 16px 70px}
  .two-col{grid-template-columns:1fr}
  .form-card{padding:22px 16px;margin:0 -16px;border-left:0;border-right:0}
  .drop-preview{grid-template-columns:86px 1fr}.drop-preview img{width:86px;height:86px}
  .cd-num{font-size:40px}.cd-sep{font-size:28px}
  .gallery{columns:2;column-gap:12px}
  .entry{margin-bottom:24px}
  .entry-meta{flex-direction:column;align-items:stretch;gap:8px}
  .entry-name{font-size:13px}
  .vote-btn{width:100%;padding:10px 8px}
  .podium-rest{grid-template-columns:1fr}
  .stats{width:100%;justify-content:space-between}
  .past-item{grid-template-columns:1fr}
  .page-head{padding:34px 16px 24px}.page-body{padding:0 16px 70px}
  .next-up{grid-template-columns:1fr;gap:6px;padding:16px}
  .viewer-figure{padding:54px 8px 8px}
  /* phones: arrows sit on the photo's edges (well away from Share/Vote); actions get their own full-width row */
  .viewer-nav{top:calc((100dvh - 150px) / 2);width:40px;height:40px;font-size:16px;background:#0000008c;border-color:#ffffff59;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
  .viewer-prev{left:10px}.viewer-next{right:10px}
  .viewer-figure{padding:54px 8px 8px}
  .viewer-bar{flex-direction:column;align-items:stretch;gap:14px;padding:12px 16px calc(18px + env(safe-area-inset-bottom))}
  .viewer-actions{display:grid!important;grid-template-columns:auto 1fr;gap:10px}
  .viewer-actions .vote-btn,.viewer-actions .share-btn{width:100%;padding:13px 14px}
  .footer{padding:0 22px}
  .footer-main{padding:26px 0 23px;min-height:0;display:grid;grid-template-columns:1fr auto;align-items:start;gap:24px 12px}
  .footer-brand{grid-column:1/-1;font-size:9px}
  .footer-links{display:grid;gap:16px}
  .footer-bottom{padding:17px 0 19px;display:grid;grid-template-columns:1fr auto;gap:9px 12px;font-size:7px}
  .footer-bottom span:nth-child(2){grid-column:1/-1;grid-row:2}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* ---------- consent, sharing, stories, rules, manage */
.checks{gap:14px;margin:4px 0 24px}
.checks + .checks{margin-top:-8px}
.check{display:grid;grid-template-columns:20px 1fr;gap:12px;align-items:start;font:14px/1.55 var(--sans)!important;letter-spacing:0!important;text-transform:none!important;color:#3f413a!important;cursor:pointer}
.check input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--ink)}
.check a{color:var(--ink)}
.field.invalid .check input{outline:2px solid var(--red);outline-offset:2px}
.share-box{margin:22px 0 4px;padding:16px;background:#2b2d26}
.share-label{display:block;font:500 10px var(--mono);letter-spacing:.12em;color:var(--accent);margin-bottom:10px}
.share-row{display:flex;gap:10px;align-items:center}
.share-row code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:13px var(--mono);color:#fff}
.share-row .button{padding:11px 16px}
.share-btn{appearance:none;border:1px solid #ffffff55;background:transparent;color:#fff;padding:10px 14px;font:600 11px var(--sans);letter-spacing:.08em;cursor:pointer;transition:background .2s}
.share-btn:hover{background:#ffffff1a}
.viewer-actions{display:flex;gap:10px;align-items:center}
.story{margin:22px 0 0;padding:0 0 0 18px;border-left:2px solid var(--accent);max-width:460px}
.story p{margin:0;font:italic 500 19px/1.5 var(--serif);color:var(--ink-2)}
.story cite{display:block;margin-top:10px;font:normal 10px var(--mono);letter-spacing:.1em;color:var(--muted);text-transform:uppercase}
.story.small{margin-top:14px}.story.small p{font-size:16px}
.results-head .button{align-self:flex-end}
.rules-page>*{max-width:820px}
.rule{display:grid;grid-template-columns:48px 1fr;gap:18px;padding:24px 0;border-top:1px solid var(--line)}
.rule b{font:500 11px var(--mono);color:var(--faint);padding-top:8px}
.rule h2{font:500 26px var(--serif);letter-spacing:-.02em;margin:0 0 8px}
.rule p{margin:0;color:#4f514a;line-height:1.7;font-size:15px}
.manage-card{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(24px,5vw,64px);align-items:start}
.manage-card figure{margin:0}
.manage-card figure img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain;object-position:left top}
.manage-card h2{font:500 clamp(34px,4vw,52px)/1 var(--serif);letter-spacing:-.04em;margin:12px 0 8px}
.muted-line{font:11px/1.6 var(--mono);color:var(--muted);margin:0 0 26px}
.manage-card .drop{min-height:160px}
.footer-mini{color:#b6b8ad;text-decoration:none;font:9px var(--mono);letter-spacing:.06em;margin-right:14px}
.footer-mini:hover{color:var(--accent)}
@media(max-width:760px){.manage-card{grid-template-columns:1fr}.rule{grid-template-columns:34px 1fr}.share-row{flex-direction:column;align-items:stretch}}

.form-turnstile:not(:empty){margin:0 0 16px;min-height:65px}
.success-card .mail-tip{font-size:13px!important;color:#a9a99e!important;border-left:2px solid var(--accent);padding-left:12px;margin-top:6px!important}

/* ---------- keep me updated */
.keep-updated{background:var(--ink);color:var(--paper);border-bottom:1px solid #363830}
.keep-inner{max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:clamp(48px,7vw,90px) var(--gutter);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,6vw,90px);align-items:center}
.keep-copy .eyebrow{color:#a5a69b}.keep-copy .eyebrow-rule{border-color:#55574e}
.keep-copy h2{font:500 clamp(34px,4.4vw,58px)/1.04 var(--serif);letter-spacing:-.04em;margin:16px 0 14px;text-wrap:balance}
.keep-copy p{color:#b8b8ad;font-size:15px;line-height:1.7;margin:0;max-width:440px}
.keep-form{display:grid;gap:12px}
.keep-input{background:#26271f;border-color:#45473f;color:#fff;font-size:16px;padding:18px 16px}
.keep-input::placeholder{color:#7d7f74}
.keep-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #d5ef6233}
.keep-button{width:100%;justify-content:center;gap:14px;padding:22px 18px;font-size:14px;letter-spacing:.06em;white-space:normal;text-align:center}
.keep-message{min-height:1.4em;margin:0;font-size:14px;line-height:1.5;color:#b8b8ad}
.keep-message.ok{color:var(--accent)}.keep-message.err{color:#ff9d8c}
.keep-done{padding:22px;border:1px solid #45473f;background:#26271f}
.keep-done strong{display:block;font:500 24px var(--serif);color:var(--accent);margin-bottom:6px}
.keep-turnstile:empty{display:none}
.sr-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.notice-card{max-width:640px;margin:12vh auto;padding:0 var(--gutter);text-align:center}
.notice-card h1{font:500 clamp(38px,5vw,60px)/1.05 var(--serif);letter-spacing:-.04em;margin:18px 0 12px}
.notice-card p{color:#5f6058;line-height:1.7;margin:0 0 26px}
@media(max-width:760px){.keep-inner{grid-template-columns:1fr;padding:52px 16px}.keep-button{font-size:13px;padding:20px 14px}}
.share-challenge{appearance:none;border:1px solid var(--ink);background:transparent;padding:8px 13px;border-radius:999px;font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s}
@media(hover:hover) and (pointer:fine){.share-challenge:hover{background:var(--ink);color:var(--paper)}}

/* ---------- share to story */
.share-row-buttons{display:inline-flex;flex-wrap:wrap;gap:8px}
.share-challenge.story-btn{background:var(--ink);color:var(--paper);border-color:var(--ink)}
@media(hover:hover) and (pointer:fine){.share-challenge.story-btn:hover{background:var(--ink-2)}}
.share-challenge:disabled{opacity:.6;cursor:wait}
.story-dialog{width:min(420px,calc(100% - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:26px;background:var(--paper);border:0;box-shadow:0 25px 100px #0005;color:var(--ink)}
.story-dialog::backdrop{background:#151611b8;backdrop-filter:blur(4px)}
.story-dialog[open]{animation:dialog-in .24s var(--ease-out)}
.story-dialog h2{font:500 30px var(--serif);letter-spacing:-.03em;margin:10px 0 16px}
.story-preview{display:grid;place-items:center;background:var(--paper-2);padding:14px;margin-bottom:16px}
.story-preview img{display:block;width:min(210px,52vw);aspect-ratio:9/16;object-fit:contain;box-shadow:0 10px 30px #0002;background:var(--paper)}
.story-actions{display:grid;gap:10px}
.story-actions .button{justify-content:center;gap:12px}
.story-steps{margin:18px 0 0;padding-left:18px;font-size:13px;line-height:1.6;color:#4f514a}
.story-steps li{margin-bottom:8px}
.story-steps .text-link{background:none;border:0;padding:0;cursor:pointer;font-size:13px}
.lbl-short{display:none}
@media(max-width:640px){.ch-meta{gap:10px 12px}.share-row-buttons{flex-wrap:nowrap}.share-challenge{padding:8px 11px;white-space:nowrap}.lbl-long{display:none}.lbl-short{display:inline}}
.share-row-buttons{align-items:center}.share-challenge{display:inline-flex;align-items:center;gap:6px;line-height:1.2}

/* ---------- footer */
.site-footer{position:relative;background:var(--ink);color:var(--paper);overflow:hidden;border-top:1px solid #2f312a}
.sf-grid{max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:clamp(56px,7vw,96px) var(--gutter) clamp(36px,5vw,64px);display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr) minmax(0,.8fr) minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(28px,4vw,64px);align-items:start}
.sf-mark{display:grid;place-items:center;width:44px;height:44px;border:1px solid #55574e;border-radius:50%;color:var(--accent);font:11px var(--mono);letter-spacing:-.1em;margin-bottom:22px}
.sf-tagline{font:500 clamp(28px,2.8vw,40px)/1.08 var(--serif);letter-spacing:-.03em;margin:0 0 14px;max-width:360px}
.sf-tagline em{color:var(--accent);font-style:italic}
.sf-blurb{margin:0;max-width:340px;color:#a5a69b;font-size:14px;line-height:1.7}
.sf-blurb a{color:var(--paper);text-decoration:underline;text-decoration-color:#55574e;text-underline-offset:3px}
.sf-col{display:grid;gap:12px;align-content:start}
.sf-col h3{margin:4px 0 8px;font:500 10px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:#77796f}
.sf-col a{position:relative;justify-self:start;color:var(--paper);text-decoration:none;font-size:15px;padding-bottom:2px;background:linear-gradient(var(--accent),var(--accent)) left bottom/0 1px no-repeat;transition:background-size .3s var(--ease-out),color .2s}
@media(hover:hover) and (pointer:fine){.sf-col a:hover{background-size:100% 1px;color:var(--accent)}.sf-col a:hover .sf-arrow{transform:translate(2px,-2px)}}
.sf-arrow{display:inline-block;color:var(--accent);transition:transform .25s var(--ease-out)}
.sf-now{display:grid;gap:10px;padding:20px;border:1px solid #3a3c34;background:#22231e;color:var(--paper);text-decoration:none;transition:border-color .25s,transform .25s var(--ease-out)}
@media(hover:hover) and (pointer:fine){.sf-now:hover{border-color:var(--accent);transform:translateY(-2px)}}
.sf-now-kicker{display:flex;align-items:center;gap:8px;font:500 10px var(--mono);letter-spacing:.14em;color:#a5a69b;text-transform:uppercase}
.sf-now-kicker i{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px #d5ef6222;animation:pulse 2.4s ease-in-out infinite}
.sf-now strong{font:500 24px/1.15 var(--serif);letter-spacing:-.02em}
.sf-now-time{font:500 13px var(--mono);color:var(--accent);font-variant-numeric:tabular-nums}
.sf-now-cta{font-size:13px;color:#a5a69b}
.sf-wordmark{max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:0 var(--gutter);font:500 clamp(40px,calc((100vw - 2 * var(--gutter)) / 8.4),196px)/.86 var(--serif);letter-spacing:-.055em;white-space:nowrap;color:#2c2e27;user-select:none;transform:translateY(.06em)}
.sf-wordmark em{color:#3a3d32;font-style:italic}
.sf-bottom{position:relative;max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:18px var(--gutter) 22px;display:flex;justify-content:space-between;gap:16px;border-top:1px solid #2f312a;font:10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:#77796f}
.sf-bottom-links{display:flex;gap:22px}
.sf-bottom a{color:#a5a69b;text-decoration:none;transition:color .2s}
.sf-bottom a:hover{color:var(--accent)}
@media(max-width:1180px){.sf-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr) minmax(0,.8fr) minmax(0,.9fr)}.sf-now{grid-column:1/-1}}
@media(max-width:960px){.sf-grid{grid-template-columns:1fr 1fr}.sf-intro,.sf-now{grid-column:1/-1}}
@media(max-width:640px){.sf-grid{padding:48px 16px 32px;gap:32px 20px}.sf-wordmark{padding:0 16px}.sf-bottom{padding:16px;flex-direction:column;gap:10px}.sf-col a{font-size:14px}}
.check-sm{font-size:13px!important;color:#5f6058!important;margin-top:2px}.check-sm input{width:16px;height:16px}
.two-col{align-items:start}

/* ---------- legal pages (terms, entrant content, privacy) and consent boxes */
.sf-contact{word-break:break-all}
.keep-check{font-size:13px!important;color:#b8b8ad!important}.keep-check a{color:var(--paper)!important}
.keep-check input{accent-color:var(--accent)}
.keep-form .field-error{color:#ff9d8c}
.legal-draft{max-width:820px;margin:0 0 30px;padding:14px 16px;border-left:4px solid var(--amber);background:#f6ead9;font-size:14px;line-height:1.6;color:#4f514a}
.legal-layout{display:grid;grid-template-columns:220px minmax(0,820px);gap:clamp(28px,5vw,72px);align-items:start}
.legal-toc{position:sticky;top:24px;display:grid;gap:8px;font-size:13px}
.legal-toc b{font:500 10px var(--mono);letter-spacing:.14em;color:var(--faint);margin-bottom:4px}
.legal-toc a{color:var(--muted);text-decoration:none;line-height:1.4}.legal-toc a:hover{color:var(--ink)}
.legal{font-size:15px;line-height:1.75;color:#3f413a}
.legal h2{font:500 clamp(24px,3vw,30px)/1.2 var(--serif);letter-spacing:-.02em;color:var(--ink);margin:46px 0 12px;padding-top:24px;border-top:1px solid var(--line);scroll-margin-top:20px}
.legal h2:first-child{margin-top:0}
.legal h3{font:600 15px var(--sans);color:var(--ink);margin:24px 0 6px}
.legal p,.legal ul,.legal ol{margin:0 0 14px}
.legal ul,.legal ol{padding-left:22px}.legal li{margin:0 0 6px}
.legal a{color:var(--ink)}
.legal .ph{background:#f1e7b8;padding:0 3px;font-family:var(--mono);font-size:.88em;color:#5c4a05;white-space:normal}
.legal-table{width:100%;border-collapse:collapse;margin:8px 0 20px;font-size:14px;line-height:1.55}
.legal-table th,.legal-table td{text-align:left;vertical-align:top;padding:10px 12px 10px 0;border-bottom:1px solid var(--line)}
.legal-table th{font:500 10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.legal-request{margin:20px 0;padding:20px;border:1px solid var(--line-2);background:var(--paper-2)}
.legal-request p:last-child{margin-bottom:0}
.legal-updated{font:11px var(--mono);letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
@media(max-width:900px){.legal-layout{grid-template-columns:1fr}.legal-toc{position:static;padding-bottom:18px;border-bottom:1px solid var(--line)}}
@media(max-width:640px){.legal-table thead{display:none}.legal-table tr{display:block;padding:10px 0;border-bottom:1px solid var(--line)}.legal-table td{display:block;border:0;padding:3px 0}.legal-table td:first-child{font-weight:600;color:var(--ink)}}
.admin-legal{display:flex;flex-wrap:wrap;gap:10px 22px;padding:22px var(--gutter) 30px;border-top:1px solid var(--line);font:10px var(--mono);letter-spacing:.1em;text-transform:uppercase}
.admin-legal a{color:var(--muted);text-decoration:none}.admin-legal a:hover{color:var(--ink)}

/* ---------- duels (side game) */
.duel-promo{display:grid;grid-template-columns:1fr auto;gap:4px 24px;align-items:center;margin:0 0 26px;padding:20px 22px;background:var(--ink);color:var(--paper);text-decoration:none;transition:transform .2s var(--ease-out)}
.duel-promo:active{transform:scale(.99)}
@media(hover:hover) and (pointer:fine){.duel-promo:hover .duel-promo-cta{background:var(--paper)}}
.duel-promo-kicker{grid-column:1;font:500 10px var(--mono);letter-spacing:.16em;color:var(--accent)}
.duel-promo strong{grid-column:1;font:500 clamp(22px,2.6vw,30px)/1.15 var(--serif);letter-spacing:-.02em}
.duel-promo>span:nth-of-type(2){grid-column:1;color:#b8b8ad;font-size:14px;line-height:1.55}
.duel-promo-cta{grid-column:2;grid-row:1/span 3;padding:14px 18px;background:var(--accent);color:var(--ink);font:600 12px var(--sans);letter-spacing:.06em;white-space:nowrap;transition:background .2s}
@media(max-width:640px){.duel-promo{grid-template-columns:1fr}.duel-promo-cta{grid-column:1;grid-row:auto;justify-self:start;margin-top:10px}}
.duel-head h1{font-size:clamp(40px,6vw,80px)}
.duel-stage{max-width:1100px}
.duel-intro{max-width:560px;display:grid;gap:18px;justify-items:start}
.duel-intro .button-wide{justify-self:stretch}
.duel-how{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.duel-how li{display:grid;grid-template-columns:34px 1fr;font-size:15px;line-height:1.55;color:#3f413a}
.duel-how b{font:500 11px var(--mono);color:var(--faint);padding-top:3px}
.duel-played,.duel-message{margin:0;padding:12px 14px;background:var(--paper-2);font-size:14px}
.duel-message{border-left:4px solid var(--amber)}
.duel-small{margin:0;font-size:12px;color:var(--muted)}
.duel-done{justify-items:start}.duel-done .success-check{margin:0}
.duel-arena{display:grid;grid-template-columns:1fr auto 1fr;gap:clamp(10px,2vw,22px);align-items:center}
.duel-or{font:500 11px var(--mono);letter-spacing:.16em;color:var(--faint)}
.duel-pick{position:relative;appearance:none;border:0;padding:0;background:var(--paper-3);cursor:pointer;display:grid;place-items:center;aspect-ratio:4/5;overflow:hidden;box-shadow:0 0 0 1px var(--line);transition:transform .18s var(--ease-out),box-shadow .2s,opacity .2s;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.duel-pick img{width:100%;height:100%;object-fit:contain;display:block}
.duel-letter{position:absolute;left:12px;top:12px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--paper);font:500 12px var(--mono)}
@media(hover:hover) and (pointer:fine){.duel-pick:hover{box-shadow:0 0 0 3px var(--ink)}}
.duel-pick:active{transform:scale(.98)}
.duel-arena.decided .duel-pick{opacity:.35}
.duel-arena.decided .duel-pick.chosen{opacity:1;box-shadow:0 0 0 4px var(--accent);transform:scale(1.01)}
.duel-bar{display:flex;flex-wrap:wrap;gap:12px 26px;align-items:center;justify-content:space-between;margin-top:20px;font-size:14px}
.duel-count{font:500 12px var(--mono);letter-spacing:.08em;color:var(--muted)}.duel-count strong{color:var(--ink);font-size:15px}
.duel-keys{font:11px var(--mono);color:var(--faint)}
@media(hover:none){.duel-keys{display:none}}
.duel-playing .duel-head p{display:none}
.duel-stage{scroll-margin-top:12px}
@media(min-width:641px){.duel-arena .duel-pick{aspect-ratio:auto;height:min(64vh,calc(100svh - 170px))}}
@media(max-width:640px){
  .duel-playing .duel-head{display:none}
  .duel-arena{grid-template-columns:1fr;gap:6px}
  .duel-pick{aspect-ratio:auto;height:calc((100svh - 104px) / 2);min-height:160px}
  .duel-or{justify-self:center;font-size:10px}
  .duel-bar{margin-top:10px;gap:8px 18px}
}
@media(prefers-reduced-motion:reduce){.duel-pick,.duel-promo{transition:none}}
.duel-results{margin:clamp(40px,6vw,70px) 0;padding-top:30px;border-top:1px solid var(--line)}
.duel-results h3{font:500 clamp(30px,4vw,44px)/1.05 var(--serif);letter-spacing:-.03em;margin:14px 0 10px}
.duel-results-lede{max-width:640px;color:#5f6058;font-size:15px;line-height:1.7;margin:0 0 26px}
.duel-podium{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:18px;align-items:start}
.duel-card figure{position:relative;margin:0;background:var(--paper-3)}
.duel-card img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}
.duel-card .place-badge{position:absolute;top:12px;left:12px;--badge:52px;--badge-size:18px}
.duel-card.first .place-badge{--badge:68px;--badge-size:24px}
.duel-card h4{font:500 24px var(--serif);margin:10px 0 2px}
.duel-card .place-label{display:block;margin-top:14px}
.duel-stat{margin:8px 0 0;font-size:13px;color:#4f514a}
@media(max-width:760px){.duel-podium{grid-template-columns:1fr 1fr}.duel-card.first{grid-column:1/-1}}
.duel-table{margin-top:24px}
.duel-table summary{cursor:pointer;font:500 12px var(--mono);letter-spacing:.08em;padding:10px 0}
.duel-table ol{list-style:none;margin:0;padding:0}
.duel-table li{display:grid;grid-template-columns:34px 44px 1fr auto auto;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.duel-table img{width:44px;height:44px;object-fit:cover}
.dt-place{font:500 12px var(--mono);color:var(--muted)}.dt-num{font:12px var(--mono);color:#4f514a;text-align:right}
.dt-name small{color:var(--muted);font-family:var(--mono)}
@media(max-width:560px){.duel-table li{grid-template-columns:28px 40px 1fr auto}.duel-table li .dt-num:last-child{display:none}}

/* ---------- hall of fame */
.hof-top{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:34px}
.hof-card{display:grid;border:1px solid var(--line);background:#fbfaf6}
.hof-card figure{position:relative;margin:0;background:var(--paper-3)}
.hof-card img{display:block;width:100%;aspect-ratio:5/4;object-fit:cover}
.hof-rank{position:absolute;left:14px;top:14px;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--paper);font:600 22px var(--serif)}
.hof-card.rank-1 .hof-rank{background:var(--accent)}.hof-card.rank-2 .hof-rank{background:#e3e2dc}.hof-card.rank-3 .hof-rank{background:#ead8c4}
.hof-card-body{padding:18px 18px 20px;display:grid;gap:10px}
.hof-who{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;min-width:0}
.hof-handle{font:500 15px var(--mono);color:var(--ink);text-decoration:none;word-break:break-all}
.hof-handle:hover{text-decoration:underline}
.hof-first{font-size:13px;color:var(--muted)}
.hof-points{font:11px var(--mono);letter-spacing:.12em;color:var(--muted)}.hof-points strong{font:500 34px/1 var(--serif);color:var(--ink);letter-spacing:-.02em;margin-right:6px}
.hof-line{margin:0;font-size:13px;color:#4f514a}
.hof-results{display:flex;flex-wrap:wrap;gap:4px}
.hof-dot{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--paper-3);font:600 10px var(--mono)}
.hof-dot.p1{background:var(--accent)}.hof-dot.p2{background:#d6d5cd}.hof-dot.p3{background:#e6cfb4}
.hof-badges{display:flex;flex-wrap:wrap;gap:6px}
.hof-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border:1px solid var(--line-2);font:500 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:#3f413a;white-space:nowrap}
.hof-badge i{font-style:normal}
.hof-list{list-style:none;margin:0 0 30px;padding:0}
.hof-list li{display:grid;grid-template-columns:40px 48px minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.hof-list img{width:48px;height:48px;object-fit:cover;background:var(--paper-3)}
.hof-list .hof-who .hof-badges{flex-basis:100%;margin-top:4px}
.hof-pos{font:500 13px var(--mono);color:var(--muted);text-align:right}
.hof-pts{font:12px var(--mono);color:var(--muted);white-space:nowrap}.hof-pts strong{font:500 20px var(--serif);color:var(--ink)}
.hof-legend{max-width:760px;margin-top:40px;padding-top:24px;border-top:1px solid var(--line);font-size:14px;line-height:1.65;color:#4f514a}
.hof-legend h2{font:500 26px var(--serif);color:var(--ink);margin:0 0 12px}
.hof-legend ul{list-style:none;padding:0;margin:0 0 18px;display:grid;gap:8px}
.hof-legend li{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.hof-legend a{color:var(--ink)}
@media(max-width:900px){.hof-top{grid-template-columns:1fr 1fr}.hof-top .hof-card:first-child{grid-column:1/-1;grid-template-columns:1fr 1fr}.hof-top .hof-card:first-child img{height:100%;aspect-ratio:auto;min-height:260px}}
@media(max-width:640px){
  .hof-top{grid-template-columns:1fr}
  .hof-top .hof-card:first-child{grid-template-columns:1fr}.hof-top .hof-card:first-child img{min-height:0}
  .hof-card img,.hof-top .hof-card:first-child img{aspect-ratio:16/10;height:auto}
  .hof-list li{grid-template-columns:28px 44px minmax(0,1fr) auto;gap:10px}
  .hof-list img{width:44px;height:44px}
  .hof-list .hof-results{grid-column:3/-1;grid-row:2}
}
