:root{color-scheme:dark;--night:#102e35;--deep:#0b232b;--panel:#173a40;--line:#315257;--mint:#91d9c5;--cream:#f4edce;--gold:#f1c779;--muted:#9fb4ae;--ink:#17333a}
*{box-sizing:border-box}body{margin:0;background:var(--night);color:var(--cream);font-family:"Yu Gothic","Hiragino Kaku Gothic ProN",Meiryo,sans-serif;-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{font:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.38}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button{color:inherit}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.sky{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 85% 20%,#29504d55,transparent 55%),radial-gradient(circle at 14% 28%,#ebd08b55 1px,transparent 2px),radial-gradient(circle at 89% 70%,#ebd08b55 1px,transparent 2px),radial-gradient(circle at 46% 65%,#ebd08b55 1px,transparent 2px);background-size:auto,211px 249px,347px 287px,433px 329px}.app{width:min(1080px,calc(100% - 64px));margin:auto}.topbar{height:108px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #b9ccb521}.wordmark{display:flex;gap:11px;align-items:center;font-size:12px;font-weight:700;letter-spacing:1.8px}.wordmark small{display:block;font-size:10px;letter-spacing:3px;font-weight:500;margin-top:5px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border:1px solid #b1ba9555;border-radius:50%;font-size:31px;line-height:1;color:var(--gold)}nav{display:flex;gap:8px}.quiet{background:transparent;border:1px solid #b9ccb530;border-radius:22px;font-size:12px;padding:11px 15px}.quiet span{color:var(--gold);margin-left:9px}.game-layout{display:grid;grid-template-columns:1fr 1.35fr;gap:64px;align-items:center;padding:44px 0}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:var(--mint);line-height:1.7;margin:0 0 23px}.eyebrow>span{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--mint);margin-right:8px}.introduction h1{font-size:66px;letter-spacing:6px;line-height:1.28;font-weight:800;margin:0;position:relative}.introduction em{font-style:normal;color:var(--gold)}.title-star{position:absolute;font-size:39px;color:var(--gold);top:15px;right:47px;font-weight:400}.lead{font-size:22px;letter-spacing:3px;line-height:1.65;margin:22px 0 13px}.intro-copy{font-size:13px;color:var(--muted);line-height:2.05;margin:0 0 23px}.primary{background:var(--gold);border:0;border-radius:8px;color:var(--ink);padding:16px 22px;font-size:15px;font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:20px;box-shadow:0 4px 0 #ae8246;min-height:52px;transition:background .15s,transform .15s}.primary:hover{background:#ffda94}.primary:active{transform:translateY(2px);box-shadow:0 2px 0 #ae8246}.primary span{font-size:21px;font-weight:400}.start{width:min(100%,305px)}.save-summary{font-size:10px;letter-spacing:.5px;color:var(--muted);margin:14px 0 0}.ticket{width:290px;display:flex;align-items:center;position:relative;gap:15px;padding-top:22px;margin-top:24px;border-top:1px dashed #b9ccb540}.ticket>span{font-size:9px;writing-mode:vertical-rl;color:var(--muted);letter-spacing:1px}.ticket>b{font:42px Georgia,serif;color:var(--gold)}.ticket small{font-size:10px;line-height:1.8;letter-spacing:2px}.ticket i{font-size:35px;color:#aac2b059;margin-left:auto;font-style:normal}.rail-panel{padding:20px;background:linear-gradient(145deg,#21474a,#17393e);border:1px solid #6a938755;border-radius:18px;box-shadow:0 24px 65px #061b2860;position:relative}.board-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 18px;font-size:10px}.board-heading>span{display:flex;gap:8px;align-items:center}.board-heading i{width:6px;height:6px;background:var(--gold);border-radius:50%}.board-heading b{font-weight:500;letter-spacing:1px}.board-heading small{color:var(--muted);font-size:8px;letter-spacing:1px}.board-surround{position:relative;margin:0 12px}.board{display:grid;grid-template-columns:repeat(var(--size,4),minmax(0,1fr));gap:5px;aspect-ratio:1;position:relative;padding:5px;border:1px solid #65847b44;border-radius:10px;background:#0d2b31;touch-action:manipulation;user-select:none;-webkit-user-select:none}.tile{border:1px solid #5a7a6b55;background:#244649;border-radius:7px;position:relative;padding:0;min-width:0;aspect-ratio:1;opacity:1!important;overflow:hidden;transition:background .2s,border-color .2s}.tile:enabled:hover{background:#335a56}.tile svg{display:block;width:100%;height:100%;overflow:visible}.tile .rail-bed{fill:none;stroke:#173239;stroke-width:22;stroke-linecap:butt}.tile .rail-ties{fill:none;stroke:#9da991;stroke-width:20;stroke-dasharray:3 9;opacity:.55}.tile .rail{fill:none;stroke:#7c9890;stroke-width:9}.tile .rail-inner{fill:none;stroke:#2b484a;stroke-width:4}.tile.connected{background:#31584f;border-color:#87bd9666}.tile.connected .rail{stroke:#e9d69f}.tile.connected .rail-ties{stroke:#e9d69f;opacity:.8}.tile.connected .rail-inner{stroke:#688272}.tile.block{display:grid;place-items:center;background:#15363b;border-color:#294d4d}.scenery{font-size:32px;color:#5d8c79}.scenery.moon{color:#d5c081}.parcel{position:absolute;right:3px;top:3px;width:24px;height:24px;display:grid;place-items:center;background:#f1c779;color:#314538;border-radius:50%;font-size:18px;line-height:1;box-shadow:0 1px 7px #081e3166;z-index:2}.parcel.collected{background:var(--mint);color:var(--ink)}.tile.hinted{outline:3px solid var(--gold);outline-offset:-3px}.tile.hinted:after{content:"↻";position:absolute;inset:22%;border-radius:50%;display:grid;place-items:center;font-size:28px;background:#102e35e8;color:var(--gold)}.tile.problem{outline:3px solid #eeab82;outline-offset:-3px}.station{position:absolute;z-index:3;top:var(--station-y,37.5%);transform:translateY(-50%);font-size:10px;border:1px solid #c9b47388;background:#e7c982;color:var(--ink);border-radius:4px;padding:7px 3px;font-weight:800;box-shadow:0 3px 9px #08212988}.departure{left:-17px}.arrival{right:-17px;background:#9cd5bb;border-color:#9cd5bb}.board-caption{display:flex;justify-content:space-between;font-size:10px;color:#bfccad;margin:16px 0 0;letter-spacing:1px}.board-caption>span:last-child{font-size:19px;color:var(--gold);line-height:1}.howto{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #b9ccb526;border-bottom:1px solid #b9ccb526;padding:23px 0;gap:24px}.howto>div{display:flex;align-items:center;gap:16px}.howto b{font:italic 25px Georgia,serif;color:var(--gold)}.howto p{margin:0}.howto strong{display:block;font-size:12px;letter-spacing:1px;margin-bottom:6px}.howto span{font-size:10px;color:var(--muted)}footer{display:flex;justify-content:space-between;gap:15px;padding:22px 0 25px;color:var(--muted);font-size:9px;letter-spacing:1px}footer i{font-style:normal;color:var(--gold);padding:0 10px}footer small{font-size:9px;letter-spacing:0}.mission h1{font-size:34px;line-height:1.5;letter-spacing:3px;margin:0 0 14px}.mission-copy{font-size:13px;line-height:2;color:var(--muted);margin:0 0 25px}.mission-stats{display:grid;grid-template-columns:1.35fr 1fr;border-top:1px solid #b9ccb530;border-bottom:1px solid #b9ccb530;padding:21px 0;gap:15px}.mission-stats small{display:block;font-size:10px;color:var(--muted);margin-bottom:9px;letter-spacing:1px}.mission-stats b{font-size:31px;font-weight:500;color:var(--gold);font-variant-numeric:tabular-nums}.mission-stats em{font-size:17px;font-style:normal;color:var(--muted)}.guide{display:flex;gap:15px;align-items:center;padding:24px 0 12px}.guide-icon{font-size:32px;color:var(--gold)}.guide b{font-size:12px;font-weight:600}.guide p{color:var(--muted);font-size:11px;line-height:1.9;margin:5px 0}.status{background:#26464a;border-left:2px solid var(--mint);padding:14px;font-size:12px;line-height:1.85;min-height:76px;border-radius:0 5px 5px 0;margin:5px 0 20px}.legend{display:grid;gap:12px;font-size:10px;color:var(--muted)}.legend span{display:flex;align-items:center;gap:9px}.legend-light{width:14px;height:4px;background:var(--cream);display:inline-block}.legend-parcel{width:14px;color:var(--gold);font-style:normal;font-size:15px}.tools{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0 12px}.tools button{border:1px solid #92b19a44;background:#15363b;padding:12px 4px;border-radius:6px;font-size:17px;min-height:44px}.tools span{font-size:11px;margin-left:5px}.dispatch{width:100%}.train{position:absolute;z-index:5;width:32px;height:43px;margin-left:-16px;margin-top:-21px;border-radius:9px 9px 7px 7px;background:var(--gold);border:2px solid #765332;box-shadow:0 3px 0 #0b242f,0 0 20px #fad98466;display:flex;gap:3px;padding:8px 4px 0;transition:left .17s linear,top .17s linear;pointer-events:none}.train i{width:5px;height:9px;background:#365451;border-radius:2px}.train b{position:absolute;bottom:3px;left:9px;font-size:15px;line-height:1;color:#60482e}dialog{border:1px solid #79928588;border-radius:19px;background:#15383d;color:var(--cream);padding:30px;width:min(480px,calc(100% - 32px));max-height:calc(100% - 40px);overflow-y:auto;box-shadow:0 28px 90px #03131d99}dialog::backdrop{background:#061c27cb;backdrop-filter:blur(5px)}dialog h2{font-size:25px;letter-spacing:2px;margin:0 0 14px}dialog .eyebrow{margin:0 0 15px;font-size:9px}.dialog-copy{font-size:12px;color:var(--muted);line-height:1.9}.dialog-top{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.close{border:1px solid #78948566;border-radius:50%;background:transparent;width:40px;height:40px;font-size:25px;line-height:1;margin-top:-8px}.level-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:24px}.level-button{background:#24474a;border:1px solid #58776999;padding:14px 3px;border-radius:9px;display:flex;flex-direction:column;align-items:center;gap:8px;min-height:83px}.level-button b{font:25px Georgia,serif}.level-button small{font-size:9px;white-space:nowrap}.level-button span{font-size:13px;letter-spacing:2px;color:var(--gold)}.map-summary{text-align:center;font-size:12px;color:var(--gold);margin:22px 0 0}#resultDialog{text-align:center}#resultDialog .primary{width:100%;margin-top:23px}.result-moon{font-size:67px;line-height:1.2;color:var(--gold);margin:10px auto 8px}.result-stars{font-size:29px;letter-spacing:8px;margin:5px 0 20px;color:var(--gold)}.result-score{display:flex;justify-content:space-around;border-block:1px solid #92b19a33;padding:18px 0;margin:23px 0 16px;font-size:11px;color:var(--muted)}.result-score b{font-size:21px;display:block;color:var(--cream);margin-top:9px}.lesson{font-size:12px;line-height:1.8;color:var(--mint)}.text-button{border:0;background:transparent;font-size:12px;padding:15px 10px 6px;color:var(--muted);min-height:44px}.text-button:hover{color:var(--cream)}.storage-notice{font-size:11px;color:var(--gold)}body.playing .howto{display:none}body.playing .game-layout{padding-block:40px}body.playing .board-caption{margin-top:12px}body.playing .ticket{display:none}
@media(max-width:950px){.app{width:calc(100% - 40px)}.game-layout{gap:30px;grid-template-columns:1fr 1.2fr}.introduction h1{font-size:54px}.title-star{right:12px}.rail-panel{padding:16px}.board-heading small{font-size:7px}.ticket{width:250px}.mission h1{font-size:27px}.howto{gap:12px}.howto>div{gap:10px}.howto strong{font-size:11px}.howto span{font-size:9px}}
@media(max-width:680px){.app{width:calc(100% - 32px);max-width:490px}.topbar{height:78px}.wordmark{font-size:9px;letter-spacing:1px;gap:8px}.wordmark small{font-size:9px;letter-spacing:2px}.brand-mark{width:31px;height:31px;font-size:26px}nav{gap:6px}.quiet{font-size:10px;padding:10px 11px;min-height:39px}.quiet span{margin-left:3px}.game-layout{grid-template-columns:minmax(0,1fr);gap:28px;padding:31px 0}.introduction{position:relative}.eyebrow{font-size:8px;letter-spacing:1.4px;margin-bottom:14px}.introduction h1{font-size:49px;letter-spacing:5px;line-height:1.28}.introduction h1 br{display:none}.title-star{font-size:23px;right:0;top:-12px}.lead{font-size:18px;letter-spacing:2px;margin:16px 0 10px}.lead br{display:none}.intro-copy{font-size:12px;line-height:1.9;margin-bottom:21px}.intro-copy br:first-child{display:none}.ticket{position:absolute;right:0;bottom:98px;width:80px;height:90px;padding:0;margin:0;border:1px dashed #b9ccb540;border-radius:5px;justify-content:center;gap:5px;transform:rotate(7deg)}.ticket>b{font-size:32px}.ticket small,.ticket i{display:none}.ticket>span{font-size:7px}.start{width:100%;max-width:none}.save-summary{text-align:center;font-size:9px}.rail-panel{padding:16px}.board-heading{margin-bottom:15px}.board-heading b{font-size:10px}.board-heading small{font-size:8px}.board-surround{margin:0 10px}.board{gap:4px;padding:4px}.board-caption{font-size:9px}.howto{grid-template-columns:1fr;padding:19px 0;gap:17px}.howto>div{gap:15px}.howto p{display:flex;align-items:baseline;gap:13px}.howto strong{font-size:11px;margin:0}.howto span{font-size:9px}.howto b{font-size:20px}footer{display:block;text-align:center;padding:22px 0;line-height:2.1}footer small{display:block;font-size:8px}body.playing .game-layout{padding:24px 0 0;gap:19px}.mission{display:grid;grid-template-columns:1fr 105px;gap:0 13px}.mission .eyebrow{grid-column:1/-1;margin-bottom:6px}.mission h1{font-size:24px;letter-spacing:1px;margin-bottom:5px}.mission-copy{grid-column:1;font-size:11px;line-height:1.7;margin:0}.mission-stats{grid-column:2;grid-row:2/4;display:flex;justify-content:space-between;padding:0;border:0;gap:10px}.mission-stats small{font-size:8px;margin-bottom:4px;letter-spacing:0}.mission-stats b{font-size:23px;white-space:nowrap}.mission-stats em{font-size:11px}.guide{grid-column:1/-1;padding:10px 0 0;gap:8px}.guide-icon{font-size:22px}.guide div{display:flex;gap:10px;align-items:center}.guide b{font-size:10px;white-space:nowrap}.guide p{font-size:9px;line-height:1.6;margin:0}.guide p br{display:none}.status{grid-column:1/-1;min-height:0;font-size:11px;padding:9px 11px;margin:11px 0 0;line-height:1.7}.legend{display:none}.parcel{width:20px;height:20px;font-size:15px;top:2px;right:2px}.scenery{font-size:27px}.tools{margin-top:13px;gap:6px}.tools button{padding:9px 2px}.tools span{font-size:10px;margin-left:3px}.dispatch{min-height:48px;padding:11px 18px;font-size:13px}body.playing footer{padding:15px 0}.level-grid{gap:8px}dialog{padding:25px}.train{width:28px;height:35px;margin-left:-14px;margin-top:-17px;padding:5px 3px}.train b{left:7px;bottom:1px;font-size:13px}}
@media(max-width:365px){.app{width:calc(100% - 24px)}.introduction h1{font-size:41px}.rail-panel{padding:13px 10px}.mission h1{font-size:21px}.mission{grid-template-columns:1fr 97px;gap:0 8px}.guide p{font-size:8px}.board-surround{margin:0 11px}.tools span{font-size:9px}.topbar nav{gap:4px}.quiet{padding:10px 8px}.wordmark{font-size:8px}.board-heading small{font-size:7px}.board{gap:3px;padding:3px}.parcel{width:18px;height:18px;font-size:14px}}
@media(min-width:1000px) and (max-height:720px){body:not(.playing) .app{max-width:1000px}body:not(.playing) .topbar{height:74px}body:not(.playing) .game-layout{grid-template-columns:1fr 1.1fr;gap:70px;padding:27px 0}body:not(.playing) .introduction h1{font-size:58px}body:not(.playing) .eyebrow{margin-bottom:17px}body:not(.playing) .lead{font-size:20px;margin:18px 0 12px}body:not(.playing) .intro-copy{font-size:12px;margin-bottom:20px}body:not(.playing) .ticket,body:not(.playing) .howto,body:not(.playing) footer{display:none}}
.mission h1:focus{outline:none}
@media(max-width:365px){.app{width:calc(100% - 16px)}.rail-panel{padding:12px 8px}.board-surround{margin:0 9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}
