@import url('https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap');
@font-face{font-family:Minecraft;src:url('/assets/vendor/minecraft.woff2') format('woff2');font-display:swap}
:root{color-scheme:dark;--bg:#030308;--white:#f0ecf1;--voice-a:#a5d7f1;--voice-b:#a8dbac;--purple:#c6b1ee;--gold:#efd2a6;--pixel:Minecraft,'Courier New',monospace;--mono:'Space Mono',monospace}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:auto}
body{margin:0;background:var(--bg);color:var(--white);font-family:var(--pixel);overflow-x:hidden;line-height:1.75}
body.gate-locked{overflow:hidden;height:100svh}
body.gate-locked .end-header{visibility:hidden}
.entry-gate{position:fixed;inset:0;z-index:60;overflow-y:auto;display:flex;align-items:center;justify-content:center;padding:32px 22px;background:radial-gradient(ellipse at 50% 37%,#231534,#070813 59%,#030308 100%);isolation:isolate}
.gate-background-stars{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.55;background-image:radial-gradient(#cbb2f6 1px,transparent 1.4px),radial-gradient(#eee9f5 .8px,transparent 1px);background-size:130px 155px,211px 177px;background-position:22px 17px,55px 76px}
.gate-content{display:flex;flex-direction:column;align-items:center;max-width:610px;width:100%;text-align:center}
.gate-content>img{width:clamp(180px,35vw,295px);height:auto;max-height:115px;object-fit:contain}
.gate-season{font:700 10px/1.6 var(--mono);letter-spacing:2.7px;color:#b9a3d7;margin-top:12px}
.gate-sigil{font-size:37px;color:#d1b1f8;margin:33px 0 8px;text-shadow:0 0 25px #c69af6}
.gate-content h1{font:400 clamp(26px,4.5vw,46px)/1.45 var(--pixel);margin:12px 0 17px;color:#f5eafd;text-shadow:0 0 38px #d9b6f830}
.gate-description{font:400 clamp(15px,1.6vw,18px)/1.8 var(--pixel);max-width:520px;color:#c6b8d5;margin:0 auto 29px}
#nick-entry-form{width:min(100%,485px);display:flex;flex-direction:column;align-items:stretch;gap:11px}
#nick-entry-form label{font:700 11px/1.5 var(--mono);letter-spacing:2px;text-align:left;color:#bca1e1}
#nick-entry{width:100%;border:1px solid #d8c7ed7a;background:#090913;color:#f6ecfa;padding:19px 20px;outline:none;border-radius:0;font:400 clamp(17px,2vw,24px)/1.4 var(--pixel);text-align:center;box-shadow:0 0 35px #ab85e21a}
#nick-entry:focus{border-color:#e2c3fa;box-shadow:0 0 0 2px #d8aef033,0 0 50px #b18bed26}
#nick-entry::placeholder{color:#73687e}
.gate-feedback{min-height:20px;margin:0;text-align:center;color:#f2b7b5;font:400 12px/1.5 var(--mono)}
#nick-entry-form>button,.gate-identity>button:not(.gate-secondary){width:100%;padding:17px 18px;border:1px solid #f8e1ff;background:#e8cafa;color:#160c21;cursor:pointer;font:700 11px/1.6 var(--mono);letter-spacing:1.1px}
#nick-entry-form>button span,.gate-identity>button span{padding-left:10px}
#nick-entry-form>button:disabled{opacity:.6;cursor:wait}
.gate-identity{width:min(100%,515px);margin-top:18px}
.gate-answer{color:#f4d8aa;font:400 clamp(17px,2vw,22px)/1.9 var(--pixel);margin:0 0 23px;overflow-wrap:anywhere;text-shadow:0 0 30px #f2bf9a40}
.gate-identity .gate-secondary{display:block;background:none;color:#aa9db9;border:0;cursor:pointer;text-decoration:underline;margin:12px auto;font:700 11px var(--mono)}
.gate-content>small{font:400 10px/1.9 var(--mono);max-width:470px;color:#91849f;margin-top:25px}
.entry-gate button:hover{filter:brightness(1.12)}
.entry-gate button:focus-visible,.entry-gate input:focus-visible{outline:2px solid #e7bfff;outline-offset:3px}
@media(max-height:740px){.entry-gate{align-items:flex-start}.gate-sigil{margin-top:12px}.gate-content>img{max-height:79px}.gate-content h1{font-size:clamp(23px,3vw,35px)}}
body:before{content:'';z-index:-2;position:fixed;inset:0;background:radial-gradient(ellipse at 50% 25%,#111022 0%,#080811 55%,#030308 100%)}
body:after{content:'';z-index:15;position:fixed;pointer-events:none;inset:0;background:linear-gradient(180deg,#030308a6,transparent 16%,transparent 78%,#03030877)}
[hidden]{display:none!important}
a{color:inherit}
button{font:inherit}
a:focus-visible,button:focus-visible{outline:2px solid var(--purple);outline-offset:5px}
.end-sky{position:fixed;inset:0;pointer-events:none;z-index:-1;opacity:.5;background-image:radial-gradient(circle,#d4c6ec 1px,transparent 1.5px),radial-gradient(circle,#92a8cb .8px,transparent 1px),radial-gradient(circle,#fff9d2 1px,transparent 1px);background-size:161px 193px,107px 229px,277px 171px;background-position:15px 30px,95px 76px,45px 140px}
.end-header{height:108px;position:fixed;z-index:20;inset:0 0 auto;display:flex;align-items:center;justify-content:center;pointer-events:none;background:linear-gradient(180deg,#030308 17%,#030308d9 64%,transparent);padding:12px}
.end-header a{display:block;pointer-events:auto;line-height:0;transition:filter .2s}
.end-header a:hover{filter:brightness(1.2)}
.end-header img{width:clamp(180px,23vw,280px);height:93px;object-fit:contain;filter:drop-shadow(0 0 20px #0008)}
main{position:relative;z-index:1}
.end-prologue{text-align:center;max-width:900px;margin:0 auto;padding:165px 20px 90px}
.end-date,.tiny-title{font:700 11px/2 var(--mono);letter-spacing:3px;color:#a79cbd}
.end-prologue h1{font:400 clamp(22px,4vw,48px)/1.45 var(--pixel);letter-spacing:1.6px;color:#eae4f1;margin:27px 0 19px;text-shadow:0 0 32px #c6aae940}
.end-prologue>p{font:400 clamp(15px,2vw,22px)/1.8 var(--pixel);color:var(--gold);margin:0}
.end-diamond{display:block;margin-top:65px;font-size:35px;color:#bea9e0;filter:drop-shadow(0 0 20px #d9b6ff77)}
.end-poem{width:min(890px,100%);padding:0 clamp(23px,6vw,85px);margin:0 auto}
.roll-conversation{max-width:100%;margin:0;text-align:left}
.poem-signal{font:700 10px/2 var(--mono);letter-spacing:2.6px;color:#b29cdd;text-align:center;margin:0 0 135px}
.roll-conversation p{font:400 clamp(17px,1.65vw,22px)/1.9 var(--pixel);margin:0 0 clamp(62px,9vw,115px);overflow-wrap:break-word;letter-spacing:.25px}
.roll-conversation .voice-one{color:var(--voice-a);padding-right:6%}
.roll-conversation .voice-two{color:var(--voice-b);margin-left:8%}
.speaker{display:block;margin-bottom:12px;font:700 10px/1.5 var(--mono);letter-spacing:3px;opacity:.7}
.poem-player-name{color:#f6d9a9;text-shadow:0 0 24px #efd5a967;font-weight:400}
.poem-pause{color:#9c8ab9;text-align:center;padding:36px 0 145px;font-size:21px;letter-spacing:10px}
.poem-truth{text-align:center;margin:130px -8px 160px;padding:64px 10px;border-top:1px solid #d1b4fd44;border-bottom:1px solid #d1b4fd44}
.poem-truth span{font:700 10px/2 var(--mono);letter-spacing:2px;color:#b7a2db}
.roll-conversation .poem-truth p{font:400 clamp(16px,1.5vw,20px)/2.1 var(--pixel);margin:39px 0 42px;color:#cac0d7}
.poem-truth strong{display:block;font:400 clamp(18px,2vw,26px)/2 var(--pixel);color:#f3d5a8;text-shadow:0 0 28px #ffd5a22d}
.end-staff,.end-roster,.end-personal{padding:210px 24px 50px;text-align:center;max-width:1000px;margin:auto}
.end-staff h2,.end-roster h2{font:400 clamp(21px,3vw,36px)/1.6 var(--pixel);color:#eedff1;margin:28px auto}
.end-staff p,.end-roster>p,.end-personal>p{max-width:660px;margin:0 auto;color:#a9a1b8;font:400 clamp(15px,1.5vw,20px)/1.9 var(--pixel)}
.end-staff-next{display:block;margin:100px auto 24px;color:#b7d5a9}
.end-roster{padding-top:270px}
.end-roster h2{color:var(--gold)}
.end-roster #credits-status{font:400 13px/1.8 var(--mono);margin:15px auto 60px;color:#afa6bd}
.name-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px 14px}
.name-grid span{font:400 clamp(12px,1.2vw,16px)/1.5 var(--pixel);padding:11px 1px;overflow-wrap:anywhere;color:#dad3e3}
.name-grid span:nth-child(4n+2){color:#bca8df}
.name-grid span.is-you{color:#ffdb9b;outline:1px solid #e2c59655;background:#e2c5960f;text-shadow:0 0 24px #ffe3a369}
.end-roster .roster-note{font:400 11px/1.9 var(--mono);color:#777284;margin:60px auto 0}
.end-personal{padding:180px 20px 50px}
.end-personal strong{display:block;margin:28px 0 35px;color:var(--gold);font:400 clamp(24px,4vw,44px)/1.6 var(--pixel);overflow-wrap:anywhere}
.end-finale{text-align:center;max-width:1050px;margin:auto;padding:240px 25px 230px;min-height:85svh}
.last-star{font-size:46px;color:#d9c6f2;margin-bottom:20px;text-shadow:0 0 34px #d5a9f9}
.final-lesson{font:400 clamp(22px,3vw,39px)/1.7 var(--pixel);max-width:850px;margin:35px auto;color:var(--gold)}
.personal-thanks{font:400 16px/2 var(--pixel);color:#e6d3f4;margin:40px 0}
.personal-thanks strong{font-weight:400;color:#fff0b8}
.three-hearts{color:#d9a8b3;letter-spacing:18px;margin:32px 0;font-size:28px}
.final-separator{max-width:250px;height:1px;background:#d6beec4b;margin:125px auto 75px}
.end-finale h2{font:400 clamp(26px,4.4vw,59px)/1.5 var(--pixel);margin:0;color:#fff7f2}
.end-finale h2 span{display:block;color:#d7b7ff;text-shadow:0 0 35px #ba82ef66}
.coming-soon{font:700 11px/2 var(--mono);letter-spacing:2px;color:#b9a6cc;margin:25px auto}
.discord-link{display:inline-block;margin-top:42px;padding:14px 20px;border:1px solid #cdb1f69e;background:#d7b8f414;text-decoration:none;font:700 11px/1.5 var(--mono);letter-spacing:1px;transition:background .2s}
.discord-link:hover{background:#d7b8f433}
.poem-controls{position:fixed;bottom:0;left:0;right:0;z-index:30;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;padding:9px 12px max(9px,env(safe-area-inset-bottom));background:linear-gradient(0deg,#080811fa,#090913eb);border-top:1px solid #9980bb3c;box-shadow:0 -8px 30px #02020670}
.reading-status{font:700 10px var(--mono);letter-spacing:1.5px;color:#b5a8c7;margin-right:15px}
.poem-controls button{cursor:pointer;background:#c5aae915;border:1px solid #b8a1df45;color:#ddd0e9;padding:8px 13px;font:700 10px/1.5 var(--mono);letter-spacing:.4px;transition:background .2s}
.poem-controls button:hover{background:#bea5e936}
.poem-controls button:last-child{border-color:#dfc39f70;color:#f2d6aa}
@media(max-width:650px){
  .entry-gate{padding:25px 19px}
  .gate-season{font-size:9px;letter-spacing:1.5px}
  .gate-sigil{margin-top:21px}
  .gate-content h1{font-size:clamp(26px,8vw,38px)}
  .gate-description{font-size:15px}
  .gate-answer{font-size:17px}
  .end-header{height:91px}
  .end-header img{width:192px;height:76px}
  .end-prologue{padding:144px 21px 58px}
  .end-prologue h1{font-size:clamp(19px,5.2vw,25px);overflow-wrap:anywhere}
  .end-prologue>p{font-size:17px}
  .end-diamond{margin-top:42px}
  .end-poem{padding:0 24px}
  .poem-signal{margin-bottom:90px;font-size:9px;letter-spacing:1.5px}
  .roll-conversation p{font-size:clamp(16px,4.2vw,18px);line-height:1.8;margin-bottom:72px;overflow-wrap:anywhere}
  .roll-conversation .voice-one{padding-right:2%}
  .roll-conversation .voice-two{margin-left:5%}
  .poem-pause{padding:18px 0 87px}
  .poem-truth{margin:110px -6px 100px;padding:40px 4px}
  .poem-truth strong{font-size:18px}
  .end-staff,.end-roster{padding-top:155px}
  .end-staff h2,.end-roster h2{font-size:23px}
  .end-staff p,.end-roster>p,.end-personal>p{font-size:16px}
  .name-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 6px}
  .name-grid span{font-size:12px}
  .end-finale{padding:180px 18px 170px}
  .final-lesson{font-size:26px}
  .end-finale h2{font-size:32px}
  .reading-status{display:none}
  .poem-controls{padding:8px 7px max(8px,env(safe-area-inset-bottom));gap:3px}
  .poem-controls button{font-size:9px;padding:8px 7px}
}
@media(max-width:360px){.roll-conversation p{font-size:16px}.name-grid span{font-size:11px}.poem-controls button{font-size:8px;padding:7px 5px}.end-finale h2{font-size:27px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
