:root{color-scheme:dark;--ink:#f2f2df;--muted:#94a69b;--lime:#d8f36b;--orange:#f28155;--night:#0b211c;--panel:#102b24;--line:rgba(224,241,215,.13);font-family:"Yu Gothic", "Meiryo", sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100svh;color:var(--ink);background:#091b17;background-image:radial-gradient(ellipse at 50% -20%,#24483a 0,transparent 60%);padding:0 18px 20px}.app-shell{width:min(100%,560px);margin:0 auto}.topbar{height:66px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:9px;color:var(--ink);text-decoration:none;font-size:13px;letter-spacing:.14em;font-weight:700}.brand b{color:var(--lime);font-weight:500}.brand-mark{width:26px;height:26px;border:1px solid var(--lime);color:var(--lime);display:grid;place-items:center;font-family:ui-monospace, "Cascadia Mono", monospace;font-size:16px;transform:skew(-9deg)}.top-tag,.eyebrow,.round-label,.stadium-banner,.wind-indicator,.stadium-bottom,.overlay-kicker,.control-label,.instruction-step,.game-foot,.page-footer,.overlay-foot{font-family:ui-monospace, "Cascadia Mono", monospace}.top-tag{font-size:9px;color:#aab9ac;letter-spacing:.11em}.live-dot,.stadium-live i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lime);margin-right:5px;box-shadow:0 0 8px #d8f36b77}.game-card{border:1px solid #42605255;background:#0e261f;border-radius:11px;overflow:hidden;box-shadow:0 24px 70px #0005}.match-head{height:81px;padding:13px 20px;display:flex;justify-content:space-between;align-items:center;background:#102a23}.match-label{display:flex;flex-direction:column;gap:6px}.eyebrow{font-size:9px;letter-spacing:.18em;color:var(--lime)}.round-label{color:#a2b4a8;font-size:10px;letter-spacing:.07em}.round-label i{font-style:normal;color:#566e60;margin:0 3px}.scoreboard{display:flex;align-items:center;gap:12px}.score-side{display:flex;flex-direction:column;align-items:center;gap:1px}.team-name{font:9px ui-monospace, "Cascadia Mono", monospace;color:#879c8e;letter-spacing:.12em}.score-num{font:500 23px ui-monospace, "Cascadia Mono", monospace}.score-separator{color:#658072;font:17px ui-monospace, "Cascadia Mono", monospace;padding-top:11px}.score-side-away .score-num{color:#d6e0d7}.stadium{height:470px;position:relative;overflow:hidden;background:linear-gradient(180deg,#10251f 0%,#1b4436 38%,#255740 63%,#204b32 100%)}.stadium:before,.stadium:after{content:"";position:absolute;top:29px;width:36px;height:140px;background:linear-gradient(90deg,transparent,#dfffbb45,transparent);filter:blur(8px);z-index:2}.stadium:before{left:13%;transform:rotate(-18deg)}.stadium:after{right:13%;transform:rotate(18deg)}.stadium-lights{position:absolute;top:0;left:0;right:0;height:112px;background:radial-gradient(ellipse at 10% 3%,#f4ffd65c,transparent 21%),radial-gradient(ellipse at 90% 3%,#f4ffd65c,transparent 21%)}.crowd{position:absolute;top:63px;height:104px;width:100%;opacity:.72;background-color:#1b302a;background-image:radial-gradient(ellipse at 8px 11px,#b2c48a 0 1px,transparent 2px),radial-gradient(ellipse at 20px 19px,#efcf9a 0 1px,transparent 2px),radial-gradient(ellipse at 5px 27px,#6e9580 0 2px,transparent 3px),radial-gradient(ellipse at 27px 4px,#db8467 0 1px,transparent 2px);background-size:34px 33px;mask-image:linear-gradient(#000,transparent)}.crowd-b{top:77px;opacity:.45;transform:translateX(13px);background-position:15px 7px}.stadium-banner{position:absolute;top:31px;left:0;right:0;display:flex;justify-content:space-between;padding:0 17px;color:#95ae9d;font-size:7px;letter-spacing:.15em;z-index:3}.field{position:absolute;inset:0;overflow:hidden;background:linear-gradient(180deg,transparent 0%,#29703c22 40%,#29603b 100%)}.field:after{content:"";position:absolute;left:-10%;right:-10%;height:240px;bottom:-164px;border:1px solid #bbd8b425;border-radius:50%;z-index:0}.field-lines{position:absolute;inset:0;pointer-events:none}.penalty-box{position:absolute;left:15%;right:15%;top:169px;height:211px;border:1px solid #d0e2cd5b;border-bottom:0}.goal-box{position:absolute;left:33%;right:33%;top:169px;height:79px;border:1px solid #d0e2cd5b;border-bottom:0}.penalty-arc{position:absolute;top:218px;left:37%;width:26%;height:70px;border:1px solid #d0e2cd52;border-radius:50%;clip-path:inset(50% 0 0)}.penalty-spot{position:absolute;top:297px;left:50%;width:5px;height:5px;border-radius:50%;background:#d0e2cd9c;transform:translateX(-50%)}.goal{position:absolute;top:125px;left:50%;width:63%;height:109px;transform:translateX(-50%);z-index:5;touch-action:none;cursor:crosshair}.goal-net{position:absolute;inset:0;background-color:#d7e3cf0a;background-image:linear-gradient(#c9ddc52a 1px,transparent 1px),linear-gradient(90deg,#c9ddc52a 1px,transparent 1px);background-size:15px 14px;border:1px solid #ecf3e8aa;box-shadow:0 0 25px #d8f36b0a inset}.goal-post,.goal-crossbar{position:absolute;background:#f2f5e9;box-shadow:0 2px 4px #0006;z-index:2}.goal-post{top:0;bottom:-5px;width:5px}.goal-post-left{left:-2px}.goal-post-right{right:-2px}.goal-crossbar{top:-2px;left:-2px;right:-2px;height:5px}.aim-marker{position:absolute;width:23px;height:23px;border:1px solid var(--lime);border-radius:50%;top:47%;left:50%;transform:translate(-50%,-50%);z-index:5;opacity:0;transition:opacity .16s}.aim-marker:before,.aim-marker:after{content:"";position:absolute;background:var(--lime)}.aim-marker:before{height:1px;width:31px;left:-5px;top:10px}.aim-marker:after{width:1px;height:31px;left:10px;top:-5px}.aim-marker span{position:absolute;inset:7px;background:var(--lime);border-radius:50%}.goal.aiming .aim-marker{opacity:1}.keeper{position:absolute;left:50%;top:39px;width:42px;height:63px;transform:translateX(-50%);z-index:4;transition:left .28s cubic-bezier(.17,.67,.3,1),transform .28s}.keeper-shadow{position:absolute;bottom:0;left:1px;width:41px;height:8px;background:#00140a55;filter:blur(4px);border-radius:50%}.keeper-body{position:absolute;inset:0}.keeper-head{position:absolute;top:0;left:15px;width:13px;height:14px;border-radius:45%;background:#d9a87d;border:2px solid #302d24}.keeper-shirt{position:absolute;top:14px;left:8px;width:27px;height:28px;border-radius:7px 7px 3px 3px;background:#e0f16d;color:#30422c;text-align:center;padding-top:7px;font:8px ui-monospace, "Cascadia Mono", monospace;font-weight:bold;clip-path:polygon(17% 0,83% 0,100% 28%,90% 100%,10% 100%,0 28%)}.keeper-arm{position:absolute;top:18px;width:17px;height:7px;border-radius:5px;background:#e0f16d;z-index:-1}.arm-left{left:-4px;transform:rotate(32deg)}.arm-right{right:-4px;transform:rotate(-32deg)}.keeper-shirt:after{content:"";position:absolute}.keeper-leg{position:absolute;top:39px;height:20px;width:8px;background:#26392f;border-radius:3px}.leg-left{left:12px;transform:rotate(8deg)}.leg-right{left:23px;transform:rotate(-8deg)}.keeper.dive-left{left:24%;transform:translate(-50%,11px) rotate(-35deg)}.keeper.dive-right{left:76%;transform:translate(-50%,11px) rotate(35deg)}.keeper.dive-center{transform:translate(-50%,12px) rotate(-3deg) scale(1.15)}.kicker{position:absolute;top:280px;left:50%;width:39px;height:95px;transform:translateX(-50%);z-index:3}.kicker-head{position:absolute;top:0;left:13px;width:14px;height:16px;background:#bd8c69;border-radius:48%;border:2px solid #30291e}.kicker-body{position:absolute;top:16px;left:7px;width:26px;height:37px;background:#f07e59;border-radius:7px 7px 3px 3px;clip-path:polygon(12% 0,88% 0,100% 100%,0 100%)}.kicker-body i{position:absolute;top:3px;left:10px;width:5px;height:19px;background:#ffe7a6;opacity:.85}.kicker-leg{position:absolute;top:48px;height:42px;width:9px;background:#e6d7b2;border-radius:4px;transform-origin:top center}.kicker-leg-left{left:10px;transform:rotate(7deg)}.kicker-leg-right{left:22px;transform:rotate(-8deg)}.kicker.kick{animation:kick .44s ease}.kicker.kick .kicker-leg-right{animation:swing .44s ease}.ball-at-feet,.shot-ball{position:absolute;width:15px;height:15px;border-radius:50%;background:radial-gradient(circle at 32% 27%,#fff 0 15%,#e4e8dc 16% 59%,#74796e 61% 64%,#fff 66%);box-shadow:0 3px 5px #00160c88;z-index:6}.ball-at-feet{top:362px;left:50%;transform:translateX(9px)}.shot-ball{top:194px;left:50%;opacity:0;transform:translate(-50%,-50%);z-index:8}.shot-ball span{position:absolute;inset:4px;border:1px solid #49504a;border-radius:50%}.shot-ball.fly{opacity:1;animation:fly .7s cubic-bezier(.32,.01,.6,.99) forwards}.shot-ball.fly.miss{animation:miss .7s ease-in forwards}.toast{position:absolute;z-index:10;top:103px;left:50%;transform:translate(-50%,-5px);display:flex;gap:8px;align-items:center;padding:9px 14px;background:#091a15dc;border:1px solid #d8f36b4c;border-radius:4px;white-space:nowrap;opacity:0;transition:.22s;font-size:12px;font-weight:700}.toast.show{opacity:1;transform:translate(-50%,0)}.toast-icon{color:var(--lime)}.wind-indicator{position:absolute;bottom:14px;right:14px;z-index:2;display:flex;align-items:center;gap:6px;padding:6px 8px;background:#0b251b80;color:#b8c8b8;font-size:8px;letter-spacing:.08em}.wind-indicator b{color:var(--lime);font-weight:400}.wind-icon{font-size:13px;color:var(--lime)}.stadium-bottom{position:absolute;bottom:0;left:0;right:0;height:26px;padding:0 13px;display:flex;justify-content:space-between;align-items:center;background:#0b211d77;color:#9cb2a0;font-size:7px;letter-spacing:.14em;z-index:4}.stadium-live{color:#d5e1d3}.stadium-live i{width:5px;height:5px}.start-overlay,.result-overlay{position:absolute;inset:0;z-index:20;display:grid;place-items:center;background:#071713a8;backdrop-filter:blur(4px);padding:20px}.overlay-card,.result-card{width:min(100%,330px);padding:25px 24px;background:#102820f2;border:1px solid #8da68a3d;box-shadow:0 15px 50px #0008}.overlay-kicker{font-size:9px;letter-spacing:.18em;color:var(--lime)}.overlay-card h1{font-size:27px;line-height:1.55;margin:14px 0 4px;letter-spacing:-.04em}.overlay-card h1 em{font-style:normal;color:var(--lime)}.overlay-card p,.result-card p{margin:0;color:#9eb1a3;font-size:12px}.difficulty-wrap{margin:24px 0 17px}.control-label{display:block;font-size:8px;letter-spacing:.14em;color:#8aa293;margin-bottom:8px}.difficulty-options{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.difficulty{height:34px;background:#0c201a;border:1px solid #496050;color:#8ca194;font:9px ui-monospace, "Cascadia Mono", monospace;letter-spacing:.08em;cursor:pointer}.difficulty.selected{color:var(--lime);border-color:var(--lime);background:#d8f36b0c}.primary-button{width:100%;height:48px;border:0;background:var(--lime);color:#122519;display:flex;align-items:center;justify-content:space-between;padding:0 15px;font:700 13px "Yu Gothic", "Meiryo", sans-serif;cursor:pointer;transition:filter .15s,transform .15s}.primary-button:hover{filter:brightness(1.08)}.primary-button:active{transform:scale(.985)}.button-arrow{font:17px ui-monospace, "Cascadia Mono", monospace}.overlay-foot{margin-top:15px;display:flex;justify-content:center;gap:10px;color:#72867a;font-size:8px;letter-spacing:.1em}.result-overlay{background:#071713c9}.result-card{text-align:center;padding:27px 25px}.result-stamp{display:inline-block;margin:20px auto 0;padding:5px 12px;border:1px solid var(--lime);color:var(--lime);font:10px ui-monospace, "Cascadia Mono", monospace;letter-spacing:.18em;transform:rotate(-3deg)}.result-card h2{font-size:33px;margin:13px 0 3px}.result-card .primary-button{margin-top:25px}.hidden{display:none!important}.control-panel{min-height:82px;background:#102a23;padding:12px 17px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #c0d7c015}.instruction-block{display:flex;align-items:center;gap:11px;min-width:0}.instruction-icon{width:36px;height:36px;flex:0 0 36px;border:1px solid #b9d63c4d;display:grid;place-items:center;color:var(--lime);font-size:17px}.instruction-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.instruction-step{font-size:8px;letter-spacing:.1em;color:var(--lime)}.instruction-text{font-size:11px;color:#d4dfd4;white-space:nowrap}.kick-button{height:43px;min-width:112px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;border:0;background:var(--lime);color:#14271b;font:700 12px "Yu Gothic", "Meiryo", sans-serif;cursor:pointer}.kick-button b{font:17px ui-monospace, "Cascadia Mono", monospace}.kick-button:disabled{background:#3b5143;color:#849688;cursor:not-allowed}.game-foot{height:40px;display:flex;align-items:center;padding:0 17px;gap:10px;color:#7d9384;font-size:8px;letter-spacing:.1em}.shot-track{display:flex;gap:4px;align-items:center}.track-dot{width:8px;height:8px;border:1px solid #64796b;border-radius:50%}.track-dot.scored{background:var(--lime);border-color:var(--lime)}.track-dot.saved{background:var(--orange);border-color:var(--orange)}.track-dot.missed{background:#f1e4c1;border-color:#f1e4c1}.track-divider{height:12px;width:1px;background:#516759;margin:0 4px}.match-status{margin-left:auto}.sound-toggle{border:0;background:none;color:#aab9a8;font-size:15px;width:25px;height:25px;cursor:pointer}.page-footer{display:flex;justify-content:space-between;padding:13px 3px;color:#63796b;font-size:8px;letter-spacing:.12em}
@keyframes kick{0%,100%{transform:translateX(-50%)}48%{transform:translateX(-50%) rotate(-8deg)}}@keyframes swing{40%{transform:rotate(43deg)}70%{transform:rotate(-24deg)}}@keyframes fly{0%{top:243px;left:50%;transform:translate(-50%,0) scale(1)}85%{opacity:1}100%{top:var(--target-y);left:var(--target-x);transform:translate(-50%,-50%) scale(.44);opacity:0}}@keyframes miss{0%{top:243px;left:50%;transform:translate(-50%,0) scale(1)}100%{top:var(--target-y);left:var(--target-x);transform:translate(-50%,-50%) scale(.35) rotate(380deg);opacity:0}}@media(max-width:420px){body{padding:0 10px 12px}.topbar{height:56px}.stadium{height:min(64svh,460px);min-height:385px}.goal{top:27%;height:96px;width:67%}.keeper{top:36px}.penalty-box{top:40%;height:49%}.goal-box{top:40%;height:19%}.penalty-arc{top:52%;height:70px}.penalty-spot{top:68%}.kicker{top:68%}.ball-at-feet{top:86%}.shot-ball{top:50%}.stadium-banner{top:23px;font-size:6px}.crowd{top:53px}.stadium:before,.stadium:after{top:19px}.instruction-text{font-size:10px}.kick-button{min-width:98px;padding:0 9px}.control-panel{padding:10px 11px}.overlay-card{padding:20px}.overlay-card h1{font-size:24px}}@media(max-height:740px){.stadium{height:420px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
