:root{--paper:#f8f6ed;--ink:#233e35;--muted:#576c61;--green:#285f46;--sky:#c4e9ec;--gold:#ffd46a;--peach:#ed9566;--line:#dfdfd0;--pixel:'Silkscreen',sans-serif;--text:'DM Sans',sans-serif}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--text);font-size:16px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button,a{touch-action:manipulation}button{border:0}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #a24c30;outline-offset:4px}button[hidden],[hidden]{display:none!important}button:hover{filter:brightness(.95)}button:active{transform:translateY(2px)}svg{display:block}.pixel{font-family:var(--pixel)}
.topbar{height:82px;display:flex;align-items:center;gap:28px;padding:0 3.3%;background:var(--paper)}.wordmark{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:700;letter-spacing:-1px;white-space:nowrap}.wordmark svg{width:25px;height:28px;color:var(--green)}.wordmark-dot{color:#b85d38}.header-note{font-size:14px;color:var(--muted)}.topbar nav{margin-left:auto;display:flex;align-items:center;gap:22px}.nav-button{background:none;display:flex;align-items:center;gap:8px;padding:9px 0;font-size:14px;font-weight:500}.nav-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5}.portfolio-button{background:var(--green);color:var(--paper);padding:13px 19px;font-weight:500;font-size:14px;display:flex;gap:22px;align-items:center;border-radius:3px}
.game-shell{position:relative;height:min(68vw,635px);min-height:460px;background:var(--sky);margin:0 1.35%;overflow:hidden;border-radius:6px}#world{display:block;width:100%;height:100%;image-rendering:pixelated;outline-offset:-5px}.game-hud{position:absolute;top:25px;left:28px;right:28px;display:flex;justify-content:space-between;align-items:start;gap:12px;pointer-events:none;z-index:2}.world-readout{display:flex;flex-direction:column;gap:6px}.status-label{font-size:12px;letter-spacing:0}.world-readout strong{font-size:15px;font-weight:500}.hud-items{display:flex;gap:25px;align-items:center}.hud-value{display:flex;gap:9px;align-items:center;font-family:var(--pixel);font-size:15px}.coin-icon{width:12px;height:18px;background:var(--gold);border:3px solid #b57935;display:inline-block;position:relative;}.stamp-icon{color:#86551d;font-style:normal;font-size:24px;line-height:1}.hearts{color:#a34336;font-size:19px;letter-spacing:2px;white-space:nowrap}.pause-button{pointer-events:auto;background:rgba(248,246,237,.8);height:32px;width:32px;border-radius:3px;font-weight:700}.is-intro .world-readout{visibility:hidden}.is-intro .pause-button{visibility:hidden}.is-intro .game-hud{left:auto}.is-intro .hearts{display:none}
.intro{position:absolute;inset:0;display:flex;align-items:center;pointer-events:none;padding:30px 6%;z-index:3}.intro-copy{max-width:500px;pointer-events:auto;margin-top:-25px}.intro h1{font:700 clamp(42px,5.25vw,83px)/1.09 var(--pixel);letter-spacing:-5px;margin:0 0 24px;color:#254f40}.title-period{color:#ac5736}.intro-lead{font-size:24px;line-height:1.35;margin:0 0 14px;font-weight:600;letter-spacing:-.6px}.intro-description{max-width:355px;font-size:16px;line-height:1.55;margin:0 0 24px;color:#3a6254}.intro-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.primary-button{display:inline-flex;align-items:center;justify-content:space-between;gap:36px;background:var(--green);color:#fffbed;padding:15px 24px;border-radius:3px;font-weight:600;font-size:16px;min-height:52px;transition:transform .12s}.primary-button:hover{background:#1e4c37}.primary-button:active{transform:translateY(3px)}.primary-button span{font-size:12px}.text-button{background:none;padding:12px 0;font-size:14px;font-weight:600;text-decoration:underline;text-underline-offset:5px}.intro-footnote{font-size:12px;color:#426354;margin:17px 0 0}.scene-caption{position:absolute;right:4%;bottom:24px;font-size:12px;color:#fff6d8;display:flex;align-items:center;gap:8px}.caption-dot{width:6px;height:6px;background:var(--gold);display:inline-block}.interaction{position:absolute;left:50%;bottom:105px;transform:translateX(-50%);background:var(--paper);padding:9px 10px;display:flex;align-items:center;gap:10px;border-radius:3px;z-index:4;white-space:nowrap;font-size:14px}.interaction button{padding:7px 11px;background:var(--green);color:var(--paper);border-radius:2px}.interaction kbd{background:var(--gold);padding:5px 8px;color:var(--ink)}.toast{position:absolute;top:98px;left:50%;transform:translate(-50%,-8px);background:var(--green);color:var(--paper);padding:12px 20px;border-radius:3px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:5;text-align:center;max-width:calc(100% - 32px);width:max-content}.toast.visible{opacity:1;transform:translate(-50%,0)}
.pause-screen,.win-screen{position:absolute;inset:0;z-index:6;background:rgba(31,62,49,.8);display:grid;place-items:center;padding:24px}.pause-screen>div,.win-card{background:var(--paper);padding:45px 48px;max-width:520px;text-align:center;border-radius:5px}.pause-screen h2,.win-card h2{font-size:42px;line-height:1.1;letter-spacing:-1.8px;margin:18px 0}.pause-screen .pixel,.win-card>.pixel{font-size:12px;color:#7f492d}.pause-screen p,.win-card p{font-size:16px;line-height:1.5}.pause-screen .primary-button{margin-top:12px}.pause-screen .text-button{display:block;margin:12px auto 0}.win-card h2{font-family:var(--pixel);font-size:34px;letter-spacing:-2px}.win-card .primary-button{margin-top:12px}.win-secondary{display:flex;justify-content:center;gap:24px;margin-top:15px}.win-secondary .text-button{font-size:13px}
.world-trail{display:flex;gap:5%;align-items:center;padding:30px 4.7% 25px}.trail-heading{flex:0 0 225px;display:flex;gap:22px;flex-direction:column}.trail-heading h2{font-size:21px;line-height:1.2;letter-spacing:-.7px;margin:0}.trail-heading p{font-size:13px;line-height:1.5;margin:0;color:var(--muted)}.chapter-trail{display:flex;justify-content:space-between;flex:1;gap:8px;position:relative;align-items:start}.chapter-trail:before{content:'';position:absolute;top:28px;height:3px;background:var(--line);left:5%;right:5%}.chapter-button{background:none;position:relative;display:flex;flex-direction:column;align-items:center;gap:11px;padding:0 5px;flex:1;font-size:13px;min-height:88px}.chapter-picture{width:56px;height:56px;image-rendering:pixelated;background:var(--paper);padding:6px}.chapter-button:hover .chapter-picture{transform:translateY(-4px)}.chapter-button.active .chapter-picture{background:#e5eadc}.chapter-button.visited:after{content:'';background:var(--green);color:var(--paper);position:absolute;top:33px;left:calc(50% + 10px);width:16px;height:16px;border-radius:50%;font-size:11px;line-height:16px}.chapter-button span{font-weight:500}.bottom-bar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 3.3% 21px;font-size:12px;color:var(--muted)}.bottom-bar p{display:flex;align-items:center;gap:7px;margin:0}.online-dot{height:6px;width:6px;display:inline-block;background:var(--green);border-radius:50%}.bottom-bar>a{font-size:12px;white-space:nowrap;text-decoration:underline;text-underline-offset:4px}.keyboard-help{display:flex;gap:17px;align-items:center}.keyboard-help>span{display:flex;align-items:center;gap:5px}.keyboard-help kbd{font:11px var(--text);background:#eae9de;min-width:20px;display:inline-block;text-align:center;padding:3px 5px;border-radius:2px}.touch-controls{display:none;align-items:center;justify-content:space-between;gap:12px;padding:14px 4%;touch-action:none}.touch-controls button{background:#e5e7da;border-radius:3px;height:52px;min-width:55px;font-size:24px;user-select:none;-webkit-user-select:none;touch-action:none}.direction-buttons,.action-buttons{display:flex;gap:10px}.touch-controls .jump-touch{background:var(--green);color:var(--paper);font-size:15px;font-weight:600;padding:0 19px}.touch-controls .dash-touch{font-size:13px;min-width:48px}.touch-tip{font-size:11px;line-height:1.5;text-align:center;color:var(--muted)}
dialog{border:0;background:var(--paper);color:var(--ink);padding:32px 36px;border-radius:6px;width:min(900px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto}dialog::backdrop{background:rgba(22,49,39,.65)}.dialog-top{display:flex;justify-content:space-between;align-items:center;gap:20px}.dialog-top>.pixel{font-size:12px;color:#7f492d}.close-button{background:#e6e8db;width:38px;height:38px;line-height:1;font-size:27px;border-radius:3px;flex-shrink:0}dialog h2{font-size:38px;letter-spacing:-1.5px;margin:22px 0 12px;line-height:1.15}dialog>p{color:var(--muted);line-height:1.5}.map-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:30px 0}.map-stop{background:#e8ebde;display:flex;flex-direction:column;align-items:start;padding:20px;gap:8px;min-height:140px;text-align:left;border-radius:3px}.map-stop canvas{width:48px;height:48px;image-rendering:pixelated;margin-bottom:10px}.map-stop strong{font-size:17px}.map-stop>span{font-size:12px;color:var(--muted)}.map-stop:hover{background:#dbe2ce}.map-stop.is-current{background:#d4e1cd}.map-hint{font-size:13px}.portfolio-dialog{width:min(1010px,calc(100vw - 32px));padding:30px 38px 38px}.dialog-brand{font-weight:700;font-size:18px;display:flex;gap:15px;align-items:center}.dialog-brand span{font-size:15px}.portfolio-layout{display:grid;grid-template-columns:150px 1fr;gap:40px;margin-top:35px}.portfolio-layout>nav{display:flex;flex-direction:column;gap:4px;align-self:start;position:sticky;top:0}.portfolio-tab{background:none;text-align:left;font-size:14px;color:var(--muted);padding:10px 13px;border-radius:2px}.portfolio-tab.active{background:#e3e8d8;color:var(--ink);font-weight:700}.portfolio-layout h2{font-size:38px;margin:0 0 12px;letter-spacing:-1.5px}.portfolio-sub{font-size:17px;line-height:1.6;color:var(--muted);margin:0 0 27px}.portfolio-section p{line-height:1.7;font-size:16px}.portfolio-section h3{font-size:21px;line-height:1.25;letter-spacing:-.5px;margin:30px 0 10px}.portfolio-section ul{padding-left:20px;font-size:15px;line-height:1.7}.portfolio-section li{margin-bottom:7px}.portfolio-section .meta{font-size:12px;color:var(--muted);line-height:1.5;margin:0 0 8px}.content-item{padding:21px 0}.content-item+.content-item{border-top:2px solid var(--line)}.content-item h3{margin-top:0}.skill-group{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}.skill-group>div{padding:10px 0}.skill-group h3{margin-top:0;font-size:17px}.skill-group p{font-size:14px;margin:0;color:var(--muted)}.contact-email{font-size:clamp(16px,3.4vw,30px);font-weight:700;display:inline-block;margin:20px 0;text-decoration:underline;text-underline-offset:6px;overflow-wrap:anywhere}.contact-links{display:flex;gap:20px;flex-wrap:wrap;font-size:15px;margin-top:16px}.contact-links a{text-decoration:underline;text-underline-offset:5px}.portfolio-next{background:var(--green);color:var(--paper);padding:13px 20px;border-radius:3px;margin-top:30px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.no-script{padding:40px;max-width:800px;margin:auto}.no-script a{text-decoration:underline}
@media(min-width:1600px){.game-shell{height:700px;max-height:76vh}.world-trail{padding-top:36px;padding-bottom:36px}.intro h1{font-size:88px}}
@media(max-width:1100px){.header-note{display:none}.topbar nav{gap:20px}.trail-heading{flex-basis:180px}.keyboard-help{gap:10px}.footer-location{display:none}.game-shell{height:590px}.intro h1{font-size:62px}.intro-copy{max-width:420px}.intro-description{max-width:300px}.intro-lead{font-size:22px}.intro{padding-left:5%}.hud-items{gap:18px}.world-trail{gap:3%}.chapter-button{font-size:12px;padding:0 1px}}
@media(max-width:800px){.topbar{height:70px;padding:0 4%;gap:12px}.wordmark{font-size:20px}.topbar nav{gap:17px}.portfolio-button{padding:11px 13px;font-size:13px;gap:12px}.nav-button{font-size:13px}.nav-button svg{display:none}.game-shell{margin:0 2%;height:570px}.intro-copy{max-width:350px}.intro h1{font-size:55px;letter-spacing:-3px}.intro-lead{font-size:21px}.intro-description{font-size:15px;max-width:280px}.intro-footnote{max-width:250px;line-height:1.5}.scene-caption{font-size:10px;right:3%}.game-hud{top:20px;left:20px;right:20px}.world-trail{display:block;padding:24px 4% 16px}.trail-heading{flex-direction:row;justify-content:space-between;align-items:center;margin-bottom:23px;gap:15px}.trail-heading h2{font-size:19px}.trail-heading p{font-size:12px}.chapter-button{font-size:12px}.chapter-picture{width:50px;height:50px}.chapter-trail:before{top:25px}.bottom-bar{padding:14px 4% 22px;font-size:11px}.keyboard-help{display:none}.map-grid{grid-template-columns:repeat(3,1fr)}.portfolio-layout{gap:25px;grid-template-columns:120px 1fr}.portfolio-dialog{padding:25px}.portfolio-layout h2{font-size:32px}}
@media(pointer:coarse){.touch-controls{display:flex}.keyboard-help{display:none}}
@media(max-width:540px){.topbar{height:66px}.wordmark{font-size:18px;gap:6px}.wordmark svg{width:20px}.topbar nav{gap:14px}.nav-button span{display:none}.nav-button svg{display:block;width:19px;height:19px}.portfolio-button{font-size:12px;padding:10px 11px;gap:0}.portfolio-button span{display:none}.game-shell{height:580px;min-height:0;border-radius:4px}.intro{padding:0 7%;align-items:start}.intro-copy{margin-top:65px;max-width:100%}.intro h1{font-size:43px;letter-spacing:-3px;margin-bottom:15px;line-height:1.15}.intro-lead{font-size:19px;line-height:1.35;margin-bottom:10px}.intro-description{font-size:14px;line-height:1.5;max-width:265px;margin-bottom:17px}.intro-footnote{font-size:11px;margin-top:13px;max-width:270px}.intro-actions{gap:10px}.primary-button{font-size:15px;padding:13px 21px;min-height:48px;gap:30px}.intro .text-button{font-size:12px}.scene-caption{display:none}.game-hud{top:16px;left:16px;right:16px}.hud-items{gap:13px}.hud-value{font-size:12px;gap:7px}.stamp-counter{display:none}.hearts{font-size:16px;letter-spacing:0}.world-readout strong{font-size:12px}.status-label{font-size:10px}.coin-icon{height:16px;width:11px}.pause-button{width:30px;height:30px}.intro .intro-copy .intro-actions{flex-wrap:nowrap}.is-intro .game-hud{left:16px;justify-content:end}.interaction{font-size:12px;bottom:108px;gap:6px;padding:7px;max-width:calc(100% - 20px)}.interaction kbd{padding:4px 6px}.interaction button{font-size:12px;padding:7px}.world-trail{padding-top:22px}.trail-heading h2{font-size:17px}.trail-heading p{font-size:11px}.chapter-trail{gap:2px;justify-content:space-between}.chapter-button{font-size:10px;padding:0;gap:7px;min-height:75px}.chapter-picture{width:39px;height:45px;padding:3px}.chapter-trail:before{top:23px;height:2px}.chapter-button.visited:after{top:27px;left:calc(50% + 5px);width:14px;height:14px;font-size:9px;line-height:14px}.bottom-bar{display:flex;align-items:start;gap:10px}.bottom-bar>a{font-size:10px;white-space:normal;text-align:right;max-width:130px}.bottom-bar p{font-size:11px}.touch-controls{padding:12px 4%;gap:8px}.direction-buttons,.action-buttons{gap:7px}.touch-controls button{height:48px;min-width:45px}.touch-controls .jump-touch{padding:0 14px;font-size:14px}.touch-controls .dash-touch{min-width:40px;font-size:11px}.touch-tip{font-size:10px}.touch-controls .jump-touch{height:48px}.pause-screen>div,.win-card{padding:30px 23px}.pause-screen h2{font-size:30px}.win-card h2{font-size:27px}.win-card p{font-size:14px}.win-secondary{gap:15px}.win-secondary .text-button{font-size:12px}dialog{padding:23px;width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}dialog h2{font-size:30px}.map-grid{grid-template-columns:repeat(2,1fr);gap:9px;margin:23px 0}.map-stop{padding:15px;min-height:125px}.map-stop strong{font-size:16px}.map-stop canvas{margin-bottom:4px;width:40px;height:40px}.map-stop>span{font-size:11px}.portfolio-dialog{padding:22px}.portfolio-layout{display:flex;flex-direction:column;gap:25px;margin-top:23px}.portfolio-layout>nav{flex-direction:row;position:static;overflow:auto;width:100%;padding-bottom:8px;gap:4px}.portfolio-tab{padding:9px 12px;font-size:12px;white-space:nowrap}.portfolio-layout h2{font-size:30px}.portfolio-sub{font-size:15px}.portfolio-section p{font-size:15px}.portfolio-section h3{font-size:19px}.portfolio-section ul{font-size:14px}.skill-group{grid-template-columns:1fr}.skill-group h3{font-size:17px}.dialog-brand{font-size:16px}.contact-links{font-size:14px;gap:17px}.dialog-top>.pixel{font-size:10px}.toast{font-size:12px;top:72px;padding:10px 14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.hearts{display:flex;gap:7px;align-items:center}.hearts i{display:block;background:#a34336;width:19px;height:17px;clip-path:polygon(0 12%,12% 12%,12% 0,38% 0,38% 12%,62% 12%,62% 0,88% 0,88% 12%,100% 12%,100% 50%,88% 50%,88% 63%,75% 63%,75% 75%,62% 75%,62% 88%,50% 100%,38% 88%,38% 75%,25% 75%,25% 63%,12% 63%,12% 50%,0 50%)}.hearts i.empty{background:#9aab99}.stamp-icon{width:21px;height:21px;display:block;background:#b18a3d;clip-path:polygon(43% 0,57% 0,64% 29%,100% 29%,100% 43%,79% 57%,86% 86%,71% 86%,50% 71%,29% 86%,14% 86%,21% 57%,0 43%,0 29%,36% 29%)}.coin-icon:after{content:'';position:absolute;left:1px;top:1px;bottom:1px;width:2px;background:#fff2b2}.chapter-button.visited:before{content:'';position:absolute;z-index:2;top:37px;left:calc(50% + 15px);width:4px;height:7px;border:solid #f8f6ed;border-width:0 2px 2px 0;transform:rotate(45deg)}.cavern .hearts i{background:#efb18e}.cavern .hearts i.empty{background:#637f6f}@media(max-width:540px){.hearts{gap:4px}.hearts i{width:15px;height:14px}.chapter-button.visited:before{top:30px;left:calc(50% + 10px);width:3px;height:6px}}
/* Reading sizes stay comfortable; game HUD conventions stay inside its interface. */
:root{--paper:#f5f5ed;--muted:#40574b}.is-intro .world-readout,.is-intro .pause-button{display:none}.intro-copy{margin-top:-48px}.intro-footnote{font-size:13px;color:var(--ink)}.scene-caption{font-size:13px}.trail-heading{flex-basis:250px;gap:16px}.trail-heading p{font-size:16px}.chapter-button{font-size:13px}.bottom-bar,.bottom-bar>a{font-size:13px}.topbar{padding-left:3.3%;padding-right:3.3%}.keyboard-help{gap:12px}.keyboard-help kbd{font-size:12px}.scene-caption{color:#fffbe5}.intro-description{color:#2f5445}
@media(max-width:1100px){.trail-heading{flex-basis:210px}.trail-heading p{font-size:14px}.footer-location{display:none}.bottom-bar{gap:12px}.keyboard-help{display:none}}
@media(max-width:800px){.intro-copy{margin-top:-45px}.intro-footnote{max-width:310px}.scene-caption{font-size:13px}.trail-heading p{font-size:16px}.trail-heading{margin-bottom:22px}.bottom-bar{font-size:13px}.chapter-button{font-size:13px}.intro-description{font-size:16px}}
@media(max-width:540px){.intro-copy{margin-top:65px}.intro h1{font-size:41px}.intro-lead{font-size:18px}.intro-description{font-size:16px;max-width:280px}.intro-footnote{font-size:13px;max-width:270px;line-height:1.45}.intro-actions{margin-top:8px}.intro .intro-copy .intro-actions{flex-wrap:wrap}.intro-description{margin-bottom:14px}.trail-heading{align-items:start;flex-direction:column;gap:10px}.trail-heading p{font-size:16px}.trail-heading p br{display:none}.chapter-trail{display:grid;grid-template-columns:repeat(4,1fr);gap:15px 6px}.chapter-trail:before{display:none}.chapter-button{font-size:13px;gap:7px}.chapter-picture{width:48px;height:48px}.chapter-button.visited:after{top:31px}.chapter-button.visited:before{top:34px}.world-trail{padding-left:20px;padding-right:20px}.touch-tip{font-size:13px;max-width:85px}.touch-tip br{display:none}.touch-controls{padding-left:16px;padding-right:16px}.touch-controls .dash-touch{font-size:13px}.touch-controls .jump-touch{padding-left:12px;padding-right:12px}.bottom-bar p,.bottom-bar>a{font-size:13px}.bottom-bar p{max-width:135px;line-height:1.5}.bottom-bar>a{max-width:140px;line-height:1.5}.map-stop>span,.map-hint,.dialog-top>.pixel,.portfolio-tab,.portfolio-section .meta{font-size:13px}.intro .text-button{font-size:13px}.touch-controls{gap:5px}.direction-buttons,.action-buttons{gap:5px}.touch-controls button{min-width:43px}.touch-controls .dash-touch{min-width:40px}.touch-controls .jump-touch{font-size:14px}.touch-tip{font-size:12px}}
@media(max-width:800px){.touch-controls{display:flex}}
@media(max-width:540px){.touch-tip{font-size:13px}}
