/* Art direction: harvest masquerade → elegant, tactile, slightly mystical.
   Palette: charcoal earth + pumpkin orange; Typography: Zodiak + Satoshi; Density: balanced. */
:root,[data-theme="dark"]{
 --font-display:'Zodiak',Georgia,serif;--font-body:'Satoshi','Helvetica Neue',sans-serif;
 --text-xs:clamp(.75rem,.7rem + .25vw,.875rem);--text-sm:clamp(.875rem,.8rem + .35vw,1rem);--text-base:clamp(1rem,.95rem + .25vw,1.125rem);--text-lg:clamp(1.125rem,1rem + .75vw,1.5rem);--text-xl:clamp(1.5rem,1.2rem + 1.25vw,2.25rem);--text-2xl:clamp(2rem,1.2rem + 2.5vw,3.5rem);
 --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-16:4rem;--space-20:5rem;--space-24:6rem;
 --color-bg:#17120f;--color-surface:#211a15;--color-surface-2:#2a211a;--color-surface-offset:#30251d;--color-surface-dynamic:#3b2d23;--color-divider:#3b2e25;--color-border:#49372a;--color-text:#f3eadf;--color-text-muted:#c5b4a4;--color-text-faint:#907c6b;--color-text-inverse:#20140d;--color-primary:#f08a3c;--color-primary-hover:#ffa25b;--color-primary-active:#d86d23;--color-primary-highlight:#4b2d1c;--color-error:#ef7e77;--color-error-highlight:#4b2524;--color-success:#99b96b;--color-success-highlight:#2d3825;
 --radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px rgb(0 0 0/.22);--shadow-md:0 8px 28px rgb(0 0 0/.25);--shadow-lg:0 24px 64px rgb(0 0 0/.38);--transition:180ms cubic-bezier(.16,1,.3,1);--content:1120px;--wide:1320px;
}
[data-theme="light"]{--color-bg:#f3eadc;--color-surface:#fffaf2;--color-surface-2:#f9f0e4;--color-surface-offset:#eddfcf;--color-surface-dynamic:#e2d1bd;--color-divider:#decbb7;--color-border:#d1b99f;--color-text:#2b1d15;--color-text-muted:#6f5b4b;--color-text-faint:#95806e;--color-text-inverse:#fff8ef;--color-primary:#a84412;--color-primary-hover:#8d350d;--color-primary-active:#6d280a;--color-primary-highlight:#f2d1b7;--color-error:#a83835;--color-error-highlight:#f1d3d0;--color-success:#4e702a;--color-success-highlight:#dfe9d2;--shadow-sm:0 1px 2px rgb(70 35 10/.08);--shadow-md:0 8px 28px rgb(70 35 10/.12);--shadow-lg:0 24px 64px rgb(70 35 10/.16)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:none;text-size-adjust:none;scroll-behavior:smooth;scroll-padding-top:6rem}body{min-height:100dvh;line-height:1.55;font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg)}img,svg{display:block;max-width:100%;height:auto}button,input{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}p{max-width:68ch}h1,h2,h3{line-height:1.12;text-wrap:balance}h1{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600}h2{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600}h3{font-size:var(--text-base)}table{border-collapse:collapse;width:100%}a,button,input,label{transition:color var(--transition),background var(--transition),border-color var(--transition),box-shadow var(--transition),transform var(--transition)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px;border-radius:var(--radius-sm)}::selection{background:var(--color-primary-highlight)}.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-link{position:fixed;z-index:100;top:-5rem;left:var(--space-4);background:var(--color-primary);color:var(--color-text-inverse);padding:var(--space-3)}.skip-link:focus{top:var(--space-4)}
.ambient{position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgb(23 18 15/.5),var(--color-bg) 65%),url('/static/img/pumpkin-bg.png') center top/cover no-repeat;opacity:.55;mask-image:linear-gradient(#000,transparent 75%)}[data-theme="light"] .ambient{opacity:.18;filter:saturate(.7)}
.site-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;min-height:72px;padding:var(--space-3) clamp(var(--space-4),4vw,var(--space-12));border-bottom:1px solid color-mix(in oklch,var(--color-text) 10%,transparent);background:color-mix(in oklch,var(--color-bg) 88%,transparent);backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:var(--space-3)}.brand-mark{width:42px;color:var(--color-primary)}.brand span{display:flex;flex-direction:column;line-height:1.15}.brand b{font-family:var(--font-display);font-size:var(--text-lg)}.brand small{font-size:var(--text-xs);color:var(--color-text-muted);letter-spacing:.05em}.header-actions{display:flex;align-items:center;gap:var(--space-3)}.icon-button{display:grid;place-items:center;width:44px;height:44px;border:1px solid color-mix(in oklch,var(--color-text) 14%,transparent);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-muted)}.icon-button:hover{color:var(--color-primary);border-color:var(--color-primary)}.text-link,.micro-link{color:var(--color-text-muted);font-size:var(--text-sm);font-weight:600}.text-link:hover,.micro-link:hover{color:var(--color-primary)}.user-pill{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:600}.user-pill>span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--color-primary-highlight);color:var(--color-primary)}
.flash{position:fixed;z-index:60;top:84px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:var(--space-4);max-width:min(90vw,640px);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);background:var(--color-surface-2)}.flash-success{border-color:var(--color-success);background:var(--color-success-highlight)}.flash-error{border-color:var(--color-error);background:var(--color-error-highlight)}.flash button{border:0;background:transparent;font-size:1.5rem;line-height:1}.container,.container-wide{width:min(calc(100% - 2rem),var(--content));margin-inline:auto}.container-wide{width:min(calc(100% - 2rem),var(--wide))}main{min-height:calc(100dvh - 144px)}footer{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-8) clamp(var(--space-4),4vw,var(--space-12));border-top:1px solid var(--color-divider);color:var(--color-text-faint);font-size:var(--text-xs)}
.eyebrow,.kicker{text-transform:uppercase;letter-spacing:.14em;color:var(--color-primary);font-size:var(--text-xs);font-weight:700}.kicker{color:var(--color-text-faint)}.muted{color:var(--color-text-muted)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);min-height:44px;padding:var(--space-2) var(--space-5);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:700;white-space:nowrap}.button:hover{transform:translateY(-1px)}.button:active{transform:translateY(0)}.button.primary{background:var(--color-primary);color:var(--color-text-inverse)}.button.primary:hover{background:var(--color-primary-hover)}.button.secondary{background:var(--color-surface-2);border-color:var(--color-border)}.button.secondary:hover{border-color:var(--color-primary);color:var(--color-primary)}.button.ghost,.button.danger-ghost{background:transparent;border-color:var(--color-border);color:var(--color-text-muted)}.button.danger-ghost{color:var(--color-error)}.button:disabled{opacity:.45;cursor:not-allowed;transform:none}.panel{border:1px solid color-mix(in oklch,var(--color-text) 11%,transparent);border-radius:var(--radius-xl);background:color-mix(in oklch,var(--color-surface) 94%,transparent);box-shadow:var(--shadow-sm)}label{font-size:var(--text-sm);font-weight:600}input:not([type="checkbox"]):not([type="file"]){width:100%;min-height:48px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;background:var(--color-surface-2)}input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-highlight)}
.login-shell{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.65fr);align-items:center;gap:clamp(var(--space-8),6vw,var(--space-24));width:min(calc(100% - 2rem),1180px);min-height:calc(100dvh - 145px);margin:auto;padding-block:var(--space-12)}.login-copy h1{max-width:9ch;margin:var(--space-3) 0 var(--space-6);font-size:clamp(3rem,7vw,6.8rem);line-height:.88}.login-copy h1 em{display:block;color:var(--color-primary);font-style:italic}.login-copy>p:not(.eyebrow){font-size:var(--text-lg);color:var(--color-text-muted)}.phase-ribbon{display:inline-flex;align-items:center;gap:var(--space-3);margin-top:var(--space-8);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-full);background:color-mix(in oklch,var(--color-surface) 82%,transparent);font-size:var(--text-sm)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--color-primary);box-shadow:0 0 0 5px var(--color-primary-highlight)}.auth-card,.profile-card{display:grid;gap:var(--space-5);padding:clamp(var(--space-6),4vw,var(--space-10));border:1px solid color-mix(in oklch,var(--color-text) 12%,transparent);border-radius:var(--radius-xl);background:color-mix(in oklch,var(--color-surface) 94%,transparent);box-shadow:var(--shadow-lg);backdrop-filter:blur(18px)}.auth-card h2{margin-top:var(--space-2)}.auth-card label,.profile-card label{margin-bottom:calc(var(--space-3) * -1)}.privacy-note{padding-top:var(--space-3);border-top:1px solid var(--color-divider);color:var(--color-text-faint);font-size:var(--text-xs)}.narrow-shell{display:grid;place-items:center;min-height:calc(100dvh - 145px);padding:var(--space-8) var(--space-4)}.profile-card{width:min(100%,560px)}
.hero{display:grid;grid-template-columns:1fr auto;align-items:end;gap:var(--space-10);padding-block:clamp(var(--space-10),6vw,var(--space-20)) var(--space-10)}.hero h1{margin:var(--space-2) 0;font-size:var(--text-2xl)}.hero p:last-child{color:var(--color-text-muted)}.countdown-card{min-width:390px;padding:var(--space-5);border:1px solid var(--color-border);background:color-mix(in oklch,var(--color-surface) 88%,transparent);backdrop-filter:blur(12px)}.countdown-card>span,.countdown-card small{color:var(--color-text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em}.countdown{display:grid;grid-template-columns:repeat(4,auto auto);align-items:end;gap:var(--space-2);margin-block:var(--space-2)}.countdown strong{font-size:var(--text-xl);font-variant-numeric:tabular-nums}.countdown i{padding-bottom:.35rem;color:var(--color-text-faint);font-size:var(--text-xs);font-style:normal}.stage-nav{display:flex;align-items:center;padding-block:var(--space-5);border-block:1px solid var(--color-divider)}.stage-nav span:not(.line){display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-faint);font-size:var(--text-sm);white-space:nowrap}.stage-nav span.active{color:var(--color-primary);font-weight:700}.stage-nav b{font-variant-numeric:tabular-nums}.stage-nav .line{height:1px;flex:1;margin:0 var(--space-4);background:var(--color-divider)}
.content-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);gap:var(--space-6);padding-block:var(--space-10)}.upload-panel,.rules-panel,.ranking-panel,.admin-section.panel{padding:clamp(var(--space-5),3vw,var(--space-8))}.section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.section-head h2{margin-top:var(--space-1)}.badge{display:inline-flex;align-items:center;min-height:28px;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);background:var(--color-surface-offset);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:700}.badge.published{background:var(--color-success-highlight);color:var(--color-success)}.dropzone{display:grid;place-items:center;gap:var(--space-5);min-height:380px;padding:var(--space-8);border:1px dashed var(--color-border);background:var(--color-surface-2);text-align:center}.dropzone>input{position:absolute;opacity:0;pointer-events:none}.dropzone label{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);cursor:pointer}.dropzone label:hover{color:var(--color-primary)}.upload-glyph{display:grid;place-items:center;width:64px;height:64px;margin-bottom:var(--space-3);border:1px solid var(--color-border);border-radius:50%;font-size:2rem}.dropzone small{color:var(--color-text-faint)}.own-photo{position:relative;overflow:hidden;max-width:520px;margin:auto;border-radius:var(--radius-lg);background:var(--color-surface-offset)}.own-photo img{width:100%;max-height:580px;object-fit:contain}.own-photo figcaption{position:absolute;left:var(--space-3);bottom:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);background:rgb(0 0 0/.72);color:white;font-size:var(--text-sm)}.action-row,.row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-5)}.rules-panel ol{list-style:none;display:grid;gap:var(--space-6);margin-top:var(--space-8);counter-reset:steps}.rules-panel li{display:grid;grid-template-columns:38px 1fr;column-gap:var(--space-3);counter-increment:steps}.rules-panel li::before{content:counter(steps,decimal-leading-zero);grid-row:1/3;color:var(--color-primary);font-variant-numeric:tabular-nums}.rules-panel li span{color:var(--color-text-muted);font-size:var(--text-sm)}.gallery-preview,.voting-section,.results-section{padding-block:var(--space-10) var(--space-16)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:var(--space-4)}.photo-grid.compact{grid-template-columns:repeat(auto-fill,minmax(min(190px,100%),1fr))}.photo-card{position:relative;overflow:hidden;border:1px solid color-mix(in oklch,var(--color-text) 10%,transparent);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);content-visibility:auto}.photo-card>img{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--color-surface-offset)}.photo-card>div{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4)}.photo-card span{color:var(--color-text-faint);font-size:var(--text-xs)}.vote-card{cursor:pointer}.vote-card:hover{border-color:var(--color-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.vote-card input{position:absolute;opacity:0}.vote-card.selected,.vote-card.chosen{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary)}.vote-card.own{cursor:not-allowed;opacity:.62}.checkmark{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--color-border);border-radius:50%;color:transparent;font-style:normal}.vote-card.selected .checkmark,.checkmark.visible{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-text-inverse)}.selection-counter{font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.selection-counter b{color:var(--color-primary);font-size:var(--text-lg)}.vote-bar{position:sticky;z-index:20;bottom:var(--space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);width:min(100%,800px);margin:var(--space-8) auto 0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in oklch,var(--color-surface) 92%,transparent);box-shadow:var(--shadow-lg);backdrop-filter:blur(16px)}.vote-bar div{display:flex;flex-direction:column}.vote-bar span{color:var(--color-text-muted);font-size:var(--text-xs)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-16) var(--space-8);color:var(--color-text-muted)}.empty-state>span{font-size:3rem;color:var(--color-primary)}.empty-state h3{margin:var(--space-3) 0}.empty-state p{max-width:38ch}
.winners-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--space-4);align-items:end;margin-bottom:var(--space-12)}.winner-card{position:relative;overflow:hidden;grid-column:span 3;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-md)}.winner-card.place-1{grid-column:span 4}.winner-card.place-2,.winner-card.place-3{grid-column:span 4}.winner-card.place-4,.winner-card.place-5{grid-column:span 3}.winner-card img{width:100%;aspect-ratio:4/5;object-fit:cover}.winner-card>div:last-child{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4)}.winner-card>div b{color:var(--color-primary);font-size:var(--text-sm)}.place{position:absolute;z-index:2;top:var(--space-3);left:var(--space-3);display:grid;place-items:center;min-width:42px;height:42px;padding-inline:var(--space-2);border-radius:50%;background:var(--color-primary);color:var(--color-text-inverse);font-family:var(--font-display);font-weight:700}.table-wrap{overflow-x:auto}.ranking-panel th,.ranking-panel td,.admin-table th,.admin-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-divider);text-align:left}.ranking-panel th,.admin-table th{color:var(--color-text-faint);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em}.table-person{display:flex;align-items:center;gap:var(--space-3)}.table-person img{width:44px;height:44px;border-radius:var(--radius-sm);object-fit:cover}.ranking-panel td:last-child strong{color:var(--color-primary);font-variant-numeric:tabular-nums}
.admin-layout{display:grid;grid-template-columns:240px minmax(0,1fr);width:min(calc(100% - 2rem),var(--wide));margin:auto}.admin-sidebar{position:sticky;top:96px;align-self:start;display:flex;flex-direction:column;min-height:calc(100dvh - 120px);padding:var(--space-8) var(--space-6) var(--space-6) 0;border-right:1px solid var(--color-divider)}.admin-sidebar nav{display:grid;gap:var(--space-2);margin-top:var(--space-6)}.admin-sidebar nav a{padding:var(--space-3);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:600}.admin-sidebar nav a:hover,.admin-sidebar nav a.active{background:var(--color-surface-2);color:var(--color-primary)}.phase-chip{display:flex;align-items:center;gap:var(--space-4);margin-top:auto;padding:var(--space-4);background:var(--color-surface-2)}.phase-chip div{display:flex;flex-direction:column}.phase-chip small{color:var(--color-text-faint)}.admin-main{min-width:0;padding:var(--space-8) 0 var(--space-16) var(--space-8)}.admin-section{scroll-margin-top:100px;margin-bottom:var(--space-8)}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:var(--space-4);margin-bottom:var(--space-8)}.page-heading h1{font-size:var(--text-xl);margin-top:var(--space-2)}.export-actions,.inline-form{display:flex;gap:var(--space-2);align-items:center}.inline-form input{min-width:120px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3)}.stats-grid article{display:flex;flex-direction:column-reverse;gap:var(--space-2);padding:var(--space-5);border:1px solid var(--color-border);background:var(--color-surface)}.stats-grid strong{font-size:var(--text-xl);font-variant-numeric:tabular-nums}.stats-grid span{color:var(--color-text-muted);font-size:var(--text-sm)}.settings-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:var(--space-4)}.settings-form label{display:grid;gap:var(--space-2)}.settings-form small{color:var(--color-text-faint);font-weight:400}.add-user{margin-bottom:var(--space-5);padding:var(--space-4);background:var(--color-surface-2)}.add-user summary{cursor:pointer;color:var(--color-primary);font-size:var(--text-sm);font-weight:700}.add-user form{margin-top:var(--space-4)}.admin-table{min-width:900px}.admin-table input{min-height:38px!important;padding:var(--space-2)!important;font-size:var(--text-sm)}.user-edit{display:grid;gap:var(--space-2)}.code-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--color-primary)}.micro-link{border:0;background:none}.micro-link.danger{color:var(--color-error)}.row-actions{margin:0}.switch{display:flex;align-items:center;gap:var(--space-2)}.switch input{position:absolute;opacity:0}.switch span{position:relative;width:40px;height:22px;border-radius:var(--radius-full);background:var(--color-surface-dynamic)}.switch span::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--color-text-muted);transition:transform var(--transition),background var(--transition)}.switch input:checked+span{background:var(--color-success-highlight)}.switch input:checked+span::after{transform:translateX(18px);background:var(--color-success)}.switch small{color:var(--color-text-muted)}.admin-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-4)}.admin-photo-grid article{overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2)}.admin-photo-grid img{width:100%;aspect-ratio:4/5;object-fit:cover}.admin-photo-grid article>div{padding:var(--space-3)}.admin-photo-grid span{color:var(--color-text-muted);font-size:var(--text-xs)}
@media(max-width:900px){.login-shell{grid-template-columns:1fr;max-width:650px}.login-copy h1{font-size:clamp(3rem,14vw,6rem)}.hero{grid-template-columns:1fr}.countdown-card{min-width:0}.content-grid{grid-template-columns:1fr}.winners-grid{grid-template-columns:repeat(2,1fr)}.winner-card,.winner-card.place-1,.winner-card.place-2,.winner-card.place-3,.winner-card.place-4,.winner-card.place-5{grid-column:span 1}.admin-layout{grid-template-columns:1fr}.admin-sidebar{position:static;min-height:auto;padding:var(--space-4) 0;border:0}.admin-sidebar nav{display:flex;overflow-x:auto;margin-top:var(--space-3)}.admin-sidebar nav a{white-space:nowrap}.phase-chip{display:none}.admin-main{padding:var(--space-4) 0 var(--space-12)}.stats-grid{grid-template-columns:1fr 1fr}.settings-form{grid-template-columns:1fr}.page-heading{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.site-header{min-height:64px}.brand small{display:none}.brand-mark{width:36px}.user-pill{font-size:0}.header-actions{gap:var(--space-2)}.header-actions .text-link{display:none}.login-shell{padding-block:var(--space-8)}.login-copy h1{font-size:clamp(3rem,16vw,4.5rem)}.login-copy>p:not(.eyebrow){font-size:var(--text-base)}.phase-ribbon{border-radius:var(--radius-md)}.hero{padding-block:var(--space-8)}.hero h1{font-size:var(--text-xl)}.countdown{gap:var(--space-1)}.countdown strong{font-size:var(--text-lg)}.stage-nav span:not(.line){font-size:0}.stage-nav span b{font-size:var(--text-sm)}.section-head{align-items:flex-start}.content-grid,.gallery-preview,.voting-section,.results-section{padding-block:var(--space-6) var(--space-10)}.dropzone{min-height:300px;padding:var(--space-5)}.photo-grid,.photo-grid.compact{grid-template-columns:1fr 1fr;gap:var(--space-2)}.photo-card>div{padding:var(--space-3)}.photo-card h3{font-size:var(--text-sm)}.photo-card span{display:none}.action-row>*{width:100%}.action-row form .button,.action-row .button{width:100%}.vote-bar{bottom:var(--space-2);flex-direction:column;align-items:stretch}.vote-bar .button{width:100%}.winners-grid{grid-template-columns:1fr 1fr}.winner-card:first-child{grid-column:1/-1}.winner-card>div:last-child{align-items:flex-start;flex-direction:column}.ranking-panel{padding:var(--space-4)}.stats-grid{grid-template-columns:1fr 1fr}.stats-grid article{padding:var(--space-4)}.export-actions{width:100%;flex-direction:column}.export-actions .button{width:100%}.inline-form{align-items:stretch;flex-direction:column}footer{flex-direction:column}.flash{top:72px}.admin-photo-grid{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* === Hotfix: upload preview, mobile, favicon/background support === */

.is-hidden {
  display: none !important;
}

.dropzone {
  position: relative;
  min-height: 260px;
}

.dropzone input[type="file"] {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  pointer-events: auto;
}

#upload-preview {
  margin-top: var(--space-5);
}

#upload-preview img {
  width: 100%;
  max-height: min(70vh, 560px);
  object-fit: contain;
}

@media (max-width: 600px) {
  .container,
  .container-wide {
    width: min(calc(100% - 1rem), 100%);
  }

  .content-grid,
  .login-shell,
  .hero,
  .admin-layout,
  .settings-form,
  .stats-grid,
  .winners-grid,
  .admin-photo-grid {
    grid-template-columns: 1fr !important;
  }

  .photo-grid,
  .photo-grid.compact {
    grid-template-columns: 1fr 1fr !important;
    gap: var(--space-2);
  }

  .countdown {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .countdown i {
    display: none;
  }

  .vote-bar,
  .action-row,
  .row-actions,
  .inline-form,
  .export-actions,
  footer {
    flex-direction: column !important;
    align-items: stretch !important;
  }

  .vote-bar .button,
  .action-row .button,
  .row-actions .button,
  .inline-form .button,
  .export-actions .button {
    width: 100%;
  }

  .site-header {
    min-height: 64px;
    padding-inline: var(--space-3);
  }

  .brand small,
  .header-actions .text-link,
  .photo-card span {
    display: none !important;
  }

  .brand-mark {
    width: 36px;
  }

  .hero,
  .gallery-preview,
  .voting-section,
  .results-section,
  .content-grid {
    padding-block: var(--space-6) var(--space-10);
  }

  .hero h1 {
    font-size: var(--text-xl);
  }

  .login-copy h1 {
    font-size: clamp(3rem, 16vw, 4.5rem);
    word-break: break-word;
  }

  .countdown-card {
    min-width: 0;
  }

  .dropzone {
    min-height: 280px;
    padding: var(--space-5);
  }

  .photo-card img,
  .winner-card img,
  .admin-photo-grid img {
    aspect-ratio: 4 / 5;
  }

  .winner-card div:last-child {
    flex-direction: column;
    align-items: flex-start;
  }

  .flash {
    top: 72px;
    max-width: calc(100vw - 1rem);
  }
}



.dropzone{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:var(--space-5);
  min-height:380px;
  padding:var(--space-8);
  border:1px dashed var(--color-border);
  background:var(--color-surface-2);
  text-align:center;
}

.dropzone > input[type="file"]{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.dropzone > label{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:var(--space-2);
  cursor:pointer;
}

.dropzone > .button{
  margin-top:var(--space-2);
}

.dropzone > .own-photo{
  display:block;
  position:relative;
  width:100%;
  max-width:520px;
  margin-top:var(--space-4);
}

.dropzone > .own-photo[hidden]{
  display:none;
}

.upload-preview {
  display: grid;
  gap: var(--space-3);
  width: 100%;
  margin-top: var(--space-5);
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
}

.upload-preview[hidden] {
  display: none;
}

.upload-preview img {
  width: 100%;
  max-height: 420px;
  object-fit: contain;
  border-radius: var(--radius-md);
  background: var(--color-surface-offset);
}

.upload-preview figcaption {
  color: var(--color-text-muted);
  font-size: var(--text-sm);
  overflow-wrap: anywhere;
}

.vote-card {
  position: relative;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.vote-card > * {
  pointer-events: none;
}

.vote-card input[data-vote-input] {
  position: absolute;
  opacity: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.vote-card:not(.own):active {
  transform: scale(0.99);
}

.vote-card.own {
  cursor: not-allowed;
}

.vote-card.selected,
.vote-card.chosen {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 2px var(--color-primary);
}
