@import "https://fonts.googleapis.com/css2?family=Press+Start+2P&family=Source+Sans+3:wght@400;500;600;700&display=swap";:root{--ink:#17201b;--ink-soft:#26342b;--forest:#18251d;--forest-raised:#24362a;--cream:#f6ead5;--cream-strong:#fff7e8;--paper:#eee0c8;--paper-deep:#d8c6aa;--moss:#9cc56d;--moss-bright:#c7f36b;--clay:#d85d35;--gold:#e7b95f;--sky:#8fc5c2;--danger:#d5634c;--shadow:#080f0b7a;--pixel:"Press Start 2P", ui-monospace, monospace;--body:"Source Sans 3", system-ui, sans-serif}*{box-sizing:border-box}html{background:var(--forest);color:var(--cream);font-family:var(--body);min-width:320px}body{min-height:100vh;margin:0;overflow:hidden}body:has(.fallback-portfolio.active){overflow:auto}body:has(.blog-article-page){overflow:auto}.not-found{text-align:center;background:radial-gradient(circle at 50% 38%, #9cc56d33, transparent 28%), var(--forest);place-content:center;min-height:100vh;padding:32px;display:grid}.not-found h1{max-width:18ch;font-family:var(--pixel);margin:0 auto 18px;font-size:clamp(1.45rem,5vw,3.2rem);line-height:1.35}.not-found p:not(.modal-kicker){color:#f6ead5bd;max-width:52ch;margin:0 auto 28px;font-size:1.05rem;line-height:1.6}.not-found .primary-button{justify-self:center}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}:focus-visible{outline:3px solid var(--moss-bright);outline-offset:3px}.visually-hidden{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:500;background:var(--cream-strong);color:var(--ink);padding:12px 16px;font-weight:800;transition:transform .18s ease-out;position:fixed;top:12px;left:20px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.world-shell,.world-root,.world-vignette,.grain{position:fixed;inset:0}.world-shell{background:var(--forest);isolation:isolate}.world-root canvas{touch-action:none;width:100%;height:100%;display:block}.world-vignette{pointer-events:none;z-index:1;box-shadow:inset 0 0 140px 25px #050b078a}.grain{pointer-events:none;z-index:2;border:8px solid #f6ead50d;box-shadow:inset 0 0 0 1px #f6ead517}.eyebrow,.modal-kicker,.loading-brand,.world-nav-label{font-family:var(--pixel);letter-spacing:.08em;text-transform:uppercase}.identity-card{z-index:10;width:min(410px,100vw - 190px);color:var(--cream-strong);border:1px solid #f6ead538;border-left:5px solid var(--moss-bright);box-shadow:0 18px 44px var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#17201be0;padding:19px 22px 18px;position:fixed;top:24px;left:96px}.identity-card .eyebrow{color:var(--moss-bright);margin:0 0 10px;font-size:.58rem}.identity-card h1{font-family:var(--pixel);margin:0;font-size:clamp(1.15rem,2.4vw,1.65rem);line-height:1.35}.snake-title{color:var(--gold);font-family:var(--pixel);margin:7px 0 0;font-size:.62rem;line-height:1.6}.identity-copy{color:#f6ead5c7;max-width:52ch;margin:12px 0 0;font-size:.94rem;line-height:1.45}.identity-status{color:var(--cream);align-items:center;gap:8px;margin-top:14px;font-size:.78rem;font-weight:700;display:flex}.status-dot{background:var(--moss-bright);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 5px #c7f36b1f}.world-nav{z-index:20;gap:6px;display:grid;position:fixed;top:50%;left:18px;transform:translateY(-50%)}.world-nav-label{color:#f6ead59e;margin:0 0 3px 4px;font-size:.48rem}.world-nav-item{width:50px;min-height:47px;color:var(--cream);background:#17201be6;border:1px solid #f6ead52e;grid-template-columns:38px 0fr;align-items:center;padding:4px;transition:width .18s ease-out,border-color .18s ease-out,background-color .18s ease-out;display:grid;position:relative;overflow:hidden;box-shadow:0 9px 22px #080f0b33}.world-nav:hover .world-nav-item,.world-nav:focus-within .world-nav-item{grid-template-columns:38px 1fr;width:182px}.world-nav-item:hover,.world-nav-item:focus-visible{border-color:var(--landmark-color);background:var(--ink)}.nav-code{width:38px;height:37px;color:var(--landmark-color);font-family:var(--pixel);place-items:center;font-size:.58rem;display:grid}.nav-name{white-space:nowrap;font-size:.85rem;font-weight:700;overflow:hidden}.nav-visited{color:var(--landmark-color);font-family:var(--pixel);font-size:.35rem;display:none;position:absolute;bottom:3px;right:6px}.world-nav-item.visited{border-left:3px solid var(--landmark-color)}.world-nav-item.visited .nav-visited{display:block}.round-control{width:48px;height:48px;color:var(--cream);box-shadow:0 10px 26px var(--shadow);font-family:var(--pixel);background:#17201beb;border:1px solid #f6ead53d;place-items:center;padding:0;font-size:.54rem;display:grid}.round-control:hover{color:var(--ink);background:var(--moss-bright)}.settings-wrap{z-index:24;align-items:flex-start;gap:8px;display:flex;position:fixed;top:24px;right:24px}.settings-bar{width:240px;color:var(--cream);box-shadow:0 18px 44px var(--shadow);background:#17201bf5;border:1px solid #f6ead53d;padding:14px;display:none}.settings-wrap:hover .settings-bar,.settings-wrap:focus-within .settings-bar,.settings-wrap.open .settings-bar{gap:10px;display:grid}.settings-bar fieldset{border:0;border-bottom:1px solid #f6ead529;gap:8px;margin:0;padding:0 0 10px;display:flex}.settings-bar legend{width:100%;color:var(--gold);font-family:var(--pixel);margin-bottom:8px;font-size:.48rem}.settings-bar label{flex:1}.settings-bar input{opacity:0;position:absolute}.settings-bar label span{text-align:center;background:var(--ink-soft);border:1px solid #0000;place-items:center;min-height:44px;padding:8px 10px;font-weight:700;display:grid}.settings-bar input:checked+span{color:var(--ink);background:var(--moss-bright);border-color:var(--moss-bright)}.settings-bar input:focus-visible+span{outline:3px solid var(--moss-bright);outline-offset:3px}.settings-action{min-height:42px;color:var(--cream);text-align:left;background:0 0;border:1px solid #f6ead529;padding:9px 11px}.settings-action:hover{border-color:var(--gold)}.settings-action.danger{color:#ffb9a9}.help-trigger{z-index:20;font-size:1rem;position:fixed;bottom:20px;left:20px}.control-hint{z-index:8;color:#f6ead5cc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#17201bb8;border:1px solid #f6ead524;align-items:center;gap:10px;padding:9px 13px;font-size:.78rem;display:flex;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.control-key{color:var(--moss-bright);font-family:var(--pixel);font-size:.44rem}.control-separator{color:#f6ead56b}.touch-joystick{z-index:15;opacity:0;pointer-events:none;background:#17201b47;border:1px solid #f6ead57a;border-radius:50%;width:112px;height:112px;transition:opacity .12s ease-out,transform .12s ease-out;display:none;position:fixed;transform:translate(-50%,-50%)scale(.72);box-shadow:0 12px 28px #050b073d,inset 0 0 0 8px #f6ead50d}.touch-joystick:before{content:"";border:1px dashed #f6ead547;border-radius:50%;position:absolute;inset:17px}.touch-joystick.is-active{opacity:1;transform:translate(-50%,-50%)scale(1)}.touch-joystick-knob{border:2px solid var(--cream-strong);background:#7eae65d6;border-radius:50%;width:46px;height:46px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 16px #050b0752,inset 0 -4px #17201b33}@media (pointer:coarse) and (max-width:900px){.touch-joystick{display:block}}.fire-control{z-index:20;right:calc(20px + env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));width:56px;height:56px;color:var(--cream-strong);background:var(--clay);border:2px solid var(--cream-strong);box-shadow:0 10px 26px var(--shadow), inset 0 -4px 0 #17201b38;font-family:var(--pixel);touch-action:manipulation;-webkit-user-select:none;user-select:none;place-items:center;padding:0;font-size:.52rem;transition:color .16s ease-out,background-color .16s ease-out,box-shadow .16s ease-out,opacity .16s ease-out,transform .1s ease-out;display:grid;position:fixed}.fire-control:hover:not(:disabled){color:var(--ink);background:var(--gold)}.fire-control:active:not(:disabled){box-shadow:0 4px 12px var(--shadow);transform:translateY(2px)scale(.96)}.fire-control:disabled{cursor:not-allowed;opacity:.42;filter:saturate(.45);box-shadow:0 5px 14px #080f0b47}.quality-badge{z-index:8;right:calc(88px + env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));color:#f6ead5ad;font-family:var(--pixel);white-space:nowrap;background:#17201bb3;border:1px solid #f6ead524;padding:8px 10px;font-size:.42rem;position:fixed}.fallback-trigger{z-index:9;color:var(--cream);background:#17201bad;border:1px solid #f6ead52e;padding:9px 13px;font-size:.78rem;position:fixed;top:28px;left:50%;transform:translate(-50%)}.fallback-trigger:hover{border-color:var(--moss-bright)}.loading-screen{z-index:1000;color:var(--cream);background:#152119;place-content:center;justify-items:center;transition:opacity .32s ease-out,visibility .32s ease-out;display:grid;position:fixed;inset:0}.loading-screen.finished{visibility:hidden;opacity:0;pointer-events:none}.egg-stage{width:150px;height:155px;margin-bottom:26px;position:relative}.egg{background:#f4e3c6;border:5px solid #3b493d;width:76px;height:120px;position:absolute;top:4px}.egg-left{border-radius:72% 20% 40% 62%;animation:.9s ease-out .12s forwards crack-left;left:0;transform:rotate(-16deg)translate(-9px,10px)}.egg-right{border-radius:20% 72% 62% 40%;animation:.9s ease-out .12s forwards crack-right;right:0;transform:rotate(16deg)translate(9px,10px)}.hatchling{background:#f3b6c8;border:4px solid #3b493d;border-radius:46% 52% 44% 50%;width:62px;height:62px;animation:.92s ease-out .16s forwards hatch;position:absolute;top:76px;left:45px;transform:translateY(48px)scale(.6)}.hatchling-eye,.hatchling-glasses{border-radius:50%;position:absolute;top:20px}.hatchling-eye{background:var(--ink);width:6px;height:6px}.hatchling-eye.left{left:18px}.hatchling-eye.right{right:18px}.hatchling-glasses{border:3px solid var(--ink);width:23px;height:20px;top:13px}.hatchling-glasses.left{left:6px}.hatchling-glasses.right{right:6px}.loading-brand{color:var(--moss-bright);margin:0;font-size:.64rem}.loading-copy{margin:12px 0 20px;font-size:1.05rem}.loading-track{background:#2d3d31;border:1px solid #f6ead533;width:min(330px,72vw);height:10px;padding:2px}.loading-track span{background:var(--moss-bright);width:0;height:100%;transition:width .24s ease-out;display:block}.loading-percent{font-family:var(--pixel);margin:10px 0 18px;font-size:.58rem}.text-action{color:#f6ead5bd;background:0 0;border:0;border-bottom:1px solid;padding:8px}@keyframes crack-left{to{transform:rotate(-42deg)translate(-42px,30px)}}@keyframes crack-right{to{transform:rotate(42deg)translate(42px,30px)}}@keyframes hatch{to{transform:translateY(0)scale(1)}}dialog{color:var(--ink);background:var(--cream-strong);border:0;box-shadow:0 34px 110px #040a06a8}dialog::backdrop{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#080f0bb8}.tutorial-dialog,.completion-dialog{border-top:8px solid var(--moss);width:min(680px,100vw - 32px);padding:clamp(28px,5vw,54px)}.tutorial-dialog h2,.completion-dialog h2,.modal-article h2,.fallback-section h2{color:var(--ink);font-family:var(--pixel);margin:0;font-size:clamp(1.3rem,3vw,2.25rem);line-height:1.45}.dialog-close{width:46px;height:46px;color:var(--ink);background:0 0;border:1px solid #17201b38;place-items:center;padding:0;font-size:1.7rem;line-height:1;display:grid;position:absolute;top:14px;right:14px}.dialog-close:hover{background:var(--ink);color:var(--cream)}.modal-kicker{color:#647e49;margin:0 0 16px;font-size:.54rem;line-height:1.6}.tutorial-boat{width:156px;height:92px;margin:28px 0 34px;position:relative}.tutorial-boat span{display:block;position:absolute}.tutorial-boat-mast{background:var(--ink);border-radius:3px;width:5px;height:62px;top:4px;left:74px}.tutorial-boat-sail{border:3px solid var(--ink);clip-path:polygon(0 0,100% 87%,0 100%);background:#f5d399;width:54px;height:48px;top:8px;left:80px}.tutorial-boat-hull{border:3px solid var(--ink);clip-path:polygon(0 0,100% 0,83% 100%,17% 100%);background:#a86842;width:102px;height:32px;bottom:15px;left:40px}.tutorial-boat-wake{border-bottom:5px solid #8fcdd2;border-radius:50%;width:135px;height:15px;bottom:0;left:14px}.tutorial-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.tutorial-grid article,.principle-grid article,.architecture-notes article{background:var(--paper);border:1px solid var(--paper-deep);padding:19px}.tutorial-number,.principle-grid span,.architecture-notes span{color:#647e49;font-family:var(--pixel);font-size:.54rem}.tutorial-grid h3,.principle-grid h3,.architecture-notes h4{margin:13px 0 7px}.tutorial-grid p,.principle-grid p,.architecture-notes p{margin:0;line-height:1.55}.tutorial-actions,.project-actions{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.primary-button,.secondary-button{border:2px solid var(--ink);justify-content:center;align-items:center;min-height:48px;padding:12px 18px;font-weight:800;text-decoration:none;display:inline-flex}.primary-button{color:var(--cream-strong);background:var(--ink)}.primary-button:hover{color:var(--ink);background:var(--moss-bright)}.secondary-button{color:var(--ink);background:0 0}.secondary-button:hover{background:var(--paper)}.content-dialog{border-top:8px solid var(--gold);width:min(1080px,100vw - 48px);max-height:min(88vh,920px);padding:0;overflow:auto}#dialog-content{min-height:300px}.modal-article{padding:clamp(28px,5vw,58px)}.modal-lede,.fallback-lede{color:#4a554d;max-width:68ch;font-size:clamp(1.05rem,1.8vw,1.25rem);line-height:1.55}.project-heading{grid-template-columns:1fr auto;align-items:start;gap:30px;display:grid}.project-mark{aspect-ratio:1;width:104px;color:var(--cream-strong);background:var(--clay);border:7px solid var(--ink);font-family:var(--pixel);place-items:center;font-size:1rem;display:grid;transform:rotate(3deg)}.project-meta{flex-wrap:wrap;gap:8px;margin:22px 0;display:flex}.project-meta span{color:var(--ink);background:var(--paper);border:1px solid var(--paper-deep);padding:8px 10px;font-size:.83rem;font-weight:800}.kageflow-capture{border:8px solid var(--ink);box-shadow:12px 12px 0 var(--paper-deep);background:#1f2b24;margin:22px 0;position:relative;overflow:hidden}.kageflow-capture img{width:100%;height:auto;display:block}.kageflow-capture figcaption{color:var(--cream-strong);font-family:var(--pixel);background:#0e2a20e6;padding:7px 9px;font-size:.45rem;line-height:1.5;position:absolute;bottom:14px;right:18px}.section-heading{border-top:1px solid var(--paper-deep);justify-content:space-between;align-items:end;gap:24px;margin:48px 0 18px;padding-top:30px;display:flex}.section-heading h3{font-family:var(--pixel);margin:0;font-size:1.15rem}.section-heading>p{color:#687168;text-align:right;max-width:34ch}.component-grid,.skill-grid,.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.component-card,.skill-card,.blog-card{color:var(--ink);text-align:left;background:var(--paper);border:1px solid var(--paper-deep);padding:22px;text-decoration:none}button.component-card{width:100%}.component-card:hover,.blog-card:hover{border-color:#647e49;transform:translate(-2px,-2px);box-shadow:6px 6px #b9c79c}.component-card>span,.education-grid article>span{color:#647e49;font-family:var(--pixel);font-size:.5rem}.component-card h3,.skill-card h3,.blog-card h3{margin:14px 0 9px;font-size:1.15rem}.component-card p,.skill-card p,.blog-card p,.blog-card>span{color:#566158;margin:0;line-height:1.5}.component-card strong,.blog-card strong{color:#59753e;margin-top:18px;display:block}.component-card.static ul{padding-left:18px}.component-detail-slot:not(:empty){margin-top:18px}.component-detail{color:var(--cream);background:var(--ink);border-left:7px solid var(--moss-bright);padding:26px;position:relative}.component-detail h3{color:var(--cream-strong);font-family:var(--pixel);margin:0;font-size:1.2rem}.component-detail .modal-lede{color:#f6ead5bd}.component-detail ul{gap:10px;padding-left:20px;line-height:1.5;display:grid}.detail-close{float:right;color:var(--cream);background:0 0;border:1px solid #f6ead54d;padding:8px 10px}.tag-list{flex-wrap:wrap;gap:7px;margin-top:16px;display:flex}.tag-list span{color:var(--ink);background:var(--moss-bright);padding:7px 9px;font-size:.78rem;font-weight:800}.architecture-panel{background:#d9e0ca;border:1px solid #aeba97;margin-top:30px;padding:30px}.architecture-panel h3{max-width:26ch;font-family:var(--pixel);margin:0;font-size:1.25rem;line-height:1.5}.architecture-flow{flex-wrap:wrap;align-items:center;gap:9px;margin:26px 0;display:flex}.architecture-flow span{color:var(--cream-strong);background:var(--ink);padding:11px 13px;font-weight:800}.architecture-flow b{color:#607744}.architecture-notes,.principle-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.skill-grid{margin-top:28px}.skill-card>p{color:#647e49;font-weight:700}.prose-section>p:not(.modal-kicker,.modal-lede){color:#49534a;max-width:68ch;font-size:1.05rem;line-height:1.7}.principle-grid{margin-top:28px}.timeline{gap:0;margin:30px 0 0;padding:0;list-style:none;display:grid}.timeline li{border-top:1px solid var(--paper-deep);grid-template-columns:70px 1fr;gap:18px;padding:22px 0;display:grid}.timeline li>span{width:58px;height:58px;color:var(--cream-strong);background:var(--ink);font-family:var(--pixel);place-items:center;font-size:.54rem;display:grid}.timeline small{color:#7a806f;font-family:var(--pixel);font-size:.44rem}.timeline h3{margin:8px 0 5px}.timeline p{color:#556057;margin:0}.education-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:28px;display:grid}.education-grid article{background:var(--paper);border:1px solid var(--paper-deep);min-height:220px;padding:26px}.education-grid article p{color:#687168}.education-grid article h3{font-family:var(--pixel);font-size:1rem;line-height:1.55}.education-grid article strong{color:#59753e}.resume-sheet{max-width:800px;box-shadow:10px 10px 0 var(--paper-deep);background:#fffdf8;border:1px solid #d8d2c6;margin-top:26px;padding:clamp(24px,4vw,44px)}.resume-sheet header{border-bottom:4px solid var(--ink);justify-content:space-between;gap:20px;padding-bottom:20px;display:flex}.resume-sheet h3{font-family:var(--pixel);margin:0}.resume-sheet header p{margin:7px 0 0}.resume-sheet section{border-bottom:1px solid #ded8cb;grid-template-columns:150px 1fr;gap:16px;padding:18px 0;display:grid}.resume-sheet h4,.resume-sheet h5,.resume-sheet p{margin:0}.resume-sheet h4{font-family:var(--pixel);font-size:.56rem}.resume-sheet h5{font-size:1rem}.as-link{text-decoration:none}.blog-grid{margin-top:28px}.blog-card>p:first-child{color:#647e49;font-size:.82rem;font-weight:800}.contact-tabs{gap:8px;margin:28px 0 22px;display:flex}.contact-tabs button{min-height:48px;color:var(--ink);border:2px solid var(--ink);background:0 0;padding:10px 16px;font-weight:800}.contact-tabs button[aria-selected=true]{color:var(--cream-strong);background:var(--ink)}.email-display{color:var(--ink);background:var(--paper);border-left:7px solid var(--moss);font-family:var(--pixel);padding:22px;font-size:clamp(.72rem,2vw,1.1rem);line-height:1.5;text-decoration:none;display:block}.contact-links{flex-wrap:wrap;gap:10px;margin-top:15px;display:flex}.contact-links a,.contact-links button{min-height:44px;color:var(--ink);background:0 0;border:1px solid #17201b4d;padding:10px 13px;font-weight:800;text-decoration:none}.contact-form{gap:15px;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;display:grid}.contact-form label{gap:7px;font-weight:800;display:grid}.contact-form input,.contact-form textarea{width:100%;min-height:48px;color:var(--ink);background:#fffdf8;border:2px solid #b9b19f;padding:11px 12px}.contact-form textarea{resize:vertical}.toast{z-index:1200;max-width:min(440px,100vw - 32px);color:var(--cream-strong);background:var(--ink);border:1px solid var(--moss-bright);box-shadow:0 12px 32px var(--shadow);opacity:0;pointer-events:none;padding:12px 16px;transition:opacity .18s ease-out,transform .18s ease-out;position:fixed;bottom:28px;left:50%;transform:translate(-50%,18px)}.toast.visible{opacity:1;transform:translate(-50%)}.fallback-portfolio{min-height:100vh;color:var(--ink);background:var(--cream-strong);display:none}.fallback-portfolio.active{display:block}.fallback-header,.fallback-nav,.fallback-section{width:min(1160px,100% - 40px);margin-inline:auto}.fallback-header{border-bottom:6px solid var(--ink);justify-content:space-between;align-items:end;gap:30px;padding:64px 0 34px;display:flex}.fallback-header h1{font-family:var(--pixel);margin:0;font-size:clamp(1.5rem,4vw,3rem)}.fallback-header p:last-child{color:#566158;margin-bottom:0;font-size:1.1rem}.fallback-nav{border-bottom:1px solid var(--paper-deep);flex-wrap:wrap;gap:8px;padding:18px 0;display:flex}.fallback-nav a{border:1px solid var(--paper-deep);padding:8px 10px;font-weight:700;text-decoration:none}.fallback-section{border-bottom:1px solid var(--paper-deep);padding-block:clamp(54px,8vw,100px)}.fallback-section .component-grid,.fallback-section .skill-grid,.fallback-section .blog-grid{margin-top:28px}.fallback-section.contact-classic{padding-bottom:120px}.blog-article-page{min-height:100vh;color:var(--ink);background:linear-gradient(#d8c6aa38 1px, transparent 1px), var(--cream-strong);background-size:100% 32px}.article-site-header,.article-shell,.article-footer{width:min(100% - 40px,1160px);margin-inline:auto}.article-site-header{border-bottom:1px solid var(--paper-deep);justify-content:space-between;align-items:center;gap:28px;padding-block:24px;display:flex}.article-home-link{gap:5px;text-decoration:none;display:grid}.article-home-link span{font-family:var(--pixel);font-size:.7rem}.article-home-link strong{color:#59705f;font-size:.9rem}.article-site-header nav{flex-wrap:wrap;gap:8px;display:flex}.article-site-header nav a,.article-footer a{color:#435a37;text-underline-offset:4px;padding:9px 11px;font-weight:800}.article-shell{padding-block:clamp(54px,8vw,104px)}.blog-article{background:var(--cream-strong);border:1px solid var(--paper-deep);width:min(100%,760px);margin-inline:auto;padding:clamp(28px,6vw,72px);box-shadow:12px 12px #d8c6aa99}.article-header{border-bottom:6px solid var(--ink);padding-bottom:clamp(32px,6vw,56px)}.article-header h1{max-width:20ch;font-family:var(--pixel);text-wrap:balance;margin:18px 0 22px;font-size:clamp(1.55rem,5vw,3rem);line-height:1.3}.article-deck{color:#455247;max-width:56ch;margin:0;font-size:clamp(1.1rem,2.4vw,1.35rem);line-height:1.55}.article-read-time{color:#59753e;margin:20px 0 0;font-weight:800}.article-body{color:#303b33;padding-top:clamp(30px,6vw,56px);font-size:1.08rem;line-height:1.75}.article-body section{padding-top:24px}.article-body h2{color:var(--ink);text-wrap:balance;margin:42px 0 18px;font-size:clamp(1.45rem,3.4vw,2rem);line-height:1.25}.article-body p,.article-body ul,.article-body blockquote,.article-body pre{margin-block:0 22px}.article-body ul{padding-left:1.35em}.article-body li+li{margin-top:7px}.article-body blockquote{color:#34462d;border-left:5px solid #799650;padding:2px 0 2px 22px;font-size:1.12rem;font-weight:700}.article-body blockquote p{margin:0}.article-body pre{max-width:100%;color:var(--cream-strong);background:var(--ink);white-space:pre;scrollbar-color:var(--moss) var(--ink-soft);border:1px solid #405248;padding:22px;font-size:clamp(.78rem,2vw,.95rem);line-height:1.65;overflow-x:auto}.article-body code{font-family:ui-monospace,Cascadia Code,SFMono-Regular,Consolas,monospace}.article-footer{border-top:1px solid var(--paper-deep);justify-content:space-between;align-items:center;gap:24px;padding-block:28px 44px;display:flex}.article-footer p{color:#687168;margin:0}@media (max-width:900px){.identity-card{width:min(390px,100vw - 150px);left:78px}.identity-copy,.identity-status{display:none}.world-nav{left:14px}.content-dialog{width:calc(100vw - 30px);max-height:calc(100dvh - 30px)}.architecture-notes,.principle-grid,.component-grid,.skill-grid,.blog-grid{grid-template-columns:1fr}}@media (max-width:640px){.identity-card{width:138px;box-shadow:0 10px 24px var(--shadow);border-left-width:3px;padding:10px 10px 9px;top:12px;left:12px}.identity-card .eyebrow,.identity-copy{display:none}.identity-card h1{white-space:nowrap;font-size:.72rem;line-height:1.25}.snake-title{white-space:nowrap;margin-top:4px;font-size:.4rem;line-height:1.35}.identity-status{gap:5px;margin-top:6px;font-size:.55rem}.identity-status span:last-child{display:none}.settings-wrap{top:14px;right:14px}.settings-bar{width:min(260px,100vw - 28px);position:fixed;top:70px;right:14px}.world-nav{top:auto;left:14px;right:14px;bottom:calc(76px + env(safe-area-inset-bottom,0px));grid-template-columns:repeat(8,minmax(0,1fr));gap:2px;max-width:none;display:grid;overflow:visible;transform:none}.world-nav-label,.nav-name,.nav-visited{display:none!important}.world-nav-item,.world-nav:hover .world-nav-item,.world-nav:focus-within .world-nav-item{grid-template-columns:minmax(0,1fr);width:100%;min-width:0;padding-inline:1px}.nav-code{width:100%}.help-trigger{left:calc(14px + env(safe-area-inset-left,0px));bottom:calc(14px + env(safe-area-inset-bottom,0px))}.fire-control{right:calc(14px + env(safe-area-inset-right,0px));bottom:calc(14px + env(safe-area-inset-bottom,0px))}.quality-badge{right:calc(82px + env(safe-area-inset-right,0px));bottom:calc(14px + env(safe-area-inset-bottom,0px))}.control-hint,.fallback-trigger{display:none}.tutorial-dialog,.completion-dialog{padding:28px 22px}.tutorial-grid,.education-grid,.form-grid{grid-template-columns:1fr}.content-dialog{width:calc(100vw - 18px);max-height:calc(100dvh - 18px)}.modal-article{padding:30px 20px}.project-heading{grid-template-columns:1fr}.project-mark{grid-row:1;width:72px}.kageflow-capture{box-shadow:7px 7px 0 var(--paper-deep);border-width:5px}.kageflow-capture figcaption{bottom:8px;right:8px}.section-heading{display:block}.section-heading>p{text-align:left}.architecture-panel{padding:20px}.architecture-flow b{transform:rotate(90deg)}.timeline li{grid-template-columns:54px 1fr}.timeline li>span{width:46px;height:46px}.resume-sheet header,.fallback-header{display:grid}.resume-sheet section{grid-template-columns:1fr}.fallback-header,.fallback-nav,.fallback-section,.article-site-header,.article-shell,.article-footer{width:min(100% - 28px,1160px)}.article-site-header{align-items:flex-start}.article-site-header nav{justify-content:flex-end}.article-site-header nav a{padding:6px}.blog-article{padding:28px 20px;box-shadow:7px 7px #d8c6aa99}.article-header h1{font-size:clamp(1.35rem,7vw,2rem)}.article-body{font-size:1rem}.article-body pre{margin-inline:-8px;padding:18px 16px}}@media (prefers-reduced-motion:reduce){.loading-screen,.loading-track span,.toast,.world-nav-item,.fire-control,.egg,.hatchling{transition-duration:1ms;animation-duration:1ms;animation-iteration-count:1}}
