.page{height:var(--app-height,100dvh);transform:translateY(var(--app-offset,0));position:fixed;inset:0}.shell{background:radial-gradient(ellipse at 50% -20%, var(--glow), transparent 60%), var(--bg);grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-columns:minmax(0,1fr);width:100%;height:100%;transition:background-color .3s;display:grid;position:relative}.shell__header{border-bottom:1px solid var(--line);background:var(--bar);color:var(--muted);align-items:center;gap:8px 14px;padding:10px clamp(13px,2.4vw,32px);font-size:.875rem;display:flex}.shell__title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.shell__dots{gap:7px;display:flex}.shell__dots span{border:1px solid var(--line);border-radius:50%;width:10px;height:10px}.shell__dots span:first-child{background:color-mix(in srgb, var(--red) 70%, transparent)}.shell__dots span:nth-child(2){background:color-mix(in srgb, var(--amber) 70%, transparent)}.shell__dots span:nth-child(3){background:color-mix(in srgb, var(--green) 70%, transparent)}.shell__appearance{flex:none;align-items:center;gap:9px;margin-left:auto;display:flex}.shell__appearance>span{align-items:center;gap:9px;display:flex}.shell__appearance button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:3px 0}.shell__appearance button:hover{color:var(--text)}.shell__appearance button[aria-pressed=true]{color:var(--green);text-underline-offset:5px;text-decoration:underline}.shell__body{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent;scrollbar-gutter:stable;cursor:text;padding:26px clamp(13px,2.4vw,32px) 32px;overflow:hidden auto}.shell__body::-webkit-scrollbar{width:10px}.shell__body::-webkit-scrollbar-track{background:0 0}.shell__body::-webkit-scrollbar-thumb{background:var(--line) padding-box;border:3px solid #0000;border-radius:10px}.shell__body::-webkit-scrollbar-thumb:hover{background:var(--muted) padding-box}.shell__motd{color:var(--muted);margin:0 0 24px;font-size:.875rem}.shell__jump{border:1px solid var(--line);background:var(--bar);color:var(--green);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:.875rem;animation:.2s ease-out rise;position:absolute;bottom:56px;right:clamp(18px,3vw,40px);box-shadow:0 6px 20px #00000040}.shell__touch{display:none}.shell__status{border-top:1px solid var(--line);background:var(--bar);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 18px;padding:8px clamp(13px,2.4vw,32px);font-size:.8125rem;display:flex}.shell__mode{color:var(--green)}.shell__hints{flex:1}.shell__meters{gap:16px;display:flex}.shell__meters .is-unlocked{color:var(--green)}.shell__meters .is-locked{color:var(--amber)}.entry{margin-bottom:22px}.entry__command{overflow-wrap:anywhere;flex-wrap:wrap;gap:0 8px;font-size:.9375rem;display:flex}.entry__typed{white-space:pre-wrap}.entry__output{padding-top:8px;animation:.25s ease-out appear}.prompt-label{white-space:nowrap}.prompt-label__user{color:var(--green)}.prompt-label__path{color:var(--blue)}.prompt-label__sign{color:var(--muted);margin-left:8px}.out{white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 8px;font-size:.9375rem}.out--muted{color:var(--muted)}.out--success{color:var(--green)}.out--warning{color:var(--amber)}.out--error{color:var(--red)}.cmd{color:var(--green);font-size:inherit;text-align:left;cursor:pointer;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;border:0;padding:0;transition:background-size .2s ease-out,transform .1s ease-out}.cmd:hover,.cmd:focus-visible{background-size:100% 1px}.cmd:active{transform:translateY(1px)}.commands{flex-wrap:wrap;gap:4px 16px;display:flex}.entry--boot .entry__command{animation:show 0s var(--boot-delay) backwards}.entry--boot .entry__typed{vertical-align:bottom;animation:type .22s steps(var(--boot-chars), end) var(--boot-delay) backwards;display:inline-block;overflow:hidden}.entry--boot .entry__output{--output-delay:calc(var(--boot-delay) + .25s)}.reveal{animation:rise .32s cubic-bezier(.2, .7, .3, 1) calc(var(--output-delay,0s) + var(--i,0) * 40ms) backwards}.intro__avatar.reveal{animation-name:pop;animation-duration:.45s}.intro__name.reveal{animation-name:wipe;animation-duration:.4s}.shell--booted .entry--boot :is(.entry__command,.entry__typed,.reveal){animation:none}.intro__head{align-items:center;gap:16px;margin-bottom:12px;display:flex}.intro__avatar{flex:none;width:72px;height:72px;transition:transform .35s cubic-bezier(.3,1.6,.5,1)}.intro__head:hover .intro__avatar{transform:rotate(-4deg)scale(1.06)}.intro__name{letter-spacing:-.8px;margin:4px 0 2px;font-size:clamp(1.5rem,3vw,2rem);font-weight:500;line-height:1.35}.intro p{margin:0 0 12px;font-size:.9375rem}.intro__nickname{color:var(--muted);letter-spacing:0;white-space:nowrap;font-size:.55em;font-weight:400}.intro__role,.intro__secondary{color:var(--muted)}.intro__head .intro__role{margin:0}.intro__line{display:block}.files{flex-wrap:wrap;gap:8px 26px;margin:0;padding:0;font-size:.9375rem;list-style:none;display:flex}.files__item--file{color:var(--text)}.files__item--directory{color:var(--blue)}.files__item--locked{color:var(--amber)}.games{flex-direction:column;gap:4px;max-width:640px;margin:0;padding:0;list-style:none;display:flex}.games__item{flex-wrap:wrap;align-items:baseline;gap:4px 22px;width:100%;padding:5px 0;display:flex}.games__description{color:var(--muted);font-size:.875rem}.games__item,.games__item:hover{background:0 0}.games__name{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;min-width:22ch;transition:background-size .2s ease-out,transform .2s ease-out}.games__item:is(:hover,:focus-visible) .games__name{background-size:100% 1px;transform:translate(4px)}.help{gap:14px;font-size:.9375rem;display:grid}.help__group{grid-template-columns:11ch 1fr;gap:0 16px;display:grid}.help__title{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:.875rem;font-weight:400}.help__list{margin:0}.help__row{grid-template-columns:minmax(16ch,max-content) 1fr;gap:0 18px;display:grid}.help__row dd{color:var(--muted);margin:0}.help__shortcuts{color:var(--muted);flex-wrap:wrap;gap:4px 18px;margin:0;font-size:.875rem;display:flex}kbd{border:1px solid var(--line);background:var(--bar);color:var(--text);font:inherit;border-radius:4px;padding:0 5px}.pending{align-items:center;gap:8px;display:inline-flex}.pending__spinner:before{content:"⠋";color:var(--green);animation:.8s step-end infinite spin}.game__bar{margin-bottom:4px;font-size:.875rem}.game__bar-fill{color:var(--green);letter-spacing:-1px}.plot{width:100%;margin:8px 0 6px;display:block}.plot--wide{max-width:420px;height:auto}.plot--square{max-width:240px;height:auto}.plot__grid{stroke:var(--line);stroke-width:.5px;opacity:.6}.plot__axis{stroke:var(--line);stroke-width:1px}.plot__curve{fill:none;stroke:var(--muted);stroke-dasharray:3 3;stroke-width:1px}.plot__path{fill:none;stroke:var(--green);stroke-width:1.5px;opacity:.8}.plot__trail{fill:var(--green);opacity:.5}.plot__point{fill:var(--green);filter:drop-shadow(0 0 4px var(--green))}.plot__vector{stroke:var(--blue);stroke-width:1.5px}.plot__target{fill:none;stroke:var(--amber);stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:1.8s ease-in-out infinite pulse}.plot__flag{stroke:var(--amber);stroke-width:1.5px}.plot__flag-cloth{fill:var(--amber)}.matrix{border-collapse:collapse;font-variant-numeric:tabular-nums;table-layout:fixed;width:100%;max-width:340px;margin:6px 0 10px;font-size:.9375rem}.matrix caption{color:var(--muted);text-align:left;padding-bottom:5px;font-size:.8125rem}.matrix th{border-bottom:1px solid var(--line);color:var(--muted);font-weight:400}.matrix th,.matrix td{text-align:right;overflow-wrap:anywhere;padding:3px 12px}.matrix th:last-child,.matrix td:last-child{border-left:1px solid var(--line)}.matrix__pivot{background:var(--bar);color:var(--green);outline:1px solid var(--green);outline-offset:-1px}.fetch{flex-wrap:wrap;gap:8px 32px;font-size:.9375rem;display:flex}.fetch__art{color:var(--green);font:inherit;margin:0;line-height:1.45}.fetch__title{color:var(--green)}.fetch__rule{color:var(--line)}.fetch dl{margin:0}.fetch__row{gap:12px;display:flex}.fetch__row dt{min-width:11ch;color:var(--blue)}.fetch__row dd{margin:0}.fetch__swatches{letter-spacing:-1px;margin-top:8px}.challenge,.verify,.contact{border:1px dashed var(--line);background:color-mix(in srgb, var(--bar) 80%, transparent);border-radius:4px;max-width:520px;margin:4px 0 10px;font-size:.9375rem}.challenge__head,.verify__head{border-bottom:1px dashed var(--line);color:var(--amber);flex-wrap:wrap;justify-content:space-between;gap:4px 12px;padding:7px 14px;font-size:.875rem;display:flex}.challenge__prompt{white-space:pre-wrap;overflow-wrap:anywhere;padding:12px 14px}.challenge__foot{color:var(--muted);flex-wrap:wrap;gap:4px 18px;padding:0 14px 10px;font-size:.875rem;display:flex}.challenge--closed{opacity:.55}.verify__widget{padding:12px 14px}.verify__failure{flex-wrap:wrap;gap:4px 16px;padding:0 14px 12px;font-size:.875rem;display:flex}.verify--done,.verify--closed{color:var(--muted);padding:8px 14px}.verify--done{color:var(--green)}.contact{border-style:solid;border-color:color-mix(in srgb, var(--green) 45%, var(--line));padding:10px 14px}.contact__row{flex-wrap:wrap;gap:2px 16px;display:flex}.contact__row dt{min-width:9ch;color:var(--blue)}.contact__row dd{overflow-wrap:anywhere;flex-wrap:wrap;gap:2px 14px;margin:0;display:flex}.contact a{color:var(--text);-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:4px}.contact a:hover{color:var(--green);text-decoration-color:currentColor}.contact__copy{color:var(--muted);font-size:.875rem}.actions{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;display:flex}.chip{border:1px solid var(--line);min-height:32px;color:var(--green);cursor:pointer;background:0 0;border-radius:4px;padding:4px 11px;font-size:.875rem;transition:background-color .15s,border-color .15s}.chip:hover{border-color:var(--green);background:var(--bar)}.chip[aria-pressed=true]{border-color:var(--green);background:var(--glow)}.chip[aria-pressed=true]:disabled{border-color:var(--green);background:var(--glow);color:var(--green);opacity:1}.chip:disabled{border-color:var(--line);color:var(--muted);cursor:default;opacity:.55;background:0 0}.chip--primary{border-color:var(--green);background:var(--glow);font-weight:500}.chip__hint{color:var(--muted);font-size:.8125rem}.chip--input{width:9ch;color:var(--text);cursor:text}.chip--input::placeholder{color:var(--muted)}.dock{overscroll-behavior:contain;border:1px solid var(--line);background:var(--bg);width:min(640px,100vw - 32px);max-width:none;max-height:calc(100dvh - 48px);color:var(--text);border-radius:10px;margin:auto;padding:0;overflow:auto;box-shadow:0 24px 64px #00000073}.dock[open]{animation:.22s ease-out window-in}.dock::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c}.dock__head{z-index:1;border-bottom:1px solid var(--line);background:var(--bar);align-items:center;gap:12px;padding:8px 8px 8px 16px;font-size:.875rem;display:flex;position:sticky;top:0}.dock__title{color:var(--text);font-size:inherit;margin:0;font-weight:500}.dock__progress{color:var(--muted)}.dock__close{min-width:36px;min-height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;margin-left:auto;padding:2px 8px}.dock__close:hover,.dock__close:focus-visible{background:var(--bar);color:var(--text)}.dock__body{padding:12px 16px 14px}.dock__body .plot{margin-top:4px}.dock__body .plot--wide{max-width:100%}.dock__body .plot--square{max-width:280px;margin-inline:auto}.dock__controls{flex-wrap:wrap;gap:8px 18px;margin-top:8px;display:flex}.dock__group{border:0;flex-wrap:wrap;align-items:center;gap:6px;min-inline-size:0;margin:0;padding:0;display:flex}.dock__label{float:left;color:var(--muted);padding:0;font-size:.875rem}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.dock__result{margin:10px 0 0}.dock__step-title{color:var(--text);margin:0 0 2px}.dock__steps{gap:4px;margin:0 0 10px;padding:0;list-style:none;display:flex}.dock__steps li{background:var(--line);border-radius:2px;width:18px;height:4px;transition:background-color .2s}.dock__steps li.is-done{background:var(--green)}.dock__keys{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;gap:4px 14px;margin:0;padding:6px 14px;font-size:.8125rem;display:flex}.dock__keys kbd{border:1px solid var(--line);font:inherit;border-radius:3px;padding:0 5px}.plot__preview line{stroke:var(--green);stroke-dasharray:3 3;stroke-width:1px;opacity:.7}.plot__preview circle{fill:none;stroke:var(--green);stroke-dasharray:2 2;stroke-width:1.5px}.prompt__form{align-items:center;gap:8px;min-width:0;font-size:.9375rem;display:flex}.prompt__label{white-space:nowrap}.prompt__field{flex:1;min-width:0;height:1.75em;position:relative}.prompt__mirror,.prompt__input{font:inherit;letter-spacing:0;white-space:pre;border:0;margin:0;padding:0;position:absolute;inset:0}.prompt__mirror{pointer-events:none;overflow:hidden}.prompt__input{color:#0000;-webkit-text-fill-color:transparent;caret-color:#0000;width:100%;box-shadow:none;appearance:none;background:0 0;outline:none}.prompt__input:focus,.prompt__input:focus-visible{outline:none}.prompt__input::selection{background:var(--selection);-webkit-text-fill-color:transparent}.prompt__cursor{outline:1px solid var(--muted);outline-offset:-1px;min-width:1ch;color:inherit;line-height:1.4;display:inline-block}.prompt__field.is-focused .prompt__cursor{background:var(--green);color:var(--bg);outline:none;animation:1.1s step-end .5s infinite blink}.prompt__cursor--ghost{color:var(--muted)}.prompt__ghost{color:var(--muted);opacity:.6}.prompt__enter{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px 8px}.prompt__enter:hover{color:var(--green)}.prompt__candidates{flex-wrap:wrap;gap:4px 18px;padding-top:6px;font-size:.875rem;display:flex}@media (max-width:600px),(pointer:coarse){.dock__keys{display:none}.shell__touch{border-top:1px solid var(--line);background:var(--bar);justify-content:space-between;gap:4px;padding:2px clamp(8px,2vw,24px);display:flex}.shell__touch button{min-width:44px;min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:1;padding:8px;font-size:.9375rem}.shell__touch button:active{color:var(--green)}.shell__hints{display:none}.shell__appearance button,.prompt__enter{min-width:44px;min-height:44px}.chip,.games__item{min-height:44px}.shell__jump{bottom:180px}}@media (max-width:600px){.dock{border-width:1px 0 0;border-radius:0;width:100%;max-height:92dvh;margin:auto 0 0}.dock[open]{animation:.28s cubic-bezier(.2,.8,.3,1) sheet-in}.dock__body{padding:10px 14px calc(14px + env(safe-area-inset-bottom))}.dock__body .plot--square{max-width:240px}.dock__controls{gap:8px}.shell__body{padding-top:20px;padding-bottom:0}.prompt{z-index:1;border-top:1px solid var(--line);background:var(--bg);margin-inline:calc(-1*clamp(13px,2.4vw,32px));padding:6px clamp(13px,2.4vw,32px) 10px;position:sticky;bottom:0}.shell__motd-extra{display:none}.shell__status{font-size:.75rem}.shell__meters{gap:12px}.entry__command,.prompt__form{font-size:.875rem}.prompt__form{flex-wrap:wrap;gap:0 8px}.prompt__label{flex-basis:100%}.prompt__field{height:44px;font-size:16px}.prompt__mirror,.prompt__input{line-height:44px}.help__group{grid-template-columns:1fr}.help__row{grid-template-columns:1fr;margin-bottom:4px}.games__description{flex-basis:100%;font-size:.8125rem}.intro__line{display:inline}.intro__line+.intro__line:before{content:" "}.intro__secondary .intro__line{display:block}.intro__secondary .intro__line:before{content:none}}@media (max-width:400px){.matrix th,.matrix td{padding:3px 6px;font-size:.875rem}}@keyframes blink{50%{color:inherit;background:0 0}}@keyframes type{0%{width:0}to{width:calc(var(--boot-chars) * 1ch)}}@keyframes show{0%{opacity:0}}@keyframes window-in{0%{opacity:0;transform:translateY(12px)scale(.98)}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes pop{0%{opacity:0;transform:scale(.8)rotate(-6deg)}70%{transform:scale(1.04)rotate(1deg)}}@keyframes wipe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes appear{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}@keyframes pulse{50%{opacity:.6;transform:scale(1.25)}}@keyframes spin{0%{content:"⠋"}10%{content:"⠙"}20%{content:"⠹"}30%{content:"⠸"}40%{content:"⠼"}50%{content:"⠴"}60%{content:"⠦"}70%{content:"⠧"}80%{content:"⠇"}90%{content:"⠏"}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation-duration:0s!important;animation-delay:0s!important}.prompt__field.is-focused .prompt__cursor{animation:none}}
