@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Space+Grotesk:wght@400;500;600;700&display=swap";:root{color:#292d29;font-synthesis:none;--paper:#eeece5;--ink:#292d29;--muted:#777b70;--line:#d1d1c7;--orange:#b45639;--mono:"DM Mono", "Consolas", monospace;background:#eeece5;font-family:Space Grotesk,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{margin:0}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.45}button:focus-visible{outline:2px solid var(--orange);outline-offset:5px}button{touch-action:manipulation}button,dialog{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}::selection{color:var(--ink);background:#c7ccaf}#app{flex-direction:column;min-height:100svh;padding:0 46px;display:flex}.masthead{border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;height:83px;display:flex}.brand{letter-spacing:-1.7px;background:0 0;border:0;align-items:center;padding:0;font-size:28px;font-weight:700;display:flex}.brand-mark{margin-right:9px;font-size:36px;font-weight:400;line-height:1;transform:rotate(-7deg)}.brand-dot{letter-spacing:0;align-self:flex-start;margin-top:8px;margin-left:3px;font-size:12px}.header-note{font:10px var(--mono);letter-spacing:1.2px;margin-left:65px}.header-actions{align-items:center;gap:9px;font-size:10px;display:flex}.utility{background:0 0;border:0;align-items:center;gap:7px;margin-right:12px;padding:8px 14px;font-size:11px;display:flex}.utility:hover{background:#e2e1d8}.sound-icon{font-size:17px}#sound-value{color:var(--muted)}.status-dot{background:#819066;border-radius:50%;width:6px;height:6px;display:inline-block}.online-label{letter-spacing:1px}main{flex-direction:column;flex:1;min-height:610px;display:flex;position:relative}.page-intro{z-index:2;pointer-events:none;justify-content:space-between;align-items:flex-start;padding-top:34px;display:flex;position:relative}.page-intro button{pointer-events:auto}.eyebrow{font:9px var(--mono);letter-spacing:1.25px;text-transform:uppercase;margin:0 0 12px}.page-intro h1{letter-spacing:-2px;margin:0;font-size:clamp(24px,2.9vw,43px);font-weight:600;line-height:1.35}.page-intro h1 span{color:#62695e;font-weight:400}.intro-aside{color:#7d8075;letter-spacing:1px;margin:27px 0 0;font-size:11px;line-height:1.95}.scene-wrap{flex:1;min-height:370px;margin:-40px -46px -24px;position:relative}.scene-wrap:after{content:"";pointer-events:none;background:linear-gradient(to bottom, var(--paper), transparent 7%, transparent 93%, var(--paper));position:absolute;inset:0}#scene{position:absolute;inset:0}#scene canvas{touch-action:pan-y;width:100%;height:100%;display:block}body[data-view=intro] #scene canvas{touch-action:none}.orbit-hint{z-index:1;color:#777f6e;letter-spacing:1px;white-space:nowrap;pointer-events:none;margin:0;font-size:10px;position:absolute;bottom:36px;left:50%;transform:translate(-50%)}.orbit-hint span{vertical-align:-1px;margin-right:6px;font-size:17px;display:inline-block}body[data-view=library] .orbit-hint{display:none}.masthead,.page-intro,.intro-bottom,.cartridge-menu,.page-footer,.orbit-hint,.scene-wrap:after{transition:opacity .3s,transform .3s,filter .3s}body.is-entering :is(.masthead,.page-intro,.intro-bottom,.cartridge-menu,.page-footer){z-index:11;opacity:var(--entry-ui-opacity,1);filter:blur(var(--entry-ui-blur,0));transition:none;position:relative}body.is-entering :is(.masthead,.page-intro){transform:translateY(var(--entry-top-y,0))}body.is-entering :is(.intro-bottom,.cartridge-menu,.page-footer){transform:translateY(var(--entry-bottom-y,0))}body.is-entering .orbit-hint{opacity:var(--entry-ui-opacity,1);transition:none}#screen-transition{z-index:15;pointer-events:none;opacity:0;background:#09180f;position:fixed;inset:0}body.is-entering{overflow:hidden}body.is-entering[data-entry-viewport=full] #scene{inset:auto;top:calc(var(--entry-scene-top) * (1 - var(--entry-expand)));left:calc(var(--entry-scene-left) * (1 - var(--entry-expand)));width:calc(var(--entry-scene-width) + (100vw - var(--entry-scene-width)) * var(--entry-expand));height:calc(var(--entry-scene-height) + (100dvh - var(--entry-scene-height)) * var(--entry-expand));z-index:10;position:fixed}body.is-entering #screen-transition{pointer-events:auto}#model-loading{text-align:center;font:12px var(--mono);color:var(--ink);position:absolute;inset:45% 0 auto}.start-button:disabled{opacity:.5;cursor:wait}#webgl-fallback{text-align:center;width:100%;color:var(--muted);padding:20px;font-size:13px;position:absolute;top:40%}.intro-bottom{z-index:2;pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:25px;padding:0 0 32px;display:grid;position:relative}.intro-bottom button{pointer-events:auto}.object-note,.interaction-note{font:8px/1.9 var(--mono);letter-spacing:.35px;margin:0}.object-note span:not(.small-cross){color:var(--muted);padding-left:16px}.small-cross{padding-right:4px;font-size:15px}.interaction-note{text-align:right;color:#71796a;font-family:Microsoft YaHei,sans-serif;font-size:10px;line-height:2.3}.interaction-note span{font:8px var(--mono);letter-spacing:.2px}.start-button{color:#eeeee0;letter-spacing:1px;background:#343b31;border:1px solid #343b31;align-items:center;gap:18px;padding:17px 25px;font-size:12px;transition:transform .2s,background .2s;display:flex;box-shadow:0 3px #161f15}.start-button:hover{background:#46513f;transform:translateY(-3px)}.start-button:active{transform:translateY(1px)}.button-led{background:#b9c989;border-radius:50%;width:5px;height:5px;display:inline-block;box-shadow:0 0 6px #c0da8780}.start-button>span:last-child{margin-left:15px;font-size:19px}.page-footer{border-top:1px solid var(--line);height:61px;font:8px var(--mono);letter-spacing:.45px;color:#70766a;flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.footer-year{color:#999c91;margin-left:8px}.footer-middle{letter-spacing:1.5px;font-family:Microsoft YaHei,sans-serif;font-size:10px}.footer-help{color:var(--ink);background:0 0;border:0;padding:8px 0;font-size:10px}.footer-help span{padding-left:12px}.back-button{background:0 0;border:0;border-bottom:1px solid #898e81;margin-top:32px;padding:0 0 7px;font-size:11px}.cartridge-menu{z-index:2;grid-template-columns:repeat(3,1fr);gap:36px;width:80%;max-width:850px;margin:0 auto 35px;display:grid;position:relative}.cassette-select{text-align:left;background:0 0;border:0;border-top:1px solid #bec3b4;grid-template-columns:auto 1fr auto;align-items:start;gap:12px;padding:15px 1px 3px;transition:border-color .2s,transform .2s;display:grid}.cassette-select:hover{border-color:var(--ink);transform:translateY(-3px)}.cassette-no{font:9px var(--mono);color:var(--muted);padding-top:4px}.cassette-title{letter-spacing:1px;font-size:15px;font-weight:500;display:block}.cassette-genre{color:#777d70;letter-spacing:1px;margin-top:7px;font-size:9px;display:block}.cassette-arrow{font-size:20px;line-height:1}.library-copy h1{font-size:clamp(24px,2.9vw,40px)}body[data-view=library] .scene-wrap{margin-top:-13px;margin-bottom:-12px}dialog{color:var(--ink);background:#e8e7de;border:1px solid #999f8e;padding:0;box-shadow:0 25px 120px #131b244d}dialog::backdrop{-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#252d2380}#game-dialog{border-radius:8px;width:min(900px,100vw - 48px);max-height:calc(100svh - 48px);overflow:auto}#game-dialog[open]{animation:.26s ease-out dialog-in}.game-top{border-bottom:1px solid #c8cdc0;justify-content:space-between;align-items:center;padding:21px 26px;display:flex}.game-top .eyebrow{color:#707869;margin-bottom:5px;font-size:8px}.game-top h2{letter-spacing:-.6px;margin:0;font-size:21px;font-weight:500}.close-button{background:0 0;border:1px solid #c0c4b6;border-radius:50%;flex-shrink:0;place-items:center;width:33px;height:33px;font-size:14px;display:grid}.close-button:hover{background:#d1d6c5;border-color:#9ba38e}.game-body{grid-template-columns:minmax(0,1fr) 195px;align-items:start;gap:29px;padding:26px;display:grid}.game-screen{aspect-ratio:1;background:#19231f;border:12px solid #333a31;border-radius:15px;justify-content:center;width:100%;min-width:0;display:flex;position:relative;overflow:hidden;box-shadow:0 1px #fafbf0,0 0 0 2px #b3b8a8,inset 0 0 30px #0a170f}#game-canvas{object-fit:contain;width:100%;height:100%;image-rendering:pixelated;outline:none;display:block}#game-dialog[data-game=blocks] .game-screen{background:#19231f}#game-dialog[data-game=blocks] #game-canvas{width:auto;max-width:100%;height:100%}.scanlines{pointer-events:none;z-index:2;background:repeating-linear-gradient(#0000 0 3px,#05180b22 3px 4px);border-radius:4px;position:absolute;inset:0;box-shadow:inset 0 0 50px #0000002b}.game-overlay{text-align:center;color:#cdd9ac;z-index:3;background:#17251cda;flex-direction:column;justify-content:center;align-items:center;padding:15px;display:flex;position:absolute;inset:0}.game-hint{white-space:nowrap;color:#d3ddbb;font:11px var(--mono);pointer-events:none;z-index:2;background:#19231fe8;border:1px solid #718066;margin:0;padding:9px 13px;position:absolute;bottom:18%;left:50%;transform:translate(-50%)}.overlay-kicker{font:9px var(--mono);letter-spacing:3px;color:#8b9e78}.game-overlay h3{letter-spacing:1px;margin:22px 0 12px;font-size:27px;font-weight:400}.game-overlay p{color:#9eaf8c;font-size:10px;line-height:1.8}.phosphor-button{color:#cdd9ac;letter-spacing:1px;background:#82926315;border:1px solid #91a270;margin-top:21px;padding:12px 23px;font-size:12px}.phosphor-button:hover{background:#cad7a822}.game-sidebar{padding-top:6px;font-size:11px;line-height:1.9}.game-sidebar .eyebrow{color:#77806f;margin-bottom:2px;font-size:8px}#score{font:44px var(--mono);letter-spacing:-3px;line-height:1.4}.game-detail{color:#6e7967;font:10px var(--mono);min-height:17px;margin:8px 0 14px;line-height:1.7}.best-score{color:#68745b;font:10px var(--mono);margin:0}.best-score span{color:#48573f;margin-left:8px}.next-piece{border-top:1px solid #c6ccbd;justify-content:space-between;align-items:center;padding:8px 0;font-size:10px;display:flex}.next-piece small{font:8px var(--mono);letter-spacing:1px;color:#818b75;display:block}#next-canvas{width:96px;height:56px;image-rendering:pixelated}.sidebar-rule{border-top:1px solid #c6ccbd;margin-bottom:20px}#game-description{color:#69735f;margin:0 0 24px;line-height:2}.control-label{font:8px var(--mono);letter-spacing:1px;color:#8c9483;margin:0 0 7px}#game-controls{margin:0;font-size:10px;line-height:1.8}.pause-hint{font:9px var(--mono);color:#929a88}.game-actions{flex-wrap:wrap;gap:8px;margin:22px 0;display:flex}.game-actions button{background:0 0;border:1px solid #bac3ad;padding:8px 10px;font-size:10px}.game-actions button:hover{background:#d4dac9}.cartridge-stamp{font:8px/1.8 var(--mono);color:#87907a;letter-spacing:1px;margin:30px 0 0}.cartridge-stamp span{letter-spacing:.5px;font-size:7px}.game-bottom{font:9px var(--mono);color:#67775d;border-top:1px solid #c8cdc0;align-items:center;gap:8px;padding:13px 26px;display:flex}.game-bottom>span:last-child{color:#8d9682;margin-left:auto;font-family:Microsoft YaHei,sans-serif;font-size:9px}.touch-controls{grid-template-columns:repeat(4,1fr);gap:5px;display:none}.touch-controls button{touch-action:none;background:#d8ddcf;border:1px solid #b5bea8;height:38px}.touch-controls button:active{background:#b0bd9d}.touch-action{font:9px var(--mono);grid-column:span 4}#help-dialog{border-radius:7px;width:min(450px,100vw - 36px);padding:37px}#help-dialog .close-button{position:absolute;top:18px;right:18px}#help-dialog h2{letter-spacing:-1px;margin:20px 0;font-size:25px;font-weight:500}#help-dialog ol{padding-left:18px;font-size:12px;line-height:2.5}.help-small{border-top:1px solid var(--line);color:#7f8775;margin-top:24px;padding-top:20px;font-size:10px;line-height:1.9}#toast{color:#eaeddc;z-index:20;background:#353c30;max-width:90vw;padding:13px 22px;font-size:12px;position:fixed;bottom:23px;left:50%;transform:translate(-50%);box-shadow:0 5px 25px #0002}@keyframes dialog-in{0%{opacity:0;transform:translateY(18px)scale(.97)}to{opacity:1;transform:none}}main{min-height:540px}.scene-wrap{min-height:350px}@media (height>=850px) and (width>=800px){.scene-wrap{min-height:480px}.page-intro{padding-top:43px}.intro-bottom{padding-bottom:40px}}@media (width>=1600px){#app{padding:0 65px}.scene-wrap{margin-left:-65px;margin-right:-65px}.page-intro h1{font-size:46px}.scene-wrap{max-height:730px}}@media (width<=800px){#app{padding:0 25px}.masthead{height:70px}.header-note{display:none}.scene-wrap{margin-top:-18px;margin-left:-25px;margin-right:-25px}.page-intro{padding-top:27px}.page-intro h1{font-size:30px}.intro-aside{font-size:9px}.intro-bottom{grid-template-columns:1fr;justify-items:center;gap:18px;padding-bottom:28px}.object-note,.interaction-note{display:none}.start-button{padding:15px 22px}.cartridge-menu{gap:17px;width:94%;margin-bottom:35px}.game-body{grid-template-columns:minmax(0,1fr) 160px;gap:20px;padding:20px}.game-sidebar{font-size:10px}#score{font-size:35px}.game-overlay h3{font-size:23px}}@media (width<=560px){#app{padding:0 21px}.masthead{height:66px}.brand{font-size:24px}.brand-mark{font-size:31px}.online-label{display:none}.header-actions{gap:0}.utility{margin-right:3px;padding:7px 10px;font-size:10px}.page-intro{gap:10px;padding-top:30px}.eyebrow{letter-spacing:1px;margin-bottom:10px;font-size:7px}.page-intro h1,.library-copy h1{letter-spacing:-1.4px;font-size:27px}.intro-aside{display:none}main{min-height:560px}.scene-wrap{min-height:355px;margin:0 -21px -15px}.page-footer{height:55px;font-size:7px}.footer-middle{display:none}.footer-help{font-size:9px}.back-button{white-space:nowrap;margin-top:24px;font-size:10px}.cartridge-menu{gap:15px;width:100%;margin-bottom:38px}.cassette-select{grid-template-columns:1fr auto;gap:5px;padding-top:12px}.cassette-no{display:none}.cassette-title{letter-spacing:0;font-size:13px}.cassette-genre{letter-spacing:0;font-size:8px}.cassette-arrow{font-size:16px}#game-dialog{width:calc(100vw - 20px);max-height:calc(100svh - 20px)}.game-top{padding:16px 18px}.game-top h2{font-size:18px}.game-body{flex-direction:column;gap:15px;padding:15px;display:flex}.game-screen{aspect-ratio:1;border-width:8px;width:100%;max-height:48svh}.game-sidebar{grid-template-columns:1fr auto;column-gap:14px;width:100%;padding:0;display:grid;position:relative}.game-sidebar>.eyebrow{grid-column:1;align-self:end;margin:0}#score{grid-column:1;font-size:29px;line-height:1.15}.game-detail{grid-column:1/-1;margin:6px 0 0;font-size:9px}.best-score{grid-column:1;margin-top:5px;font-size:9px}.next-piece{grid-column:1/-1;margin-top:8px;padding:3px 0}.next-piece>span{align-items:center;gap:8px;display:flex}#next-canvas{width:72px;height:42px}.sidebar-rule,#game-description,.control-label,.pause-hint,.cartridge-stamp{display:none}#game-controls{color:#707b65;grid-column:1/-1;margin-top:10px;font-size:9px}.game-actions{grid-column:1/-1;margin:12px 0 0}.game-actions button{padding:8px;font-size:9px}.touch-controls{grid-column:1/-1;grid-template-columns:repeat(4,1fr) 1.4fr;margin-top:12px;display:grid}.touch-action{grid-column:auto}.game-bottom{padding:12px 17px;font-size:8px}.game-bottom>span:last-child{font-size:8px}.game-overlay h3{font-size:25px}.phosphor-button{margin-top:15px}.overlay-kicker{font-size:8px}#help-dialog{padding:30px}.help-small{font-size:10px}}@media (pointer:coarse){.touch-controls{display:grid}.cartridge-stamp{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}body.is-entering :is(.masthead,.page-intro,.intro-bottom,.cartridge-menu,.page-footer){filter:none;transform:none}}
