/* Shared shell, reading, reward, memory and collector remain the site's components. */
body[data-game="brave-little-smile"]{--ink:#205760;--dental-cream:#fff8df;--dental-mint:#b9ddd1;background:#f4f1e7;color:var(--ink)}
body[data-game="brave-little-smile"] #playground{min-height:0;flex:1;display:flex;align-items:stretch;justify-content:center;width:100%}
.dental-world{position:relative;width:min(100%,1120px);height:100%;min-height:280px;max-height:820px;overflow:hidden;border-radius:30px;isolation:isolate;background:#e4e8d7 url('./assets/world.webp') center/cover;box-shadow:inset 0 0 0 2px #fff8df,0 8px 20px #35636715;display:grid;grid-template-rows:minmax(0,1fr) auto auto;container-type:size}
.dental-surface{position:relative;min-height:0;touch-action:none}.dental-tools{position:relative;z-index:3;display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 12px}.dental-hint{text-align:center;font:700 clamp(13px,2cqw,20px)/1.3 'Trebuchet MS',sans-serif;margin:0;padding:3px 12px 13px;color:#23585f;text-shadow:0 1px 2px #fff8df}
.dental-counter{position:absolute;top:14px;left:16px;z-index:4;background:#fff9e6;border:2px solid #e5c77c;box-shadow:0 3px #b8a46b55;border-radius:30px;padding:7px 14px;font:700 clamp(15px,2.6cqw,23px)/1.1 'Trebuchet MS',sans-serif;color:#245661}
.dental-button,.dental-listen{min-height:48px;border:2px solid #fff9df;background:linear-gradient(#ffeaa1,#ffd262);border-radius:22px;box-shadow:0 5px #b49a65;color:#205760;padding:10px 26px;font:700 clamp(16px,2.8cqw,25px)/1.2 Froople,'Trebuchet MS',sans-serif;cursor:pointer;touch-action:none}.dental-button:active,.dental-listen:active{transform:translateY(3px);box-shadow:0 2px #b49a65}.dental-button:disabled{opacity:.5}.dental-world button:focus-visible,.dental-open-slider:focus-visible{outline:4px solid #287e98;outline-offset:3px}.dental-world button.selected,.dental-world .drop-near{filter:drop-shadow(0 0 10px #ffdc68);outline:3px solid #f8c844;outline-offset:4px}
.dental-listen{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px}.dental-listen svg{width:24px;height:24px}.dental-sprite{position:absolute;transform:translate(-50%,-50%);object-fit:contain;filter:drop-shadow(0 12px 8px #795c3c22);user-select:none;pointer-events:none;max-height:90%;transition:transform .25s,filter .3s}.dental-wrapping{pointer-events:auto;touch-action:none;cursor:grab}
.dental-current-word{position:absolute;transform:translate(-50%,-50%);font:clamp(24px,5cqw,48px)/1 Froople,sans-serif;text-shadow:0 2px #fff8df;-webkit-text-stroke:5px #fff6d5;paint-order:stroke fill;text-transform:none}.dental-sound-target{position:absolute;transform:translate(-50%,-50%);width:clamp(76px,20cqw,180px);aspect-ratio:1;border:5px solid #fff6d5;border-radius:50%;box-shadow:0 7px 0 #b99f66,0 0 0 8px #a1c5b744;background:radial-gradient(at 30% 20%,#fff7c7,#edc76c);color:#205760;cursor:pointer;animation:dental-invite 2.5s ease-in-out infinite}.dental-sound-target svg{width:40%;height:40%}.dental-sound-slots{position:absolute;left:8%;right:8%;top:65%;display:flex;justify-content:center;gap:8px}.dental-sound-slot{font:clamp(20px,4cqw,40px)/1 Froople,sans-serif;min-width:44px;min-height:44px;width:14%;max-width:90px;aspect-ratio:1.15;border:3px dashed #d7b25b;border-radius:20px;background:#fff9e2ed;color:#245761}.dental-sound-slot svg{width:26px;height:26px}.dental-sound-slot.filled{border-style:solid;background:#c8e5cf;box-shadow:0 4px #8db1a4}.dental-sound-tray{position:absolute;bottom:0;left:4%;right:4%;display:flex;justify-content:space-evenly;gap:8px}.dental-sound-tile{position:relative;border:2px solid #fff5d4;box-shadow:0 5px #b99c67;border-radius:24px;min-width:48px;width:17%;max-width:132px;aspect-ratio:1.2;background:linear-gradient(135deg,#fff0b9,#edcd7c);color:#235663;font:clamp(24px,5cqw,44px)/1 Froople,sans-serif;touch-action:none;cursor:grab}.dental-sound-tile>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.34;z-index:-1}.dental-sound-tile::after{content:'';position:absolute;inset:7px;border:1px dashed #b9975644;border-radius:17px;pointer-events:none}.dental-sweet .dental-sound-target{background:#a8d0bb}
.dental-ribbon{position:absolute;left:50%;top:42%;width:10%;height:35%;transform:translate(-50%,-50%) scaleY(var(--wrap,0));background:linear-gradient(90deg,#bc6c72,#f9b9b2,#bc6c72);border:2px dashed #ffe4bd;border-radius:14px;pointer-events:none;transition:transform .3s}.dental-wrapping{transition:transform .3s cubic-bezier(.2,1,.3,1)}
.dental-mirror-wand,.dental-brush-wand{position:absolute;transform:translate(-50%,-50%);width:clamp(70px,22cqw,200px);height:30%;border:0;background:none;cursor:grab;touch-action:none;z-index:5;filter:drop-shadow(0 8px 4px #214f5a33)}.dental-mirror-wand img,.dental-brush-wand img{width:100%;height:100%;object-fit:contain;pointer-events:none}.dental-hidden-star{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border:0;background:transparent;color:#97b6aa;opacity:.65;cursor:pointer;z-index:3}.dental-hidden-star svg{width:100%;height:100%}.dental-hidden-star.found{color:#ffd75f;opacity:1;filter:drop-shadow(0 0 7px #ffe997)}
.dental-object-rack,.dental-feelings,.dental-day-rack{position:absolute;inset:17% 5% 8%;display:flex;justify-content:space-around;align-items:center;gap:14px}.dental-tool-choice,.dental-face-choice,.dental-time-choice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;width:28%;height:70%;background:#fff8e2d9;border:3px solid #fff9e4;border-radius:35px;box-shadow:0 7px #91b8a6;color:#235760;cursor:pointer;font:clamp(16px,3.4cqw,30px)/1.1 Froople,sans-serif;padding:12px;touch-action:manipulation}.dental-tool-choice img{width:100%;height:65%;object-fit:contain}.dental-mini-chair{width:75%;height:65%;background:linear-gradient(120deg,#9cc5b2,#d5e8d9);border:6px solid #fff7e4;border-radius:35px 35px 18px 18px;box-shadow:inset 0 0 0 3px #8bac9a,0 6px #bcab87;position:relative}.dental-mini-chair:after{content:'';position:absolute;bottom:0;left:-15%;right:-15%;height:33%;background:#a4c9bd;border:4px solid #fff7e3;border-radius:20px}.dental-mini-light{width:90%;aspect-ratio:1;border:8px solid #e4d9bc;border-radius:50%;background:radial-gradient(#fffad5,#ffe28c);display:grid;place-items:center;box-shadow:0 4px #a8b6a4}.dental-mini-light svg{width:65%;height:65%;color:#f0bf54}
.dental-world.dental-feeling{background-image:linear-gradient(#fff3 20%,#e9f2de66),var(--dental-scene);background-position:center;background-size:cover}.dental-feelings{inset:58% 5% 0}.dental-face-choice{height:100%;max-height:160px;gap:5px}.dental-face{display:block;position:relative;width:clamp(46px,9cqw,95px);aspect-ratio:1;border-radius:50%;background:radial-gradient(at 30% 20%,#fff2ab,#f5cf63);box-shadow:inset 0 -4px #deb858}.dental-face .eye{position:absolute;top:32%;width:9%;height:16%;background:#235662;border-radius:50%}.dental-face .left{left:28%}.dental-face .right{right:28%}.dental-face .mouth{position:absolute;left:32%;top:50%;width:36%;height:25%;border-bottom:4px solid #235662;border-radius:50%}.dental-face.scared .mouth{top:59%;border-bottom:0;border-top:4px solid #235662}.dental-face.sleepy .eye{height:3%;top:40%}.dental-face.sleepy .mouth{width:15%;left:43%;border:3px solid #235662;border-radius:50%}
.dental-breath-orb{position:absolute;transform:translate(-50%,-50%) scale(calc(.8 + var(--breath,0)*.5));width:36%;aspect-ratio:1;border:5px solid #fff8dc;border-radius:50%;display:grid;place-items:center;background:radial-gradient(at 35% 25%,#f8ffdf,#b0d7c3 60%,#659c92);box-shadow:0 0 0 24px #c4e5cf44,0 0 60px #e1ffe780;transition:transform .15s}.dental-breath-star{color:#fff1b8;width:45%;filter:drop-shadow(0 4px 1px #c6ab69)}.dental-breath-star svg{width:100%}.dental-breath-orb.breathing-out{transform:translate(-50%,-50%) scale(.8);transition:transform 2s ease-out}
.dental-mouth-model{position:absolute;transform:translate(-50%,-50%);width:64%;height:calc(20% + var(--open,0)*44%);border:clamp(10px,2cqw,22px) solid #df9f99;border-radius:48%;background:radial-gradient(ellipse at 50% 90%,#dd9293,#864c56 65%);box-shadow:inset 0 8px 14px #57263344,0 8px #b7837b44;transition:height .18s;overflow:hidden}.dental-teeth{display:flex;position:absolute;left:7%;right:7%;height:37%;align-items:center;justify-content:center}.dental-teeth.upper{top:-1%}.dental-teeth.lower{bottom:-2%;transform:rotate(180deg)}.dental-teeth img{width:18%;height:100%;object-fit:fill;filter:drop-shadow(0 3px 2px #6a4a4b33)}.dental-teeth.checked{filter:drop-shadow(0 0 7px #ffdf69)}.dental-open-slider{appearance:none;width:min(65%,400px);height:24px;background:#a9cabc;border:3px solid #fff5da;border-radius:20px;touch-action:none}.dental-open-slider::-webkit-slider-thumb{appearance:none;width:52px;height:52px;background:#ffda6a;border:4px solid #fff7e2;border-radius:50%;box-shadow:0 4px #ac9563}
.dental-steady-star{position:absolute;transform:translate(-50%,-50%) scale(calc(1 + var(--steady,0)*.18));width:35%;aspect-ratio:1;color:#ffdc77;filter:drop-shadow(0 7px 1px #b09560) drop-shadow(0 0 calc(var(--steady,0)*40px) #ffffcf);transition:transform .1s}.dental-steady-star svg{width:100%;height:100%}.dental-brush-wand{width:32%;height:20%;transform-origin:left center;animation:dental-brush-idle 3s ease-in-out infinite}.dental-foam{position:absolute;inset:0;pointer-events:none}.dental-foam-bubble{position:absolute;transform:translate(-50%,-50%);width:7%;aspect-ratio:1;border-radius:50%;background:radial-gradient(at 35% 25%,#fff,#eefefce0 70%,#a9dcd8);box-shadow:0 0 0 6px #ffffff40;animation:dental-bubble .6s ease-out both}.dental-time-choice{width:38%;height:85%;font-size:clamp(20px,4cqw,36px)}.dental-time-choice svg{width:55%;height:60%;color:#e7b949;filter:drop-shadow(0 4px #c7ab6644)}
.dental-discovery-backdrop{position:absolute;inset:0;z-index:30;background:#244e5c99;backdrop-filter:blur(6px);display:grid;place-items:center;padding:15px}.dental-discovery-card{width:min(95%,560px);max-height:100%;overflow:auto;padding:18px;border:3px solid #f0d37f;border-radius:30px;background:#fffae9;box-shadow:0 12px 30px #15394644;display:flex;flex-direction:column;gap:10px;color:#205760}.dental-fact-art{width:100%;min-height:0;max-height:24cqh;object-fit:cover;object-position:center 35%;border-radius:20px}.dental-fact-head{display:flex;justify-content:center;align-items:center;gap:12px}.dental-fact-head h2{font:clamp(20px,3.5cqw,32px)/1.1 Froople,sans-serif;margin:0}.dental-fact-copy{font:700 clamp(17px,2.6cqw,25px)/1.45 'Trebuchet MS',sans-serif;text-align:center;margin:2px 0 10px}.dental-fact-copy .speaking,.dental-fact-copy .is-speaking{background:#ffe087;border-radius:4px}.dental-discovery-card>.gold{min-height:48px;width:100%}
.dental-spark{position:absolute;width:18px;height:18px;z-index:40;color:#ffdf68;pointer-events:none;animation:dental-spark .8s ease-out forwards}.dental-spark svg{width:100%;height:100%}.dental-pop{animation:dental-pop .5s ease-out}.dental-shake{animation:dental-shake .4s ease-out}
@keyframes dental-invite{50%{box-shadow:0 7px #b99f66,0 0 0 14px #ffde6844}}@keyframes dental-pop{40%{filter:brightness(1.15) drop-shadow(0 0 18px #ffe58b)}}@keyframes dental-spark{to{transform:translate(var(--dx),var(--dy)) rotate(100deg);opacity:0}}@keyframes dental-shake{25%,75%{translate:-7px}50%{translate:7px}}@keyframes dental-bubble{from{scale:.2;opacity:0}to{scale:1;opacity:1}}@keyframes dental-brush-idle{50%{rotate:4deg}}
body[data-game="brave-little-smile"] #playScreen:not([hidden]){display:flex!important;flex-direction:column;height:calc(100svh - 155px);min-height:0;gap:5px}body[data-game="brave-little-smile"] .adventure-howto{flex:none;margin:0 auto 5px!important;padding:8px 16px!important;min-height:0!important;max-width:900px}body[data-game="brave-little-smile"] .howto-sentence{font-size:clamp(16px,2.1vw,23px)!important;margin:4px 0!important}body[data-game="brave-little-smile"] .fp-stage-head{flex:none;margin:0!important;min-height:36px}body[data-game="brave-little-smile"] #roundFeedback{display:none}body[data-game="brave-little-smile"] #playTitle{font-size:clamp(22px,3vw,32px)!important}body[data-game="brave-little-smile"] .fp-round{font-size:15px}
@media(max-width:700px){body[data-game="brave-little-smile"] #playScreen:not([hidden]){height:calc(100svh - 128px);padding:0 5px 6px!important;gap:3px}.dental-world{border-radius:24px;max-height:none}.dental-tools{gap:8px;padding:6px 9px}.dental-hint{font-size:12px;padding-bottom:9px}.dental-feelings{inset:55% 2% 1%;gap:7px}.dental-face-choice{padding:7px;border-radius:23px;font-size:17px}.dental-discovery-card{padding:12px;gap:7px}.dental-fact-art{max-height:22cqh}.dental-object-rack{gap:7px;inset:15% 3% 5%}.dental-tool-choice{padding:7px;border-radius:25px}.dental-mouth-model{width:82%}.dental-sound-tile{border-radius:18px}.dental-sound-slot{border-radius:15px}.dental-sound-slots{left:4%;right:4%;gap:5px}.dental-counter{top:10px;left:10px;padding:6px 10px}body[data-game="brave-little-smile"] .adventure-howto{padding:5px 10px!important}body[data-game="brave-little-smile"] .howto-sentence{font-size:16px!important;line-height:1.3!important}.dental-current-word{font-size:32px}.dental-fact-copy{font-size:17px}.dental-fact-head h2{font-size:24px}}
@media(max-height:520px) and (orientation:landscape){body[data-game="brave-little-smile"] #playScreen:not([hidden]){height:calc(100svh - 96px)}body[data-game="brave-little-smile"] .adventure-howto{position:absolute;right:1%;top:110px;width:26%;z-index:7}body[data-game="brave-little-smile"] .dental-world{width:100%;min-height:0}.dental-tools{position:absolute;right:1%;bottom:7%;width:25%;flex-direction:column}.dental-surface{width:72%;height:100%}.dental-hint{display:none}.dental-button{font-size:15px;padding:8px 14px}.dental-fact-art{display:none}.dental-discovery-card{max-width:650px}.dental-counter{left:auto;right:12px}.dental-fact-copy{font-size:17px}}
.fp-play:has(.dental-discovery-backdrop) .adventure-howto{visibility:hidden}
.dental-sound-tile.candy-tile{background-color:transparent;background-size:contain;background-repeat:no-repeat;background-position:center;border:0;box-shadow:none;text-shadow:0 1px #fff8df;-webkit-text-stroke:5px #fff8df;paint-order:stroke fill;filter:drop-shadow(0 5px 3px #9b795344)}.dental-sound-tile.candy-tile:after{display:none}
@media(prefers-reduced-motion:reduce){.dental-world *{animation:none!important;transition:none!important}}

/* Star 2: one tactile tooth stays with the child across both discoveries. */
.dental-world.dental-tooth{background-image:url('./assets/tooth-lab-v2.webp');background-position:center;background-size:cover}
.tooth-build-ghost,.tooth-build-solid,.sugar-hero-tooth{position:absolute;left:50%;top:39%;transform:translate(-50%,-50%);width:auto;height:59%;max-width:68%;object-fit:contain;pointer-events:none;user-select:none;filter:drop-shadow(0 15px 9px #487c6c22)}
.tooth-build-ghost{opacity:.2;filter:grayscale(1) drop-shadow(0 0 7px #fff)}
.tooth-build-solid{--tooth-built:0;clip-path:inset(calc((1 - var(--tooth-built))*100%) 0 0);transition:clip-path .7s ease-out;filter:drop-shadow(0 8px 8px #7e9c6d33)}
.tooth-build-world .dental-current-word{top:6%!important;font-size:clamp(26px,5cqw,46px)}
.tooth-build-world .dental-sound-target{left:50%!important;top:43%!important;width:clamp(52px,10cqw,86px);border-width:3px;box-shadow:0 4px #b99f66,0 0 0 5px #a1c5b744}
.tooth-build-world .dental-sound-slots{top:69%;gap:12px}
.tooth-build-world .dental-sound-slot{width:18%;max-width:108px;aspect-ratio:1.3}
.tooth-build-world .dental-sound-tray{bottom:1%;left:12%;right:12%}
.tooth-build-world .dental-sound-tile{width:25%;max-width:140px;aspect-ratio:1.5;background:linear-gradient(135deg,#fffbdf,#edd6a3);border:3px solid #fff9df}
.dental-fact-art.dental-fact-object{object-fit:contain;background:radial-gradient(ellipse,#dceee2,#f8f2df);padding:8px;box-sizing:border-box;max-height:22cqh}
.sugar-hero-tooth{height:79%;top:43%;max-width:72%}
.sugar-piece,.sugar-bacterium{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;width:clamp(55px,11cqw,120px);height:clamp(48px,11cqw,110px);padding:0;border:0;background:none;box-shadow:none;touch-action:none;cursor:grab;z-index:4}
.sugar-piece img,.sugar-bacterium img{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 3px #a86d5533)}
.sugar-arriving .sugar-piece{animation:sugar-piece-in .9s cubic-bezier(.2,.8,.25,1) both}
.sugar-bacterium{width:clamp(46px,8cqw,80px);height:clamp(44px,8cqw,80px);z-index:3;cursor:pointer;transition:filter .4s,opacity .5s}
.sugar-bacterium.feeding img{animation:sugar-munch 1.1s ease-in-out}
.sugar-bacterium.no-sugar{filter:saturate(.55);opacity:.65}
.sugar-return-tray{position:absolute;bottom:1%;left:50%;transform:translateX(-50%);min-height:62px;width:min(70%,420px);border:3px solid #fff5d4;border-radius:24px;background:linear-gradient(#b9d9ca,#94beaf);box-shadow:inset 0 5px 9px #365b5b22,0 5px #8aa79a;display:flex;align-items:center;justify-content:center;gap:5px;padding:8px;color:#205760;font:700 clamp(15px,2.4cqw,23px)/1.1 'Trebuchet MS',sans-serif}
.sugar-return-tray>svg{display:none}.sugar-return-tray.drop-near{outline:4px solid #f5ca57;box-shadow:0 0 24px #ffe080}
.sugar-return-tray .sugar-collected{width:clamp(28px,5cqw,45px);height:42px;object-fit:contain;animation:sugar-tray-pop .35s ease-out}
.sugar-cause-labels{position:absolute;left:16%;right:4%;top:1%;display:flex;justify-content:center;gap:7px;z-index:5}
.sugar-cause-word{display:flex;align-items:center;gap:5px;min-height:44px;padding:5px 10px;background:#fff8e8e8;border:2px solid #e6d19e;border-radius:18px;color:#235761;font:700 clamp(14px,2.4cqw,23px)/1.1 'Trebuchet MS',sans-serif;box-shadow:0 3px #b6aa8b44}
.sugar-cause-word svg{width:16px;height:16px}.sugar-cause-word:last-child{background:#fff0b9}
.sugar-acid-bubble{position:absolute;z-index:6;width:clamp(12px,2.4cqw,24px);aspect-ratio:1;border:2px solid #fff4af;border-radius:50%;background:radial-gradient(at 30% 20%,#fffbd3,#eec963 65%,#d5a348);box-shadow:0 0 8px #f7db6b88;pointer-events:none;animation:sugar-acid-rise 1.5s ease-out forwards}
.sugar-enamel-patch{position:absolute;transform:translate(-50%,-50%);width:9%;height:4%;border-radius:50%;background:#e6c7782b;filter:blur(4px);pointer-events:none}
.sugar-cleared .sugar-acid-bubble{animation-duration:.45s}.sugar-cleared .sugar-return-tray{border-color:#ffdf70}
@keyframes sugar-piece-in{from{translate:0 -120px;opacity:0;rotate:-20deg}70%{translate:0 6px;opacity:1}to{translate:0 0;rotate:0deg}}
@keyframes sugar-munch{25%,75%{scale:1.12 .9;rotate:6deg}50%{scale:.95 1.06;rotate:-5deg}}
@keyframes sugar-acid-rise{0%{scale:.2;opacity:0}20%{opacity:.95}to{translate:var(--acid-x) -45px;scale:1.2;opacity:0}}
@keyframes sugar-tray-pop{from{scale:.4;rotate:-20deg}to{scale:1;rotate:0deg}}
@media(max-width:700px){.tooth-build-ghost,.tooth-build-solid{max-width:72%;height:58%}.tooth-build-world .dental-sound-target{left:50%!important;width:64px}.tooth-build-world .dental-sound-slot{max-width:75px;width:23%;min-height:46px}.tooth-build-world .dental-sound-tray{left:8%;right:8%;bottom:1%}.tooth-build-world .dental-sound-tile{width:28%;max-width:95px;min-height:52px}.sugar-hero-tooth{height:73%;max-width:95%;top:46%}.sugar-cause-labels{top:1%;left:24%;right:2%;gap:3px}.sugar-cause-word{font-size:12px;padding:4px 5px;min-height:34px}.sugar-piece{width:65px;height:58px}.sugar-bacterium{width:49px;height:49px}.sugar-return-tray{bottom:1%;width:82%;min-height:55px}.dental-tooth .dental-hint{font-size:13px}.dental-tooth .dental-fact-copy{font-size:16px;line-height:1.4}}
@media(max-height:520px) and (orientation:landscape){.tooth-build-world .dental-surface,.tooth-sugar-world .dental-surface{width:72%}.tooth-build-world .dental-sound-tile{max-height:52px;max-width:80px}.tooth-build-world .dental-sound-slots{top:64%}.tooth-build-world .dental-sound-slot{max-width:65px;max-height:44px;min-height:36px}.sugar-cause-labels{top:1%;left:14%}.sugar-piece{width:55px;height:45px}.sugar-bacterium{width:40px;height:36px}.sugar-return-tray{min-height:45px;bottom:0}.sugar-hero-tooth{height:77%;top:45%}}

body[data-game="brave-little-smile"] .round-intro{color:#205760!important;text-shadow:none!important}body[data-game="brave-little-smile"] .round-intro>div{background:#fff2c9;border:3px solid #ead195;border-radius:38px;padding:22px 40px;box-shadow:0 8px 0 #a78d6555;text-shadow:none!important}body[data-game="brave-little-smile"] .round-intro strong,body[data-game="brave-little-smile"] .round-intro small{text-shadow:none!important;color:#205760!important}
.macro-world{background-image:url('assets/enamel-macro-v2.webp');background-size:cover;background-position:center}
.macro-world .dental-surface{overflow:hidden;border-radius:inherit;cursor:grab;touch-action:none}
.macro-spot{position:absolute;transform:translate(-50%,-50%);width:clamp(75px,15cqw,160px);height:clamp(65px,12cqw,130px);border:0;background:none;padding:0;box-shadow:none;opacity:.66;touch-action:none;transition:opacity .3s,filter .3s;z-index:2}
.macro-spot img{width:100%;height:100%;object-fit:contain;pointer-events:none}
.macro-spot.found{opacity:1;filter:drop-shadow(0 0 5px #218a7d);outline:3px solid #4fa598;border-radius:50%}
.macro-lens{position:absolute;width:clamp(120px,24cqw,240px);aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;z-index:5;filter:drop-shadow(0 8px 8px #4c726533)}
.macro-lens:after{content:'';position:absolute;left:83%;top:80%;width:16%;height:46%;border:3px solid #fff3c9;border-radius:15px;background:linear-gradient(90deg,#78a69c,#bad9ca,#78a69c);transform:rotate(-38deg);transform-origin:top center}
.macro-glass{position:absolute;inset:0;border:8px solid #e9bc59;box-shadow:inset 0 0 0 3px #fff6d7,0 0 0 3px #fffae8;border-radius:50%;overflow:hidden;background-image:url('assets/enamel-macro-v2.webp');background-size:240%;background-color:#fff7dd}
.macro-zoom{position:absolute;width:115%;height:105%;object-fit:contain;transform:translate(-50%,-50%);pointer-events:none;opacity:0}
.macro-scan-ring{position:absolute;inset:5px;border-radius:50%;border:4px solid transparent}
.scanning .macro-scan-ring{border-color:#5dad96;animation:macro-scan .65s linear both}
.macro-caption{position:absolute;bottom:8%;left:6%;right:6%;text-align:center;color:#174f59;font-size:clamp(17px,3cqw,30px);paint-order:stroke fill;-webkit-text-stroke:4px #fff5d7;pointer-events:none}
@keyframes macro-scan{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@media(max-width:700px){.macro-spot{width:98px;height:85px}.macro-lens{width:148px}.macro-world .dental-surface{height:91%}.macro-caption{bottom:9%;font-size:20px}.macro-world .dental-hint{font-size:12px}}
@media(prefers-reduced-motion:reduce){.scanning .macro-scan-ring{animation:none}}
.tools-explorer{background-image:url('assets/tooth-lab-v2.webp')}
.tools-practice-tooth{position:absolute;left:42%;top:42%;height:73%;width:65%;object-fit:contain;transform:translate(-50%,-50%);pointer-events:none}
.tools-handpiece{position:absolute;width:44%;height:50%;padding:0;transform:translate(-50%,-50%);border:0;background:none;box-shadow:none;touch-action:none;cursor:grab;z-index:5}
.tools-handpiece img{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 7px 5px #335c6222)}
.tools-water-drop{position:absolute;transform:translate(-50%,-50%) rotate(45deg);width:clamp(20px,4cqw,40px);aspect-ratio:1;border-radius:60% 0 60% 60%;background:radial-gradient(at 30% 30%,#e9fcff,#64bcd9 60%,#4e92b8);box-shadow:inset 2px 2px 3px #fff9,0 3px 4px #4a869b22;z-index:3;transition:opacity .5s,translate .6s,scale .6s}
.sucked-away{translate:70px 70px;scale:.1;opacity:0}.tool-running .tools-handpiece{animation:tools-hum .17s ease-in-out infinite alternate}
.tools-effect-label{position:absolute;bottom:14%;left:7%;right:7%;text-align:center;font-size:clamp(20px,3cqw,32px);color:#205760;paint-order:stroke fill;-webkit-text-stroke:4px #fff8df;pointer-events:none}
.tools-stream{position:absolute;left:44%;top:34%;width:24%;height:20%;z-index:4;opacity:0;pointer-events:none;transform:rotate(28deg);border-radius:50%}
.tool-running .tools-stream{opacity:1}.suction-stream{border-top:5px dashed #89d8e5;animation:tools-flow .5s linear infinite}.air-stream{border-top:4px dashed #fffae5;border-bottom:3px dashed #fff5c7;animation:tools-flow .3s linear infinite}.water-stream{background:repeating-linear-gradient(90deg,transparent 0 14px,#71c9e9 15px 19px,transparent 20px 28px);height:10%;animation:tools-flow .45s linear infinite}
.tool-air .air-drying{animation:tools-dry 1.7s ease-in both}.tool-water .tools-practice-tooth{filter:brightness(1.08) drop-shadow(0 0 10px #c1ecf3)}
@keyframes tools-hum{from{rotate:-1deg}to{rotate:1deg}}@keyframes tools-flow{from{background-position:0 0;translate:0 0}to{background-position:60px 0;translate:-6px -3px}}@keyframes tools-dry{to{translate:-60px -35px;scale:.5;opacity:0}}
@media(max-width:700px){.tools-practice-tooth{left:41%;height:69%;width:80%}.tools-handpiece{width:58%;height:45%}.tools-explorer .dental-tools{padding:6px;gap:7px}.tools-explorer .dental-button{padding:10px 15px;font-size:19px}.tools-effect-label{font-size:20px;bottom:22%}.tools-explorer .dental-hint{font-size:12px}.tools-explorer .dental-fact-copy{font-size:16px}}
@media(prefers-reduced-motion:reduce){.tools-explorer *{animation:none!important;transition:none!important}}
.baby-teeth-world{background-image:url('assets/tooth-lab-v2.webp')}
.baby-face-model{position:absolute;left:50%;top:45%;width:min(84cqw,72cqh);aspect-ratio:1;transform:translate(-50%,-50%)}
.baby-face-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.baby-tooth{position:absolute;transform:translate(-50%,-50%);width:7.2%;height:10.5%;padding:0;border:0;background:none;box-shadow:none;z-index:2;opacity:0;pointer-events:none;cursor:pointer;transition:filter .2s,scale .2s,opacity .35s}
.baby-tooth img{width:100%;height:100%;object-fit:fill;pointer-events:none;filter:drop-shadow(0 2px 1px #a5745e44)}
.baby-lower img{rotate:180deg}.opened .baby-tooth{opacity:1;pointer-events:auto}.baby-tooth.tooth-counted{filter:sepia(.5) saturate(2) drop-shadow(0 0 4px #ffda52);scale:1.06}.baby-tooth.tooth-clue{filter:drop-shadow(0 0 5px #ffce3a);animation:baby-tooth-glow 1.2s ease-in-out infinite alternate}.baby-tooth:focus-visible{outline:3px solid #287e98;outline-offset:1px;border-radius:8px}
.baby-teeth-caption{position:absolute;bottom:12%;left:6%;right:6%;text-align:center;font-size:clamp(23px,4cqw,42px);color:#205760;paint-order:stroke fill;-webkit-text-stroke:5px #fff8df;pointer-events:none}
.demo-incisor .baby-incisor,.demo-canine .baby-canine,.demo-molar .baby-molar{animation:baby-bite .55s ease-in-out infinite alternate}
@keyframes baby-tooth-glow{to{filter:drop-shadow(0 0 8px #f8c032);scale:1.15}}@keyframes baby-bite{to{translate:0 3px;scale:1.08}}
@media(max-width:700px){.baby-face-model{width:min(96cqw,84cqh);top:44%}.baby-teeth-caption{bottom:18%;font-size:27px}.baby-teeth-world .dental-hint{font-size:12px}.baby-teeth-world .dental-fact-copy{font-size:16px}}
@media(prefers-reduced-motion:reduce){.baby-teeth-world *{animation:none!important;transition:none!important}}
.brave-phonics-world{background-image:url('assets/brave-world-v2.webp')}
.brave-pov-world{background-image:url('assets/dental-pov-v2.webp');transition:filter 1.5s}
.brave-breath-control{position:absolute;width:clamp(130px,26cqw,240px);aspect-ratio:1;transform:translate(-50%,-50%);border:5px solid #fff8db;border-radius:50%;background:radial-gradient(#d6f1de,#91c7ba);box-shadow:0 0 0 12px #e6f1de66,0 8px 16px #6b978d44;cursor:pointer;touch-action:none;scale:calc(1 + var(--inhale,0)*.4);color:#205760;z-index:3}
.brave-breath-word{font:700 clamp(23px,4cqw,38px) Froople,sans-serif}.brave-breath-control.breathing-out{scale:1!important;transition:scale 3s ease-in-out}
.brave-pov-caption{position:absolute;left:7%;right:7%;bottom:10%;text-align:center;font:700 clamp(19px,3cqw,30px) Froople,sans-serif;color:#205760;paint-order:stroke fill;-webkit-text-stroke:4px #fff7df;pointer-events:none}
.brave-calm{box-shadow:inset 0 0 80px #e5f8d977}.brave-practice-tooth{position:absolute;left:53%;top:68%;width:25%;height:35%;object-fit:contain;transform:translate(-50%,-50%);pointer-events:none}.brave-practice-tool{position:absolute;left:67%;top:59%;width:32%;height:32%;object-fit:contain;transform:translate(-50%,-50%);pointer-events:none}
.brave-tool-running .brave-practice-tool{animation:brave-tool-buzz .08s linear infinite alternate}.brave-tool-paused .brave-practice-tool{translate:50px -35px;transition:translate .5s;opacity:.65}
.brave-raise-hand{position:absolute;width:20%;height:35%;transform:translate(-50%,-50%) translateY(calc(0px - var(--raise,0px)));border:0;background:none;box-shadow:none;padding:0;touch-action:none;cursor:grab;z-index:6}.brave-raise-hand img{width:100%;height:100%;object-fit:contain;pointer-events:none}.brave-raise-hand.raised{translate:0 -65px;transition:translate .4s}
@keyframes brave-tool-buzz{to{translate:1px -1px;rotate:.6deg}}
@media(max-width:700px){.brave-breath-control{width:150px}.brave-raise-hand{width:29%;height:34%}.brave-practice-tool{width:41%}.brave-pov-caption{font-size:21px;bottom:20%}.brave-pov-world .dental-hint{font-size:12px}.brave-phonics-world .dental-sound-target{left:75%;top:35%}.brave-phonics-world .dental-current-word{left:72%;top:12%}}
@media(prefers-reduced-motion:reduce){.brave-pov-world *{animation:none!important;transition:none!important}}
/* Brush: a continuous tool-to-action lesson. */
.brush-build-reward{position:absolute;left:50%;top:37%;width:34%;height:30%;object-fit:contain;transform:translate(-50%,-50%) scale(.2);opacity:0;pointer-events:none;transition:transform .7s cubic-bezier(.2,1.5,.4,1),opacity .5s;z-index:5}
.brush-created .brush-build-reward{opacity:1;transform:translate(-50%,-50%) scale(1)}
.brush-created .dental-sound-target,.brush-created .dental-sound-slots,.brush-created .dental-sound-tray{opacity:0;pointer-events:none}
.brush-missions-world{background-image:url('assets/tooth-lab-v2.webp')!important}
.brush-teaching-model{position:absolute;width:76%;height:57%;border:0;background:transparent;transform:translate(-50%,-50%);touch-action:none;padding:0;filter:drop-shadow(0 10px 7px #684c3026)}
.brush-teaching-model>img{width:100%;height:100%;object-fit:fill;pointer-events:none}
.brush-plaque-layer{position:absolute;inset:0;pointer-events:none}
.brush-plaque{position:absolute;width:9%;height:12%;border-radius:45% 60% 35% 55%;background:radial-gradient(ellipse,#dec66ac9,#e5d68090 65%,transparent 73%);transform:translate(-50%,-50%);transition:opacity .4s,scale .4s;animation:plaqueClue 2s ease-in-out infinite}
.brush-plaque.removed{opacity:0;scale:.3}
.brush-mission-wand{position:absolute;width:30%;height:20%;border:0;background:transparent;transform:translate(-22%,-45%) rotate(var(--brush-angle,-15deg));z-index:8;touch-action:none;padding:0;filter:drop-shadow(0 6px 3px #12333338)}
.brush-mission-wand>img,.brush-paste-tube>img{width:100%;height:100%;object-fit:contain;pointer-events:none}
.brush-paste-tube{position:absolute;width:25%;height:28%;border:0;background:transparent;padding:0;transform:translate(-50%,-50%) scaleX(calc(1 - var(--squeeze,0)*.1));touch-action:none;z-index:9}
.brush-pea{position:absolute;width:10%;aspect-ratio:1.6;left:12%;top:32%;background:#e0f7f3;border-radius:60% 60% 25% 30%;box-shadow:inset 0 2px 1px #fff;scale:var(--paste,0);transition:scale .15s}
.brush-mission-caption{position:absolute;top:8%;left:5%;right:5%;text-align:center;color:#174f5c;font-size:clamp(16px,3cqw,30px);paint-order:stroke fill;-webkit-text-stroke:4px #fff9df;pointer-events:none}
.brush-mission-track{position:absolute;left:10%;right:10%;top:18%;display:flex;justify-content:center;gap:10px;font-size:clamp(12px,2cqw,20px);pointer-events:none}
.brush-mission-track span{border-radius:20px;background:#fffbebc9;padding:5px 12px;color:#365e60}
.brush-mission-track .current{background:#ffe486;box-shadow:0 0 0 3px #fff9e8}
.brush-mission-track .clean{background:#b7e2c7}
.brush-mission-foam{position:absolute;inset:0;pointer-events:none;z-index:7}
.brush-soft-bubble{position:absolute;width:3%;aspect-ratio:1;border-radius:50%;background:#e9fffcaa;border:2px solid #fff;animation:brushBubble .7s ease-out forwards}
.brush-all-clean .brush-teaching-model{filter:drop-shadow(0 0 15px #fff7a2)}
.brush-fact-words{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.brush-fact-words button,.brush-real-timer{background:#e0f1e7;border:1px solid #9bc6b8;border-radius:14px;color:#174f5c;padding:8px;font:inherit;font-size:14px;min-height:42px}
.brush-fact-words svg{width:14px;height:14px;margin-left:5px}.brush-real-timer{display:block;margin:8px auto 3px}.brush-timer-readout{display:block;font-size:12px;text-align:center;margin-bottom:8px}
@keyframes brushBubble{to{opacity:0;translate:0 -24px;scale:1.4}}
@keyframes plaqueClue{50%{filter:drop-shadow(0 0 4px #fff5a6)}}
@media(max-width:600px){.brush-teaching-model{width:92%;height:48%}.brush-mission-wand{width:36%;height:22%}.brush-mission-track{left:2%;right:2%;gap:5px}.brush-mission-track span{padding:5px 8px}.brush-paste-tube{width:30%}.brush-missions-world .dental-fact-art{max-height:15vh}.brush-missions-world .dental-fact-copy{font-size:14px}}
@media(prefers-reduced-motion:reduce){.brush-build-reward,.brush-soft-bubble{animation:none;transition:none}}
.dental-world .dental-discovery-backdrop{position:fixed;inset:62px 8px 12px;z-index:100;padding:8px}
.brush-missions-world .dental-discovery-card{gap:6px}
.brush-missions-world .dental-fact-art.dental-fact-object{height:64px;max-height:64px;flex-shrink:0}
.brush-missions-world .dental-fact-copy{font-size:17px;line-height:1.35;margin:2px 0}
@media(max-width:600px){.brush-missions-world .dental-fact-copy{font-size:14px}.brush-missions-world .dental-fact-head h2{font-size:23px}.brush-missions-world .dental-discovery-card{padding:10px;gap:5px}.brush-missions-world .brush-real-timer{margin:0 auto}.brush-missions-world .brush-timer-readout{margin:0;font-size:11px}}
@media(max-height:520px) and (orientation:landscape){.dental-world .dental-discovery-backdrop{inset:54px 8px 8px}.brush-missions-world .dental-discovery-card{display:grid;grid-template-columns:1fr 1fr}.brush-missions-world .dental-fact-art{display:none}.brush-missions-world .dental-fact-head,.brush-missions-world .dental-fact-copy{grid-column:1/-1}.brush-missions-world .dental-fact-copy{font-size:14px}.brush-missions-world .brush-timer-readout{grid-column:1/-1}.brush-missions-world .dental-discovery-card>.gold{grid-column:1/-1}}

/* Tactile collection and clear no-sugar feedback, Star 2 only. */
.sugar-return-tray{width:clamp(220px,44cqw,420px);aspect-ratio:3;min-height:0;border:0;border-radius:45%;background:none;box-shadow:none;padding:0;display:block;cursor:default;filter:drop-shadow(0 7px 5px #48695133)}
.sugar-tray-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.sugar-tray-label{position:absolute;left:15%;right:15%;top:19%;font:700 clamp(12px,1.8cqw,18px)/1.1 'Trebuchet MS',sans-serif;color:#205760;text-shadow:0 1px #fff8df;pointer-events:none}
.sugar-tray-pieces{position:absolute;left:18%;right:18%;top:37%;height:38%;display:flex;align-items:center;justify-content:center;gap:6px;pointer-events:none}
.sugar-return-tray .sugar-collected{width:23%;height:100%;object-fit:contain}
.sugar-return-tray.drop-near{outline:4px dashed #edb439;outline-offset:3px;box-shadow:none;filter:drop-shadow(0 0 14px #ffe080)}
.sugar-bacterium{overflow:visible}.sugar-bacterium>img{position:absolute;inset:0;transition:opacity .15s}.sugar-bacterium .sugar-bug-sad{opacity:0}
.sugar-bacterium.no-sugar{z-index:8;filter:none;opacity:1;pointer-events:none;animation:sugar-bug-exit 2s ease-in-out both}
.sugar-bacterium.no-sugar>img:not(.sugar-bug-sad){opacity:0}.sugar-bacterium.no-sugar>.sugar-bug-sad{opacity:1}
.sugar-bug-reaction{position:absolute;bottom:105%;left:50%;transform:translateX(-50%);white-space:nowrap;border:2px solid #eddba1;border-radius:16px;padding:4px 7px;background:#fff8df;color:#645785;font:700 clamp(11px,1.6cqw,15px)/1.1 'Trebuchet MS',sans-serif;pointer-events:none}
@keyframes sugar-bug-exit{0%{scale:1;opacity:1}18%{scale:1.6;rotate:-9deg}32%{scale:1.6;rotate:8deg}48%{scale:1.6;rotate:0deg;opacity:1;translate:0 0}70%{scale:1.1;opacity:.9;translate:0 -16px}100%{scale:.15;opacity:0;translate:0 -55px}}
@media(max-width:700px){.sugar-return-tray{width:76%;max-width:310px;min-height:0}.sugar-tray-label{font-size:12px}.sugar-bug-reaction{font-size:11px}}
@media(max-height:520px) and (orientation:landscape){.sugar-return-tray{width:40%;min-height:0}.sugar-tray-label{font-size:11px}.tooth-build-world .dental-sound-target{top:41%!important;width:60px}}
@media(prefers-reduced-motion:reduce){.sugar-bacterium.no-sugar{animation:none!important;opacity:0}.sugar-return-tray .sugar-collected{animation:none!important}}

/* A true dental inspection mirror, with the reflection registered to its round head. */
.dental-mirror-world .macro-lens{width:clamp(120px,16cqw,170px);transform:translate(-50%,-50%);filter:drop-shadow(0 5px 6px #486b6a44)}
.dental-mirror-world .macro-lens:after{display:none}
.macro-mirror-art{position:absolute;left:-21.25%;top:-15%;width:250%;height:250%;max-width:none;object-fit:contain;pointer-events:none;transform-origin:28.5% 26%}
.mirror-handle-left .macro-mirror-art{transform:scaleX(-1)}
.dental-mirror-world .macro-glass{inset:1%;border:0;background-size:240%;box-shadow:inset 0 0 0 2px #d7e9e6,inset 8px 2px 18px #d6eff02b;z-index:1}
.dental-mirror-world .macro-glass:after{content:'';position:absolute;inset:0;border-radius:50%;background:linear-gradient(125deg,#fff8 0%,#fff0 34%,#fff0 65%,#d3eeef33 100%);pointer-events:none}
.dental-mirror-world .macro-zoom{width:88%;height:88%}.dental-mirror-world .macro-spot.explored{opacity:.85;filter:drop-shadow(0 0 5px #8ac2dd)}
.dental-mirror-world .macro-caption{bottom:6%;font-size:clamp(16px,2.8cqw,28px)}
@media(max-width:700px){.dental-mirror-world .macro-lens{width:130px}.dental-mirror-world .macro-caption{bottom:8%;font-size:18px}.dental-mirror-world .macro-spot{width:84px;height:76px}}
@media(max-height:520px) and (orientation:landscape){.dental-mirror-world .macro-lens{width:90px}.dental-mirror-world .macro-spot{width:65px;height:57px}.dental-mirror-world .macro-caption{left:73%;right:1%;bottom:18%;font-size:17px}}

/* Tool controls belong to the real handpiece, with a separate movable grip. */
.tools-handpiece{width:48%;height:auto;aspect-ratio:3/2;animation:none!important}
.tools-handpiece>img{position:absolute;inset:0;object-fit:fill}
.tools-grip{position:absolute;left:49%;top:43%;width:36%;height:39%;border:0;background:transparent!important;box-shadow:none!important;touch-action:none;cursor:grab;padding:0!important;z-index:3}
.tools-grip:focus-visible,.tools-grip.holding{outline:3px solid #ffdf65;outline-offset:4px;border-radius:35%}
.tools-grip-label{position:absolute;left:50%;top:72%;transform:translateX(-50%);white-space:nowrap;background:#fff8e7e8;color:#174e5b;border-radius:15px;padding:4px 8px;font-size:clamp(12px,1.7cqw,17px);border:1px solid #d6b966}
.tools-valve{position:absolute;transform:translate(-50%,-50%);width:clamp(36px,5cqw,52px);height:clamp(34px,4.5cqw,46px);min-height:0;padding:0!important;font:700 clamp(10px,1.4cqw,15px)/1 sans-serif!important;border-radius:50%;background:#edf9ef!important;border:2px solid #3b827a;box-shadow:0 3px 0 #487b70;z-index:6;touch-action:none}
.tools-valve-air{left:53%;top:17%}.tools-valve-water{left:62%;top:28%}.tools-valve.holding{background:#ffe478!important;box-shadow:0 0 0 6px #ffed9b77}
.tools-valve:disabled{opacity:.75;background:#c5e5d6!important}
.tools-stream{width:24%;height:12%;transform:translate(-85%,-35%) rotate(16deg);transform-origin:100% 50%;pointer-events:none;z-index:6}
.sucked-away{translate:var(--suck-x) var(--suck-y);scale:.1;opacity:0}
.tools-explorer .dental-tools{display:none}.tools-effect-label{bottom:12%;font-size:clamp(16px,2.5cqw,26px);max-width:90%;text-align:center}
@media(max-width:700px){.tools-handpiece{width:76%;height:auto;aspect-ratio:3/2}.tools-valve{width:36px;height:34px}.tools-effect-label{bottom:13%;font-size:17px}.tools-grip-label{font-size:12px}}
@media(max-height:500px) and (min-width:701px){.tools-handpiece{width:43%}.tools-effect-label{bottom:9%;font-size:17px}}

/* Ray Ray: oversized mouth, twenty separate touch targets and three tooth jobs. */
.ray-teeth-world .dental-tools{display:none}.ray-teeth-world .dental-surface{width:100%;height:100%;overflow:hidden}.ray-teeth-world .dental-hint{position:absolute;bottom:0;left:0;right:0;pointer-events:none}
.ray-face-model{position:absolute;left:50%;top:43%;width:min(82cqw,90cqh);aspect-ratio:1;transform:translate(-50%,-50%);transition:width .85s cubic-bezier(.2,.8,.2,1),top .85s}
.ray-face-model.opened{width:min(97cqw,112cqh);top:43%}
.ray-face-closed,.ray-face-open{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;transition:opacity .65s,clip-path .9s cubic-bezier(.2,.8,.2,1)}
.ray-face-open{opacity:0;clip-path:ellipse(2% 2% at 50% 58%)}.opened .ray-face-open{opacity:1;clip-path:ellipse(85% 90% at 50% 55%)}.opened .ray-face-closed{opacity:0}
.ray-tooth{position:absolute;transform:translate(-50%,-50%);width:7.1%;height:12.5%;border:0;padding:0;background:none;box-shadow:none;opacity:0;pointer-events:none;cursor:pointer;z-index:3;transition:filter .2s,opacity .6s;touch-action:manipulation}
.ray-tooth>img{width:100%;height:100%;object-fit:fill;pointer-events:none;filter:drop-shadow(0 2px 1px #812b3644)}.ray-lower>img{rotate:180deg}.opened .ray-tooth{opacity:1;pointer-events:auto}.ray-mouth-opening .ray-tooth{animation:rayTeethAppear 1s ease both}
.ray-tooth:disabled{cursor:default}.ray-tooth:focus-visible{outline:3px solid #fff5bd;outline-offset:1px;border-radius:9px}.ray-tooth.ray-target:not(:disabled){filter:drop-shadow(0 0 5px #ffe68a);animation:rayToothClue 1.6s ease-in-out infinite alternate}.ray-found{filter:sepia(.3) saturate(1.6) drop-shadow(0 0 9px #ffdf62)!important}
.ray-counted>img{animation:rayToothPop .5s ease}.ray-tooth-number{position:absolute;inset:22% 0 auto;text-align:center;font:700 clamp(11px,2cqw,18px)/1.3 sans-serif;color:#205760;text-shadow:0 1px #fff;pointer-events:none}.ray-lower .ray-tooth-number{inset:35% 0 auto}
.ray-count-float{position:absolute;transform:translate(-50%,-50%);font:700 clamp(29px,6cqw,56px)/1 Froople,sans-serif;color:#205760;-webkit-text-stroke:4px #fff7d6;paint-order:stroke fill;z-index:12;pointer-events:none;animation:rayCountUp 1s ease-out both}
.ray-teeth-caption{position:absolute;bottom:6%;left:4%;right:4%;text-align:center;font:700 clamp(18px,3cqw,31px)/1.15 Froople,sans-serif;color:#205760;-webkit-text-stroke:4px #fff8df;paint-order:stroke fill;pointer-events:none;z-index:5}
.ray-ahh-target{position:absolute;transform:translate(-50%,-50%);width:18%;aspect-ratio:1;border:3px dashed #f8da79;border-radius:50%;background:#fff8dfad;color:#205760;box-shadow:0 0 0 8px #ffed9c44;z-index:4;cursor:pointer}.ray-ahh-target svg{width:45%;height:45%}
.ray-microphone{position:absolute;left:78%;top:57%;width:clamp(66px,13cqw,125px);height:35%;border:0;background:none;padding:0;box-shadow:none;cursor:grab;touch-action:none;z-index:7;rotate:12deg;filter:drop-shadow(0 6px 4px #365a5533)}.ray-microphone>img{width:100%;height:100%;object-fit:contain;pointer-events:none}.ray-microphone>span{position:absolute;bottom:-4%;left:50%;transform:translateX(-50%);font:700 clamp(13px,2cqw,18px)/1 sans-serif;white-space:nowrap;background:#fff8df;border:1px solid #ddbf76;border-radius:16px;padding:5px 8px;color:#205760}
.ray-dental-mirror{position:absolute;left:76%;top:74%;width:clamp(62px,9cqw,95px);aspect-ratio:1;pointer-events:none;z-index:8}.ray-dental-mirror>img{position:absolute;width:250%;height:250%;max-width:none;left:-21.25%;top:-15%;pointer-events:none;filter:drop-shadow(0 3px 3px #174f5c44)}.ray-mirror-reflection{position:absolute;inset:3%;border-radius:50%;background:#e8f5eecc;overflow:hidden;border:2px solid #b3d1ce}.ray-mirror-reflection img{width:72%;height:88%;object-fit:contain;position:absolute;left:14%;top:6%}
.ray-job-card{width:min(94%,570px);gap:8px}.ray-job-stage{position:relative;flex:none;height:clamp(130px,28cqh,225px);border-radius:22px;background:radial-gradient(ellipse,#fffdf3,#dceee2);overflow:hidden;isolation:isolate}.ray-job-tooth{position:absolute;width:22%;height:42%;object-fit:contain;left:39%;transition:transform .7s;filter:drop-shadow(0 3px 3px #71938744);z-index:3}.ray-job-upper{top:1%}.ray-job-lower{bottom:1%;rotate:180deg}
.ray-job-food{position:absolute;left:25%;top:40%;width:50%;height:20%;z-index:2;touch-action:none;cursor:grab}.ray-job-food>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;transition:transform 1s ease,opacity .6s}.ray-food-left{clip-path:inset(0 50% 0 0)}.ray-food-right{clip-path:inset(0 0 0 50%)}
.ray-food-crumbs{position:absolute;left:50%;top:50%;opacity:0;width:1px;height:1px;z-index:4;transition:opacity .7s}.ray-food-crumbs img{position:absolute;left:var(--crumb-x);top:var(--crumb-y);width:25px;height:13px;object-fit:cover;clip-path:circle(45%);transition:transform 1s}
.ray-job-action,.ray-job-done{min-height:44px}.ray-job-action{width:100%;font:700 19px/1.2 'Trebuchet MS',sans-serif}.ray-job-card .dental-fact-copy{font-size:clamp(16px,2.5cqw,23px);margin:0}.ray-job-card .dental-fact-head h2{font-size:clamp(24px,3cqw,30px)}
.ray-job-bite.job-running .ray-job-upper{animation:rayBite 1.2s ease both}.ray-job-bite.job-running .ray-job-lower{animation:rayBite 1.2s ease both}.ray-job-bite.job-running .ray-food-left{animation:rayFoodBiteLeft 2.2s ease both}.ray-job-bite.job-running .ray-food-right{animation:rayFoodBiteRight 2.2s ease both}
.ray-job-tear .ray-job-upper{left:27%;top:18%;rotate:-20deg}.ray-job-tear .ray-job-lower{left:51%;bottom:18%;rotate:160deg}.ray-job-tear.job-running .ray-job-upper{transform:translateX(-35%)}.ray-job-tear.job-running .ray-job-lower{transform:translateX(-35%)}
.ray-job-tear.job-running .ray-food-left,.ray-job-tear.job-complete .ray-food-left{transform:translateX(-23%) rotate(-8deg)}.ray-job-tear.job-running .ray-food-right,.ray-job-tear.job-complete .ray-food-right{transform:translateX(23%) rotate(8deg)}
.ray-job-grind.job-warming .ray-job-upper{transform:translateY(12%)}.ray-job-grind.job-running .ray-job-upper,.ray-job-grind.job-running .ray-job-lower{animation:rayGrind .4s ease-in-out infinite alternate}.ray-job-grind.job-running .ray-job-food{animation:rayFoodShrink 2s ease both}.ray-job-grind.job-complete .ray-job-food{opacity:0}.ray-job-grind.job-complete .ray-food-crumbs{opacity:1}.ray-job-bite.job-complete .ray-food-left{transform:translate(-15%,35%) rotate(-8deg)}.ray-job-bite.job-complete .ray-food-right{transform:translate(15%,35%) rotate(8deg)}
@keyframes rayBite{45%,70%{transform:translateY(40%)}100%{transform:translateY(0)}}@keyframes rayGrind{from{transform:translate(-7%,35%)}to{transform:translate(7%,38%)}}@keyframes rayFoodShrink{to{scale:.3;opacity:0}}
@keyframes rayFoodBiteLeft{50%{transform:none}100%{transform:translate(-15%,35%) rotate(-8deg)}}@keyframes rayFoodBiteRight{50%{transform:none}100%{transform:translate(15%,35%) rotate(8deg)}}
@keyframes rayTeethAppear{0%,45%{opacity:0;scale:.2}100%{opacity:1;scale:1}}@keyframes rayToothClue{to{filter:drop-shadow(0 0 10px #ffde65)}}@keyframes rayToothPop{45%{scale:1.18}100%{scale:1}}@keyframes rayCountUp{0%{opacity:0;translate:0 0;scale:.5}20%{opacity:1;scale:1.3}100%{opacity:0;translate:0 -45px;scale:1}}
@media(max-width:700px){.ray-face-model{width:min(94cqw,100cqh);top:43%}.ray-face-model.opened{width:min(114cqw,116cqh);top:40%}.ray-teeth-caption{bottom:7%;font-size:19px}.ray-tooth{height:13%;width:7.25%}.ray-microphone{left:77%;top:55%;width:20%;height:32%}.ray-job-card{padding:10px;gap:6px}.ray-job-stage{height:175px}.ray-job-card .dental-fact-copy{font-size:16px;line-height:1.35}.ray-job-card .dental-fact-head h2{font-size:25px}.ray-dental-mirror{width:60px;left:77%;top:76%}}
@media(max-height:520px) and (orientation:landscape){.ray-face-model,.ray-face-model.opened{width:min(76cqw,120cqh);left:42%;top:43%}.ray-teeth-caption{left:auto;right:3%;width:24%;bottom:15%;font-size:17px}.ray-microphone{left:74%;top:40%;width:10%;height:46%}.ray-job-card{display:grid;grid-template-columns:1fr 1fr;max-width:720px;gap:6px}.ray-job-card .dental-fact-head{grid-column:1/-1}.ray-job-stage{height:130px;grid-row:2/4}.ray-job-card .dental-fact-copy{font-size:15px}.ray-job-action,.ray-job-done{min-height:40px;font-size:17px}.ray-job-done{grid-column:1/-1}.ray-dental-mirror{left:63%;top:65%;width:50px}}
@media(prefers-reduced-motion:reduce){.ray-teeth-world *{animation:none!important;transition:none!important}.ray-job-bite.job-running .ray-food-left{transform:translateX(-15%)}.ray-job-bite.job-running .ray-food-right{transform:translateX(15%)}}
.ray-teeth-world .dental-surface{user-select:none;-webkit-user-select:none;touch-action:none}.ray-dental-mirror{left:68%;top:60%}.ray-teeth-world .dental-hint{font-size:clamp(12px,1.6cqw,16px)}
@media(max-height:520px) and (orientation:landscape){body.rrdd-adventure.rrdd-game-shell.flagship-adventure[data-game="brave-little-smile"] main#app#app:has(.ray-teeth-world){height:calc(var(--device-vh,100dvh) - var(--device-header,52px) - var(--device-nav,0px) - var(--device-recovery,0px))!important;min-height:0!important}.ray-face-model,.ray-face-model.opened{width:min(76cqw,120cqh);left:42%;top:43%}.ray-dental-mirror{left:63%;top:53%}}
@media(max-height:520px) and (orientation:landscape){body.rrdd-adventure.rrdd-game-shell.flagship-adventure[data-game="brave-little-smile"] #playScreen#playScreen:has(.ray-teeth-world):not([hidden]){flex:1 1 0px!important;height:0!important;max-height:none!important}.ray-teeth-world .dental-counter{top:7px;right:8px;font-size:14px;padding:4px 8px}}

/* Star 6: a continuous, child-led visit. Art and controls keep separate safe areas. */
.brave-build-v3{background:#f5e7cc url('assets/brave-chair-worried-v3.webp') center top/cover no-repeat}
.brave-build-v3 .dental-current-word{top:8%!important;left:50%!important}
.brave-build-v3 .dental-sound-target{left:84%!important;top:47%!important;width:clamp(64px,10cqw,94px);border-width:3px}
.brave-build-v3 .dental-sound-slots{top:71%}
.brave-build-v3 .dental-sound-tray{bottom:2%}
.brave-build-v3 .dental-sound-slot{max-width:72px}
.brave-build-v3 .dental-sound-tile{max-width:92px}
.brave-build-v3 .dental-hint{background:#fff6d7e8}
.brave-journey-world{background:#f8edda url('assets/dental-pov-v2.webp') center/cover no-repeat;transition:box-shadow 1s}
.brave-journey-world .dental-surface{width:100%;height:100%}
.brave-journey-world .dental-tools{min-height:0;padding:6px 10px}
.brave-journey-world .dental-hint{background:#fff9e3d9;font-size:clamp(12px,1.8cqw,18px)}
.courage-orb{position:absolute;left:50%;top:49%;translate:-50% -50%;width:clamp(132px,min(29cqw,40cqh),260px);aspect-ratio:1;border:4px solid #fff8dc;border-radius:50%;background:radial-gradient(at 35% 25%,#e5f7dd,#aad4c5 65%,#78b1a8);box-shadow:0 0 0 calc(10px + var(--breath,0)*16px) #e0f1da66,0 8px 22px #3c71672b;scale:calc(1 + var(--breath,0)*.22);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:#205760;cursor:pointer;z-index:4;padding:10px;touch-action:manipulation}
.courage-orb:disabled{opacity:1;cursor:default}.courage-orb strong{font:clamp(20px,3.4cqw,34px)/1.1 Froople,sans-serif}.courage-count{font:700 clamp(13px,1.8cqw,17px)/1.2 'Trebuchet MS',sans-serif}.courage-orb:focus-visible{outline:4px solid #287e98;outline-offset:12px}
.courage-caption{position:absolute;left:5%;right:5%;bottom:7%;text-align:center;color:#205760;font:clamp(20px,3.2cqw,32px)/1.2 Froople,sans-serif;paint-order:stroke fill;-webkit-text-stroke:5px #fff8df;pointer-events:none;z-index:5}
.courage-mirror{position:absolute;width:clamp(145px,36cqw,380px);height:45%;object-fit:contain;right:5%;top:43%;opacity:0;transform:translate(70%,-20%) rotate(-30deg);transition:transform .65s ease,opacity .4s;pointer-events:none;filter:drop-shadow(0 7px 5px #395f5944)}
.courage-mirror.looking{opacity:1;transform:translate(0,0) rotate(-20deg);animation:courage-check 3s ease-in-out infinite}.courage-mirror.withdrawn{animation:none;opacity:0;transform:translate(80%,-40%) rotate(-45deg)}
.courage-hand{position:absolute;left:12%;bottom:5%;width:clamp(70px,18cqw,180px);height:30%;padding:0;border:0;background:none;box-shadow:none;transform:translateY(calc(0px - var(--lift,0px)));touch-action:none;cursor:grab;z-index:5;filter:drop-shadow(0 0 8px #fff2b5)}
.courage-hand img{height:100%;width:100%;object-fit:contain;pointer-events:none}.courage-hand.raised{translate:0 -35px;transition:translate .3s}.courage-raise,.courage-ready{min-width:190px}
.courage-success{background-image:url('assets/brave-chair-happy-v3.webp');background-position:center;box-shadow:inset 0 0 45px #ffebae77}.courage-success .courage-caption{bottom:7%;font-size:clamp(25px,4cqw,42px)}
.brave-journey-world [hidden]{display:none!important}
@keyframes courage-check{50%{translate:-10px 8px;rotate:3deg}}
@media(max-width:700px){.brave-build-v3{background-size:auto 100%;background-position:50% top}.brave-build-v3 .dental-sound-slots{left:8%;right:8%;top:72%}.brave-build-v3 .dental-sound-tray{bottom:1%}.brave-build-v3 .dental-sound-target{left:86%!important;top:53%!important;width:62px}.courage-caption{bottom:6%;font-size:21px}.courage-orb{top:46%;width:150px}.courage-hand{left:8%;height:28%;bottom:13%}.courage-mirror{width:45%;right:3%;top:45%}.brave-journey-world .dental-fact-art{max-height:18cqh}.brave-journey-world .dental-fact-copy{font-size:clamp(14px,3.5cqw,18px);line-height:1.35}.brave-journey-world .dental-fact-head h2{font-size:22px}.brave-journey-world .dental-discovery-card{gap:6px}}
@media(max-height:520px) and (orientation:landscape){body.rrdd-adventure.rrdd-game-shell.flagship-adventure[data-game="brave-little-smile"] main#app#app:has(:is(.brave-build-v3,.brave-journey-world)){height:calc(var(--device-vh,100dvh) - var(--device-header,52px) - var(--device-nav,0px) - var(--device-recovery,0px))!important;min-height:0!important}body.rrdd-adventure.rrdd-game-shell.flagship-adventure[data-game="brave-little-smile"] #playScreen#playScreen:has(:is(.brave-build-v3,.brave-journey-world)):not([hidden]){flex:1 1 0px!important;height:0!important;max-height:none!important}.brave-build-v3 .dental-surface{width:73%}.brave-build-v3{background-size:73% auto;background-position:left 30%;background-color:#f8edda}.brave-build-v3 .dental-sound-target{width:58px;left:90%!important;top:45%!important}.brave-build-v3 .dental-sound-slot,.brave-build-v3 .dental-sound-tile{max-width:54px;min-width:42px;min-height:36px;font-size:24px}.brave-build-v3 .dental-sound-slots{top:62%}.brave-journey-world .dental-tools{position:absolute;bottom:5%;right:2%;width:27%;padding:0}.brave-journey-world .dental-surface{width:72%}.courage-orb{width:105px;top:45%}.courage-orb strong{font-size:20px}.courage-caption{font-size:20px;bottom:3%}.courage-count{font-size:13px}.courage-raise,.courage-ready{min-width:0;width:100%;font-size:17px}.brave-journey-world .dental-discovery-card{max-width:650px}.brave-journey-world .dental-fact-copy{font-size:16px}}
@media(prefers-reduced-motion:reduce){.brave-journey-world *{animation:none!important;transition:none!important}}
@media(max-height:520px) and (orientation:landscape){.ray-face-model,.ray-face-model.opened{width:min(70cqw,180cqh);left:37%;top:36%}.ray-dental-mirror{left:66%;top:38%}}
.ray-dental-mirror{transform:translate(-50%,-50%)}

.brave-journey-world .dental-fact-art{object-fit:contain;background:#f4e9d3;object-position:center}

.courage-motion-paused .courage-mirror{animation-play-state:paused!important}
@media(max-height:520px) and (orientation:landscape){.brave-journey-world{background-position:center top}}

@media(max-height:520px) and (orientation:landscape){
 .brave-build-v3{background-size:50% auto;background-position:left top}
 .brave-build-v3 .dental-surface{width:100%}
 .brave-build-v3 .dental-current-word{left:72%!important;top:12%!important;font-size:28px}
 .brave-build-v3 .dental-sound-target{left:91%!important;top:22%!important;width:48px}
 .brave-build-v3 .dental-sound-slots{left:51%;right:4%;top:37%;gap:9px}
 .brave-build-v3 .dental-sound-tray{left:51%;right:4%;bottom:9%;gap:9px}
 .brave-build-v3 .dental-sound-slot,.brave-build-v3 .dental-sound-tile{max-width:58px}
}

@media(max-height:520px) and (orientation:landscape){.brave-build-v3 .dental-counter{left:12px;right:auto}}
/* Dentist-facing Ray Ray: one coordinate system keeps tools attached to the mouth. */
.dentist-visit-v4{background:#e5eedc!important;position:relative}
.dentist-visit-v4 .dental-surface{width:100%!important;overflow:hidden;border-radius:inherit}
.visit-scene{position:absolute;width:100%;height:100%;inset:0;transform:scale(calc(1 + var(--breath,0)*.025));transform-origin:50% 50%;transition:scale .85s ease;isolation:isolate}
.visit-ray{width:100%;height:100%;object-fit:fill;display:block;pointer-events:none}
.visit-close .visit-scene{scale:1.13;transform-origin:50% 50%}
.visit-repair{position:absolute;left:46%;top:44%;width:7%;height:6%;border:3px dashed #ffe398;border-radius:50%;box-shadow:0 0 15px #ffefad;opacity:0;background:radial-gradient(circle,#fcf3d3,#fffdf0);scale:calc(1 - var(--repair,0)*.2)}
.visit-close .visit-repair{opacity:1;animation:visit-target 1.7s ease-in-out infinite}
.visit-suction{position:absolute;width:24%;height:36%;object-fit:contain;left:24%;top:49%;rotate:-22deg;opacity:0;transition:opacity .3s}
.visit-drill{position:absolute;width:27%;height:35%;object-fit:contain;left:59%;top:44%;rotate:8deg;opacity:0;translate:16% 12%;transition:translate .18s ease,opacity .3s}
.visit-close .visit-suction,.visit-close .visit-drill{opacity:1}
.visit-running .visit-drill{translate:-24% -7%;animation:visit-tool .1s linear infinite}
.visit-water{position:absolute;left:41%;top:51%;width:10%;height:7%;opacity:0;pointer-events:none}
.visit-water i{position:absolute;width:8px;height:10px;background:#a8e9ed;border-radius:55% 55% 70% 70%;left:calc(var(--i)*17%);animation:visit-water 1s calc(var(--i)*-.2s) linear infinite}
.visit-running .visit-water{opacity:1}
.visit-ray-hand{position:absolute;right:5%;top:49%;width:20%;height:36%;object-fit:contain;opacity:0;transform:translateY(65%) rotate(20deg);transition:transform .5s ease,opacity .25s;pointer-events:none;filter:drop-shadow(0 0 8px #fff7c4)}
.visit-hand-raised .visit-ray-hand{opacity:1;transform:translateY(-20%) rotate(-7deg)}
.visit-hand-raised .visit-repair{opacity:.3;animation:none}
.dentist-visit-v4 .courage-orb{top:51%;width:clamp(120px,min(25cqw,35cqh),210px);background:radial-gradient(circle,#d9f1e4aa,#9bcfc6aa);backdrop-filter:blur(1px)}
.dentist-visit-v4 .courage-orb strong{font-size:clamp(19px,3cqw,29px)}
.dentist-visit-v4 .courage-caption{bottom:4%;font-size:clamp(19px,3cqw,30px)}
.dentist-visit-v4 .dental-tools{display:flex;justify-content:center;align-items:center;gap:10px;padding:6px 10px;position:relative;width:auto;right:auto;bottom:auto;background:#fff8e8}
.visit-hold{touch-action:none;user-select:none;-webkit-user-select:none;min-height:48px;min-width:210px;max-width:75%;font-size:clamp(17px,2.3cqw,25px)}
.visit-hold[aria-pressed="true"]{box-shadow:inset 0 4px 8px #315f5a33;translate:0 2px;background:#b4dfc6}
.visit-hold.needs-release{background:#ffe6aa;animation:visit-release .6s ease-in-out infinite}
.visit-meter{width:22%;height:15px;overflow:hidden;border:2px solid #749b90;border-radius:12px;background:#e8f1e6}
.visit-meter i{display:block;height:100%;width:0;background:#eec767;transition:width .08s linear}
.visit-done .visit-repair,.visit-done .visit-suction,.visit-done .visit-drill,.visit-done .visit-water,.visit-done .visit-ray-hand{display:none}
.dentist-visit-v4 [hidden]{display:none!important}
.courage-motion-paused .visit-scene *{animation-play-state:paused!important}
@keyframes visit-target{50%{box-shadow:0 0 25px #ffdb71}}
@keyframes visit-tool{50%{transform:translateY(.6px)}}
@keyframes visit-water{to{transform:translate(-40px,12px) scale(.1);opacity:0}}
@keyframes visit-release{50%{box-shadow:0 0 0 5px #fff2b5}}
@media(max-width:700px){.dentist-visit-v4 .dental-tools{gap:7px}.visit-hold{min-width:190px;font-size:17px}.visit-meter{width:18%}.dentist-visit-v4 .courage-orb{width:126px}.visit-ray{object-fit:fill}.visit-ray-hand{right:2%;width:24%}}
@media(max-height:520px) and (orientation:landscape){.dentist-visit-v4 .dental-tools{position:absolute;right:2%;bottom:3%;width:31%;flex-direction:column;background:#fff8e8dd;border-radius:16px}.visit-hold{min-width:0;max-width:100%;width:100%;min-height:43px;font-size:16px}.visit-meter{width:85%}.dentist-visit-v4 .courage-orb{width:95px;top:51%}.dentist-visit-v4 .courage-orb strong{font-size:17px}.dentist-visit-v4 .courage-count{font-size:12px}.dentist-visit-v4 .courage-caption{left:3%;right:34%;bottom:3%;font-size:18px}.visit-ray{object-fit:contain;background:#d6e5d6}.visit-scene{width:70%;left:0}.visit-repair{left:46%}}
@media(prefers-reduced-motion:reduce){.visit-scene,.visit-ray-hand{transition:none}.visit-running .visit-drill,.visit-repair,.visit-hold.needs-release{animation:none}}
/* Keep the generated 4:3 artwork undistorted, cropping only the quiet side margins. */
.dentist-visit-v4 .visit-scene{inset:auto;top:0;left:50%;translate:-50% 0;height:100%;width:auto;min-width:100%;aspect-ratio:4/3}
.visit-repair{left:46%;top:37%;height:5%}
.visit-drill{left:58%;top:23%;rotate:8deg}
.visit-running .visit-drill{translate:-25% -3%}
.visit-suction{left:29%;top:46%;rotate:160deg;width:17%;height:29%}
.visit-ray-hand{right:18%;top:60%;height:35%;width:18%}
.visit-hand-raised .visit-ray-hand{transform:translateY(-55%) rotate(-7deg)}
.dentist-visit-v4 .courage-orb{top:77%;width:clamp(108px,min(20cqw,30cqh),170px);background:#e5f4e1ed}
.dentist-visit-v4 .courage-orb strong{font-size:clamp(18px,2.7cqw,25px)}
.visit-breath-mouth{display:none;position:absolute;left:50%;top:44.5%;translate:-50% -50%;width:calc(5% + var(--breath,0)*1.8%);height:calc(7.5% + var(--breath,0)*2%);border:3px solid #104b9a;border-radius:50%;background:radial-gradient(ellipse at 50% 100%,#e58b95 25%,#a83951 45%,#59192b 80%);box-shadow:0 0 0 3px #f7ce49}
[data-courage-state="breathing"] .visit-breath-mouth,[data-courage-state="resting"] .visit-breath-mouth{display:block}
[data-courage-state="breathing"] .visit-suction,[data-courage-state="breathing"] .visit-drill,[data-courage-state="resting"] .visit-suction,[data-courage-state="resting"] .visit-drill,[data-courage-state="resting"] .visit-repair{opacity:0}
@media(max-height:520px) and (orientation:landscape){.dentist-visit-v4 .visit-scene{left:35%;min-width:0;width:auto;height:100%}.dentist-visit-v4 .courage-orb{left:79%;top:40%;width:95px}.dentist-visit-v4 .courage-caption{left:3%;right:34%;bottom:4%;font-size:18px}.visit-ray-hand{right:15%}}
.visit-drill{left:49%;top:14%}
[data-courage-state="resting"] .visit-breath-mouth{display:none}
.visit-breath-active .visit-breath-mouth{display:block!important}
[data-courage-state="introducing"] .visit-ray{animation:visit-nod 1.2s ease-in-out}
.visit-hand-raised:not(.visit-breath-active) .visit-ray{animation:visit-nod .8s ease-in-out}
@keyframes visit-nod{50%{transform:translateY(4px) rotate(.6deg)}}
.dentist-visit-v4 .visit-scene{min-width:0;inset:auto;left:50%;top:50%;translate:-50% -50%;aspect-ratio:4/3}
@media(max-height:520px) and (orientation:landscape){.dentist-visit-v4 .visit-scene{left:35%;top:50%;translate:-50% -50%}}
@media(max-width:700px){.dentist-visit-v4.visit-hand-raised .visit-scene{scale:.9}}
/* Star 6 v5: visible breathing, a tip-anchored movable drill and an explicit stop signal. */
.brave-build-v3 .dental-sound-target{display:none!important}
.dentist-visit-v5 .courage-orb{padding:14px;touch-action:none;user-select:none;top:79%;background:#e1f1df;box-shadow:0 4px 0 #6a9484;isolation:isolate}
.dentist-visit-v5 .courage-orb::before{content:'';position:absolute;inset:-7px;border-radius:50%;background:conic-gradient(#ffcd53 var(--breath-progress,0deg),#fff8df 0);z-index:-1;mask:radial-gradient(transparent 61%,#000 63%)}
.courage-orb>svg{display:block;width:55%;height:55%;margin:auto;color:#205963;pointer-events:none}
.dentist-visit-v5 .courage-count{display:block;font-size:clamp(13px,2cqw,18px);pointer-events:none}
.dentist-visit-v5 .visit-breath-mouth{width:calc(13% + var(--breath,0)*8%);height:calc(10% + var(--breath,0)*9%);top:45%;border-width:4px;box-shadow:0 0 0 5px #f8ce46,inset 0 -5px 12px #f39aa855}
.dentist-visit-v5 .visit-repair{translate:-50% -50%;width:6%;height:4.8%;pointer-events:none;z-index:2}
.dentist-visit-v5 .visit-drill{position:absolute;width:29%;height:32%;padding:0;border:0;border-radius:0;background:none;box-shadow:none;transform:translate(-8%,-80%);translate:none;rotate:0deg;transition:none;touch-action:none;cursor:grab;z-index:6;opacity:0;user-select:none}
.dentist-visit-v5 .visit-drill img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.dentist-visit-v5 .visit-drill:focus-visible{outline:3px solid #ffe89b;outline-offset:4px}
.dentist-visit-v5.visit-close .visit-drill{opacity:1}
.dentist-visit-v5.visit-running .visit-drill{translate:none;animation:visit-tool .1s linear infinite;transform:translate(-8%,-80%);filter:drop-shadow(0 0 5px #fff8ce)}
.dentist-visit-v5 .visit-suction{width:29%;height:32%;left:28%;top:44%;rotate:150deg;z-index:3;pointer-events:none}
.dentist-visit-v5 .visit-water{left:34%;top:51%;width:20%;height:9%;z-index:3}
.dentist-visit-v5.visit-close .visit-water{opacity:1}
.dentist-visit-v5 .visit-water i{width:6%;height:18%;background:linear-gradient(#d6ffff,#64c8df);box-shadow:0 0 3px #fff;animation:visit-sip 1.6s calc(var(--i)*-.2s) linear infinite}
.visit-stop-ring{position:absolute;right:4%;top:8%;width:56px;height:56px;border-radius:50%;background:conic-gradient(#ffca5d var(--stop-progress,360deg),#fff8e6 0);z-index:7;pointer-events:none;mask:radial-gradient(transparent 50%,#000 53%)}
.visit-stop-reminder .visit-stop-ring{animation:visit-release .6s infinite}
.visit-ready-nod .visit-ray{animation:visit-nod .8s ease-in-out 2}
.dentist-visit-v5 .dental-tools{min-height:24px;padding:4px;background:#fff8e8}.dentist-visit-v5 .visit-meter{width:50%}
.dentist-visit-v5 .visit-scene{scale:1!important}
.dentist-visit-v5 .courage-caption{bottom:3%;font-size:clamp(17px,2.8cqw,27px)}
.dentist-visit-v5[data-courage-state="idle"] .visit-drill,.dentist-visit-v5[data-courage-state="breathing"] .visit-drill,.dentist-visit-v5[data-courage-state="introducing"] .visit-drill{opacity:0;pointer-events:none}
.dentist-visit-v5.visit-done .visit-drill{display:none}
@keyframes visit-sip{from{transform:translate(15px,0) scale(.8);opacity:.8}to{transform:translate(-55px,15px) scale(.1);opacity:0}}
@media(max-height:520px) and (orientation:landscape){.dentist-visit-v5 .courage-orb{left:80%;top:40%;width:94px}.dentist-visit-v5 .visit-meter{width:90%}.dentist-visit-v5 .dental-tools{bottom:2%;padding:6px}.dentist-visit-v5 .visit-stop-ring{right:4%;top:8%}}
@media(prefers-reduced-motion:reduce){.dentist-visit-v5 .visit-ray,.dentist-visit-v5 .visit-drill,.dentist-visit-v5 .visit-water i{animation:none!important}}

.dentist-visit-v5.visit-running .visit-drill{animation:none}.dentist-visit-v5.visit-running .visit-drill img{animation:visit-tool .1s linear infinite}

/* Same measured HUD row as the other adventures; the film cannot start beneath it. */
body.rrdd-adventure.rrdd-game-shell.flagship-adventure[data-game="brave-little-smile"] #journey#journey{flex:0 0 var(--adv-hud-height)!important;height:var(--adv-hud-height)!important;min-height:var(--adv-hud-height)!important}
body.rrdd-adventure.rrdd-game-shell.flagship-adventure[data-game="brave-little-smile"] main#app#app>#watchScreen:not([hidden]),body.rrdd-adventure.rrdd-game-shell.flagship-adventure[data-game="brave-little-smile"] main#app#app>#playScreen:not([hidden]){height:0!important;flex:1 1 0!important;min-height:0!important;max-height:100%!important}
.dentist-visit-v5 .visit-drill{width:26%;height:29%}
.dentist-visit-v5 .visit-suction{top:41%}

/* Dental photos share the exact paper opening and sit below its padded edge. */
body[data-game="brave-little-smile"] .moon-memory-slot{z-index:1;overflow:hidden}
body[data-game="brave-little-smile"] .moon-memory-art{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
body[data-game="brave-little-smile"] .moon-memory-question{z-index:3}
body[data-game="brave-little-smile"] .moon-memory-slot .framed-answer{width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important;border-radius:inherit}
body.memory-clean-active[data-game="brave-little-smile"] .memory-clean-photo .memory-clean-crop img{width:100%!important;height:100%!important;object-fit:cover!important}

/* The two textured physical valves share the handpiece's coordinate system. */
.syringe-integrated .tools-valve{width:12%;height:12%;min-width:30px;min-height:29px;max-width:none;max-height:none;transform:translate(-50%,-50%) rotate(30deg);border:1px solid #578b7c!important;border-radius:46%;color:#174c53;background:radial-gradient(ellipse at 30% 20%,#daf5df,#93c9ae 60%,#639c84)!important;box-shadow:inset 0 2px 2px #ffffffe0,inset 0 -3px 3px #417b6560,1px 3px 1px #497362,0 4px 5px #263a3a40!important;font-size:clamp(9px,1.1cqw,13px)!important;letter-spacing:-.4px;cursor:grab}
.syringe-integrated .tools-valve-air{left:53%;top:17%}.syringe-integrated .tools-valve-water{left:62%;top:28%}
.syringe-integrated .tools-valve.holding{transform:translate(-50%,-46%) rotate(30deg);background:radial-gradient(ellipse at 35% 20%,#ffe7a4,#ecc85f)!important;box-shadow:inset 0 2px 4px #8d733b80,0 1px 1px #497362!important;cursor:grabbing}
.syringe-integrated .tools-stream{height:12%;width:24%;border:0;border-radius:0;transform:translate(-100%,-10%) rotate(20deg);animation:none;background:none;overflow:visible}
.syringe-integrated .tools-stream.air-stream{border-top:3px solid #fff5c5aa;border-bottom:2px solid #fff8e880;border-radius:50%;animation:syringe-breeze .35s ease-out infinite}
.syringe-spray{position:absolute;inset:0;display:none}.tool-water .syringe-spray{display:block}
.syringe-spray:before{content:'';position:absolute;right:0;top:0;width:100%;height:18%;border-radius:80% 20% 55% 45%;background:linear-gradient(180deg,#e5fbffdd,#5bbfddaa 65%,#a8edff55);box-shadow:0 1px 4px #bef5ff80;transform:rotate(-5deg);transform-origin:100% 50%}
.syringe-spray-drop{position:absolute;right:0;top:0;width:clamp(3px,.6cqw,7px);height:clamp(5px,.9cqw,11px);border-radius:50%;background:radial-gradient(at 30% 20%,#fff,#8ad7ef 60%,#4eacca);animation:syringe-water .65s linear infinite;animation-delay:calc(var(--spray-i)*-.057s);--spray-y:calc((var(--spray-i) - 5)*3px)}
@keyframes syringe-water{0%{translate:0 0;opacity:0;scale:.3}15%{opacity:1}80%{opacity:.9}100%{translate:calc(-1 * clamp(60px,14cqw,170px)) var(--spray-y);opacity:0;scale:1}}
@keyframes syringe-breeze{from{opacity:.3;scale:.9}to{opacity:1;scale:1.03}}
.syringe-integrated .tools-water-drop{animation:none!important;transition:opacity .15s,scale .15s}
@media(prefers-reduced-motion:reduce){.syringe-spray-drop{animation:none;right:calc(var(--spray-i)*8%);top:var(--spray-y)}.syringe-integrated .tools-stream.air-stream{animation:none}}

.syringe-integrated .dental-hint{font-size:clamp(11px,1.5cqw,17px);line-height:1.3;white-space:normal;padding:5px 10px 8px;max-width:100%;box-sizing:border-box}
/* v7: one instruction surface; retain only meaningful in-world words and counters. */
body[data-game="brave-little-smile"] #playScreen>.fp-stage-head,body[data-game="brave-little-smile"] #roundFeedback,.dental-world>.dental-hint,.ray-teeth-caption,.courage-caption{display:none!important}
.ray-dentition{position:absolute;inset:0;z-index:3;clip-path:polygon(10% 51%,11% 46%,14% 42%,20% 39%,30% 38%,40% 38.5%,50% 39%,60% 38.5%,70% 38%,80% 39%,86% 42%,89% 47%,90% 53%,89% 61%,86% 67%,80% 72%,70% 76%,60% 78%,50% 78%,40% 78%,30% 77%,20% 73%,14% 67%,11% 60%)}
.ray-tooth.ray-target:not(:disabled){animation:rayRowReady 1.8s ease-in-out infinite alternate}
@keyframes rayRowReady{from{filter:drop-shadow(0 0 2px #ffe8a1)}to{filter:sepia(.25) saturate(1.4) drop-shadow(0 0 6px #ffdb6b)}}
.ray-ahh-target{width:27%;height:17%;aspect-ratio:auto;background:transparent;border:3px dashed #f6d276;box-shadow:0 0 0 6px #fff4bb50;animation:rayToothClue 1.6s ease-in-out infinite alternate}
.ray-mouth-tap-cue{position:absolute;right:-16px;bottom:-14px;width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#fff5ce;color:#205760;box-shadow:0 2px 0 #ac976b}.ray-mouth-tap-cue svg{width:19px;height:19px}
.ray-dental-mirror{transform:translate(-50%,-50%);touch-action:none}.ray-mirror-hover{filter:drop-shadow(0 0 9px #ffe46e)!important}.mirror-selecting .ray-mirror-reflection{border:4px solid #ffd15c;box-shadow:0 0 0 5px #fff4c980}
.ray-job-control{cursor:pointer;touch-action:none;outline-offset:3px;border-radius:15px;animation:rayControlReady 1.8s ease-in-out infinite alternate}.ray-job-control[aria-disabled="true"]{cursor:default;animation:none}.ray-job-control:focus-visible{outline:3px solid #dcac35}.ray-job-cue{position:absolute;bottom:3%;left:2%;right:2%;text-align:center;font:700 15px/1.25 'Trebuchet MS',sans-serif;color:#21575d;text-shadow:0 1px #fff;pointer-events:none;z-index:5}.ray-job-cue[hidden]{display:none}.ray-job-stage .ray-job-control{translate:var(--pull,0px) 0}.ray-job-card .ray-job-stage{height:clamp(165px,31cqh,245px)}
@keyframes rayControlReady{to{filter:drop-shadow(0 0 7px #efc856);scale:1.06}}
.ray-job-stage.job-running .ray-job-control{animation:none}
/* Illuminate the original tooth pixels: no detached replacement crown or circle. */
.dentist-visit-v5 .visit-repair{width:6%;height:6%;border:0;border-radius:0;box-shadow:none;background-color:transparent;background-size:1666.6667% 1666.6667%;background-position:64.3617% 56.3830%;clip-path:polygon(10% 30%,28% 10%,65% 0,95% 10%,100% 60%,75% 92%,30% 100%,0 70%);filter:brightness(1.12) drop-shadow(0 0 5px #ffe69a);animation:fixedToothGlow 1.5s ease-in-out infinite;scale:1}
@keyframes fixedToothGlow{50%{filter:brightness(1.6) saturate(.7) drop-shadow(0 0 9px #ffe28b)}}
.dentist-visit-v5 .visit-suction{top:37%;left:30%}.dentist-visit-v5 .visit-water{top:48%;left:36%;width:18%}
@media(prefers-reduced-motion:reduce){.ray-job-control,.ray-ahh-target,.ray-tooth.ray-target:not(:disabled),.dentist-visit-v5 .visit-repair{animation:none}}

.ray-dental-mirror{pointer-events:auto;touch-action:none;cursor:grab}.ray-dental-mirror:active{cursor:grabbing}
