:root{color-scheme:dark;--ink:#07131f;--paper:#f3efdf;--muted:#9caebc;--gold:#e7cf95;--teal:#9fe7db;--line:#476273;--border:#c2d6d222;--background:url('./assets/night-sky.webp');font-family:-apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;font-weight:400}
*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--paper);min-width:280px;min-height:100svh;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;touch-action:manipulation}button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:disabled{cursor:default;opacity:.28}button:active:not(:disabled){transform:translateY(1px)}button,a{-webkit-user-select:none;user-select:none}h1,h2,p{margin:0}h1,h2{font-family:'Hiragino Mincho ProN','Yu Mincho',Georgia,serif;font-weight:400}button{min-height:44px}button{transition:background .2s,color .2s,opacity .2s}button:hover:not(:disabled){color:#fff}button.primary:hover{background:#f3dfae;color:var(--ink)}.sky{position:fixed;inset:0;background-image:linear-gradient(#06121c18,#06121c22 50%,#06121c50),var(--background);background-size:cover;background-position:center;z-index:-2}.grain{position:fixed;inset:0;background:radial-gradient(ellipse at center,transparent 20%,#030b1590);z-index:-1;pointer-events:none}#app{max-width:500px;min-height:100svh;margin:auto;padding:env(safe-area-inset-top) 24px max(18px,env(safe-area-inset-bottom))}.topbar{height:80px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px;padding:0;font-size:15px;letter-spacing:.22em}.brand-star{color:var(--gold);font-size:30px;line-height:1}.top-actions{display:flex;gap:6px}.icon-button{width:44px;border-radius:50%;color:#c2d1d8}.icon-button:hover{background:#ffffff0b}.icon-button>span{border:1px solid #a4b7c780;display:inline-flex;border-radius:50%;width:19px;height:19px;align-items:center;justify-content:center;font-size:12px}.icon-button svg{vertical-align:middle;width:20px;height:20px}.screen[hidden]{display:none!important}.screen{animation:appear .45s ease}.eyebrow{font-size:9px;letter-spacing:.25em;color:var(--gold);font-weight:600}.home{text-align:center;padding-top:22px;display:flex;align-items:center;flex-direction:column}.home>.eyebrow{opacity:.8}.title-emblem{width:154px;height:154px;object-fit:contain;margin:27px 0 9px;filter:drop-shadow(0 0 18px #dfc78e12)}.home h1{font-size:58px;letter-spacing:.25em;padding-left:.25em;line-height:1.35;text-shadow:0 0 32px #fcdfb522}.roman-title{font-size:10px;letter-spacing:.43em;color:var(--gold);margin-top:12px;padding-left:.43em}.tagline{font-family:'Hiragino Mincho ProN','Yu Mincho',serif;font-size:17px;letter-spacing:.16em;margin-top:27px}.home-description{font-size:12px;line-height:2.2;letter-spacing:.07em;color:#b5c2c9;margin-top:20px}.home-buttons{margin-top:32px;width:100%;max-width:300px}.primary{width:100%;height:56px;display:flex;align-items:center;justify-content:center;gap:40px;border-radius:5px;background:linear-gradient(115deg,#eddbaf,#dcc48e);color:#24303b;box-shadow:0 4px 30px #e5cc8b12;letter-spacing:.12em;font-size:14px;font-weight:600}.primary span{font-size:20px;font-weight:400}.text-button{display:flex;align-items:center;justify-content:center;gap:18px;width:100%;color:#ced7d9;font-size:12px;letter-spacing:.08em;padding:17px 8px}.text-button span{font-size:8px;letter-spacing:.18em;color:var(--muted)}.home-progress{display:flex;align-items:center;gap:12px;width:255px;font-size:9px;color:#a4b8c6;letter-spacing:.08em;margin-top:17px}.progress-track{height:2px;flex:1;background:#c5d7da20;overflow:hidden}.progress-track i{display:block;width:0;height:100%;background:var(--gold);transition:width .5s}.home footer{font-size:10px;letter-spacing:.15em;color:#819eaf;margin:43px 0 12px}.stage-nav{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:10px;letter-spacing:.05em;border-top:1px solid var(--border);padding-top:8px}.small-button{font-size:11px;letter-spacing:.05em;color:#bac9d2;padding:0 4px}.small-button span{font-size:19px;vertical-align:-1px;margin-right:5px}.stage-total{font-variant-numeric:tabular-nums}.stage-heading{text-align:center;margin:27px -10px 0}.stage-heading h1{font-size:27px;letter-spacing:.12em;margin:10px 0 12px}.stage-heading>p:last-child{font-size:11px;color:#b0bfca;letter-spacing:.025em}.board-wrap{position:relative;margin:15px -8px 3px;aspect-ratio:1;isolation:isolate}.board-orbit{position:absolute;inset:11%;border:1px solid #adc4d309;border-radius:50%;pointer-events:none;z-index:-1}.orbit-two{inset:23%;border-style:dashed;transform:rotate(25deg)}#board{width:100%;height:100%;display:block;overflow:visible;touch-action:none;user-select:none;-webkit-user-select:none}.edge{stroke:var(--line);stroke-width:2;stroke-linecap:round;pointer-events:none;transition:stroke .25s}.edge.used{stroke:var(--teal);stroke-width:3;filter:drop-shadow(0 0 4px #9fe7db90)}.edge.hinted{stroke:var(--gold);stroke-width:3;stroke-dasharray:6 7;animation:dash 1.5s linear infinite}.star-target{cursor:pointer;outline:none}.star-hit{fill:transparent}.star-aura{fill:#bfe7e608;stroke:#9ac6cc30;stroke-width:1;transition:all .25s}.star-core{fill:#dbe8e7;filter:drop-shadow(0 0 5px #bdeeff88);pointer-events:none}.star-spark{fill:#f6f3e4;pointer-events:none}.star-target.visited .star-aura{fill:#8accc71c;stroke:#9fe7db65}.star-target.current .star-aura{fill:#cce7df12;stroke:var(--gold);stroke-width:1.5}.star-target.current .star-core{fill:var(--gold);filter:drop-shadow(0 0 8px #f7dba0)}.star-target.current .current-ring{fill:none;stroke:#e7cf954d;stroke-width:1;animation:breathe 2.5s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.star-target.hinted .star-aura{stroke:var(--gold);stroke-width:2;fill:#e7cf9528;animation:breathe 1.2s ease-in-out infinite}.star-target:focus-visible .star-aura{stroke:var(--gold);stroke-width:3}.star-label{fill:var(--gold);font-size:9px;text-anchor:middle;letter-spacing:1px;pointer-events:none}.board-wrap.complete .edge{stroke:var(--gold);filter:drop-shadow(0 0 7px #e7cf95)}.board-wrap.complete .star-core{fill:#fff2d6}.board-wrap.invalid{animation:shake .22s ease}.line-progress{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted);padding:0 8px}.line-progress b{font-size:23px;color:var(--teal);font-weight:400;font-family:Georgia,serif}.muted{font-size:11px;margin-left:3px}.play-progress{margin:11px 8px 0}.message{font-size:12px;color:#cad7d8;min-height:40px;padding-top:17px;text-align:center;letter-spacing:.025em}.message.warning{color:#f0c68c}.tools{display:flex;justify-content:center;margin:17px 0 0;border:1px solid var(--border);border-radius:7px;background:#081622a0;backdrop-filter:blur(12px)}.tools button{width:33.333%;height:69px;font-size:11px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;color:#c3d0d7;position:relative}.tools button+button:before{position:absolute;left:0;top:18px;bottom:18px;width:1px;background:var(--border);content:''}.tool-icon{font-size:24px;color:var(--gold);line-height:1.1}.play-tip{text-align:center;font-size:10px;line-height:1.8;color:#91a8b7;margin:18px 0 10px}.stage-select{padding-bottom:20px}.back-home{margin-bottom:19px}.stage-select h1{font-size:33px;letter-spacing:.13em;margin:12px 0}.selection-intro{font-size:11px;line-height:1.8;color:var(--muted);margin-bottom:30px}.chapter{margin-bottom:27px}.chapter-head{display:flex;gap:13px;align-items:center;margin-bottom:12px}.chapter-head span{font-family:Georgia,serif;font-size:12px;color:var(--gold)}.chapter-head h2{font-family:inherit;font-size:12px;letter-spacing:.12em}.stage-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.stage-card{min-width:0;aspect-ratio:1/1.3;border:1px solid var(--border);border-radius:5px;background:#091b29a0;position:relative;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:6px;color:var(--muted)}.stage-card:hover{background:#153240}.stage-card svg{width:80%;height:40px;overflow:visible}.stage-card>span{font-size:10px;font-variant-numeric:tabular-nums;letter-spacing:.1em}.stage-card.done{border-color:#dac48865;background:#31352c45;color:var(--gold)}.stage-card.selected{border-color:var(--teal)}.stage-card .completed-mark{font-size:8px;position:absolute;right:4px;top:2px}.save-note{text-align:center;color:#7f9aaa;font-size:9px;line-height:1.8;margin:28px 0 0}dialog{width:min(calc(100% - 36px),390px);border:1px solid #b9cfc82b;border-radius:16px;background:linear-gradient(150deg,#172a36,#081622);color:var(--paper);padding:36px 25px 24px;box-shadow:0 20px 100px #0008}dialog::backdrop{background:#020912bb;backdrop-filter:blur(8px)}dialog h2{font-size:25px;line-height:1.6;letter-spacing:.07em;margin:12px 0 20px}dialog p{font-size:12px;line-height:1.9;color:#b5c6cf;margin:14px 0}dialog .eyebrow{font-size:9px;color:var(--gold)}dialog .primary{margin-top:24px}.dialog-close{position:absolute;right:6px;top:6px;width:44px;color:var(--muted);font-size:25px}.help-demo{text-align:center;font-size:24px;color:var(--gold);margin:28px 0}.help-demo span{color:var(--teal);font-size:14px}ol{padding-left:20px;font-size:12px;line-height:2.2;color:#dbe3e4}strong{color:var(--gold);font-weight:500}.clear-dialog{text-align:center;padding-top:22px}.clear-sigil{font-size:64px;color:var(--gold);line-height:1.2;text-shadow:0 0 28px #e7cf9570}.clear-dialog h2{margin:8px 0}.clear-dialog p{margin:8px 0}.clear-stats{display:flex;justify-content:space-between;color:#b4c5cf;font-size:10px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:17px 0;margin-top:22px}.clear-dialog .text-button{padding:12px}.clear-dialog .subtle{font-size:10px;color:#8fa7b7;min-height:36px;padding:6px}#particles{position:absolute;inset:0;pointer-events:none;overflow:visible}.particle{position:absolute;width:3px;height:3px;background:var(--gold);border-radius:50%;box-shadow:0 0 7px var(--gold);animation:particle 1.4s ease-out forwards}noscript{display:block;padding:40px;text-align:center}
@keyframes appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes breathe{50%{opacity:.4}}@keyframes dash{to{stroke-dashoffset:-26}}@keyframes shake{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}@keyframes particle{to{transform:translate(var(--dx),var(--dy));opacity:0}}
@media(min-width:700px){.sky{background-size:auto 125%;background-repeat:no-repeat;background-color:#06111c}.grain{background:radial-gradient(ellipse at center,transparent,#030b15aa 70%)}#app{max-width:480px}.topbar{height:88px}.home{padding-top:20px}.home footer{margin-top:38px}.stage-heading{margin-top:20px}.board-wrap{margin-top:10px}}
@media(max-height:760px){.topbar{height:62px}.home{padding-top:8px}.title-emblem{width:120px;height:120px;margin-top:17px}.home h1{font-size:48px}.tagline{margin-top:19px}.home-description{margin-top:13px}.home-buttons{margin-top:22px}.home footer{margin-top:27px}.stage-heading{margin-top:14px}.stage-heading h1{margin:7px 0 8px;font-size:24px}.board-wrap{max-width:340px;margin:7px auto 0}.tools{margin-top:10px}.tools button{height:60px}.play-tip{margin-top:12px}}
@media(max-width:350px){#app{padding-left:16px;padding-right:16px}.eyebrow{font-size:8px}.stage-heading>p:last-child{font-size:10px}.stage-grid{gap:5px}.stage-card{aspect-ratio:1/1.45}.message{font-size:11px}.home footer{margin-top:22px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.pointer-preview{stroke:var(--teal);stroke-width:1.5;stroke-linecap:round;opacity:.38;pointer-events:none;filter:drop-shadow(0 0 3px #9fe7db50)}

/* 髙野歯科医院サイトへ戻る導線 */
.clinic-return{display:inline-block;margin-top:14px;font-size:13px;color:var(--muted);text-decoration:none;border-bottom:1px solid #9caebc55;padding-bottom:2px}.clinic-return:hover,.clinic-return:focus-visible{color:var(--gold);border-color:var(--gold)}
