:root{--ink:#3c2461;--purple:#6935a8;--pink:#f2589b;--teal:#28bec7;--cream:#fffaf5;--gold:#ffd972;--shadow:0 14px 40px rgba(65,32,104,.2)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Trebuchet MS","Arial Rounded MT Bold",Arial,sans-serif;color:var(--ink);background:#bfeeff}button,input{font:inherit}button{cursor:pointer}button:focus-visible{outline:4px solid #ffd85e;outline-offset:3px}.screen{display:none;min-height:100dvh}.screen.active{display:flex}.home-screen{position:relative;overflow:hidden;align-items:center;flex-direction:column;text-align:center;padding:24px 18px 14px;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.6),transparent 36%),linear-gradient(#74c9f5 0 60%,#e9ccff)}.home-screen:after{content:"";position:absolute;inset:58% -8% -10%;background:radial-gradient(ellipse at center,#fff 0 22%,transparent 23%) 0 0/150px 90px,linear-gradient(transparent,#f4dbff);opacity:.82}.home-sparkles{position:absolute;inset:0;background-image:radial-gradient(#fff 1px,transparent 2px),radial-gradient(#ffe577 1px,transparent 2px);background-size:57px 57px,91px 91px;animation:twinkle 3s infinite alternate}.brand-chip{position:relative;z-index:2;padding:7px 15px;border-radius:99px;background:rgba(255,255,255,.75);font-size:12px;font-weight:900;letter-spacing:.12em;color:#58308a}.home-screen h1{position:relative;z-index:2;margin:8px 0 0;text-transform:uppercase;line-height:.86;text-shadow:0 4px 0 white,0 8px 18px rgba(66,31,114,.18)}.home-screen h1 span{display:block;font-size:clamp(26px,5vw,52px);color:#5a2f95}.home-screen h1 strong{display:block;font-size:clamp(53px,10vw,104px);background:linear-gradient(90deg,#ff4f99,#ffb656,#2fcbd2,#7b57d1,#ff64ae);-webkit-background-clip:text;color:transparent;letter-spacing:-.05em}.subtitle{position:relative;z-index:2;font-size:clamp(19px,3vw,30px);font-weight:900;margin:9px 0 0}.hero-family{z-index:1;display:flex;align-items:flex-end;justify-content:center;height:min(53dvh,570px);margin-top:-28px}.hero-family img{height:100%;max-width:50%;object-fit:contain;filter:drop-shadow(0 18px 12px rgba(77,42,109,.22));animation:float 3s ease-in-out infinite}.hero-family img+img{animation-delay:-1.5s;margin-left:-4%}.home-actions{position:relative;z-index:3;display:flex;align-items:center;gap:10px;margin-top:-50px}.home-note{position:relative;z-index:3;margin:9px 0;font-size:12px;font-weight:800}.primary,.soft,.text-button,.icon-button,.back-button{border:0;border-radius:18px;font-weight:900;padding:13px 24px}.primary{color:white;background:linear-gradient(180deg,#ff68ad,#e7428c);box-shadow:0 7px 0 #b52c6b,0 11px 20px rgba(130,38,104,.26);text-transform:uppercase;letter-spacing:.04em}.primary:active{transform:translateY(4px);box-shadow:0 3px 0 #b52c6b}.primary:disabled{filter:grayscale(.8);opacity:.55;cursor:not-allowed}.jumbo{font-size:22px;min-width:180px}.soft{color:var(--purple);background:rgba(255,255,255,.92);box-shadow:0 5px 0 rgba(90,49,141,.18)}.icon-button,.back-button{padding:0;width:44px;height:44px;background:rgba(255,255,255,.9);color:var(--purple);font-size:22px;box-shadow:0 4px 12px rgba(67,36,96,.16)}.wide{width:100%;margin-top:10px}.text-button{background:none;color:var(--purple)}
.setup-screen{flex-direction:column;background:linear-gradient(#99dcfa,#ead4ff);padding-bottom:30px}.screen-header,.game-header{display:flex;align-items:center;justify-content:space-between;padding:14px max(16px,env(safe-area-inset-left));z-index:10}.screen-header small,.game-header small{display:block;text-transform:uppercase;letter-spacing:.12em;font-weight:900;color:#8e62a8}.screen-header h2{margin:0;font-size:clamp(22px,4vw,38px)}.setup-panel{width:min(1100px,calc(100% - 24px));margin:0 auto;padding:clamp(16px,3vw,30px);border-radius:30px;background:rgba(255,250,247,.88);box-shadow:var(--shadow);backdrop-filter:blur(12px)}.setup-panel h3{margin:0 0 12px}.count-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.count-picker button{border:2px solid transparent;border-radius:18px;padding:12px 5px;background:white;color:var(--ink);box-shadow:0 4px 12px rgba(71,39,102,.09)}.count-picker strong{font-size:28px;display:block}.count-picker span{font-size:11px;font-weight:800;display:block}.count-picker button.selected{border-color:var(--pink);background:#fff1f7;transform:translateY(-3px)}.selection-heading{display:flex;justify-content:space-between;align-items:center;margin-top:24px}.selection-heading h3{margin:0}.selection-heading span{font-weight:900;background:#eee3ff;padding:5px 10px;border-radius:99px}.character-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.character-card{position:relative;overflow:hidden;padding:0;border:3px solid transparent;border-radius:22px;background:white;color:var(--ink);box-shadow:0 6px 18px rgba(72,35,100,.12);transition:.2s}.character-card img{display:block;width:100%;aspect-ratio:1;object-fit:cover}.character-card div{padding:10px}.character-card strong{font-size:18px;display:block}.character-card small{display:block;min-height:31px}.character-card em{display:block;margin-top:6px;font-size:11px;font-style:normal;color:#71469b;font-weight:900}.character-card.selected{border-color:var(--pink);transform:translateY(-5px);box-shadow:0 10px 25px rgba(202,59,134,.25)}.character-card.selected:after{content:attr(data-player);position:absolute;top:8px;left:8px;padding:6px 9px;border-radius:99px;background:#49257c;color:#fff;font-size:11px;font-weight:900}.power-toggle{display:flex;align-items:center;justify-content:space-between;margin:18px 0;padding:12px 16px;border-radius:18px;background:#f0e6ff}.power-toggle span small{display:block}.power-toggle input{width:25px;height:25px;accent-color:var(--pink)}
.game-screen{height:100dvh;overflow:hidden;flex-direction:column;background:linear-gradient(#7ed2f7,#edd7ff)}.game-header{height:66px;flex:0 0 auto}.turn-pill{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.94);padding:6px 16px 6px 7px;border-radius:99px;box-shadow:0 5px 14px rgba(72,40,100,.17)}.turn-pill img{width:43px;height:43px;object-fit:cover;border-radius:50%;background:#ddd}.turn-pill strong{display:block;font-size:18px}.board-camera{position:relative;flex:1;min-height:0;overflow:hidden;margin:0 9px;border:4px solid white;border-radius:24px;box-shadow:var(--shadow);background:#91d8f5}.board{position:absolute;inset:0;aspect-ratio:3/2;min-width:100%;min-height:100%;transform-origin:var(--focus-x,50%) var(--focus-y,50%);transition:transform .7s ease}.board.focus{transform:scale(1.09)}.board-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.space-layer,.token-layer,.transport-layer{position:absolute;inset:0}.space{position:absolute;left:calc(var(--x)*1%);top:calc(var(--y)*1%);width:clamp(18px,3.2vw,44px);aspect-ratio:1;transform:translate(-50%,-50%);border:2px solid rgba(255,255,255,.95);border-radius:50%;display:grid;place-items:center;background:linear-gradient(#fff9f1,#f0d9ff);box-shadow:0 2px 5px rgba(49,25,82,.3);font-size:clamp(8px,1.2vw,13px);font-weight:900;color:#552a83;z-index:2}.space:before{position:absolute;font-size:1.5em;line-height:1}.space span{z-index:2}.space.rainbow{background:conic-gradient(#ff81af,#ffd774,#77e1d8,#a98cf5,#ff81af)}.space.rainbow:before{content:"↟";color:#fff;text-shadow:0 1px 2px #7840ae}.space.slide{background:#cff3ff}.space.slide:before{content:"☁";color:#7489c2}.space.sisterly{background:radial-gradient(circle,#fff 25%,#ff92bd 28% 58%,#fff 61%);animation:pulse 1.6s infinite}.space.sisterly:before{content:"♥";color:#e83885}.space.surprise{background:#ffe98c}.space.surprise:before{content:"★";color:#ef8d2f}.space.safe:before{content:"◆";color:#32b2c1}.space.finish{background:linear-gradient(135deg,#ffe16d,#ff91bd,#76dfe0);border-color:#fff6b0}.token{position:absolute;left:calc(var(--x)*1%);top:calc(var(--y)*1%);width:clamp(34px,5.2vw,70px);height:clamp(34px,5.2vw,70px);transform:translate(calc(-50% + var(--offset-x,0px)),calc(-72% + var(--offset-y,0px)));object-fit:contain;z-index:8;filter:drop-shadow(0 4px 3px rgba(50,24,77,.38));transition:left .14s linear,top .14s linear,transform .2s}.token.active{z-index:9;animation:tokenBob .8s infinite alternate}.start-label,.finish-label{position:absolute;padding:4px 9px;border-radius:99px;color:white;background:rgba(74,37,122,.8);font-weight:900;font-size:clamp(8px,1.1vw,13px);z-index:3}.start-label{left:43%;bottom:1%}.finish-label{left:43%;top:2%}.transport-line{position:absolute;height:6px;border-radius:99px;transform-origin:left center;opacity:.8;z-index:1}.transport-line.rainbow{background:linear-gradient(#ff66a4 0 20%,#ffd66d 20% 40%,#70d9d5 40% 60%,#8762d4 60% 80%,#fff 80%)}.transport-line.slide{height:4px;background:repeating-linear-gradient(90deg,#fff 0 8px,#8ed9ef 8px 16px)}
.race-panel{flex:0 0 auto;padding:8px 12px max(10px,env(safe-area-inset-bottom));background:rgba(255,250,247,.94);box-shadow:0 -7px 20px rgba(63,35,93,.13)}.racer-strip{display:flex;justify-content:center;gap:7px}.racer-chip{display:flex;align-items:center;gap:4px;padding:3px 9px 3px 3px;border-radius:99px;background:white;border:2px solid transparent;font-size:11px;font-weight:900}.racer-chip.active{border-color:var(--pink);background:#fff0f7}.racer-chip img{width:28px;height:28px;border-radius:50%}.turn-message{text-align:center;font-weight:900;min-height:22px;margin:4px}.controls{display:flex;justify-content:center;align-items:stretch;gap:9px}.dice-button,.power-button{border:0;border-radius:19px;color:white;min-height:66px}.dice-button{display:flex;align-items:center;justify-content:center;gap:12px;min-width:190px;background:linear-gradient(155deg,#54d4de,#3199c9 48%,#7960d0);box-shadow:0 7px 0 #315ba4,0 10px 18px rgba(35,74,139,.25);font-size:25px;font-weight:900}.dice-button span{display:grid;place-items:center;width:48px;height:48px;border-radius:13px;background:rgba(255,255,255,.92);color:#ef4b92;font-size:27px;box-shadow:inset 0 0 0 3px rgba(255,255,255,.5)}.dice-button.rolling span{animation:diceRoll .55s}.dice-button:disabled{opacity:.55;filter:grayscale(.4)}.power-button{display:flex;flex-direction:column;justify-content:center;padding:4px 14px;background:linear-gradient(#9a68dd,#6333a2);box-shadow:0 6px 0 #452477}.power-button span{position:absolute}.power-button small{font-size:10px}.event-card{position:fixed;left:50%;top:50%;z-index:50;width:min(440px,calc(100% - 28px));padding:22px;border:4px solid white;border-radius:28px;background:linear-gradient(145deg,#fff6fb,#ede1ff);box-shadow:0 20px 60px rgba(49,20,81,.35);text-align:center;transform:translate(-50%,-40%) scale(.6);opacity:0;pointer-events:none;transition:.25s}.event-card.show{transform:translate(-50%,-50%) scale(1);opacity:1}.event-card span{font-size:42px}.event-card strong{display:block;font-size:25px;text-transform:uppercase}.event-card p{margin:6px 0;font-weight:800}
.magic-dialog,.victory-dialog{border:0;border-radius:30px;color:var(--ink);background:#fffaf7;box-shadow:0 22px 80px rgba(54,21,85,.45)}dialog::backdrop{background:rgba(45,20,68,.55);backdrop-filter:blur(5px)}.magic-dialog{width:min(620px,calc(100% - 24px));padding:25px}.dialog-close{position:absolute;right:13px;top:12px;width:38px;height:38px;border:0;border-radius:50%;font-size:26px;color:var(--purple);background:#f2e8ff}.dialog-title{display:flex;align-items:center;gap:12px}.dialog-title>span{font-size:48px}.dialog-title small{font-weight:900;color:#a5639b;text-transform:uppercase}.dialog-title h2,.magic-dialog h2{margin:0;font-size:31px}.how-list{list-style:none;margin:16px 0;padding:0;display:grid;gap:8px}.how-list li{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:16px;background:#f6efff}.how-list b{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:white;font-size:22px}.legend{display:grid;grid-template-columns:1fr 1fr;gap:7px;font-size:13px;font-weight:900}.legend span{padding:8px;border:1px solid #ead8f6;border-radius:12px}.legend i{font-style:normal;margin-right:5px}.legend-heart{color:#ee3d88}.gentle-note{text-align:center;font-weight:800;color:#8d5aa7}.compact-dialog{width:min(420px,calc(100% - 24px))}.setting-row{display:flex;justify-content:space-between;align-items:center;margin:12px 0;padding:12px;border-radius:14px;background:#f3eaff;font-weight:900}.setting-row small{display:block;font-weight:500}.setting-row input{width:24px;height:24px;accent-color:var(--pink)}.victory-dialog{width:min(850px,calc(100% - 20px));height:min(620px,calc(100dvh - 20px));padding:0;overflow:hidden}.victory-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.victory-content{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:linear-gradient(90deg,rgba(255,255,255,.45),rgba(255,255,255,.05),rgba(255,255,255,.45));text-shadow:0 2px 0 #fff}.victory-content p{margin:0;text-transform:uppercase;font-weight:900;letter-spacing:.12em}.victory-content h2{margin:0;font-size:clamp(39px,8vw,76px);color:#6d36a7}.victory-content img{height:45%;max-width:45%;object-fit:contain;filter:drop-shadow(0 10px 8px rgba(67,30,89,.25))}.victory-content>strong{font-size:25px}.victory-content>span{font-weight:900}.victory-content>div{display:flex;gap:8px;margin-top:12px}.achievement{position:fixed;right:14px;top:14px;z-index:100;display:flex;gap:10px;align-items:center;padding:11px 18px;border:3px solid #fff;border-radius:18px;background:#5c3192;color:#fff;box-shadow:var(--shadow);transform:translateX(120%);transition:.4s}.achievement.show{transform:translateX(0)}.achievement>span{font-size:30px;color:#ffd969}.achievement small,.achievement strong{display:block}
@keyframes float{to{transform:translateY(-10px) rotate(1deg)}}@keyframes twinkle{to{opacity:.45;transform:scale(1.03)}}@keyframes pulse{50%{box-shadow:0 0 18px #ff5ea7,0 0 6px #fff}}@keyframes tokenBob{to{transform:translate(calc(-50% + var(--offset-x,0px)),calc(-83% + var(--offset-y,0px)))}}@keyframes diceRoll{20%{transform:rotate(90deg) scale(1.1)}50%{transform:rotate(210deg) scale(.85)}80%{transform:rotate(320deg) scale(1.12)}100%{transform:rotate(360deg)}}
@media(max-width:700px){.home-screen{padding-top:14px}.brand-chip{font-size:9px}.hero-family{height:50dvh;margin-top:-12px}.home-actions{margin-top:-34px;flex-wrap:wrap;justify-content:center}.home-actions .icon-button{position:absolute;right:-45px}.count-picker{gap:5px}.character-grid{grid-template-columns:1fr 1fr}.setup-panel{padding:14px}.character-card small{min-height:0}.game-header{height:59px;padding:7px 10px}.turn-pill strong{font-size:14px}.turn-pill small{font-size:8px}.board-camera{margin:0 5px;border-width:3px;border-radius:17px}.board{min-width:110%;left:-5%}.space{border-width:1px}.race-panel{padding:5px}.racer-strip{gap:2px}.racer-chip{padding-right:5px;font-size:9px}.racer-chip img{width:23px;height:23px}.turn-message{font-size:13px}.dice-button{min-height:58px;min-width:165px}.power-button{min-height:58px}.victory-content img{height:38%}.victory-content>div{flex-wrap:wrap;justify-content:center}.legend{grid-template-columns:1fr}.magic-dialog{padding:18px}.how-list{gap:4px}.how-list li{padding:5px 8px}}
@media(orientation:landscape) and (max-height:600px){.game-header{height:53px}.race-panel{position:absolute;right:10px;bottom:10px;width:250px;border-radius:22px;z-index:20}.racer-strip{display:none}.board-camera{margin-bottom:6px}.home-screen h1 strong{font-size:58px}.hero-family{height:53dvh}.home-actions{margin-top:-45px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Final camera-fit overrides: full kingdom on wide screens, tracked landscape board on phones. */
.hero-family img{mix-blend-mode:multiply}
.board-camera{flex:0 1 auto;width:min(calc(100% - 18px),calc((100dvh - 200px)*1.5));aspect-ratio:3/2;margin:0 auto}
.board{inset:0;width:100%;height:100%;min-width:0;min-height:0}
@media(max-width:700px){.home-actions .icon-button{position:static}.board-camera{flex:1;width:calc(100% - 10px);aspect-ratio:auto}.board{inset:auto;top:0;left:var(--pan-x,0px);height:100%;width:auto;min-width:0;aspect-ratio:3/2;transition:left .65s ease,transform .7s ease}}
.event-card.show{pointer-events:auto}.event-ok{min-width:130px;margin-top:8px;font-size:18px}
.event-card{width:min(760px,calc(100% - 24px));padding:14px 18px}.event-scene{display:grid;grid-template-columns:150px minmax(240px,1fr) 150px;align-items:end;gap:10px}.event-character{margin:0;text-align:center}.event-character img{display:block;width:100%;height:190px;object-fit:contain;mix-blend-mode:multiply;filter:drop-shadow(0 8px 6px rgba(64,29,91,.2))}.event-character figcaption{display:inline-block;margin-top:-5px;padding:4px 9px;border-radius:99px;background:#61379a;color:white;font-size:11px;font-weight:900}.event-message{position:relative;align-self:center;padding:18px 15px;border-radius:24px;background:white;box-shadow:0 9px 24px rgba(71,36,103,.13)}.event-message:before{content:"";position:absolute;left:-16px;top:48%;border:10px solid transparent;border-right-color:white}.event-message>span{font-size:42px}.event-message>strong{display:block;font-size:25px;text-transform:uppercase}.event-message p{margin:6px 0;font-weight:800}.victory-confetti{position:absolute;z-index:3;inset:0;overflow:hidden;pointer-events:none}.confetti-piece{position:absolute;top:-12%;left:calc(var(--x)*1%);width:10px;height:18px;border-radius:3px;background:var(--color);transform:rotate(var(--tilt));animation:confettiFall var(--duration) var(--delay) cubic-bezier(.25,.65,.45,1) forwards}.confetti-piece:nth-child(3n){border-radius:50%;width:12px;height:12px}.confetti-piece:nth-child(5n){clip-path:polygon(50% 0,63% 35%,100% 38%,72% 61%,80% 100%,50% 76%,20% 100%,28% 61%,0 38%,37% 35%)}
@keyframes confettiFall{0%{transform:translateY(-10vh) rotate(0deg);opacity:1}75%{opacity:1}100%{transform:translate(var(--drift),112vh) rotate(760deg);opacity:.25}}
@media(max-width:700px){.event-card{padding:10px}.event-scene{grid-template-columns:82px 1fr 82px;gap:4px;align-items:center}.event-character img{height:125px}.event-character figcaption{font-size:8px;padding:3px 5px}.event-message{padding:13px 8px}.event-message:before{left:-10px;border-width:7px}.event-message>span{font-size:30px}.event-message>strong{font-size:17px}.event-message p{font-size:12px}.event-ok{font-size:14px;min-width:95px;padding:10px 15px}}
.home-music-start{position:absolute;z-index:5;right:16px;top:16px;border:2px solid white;border-radius:99px;padding:8px 13px;background:#563191;color:white;font-weight:900;box-shadow:0 5px 14px rgba(57,29,94,.22)}
@media(max-width:700px){.home-music-start{top:145px;right:10px;font-size:11px;padding:6px 10px}}
