@font-face{font-family:MudskyTerm;src:url("/fonts/VT323-Regular.ttf") format("truetype");font-display:swap}
:root{--term-font:26px;--term-row:30px;--term-gutter:2ch;font-size:var(--term-font);line-height:var(--term-row);color-scheme:dark;--void:#080d0b;--ink:#e2ede5;--accent:#b8e9a3;--cold:#a8dace;--muted:#9dab9f;--line:#293a2e;--glow:#91d29a35;font-family:MudskyTerm,ui-monospace,monospace;background:var(--void);color:var(--ink)}
*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{background:var(--void);text-shadow:0 0 4px var(--glow)}[hidden]{display:none!important}button,input,select{font:inherit;color:inherit}button,a,select,input{touch-action:manipulation}a{color:var(--accent);text-underline-offset:4px}button{cursor:pointer;border:0;background:none;min-height:44px;min-width:44px;padding:8px 12px;color:var(--accent)}button:hover,a:hover{color:var(--ink)}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus-visible{background:#b8e9a312}
#world{height:var(--viewport-height,100dvh);display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;position:relative;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overflow:hidden}
.readout{display:flex;align-items:center;gap:20px;padding:0 clamp(12px,3vw,40px);min-width:0;min-height:48px;font-size:var(--term-font);color:var(--muted)}.wordmark{text-decoration:none;letter-spacing:.16em;color:var(--accent)}#connection{flex:1;min-width:0;margin:0;overflow-wrap:anywhere}.readout nav{display:flex;gap:4px}.readout button{font-size:var(--term-font);padding-inline:8px;color:var(--muted)}[data-connected=true] #connection{color:var(--cold)}
#surface{position:relative;min-height:0;padding:clamp(10px,2vh,24px) clamp(12px,3vw,40px);overflow:hidden}#terminal{height:100%;width:100%;text-shadow:0 0 4px var(--glow)}.xterm{height:100%}.xterm .xterm-viewport{background:var(--void)!important;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.xterm .xterm-screen{max-width:100%}#letters{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#world::after,dialog::after{content:"";pointer-events:none;position:absolute;inset:0;z-index:5;background:repeating-linear-gradient(0deg,transparent 0 2px,#00000022 2px 3px),radial-gradient(ellipse at center,transparent 45%,#00000055 100%);opacity:.65}
#command-form{margin:0;padding:6px clamp(12px,3vw,40px) 8px;border-top:1px solid var(--line)}.command-row{display:flex;gap:12px;align-items:center;min-height:44px}.prompt{font-size:var(--term-font);color:var(--accent)}#command{border:0;border-radius:0;outline-offset:-2px;background:transparent;flex:1;min-width:0;min-height:44px;font-size:var(--term-font);padding:8px 0;caret-color:var(--accent)}#send{font-size:var(--term-font);min-width:44px}.command-note{display:flex;align-items:center;min-height:22px;gap:12px}#input-help{margin:0;flex:1;min-width:0;color:var(--muted);font-size:var(--term-font);line-height:var(--term-row)}#latest{padding:0 8px;font-size:var(--term-font)}
dialog{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;border:0;border-radius:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);color:var(--ink);background:var(--void);overflow:auto}.sheet{max-width:880px;margin:auto;padding:24px clamp(20px,5vw,56px) 48px;font-size:var(--term-font);line-height:var(--term-row)}.sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.sheet h2{font:inherit;font-size:var(--term-font);color:var(--accent);margin:0}.sheet h3{font:inherit;color:var(--cold);margin:28px 0 12px}.sheet .lead{font-size:var(--term-font);color:var(--cold)}.sheet-heading button{white-space:nowrap;font-size:var(--term-font)}.commands{display:grid;grid-template-columns:minmax(220px,1fr) 1.6fr;gap:16px 24px}.commands dt{color:var(--accent)}.commands dd{margin:0;color:var(--ink)}.sheet p{overflow-wrap:anywhere}.muted{font-size:var(--term-font);color:var(--muted)}.account-tools,.preferences{display:grid;gap:16px;margin:16px 0}.preferences label,.account-tools label{display:flex;align-items:center;gap:14px;min-height:44px}.preferences label:has(select){justify-content:space-between}.preferences select{font:inherit;border:1px solid var(--line);border-radius:0;background:var(--void);min-height:44px;min-width:160px;padding:8px 12px}.sheet input[type=checkbox]{width:22px;height:22px;accent-color:var(--accent)}.sheet button{justify-self:start;padding-left:0;text-align:left}.connection-tools{display:flex;gap:24px}.sheet footer{font-size:var(--term-font);color:var(--muted);padding-top:24px;margin-top:32px;border-top:1px solid var(--line)}#credentials{font-size:var(--term-font);color:var(--ink)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
[data-palette=amber]{--ink:#f2e7d6;--accent:#f4cd8f;--cold:#e4d1ad;--glow:#dcac6933}[data-palette=ice]{--ink:#e2eaf0;--accent:#add9ed;--cold:#c4c4e8;--glow:#9ac8ee33}[data-palette=plain]{--ink:#e2ede5;--accent:#e2ede5;--cold:#e2ede5;--glow:transparent}[data-palette=plain] #world::after,[data-palette=plain] dialog::after{display:none}[data-motion=reduced] #letters{display:none}@media(prefers-reduced-motion:reduce){#letters{display:none}}
@media(max-width:600px){.readout{gap:12px;min-height:44px}.readout nav{gap:0}.readout button{font-size:var(--term-font)}.wordmark{font-size:var(--term-font);letter-spacing:.1em}#connection{font-size:var(--term-font)}#surface{padding-top:8px;padding-bottom:8px}#command{font-size:var(--term-font)}.commands{grid-template-columns:1fr;gap:4px}.commands dd{margin-bottom:16px}.sheet{padding-top:16px;font-size:var(--term-font)}.sheet-heading{gap:12px}.sheet h2{font-size:var(--term-font)}.sheet .lead{font-size:var(--term-font)}#input-help{font-size:var(--term-font)}}@media(max-height:420px){#surface{padding-block:4px}#command-form{padding-block:0}.command-note{min-height:16px}#input-help{font-size:var(--term-font)}}

#world{top:var(--viewport-top,0px);box-shadow:inset 0 0 80px #00000050;border:1px solid #22332a}
#entry{position:absolute;inset:0;z-index:2;overflow:auto;background:var(--void);padding:16px 24px 24px;display:flex;flex-direction:column;align-items:center;justify-content:safe center;font-size:var(--term-font);line-height:var(--term-row)}
.entry-screen{width:min(100%,720px);margin:auto;text-align:center}
#launch-mark{width:min(100%,600px,calc((var(--viewport-height,100dvh) - 400px)*1.4286));margin:0 auto 12px}
#opening-art{display:block;width:100%;height:auto;aspect-ratio:10/7;user-select:none}
#entry p{margin:0 0 12px}#entry .world-line{font-size:var(--term-font);letter-spacing:.12em;color:var(--cold);margin-bottom:24px}
#signin,#welcome{max-width:540px;margin:auto}#entry .entry-heading{color:var(--accent);font-size:var(--term-font);margin-bottom:14px}
#login-form label{display:block;text-align:left;color:var(--cold);font-size:var(--term-font);margin-bottom:4px}
.entry-prompt{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);min-height:52px;text-align:left;color:var(--accent);padding:0 8px}
.entry-prompt input{flex:1;min-width:0;min-height:50px;border:0;border-radius:0;background:transparent;font-size:var(--term-font);padding:4px 0;color:var(--ink);caret-color:var(--accent);outline-offset:-2px}
.entry-prompt input::placeholder{color:var(--muted);opacity:1}.entry-prompt:focus-within{border-color:var(--accent)}.entry-prompt button{font-size:var(--term-font);padding-inline:8px;white-space:nowrap}
#login-form,#entry-command-form{margin:0 0 12px}#entry .muted,#entry-credit{font-size:var(--term-font);color:var(--muted)}#entry #entry-credit{margin:24px 0 0;font-size:var(--term-font)}
#welcome-identity,#identity{overflow-wrap:anywhere}#welcome-identity{font-size:var(--term-font);color:var(--cold)}#login-status{font-size:var(--term-font);color:var(--cold);margin-top:12px!important}#login-status:empty{display:none}
#command::placeholder{color:var(--muted);opacity:1}#command:focus{outline:1px solid var(--line)}#command-form:focus-within{border-top-color:var(--accent)}
.entry-leaving{animation:terminal-depart .34s steps(8,end) forwards;pointer-events:none} @keyframes terminal-depart{0%{filter:brightness(1.3);opacity:1;transform:translateY(0)}50%{filter:brightness(1.6);opacity:.6;transform:translateY(6px)}100%{filter:brightness(1);opacity:0;transform:translateY(18px)}}
[data-palette=plain]{text-shadow:none}[data-palette=plain] #world{box-shadow:none}[data-motion=reduced] .entry-leaving{animation:none}
@media(max-width:600px){#entry{padding:8px 18px 24px;font-size:var(--term-font)}#launch-mark{width:min(100%,390px);margin-bottom:14px}#entry .world-line{font-size:var(--term-font);letter-spacing:.06em;margin-bottom:22px}.readout{padding-inline:12px;gap:8px}.readout button{padding-inline:4px;font-size:var(--term-font)}.wordmark{font-size:var(--term-font)}#connection{font-size:var(--term-font)}.readout nav{gap:0}.entry-prompt{gap:8px;padding-inline:4px}.entry-prompt input{font-size:var(--term-font)}.entry-prompt button{font-size:var(--term-font);padding-inline:4px}#entry #entry-credit{font-size:var(--term-font)}.sheet code{overflow-wrap:anywhere}}
@media(max-height:650px){#entry{padding-block:8px}#launch-mark{width:min(100%,360px,calc((var(--viewport-height,100dvh) - 340px)*1.4286))}#entry .world-line{margin-bottom:12px}#entry p{margin-bottom:8px}#entry #entry-credit{margin-top:12px}}
@media(max-height:450px){#launch-mark,#entry .world-line,#entry-credit{display:none}#entry{justify-content:safe center}.entry-screen{margin:auto}}
@media(prefers-reduced-motion:reduce){.entry-leaving{animation:none}}

.departure{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}

#entry-invitation{display:block;width:100%;min-height:44px;padding:0 8px;text-align:center}

#surface{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
#terminal{min-width:0}
.command-note{flex-wrap:wrap}
#command-prompt{display:inline-block;min-width:12px}.prompt-send{animation:prompt-send .22s ease-out}@keyframes prompt-send{0%{transform:translateX(6px);color:var(--cold)}100%{transform:none;color:var(--accent)}}
[data-motion=reduced] .prompt-send{animation:none}
@media(prefers-reduced-motion:reduce){.prompt-send{animation:none}}

/* A command line and a small optional row; the world keeps the rest of the screen. */
#quick-commands{display:flex;gap:4px;justify-content:center;border-top:1px dotted var(--line);margin-top:4px}
#quick-commands button{flex:1;max-width:90px;font-size:var(--term-font);padding:4px;min-height:44px}
#commands-open{white-space:nowrap;font-size:var(--term-font);padding:0 8px 0 0;color:var(--cold)}
.command-buttons{display:flex;flex-wrap:wrap;gap:4px 18px}.command-buttons button{font-size:var(--term-font);min-height:44px;min-width:64px}
.command-buttons button::before{content:'[ ';color:var(--muted)}.command-buttons button::after{content:' ]';color:var(--muted)}
.dialog-letters{position:absolute;left:0;width:100%;height:100%;pointer-events:none;z-index:4}
@media(max-width:600px){.command-note{gap:0 6px}#input-help{line-height:var(--term-row);flex-basis:100%;padding-bottom:4px}#commands-open{font-size:var(--term-font)}.command-buttons{gap:4px 12px}}
@media(max-height:500px){#quick-commands{display:none}#input-help{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#commands-open{min-height:44px}}

/* Transparent screen-reader rows must not inherit visible phosphor shadows. */
.xterm-accessibility,.xterm-accessibility *,.xterm-message,.xterm-message *{text-shadow:none!important}


/* The transcript and surrounding interface share one character size and row. */
.readout,#surface,#command-form{padding-inline:var(--term-gutter)}
.readout{gap:2ch;min-height:var(--term-row);padding-block:calc(var(--term-row)/2)}
.wordmark{letter-spacing:0}.readout nav{gap:1ch}.readout button{padding:0;min-width:0;min-height:var(--term-row)}
#surface{padding-block:calc(var(--term-row)/2);gap:calc(var(--term-row)/2)}
#command-form{padding-block:calc(var(--term-row)/2)}
.command-row{gap:1ch;min-height:var(--term-row)}
#command-prompt{width:1ch;min-width:1ch}#command{padding:0;min-height:var(--term-row);line-height:var(--term-row)}
#send,#latest{padding:0;min-width:3ch;min-height:var(--term-row)}
.command-note{gap:0 2ch;min-height:var(--term-row);align-items:baseline}
#commands-open{padding:0;min-height:var(--term-row);white-space:nowrap}
#input-help{line-height:var(--term-row);padding:0}
#quick-commands{gap:1ch;margin-top:0}#quick-commands button{padding:0;min-height:var(--term-row)}
.sheet{padding:var(--term-row) var(--term-gutter)}.sheet-heading{margin-bottom:var(--term-row)}
@media(max-width:600px){:root{--term-gutter:1ch}.readout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0 1ch}.readout nav{grid-column:2;grid-row:1;justify-content:flex-end;flex-wrap:wrap;gap:0 1ch}#connection{grid-column:1 / -1;grid-row:2}.command-note{gap:0 1ch}#input-help{flex-basis:100%}}
@media(pointer:coarse){.readout button,#command,#send,#latest,#commands-open,#quick-commands button{min-height:44px}}

/* Rich terminal ink, sharing the transcript's palette and character grid. */
#prompt-vitals{white-space:nowrap;line-height:var(--term-row)}
.stat-hp{color:var(--hp-ink)}.stat-mana{color:var(--mana-ink)}.stat-move{color:var(--move-ink)}.stat-divider{color:var(--muted)}
#command-prompt,#send{color:var(--command-ink)}#command{color:var(--ink);caret-color:var(--command-ink)}
@media(max-width:800px){.command-row{flex-wrap:wrap}#prompt-vitals{flex-basis:100%}#command{flex-basis:calc(100% - 10ch)}}
