:root{--ink:#05040a;--edge:#7d6bd6;--box:#1d1640;--box-2:#2c2268;--text:#f4eeff;--muted:#b3a9dc;--gold:#ffd23f;--eye:#b8f04a;--pink:#ff8fab;--fish:#9ad7ff;--blue:#5ec8ff;--green:#7bd389;--shadow:rgba(0,0,0,0.55);--tile-correct:#4fb069;--tile-present:#e8a800;--tile-absent:#3a3458;--u:4px}*{box-sizing:border-box}html,body{margin:0;min-height:100%}html{background:#07061a}.invite-page [hidden]{display:none!important}body.invite-page{font-family:"VT323",ui-monospace,monospace;font-size:22px;line-height:1.2;color:var(--text);background:linear-gradient(#07061a 0 16%,#0c0a25 16% 32%,#120e33 32% 48%,#181342 48% 64%,#1f1852 64% 80%,#281f63 80%) fixed;overflow-x:hidden;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:none}.invite-page a{color:inherit}.invite-page h1,.invite-page h2,.invite-page h3{font-weight:400}.invite-page code{font-family:inherit;color:var(--gold)}.px,.px-box img{image-rendering:pixelated;image-rendering:crisp-edges;display:block}i.pxi{display:inline-block;vertical-align:-0.1em;font-style:normal}i.pxi .px{display:inline-block}.px-box{background:var(--box);box-shadow:0 calc(-1 * var(--u)) 0 0 var(--edge),0 var(--u) 0 0 var(--edge),calc(-1 * var(--u)) 0 0 0 var(--edge),var(--u) 0 0 0 var(--edge),inset var(--u) var(--u) 0 0 rgba(255,255,255,0.05),calc(3 * var(--u)) calc(3 * var(--u)) 0 0 var(--shadow)}.scene{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.scene .px{position:absolute}.scene .dot{position:absolute;width:2px;height:2px;background:#fff;opacity:.35;animation:blink-star 3s steps(1) infinite}.scene .dot.big{width:4px;height:4px}@keyframes blink-star{50%{opacity:1}}.scene .twinkle{animation:twinkle 1.6s steps(1) infinite}@keyframes twinkle{50%{opacity:.25;transform:scale(0.5)}}.scene .moon{top:7vh;right:8vw;filter:drop-shadow(0 0 18px rgba(255,236,160,0.45));animation:moon-bob 3s steps(2) infinite}@keyframes moon-bob{50%{transform:translateY(-4px)}}.scene .cloud{animation:drift linear infinite;animation-timing-function:steps(300);opacity:.85}.scene .c1{top:14vh;animation-duration:80s;animation-delay:-20s}.scene .c2{top:30vh;animation-duration:110s;animation-delay:-70s}.scene .c3{top:46vh;animation-duration:140s;animation-delay:-35s;opacity:.6}@keyframes drift{from{left:-120px}to{left:105vw}}.scene .roofs{position:absolute;left:0;right:0;bottom:0;height:136px;background-size:320px 136px;background-repeat:repeat-x;background-position:bottom left;image-rendering:pixelated}.scene .firefly{position:absolute;width:4px;height:4px;background:var(--eye);box-shadow:0 0 0 2px rgba(184,240,74,0.25),0 0 10px 2px rgba(184,240,74,0.45);animation:firefly 7s steps(14) infinite}@keyframes firefly{0%,100%{transform:translate(0,0);opacity:1}25%{transform:translate(16px,-20px);opacity:.2}50%{transform:translate(-8px,-36px);opacity:1}75%{transform:translate(-20px,-12px);opacity:.3}}main{position:relative;z-index:1}.topbar{position:fixed;top:0;left:0;right:0;z-index:70;display:flex;justify-content:space-between;padding:max(14px,env(safe-area-inset-top)) 16px 0;pointer-events:none}.chip{pointer-events:auto;display:inline-flex;align-items:center;gap:8px;padding:2px 10px;border:0;background:var(--box);color:var(--muted)!important;font:inherit;font-size:1.05rem;text-decoration:none;cursor:pointer;box-shadow:0 -4px 0 0 var(--edge),0 4px 0 0 var(--edge),-4px 0 0 0 var(--edge),4px 0 0 0 var(--edge)}.chip:hover{color:var(--text)!important;background:var(--box-2)}#btn-sound{padding:6px 8px}#btn-sound .off,#btn-sound.muted .on{display:none}#btn-sound.muted .off{display:inline-block}.eyebrow{margin:0 0 .2rem;font-size:1.05rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}.title{margin:.2rem 0;font-size:clamp(2.1rem,7vw,3rem);line-height:1}.lead{margin:.5rem 0;font-size:1.35rem}.lead em{font-style:normal;color:var(--eye)}.invite-page strong{font-weight:400;color:var(--gold)}.muted{color:var(--muted)}.btn{display:inline-flex;align-items:center;gap:.5rem;margin:var(--u);padding:.35rem 1rem;font:inherit;font-size:1.4rem;color:var(--text)!important;background:var(--box-2);border:0;text-decoration:none;cursor:pointer;box-shadow:0 -4px 0 0 var(--ink),0 4px 0 0 var(--ink),-4px 0 0 0 var(--ink),4px 0 0 0 var(--ink),inset -4px -4px 0 0 rgba(0,0,0,0.25),inset 4px 4px 0 0 rgba(255,255,255,0.1),8px 8px 0 0 var(--shadow)}.btn.primary{background:var(--gold);color:var(--ink)!important}.btn.game{background:#7a5fd6}.btn:hover{transform:translate(-2px,-2px);background-color:#3b2f86}.btn.primary:hover{background:#ffe066}.btn.game:hover{background:#8d74ea}.btn:active{transform:translate(4px,4px);box-shadow:0 -4px 0 0 var(--ink),0 4px 0 0 var(--ink),-4px 0 0 0 var(--ink),4px 0 0 0 var(--ink),inset 4px 4px 0 0 rgba(0,0,0,0.25)}.btn.small{padding:.1rem .7rem;font-size:1.15rem}.btn:focus-visible,.skip:focus-visible,.link-btn:focus-visible,.chip:focus-visible{outline:4px dashed var(--eye);outline-offset:6px}.skip,.link-btn{background:0;border:0;color:var(--muted);font:inherit;font-size:1.2rem;cursor:pointer;padding:0}
.skip:hover,.link-btn:hover{color:var(--gold);text-decoration:underline}.confetti{position:fixed;inset:0;z-index:200;pointer-events:none}.stage-lock{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:max(10vh,4.2rem) 1.2rem 9.5rem;gap:1.3rem;transition:opacity .45s steps(5)}.stage-lock.leaving{opacity:0}.lock-card{max-width:560px;width:100%;text-align:center;padding:1rem 1.4rem;cursor:default}.fish-meter{display:flex;justify-content:center;gap:14px;margin:.7rem 0 .4rem}.pip{width:44px;height:44px;display:grid;place-items:center;background:var(--box-2);box-shadow:0 -4px 0 0 var(--ink),0 4px 0 0 var(--ink),-4px 0 0 0 var(--ink),4px 0 0 0 var(--ink)}.pip .px{opacity:.25;filter:grayscale(1)}.pip.full{background:#1d4f86;animation:pip-pop .3s steps(3)}.pip.full .px{opacity:1;filter:none}@keyframes pip-pop{50%{transform:scale(1.3)}}.hint{margin:.3rem 0 0;font-size:1.05rem;color:var(--muted)}@media(hover:none){#lock-play .hint{display:none}}.lock-status{margin:0;font-size:1.5rem;color:var(--gold);min-height:1.2em}.skip{margin-top:auto}.fish-layer{position:fixed;inset:0;z-index:40;pointer-events:none}.fish{position:absolute!important;transform:translate(-50%,-50%);pointer-events:auto;cursor:pointer;filter:drop-shadow(0 0 8px rgba(154,215,255,0.75));animation:fish-bob 1s steps(2) infinite}.fish.wiggle{animation:fish-wiggle .5s steps(4) 2,fish-bob 1s steps(2) infinite 1s}.fish.eaten{animation:fish-eat .4s steps(4) forwards;pointer-events:none}@keyframes fish-bob{50%{transform:translate(-50%,calc(-50% - 8px))}}@keyframes fish-wiggle{25%{transform:translate(calc(-50% - 8px),-50%)}75%{transform:translate(calc(-50%+8px),-50%)}}@keyframes fish-eat{to{transform:translate(-50%,-150%) scale(0.2);opacity:0}}.envelope{margin-top:.4rem;filter:drop-shadow(8px 8px 0 var(--shadow));animation:env-wiggle 2.4s steps(1) infinite}@keyframes env-wiggle{0%,76%,100%{transform:none}80%{transform:translateX(-8px)}86%{transform:translateX(8px)}92%{transform:translateX(-4px)}}.envelope.opened{animation:env-open .5s steps(3)}@keyframes env-open{50%{transform:translateY(-24px)}}.envelope.broken{animation:none;filter:grayscale(0.8) brightness(0.6)}.stage-invite{max-width:860px;margin:0 auto;padding:4.4rem 1.2rem 11rem;display:flex;flex-direction:column;gap:1.8rem;animation:rise .5s steps(5)}@keyframes rise{from{opacity:0;transform:translateY(40px)}}.hero{text-align:center;padding:1.6rem 1.4rem 1.8rem;position:relative}.hero .corner{position:absolute;top:-18px}.hero .corner.left{left:-14px}.hero .corner.right{right:-10px;top:-22px}.dear{margin:.3rem 0 0;font-size:1.5rem;color:var(--muted)}.guest{margin:.1rem 0 .4rem;font-size:clamp(2.8rem,10vw,4.8rem);line-height:.95;color:var(--gold);word-break:break-word;text-shadow:3px 0 0 var(--ink),-3px 0 0 var(--ink),0 3px 0 var(--ink),0 -3px 0 var(--ink),6px 6px 0 #5b45b0}.banner{display:inline-block;margin-top:.6rem;padding:.2rem 1.2rem;font-size:1.55rem;background:var(--gold)!important;color:var(--ink)}.banner strong{color:#7a2e00!important}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}.tick{text-align:center;padding:.4rem .2rem .3rem}.tick span{display:block;font-size:clamp(2.6rem,9vw,4rem);line-height:.9;color:var(--gold)}.tick small{font-size:1.05rem;letter-spacing:.1em;color:var(--muted)}.countdown-done{text-align:center;font-size:2rem;margin:0;color:var(--gold)}.details{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:2.4rem 1.2rem;margin-top:1.4rem}.detail{padding:1rem .9rem;text-align:center}.detail:hover{transform:translateY(-4px)}.detail.highlight{background:#2f2560}.detail-icon{width:60px;height:60px;margin:-2.5rem auto .5rem;display:grid;place-items:center;background:var(--blue)!important}.detail:nth-child(2) .detail-icon{background:var(--pink)!important}.detail:nth-child(3) .detail-icon{background:var(--gold)!important}.detail:nth-child(4) .detail-icon{background:var(--green)!important}.detail h2{margin:0;font-size:1.5rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.detail p{margin:.2rem 0;font-size:1.45rem;color:var(--gold)}.detail small{font-size:1.1rem;color:var(--muted)}.actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.9rem}.feed-count{text-align:center;margin:-0.6rem 0 0;font-size:1.3rem;min-height:1.2em;color:var(--fish)}.letter{margin:0 auto;max-width:640px;width:100%;padding:12px;text-align:center}.letter img{width:100%;height:auto;image-rendering:auto}.letter figcaption{margin-top:10px;color:var(--muted);font-size:1.15rem}.sign{text-align:center;padding:1.1rem}.sign p{margin:.2rem 0;font-size:1.4rem}.signature{font-size:2rem!important;color:var(--gold)}.cat{position:fixed;left:0;top:0;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;will-change:transform}.cat-flip{position:relative;filter:drop-shadow(0 0 6px rgba(125,107,214,0.55))}.cat-sprite{display:block}.cat.bob .cat-flip{translate:0 -4px}.cat-shadow{position:absolute;z-index:-1;left:50%;bottom:-6px;width:72px;height:8px;margin-left:-36px;background:var(--shadow);clip-path:polygon(8px 0,calc(100% - 8px) 0,calc(100% - 8px) 2px,100% 2px,100% 6px,calc(100% - 8px) 6px,calc(100% - 8px) 100%,8px 100%,8px 6px,0 6px,0 2px,8px 2px)}
.cat.jump .cat-flip{animation:hop .4s steps(4)}@keyframes hop{50%{translate:0 -28px}}.cat-bubble{position:absolute;z-index:5;bottom:calc(100%+34px);left:50%;transform:translateX(-50%);padding:.05rem .7rem;width:max-content;max-width:min(260px,80vw);text-align:center;font-size:1.3rem;background:#fff8e7!important;color:var(--ink);pointer-events:none}.cat-bubble::after{content:"";position:absolute;top:calc(100%+4px);left:50%;width:8px;height:8px;margin-left:calc(-4px - var(--shift,0));background:var(--edge);box-shadow:4px 8px 0 0 var(--edge),0 16px 0 0 var(--edge)}.cat-bubble.pop{animation:bubble-pop .24s steps(3)}@keyframes bubble-pop{from{transform:translateX(-50%) scale(0.3)}}.cat-zzz{position:absolute;z-index:5;right:18%;top:-8px;display:none;pointer-events:none}.cat.sleeping .cat-zzz{display:block}.cat-zzz span{position:absolute;color:var(--muted);font-size:1.3rem;opacity:0;animation:zzz 3s steps(6) infinite}.cat-zzz span:nth-child(2){animation-delay:1s;font-size:1.5rem}.cat-zzz span:nth-child(3){animation-delay:2s;font-size:1.8rem}@keyframes zzz{0%{opacity:0;transform:translate(0,0)}30%{opacity:1}100%{opacity:0;transform:translate(20px,-40px)}}.cat-paws{position:fixed;inset:0;z-index:30;pointer-events:none}.cat-paw{position:absolute;width:6px;height:4px;background:rgba(125,107,214,0.6);box-shadow:-4px -4px 0 -1px rgba(125,107,214,0.6),2px -6px 0 -1px rgba(125,107,214,0.6),8px -4px 0 -1px rgba(125,107,214,0.6);animation:fade 1.8s steps(4) forwards}@keyframes fade{to{opacity:0}}.word-modal{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(5,4,10,0.8)}.word-game{position:relative;width:100%;max-width:440px;max-height:calc(100% - 16px);overflow-y:auto;padding:18px 16px 16px;text-align:center;animation:rise .3s steps(3)}.word-game-title{margin:0 0 6px;font-size:2rem}.word-game-help{margin:0 0 10px;font-size:1.05rem;color:var(--muted);line-height:1.5}.tile-hint{display:inline-block;width:1.3em;color:#fff;text-align:center}.tile-hint.correct{background:var(--tile-correct)}.tile-hint.present{background:var(--tile-present)}.tile-hint.absent{background:var(--tile-absent)}.word-close{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;background:var(--box-2);cursor:pointer}.word-close:hover{background:#ff3d5a}.word-game-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.word-game-timer{display:inline-flex;gap:8px;align-items:center;font-size:1.4rem;color:var(--gold)}.word-grid{display:grid;justify-content:center;gap:8px}.word-row{display:grid;grid-template-columns:repeat(5,48px);gap:8px}.word-row.shake{animation:shake .4s steps(4)}.word-tile{display:grid;place-items:center;height:48px;font-size:2rem;text-transform:uppercase;background:#120e33;box-shadow:inset 0 0 0 4px #3a3458}.word-tile.filled{box-shadow:inset 0 0 0 4px var(--edge);animation:pip-pop .15s steps(2)}.word-tile.correct,.word-tile.present,.word-tile.absent{box-shadow:none;color:#fff}.word-tile.correct{background:var(--tile-correct)}.word-tile.present{background:var(--tile-present)}.word-tile.absent{background:var(--tile-absent)}.word-tile.flip{animation:flip .5s steps(4) both}@keyframes flip{50%{transform:scaleY(0.1)}}@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}.word-message{min-height:1.3em;margin:10px 0 6px;font-size:1.4rem;color:var(--gold)}.word-keyboard{display:grid;gap:6px}.word-key-row{display:flex;justify-content:center;gap:5px}.word-key{flex:1;max-width:38px;height:48px;padding:0;border:0;background:var(--box-2);color:var(--text);font:inherit;font-size:1.4rem;cursor:pointer;touch-action:manipulation;box-shadow:inset -3px -3px 0 0 rgba(0,0,0,0.3)}.word-key.wide{max-width:62px;flex:1.5;font-size:1.1rem}.word-key:active{transform:translateY(3px);box-shadow:none}.word-key.correct{background:var(--tile-correct)}.word-key.present{background:var(--tile-present)}.word-key.absent{background:var(--tile-absent);color:rgba(255,255,255,0.45)}.word-result{margin-top:12px}.word-result p{margin:0 0 8px;font-size:1.3rem}.word-result-note{margin-top:8px!important;font-size:1.05rem!important;color:var(--muted)}.admin{max-width:780px;margin:0 auto;padding:4.6rem 1.2rem 11rem;display:flex;flex-direction:column;gap:1.8rem}.admin-head{text-align:center;padding:1.2rem 1.4rem}.admin-head .title .px{display:inline-block}.admin-head p{margin:.4rem 0 0;color:var(--muted);font-size:1.25rem;word-break:break-all}.panel{padding:1.1rem 1.3rem 1.3rem}.panel h2{margin:0 0 .2rem;font-size:1.9rem;display:flex;align-items:center;gap:10px;color:var(--gold)}.panel>p{margin:0 0 1rem;font-size:1.15rem}.field{display:block;margin-bottom:1rem}.field>span{display:block;margin-bottom:.4rem;font-size:1.1rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.px-input{width:100%;padding:.35rem .7rem;border:0;background:#0c0a25;color:var(--text);font:inherit;font-size:1.4rem;box-shadow:inset 0 0 0 4px var(--edge)}
textarea.px-input{min-height:140px;resize:vertical;margin-bottom:.8rem}.px-input:focus{outline:0;box-shadow:inset 0 0 0 4px var(--gold)}.mode{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;margin:0 4px 1.2rem}.mode label{display:block;padding:.7rem .9rem;cursor:pointer}.mode label:has(input:checked){background:#3a2d78;box-shadow:0 -4px 0 0 var(--gold),0 4px 0 0 var(--gold),-4px 0 0 0 var(--gold),4px 0 0 0 var(--gold),8px 8px 0 0 var(--shadow)}.mode input{accent-color:var(--gold);margin:0 6px 0 0}.mode b{font-weight:400;font-size:1.4rem}.mode small{display:block;margin-top:.3rem;color:var(--muted);font-size:1.05rem;line-height:1.25}.drop{display:flex;align-items:center;gap:14px;margin-bottom:1.1rem;padding:.7rem .9rem;cursor:pointer;color:var(--muted);outline:4px dashed var(--edge);outline-offset:-4px;font-size:1.15rem}.drop:hover,.drop.over{outline-color:var(--gold);background:rgba(255,210,63,0.08)}.drop input{display:none}.drop img.preview{width:56px;height:56px;object-fit:cover}.drop b{font-weight:400;color:var(--text)}.row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.row .grow{flex:1}.note{margin:.8rem 0 0;font-size:1.2rem;color:var(--eye);min-height:1.2em}.note.warn{color:var(--gold)}.note b{font-weight:400;color:var(--text)}.guests{list-style:none;padding:0;margin:1.2rem 0 0;display:grid;gap:.8rem}.guests li{display:grid;grid-template-columns:1fr auto;gap:.4rem .8rem;align-items:center;padding:.4rem .7rem;background:#0c0a25;box-shadow:inset 0 0 0 4px #3a3458}.guests li.empty{display:block;text-align:center;color:var(--muted);box-shadow:none;background:0}.guests .who{min-width:0}.guests .who b{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-weight:400;font-size:1.4rem}.guests .url{display:block;font-size:1.05rem;color:var(--fish);word-break:break-all;text-decoration:none}.guests .tools{display:flex;gap:4px}.guests .tools .btn{padding:.35rem .5rem}.tag{display:inline-flex;align-items:center;gap:4px;padding:0 6px;font-size:1rem;background:#3a3458;color:var(--text)}.tag.secret{background:#6b4e00;color:var(--gold)}.tag.live{background:#1f5a2b;color:#a9f0b5}.tag.pending{background:#6b1f33;color:var(--pink)}@media(max-width:560px){body.invite-page{font-size:20px}.countdown{gap:.7rem}.btn{font-size:1.25rem;padding:.3rem .8rem}.scene .roofs{height:102px;background-size:240px 102px}.word-row{grid-template-columns:repeat(5,44px)}.word-tile{height:44px}.mode{grid-template-columns:1fr}.guests li{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}