@font-face{font-family:Alegreya;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/alegreya-500-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/alegreya-500-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya;font-style:italic;font-weight:500;font-display:swap;src:url(/fonts/alegreya-500italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/alegreya-sans-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/alegreya-sans-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/alegreya-sans-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/alegreya-500-700-cyr.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Alegreya;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/alegreya-500-700-cyr.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Alegreya;font-style:italic;font-weight:500;font-display:swap;src:url(/fonts/alegreya-500italic-cyr.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/alegreya-sans-400-cyr.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/alegreya-sans-500-cyr.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/alegreya-sans-700-cyr.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}:root{--base-sky-deep: #131a2e;--base-sky-horizon: #2b3a5e;--base-slate-panel: rgb(19 26 46 / .84);--base-rune-400: #ffb45c;--base-rune-600: #ff7a3d;--base-crystal-300: #7fd7ff;--base-ink-050: #f2ece1;--base-parchment-100: #efe6d3;--base-ink-900: #2a2015;--surface-void: var(--base-sky-deep);--surface-panel: var(--base-slate-panel);--text-color-primary: var(--base-ink-050);--text-color-muted: rgb(242 236 225 / .62);--accent-color: var(--base-rune-400);--accent-color-hot: var(--base-rune-600);--accent-color-cool: var(--base-crystal-300);--border-color-hairline: rgb(255 180 92 / .35);--border-color-soft: rgb(242 236 225 / .16);--surface-parchment: var(--base-parchment-100);--text-color-ink: var(--base-ink-900);--text-color-ink-muted: rgb(42 32 21 / .7);--border-color-ink: rgb(42 32 21 / .18);--font-display: "Alegreya", Georgia, "Times New Roman", serif;--font-ui: "Alegreya Sans", "Trebuchet MS", "Gill Sans", system-ui, sans-serif;--radius-soft: .75rem;--touch-target: max(2.75rem, 44px)}html{font-size:clamp(.9375rem,.875rem + .25vw,1.0625rem);background:var(--surface-void);color-scheme:dark}body{margin:0;font-family:var(--font-ui);color:var(--text-color-primary);background:var(--surface-void);overscroll-behavior:none}#root{position:fixed;inset:0;height:100dvh;width:100vw}canvas{display:block;touch-action:none}.eyebrow-rune:before{content:"◆";display:inline-block;margin-right:.375rem;color:var(--accent-color)}.hud{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between}.hud_top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) 1rem max(1rem,env(safe-area-inset-left))}.hud_top-left{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.hud_bottom{display:flex;justify-content:center;padding:1rem}.hud_hold{position:absolute;left:50%;bottom:110px;transform:translate(-50%);font:500 15px Alegreya Sans,sans-serif;color:#ddd6bd;background:#121c25b0;padding:8px 14px;border-radius:6px;pointer-events:none}.panel{pointer-events:auto;background:var(--surface-panel);border:1px solid var(--border-color-hairline);border-radius:var(--radius-soft);padding:.5rem 1rem;-webkit-backdrop-filter:blur(.5rem);backdrop-filter:blur(.5rem)}.runes{display:flex;gap:.5rem;font-size:1.5rem;line-height:1;letter-spacing:.125rem}.runes_lit{color:var(--accent-color);text-shadow:0 0 1rem var(--accent-color-hot)}.runes_dim{color:var(--text-color-muted)}.keys{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;font-size:.875rem;color:var(--text-color-muted)}.keys_key{font-family:var(--font-ui);font-weight:500;color:var(--text-color-primary);border:1px solid var(--border-color-soft);border-radius:.5rem;padding:0 .5rem}.dev-tools{pointer-events:auto;font-size:.8125rem;color:var(--text-color-muted)}.dev-tools summary{cursor:pointer;color:var(--text-color-muted)}.dev-tools summary:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.dev-tools_actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.button{pointer-events:auto;font-family:var(--font-ui);font-weight:500;font-size:.875rem;color:var(--text-color-primary);background:var(--surface-panel);border:1px solid var(--border-color-hairline);border-radius:var(--radius-soft);padding:.5rem 1rem;cursor:pointer;transition:transform .15s ease,border-color .15s ease}.button:hover{border-color:var(--accent-color)}.button:active{transform:scale(.96)}.button:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.button.is-primary{border-color:var(--accent-color);color:var(--accent-color);font-weight:700}.button.is-disabled{opacity:.45;cursor:not-allowed}.button.is-disabled:hover{border-color:var(--border-color-hairline)}@media(pointer:coarse){.button{min-height:var(--touch-target);min-width:var(--touch-target);padding:.5rem 1.25rem}}.banner{position:absolute;top:18%;left:0;right:0;text-align:center;font-family:var(--font-display);font-weight:700;font-size:2rem;letter-spacing:.125rem;text-transform:uppercase;color:var(--text-color-primary);text-shadow:0 .125rem 1.5rem rgb(9 12 22 / .9);animation:banner-in 2.6s ease forwards;pointer-events:none}@keyframes banner-in{0%{opacity:0;transform:translateY(.5rem)}15%{opacity:1;transform:translateY(0)}75%{opacity:1}to{opacity:0}}.hint{position:absolute;bottom:22%;left:0;right:0;text-align:center;font-family:inherit;font-size:1rem;color:var(--text-color-primary);text-shadow:0 .125rem 1rem rgb(9 12 22 / .9);pointer-events:none;background:none;border:none;padding:0;cursor:default}@media(pointer:coarse){.hint{pointer-events:auto;cursor:pointer;min-height:max(var(--touch-target),44px);display:flex;align-items:center;justify-content:center}}.toast{position:absolute;top:1rem;left:50%;transform:translate(-50%);max-width:min(28rem,90vw);background:var(--surface-panel);border:1px solid var(--accent-color);border-radius:var(--radius-soft);padding:.5rem 1rem;font-size:.875rem;color:var(--text-color-primary);pointer-events:none}.quest-log{box-sizing:border-box;width:100%;max-width:16rem}.quest-log_title{margin:0 0 .25rem;font-family:var(--font-display);font-weight:700;font-size:.9375rem;color:var(--text-color-primary)}.quest-log_step{margin:0 0 .375rem;font-size:.8125rem;line-height:1.4;color:var(--text-color-muted)}.quest-log_progress{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;font-variant-numeric:tabular-nums;color:var(--text-color-muted)}.quest-log_check{color:var(--accent-color);font-weight:700}.tray{flex:none;pointer-events:auto;display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.drawer{width:min(22rem,88vw);max-height:60dvh;overflow-y:auto;background:var(--surface-panel);border:1px solid var(--border-color-hairline);border-radius:var(--radius-soft);padding:.5rem;-webkit-backdrop-filter:blur(.5rem);backdrop-filter:blur(.5rem)}.drawer_eyebrow{margin:.25rem .5rem .5rem;font-size:.8125rem;letter-spacing:.125rem;text-transform:uppercase;color:var(--accent-color)}.list{list-style:none;margin:0;padding:0}.list_row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 .5rem;padding:.5rem;border-bottom:1px solid var(--border-color-soft)}.list_row:last-child{border-bottom:0}.list_title{font-size:.9375rem;color:var(--text-color-primary)}.list_title.is-done{color:var(--accent-color)}.list_hint{grid-column:1;font-size:.8125rem;color:var(--text-color-muted)}.list_count{grid-row:1;grid-column:2;font-size:.8125rem;color:var(--text-color-muted);font-variant-numeric:tabular-nums}.sheet{position:absolute;inset:0;display:grid;place-items:center;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));background:#090c169e;-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem);pointer-events:auto}.sheet_card{box-sizing:border-box;width:100%;max-width:38rem;max-height:84dvh;overflow-y:auto;background:var(--surface-parchment);border:1px solid var(--border-color-ink);border-radius:var(--radius-soft);box-shadow:0 1.5rem 3rem #090c1673;padding:1.5rem}.sheet_eyebrow{margin:0 0 .5rem;font-family:var(--font-ui);font-weight:500;font-size:.8125rem;letter-spacing:.125rem;text-transform:uppercase;color:var(--text-color-ink-muted)}.sheet_eyebrow:before{content:"◆";display:inline-block;margin-right:.375rem;color:var(--accent-color-hot)}.sheet_title{margin:0 0 .5rem;font-family:var(--font-display);font-weight:700;font-size:1.75rem;line-height:1.1;color:var(--text-color-ink)}.sheet_standfirst{margin:0 0 1rem;font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1.125rem;line-height:1.5;color:var(--text-color-ink)}.sheet_body{margin:0 0 1rem;font-size:.9375rem;line-height:1.6;color:var(--text-color-ink-muted)}.facts{margin:0 0 1.5rem;padding:.5rem 0 0;border-top:1px solid var(--border-color-ink)}.facts_row{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:.25rem 1rem;padding:.5rem 0;border-bottom:1px solid var(--border-color-ink)}.facts_row:last-child{border-bottom:0}.facts_label{margin:0;font-family:var(--font-ui);font-weight:500;font-size:.8125rem;letter-spacing:.0625rem;text-transform:uppercase;color:var(--text-color-ink-muted)}.facts_value{margin:0;font-size:.9375rem;color:var(--text-color-ink)}.sheet_actions{display:flex;flex-wrap:wrap;gap:.5rem}.sheet_actions .button{text-decoration:none}a.button{display:inline-flex;align-items:center;justify-content:center}.gate{position:absolute;inset:0;display:grid;place-items:center;padding:max(1.5rem,env(safe-area-inset-top)) max(1.5rem,env(safe-area-inset-right)) max(1.5rem,env(safe-area-inset-bottom)) max(1.5rem,env(safe-area-inset-left));background:linear-gradient(180deg,#131a2e26,#090c168c 55%,#090c16d1);pointer-events:auto}.gate_card{width:min(34rem,100%);text-align:center}.gate_eyebrow{margin:0 0 1rem;font-family:var(--font-ui);font-weight:500;font-size:.875rem;letter-spacing:.375rem;text-transform:uppercase;color:var(--accent-color)}.gate_eyebrow:before{content:"◆";display:inline-block;margin-right:.5rem}.gate_title{margin:0 0 1rem;font-family:var(--font-display);font-weight:700;font-size:1.75rem;line-height:1.1;color:var(--text-color-primary);text-shadow:0 .25rem 2rem rgb(9 12 22 / .85)}@media(min-width:40rem){.gate_title{font-size:2.25rem}}@media(min-width:60rem){.gate_title{font-size:2.75rem}}.gate_text{margin:0 0 1.5rem;font-size:1.0625rem;line-height:1.6;color:var(--text-color-primary);text-shadow:0 .125rem 1rem rgb(9 12 22 / .85)}.gate_actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:1.5rem}.gate_note{margin:0;font-size:.8125rem;color:var(--text-color-primary);text-shadow:0 .125rem 1rem rgb(9 12 22 / .85)}.gate_progress{display:grid;gap:.375rem;margin:0 0 1.5rem}.gate_progress_track{height:.25rem;border:1px solid var(--border-color-hairline);border-radius:var(--radius-soft);background:var(--surface-panel);overflow:hidden}.gate_progress_fill{height:100%;background:var(--accent-color);transition:width .2s ease}.gate_progress_label{margin:0;font-family:var(--font-ui);font-size:.75rem;letter-spacing:.0625rem;color:var(--text-color-muted)}.gate_progress_slow{margin:0;font-size:.75rem;color:var(--accent-color)}@media(min-width:60rem){.gate{justify-items:start;padding-left:6rem}.gate_card{text-align:left}.gate_actions{justify-content:flex-start}}.intro-overlay{position:absolute;inset:0;pointer-events:none}.intro-overlay_title{position:absolute;top:max(1.5rem,env(safe-area-inset-top));left:max(1.5rem,env(safe-area-inset-left));animation:intro-title-fade 7s ease forwards}@keyframes intro-title-fade{0%,28.57%{opacity:1}71.43%,to{opacity:0}}.intro-overlay_skip{position:absolute;right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));pointer-events:auto}.map{position:absolute;right:1rem;bottom:1rem;padding:.5rem;background:var(--surface-panel);border:1px solid var(--border-color-hairline);border-radius:var(--radius-soft);pointer-events:none}.loader{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:1rem;background:var(--surface-void)}.loader_rune{font-size:3rem;color:var(--accent-color);animation:rune-pulse 1.8s ease-in-out infinite}.loader_text{font-family:var(--font-ui);font-weight:500;font-size:.875rem;letter-spacing:.25rem;text-transform:uppercase;color:var(--text-color-muted)}@keyframes rune-pulse{0%,to{opacity:.35;transform:scale(.94)}50%{opacity:1;transform:scale(1.06)}}#ecctrl-joystick{top:auto!important;bottom:max(1rem,env(safe-area-inset-bottom))!important;left:1rem!important;right:auto!important}#ecctrl-virtual-button{top:auto!important;bottom:max(3rem,env(safe-area-inset-bottom))!important;left:auto!important;right:1.5rem!important}#stonewake-roll{position:fixed;z-index:10;bottom:max(3rem,env(safe-area-inset-bottom));right:6.5rem;height:60px;width:60px;min-height:var(--touch-target);min-width:var(--touch-target);border-radius:50%;border:1px solid var(--border-color-hairline);background:var(--surface-panel);color:var(--accent-color);font:700 .75rem var(--font-ui);letter-spacing:.02em;touch-action:none;user-select:none;-webkit-user-select:none;transition:transform .2s cubic-bezier(.25,1.5,.5,1);pointer-events:auto}#stonewake-roll:active{transform:scale(1.12)}@media(max-width:40rem){.toast{top:11rem}}.quality-picker{display:flex;align-items:center;flex-wrap:wrap;gap:.25rem}.quality-picker_option{display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-ui);font-weight:500;font-size:.75rem;color:var(--text-color-muted);background:transparent;border:1px solid var(--border-color-soft);border-radius:.5rem;padding:.25rem .5rem;cursor:pointer}.quality-picker_option:has(.quality-picker_input:checked){color:var(--accent-color);border-color:var(--accent-color)}.quality-picker_option:has(.quality-picker_input:focus-visible){outline:2px solid var(--accent-color);outline-offset:2px}.quality-picker_input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.quality-picker_dpr{font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--text-color-muted)}body[data-case-open=true] #ecctrl-joystick,body[data-case-open=true] #ecctrl-virtual-button,body[data-case-open=true] #stonewake-roll{display:none!important}.wake-gate{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:30;background:linear-gradient(0deg,#121c2588,transparent 60%)}.wake-button{font:500 28px Alegreya,serif;color:#f5dfad;background:#192821e8;border:1px solid #b69d6680;border-radius:50%;width:112px;height:112px;cursor:pointer;box-shadow:0 10px 50px #0b151740;transform:translateY(min(30vh,calc(50vh - 8rem)))}.wake-button:hover{background:#2e4436}.wake-button:focus-visible{outline:3px solid #e8b768;outline-offset:6px}.wake-progress{width:180px;height:2px;background:#c1c7aa33;overflow:hidden}.wake-progress>span{display:block;height:100%;background:#e5c488;transition:width .2s}.wake-content{position:absolute;bottom:28px;color:#ddd6bd;font-size:14px;padding:12px}.wake-loader{display:block;width:160px;height:2px;background:#a8ad9166}body:has(.portfolio){overflow:auto}.portfolio{max-width:780px;margin:0 auto;padding:64px 24px;color:#eee4cf;line-height:1.65;--text-color-ink: var(--text-color-primary);--text-color-ink-muted: var(--text-color-muted);--border-color-ink: var(--border-color-soft)}.portfolio h1{font-size:clamp(2.2rem,6vw,4rem);line-height:1.05}.portfolio h2{font-size:2rem;line-height:1.2}.portfolio nav{display:flex;flex-wrap:wrap;gap:8px 24px;margin:24px 0}.portfolio nav a{color:#ffb266;padding:10px 0;min-height:44px}.portfolio article{border-top:1px solid #ffb26633;padding:48px 0;scroll-margin-top:24px}.portfolio p,.portfolio dd{overflow-wrap:anywhere}
