/* Each world retains its own space, palette, material and interaction. */
/* U232: only the mark and wordmark are links, never the surrounding whitespace.
   The stationary mark hitbox does not follow the animated SVG/kana on hover. */
body .world-header .world-brand{--brand-hit-size:32px;position:relative;width:max-content;max-width:82vw;height:44px;pointer-events:none;user-select:none;touch-action:manipulation}
body .world-header .world-brand::before{content:"";position:absolute;left:0;top:50%;width:var(--brand-hit-size);height:var(--brand-hit-size);transform:translateY(-50%);pointer-events:auto;cursor:pointer}
body .world-header .world-brand>[data-brand-label]{pointer-events:auto;cursor:pointer}
body .world-header .world-brand>:is(svg,.kana-mark){pointer-events:none}
@media(max-width:600px){body .world-header .world-brand{--brand-hit-size:27px}}
body[data-world="25"] .world-header .world-brand{--brand-hit-size:34px}
body .world-header .world-brand>svg,body .world-header .kana-mark{flex-shrink:0}
body[data-world="05"] .world-header .world-brand ellipse{fill:none}
body[data-world="23"] .world-header .world-brand{text-transform:none}
body[data-brand-case="upper"][data-world="19"] .cutout-world h1{font-size:14vw}
body[data-brand-case="upper"][data-world="25"] .canvas-world h1{font-size:12.5vw}
body[data-world="21"] .culture-log{position:absolute;left:50%;bottom:68px;transform:translateX(-50%);width:330px;max-width:82vw;margin:0;padding:0;list-style:none;font:10px/1.55 Consolas,"Yu Gothic UI",monospace;color:#536e6d;pointer-events:none;white-space:nowrap;overflow:hidden}
body[data-world="21"] .culture-log li:first-child{color:#203e42}
body[data-world="25"] .gravity-controls{position:absolute;z-index:12;left:50%;bottom:28px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:24px;max-width:92vw;padding:10px 16px;border:1px solid #30243d48;background:#d9cce1d9;border-radius:8px}
body[data-world="25"] .gravity-controls .gravity-label{position:static;transform:none;white-space:nowrap;gap:8px;font-size:11px}
body[data-world="25"] .gravity-controls .art-controls{position:static;margin:0;gap:8px;justify-content:center}
body[data-world="25"] .gravity-controls button{border:1px solid #30243d7a;background:#eee4f2;padding:9px 12px;border-radius:5px;min-height:40px;font-size:11px;letter-spacing:0;white-space:nowrap}
body[data-world="25"] .gravity-controls button:hover{background:#30243d;color:#f0e7f2}
body[data-world="25"] .gravity-controls input{width:100px}
body .stage-trigger,body .act,body .art-controls button{touch-action:manipulation;user-select:none}
@media(max-width:600px){body[data-brand-case="upper"][data-world="19"] .cutout-world h1{font-size:15.5vw}body[data-brand-case="upper"][data-world="25"] .canvas-world h1{font-size:14.5vw}body[data-brand-case="upper"][data-world="24"] .canvas-world h1{font-size:14.5vw}body[data-world="25"] .gravity-controls{bottom:24px;gap:10px;padding:8px;flex-wrap:wrap}body[data-world="25"] .gravity-controls .gravity-label{font-size:10px}body[data-world="25"] .gravity-controls input{width:72px}body[data-world="25"] .gravity-controls button{padding:8px;font-size:10px}body[data-world="25"] .gravity-controls .art-controls{gap:5px}body[data-world="21"] .culture-log{bottom:77px;font-size:9px}}
[data-world="16"] .world-brand svg{stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* U189: the controls belong below the ball field, not on an opaque floating patch. */
body[data-world="22"] .canvas-world .canvas-wrap{inset:0 0 88px}
body[data-world="22"] .canvas-world .art-controls{left:0;right:0;bottom:0;height:88px;max-width:none;margin:0;padding:18px 6vw;display:flex;align-items:center;justify-content:flex-end;gap:12px;border-top:1.5px solid #432134;background:transparent}
body[data-world="22"] .canvas-world .art-controls button{min-width:94px;min-height:44px;padding:11px 23px;border:1.5px solid #432134;border-radius:999px;background:transparent;font-size:12px;letter-spacing:.025em;transition:background-color .14s,color .14s,transform .1s}
body[data-world="22"] .canvas-world .art-controls button:hover{background:#432134;color:#f5d1c9}
body[data-world="22"] .canvas-world .art-controls button:active{transform:translateY(2px)}
@media(max-width:600px){body[data-world="22"] .canvas-world .art-controls{justify-content:center}}
[data-world="19"] .world-brand{font-weight:900;letter-spacing:-.07em;font-size:24px}[data-world="21"] .world-brand{font-family:Consolas,monospace;font-size:17px;letter-spacing:.04em;font-weight:400}[data-world="23"] .world-brand{font-weight:400;letter-spacing:.12em;font-size:15px;text-transform:uppercase}[data-world="24"] .world-brand{font-family:Georgia,serif;font-weight:400;font-size:26px;letter-spacing:-.055em}[data-world="25"] .world-brand{font-weight:900;font-style:italic;letter-spacing:-.06em}
.c05 .title{position:absolute!important;inset:50% auto auto 50%!important;width:min(72vw,45rem);height:min(72vw,45rem);transform:translate(-50%,-50%);display:block!important}.c05 .title span{position:absolute;left:50%;top:50%;font:900 clamp(22px,3.5vw,58px)/1 Arial,sans-serif;transform:translate(-50%,-50%) rotate(calc(var(--i)*45deg)) translateY(calc(-1*min(34vw,29svh,18rem)*var(--spread,1))) rotate(calc(var(--i)*-45deg))}.c05 .title span:nth-child(1){--i:0}.c05 .title span:nth-child(2){--i:1}.c05 .title span:nth-child(3){--i:2;color:var(--accent)}.c05 .title span:nth-child(4){--i:3}.c05 .title span:nth-child(5){--i:4}.c05 .title span:nth-child(6){--i:5;color:var(--accent)}.c05 .title span:nth-child(7){--i:6}.c05 .title span:nth-child(8){--i:7}
body[data-world="05"]{--bg:#e7e3d9;--ink:#141416;--accent:#99543c}.c05 .stage{position:relative;min-height:620px;height:86svh;overflow:hidden;isolation:isolate}.c05 .art{position:absolute;inset:0;width:100%;height:100%}.c05 .title{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12vw;letter-spacing:-.05em;margin:0;pointer-events:none}.c05 .title span{display:inline-block}.c05.canvas-ready .title{opacity:0}.c05 .echo,.c05 .construct{display:none}.c05 .stage-trigger{position:absolute;inset:0;border:0;background:transparent;width:100%;height:100%;cursor:crosshair}.c05 .stage-trigger:focus-visible{outline-offset:-12px}.c05 .world-header{opacity:.75}.c05 .work-index{border-top:1px solid #14141620}
body[data-world="15"]{--bg:#191417;--ink:#e5d9d0;--accent:#d9c4b4}.d15 .stage{height:86svh;min-height:620px;position:relative;isolation:isolate}.d15 .art{position:absolute;inset:0;width:100%;height:100%}.d15 .brand{position:absolute;inset:0;display:grid;place-items:center;font-size:12vw;letter-spacing:-.055em;margin:0;pointer-events:none}.d15.gpu-ready .brand{opacity:0}.d15 .cut-title{display:none}.d15 .act{position:absolute;inset:0;width:100%;height:100%;border:0;background:none;cursor:crosshair}.d15 .act:focus-visible{outline-offset:-14px}.d15 .world-header{font-weight:400;font-size:16px;opacity:.6}
/* U193: retain the original flower/stem palette; separate it using the backdrop. */
body[data-world="16"]{--bg:#aab49b;--ink:#263d31;--accent:#415b3a;background:radial-gradient(ellipse at 50% 35%,#d6d0b4 0%,#b8bea2 38%,#91a68e 100%)}
[data-world="16"] .world-brand svg{fill:var(--accent)}.garden-world{position:relative;height:92svh;min-height:700px;max-height:1150px;isolation:isolate;padding:70px 4vw 22px;display:flex;flex-direction:column;align-items:center}.garden-name{position:absolute;top:100px;left:0;right:0;margin:0;text-align:center;font-size:clamp(75px,14vw,200px);font-weight:500;letter-spacing:-.075em;color:#435a40;opacity:.16;line-height:1;z-index:-1}.garden-stage{flex:1;min-height:0;width:min(940px,100%);cursor:crosshair}.garden-art{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 35px 40px #071d2340)}.garden-art .plot-caption,.garden-art text{display:none}.garden-art .plant{transform-origin:var(--origin-x) var(--origin-y);animation:plant-sway 8s ease-in-out infinite alternate}.garden-art .plant-cloud{animation-delay:-3s}.garden-art .plant-pixel{animation-delay:-5s}.garden-art .little-fly{animation:fly 7s ease-in-out infinite alternate}.sprout-face{fill:#244333}.garden-art .eye,.garden-art .sprout-face,.garden-art .plant-pixel path[stroke-width="5"]{transform-box:fill-box;transform-origin:50% 50%}.garden-art.is-startled .eye,.garden-art.is-startled .sprout-face,.garden-art.is-startled .plant-pixel path[stroke-width="5"]{animation:garden-blink .42s ease-in-out}@keyframes garden-blink{0%,100%{transform:scaleY(1)}35%{transform:scaleY(.12)}62%{transform:scaleY(1.18)}}.new-plant{animation:germinate .8s cubic-bezier(.2,.8,.2,1);transform-origin:var(--seed-x) var(--seed-y)}.celebrating .plant{animation:plant-dance .75s ease-in-out 2}.garden-world .art-controls{margin-top:-15px}.garden-world .art-controls button{color:#263d31}@keyframes plant-sway{from{transform:rotate(-1.5deg)}to{transform:rotate(1.5deg)}}@keyframes plant-dance{0%,100%{transform:rotate(0)}30%{transform:rotate(-5deg)}70%{transform:rotate(5deg)}}@keyframes germinate{from{transform:scale(.05)}70%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes fly{from{transform:translate(-8px,2px)}to{transform:translate(15px,-15px)}}
body[data-world="19"]{--bg:#becbd6;--ink:#272738;--accent:#d7654c}.cutout-world{position:relative;min-height:740px;height:93svh;padding:100px 5vw 20px;display:flex;flex-direction:column;isolation:isolate}.cutout-world h1{position:absolute;bottom:55px;left:5vw;margin:0;font-size:clamp(75px,17vw,240px);letter-spacing:-.09em;line-height:.9;font-weight:800;color:#899eac;z-index:-1}.playfield{position:relative;width:min(1050px,100%);height:100%;min-height:460px;max-height:750px;margin:auto;isolation:isolate}.toy{position:absolute;display:block;padding:0;border:0;background:none;line-height:0;cursor:grab;touch-action:none;transform-origin:center;filter:drop-shadow(5px 9px 0 #536a7938);will-change:transform}.toy svg{width:100%;height:100%;overflow:visible;pointer-events:none}.toy-fill{stroke:var(--ink);stroke-width:1.2}.toy-flower .toy-fill{fill:#d9644f}.toy-pill .toy-fill{fill:#aca0d5}.toy-triangle .toy-fill{fill:#d6df87}.toy-loop .toy-fill{fill:#e6e5dd}.toy-spark .toy-fill{fill:#313143}.face{fill:#272738}.toy .face :is(ellipse,circle){transform-box:fill-box;transform-origin:50% 50%}.toy.is-startled .face :is(ellipse,circle){animation:toy-wink .48s ease-in-out}@keyframes toy-wink{0%,100%{transform:scaleY(1)}30%{transform:scaleY(.1)}58%{transform:scaleY(1.22)}}.toy-spark .face{fill:#e6e5dd}.face .smile{fill:none;stroke:#272738;stroke-width:2;stroke-linecap:round}.loop-hole{fill:var(--bg)}.pill-line{display:none}.toy.is-dragging{cursor:grabbing;z-index:20;filter:drop-shadow(12px 20px 8px #344f6940)}.cutout-world .art-controls{justify-content:flex-end;margin-top:10px}
.canvas-world{position:relative;isolation:isolate;height:92svh;min-height:700px;overflow:hidden}.canvas-world h1{margin:0;font-weight:700;letter-spacing:-.07em;line-height:1;position:absolute;pointer-events:none}.canvas-wrap{position:absolute;inset:0}.canvas-wrap canvas{width:100%;height:100%;position:relative;cursor:crosshair;touch-action:pan-y}.canvas-wrap canvas:focus-visible{outline-offset:-12px}.canvas-world .art-controls{position:absolute;bottom:24px;right:5vw;left:5vw;justify-content:flex-end}.canvas-world .art-controls button{font-size:11px}
/* Clip the garden's deliberately enlarged mobile artwork inside its own stage. */
.garden-world .garden-stage{overflow:clip}
body[data-world="21"]{--bg:#dbe8e5;--ink:#173f42;--accent:#58a798}[data-world="21"] .canvas-world{height:94svh;min-height:740px;background:radial-gradient(ellipse at 50% 60%,#bdd3ca,transparent 67%)}[data-world="21"] .canvas-wrap{inset:115px 0 65px}[data-world="21"] .canvas-world h1{top:50%;left:2vw;font-size:clamp(40px,5vw,70px);writing-mode:vertical-rl;transform:translateY(-50%) rotate(180deg);font-weight:400;z-index:2;color:#38696b}[data-world="21"] .art-controls{justify-content:center}
body[data-world="22"]{--bg:#e6a3a0;--ink:#432134;--accent:#e4694e}[data-world="22"] .canvas-world{height:95svh;min-height:720px}[data-world="22"] .canvas-world h1{left:8vw;top:130px;font-size:clamp(105px,20vw,270px);font-family:"Yu Gothic",Meiryo,sans-serif;letter-spacing:-.07em;line-height:1.18;transform:rotate(-5deg)}[data-world="22"] .canvas-world h1 span{display:block}[data-world="22"] .canvas-world h1 span+span{margin-left:20vw;color:#f4d8c1}[data-world="22"] .world-header{border-bottom:0}[data-world="22"] .art-controls{right:6vw;left:auto;bottom:34px;background:var(--bg);padding:0 12px}
body[data-world="23"]{--bg:#0a1721;--ink:#d4e9e5;--accent:#76d9ba}[data-world="23"] .canvas-world{height:96svh;min-height:740px;background:radial-gradient(ellipse at 50% 65%,#204c5040,transparent 55%)}[data-world="23"] .canvas-world h1{font-weight:300;letter-spacing:.04em;font-size:clamp(42px,7vw,100px);top:130px;left:50%;transform:translateX(-50%);color:#75a9a8;opacity:.35;z-index:-1}[data-world="23"] .canvas-wrap{inset:130px 0 36px}[data-world="23"] .art-controls{right:9vw;bottom:45px}
body[data-world="24"]{--bg:#9c5c44;--ink:#f4ddbd;--accent:#bdd1a7}[data-world="24"] .canvas-world{height:96svh;min-height:740px}[data-world="24"] .canvas-wrap{inset:70px 0 60px}[data-world="24"] .canvas-world h1{left:4vw;bottom:35px;font-size:clamp(62px,12vw,170px);font-weight:500;color:#eed4b5;z-index:-1}[data-world="24"] .art-controls{bottom:37px}
body[data-world="25"]{--bg:#c6b5d1;--ink:#30243d;--accent:#d85899}[data-world="25"] .canvas-world{height:95svh;min-height:730px}[data-world="25"] .canvas-world h1{left:6vw;top:190px;font-size:clamp(80px,16vw,225px);font-weight:900;font-style:italic;letter-spacing:-.085em;color:#efe5f0;transform:rotate(-9deg)}[data-world="25"] .canvas-wrap{inset:90px 0 110px}[data-world="25"] .art-controls{bottom:35px}.gravity-label{position:absolute;bottom:38px;left:5vw;display:flex;align-items:center;gap:14px;font-size:10px;z-index:11}.gravity-label input{width:100px;min-height:35px;accent-color:var(--ink)}
@media(max-width:600px){.c05 .stage,.d15 .stage{height:80svh;min-height:530px}.garden-world{height:83svh;min-height:570px;padding:105px 0 22px}.garden-name{top:130px;font-size:19vw}.garden-stage{width:100%;height:70%}.garden-art{width:112%;margin-left:-6%}.garden-world .art-controls{margin-top:0}.cutout-world{height:84svh;min-height:600px;padding:100px 4vw 20px}.playfield{min-height:410px}.cutout-world h1{font-size:20vw;left:4vw;bottom:75px}.cutout-world .art-controls{justify-content:center}.canvas-world,[data-world="21"] .canvas-world,[data-world="22"] .canvas-world,[data-world="23"] .canvas-world,[data-world="24"] .canvas-world,[data-world="25"] .canvas-world{height:85svh;min-height:620px}[data-world="21"] .canvas-wrap{inset:120px 0 80px}[data-world="21"] .canvas-world h1{font-size:9vw;top:95px;left:6vw;writing-mode:horizontal-tb;transform:none}[data-world="22"] .canvas-world h1{top:160px;font-size:28vw;left:7vw}[data-world="23"] .canvas-wrap{inset:110px 0 60px}[data-world="23"] .canvas-world h1{top:125px;font-size:11vw}[data-world="24"] .canvas-wrap{inset:90px 0 120px}[data-world="24"] .canvas-world h1{bottom:100px;font-size:18vw}[data-world="25"] .canvas-world h1{top:210px;font-size:19vw}[data-world="25"] .canvas-wrap{inset:85px 0 145px}[data-world="25"] .art-controls{bottom:25px;justify-content:center}.gravity-label{left:50%;transform:translateX(-50%);bottom:80px}.canvas-world .art-controls{bottom:25px;justify-content:center}[data-world="22"] .art-controls{left:6vw;right:6vw}}
/* U215–U219: W25's original paper/tile toy space; preserve the current content and icon gestures. */
body[data-world="25"]{--bg:#f6f1e6;--ink:#1b1b1f;--accent:#ff3f8e;background-color:var(--bg);background-image:linear-gradient(rgba(43,91,215,.13) 1px,transparent 1px),linear-gradient(90deg,rgba(43,91,215,.13) 1px,transparent 1px);background-size:32px 32px;font-family:'Hiragino Sans','Hiragino Kaku Gothic ProN','Yu Gothic Medium','Yu Gothic',Meiryo,'Noto Sans JP',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
body[data-world="25"] .world-header{position:relative;height:64px;padding:9px 20px;border-bottom:3px solid var(--ink);background:#f6f1e6e6}
body[data-world="25"] .world-header .world-brand{font-style:normal;font-weight:900;font-size:18px;letter-spacing:0}
body[data-world="25"] .world-header .kana-mark{width:34px;height:34px;border:3px solid var(--ink);color:#fff;font-size:18px;box-shadow:2px 2px 0 var(--ink)}
body[data-world="25"] .canvas-world{height:calc(100svh - 64px);min-height:520px;border-bottom:3px solid var(--ink)}
body[data-world="25"] .canvas-world .canvas-wrap{inset:0}
body[data-world="25"][data-brand-case] .canvas-world h1,body[data-world="25"] .canvas-world h1{left:50%;top:calc(50% - 55px);width:calc(100% - 32px);font-size:clamp(3rem,12vw,9rem);line-height:.95;font-weight:900;font-style:normal;letter-spacing:-.02em;color:var(--ink);text-align:center;transform:translate(-50%,-50%);text-shadow:.05em .05em 0 #ffd23f;z-index:2}
body[data-world="25"] .gravity-controls{bottom:22px;gap:8px 12px;max-width:calc(100% - 24px);flex-wrap:wrap;background:#fffdf8;border:3px solid var(--ink);border-radius:18px;padding:10px 14px;box-shadow:5px 5px 0 var(--ink)}
body[data-world="25"] .gravity-controls .gravity-label{font-size:13px;font-weight:700}
body[data-world="25"] .gravity-controls input{width:120px;accent-color:var(--accent)}
body[data-world="25"] .gravity-controls button{padding:6px 14px;min-height:40px;border:2px solid var(--ink);border-radius:999px;background:#fffdf8;color:var(--ink);font-size:13px;font-weight:800;box-shadow:2px 2px 0 var(--ink);transition:transform .08s,box-shadow .08s,background .12s}
body[data-world="25"] .gravity-controls button:hover{background:#ffd23f;color:var(--ink)}
body[data-world="25"] .gravity-controls button:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}
body[data-world="25"] .gravity-controls button[data-action="reset"]{background:var(--accent);color:#fff}
body[data-world="25"] .gravity-controls button[data-action="reset"]:hover{background:#ff67a4}
@media(max-width:600px){body[data-world="25"] .world-header{padding:9px 14px}body[data-world="25"] .canvas-world{min-height:560px}body[data-world="25"] .gravity-controls{padding:10px 12px}body[data-world="25"] .gravity-controls input{width:100px}}
/* U222–U226: revert W19; retain W22/W24's distinct worlds with midpoint ball palettes. */
/* The simulation ends above a separate controls row: no button can cover a letter ball. */
body[data-world="25"] .canvas-world{display:flex;flex-direction:column}
body[data-world="25"] .gravity-stage{position:relative;flex:1;min-height:0}
body[data-world="25"] .gravity-controls{position:relative;flex:none;left:auto;bottom:auto;transform:none;width:100%;max-width:none;min-height:82px;margin:0;gap:10px 20px;padding:14px 16px;border:0;border-top:3px solid var(--ink);border-radius:0;box-shadow:none;background:#fffdf8}
@media(max-width:600px){body[data-world="25"] .gravity-controls{padding:12px;gap:8px 14px}}
