/* Giải cứu từ vựng · local Vietnamese typography */
@font-face{font-family:"Sun Vietnamese";src:url("assets/fonts/Nunito-Vietnamese.ttf") format("truetype");font-style:normal;font-weight:200 1000;font-display:swap}
:root{
  font-family:"Sun Vietnamese",system-ui,-apple-system,"Segoe UI",sans-serif;
  color:#2a241f;background:#2d8da8;--gold:#ffd84a;--orange:#ff922e;--green:#51cf38;
  --blue:#168be3;--purple:#9c49dd;--red:#ef553f;--ink:#25223c
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;overflow-x:hidden}button,input,label{font:inherit}button{touch-action:manipulation}.game-shell{min-height:100vh;background:#62c8ee url("assets/vocab/forest-falls.svg") center/cover fixed}.game-shell:after{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(#fff0 70%,#143d2760),radial-gradient(circle at 50% 44%,transparent 35%,#123b2740 130%);z-index:0}
/* wooden title */
.game-head{position:relative;z-index:30;height:104px;display:flex;align-items:center;padding:8px clamp(12px,3vw,48px);pointer-events:none}.game-title{position:absolute;left:50%;top:9px;transform:translateX(-50%);min-width:min(620px,58vw);height:91px;display:grid;place-items:center;padding:8px 60px 13px;color:#fff;background:linear-gradient(178deg,#9b5528 0,#70401f 46%,#4b2c19 100%);border:5px solid #4d2b15;border-radius:45% 45% 24px 24px/35% 35% 18px 18px;box-shadow:inset 0 4px #e29b54,inset 0 -6px #321b0d,0 8px 0 #352011,0 15px 24px #17351e70;isolation:isolate}.game-title:before,.game-title:after{content:"";position:absolute;left:8%;right:8%;height:2px;background:#d6904f55;box-shadow:0 17px #29150766,0 35px #d6904f33;z-index:-1}.game-title strong{display:block;white-space:nowrap;font-size:clamp(25px,3.5vw,51px);font-weight:1000;letter-spacing:-2px;line-height:1;color:#65e53d;-webkit-text-stroke:2px #214619;text-shadow:0 4px 0 #173811,0 6px 4px #160c05}.game-title strong em{font-style:normal;color:#ffd34a;-webkit-text-stroke-color:#7a3516;text-shadow:0 4px #8f3b18,0 6px 4px #160c05}.game-title small{display:block;text-align:center;color:#fff0bd;font-weight:900;font-size:10px;letter-spacing:2px;margin-top:4px;text-shadow:0 2px #38200f}.leaf{position:absolute;width:53px;height:25px;background:linear-gradient(135deg,#8cde45,#237f31);border:2px solid #155323;border-radius:100% 0 100% 0;filter:drop-shadow(0 3px 2px #19361666)}.leaf-left{left:10px;top:10px;transform:rotate(-25deg)}.leaf-right{right:10px;top:11px;transform:scaleX(-1) rotate(-25deg)}.home-link,.head-actions{pointer-events:auto;position:relative;z-index:2}.home-link{color:#fff;text-decoration:none;font-weight:1000;padding:11px 15px;border-radius:18px;background:linear-gradient(#39aaf1,#0870c7);border:3px solid #fff;box-shadow:0 4px 0 #075999,0 7px 12px #163a3960;text-shadow:0 2px #075999}.head-actions{margin-left:auto;display:flex;gap:8px}.head-actions button,.game-sound-toggle{display:grid!important;place-items:center;width:52px!important;height:52px!important;min-width:52px;border-radius:50%!important;border:4px solid #fff!important;background:linear-gradient(#31c5ff,#0877dc)!important;color:#fff!important;font-size:23px!important;cursor:pointer;box-shadow:0 5px 0 #07599e,0 8px 13px #17384d66!important}
main{position:relative;z-index:2}.screen{min-height:calc(100vh - 104px)}[hidden]{display:none!important}
/* setup */
.setup-screen{max-width:1220px;margin:auto;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:34px;padding:24px 28px 40px}.setup-art{height:min(610px,72vh);min-height:480px;position:relative}.hero-preview{position:absolute;width:230px;right:5%;bottom:4%;filter:drop-shadow(0 18px 17px #163f2c77);animation:heroFloat 3.2s ease-in-out infinite}.hero-preview svg{display:block;width:100%}.preview-rock{position:absolute;left:8%;top:14%;width:235px;aspect-ratio:1.45;display:grid;place-items:center;padding:25px;color:var(--ink);font-size:28px;font-weight:1000;background:radial-gradient(circle at 35% 20%,#f7f3eb,#c6c2bb 42%,#7d7d78 74%,#555750);clip-path:polygon(15% 3%,78% 0,98% 26%,91% 76%,68% 98%,19% 92%,1% 60%,5% 23%);filter:drop-shadow(0 16px 10px #18382c77);text-shadow:0 2px #fff;animation:rockHover 2.8s ease-in-out infinite}.crystal{display:none}.setup-card{position:relative;background:linear-gradient(160deg,#fffef8,#f6f3e8);border:6px solid #e7e3d3;border-radius:38px;padding:48px 34px 27px;box-shadow:inset 0 0 0 3px #fff,inset 0 -12px 25px #b0aa9466,0 13px 0 #6b654f,0 22px 38px #183e2d66}.setup-card:before,.setup-card:after{content:"";position:absolute;width:92px;height:52px;bottom:-9px;background:radial-gradient(ellipse at 50% 100%,#348b37 0 22%,transparent 24%),radial-gradient(ellipse at 20% 100%,#71c748 0 22%,transparent 24%),radial-gradient(ellipse at 80% 100%,#74ce49 0 22%,transparent 24%);z-index:-1}.setup-card:before{left:-35px}.setup-card:after{right:-35px;transform:scaleX(-1)}.setup-plaque{position:absolute;left:50%;top:-31px;transform:translateX(-50%);width:min(330px,78%);padding:9px 22px;text-align:center;color:#fff5c7;font-size:24px;font-weight:1000;letter-spacing:.6px;background:linear-gradient(#a75c2e,#663519);border:4px solid #482511;border-radius:45% 45% 16px 16px/35% 35% 14px 14px;box-shadow:inset 0 3px #df9758,0 6px 0 #34200f,0 9px 12px #0004;text-shadow:0 3px #4b2411}.kicker{margin:1px 0 5px;color:#2b9142;font-size:11px;font-weight:1000;letter-spacing:1.4px;text-align:center}.setup-card h1{margin:0;text-align:center;color:#54341e;font-size:clamp(30px,3.3vw,45px);line-height:1.05;text-shadow:0 2px #fff}.lead{margin:9px auto 15px;text-align:center;max-width:490px;color:#60594e;font-weight:700;font-size:14px;line-height:1.4}fieldset{border:0;padding:0;margin:16px 0}legend{width:100%;margin-bottom:7px;text-align:center;color:#4c453d;font-weight:1000}.mode-grid,.time-grid{display:grid;gap:10px}.mode-grid{grid-template-columns:1fr 1fr}.mode-card{position:relative;min-height:79px;padding:13px 11px 11px 51px;border:3px solid #b9c5c7;border-radius:18px;background:linear-gradient(#fff,#e5edf0);box-shadow:inset 0 -5px #ced7d9,0 4px 7px #6a706e25;cursor:pointer}.mode-card:has(input:checked){border-color:#ffa51e;background:linear-gradient(#fff9d2,#ffe580);box-shadow:inset 0 -5px #ffc235,0 0 0 3px #fff,0 0 0 6px #ffad18,0 7px 15px #ef931b45}.mode-card input,.time-grid input{position:absolute;opacity:0}.mode-icon{position:absolute;left:13px;top:17px;font-size:28px}.mode-card strong,.mode-card small{display:block}.mode-card strong{color:#493226;font-size:15px}.mode-card small{color:#6c6862;font-size:10px;line-height:1.2;margin-top:4px}.time-grid{grid-template-columns:repeat(3,1fr)}.time-grid label{position:relative;cursor:pointer}.time-grid span{display:block;padding:11px 3px;text-align:center;color:#46505d;font-weight:1000;border:3px solid #b8c1c5;border-radius:17px;background:linear-gradient(#fff,#e5eaed);box-shadow:inset 0 -4px #d1d7da}.time-grid input:checked+span{color:#fff;border-color:#fff;background:linear-gradient(#31c8ff,#0388ee);box-shadow:inset 0 -5px #086ec8,0 0 0 4px #10aefd,0 5px 10px #0877bb55}.primary-btn,.secondary-btn{border:0;border-radius:20px;font-weight:1000;cursor:pointer}.primary-btn{width:100%;min-height:58px;color:#fff;font-size:24px;letter-spacing:.5px;background:linear-gradient(#74eb43,#25ae1b);border:4px solid #fff;box-shadow:inset 0 -7px #188b12,0 0 0 3px #159e16,0 8px 13px #1458174f;text-shadow:0 3px #14770e;transition:transform .15s,filter .15s}.primary-btn:hover{filter:brightness(1.08);transform:translateY(-2px)}.tip{text-align:center;margin:10px 0 0;color:#6d645b;font-size:11px}
/* HUD */
.play-screen{position:relative;min-height:calc(100vh - 104px)}.hud{position:absolute;z-index:16;left:50%;top:5px;transform:translateX(-50%);display:flex;align-items:center;gap:7px;padding:7px 10px;border:4px solid #4f2c18;border-radius:18px;background:linear-gradient(#9d5c31,#63371d);box-shadow:inset 0 3px #dd975d,inset 0 -4px #3c1f11,0 6px 0 #2c190f,0 10px 17px #15382e55}.hud-item{min-width:92px;display:flex;align-items:center;gap:7px;padding:3px 9px;color:#fff;border-right:2px solid #e9b77855}.hud-item:last-child{border:0}.hud-item>span{font-size:24px}.hud-item small{display:block;color:#ffe7a7;font-size:7px;font-weight:1000;letter-spacing:1px}.hud-item strong{display:block;font-size:17px;text-shadow:0 2px #392012}.timer-track{display:none}.score strong{color:#fff6a9}.combo strong{color:#ffe4b2}
/* world */
.rescue-world{position:absolute;inset:0;overflow:hidden;background:url("assets/vocab/forest-falls.svg") center/cover no-repeat;box-shadow:inset 0 0 80px #153f2770}.rescue-world:after{content:"";position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(90deg,#123a2530,transparent 20% 80%,#123a2530),linear-gradient(transparent 76%,#183b263f)}.ambient-canvas{position:absolute;z-index:3;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}.sky-glow,.mountain,.waterfall,.mist,.cliff{display:none}.particles{position:absolute;inset:0;z-index:12;pointer-events:none}.dust{position:absolute;width:7px;height:7px;border-radius:50%;background:#fff8a5;box-shadow:0 0 12px #fff58c;animation:floatUp linear forwards}.mission-ribbon{position:absolute;z-index:14;top:73px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:6px 12px;color:#fff5bd;background:linear-gradient(#9e5a2d,#5c321a);border:3px solid #44230f;border-radius:17px;box-shadow:inset 0 3px #df9854,0 5px 0 #321c0f,0 9px 13px #163b2b55}.level-chip{font-size:12px;font-weight:1000;letter-spacing:.6px}.mission-copy{font-size:8px;font-weight:1000;letter-spacing:1.2px;color:#ffe4a4}.feedback{position:absolute;z-index:15;left:50%;top:57%;transform:translate(-50%,-50%) scale(.75);padding:10px 22px;border-radius:22px;background:#fff;color:#3da91d;font-size:clamp(20px,2.2vw,32px);font-weight:1000;opacity:0;pointer-events:none;filter:drop-shadow(0 5px 5px #18412766);transition:.16s}.feedback:before{content:"✓";display:inline-grid;place-items:center;width:39px;height:39px;margin-right:9px;color:#fff;background:#46ca29;border:4px solid #fff;border-radius:50%;box-shadow:0 0 0 3px #3fba24}.feedback.bad{color:#dd3f2b}.feedback.bad:before{content:"!";background:#ef553f;box-shadow:0 0 0 3px #cf3929}.feedback.show{opacity:1;transform:translate(-50%,-50%) scale(1)}.fall-gauge,.danger-line{display:none}.route-beam{position:absolute;z-index:7;height:11px;left:50%;top:50%;width:0;transform-origin:0 50%;border-radius:99px;opacity:0;pointer-events:none;background:linear-gradient(90deg,#fff0,#b7ff54,#fff0);box-shadow:0 0 12px #94ff4b,0 0 30px #73ff35;transition:opacity .12s}.route-beam.show{opacity:.9;animation:beamPulse .22s ease-in-out infinite alternate}.route-beam.bad{background:linear-gradient(90deg,#fff0,#ffcf52,#f44,#fff0);box-shadow:0 0 14px #ffb735,0 0 34px #f43}
/* rock */
.falling-rock{--y:0px;--rot:0deg;position:absolute;z-index:11;left:50%;top:128px;translate:-50% var(--y);rotate:var(--rot);width:clamp(185px,21vw,310px);min-height:130px;aspect-ratio:1.63;display:grid;place-items:center;padding:32px 38px;color:#26233c;font-size:clamp(21px,2.15vw,31px);font-weight:1000;line-height:1.12;text-align:center;background:radial-gradient(circle at 35% 18%,#fff 0,#e4e1dc 17%,#b9b5b1 42%,#868986 69%,#5c6461 100%);clip-path:polygon(14% 3%,72% 0,96% 19%,100% 56%,84% 85%,61% 100%,20% 93%,1% 62%,5% 24%);filter:drop-shadow(0 19px 12px #17362488);text-shadow:0 2px #fff;transform-origin:50% 55%;isolation:isolate}.falling-rock:before{content:"";position:absolute;inset:5%;z-index:-1;border:2px solid #fff6;clip-path:inherit;background:linear-gradient(135deg,#fff5,transparent 28% 70%,#34403c22)}.falling-rock:after{content:"";position:absolute;z-index:-2;left:22%;right:22%;top:-55px;height:82px;background:linear-gradient(0deg,#fff8,transparent);filter:blur(10px);opacity:.35}.rock-glint{position:absolute;left:20%;top:15%;width:39%;height:18%;border-radius:50%;background:linear-gradient(100deg,#fff,transparent);filter:blur(2px);rotate:-8deg}.rock-rune{display:none}.rock-trail{position:absolute;z-index:-2;left:30%;right:30%;height:105px;bottom:70%;background:linear-gradient(0deg,#d9fff599,transparent);filter:blur(8px);clip-path:polygon(35% 0,65% 0,100% 100%,0 100%);opacity:calc(.14 + var(--danger,0)*.45)}.falling-rock.danger{filter:drop-shadow(0 19px 12px #47281799) drop-shadow(0 0 13px #ffce57)}.sentence-rock{width:clamp(260px,34vw,500px);aspect-ratio:2.75;min-height:120px;font-size:clamp(18px,2vw,29px);padding-inline:55px}
/* bins and Sun */
.rescue-row{position:absolute;z-index:10;left:3%;right:3%;bottom:2%;height:180px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:end}.category-bin{position:relative;height:148px;padding:42px 10px 14px;border:5px solid #fff8;outline:4px solid currentColor;border-radius:21px 21px 35px 35px/14px 14px 25px 25px;color:#fff;cursor:pointer;overflow:visible;box-shadow:inset 0 8px #fff7,inset 0 -13px #0002,0 10px 0 #513e2770,0 17px 20px #173c2d55;transition:transform .18s,filter .18s}.category-bin:before{content:"";position:absolute;left:-7px;right:-7px;top:-20px;height:44px;border-radius:50%;background:currentColor;border:5px solid #fff9;box-shadow:inset 0 7px #fff8,inset 0 -8px #0004,0 5px 7px #173c2d66}.category-bin:after{content:"";position:absolute;left:10%;right:10%;bottom:-13px;height:20px;border-radius:50%;background:#1c452d88;filter:blur(5px);z-index:-1}.bin-a{color:#1597ed;background:linear-gradient(145deg,#36b8ff,#137bd2 58%,#0863b4)}.bin-b{color:#ff9a2f;background:linear-gradient(145deg,#ffbd43,#f78b20 58%,#d96713)}.bin-c{color:#a555e4;background:linear-gradient(145deg,#c96cff,#9847d7 58%,#7130ae)}.category-bin strong{display:block;color:#fff;font-size:clamp(14px,1.6vw,22px);line-height:1;text-shadow:0 3px #3337}.category-bin small{display:block;color:#fffde9;font-size:9px;font-weight:900;margin-top:5px;text-shadow:0 2px #3337}.bin-icon{position:absolute;left:15px;top:38px;font-size:39px;line-height:1;filter:drop-shadow(0 3px #3335)}.bin-number{position:absolute;z-index:3;right:7px;top:-17px;display:grid;place-items:center;width:28px;height:28px;border:3px solid #fff;border-radius:50%;color:#554221;background:#ffe846;font-size:13px;font-weight:1000;box-shadow:0 3px 0 #a56c11}.gate-light{position:absolute;inset:-11px 6% auto;height:15px;border-radius:50%;background:#fff;filter:blur(6px);opacity:.28}.category-bin:disabled{cursor:default}.category-bin.targeted{transform:translateY(-12px) scale(1.03);filter:brightness(1.15);box-shadow:inset 0 8px #fff9,inset 0 -13px #0002,0 10px 0 #513e2770,0 0 35px currentColor}.sun-zone{height:148px;position:relative;display:grid;place-items:end center}.sun-zone:before{content:"";position:absolute;left:8%;right:8%;bottom:11px;height:50px;background:linear-gradient(#69cd43,#399635);border:4px solid #f1db9a;border-radius:50%;box-shadow:inset 0 7px #a5eb64,0 11px 0 #685238,0 15px 15px #173c2d55}.sun-character{position:relative;z-index:2;height:163px;filter:drop-shadow(0 8px 7px #183e2d66);transform-origin:50% 95%}.sun-character svg{display:block;height:100%;overflow:visible}.sun-label{position:absolute;z-index:3;bottom:2px;padding:2px 11px;color:#442d1f;background:#f2dfb2;border-radius:10px;font-size:12px;font-weight:1000;box-shadow:0 2px #7b5f3d}.sun-character.hit{animation:sunHit .62s ease}.sun-character.celebrate{animation:sunCelebrate .72s ease}.world-shake{animation:worldShake .45s ease}.impact-star{position:absolute;z-index:25;font-style:normal;font-size:24px;animation:impact .7s ease-out forwards;pointer-events:none}
/* result */
.result-screen{display:grid;place-items:center;padding:25px;background:#173b2733;backdrop-filter:blur(3px)}.result-card{position:relative;width:min(570px,94vw);padding:42px 34px 32px;text-align:center;background:linear-gradient(#fffef8,#f6f1df);border:6px solid #e9e2ca;border-radius:38px;box-shadow:inset 0 -13px #c9c0a455,0 12px 0 #625941,0 22px 45px #173b2a88}.result-card h2{margin:4px;color:#5c381e;font-size:38px}.result-medal{font-size:80px;animation:medal 2s ease-in-out infinite}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:24px 0}.result-stats div{padding:13px;border:3px solid #e6b849;border-radius:17px;background:#fff4bf}.result-stats span,.result-stats small{display:block}.result-stats span{font-size:29px;font-weight:1000;color:#75461d}.result-stats small{font-size:9px;font-weight:1000;color:#8f6f49}.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:14px}.result-actions .primary-btn{font-size:17px}.secondary-btn{color:#fff;background:linear-gradient(#30baff,#0a7cd2);border:4px solid #fff;box-shadow:inset 0 -6px #0863ac,0 0 0 3px #087bc9}
@keyframes heroFloat{50%{transform:translateY(-10px) rotate(1deg)}}@keyframes rockHover{50%{transform:translateY(12px) rotate(2deg)}}@keyframes floatUp{to{transform:translateY(-180px) scale(0);opacity:0}}@keyframes beamPulse{to{filter:brightness(1.7);opacity:.55}}@keyframes sunHit{20%{transform:translateY(10px) rotate(-9deg) scale(.93)}40%{transform:translateY(5px) rotate(9deg)}65%{transform:rotate(-6deg)}85%{transform:rotate(3deg)}}@keyframes sunCelebrate{25%{transform:translateY(-25px) rotate(-5deg)}50%{transform:translateY(0) rotate(5deg)}75%{transform:translateY(-13px)}}@keyframes worldShake{20%{transform:translateX(-7px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}@keyframes impact{to{transform:translate(var(--dx),var(--dy)) scale(.2) rotate(180deg);opacity:0}}@keyframes medal{50%{transform:translateY(-8px) rotate(3deg)}}
@media(max-width:900px){.game-title{min-width:54vw;padding-inline:30px}.game-title strong{font-size:30px}.setup-screen{grid-template-columns:.8fr 1.2fr;gap:12px;padding-inline:18px}.setup-art{min-height:430px}.hero-preview{width:185px}.preview-rock{width:180px;font-size:21px}.rescue-row{left:10px;right:10px;gap:8px;height:150px}.category-bin{height:125px;padding:38px 4px 8px}.bin-icon{font-size:28px;left:8px}.sun-zone{height:125px}.sun-character{height:139px}.hud-item{min-width:auto}.combo{display:none}.falling-rock{top:116px}.mission-ribbon{top:68px}}
@media(max-width:620px){.game-shell{background-attachment:scroll}.game-head{height:72px;padding:5px 7px}.game-title{top:6px;height:59px;min-width:58vw;padding:5px 20px;border-width:3px;box-shadow:inset 0 3px #e29b54,inset 0 -4px #321b0d,0 5px 0 #352011,0 9px 14px #17351e70}.game-title strong{font-size:clamp(17px,5.5vw,24px);letter-spacing:-1px;-webkit-text-stroke-width:1px}.game-title small,.leaf,.home-link span{display:none}.home-link{padding:8px 10px}.head-actions{gap:4px}.head-actions button,.game-sound-toggle{width:42px!important;height:42px!important;min-width:42px;font-size:18px!important;border-width:3px!important}.screen{min-height:calc(100vh - 72px)}.setup-screen{display:block;padding:43px 13px 20px}.setup-art{display:none}.setup-card{padding:36px 15px 18px;border-radius:28px;border-width:4px}.setup-plaque{top:-25px;font-size:18px}.setup-card h1{font-size:28px}.lead{font-size:12px}.mode-grid{grid-template-columns:1fr}.mode-card{min-height:61px;padding:10px 7px 9px 48px}.mode-icon{top:12px}.time-grid span{font-size:12px;padding:10px 1px}.primary-btn{min-height:51px;font-size:19px}.play-screen{min-height:calc(100vh - 72px)}.hud{top:4px;padding:4px 6px;gap:2px;border-width:3px}.stage-chip{display:none}.hud-item{padding:2px 5px;gap:3px}.hud-item>span{font-size:16px}.hud-item small{display:none}.hud-item strong{font-size:13px}.rescue-world{background-position:center}.mission-ribbon{top:55px;padding:4px 8px}.mission-copy{display:none}.level-chip{font-size:9px}.falling-rock{top:91px;width:clamp(150px,52vw,205px);min-height:96px;padding:22px 25px;font-size:17px}.sentence-rock{width:min(82vw,350px);min-height:94px;font-size:15px;padding-inline:35px}.feedback{top:53%;font-size:15px;padding:7px 12px}.feedback:before{width:27px;height:27px;border-width:2px}.rescue-row{left:5px;right:5px;bottom:5px;height:125px;gap:4px;grid-template-columns:repeat(4,minmax(0,1fr))}.category-bin{height:101px;padding:31px 2px 5px;border-width:3px;outline-width:2px;border-radius:12px 12px 18px 18px}.category-bin:before{left:-4px;right:-4px;top:-13px;height:30px;border-width:3px}.category-bin strong{font-size:9px;line-height:1.05}.category-bin small{display:none}.bin-icon{left:50%;top:22px;transform:translateX(-50%);font-size:21px}.bin-number{right:1px;top:-13px;width:22px;height:22px;border-width:2px;font-size:10px}.sun-zone{height:101px}.sun-character{height:112px}.sun-zone:before{bottom:5px;height:31px}.sun-label{bottom:-1px;font-size:7px;padding:1px 6px}.result-screen{padding:12px}.result-card{padding:28px 14px 21px}.result-medal{font-size:56px}.result-card h2{font-size:28px}.result-actions{grid-template-columns:1fr}.secondary-btn{min-height:49px}}
@media(max-height:660px) and (min-width:621px){.game-head{height:82px}.screen{min-height:calc(100vh - 82px)}.game-title{height:72px}.game-title strong{font-size:35px}.hud{top:1px}.mission-ribbon{top:62px}.falling-rock{top:100px;min-height:105px}.rescue-row{height:132px}.category-bin{height:110px}.sun-zone{height:110px}.sun-character{height:122px}.setup-screen{padding-top:10px}.setup-art{min-height:410px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}

/* V4: exact graphic pack supplied by the user */
.game-shell{background:#76d2ee url("assets/vocab/mockup/background.webp") center/cover fixed no-repeat}
.game-shell:after{background:linear-gradient(#fff0 78%,#1639203d)}
.game-head{height:195px;background:transparent;padding-top:4px}
.game-title{top:0;width:min(610px,44vw);height:min(206px,14.9vw);min-width:0;padding:0;background:none;border:0;border-radius:0;box-shadow:none;overflow:visible}
.game-title:before,.game-title:after,.game-title .leaf{display:none}.game-title img{position:absolute;inset:0;display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;filter:drop-shadow(0 7px 6px #17392170)}.game-title strong{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.head-actions{align-items:center}.head-actions button,.game-sound-toggle{font-size:0!important;border:0!important;background-color:transparent!important;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important;box-shadow:none!important;filter:drop-shadow(0 5px 4px #17392165);transition:transform .14s,filter .14s}.head-actions button:hover,.game-sound-toggle:hover{transform:translateY(-2px) scale(1.05);filter:drop-shadow(0 7px 5px #17392175) brightness(1.06)}
.head-actions .pause-control{background:transparent url("assets/vocab/mockup/pause.webp") center/contain no-repeat!important}.head-actions .music-control{background:transparent url("assets/vocab/mockup/music.webp") center/contain no-repeat!important}.head-actions .game-sound-toggle{background:transparent url("assets/vocab/mockup/sound.webp") center/contain no-repeat!important}.pause-control[hidden]{display:none!important}.music-control[aria-pressed="false"],.game-sound-toggle[aria-pressed="false"]{filter:grayscale(.85) drop-shadow(0 4px 3px #17392165)!important;opacity:.72}
.screen{min-height:calc(100vh - 195px)}.play-screen{min-height:calc(100vh - 195px)}
.rescue-world{background:transparent;box-shadow:none}.rescue-world:after{background:linear-gradient(90deg,#15391e1e,transparent 18% 82%,#15391e1e),linear-gradient(transparent 76%,#173b2542)}
.ambient-canvas{opacity:.56}.mission-ribbon{top:58px;background:linear-gradient(#a86634,#663a1e);border-color:#4b2813}.hud{top:2px;min-width:385px;padding:7px 13px;background:linear-gradient(#a46131,#64381e);border:3px solid #4b2915;border-radius:15px;box-shadow:inset 0 3px #db9257,inset 0 -3px #3e2112,0 5px 0 #2f1a0e;filter:drop-shadow(0 5px 4px #17392155)}.hud-item{position:relative;z-index:1;border:0;padding:0 10px;min-width:78px}.hud-item>span,.hud-item small{display:none}.hud-item strong{padding:2px 7px;border-radius:8px;background:#79502bea;font-size:15px;color:#fff;text-shadow:0 2px #3a2414}.stage-chip strong{background:#478520}.score strong{color:#fff3a2}.timer-track{display:none}
.setup-screen{max-width:1260px;min-height:calc(100vh - 195px);padding-top:0}.setup-art{min-height:500px}.setup-sun-art{position:absolute;z-index:2;right:3%;bottom:1%;height:min(64vh,520px);max-width:55%;object-fit:contain;filter:drop-shadow(0 14px 11px #17392166);animation:heroFloat 3s ease-in-out infinite}.preview-rock{left:3%;top:11%;width:300px;aspect-ratio:1.78;padding:42px 52px;background:url("assets/vocab/mockup/rock-word.webp") center/contain no-repeat;clip-path:none;filter:drop-shadow(0 13px 9px #17392166);font-size:27px}.setup-card{min-height:545px;padding:103px 55px 31px;background:url("assets/vocab/mockup/setup-frame.webp") center/100% 100% no-repeat;border:0;border-radius:0;box-shadow:none}.setup-card:before,.setup-card:after,.setup-plaque{display:none}.setup-card .kicker{margin-top:0}.setup-card h1{font-size:35px}.setup-card .lead{font-size:12px;max-width:430px}.setup-card fieldset{margin:13px 0}.setup-card .mode-card{min-height:68px}.setup-card .primary-btn{height:66px;min-height:0;background:url("assets/vocab/mockup/start.webp") center/contain no-repeat;border:0;box-shadow:none;color:transparent;font-size:0}.setup-card .primary-btn span{display:none}.setup-card .tip{margin-top:4px}
.falling-rock{top:122px;width:clamp(205px,23vw,340px);min-height:0;aspect-ratio:1.79;padding:42px 52px;background:url("assets/vocab/mockup/rock-word.webp") center/contain no-repeat;clip-path:none;filter:drop-shadow(0 15px 10px #1739217a);color:#292542;font-size:clamp(21px,2.2vw,32px);text-shadow:0 2px #fff}.falling-rock:before,.falling-rock:after,.rock-glint,.rock-rune{display:none}.rock-trail{bottom:75%;opacity:calc(.1 + var(--danger,0)*.35)}.sentence-rock{width:clamp(310px,39vw,590px);aspect-ratio:2.62;background-image:url("assets/vocab/mockup/rock-sentence.webp");font-size:clamp(18px,2vw,28px);padding:38px 70px}
.rescue-row{left:2.4%;right:2.4%;bottom:1%;height:190px;gap:12px}.category-bin{height:166px;padding:0;border:0;outline:0;border-radius:0;background:none!important;color:transparent;box-shadow:none;overflow:visible}.category-bin:before,.category-bin:after,.category-bin strong,.category-bin small,.bin-icon,.gate-light{display:none}.bin-art{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 10px 7px #17392166);transition:transform .18s,filter .18s}.bin-number{right:6%;top:8%;z-index:5}.category-bin.targeted{transform:translateY(-12px) scale(1.04);filter:none;box-shadow:none}.category-bin.targeted .bin-art{filter:drop-shadow(0 0 16px #9cff49) drop-shadow(0 11px 8px #17392177);animation:binGlow .25s ease-in-out infinite alternate}
.sun-zone{height:166px}.sun-zone:before{display:none}.sun-base-art{position:absolute;z-index:1;left:0;right:0;bottom:-3px;width:100%;height:78px;object-fit:contain;filter:drop-shadow(0 9px 6px #17392155)}.sun-character{position:absolute;z-index:3;left:50%;bottom:38px;translate:-50% 0;width:125px;height:190px;filter:drop-shadow(0 8px 6px #17392155)}.sun-character img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.sun-surprised{display:none}.sun-character.hit{animation:none}.sun-character.hit .sun-happy{display:none}.sun-character.hit .sun-surprised{display:block;width:168%;height:100%;left:-34%;object-fit:contain}.sun-character.celebrate{animation:sunCelebrate .72s ease}.sun-label{display:none}
.feedback.good{top:56%;width:300px;height:150px;padding:0;background:url("assets/vocab/mockup/correct.webp") center/contain no-repeat;color:transparent;border-radius:0;filter:drop-shadow(0 5px 5px #245e3266)}.feedback.good:before{display:none}.feedback.bad{top:55%;max-width:390px;padding:25px 35px;color:#d8442d;background:#fff8e8;border:4px solid #f07b38;border-radius:50% 45% 48% 50%;text-align:center}.feedback.bad:before{display:inline-grid}.route-beam{background:linear-gradient(90deg,#fff0,#9aff4f,#fff0);box-shadow:0 0 16px #b9ff5d,0 0 40px #63ff27}
.pause-overlay{position:absolute;z-index:60;inset:0;display:grid;place-items:center;background:#173a2888;backdrop-filter:blur(5px)}.pause-overlay>div{width:min(390px,88vw);padding:48px 32px;text-align:center;background:url("assets/vocab/mockup/setup-frame.webp") center/100% 100% no-repeat;filter:drop-shadow(0 18px 20px #12351f88)}.pause-overlay strong{display:block;margin:22px 0;color:#74411f;font-size:35px;text-shadow:0 2px #fff}.pause-overlay button{min-width:220px;padding:15px;border:4px solid #fff;border-radius:20px;color:#fff;background:linear-gradient(#67dd3c,#28a51f);box-shadow:inset 0 -6px #1b8015,0 5px 0 #166c12;font-weight:1000;font-size:20px}
@keyframes binGlow{to{transform:translateY(-4px);filter:drop-shadow(0 0 25px #d6ff6b) drop-shadow(0 13px 8px #17392177)}}
@media(max-width:900px){.game-head{height:112px}.screen,.play-screen{min-height:calc(100vh - 112px)}.game-title{width:min(360px,45vw);height:min(122px,15.25vw)}.setup-card{padding-inline:35px}.rescue-row{height:154px}.category-bin,.sun-zone{height:130px}.sun-character{bottom:29px;width:104px;height:157px}.sun-base-art{height:60px}.falling-rock{top:108px}.mission-ribbon{top:60px}}
@media(max-width:620px){.game-head{height:72px}.game-title{left:44%;width:38vw;height:67px;top:2px;padding:0;border:0;box-shadow:none}.head-actions button,.game-sound-toggle{width:42px!important;height:42px!important;min-width:42px!important}.screen,.play-screen{min-height:calc(100vh - 72px)}.setup-screen{padding-top:20px}.setup-card{min-height:0;padding:77px 17px 22px;background-size:100% 100%}.setup-card h1{font-size:27px}.setup-card .lead{font-size:11px}.setup-card .mode-card{min-height:60px}.setup-card fieldset{margin:10px 0}.setup-card .primary-btn{height:55px}.hud{min-width:265px;padding:8px 15px}.hud-item{padding:0 5px}.hud-item strong{font-size:12px}.mission-ribbon{top:51px}.falling-rock{top:83px;width:210px;padding:28px 39px;font-size:17px}.sentence-rock{width:min(88vw,360px);padding:25px 45px;font-size:15px}.rescue-row{left:3px;right:3px;bottom:1px;height:119px;gap:1px}.category-bin,.sun-zone{height:102px}.bin-number{width:20px;height:20px;right:0;top:0}.sun-character{bottom:22px;width:74px;height:116px}.sun-base-art{height:43px}.feedback.good{width:205px;height:103px}.feedback.bad{max-width:285px;padding:17px 22px;font-size:13px}}

/* V6: dynamic iOS viewport, safe areas and readable sentence labels. */
:root{--game-header:150px}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.game-shell{min-height:100vh;min-height:100dvh}
.game-head{height:calc(var(--game-header) + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px);padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px))}
.game-title{top:env(safe-area-inset-top,0px);height:145px;width:min(490px,42vw)}
.screen{min-height:calc(100vh - var(--game-header) - env(safe-area-inset-top,0px));min-height:calc(100dvh - var(--game-header) - env(safe-area-inset-top,0px))}
.play-screen{height:calc(100vh - var(--game-header) - env(safe-area-inset-top,0px));height:calc(100dvh - var(--game-header) - env(safe-area-inset-top,0px));min-height:0}
.rescue-row{bottom:calc(8px + env(safe-area-inset-bottom,0px));left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px))}
#rock-text{display:block;min-width:0;max-width:100%;line-height:1.4;font-weight:800;overflow-wrap:normal;word-break:normal}
.falling-rock{line-height:1.4}
.hard-mode .category-bin{display:flex;align-items:center;justify-content:center;align-self:end;height:112px;margin-bottom:10px;padding:14px 9px;border:3px solid #fff;border-radius:22px;background:linear-gradient(#3ac3ff,#0975cd)!important;box-shadow:inset 0 4px 0 #ffffff80,inset 0 -5px 0 #003b6b50,0 7px 0 #07457b,0 10px 14px #163b2660;color:#fff}
.hard-mode .bin-b{background:linear-gradient(#c77aff,#7939cc)!important;box-shadow:inset 0 4px 0 #ffffff80,inset 0 -5px 0 #42236c60,0 7px 0 #51258d,0 10px 14px #163b2660}
.hard-mode .bin-c{background:linear-gradient(#ffc054,#ed8214)!important;box-shadow:inset 0 4px 0 #ffffff80,inset 0 -5px 0 #733e1260,0 7px 0 #a94b0c,0 10px 14px #163b2660}
.hard-mode .bin-art{display:none}
.hard-mode .category-bin strong{display:block;font-size:clamp(15px,1.7vw,24px);line-height:1.3;text-transform:lowercase;text-shadow:0 2px 2px #18345780;overflow-wrap:normal}
.hard-mode .category-bin strong::first-letter{text-transform:uppercase}
.hard-mode .bin-number{top:-14px;right:4px}
.sentence-rock{padding:24px 55px;font-size:clamp(18px,2vw,28px);background-size:100% 100%}
@media(max-width:900px){:root{--game-header:100px}.game-title{width:40vw;height:98px}.hard-mode .category-bin{height:102px}}
@media(max-width:620px){:root{--game-header:72px}.game-head{padding-left:max(7px,env(safe-area-inset-left,0px));padding-right:max(7px,env(safe-area-inset-right,0px))}.game-title{left:44%;width:38vw;height:67px}.sentence-rock{width:min(94vw,380px);padding:23px 40px;font-size:18px;aspect-ratio:auto;min-height:128px}.rescue-row{left:max(6px,env(safe-area-inset-left,0px));right:max(6px,env(safe-area-inset-right,0px));gap:5px}.hard-mode .category-bin{height:102px;padding:12px 3px;border-width:2px;border-radius:15px;margin-bottom:0}.hard-mode .category-bin strong{font-size:clamp(12px,3.6vw,17px);line-height:1.4}.hard-mode .bin-number{top:-20px}.sun-character{width:70px}.setup-screen{padding-bottom:calc(22px + env(safe-area-inset-bottom,0px))}}
/* Compact titles never overlap the three 42px controls on narrow phones. */
@media(max-width:400px){.game-title{left:40%;width:32vw}}
@media(max-width:360px){.game-title{left:39%;width:30vw}}
@media(max-height:500px) and (min-width:501px){:root{--game-header:56px}.game-title{height:55px;width:32vw;left:46%}.head-actions button,.game-sound-toggle{width:42px!important;height:42px!important;min-width:42px!important}.game-head{padding-bottom:0}.hud{top:0;min-width:260px;padding:4px 10px}.hud-item strong{font-size:12px}.hud-item{min-width:50px;padding:0 4px}.mission-ribbon{top:43px;padding:2px 8px}.level-chip{font-size:10px}.mission-copy{display:none}.rescue-row{height:100px;gap:12px;bottom:calc(5px + env(safe-area-inset-bottom,0px));left:max(10px,env(safe-area-inset-left,0px));right:max(10px,env(safe-area-inset-right,0px))}.category-bin,.sun-zone{height:96px}.hard-mode .category-bin{height:76px;margin-bottom:6px}.hard-mode .category-bin strong{font-size:16px}.bin-number{top:-10px}.sun-character{bottom:20px;height:110px;width:73px}.sun-base-art{height:36px}.falling-rock{top:76px;width:190px;padding:22px 30px;font-size:18px}.sentence-rock{top:76px;width:min(52vw,470px);min-height:104px;aspect-ratio:auto;padding:16px 40px;font-size:18px}.feedback.good{top:48%;width:180px;height:90px}.feedback.bad{top:48%;padding:12px 18px;font-size:14px}.pause-overlay>div{padding:20px 32px}.pause-overlay strong{margin:12px 0;font-size:25px}}
@media(max-height:360px) and (min-width:501px){.mission-ribbon{display:none}.falling-rock,.sentence-rock{top:44px}.sentence-rock{min-height:98px;font-size:17px;padding:12px 34px}.rescue-row{height:94px}.hard-mode .category-bin{height:70px}.sun-character{height:95px}}
