@font-face{font-family:Schibsted Grotesk;font-style:normal;font-weight:400 900;font-display:swap;src:url(../media/481eac7be1c268b7-s.1shg3f9j2jih-.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-weight:400 900;font-display:swap;src:url(../media/31a9145ccb84606d-s.p.3j3x29wbycqkn.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk Fallback;src:local(Arial);ascent-override:93.46%;descent-override:24.67%;line-gap-override:0.0%;size-adjust:104.49%}.schibsted_grotesk_f54f311b-module__O7gC3a__className{font-family:Schibsted Grotesk,Schibsted Grotesk Fallback;font-style:normal}.schibsted_grotesk_f54f311b-module__O7gC3a__variable{--font-schibsted:"Schibsted Grotesk", "Schibsted Grotesk Fallback"}
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.hidden{display:none}.min-w-0{min-width:0}.flex-1{flex:1}.resize{resize:both}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.bg-\[var\(--canvas\)\]{background-color:var(--canvas)}.bg-\[var\(--surface\)\]{background-color:var(--surface)}}:root{--canvas:#f3f3ef;--surface:#fafaf7;--surface-soft:#ecece6;--ink:#191a17;--muted:#4f514c;--quiet:#7a7c75;--line:#191a171f;--line-strong:#191a1738;--accent:#5e6b56;--accent-strong:#4a5444;--yc:#f60;--yc-text:#c24e00;--page-max:1120px;--page-pad:clamp(20px, 4vw, 48px);--header-h:60px;--section-y:clamp(56px, 8vw, 96px);--section-y-sm:clamp(40px, 6vw, 64px);--gap:16px;--gap-lg:24px;--gap-xl:40px;--fs-2xs:10px;--fs-xs:11px;--fs-sm:13px;--fs-base:14px;--fs-md:15px;--fs-lg:17px;--fs-xl:clamp(20px, 2vw, 24px);--fs-display:clamp(28px, 5.5vw, 48px);--fs-quote:clamp(17px, 2vw, 22px);--fs-email:clamp(20px, 4vw, 36px);--lh-tight:1.15;--lh-snug:1.35;--lh-body:1.65;--lh-relaxed:1.7;--track-tight:-.03em;--track-snug:-.02em;--track-normal:-.01em;--track-mono:.06em;--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-full:999px;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur:.18s;--dur-med:.24s;--font-sans:var(--font-schibsted), system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 12px);-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{background:var(--canvas);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;overflow-x:hidden}img,svg,video{max-width:100%;height:auto;display:block}a{color:inherit;transition:color var(--dur) var(--ease-out), opacity var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), background-color var(--dur) var(--ease-out), transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);text-decoration:none}button{font:inherit;-webkit-tap-highlight-color:transparent;transition:color var(--dur) var(--ease-out), background-color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out)}::selection{color:var(--ink);background:#ccd3c7}.site-shell{background:var(--canvas);flex-direction:column;min-height:100dvh;display:flex;overflow-x:clip}.site-header{z-index:40;min-height:var(--header-h);background:var(--canvas);position:sticky;top:0}@supports (color:color-mix(in lab, red, red)){.site-header{background:color-mix(in srgb, var(--canvas) 90%, transparent)}}.site-header{-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.page-container,.nav-inner,.section-inner,.footer-inner{width:min(100%, var(--page-max));padding-inline:var(--page-pad);box-sizing:border-box;margin-inline:auto}.section{border-bottom:1px solid var(--line)}.section-inner{padding-block:var(--section-y)}.section-inner--sm{padding-block:var(--section-y-sm)}.section-inner--hero{padding-block:clamp(48px,8vw,88px)}.font-sans-custom{font-family:var(--font-sans)}.font-mono{font-family:var(--font-mono)!important}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--track-mono);text-transform:uppercase;color:var(--quiet);align-items:center;gap:8px;margin:0 0 12px;font-weight:500;line-height:1.4;display:inline-flex}.label-mono{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--track-mono);text-transform:uppercase;color:var(--quiet);font-weight:500;line-height:1.4}.section-title{font-family:var(--font-sans);font-size:var(--fs-xl);letter-spacing:var(--track-snug);font-weight:500;line-height:var(--lh-snug);color:var(--ink);margin:0}.section-title--spaced{margin-bottom:28px}.card-title{font-family:var(--font-sans);font-size:var(--fs-md);letter-spacing:var(--track-normal);font-weight:500;line-height:var(--lh-snug);color:var(--ink);margin:0}.project-title{font-family:var(--font-sans);font-size:var(--fs-lg);letter-spacing:var(--track-snug);font-weight:500;line-height:var(--lh-snug);color:var(--ink);margin:0}.body-text{font-size:var(--fs-base);line-height:var(--lh-relaxed);color:var(--muted);letter-spacing:var(--track-normal);margin:0}.meta-text{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--quiet);margin:0;line-height:1.4}.display-title{font-family:var(--font-sans);font-size:var(--fs-display);letter-spacing:var(--track-tight);font-weight:500;line-height:var(--lh-tight);color:var(--ink);margin:0}.quote-text{font-family:var(--font-sans);font-size:var(--fs-quote);letter-spacing:var(--track-snug);color:var(--ink);margin:0;font-weight:400;line-height:1.55}.nav-inner{min-height:var(--header-h);justify-content:space-between;align-items:center;gap:12px;display:flex;position:relative}.brand{font-size:var(--fs-base);letter-spacing:var(--track-snug);min-width:0;font-weight:600}.brand span{white-space:nowrap;text-overflow:ellipsis;color:var(--ink);overflow:hidden}.desktop-nav{align-items:center;gap:28px;display:none}.desktop-nav .nav-link{font-size:var(--fs-sm);color:var(--muted);letter-spacing:var(--track-normal);font-weight:500}.desktop-nav .nav-link:hover{color:var(--ink)}.desktop-nav .nav-cta{min-height:36px;font-size:var(--fs-sm);padding:8px 14px}.nav-toggle{width:40px;height:40px;color:var(--ink);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin:0;display:inline-flex}.nav-toggle:hover{background:#191a170d}.nav-toggle-bars{flex-direction:column;justify-content:center;gap:5px;width:18px;display:flex}.nav-toggle-bars span{width:100%;height:1.5px;transition:transform .2s var(--ease-out), opacity .16s var(--ease-out);transform-origin:50%;background:currentColor;border-radius:1px;display:block}.nav-toggle[aria-expanded=true] .nav-toggle-bars span:first-child{transform:translateY(6.5px)rotate(45deg)}.nav-toggle[aria-expanded=true] .nav-toggle-bars span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] .nav-toggle-bars span:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}.mobile-nav{background:var(--surface);border-bottom:1px solid var(--line);padding:8px var(--page-pad) 20px;z-index:50;flex-direction:column;gap:2px;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 16px 32px #191a1714}.mobile-nav.is-open{display:flex}.mobile-nav a{min-height:44px;font-size:var(--fs-md);color:var(--ink);border-bottom:1px solid var(--line);align-items:center;padding:10px 4px;font-weight:500;display:flex}.mobile-nav a:last-child{background:var(--ink);border-radius:var(--radius-sm);border-bottom:none;justify-content:center;min-height:46px;margin-top:8px;color:#fff!important}.mobile-nav a:last-child:hover{background:#2b2c28}body.nav-open{overflow:hidden}.btn-primary,.btn-secondary,.btn-ghost,.copy-email-btn{font-size:var(--fs-sm);letter-spacing:var(--track-normal);cursor:pointer;justify-content:center;align-items:center;gap:8px;font-weight:500;display:inline-flex}.btn-primary{background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:var(--radius-sm);min-height:42px;padding:10px 16px}.btn-primary:hover{background:#2b2c28;transform:translateY(-1px);box-shadow:0 6px 16px #191a171f}.btn-primary:active{transform:translateY(0)}.btn-secondary{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:var(--radius-sm);min-height:42px;padding:10px 16px}.btn-secondary:hover{border-color:var(--ink);background:var(--surface)}@supports (color:color-mix(in lab, red, red)){.btn-secondary:hover{background:color-mix(in srgb, var(--surface) 70%, var(--canvas))}}.btn-secondary:hover{transform:translateY(-1px);box-shadow:0 6px 16px #191a1714}.btn-secondary:active{transform:translateY(0)}.btn-ghost{color:var(--ink);border-bottom:1px solid #0000;gap:6px;min-height:40px;padding:8px 0}.btn-ghost:hover{border-bottom-color:var(--ink);gap:10px;transform:translate(1px)}.section-head{border-bottom:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:28px;padding-bottom:16px;display:flex}.section-head .eyebrow{margin-bottom:8px}.section-head-meta{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--track-mono);text-transform:uppercase;color:var(--quiet);flex-shrink:0;line-height:1.4}.status-dot{background:var(--accent);width:6px;height:6px;animation:pulse-dot 2.4s var(--ease-out) infinite;border-radius:50%;flex-shrink:0;display:inline-block;box-shadow:0 0 #5e6b5673}@keyframes pulse-dot{0%{box-shadow:0 0 #5e6b5666}70%{box-shadow:0 0 0 6px #5e6b5600}to{box-shadow:0 0 #5e6b5600}}.exp-badge,.yc-badge,.tech-chip{font-family:var(--font-mono);font-size:var(--fs-2xs);flex-shrink:0;line-height:1.3}.exp-badge{border-radius:var(--radius-sm);white-space:nowrap;border:1px solid #0000;margin-top:2px;padding:5px 9px}.exp-badge--current{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){.exp-badge--current{background:color-mix(in srgb, var(--accent) 10%, transparent)}}.exp-badge--current{color:var(--accent-strong);border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.exp-badge--current{border-color:color-mix(in srgb, var(--accent) 28%, transparent)}}.exp-badge--past{color:var(--muted);border-color:var(--line);background:0 0}.yc-badge{border-radius:var(--radius-sm);border:1px solid var(--yc);align-items:center;gap:5px;padding:3px 8px 3px 4px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.yc-badge{border:1px solid color-mix(in srgb, var(--yc) 28%, var(--line))}}.yc-badge{background:var(--yc)}@supports (color:color-mix(in lab, red, red)){.yc-badge{background:color-mix(in srgb, var(--yc) 8%, var(--surface))}}.yc-badge{color:var(--yc-text);letter-spacing:.02em;text-transform:none;font-weight:600}.yc-badge-icon{border-radius:var(--radius-xs);flex-shrink:0;width:14px;height:14px;display:block}.tech-chip{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--quiet);background:0 0;align-items:center;padding:4px 8px;display:inline-flex}.exp-grid{gap:var(--gap);grid-template-columns:1fr;display:grid}.exp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);min-width:0;transition:background-color var(--dur-med) var(--ease-out), border-color var(--dur-med) var(--ease-out);flex-direction:column;padding:24px;display:flex}.exp-card:hover{background:var(--surface)}@supports (color:color-mix(in lab, red, red)){.exp-card:hover{background:color-mix(in srgb, var(--surface) 88%, var(--surface-soft))}}.exp-card:hover{border-color:var(--line-strong)}.exp-card-header{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;padding-bottom:18px;display:flex}.exp-card-meta{flex:auto;align-items:flex-start;gap:12px;min-width:0;display:flex}.exp-card-meta-text{flex-direction:column;gap:6px;min-width:0;display:flex}.exp-card-title-row{flex-wrap:wrap;align-items:center;gap:8px 10px;display:flex}.exp-list{flex-direction:column;flex:1;gap:14px;margin:0;padding:0;list-style:none;display:flex}.exp-list li{font-size:var(--fs-base);line-height:var(--lh-relaxed);color:var(--muted);align-items:flex-start;gap:12px;display:flex}.exp-dot{background:var(--quiet);border-radius:50%;flex-shrink:0;width:5px;height:5px;margin-top:.55em}.exp-dot--accent{background:var(--accent)}.project-list{flex-direction:column;gap:4px;display:flex}.project-row{border-radius:var(--radius-md);min-width:0;transition:background-color var(--dur-med) var(--ease-out);background-color:#0000;border:none;flex-direction:column;gap:16px;margin-inline:-16px;padding:24px 16px;display:flex}.project-row:hover{background-color:var(--canvas)}@supports (color:color-mix(in lab, red, red)){.project-row:hover{background-color:color-mix(in srgb, var(--canvas) 55%, var(--surface-soft))}}.project-row-main{flex-direction:column;gap:16px;min-width:0;display:flex}.project-identity{min-width:0}.project-identity .label-mono{margin-bottom:10px;display:block}.project-name-row{align-items:center;gap:10px;min-width:0;display:flex}.project-name-row .company-icon{transition:border-color var(--dur) var(--ease-out)}.project-row:hover .project-name-row .company-icon{border-color:var(--line-strong)}.project-body{min-width:0}.project-body .body-text{margin-bottom:12px}.tech-row{flex-wrap:wrap;gap:6px;display:flex}.project-links{flex-wrap:wrap;align-items:center;gap:8px 20px;display:flex}.project-links .btn-ghost{color:var(--muted);transition:color var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), gap var(--dur) var(--ease-out), transform var(--dur) var(--ease-out)}.project-row:hover .project-links .btn-ghost{color:var(--ink)}.company-icon{border-radius:var(--radius-sm);object-fit:cover;background:var(--surface);border:1px solid var(--line);flex-shrink:0;width:28px;height:28px}.company-icon--lg{border-radius:var(--radius-sm);width:40px;height:40px}.company-icon--origin{object-fit:contain;padding:3px}.cap-grid{grid-template-columns:1fr;gap:16px;display:grid}.cap-shell{isolation:isolate;transition:transform var(--dur-med) var(--ease-out);border-radius:16px;flex-direction:column;padding:12px;display:flex;position:relative}.cap-shell--1{background:radial-gradient(90% 70% at 12% 0,#5e6b5633,#0000 55%),radial-gradient(70% 60% at 100% 100%,#78849424,#0000 50%),linear-gradient(145deg,#e7e8e2 0%,#f1f1eb 45%,#e3e6e4 100%)}.cap-shell--2{background:radial-gradient(85% 65% at 88% 8%,#5a6e8c29,#0000 55%),radial-gradient(75% 55% at 0 100%,#5e6b5624,#0000 50%),linear-gradient(160deg,#e8e9ef 0%,#f2f2ee 48%,#e5e8e6 100%)}.cap-shell--3{background:radial-gradient(80% 70% at 0 20%,#8c846e29,#0000 55%),radial-gradient(70% 60% at 100% 90%,#5e6b561f,#0000 50%),linear-gradient(155deg,#ebe8e1 0%,#f3f2ed 50%,#e6e8e5 100%)}.cap-shell:hover{transform:translateY(-2px)}.cap-corner{z-index:2;pointer-events:none;opacity:.45;width:10px;height:10px;transition:opacity var(--dur) var(--ease-out);position:absolute}.cap-shell:hover .cap-corner{opacity:.75}.cap-corner--tl{border-top:1px solid var(--accent-strong);border-left:1px solid var(--accent-strong);border-top-left-radius:6px;top:8px;left:8px}.cap-corner--tr{border-top:1px solid var(--accent-strong);border-right:1px solid var(--accent-strong);border-top-right-radius:6px;top:8px;right:8px}.cap-corner--bl{border-bottom:1px solid var(--accent-strong);border-left:1px solid var(--accent-strong);border-bottom-left-radius:6px;bottom:8px;left:8px}.cap-corner--br{border-bottom:1px solid var(--accent-strong);border-right:1px solid var(--accent-strong);border-bottom-right-radius:6px;bottom:8px;right:8px}.cap-card{z-index:1;min-height:200px;transition:border-color var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out), background var(--dur-med) var(--ease-out);background:linear-gradient(165deg,#ffffffeb 0%,#fafaf7f5 48%,#f4f4effa 100%);border:1px solid #191a1714;border-radius:14px;flex-direction:column;flex:1;gap:18px;padding:22px;display:flex;position:relative;box-shadow:inset 0 1px #ffffffb3,0 10px 28px #191a170d}.cap-shell:hover .cap-card{border-color:#191a171f;box-shadow:inset 0 1px #fffc,0 14px 34px #191a1714}.cap-card-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.cap-icon{width:36px;height:36px;color:var(--accent-strong);background:linear-gradient(160deg,#5e6b5624 0%,#5e6b560f 100%);border:1px solid #5e6b5629;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.cap-index{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--track-mono);color:var(--accent-strong);font-weight:500}@supports (color:color-mix(in lab, red, red)){.cap-index{color:color-mix(in srgb, var(--accent-strong) 70%, var(--quiet))}}.cap-index{transition:color var(--dur) var(--ease-out);flex-shrink:0;padding-top:2px;line-height:1.3}.cap-shell:hover .cap-index{color:var(--accent-strong)}.cap-card-body{flex-direction:column;gap:10px;margin-top:auto;display:flex}.cap-card .card-title{letter-spacing:-.02em;margin:0;font-size:17px}.cap-card .body-text{max-width:34em;margin:0}.about-grid{gap:var(--gap-xl);grid-template-columns:1fr;display:grid}.about-columns{grid-template-columns:1fr;gap:28px;display:grid}.about-item .card-title{transition:color var(--dur) var(--ease-out);margin-bottom:10px}.about-item:hover .card-title{color:var(--accent-strong)}.hero-grid{grid-template-columns:1fr;align-items:center;gap:40px;display:grid}.hero-copy{flex-direction:column;gap:0;min-width:0;max-width:36rem;display:flex}.hero-copy .eyebrow{margin:0 0 12px}.hero-copy .display-title{letter-spacing:-.035em;text-wrap:balance;max-width:min(100%,11.2em);margin:0 0 20px;line-height:1.12}.hero-copy .display-title .nowrap{white-space:nowrap}.hero-copy .body-text{max-width:min(100%,34rem);font-size:var(--fs-base);line-height:var(--lh-relaxed);color:var(--muted);text-wrap:pretty;margin:0 0 28px}@media (min-width:640px){.hero-copy .body-text{max-width:min(100%,42ch)}}.hero-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.hero-actions>a{flex:none;min-width:0}.hero-visual{justify-content:center;align-items:center;width:100%;min-width:0;display:flex}.hero-reveal{opacity:0;filter:blur(4px);animation:hero-reveal .9s var(--ease-out) forwards;will-change:opacity, transform, filter;transform:translateY(18px)}.hero-reveal--1{animation-delay:50ms}.hero-reveal--2{animation-delay:.14s}.hero-reveal--3{animation-delay:.26s}.hero-reveal--4{animation-delay:.38s}.hero-reveal--5{animation-delay:.18s}@keyframes hero-reveal{0%{opacity:0;filter:blur(4px);transform:translateY(18px)}65%{filter:blur()}to{opacity:1;filter:blur();transform:translateY(0)}}.loop-graphic{border:1px solid var(--line);background:var(--canvas);aspect-ratio:1;-webkit-user-select:none;user-select:none;border-radius:var(--radius-md);opacity:0;width:100%;max-width:440px;transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;margin-inline:auto;display:grid;position:relative;overflow:hidden;transform:scale(.96)translateY(14px)}.loop-graphic.is-active{opacity:1;transform:scale(1)translateY(0)}.loop-graphic-rule-h,.loop-graphic-rule-v{background:var(--line);z-index:10;pointer-events:none;position:absolute}.loop-graphic-rule-h{transform-origin:50%;height:1px;transition:transform .65s var(--ease-out) .15s;top:50%;left:0;right:0;transform:scaleX(0)}.loop-graphic-rule-v{transform-origin:50%;width:1px;transition:transform .65s var(--ease-out) .15s;top:0;bottom:0;left:50%;transform:scaleY(0)}.loop-graphic.is-active .loop-graphic-rule-h{transform:scaleX(1)}.loop-graphic.is-active .loop-graphic-rule-v{transform:scaleY(1)}.loop-center{z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-full);width:40px;height:40px;font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.02em;color:var(--ink);opacity:0;transition:opacity .45s var(--ease-out) .35s, transform .45s var(--ease-out) .35s, border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);justify-content:center;align-items:center;margin:-20px 0 0 -20px;font-weight:600;display:flex;position:absolute;top:50%;left:50%;transform:scale(.55);box-shadow:0 1px 2px #191a170a}.loop-graphic.is-active .loop-center{opacity:1;transform:scale(1)}.loop-graphic.is-active:hover .loop-center{border-color:var(--line-strong);transform:scale(1.07);box-shadow:0 4px 14px #191a1714}.loop-cell{--i:0;opacity:0;min-width:0;min-height:0;transition:opacity .5s var(--ease-out) calc(.2s + (var(--i) * 80ms)), transform .5s var(--ease-out) calc(.2s + (var(--i) * 80ms)), background-color var(--dur-med) var(--ease-out);flex-direction:column;justify-content:space-between;gap:10px;padding:16px;display:flex;position:relative;transform:translateY(12px)}.loop-graphic.is-active .loop-cell{opacity:1;transform:translateY(0)}.loop-cell:hover{background:var(--canvas)}@supports (color:color-mix(in lab, red, red)){.loop-cell:hover{background:color-mix(in srgb, var(--canvas) 55%, var(--surface))}}.loop-cell-label{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--quiet);letter-spacing:var(--track-mono);text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;transition:color var(--dur) var(--ease-out);font-weight:500;line-height:1.3;overflow:hidden}.loop-cell:hover .loop-cell-label{color:var(--accent-strong)}.loop-cell-title{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted);letter-spacing:.02em;transition:color var(--dur) var(--ease-out);font-weight:500;line-height:1.35}.loop-cell:hover .loop-cell-title{color:var(--ink)}.loop-cell-media{opacity:.78;min-height:0;transition:opacity var(--dur-med) var(--ease-out), transform var(--dur-med) var(--ease-out);flex:1;justify-content:center;align-items:center;display:flex}.loop-cell:hover .loop-cell-media{opacity:1;transform:scale(1.05)}.loop-cell:hover .loop-cell-media:has(.loop-bars){transform:none}.loop-ui-mock{flex-direction:column;gap:6px;width:100%;max-width:96px;display:flex}.loop-ui-bar{border:1px dashed var(--line-strong);border-radius:var(--radius-sm);height:22px;transition:border-color var(--dur) var(--ease-out);justify-content:space-between;align-items:center;padding:0 8px;display:flex}.loop-cell:hover .loop-ui-bar{border-color:var(--accent)}.loop-ui-dot{border-radius:var(--radius-full);background:var(--accent);width:6px;height:6px}.loop-graphic.is-active .loop-ui-dot{animation:loop-dot-pulse 2.2s var(--ease-out) .6s infinite}@keyframes loop-dot-pulse{0%,to{box-shadow:0 0 #5e6b5666}50%{box-shadow:0 0 0 6px #5e6b5600}}.loop-ui-line{border-radius:var(--radius-xs);background:var(--line-strong);transform-origin:0;width:36px;height:3px;transition:transform .55s var(--ease-out) .45s, background .2s var(--ease-out);transform:scaleX(.3)}.loop-graphic.is-active .loop-ui-line{transform:scaleX(1)}.loop-cell:hover .loop-ui-line{background:var(--accent);transition-delay:0s}.loop-ui-grid{grid-template-columns:1fr 2fr;gap:4px;display:grid}.loop-ui-block{border:1px solid var(--line);border-radius:var(--radius-xs);background:var(--surface);opacity:0;height:12px;transition:opacity .4s var(--ease-out), transform .4s var(--ease-out);transform:translateY(5px)}.loop-graphic.is-active .loop-ui-block:first-child{opacity:1;transition-delay:.5s;transform:none}.loop-graphic.is-active .loop-ui-block:nth-child(2){opacity:1;transition-delay:.6s;transform:none}.loop-code{width:100%;max-width:108px;font-family:var(--font-mono);color:var(--quiet);transition:color var(--dur) var(--ease-out);font-size:7px;line-height:1.55}.loop-code>div{opacity:0;transition:opacity .35s var(--ease-out), transform .35s var(--ease-out);transform:translateY(5px)}.loop-graphic.is-active .loop-code>div:first-child{opacity:1;transition-delay:.45s;transform:none}.loop-graphic.is-active .loop-code>div:nth-child(2){opacity:1;transition-delay:.55s;transform:none}.loop-graphic.is-active .loop-code>div:nth-child(3){opacity:1;transition-delay:.65s;transform:none}.loop-code-accent{color:var(--accent-strong);font-weight:600}.loop-cell:hover .loop-code{color:var(--ink)}.loop-radar{border:1px solid var(--line-strong);border-radius:var(--radius-full);width:44px;height:44px;transition:border-color var(--dur) var(--ease-out), transform var(--dur-med) var(--ease-out);justify-content:center;align-items:center;display:flex}.loop-cell:hover .loop-radar{border-color:var(--accent);transform:scale(1.06)}.loop-radar-inner{border:1px dashed var(--line-strong);border-radius:var(--radius-full);width:28px;height:28px;transition:border-color var(--dur) var(--ease-out);justify-content:center;align-items:center;display:flex}.loop-graphic.is-active .loop-radar-inner{animation:9s linear infinite loop-radar-spin}.loop-cell:hover .loop-radar-inner{border-color:var(--accent-strong);animation-duration:4.5s}.loop-radar-core{border-radius:var(--radius-full);background:var(--accent);width:6px;height:6px}.loop-graphic.is-active .loop-radar-core{animation:loop-dot-pulse 2s var(--ease-out) infinite}@keyframes loop-radar-spin{to{transform:rotate(360deg)}}.loop-bars{align-items:flex-end;gap:5px;width:100%;max-width:96px;height:40px;display:flex}.loop-bar{border-radius:var(--radius-xs) var(--radius-xs) 0 0;background:var(--line-strong);transform-origin:bottom;min-width:0;transition:transform .55s var(--ease-out), height .4s var(--ease-out), background-color .3s var(--ease-out);flex:1;transform:scaleY(0)}.loop-bar:first-child{height:28%}.loop-bar:nth-child(2){height:48%}.loop-bar:nth-child(3){height:38%}.loop-bar:nth-child(4){height:72%}.loop-bar:nth-child(5){height:92%}.loop-graphic.is-active .loop-bar{transform:scaleY(1)}.loop-graphic.is-active .loop-bar:first-child{transition-delay:.45s,0s,0s}.loop-graphic.is-active .loop-bar:nth-child(2){transition-delay:.52s,0s,0s}.loop-graphic.is-active .loop-bar:nth-child(3){transition-delay:.59s,0s,0s}.loop-graphic.is-active .loop-bar:nth-child(4){transition-delay:.66s,0s,0s}.loop-graphic.is-active .loop-bar:nth-child(5){transition-delay:.73s,0s,0s}.loop-cell:hover .loop-bar{background:var(--accent);transition-delay:0s!important}.loop-cell:hover .loop-bar:first-child{height:62%;transition-delay:0s!important}.loop-cell:hover .loop-bar:nth-child(2){height:30%;transition-delay:40ms!important}.loop-cell:hover .loop-bar:nth-child(3){background:var(--accent-strong);height:78%;transition-delay:80ms!important}.loop-cell:hover .loop-bar:nth-child(4){background:var(--accent-strong);height:46%;transition-delay:.12s!important}.loop-cell:hover .loop-bar:nth-child(5){height:100%;transition-delay:.16s!important}.thesis-block{min-width:0;max-width:42rem}.thesis-block .label-mono{margin-bottom:12px;display:block}.contact-intro{font-size:var(--fs-md);line-height:var(--lh-body);color:var(--muted);letter-spacing:var(--track-normal);max-width:32em;margin:0 0 20px}.contact-row{flex-direction:column;align-items:flex-start;gap:14px;min-width:0;margin-bottom:36px;display:flex}.contact-email{font-family:var(--font-sans);letter-spacing:var(--track-tight);color:var(--ink);word-break:break-word;overflow-wrap:anywhere;font-weight:500;line-height:1.25;font-size:var(--fs-email);max-width:100%}.contact-email:hover{color:var(--accent-strong)}.copy-email-btn{min-height:40px;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.02em;border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:var(--radius-sm);flex-shrink:0;padding:10px 14px}.copy-email-btn.is-copied{background:var(--accent-strong);border-color:var(--accent-strong)}.copy-email-btn:not(.is-copied):hover{background:#2b2c28;border-color:#2b2c28;transform:translateY(-1px)}.social-row{border-top:1px solid var(--line);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--track-mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 24px;padding-top:24px;display:flex}.social-links{flex-wrap:wrap;align-items:center;gap:8px 20px;display:flex}.footer-link{min-height:36px;transition:color var(--dur) var(--ease-out);align-items:center;display:inline-flex;position:relative}.footer-link:hover{color:var(--ink)}.footer-link:after{content:"";transform-origin:0;width:100%;height:1px;transition:transform .2s var(--ease-out);background:currentColor;position:absolute;bottom:8px;left:0;transform:scaleX(0)}.footer-link:hover:after{transform:scaleX(1)}.site-footer{border-top:1px solid var(--line);background:var(--canvas);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--quiet);letter-spacing:var(--track-mono);padding-block:24px}.site-footer .footer-inner{flex-direction:column;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}@media (min-width:480px){.loop-cell{padding:18px}.loop-center{width:44px;height:44px;margin:-22px 0 0 -22px}}@media (min-width:640px){.hero-actions>a{flex:none;min-width:0}.section-head{flex-direction:row;justify-content:space-between;align-items:flex-end;margin-bottom:32px;padding-bottom:18px}.exp-card{padding:28px}.about-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.cap-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.contact-row{flex-direction:row;align-items:center;gap:16px 20px;margin-bottom:48px}.project-row{padding:28px 16px}.site-footer .footer-inner{flex-direction:row;align-items:center}}@media (min-width:768px){.nav-toggle{display:none}.desktop-nav{display:flex}.mobile-nav,.mobile-nav.is-open{display:none}.exp-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.exp-card{padding:32px}.exp-card-header{flex-wrap:nowrap}}@media (min-width:1024px){.hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:48px}.hero-visual{justify-content:flex-end}.loop-graphic{max-width:360px;margin-inline:0}.about-grid{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start;gap:48px}.cap-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.cap-shell{padding:14px}.cap-card{min-height:210px;padding:24px}.project-list{grid-template-columns:1fr;grid-auto-rows:1fr;display:grid}.project-row{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:24px;margin-inline:-20px;padding:28px 20px}.project-row-main{flex-direction:row;flex:1;align-items:flex-start;gap:32px}.project-identity{flex-shrink:0;width:30%;max-width:240px}.project-body{flex:1;max-width:420px}.project-links{justify-content:flex-end;align-self:flex-start;width:18%;min-width:140px;margin-top:14px}}@media (hover:none){.btn-primary:hover,.btn-secondary:hover,.copy-email-btn:not(.is-copied):hover{box-shadow:none;transform:none}.btn-ghost:hover{transform:none}.project-row:hover{background-color:#0000}.cap-shell:hover{transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.hero-reveal{opacity:1!important;filter:none!important;animation:none!important;transform:none!important}.loop-graphic,.loop-graphic.is-active,.loop-graphic.is-active .loop-cell,.loop-graphic.is-active .loop-center,.loop-graphic.is-active .loop-graphic-rule-h,.loop-graphic.is-active .loop-graphic-rule-v,.loop-graphic.is-active .loop-ui-line,.loop-graphic.is-active .loop-ui-block,.loop-graphic.is-active .loop-code>div,.loop-graphic.is-active .loop-bar,.loop-cell:hover .loop-bar{opacity:1!important;transition:none!important;animation:none!important;transform:none!important}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
