@property --canvas{syntax: "<color>"; inherits: true; initial-value: #ffffff;}@property --canvas-raised{syntax: "<color>"; inherits: true; initial-value: #ffffff;}@property --canvas-soft{syntax: "<color>"; inherits: true; initial-value: #f6f4ef;}@property --canvas-inverse{syntax: "<color>"; inherits: true; initial-value: #1d1d1f;}@property --ink{syntax: "<color>"; inherits: true; initial-value: #1d1d1f;}@property --ink-muted{syntax: "<color>"; inherits: true; initial-value: #6e6e73;}@property --ink-faint{syntax: "<color>"; inherits: true; initial-value: #74747a;}@property --ink-inverse{syntax: "<color>"; inherits: true; initial-value: #ffffff;}@property --accent{syntax: "<color>"; inherits: true; initial-value: #7a5c1e;}@property --accent-bright{syntax: "<color>"; inherits: true; initial-value: #614817;}@property --accent-dim{syntax: "<color>"; inherits: true; initial-value: #c4a978;}@property --accent-secondary{syntax: "<color>"; inherits: true; initial-value: #176b4c;}@property --hairline{syntax: "<color>"; inherits: true; initial-value: rgba(29,29,31,.12);}@property --hairline-strong{syntax: "<color>"; inherits: true; initial-value: rgba(29,29,31,.24);}@property --glass-tint{syntax: "<color>"; inherits: true; initial-value: rgba(255,255,255,.55);}@property --glass-edge{syntax: "<color>"; inherits: true; initial-value: rgba(255,255,255,.85);}:root{--canvas: #ffffff;--canvas-raised: #ffffff;--canvas-soft: #f6f4ef;--canvas-inverse: #1d1d1f;--ink: #1d1d1f;--ink-muted: #6e6e73;--ink-faint: #74747a;--ink-inverse: #ffffff;--accent: #7a5c1e;--accent-bright: #614817;--accent-dim: #c4a978;--accent-secondary: #176b4c;--hairline: rgba(29, 29, 31, .12);--hairline-strong: rgba(29, 29, 31, .24);--emerald: var(--accent-secondary);--status-live: #3f7a55;--status-progress: #8a6a24;--status-research: #6154a0;--status-archived: #8b877f;--glass-tint: rgba(255, 255, 255, .55);--glass-edge: rgba(255, 255, 255, .85);--glass-shadow: 0 10px 34px rgba(22, 22, 26, .07);color-scheme:light;--radius-pill: 9999px;--theme-dur: .55s;--theme-ease: cubic-bezier(.65, 0, .35, 1);transition:--canvas var(--theme-dur) var(--theme-ease),--canvas-raised var(--theme-dur) var(--theme-ease),--canvas-soft var(--theme-dur) var(--theme-ease),--canvas-inverse var(--theme-dur) var(--theme-ease),--ink var(--theme-dur) var(--theme-ease),--ink-muted var(--theme-dur) var(--theme-ease),--ink-faint var(--theme-dur) var(--theme-ease),--ink-inverse var(--theme-dur) var(--theme-ease),--accent var(--theme-dur) var(--theme-ease),--accent-bright var(--theme-dur) var(--theme-ease),--accent-dim var(--theme-dur) var(--theme-ease),--accent-secondary var(--theme-dur) var(--theme-ease),--hairline var(--theme-dur) var(--theme-ease),--hairline-strong var(--theme-dur) var(--theme-ease),--glass-tint var(--theme-dur) var(--theme-ease),--glass-edge var(--theme-dur) var(--theme-ease);--font-display: "Cormorant Garamond", "Times New Roman", Georgia, serif;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;--step--1: clamp(.75rem, .72rem + .15vw, .82rem);--step-0: clamp(.94rem, .9rem + .2vw, 1.06rem);--step-1: clamp(1.1rem, 1rem + .45vw, 1.35rem);--step-2: clamp(1.4rem, 1.15rem + 1.1vw, 2rem);--step-3: clamp(1.9rem, 1.35rem + 2.4vw, 3.25rem);--step-4: clamp(2.5rem, 1.4rem + 4.9vw, 5rem);--step-5: clamp(3.2rem, 1rem + 9.8vw, 8.5rem);--leading-tight: .94;--leading-snug: 1.15;--leading-body: 1.62;--tracking-wide: .16em;--tracking-label: .22em;--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2.5rem;--space-xl: 4rem;--space-2xl: 6rem;--space-3xl: clamp(4.5rem, 10vw, 9.5rem);--gutter: clamp(1.25rem, 5vw, 5rem);--measure: 68ch;--max-width: 90rem;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-fast: .25s;--dur-base: .55s;--dur-slow: 1.1s;--z-nav: 60;--z-cursor: 90;--z-curtain: 80;--z-preloader: 100}:root[data-discipline=software]{--canvas: #08090c;--canvas-raised: #0f141a;--canvas-soft: #12171f;--canvas-inverse: #e8eaed;--ink: #e8eaed;--ink-muted: #9aa4b2;--ink-faint: #868f9d;--ink-inverse: #0b0d10;--accent: #6aa2ff;--accent-bright: #98bcff;--accent-dim: #2b3d5c;--accent-secondary: #29d3c2;--hairline: rgba(232, 234, 237, .12);--hairline-strong: rgba(232, 234, 237, .26);--status-live: #4fd08a;--status-progress: #d9a94a;--status-research: #9a8ef0;--status-archived: #7d8694;--glass-tint: rgba(9, 11, 15, .62);--glass-edge: rgba(232, 234, 237, .1);--glass-shadow: 0 12px 40px rgba(0, 0, 0, .55);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}html.lenis{scroll-behavior:auto!important}body{min-height:100svh;background:var(--canvas);color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);font-weight:300;line-height:var(--leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}body.is-locked{overflow:hidden}img,svg,video,canvas{display:block;max-width:100%;height:auto}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-weight:300;line-height:var(--leading-snug);text-wrap:balance}p{text-wrap:pretty}::selection{background:var(--accent);color:var(--ink-inverse)}:focus-visible{outline:1px solid var(--accent);outline-offset:4px}.display{font-family:var(--font-display);font-weight:300;line-height:var(--leading-tight);letter-spacing:-.015em}.display--hero{font-size:var(--step-5)}.display--xl{font-size:var(--step-4)}.display--lg{font-size:var(--step-3)}.display--md{font-size:var(--step-2)}.display em{font-style:italic;color:var(--accent)}.label{font-family:var(--font-mono);font-size:var(--step--1);font-weight:400;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-faint)}.label--accent{color:var(--accent)}.lede{font-size:var(--step-1);line-height:1.5;color:var(--ink-muted);max-width:var(--measure)}.prose{max-width:var(--measure);color:var(--ink-muted)}.prose>*+*{margin-top:var(--space-md)}.prose h2{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink);margin-top:var(--space-xl)}.prose h3{font-size:var(--step-1);font-weight:500;color:var(--ink);margin-top:var(--space-lg)}.prose strong{color:var(--ink);font-weight:500}.prose em{font-style:italic}.prose a{color:var(--ink);border-bottom:1px solid var(--accent-dim);transition:border-color var(--dur-fast) var(--ease-out)}.prose a:hover{border-color:var(--accent)}.prose ul,.prose ol{padding-left:1.2em}.prose li+li{margin-top:var(--space-2xs)}.prose li::marker{color:var(--accent-dim)}.prose blockquote{border-left:1px solid var(--accent-dim);padding-left:var(--space-md);font-family:var(--font-display);font-size:var(--step-1);font-style:italic;color:var(--ink)}.prose code{font-family:var(--font-mono);font-size:.85em;color:var(--accent-bright);background:var(--canvas-soft);padding:.15em .4em}.prose pre{background:var(--canvas-soft);border:1px solid var(--hairline);padding:var(--space-md);overflow-x:auto}.prose pre code{background:none;padding:0;color:var(--ink-muted)}.split-line{display:block;overflow:hidden}.split-line__inner{display:block;will-change:transform}.split-word{display:inline-block}.visually-hidden,.a11y-announcer{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:fixed;top:var(--space-sm);left:var(--space-sm);z-index:200;padding:var(--space-2xs) var(--space-sm);background:var(--accent);color:var(--ink-inverse);font-family:var(--font-mono);font-size:var(--step--1);transform:translateY(-200%);transition:transform var(--dur-fast) var(--ease-out)}.skip-link:focus-visible{transform:translateY(0)}.noscript{padding:var(--space-lg) var(--gutter);border-bottom:1px solid var(--hairline);font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-muted)}.noscript a{color:var(--accent)}.grain{position:fixed;top:-50%;right:-50%;bottom:-50%;left:-50%;z-index:3;pointer-events:none;opacity:.02;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain-drift .7s steps(3) infinite}@keyframes grain-drift{0%{transform:translate(0)}33%{transform:translate(-2%,1%)}66%{transform:translate(1%,-2%)}to{transform:translate(0)}}.spotlight{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;opacity:0;transition:opacity var(--dur-slow) var(--ease-out);background:radial-gradient(38rem 38rem at var(--mx, 50%) var(--my, 40%),rgba(138,106,36,.07),transparent 60%),radial-gradient(24rem 24rem at calc(100% - var(--mx, 50%)) var(--my, 40%),rgba(97,84,160,.04),transparent 66%)}.spotlight.is-active{opacity:1}.cursor{position:fixed;top:0;left:0;z-index:var(--z-cursor);pointer-events:none;opacity:0;transition:opacity var(--dur-base) var(--ease-out)}.cursor.is-active{opacity:1}.cursor__dot,.cursor__ring{position:absolute;top:0;left:0;border-radius:50%;transform:translate(-50%,-50%);will-change:transform}.cursor__dot{width:5px;height:5px;background:var(--accent)}.cursor__ring{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--hairline-strong);transition:width var(--dur-base) var(--ease-out),height var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}.cursor.is-hovering .cursor__ring{width:76px;height:76px;background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:var(--accent)}.cursor.is-hovering .cursor__dot{opacity:0}.cursor__label{font-family:var(--font-mono);font-size:9px;letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--accent-bright);opacity:0;transition:opacity var(--dur-fast) var(--ease-out)}.cursor.is-hovering .cursor__label{opacity:1}@media(hover:none),(pointer:coarse){.cursor,.spotlight{display:none}}.curtain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-curtain);display:grid;place-items:center;background:var(--canvas-inverse);pointer-events:none;transform:scaleY(0);transform-origin:bottom}.curtain__mark{font-family:var(--font-display);font-size:var(--step-2);letter-spacing:.06em;color:var(--accent-dim);opacity:0;padding-inline:var(--gutter);text-align:center}.theme-flash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-nav) + 2);pointer-events:none;opacity:0;background:radial-gradient(120% 80% at 50% 0%,var(--accent),transparent 60%)}.scroll-progress{position:fixed;top:0;left:0;right:0;height:1px;z-index:calc(var(--z-nav) + 1);background:var(--hairline);pointer-events:none}.scroll-progress span{display:block;height:100%;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left}.preloader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-preloader);display:flex;flex-direction:column;justify-content:flex-end;gap:var(--space-md);padding:var(--gutter);background:var(--canvas)}.preloader.is-done{display:none}.preloader__inner{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md)}.preloader__name{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink);opacity:0}.preloader__count{font-family:var(--font-mono);font-size:var(--step-2);color:var(--accent);font-variant-numeric:tabular-nums}.preloader__bar{height:1px;background:var(--hairline)}.preloader__bar span{display:block;height:100%;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left}@media(prefers-reduced-motion:reduce){.grain{animation:none}.cursor{display:none}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.shell{width:100%;max-width:var(--max-width);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--space-3xl);position:relative}.section--tight{padding-block:var(--space-2xl)}.section+.section{border-top:1px solid var(--hairline)}.section-head{display:grid;grid-template-columns:1fr;gap:var(--space-sm);margin-bottom:var(--space-xl)}.section-head__index{display:flex;align-items:center;gap:var(--space-sm)}.section-head__index:after{content:"";flex:1;height:1px;background:var(--hairline)}@media(min-width:60rem){.section-head{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:end;gap:var(--space-xl)}.section-head__index{grid-column:1 / -1}}.grid{display:grid;gap:var(--space-lg)}@media(min-width:48rem){.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:60rem){.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}}.nav{position:fixed;top:0;left:0;right:0;z-index:var(--z-nav);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--gutter);transition:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out);border-bottom:1px solid transparent}.nav.is-stuck{background:var(--glass-tint);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-bottom-color:var(--hairline);box-shadow:inset 0 1px 0 var(--glass-edge),var(--glass-shadow)}.nav:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;background:linear-gradient(to bottom,var(--glass-edge),transparent 60%);transition:opacity var(--dur-base) var(--ease-out)}.nav.is-stuck:before{opacity:1}.nav>*{position:relative;z-index:1}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.nav.is-stuck{background:var(--canvas-raised)}}.nav.is-hidden{transform:translateY(-100%)}.nav__mark{display:flex;align-items:baseline;font-family:var(--font-display);font-size:var(--step-1);letter-spacing:.02em;white-space:nowrap}.nav__mark span{color:var(--accent)}.nav__links{display:none;align-items:center;gap:var(--space-md);list-style:none;padding:0}.nav__cta{margin-left:var(--space-sm);padding:.75em 1.35em}@media(min-width:56rem){.nav__links{display:flex}}.nav__link{position:relative;font-family:var(--font-sans);font-size:var(--step-0);font-weight:400;letter-spacing:0;color:var(--ink-muted);padding-block:var(--space-3xs);transition:color var(--dur-fast) var(--ease-out)}.nav__link:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform var(--dur-base) var(--ease-out)}.nav__link:hover,.nav__link[aria-current=page]{color:var(--ink)}.nav__link:hover:after,.nav__link[aria-current=page]:after{transform:scaleX(1);transform-origin:left}.nav__toggle{display:grid;gap:5px;width:34px;padding:6px 0;background:none;border:0;cursor:pointer}@media(min-width:56rem){.nav__toggle{display:none}}.nav__toggle span{display:block;height:1px;background:var(--ink);transition:transform var(--dur-base) var(--ease-out)}.nav.is-open .nav__toggle span:first-child{transform:translateY(3px) rotate(45deg)}.nav.is-open .nav__toggle span:last-child{transform:translateY(-3px) rotate(-45deg)}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-nav) - 1);display:flex;flex-direction:column;justify-content:center;gap:var(--space-sm);padding:var(--gutter);background:color-mix(in srgb,var(--canvas) 85%,transparent);backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);clip-path:inset(0 0 100% 0);visibility:hidden}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.drawer{background:var(--canvas-raised)}}.drawer.is-open{visibility:visible}.drawer__link{font-family:var(--font-display);font-size:var(--step-3);color:var(--ink);border-bottom:1px solid var(--hairline);padding-block:var(--space-sm);display:flex;align-items:baseline;justify-content:space-between}.drawer__link span{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-faint)}.drawer__link[aria-current=page]{color:var(--accent)}.footer{border-top:1px solid var(--hairline);padding:var(--space-2xl) var(--gutter) var(--space-lg)}.footer__inner{max-width:var(--max-width);margin-inline:auto;display:grid;gap:var(--space-xl)}@media(min-width:56rem){.footer__inner{grid-template-columns:minmax(0,1.4fr) repeat(2,minmax(0,.6fr))}}.footer__cta{font-family:var(--font-display);font-size:var(--step-3);line-height:var(--leading-snug);color:var(--ink)}.footer__mail{display:inline-block;margin-top:var(--space-sm);font-family:var(--font-mono);font-size:var(--step-0);color:var(--accent);border-bottom:1px solid var(--accent-dim);transition:border-color var(--dur-fast) var(--ease-out)}.footer__mail:hover{border-color:var(--accent)}.footer__col h3{margin-bottom:var(--space-sm)}.footer__list{list-style:none;padding:0;display:grid;gap:var(--space-2xs)}.footer__list a,.footer__list span{font-size:var(--step--1);color:var(--ink-muted);transition:color var(--dur-fast) var(--ease-out)}.footer__list a:hover{color:var(--accent)}.footer__base{max-width:var(--max-width);margin:var(--space-2xl) auto 0;padding-top:var(--space-md);border-top:1px solid var(--hairline);display:flex;flex-wrap:wrap;gap:var(--space-sm);justify-content:space-between}.glass{background:var(--glass-tint);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid var(--hairline);box-shadow:inset 0 1px 0 var(--glass-edge),var(--glass-shadow)}.glass:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(to bottom,var(--glass-edge),transparent 42%)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.glass{background:var(--canvas-raised)}}.btn{position:relative;display:inline-flex;align-items:center;gap:var(--space-xs);padding:.9em 1.6em;border:1px solid var(--hairline-strong);border-radius:var(--radius-pill);background:none;font-family:var(--font-sans);font-size:var(--step--1);font-weight:500;letter-spacing:.1em;text-transform:uppercase;line-height:1;color:var(--ink);cursor:pointer;overflow:hidden;transition:color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}.btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform var(--dur-base) var(--ease-out);z-index:-1}.btn>*{position:relative;z-index:1}.btn:hover{color:var(--ink-inverse);border-color:var(--accent)}.btn:hover:before{transform:scaleX(1);transform-origin:left}.btn--solid{background:var(--canvas-inverse);border-color:var(--canvas-inverse);color:var(--ink-inverse)}.btn--solid:before{background:var(--accent)}.btn--solid:hover{color:var(--ink-inverse);border-color:var(--accent)}.btn--ghost{border-color:transparent;border-radius:0;padding-inline:0;color:var(--ink-muted)}.btn--ghost:before{display:none}.btn--ghost:hover{color:var(--accent)}.btn__arrow{transition:transform var(--dur-base) var(--ease-out)}.btn:hover .btn__arrow{transform:translate(4px)}.disc-switch{position:relative;display:inline-flex;align-items:stretch;padding:3px;border:1px solid var(--hairline-strong);border-radius:var(--radius-pill);background:var(--canvas-soft);min-width:350px}.disc-switch__btn{position:relative;z-index:1;flex:1 1 0%;display:inline-flex;align-items:center;justify-content:center;border:0;background:none;cursor:pointer;padding:.5em .7em;border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;color:var(--ink-muted);transition:color var(--dur-base) var(--ease-out)}.disc-switch__btn:hover{color:var(--ink)}.disc-switch__btn[aria-pressed=true]{color:var(--ink-inverse)}.disc-switch__thumb{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:var(--radius-pill);background:var(--accent);transition:transform var(--dur-base) var(--ease-out),background-color var(--theme-dur) var(--theme-ease)}.disc-switch[data-active=software] .disc-switch__thumb{transform:translate(100%)}.disc-switch--bar{display:none}@media(min-width:56rem){.disc-switch--bar{display:inline-flex}}.disc-switch--drawer{display:flex;margin-bottom:var(--space-lg)}.disc-switch--drawer .disc-switch__btn{flex:1;text-align:center}.tag-row{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.tag{padding:.28em .7em;border:1px solid var(--hairline);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.06em;color:var(--ink-muted);transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}a.tag:hover,button.tag:hover{border-color:var(--accent);color:var(--accent);cursor:pointer}.tag.is-active{border-color:var(--accent);color:var(--ink-inverse);background:var(--accent)}.status{display:inline-flex;align-items:center;gap:.5em;font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--ink-muted)}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--status-color, var(--ink-faint))}.status[data-status=live]{--status-color: var(--status-live)}.status[data-status=in-progress]{--status-color: var(--status-progress)}.status[data-status=research]{--status-color: var(--status-research)}.status[data-status=archived]{--status-color: var(--status-archived)}.status[data-status=live]:before{animation:pulse 2.6s var(--ease-in-out) infinite}@keyframes pulse{0%,to{box-shadow:0 0 #3f7a5573}60%{box-shadow:0 0 0 6px #3f7a5500}}.card{position:relative;display:block;border-top:1px solid var(--hairline);padding-top:var(--space-md);transition:border-color var(--dur-base) var(--ease-out);will-change:transform}.card:hover{border-color:var(--accent-dim)}.card__media{position:relative;aspect-ratio:4 / 3;overflow:hidden;background:var(--canvas-soft);margin-bottom:var(--space-md)}.card__media:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,transparent 40%,var(--card-accent, var(--accent)) 50%,transparent 60%),radial-gradient(80% 60% at 50% 110%,var(--card-accent, var(--accent)),transparent 70%);opacity:.22;transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}.card:hover .card__media:after{opacity:.36;transform:scale(1.06)}.card__img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-out)}.card:hover .card__img{transform:scale(1.05)}.card__index{position:absolute;top:var(--space-sm);left:var(--space-sm);z-index:2;font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-muted)}.card__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm)}.card__title{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink);transition:color var(--dur-base) var(--ease-out)}.card:hover .card__title{color:var(--accent)}.card__tagline{margin-top:var(--space-2xs);color:var(--ink-muted);font-size:var(--step-0)}.card__meta{margin-top:var(--space-md);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);justify-content:space-between}.metrics{display:grid;gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.metric{border-top:1px solid var(--hairline);padding-top:var(--space-sm)}.metric__value{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink);line-height:1.1}.metric__label{margin-top:var(--space-3xs)}.facet-band{display:block;width:100%;height:56px}.facet{fill:var(--accent-dim);opacity:.55}.facet:nth-child(2n){fill:var(--accent-secondary);opacity:.3}.marquee{overflow:hidden;border-block:1px solid var(--hairline);padding-block:var(--space-md);white-space:nowrap}.marquee__track{display:inline-flex;gap:var(--space-lg);will-change:transform}.marquee__item{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink-faint);display:inline-flex;align-items:center;gap:var(--space-lg)}.marquee__item:after{content:"◆";font-size:.4em;color:var(--accent)}.field{display:grid;gap:var(--space-2xs)}.field>label{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--ink-faint)}.field input,.field textarea{width:100%;padding:var(--space-xs) 0;background:none;border:0;border-bottom:1px solid var(--hairline-strong);color:var(--ink);transition:border-color var(--dur-base) var(--ease-out)}.field input:focus,.field textarea:focus{outline:none;border-bottom-color:var(--accent)}.field textarea{resize:vertical;min-height:8rem}.field--trap{position:absolute;left:-9999px;opacity:0;pointer-events:none}.form-note{font-family:var(--font-mono);font-size:var(--step--1);padding:var(--space-xs) 0}.form-note[data-tone=error]{color:#a8402c}.form-note[data-tone=success]{color:var(--status-live)}.notice{border:1px solid var(--hairline);padding:var(--space-lg);font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-muted)}.skeleton{display:grid;gap:var(--space-sm)}.skeleton span{display:block;height:1rem;background:linear-gradient(90deg,var(--canvas-soft),var(--canvas-raised),var(--canvas-soft));background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.page{padding-top:calc(var(--space-2xl) + var(--space-md))}.page-head{padding-block:var(--space-2xl) var(--space-xl)}.page-head__title{margin-top:var(--space-sm)}.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding-block:calc(var(--space-3xl) + var(--space-lg)) var(--space-2xl);overflow:hidden}.hero__inner{display:grid;gap:var(--space-xl);align-items:center}@media(min-width:48rem){.hero__inner{grid-template-columns:1.05fr .95fr;gap:var(--space-xl);align-items:center}}.hero__content{display:flex;flex-direction:column;align-items:flex-start;max-width:44rem}.hero__visual{width:100%;height:100%;min-height:420px;display:flex;align-items:center;justify-content:center;position:relative;user-select:none;-webkit-user-select:none}.hero__eyebrow{margin-bottom:var(--space-md)}.hero__title{max-width:16ch}.hero__support{margin-top:var(--space-md);max-width:44ch;font-size:var(--step-0)}.hero__actions{margin-top:var(--space-lg);display:flex;flex-wrap:wrap;gap:var(--space-sm)}.hero__scroll{position:absolute;bottom:var(--space-lg);right:var(--gutter);display:none;align-items:center;gap:var(--space-2xs)}@media(min-width:62rem){.hero__scroll{display:flex}}.hero__scroll:after{content:"";width:3rem;height:1px;background:var(--accent);transform-origin:right;animation:draw 2.2s var(--ease-in-out) infinite}@keyframes draw{0%,to{transform:scaleX(.2)}50%{transform:scaleX(1)}}.hero--home{justify-content:center}.hero--home .hero__inner{display:block;position:relative;z-index:1;max-width:60rem}.hero__aura,.hero__grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.hero__aura{background:radial-gradient(42rem 42rem at 78% 16%,color-mix(in srgb,var(--accent) 26%,transparent),transparent 60%),radial-gradient(34rem 34rem at 10% 84%,color-mix(in srgb,var(--accent-secondary) 22%,transparent),transparent 62%);filter:blur(6px);animation:aura-drift 20s var(--ease-in-out) infinite alternate}@keyframes aura-drift{0%{transform:translate3d(-2%,-1%,0) scale(1)}to{transform:translate3d(3%,2%,0) scale(1.08)}}.hero__grid{opacity:0;background-image:linear-gradient(to right,var(--hairline) 1px,transparent 1px),linear-gradient(to bottom,var(--hairline) 1px,transparent 1px);background-size:3.5rem 3.5rem;mask-image:radial-gradient(circle at 72% 26%,#000,transparent 68%);-webkit-mask-image:radial-gradient(circle at 72% 26%,#000,transparent 68%);transition:opacity var(--theme-dur) var(--theme-ease)}:root[data-discipline=software] .hero__grid{opacity:1}.island-showcase{padding-block:var(--space-2xl)}.island-mount{min-height:520px}.split{display:grid;gap:var(--space-xl)}@media(min-width:60rem){.split{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:var(--space-3xl)}.split--sticky>:first-child{position:sticky;top:calc(var(--space-2xl) + var(--space-md));align-self:start}}.capabilities{list-style:none;padding:0;display:grid}.capability{display:grid;gap:var(--space-2xs);padding-block:var(--space-md);border-top:1px solid var(--hairline);transition:padding-left var(--dur-base) var(--ease-out)}.capability:hover{padding-left:var(--space-sm)}@media(min-width:48rem){.capability{grid-template-columns:3rem minmax(0,1fr) minmax(0,1.4fr);gap:var(--space-md);align-items:baseline}}.capability__title{font-family:var(--font-display);font-size:var(--step-1);color:var(--ink)}.capability__body{color:var(--ink-muted);font-size:var(--step-0)}.timeline{list-style:none;padding:0;display:grid}.timeline__item{display:grid;gap:var(--space-2xs);padding-block:var(--space-lg);border-top:1px solid var(--hairline)}@media(min-width:48rem){.timeline__item{grid-template-columns:10rem minmax(0,1fr);gap:var(--space-lg)}}.timeline__role{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink)}.timeline__org{color:var(--accent);font-size:var(--step-0)}.timeline__body{margin-top:var(--space-2xs);color:var(--ink-muted);max-width:var(--measure)}.work-list{display:grid;gap:var(--space-2xl)}@media(min-width:56rem){.work-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2xl) var(--space-xl)}.work-list>*:nth-child(2n){transform:translateY(var(--space-2xl))}}.project-hero{padding-block:var(--space-2xl) var(--space-xl);border-bottom:1px solid var(--hairline)}.project-hero__title{margin-block:var(--space-sm) var(--space-md)}.project-facts{display:grid;gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));margin-top:var(--space-xl)}.project-fact dt{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-faint);margin-bottom:var(--space-3xs)}.project-fact dd{margin:0;color:var(--ink)}.project-banner{aspect-ratio:21 / 9;overflow:hidden;background:var(--canvas-soft);position:relative}.project-banner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent 40%,var(--card-accent, var(--accent)) 50%,transparent 60%),radial-gradient(70% 120% at 50% 120%,var(--card-accent, var(--accent)),transparent 65%);opacity:.16}.project-banner img{width:100%;height:100%;object-fit:cover}.project-gallery{display:grid;gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(18rem,1fr))}.project-gallery figure{margin:0}.project-gallery figcaption{margin-top:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-faint)}.project-nav{display:grid;gap:var(--space-md);border-top:1px solid var(--hairline);padding-top:var(--space-lg)}@media(min-width:48rem){.project-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.project-nav__item--next{text-align:right}}.project-nav__title{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink);transition:color var(--dur-base) var(--ease-out)}.project-nav__item:hover .project-nav__title{color:var(--accent)}.journal-list{display:grid}.journal-item{display:grid;gap:var(--space-2xs);padding-block:var(--space-lg);border-top:1px solid var(--hairline);transition:padding-left var(--dur-base) var(--ease-out)}.journal-item:hover{padding-left:var(--space-sm)}@media(min-width:56rem){.journal-item{grid-template-columns:9rem minmax(0,1fr) 4rem;gap:var(--space-lg);align-items:baseline}}.journal-item__title{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink);transition:color var(--dur-base) var(--ease-out)}.journal-item:hover .journal-item__title{color:var(--accent)}.journal-item__excerpt{margin-top:var(--space-2xs);color:var(--ink-muted);max-width:var(--measure)}.post-head{padding-block:var(--space-2xl) var(--space-lg);border-bottom:1px solid var(--hairline);margin-bottom:var(--space-xl)}.post-head__meta{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-md)}.contact-grid{display:grid;gap:var(--space-2xl)}@media(min-width:60rem){.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3xl)}}.contact-form{display:grid;gap:var(--space-lg)}.notfound{min-height:70svh;display:grid;place-content:center;text-align:center;gap:var(--space-md)}.admin-page{min-height:100svh}.admin-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-md)}.admin-login{padding-top:var(--space-2xl)}.admin-login__form{display:flex;flex-direction:column;gap:var(--space-md);max-width:100%}.admin-tabs{display:flex;gap:var(--space-xs);border-bottom:1px solid var(--rule);margin-bottom:var(--space-xl)}.admin-tab{all:unset;cursor:pointer;padding:var(--space-sm) var(--space-md);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);border-bottom:2px solid transparent;transition:color .2s,border-color .2s}.admin-tab:hover{color:var(--ink)}.admin-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-lg)}.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.admin-table th{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);text-align:left;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--rule);white-space:nowrap}.admin-table td{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--rule);color:var(--ink-body);vertical-align:middle}.admin-table tr:hover td{background:var(--surface-alt, rgba(128, 128, 128, .04))}.admin-table__mono{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-faint)}.admin-table__actions{display:flex;gap:var(--space-xs);justify-content:flex-end;white-space:nowrap}.admin-table__muted td{opacity:.55}.admin-badge{display:inline-block;font-family:var(--font-mono);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:2px;border:1px solid var(--rule);color:var(--ink-faint)}.admin-badge--success{color:#2e7d32;border-color:#2e7d32}[data-discipline=software] .admin-badge--success{color:#66bb6a;border-color:#66bb6a}.admin-badge--muted{opacity:.5}.admin-badge--accent{color:var(--accent);border-color:var(--accent)}.btn--sm{font-size:var(--text-xs);padding:4px 12px;min-height:0}.btn--danger{color:#c62828;border-color:#c62828}.btn--danger:hover{background:#c62828;color:#fff}[data-discipline=software] .btn--danger{color:#ef5350;border-color:#ef5350}[data-discipline=software] .btn--danger:hover{background:#ef5350;color:#000}.admin-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:grid;place-items:center;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-md);overflow-y:auto}.admin-modal{background:var(--canvas);border:1px solid var(--rule);width:100%;max-width:640px;max-height:90vh;overflow-y:auto;padding:var(--space-xl)}.admin-modal__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg);border-bottom:1px solid var(--rule);padding-bottom:var(--space-md)}.admin-modal__close{all:unset;cursor:pointer;font-size:1.25rem;color:var(--ink-faint);padding:var(--space-xs);transition:color .2s}.admin-modal__close:hover{color:var(--ink)}.admin-modal__form{display:flex;flex-direction:column;gap:var(--space-md)}.admin-modal__actions{display:flex;gap:var(--space-sm);justify-content:flex-end;margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--rule)}.field--inline{display:flex;flex-direction:row;align-items:center;gap:var(--space-sm)}.field--inline label{margin-bottom:0}.field select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;padding:var(--space-sm);font-family:inherit;font-size:inherit;color:var(--ink);background:transparent;border:1px solid var(--rule);border-radius:0;cursor:pointer}.field select:focus{outline:none;border-color:var(--accent)}
