@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{--night:#090c11;--panel:#151a20;--panel-soft:#202831;--ink:#eee9dc;--soft:#9fa4a6;--amber:#ff6a00;--teal:#6d9e99;--moss:#83966f;--line:#eee9dc26;--graphics-bg:var(--night);--graphics-surface:var(--panel);--graphics-line:var(--line);--graphics-highlight:var(--ink);--graphics-accent:var(--amber);--display:"Manrope",sans-serif;--mono:"DM Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--night);color:var(--ink);font-family:var(--display);margin:0}body.modal-open{overflow:hidden}a,button{-webkit-tap-highlight-color:transparent}a{color:inherit}button{font:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--amber);outline-offset:4px}.app{background:0 0;min-height:100vh;position:relative;overflow:hidden}.app:after{z-index:0;content:"";pointer-events:none;opacity:.09;background-image:repeating-radial-gradient(circle at 17% 31%,#ffffff6b 0 .6px,#0000 .8px 3px),repeating-radial-gradient(circle at 73% 64%,#ffffff4d 0 .5px,#0000 .7px 4px);background-size:13px 11px,17px 19px;animation:.22s steps(2,end) infinite film-grain-drift;position:fixed;inset:0}@keyframes film-grain-drift{0%{transform:translate(0)}50%{transform:translate(-1%,1%)}to{transform:translate(1%,-1%)}}.graphics-background{z-index:0;pointer-events:none;opacity:.9;width:100%;height:100%;position:fixed;inset:0}.app.is-camera-mode .graphics-background{pointer-events:auto;cursor:crosshair}.app.is-camera-mode>main,.app.is-camera-mode>.site-footer{visibility:hidden;pointer-events:none}.app>:not(.graphics-background){z-index:1;position:relative}.shell{width:min(1240px,100% - 64px);margin:0 auto}.site-header{z-index:10;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#090c11d1;border-bottom:1px solid #eee9dc14;position:sticky;top:0}.site-header .container,.site-footer .container{justify-content:space-between;align-items:center;width:min(1240px,100% - 64px);min-height:88px;margin:auto;display:flex}.site-header .container{position:relative}.dino-mode-group{width:106px;height:42px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.dino-controls{color:var(--soft);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;padding-bottom:8px;font-size:.54rem;position:absolute;top:48px;left:50%;transform:translate(-50%)}.brand-mark{color:var(--ink);font-family:var(--mono);letter-spacing:.08em;align-items:center;gap:9px;font-size:.66rem;text-decoration:none;display:flex}.brand-mark__dot{background:var(--amber);width:8px;height:8px;box-shadow:0 0 18px var(--amber);border-radius:50%}.site-nav{gap:25px;display:flex}.dino-mode{border:1px solid var(--line);width:42px;height:42px;color:var(--soft);cursor:pointer;background:#151a20d1;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.5rem;line-height:1;display:inline-flex;position:absolute;top:50%;left:0;transform:translateY(-50%)}.camera-mode{border:1px solid var(--line);width:34px;height:34px;color:var(--soft);cursor:pointer;background:#151a20d1;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.15rem;line-height:1;display:inline-flex;position:absolute;top:50%;left:64px;transform:translateY(-50%)}.camera-mode:hover,.camera-mode.is-active,.dino-mode:hover,.dino-mode.is-active{border-color:var(--amber);color:var(--ink);background:#262e36eb}.dino-mode__emoji{line-height:1;display:block;transform:translateY(1px)}.nav-link{color:var(--soft);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;font-size:.61rem;text-decoration:none;transition:color .2s}.nav-link:hover,.nav-link--accent{color:var(--amber)}.kicker{color:var(--amber);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;margin:0 0 12px;font-size:.65rem}.button{border:1px solid var(--line);color:var(--ink);font-family:var(--mono);align-items:center;gap:10px;padding:11px 15px;font-size:.66rem;text-decoration:none;display:inline-flex}.button--light{background:var(--ink);color:var(--night)}.button--ghost{background:0 0}.compact-home{isolation:isolate;background:radial-gradient(circle at 14% 37%,#7d3d2c24,#0000 22%),0 0;min-height:100vh;position:relative}.compact-home>*{z-index:1;position:relative}.compact-hero__about{max-width:560px;margin-top:18px}.compact-hero__about p{color:var(--soft);margin:7px 0;font-size:.83rem;line-height:1.55}.compact-hero{padding:72px 0}.compact-hero__panel{background:var(--panel);width:min(700px,100%);padding:30px 34px}.compact-hero__about .compact-links{margin-top:15px}.compact-links a{color:var(--amber);text-decoration:none}.workbench{padding:32px 0;position:relative}.workbench__heading,.compact-section-heading{background:var(--panel);grid-template-columns:1fr .65fr;align-items:end;gap:60px;margin-bottom:0;padding:24px 28px;display:grid;position:relative;overflow:visible}.workbench h2,.compact-section-heading h2{letter-spacing:-.08em;margin:0;font-size:clamp(1.85rem,3vw,3.25rem);line-height:.88}.workbench__heading>p,.compact-section-heading>p{color:var(--soft);margin:0 0 2px;font-size:.86rem;line-height:1.55}.workbench__browser{background:#090c1194;grid-template-columns:.62fr 1.38fr;align-items:stretch;gap:8px;height:auto;min-height:355px;display:grid;position:relative}.runner-character{z-index:3;pointer-events:none;width:48px;height:48px;image-rendering:pixelated;will-change:transform;background-image:url(/dino1.png);background-position:0 0;background-repeat:no-repeat;background-size:1152px 48px;position:absolute;top:0;left:0;overflow:visible}.app>.runner-character{z-index:3;position:absolute}.runner-enemy{z-index:20;opacity:1;pointer-events:auto;cursor:pointer;display:block}.app>.runner-enemy{z-index:20}.runner-enemy.is-jailed{isolation:isolate}.runner-enemy.is-jailed:after{z-index:1;content:"";pointer-events:none;width:80%;height:80%;image-rendering:pixelated;background:url(/jail.png) 50%/100% 100% no-repeat;position:absolute;top:5px;left:5px}.library-list{min-width:0;min-height:0;height:var(--detail-height,auto);scrollbar-color:var(--amber)var(--panel);scrollbar-width:thin;grid-template-columns:1fr;align-content:start;gap:4px;display:grid;overflow:hidden auto}.library-item{background:var(--panel);min-width:0;max-width:100%;color:var(--ink);text-align:left;cursor:pointer;border:0;grid-template-columns:84px minmax(0,1fr) auto;align-items:center;gap:14px;padding:10px 14px;transition:background .2s,transform .2s;display:grid}.library-item:hover,.library-item.is-active{background:#273039;transform:translate(3px)}.library-item.is-active{box-shadow:inset 3px 0 var(--amber)}.library-item__art{aspect-ratio:16/9;background:linear-gradient(135deg,#4a3025,#18272b);display:block;overflow:hidden}.library-item__art img{object-fit:cover;width:100%;height:100%}.library-item__copy{gap:4px;min-width:0;display:grid;overflow:hidden}.library-item__copy small{color:var(--amber);font-family:var(--mono);text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:.54rem;overflow:hidden}.library-item__copy strong{letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;line-height:1.3;overflow:hidden}.library-item__mark{color:var(--amber);font-size:.7rem}.detail-panel{background:#1a2025;min-height:0;position:relative;overflow:visible}.media-carousel{background:#10151a;padding-bottom:10px;position:relative}.media-carousel__stage{aspect-ratio:16/9;background:#10151a;width:100%;max-height:62vh;margin:0 auto;position:relative}.media-carousel__stage img,.media-carousel__stage video{object-fit:cover;object-position:center;background:#10151a;width:100%;height:100%;display:block}.media-carousel__stage audio{width:88%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.media-carousel__nav{border:1px solid var(--line);width:42px;height:42px;color:var(--ink);cursor:pointer;background:#090c11b8;border-radius:50%;justify-content:center;align-items:center;font-size:1.4rem;transition:border-color .2s,color .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.media-carousel__nav--prev{left:14px}.media-carousel__nav--next{right:14px}.media-carousel__nav:hover{border-color:var(--amber);color:var(--amber)}.media-carousel__caption{color:var(--soft);font-family:var(--mono);text-align:center;margin:12px 24px 0;font-size:.66rem}.media-carousel__dots{justify-content:center;gap:8px;margin:12px 0 16px;display:flex}.media-carousel__dots button{background:var(--line);cursor:pointer;border:0;border-radius:50%;width:7px;height:7px;padding:0}.media-carousel__dots button.is-active{background:var(--amber)}.detail-panel__body{padding:26px 32px 32px}.detail-panel__meta{color:var(--amber);font-family:var(--mono);text-transform:uppercase;flex-wrap:wrap;gap:14px;font-size:.62rem;display:flex}.detail-panel__body h3{letter-spacing:-.04em;margin:10px 0 0;font-size:clamp(1.7rem,3vw,2.6rem);line-height:1.02}.personal-workbench{padding-top:32px}.detail-panel__body>p{max-width:640px;color:var(--soft);margin:12px 0 0;font-size:.88rem;line-height:1.55}.detail-panel__list{max-width:640px;margin:16px 0 0;padding-left:18px}.detail-panel__list li{color:var(--soft);margin-bottom:6px;font-size:.83rem;line-height:1.5}.detail-panel__nolink{color:var(--soft);font-family:var(--mono);margin-top:20px;font-size:.68rem;display:inline-block}.detail-panel .button{margin-top:20px}.selection-view__facts{color:var(--teal);font-family:var(--mono);flex-wrap:wrap;gap:7px 13px;margin-top:20px;font-size:.58rem;display:flex}.maintenance-inline{border-top:1px solid var(--line);background:var(--panel);font-family:var(--mono);grid-template-columns:auto 1fr;align-items:baseline;gap:22px;margin-top:24px;padding:18px 28px;font-size:.6rem;display:grid}.maintenance-inline span{color:var(--amber);text-transform:uppercase}.maintenance-inline p{color:var(--soft);margin:0}.workbench>.maintenance-inline{margin-top:0}.personal-compact{padding:48px 0 55px}.personal-grid{grid-template-columns:1.3fr .7fr .9fr 1fr;gap:10px;height:190px;display:grid}.personal-tile{color:var(--ink);text-align:left;cursor:pointer;background:#1a2220;border:0;padding:0;position:relative;overflow:hidden}.personal-tile:nth-child(2){transform:translateY(18px)}.personal-tile:nth-child(3){transform:translateY(-8px)}.personal-tile img{object-fit:cover;opacity:.72;width:100%;height:100%;transition:transform .45s,opacity .3s}.personal-tile:hover img{opacity:.5;transform:scale(1.08)}.personal-tile>span{background:linear-gradient(#0000,#080b0cf0);position:absolute;inset:45% 0 0}.personal-tile b,.personal-tile small{z-index:1;position:absolute;left:13px;right:13px}.personal-tile b{letter-spacing:-.06em;font-size:1.2rem;bottom:27px}.personal-tile small{color:var(--amber);font-family:var(--mono);font-size:.55rem;bottom:12px}.compact-bottom{border-top:1px solid var(--line);grid-template-columns:1.2fr .8fr;gap:70px;padding:55px 0 60px;display:grid}.compact-about{grid-template-columns:1fr 90px;gap:25px;display:grid}.compact-about h2{letter-spacing:-.09em;margin:0 0 15px;font-size:2.7rem}.compact-about p{max-width:600px;color:var(--soft);margin:9px 0;font-size:.82rem;line-height:1.55}.compact-about img{object-fit:cover;filter:saturate(.7);clip-path:polygon(8% 0,100% 8%,92% 100%,0 90%);width:90px;height:116px}.compact-links{font-family:var(--mono);gap:20px;margin-top:18px;font-size:.62rem;display:flex}.learning-compact{border-left:1px solid var(--line);align-content:center;gap:6px;padding-left:35px;display:grid}.learning-compact strong{letter-spacing:-.07em;font-size:1.65rem}.learning-compact strong:nth-of-type(2){color:var(--teal)}.learning-compact p{color:var(--soft);font-family:var(--mono);margin:10px 0 0;font-size:.58rem;line-height:1.6}.compact-contact{border-top:1px solid var(--line);background:var(--panel);justify-content:space-between;align-items:center;padding:25px 22px 42px;display:flex}.compact-contact .kicker{margin:0}.compact-contact>a{color:var(--amber);font-family:var(--mono);font-size:.72rem;text-decoration:none}.resume-page{background:var(--panel);width:min(960px,100% - 64px);margin:72px auto 80px;padding:72px 48px}.resume-header{justify-content:space-between;align-items:end;gap:28px;padding-bottom:35px;display:flex}.resume-links{font-family:var(--mono);gap:18px;margin-top:10px;font-size:.68rem;display:flex}.resume-links a{color:var(--amber);text-decoration:none}.resume-page h1{letter-spacing:-.1em;white-space:nowrap;margin:0;font-size:clamp(2.4rem,4.5vw,5.5rem);line-height:.82}.resume-page h2{color:var(--amber);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;margin:50px 0 16px;font-size:.68rem;font-weight:400}.resume-page h3{margin:0;font-size:1.05rem}.resume-page section>p,.resume-entry p{color:var(--soft);line-height:1.6}.resume-entry{border-top:1px solid var(--line);grid-template-columns:.7fr 1.3fr;gap:28px;padding:16px 0;display:grid}.resume-entry>div p{color:var(--amber);font-family:var(--mono);margin:6px 0 0;font-size:.62rem}.resume-entry>p{margin:0}.resume-entry ul{margin:0;padding-left:18px}.resume-entry li{color:var(--soft);margin:0 0 8px;line-height:1.55}.resume-entry li:last-child{margin-bottom:0}.resume-entry--primary{border-top:0;padding-top:0}.resume-note{color:var(--soft);margin:18px 0 0;font-size:.85rem;line-height:1.6}.resume-skills{grid-template-columns:1fr 1fr;gap:24px 40px;display:grid}.resume-skills h3{color:var(--amber);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;font-size:.62rem;font-weight:400}.resume-skills p{color:var(--soft);margin:6px 0 0;line-height:1.55}.site-footer{color:var(--soft);font-family:var(--mono);background:#07090d;font-size:.6rem}.site-footer .container{min-height:62px}.site-footer a{color:var(--amber);text-decoration:none}@media (max-width:760px){.shell,.site-header .container{width:min(100% - 32px,1240px)}.site-header .container{min-height:58px}.site-nav{gap:12px}.dino-mode-group,.dino-mode,.camera-mode,.dino-controls{display:none}.runner-character{display:none!important}.nav-link{font-size:.53rem}.compact-hero{min-height:0;padding:44px 0;display:block}.compact-hero__panel{padding:24px 22px}.compact-hero h1{font-size:clamp(2rem,8.5vw,3.2rem)}.workbench{padding:26px 0}.workbench__heading,.compact-section-heading{display:block}.workbench__heading>p,.compact-section-heading>p{margin-top:16px}.workbench__browser{height:auto;min-height:0;display:block}.library-list{grid-template-columns:1fr 1fr;height:auto;max-height:none;margin-bottom:10px;overflow-y:visible}.library-item{grid-template-columns:44px minmax(0,1fr);padding:7px}.library-item__mark{display:none}.library-item__copy strong{font-size:.7rem}.detail-panel__body{padding:22px}.media-carousel__stage{max-height:42vh}.media-carousel__nav{width:34px;height:34px;font-size:1.1rem}.maintenance-inline{display:block}.maintenance-inline p{margin-top:10px;line-height:1.6}.personal-compact{padding-top:35px}.personal-grid{grid-template-columns:1fr 1fr;gap:7px;height:280px}.personal-tile:nth-child(2),.personal-tile:nth-child(3){transform:none}.personal-tile b{font-size:.9rem}.compact-bottom{padding-top:38px;display:block}.compact-about{grid-template-columns:1fr 70px}.compact-about h2{font-size:2.3rem}.compact-about img{width:70px;height:92px}.learning-compact{border-top:1px solid var(--line);border-left:0;margin-top:38px;padding:26px 0 0}.compact-contact{padding:22px;display:block}.compact-contact>a{margin-top:10px;display:block}.resume-page{width:min(100% - 32px,960px);margin:44px auto;padding:44px 24px}.resume-page h1{font-size:clamp(1.8rem,8vw,3rem)}.resume-header,.resume-entry,.resume-skills{display:block}.resume-header .button{margin-top:22px}.resume-entry>p,.resume-entry ul{margin-top:8px}.resume-skills>div+div{margin-top:18px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media print{body{color:#111;background:#fff}.site-header,.site-footer,.print-button{display:none!important}.resume-page{color:#111;width:100%;max-width:none;padding:0}.resume-page h1,.resume-page h3{color:#111}.resume-page h2{color:#444}.resume-page section>p,.resume-entry p,.resume-entry li,.resume-skills p,.resume-note,.kicker{color:#333!important}.resume-links a{color:#111;text-decoration:underline}.resume-entry,section{break-inside:avoid}a[href]:after{content:""}}
