[hidden] {display:none!important}
* {box-sizing:border-box}
html {background:var(--page);color:var(--ink);font-family:var(--body);-webkit-text-size-adjust:100%}
body {margin:0;background:var(--page)}
button, select {font:inherit}
button {cursor:pointer;color:inherit}
button:disabled {cursor:default}
.vote-board {--gutter:12px;position:relative;isolation:isolate;display:flex;flex-direction:column;width:min(1180px,100%);min-height:100dvh;margin:auto;padding:0 max(var(--gutter),env(safe-area-inset-right)) 0 max(var(--gutter),env(safe-area-inset-left))}
.contest-context {display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;background:var(--cream);border:1px solid var(--gold);border-radius:18px 18px 10px 10px;box-shadow:0 -3px 0 transparent}
.contest-copy {min-width:0}
.contest-kicker {display:block;margin-bottom:3px;color:var(--amber);font-size:10px;font-weight:750;letter-spacing:.14em}
.contest-context h1 {margin:0;color:var(--deep-red);font-family:var(--display);font-size:24px;line-height:1.18;letter-spacing:-.04em;overflow-wrap:anywhere}
.contest-context p {margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.contest-meta {flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.contest-meta time {color:var(--muted);font-family:var(--number);font-size:13px;white-space:nowrap}
.phase {padding:4px 9px;border:1px solid var(--deep-red);border-radius:99px;color:var(--deep-red);font-size:10px;font-weight:700;white-space:nowrap}
.vote-content {flex:1;padding:12px 2px 34px}
.vote-gallery-panel {padding:0 10px 18px;background:var(--cream);border:1px solid var(--gold);border-radius:10px;box-shadow:0 5px 16px rgba(68,35,29,.08)}
.vote-toolbar {position:sticky;z-index:5;top:0;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 16px;padding:9px 0;background:rgba(255,250,246,.97);border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;backdrop-filter:blur(10px)}
.sort-tabs {display:flex;min-width:0;padding:2px;background:var(--paper);border-radius:99px}
.sort-tabs button {min-height:44px;padding:7px 13px;border:0;border-radius:99px;background:transparent;color:var(--muted);font-size:13px;font-weight:700;white-space:nowrap}
.sort-tabs button:hover {color:var(--deep-red)}
.sort-tabs button[aria-pressed=true] {color:var(--cream);background:var(--red);box-shadow:inset 0 0 0 1px var(--line),0 1px 3px rgba(141,13,13,.16)}
.team-filter {display:flex;align-items:center;gap:7px;min-width:0;color:var(--amber);font-size:11px;font-weight:700;white-space:nowrap}
.select-shell {position:relative;display:block;min-width:128px}
.select-shell select {appearance:none;-webkit-appearance:none;width:100%;min-height:44px;padding:8px 34px 8px 12px;border:1px solid var(--line);border-radius:5px;background:var(--cream);color:var(--deep-red);font-size:13px;font-weight:650;cursor:pointer}
.select-shell svg {position:absolute;right:10px;top:50%;width:17px;height:17px;transform:translateY(-50%);fill:none;stroke:var(--deep-red);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.entry-list {display:grid;gap:20px}
.entry-card {display:flex;flex-direction:column;min-width:0;position:relative;overflow:visible;background:var(--white);border:1px solid var(--gold);border-radius:10px;box-shadow:0 3px 12px rgba(68,35,29,.06)}
.entry-rank {position:absolute;z-index:2;left:-5px;top:13px;min-width:66px;padding:7px 10px;background:var(--deep-red);color:var(--gold);font-family:var(--number);font-size:20px;text-align:center;transform:rotate(-3deg);box-shadow:3px 3px 0 var(--gold)}
.entry-main {flex:0 0 auto;display:block;width:100%;aspect-ratio:4/3;padding:0;overflow:hidden;border:0;border-radius:9px 9px 0 0;background:var(--paper)}
.entry-main img {display:block;width:100%;height:100%;object-fit:contain}
.entry-body {display:flex;flex-direction:column;flex:1;gap:15px;padding:15px 16px 17px}
.entry-heading {display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.entry-heading>div:first-child {min-width:0}
.entry-name {overflow-wrap:anywhere;margin:0;color:var(--deep-red);font-family:var(--display);font-size:21px;line-height:1.25}
.entry-meta {overflow-wrap:anywhere;margin:5px 0 0;color:var(--green);font-size:12px;line-height:1.6}
.entry-count {flex-shrink:0;text-align:right;color:var(--deep-red)}
.entry-count strong {display:block;font-family:var(--number);font-size:34px;line-height:.9}
.entry-count span {font-size:10px}
.entry-thumbs {display:flex;flex-wrap:nowrap;align-items:flex-start;gap:7px}
.entry-thumb {flex:0 1 54px;position:relative;min-width:44px;min-height:44px;width:54px;height:auto;aspect-ratio:1;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--paper)}
.entry-thumb img {position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.more-photos {position:absolute;z-index:1;right:2px;bottom:2px;max-width:calc(100% - 4px);padding:2px 4px;border-radius:3px;background:var(--deep-red);color:var(--cream);font-family:var(--number);font-size:14px;line-height:1.1;white-space:nowrap;pointer-events:none}
.vote-button, .load-more {min-height:48px;border:1px solid var(--deep-red);border-radius:5px;background:var(--deep-red);color:var(--cream);font-weight:750}
.vote-button {flex-shrink:0;width:100%;margin-top:auto;display:flex;align-items:center;justify-content:center;gap:8px}
.vote-button svg {width:19px;height:19px}
.vote-button:hover, .load-more:hover {background:var(--red)}
.vote-button:disabled {color:var(--muted);border-color:var(--line);background:var(--paper)}
.empty {padding:52px 18px;border:1px solid var(--line);border-radius:6px;background:var(--white);text-align:center;line-height:1.8}
.empty strong {display:block;color:var(--deep-red);font-size:20px}
.empty p {margin:5px 0 0;color:var(--muted)}
.empty p:empty {display:none}
.load-more {display:block;margin:26px auto 0;padding:8px 28px}
.vote-message {min-height:24px;margin:14px 0 0;text-align:center;color:var(--deep-red);font-size:13px}
dialog {width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--cream);color:var(--ink)}
dialog[open] {display:flex;flex-direction:column}
dialog::backdrop {background:rgba(45,12,8,.78)}
dialog header, dialog footer {display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px}
dialog h2, dialog p {margin:0}
dialog h2 {color:var(--deep-red);font-size:17px}
dialog p {margin-top:4px;color:var(--muted);font-size:12px}
dialog header button {width:44px;height:44px;border:1px solid var(--line);border-radius:5px;background:var(--cream);font-size:26px}
#gallery-stage {min-height:0;flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;background:var(--paper)}
#gallery-stage img {display:block;max-width:100%;max-height:100%;object-fit:contain}
dialog footer button {min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:5px;background:var(--cream);color:var(--ink)}
button:focus-visible, a:focus-visible, select:focus-visible {outline:3px solid var(--green);outline-offset:3px}

@media(max-width:480px){.vote-toolbar {align-items:stretch;flex-direction:column}
.sort-tabs {width:100%}
.sort-tabs button {flex:1}
.team-filter {justify-content:space-between}
.select-shell {flex:1}
.contest-context {align-items:flex-start;flex-direction:column}
.contest-meta {width:100%;align-items:flex-start;flex-direction:row-reverse;justify-content:space-between}
}
.load-sentinel {min-height:54px;margin-top:16px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:9px;color:var(--muted);font-size:12px}
.loading-spinner {width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--deep-red);border-radius:50%;animation:loading-spin .8s linear infinite}
.load-sentinel[aria-busy="false"] .loading-spinner {animation:none;border-top-color:var(--line)}
@keyframes loading-spin{to {transform:rotate(360deg)}
}

@media(min-width:600px){.vote-board {--gutter:20px}
.contest-context {padding:18px 24px}
.contest-context h1 {font-size:30px}
.vote-content {padding-top:16px}
.vote-gallery-panel {padding:0 14px 22px}
.entry-list {grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
}

@media(min-width:901px){.vote-board {--gutter:28px;width:100%;max-width:1500px}
.contest-context {padding:16px 28px}
.contest-context h1 {font-size:32px}
.contest-kicker {font-size:12px}
.contest-context p {font-size:14px}
.contest-meta {flex-direction:row;align-items:center}
.phase {font-size:12px}
.contest-meta time {font-size:16px}
.vote-content {padding:18px 0 24px}
.vote-message:empty {min-height:0;margin:0}
.vote-gallery-panel {padding:0 16px 26px}
.vote-toolbar {padding:10px 0}
.sort-tabs button {padding-inline:20px}
.select-shell {min-width:190px}
.entry-list {grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:30px 24px}
.entry-list>.empty {grid-column:1/-1}
dialog {width:min(1000px,calc(100% - 48px));height:calc(100dvh - 48px);margin:auto;border-radius:9px}
}

@media(prefers-reduced-motion:no-preference){.entry-card {animation:reveal .35s ease both}
.vote-button, .load-more, .sort-tabs button, .select-shell select {transition:background-color .15s ease,color .15s ease,border-color .15s ease}
@keyframes reveal{from {opacity:0;transform:translateY(12px)}
to {opacity:1;transform:translateY(0)}
}
}
.vote-actions {display:flex;gap:9px;margin-top:auto}
.vote-actions .vote-button {flex:1;min-width:0;width:auto;margin-top:0}
.share-button {flex:0 0 92px;min-height:48px;border:1px solid var(--deep-red);border-radius:5px;background:var(--cream);color:var(--deep-red);font-weight:750}
.share-button:hover {background:var(--paper)}
.share-target {margin:0 0 20px}
.share-target-title {margin:4px 0 12px;color:var(--deep-red);font-size:18px}
.share-target .entry-card {max-width:380px;margin:auto;border-width:2px;box-shadow:0 7px 22px rgba(68,35,29,.13)}
.share-target-notice {margin:0 0 16px;padding:13px 16px;border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--deep-red);font-size:14px;line-height:1.5}
.share-target[hidden], .share-target-notice[hidden] {display:none}

