:root{--sky: #1b2740;--sky-2: #314a72;--ink: #140f0c;--panel: #1c140f;--paper: #fff4dc;--muted: #c9b896;--gold: #f0c14b;--gold-2: #c4922a;--good: #6fbf4e;--bad: #d24b3a;--line: #3a3128;--font-pixel: "Press Start 2P", ui-monospace, monospace;--font-body: "VT323", ui-monospace, monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#0e1628;color:var(--paper);image-rendering:pixelated}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--gold)}#app{min-height:100vh}.skip-link{position:absolute;left:12px;top:-48px;z-index:20;background:var(--gold);color:#140f0c;font-family:var(--font-pixel);font-size:8px;padding:10px 12px;border:4px solid #140f0c}.skip-link:focus{top:12px}.kicker{font-family:var(--font-pixel);font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);line-height:1.6}h1,h2,h3{font-family:var(--font-pixel);font-weight:400;line-height:1.45}.page{max-width:1040px;margin:0 auto;padding:28px 18px 80px}.page h1{font-size:22px;margin:8px 0 12px}.page.landing{position:relative;display:flex;flex-direction:column;min-height:100vh;max-width:none;padding:0;background-color:#152038;background-image:linear-gradient(180deg,#0c1220,#152038 46%,#24344f 78%,#2a4038),repeating-linear-gradient(0deg,transparent 0 15px,rgba(255,244,220,.07) 15px 16px);background-size:auto,16px 16px;background-blend-mode:normal,overlay}.page.landing:before{content:"";position:absolute;inset:0 auto auto 0;width:2px;height:2px;pointer-events:none;box-shadow:40px 28px #fff4dc,120px 18px #c9b896,210px 44px #fff4dc,310px 22px #9a8b6e,420px 56px #fff4dc,530px 14px #c9b896,640px 38px #fff4dc,760px 24px #9a8b6e,880px 48px #fff4dc,980px 16px #c9b896,90px 90px #9a8b6e,260px 80px #fff4dc,490px 96px #c9b896,720px 88px #fff4dc,860px 110px #9a8b6e;opacity:.85}.site-bar{position:sticky;top:0;z-index:8;background:#140f0c;border-bottom:4px solid var(--gold)}.site-bar-inner{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:10px;padding-bottom:10px}.brand{font-family:var(--font-pixel);font-size:10px;color:var(--gold);text-decoration:none;letter-spacing:.08em}.brand:hover{color:#ffe08a}.landing-inner{position:relative;z-index:1;width:100%;max-width:1040px;margin:0 auto;padding:24px 18px 0}main.landing-inner{flex:1;padding-bottom:28px}.nav{display:flex;flex-wrap:wrap;gap:4px;font-family:var(--font-pixel);font-size:8px;margin:0}.nav a{color:var(--muted);text-decoration:none;padding:8px 10px;border:4px solid transparent}.nav a:hover{color:var(--gold)}.nav a.active{color:#140f0c;background:var(--gold);border-color:#140f0c}.hero{padding:28px 0 8px}.hero h1{font-size:clamp(22px,5vw,40px);margin:10px 0 12px;color:var(--paper);text-shadow:4px 4px 0 #140f0c}.hero p{font-family:var(--font-body);font-size:22px;max-width:38rem;color:var(--paper);line-height:1.3;margin:0 0 18px}.hero .meta{margin:0 0 8px}.hero-actions{margin:0 0 12px}.horizon{margin-top:auto;position:relative;z-index:1}.horizon .landing-inner{padding-top:0;padding-bottom:0}.pixel-town{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;align-items:end;margin:0 0 -8px;image-rendering:pixelated;position:relative;z-index:2}.skyline-bldg{display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none;color:inherit}.skyline-sprite{display:block;width:64px;height:64px;border:0;box-shadow:none;image-rendering:pixelated;image-rendering:crisp-edges}.skyline-name{font-family:var(--font-pixel);font-size:7px;color:var(--paper);text-shadow:2px 2px 0 #140f0c;text-align:center;line-height:1.5;max-width:7.5rem}.skyline-role{font-family:var(--font-pixel);font-size:6px;color:var(--gold);text-shadow:2px 2px 0 #140f0c}.skyline-bldg:hover .skyline-name{color:var(--gold)}.skyline-bldg:focus-visible{outline:4px solid #ffe08a;outline-offset:2px}.grass{height:40px;border-top:4px solid #140f0c;background-color:#3d7a3a;background-image:repeating-linear-gradient(90deg,#3d7a3a 0,#3d7a3a 8px,#3e8a38 8px,#3e8a38 16px),repeating-linear-gradient(0deg,transparent 0 8px,rgba(20,15,12,.18) 8px 16px);background-size:16px 16px,16px 16px;box-shadow:inset 0 8px #2d6b32}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.actions{margin:16px 0 8px}.btn{font-family:var(--font-pixel);font-size:10px;border:4px solid #140f0c;background:#3a3128;color:var(--paper);padding:10px 14px;box-shadow:4px 4px #140f0c;text-decoration:none;display:inline-block}.btn:hover{background:#4a4034}.btn.primary{background:var(--gold);color:#140f0c}.btn.primary:hover{background:#ffe08a}.btn.ghost{background:#1c140f;color:var(--muted)}.btn.active{background:var(--paper);color:#140f0c}.btn.small{font-size:8px;padding:8px 10px}.btn:focus-visible,.nav a:focus-visible,.brand:focus-visible{outline:4px solid #ffe08a;outline-offset:2px}.menu-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:16px}.card{background:#241910;border:4px solid #140f0c;box-shadow:8px 8px #140f0c;padding:18px}.card h2{font-size:13px;margin:0 0 10px}.card p,.card ol,.card li{font-family:var(--font-body);font-size:20px;color:var(--muted);line-height:1.3}.card p{margin:0 0 12px}.card ol{margin:0;padding-left:22px}.card code{font-family:var(--font-pixel);font-size:10px;color:var(--gold)}.save-meter{height:12px;margin:0 0 10px;background:#140f0c;border:4px solid #3a3128}.save-meter i{display:block;height:100%;background:var(--gold)}.quest-rail{list-style:none;margin:0 0 14px;padding:0}.quest-rail li{display:flex;gap:10px;align-items:baseline;font-family:var(--font-body);font-size:18px;color:#6e614c;padding:3px 0}.quest-rail li span{font-family:var(--font-pixel);font-size:7px;color:#8a7a62;min-width:22px}.quest-rail li.done{color:var(--muted)}.quest-rail li.now{color:var(--paper)}.quest-rail li.now span{color:var(--gold)}.meta{font-family:var(--font-body);font-size:18px;color:#9a8b6e}table.plain{width:100%;border-collapse:collapse}table.plain th,table.plain td{border-bottom:4px solid #3a3128;text-align:left;padding:10px 6px;vertical-align:top;font-family:var(--font-body);font-size:20px}table.plain th{font-family:var(--font-pixel);font-size:8px;color:var(--gold)}.glossary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.gloss-card{display:flex;gap:12px;align-items:flex-start}.gloss-sprite{width:48px;height:48px;flex-shrink:0;image-rendering:pixelated;image-rendering:crisp-edges}.gloss-card .dual{margin:8px 0}.ranks-card{margin-top:16px}.ranks-card strong{color:var(--gold);font-weight:400}.play-shell{display:grid;grid-template-rows:auto minmax(0,1fr) minmax(200px,28vh);height:100vh;background:#140f0c}.hud-bar{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 12px;background:#241910;border-bottom:4px solid #140f0c}.hud-brand{display:flex;gap:10px;align-items:center}.hud-brand h1{font-size:12px;margin:0}.pixel-crest{width:28px;height:28px;background:#d24b3a;border:4px solid #140f0c;box-shadow:inset 0 -10px #f0c14b,inset 0 -16px #3d7a3a,3px 3px #140f0c}.hud-stats{display:flex;gap:8px;flex-wrap:wrap}.stat-chip{background:#140f0c;border:4px solid #3a3128;padding:4px 8px;min-width:72px}.stat-chip span{display:block;font-family:var(--font-pixel);font-size:7px;color:var(--gold)}.stat-chip strong{font-family:var(--font-pixel);font-size:11px}.hud-actions{display:flex;gap:6px}.play-stage{display:grid;grid-template-columns:minmax(0,1fr) 280px;min-height:0}#game-root{min-height:0;background:#3d7a3a;border-right:4px solid #140f0c}#game-root canvas{display:block;image-rendering:pixelated;image-rendering:crisp-edges}.quest-card{background:#241910;padding:12px;overflow:auto;border-left:4px solid #140f0c}.quest-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.quest-head .kicker{margin:0}.quest-card h2{font-size:11px;margin:8px 0}.quest-card p{font-family:var(--font-body);font-size:18px;margin:0 0 10px;color:var(--muted);line-height:1.25}.quest-card .goal{color:var(--gold);font-size:20px}.quest-card .goal:empty{display:none}.learn-chip{font-family:var(--font-pixel);font-size:7px;line-height:1.6;color:#140f0c;background:var(--gold);border:4px solid #140f0c;padding:8px;margin-bottom:12px}.inspect-card{border:4px solid #3a3128;padding:8px;background:#140f0c}.inspect-title{font-family:var(--font-pixel);font-size:9px;margin:0 0 8px}.dual{font-family:var(--font-body);font-size:18px;margin:0 0 4px;color:var(--paper)}.dual span{font-family:var(--font-pixel);font-size:7px;color:var(--gold);display:inline-block;width:42px}.hint{font-family:var(--font-body);font-size:18px;color:var(--gold);white-space:pre-wrap;margin:8px 0 0}.console{display:flex;flex-direction:column;border-top:4px solid #140f0c;background:#0c0a08;min-height:0}.lesson{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:8px 12px;background:#1c140f;border-bottom:4px solid #140f0c}.lesson[hidden]{display:none}.lesson p{margin:6px 0 0;font-family:var(--font-body);font-size:18px;color:var(--paper);max-width:52rem}.lesson-actions{display:flex;gap:8px;flex-wrap:wrap}.lesson-list{font-family:var(--font-body);font-size:20px;color:#5a4030;padding-left:18px}.lesson-overlay{z-index:30}.win-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#140f0cb8;align-items:center;justify-content:center;z-index:20;pointer-events:none}.win-overlay:not([hidden]){display:flex;pointer-events:auto}.win-card{background:var(--paper);color:#140f0c;padding:22px;width:min(460px,92vw);border:4px solid #140f0c;box-shadow:8px 8px #140f0c}.win-card h2{margin:8px 0 10px;font-size:14px}.win-card p{margin:0 0 12px;font-family:var(--font-body);font-size:20px}.win-card .kicker{color:var(--gold-2)}.console-log{flex:1;overflow:auto;padding:8px 12px;font-family:var(--font-body);font-size:18px;line-height:1.2}.log-in{color:var(--gold)}.log-out{color:var(--paper)}.log-sys{color:#8a7a62}.log-err{color:#ff8a7a}.log-ok{color:#9ee07a}.console-form{display:flex;align-items:center;gap:8px;border-top:4px solid #3a3128;padding:8px 12px;background:#140f0c}.prompt{font-family:var(--font-pixel);color:var(--good);font-size:8px;white-space:nowrap}.console-form input{flex:1;width:100%;background:transparent;border:0;color:var(--paper);outline:none;font-family:var(--font-body);font-size:20px;position:relative;z-index:1}.cli-wrap{flex:1;position:relative;min-width:0}.cli-ghost{position:absolute;top:0;right:0;bottom:0;left:0;font-family:var(--font-body);font-size:20px;line-height:1.2;pointer-events:none;white-space:pre;overflow:hidden;display:flex;align-items:center}.cli-ghost-typed{color:transparent}.cli-ghost-rest{color:#6a5c4a}.cli-hints{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 12px;background:#140f0c;border-top:4px solid #3a3128;min-height:36px}.cli-tag{font-family:var(--font-pixel);font-size:7px;line-height:1.4;border:3px solid #3a3128;background:#1c140f;color:var(--gold);padding:6px 8px;box-shadow:none}.cli-tag:hover,.cli-tag.active{background:#3a3128;color:var(--paper)}.cli-tab-hint{font-family:var(--font-pixel);font-size:6px;color:#8a7a62;margin-left:auto}@media(max-width:900px){.menu-grid,.play-stage{grid-template-columns:1fr}.pixel-town{grid-template-columns:repeat(3,minmax(0,1fr))}.site-bar-inner{flex-wrap:wrap}.hero{padding-top:16px}.play-shell{height:auto;min-height:100vh}#game-root{min-height:360px;border-right:0;border-bottom:4px solid #140f0c}}
