:root{color:#fff;background:#000;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Noto Sans Mono CJK JP,monospace;font-synthesis:none;text-rendering:optimizeLegibility;--black: #000;--white: #fff;--muted: #84919e;--fox: #f6aa00;--geese: #4dc4ff;--gold: #ffd54a}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;min-height:100dvh;overflow-x:hidden}button{color:inherit;font:inherit}button:focus-visible,dialog:focus-visible{outline:3px solid var(--white);outline-offset:4px}button:disabled{cursor:default}.center-screen{display:grid;min-height:100vh;min-height:100dvh;place-items:center}.loading-ring{width:34px;height:34px;border:4px solid var(--white);border-radius:50%;animation:soft-pulse 1.1s ease-in-out infinite}.icon-button{display:inline-grid;width:44px;height:44px;padding:9px;border:0;border-radius:50%;color:var(--white);background:transparent;cursor:pointer;place-items:center}.icon-button:hover:not(:disabled){background:#1c1c1c}.icon-button:active:not(:disabled){transform:scale(.92)}.icon-button:disabled{color:#555}.icon-button svg{width:100%;height:100%;stroke-width:2.5}.menu-screen{width:min(100%,1050px);min-height:100vh;min-height:100dvh;margin:0 auto;padding:clamp(24px,6vh,72px) clamp(16px,4vw,48px) 48px}.menu-tools{display:flex;justify-content:center;gap:16px;margin-bottom:clamp(28px,5vh,56px)}.game-brand{display:grid;justify-items:center;margin-bottom:22px;gap:10px}.game-brand-icon{width:48px;height:48px}.game-brand-icon svg{width:34px;height:34px}.game-title{margin:0;font-size:clamp(1.7rem,5vw,2.4rem);font-weight:700;letter-spacing:.08em;text-align:center}.role-disc{--piece-color: var(--black);display:inline-grid;width:30px;height:30px;flex:0 0 auto;border-radius:50%;color:var(--black);place-items:center}.role-disc.fox,.piece.fox{background:var(--fox)}.role-disc.geese,.piece.geese,.stage-lane.geese .stage-cell.complete{background:var(--geese)}.role-disc svg{width:21px;height:21px}.stage-grid{display:grid;width:min(100%,520px);margin:0 auto;gap:clamp(22px,4vh,42px)}.level-row{position:relative;display:grid;grid-template-columns:1fr;align-items:center;min-height:54px}.stage-lane{display:grid;grid-template-columns:repeat(5,48px);justify-content:space-evenly;gap:clamp(5px,1.2vw,14px)}.stage-lane.geese{grid-column:1;grid-row:1}.stage-cell{display:grid;width:48px;height:48px;padding:0;border:3px solid var(--white);border-radius:50%;color:var(--white);background:var(--black);font-size:.88rem;font-weight:700;cursor:pointer;place-items:center;transition:transform .12s ease,background-color .12s ease}.stage-cell:hover:not(:disabled){transform:scale(1.1)}.stage-cell.complete{color:var(--black)}.stage-cell.complete svg{width:25px;height:25px;stroke-width:3.3}.level-row.locked{color:var(--muted);opacity:.55}.level-row.locked .stage-cell{border-color:transparent;color:var(--muted);background:transparent;font-size:1.35rem}.empty-stage-message{margin:clamp(48px,10vh,96px) auto 0;color:var(--muted);letter-spacing:.08em;text-align:center}.play-screen{position:relative;display:flex;width:100%;min-height:100vh;min-height:100dvh;flex-direction:column;align-items:center;justify-content:center;padding:16px}.game-content{display:contents}.game-status{display:grid;width:min(100%,720px);grid-template-columns:44px 44px minmax(44px,1fr) auto 44px;align-items:center;gap:clamp(8px,2vw,24px);margin-bottom:clamp(10px,2vh,20px)}.turn-status,.geese-count{display:flex;min-height:44px;align-items:center;gap:8px}.turn-status{justify-content:flex-start}.geese-count{justify-content:center;font-size:1.05rem;font-weight:700}.loss-threshold{margin-left:3px;color:var(--muted);font-size:.68rem;letter-spacing:.04em}.thinking-dot{width:7px;height:7px;border-radius:50%;background:transparent}.thinking-dot.active{background:var(--white);animation:soft-pulse .65s ease-in-out infinite}.game-board{position:relative;width:min(100%,720px,calc(100dvh - 110px));aspect-ratio:1;touch-action:manipulation}.board-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.board-lines line{stroke:var(--white);stroke-linecap:round;stroke-width:5}.vertex-button,.moving-piece,.captured-piece{position:absolute;display:grid;width:44px;height:44px;padding:0;border:0;border-radius:50%;color:var(--black);transform:translate(-50%,-50%);place-items:center}.vertex-button{z-index:2;cursor:pointer}.vertex-button:disabled{opacity:1}.vertex-button.empty-node,.vertex-button.moving-destination{background:transparent}.vertex-button.empty-node:before{width:14px;height:14px;border-radius:50%;background:var(--white);content:""}.vertex-button svg,.moving-piece svg,.captured-piece svg{width:30px;height:30px}.vertex-button.selected{box-shadow:0 0 0 4px var(--black),0 0 0 7px var(--white)}.vertex-button.destination{box-shadow:0 0 0 4px var(--black),0 0 0 8px var(--white);animation:destination-pulse .9s ease-in-out infinite}.vertex-button.hint-source{outline:3px solid var(--gold);outline-offset:4px}.vertex-button.hint-destination{outline:3px dashed var(--gold);outline-offset:4px}.moving-piece{z-index:5;--piece-color: var(--black);animation:piece-move .18s ease-out both}.moving-piece.capture-hop{opacity:0;animation:piece-capture-move var(--travel-duration) ease-out var(--move-delay) forwards,piece-hop-visibility var(--move-duration) linear var(--move-delay) forwards}.moving-piece.capture-hop.final-hop{animation:piece-capture-move var(--travel-duration) ease-out var(--move-delay) forwards,piece-final-visibility var(--move-duration) linear var(--move-delay) forwards}.captured-piece{z-index:4;--piece-color: var(--black);animation:piece-capture .15s ease-in both}.result-overlay{position:fixed;z-index:20;inset:0;display:grid;background:#000000c7;place-content:center;place-items:center}.result-heading{display:grid;margin-bottom:30px;place-items:center}.result-overlay p{margin:0;font-size:clamp(3.4rem,12vw,8rem);font-weight:800;letter-spacing:.08em}.move-delta{min-height:1.5em;margin-top:2px;font-size:clamp(1.1rem,3vw,1.5rem);font-weight:700;letter-spacing:.06em}.move-delta.optimal{color:var(--gold)}.compact-actions,.dialog-actions{display:flex;align-items:center;justify-content:center;gap:18px}.confirm-dialog,.achievement-dialog,.tutorial-dialog{color:var(--white);border:3px solid var(--white);background:var(--black)}dialog::backdrop{background:#000000d1}.confirm-dialog{width:min(calc(100% - 32px),430px);padding:28px}.confirm-dialog p{margin:0 0 28px;line-height:1.7;text-align:center}.achievement-dialog{width:min(calc(100% - 32px),480px);padding:28px}.achievement-dialog h2{margin:0 44px 22px;font-size:1.35rem;letter-spacing:.08em;text-align:center}.achievement-dialog textarea{width:100%;margin-bottom:24px;padding:14px;resize:none;border:2px solid var(--white);border-radius:0;color:var(--white);background:#111;font:inherit;line-height:1.7}.achievement-close{position:absolute;top:10px;right:10px}.dialog-actions button{min-height:44px;padding:8px 15px;border:2px solid var(--white);color:var(--white);background:var(--black);cursor:pointer}.dialog-actions .confirm-action{color:var(--black);background:var(--white)}.error-view{align-content:center;gap:18px;letter-spacing:.12em}.tutorial-dialog{width:min(calc(100% - 24px),760px);height:min(calc(100% - 24px),720px);max-width:none;max-height:none;padding:20px;overflow:hidden}.tutorial-close{position:absolute;z-index:2;top:12px;right:12px}.tutorial-slide{display:grid;height:calc(100% - 64px);grid-template-rows:1fr auto;align-items:center;justify-items:center;padding:42px clamp(10px,4vw,42px) 18px}.tutorial-copy{display:grid;width:min(100%,600px);min-height:8.4em;margin:20px 0 0;align-content:start;gap:10px}.tutorial-copy p{margin:0;font-size:clamp(.92rem,2.2vw,1.15rem);line-height:1.55;text-align:center}.tutorial-copy p[lang=ja]{color:#c6d0da;font-size:clamp(.82rem,2vw,1rem)}.tutorial-board{position:relative;width:min(72vw,430px);aspect-ratio:1.25}.tutorial-line{position:absolute;height:5px;border-radius:5px;background:var(--white);transform:translateY(-50%);transform-origin:left center}.tutorial-line.line-a{top:50%;left:12%;width:76%}.tutorial-line.line-b{top:18%;left:50%;width:64%;transform:translateY(-50%) rotate(90deg)}.tutorial-node,.tutorial-target,.tutorial-piece{position:absolute;width:42px;height:42px;border-radius:50%;transform:translate(-50%,-50%)}.tutorial-node:after{position:absolute;inset:14px;border-radius:50%;background:var(--white);content:""}.node-a{top:50%;left:12%}.node-b{top:50%;left:50%}.node-c{top:50%;left:88%}.node-d{top:18%;left:50%}.tutorial-piece{--piece-color: var(--black);z-index:2;display:grid;color:var(--black);place-items:center}.tutorial-piece svg{width:29px;height:29px}.tutorial-fox{top:50%;left:12%;background:var(--fox)}.tutorial-goose{top:50%;left:50%;background:var(--geese)}.tutorial-target{z-index:1;top:50%;left:88%;border:5px solid var(--white);animation:destination-pulse .9s ease-in-out infinite}.tutorial-slide-1 .tutorial-goose,.tutorial-slide-1 .line-b,.tutorial-slide-1 .node-d,.tutorial-slide-2 .tutorial-goose,.tutorial-slide-3 .line-b,.tutorial-slide-3 .node-d,.tutorial-slide-4 .tutorial-target,.tutorial-slide-5 .tutorial-target{display:none}.tutorial-slide-1 .tutorial-fox{animation:tutorial-step 1.8s ease-in-out infinite}.tutorial-slide-2 .tutorial-fox{animation:tutorial-corner 2s ease-in-out infinite}.tutorial-slide-2 .tutorial-target{left:50%}.tutorial-slide-3 .tutorial-fox{animation:tutorial-jump 2s ease-in-out infinite}.tutorial-slide-3 .tutorial-goose{animation:tutorial-capture 2s ease-in-out infinite}.tutorial-slide-4 .tutorial-fox{left:50%}.tutorial-slide-4 .tutorial-goose{top:18%}.tutorial-slide-5 .tutorial-fox,.tutorial-slide-5 .tutorial-goose{animation:soft-pulse 1s ease-in-out infinite alternate}.tutorial-controls{display:grid;height:56px;grid-template-columns:44px 1fr 44px;align-items:center;gap:10px}.slide-dots{display:flex;justify-content:center;gap:10px}.slide-dots span{width:8px;height:8px;border:1px solid var(--white);border-radius:50%}.slide-dots span.active{background:var(--white)}@keyframes soft-pulse{0%,to{opacity:.35}50%{opacity:1}}@keyframes destination-pulse{0%,to{opacity:.55}50%{opacity:1}}@keyframes piece-move{0%{left:var(--from-left);top:var(--from-top)}}@keyframes piece-capture-move{0%{left:var(--from-left);top:var(--from-top)}}@keyframes piece-hop-visibility{0%,99.9%{opacity:1}to{opacity:0}}@keyframes piece-final-visibility{0%,to{opacity:1}}@keyframes piece-capture{to{opacity:0;transform:translate(-50%,-50%) scale(.2)}}@keyframes tutorial-step{0%,30%{left:12%}65%,to{left:88%}}@keyframes tutorial-corner{0%,30%{top:50%;left:12%}65%,to{top:50%;left:50%}}@keyframes tutorial-jump{0%,30%{left:12%}70%,to{left:88%}}@keyframes tutorial-capture{0%,42%{opacity:1;transform:translate(-50%,-50%) scale(1)}65%,to{opacity:0;transform:translate(-50%,-50%) scale(.2)}}@media(max-width:700px){.menu-screen{padding:20px 14px 42px}.menu-tools{margin-bottom:28px}.game-brand{margin-bottom:24px}.stage-grid{gap:34px}.level-row{display:grid;grid-template-columns:1fr;gap:9px}.stage-lane.geese{grid-column:1;grid-row:auto}.stage-lane{grid-template-columns:repeat(5,44px);justify-content:space-between;gap:7px}.stage-cell{width:44px;height:44px}.play-screen{justify-content:flex-start;padding:8px}.game-status{margin-bottom:0}.game-board{width:min(100%,calc(100dvh - 66px))}.vertex-button,.moving-piece,.captured-piece{width:38px;height:38px}.vertex-button svg,.moving-piece svg,.captured-piece svg{width:26px;height:26px}.vertex-button.empty-node:before{width:12px;height:12px}.tutorial-dialog{width:calc(100% - 12px);height:calc(100% - 12px);padding:12px}}@media(max-width:400px){.loss-threshold{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media(forced-colors:active){.piece,.role-disc,.stage-cell.complete{border:2px solid ButtonText;forced-color-adjust:none}}
