@font-face{font-family:"Press Start 2P";src:url("fonts/PressStart2P-Regular.ttf") format("truetype");font-display:swap}
:root{
  --night:#120b2e;--night2:#1d1147;--purple:#9945ff;--green:#14f195;--gold:#ffd24a;--gold-d:#a8780f;
  --paper:#f6f1e3;--ink:#1a1333;--face:#d9d3ea;--hi:#fff;--lo:#5b5180;--bar:linear-gradient(90deg,#4a1fa8,#9945ff 55%,#14b987);
  --pixel:"Press Start 2P",ui-monospace,monospace;--sans:Tahoma,Verdana,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:12px}
body{margin:0;min-height:100vh;font:15px/1.5 var(--sans);color:var(--ink);padding-bottom:52px;
  background:radial-gradient(circle at 20% 0,#3a1c8c 0,transparent 45%),radial-gradient(circle at 90% 30%,#0d5c4a 0,transparent 40%),var(--night);background-attachment:fixed}
body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(#fff 1px,transparent 1px),radial-gradient(var(--gold) 1px,transparent 1px);background-size:90px 90px,140px 140px;background-position:10px 20px,60px 80px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;z-index:50;background:var(--gold);padding:8px}
.desktop{position:relative;display:grid;grid-template-columns:104px minmax(0,1fr);gap:16px;max-width:1120px;margin:0 auto;padding:16px}
main{display:grid;gap:16px;min-width:0}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}

/* desktop icons */
.icons{display:flex;flex-direction:column;gap:14px;position:sticky;top:16px;align-self:start}
.shortcut{display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 2px;border:1px dotted transparent;background:none;color:#fff;font:12px/1.3 var(--sans);text-align:center;text-decoration:none;cursor:pointer;text-shadow:1px 1px 0 #000}
.shortcut:hover,.shortcut:focus-visible{border-color:var(--gold);background:rgba(153,69,255,.35);outline:none}
.ico{width:44px;height:44px;display:block;border:3px solid var(--ink);background:var(--gold);box-shadow:3px 3px 0 #000;position:relative}
.ico::after{position:absolute;inset:0;display:grid;place-items:center;font:20px/1 var(--pixel);color:var(--ink)}
.ico-crown::after{content:"♛"}.ico-scroll{background:var(--paper)}.ico-scroll::after{content:"≡"}
.ico-chest{background:#c9813a}.ico-chest::after{content:"$";color:var(--gold)}
.ico-sword{background:var(--face)}.ico-sword::after{content:"†"}
.ico-coin{background:var(--green);border-radius:50%}.ico-coin::after{content:"◎"}
.ico-dungeon{background:#6d6884}.ico-dungeon::after{content:"▦";color:#1a1333}

/* windows */
.window{background:var(--face);border:3px solid var(--ink);box-shadow:inset 2px 2px 0 var(--hi),inset -2px -2px 0 var(--lo),6px 6px 0 rgba(0,0,0,.55);min-width:0}
.bar{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 8px 7px 10px;background:var(--bar);color:#fff;font:10px/1.4 var(--pixel);letter-spacing:.5px;border-bottom:3px solid var(--ink)}
.bar span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.x{flex:none;width:24px;height:22px;padding:0;font:700 15px/1 var(--sans)}
.pad{padding:18px;background:var(--paper);margin:4px}
.center{text-align:center}
h1,h2{font-family:var(--pixel);margin:0 0 12px;line-height:1.35}
h1{font-size:clamp(20px,3.4vw,34px);color:#4a1fa8;text-shadow:3px 3px 0 var(--gold)}
h2{font-size:14px;color:#4a1fa8}
.eyebrow{font:9px/1.4 var(--pixel);letter-spacing:1px;color:#0c7a5a;margin:0 0 10px}
.small,small{font-size:12px;color:#5a5370}
p{margin:0 0 12px}

button,.btn{font:700 13px/1.2 var(--sans);color:var(--ink);background:var(--face);border:2px solid var(--ink);box-shadow:inset 2px 2px 0 var(--hi),inset -2px -2px 0 var(--lo);padding:9px 14px;cursor:pointer;text-decoration:none;display:inline-block}
button:active,.btn:active{box-shadow:inset -2px -2px 0 var(--hi),inset 2px 2px 0 var(--lo)}
button:focus-visible,.btn:focus-visible,a:focus-visible,canvas:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
button:disabled{color:#8a849c;cursor:not-allowed}
.btn.primary{background:var(--gold)}
button.shortcut{background:none;border:1px dotted transparent;box-shadow:none;color:#fff;font:12px/1.3 var(--sans);padding:6px 2px}
.grid>.window{display:flex;flex-direction:column}.grid>.window>.pad{flex:1}

/* hero */
.hero-body{display:grid;grid-template-columns:minmax(180px,280px) 1fr;gap:24px;align-items:center;padding:22px;margin:4px;background:var(--paper) linear-gradient(135deg,rgba(153,69,255,.12),rgba(20,241,149,.14))}
.portrait{text-align:center}
.sprite{image-rendering:pixelated;image-rendering:crisp-edges;width:100%;max-width:240px;height:auto;aspect-ratio:16/18;background:linear-gradient(#2a1670,#4a1fa8);border:4px solid var(--gold-d);box-shadow:0 0 0 4px var(--gold),6px 6px 0 4px rgba(0,0,0,.4);animation:bob 2.4s steps(2) infinite}
@keyframes bob{50%{transform:translateY(-4px)}}
.plaque{margin:18px auto 0;max-width:240px;padding:6px;background:var(--gold);border:2px solid var(--gold-d);font:9px/1.6 var(--pixel)}
.plaque small{font:11px var(--sans);color:var(--ink)}
.tagline{font-size:19px;font-weight:700}
.cta{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}
.ca{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;background:#fff;border:2px solid var(--ink)}
.ca-label{font:8px/1.4 var(--pixel);color:#4a1fa8;flex-basis:100%}
.ca code{flex:1;min-width:0;overflow-wrap:anywhere;font:13px ui-monospace,Consolas,monospace}
.ca-note{font-size:12px;color:#5a5370;margin:8px 0 0}

/* decree, meters */
blockquote{margin:0 0 16px;font:italic 700 19px/1.4 Georgia,serif;min-height:3.4em;display:grid;place-items:center}
.meter{display:grid;grid-template-columns:1fr auto;gap:2px 8px;margin-bottom:12px}
.meter strong{color:#4a1fa8}
.gauge{grid-column:1/-1;height:16px;background:#fff;border:2px solid var(--ink)}
.gauge i{display:block;height:100%;width:0;background:repeating-linear-gradient(90deg,var(--purple) 0 8px,var(--green) 8px 10px);transition:width .4s steps(8)}

/* steps, ledger, timeline */
.steps{list-style:none;counter-reset:s;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.steps li{counter-increment:s;background:#fff;border:2px solid var(--ink);padding:12px;display:flex;flex-direction:column;gap:6px}
.steps li::before{content:counter(s);font:16px var(--pixel);color:var(--purple)}
.steps span{font-size:13px;color:#4b4463}
.ledger{width:100%;border-collapse:collapse;margin-bottom:12px;background:#fff}
.ledger th,.ledger td{border:1px solid #9a94ad;padding:7px 9px;text-align:left;font-size:13px}
.ledger th{background:#e6e0f5;width:45%;font-weight:700}
.ledger td.tba{color:#8a849c;font-style:italic}
.timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.timeline li{border-top:6px solid var(--purple);background:#fff;padding:10px;display:flex;flex-direction:column;gap:6px;font-size:13px}
.timeline li:nth-child(even){border-color:var(--green)}
.timeline b{font:9px/1.4 var(--pixel);color:#4a1fa8}

/* knight */
form{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-bottom:12px}
form label{flex-basis:100%;font-size:13px}
input{font:14px var(--sans);padding:8px;border:2px solid var(--ink);background:#fff;min-width:0;width:200px}
.title-out{min-height:2.8em;font:700 17px/1.4 Georgia,serif;color:#4a1fa8}

/* game */
.game-hud{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 18px;font:9px/1.6 var(--pixel);margin-bottom:10px}
#game-canvas{image-rendering:pixelated;image-rendering:crisp-edges;width:100%;max-width:960px;height:auto;aspect-ratio:30/17;background:#0d0820;border:3px solid var(--ink);touch-action:none}
.pad-keys{display:flex;justify-content:center;gap:10px;margin:10px 0;touch-action:none;user-select:none}
.pad-keys button{min-width:64px;padding:14px 16px;font-size:16px}.pad-keys .jump{background:var(--gold);margin-left:18px}

.fineprint .pad{font-size:12px;color:#4b4463}.fineprint p{margin:0}

/* taskbar, start menu, dialog */
.taskbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--face);border-top:3px solid var(--ink);box-shadow:inset 0 2px 0 var(--hi)}
.task{padding:8px 14px;border:2px solid var(--ink);box-shadow:inset -2px -2px 0 var(--hi),inset 2px 2px 0 var(--lo);font-size:13px}
.socials{display:flex;gap:6px;margin-left:auto}
.socials a{padding:6px 10px;font-size:12px}
#clock{padding:8px 10px;border:2px solid var(--lo);font-size:12px;white-space:nowrap}
.socials:empty+#clock{margin-left:auto}
.start-menu{position:fixed;left:8px;bottom:52px;z-index:21;width:210px;padding:4px;display:flex;flex-direction:column}
.start-menu[hidden]{display:none}
.start-menu strong{background:var(--bar);color:#fff;font:10px var(--pixel);padding:10px}
.start-menu a,.start-menu button{text-align:left;padding:9px 12px;border:0;box-shadow:none;background:none;color:var(--ink);text-decoration:none;font:400 14px var(--sans)}
.start-menu a:hover,.start-menu button:hover,.start-menu a:focus-visible,.start-menu button:focus-visible{background:var(--purple);color:#fff;outline:none}
dialog{padding:0;border:3px solid var(--ink);background:var(--face);box-shadow:8px 8px 0 rgba(0,0,0,.6);max-width:min(420px,90vw)}
dialog::backdrop{background:rgba(18,11,46,.7)}

@media (max-width:820px){
  .desktop{grid-template-columns:1fr;padding:10px}
  .icons{position:static;flex-direction:row;overflow-x:auto;padding-bottom:6px}
  .shortcut{flex:none;width:78px}
  .grid,.hero-body{grid-template-columns:1fr}
  .steps,.timeline{grid-template-columns:1fr 1fr}
  .task{display:none}
}
@media (max-width:460px){.steps,.timeline{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.sprite{animation:none}.gauge i{transition:none}}
