:root{color-scheme:dark;--ink:#f0eee6;--muted:#aaa99f;--paper:#101311;--panel:#171b18;--line:#343a34;--signal:#c7ff4a;--signal-soft:#263516;--max-width:74rem;background:var(--paper);color:var(--ink);font-family:IBM Plex Mono,Cascadia Code,SFMono-Regular,Consolas,monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:linear-gradient(#c7ff4a06 1px, transparent 1px), linear-gradient(90deg, #c7ff4a06 1px, transparent 1px), var(--paper);min-width:20rem;color:var(--ink);background-size:3rem 3rem;margin:0;line-height:1.65}a{color:inherit;text-underline-offset:.25em;text-decoration-thickness:1px}a:hover{color:var(--signal)}a:focus-visible,button:focus-visible{outline:2px solid var(--signal);outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.08}.shell{width:min(calc(100% - 2rem), var(--max-width));margin-inline:auto}.skip-link{z-index:20;background:var(--signal);color:#0b0d0b;padding:.65rem .9rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:10;border-bottom:1px solid var(--line);background:#101311f0;position:relative}.header-inner{justify-content:space-between;align-items:center;gap:2rem;min-height:4.75rem;display:flex}.brand{white-space:nowrap;align-items:center;gap:.75rem;font-weight:700;text-decoration:none;display:inline-flex}.brand-mark{border:1px solid var(--signal);width:2rem;height:2rem;color:var(--signal);place-items:center;font-size:.75rem;display:grid}.nav-list{text-transform:uppercase;letter-spacing:.06em;flex-wrap:wrap;justify-content:flex-end;gap:.25rem 1.25rem;margin:0;padding:0;font-size:.78rem;list-style:none;display:flex}.nav-list a{text-decoration:none}.nav-list a[aria-current=page]{color:var(--signal)}.hero{grid-template-columns:minmax(0,1.45fr) minmax(16rem,.55fr);align-items:end;gap:clamp(2rem,7vw,7rem);min-height:calc(100svh - 4.75rem);padding-block:clamp(5rem,11vw,9rem) 4rem;display:grid;position:relative}.eyebrow,.section-index,.status-line{color:var(--signal);letter-spacing:.12em;text-transform:uppercase;font-size:.75rem;font-weight:700}.hero h1{letter-spacing:-.055em;max-width:12ch;margin-bottom:2rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(3.4rem,9vw,8.4rem);font-weight:400}.hero h1 span{color:var(--signal);font-family:inherit;font-style:italic;display:block}.hero-summary{color:#d2d0c8;max-width:43rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.2rem,2vw,1.55rem)}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:2.5rem;display:flex}.button{border:1px solid var(--line);text-transform:uppercase;letter-spacing:.07em;justify-content:center;align-items:center;min-height:3rem;padding:.7rem 1rem;font-size:.75rem;text-decoration:none;display:inline-flex}.button-primary{border-color:var(--signal);background:var(--signal);color:#0b0d0b}.hero-aside{border-top:1px solid var(--signal);padding-top:1.25rem}.hero-aside dl{margin:2rem 0 0}.hero-aside div{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:1rem;padding-block:.8rem;display:grid}.hero-aside dt{color:var(--muted)}.hero-aside dd{text-align:right;margin:0}.section{border-top:1px solid var(--line);padding-block:clamp(5rem,9vw,8rem);scroll-margin-top:2rem}.section-heading{grid-template-columns:minmax(8rem,.35fr) minmax(0,1fr);gap:2rem;margin-bottom:clamp(2.5rem,6vw,5rem);display:grid}.section-heading h2,.page-intro h1{letter-spacing:-.045em;margin-bottom:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.6rem,6vw,5.6rem);font-weight:400}.section-heading p:last-child{max-width:44rem;color:var(--muted);margin-bottom:0}.about-grid,.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2rem,6vw,6rem);display:grid}.about-copy{font-family:Georgia,Times New Roman,serif;font-size:clamp(1.35rem,2.3vw,1.85rem)}.principles,.skill-list{margin:0;padding:0;list-style:none}.principles li,.skill-list li{border-bottom:1px solid var(--line);gap:1rem;padding-block:.9rem;display:flex}.principles li:before{color:var(--signal);content:"//"}.feature-panel{border:1px solid var(--line);background:var(--panel);grid-template-columns:1fr auto;align-items:end;gap:2rem;padding:clamp(1.5rem,5vw,3.5rem);display:grid}.feature-panel h3{margin-bottom:1rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,4vw,3.6rem);font-weight:400}.feature-panel p{max-width:45rem;color:var(--muted);margin-bottom:0}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.project-card{border:1px solid var(--line);background:var(--panel);min-width:0;display:grid}.project-visual{border-bottom:1px solid var(--line);min-height:13rem;color:var(--signal);background:linear-gradient(135deg,#c7ff4a29,#0000 60%),repeating-linear-gradient(90deg,#0000 0 2rem,#c7ff4a0a 2rem calc(2rem + 1px));place-items:center;text-decoration:none;display:grid;position:relative;overflow:hidden}.project-visual:before,.project-visual:after{border-color:var(--signal);opacity:.55;content:"";width:5rem;height:5rem;position:absolute}.project-visual:before{border-top:1px solid;border-left:1px solid;top:1.25rem;left:1.25rem}.project-visual:after{border-bottom:1px solid;border-right:1px solid;bottom:1.25rem;right:1.25rem}.project-visual img{object-fit:cover;width:100%;height:100%}.project-visual span{letter-spacing:.14em;text-transform:uppercase;font-size:.75rem}.project-card-content{flex-direction:column;padding:clamp(1.25rem,4vw,2rem);display:flex}.project-card-meta{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;gap:1rem;font-size:.68rem;display:flex}.project-card h3{margin:2rem 0 1rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.8rem,3.5vw,2.7rem);font-weight:400}.project-card h3 a{text-decoration:none}.project-card-content>p{color:var(--muted)}.project-card-actions{text-transform:uppercase;flex-wrap:wrap;gap:1rem;margin-top:auto;padding-top:2rem;font-size:.72rem;display:flex}.section-action{text-align:right;margin-top:2rem}.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.skill-group{border-top:2px solid var(--signal);background:var(--panel);padding:1.5rem}.skill-group h3{text-transform:uppercase;letter-spacing:.08em;margin-bottom:1.5rem;font-size:.8rem}.skill-list li{color:var(--muted);font-size:.9rem}.contact-link{border-bottom:1px solid var(--line);padding-block:1rem;font-size:clamp(1rem,2vw,1.35rem);display:block}.pending{color:var(--muted)}.page-intro{padding-block:clamp(5rem,12vw,10rem)}.page-intro h1{max-width:13ch;margin-bottom:2rem}.page-intro h1.page-intro-lead{max-width:100%}.page-intro-subtitle{letter-spacing:-.015em;color:var(--muted);max-width:52rem;margin-top:1.5rem;font-size:clamp(1.25rem,2.2vw,1.85rem);font-style:italic;font-weight:400;line-height:1.35;display:block}.page-intro>p:last-child{max-width:48rem;color:var(--muted);font-family:Georgia,Times New Roman,serif;font-size:1.35rem}.project-intro{padding-block:clamp(5rem,12vw,10rem)}.project-intro>.eyebrow{text-decoration:none}.project-intro h1{letter-spacing:-.055em;max-width:12ch;margin:1.5rem 0 2rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(3.4rem,9vw,8rem);font-weight:400}.project-intro>p{max-width:48rem;color:var(--muted);font-family:Georgia,Times New Roman,serif;font-size:clamp(1.2rem,2vw,1.55rem)}.project-detail-grid{grid-template-columns:minmax(12rem,.35fr) minmax(0,1fr);gap:clamp(3rem,8vw,8rem);display:grid}.project-detail-aside{color:var(--muted)}.project-facts{margin-top:2rem}.project-facts div{border-bottom:1px solid var(--line);padding-block:.75rem}.project-facts dt{color:var(--signal);text-transform:uppercase;letter-spacing:.07em;font-size:.68rem}.project-facts dd{margin:.35rem 0 0}.project-copy{max-width:48rem}.project-copy h2{margin:0 0 1rem;padding-top:3rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.8rem,4vw,3rem);font-weight:400}.project-copy h2:first-child{padding-top:0}.project-copy p{color:var(--muted)}.project-highlights{margin:0;padding:0;list-style:none}.project-highlights li{border-bottom:1px solid var(--line);color:var(--muted);padding:1rem 0 1rem 2rem;position:relative}.project-highlights li:before{color:var(--signal);content:"//";position:absolute;left:0}.project-link-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.project-link-groups a{border:1px solid var(--line);flex-direction:column;gap:.5rem;padding:1rem;text-decoration:none;display:flex}.project-link-groups span{color:var(--muted);text-transform:uppercase;font-size:.68rem}.game-embed-section{border-top:1px solid var(--line);padding-block:clamp(4rem,8vw,7rem);scroll-margin-top:2rem}.game-frame-shell{border:1px solid var(--line);background:#080b09;overflow:hidden}.game-frame{border:0;width:100%;height:1px;display:block;overflow:hidden}.error-page{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:3rem;min-height:calc(100svh - 9rem);padding-block:clamp(5rem,12vw,10rem);display:grid}.error-page h1{letter-spacing:-.055em;margin-bottom:2rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(4rem,12vw,10rem);font-weight:400}.error-page>div>p:not(.eyebrow){max-width:42rem;color:var(--muted);font-family:Georgia,Times New Roman,serif;font-size:1.3rem}.error-code{color:#0000;-webkit-text-stroke:1px var(--line);margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(8rem,24vw,22rem);line-height:.75}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.timeline-controls{justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:2.5rem;display:flex}.timeline-filters{flex-wrap:wrap;gap:.5rem;display:flex}.timeline-filters button{border:1px solid var(--line);background:var(--paper);min-height:2.5rem;color:var(--muted);font:inherit;cursor:pointer;padding:.5rem .75rem;font-size:.72rem;transition:border-color .16s,background .16s,color .16s}.timeline-filters button:hover,.timeline-filters button[aria-pressed=true]{border-color:var(--signal);background:var(--signal-soft);color:var(--signal)}.timeline-controls>p{color:var(--muted);white-space:nowrap;text-transform:uppercase;letter-spacing:.07em;margin:0;font-size:.72rem}.timeline-frame{position:relative}.current-role{border:1px solid var(--signal);background:var(--panel);gap:1.5rem;margin-block:clamp(2rem,5vw,3rem);padding:clamp(1.75rem,4vw,3rem);display:grid}.current-role-head{gap:.6rem;display:grid}.current-role-title{letter-spacing:-.025em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.85rem,3.5vw,2.75rem);font-weight:400;line-height:1.05}.current-role-meta{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;font-size:.78rem;display:flex}.current-role-pulse{background:var(--signal);vertical-align:middle;border-radius:50%;width:.5rem;height:.5rem;margin-left:.4rem;display:inline-block;position:relative}.current-role-pulse:after{content:"";border:1px solid var(--signal);border-radius:50%;animation:2.4s ease-out infinite current-role-pulse;position:absolute;inset:-3px}@keyframes current-role-pulse{0%{opacity:.7;transform:scale(.8)}to{opacity:0;transform:scale(2.6)}}.current-role-summary{max-width:none;color:var(--ink);margin:0;font-size:1.05rem;line-height:1.55}.current-role-focus{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.current-role-focus li{border:1px solid var(--line);color:var(--muted);text-transform:uppercase;letter-spacing:.07em;padding:.3rem .55rem;font-size:.7rem}@media (prefers-reduced-motion:reduce){.current-role-pulse:after{animation:none}}.timeline-panel[hidden]{display:none}.timeline-panel{z-index:2;position:absolute;bottom:calc(100% + 5rem);left:0;right:0}.timeline-panel-frame{border:1px solid var(--line);background:var(--panel);z-index:1;gap:1.5rem;padding:clamp(1.75rem,4vw,3rem);animation:.24s both timeline-panel-in;display:grid;position:relative}@keyframes timeline-panel-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.timeline-panel-frame[hidden]{display:none}.timeline-panel-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.timeline-panel-header .eyebrow{color:var(--signal);text-transform:uppercase;letter-spacing:.07em;margin:0 0 .5rem;font-size:.7rem}.timeline-panel-title{margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.75rem,3vw,2.5rem);line-height:1.05}.timeline-panel-meta{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin:.5rem 0 0;font-size:.78rem}.timeline-panel-close{border:1px solid var(--line);background:var(--paper);width:2rem;height:2rem;color:var(--muted);font:inherit;cursor:pointer;flex-shrink:0;padding:0;font-size:1.1rem;line-height:1;transition:border-color .16s,color .16s}.timeline-panel-close:hover{border-color:var(--signal);color:var(--signal)}.timeline-panel-summary{max-width:none;color:var(--ink);margin:0;font-size:1rem;line-height:1.55}.timeline-panel-focus{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.timeline-panel-focus li{border:1px solid var(--line);color:var(--muted);text-transform:uppercase;letter-spacing:.07em;padding:.3rem .55rem;font-size:.7rem}.timeline-panel-accomplishments{gap:1rem;margin-top:.5rem;display:grid}.accomplishment-card{border:1px solid var(--line);background:var(--paper);gap:.6rem;padding:1.25rem;display:grid}.accomplishment-card-head{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;flex-wrap:wrap;align-items:baseline;gap:.4rem 1rem;font-size:.7rem;display:flex}.accomplishment-card-date{color:var(--muted)}.accomplishment-card-category{color:var(--signal)}.accomplishment-card-role{color:var(--signal);font-weight:700}.accomplishment-card-title{margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.15rem,2vw,1.5rem);line-height:1.15}.accomplishment-card-summary{color:var(--muted);margin:0;font-size:.88rem}.accomplishment-card-details{border-top:1px solid var(--line);margin-top:.25rem;padding-top:.5rem}.accomplishment-card-details summary{cursor:pointer;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.7rem;list-style:none}.accomplishment-card-details summary::-webkit-details-marker{display:none}.accomplishment-card-details summary:after{content:"+";color:var(--signal);margin-left:.5rem}.accomplishment-card-details[open] summary:after{content:"−"}.accomplishment-card-body{gap:1rem;padding-top:1rem;display:grid}.accomplishment-card-impact{color:var(--muted)}.accomplishment-card-related{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-top:.25rem;padding-top:.75rem;display:flex}.accomplishment-card-related-label{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.7rem}.related-role-list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.related-role-chip{border:1px solid var(--line);background:var(--signal-soft);color:var(--signal);font:inherit;cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.4rem .6rem;font-size:.72rem;transition:border-color .16s;display:inline-flex}.related-role-chip:hover{border-color:var(--signal)}.related-role-chip-title{font-weight:700}.related-role-chip-org{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-size:.65rem}.timeline-spine{z-index:1;height:9rem;margin:4rem .25rem 0;position:relative}.timeline-mobile{display:none}.timeline-axis{background:var(--line);height:1px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.timeline-ticks{pointer-events:none;position:absolute;inset:0}.timeline-tick{top:50%;left:var(--tick-left,50%);background:var(--line);opacity:.55;width:1px;height:.5rem;position:absolute;transform:translate(-50%)}.timeline-nodes{position:absolute;inset:0}.timeline-node{top:50%;left:var(--role-x,50%);cursor:pointer;width:0;height:0;font:inherit;color:inherit;text-align:center;z-index:2;background:0 0;border:0;padding:0;transition:opacity .16s;position:absolute}.timeline-node:focus-visible{outline:none}.timeline-node:focus-visible .timeline-node-stack{outline:1px solid var(--signal);outline-offset:4px}.timeline-node-stack{flex-direction:column;align-items:center;display:flex;position:absolute;left:50%;transform:translate(-50%)}.timeline-node[data-role-side=above] .timeline-node-stack{flex-direction:column-reverse;bottom:0}.timeline-node[data-role-side=below] .timeline-node-stack{flex-direction:column;top:0}.timeline-node-marker{border:1px solid var(--signal);background:var(--paper);flex-shrink:0;width:.65rem;height:.65rem;transition:transform .2s,background .16s,box-shadow .2s,border-color .16s;display:block;position:relative;transform:rotate(45deg)}.timeline-node-tab{background:var(--line);width:1px;height:1.1rem;transition:background .16s}.timeline-node:hover .timeline-node-marker{background:var(--signal-soft);transform:rotate(45deg)scale(1.25)}.timeline-node-active .timeline-node-marker{background:var(--signal);border-color:var(--signal);box-shadow:0 0 0 4px var(--signal-soft)}.timeline-node-active .timeline-node-tab{background:var(--signal)}.timeline-node-active .timeline-node-title{color:var(--signal)}.timeline-node-label{text-align:center;white-space:normal;background:0 0;border:1px solid #0000;flex-direction:column;align-items:center;gap:.35rem;width:max-content;max-width:15rem;padding:.55rem .8rem;transition:border-color .16s,background .16s;display:inline-flex}.timeline-node:hover .timeline-node-label{border-color:var(--line);background:var(--panel)}.timeline-node-active .timeline-node-label{border-color:var(--signal);background:var(--panel)}.timeline-node-title{color:var(--ink);text-align:center;text-wrap:balance;font-family:Georgia,Times New Roman,serif;font-size:.95rem;font-style:italic;line-height:1.15}.timeline-node-org{color:var(--signal);text-transform:uppercase;letter-spacing:.1em;text-align:center;white-space:normal;overflow-wrap:anywhere;font-size:.62rem;font-weight:700}.timeline-node-dates{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;text-align:center;white-space:normal;font-size:.62rem}.timeline-node-dim{opacity:.28}.timeline-node-dim .timeline-node-label{background:0 0;border-color:#0000}.timeline-node-pulse{border:1px solid var(--signal);pointer-events:none;animation:2.4s ease-out infinite timeline-pulse;position:absolute;inset:-3px}@keyframes timeline-pulse{0%{opacity:.7;transform:scale(.8)}to{opacity:0;transform:scale(2.4)}}.timeline-connector-host{pointer-events:none;z-index:0;position:absolute;inset:-20rem 0 0}.timeline-connector{top:var(--connector-top,0);bottom:var(--connector-bottom,0);left:var(--connector-x,50%);background:var(--signal);width:1px;opacity:var(--connector-opacity,0);transition:opacity .2s,top .24s,bottom .24s;position:absolute;transform:translate(-50%)}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding-block:2rem;font-size:.75rem}.footer-inner{justify-content:space-between;gap:1rem;display:flex}.footer-inner p{margin:0}@media (width<=52rem){.header-inner{flex-direction:column;align-items:flex-start;gap:1rem;padding-block:1rem}.nav-list{justify-content:flex-start}.hero{grid-template-columns:1fr;min-height:auto}.section-heading,.about-grid,.contact-grid,.skills-grid,.project-grid,.project-detail-grid,.project-link-groups{grid-template-columns:1fr}.timeline-controls{flex-direction:column;align-items:flex-start}.timeline-frame{grid-template-rows:auto;row-gap:0}.timeline-desktop{display:none}.timeline-mobile{gap:.75rem;display:grid}.timeline-mobile-role{border:1px solid var(--line);background:var(--panel)}.timeline-mobile-role[hidden]{display:none}.timeline-mobile-role-dim{opacity:.32}.timeline-mobile-role summary{cursor:pointer;padding:1.25rem;list-style:none;display:block}.timeline-mobile-role summary::-webkit-details-marker{display:none}.timeline-mobile-role-head{flex-direction:column;gap:.4rem;display:flex}.timeline-mobile-role-title{font-family:Georgia,Times New Roman,serif;font-size:1.25rem;line-height:1.15}.timeline-mobile-role-meta{color:var(--signal);text-transform:uppercase;letter-spacing:.07em;font-size:.7rem}.timeline-mobile-role-body{gap:1rem;padding:0 1.25rem 1.25rem;display:grid}.timeline-mobile-role-summary{color:var(--muted);margin:0;font-size:.9rem}.timeline-mobile-accomplishments{gap:.75rem;display:grid}.error-page{grid-template-columns:1fr}.error-code{display:none}}@media (width<=35rem){.hero h1{font-size:clamp(3rem,17vw,5rem)}.feature-panel{grid-template-columns:1fr}.project-list li:before{margin-bottom:.5rem}.project-status{width:fit-content}.footer-inner{flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
