@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2)format("woff2"),url(/assets/space-grotesk-latin-400-normal-BnQMeOim.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2)format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff)format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2)format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff")}.contact-form-area{margin-bottom:28px}.direct-email{color:#d7e6c7;background:#263f37;border:1px solid #536c55;border-radius:5px;align-items:center;gap:12px;padding:17px;font-size:16px;display:flex}.direct-email svg:last-child{margin-left:auto}.contact-availability{color:#c3d3ba;margin:17px 0;font-size:12px;line-height:1.7}.contact-form-area fieldset{border:0;min-width:0;margin:0;padding:0}.contact-fields{grid-template-columns:1fr 1fr;gap:16px;display:grid}.contact-form-area label{color:#d7e0d0;margin-bottom:8px;font-size:12px;display:block}.contact-form-area input:not([type=checkbox]),.contact-form-area textarea{color:#e5ecdf;resize:vertical;background:#102226;border:1px solid #61726c;border-radius:4px;width:100%;margin:0 0 17px;padding:11px 12px;font:13px Space Grotesk,sans-serif;display:block}.contact-form-area input:disabled,.contact-form-area textarea:disabled{color:#bbc7bc;cursor:not-allowed;background:#1a2c2f}.contact-form-area textarea::placeholder{color:#9aada4}.contact-form-area input:focus-visible,.contact-form-area textarea:focus-visible{outline-offset:2px;outline:2px solid #c8dab2}.contact-form-area .contact-consent{align-items:flex-start;gap:9px;font-size:11px;line-height:1.6;display:flex}.contact-consent input{accent-color:#c4d6af;flex-shrink:0;width:16px;height:16px;margin:1px 0 0}.contact-privacy,.contact-fine-print{color:#aabbb1;font-size:10px;line-height:1.8}.contact-privacy{margin:12px 0 18px}.contact-fine-print{margin-top:12px}.contact-submit:disabled{opacity:1;color:#c0cbbb;cursor:not-allowed;background:#3b5048;border:1px solid #53665b}.contact-honeypot{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.contact-error{color:#f0c1ae;border-left:2px solid #bb917d;padding-left:12px;font-size:12px;line-height:1.7}.turnstile-slot{max-width:100%;min-height:65px;margin-bottom:16px}.contact-fine-print{max-width:460px}@media (width<=500px){.contact-fields{grid-template-columns:1fr;gap:0}.direct-email{padding:14px;font-size:14px}.contact-form-area textarea{min-height:120px}.contact-form-area .contact-consent{font-size:11px}}.dialog-overlay{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);z-index:20;background:#030e17ba;position:fixed;inset:0}.portfolio-dialog{z-index:21;overscroll-behavior:contain;color:#e2e8dd;scrollbar-color:#607866 #17272b;background:#17272b;border:1px solid #51675f;border-radius:10px;width:min(680px,100% - 36px);max-height:85dvh;padding:27px 34px 32px;position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%);box-shadow:0 30px 100px #020a14aa}.dialog-top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:21px;display:flex}.dialog-place{font:10px var(--mono);color:#bbcbaf;align-items:center;gap:9px;display:flex}.icon-button{background:#263c3d;border:1px solid #45605a;border-radius:50%;flex-shrink:0;place-items:center;width:34px;height:34px;display:grid}.icon-button:hover{background:#3a5149}.portfolio-dialog h2{letter-spacing:-1.5px;margin:0 0 15px;font-size:38px;font-weight:500;line-height:1.1}.dialog-intro{color:#afbeb7;max-width:500px;margin:0;font-size:14px;line-height:1.7}.dialog-body{margin-top:28px}.project{border-top:1px solid #354b46;grid-template-columns:55px 1fr;gap:18px;padding:23px 0;display:grid}.project-symbol{color:#bdcdb0;background:#263f38;border:1px solid #496453;border-radius:7px;place-items:center;width:55px;height:60px;display:grid}.symbol-1{background:#233b3e}.symbol-2{background:#343f34}.project-category{font:8px var(--mono);color:#adbea6;letter-spacing:.7px}.project h3{letter-spacing:-.5px;margin:7px 0 8px;font-size:21px;font-weight:500}.project p,.practice-list p,.prose p,.research-feature p{color:#b2c0b9;margin:0 0 14px;font-size:13px;line-height:1.8}.tags{flex-wrap:wrap;gap:6px;margin:0 0 13px;padding:0;list-style:none;display:flex}.tags li{font:9px var(--mono);color:#c4d2bd;border:1px solid #496054;border-radius:3px;padding:4px 7px}.text-link{color:#d1dec1;align-items:center;gap:9px;padding:4px 0;font-size:11px;display:inline-flex}.text-link:hover{color:#fff}.dialog-footer-link{color:#c9d9bb;border-top:1px solid #3c5148;justify-content:space-between;align-items:center;margin-top:18px;padding-top:20px;font-size:12px;display:flex}.practice-list article{border-top:1px solid #354b46;padding:21px 0}.practice-list h3{margin:0 0 9px;font-size:18px;font-weight:500}.tools-line{font:9px var(--mono);color:#c0d0b3}.note{background:#253a34;border:1px solid #3e5947;border-radius:5px;align-items:center;gap:14px;padding:17px;display:flex}.note svg{color:#c1d3a9;flex-shrink:0}.note p{color:#c1cebd;margin:0;font-size:12px;line-height:1.7}.research-feature{background:#223931;border:1px solid #456348;border-radius:6px;padding:23px}.research-feature h3{letter-spacing:-.7px;margin:12px 0;font-size:22px;font-weight:500;line-height:1.3}.subheading{margin:27px 0 15px;font-size:17px;font-weight:500}.principles{color:#b6c7bb;padding:0 0 0 17px;font-size:12px;line-height:1.8}.principles li{margin-bottom:10px;padding-left:4px}.about-intro{align-items:center;gap:17px;margin-bottom:25px;display:flex}.about-mark{letter-spacing:-3px;color:#d8e0c5;background:#2b4436;border:1px solid #607958;border-radius:6px;place-items:center;width:70px;height:76px;font-size:35px;display:grid}.about-intro h3{margin:0 0 6px;font-size:19px;font-weight:500}.about-intro p{color:#b5c4b8;margin:0;font-size:11px}.prose p{margin-bottom:18px}.contact-copy{color:#b6c7bb;margin-bottom:25px;font-size:14px;line-height:1.8}.contact-links{flex-direction:column;display:flex}.contact-links>a{color:#c5d8b8;border-top:1px solid #3e534a;align-items:center;gap:18px;padding:21px 0;display:flex}.contact-links>a>svg:last-child{margin-left:auto}.contact-links strong{color:#e1e8d6;font-size:16px;font-weight:500;display:block}.contact-links small{color:#b2c4b5;margin-top:5px;font-size:11px;display:block}.contact-links>a:hover strong{color:#fff}.contact-signoff{color:#c2d0b6;align-items:center;gap:12px;margin-top:27px;font-size:12px;display:flex}@media (width<=650px){.portfolio-dialog{width:calc(100% - 24px);max-height:88dvh;padding:22px 21px 26px}.dialog-top{margin-bottom:19px}.portfolio-dialog h2{font-size:31px}.dialog-intro{font-size:12px}.dialog-body{margin-top:23px}.project{grid-template-columns:39px 1fr;gap:12px}.project-symbol{width:39px;height:45px}.project-symbol svg{width:25px}.project h3{font-size:20px}.project p,.practice-list p,.prose p,.research-feature p{font-size:12px}.project-category{font-size:7px}.research-feature{padding:19px}.contact-signoff,.dialog-footer-link{font-size:11px}.note{padding:13px}.note p{font-size:11px}}@media (prefers-reduced-motion:no-preference){.dialog-overlay{animation:.18s ease-out overlay-in}.portfolio-dialog{animation:.22s ease-out dialog-in}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:translate(-50%,-48%)}to{opacity:1;transform:translate(-50%,-50%)}}}:root{color:#e2e8df;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--muted:#a3b0ad;--accent:#bdcdb0;--border:#2a393d;--surface:#17252a;--mono:"IBM Plex Mono", monospace;background:#101b20;font-family:Space Grotesk,sans-serif}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.4}a{color:inherit;text-decoration:none}button{background:0 0;border:0}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline-offset:5px;outline:2px solid #d5deb7}button:active:not(:disabled){transform:translateY(1px)}::selection{color:#f5f4e6;background:#526856}.site-shell{max-width:1440px;margin:auto;padding:0 5.2%}.site-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:24px;height:82px;display:flex}.brand{letter-spacing:-1px;white-space:nowrap;align-items:center;gap:11px;font-size:23px;font-weight:600;display:flex}.brand-mark{width:34px;height:34px;color:var(--accent);border:1px solid #647267;border-radius:50%;place-items:center;display:grid}.brand-accent{color:var(--accent)}.brand-period{color:#829577}.site-header nav{gap:24px;margin-left:auto;margin-right:32px;display:flex}.site-header nav button{color:#b3bfba;padding:12px 0;font-size:13px;transition:color .2s}.site-header nav button:hover{color:#f1f1dd}.github-link{color:var(--accent);align-items:center;gap:7px;display:flex}.intro{justify-content:space-between;align-items:center;gap:32px;padding:37px 0 32px;display:flex}.eyebrow{font:10px var(--mono);letter-spacing:1.6px;color:#a4b99b;margin:0 0 15px}h1{letter-spacing:-1.8px;margin:0;font-size:clamp(32px,3.15vw,47px);font-weight:500;line-height:1.1}h1 span{color:var(--accent)}.intro-aside{padding-top:18px}.intro-aside>p{color:var(--muted);margin:0 0 21px;font-size:14px;line-height:1.7}.intro-actions{align-items:center;gap:21px;display:flex}.primary-button{background:var(--accent);color:#1a2926;white-space:nowrap;border-radius:4px;align-items:center;gap:23px;padding:13px 17px;font-size:12px;font-weight:600;transition:background .2s;display:flex}.primary-button:hover{background:#d0dec3}.text-button{color:#d5dfd1;white-space:nowrap;align-items:center;gap:8px;padding:10px 0;font-size:12px;display:flex}.text-button:hover{color:#fff}.world-frame{isolation:isolate;aspect-ratio:16/9;background:#13272b;border:1px solid #465c58;border-radius:7px;position:relative;overflow:hidden;box-shadow:0 18px 60px -26px #030b0e}.world-frame:focus-visible{outline-offset:3px}.village-stage{position:absolute;inset:0}.village-background{image-rendering:auto;width:100%;height:100%;display:block}.phaser-mount{position:absolute;inset:0}.phaser-mount canvas{display:block}.landmark-layer{pointer-events:none;position:absolute;inset:0}.landmark{pointer-events:auto;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);font:12px var(--mono);color:#e9edda;white-space:nowrap;background:#142322e8;border:1px solid #667064aa;border-radius:4px;align-items:center;gap:7px;padding:7px 10px;transition:background .2s,border-color .2s;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 3px 10px #08120d70}.landmark:hover,.landmark.nearby{color:#152a24;background:#c4d2b5;border-color:#dde7bf}.landmark:active{transform:translate(-50%,-50%)}.landmark-pin{opacity:.8;border:1px solid;width:5px;height:5px;transform:rotate(45deg)}.visit-check{color:#c6d8ac}.landmark:hover .visit-check,.landmark.nearby .visit-check{color:#25422f}.world-caption{font:9px var(--mono);letter-spacing:1px;color:#b3c8c1;text-shadow:0 2px 5px #071415;align-items:center;gap:10px;display:flex;position:absolute;top:18px;left:20px}.world-caption>span:last-child{letter-spacing:0;color:#9bafab}.caption-divider{color:#79908a}.moon-dot{border:1px solid #c5d6bd;border-radius:50%;width:7px;height:7px;box-shadow:inset 2px 0 #c5d6bd}.game-message{text-align:center;background:#15292bf5;border:1px solid #889b88;border-radius:6px;max-width:85%;padding:20px;font-size:13px;line-height:1.6;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.game-message button{border-bottom:1px solid var(--accent);align-items:center;gap:8px;margin:auto;padding:8px;display:flex}.interaction-prompt{font:10px var(--mono);white-space:nowrap;color:#dce5ce;text-shadow:0 1px 5px #091c13;position:absolute;bottom:17px;left:50%;transform:translate(-50%)}.interaction-prompt>span{background:#142826d9;border:1px solid #69847466;border-radius:4px;padding:8px 13px}.interaction-prompt button{color:#1a3028;text-align:left;background:#e1e7cb;border:1px solid #eef3dc;border-radius:4px;align-items:center;gap:12px;padding:9px 13px;display:flex;box-shadow:0 4px 20px #06120f70}.interaction-prompt button span{gap:3px;font-size:9px;display:grid}.interaction-prompt button b{font:500 12px Space Grotesk,sans-serif}.interaction-prompt kbd{color:#253e2d;border-color:#71806d}.game-toolbar{border-bottom:1px solid var(--border);min-height:65px;font:10px var(--mono);color:#a2b0ad;justify-content:space-between;align-items:center;gap:16px;display:flex}.keyboard-guide{align-items:center;gap:7px;display:flex}.key-group{gap:3px;display:flex}kbd{font:9px var(--mono);color:#c1cdc7;border:1px solid #4c5c5f;border-radius:3px;place-items:center;min-width:22px;height:22px;padding:2px 4px;display:inline-grid;box-shadow:0 2px #091519}.toolbar-divider{background:#354548;width:1px;height:12px;margin:0 6px}.click-guide{color:#a0afaa;font-family:Space Grotesk,sans-serif;font-size:11px}.explored{white-space:nowrap;align-items:center;gap:11px;display:flex}.progress-pips{gap:4px;display:flex}.progress-pips i{border:1px solid #61756a;border-radius:1px;width:5px;height:5px;display:block}.progress-pips i.filled{background:#bfd3a6;border-color:#bfd3a6}.site-footer{color:#9caaa5;justify-content:space-between;align-items:center;gap:16px;min-height:70px;font-size:10px;display:flex}.site-footer>span{font:9px var(--mono)}.site-footer>span>span{color:#5b7168;margin:0 7px}.footer-signature{align-items:center;gap:9px;display:flex}.skip-link{color:#152b26;z-index:10;background:#d7dfbf;padding:12px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:12px}.touch-controls{display:none}.idle-character{filter:drop-shadow(0 3px 1px #07151388);width:30px;height:43px;position:absolute;top:85%;left:50%;transform:translate(-50%,-100%)}.ronin-hat{clip-path:polygon(50% 0,100% 85%,100% 100%,0 100%,0 85%);z-index:2;background:#c8a86e;width:30px;height:13px;position:absolute;top:0;left:0}.ronin-body{background:#314754;border:3px solid #192b33;width:15px;height:25px;position:absolute;top:12px;left:8px}.ronin-scarf{background:#91a18a;width:18px;height:4px;position:absolute;top:15px;left:7px}.ronin-feet{background:#d3c29a;width:6px;height:5px;position:absolute;top:36px;left:8px;box-shadow:9px 0 #d3c29a}@media (width>=1500px){.site-shell{max-width:1360px}}@media (width<=1000px){.site-shell{padding:0 4%}.site-header nav{gap:17px;margin-right:10px}.intro{padding:27px 0}.intro-aside>p{font-size:12px}.intro-actions{gap:14px}.click-guide,.site-footer .footer-signature{display:none}.landmark{padding:6px 8px;font-size:9px}.world-caption{font-size:8px;top:12px;left:14px}}@media (width<=650px){.site-shell{padding:0 20px}.site-header{flex-wrap:wrap;gap:0;height:auto;min-height:110px;padding-top:18px}.brand{font-size:21px}.brand-mark{width:30px;height:30px}.github-link{margin-left:auto}.site-header nav{flex-basis:100%;order:3;justify-content:space-between;gap:0;margin:8px 0 0}.site-header nav button{padding:15px 0;font-size:11px}.intro{padding:27px 0 24px;display:block}.eyebrow{letter-spacing:1.2px;margin-bottom:12px;font-size:8px}h1{letter-spacing:-1.3px;font-size:36px;line-height:1.13}.intro-aside{padding-top:17px}.intro-aside>p{margin-bottom:17px;font-size:12px;line-height:1.65}.desktop-break{display:none}.intro-actions{gap:24px}.primary-button{gap:17px;padding:12px 14px;font-size:11px}.text-button{font-size:11px}.world-frame{border-radius:5px;width:calc(100% + 24px);margin-inline:-12px}.world-caption{gap:5px;font-size:6px;top:8px;left:9px}.world-caption>span:last-child,.caption-divider{display:none}.landmark{border-radius:3px;gap:3px;min-height:27px;padding:5px;font-size:7px}.landmark-pin{width:4px;height:4px}.visit-check{font-size:7px}.game-toolbar{flex-wrap:wrap;gap:8px;min-height:48px;padding:9px 0;font-size:8px}.keyboard-guide{display:none}.click-guide{margin:0;font-size:10px;display:block}.progress-pips{gap:3px}.progress-pips i{width:4px;height:4px}.explored{gap:6px}.touch-controls{border-bottom:1px solid var(--border);align-items:center;gap:15px;padding:18px 0;display:flex}.dpad{grid-template-rows:38px 38px;grid-template-columns:38px 38px 38px;gap:3px;display:grid}.dpad button{touch-action:none;background:#243638;border:1px solid #506459;border-radius:5px;place-items:center;display:grid}.dpad .up{grid-column:2}.dpad .left{grid-area:2/1}.dpad .down{grid-area:2/2}.dpad .right{grid-area:2/3}.touch-interact{background:#233932;border:1px solid #627761;border-radius:50%;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:4px;width:66px;height:66px;display:flex}.touch-interact span{font-size:9px}.touch-controls>p{color:var(--muted);margin-left:auto;font-size:10px;line-height:1.6}.interaction-prompt{font-size:6px;bottom:7px}.interaction-prompt>span{padding:5px 7px}.interaction-prompt button{gap:6px;padding:4px 7px}.interaction-prompt button span{gap:0;font-size:6px}.interaction-prompt button b{font-size:9px}.interaction-prompt kbd{min-width:19px;height:19px}.interaction-prompt svg{width:13px}.idle-character{transform-origin:bottom;transform:translate(-50%,-100%)scale(.5)}.site-footer{min-height:70px;padding:18px 0;font-size:9px;display:block}.site-footer p{margin:0 0 8px}.site-footer>span{font-size:8px}.game-message{width:85%;padding:10px;font-size:10px}}@media (prefers-reduced-motion:no-preference){.intro{animation:.7s ease-out both arrive}.world-frame{animation:.85s ease-out .1s both arrive}@keyframes arrive{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (width<=650px){.landmark{min-height:30px;padding:5px 6px;font-size:9px}.landmark:after{content:"";position:absolute;inset:-7px -3px}.dpad{grid-template-rows:44px 44px;grid-template-columns:44px 44px 44px}.interaction-prompt kbd{display:none}.touch-controls{gap:12px}.touch-controls>p,.game-toolbar{font-size:9px}}
