:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#27302a;background:#74b9ed;font-synthesis:none;--ink:#27302a;--lime:#a6e56d;--paper:#f6f6f1}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,textarea{font:inherit}button,input{touch-action:manipulation}button{cursor:pointer;color:inherit;border:1px solid #27302a35;border-radius:7px}button:disabled{cursor:wait;opacity:.5}button:focus-visible,input:focus-visible{outline:2px solid #527c45;outline-offset:3px}[hidden]{display:none!important}
#world{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}
.intro-backdrop{position:fixed;inset:0;background:#15271818}
.lobby{position:fixed;top:50%;left:0;transform:translateY(-50%);width:42vw;padding:clamp(20px,2.4vw,40px);background:#f6f6f1f0;border:0;border-radius:0;box-shadow:0 12px 40px #17321d18;max-height:90dvh;overflow-y:auto}
.game-title{font-size:clamp(28px,3vw,42px);font-weight:600;margin:0 0 28px;letter-spacing:.025em}.lobby h2{font-size:18px;font-weight:600;margin:0 0 18px}.lobby-leaderboard{margin-bottom:26px}
.leaderboard-list{padding:0;list-style:none;margin:10px 0}.leaderboard-list li{display:flex;align-items:center;gap:10px;padding:9px 0;font-size:14px}.leaderboard-list .rank{font-size:12px;color:#737b72;width:16px}.leaderboard-list .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard-list .score{font-size:13px;font-variant-numeric:tabular-nums;color:#596650}.leaderboard-list li.self{font-weight:600;background:#ffe58f;border-radius:5px;padding-left:7px;padding-right:7px}
form label,#flag-box label{display:block;font-size:13px;font-weight:500;margin-bottom:9px}.join-row{display:flex;gap:8px}.join-row input{width:58%;border:1px solid #27302a30;border-radius:7px;background:#fff9;min-width:0;padding:12px;font-size:14px}.join-row button{flex:1;background:var(--lime);font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:space-between;padding:12px;white-space:nowrap}.join-row button span{font-size:19px}#join-status{font-size:12px;color:#687264;margin:12px 0 0}#join-status:empty{display:none}
.hud{position:fixed;inset:0;pointer-events:none}.hud button{pointer-events:auto}.standings{position:absolute;right:24px;top:24px;width:225px;background:#f6f6f1dc;border:1px solid #fff6;border-radius:10px;padding:17px}.standings-title{font-size:14px;font-weight:600;border-bottom:1px solid #27302a20;padding-bottom:10px}.standings .leaderboard-list li{padding:7px 0;font-size:13px}
.bottom-hud{position:absolute;bottom:24px;left:24px;right:24px;display:flex;justify-content:space-between;align-items:end;gap:16px}.controls{display:flex;gap:15px;padding:12px 14px;background:#f6f6f1d9;border:1px solid #fff6;border-radius:8px;flex-wrap:wrap}.controls>span{display:flex;align-items:center;gap:7px;font-size:12px;color:#596650}.controls.away{visibility:hidden}kbd{font-family:inherit;display:inline-block;background:#fff8;border:1px solid #27302a25;padding:3px 6px;font-size:12px;font-weight:500;border-radius:4px}
.shove-button{--refill:100%;position:relative;isolation:isolate;overflow:hidden;min-width:175px;background:#d9dfd5;padding:13px 20px;font-size:14px;font-weight:500;user-select:none;touch-action:none}.shove-label{position:relative;display:flex;align-items:center;justify-content:center;gap:10px}.shove-button::before{content:"";position:absolute;inset:0;background:var(--lime);clip-path:inset(0 calc(100% - var(--refill)) 0 0);z-index:-1}
.toast{position:fixed;left:50%;bottom:105px;transform:translateX(-50%);padding:10px 16px;background:#27302aeb;color:var(--paper);font-size:13px;z-index:5;border-radius:7px;text-align:center;max-width:85vw}.event-feed{position:fixed;left:24px;bottom:95px;display:flex;flex-direction:column;gap:5px;pointer-events:none}.event-feed>div{background:#f6f6f1dc;padding:7px 11px;border-radius:5px;font-size:12px;max-width:300px}
dialog{background:var(--paper);color:var(--ink);border:1px solid #fff8;border-radius:12px;box-shadow:0 16px 60px #17231835;padding:32px;width:min(450px,90vw)}dialog::backdrop{background:#17231835}.eyebrow{font-size:13px;font-weight:500;color:#687264}dialog h2{font-size:28px;line-height:1.2;font-weight:600;margin:15px 0}dialog p{font-size:14px;line-height:1.6}.dialog-close{position:absolute;right:12px;top:9px;border:0;background:none;font-size:14px}.dialog-actions{display:flex;gap:10px;margin-top:24px}.dialog-actions button,#copy-flag{background:var(--lime);padding:10px 13px;font-size:13px;font-weight:500}.dialog-actions button:last-child{background:transparent}#flag-box{margin-top:24px}#flag-output{width:100%;resize:none;background:white;border:1px solid #27302a30;border-radius:6px;padding:10px;font:13px monospace;color:var(--ink);margin-bottom:10px}.unsupported{font-size:13px;line-height:1.6;padding:12px;background:#ffe1a9;border:1px solid #27302a30;border-radius:7px;margin-top:20px}
@media(max-width:900px){.controls{gap:9px}.standings{width:200px}}
@media(max-width:700px){.lobby{left:0;width:100vw;padding:24px}.game-title{font-size:34px}.standings{right:15px;top:15px;width:175px;padding:12px}.controls{display:none}.bottom-hud{left:15px;right:15px;bottom:20px}.event-feed{left:15px;bottom:90px}.shove-button{margin-left:auto}.toast{bottom:100px;font-size:12px}}

.intro-art{position:fixed;left:0;top:0;width:42vw;height:100dvh;object-fit:cover;object-position:center;pointer-events:none}body:not(.intro-open) .intro-art{display:none}.intro-open .lobby{background:#f6f6f1d9}
.standings .leaderboard-list li.self{padding-left:7px;padding-right:7px}
@media(max-width:700px){.intro-art{width:100vw}}

.intro-content{position:fixed;left:0;top:50%;transform:translateY(-50%);width:42vw;padding:24px;max-height:96dvh;overflow-y:auto}.intro-content .lobby{position:static;transform:none;width:100%;padding:24px;max-height:none;border-radius:10px}.intro-content .game-title{font-size:clamp(42px,4.8vw,76px);font-weight:800;line-height:1;letter-spacing:-.045em;color:white;text-shadow:0 3px 0 #3d628b99;margin:0 0 24px;text-align:center}body:not(.intro-open) .intro-content{display:none}@media(max-width:700px){.intro-content{width:100vw;padding:20px}.intro-content .game-title{font-size:54px}}

.intro-backdrop{inset:0 0 0 42vw;background:#0f1c2e4d;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}#game-logo{position:fixed;left:42vw;right:0;top:50%;transform:translateY(-50%);text-align:center;font-size:clamp(58px,7.5vw,144px);font-weight:800;line-height:1;letter-spacing:-.045em;color:#fff;text-shadow:0 3px 0 #172b4477;margin:0;pointer-events:none}body:not(.intro-open) #game-logo{display:none}.intro-art,.intro-content,.intro-backdrop,#game-logo{opacity:1;transition:opacity 350ms ease}.intro-leaving .intro-art,.intro-leaving .intro-content,.intro-leaving .intro-backdrop,.intro-leaving #game-logo{opacity:0;pointer-events:none}.intro-open .hud{opacity:0}.hud{transition:opacity 180ms ease}@media(max-width:700px){.intro-backdrop{inset:0}#game-logo{left:0;top:12%;font-size:54px}.intro-content{top:58%}}@media(prefers-reduced-motion:reduce){.intro-art,.intro-content,.intro-backdrop,#game-logo,.hud{transition:none}}
.fade-ui{opacity:0;transition:opacity 200ms ease}.fade-ui.is-visible{opacity:1}.leaderboard-list{transition:opacity 140ms ease}.leaderboard-list.board-updating{opacity:0!important}.controls{opacity:1;transition:opacity 200ms ease,visibility 0s linear}.controls.away{opacity:0;visibility:hidden;pointer-events:none;transition:opacity 200ms ease,visibility 0s linear 200ms}dialog.fade-dialog{opacity:0;transition:opacity 200ms ease}dialog.fade-dialog.is-visible{opacity:1}dialog.fade-dialog::backdrop{opacity:0;transition:opacity 200ms ease}dialog.fade-dialog.is-visible::backdrop{opacity:1}
#world{transition:opacity 400ms ease}.map-loading #world{opacity:0}.map-ready #world{opacity:1}.map-skeleton{position:fixed;inset:0;background:#86a4bb;pointer-events:none;overflow:hidden;transition:opacity 400ms ease}.map-skeleton svg{width:100%;height:100%;display:block;animation:map-pulse 1800ms ease-in-out infinite}.map-skeleton::after,.art-skeleton::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,#ffffff16 49%,transparent 63%);transform:translateX(-100%);animation:skeleton-sweep 1800ms ease-in-out infinite}#map-loading-label{position:absolute;right:26px;bottom:24px;color:#f3f7fa;font-size:13px}.art-skeleton{position:fixed;inset:0 auto 0 0;width:42vw;background:#a9bccb;overflow:hidden;pointer-events:none;transition:opacity 400ms ease}.art-loading .intro-art{opacity:0}.board-frame{position:relative;min-height:195px}.board-frame .leaderboard-list{min-height:185px}.board-skeleton{position:absolute;left:0;right:0;top:10px;pointer-events:none}.skeleton-row{display:flex;align-items:center;gap:10px;height:36px}.skeleton-bar{display:block;background:linear-gradient(90deg,#d7ddd5 20%,#edf0e9 48%,#d7ddd5 76%);background-size:220% 100%;animation:skeleton-bars 1500ms ease-in-out infinite;border-radius:4px;height:13px}.rank-bone{width:16px;flex:none}.name-bone{width:54%}.score-bone{width:43px;margin-left:auto}.skeleton-row:nth-child(2) .name-bone{width:39%}.skeleton-row:nth-child(3) .name-bone{width:48%}.skeleton-row:nth-child(4) .name-bone{width:34%}.skeleton-row:nth-child(5) .name-bone{width:45%}.join-frame{position:relative;min-height:94px}.join-skeleton{position:absolute;inset:0;pointer-events:none}.label-bone{width:95px;height:12px;margin-bottom:12px}.skeleton-join-row{display:flex;gap:8px}.field-bone{width:58%;height:44px}.button-bone{flex:1;height:44px}.intro-leaving .art-skeleton{opacity:0;pointer-events:none}.loading-failed .map-skeleton svg,.loading-failed .map-skeleton::after,.loading-failed .skeleton-bar{animation:none}
@keyframes skeleton-bars{from{background-position:100% 0}to{background-position:-100% 0}}@keyframes skeleton-sweep{to{transform:translateX(100%)}}@keyframes map-pulse{0%,100%{opacity:.6}50%{opacity:.9}}@media(max-width:700px){.art-skeleton{width:100vw}}@media(prefers-reduced-motion:reduce){.fade-ui,.leaderboard-list,.controls,dialog.fade-dialog,dialog.fade-dialog::backdrop,#world,.map-skeleton,.art-skeleton{transition:none}.map-skeleton svg,.map-skeleton::after,.art-skeleton::after,.skeleton-bar{animation:none}}

.fall-word{display:inline-block;margin-left:.015em}.fall-word>span{display:inline-block;transform-origin:50% 80%}.fall-word>span:nth-child(1){transform:translateY(.015em) rotate(2deg)}.fall-word>span:nth-child(2){transform:translateY(.07em) rotate(6deg)}.fall-word>span:nth-child(3){transform:translateY(.16em) rotate(11deg)}.fall-word>span:nth-child(4){transform:translateY(.29em) rotate(17deg)}
