:root{--paper:#f6f0e4;--paper-2:#eee5d5;--cream:#fbf8f0;--ink:#173b2e;--ink-2:#285541;--muted:#8a9689;--line:#ddd4c5;--orange:#da7545;--orange-dark:#b85b32;--gold:#d99b45;--shadow:0 18px 50px rgba(26,55,42,.12);--radius:20px}
*{box-sizing:border-box}
html{min-height:100%;background:var(--paper)}
body{margin:0;min-width:320px;min-height:100vh;color:var(--ink);background:radial-gradient(circle at 82% 0%,rgba(216,165,93,.16),transparent 25rem),linear-gradient(135deg,#f8f2e8 0%,#eee6d8 100%);font-family:Manrope,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}
button,a,input{font:inherit}
button{border:0;cursor:pointer;color:inherit}
button:focus-visible,a:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid rgba(218,117,69,.55);outline-offset:3px}
[hidden]{display:none!important}
.app-shell{display:grid;grid-template-columns:168px minmax(0,1fr);min-height:100vh}
.side-nav{display:flex;flex-direction:column;position:relative;padding:34px 24px 28px;background:var(--ink);color:#f7f2e7;min-height:100vh}
.brand-mark{width:48px;height:48px;border:1px solid rgba(247,242,231,.35);display:grid;place-items:center;transform:rotate(-8deg);margin-bottom:15px;background:linear-gradient(140deg,#285b44,#143327);box-shadow:10px 12px 0 rgba(218,117,69,.85)}
.brand-mark span{font-family:"Noto Serif SC",serif;font-size:24px;font-weight:900;transform:rotate(8deg)}
.brand-copy{display:flex;flex-direction:column;gap:2px;margin-bottom:70px;letter-spacing:.08em}
.brand-copy strong{font-family:"Noto Serif SC",serif;font-size:16px}
.brand-copy small{font-family:"DM Mono",monospace;font-size:9px;opacity:.55;letter-spacing:.14em}
.nav-links{display:flex;flex-direction:column;gap:9px}
.nav-link{display:flex;align-items:center;gap:12px;padding:10px 4px;color:rgba(247,242,231,.45);font-size:12px;text-decoration:none;letter-spacing:.08em}
.nav-link.active{color:#fff}
.nav-dot{width:6px;height:6px;border:1px solid currentColor;border-radius:50%}
.nav-link.active .nav-dot{background:var(--orange);border-color:var(--orange);box-shadow:0 0 0 4px rgba(218,117,69,.12)}
.nav-end{margin-top:auto;color:rgba(247,242,231,.45);font-family:"DM Mono",monospace;font-size:9px;display:flex;align-items:center;gap:8px;white-space:nowrap}
.status-led{display:block;width:6px;height:6px;background:#88b68c;border-radius:50%;box-shadow:0 0 0 4px rgba(136,182,140,.12)}
.main-content{min-width:0;padding:0 42px 36px}
.top-bar{height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(23,59,46,.1)}
.crumb{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ink-2);font-weight:700}
.eyebrow,.section-kicker,.card-overline,.option-label{font-family:"DM Mono",monospace;text-transform:uppercase;letter-spacing:.13em;font-size:9px;color:var(--muted)}
.slash{color:var(--orange)}
.top-actions{display:flex;align-items:center;gap:13px}
.seed-chip{font-family:"DM Mono",monospace;font-size:9px;color:var(--muted);padding-right:4px}
.icon-button{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:transparent;color:var(--ink-2);font-size:20px}
.icon-button:hover{background:var(--paper-2)}
.pause-button{background:var(--ink);color:var(--paper);border-radius:999px;padding:10px 15px 10px 17px;font-size:11px;font-weight:700;letter-spacing:.03em}
.pause-button:hover{background:var(--ink-2)}
kbd{font-family:"DM Mono",monospace;font-size:9px;border:1px solid currentColor;border-radius:4px;padding:2px 4px;opacity:.62;margin-left:5px}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) 328px;gap:44px;padding-top:43px;max-width:1430px;margin:0 auto}
.map-column{min-width:0}
.map-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin:0 2px 18px}
.section-kicker{margin:0 0 8px;color:var(--orange-dark)}
h1,h2{font-family:"Noto Serif SC",serif;line-height:1.15}
h1{font-size:clamp(24px,3vw,42px);letter-spacing:-.055em;margin:0;max-width:600px}
.map-legend{display:flex;gap:13px;flex-wrap:wrap;padding-bottom:3px;color:var(--muted);font-size:10px}
.map-legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}
.legend-dot{display:block;width:8px;height:8px;border-radius:50%;background:var(--orange)}
.exit-dot{background:#4d8f68}.item-dot{background:var(--gold);border-radius:2px;transform:rotate(45deg)}
.canvas-card{background:rgba(251,248,240,.68);border:1px solid rgba(23,59,46,.1);box-shadow:var(--shadow);border-radius:26px;padding:16px 16px 13px;position:relative}
.canvas-meta,.map-footer{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-family:"DM Mono",monospace;font-size:9px;letter-spacing:.05em;padding:1px 5px 12px}
.canvas-meta span:last-child{color:var(--ink-2)}
.canvas-wrap{width:100%;aspect-ratio:1/1;min-height:340px;max-height:calc(100vh - 255px);display:grid;place-items:center;position:relative;background:#e1dbc9;border-radius:15px;overflow:hidden}
.canvas-wrap:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(23,59,46,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(23,59,46,.035) 1px,transparent 1px);background-size:20px 20px;pointer-events:none}
#maze-canvas{display:block;max-width:100%;max-height:100%;width:100%;height:100%;position:relative;z-index:1;cursor:crosshair;touch-action:none}
.canvas-status{position:absolute;z-index:2;bottom:17px;left:50%;transform:translateX(-50%);background:rgba(23,59,46,.9);color:var(--paper);padding:7px 12px;border-radius:99px;font-size:10px;opacity:0;pointer-events:none;transition:opacity .2s}
.canvas-wrap[data-state="paused"] .canvas-status,.canvas-wrap[data-state="won"] .canvas-status{opacity:1}
.map-footer{padding:12px 5px 0;border-bottom:0}
.focus-tip{color:#a4aa9e}
.right-column{display:flex;flex-direction:column;gap:14px;min-width:0}
.card{background:rgba(251,248,240,.9);border:1px solid rgba(23,59,46,.1);border-radius:var(--radius);box-shadow:0 12px 38px rgba(26,55,42,.07);padding:24px}
.setup-card{padding:28px 26px 22px}
.card-overline{display:flex;align-items:center;gap:8px;color:var(--ink-2);margin-bottom:19px}
.overline-mark{width:7px;height:7px;border-radius:50%;background:var(--ink)}
.overline-mark.orange{background:var(--orange)}
.live-tag{margin-left:auto;background:#e2eedf;color:#44714c;border-radius:99px;padding:4px 8px;font-size:8px;letter-spacing:.08em}
.card h2{font-size:25px;letter-spacing:-.045em;margin:0 0 11px}
.muted{color:var(--muted);font-size:11px;line-height:1.7}
.intro{max-width:245px;margin:0 0 25px}
.option-label{margin-bottom:10px;color:var(--ink-2)}
.size-options{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:20px}
.size-option{display:flex;flex-direction:column;align-items:flex-start;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:transparent;color:var(--muted);transition:.2s}
.size-option strong{font-family:"Noto Serif SC",serif;font-size:21px;line-height:1;color:var(--ink)}
.size-option span{font-family:"DM Mono",monospace;font-size:8px;margin-top:6px}
.size-option:hover{border-color:var(--orange)}
.size-option.selected{background:var(--ink);border-color:var(--ink);color:#cbd8c8}
.size-option.selected strong{color:#fff}
.fog-row{display:flex;align-items:center;gap:11px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer}
.fog-row b,.fog-row small{display:block}
.fog-row b{font-size:11px}
.fog-row small{font-size:9px;color:var(--muted);margin-top:4px}
.toggle{width:31px;height:18px;position:relative;display:block;flex:0 0 auto}
.toggle input{position:absolute;opacity:0}
.toggle i{position:absolute;inset:0;background:#bdc4b7;border-radius:99px;transition:.2s}
.toggle i:after{content:"";position:absolute;top:3px;left:3px;width:12px;height:12px;border-radius:50%;background:#fff;transition:.2s}
.toggle input:checked+i{background:var(--orange)}
.toggle input:checked+i:after{transform:translateX(13px)}
.setup-specs{display:flex;justify-content:space-between;gap:5px;padding:14px 0;color:var(--muted);font-size:9px}
.setup-specs b{display:block;color:var(--ink);font-size:10px;margin-top:4px}
.primary-button{width:100%;display:flex;justify-content:space-between;align-items:center;background:var(--orange);color:#fff;padding:14px 16px;border-radius:11px;font-size:12px;font-weight:800;letter-spacing:.06em;box-shadow:0 8px 20px rgba(184,91,50,.2);transition:.2s}
.primary-button b{font-size:18px;font-weight:400}
.primary-button:hover{background:var(--orange-dark);transform:translateY(-2px);box-shadow:0 12px 25px rgba(184,91,50,.28)}
.best-line{text-align:center;font-family:"DM Mono",monospace;font-size:9px;color:var(--muted);margin-top:14px}
.best-line span{color:var(--ink-2)}
.status-card{padding-bottom:20px}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 10px;margin:2px 0 19px}
.stat{display:flex;flex-direction:column;gap:5px}
.stat span{color:var(--muted);font-size:9px}
.stat strong{font-family:"DM Mono",monospace;font-size:19px;color:var(--ink)}
.progress-track{height:5px;background:#e3ded1;border-radius:99px;overflow:hidden}
.progress-track i{display:block;width:0;height:100%;background:var(--orange);border-radius:99px;transition:width .25s}
.progress-caption{display:flex;justify-content:space-between;margin-top:7px;color:var(--muted);font-size:9px}
.progress-caption b{font-family:"DM Mono",monospace;color:var(--ink-2)}
.controls-card{padding-top:20px}
.control-hint{font-size:9px;color:var(--muted);line-height:1.6;margin:-6px 0 13px}
.d-pad{display:grid;grid-template-columns:repeat(3,43px);grid-template-rows:repeat(3,37px);gap:4px;justify-content:center;margin:4px 0 16px}
.d-pad-button{background:#e9e2d4;color:var(--ink-2);border-radius:9px;font-size:17px;display:grid;place-items:center;user-select:none;touch-action:none;transition:.1s}
.d-pad-button:hover{background:#dbd1c0}.d-pad-button:active,.d-pad-button.pressed{background:var(--ink);color:#fff;transform:scale(.93)}
.d-pad-button.up{grid-column:2}.d-pad-button.left{grid-column:1;grid-row:2}.d-pad-button.center{grid-column:2;grid-row:2;font-size:14px;color:var(--orange)}.d-pad-button.right{grid-column:3;grid-row:2}.d-pad-button.down{grid-column:2;grid-row:3}
.action-row{display:grid;grid-template-columns:1fr 1.25fr;gap:7px}
.secondary-button{padding:10px 7px;border:1px solid var(--line);border-radius:9px;background:transparent;color:var(--ink-2);font-size:10px;font-weight:700}
.secondary-button:hover{border-color:var(--ink);background:#f5efe4}
.orange-button{color:var(--orange-dark)}
.tools-card{padding:17px 21px}
.tool-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0}
.tool-row+ .tool-row{border-top:1px solid var(--line)}
.tool-row>span{display:flex;align-items:center;gap:10px}
.tool-row b,.tool-row small{display:block}.tool-row b{font-size:10px}.tool-row small{font-size:8px;color:var(--muted);margin-top:4px}
.tool-icon{width:25px;height:25px;border-radius:7px;display:grid;place-items:center;background:#ece4d6;color:var(--orange);font-style:normal;font-size:14px}
.text-button{padding:5px 2px;background:transparent;color:var(--orange-dark);font-size:10px;font-weight:800}
.text-button:hover{text-decoration:underline}
.tool-actions{display:flex;justify-content:flex-end;gap:20px;border-top:1px solid var(--line);margin-top:7px;padding-top:13px}
.rules-note{display:flex;gap:10px;padding:4px 6px;color:var(--muted);font-size:9px;line-height:1.6}
.rules-note p{margin:0}.rules-note b{color:var(--ink-2);margin-right:5px}.note-icon{flex:0 0 auto;width:16px;height:16px;border:1px solid var(--orange);border-radius:50%;display:grid;place-items:center;color:var(--orange);font-family:serif;font-size:10px}
.toast-region{position:fixed;z-index:20;left:50%;bottom:30px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:var(--ink);color:var(--paper);box-shadow:0 8px 25px rgba(23,59,46,.23);border-radius:99px;padding:10px 17px;font-size:11px;white-space:nowrap;animation:toast-in .2s ease both}
@keyframes toast-in{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
.modal-backdrop{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:20px;background:rgba(12,34,25,.56);backdrop-filter:blur(7px)}
.modal{position:relative;width:min(420px,100%);border-radius:22px;background:var(--cream);box-shadow:0 24px 80px rgba(0,0,0,.25);padding:30px;animation:modal-in .22s ease both}
@keyframes modal-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.modal-close{position:absolute;right:15px;top:13px;background:transparent;font-size:24px;color:var(--muted);line-height:1}
.modal h2{font-size:26px;margin:0 0 10px}
.modal p{font-size:11px;color:var(--muted);line-height:1.7}
.modal-actions{display:flex;gap:8px;margin-top:22px}.modal-actions button{flex:1}
.modal .secondary-button{background:transparent}
.import-text{width:100%;min-height:150px;border:1px solid var(--line);border-radius:10px;padding:10px;resize:vertical;background:#fffdf7;color:var(--ink);font:10px "DM Mono",monospace}
.result-score{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.result-score div{background:#eee6d8;border-radius:11px;padding:12px}.result-score span{display:block;font-size:9px;color:var(--muted)}.result-score b{display:block;font:20px "DM Mono",monospace;margin-top:6px}
@media (max-width:1100px){.main-content{padding-left:28px;padding-right:28px}.workspace{gap:24px;grid-template-columns:minmax(0,1fr) 300px}}
@media (max-width:850px){.app-shell{display:block}.side-nav{min-height:0;height:65px;padding:10px 16px;display:flex;flex-direction:row;align-items:center;gap:12px}.brand-mark{width:34px;height:34px;margin:0;box-shadow:5px 6px 0 rgba(218,117,69,.85)}.brand-mark span{font-size:17px}.brand-copy{margin:0}.brand-copy strong{font-size:13px}.nav-links{margin-left:auto;flex-direction:row;gap:8px}.nav-link{padding:8px;font-size:10px}.nav-end{display:none}.main-content{padding:0 16px 25px}.top-bar{height:65px}.workspace{grid-template-columns:1fr;gap:18px;padding-top:25px}.right-column{display:grid;grid-template-columns:1fr 1fr;align-items:start}.setup-card,.game-panel{grid-column:1/-1}.rules-note{grid-column:1/-1}.canvas-wrap{max-height:none;min-height:0}.map-heading{align-items:flex-start;flex-direction:column;gap:12px}.map-legend{padding-bottom:0}}
@media (max-width:560px){.main-content{padding-left:10px;padding-right:10px}.seed-chip{display:none}.top-actions{gap:5px}.pause-button{padding:9px 11px}.pause-button kbd{display:none}.workspace{padding-top:19px}.canvas-card{padding:10px 10px 8px;border-radius:19px}.canvas-wrap{border-radius:11px}.canvas-meta,.map-footer{font-size:8px;padding-left:2px;padding-right:2px}.map-footer .focus-tip{display:none}h1{font-size:27px}.right-column{display:block}.card{border-radius:16px}.setup-card{padding:22px 18px 17px}.card h2{font-size:23px}.game-panel{display:flex;flex-direction:column;gap:12px}.rules-note{padding:0 3px}.modal{padding:27px 21px}.modal h2{font-size:23px}.result-score b{font-size:17px}}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Local system fonts and the forest expedition visual theme. */
:root{--paper:#f6f4ea;--cream:#fffdf5;--ink:#204c3e;--ink-2:#476448;--muted:#7d8973;--line:#deded0;--orange:#dd784b;--shadow:0 4px 12px #21453303;font-family:"Avenir Next","PingFang SC","Microsoft YaHei",sans-serif}
html{scroll-behavior:smooth}body{background:var(--paper);font-family:"Avenir Next","PingFang SC","Microsoft YaHei",sans-serif}button:disabled{opacity:.42;cursor:default}textarea{font:inherit}textarea:focus-visible{outline:3px solid var(--orange);outline-offset:3px}.app-shell{grid-template-columns:94px minmax(0,1fr)}.side-nav{position:sticky;top:0;height:100vh;min-height:0;padding:32px 12px;align-items:center}.brand-mark{width:46px;height:46px;border-radius:13px;transform:none;box-shadow:none;background:#ffffff08;margin-bottom:15px}.brand-mark svg{width:29px;height:29px}.brand-copy{text-align:center;gap:6px}.brand-copy strong{font-size:13px}.nav-links{width:100%}.nav-link{flex-direction:column;gap:11px;padding:15px 5px;border-radius:13px;font-size:11px;color:#c8d2bc}.nav-link.active{background:#ffffff16}.nav-link.active .nav-dot{background:none;border-color:currentColor;box-shadow:none}.nav-end{writing-mode:vertical-rl;font-size:9px;letter-spacing:.25em}.status-led{box-shadow:none;background:#c0d2a4;width:5px;height:5px}
.main-content{padding:0 48px 40px}.top-bar{height:95px;gap:12px}.crumb{gap:17px;color:var(--muted);font-weight:400;white-space:nowrap}.eyebrow{color:var(--ink);font-weight:700}.seed-chip{font-size:11px}.icon-button{width:36px;height:36px;border:1px solid var(--line)}.pause-button{background:transparent;color:var(--ink);border:1px solid var(--line)}.pause-button:hover{background:#e7ebdc}.workspace{grid-template-columns:minmax(0,1fr) 302px;gap:36px;padding-top:38px;max-width:1500px}.map-heading{margin-bottom:24px;gap:14px}.section-kicker{margin-bottom:15px;font-size:10px;letter-spacing:.2em;color:var(--muted)}h1,h2{font-family:"Songti SC","STSong","Noto Serif CJK SC",serif;line-height:1.3}h1{font-size:clamp(25px,2.6vw,39px);letter-spacing:.025em}.title-number{color:var(--orange);margin-left:7px;font-family:Georgia,serif}.map-subtitle{font-size:12px;line-height:1.8;color:var(--muted);margin:10px 0 0}.map-legend{font-size:10px;gap:12px}.legend-dot{width:6px;height:6px}.player-dot{background:var(--ink)}.exit-dot{background:var(--orange);border-radius:0}.item-dot{background:#b5a565}.canvas-card{padding:20px;border-radius:19px;background:var(--cream);border-color:var(--line)}.canvas-meta,.map-footer{font-family:inherit;font-size:10px;line-height:1.6;gap:8px}.canvas-meta{padding:0 0 16px}.canvas-wrap{width:min(100%,590px);min-height:0;max-height:none;margin:auto;border-radius:12px;background:#dfe4cc}.canvas-wrap:before{display:none}.canvas-status{max-width:90%;text-align:center;background:#fffdf5ed;color:var(--ink-2);padding:8px 17px;font-size:11px}.canvas-wrap[data-state="menu"] .canvas-status{opacity:1}.map-footer{padding:17px 0 0}.focus-tip{font-size:9px;color:#98a18d}.map-caption{display:flex;justify-content:space-between;gap:16px;color:var(--muted);font-size:10px;line-height:1.7;padding:17px 2px 0}.map-caption b{font-weight:500;color:var(--ink-2)}.edition{font:10px/1.2 Georgia,serif;letter-spacing:.08em;text-align:right}
.card{box-shadow:none;background:var(--cream);border-color:var(--line);padding:22px 20px}.setup-card{padding:27px 24px}.game-panel{display:flex;flex-direction:column;gap:14px}.card-overline{font-family:inherit;font-size:10px;letter-spacing:0;margin-bottom:23px}.overline-mark{width:6px;height:6px;background:transparent;border:1px solid #8c9d73}.overline-mark.orange{border-color:var(--orange)}.card h2{font-size:26px;letter-spacing:0}.muted{font-size:12px;line-height:1.85}.intro{margin-bottom:27px}.option-label{font:10px inherit;letter-spacing:0}.size-options{margin-bottom:22px}.size-option{align-items:center;padding:15px 8px 12px;gap:5px}.size-option strong{font:700 25px Georgia,serif}.size-option span{font:9px inherit;margin:0}.fog-row{padding:4px 0 26px;border-top:0;border-bottom:1px dashed var(--line);gap:12px}.fog-row b{font-size:12px}.fog-row small{font-size:10px}.toggle{width:34px;height:20px}.toggle i:after{top:4px;left:4px}.toggle input:checked+i{background:var(--ink)}.toggle input:checked+i:after{transform:translateX(14px)}.toggle input:focus-visible+i{outline:3px solid var(--orange);outline-offset:4px}.setup-specs{flex-direction:column;gap:9px;padding:18px 0;font-size:10px}.setup-specs span{display:flex;justify-content:space-between}.setup-specs b{font-weight:500;margin:0}.primary-button{background:var(--ink);padding:17px 18px;box-shadow:none;letter-spacing:0;font-weight:600}.primary-button:hover{background:#34634e;transform:none;box-shadow:none}.best-line{font:10px inherit;margin-top:18px}.best-line span{margin-left:6px}.live-tag{background:transparent;color:var(--orange-dark);padding:0;font-size:9px}.stat-grid{gap:20px 10px}.stat span{font-size:10px}.stat strong{font-family:inherit;font-size:28px;font-weight:400;font-variant-numeric:tabular-nums;color:var(--ink-2)}#rewinds-value{color:var(--orange)}#items-value{font-size:24px}.progress-track{height:3px;background:#e4e8d8}.progress-track i{background:#869d6b}.progress-caption b{font-family:inherit;font-weight:400}.controls-card .card-overline{margin-bottom:14px}.control-hint{margin:0 0 15px}.d-pad-button{background:#eff0e4;border:1px solid #e0e3d2;font-size:22px}.d-pad-button.center{background:transparent;border-color:transparent;color:#98aa7b}.action-row{grid-template-columns:1fr 1fr;gap:8px}.secondary-button{padding:12px 8px;background:#edf0e1;border-color:#d9dfc7;font-weight:400}.orange-button{background:#f7ead7;border-color:#f0d5b6}.tool-icon{background:transparent;color:#8f9f79;font-size:22px}.tool-row+.tool-row{border:0}.tool-row b{font-size:11px;font-weight:600}.tool-row small{font-size:9px}.text-button{color:var(--ink-2);font-weight:400;padding:9px 2px}.tool-actions{justify-content:space-between;gap:10px}.rules-toggle{padding:3px 6px;text-align:left;font-size:11px;color:var(--ink-2);background:transparent}.rules-note{font-size:10px;line-height:1.8}.rules-note b{font-weight:500}
.toast-region{z-index:50;max-width:calc(100% - 24px);width:max-content}.toast{font-size:12px;border-radius:12px;white-space:normal;overflow-wrap:anywhere;text-align:center;background:#204c3eed}.modal-backdrop{z-index:40}.modal{width:min(460px,100%);max-height:calc(100dvh - 40px);overflow:auto}.modal-close{width:34px;height:34px;right:10px;top:8px}.modal h2{font-size:28px}.modal p,.modal li{font-size:12px;line-height:1.8;color:var(--muted)}.modal ul{padding-left:20px}.modal .card-overline{padding-right:25px}.import-text{font:11px monospace;max-height:30vh}#import-file{max-width:100%;font-size:12px;margin:10px 0}.result-score div{background:#edf0e1}.result-score b{font:26px inherit}html:fullscreen{overflow:auto;background:var(--paper)}
@media(max-width:1200px){.main-content{padding-left:28px;padding-right:28px}.workspace{gap:24px;grid-template-columns:minmax(0,1fr) 280px}.map-heading{flex-wrap:wrap}.card{padding-left:20px;padding-right:20px}}
@media(max-width:900px){.app-shell{display:block}.side-nav{position:relative;height:58px;padding:10px 18px;flex-direction:row;gap:12px}.brand-mark{width:32px;height:32px;border-radius:9px;margin:0}.brand-mark svg{width:23px;height:23px}.brand-copy{margin:0;gap:2px;text-align:left}.brand-copy small{font-size:8px}.nav-links{margin-left:auto;width:auto;flex-direction:row;gap:4px}.nav-link{padding:10px;flex-direction:row;font-size:10px;gap:7px}.nav-end{display:none}.main-content{padding:0 20px 28px}.top-bar{height:60px}.workspace{grid-template-columns:1fr;padding-top:24px;gap:22px}.map-heading{flex-wrap:nowrap;flex-direction:row}.map-column{max-width:780px;width:100%;margin:auto}.right-column{display:block}.card{margin-bottom:14px}.setup-card{max-width:590px;margin:auto}.game-panel{display:grid;grid-template-columns:1fr 1fr;gap:14px}.game-panel .card{margin:0}.tools-card{grid-column:1/-1}.rules-toggle{margin:14px 0 6px}.seed-chip{display:none}}
@media(max-width:560px){.main-content{padding-left:14px;padding-right:14px}.top-bar{height:51px}.crumb{font-size:10px;gap:10px}.top-actions{gap:5px}.icon-button{width:32px;height:32px;font-size:18px}.pause-button{padding:8px 10px;font-size:10px}.workspace{padding-top:18px;gap:16px}.section-kicker{font-size:8px;margin-bottom:7px}.map-heading{gap:8px;align-items:flex-end;margin-bottom:15px}h1{font-size:27px;letter-spacing:0}.map-subtitle{font-size:10px;margin-top:5px}.map-legend{gap:6px;font-size:8px}.legend-dot{width:5px;height:5px}.canvas-card{padding:12px;border-radius:16px}.canvas-meta,.map-footer{font-size:8px}.canvas-meta{padding-bottom:10px}.canvas-wrap{border-radius:9px}.canvas-status{font-size:9px;padding:6px 12px;bottom:10px}.map-footer{padding-top:11px}.focus-tip,.edition{display:none}.map-caption{font-size:9px;padding-top:10px}.game-panel{display:flex;gap:12px}.status-card{order:1;padding:15px 18px}.controls-card{order:0;padding:16px 18px;display:grid;grid-template-columns:1fr 148px;column-gap:10px}.controls-card .card-overline{grid-column:1;margin-bottom:10px}.control-hint{grid-column:1;font-size:9px;line-height:1.8;margin:0}.d-pad{grid-column:2;grid-row:1/4;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,39px);gap:4px;margin:0;align-self:center}.action-row{grid-column:1;display:flex;flex-direction:column;gap:6px;margin-top:10px}.secondary-button{padding:8px 5px;font-size:9px}.stat-grid{grid-template-columns:repeat(4,1fr);gap:7px;margin-bottom:12px}.status-card .card-overline{margin-bottom:14px}.stat strong,#items-value{font-size:21px}.stat span{font-size:9px}.tools-card{order:2}.setup-card{padding:24px}.modal{padding:28px 22px}.modal h2{font-size:24px}.modal-backdrop{padding:14px}.modal{max-height:calc(100dvh - 28px)}.modal-actions .primary-button{padding:12px;font-size:11px}.modal p,.modal li{font-size:11px}}
@media(max-width:360px){h1{font-size:23px}.map-legend{gap:4px;font-size:7px}.controls-card{padding:14px;grid-template-columns:1fr 142px;column-gap:5px}.d-pad{grid-template-columns:repeat(3,42px)}.stat strong,#items-value{font-size:19px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Project house style reset: dark arena UI shared by the other games. */
:root{
  --void:#07040d;--panel:#0c0716;--surface:#120b1e;--cell:#221834;
  --line:#37284d;--ink:#d9e6de;--muted:#7c6f99;--signal:#b478ff;
  --signal-deep:#7c3aed;--warning:#ffce18;--block:#f05a51;
  --paper:#07040d;--cream:#0c0716;--ink-2:#d9e6de;--orange:#ffce18;
  --line:#37284d;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;
}
html{background:var(--void);color-scheme:dark}
body{min-width:320px;background:
 radial-gradient(circle at 53% -18%,rgba(168,85,247,.14),transparent 32rem),
 radial-gradient(circle at 10% 78%,rgba(217,70,239,.05),transparent 25rem),
 linear-gradient(155deg,#07040d 0%,#040209 56%,#0a0514 100%);
 color:var(--ink);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
.app-shell{display:block;min-height:100vh;background:transparent}
.side-nav{display:none}
.main-content{width:min(100%,1220px);margin:0 auto;padding:0 22px 30px}
.top-bar{min-height:96px;height:auto;border-bottom:1px solid rgba(122,99,160,.35);padding:0;display:flex}
.crumb{gap:14px;color:var(--muted);font-size:12px}
.eyebrow{color:var(--signal);font-weight:700;letter-spacing:.08em}
.slash{color:var(--warning)}
.seed-chip{font-family:ui-monospace,Menlo,monospace;color:#8a7fa5;font-size:10px}
.icon-button,.pause-button{border:1px solid rgba(180,120,255,.58);border-radius:5px;background:rgba(180,120,255,.045);color:var(--signal);box-shadow:none}
.icon-button:hover,.pause-button:hover{border-color:var(--signal);background:rgba(180,120,255,.16)}
.icon-button{width:40px;height:40px}
.pause-button{padding:9px 14px;font-size:12px;letter-spacing:.08em}
.workspace{grid-template-columns:minmax(0,1.32fr) minmax(300px,.92fr);gap:24px;padding-top:32px;max-width:none}
.map-heading{margin-bottom:18px}
.section-kicker{color:#756a94;font:700 10px ui-monospace,Menlo,monospace;letter-spacing:.14em}
h1,h2{font-family:"Songti SC","STSong","Noto Serif CJK SC",serif}
h1{color:var(--signal);font-size:clamp(25px,2.6vw,39px);letter-spacing:.08em}
.title-number{color:var(--warning);font-family:ui-monospace,Menlo,monospace}
.map-subtitle{color:var(--muted)}
.map-legend{color:#849189}
.player-dot{background:var(--signal)}.exit-dot{background:var(--warning)}.item-dot{background:var(--block)}
.canvas-card,.card{
 border:1px solid rgba(122,99,160,.44);border-radius:14px;
 background:linear-gradient(145deg,rgba(12,17,14,.94),rgba(3,5,4,.88));
 box-shadow:inset 0 1px rgba(255,255,255,.025),0 24px 70px rgba(0,0,0,.16);
 color:var(--ink)
}
.canvas-card{padding:20px}
.canvas-meta,.map-footer{color:#6f6488;font:10px ui-monospace,Menlo,monospace}
.canvas-wrap{background:#120b1e;border-radius:10px}
.canvas-wrap:before{display:block;background-image:linear-gradient(rgba(180,120,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(180,120,255,.04) 1px,transparent 1px);background-size:22px 22px}
.canvas-status{background:rgba(74,20,110,.94);border:1px solid rgba(192,132,252,.55);color:#f4ebff}
.map-caption{color:#6f6488}.map-caption b{color:var(--ink)}
.edition{color:#65736b}
.setup-card{padding:28px 26px}
.card-overline,.option-label,.control-hint,.progress-caption,.rules-note{color:#8d81ad}
.card h2{color:var(--signal);font-size:25px;letter-spacing:.1em}
.muted{color:#9186ae}
.overline-mark,.overline-mark.orange{background:transparent;border:1px solid var(--signal)}
.live-tag{color:var(--signal);background:rgba(180,120,255,.08);border:1px solid rgba(180,120,255,.3)}
.size-options{gap:8px}
.size-option{border:1px solid #3b2b52;border-radius:5px;background:#0e0918;color:#8d9991}
.size-option strong{color:var(--ink);font-family:ui-monospace,Menlo,monospace}
.size-option span{font-family:ui-monospace,Menlo,monospace}
.size-option:hover,.size-option.selected{border-color:var(--signal)}
.size-option.selected{background:rgba(180,120,255,.12);color:var(--signal)}
.size-option.selected strong{color:var(--signal)}
.fog-row{border-color:#37284d}.fog-row b{color:var(--ink)}.fog-row small{color:#7c6f99}
.toggle i{background:#37284d}.toggle input:checked+i{background:var(--signal)}
.setup-specs{color:#7c6f99}.setup-specs b{color:var(--ink)}
.primary-button{background:var(--signal);color:#170b26;border:1px solid var(--signal);border-radius:5px;box-shadow:none}
.primary-button:hover{background:#d09bff;color:#170b26}
.best-line{color:#6f6488}.best-line span{color:var(--signal)}
.stat strong{color:var(--ink);font-family:ui-monospace,Menlo,monospace}
#rewinds-value{color:var(--warning)}#items-value{color:var(--signal)}
.progress-track{background:#221834}.progress-track i{background:var(--signal)}
.d-pad-button{background:#120b1e;border:1px solid #3b2b52;border-radius:5px;color:var(--signal)}
.d-pad-button:hover,.d-pad-button:active,.d-pad-button.pressed{background:rgba(180,120,255,.16);border-color:var(--signal);color:var(--signal)}
.secondary-button{border:1px solid #3b2b52;border-radius:5px;background:#0e0918;color:var(--signal)}
.secondary-button:hover{border-color:var(--signal);background:rgba(180,120,255,.12)}
.orange-button{color:var(--warning);border-color:rgba(255,206,24,.55);background:rgba(255,206,24,.06)}
.tool-row{border-color:#37284d}.tool-icon{color:var(--signal);background:transparent}.tool-row b{color:var(--ink)}.tool-row small{color:#7c6f99}
.text-button,.rules-toggle{color:var(--signal)}.tool-actions{border-color:#37284d}
.rules-note{color:#7c6f99}.note-icon{border-color:var(--warning);color:var(--warning)}
.toast{background:rgba(74,20,110,.94);border:1px solid rgba(192,132,252,.55);box-shadow:none}
.modal-backdrop{background:rgba(0,0,0,.74);backdrop-filter:blur(12px)}
.modal{border:1px solid rgba(180,120,255,.55);border-radius:12px;background:linear-gradient(140deg,#120a1e,#07040d);box-shadow:0 24px 100px rgba(0,0,0,.65),inset 0 1px rgba(255,255,255,.035)}
.modal h2{color:var(--signal);letter-spacing:.1em}.modal p{color:#9186ae}
.modal-close{color:#b3a6d1}.import-text{border-color:#463361;background:#0a0614;color:var(--ink)}
.result-score div{background:#120b1e;border:1px solid #37284d}.result-score span{color:#9186ae}.result-score b{color:var(--signal)}
@media(max-width:900px){.main-content{padding:0 8px 18px}.top-bar{min-height:66px;padding:0 8px}.workspace{grid-template-columns:1fr;gap:14px;padding-top:15px}}
@media(max-width:560px){.main-content{padding:0 8px 18px}.top-bar{height:57px}.workspace{padding-top:15px}.canvas-card{padding:12px}.map-caption{color:#6f6488}}
