:root { color-scheme:dark; --ink:#080d18; --panel:#111827; --gold:#ecc889; --gold-pale:#fff0ca; --muted:#909eaf; --line:#ddc59428; --text:#f9f6f0; }
html { overflow-x:clip; }
* { box-sizing:border-box; }
[hidden] { display:none!important; }
body { margin:0; min-height:100svh; background:var(--ink); color:var(--text); font-family:Pretendard,-apple-system,BlinkMacSystemFont,sans-serif; overflow-x:hidden; isolation:isolate; }
button,input { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
button,a,input { outline-offset:5px; }
:focus-visible { outline:2px solid var(--gold); }
a { color:inherit; text-decoration:none; }
button { cursor:pointer; }
button:disabled { opacity:.35; cursor:not-allowed; }
h1,h2,p { margin:0; }
.svg-defs { position:absolute; width:0; height:0; overflow:hidden; }
.ambient { position:fixed; z-index:-1; pointer-events:none; border-radius:50%; filter:blur(90px); opacity:.15; }
.ambient-one { width:60vw; height:60vw; top:-35vw; left:20vw; background:#b18c3e; }
.ambient-two { width:50vw; height:50vw; bottom:-38vw; right:-10vw; background:#3160af; }
.awards-header { display:flex; align-items:center; justify-content:space-between; gap:16px; max-width:1680px; margin:auto; padding:24px 40px; }
.awards-brand { display:flex; align-items:center; gap:12px; letter-spacing:.04em; font-size:16px; }
.awards-brand b { color:var(--gold); }
.awards-brand small { display:block; color:var(--muted); font-size:8px; letter-spacing:.24em; margin-top:5px; }
.brand-mark { display:grid; place-items:center; width:40px; height:40px; border:1px solid var(--line); border-radius:12px; color:var(--gold); font-family:Georgia,serif; font-size:26px; }
.header-actions { display:flex; align-items:center; gap:18px; }
.quiet-link,.quiet-button { color:#b1bac8; font-size:13px; background:transparent; border:0; padding:12px 6px; }
.quiet-link:hover,.quiet-button:hover { color:var(--gold-pale); }
.icon-button { display:grid; place-items:center; background:#ffffff07; color:var(--gold); border:1px solid var(--line); border-radius:12px; width:44px; height:44px; font-size:26px; }
.eyebrow { color:var(--gold); font-size:10px; font-weight:650; letter-spacing:.26em; line-height:1.7; }
.gold-button { display:flex; align-items:center; justify-content:center; gap:30px; min-height:58px; padding:17px 30px; background:linear-gradient(120deg,#ffe9b5,#d6aa65); color:#302514; border:1px solid #fff3d4; border-radius:14px; font-size:17px; font-weight:750; box-shadow:0 8px 36px #e9bc6720; transition:transform .2s,box-shadow .2s; }
.gold-button:not(:disabled):hover { transform:translateY(-3px); box-shadow:0 12px 45px #e9bc6740; }
.gold-button span { font-size:23px; font-weight:400; }
.gold-button .button-label { font-size:inherit; font-weight:inherit; }
.muted { color:var(--muted); font-size:14px; line-height:1.7; }
.login-panel { width:min(440px,calc(100% - 40px)); margin:7vh auto 10vh; text-align:center; }
.login-trophy { width:100px; height:115px; margin-bottom:24px; filter:drop-shadow(0 6px 30px #eac58725); }
.login-panel h1 { font-size:34px; letter-spacing:-.05em; margin:12px 0; }
.login-panel form { display:grid; gap:20px; text-align:left; margin-top:32px; }
.login-panel label { display:grid; gap:10px; font-size:13px; color:#c8ced7; }
.login-panel input { width:100%; min-height:54px; background:#ffffff04; color:var(--text); border:1px solid #ffffff20; border-radius:12px; padding:14px 18px; font-size:16px; }
.preparation { width:min(1000px,calc(100% - 40px)); margin:12px auto 32px; text-align:center; }
.intro-art { position:relative; display:grid; place-items:center; width:190px; height:176px; margin:0 auto 26px; }
.intro-art svg { position:relative; width:125px; height:142px; filter:drop-shadow(0 4px 28px #e6b94e30); animation:trophy-float 5s ease-in-out infinite; }
.intro-ring { position:absolute; width:176px; height:176px; border:1px solid #e8c58a20; border-radius:50%; box-shadow:0 0 70px #d7a9560a,inset 0 0 30px #d7a95608; }
.ring-two { width:218px; height:218px; border-style:dashed; border-color:#e8c58a12; animation:ring-turn 80s linear infinite; }
.spark { position:absolute; color:var(--gold); font-size:24px; animation:spark-breathe 3s ease-in-out infinite alternate; }
.spark-one { top:16px; right:4px; }.spark-two { left:5px; bottom:16px; font-size:16px; animation-delay:-1s; }
.intro-title { font-size:clamp(42px,5.4vw,74px); line-height:1.14; letter-spacing:-.065em; margin:17px 0 20px; font-weight:800; }
em { font-style:normal; color:var(--gold); }
.track-preview { display:flex; align-items:center; justify-content:center; gap:37.5px; margin:42px auto; }
.track-preview>div { display:grid; grid-template-columns:auto minmax(0,1fr); min-width:0; text-align:left; column-gap:18px; row-gap:7.5px; }
.track-preview span { grid-row:1/3; color:#e3c18b70; font-size:48px; font-family:Georgia,serif; }
.track-preview strong { font-size:24px; }.track-preview small { font-size:16.5px; color:var(--muted); word-break:keep-all; }.track-preview>i { color:#ffffff30; font-size:24px; font-style:normal; flex-shrink:0; }
.readiness { max-width:680px; margin:0 auto 20px; padding:14px 22px; background:#ffffff04; border:1px solid var(--line); border-radius:14px; color:#bfc7d2; font-size:13px; line-height:1.8; white-space:pre-line; }
.readiness.is-ready { color:var(--gold-pale); }
.preparation-actions { display:flex; justify-content:center; align-items:center; gap:20px; }
.start-actions { display:flex; align-items:center; gap:12px; }
.start-actions .icon-button { flex:0 0 44px; width:44px; height:44px; }
.start-actions .gold-button { flex:1; min-width:0; }
.awards-info { position:fixed; inset:0; margin:auto; width:min(560px,calc(100vw - 32px)); max-height:calc(100svh - 40px); overflow:auto; padding:26px; border:1px solid var(--line); border-radius:22px; background:var(--panel); color:var(--text); box-shadow:0 24px 90px #0008; }
.awards-info::backdrop { background:#020611c9; backdrop-filter:blur(7px); }
.info-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:16px; }
.info-heading h2 { font-size:20px; letter-spacing:-.03em; }
.info-heading button { width:44px; height:44px; flex-shrink:0; padding:0; font-size:20px; }
.awards-info .readiness { margin:0 0 22px; padding:0; border:0; background:none; font-size:14px; line-height:1.9; text-align:left; }
.awards-info form .gold-button { width:100%; min-height:48px; padding:12px 20px; }
@media(max-width:700px) { .start-actions { width:min(360px,100%); }.awards-info { padding:20px; } }
.preparation-note { color:#727f91; font-size:11px; line-height:1.8; margin-top:17px; }
.test-entry { display:inline-block; margin-top:15px; padding:10px; color:var(--gold); font-size:13px; }
.test-entry:hover { text-decoration:underline; }
.test-banner { position:sticky; top:0; z-index:30; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px 18px; padding:13px 20px; border-top:1px solid #e3bc6450; border-bottom:1px solid #e3bc6450; background:#252015f5; color:#f6d794; font-size:12px; text-align:center; line-height:1.6; }
.test-banner strong { font-size:13px; }.test-banner a { text-decoration:underline; text-underline-offset:3px; }
.awards-stage { max-width:1500px; margin:12px auto 0; padding:0 40px; text-align:center; }
.stage-meta { display:flex; align-items:center; justify-content:space-between; gap:20px; max-width:1000px; margin:0 auto 16px; }
.track-label { color:var(--gold); border:1px solid var(--line); border-radius:30px; padding:7px 18px; font-size:13px; font-weight:650; }
.progress { display:flex; gap:9px; }.progress span { display:block; width:26px; height:3px; background:#ffffff16; border-radius:3px; }.progress span:nth-child(5) { margin-left:10px; }.progress .done { background:#b38a49; }.progress .current { background:var(--gold-pale); box-shadow:0 0 14px #e8c17a80; }
.counter { font-variant-numeric:tabular-nums; font-size:12px; color:var(--muted); min-width:52px; }
.awards-scene { position:relative; isolation:isolate; min-height:520px; display:flex; align-items:center; flex-direction:column; justify-content:center; overflow:clip; }
.awards-scene:is([data-phase="revealed"],[data-phase="resting"]) { justify-content:flex-start; }
.stage-halo { position:absolute; z-index:-1; inset:0; background:radial-gradient(ellipse at 50% 40%,#b88e391c,transparent 60%); pointer-events:none; }
.stage-rays { position:absolute; z-index:-1; top:12%; left:50%; width:min(850px,95vw); aspect-ratio:1; transform:translate(-50%,-10%); background:repeating-conic-gradient(from 0deg,#ecd08908 0deg,transparent 10deg,transparent 25deg); mask-image:radial-gradient(circle,#0006,transparent 65%); animation:ray-turn 90s linear infinite; pointer-events:none; }
.award-heading { position:relative; z-index:2; padding-top:12px; }
.award-heading h1 { font-size:clamp(44px,5.4vw,84px); font-weight:800; color:var(--gold-pale); line-height:1.12; letter-spacing:-.045em; margin-top:10px; text-shadow:0 0 50px #d6af5630; }
.award-ordinal { display:block; min-height:24px; margin-top:10px; font-size:12px; letter-spacing:.08em; color:#b0a18a; }
.award-envelope { position:relative; display:grid; place-items:center; width:280px; height:290px; margin:12px auto; }
.award-envelope>svg { width:148px; height:174px; filter:drop-shadow(0 0 30px #e8c58a40); animation:trophy-float 4s ease-in-out infinite; }
.envelope-ring { position:absolute; width:248px; height:248px; border:1px solid #edcf9330; border-radius:50%; box-shadow:0 0 0 18px #edcf9305,0 0 0 46px #edcf9303; }
#award-countdown { position:absolute; right:20px; top:30px; color:var(--gold); font-size:32px; }
.award-winner { width:100%; max-width:1040px; margin:13px auto 18px; }
.winner-image-wrap { display:grid; place-items:center; width:fit-content; max-width:100%; margin:0 auto; border:1px solid #fff0c930; border-radius:18px; overflow:hidden; background:#ffffff05; box-shadow:0 24px 100px #0008; }
#award-image { display:block; width:auto; max-width:min(900px,75vw); max-height:36vh; object-fit:contain; }
#award-image-fallback { width:220px; height:190px; padding:28px; }
.winner-caption { color:#97876c; font-size:8px; letter-spacing:.24em; }
#award-app-name { font-size:clamp(25px,3.4vw,48px); line-height:1.25; letter-spacing:-.04em; margin:9px auto 10px; max-width:1000px; overflow-wrap:anywhere; }
.stage-controls { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:12px; margin:20px auto 0; position:relative; z-index:3; }
.stage-controls .gold-button { min-width:300px; }
.stage-controls>.quiet-button { white-space:nowrap; }
#awards-previous { grid-area:1 / 1; justify-self:end; }
#awards-next { grid-area:1 / 2; justify-self:center; }
#awards-sound-toggle { grid-area:1 / 3; justify-self:start; }
.stage-hint { color:#677487; font-size:11px; margin:13px 0 0; }
.restart-button { background:none; color:#687386; border:0; font-size:11px; padding:15px; margin:2px auto; }
.awards-footer { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:6px 10px; padding:26px 20px; color:#697486; text-align:center; font-size:10px; letter-spacing:.1em; }
.footer-school>span { padding-left:9px; }
.footer-event { display:inline-flex; align-items:center; gap:14px; white-space:nowrap; }
.footer-results-link { display:inline-flex; align-items:center; min-height:44px; color:#b1bac8; font-size:12px; letter-spacing:0; }
.footer-results-link:hover { color:var(--gold-pale); text-decoration:underline; text-underline-offset:4px; }
.page-message { width:min(700px,calc(100% - 32px)); margin:16px auto; text-align:center; font-size:14px; line-height:1.7; color:#ffc6b4; white-space:pre-line; }.page-message:empty { display:none; }
#awards-confetti { position:fixed; inset:0; width:100vw; height:100vh; pointer-events:none; z-index:20; }
.reveal-flash { position:absolute; inset:0; z-index:4; background:radial-gradient(ellipse,#fff5d7bb,transparent 68%); opacity:0; pointer-events:none; }
[data-phase="suspense"] .envelope-ring { animation:envelope-pulse .85s ease-in-out infinite; }
[data-phase="suspense"] .award-envelope>svg { animation:trophy-suspense .6s ease-in-out infinite; }
[data-phase="suspense"] #award-countdown { top:50%; right:auto; left:50%; transform:translate(-50%,-50%); display:grid; place-items:center; width:90px; height:90px; border-radius:50%; background:#101421ed; border:1px solid var(--gold); color:var(--gold-pale); font-size:54px; font-weight:750; }
[data-phase="revealed"] .winner-image-wrap { animation:winner-arrive 1s cubic-bezier(.2,.7,.25,1) both; }
[data-phase="revealed"] :is(.winner-caption,#award-app-name,.award-developer) { animation:winner-title-reveal .6s ease both; }
[data-phase="revealed"] .award-heading { animation:heading-shine 1.2s ease both; }
[data-phase="revealed"] .reveal-flash { animation:gold-flash 1.15s ease-out both; }
.awards-finale { width:100%; padding:26px 0; }.awards-finale>h1 { margin:0 0 34px; font-size:clamp(32px,3.8vw,54px); letter-spacing:-.045em; line-height:1.25; word-break:keep-all; }
.honors { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:32px; text-align:left; max-width:1280px; margin:auto; }.honors h2 { font-size:21px; color:var(--gold); margin-bottom:16px; }.honors ol { display:grid; gap:14px; padding:0; margin:0; list-style:none; }.honors li { display:flex; align-items:center; gap:22px; min-height:104px; padding:24px 26px; border:1px solid var(--line); border-radius:16px; background:#ffffff04; }.honors b { flex-shrink:0; font-size:15px; width:66px; color:var(--gold-pale); }.honors span { font-size:20px; font-weight:600; overflow-wrap:anywhere; line-height:1.5; }
@keyframes trophy-float { 50% { transform:translateY(-7px); } }
@keyframes ring-turn { to { transform:rotate(360deg); } }
@keyframes ray-turn { to { transform:translate(-50%,-10%) rotate(360deg); } }
@keyframes spark-breathe { to { opacity:.3; transform:scale(.65); } }
@keyframes envelope-pulse { 50% { transform:scale(1.08); box-shadow:0 0 0 28px #edcf9308,0 0 0 62px #edcf9303; } }
@keyframes trophy-suspense { 50% { transform:translateY(-4px) rotate(3deg); filter:drop-shadow(0 0 55px #ffdb9690); } }
@keyframes winner-arrive { from { opacity:0; transform:translateY(30px) scale(.92); filter:blur(9px); } to { opacity:1; transform:none; filter:none; } }
@keyframes winner-title-reveal { from { opacity:0; } to { opacity:1; } }
@keyframes gold-flash { 12% { opacity:.9; } 100% { opacity:0; } }
@keyframes heading-shine { from { opacity:.2; letter-spacing:.1em; } to { opacity:1; letter-spacing:normal; } }
#awards-atmosphere { position:fixed; inset:0; width:100vw; height:100vh; pointer-events:none; z-index:-1; }
.ceremony-beams { position:fixed; inset:0; overflow:hidden; pointer-events:none; z-index:-1; }
.ceremony-beams::before,.ceremony-beams::after { content:""; position:absolute; top:-45vh; left:-25vw; width:85vw; height:160vh; background:linear-gradient(90deg,transparent 36%,#f4d89a16 48%,#f4d89a05 54%,transparent 66%); transform-origin:50% 0; filter:blur(12px); animation:spotlight-sweep 14s ease-in-out infinite alternate; }
.ceremony-beams::after { left:auto; right:-25vw; animation-duration:19s; animation-delay:-9s; animation-direction:alternate-reverse; }
.ambient { opacity:.23; animation:ambient-drift 16s ease-in-out infinite alternate; }
.ambient-two { animation-delay:-8s; }
.intro-art svg { animation:trophy-celebrate 4.5s ease-in-out infinite; }
.intro-ring { border-color:#e8c58a50; box-shadow:0 0 55px #d7a95614,inset 0 0 25px #d7a9560d; animation:ring-turn 16s linear infinite; }
.intro-ring::before { content:""; position:absolute; width:7px; height:7px; border-radius:50%; top:-4px; left:50%; background:var(--gold-pale); box-shadow:0 0 12px 3px #ffe2a785; }
.ring-two { border-color:#e8c58a30; animation-duration:11s; animation-direction:reverse; }
.ring-two::before { width:5px; height:5px; top:-3px; }
.intro-title em { background:linear-gradient(110deg,#b8863d 10%,#ecc889 35%,#fff8df 48%,#ecc889 61%,#b8863d 90%); background-size:260% 100%; background-clip:text; -webkit-background-clip:text; color:transparent; animation:title-gold-flow 5s ease-in-out infinite; }
.preparation:not([hidden]) .track-preview>div { animation:honor-arrive .8s ease both; }
.preparation:not([hidden]) .track-preview>div:last-child { animation-delay:.16s; }
#awards-start:not(:disabled),#awards-next:not(:disabled) { animation:button-glow 3s ease-in-out infinite; }
[data-phase="suspense"] #award-countdown { animation:countdown-beat var(--countdown-step,800ms) ease-out infinite; }
.reveal-waves { position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:-1; }
.reveal-waves::before,.reveal-waves::after { content:""; position:absolute; top:45%; left:50%; width:min(380px,65vw); aspect-ratio:1; border:2px solid #f3d18d90; border-radius:50%; box-shadow:0 0 45px #ecc88930,inset 0 0 45px #ecc88918; opacity:0; }
[data-phase="revealed"] .reveal-waves::before { animation:reveal-wave 2s ease-out both; }
[data-phase="revealed"] .reveal-waves::after { animation:reveal-wave 2s .25s ease-out both; }
[data-phase="revealed"] #award-app-name { animation:winner-title-reveal .6s ease both,title-radiance 1.8s ease-out both; }
[data-phase="revealed"] .stage-rays,[data-phase="finale"] .stage-rays { opacity:1; animation-duration:30s; }
.awards-finale:not([hidden])>h1 { animation:finale-title 1s ease-out both; }
.awards-finale:not([hidden]) .honors li { animation:honor-arrive .75s cubic-bezier(.2,.7,.25,1) both; animation-delay:var(--honor-delay,0ms); }
@keyframes spotlight-sweep { from { transform:rotate(-22deg) translateX(-8%); opacity:.35; } to { transform:rotate(25deg) translateX(12%); opacity:1; } }
@keyframes ambient-drift { to { transform:translate(5vw,4vh) scale(1.15); } }
@keyframes trophy-celebrate { 0%,100% { transform:translateY(0) rotate(-2deg); filter:drop-shadow(0 5px 20px #e6b94e40); } 50% { transform:translateY(-12px) rotate(2deg); filter:drop-shadow(0 8px 38px #ffe0a47a); } }
@keyframes title-gold-flow { 0%,100% { background-position:100% 0; } 50% { background-position:0 0; } }
@keyframes button-glow { 0%,100% { box-shadow:0 8px 30px #e9bc6720; } 50% { box-shadow:0 8px 48px #e9bc6755; } }
@keyframes countdown-beat { from { transform:translate(-50%,-50%) scale(1.28); box-shadow:0 0 45px #ecc88970; } to { transform:translate(-50%,-50%) scale(1); box-shadow:0 0 8px #ecc88910; } }
@keyframes reveal-wave { from { opacity:.8; transform:translate(-50%,-50%) scale(.35); } to { opacity:0; transform:translate(-50%,-50%) scale(2.7); } }
@keyframes title-radiance { from { text-shadow:0 0 34px #ffdf9999; } to { text-shadow:0 0 0 transparent; } }
@keyframes finale-title { from { opacity:0; filter:blur(8px); } to { opacity:1; filter:blur(0); } }
@keyframes honor-arrive { from { opacity:0; transform:translateY(22px); } to { opacity:1; transform:translateY(0); } }
@media(min-width:1400px) and (min-height:850px) { .awards-stage { margin-top:3vh; }.awards-scene { min-height:590px; } }
@media(max-height:800px) and (min-width:900px) { .awards-header { padding-top:15px; padding-bottom:15px; }.awards-scene { min-height:400px; }.award-heading h1 { font-size:48px; }#award-image { max-height:29vh; }#award-app-name { font-size:30px; }.stage-controls { margin-top:8px; }.awards-footer { padding:16px; } }
@media(max-width:700px) { .awards-header { padding:18px 20px; }.awards-brand { font-size:13px; gap:9px; }.brand-mark { width:34px; height:34px; }.header-actions { gap:10px; }.quiet-link { display:none; }.header-actions .quiet-button { font-size:11px; }.icon-button { width:38px; height:38px; }.preparation { margin-top:20px; }.intro-art { transform:scale(.85); margin-bottom:10px; }.track-preview { gap:22.5px; }.track-preview>div { display:flex; flex:1; flex-direction:column; text-align:center; gap:10.5px; }.track-preview span { font-size:33px; }.track-preview small { font-size:13.5px; }.preparation-actions { flex-direction:column; gap:5px; }.preparation-actions .gold-button { width:min(320px,100%); }.awards-stage { padding:0 18px; margin-top:15px; }.stage-meta { flex-wrap:wrap; gap:12px; }.track-label { font-size:11px; padding:6px 12px; }.progress { order:3; width:100%; justify-content:center; margin:5px 0 14px; }.progress span { width:24px; }.awards-scene { min-height:430px; }.award-heading h1 { font-size:48px; }.award-envelope { transform:scale(.85); margin:0 auto; }.award-winner { margin-top:18px; }#award-image { max-width:calc(100vw - 40px); max-height:35vh; }.stage-controls { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:4px 12px; }.stage-controls .gold-button { width:100%; min-width:0; font-size:15px; }.stage-controls>.quiet-button { font-size:12px; }#awards-previous { grid-area:1 / 1; justify-self:start; }#awards-next { grid-area:2 / 1 / 3 / -1; }#awards-sound-toggle { grid-area:1 / 2; justify-self:end; }.honors { grid-template-columns:1fr; gap:24px; }.honors li { min-height:96px; gap:14px; padding:18px; }.honors b { font-size:14px; width:60px; }.honors span { font-size:17px; }.awards-footer { font-size:8px; }.login-panel { margin-top:4vh; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }.reveal-flash,.stage-rays,.reveal-waves,.ceremony-beams,#awards-atmosphere { display:none; } }

.award-developer { margin:0 auto 22px; max-width:1000px; color:#c1cad8; font-size:clamp(14px,1.5vw,21px); line-height:1.7; overflow-wrap:anywhere; }
.award-developer:empty,.honor-developer:empty { display:none; }
.honor-project { min-width:0; }
.honor-developer { display:block; margin-top:6px; color:#aab6c8; font-size:13px; line-height:1.65; overflow-wrap:anywhere; }
