:root{color-scheme:light dark;font:15px/1.4 system-ui,Segoe UI,Roboto,sans-serif}html,body,#root{margin:0;height:100%;width:100%}body{overscroll-behavior:none}.landing{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-start;justify-content:center;padding:21vh 24px 24px;font-family:system-ui,Segoe UI,Roboto,sans-serif;background:url(/haga-winter.jpg) 50% 85% / cover no-repeat,#c9a98f url(/haga-soon.jpg) 50% 85% / cover no-repeat}.landing.soon{background:#c9a98f url(/haga-soon.jpg) 50% 85% / cover no-repeat}.landing-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#14284647,#14284600 45%)}.landing-content{position:relative;display:flex;flex-direction:column;align-items:center;gap:clamp(16px,3vh,32px)}.landing-title{margin:0;font-size:clamp(56px,11vw,140px);font-weight:500;letter-spacing:-.03em;line-height:1;color:#fff;text-shadow:0 2px 24px rgba(0,0,0,.35)}.landing-start{padding:15px 46px;border:none;border-radius:30px;background:#fff;color:#1b1c18;font:15px system-ui,sans-serif;letter-spacing:.03em;cursor:pointer;box-shadow:0 4px 18px #0000004d;transition:transform .15s ease,box-shadow .15s ease}.landing-start:hover{transform:translateY(-1px);box-shadow:0 7px 24px #00000061}.soon-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:50% 85%}@media(prefers-reduced-motion:reduce){.soon-video{display:none}}.soon-video::-webkit-media-controls-start-playback-button{display:none!important}.soon-tagline{margin:calc(-1*clamp(4px,1vh,12px)) 0 0;white-space:nowrap;color:#fff;font:400 clamp(18px,2.2vw,32px) / 1.6 "Homemade Apple","Segoe Print","Bradley Hand",cursive;text-align:center;text-shadow:0 2px 14px rgba(40,20,40,.45);transform:rotate(-2deg)}.landing.soon .landing-scrim{z-index:2}.landing.soon .landing-content{z-index:3}@media(max-width:600px){.landing.soon .landing-title{font-size:23vw}.soon-tagline{font-size:6vw}}.landing-start:focus-visible{outline:2px solid #fff;outline-offset:3px}.map-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:flex;align-items:flex-start;justify-content:center;padding-top:24vh;background:url(/haga-winter.jpg) 50% 85% / cover no-repeat,#c9a98f url(/haga-soon.jpg) 50% 85% / cover no-repeat;transition:opacity .7s ease}.map-loading:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#10182466}.map-loading-text{position:relative;margin:0;color:#fff;font:500 20px system-ui,sans-serif;letter-spacing:.03em;text-shadow:0 1px 12px rgba(0,0,0,.35);animation:map-loading-pulse 1.8s ease-in-out infinite}@keyframes map-loading-pulse{0%,to{opacity:.65}50%{opacity:1}}.map-loading.hidden{opacity:0;pointer-events:none}@media(prefers-reduced-motion:reduce){.map-loading-text{animation:none}.map-loading{transition:none}}.flag-icon{display:block;width:100%;height:100%;border-radius:50%;overflow:hidden}.flag-icon svg{display:block;width:100%;height:100%}.admin-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f4f3ec;font-family:system-ui,sans-serif}.admin-gate form{display:flex;flex-direction:column;gap:12px;width:260px}.admin-gate h1{font-size:20px;margin:0 0 8px;color:#232220}.admin-gate input{padding:13px 16px;border:none;border-radius:24px;box-shadow:0 2px 10px #14141224;font-size:14px;outline:none}.admin-gate button{padding:12px 18px;border:none;border-radius:24px;background:#e2632e;color:#fff;font-size:14px;cursor:pointer}.admin-gate-error{color:#c0392b;font-size:13px;margin:0}.admin-panel{min-height:100vh;background:#f4f3ec;font-family:system-ui,sans-serif;color:#232220;padding:24px 32px 64px}.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.admin-header h1{font-size:22px;margin:0}.admin-header div{display:flex;align-items:center;gap:14px}.admin-header a{color:#5b6b8c;text-decoration:none;font-size:14px}.admin-header button{padding:8px 16px;border:none;border-radius:20px;background:#fff;box-shadow:0 2px 8px #1414121f;cursor:pointer;font-size:13px}.admin-panel section{margin-bottom:36px}.admin-panel h2{font-size:16px;margin:0 0 12px}.admin-hint{color:#6b6760;font-size:13px}.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}.admin-card{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 2px 10px #1414121a}.admin-card.hidden{opacity:.4}.admin-card img{width:100%;height:120px;object-fit:cover;display:block}.admin-card-body{padding:10px 12px 12px}.admin-card-title{font-size:12.5px;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-card-actions{display:flex;gap:8px}.admin-card button{padding:6px 12px;border:none;border-radius:16px;background:#f4f3ec;cursor:pointer;font-size:12px}.admin-upload input[type=file]{font-size:13px}.admin-upload-editor{margin-top:14px;display:flex;flex-direction:column;gap:10px;max-width:420px}.admin-upload-preview{max-width:100%;max-height:220px;border-radius:16px;object-fit:contain}.admin-upload-editor input[type=text]{padding:10px 16px;border:none;border-radius:20px;box-shadow:0 2px 8px #1414121f;font-size:13px;outline:none}.admin-upload-editor button{align-self:flex-start;padding:10px 18px;border:none;border-radius:20px;background:#e2632e;color:#fff;cursor:pointer;font-size:13px}.admin-upload-editor button:disabled{opacity:.5;cursor:default}@media(prefers-color-scheme:dark){.admin-gate,.admin-panel{background:#181914;color:#e9e7de}.admin-card{background:#23241f}.admin-card button,.admin-header button{background:#2c2d27;color:#e9e7de}.admin-gate input,.admin-upload-editor input[type=text]{background:#23241f;color:#e9e7de}}.game-shell,.kv-overlay{--ui-bg: #161616;--ui-panel: linear-gradient(180deg, #1e1e1e, #161616);--ui-raised: #242424;--ui-hover: rgba(255, 255, 255, .07);--ui-line: rgba(255, 255, 255, .09);--ui-text: #fafafa;--ui-muted: #9b9b9b;--ui-faint: #6c6c6c;--ui-radius: 20px;--ui-font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ui-shadow: 0 12px 40px rgba(0, 0, 0, .45)}.ui-icon,.ui-chevron,.ui-check{flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.ui-chevron{stroke-width:2;color:var(--ui-muted)}.ui-check{margin-left:auto;stroke-width:1.8;color:var(--ui-muted)}.cat-hint,.game-objective{border:1px solid rgba(255,255,255,.16);background:linear-gradient(160deg,#1a4060c7,#0b2236d6 60%,#102c46cc);backdrop-filter:blur(16px) saturate(1.6);-webkit-backdrop-filter:blur(16px) saturate(1.6);box-shadow:inset 0 1px #ffffff38,inset 0 -1px #ffffff0d,0 8px 24px #04101c52}.cat-hint.night,.game-objective.night{border-color:#020810b3;background:linear-gradient(160deg,#0e223adb,#05101ee6 60%,#0a1a2ee0);box-shadow:0 8px 24px #0006}.cat-hint{position:absolute;left:50%;top:72px;z-index:6;margin:0;padding:8px 14px;border-radius:12px;color:#ffffffd1;font:500 13px var(--ui-font);white-space:nowrap;transform:translate(-50%)}.cat-stick-zone{position:absolute;left:0;right:0;bottom:0;height:50%;z-index:5;display:none;touch-action:none;user-select:none;-webkit-user-select:none}.cat-stick{position:absolute;width:124px;height:124px;margin:-62px 0 0 -62px;border:1.5px solid rgba(255,255,255,.55);border-radius:50%;background:radial-gradient(circle,#ffffff14,#ffffff38);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 6px 24px #0000002e;pointer-events:none;animation:cat-stick-in .18s ease-out both}@keyframes cat-stick-in{0%{opacity:0;transform:scale(.8)}}.cat-stick-knob{position:absolute;left:50%;top:50%;width:54px;height:54px;margin:-27px 0 0 -27px;border-radius:50%;background:#ffffffeb;box-shadow:0 4px 14px #00000040}.cat-jump{position:absolute;right:182px;bottom:22px;z-index:7;display:none;place-items:center;width:62px;height:62px;padding:0;border:1px solid rgba(255,255,255,.16);border-radius:50%;background:linear-gradient(160deg,#1a4060d1,#0b2236e0);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#fff;box-shadow:0 6px 18px #04101c59;touch-action:none;user-select:none;-webkit-user-select:none}.cat-jump svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.cat-jump:active{transform:scale(.94)}@media(pointer:coarse){.cat-stick-zone{display:block}.cat-jump{display:grid}.cat-hint{display:none}}.game-shell{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;background:#eef4f8}.game-canvas{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none}.game-canvas canvas{display:block}.game-canvas.aiming canvas{cursor:none}.aim-ball{--size: 50px;position:fixed;top:calc(var(--size) / -2);left:calc(var(--size) / -2);width:var(--size);height:var(--size);border-radius:50%;background:radial-gradient(circle at 34% 30%,#fff 0,#fff 18%,#f1f0ec 48%,#d9d8d2);box-shadow:0 0 26px #ffffff8c,0 6px 14px #00000047;pointer-events:none;z-index:5;opacity:0;transition:opacity .25s ease-out,width .3s ease-out,height .3s ease-out,top .3s ease-out,left .3s ease-out}.aim-ball.on{opacity:1}.aim-ball.blocked{--size: 18px}.aim-ball.on.blocked{opacity:.55}.aim-ball.pressed{--size: 38px}.aim-ball.dropped{animation:aim-drop .45s ease-out}@keyframes aim-drop{0%{box-shadow:0 0 26px #ffffff8c,0 6px 14px #00000047}35%{box-shadow:0 0 0 26px #fff6,0 6px 14px #00000047}to{box-shadow:0 0 26px #ffffff8c,0 6px 14px #00000047}}@media(hover:none),(pointer:coarse){.aim-ball{display:none}}.game-shell .map-loading{z-index:9}.game-ui.hidden{visibility:hidden}.game-ui>*{z-index:9}.game-panel{position:absolute;border:1px solid var(--ui-line);border-radius:var(--ui-radius);background:var(--ui-panel);box-shadow:var(--ui-shadow);color:var(--ui-text);font:14px var(--ui-font)}.game-score{position:absolute;top:14px;left:50%;transform:translate(-50%);pointer-events:none;display:flex;align-items:baseline;gap:6px;color:#fff;font:600 44px "Manrope",var(--ui-font);line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.04em;text-shadow:0 2px 14px rgba(0,0,0,.45),0 1px 2px rgba(0,0,0,.35)}.game-score span{font-size:18px;font-weight:600;letter-spacing:.04em;opacity:.85}.game-top-right{position:absolute;top:16px;right:16px;z-index:10;display:flex;align-items:center;gap:22px}.game-top-buttons{position:relative;display:flex;align-items:center;gap:8px}.sv-pill,.sv-round{display:flex;align-items:center;justify-content:center;gap:8px;height:42px;border:1px solid var(--ui-line);border-radius:14px;background:#161616e6;color:var(--ui-text);font:600 15px var(--ui-font);box-shadow:0 4px 16px #00000059;cursor:pointer;transition:background .15s ease}.sv-pill{padding:0 14px 0 12px}.sv-round{width:42px;padding:0;color:var(--ui-muted)}.sv-pill:hover,.sv-round:hover,.sv-pill.active{background:#262626;color:var(--ui-text)}.sv-pill:focus-visible,.sv-round:focus-visible,.ui-dropdown-button:focus-visible,.ui-menu-item:focus-visible,.game-segmented button:focus-visible,.game-map-button:focus-visible{outline:2px solid rgba(255,255,255,.6);outline-offset:2px}.game-top-left{position:absolute;top:16px;left:16px;z-index:10;display:flex}.kv-pill{order:2;display:flex;align-items:center;gap:14px;height:48px;padding:0 5px 0 22px;border:0;border-radius:999px;background:#fff;color:#0b2236;font:600 13.5px "Manrope",var(--ui-font);letter-spacing:.14em;text-transform:uppercase;box-shadow:0 6px 22px #0000004d;cursor:pointer}.kv-pill-left{padding:0 22px 0 5px}.kv-pill-menu{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#0b2236;color:#fff;transition:background .2s ease,box-shadow .2s ease}.kv-pill-menu svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.kv-pill:hover .kv-pill-menu,.kv-pill.active .kv-pill-menu{background:#12324d;box-shadow:0 0 0 3px #12324d2e}.kv-pill:focus-visible{outline:2px solid rgba(255,255,255,.7);outline-offset:3px}.game-key{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border:1px solid var(--ui-line);border-radius:6px;background:#ffffff0d;color:var(--ui-muted);font:600 11px var(--ui-font)}@media(pointer:coarse){.game-key{display:none}}.menu-drawer{left:var(--kv-inset);right:auto;width:min(430px,calc(100vw - 2 * var(--kv-inset)));display:flex;flex-direction:column;animation:menu-slide-in .75s var(--kv-ease) both}.kv-leaving .menu-drawer{animation:menu-slide-out .5s var(--kv-ease) both}@keyframes menu-slide-in{0%{transform:translate(calc(-100% - 40px))}}@keyframes menu-slide-out{to{transform:translate(calc(-100% - 40px))}}.menu-body{flex:1;overflow-y:auto;padding:8px 40px 24px}.menu-body>*{animation:kv-rise .6s cubic-bezier(.2,.8,.2,1) both;animation-delay:.3s}.menu-body>:has(.ui-dropdown-button[aria-expanded=true]){position:relative;z-index:5}.game-settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;border-bottom:1px solid var(--kv-line)}.game-settings-label{display:flex;align-items:center;gap:14px;color:var(--kv-ink);font-size:18px;font-weight:500;letter-spacing:-.01em}.game-settings-label .ui-icon{color:var(--kv-muted)}.menu-body h3{margin:30px 0 8px;color:var(--kv-muted);font:500 12.5px IBM Plex Mono,ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase}.game-settings-credits{margin:0;color:var(--kv-muted);font-size:13px;line-height:1.55}.game-settings-credits a{color:var(--kv-body)}.game-segmented{display:flex;padding:3px;border-radius:999px;background:#eef2f4}.game-segmented button{padding:7px 13px;border:none;border-radius:999px;background:none;color:var(--kv-body);font:500 14px "Manrope",var(--ui-font);cursor:pointer;transition:background .2s ease,color .2s ease}.game-segmented button:hover{color:var(--kv-ink)}.game-segmented button.on{background:var(--kv-ink);color:#fff}.menu-drawer .ui-dropdown-button{height:40px;padding:0 10px 0 12px;border:1px solid var(--kv-line);border-radius:999px;background:#fff;color:var(--kv-ink);font:500 15px "Manrope",var(--ui-font)}.menu-drawer .ui-dropdown-button:hover,.menu-drawer .ui-dropdown-button[aria-expanded=true]{background:#f1f5f7}.menu-drawer .ui-menu{border:1px solid var(--kv-line);background:#fff;box-shadow:0 18px 50px #020a1433}.menu-drawer .ui-menu-item{color:var(--kv-ink);font-family:"Manrope",var(--ui-font)}.menu-drawer .ui-menu-item:hover{background:#f1f5f7}.menu-foot{padding:18px 40px 34px;border-top:1px solid var(--kv-line)}.menu-drawer .menu-quit{width:100%;height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;border:0;border-radius:999px;background:var(--kv-ink);color:#fff;font:600 14px "Manrope",var(--ui-font);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:background .2s ease}.menu-drawer .menu-quit:hover{background:#12324d}.menu-quit svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.ui-dropdown{position:relative}.ui-dropdown-button{display:flex;align-items:center;gap:8px;height:36px;padding:0 8px 0 10px;border:1px solid var(--ui-line);border-radius:12px;background:#0f0f0f;color:var(--ui-text);font:500 14px var(--ui-font);cursor:pointer}.ui-dropdown-button:hover,.ui-dropdown-button[aria-expanded=true]{background:var(--ui-raised)}.ui-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:2;min-width:220px;max-height:320px;overflow-y:auto;margin:0;padding:6px;list-style:none;border:1px solid var(--ui-line);border-radius:18px;background:var(--ui-panel);box-shadow:var(--ui-shadow);animation:ui-menu-in .14s ease-out}.ui-menu-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border:none;border-radius:12px;background:none;color:var(--ui-text);font:500 15px var(--ui-font);text-align:left;cursor:pointer}.ui-menu-item:hover{background:var(--ui-hover)}.ui-flag{flex:none;width:20px;height:20px}@keyframes ui-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.ui-menu{animation:none}}.game-speed{position:absolute;left:22px;bottom:14px;margin:0;display:flex;align-items:baseline;gap:8px;color:#fff;font-family:"Manrope",var(--ui-font);font-variant-numeric:tabular-nums;text-shadow:0 2px 14px rgba(0,0,0,.45),0 1px 2px rgba(0,0,0,.35);pointer-events:none}.game-speed strong{font-size:64px;font-weight:600;line-height:1;letter-spacing:-.04em}.game-speed span{font-size:18px;font-weight:600;letter-spacing:.04em;opacity:.85}.game-map{position:absolute;right:16px;bottom:16px;width:240px;height:240px;padding:7px;box-sizing:border-box;border:1px solid rgba(255,255,255,.55);border-radius:30px;background:linear-gradient(160deg,#ffffff6b,#ffffff29 55%,#ffffff4d);backdrop-filter:blur(18px) saturate(1.8) brightness(1.08);-webkit-backdrop-filter:blur(18px) saturate(1.8) brightness(1.08);box-shadow:inset 0 1px #fffc,inset 0 -1px 1px #ffffff40,inset 0 0 0 1px #ffffff1f,0 12px 36px #00000038;transition:width .25s ease,height .25s ease}.game-map.night{border-color:#020810b3;background:linear-gradient(160deg,#0e223ad1,#05101edb 55%,#0a1a2ed6);box-shadow:0 12px 36px #00000059}.game-map.night .game-minimap{background:#18212c;box-shadow:inset 0 0 0 1px #02081099}.game-map.night .game-map-button.expand,.game-map.night .game-map-zoom{box-shadow:0 0 0 1px #02081099,0 4px 12px #0000004d}.game-map.night .game-map-button{background:#142436b3;color:#e6edf5}.game-map.night .game-map-button:hover{background:#1e344cd9}.game-map.night .game-map-button:disabled{color:#e6edf54d}.game-map.night .game-map-zoom .game-map-button+.game-map-button{border-top-color:#ffffff1a}.game-map.night .game-map-credit{background:#142436b3;color:#a9b6c4}.game-map.expanded{width:min(520px,72vmin);height:min(520px,72vmin)}.game-minimap{display:block;width:100%;height:100%;border-radius:23px;background:#eef0f2;box-shadow:inset 0 0 0 1px #0000000f}.game-map-button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:none;background:#ffffff94;backdrop-filter:blur(12px) saturate(1.6);-webkit-backdrop-filter:blur(12px) saturate(1.6);color:#1d1d1f;font:400 22px/1 var(--ui-font);cursor:pointer;transition:background .15s ease}.game-map-button:hover{background:#fffc}.game-map-button:disabled{color:#1d1d1f4d;cursor:default}.game-map-button.expand{position:absolute;left:15px;bottom:15px;border-radius:50%;box-shadow:inset 0 1px #ffffffe6,0 0 0 .5px #00000014,0 4px 12px #00000024}.game-map-zoom{position:absolute;right:15px;bottom:15px;display:flex;flex-direction:column;border-radius:17px;overflow:hidden;box-shadow:inset 0 1px #ffffffe6,0 0 0 .5px #00000014,0 4px 12px #00000024}.game-map-zoom .game-map-button+.game-map-button{border-top:1px solid rgba(0,0,0,.08)}.game-map-credit{position:absolute;left:50%;bottom:10px;padding:1px 7px;border-radius:999px;background:#ffffffb3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#5b5b58;font:9.5px var(--ui-font);text-decoration:none;transform:translate(-50%)}.game-objective{position:absolute;left:50%;bottom:16px;max-width:calc(100vw - 540px);margin:0;padding:10px 16px;border-radius:14px;color:#fff;font:500 14px var(--ui-font);text-align:center;transform:translate(-50%)}.game-card{position:absolute;left:50%;top:72px;z-index:9;width:min(380px,calc(100vw - 32px));padding:16px 18px 16px 20px;border:1px solid var(--ui-line);border-radius:var(--ui-radius);background:var(--ui-panel);box-shadow:var(--ui-shadow),inset 4px 0 0 var(--place-color);color:var(--ui-muted);font:14px/1.5 var(--ui-font);transform:translate(-50%);animation:game-card-in .3s ease-out}.game-card h2{margin:0 0 4px;color:var(--ui-text);font-size:16px;font-weight:600}.game-card p{margin:0}@keyframes game-card-in{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}.game-shell .cat-hint,.game-shell .game-map{z-index:7}@media(max-width:900px),(pointer:coarse){.game-map{width:150px;height:150px}.game-map.expanded{width:min(360px,calc(100vw - 24px));height:min(360px,calc(100vw - 24px))}.game-map-button{width:30px;height:30px;font-size:20px}.sv-pill span{display:none}.sv-pill{width:42px;padding:0}.kv-pill,.kv-pill-left{height:46px;padding:0 4px}.kv-pill>span:not(.kv-pill-menu){display:none}.kv-pill-menu,.kv-pill:hover .kv-pill-menu,.kv-pill.active .kv-pill-menu{background:#fff;color:#0b2236;box-shadow:none}.cat-hint{top:76px;width:max-content;max-width:calc(100vw - 48px);box-sizing:border-box;white-space:normal;text-align:center}.game-objective{bottom:182px;width:max-content;max-width:calc(100vw - 48px);box-sizing:border-box;font-size:12.5px;opacity:0;pointer-events:none;transition:opacity .35s ease}.game-objective.shown{opacity:1}.game-speed strong{font-size:44px}}
