@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800&family=Noto+Sans+JP:wght@400;500;600;700;800;900&display=swap');
:root{font-family:'Noto Sans JP',sans-serif;color:#263f3d;background:#f5f3e9;--red:#cc3d43;--green:#347a64;--mint:#e1eee3;--line:#d7dfd5;--muted:#667a70;--cream:#f5f3e9}*{box-sizing:border-box}body{margin:0}button,a,label,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0;touch-action:manipulation;color:inherit}button:disabled{opacity:.45;cursor:default}button:active:not(:disabled){transform:scale(.98)}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #236954;outline-offset:3px}a{color:var(--green);text-underline-offset:4px}[hidden]{display:none!important}.shell{max-width:1100px;padding:0 32px;margin:auto}header{height:94px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:14px;text-align:left;background:none}.brand img{width:73px;height:52px;object-fit:contain;mix-blend-mode:multiply}.brand>span{font:800 28px 'Barlow Condensed',sans-serif;letter-spacing:2px}.brand small{display:block;font:500 9px 'Noto Sans JP';letter-spacing:1px;margin-top:3px}.round{border:1px solid var(--line);background:transparent;min-width:44px;min-height:44px;border-radius:50px;padding:10px 13px;font-size:12px}.screen{padding:36px 0}.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px}.kicker{font:700 12px 'Barlow Condensed';letter-spacing:1.8px;color:var(--green);display:block}.kicker i{display:inline-block;width:7px;height:7px;background:var(--red);border-radius:50%;margin-right:7px}h1{font-size:43px;line-height:1.45;letter-spacing:-1.5px;margin:18px 0}h1 em{font-style:normal;color:var(--red)}h2{font-size:29px;line-height:1.5;margin:14px 0 18px}p{font-size:14px;line-height:1.9}.intro p{color:var(--muted)}.court-art{position:relative;height:214px;overflow:hidden;margin:4px 0 14px}.mini{position:absolute;background:#82b99b;left:40%;top:-55px;width:210px;height:320px;transform:rotate(-22deg) skewY(6deg);border:3px solid #f7f6e6;box-shadow:15px 15px #dce6d9;overflow:hidden}.zones{height:32%;width:100%;top:34%;position:absolute;border-top:2px solid #f7f6e6;border-bottom:2px solid #f7f6e6;background:#52967f}.net{position:absolute;top:49%;height:7px;width:100%;background:repeating-linear-gradient(90deg,#fff 0 1px,#306858 1px 6px);border-top:3px solid #fff;z-index:2}.centerline{position:absolute;left:50%;top:0;bottom:0;border-left:2px solid #f7f6e6}.player{position:absolute;width:23px;height:28px;border-radius:10px;background:var(--red);border:3px solid white;z-index:3}.player.p1{top:76%;left:65%}.player.p2{top:67%;left:20%;background:#296e53}.player.p3{top:20%;left:20%;background:#428da4}.player.p4{top:25%;left:70%;background:#428da4}.ball{position:absolute;top:40%;left:35%;width:22px;height:22px;border-radius:50%;background:#ecf877;z-index:4;box-shadow:0 13px 9px #24594455}.stamp{position:absolute;bottom:7px;left:0;color:var(--red);font:800 italic 50px/.8 'Barlow Condensed';transform:rotate(-7deg)}.stats{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px;max-width:400px}.stats>span{font-size:11px;color:var(--muted)}.stats b{font:700 28px 'Barlow Condensed';display:block;color:#244238;margin-bottom:5px}.section-label{font-size:12px;font-weight:700;display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-label>span{font:600 11px 'Barlow Condensed';letter-spacing:1.5px;color:var(--muted)}.paddles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.paddle{background:#fffdf6;border:1px solid var(--line);border-radius:14px;padding:10px;position:relative}.paddle[aria-pressed=true]{border:2px solid var(--red);padding:9px;background:#fff2e9;box-shadow:0 4px 0 #d94b3b12}.paddle img{width:100%;height:155px;object-fit:contain;background:white;border-radius:7px}.paddle strong{display:block;font:700 21px 'Barlow Condensed';margin-top:10px}.paddle span{position:absolute;top:5px;right:6px;background:var(--red);color:#fff;border-radius:50%;width:23px;height:23px;display:none;font-size:13px;padding-top:2px}.paddle[aria-pressed=true] span{display:block}.paddle-description{margin-top:14px}.paddle-description b{display:block;font-size:14px}.paddle-description span{font-size:11px;display:block;color:var(--muted);margin-top:5px}.fine{font-size:11px;color:var(--muted);line-height:1.8}.btn{padding:15px 20px;min-height:50px;border-radius:12px;font-weight:700;font-size:15px}.red{color:#fffdf5;background:var(--red)}.red:hover{background:#b82e39}.light{background:#e6ece2;border:1px solid #c8d5c8}.light:hover{background:#d8e5d6}.full{display:block;width:100%;margin-top:10px}.launch{width:100%;text-align:left;margin-top:13px;padding:20px}.launch span{float:right;font-size:25px;line-height:1}.launch small{font-size:11px;font-weight:400;display:block;margin-top:7px;opacity:.8}.quick{display:flex;gap:20px;margin-top:18px}.quick button{flex:1;background:none;text-align:left;border-bottom:1px solid var(--line);padding:10px 0;font-size:12px}.shop-link{display:block;margin-top:22px;font-size:12px}.narrow{max-width:660px;margin:auto}.back{background:none;color:var(--muted);padding:0 0 25px;font-size:13px;min-height:44px}.muted{color:var(--muted)}.lesson{display:flex;align-items:center;gap:17px;width:100%;text-align:left;border:1px solid var(--line);background:#fffcf4;border-radius:12px;padding:20px;margin:12px 0}.lesson .num{font:700 35px 'Barlow Condensed';color:var(--red)}.lesson b{font-size:16px}.lesson small{display:block;margin-top:5px;color:var(--muted);font-size:12px}.lesson .check{margin-left:auto;color:var(--green);font-size:24px}fieldset{border:0;padding:0;margin:25px 0}legend{font-weight:700;font-size:13px;margin-bottom:10px}.choice{display:flex;align-items:center;gap:12px;padding:17px;border:1px solid var(--line);border-radius:12px;background:#fffdf6;margin:10px 0;cursor:pointer}.choice b{font-size:15px}.choice small{display:block;color:var(--muted);font-size:12px;margin-top:5px}input{accent-color:var(--red);width:19px;height:19px}.tag{background:#e5efde;color:var(--green);font-size:10px;border-radius:15px;padding:5px 8px;margin-left:auto;white-space:nowrap}.speed{display:flex;gap:20px}.speed label{display:flex;align-items:center;gap:7px;font-size:14px}.game-head{display:flex;align-items:center;gap:15px;margin-bottom:18px}.game-head>div{flex:1}.game-head b{font-size:18px;display:block;margin-top:5px}.game-head .kicker{font-size:10px}.game-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:32px}.scoreboard{display:flex;justify-content:space-between;align-items:center;font-size:12px;padding:0 4px 9px;gap:5px}.scoreboard>span{display:flex;align-items:center;gap:8px}.scoreboard b{font:700 33px 'Barlow Condensed'}.scoreboard i{font-style:normal;color:var(--red);font-size:10px}.scoreboard small{font-size:10px;color:var(--muted)}.callbar{display:flex;align-items:center;gap:12px;border-radius:10px 10px 0 0;background:#dce8d8;padding:10px 13px;font-size:10px}.callbar strong{font:700 23px 'Barlow Condensed';white-space:nowrap}.callbar small{margin-left:auto;font-size:10px}.canvas-wrap{position:relative;border-radius:0 0 14px 14px;overflow:hidden;background:#dce8d8}canvas{display:block;width:100%;height:auto;touch-action:none}.canvas-wrap #rallyCount{position:absolute;top:9px;left:12px;font:700 11px 'Barlow Condensed';letter-spacing:1px;color:#456d5b}.ball-status{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);font-size:11px;background:#fffdf0eb;color:#244836;border:1px solid #9eba9f;border-radius:25px;padding:5px 13px;white-space:nowrap}.team-key{display:flex;align-items:center;gap:10px;font-size:10px;margin:11px 0;color:var(--muted)}.team-key i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px}.red-dot{background:var(--red)}.green-dot{background:#347a64}.blue-dot{background:#3483a5}.team-key b{margin-left:auto;font:700 14px 'Barlow Condensed';color:#244238}.coach{background:#e1ebdf;border-left:3px solid var(--green);padding:17px;border-radius:0 12px 12px 0}.coach>span{font-size:10px;color:var(--green);letter-spacing:1px}.coach b{font-size:17px;display:block;margin-top:5px}.coach p{font-size:13px;margin:7px 0 0;line-height:1.8;min-height:45px}.label{font-size:12px;margin:18px 0 8px}.aim,.position-buttons{display:flex;gap:8px}.aim button,.position-buttons button{flex:1;border-radius:8px;min-height:44px;background:#fffdf6;border:1px solid var(--line);padding:10px 4px;font-size:13px}.aim button[aria-pressed=true],.position-buttons button[aria-pressed=true]{color:var(--green);background:#e4efdc;border-color:#599476}.position-buttons{margin-top:10px}.position-buttons button{font-size:12px}.hit{font-size:19px;min-height:58px}.meter{height:4px;background:#dce5d7;margin-top:14px;border-radius:4px;overflow:hidden}.meter>div{height:100%;background:var(--green);width:0}.center{text-align:center}#answers{display:grid;gap:10px;margin-top:14px}#answers button{text-align:left}footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:25px 0;color:var(--muted);font-size:11px}footer b{font:700 14px 'Barlow Condensed';letter-spacing:1px}details{border-bottom:1px solid var(--line);padding:19px 0}summary{cursor:pointer;font-size:15px;font-weight:700}details p{font-size:13px;color:var(--muted)}.source{margin-top:24px}dialog{width:min(430px,calc(100% - 30px));border:1px solid #b8cbb8;border-radius:22px;background:#fffdf4;color:#263f3d;padding:29px;box-shadow:0 25px 100px #0d332b44}dialog::backdrop{background:#173b328f;backdrop-filter:blur(6px)}dialog p{white-space:pre-line;font-size:14px;color:#5b7265}dialog h2{font-size:25px}dialog .btn{width:100%;margin-top:9px}.dialog-badge{width:48px;height:48px;border-radius:50%;border:1px solid var(--green);display:grid;place-items:center;color:var(--green);font-size:26px;margin-bottom:18px}
@media(max-width:760px){.shell{padding:0 20px;max-width:480px}header{height:78px}.brand img{width:61px;height:42px}.brand>span{font-size:24px}.brand small{font-size:8px}.brand{gap:10px}.screen{padding:27px 0}.home-grid{display:block}.kicker{font-size:10px}h1{font-size:35px;margin:15px 0;line-height:1.4}h2{font-size:26px}.intro p{font-size:13px}.court-art{height:160px;margin-top:-5px}.mini{width:170px;height:260px;top:-45px;left:46%}.stamp{font-size:43px}.stats{margin-bottom:29px}.stats b{font-size:25px}.stats>span{font-size:10px}.section-label{font-size:11px}.section-label>span{font-size:10px}.paddle{padding:8px}.paddle[aria-pressed=true]{padding:7px}.paddle img{height:112px}.paddle strong{font-size:19px}.paddle-description b{font-size:13px}.launch{padding:17px;font-size:15px}.launch small{font-size:10px}footer{font-size:9px;padding-bottom:max(25px,env(safe-area-inset-bottom))}footer b{font-size:12px}.game-grid{display:block}.in-game .shell{padding:0 13px}.in-game header{height:57px}.in-game .brand img{height:32px;width:46px}.in-game .brand>span{font-size:20px}.in-game .brand small{font-size:7px}.in-game header .round{min-height:34px;font-size:10px}.in-game .screen{padding-top:12px}.game-head{gap:12px;margin-bottom:7px}.game-head b{font-size:15px}.game-head .round{min-height:39px;min-width:39px;padding:8px}.scoreboard{font-size:10px;padding-bottom:7px}.scoreboard b{font-size:27px}.scoreboard>span{gap:5px}.callbar{padding:6px 10px;gap:9px;font-size:9px}.callbar strong{font-size:20px}.callbar small{font-size:9px}.canvas-wrap canvas{max-height:28svh;object-fit:contain}.ball-status{font-size:10px;padding:4px 9px;bottom:5px}.team-key{font-size:9px;margin:8px 0}.coach{padding:10px 12px}.coach>span{font-size:9px}.coach b{font-size:14px;margin-top:3px}.coach p{font-size:11px;line-height:1.6;min-height:0;margin:4px 0 0}.label{font-size:11px;margin:10px 0 6px}.aim button{min-height:39px;font-size:12px;padding:8px}.position-buttons{margin-top:7px}.position-buttons button{min-height:36px;padding:7px;font-size:11px}.hit{font-size:18px;min-height:50px;padding:12px}.full{margin-top:8px}#waitBtn{min-height:43px;padding:10px;font-size:13px}.meter{margin-top:9px}.center.fine{font-size:10px;margin:6px 0}.in-game footer{display:none}.in-game main{padding-bottom:env(safe-area-inset-bottom)}.lesson{padding:17px 14px;gap:12px}.lesson b{font-size:14px}.lesson small{font-size:11px}.choice{padding:15px 12px}.choice small{font-size:11px}.tag{font-size:9px}}
@media(max-width:760px) and (max-height:740px){.canvas-wrap canvas{max-height:21svh}.in-game header{height:48px}.in-game .screen{padding-top:8px}.game-head b{font-size:14px}.team-key{margin:5px 0}.coach>span{display:none}.coach p{font-size:10px}.coach{padding:8px 10px}.center.fine{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Larger court, concise coaching and one-thumb match controls. */
.shots{display:flex;gap:6px;margin:12px 0 6px}.shots button{flex:1;min-height:44px;border-radius:9px;border:1px solid var(--line);background:#fffdf6;font-size:13px;font-weight:700}.shots button[aria-pressed=true]{background:var(--green);color:white;border-color:var(--green)}
#positions{padding:0;border:0;margin-top:6px}#positions summary{font-size:11px;min-height:30px;display:flex;align-items:center;color:var(--muted);cursor:pointer}#positions summary:after{content:' ＋'}#positions[open] summary:after{content:' −'}.position-buttons{margin:0 0 5px}
.match-mode .coach{padding:10px 14px}.match-mode .coach>span,.match-mode .coach p{display:none}.match-mode .coach b{margin:0;font-size:14px}.match-mode #playControls{display:grid;grid-template-columns:1fr 1fr;gap:7px}.match-mode #playControls>.shots,.match-mode #playControls>.label,.match-mode #playControls>.aim,.match-mode #playControls>details,.match-mode #playControls>.meter,.match-mode #playControls>p{grid-column:1/-1}.match-mode #hitBtn{grid-column:1}.match-mode #hitBtn:has(+button[hidden]){grid-column:1/-1}.match-mode #waitBtn{grid-column:2;margin:0}.match-mode .label{margin:0}.match-mode .shots{margin:8px 0 0}.match-mode .hit{font-size:16px;margin:0}.match-mode .meter{margin:0}.match-mode .center.fine{margin:0}
@media(max-width:760px){.in-game .shell{padding:0 10px;max-width:500px}.in-game header{height:43px}.in-game .brand small{display:none}.in-game .screen{padding-top:6px}.game-head{margin-bottom:4px}.game-head b{font-size:13px}.game-head .round{min-width:32px;min-height:32px;padding:5px}.scoreboard{padding-bottom:3px}.canvas-wrap canvas{max-height:44svh;width:100%;height:auto;object-fit:contain}.team-key{margin:4px 0}.match-mode .coach{padding:7px 9px}.match-mode .coach b{font-size:12px}.match-mode .shots button{min-height:38px;font-size:12px}.match-mode .aim button{min-height:35px;padding:6px}.match-mode #playControls{gap:4px}.match-mode .label{font-size:10px}.match-mode .hit{min-height:47px;font-size:14px;padding:10px 5px}.match-mode #waitBtn{min-height:47px;font-size:12px;padding:10px 5px}#positions summary{min-height:24px}.match-mode .panel{background:var(--cream);position:sticky;bottom:0;padding:5px 0 max(5px,env(safe-area-inset-bottom));z-index:3}.match-mode .fine.center{font-size:9px}.match-mode .team-key{font-size:9px}}
@media(max-width:760px) and (max-height:740px){.canvas-wrap canvas{max-height:37svh}.in-game header{height:38px}.in-game .brand img{height:28px}.callbar{padding:4px 8px}.match-mode .coach{padding:5px 8px}.match-mode .shots button{min-height:35px}}

/* ARRONAX: retain the midnight court palette and red official mark. */
:root{color:#f4f7ef;background:#101e29;color-scheme:dark;--cream:#101e29;--red:#ee5148;--green:#a9d878;--line:#344650;--muted:#a8babf;--mint:#1b2c37}
.brand img{mix-blend-mode:normal;width:110px;height:38px;object-fit:contain}.brand>span{font-size:23px}.brand small{font-size:7px;letter-spacing:.8px}h1 em,.stamp{color:#d6fb70}.stats b,.team-key b{color:#d6fb70}.mini{background:#427b73;box-shadow:15px 15px #192f38}.zones{background:#264f54}.paddle,.choice,.lesson,.aim button,.position-buttons button,.shots button{background:#1b2c37}.paddle[aria-pressed=true]{background:#263b3e;border-color:#d6fb70}.paddle img{background:#fff}.paddle strong{font-size:18px}.red{background:#d6fb70;color:#102825}.red:hover{background:#e5ff9c}.light{background:#1b2c37;border-color:#344650;color:#f4f7ef}.light:hover{background:#2a424d}.coach{background:#1b2c37;border-color:#72cbb2}.tag{background:#2a424d;color:#d6fb70}.callbar{color:#18382d}.aim button[aria-pressed=true],.position-buttons button[aria-pressed=true]{background:#2c4b45;color:#d6fb70;border-color:#72cbb2}.shots button[aria-pressed=true]{background:#d6fb70;color:#153530;border-color:#d6fb70}dialog{background:#1b2c37;color:#f4f7ef;border-color:#53656d}dialog p{color:#b3c7c9}.meter{background:#2e4447}.ball-status{color:#17372b}.quick button:hover{color:#d6fb70}
@media(max-width:760px){.brand img{width:88px;height:32px}.in-game .brand img{width:75px;height:27px}.brand small{font-size:6px}.brand>span{font-size:20px}.paddle strong{font-size:15px}}

.brand img{background:#fffdf5;padding:4px;border-radius:5px}
