@font-face{font-family:Game;src:local('Trebuchet MS');font-display:swap}
:root{font-family:Game,'Trebuchet MS','Segoe UI',sans-serif;color:#294735;--ink:#294735;--cream:#fff9e7;--pink:#ed6e8d;--darkpink:#aa425f;--green:#456f48;font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#a3cb70}button{font:inherit;cursor:pointer;border:0;color:inherit;touch-action:manipulation}*:focus,*:focus-visible{outline:none!important}button:disabled{cursor:default;opacity:.6}button:not(:disabled):active{translate:0 2px}button{transition:filter .12s,translate .12s}button:hover:not(:disabled){filter:brightness(1.05)}[hidden]{display:none!important}canvas#world{position:fixed;inset:0;width:100%;height:100%;touch-action:none}#vignette{position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 110px #38673526}.screen{position:fixed;inset:0}.menu{padding:38px 6vw;pointer-events:none;background:linear-gradient(90deg,#f8f5dce8 0%,#f8f5dcc9 30%,#f8f5dc12 63%,transparent 100%)}.menu button{pointer-events:auto}.eyebrow{font-size:11px;font-weight:900;letter-spacing:2px;color:#587254}.menu h1{font-family:Game,'Trebuchet MS',sans-serif;font-weight:1000;font-size:clamp(62px,7.5vw,112px);letter-spacing:-6px;line-height:.92;margin:22px 0 25px;position:relative;color:#355c3d;text-shadow:0 4px 0 #ffffffa6}.menu h1 span{color:#dd5c7d}.menu h1 i{display:inline-block;font-style:normal;rotate:12deg;color:#dd5c7d;margin-left:8px}.primary{background:var(--pink);border:3px solid var(--darkpink);border-radius:20px;box-shadow:0 5px 0 var(--darkpink),inset 0 3px 0 #ffb6c5;color:#fff9e9;font-weight:900;min-height:54px;padding:12px 25px}.tiny{font-size:10px;font-weight:900;letter-spacing:1.7px}.iconbutton{background:var(--cream);border:2px solid #547253;border-radius:17px;width:50px;height:50px;font-size:26px;box-shadow:0 3px 0 #547253;display:grid;place-items:center;flex-shrink:0}.player-hud{position:absolute;top:max(22px,env(safe-area-inset-top));left:max(24px,env(safe-area-inset-left));display:flex;align-items:center;gap:10px;background:#fff9e8f5;border:2px solid #587b48;padding:7px 17px 9px 4px;border-radius:24px;box-shadow:0 4px 0 #42603626;width:340px}.player-hud>div{flex:1}.player-hud canvas{width:66px;height:66px}.player-hud strong{font-size:18px}.progress-label{display:flex;justify-content:space-between;font-size:10px;margin:6px 0;gap:8px}.track{background:#e1e5ca;border-radius:8px;overflow:hidden;height:9px}.track>div{height:100%;width:0;background:#ec7a91;border-radius:8px;transition:width .2s}.top-actions{position:absolute;right:max(25px,env(safe-area-inset-right));top:max(25px,env(safe-area-inset-top));display:flex;gap:14px}.coins{display:flex;gap:10px;align-items:center;background:#fff9e8;border:2px solid #71854e;border-radius:17px;padding:0 17px;font-size:23px;font-variant-numeric:tabular-nums}.coin{color:#eab634;text-shadow:0 2px 0 #bb8124;font-size:28px}.location{position:absolute;left:50%;top:31px;transform:translateX(-50%);font-size:10px;letter-spacing:1.5px;font-weight:900;color:#365c39;display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:center}.location>span:last-child{width:100%;text-align:center;font-size:10px;letter-spacing:0;font-weight:400}.live-dot{background:#4f8046;width:7px;height:7px;border-radius:50%}.rank{position:absolute;right:27px;top:102px;min-width:143px;font-size:11px;line-height:1.8;padding:9px 13px;background:#f8f6dce8;border-radius:16px;color:#42603e}.rank>b{font-size:9px;letter-spacing:1.4px}.rank div{display:flex;justify-content:space-between;gap:20px}.rank .you{color:#a83e5d;font-weight:900}.hint{position:absolute;bottom:160px;left:50%;transform:translateX(-50%);background:#fff9e8ef;padding:11px 20px;border-radius:20px;font-size:13px;text-align:center;max-width:80%;box-shadow:0 2px 0 #4c69452b;pointer-events:none}.target-info{position:absolute;left:50%;top:110px;transform:translateX(-50%);padding:8px 17px;background:var(--cream);border-radius:13px;font-size:12px;text-align:center;pointer-events:none}.controls-note{position:absolute;bottom:29px;left:28px;font-size:11px;color:#355936;display:flex;gap:7px;align-items:center}kbd{font-family:inherit;font-size:10px;display:inline-block;background:#fff9e8b0;padding:3px 6px;border:1px solid #5e7e4b40;border-bottom-width:2px;border-radius:5px}.action{position:absolute;bottom:max(32px,env(safe-area-inset-bottom));right:max(38px,env(safe-area-inset-right));width:114px;height:114px;border-radius:50%;background:#f5819a;border:4px solid #ab4d67;box-shadow:0 7px 0 #843e53,inset 0 4px 0 #ffcad2;color:#fff8e8;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;touch-action:none;user-select:none}.action span{font-size:31px;line-height:1}.action b{font-size:17px;letter-spacing:1px}.action small{font-size:8px;letter-spacing:1px}.action.charging{background:#d6a330;box-shadow:0 7px 0 #7e6931,inset 0 0 0 6px #f9d86d}.tug-panel{position:absolute;left:50%;bottom:max(30px,env(safe-area-inset-bottom));transform:translateX(-50%);width:410px;background:var(--cream);padding:16px 20px 10px;border:2px solid #54734c;border-radius:22px;box-shadow:0 5px 0 #3f63342b}.tug-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:10px;font-size:14px}.tug-title span{font-size:9px;letter-spacing:1px;color:#9d4b63}.timing{position:relative;height:31px;background:#e8bc91;border:2px solid #866d46;border-radius:9px;overflow:hidden}.sweet{position:absolute;left:40%;width:20%;height:100%;background:#769c58;border-left:2px solid #fff5d6;border-right:2px solid #fff5d6;text-align:center}.sweet:after{content:'';position:absolute;inset:0 36%;background:#bedd88}.sweet span{position:relative;z-index:1;font-size:8px;line-height:25px;font-weight:900;color:#213f2d}#needle{position:absolute;left:50%;width:4px;background:#fff9e9;box-shadow:0 0 0 2px #3a4938;height:100%;border-radius:3px}.tug-bottom{font-size:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px;min-height:28px}.tug-bottom button{font-size:10px;background:transparent;padding:8px}.joystick{display:none;position:absolute;bottom:30px;left:27px;width:112px;height:112px;border-radius:50%;background:#fff9e857;border:3px solid #4b733e59;touch-action:none}.joystick>div{position:absolute;left:29px;top:29px;width:48px;height:48px;border-radius:50%;border:2px solid #426e39aa;background:#fffae8bb;pointer-events:none}.toast{position:fixed;top:110px;left:50%;transform:translate(-50%,-15px);opacity:0;pointer-events:none;z-index:30;background:#fff8e4;border:2px solid #527043;border-radius:15px;padding:13px 22px;font-size:14px;font-weight:900;box-shadow:0 5px 0 #35542d22;transition:opacity .15s,transform .15s;max-width:90%;text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}dialog{padding:26px 30px;border:3px solid #466342;background:#fff9e8;border-radius:28px;color:var(--ink);width:min(960px,92vw);max-height:88dvh;box-shadow:0 12px 0 #294a362b;overflow:auto}dialog::backdrop{background:#233f3a80;backdrop-filter:blur(5px)}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:22px}.modal-head h2{font-size:32px;letter-spacing:-1px;margin:7px 0 0}.modal-head .iconbutton{font-size:30px;width:44px;height:44px;border-radius:13px}.collection-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.animal-card{position:relative;background:#e8edd5;border:2px solid #bed09b;border-radius:17px;min-height:190px;padding:7px 7px 12px;text-align:center}.animal-card canvas{width:100%;height:105px;object-fit:contain}.animal-card strong{display:block;font-size:13px;line-height:1.25;min-height:32px}.animal-card small{display:block;font-size:10px;margin-top:7px}.animal-card .number{position:absolute;top:8px;left:9px;font-size:10px;font-weight:900;color:#607b52}.animal-card.locked{background:#eeeadb;border-color:#d9d4c0}.animal-card.locked canvas{filter:saturate(.3);opacity:.75}.animal-card.selected{border:3px solid #d26280;background:#f9e7df;padding:6px 6px 11px}.animal-card .status{font-size:10px;color:#655940;margin-top:9px}.collection-note{font-size:11px;line-height:1.7;color:#69745a;margin:18px 0 0}.detail{display:grid;grid-template-columns:230px 1fr;gap:26px;align-items:center}.detail canvas{width:100%;height:230px;background:#e6edcf;border-radius:26px}.detail h3{font-size:23px;margin:0 0 10px}.detail p{font-size:14px;line-height:1.65}.detail .bio{font-size:11px;color:#627455}.detail a{color:#486e3c}.secondary{background:#e8edd7;border:2px solid #768960;border-radius:14px;min-height:48px;padding:10px 20px;font-weight:900}.button-row{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap}.help-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.help-step{background:#edf0d8;border-radius:18px;padding:24px 20px;font-size:14px;line-height:1.65}.help-step>b{display:grid;place-items:center;font-size:25px;background:#ffd891;border-radius:50%;width:47px;height:47px;margin-bottom:18px}.help-step h3{font-size:18px;margin:0 0 9px}.help-note{font-size:13px;line-height:1.7}.setting{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid #d9dec7;gap:20px;font-size:16px}.setting input{width:24px;height:24px;accent-color:#62884d}.setting small{display:block;font-size:12px;color:#798066;margin-top:5px}.pause-content{text-align:center;padding:15px 0}.pause-content canvas{width:150px;height:150px}.pause-content p{font-size:14px;line-height:1.7}.pause-content .button-row{justify-content:center}.unlock{text-align:center}.unlock canvas{width:220px;height:185px}.unlock h3{font-size:25px;margin:0 0 8px}.unlock p{font-size:14px;line-height:1.7;max-width:470px;margin:10px auto}.source-link{font-size:12px}.small{font-size:12px;color:#718062}.touch .joystick{display:block}.touch .controls-note{display:none}.touch .action small{display:none}.touch .hint{bottom:190px}
@media(max-width:1000px){.location{display:none}.menu h1{font-size:82px}.tug-panel{width:350px}.controls-note{bottom:18px;font-size:9px}.collection-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.animal-card strong{font-size:11px}.animal-card{min-height:170px}.animal-card canvas{height:85px}}
@media(max-width:680px){.menu{padding:20px 24px;background:linear-gradient(180deg,#faf5dde8 0%,#f8f5dc24 40%,#f8f5dcd9 74%)}.menu h1{font-size:67px;letter-spacing:-3.5px;margin:13px 0 17px;line-height:.93}.menu h1 br{display:none}.menu h1 span{display:block}.player-hud{top:max(13px,env(safe-area-inset-top));left:12px;width:235px;border-radius:18px;padding:5px 11px 6px 0;gap:0}.player-hud canvas{width:55px;height:55px}.player-hud strong{font-size:14px}.progress-label{font-size:9px;gap:4px}#next-name{display:none}.top-actions{right:12px;top:max(16px,env(safe-area-inset-top));gap:8px}.top-actions .iconbutton{width:43px;height:43px;font-size:22px;border-radius:14px}.coins{position:absolute;right:0;top:60px;font-size:17px;padding:2px 10px;border-radius:12px;gap:5px}.coins .coin{font-size:23px}.rank{top:92px;left:13px;right:auto;min-width:126px;font-size:9px;line-height:1.7;background:#f8f6dcbf}.rank div:nth-child(n+4){display:none}.rank>b{font-size:8px}.target-info{top:170px;max-width:90%;font-size:11px}.joystick{width:102px;height:102px;left:20px;bottom:27px}.joystick>div{left:24px;top:24px}.action{right:22px;bottom:32px;width:100px;height:100px}.action b{font-size:14px}.tug-panel{bottom:159px;width:calc(100% - 30px);max-width:390px;padding:12px 15px 8px;border-radius:18px}.tug-title{font-size:12px;margin-bottom:9px}.tug-title span{font-size:8px}.tug-bottom{font-size:9px}.hint{bottom:157px;width:max-content;max-width:88%;font-size:11px;padding:10px 14px}.touch .hint{bottom:157px}.controls-note{display:none}.joystick{display:block}dialog{padding:19px 16px;border-radius:23px;max-height:90dvh;width:94vw}.modal-head h2{font-size:26px}.modal-head .eyebrow{font-size:9px}.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.animal-card{min-height:180px}.animal-card canvas{height:98px}.animal-card strong{font-size:13px}.detail{grid-template-columns:1fr;gap:16px}.detail canvas{width:160px;height:150px;margin:auto}.detail h3{font-size:20px}.detail p{font-size:13px}.help-steps{grid-template-columns:1fr;gap:12px}.help-step{padding:16px;font-size:12px}.help-step>b{float:left;margin:0 17px 30px 0;width:35px;height:35px;font-size:20px}.help-step h3{font-size:16px}.toast{top:90px;font-size:12px;padding:10px 16px}.setting{font-size:14px}}
@media(max-height:560px) and (min-width:681px){.menu{padding:16px 4vw}.menu h1{font-size:57px;letter-spacing:-3px;margin:12px 0}.player-hud{top:10px;left:13px;scale:.85;transform-origin:top left}.top-actions{top:14px;right:15px}.rank{top:82px;font-size:9px}.hint{bottom:132px}.touch .hint{bottom:132px}.tug-panel{bottom:20px;width:350px}.action{width:94px;height:94px;right:24px;bottom:25px}.joystick{bottom:22px;left:20px;width:102px;height:102px}.joystick>div{left:24px;top:24px}.controls-note{display:none}.collection-grid{grid-template-columns:repeat(5,1fr)}.animal-card{min-height:140px}.animal-card canvas{height:65px}.detail canvas{height:150px}.modal-head{margin-bottom:12px}.modal-head h2{font-size:24px}dialog{max-height:94dvh}.help-step{padding:15px;font-size:12px}.help-step>b{margin-bottom:10px}.help-step h3{font-size:15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
@media(max-width:680px){.menu{background:linear-gradient(180deg,#faf5ddd9 0%,#f8f5dc15 36%,transparent 62%,#f8f5dce8 84%)}.menu h1 i{position:absolute;top:.93em;left:3.35em;margin:0}}

/* v2: compositor-only timing, touch combat, cheaper paused overlay */
#needle{left:0;will-change:transform;transition:none!important}.sweet{left:33%;width:34%}.sweet:after{inset:0 38%}dialog::backdrop{backdrop-filter:none}.range-preview{height:12px;border-radius:6px;background:#e1e6ca;overflow:hidden}.range-preview i{display:block;height:100%;background:#e47f9e;border-radius:6px;min-width:12px}.duel-actions{position:absolute;right:173px;bottom:35px;display:flex;flex-direction:column;gap:9px}.duel-actions button{font-size:11px;font-weight:bold;background:#fff9e8;border:2px solid #718457;border-radius:13px;min-height:43px;padding:8px 12px;box-shadow:0 2px 0 #718457}.duel-actions kbd{margin-left:3px}.duel-actions button:disabled{opacity:.5}.controls-note{bottom:14px}
@media(max-width:680px){.duel-actions{right:auto;left:50%;transform:translateX(-50%);bottom:31px;gap:8px;width:100px}.duel-actions button{font-size:10px;padding:7px 3px;min-height:43px}.duel-actions kbd{display:none}}
@media(min-width:681px) and (max-width:1100px){.duel-actions{right:25px;bottom:151px}.duel-actions kbd{display:none}.duel-actions button{min-height:40px}.rank{display:none}}
@media(max-height:560px) and (min-width:681px){.duel-actions{bottom:133px;right:24px;gap:5px}.duel-actions button{min-height:37px;font-size:10px}.tug-panel{width:330px}.target-info{top:76px}.hint{max-width:50%}}

/* Direct arena input: no attack buttons. */
#world{cursor:crosshair;touch-action:none}#timing{cursor:pointer;touch-action:none}.tug-bottom>span:last-child{font-size:11px}.hint{pointer-events:none}

#timing.escape .sweet{left:46.5%;width:7%}#timing.escape .sweet span{display:none}

#zoom-status{display:inline-block;margin-left:14px}.controls-note{pointer-events:none}

.combat-status{position:absolute;top:118px;left:28px;display:flex;flex-direction:column;gap:5px;pointer-events:none}.combat-status strong{font-size:25px;color:#ba526c;text-shadow:0 2px #fff8dd}.combat-status span{font-size:11px;color:#355936;background:#fff9e8d9;padding:5px 9px;border-radius:9px}.event-banner{position:absolute;top:64px;left:50%;transform:translateX(-50%);max-width:42vw;text-align:center;font-size:12px;font-weight:bold;color:#5c5039;background:#fff3cfe8;border:2px solid #b29e61;padding:8px 14px;border-radius:13px;pointer-events:none}.location{top:24px}@media(max-width:680px){.combat-status{left:13px;top:88px}.combat-status span{max-width:200px;font-size:9px}.combat-status strong{font-size:20px}.event-banner{top:158px;width:70vw;max-width:70vw;font-size:10px;padding:6px}.rank{top:207px}.target-info{top:195px}}.wardrobe-head{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:18px}.wardrobe-head b{font-size:22px;color:#a4782b}.wardrobe-head span{font-size:12px;color:#6a7a57}.wardrobe-tabs{display:flex;gap:7px;overflow-x:auto;padding:0 0 14px}.wardrobe-tabs button{white-space:nowrap;background:#e4ebd1;border:2px solid transparent;border-radius:12px;padding:9px 13px;font-size:12px}.wardrobe-tabs button.active{background:#fff1cd;border-color:#c99850}.wardrobe-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(230px,1fr);gap:22px}.wardrobe-stage canvas{display:block;width:100%;height:auto;border-radius:22px;border:2px solid #a6ba83}.wardrobe-stage p{text-align:center;font-size:13px}.wardrobe-items{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:start}.wardrobe-items>.primary,.wardrobe-items>.small{grid-column:1/-1}.look-card{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:115px;padding:12px 6px;border:2px solid #c0cba4;border-radius:15px;background:#edf0dc}.look-card.selected{border-color:#d37592;background:#fae8de}.look-card b{font-size:12px}.look-card small{font-size:10px;color:#677b52}.look-swatch{display:grid;place-items:center;border-radius:14px;background:var(--swatch,#c5ceac);color:#fff8e4;width:47px;height:38px;font-size:25px}.nickname{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px}.nickname input{min-width:100px;flex:1;border:2px solid #b5c594;background:#fffdf1;border-radius:11px;padding:10px;color:#37543d}.nickname button{font-size:11px;min-height:38px;padding:7px 10px}.bug-index{display:flex;flex-wrap:wrap;gap:8px}.bug-index span{padding:9px 12px;background:#e2e7d4;border:2px solid #c7cfb9;border-radius:12px;font-size:12px;color:#8b9480}.bug-index .found{border-color:var(--bug-color);color:#3c563e;background:#fff7df}.defeat-panel{text-align:center}.defeat-panel>canvas{max-width:180px}.defeat-panel p{line-height:1.6}.defeat-panel .button-row{justify-content:center}.ad-demo{margin:25px auto;font-size:60px;color:#a4bf7e;background:#e6edd3;border-radius:25px;padding:40px;max-width:280px}.top-actions #emote{font-size:24px}@media(max-width:680px){.wardrobe-layout{grid-template-columns:1fr}.wardrobe-head{align-items:start;flex-direction:column;gap:6px}.wardrobe-items{grid-template-columns:repeat(2,1fr)}.wardrobe-stage canvas{max-height:250px;object-fit:contain;background:#b4d481}.wardrobe-tabs{max-width:100%}.top-actions #emote{width:37px;height:37px;font-size:21px}}

.index4-card.undiscovered canvas{filter:brightness(0) opacity(.68)}.index4-card.undiscovered{background:#dce2ce}.biome-picture{display:block;width:100%;height:auto;aspect-ratio:9/4;object-fit:cover}.biome-card:disabled{opacity:1}

.profession-art{display:block;width:100%;height:auto;border-radius:12px;border:1px solid #a9b78d}.class-card:disabled .profession-art{filter:saturate(.45)}.class-card{overflow:hidden}

#contest-art{width:100%;height:auto;display:block;margin:0 0 8px;pointer-events:none}#contest-art[hidden]{display:none}

#timing-zones{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.timing.multi .sweet{display:none}#timing-zones[hidden]{display:none}

/* Brief impact cue with a clear centre and a caption just above the rhythm HUD. */
#impact-feedback{--impact-size:min(88vw,64vh,520px);--burst-size:calc(var(--impact-size)*1.22);position:fixed;inset:0;z-index:25;pointer-events:none}
#impact-edge{position:absolute;inset:0;opacity:0;box-shadow:inset 0 0 65px 12px currentColor}
#impact-caption{position:absolute;left:50%;bottom:max(205px,calc(env(safe-area-inset-bottom) + 180px));transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);padding:10px 18px;border:2px solid currentColor;border-radius:16px;background:#fff9e7f2;text-align:center;box-shadow:0 4px 0 #364c3420}
#impact-title{display:block;font-size:clamp(14px,2.4vw,20px);letter-spacing:.5px}#impact-detail{display:block;color:#42523d;font-size:12px;margin-top:4px}
@media(max-height:560px){#impact-caption{bottom:160px;padding:7px 13px}}

#impact-icon{position:absolute;left:50%;top:calc(43% - var(--impact-size)/2);width:var(--impact-size);margin-left:calc(var(--impact-size)/-2);opacity:0;filter:drop-shadow(0 9px 0 #344f4840);will-change:transform,opacity}
#impact-icon svg{display:block;width:100%;height:auto;overflow:visible}
#impact-burst{position:absolute;left:calc(50% - var(--burst-size)/2);top:calc(43% - var(--burst-size)/2);width:var(--burst-size);height:var(--burst-size);opacity:0;background:#fff2ba;clip-path:polygon(50% 0,57% 27%,78% 7%,72% 34%,100% 29%,80% 48%,100% 64%,73% 65%,85% 94%,61% 77%,49% 100%,41% 76%,16% 96%,25% 67%,0 68%,23% 50%,0 29%,29% 34%,20% 6%,43% 26%)}

.jump-button{position:fixed;right:max(22px,env(safe-area-inset-right));bottom:max(28px,env(safe-area-inset-bottom));width:94px;height:94px;border:3px solid #47777a;border-radius:50%;background:#a7dfd2;color:#294b4a;box-shadow:0 5px 0 #47777a;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;touch-action:none;z-index:8}.jump-button span{font-size:29px;line-height:1}.jump-button b{font-size:11px}.jump-button small{font-size:9px}@media(max-width:680px){.jump-button{bottom:32px;right:24px}}

/* The gauge uses gold only for the actual perfect-hit interval. */
.sweet{background:#b6cf93}.sweet:after{inset:0 32.5%;background:#f4c44e;box-shadow:inset 0 0 0 1px #b48527}.sweet span{color:#805510;font-size:15px;line-height:25px}#timing.escape .sweet:after{display:none}
#timing[data-result="perfect"]{box-shadow:0 0 0 3px #edbe43,0 0 18px #edbe4366}#timing[data-result="hit"]{box-shadow:0 0 0 2px #82aa65}#timing[data-result="miss"]{box-shadow:0 0 0 3px #c86a71;background:#d9a099}
#contest-readout{display:grid;gap:4px;margin:8px 0 0;text-align:center}#contest-lead{font-size:16px;letter-spacing:.5px}#contest-lead[data-side="you"]{color:#4b7b39}#contest-lead[data-side="rival"]{color:#b04f54}#contest-strength{font-size:12px;font-weight:800}#contest-advice{font-size:11px;color:#87652d}#contest-rule{font-size:11px;line-height:1.4;margin:3px 0;color:#647057}#contest-art{width:100%;height:auto;display:block;margin:3px 0 8px}.tug-title{gap:6px;flex-wrap:wrap}.tug-title>span{font-size:10px}.tug-bottom{gap:6px;flex-wrap:wrap}

/* Compact interaction HUD: portraits, tempo, progress and timing only. */
.tug-panel{width:350px;max-width:calc(100vw - 24px);padding:9px 13px 12px;border-radius:19px}.tug-panel .tug-title,.tug-panel .tug-bottom,#contest-readout{display:none!important}#contest-art{margin:0 0 3px;width:100%;height:auto}#timing{height:27px}.sweet span{line-height:21px}.tug-panel .sweet span{font-size:13px}
@media(max-width:680px){.tug-panel{width:330px;bottom:145px;padding:8px 12px 11px}}@media(max-height:520px){.tug-panel{bottom:12px;width:310px}}


#lesson-controls{position:fixed;z-index:46;top:16px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;padding:7px 12px;border-radius:22px;background:#fff9e8ed;border:1px solid #839c65;font-size:12px;white-space:nowrap}#lesson-controls button{background:none;border:0;padding:5px;color:#486442}#lesson-exit{font-size:22px}
#lesson-panel{position:fixed;z-index:45;top:0;left:0;padding:12px 15px;background:#fffbed;border:2px solid #63894d;border-radius:22px;box-shadow:0 4px 0 #40693324;pointer-events:none;will-change:transform}#lesson-panel:after{content:"";position:absolute;left:var(--tail-x,50%);bottom:-9px;width:14px;height:14px;background:#fffbed;border-right:2px solid #63894d;border-bottom:2px solid #63894d;transform:translateX(-50%) rotate(45deg)}#lesson-panel[data-side=top]:after{bottom:auto;top:-9px;transform:translateX(-50%) rotate(225deg)}#lesson-title{font-size:11px;color:#73835c;margin:0 0 4px;font-weight:600}#lesson-text{font-size:16px;line-height:1.3;margin:0;font-weight:600}#lesson-progress{font-size:17px;letter-spacing:5px;color:#73994d;margin-top:5px}#lesson-progress:empty{display:none}#lesson-next{pointer-events:auto;background:#f2d68a;border:1px solid #b29c5d;border-radius:12px;padding:7px 14px;margin-top:8px;font-weight:bold}#lesson-panel[hidden],#lesson-controls[hidden],#lesson-next[hidden]{display:none}
.lesson-focus{outline:3px solid #fff6a1!important;outline-offset:5px;animation:lesson-glow 1.2s ease-in-out infinite}@keyframes lesson-glow{50%{box-shadow:0 0 0 9px #ffe87865}}body.training #rank,body.training .location,body.training #event-banner,body.training #ecology-banner,body.training #hint,body.training #contest-advice,body.training #contest-rule{display:none!important}@media(max-width:680px){#lesson-controls{top:6px;gap:3px;padding:3px 9px}#lesson-text{font-size:14px}}@media(prefers-reduced-motion:reduce){.lesson-focus{animation:none}}

#lesson-panel[data-side=right]:after{left:auto;right:-9px;top:auto;bottom:18px;transform:rotate(-45deg)}

#impact-caption{display:none!important}#impact-icon canvas{width:100%;height:100%;object-fit:contain}

.ability-list{display:inline-flex;gap:5px;vertical-align:middle;margin-right:6px;flex-wrap:wrap}.ability-badge{display:inline-grid;place-items:center;width:25px;height:25px;box-sizing:border-box;border:1.5px solid #6d9b9d;border-radius:50%;background:#d5eff0;color:#337b8b;font:bold 19px Trebuchet MS;cursor:help;flex-shrink:0}#game-tooltip{position:fixed;z-index:100000;max-width:min(260px,calc(100vw - 16px));padding:10px 14px;border:2px solid #779164;border-radius:14px;background:#fff8dc;color:#37543e;box-shadow:0 4px 0 #36523530;font:700 14px Trebuchet MS;pointer-events:none}#game-tooltip[hidden]{display:none}

.quest-card small,.quest-card b,.quest-card span{display:block}.quest-card{gap:12px}.quest-card button{flex-shrink:0}
/* A stable instruction strip reserves space above the practice field. */
body.training #hud .player-hud,body.training #hud .top-actions,body.training #hint,body.training #toast{display:none!important}
#lesson-controls{top:6px;gap:6px;padding:3px 10px;border-radius:12px;font-size:11px;height:30px;box-sizing:border-box}
#lesson-controls button{font:inherit;padding:3px 7px;min-height:22px}#lesson-controls button:disabled{opacity:.4}#lesson-exit{font-size:18px!important}
#lesson-panel{top:43px;left:50%;transform:translateX(-50%);width:min(600px,calc(100vw - 180px));box-sizing:border-box;padding:8px 12px;border-radius:12px;display:grid;grid-template-columns:1fr auto;gap:3px 12px;align-items:center;will-change:auto}
#lesson-panel:after{display:none}#lesson-title{grid-column:1;font-size:11px;margin:0}#lesson-text{grid-column:1;font-size:14px;line-height:1.25}#lesson-progress{grid-column:2;grid-row:1;margin:0;font-size:12px;letter-spacing:3px}#lesson-next{grid-column:2;grid-row:2;margin:0;padding:5px 10px;font-size:12px;border-radius:8px}
body.training #rank-dock{top:45px!important}body.training #bait-event{display:none!important}
@media(max-height:450px){#lesson-controls{top:3px;height:28px}#lesson-panel{top:36px;padding:6px 9px;gap:2px 8px}#lesson-title{font-size:10px}#lesson-text{font-size:12px}#lesson-next{font-size:11px;padding:4px 8px}}
@media(max-width:700px){#lesson-panel{width:calc(100vw - 160px)}}

/* Game surfaces do not expose browser text selection or tap rectangles. */
html,body,button,canvas{user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}
input,textarea,[contenteditable=true]{user-select:text;-webkit-user-select:text}
button:focus:not(:focus-visible){outline:none}button:focus-visible{outline:3px solid #e4b94f;outline-offset:3px}
#lesson-shade{position:fixed;inset:0;z-index:40;background:#25302d70;touch-action:none}
#lesson-tap{position:fixed;z-index:44;bottom:12px;left:50%;transform:translateX(-50%);background:#fff8d8;border:2px solid #ac8b40;border-radius:14px;padding:8px 16px;font-weight:bold;pointer-events:none;white-space:nowrap}
#lesson-target{position:fixed;left:0;top:0;width:65px;height:65px;border:3px dashed #fff2a2;border-radius:50%;pointer-events:none;z-index:9;box-shadow:0 0 0 5px #e8ba4b44}
#lesson-shade[hidden],#lesson-tap[hidden],#lesson-target[hidden]{display:none}
body.lesson-guided #tug-panel{z-index:42;pointer-events:none}
body.training #detach{display:none!important}

body.training #release-grip,body.training:not([data-lesson=move]) #jump{display:none!important}
/* Keep the tap instruction in the top strip, clear of the tug display. */
#lesson-tap{display:none}
body.lesson-guided #lesson-text:before{content:"☝ ";color:#9b6818}

body.lesson-guided #impact-feedback{visibility:hidden}
@media(orientation:landscape) and (max-height:330px){body.touch.training #tug-panel{bottom:max(5px,env(safe-area-inset-bottom))}}

/* Game surfaces do not expose browser text selection; editable fields still do. */
body *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body input,body textarea,body [contenteditable=true]{-webkit-user-select:text;user-select:text}img,svg{-webkit-user-drag:none}
