:root{color:var(--semantic-color-text);background:var(--semantic-color-surface);font-family:var(--semantic-font-body);font-synthesis:none;scroll-behavior:auto}*{box-sizing:border-box}body{margin:0;background:var(--semantic-color-surface)}button,input{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid currentColor;outline-offset:5px}.skip-link{position:fixed;z-index:100;top:-100px;left:20px;padding:12px;background:var(--semantic-color-text);color:var(--semantic-color-surface);max-width:calc(100% - 40px);min-height:44px}.skip-link:focus{top:20px}
.hero{position:relative;min-height:100svh;overflow:hidden;display:flex;flex-direction:column;isolation:isolate;background:var(--component-hero-background)}.hero-image,.hero-shade{position:absolute;inset:0;z-index:-1;pointer-events:none}
.site-header{display:flex;justify-content:space-between;align-items:center;gap:var(--primitive-space-5);padding:30px var(--semantic-layout-gutter);z-index:3;color:var(--semantic-color-text)}.wordmark{text-decoration:none;font-family:var(--semantic-font-display);font-size:var(--component-reading-body-size);letter-spacing:var(--primitive-type-tracking-minus_04em);white-space:nowrap}.wordmark-dot{margin-left:2px}.site-nav{display:flex;gap:clamp(22px,3.4vw,60px);align-items:center}.site-nav a,.site-nav button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:0;background:none;padding:6px 0;text-decoration:none;font:var(--primitive-type-weight500) var(--primitive-type-size11px)/var(--primitive-type-leading1_4) var(--semantic-font-utility);letter-spacing:var(--primitive-type-tracking_05em);color:inherit;white-space:nowrap}.site-nav a:hover,.site-nav button:hover{text-decoration:underline;text-underline-offset:5px}.site-nav button span{margin-left:14px}
.hero .site-header,.hero .site-nav{flex-wrap:wrap}.hero .wordmark{white-space:normal}
@media(max-width:1100px){.hero .site-header{flex-direction:column;align-items:stretch;gap:12px;padding:22px}.hero .site-nav{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px 12px;width:100%;min-width:0}.hero .site-nav a{grid-column:span 2}.hero .site-nav button{grid-column:span 3;white-space:normal}.hero .site-nav a,.hero .site-nav button{min-width:0;text-align:center}.hero .site-nav button span{margin-left:5px}}
.hero .site-nav a{text-transform:uppercase}
@media(max-width:700px){
  .hero .site-header{padding:var(--primitive-space-5) var(--primitive-space-5) 0;gap:var(--primitive-space-3)}
  .hero .wordmark{font-size:var(--primitive-type-size13px);letter-spacing:var(--primitive-type-tracking0);color:var(--component-terminal-muted)}
  .wordmark-name{display:none}
  .hero .site-nav{gap:var(--primitive-space-2)}
  .hero .site-nav a{font:var(--primitive-type-weight500) var(--primitive-type-size14px)/var(--primitive-type-leading1_5) var(--primitive-font-system);text-transform:none;letter-spacing:var(--primitive-type-tracking0);border-radius:var(--primitive-radius-control)}
  .hero .site-nav button{padding:var(--primitive-space-2);border:1px solid var(--component-terminal-border);border-radius:var(--component-terminal-radius);background:var(--component-terminal-bar);color:var(--component-terminal-muted);letter-spacing:var(--primitive-type-tracking0)}
  .hero .site-nav a:active,.hero .site-nav button:active{background:var(--component-terminal-pressed)}
}
.hero-layout{width:100%;max-width:var(--semantic-layout-max-width);margin:auto;display:grid;grid-template-columns:var(--component-hero-columns);align-items:center;padding:0 1.5% 0 3.6%}.hero-copy{position:relative;z-index:2;color:var(--component-hero-text);padding:30px 0;text-shadow:0 2px 18px rgba(13,21,28,.16)}.hero-copy h1{margin:0;font-family:var(--semantic-font-display);font-size:var(--component-hero-title-size);white-space:nowrap;font-weight:var(--primitive-type-weight400);letter-spacing:var(--component-hero-title-tracking);line-height:var(--component-hero-title-leading)}.hero-copy p{margin:40px 0 0 19%;font-size:var(--component-hero-subtitle-size);letter-spacing:var(--primitive-type-tracking_015em)}.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:20px;padding:25px var(--semantic-layout-gutter) 30px;color:var(--component-hero-footer-text);font:var(--primitive-type-weight500) var(--primitive-type-size10px)/var(--primitive-type-leading1_8) var(--semantic-font-utility);letter-spacing:var(--primitive-type-tracking_08em);text-shadow:0 1px 4px #151a1e}.scroll-cue{text-decoration:none}.scroll-cue span{font-size:var(--primitive-type-size18px);margin-left:12px;vertical-align:-2px}.scroll-cue:hover{text-decoration:underline}
.terminal-stage{position:relative;width:var(--component-terminal-stage-width);margin-left:var(--component-terminal-stage-margin);aspect-ratio:var(--component-terminal-stage-aspect);isolation:isolate}.terminal-metal{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;mask-image:radial-gradient(ellipse 64% 64% at 50% 50%,#000 49%,transparent 79%)}.terminal{position:absolute;z-index:2;left:var(--component-terminal-left);top:var(--component-terminal-top);width:var(--component-terminal-width);height:var(--component-terminal-height);display:flex;flex-direction:column;isolation:isolate;background:var(--component-terminal-background);color:var(--component-terminal-text);font:var(--component-terminal-font-weight) var(--component-terminal-body-size)/var(--component-terminal-body-leading) var(--component-terminal-font);box-shadow:var(--component-terminal-shadow);backdrop-filter:blur(var(--component-terminal-blur));-webkit-backdrop-filter:blur(var(--component-terminal-blur));border:1px solid rgba(245,250,255,.19)}.terminal::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(135deg,var(--component-terminal-sheen),transparent 45%,rgba(227,236,243,.18));mask-image:linear-gradient(transparent,#000 12%,#000 85%,transparent)}.terminal[hidden]{display:none}.terminal-bar{min-height:var(--component-terminal-bar-height);display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--component-terminal-bar);border-bottom:1px solid var(--component-terminal-border);font-size:var(--primitive-type-size10px);letter-spacing:var(--primitive-type-tracking_03em)}.terminal-lights{display:flex;gap:6px}.terminal-lights i{width:7px;height:7px;border-radius:50%;background:rgba(60,72,82,.5);box-shadow:inset 0 1px 1px rgba(255,255,255,.5)}.terminal-lights i:nth-child(2){opacity:.7}.terminal-lights i:nth-child(3){opacity:.45}.terminal-bar button{margin-left:auto;background:none;border:0;color:inherit;font-size:var(--primitive-type-size22px);line-height:var(--primitive-type-leading1);padding:7px}.terminal-body{flex:1;min-height:0;overflow:auto;padding:18px 20px;scrollbar-color:#71808c transparent;text-shadow:0 1px 1px rgba(255,255,255,.32)}.terminal-body p{margin:0 0 10px;overflow-wrap:anywhere}.terminal-body strong,.terminal-command{color:var(--component-terminal-accent);font-weight:var(--primitive-type-weight500)}.terminal-muted{color:var(--component-terminal-muted);font-size:var(--primitive-type-size10px);letter-spacing:var(--primitive-type-tracking_025em)}.terminal-response{color:var(--component-terminal-text);white-space:pre-wrap}.terminal-input{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--component-terminal-border);background:rgba(230,239,246,.22)}.terminal-input label{white-space:nowrap;color:var(--component-terminal-accent)}.terminal-input input{flex:1;min-width:0;border:0;background:none;color:var(--component-terminal-text);font:var(--component-terminal-font-weight) var(--component-terminal-body-size)/var(--component-terminal-body-leading) var(--component-terminal-font);padding:5px 0}.terminal-input input::placeholder{color:var(--component-terminal-muted)}.terminal-input button{border:0;background:none;color:var(--component-terminal-accent);font-size:var(--primitive-type-size19px);padding:3px}.terminal-input input:focus-visible{outline:1px solid var(--semantic-color-focus);outline-offset:4px}
.about{min-height:72svh;padding:clamp(55px,8vw,120px) clamp(24px,5vw,90px) 28px;display:flex;flex-direction:column;background:var(--component-reading-background)}.about-label{font:var(--primitive-type-weight500) var(--primitive-type-size11px)/var(--primitive-type-leading1_5) var(--semantic-font-utility);letter-spacing:var(--primitive-type-tracking_08em)}.about-label span{margin-left:15px}.about-main{width:min(var(--component-reading-content-width),100%);margin:auto}.about-main h2{font:var(--primitive-type-weight400) var(--component-reading-heading-size)/var(--primitive-type-leading1_08) var(--semantic-font-display);letter-spacing:var(--component-reading-heading-tracking);margin:50px 0 35px}.about-main h2 em{font-style:normal;color:var(--semantic-color-accent)}.about-main p{max-width:var(--component-reading-text-width);font-size:var(--component-reading-body-size);line-height:var(--primitive-type-leading1_8);color:var(--semantic-color-text-muted)}.text-action{display:inline-block;margin:30px 0 60px;padding:0 0 8px;border:0;border-bottom:1px solid currentColor;background:none;font:var(--primitive-type-weight500) var(--primitive-type-size11px) var(--semantic-font-utility);letter-spacing:var(--primitive-type-tracking_08em);color:var(--semantic-color-text)}.text-action span{margin-left:30px}.about-footer{display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--semantic-color-border);padding-top:20px;font:var(--primitive-type-size10px) var(--semantic-font-utility);letter-spacing:var(--primitive-type-tracking_06em)}.about-footer a{text-decoration:none}.about-footer a:hover{text-decoration:underline}
@media(min-width:1600px){.terminal-stage{width:var(--component-terminal-stage-width-wide);margin-left:var(--component-terminal-stage-margin-wide)}}
@media(max-width:900px){.hero-layout{grid-template-columns:var(--component-hero-columns-tablet);padding-left:24px}.hero-copy h1{font-size:var(--component-hero-title-size-tablet)}.hero-copy p{margin:26px 0 0 8%;font-size:var(--primitive-type-size14px)}.terminal{font-size:var(--component-terminal-body-size)}.terminal-bar{gap:8px;padding:0 9px}.terminal-lights{gap:4px}.terminal-body{padding:12px}.terminal-input{padding:8px 12px}.terminal-muted{font-size:var(--primitive-type-size9px)}}
@media(max-width:700px){.site-header{padding:22px}.hero-layout{grid-template-columns:1fr;padding:30px 0 0;margin:0}.hero-copy{padding:15px 26px 5px}.hero-copy h1{font-size:var(--component-hero-title-size-mobile)}.hero-copy p{margin:25px 0 0 17%;font-size:var(--primitive-type-size15px)}.terminal-stage{width:var(--component-terminal-stage-width-mobile);margin-left:var(--component-terminal-stage-margin-mobile);max-width:none}.terminal{font-size:var(--component-terminal-body-size)}.terminal-bar{min-height:var(--component-terminal-bar-height-mobile)}.terminal-body{padding:14px}.hero-bottom{padding:0 22px 23px;font-size:var(--primitive-type-size9px)}.hero-bottom-right{display:none}.about{min-height:65svh}.about-main h2{margin-top:70px}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}.hero-shade{animation:none;transform:none;opacity:.4;will-change:auto}*,*::before,*::after{transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* The terminal stays spatially stable; activity is conveyed by dimming and a cursor. */
.terminal-stage{animation:none}
.terminal-stage::before{content:'';position:absolute;z-index:0;left:19%;top:23%;width:var(--component-terminal-width);height:var(--component-terminal-height);border-radius:var(--component-terminal-radius);background:var(--component-terminal-emboss);filter:blur(20px);opacity:.38;pointer-events:none}
.terminal-metal{inset:auto;left:var(--component-terminal-left);top:var(--component-terminal-top);width:var(--component-terminal-width);height:var(--component-terminal-height);object-fit:cover;mask-image:none;z-index:1;border-radius:var(--component-terminal-radius);box-shadow:0 18px 32px rgba(15,23,30,.22)}
.terminal{border-radius:var(--component-terminal-radius);overflow:hidden;box-shadow:var(--component-terminal-edge);backdrop-filter:none;-webkit-backdrop-filter:none;animation:none;transform:none;font-optical-sizing:auto}
@supports(corner-shape:squircle){.terminal,.terminal-metal{corner-shape:squircle}}
.terminal-body{font-weight:var(--primitive-type-weight500);padding:var(--component-terminal-body-padding);line-height:var(--primitive-type-leading1_75)}
.terminal-body .terminal-bio-title{font-family:var(--component-terminal-font);font-weight:var(--component-terminal-font-weight);font-size:var(--component-terminal-title-size);letter-spacing:var(--primitive-type-tracking-minus_025em);line-height:var(--primitive-type-leading1_25);margin-bottom:16px}
.terminal-welcome{max-width:32ch;font-size:var(--primitive-type-size12px);line-height:var(--primitive-type-leading1_8)}
.terminal-cursor{display:inline-block;width:.55em;height:1.1em;background:currentColor;margin-left:.35em;vertical-align:-.15em;animation:terminalBlink var(--primitive-motion-blink) steps(1,end) infinite}
.terminal:focus-within .terminal-cursor{visibility:hidden}
.terminal-bio{margin:24px 0;border-top:1px solid rgba(30,43,53,.14);padding-top:18px}
.terminal-bio p{display:grid;grid-template-columns:75px 1fr;gap:12px;font-size:var(--primitive-type-size11px)}
.terminal-bio p span{color:var(--component-terminal-muted);font-weight:var(--primitive-type-weight400)}
.terminal-hint{font-size:var(--primitive-type-size10px);color:var(--component-terminal-muted)}
.terminal-body .is-history{opacity:var(--component-terminal-history-opacity);transition:opacity var(--primitive-motion-dim) ease-out}
.terminal-input{background:rgba(226,234,241,.2)}
.terminal-input input{caret-color:#152b3d}.terminal-input:focus-within{background:rgba(238,244,249,.42)}
.terminal-bar button,.terminal-input button{min-width:var(--component-terminal-control-size);min-height:var(--component-terminal-control-size);border-radius:var(--primitive-radius-control);touch-action:manipulation}
.terminal-bar button:active,.terminal-input button:active{background:rgba(30,43,53,.15);transform:scale(.96)}
@keyframes terminalBlink{0%,55%{opacity:1}56%,100%{opacity:0}}
@media(max-width:700px){.terminal-body{padding:14px}.terminal-body .terminal-bio-title{font-size:var(--component-terminal-title-size-mobile);margin-bottom:10px}.terminal-welcome{font-size:var(--primitive-type-size10px)}.terminal-bio{margin:14px 0;padding-top:10px}.terminal-bio p{font-size:var(--primitive-type-size10px);grid-template-columns:62px 1fr;gap:6px}.terminal-hint{font-size:var(--primitive-type-size9px)}}
@media(prefers-reduced-motion:reduce){.terminal-cursor,.hero-shade{animation:none}.hero::after{display:none}.terminal-body .is-history{transition:none}}
@media(prefers-reduced-transparency:reduce){.terminal{background:#dbe1e6}.terminal-bar,.terminal-input{background:#d1d9df}}
@media(prefers-contrast:more){.terminal{background:#e5eaee;color:#111;border:2px solid #333}.terminal-body .is-history{opacity:1}.terminal-muted,.terminal-hint{color:#222}}
@media(max-width:700px){.terminal-stage{aspect-ratio:var(--component-terminal-stage-aspect-mobile)}}
/* Skyline video and translucent terminal preserve the established geometry. */
.hero-image{background:#0c1521 url('./assets/hero-video-poster.jpg') center/cover no-repeat}
.hero-video{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--component-hero-video-position)}
.hero-shade{inset:0;background:var(--component-hero-overlay);animation:none;transform:none;will-change:auto}
.hero::after{display:none}
.site-header{color:var(--component-hero-header-text);text-shadow:0 1px 8px rgba(0,0,0,.4)}
.site-nav [hidden]{display:none}
.terminal-stage::before{opacity:var(--component-terminal-emboss-opacity);filter:blur(var(--component-terminal-emboss-blur))}
.terminal-metal{opacity:var(--component-terminal-texture-opacity);box-shadow:none}
.terminal{background:var(--component-terminal-background);backdrop-filter:blur(var(--component-terminal-blur));-webkit-backdrop-filter:blur(var(--component-terminal-blur));border-color:var(--component-terminal-border);box-shadow:var(--component-terminal-shadow)}
.terminal::before{opacity:var(--component-terminal-sheen-opacity)}
.terminal-body{color:var(--component-terminal-text);text-shadow:none}
.terminal-bio{border-color:var(--component-terminal-border)}
.terminal-bar{background:var(--component-terminal-bar)}
.terminal-lights i{background:var(--component-terminal-lights)}
.terminal-input,.terminal-input:focus-within{background:var(--component-terminal-input)}
.terminal-input input{color:var(--component-terminal-text);caret-color:var(--component-terminal-text)}
.terminal-input input:focus-visible{outline-color:var(--component-terminal-focus)}
.terminal-bar button:active,.terminal-input button:active{background:var(--component-terminal-pressed)}
@media(max-width:700px){.hero-video{object-position:var(--component-hero-video-position-mobile)}.hero-image{background-position:var(--component-hero-video-position-mobile)}}
@media(max-width:700px){
  .hero .hero-layout{padding:var(--primitive-space-6) var(--primitive-space-5);gap:var(--primitive-space-5)}
  .hero .hero-copy{padding:0}
  .hero .terminal-stage{height:var(--component-terminal-stage-height-mobile)}
  .hero .terminal{left:0;top:0;width:100%;height:100%}
  .hero .terminal-metal{left:0;top:0;width:100%;height:100%}
  .hero .terminal-stage::before{inset:0;width:100%;height:100%}
  .hero .hero-bottom{padding:0 var(--primitive-space-5) var(--primitive-space-5);margin-top:auto}
}
@media(prefers-reduced-transparency:reduce){.terminal{background:var(--component-terminal-solid);backdrop-filter:none;-webkit-backdrop-filter:none}.terminal-metal{display:none}.terminal-bar,.terminal-input{background:var(--component-terminal-solid-bar)}}
@media(prefers-contrast:more){.terminal{background:var(--component-terminal-contrast-background);color:#fff;border:2px solid var(--component-terminal-contrast-border)}.terminal-muted,.terminal-hint{color:var(--component-terminal-contrast-muted)}.terminal-body .is-history{opacity:1}}

/* Shared night surface: skyline fades continuously into the reading section. */
.hero::after{content:"";display:block;position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--component-hero-transition)}
.about{background:var(--component-reading-atmosphere),var(--component-reading-background);color:var(--semantic-color-text)}
@media(prefers-reduced-motion:reduce){.hero::after{display:block}}
/* v3.3 — one terminal language from the introduction through the directory. */
.terminal,.terminal-input input,.terminal-body .terminal-bio-title{font-family:var(--component-terminal-font);font-weight:var(--component-terminal-font-weight)}
.terminal-body .terminal-bio-title{line-height:var(--primitive-type-leading1_6);letter-spacing:var(--primitive-type-tracking-minus_035em)}
.terminal-lights i{width:10px;height:10px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);background:var(--component-terminal-control-red)}
.terminal-lights i:nth-child(2){background:var(--component-terminal-control-gray);opacity:1}
.terminal-lights i:nth-child(3){background:var(--component-terminal-control-green);opacity:1}
.hero-scene{position:relative;min-height:170svh}
.hero-scene>.hero{position:sticky;top:0;height:100svh}
.terminal-directory{padding:12px 24px 20px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.terminal-directory[hidden]{display:none}
.terminal-directory a{position:relative;border-top:1px solid var(--component-terminal-border);padding:16px 0;text-decoration:none;display:flex;flex-direction:column;gap:8px;font-size:var(--primitive-type-size13px)}
.terminal-directory small{color:var(--component-terminal-muted);font-size:var(--primitive-type-size11px)}.terminal-directory b{position:absolute;right:0;top:16px;font-weight:var(--primitive-type-weight400)}.terminal-directory a:hover{color:var(--component-terminal-accent)}
.portfolio-content{background:var(--component-reading-atmosphere),var(--semantic-color-surface);font-family:var(--component-reading-font);padding:0 var(--semantic-layout-gutter)}
.workspace-section{max-width:var(--component-workspace-width);margin:auto;padding-top:var(--component-workspace-section-space);scroll-margin-top:32px}
.section-command{display:flex;align-items:center;gap:20px;margin-bottom:22px;font-size:var(--primitive-type-size11px);letter-spacing:var(--primitive-type-tracking_03em);color:var(--component-terminal-muted)}
.section-command p{flex:1;margin:0;color:var(--component-terminal-text)}.section-command>span:first-child{color:var(--semantic-color-accent)}
.workspace-window{overflow:hidden;border:1px solid var(--component-terminal-border);border-radius:var(--component-terminal-radius);background:var(--component-workspace-surface);box-shadow:var(--component-terminal-shadow)}
.workspace-bar{min-height:48px;padding:12px 22px;display:flex;align-items:center;gap:18px;background:var(--component-terminal-bar);border-bottom:1px solid var(--component-terminal-border);font-size:var(--primitive-type-size11px);color:var(--component-terminal-muted)}
.window-path{margin-left:auto;font-size:var(--primitive-type-size10px);text-decoration:none}.window-path:hover{text-decoration:underline}
.workspace-body{padding:var(--component-workspace-padding)}
.code-comment{font:var(--primitive-type-size11px)/var(--primitive-type-leading1_7) var(--component-terminal-font);letter-spacing:var(--primitive-type-tracking_05em);color:var(--component-terminal-muted);margin:0 0 24px}
.code-accent{color:var(--component-terminal-accent)}
.workspace-window h2{font:var(--primitive-type-weight400) var(--component-workspace-title-size)/var(--primitive-type-leading1_35) var(--component-terminal-font);letter-spacing:var(--component-reading-heading-tracking);margin:0 0 24px}
.about-layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--primitive-space-7)}
.about-copy p,.section-description,.project-copy>p:not(.code-comment){font-size:var(--component-reading-body-size);line-height:var(--component-reading-body-leading);color:var(--component-terminal-muted);max-width:58ch;margin:0 0 20px}
.directory-links{display:flex;flex-wrap:wrap;gap:20px;margin-top:32px}.directory-links a,.directory-links button{font:var(--primitive-type-size11px) var(--component-terminal-font);background:none;border:0;padding:0;color:var(--component-terminal-accent);text-decoration:underline;text-underline-offset:5px}
.article-list{margin-top:48px}.article-row{display:grid;grid-template-columns:32px 1fr;gap:24px;padding:30px 0;border-top:1px solid var(--component-terminal-border)}
.article-index{font-size:var(--primitive-type-size11px);color:var(--semantic-color-accent);padding-top:4px}.article-meta{display:flex;gap:20px;font-size:var(--primitive-type-size10px);color:var(--component-terminal-muted)}
.article-row h3{font:var(--primitive-type-weight400) var(--component-typography-article-title)/var(--primitive-type-leading1_55) var(--component-terminal-font);letter-spacing:var(--primitive-type-tracking-minus_025em);margin:16px 0 12px;max-width:46ch}.article-row h3 a{text-decoration:none}.article-row h3 a:hover{color:var(--component-terminal-accent);text-decoration:underline;text-underline-offset:6px}.article-row h3 span{font-size:var(--primitive-type-size16px);white-space:nowrap}
.article-row p{max-width:76ch;font-size:var(--primitive-type-size12px);line-height:var(--primitive-type-leading1_9);color:var(--component-terminal-muted);margin:0}.feed-note{font-size:var(--primitive-type-size10px);line-height:var(--primitive-type-leading1_8);color:var(--component-terminal-muted);margin:20px 0 0}.feed-note a{text-underline-offset:4px}
.project-feature{display:grid;grid-template-columns:1fr 1fr;color:inherit;text-decoration:none}.project-art{position:relative;min-height:340px;background:linear-gradient(150deg,rgba(12,21,33,.82),rgba(12,21,33,.96)),url('./assets/terminal-brushed-steel.jpg') center/cover;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--component-terminal-border);gap:32px}.project-art>span{font:var(--primitive-type-weight400) var(--component-typography-project-artwork)/var(--primitive-type-leading1) var(--component-terminal-font);letter-spacing:var(--primitive-type-tracking-minus_08em);color:var(--component-terminal-accent)}.project-art small{font-size:var(--primitive-type-size9px);letter-spacing:var(--primitive-type-tracking_1em);color:var(--component-terminal-muted)}
.project-copy{padding:var(--component-workspace-padding);align-self:center}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--component-terminal-control-green);margin-right:6px}.project-link{display:flex;justify-content:space-between;font-size:var(--primitive-type-size12px);margin-top:36px;border-bottom:1px solid var(--component-terminal-border);padding-bottom:12px}.project-feature:hover .project-link{color:var(--component-terminal-accent);border-color:currentColor}
.portfolio-footer{max-width:var(--component-workspace-width);margin:0 auto;padding:64px 0 28px;display:flex;justify-content:space-between;gap:20px;color:var(--component-terminal-muted);font-size:var(--primitive-type-size10px)}.portfolio-footer a{text-decoration:none}
.construction-page{min-height:100svh;display:flex;flex-direction:column;background:linear-gradient(rgba(12,21,33,.88),#0c1521),url('./assets/hero-video-poster.jpg') center/cover fixed;font-family:var(--component-terminal-font)}
.construction-main{width:min(820px,calc(100% - 40px));margin:auto;padding:60px 0}.construction-main .workspace-body{padding:clamp(28px,6vw,64px)}.construction-main p{font-size:var(--primitive-type-size13px);line-height:var(--primitive-type-leading1_9);color:var(--component-terminal-muted)}.construction-main .construction-mark{font-size:var(--primitive-type-size56px);line-height:var(--primitive-type-leading1);margin:0 0 40px;color:var(--component-terminal-accent)}
@media(max-width:700px){.hero-scene{min-height:155svh}.hero-scene>.hero{min-height:100svh;height:auto}.about-layout,.project-feature{grid-template-columns:1fr;gap:20px}.workspace-bar{padding:12px 16px;gap:12px}.window-path{font-size:var(--primitive-type-size8px)}.section-command{gap:12px;font-size:var(--primitive-type-size9px)}.section-command>span:last-child{display:none}.article-row{grid-template-columns:20px 1fr;gap:12px}.article-row p{font-size:var(--primitive-type-size11px)}.article-meta{font-size:var(--primitive-type-size9px)}.project-art{min-height:220px;border-right:0;border-bottom:1px solid var(--component-terminal-border)}.project-feature{gap:0}.portfolio-footer{flex-wrap:wrap;font-size:var(--primitive-type-size9px)}.portfolio-footer>span:nth-child(2){display:none}.terminal-directory{grid-template-columns:1fr;gap:0;padding:0 16px 8px}.terminal-directory a{font-size:var(--primitive-type-size11px);padding:10px 0;gap:3px}.terminal-directory small{font-size:var(--primitive-type-size9px)}.terminal-directory b{top:10px}.terminal.is-expanded .terminal-bio{display:none}}
@media(prefers-reduced-motion:reduce){.hero-scene{min-height:0}.hero-scene>.hero{position:relative}}
@media(prefers-reduced-transparency:reduce){.workspace-window{background:var(--component-terminal-solid)}}
@media(prefers-contrast:more){.workspace-window{background:var(--component-terminal-contrast-background);border-color:var(--component-terminal-contrast-border)}}

.terminal-body{font-weight:var(--component-terminal-font-weight)}
.hero-scene{overflow-anchor:none}
/* Project directory: selectable cells, with consultancy pinned above Kekal. */
.project-browser .workspace-bar h2{font:var(--primitive-type-weight400) var(--primitive-type-size11px) var(--component-terminal-font);letter-spacing:var(--primitive-type-tracking0);margin:0;color:var(--component-terminal-muted)}
.project-browser-hint{display:flex;justify-content:space-between;gap:16px;padding:14px 22px;font:var(--primitive-type-size10px)/var(--primitive-type-leading1_6) var(--component-terminal-font);color:var(--component-terminal-muted);border-bottom:1px solid var(--component-project-cell-border)}
.project-cells{max-height:var(--component-project-cell-viewport);overflow-y:auto;scrollbar-color:var(--semantic-color-accent) var(--component-terminal-solid);scrollbar-width:thin;scroll-padding-top:var(--component-project-cell-height)}
.project-cells:focus-visible{outline:2px solid var(--component-terminal-focus);outline-offset:-3px}
.project-cell{display:grid;grid-template-columns:var(--component-project-cell-art-width) minmax(0,1fr);min-height:var(--component-project-cell-height);color:var(--component-terminal-text);text-decoration:none;background:var(--component-project-cell-background);border-bottom:1px solid var(--component-project-cell-border)}
.project-cell:last-child{border-bottom:0}.project-cell-pinned{position:sticky;top:0;z-index:1;box-shadow:0 8px 18px rgba(0,0,0,.12)}
.project-cell-art{display:flex;align-items:center;justify-content:center;font:var(--primitive-type-weight400) var(--component-project-cell-art-size)/var(--primitive-type-leading1) var(--component-terminal-font);letter-spacing:var(--primitive-type-tracking-minus_08em);color:var(--component-terminal-accent);background:linear-gradient(140deg,rgba(12,21,33,.85),rgba(12,21,33,.96)),url('./assets/terminal-brushed-steel.jpg') center/cover;border-right:1px solid var(--component-project-cell-border)}
.project-cell-copy{padding:var(--component-project-cell-padding)}.project-cell .code-comment{font-size:var(--primitive-type-size10px);margin:0 0 14px}.project-cell h3{font:var(--primitive-type-weight400) var(--component-project-cell-title-size)/var(--primitive-type-leading1_3) var(--component-terminal-font);letter-spacing:var(--primitive-type-tracking-minus_04em);margin:0 0 12px}.project-cell-copy>p:not(.code-comment){font:var(--primitive-type-size12px)/var(--primitive-type-leading1_8) var(--component-terminal-font);color:var(--component-terminal-muted);max-width:58ch;margin:0 0 24px}.project-cell-action{display:flex;justify-content:space-between;font:var(--primitive-type-size11px) var(--component-terminal-font);color:var(--component-terminal-accent)}
.project-cell:hover,.project-cell:focus-visible{background:var(--component-project-cell-hover)}.project-cell:focus-visible{outline:2px solid var(--component-terminal-focus);outline-offset:-3px}
@media(max-width:700px){.project-cells{max-height:var(--component-project-cell-viewport-mobile)}.project-cell{grid-template-columns:var(--component-project-cell-art-width-mobile) minmax(0,1fr)}.project-cell-art{font-size:var(--primitive-type-size26px)}.project-cell-copy{padding:var(--component-project-cell-padding-mobile)}.project-cell .code-comment{font-size:var(--primitive-type-size9px)}.project-cell-copy>p:not(.code-comment){font-size:var(--primitive-type-size11px)}.project-browser-hint{padding:12px 16px;font-size:var(--primitive-type-size9px)}}
@media(prefers-contrast:more){.project-cell{background:var(--component-terminal-contrast-background)}}
@media(max-width:700px){.project-cell-art{font-size:var(--primitive-type-size20px);white-space:nowrap}}
/* Connected experience folders; role text remains unmarked and undated. */
.career-tree{margin:0 var(--component-workspace-padding) var(--component-workspace-padding);padding-top:32px;border-top:1px solid var(--component-terminal-border);font-family:var(--component-career-font)}
.career-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:38px}.career-root{display:flex;align-items:center;gap:12px}.career-heading h3{font:var(--primitive-type-weight400) var(--component-career-title-size)/var(--primitive-type-leading1_5) var(--component-career-font);letter-spacing:var(--primitive-type-tracking-minus_035em);margin:0}.career-heading>p{font-size:var(--primitive-type-size9px);line-height:var(--primitive-type-leading1_8);color:var(--component-terminal-muted);max-width:120px;margin:0}.career-folder-icon{position:relative;width:28px;height:21px;flex-shrink:0;border:1px solid var(--component-career-line);background:var(--component-career-folder);border-radius:3px}.career-folder-icon::before{content:'';position:absolute;top:-5px;left:-1px;width:13px;height:5px;border:1px solid var(--component-career-line);border-bottom:0;border-radius:3px 3px 0 0;background:var(--component-career-folder)}
.career-branches{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--component-career-gap);list-style:none;margin:0;padding:var(--component-career-connector-rise) 0 0}
.career-branches::before{content:'';position:absolute;left:16px;right:calc((100% - 80px)/5 - 16px);top:0;border-top:var(--component-career-connector-width) solid var(--component-career-line)}
.career-branches::after{content:'';position:absolute;left:16px;top:-24px;height:24px;border-left:var(--component-career-connector-width) solid var(--component-career-line)}
.career-branch{position:relative;display:flex;flex-direction:column;min-width:0}.career-branch::before{content:'';position:absolute;left:16px;top:calc(-1 * var(--component-career-connector-rise));height:var(--component-career-connector-rise);border-left:var(--component-career-connector-width) solid var(--component-career-line)}
.career-folder{position:relative;align-self:flex-start;background:var(--component-career-folder);font-size:var(--component-career-meta-size);padding:12px 14px;margin-left:1px;border:1px solid var(--component-terminal-border);border-bottom:0;border-radius:0 4px 0 0;color:var(--component-terminal-accent)}.career-folder::before{content:'';position:absolute;left:-1px;top:-7px;width:35%;height:7px;background:var(--component-career-folder);border:1px solid var(--component-terminal-border);border-bottom:0;border-radius:4px 7px 0 0}
.career-card{flex:1;padding:22px 14px;border:1px solid var(--component-terminal-border);border-radius:0 var(--component-career-radius) var(--component-career-radius) var(--component-career-radius);background:var(--component-career-surface)}.career-period{font-size:var(--primitive-type-size10px);color:var(--component-terminal-muted);line-height:var(--primitive-type-leading1_8);margin:0 0 12px}.career-card h4{font-size:var(--primitive-type-size14px);line-height:var(--primitive-type-leading1_65);letter-spacing:var(--primitive-type-tracking-minus_03em);font-weight:var(--primitive-type-weight500);margin:0 0 16px}
.career-roles{list-style:none;margin:0;padding:0}.career-role p{font-size:var(--component-career-role-size);line-height:var(--primitive-type-leading1_75);margin:0 0 8px}.career-role small{display:block;color:var(--component-terminal-muted);font-size:var(--primitive-type-size10px);line-height:var(--primitive-type-leading1_8)}.career-kind{font-size:var(--primitive-type-size9px);letter-spacing:var(--primitive-type-tracking_08em);color:var(--component-terminal-accent);margin:0 0 12px}.career-current-label{display:block;font-size:var(--primitive-type-size9px);letter-spacing:var(--primitive-type-tracking_05em);color:var(--component-career-current);margin-top:22px}.career-footnote{font-size:var(--primitive-type-size10px);line-height:var(--primitive-type-leading1_8);color:var(--component-terminal-muted);margin:22px 0 0}
@media(max-width:1000px){.career-branches{grid-template-columns:1fr;margin-left:14px;padding:0 0 0 24px;border-left:var(--component-career-connector-width) solid var(--component-career-line);gap:28px}.career-branches::before,.career-branches::after{display:none}.career-branch::before{left:-24px;top:16px;width:24px;height:0;border-left:0;border-top:var(--component-career-connector-width) solid var(--component-career-line)}.career-card{padding:22px}.career-card h4{font-size:var(--primitive-type-size15px)}}
@media(max-width:600px){.career-heading{display:block}.career-heading>p{max-width:none;margin:16px 0 0}.career-heading h3{font-size:var(--primitive-type-size19px)}.career-branches{grid-template-columns:1fr}.career-card{padding:20px}}
@media(prefers-contrast:more){.career-card{border-color:var(--component-terminal-contrast-border)}}

/* Command reference inherits the terminal's material and type scale. */
.terminal-guide{font:var(--component-terminal-body-size)/var(--component-terminal-body-leading) var(--component-terminal-font);color:var(--component-terminal-muted)}
.terminal-guide .terminal-guide-title{color:var(--component-terminal-text);font-weight:var(--primitive-type-weight500);margin-bottom:12px}
.terminal-guide-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:8px 24px;list-style:none;padding:0;margin:0}
.terminal-guide-list li{overflow-wrap:anywhere}
.terminal-guide strong{font-weight:var(--primitive-type-weight500);white-space:nowrap}
.terminal-guide .terminal-guide-tip{margin:16px 0 0;padding-top:12px;border-top:1px solid var(--component-terminal-border);font-size:inherit}

/* Detail pages share the same heading hierarchy as portfolio windows. */
.construction-main h1{font:var(--primitive-type-weight400) var(--component-workspace-title-size)/var(--primitive-type-leading1_35) var(--component-terminal-font);letter-spacing:var(--component-reading-heading-tracking);margin:0 0 16px}
.construction-main h2{font:var(--primitive-type-weight400) var(--component-career-title-size)/var(--primitive-type-leading1_5) var(--component-terminal-font);letter-spacing:var(--component-reading-heading-tracking)}

/* Compact project rows and source-backed Medium document snapshots. */
.project-cell .code-comment{margin-bottom:8px}
.project-cell h3{margin-bottom:8px}
.project-cell-copy>p:not(.code-comment){margin-bottom:14px}
.project-browser-hint{padding-top:10px;padding-bottom:10px}
.article-row.has-preview{grid-template-columns:32px minmax(0,1fr) var(--component-article-preview-width);align-items:center}
.article-row.has-preview .article-index{align-self:start}
.article-preview{display:block;border:1px solid var(--component-article-preview-border);border-radius:var(--component-article-preview-radius);overflow:hidden;background:var(--primitive-color-white)}
.article-preview img{display:block;width:100%;height:auto;aspect-ratio:var(--component-article-preview-ratio);object-fit:cover}
.article-preview:hover{border-color:var(--component-terminal-accent)}
@media(max-width:700px){.article-row.has-preview{grid-template-columns:20px minmax(0,1fr)}.article-preview{grid-column:2;width:min(100%,var(--component-article-preview-width))}}

#projects{padding-top:var(--primitive-space-7)}
