:root{font-family:Noto Sans JP,Yu Gothic,Meiryo,system-ui,sans-serif;color:#143f4a;background:#e8ece7}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}html{min-height:100dvh}body{display:block;min-height:100dvh;background:#e8ece7}#app{position:relative;display:grid;place-items:center;width:100vw;height:100dvh;min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overflow:hidden}button{font:inherit}.game-shell{position:relative;width:min(390px,100vw);height:min(844px,100vh);aspect-ratio:390 / 844;overflow:hidden;border-radius:0;background:#8ed9ec;transition:background-color .18s ease;box-shadow:none;touch-action:none;-webkit-user-select:none;user-select:none}.game-shell[data-state=GameOver]{background:#0b3440}.game-shell[data-state=Clear]{background:#143f4a}.game-svg{position:absolute;display:block;width:100%;height:100%;inset:0 auto auto 0;overflow:visible}.game-svg text{font-family:Noto Sans JP,Yu Gothic,Meiryo,system-ui,sans-serif}.target{fill:#d9f2f5;stroke:none}.complete-silhouette{fill:#b7e34b;stroke:none}.target-frame{fill:none;stroke:#bde8ee;stroke-width:1.5}.piece{fill:#b7e34b;stroke:#355f2b;paint-order:stroke fill;vector-effect:non-scaling-stroke}.piece-halo{fill:none;stroke:#fff;opacity:.95;vector-effect:non-scaling-stroke}.placed{fill:#b7e34b;stroke:#355f2b;paint-order:stroke fill;vector-effect:non-scaling-stroke}.result-map{pointer-events:none}.result-map-target{fill:#d9f2f5;stroke:none}.result-map .result-placed{fill:#b7e34b;stroke:#355f2b;paint-order:stroke fill;vector-effect:non-scaling-stroke}.ui{fill:#143f4a}.light{fill:#fff}.gold{fill:#fff4a5}.button{fill:#143f4a;cursor:pointer}.button.share-button{fill:#05090b;stroke:#05090b;stroke-width:1}.button.secondary{fill:#b7e34b;stroke:#355f2b;stroke-width:1}.button.white{fill:#f6feff;stroke:#9cd9dd;stroke-width:1}.button-label{fill:#fff;pointer-events:none}.secondary-label{fill:#143f4a;pointer-events:none}.overlay-panel{fill:#f9fbf5}.instruction{fill:#f6feff}.success-name{fill:#143f4a}.debug-tag{display:none}.failure-piece{opacity:.9}.breakup-fragment{paint-order:stroke fill;vector-effect:non-scaling-stroke}.breakup-frame{pointer-events:none}.result-overlay{animation:result-overlay-in .18s ease-out both}.clear-confetti{pointer-events:none}.confetti-piece{opacity:0;transform-box:fill-box;transform-origin:center;animation:confetti-fall var(--confetti-duration) linear var(--confetti-delay) infinite;will-change:transform,opacity}.result-panel{fill:#f9fbf5}.result-content{animation:panel-in .2s ease-out both;transform-box:fill-box;transform-origin:center}.clear-screen{animation:overlay-in .22s ease-out both}.preview-guide,.instruction-guide{animation:overlay-in .18s ease-out both}.success-feedback{animation:success-pop .32s ease-out both;transform-box:fill-box;transform-origin:center}.success-celebration{pointer-events:none;animation:success-celebration .72s ease both;transform-box:fill-box;transform-origin:center}.success-name-hero{fill:#143f4a;paint-order:stroke fill;filter:drop-shadow(0 4px 0 #B7E34B) drop-shadow(0 0 10px #FFF8A8)}.success-glow{fill:#fff8a8;opacity:.24}.success-stars path{fill:#fff8a8;stroke:#fff;stroke-width:1}.game-shell[data-transition=out]{animation:screen-out .18s ease-in both;pointer-events:none}.game-shell[data-transition=out] .responsive-action{pointer-events:none!important}.game-shell[data-transition=in]{animation:screen-in .2s ease-out both}.game-shell[data-debug-jump=out] .game-svg{opacity:0;transition:opacity .06s ease-in}.game-shell[data-debug-jump=in] .game-svg{opacity:1;animation:debug-jump-in .06s ease-out both}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes result-overlay-in{0%{opacity:0}to{opacity:.62}}@keyframes panel-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes success-pop{0%{opacity:0;transform:scale(.84)}to{opacity:.95;transform:scale(1)}}@keyframes success-celebration{0%{opacity:0;transform:scale(.68)}16%{opacity:1;transform:scale(1.06)}24%{opacity:1;transform:scale(1)}78%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.08) translateY(-5px)}}@keyframes success-celebration-reduced{0%{opacity:0;transform:none}16%{opacity:1;transform:none}80%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes screen-out{0%{opacity:1}to{opacity:0}}@keyframes screen-in{0%{opacity:0}to{opacity:1}}@keyframes debug-jump-in{0%{opacity:0}to{opacity:1}}@keyframes confetti-fall{0%{opacity:0;transform:translate(var(--confetti-sway-a)) rotate(0)}8%{opacity:.92;transform:translate(var(--confetti-sway-b),118px) rotate(var(--confetti-r12))}28%{opacity:.92;transform:translate(var(--confetti-sway-c),330px) rotate(var(--confetti-r42))}52%{opacity:.92;transform:translate(var(--confetti-sway-a),560px) rotate(var(--confetti-r68))}76%{opacity:.92;transform:translate(var(--confetti-sway-b),785px) rotate(var(--confetti-r88))}92%{opacity:.78;transform:translate(var(--confetti-sway-c),930px) rotate(var(--confetti-rotation))}to{opacity:0;transform:translate(var(--confetti-sway-a),990px) rotate(var(--confetti-rotation))}}@keyframes confetti-fall-reduced{0%{opacity:0;transform:translate(var(--confetti-sway-a-reduced)) rotate(0)}10%{opacity:.72;transform:translate(var(--confetti-sway-b-reduced),150px) rotate(var(--confetti-r08))}32%{opacity:.72;transform:translate(var(--confetti-sway-c-reduced),360px) rotate(var(--confetti-r28))}56%{opacity:.72;transform:translate(var(--confetti-sway-a-reduced),600px) rotate(var(--confetti-r46))}80%{opacity:.72;transform:translate(var(--confetti-sway-b-reduced),820px) rotate(var(--confetti-r62))}94%{opacity:.56;transform:translate(var(--confetti-sway-c-reduced),940px) rotate(var(--confetti-r70))}to{opacity:0;transform:translate(var(--confetti-sway-a-reduced),990px) rotate(var(--confetti-rotation-reduced))}}@media(prefers-reduced-motion:reduce){.result-overlay,.result-content,.clear-screen,.preview-guide,.instruction-guide,.success-feedback,.breakup-map{animation-duration:.01ms;animation-iteration-count:1}.confetti-piece{animation-name:confetti-fall-reduced;animation-duration:10s;animation-timing-function:ease-in-out}.success-celebration{animation-name:success-celebration-reduced;animation-duration:.72s;animation-iteration-count:1}.game-shell[data-transition=out],.game-shell[data-transition=in]{animation-duration:.02ms;animation-iteration-count:1}.game-shell[data-debug-jump=out] .game-svg{transition-duration:.01ms}.game-shell[data-debug-jump=in] .game-svg{animation-duration:.01ms}}.responsive-actions{display:none}@media(max-width:600px){body,#app{background:#8ed9ec}body[data-game-state=GameOver],#app[data-game-state=GameOver]{background:#0b3440}body[data-game-state=Clear],#app[data-game-state=Clear]{background:#143f4a}.game-shell{border-radius:0;box-shadow:none;max-width:none;max-height:none}}@media(max-width:600px){.game-shell[data-short-layout=true] .game-svg g[data-action]{opacity:0;pointer-events:none}.game-shell[data-short-layout=true] .responsive-actions{position:absolute;inset:0;z-index:5;display:block;pointer-events:none}.responsive-action{position:absolute;left:6%;width:88%;min-height:44px;height:48px;padding:0 12px;border:1px solid #355F2B;border-radius:24px;font:900 14px/1 Noto Sans JP,Yu Gothic,Meiryo,system-ui,sans-serif;pointer-events:auto;touch-action:manipulation;animation:html-action-in .18s ease-out both}.game-shell[data-short-layout=true] .responsive-action.start{bottom:max(10px,env(safe-area-inset-bottom));background:#143f4a;color:#fff;border-color:#143f4a}.game-shell[data-short-layout=true] .responsive-action.share{bottom:max(68px,calc(env(safe-area-inset-bottom) + 58px));background:#05090b;color:#fff;border-color:#05090b}.game-shell[data-short-layout=true] .responsive-action.retry{bottom:max(10px,env(safe-area-inset-bottom));background:#f6feff;color:#143f4a;border-color:#9cd9dd}.game-shell[data-short-layout=true][data-state=GameOver] .responsive-action{left:var(--result-panel-left);width:var(--result-panel-width);bottom:auto}.game-shell[data-short-layout=true][data-state=GameOver] .responsive-action.share{top:var(--result-share-top)}.game-shell[data-short-layout=true][data-state=GameOver] .responsive-action.retry{top:var(--result-retry-top)}}@keyframes html-action-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.responsive-action{animation-duration:.01ms}}
