:root{--color-bg: #ffffff;--color-surface: #ffffff;--color-surface-elevated: #f4f6f8;--color-surface-hover: #fafafa;--color-accent: #10b981;--color-accent-hover: #22c55e;--color-accent-subtle: rgba(16, 185, 129, .1);--color-accent-subtle-hover: rgba(16, 185, 129, .2);--color-accent-border: rgba(16, 185, 129, .2);--color-accent-glow: rgba(16, 185, 129, .1);--color-on-accent: #ffffff;--color-text-primary: #09090b;--color-text-secondary: #52525b;--color-text-muted: #71717a;--color-border: #e4e4e7;--color-border-hover: #d4d4d8;--color-placeholder-bg: #eef1f5;--color-placeholder-border: #7c8da1;--color-placeholder-text: #475569;--gradient-accent: linear-gradient(135deg, var(--color-accent) 0%, var(--color-accent-hover) 100%);--gradient-glow: radial-gradient(ellipse at center, var(--color-accent-glow) 0%, transparent 70%);--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-heading: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tight: -.02em;--tracking-snug: -.01em;--tracking-wide: .02em;--tracking-wider: .05em;--line-tight: 1.05;--line-heading: 1.1;--line-display: var(--line-heading);--line-snug: 1.35;--line-compact: 1.45;--line-body: 1.6;--line-relaxed: 1.65;--line-normal: 1.5;--text-micro: .5rem;--text-2xs: .75rem;--text-xs: .875rem;--text-sm: 1rem;--text-base: 1.125rem;--text-lg: 1.375rem;--text-xl: 1.75rem;--text-2xl: 2.25rem;--text-3xl: clamp(2.5rem, 6vw, 3.5rem);--text-4xl: clamp(3rem, 7vw, 4rem);--text-hero: clamp(3.5rem, 8vw, 5rem);--type-hero: var(--text-hero);--type-page: var(--text-3xl);--type-section: var(--text-2xl);--type-title: var(--text-xl);--type-subhead: var(--text-lg);--type-body: var(--text-base);--type-ui: var(--text-sm);--type-caption: var(--text-xs);--type-micro: var(--text-2xs);--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--space-4xl: 6rem;--space-5xl: 8rem;--space-6xl: 10rem;--space-section: var(--space-2xl);--space-inset: var(--space-lg);--space-stack: var(--space-md);--space-avatar: 4.5rem;--radius-xs: var(--space-xs);--radius-sm: var(--space-sm);--radius-md: var(--space-md);--radius-lg: var(--space-lg);--radius-xl: var(--space-xl);--radius-2xl: var(--space-2xl);--radius-full: 50%;--aspect-square: 1 / 1;--aspect-standard: 4 / 3;--aspect-wide: 16 / 9;--aspect-photo: 3 / 2;--aspect-portrait: 3 / 4;--max-width: 72rem;--content-padding: clamp(var(--space-lg), 5vw, var(--space-3xl));--viewport-min: 100svh;--viewport-fallback: 100vh;--size-dot: var(--space-xs);--size-icon-toggle: 2.5rem;--size-hero-glow-lg: 50rem;--size-hero-glow-sm: 18.75rem;--size-nav-drawer-max: 18.75rem;--size-site-header: 5rem;--input-min-height: 4rem;--border-width: 1px;--border-width-thick: 2px;--outline-width: 2px;--outline-offset: 2px;--shadow-glow: 0 0 30px var(--color-accent-glow);--shadow-glow-lg: 0 0 40px var(--color-accent-glow);--shadow-card: 0 4px 24px var(--color-accent-glow);--opacity-subtle: .85;--opacity-muted: .6;--transition-fast: .2s ease;--transition-base: .3s ease;--measure-xs: 20ch;--measure-sm: 30ch;--measure-md: 36ch;--measure-lg: 42ch;--measure-xl: 48ch;--measure-2xl: 52ch;--measure-hero: 50ch;--measure-quote: 55ch;--measure-content: 65ch}[data-theme=dark]{--color-bg: #09090b;--color-surface: rgba(24, 24, 27, .5);--color-surface-elevated: var(--color-surface);--color-surface-hover: rgba(39, 39, 42, .6);--color-accent-glow: rgba(16, 185, 129, .2);--color-text-primary: #fafafa;--color-text-secondary: #a1a1aa;--color-border: rgba(255, 255, 255, .08);--color-border-hover: rgba(255, 255, 255, .12);--color-placeholder-bg: #1c1c1f;--color-placeholder-border: #94a3b8;--color-placeholder-text: #cbd5e1;--gradient-glow: radial-gradient(ellipse at center, var(--color-accent-glow) 0%, transparent 70%)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-y:scroll;scrollbar-gutter:stable}body{font-family:var(--font-body);font-size:var(--type-body);font-weight:var(--font-weight-normal);line-height:var(--line-body);color:var(--color-text-primary);background-color:var(--color-bg);min-height:var(--viewport-fallback);display:flex;flex-direction:column;transition:background-color var(--transition-base),color var(--transition-base)}img,picture,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{color:var(--color-accent)}a:focus-visible,button:focus-visible,input:focus-visible{outline:var(--outline-width) solid var(--color-accent);outline-offset:var(--outline-offset)}h1,h2,h3,h4,h5,h6,.heading{font-family:var(--font-heading);font-weight:var(--font-weight-bold);line-height:var(--line-tight);letter-spacing:var(--tracking-tight);color:var(--color-text-primary)}h1{font-size:var(--type-page)}h2{font-size:var(--type-section)}h3{font-size:var(--type-title)}h4{font-size:var(--type-subhead)}h5,h6{font-size:var(--type-ui)}.hero h1{font-size:var(--type-hero);line-height:var(--line-display)}.page-header h1{font-size:var(--type-page)}.section-header h2{font-size:var(--type-section)}.label{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--type-ui);letter-spacing:var(--tracking-wider);color:var(--color-accent);text-transform:uppercase}.lead{font-size:var(--type-subhead);line-height:var(--line-body);max-width:var(--measure-lg);color:var(--color-text-secondary)}.muted,time{font-size:var(--type-caption)}.muted{color:var(--color-text-muted)}.container{width:100%;max-width:var(--max-width);margin-inline:auto;padding-inline:var(--space-lg)}@media(min-width:48rem){.container{padding-inline:var(--content-padding)}}main{flex:1}main>section:not(.hero){padding-block:var(--space-section)}.section-header{margin-bottom:var(--space-inset)}.section-header .label{display:block;margin-bottom:var(--space-xs)}.section-header .lead{margin-top:var(--space-stack);margin-bottom:0}.site-header-group,.site-header-wrap{position:relative}.site-header-group[data-header-behavior=sticky]{position:sticky;top:0;z-index:1002}.site-header-group[data-header-behavior=sticky] .site-header{background:var(--color-bg)}.site-header-group[data-header-behavior=scroll-hide]{position:sticky;top:0;z-index:1002;transition:transform var(--transition-base)}.site-header-group[data-header-behavior=scroll-hide] .site-header{background:var(--color-bg)}.site-header-group[data-header-behavior=scroll-hide].is-header-hidden{transform:translateY(-100%)}@media(prefers-reduced-motion:reduce){.site-header-group[data-header-behavior=scroll-hide]{transition:none}}.site-header{position:relative;padding-block:var(--space-md)}.site-header__inner{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--space-md)}.site-header__actions{grid-column:2;justify-self:end;display:flex;align-items:center;gap:var(--space-xs)}@media(min-width:48rem){.site-nav{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;z-index:1}.site-nav__panel{display:contents}}@media(max-width:48rem){.site-header__actions{grid-column:2;grid-row:1}}.site-header .site-logo{grid-column:1;justify-self:start;font-family:var(--font-heading);font-weight:var(--font-weight-bold);font-size:var(--type-subhead);letter-spacing:var(--tracking-tight);text-decoration:none;color:var(--color-text-primary)}.site-header .site-logo:hover{color:var(--color-accent);text-decoration:none}.site-nav ul{display:flex;flex-wrap:wrap;gap:var(--space-xl);list-style:none;padding:0}.site-nav a{font-family:var(--font-heading);font-weight:var(--font-weight-medium);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);text-decoration:none;color:var(--color-text-secondary);transition:color var(--transition-fast),background-color var(--transition-base)}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--color-accent)}.site-nav__social{display:none}.header-resume-link,.theme-toggle{display:flex;align-items:center;justify-content:center;width:var(--size-icon-toggle);height:var(--size-icon-toggle);padding:0;background:transparent;border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-secondary);text-decoration:none;cursor:pointer;transition:border-color var(--transition-base),background-color var(--transition-base),color var(--transition-base)}.header-resume-link:hover,.theme-toggle:hover{border-color:var(--color-accent);background:var(--color-surface);color:var(--color-accent)}.header-resume-link:focus-visible,.theme-toggle:focus-visible{outline:var(--outline-width) solid var(--color-accent);outline-offset:var(--outline-offset)}.theme-toggle{position:relative}.theme-toggle .sun-icon,.theme-toggle .moon-icon{position:absolute;transition:opacity var(--transition-base),transform var(--transition-base);color:var(--color-text-secondary)}.theme-toggle .moon-icon{opacity:0;transform:rotate(-90deg)}[data-theme=dark] .theme-toggle .sun-icon{opacity:0;transform:rotate(90deg)}[data-theme=dark] .theme-toggle .moon-icon{opacity:1;transform:rotate(0)}[data-theme=light] .theme-toggle .sun-icon,:not([data-theme]) .theme-toggle .sun-icon{opacity:1;transform:rotate(0)}[data-theme=light] .theme-toggle .moon-icon,:not([data-theme]) .theme-toggle .moon-icon{opacity:0;transform:rotate(-90deg)}.mobile-menu-toggle{display:none;align-items:center;justify-content:center;width:var(--size-icon-toggle);height:var(--size-icon-toggle);padding:0;background:transparent;border:none;color:var(--color-text-primary);cursor:pointer}.mobile-menu-toggle:focus-visible{outline:var(--outline-width) solid var(--color-accent);outline-offset:var(--outline-offset)}.mobile-menu-toggle__bars{display:flex;flex-direction:column;justify-content:center;gap:5px;width:1.25rem}.mobile-menu-toggle__bar{display:block;width:100%;height:2px;background:currentColor;border-radius:1px;transition:transform var(--transition-base),opacity var(--transition-fast);transform-origin:center}.mobile-menu-toggle.is-open .mobile-menu-toggle__bar:nth-child(1){transform:translateY(7px) rotate(45deg)}.mobile-menu-toggle.is-open .mobile-menu-toggle__bar:nth-child(2){opacity:0}.mobile-menu-toggle.is-open .mobile-menu-toggle__bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}body.nav-open{touch-action:none}@media(max-width:48rem){.site-header-wrap{position:relative;z-index:1004}.mobile-menu-toggle{display:flex}.site-nav{position:fixed;inset:0;width:100%;max-width:none;margin:0;z-index:1003;padding:0;background:var(--color-bg);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--transition-base),visibility var(--transition-base)}.site-nav.open{opacity:1;visibility:visible;pointer-events:auto;overflow:hidden}.site-nav__panel{display:flex;flex-direction:column;align-items:center;justify-content:space-between;height:100%;overflow:hidden;padding-top:var(--size-site-header);padding-bottom:var(--space-3xl)}.site-nav ul{flex:1;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--space-lg);width:100%;margin:0;padding-top:var(--space-lg)}.site-nav li{width:auto}.site-nav a{font-size:var(--type-subhead);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);padding:0;background:none;transition:color var(--transition-fast)}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--color-accent);background:none}.site-nav.open ul li{animation:mobile-nav-fade var(--transition-base) ease both}.site-nav.open ul li:nth-child(2){animation-delay:.05s}.site-nav.open ul li:nth-child(3){animation-delay:.1s}.site-nav__social{display:flex;align-items:center;justify-content:center;gap:var(--space-xl);width:100%;margin-top:auto;padding-top:0;animation:mobile-nav-fade var(--transition-base) ease .15s both}.site-nav__social a{display:flex;color:var(--color-text-muted);transition:color var(--transition-fast)}.site-nav__social a:hover{color:var(--color-accent)}.site-nav__social svg{width:1.25rem;height:1.25rem}}@keyframes mobile-nav-fade{0%{opacity:0;transform:translateY(var(--space-sm))}to{opacity:1;transform:translateY(0)}}.site-footer{padding-block:var(--space-section);margin-top:0}.site-footer .container{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--space-lg)}.site-footer nav ul{display:flex;flex-wrap:wrap;gap:var(--space-xl);list-style:none;padding:0}.site-footer nav a{font-family:var(--font-heading);font-weight:var(--font-weight-medium);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);text-decoration:none;color:var(--color-text-secondary);transition:color var(--transition-fast)}.site-footer nav a:hover{color:var(--color-accent)}.hero{background:var(--color-bg);color:var(--color-text-primary);position:relative;overflow:hidden;padding-block:var(--space-inset);box-sizing:border-box;display:flex;align-items:center}@media(min-width:48rem){.hero{min-height:calc(var(--viewport-min) - var(--size-site-header));padding-block:var(--space-stack)}}.hero:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:var(--size-hero-glow-lg);height:var(--size-hero-glow-lg);background:var(--gradient-glow);border-radius:var(--radius-full);pointer-events:none;z-index:0}@media(max-width:48rem){.hero:before{width:var(--size-hero-glow-sm);height:var(--size-hero-glow-sm)}}.hero__inner{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-inset);position:relative;z-index:1;width:100%}@media(min-width:48rem){.hero__inner{display:grid;grid-template-columns:1fr minmax(12rem,38%);align-items:center;gap:var(--space-xl)}}.hero__content{text-align:center}@media(min-width:48rem){.hero__content{text-align:left}}.profile-meta{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-stack);text-align:center}@media(min-width:48rem){.profile-meta{text-align:left}}.profile-meta__location{margin:0;font-size:var(--type-caption);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-text-muted)}.profile-meta__actions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}@media(min-width:48rem){.profile-meta__actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-md) var(--space-lg)}}.profile-meta__action{display:inline-flex;align-items:center;gap:var(--space-xs);font-family:var(--font-heading);font-size:var(--type-ui);font-weight:var(--font-weight-medium);color:var(--color-text-primary);text-decoration:none;transition:color var(--transition-fast)}.profile-meta__action:hover{color:var(--color-accent)}.profile-meta__icon{flex-shrink:0;color:var(--color-accent)}.profile-meta__side{margin:0;font-size:var(--type-caption)}.profile-meta__side a{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.15em var(--space-xs);color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast)}.profile-meta__side a:hover{color:var(--color-accent)}.profile-meta__side-desc{color:var(--color-text-muted)}.profile-meta__arrow{color:var(--color-accent)}.page-header .profile-meta{margin-bottom:var(--space-inset)}.hero__label{display:inline-block;margin-bottom:var(--space-stack);color:var(--color-accent)}.hero h1{margin-bottom:var(--space-stack);max-width:var(--measure-sm);margin-inline:auto}@media(min-width:48rem){.hero h1{max-width:var(--measure-md);margin-inline:0}}.hero__accent{color:var(--color-accent)}.hero .lead{margin-bottom:var(--space-inset);max-width:var(--measure-md);margin-inline:auto}@media(min-width:48rem){.hero .lead{max-width:var(--measure-lg);margin-inline:0}}.hero__actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-md) var(--space-lg)}@media(min-width:48rem){.hero__actions{justify-content:flex-start;gap:var(--space-md) var(--space-xl)}}.hero__link{font-family:var(--font-heading);font-weight:var(--font-weight-medium);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);color:var(--color-text-secondary);text-decoration:none}.hero__link:hover{color:var(--color-accent)}.hero__media{margin:0;width:100%;max-width:11rem;margin-inline:auto;aspect-ratio:var(--aspect-portrait);max-height:min(38svh,18rem);display:grid;overflow:hidden;border-radius:var(--radius-lg)}@media(min-width:48rem){.hero__media{max-width:none;width:100%;max-height:min(calc(var(--viewport-min) - var(--size-site-header) - var(--space-2xl)),32rem);margin-inline:0;justify-self:end}}.hero__media .image-placeholder,.hero__media img{grid-area:1 / 1;width:100%;height:100%;min-height:0;object-fit:cover;border-radius:var(--radius-lg)}.hero__media .image-placeholder{display:flex;align-items:center;justify-content:center}.pull-quote{font-size:var(--type-subhead);line-height:var(--line-body);max-width:var(--measure-quote)}.project-grid{display:flex;flex-direction:column;gap:var(--space-2xl)}.project-card{display:grid;grid-template-columns:1fr;gap:var(--space-inset);padding-bottom:var(--space-2xl)}.project-card:last-child{padding-bottom:0}@media(min-width:48rem){.project-card{grid-template-columns:minmax(12rem,18rem) 1fr;gap:var(--space-xl);align-items:start}.project-card--featured{grid-template-columns:minmax(16rem,22rem) 1fr}}.project-card .image-placeholder{border-radius:var(--radius-lg)}.project-card h3{margin-bottom:var(--space-md)}.project-card h3 a{text-decoration:none}.project-card h3 a:hover{color:var(--color-accent)}.project-meta{display:flex;flex-wrap:wrap;gap:var(--space-md) var(--space-xl);margin-top:var(--space-inset);font-size:var(--type-ui)}.project-card .project-meta{flex-direction:column;flex-wrap:nowrap;gap:var(--space-lg)}.project-card .project-meta>div{display:flex;flex-direction:column;gap:var(--space-2xs)}.project-meta dt{font-family:var(--font-heading);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-wide);font-size:var(--type-ui)}.project-meta dd{margin:0;line-height:var(--line-relaxed);color:var(--color-text-secondary)}.project-card .project-meta dd{color:var(--color-text-primary)}.project-preview-grid{display:grid;gap:var(--space-inset)}@media(min-width:48rem){.project-preview-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-xl)}}.project-preview{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-xl);transition:all var(--transition-base)}.project-preview:hover{border-color:var(--color-accent);background:var(--color-surface-hover);box-shadow:var(--shadow-glow)}@media(min-width:36rem){.project-preview{flex-direction:row;align-items:flex-start;gap:var(--space-lg)}.project-preview__media{flex:0 0 42%;max-width:42%;margin-bottom:0}.project-preview__body{flex:1;min-width:0}}.project-preview__media{border-radius:var(--radius-lg)}.project-preview__body h3{margin-bottom:var(--space-sm)}.project-preview__body h3 a{text-decoration:none;color:var(--color-text-primary)}.project-preview__body h3 a:hover{color:var(--color-accent)}.project-preview__body p{margin:0;color:var(--color-text-secondary);line-height:var(--line-body)}.contact{color:var(--color-text-primary)}.contact--panel{box-sizing:border-box}.contact__inner{width:100%}.contact-card{--contact-card-padding: var(--space-xl);background-color:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-xl);padding:var(--contact-card-padding);max-width:var(--max-width);margin:0 auto;display:grid;grid-template-columns:1fr;gap:var(--space-lg);align-items:center;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.contact-card:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-glow-lg)}@media(min-width:48rem){.contact-card{--contact-card-padding: var(--space-2xl);gap:var(--space-2xl);grid-template-columns:minmax(0,1fr) minmax(16rem,20rem)}}.contact .section-header{margin-bottom:0}.contact .section-header .lead{font-size:var(--type-ui);line-height:var(--line-compact);max-width:var(--measure-md);margin-top:var(--space-sm);opacity:var(--opacity-subtle)}.contact-left,.contact-right{display:flex;flex-direction:column}.contact-actions{display:flex;flex-direction:column;gap:var(--space-sm);width:100%}.contact-actions__btn{display:flex;align-items:center;justify-content:center;gap:.625rem;width:100%;min-height:2.75rem;padding:.625rem 1rem;font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);line-height:1;text-decoration:none;text-align:center;white-space:nowrap;border-radius:var(--radius-lg);cursor:pointer;color:#fff;border:none;box-shadow:0 1px 2px #0000001f;transition:background-color var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.contact-actions__btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000002e}.contact-actions__btn:focus-visible{outline:var(--outline-width) solid #ffffff;outline-offset:2px}.contact-actions__icon{display:block;width:1.125rem;height:1.125rem;flex-shrink:0}.contact-actions__icon--linkedin{width:1.25rem;height:1.25rem}.contact-actions__btn span{line-height:1.2}.contact-actions__btn--linkedin{background:#0a66c2}.contact-actions__btn--linkedin:hover{background:#004182}.contact-actions__btn--telegram{background:#26a5e4}.contact-actions__btn--telegram:hover{background:#1c8fd0}.contact-actions__btn--resume{background:#475569}.contact-actions__btn--resume:hover{background:#334155}.btn{display:inline-block;font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);padding:var(--space-md) var(--space-xl);border:none;cursor:pointer;text-decoration:none;text-align:center;white-space:nowrap;border-radius:var(--radius-lg);transition:all var(--transition-fast)}.btn--primary{background:var(--color-accent);color:var(--color-on-accent)}.btn--primary:hover{background:var(--color-accent-hover);transform:translateY(-1px)}.form-note{margin-top:var(--space-2xs);font-size:var(--type-caption);opacity:var(--opacity-muted)}.about-intro{max-width:var(--measure-2xl);margin-bottom:var(--space-4xl)}.bento-grid{display:grid;grid-template-columns:1fr;gap:var(--space-xl)}@media(min-width:36rem){.bento-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-2xl)}}@media(min-width:64rem){.bento-grid{grid-template-columns:repeat(3,1fr);gap:var(--space-2xl)}}@media(min-width:80rem){.bento-grid{grid-template-columns:repeat(4,1fr)}}.bento-card{background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-2xl);padding:var(--space-xl);transition:all var(--transition-base)}.bento-card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-glow)}.bento-card--full{grid-column:1 / -1}@media(min-width:36rem){.bento-card--span-2{grid-column:span 2}}@media(min-width:64rem){.bento-card--span-3{grid-column:span 3}}.bento-card h3,.about-bento__card h3{font-size:var(--type-subhead);margin-bottom:var(--space-md);color:var(--color-text-primary)}.bento-card h3:before{content:"";display:inline-block;width:var(--size-dot);height:var(--size-dot);background:var(--color-accent);border-radius:var(--radius-full);margin-right:var(--space-sm)}.bento-card>p{font-size:var(--type-ui);color:var(--color-text-secondary);margin-bottom:var(--space-md);line-height:var(--line-normal)}.bento-stack-group+.bento-stack-group{margin-top:var(--space-md)}.bento-stack-group h4{font-family:var(--font-heading);font-size:var(--type-ui);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-sm);color:var(--color-text-primary)}.about-details{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-sm)}.about-details li{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--type-ui);color:var(--color-text-secondary)}.about-details span{flex-shrink:0;font-size:var(--type-body);line-height:1}.icon-list--check li:before{content:"○";font-weight:var(--font-weight-normal)}.tech-stack{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.tech-pill{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-md);background:var(--color-accent-subtle);border:var(--border-width) solid var(--color-accent-border);border-radius:var(--radius-lg);font-family:var(--font-heading);font-weight:var(--font-weight-medium);font-size:var(--type-ui);color:var(--color-accent);transition:all var(--transition-fast)}.tech-pill:hover{background:var(--color-accent-subtle-hover);border-color:var(--color-accent)}.icon-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-md)}.icon-list li{display:flex;align-items:flex-start;gap:var(--space-md);font-size:var(--type-ui);color:var(--color-text-secondary)}.icon-list li:before{content:"→";color:var(--color-accent);font-weight:var(--font-weight-bold);flex-shrink:0}.about-grid{display:grid;grid-template-columns:1fr;gap:var(--space-xl)}.about-portrait{max-width:14rem;margin-inline:auto}@media(min-width:48rem){.about-grid{grid-template-columns:14rem 1fr;align-items:start}.about-portrait{grid-row:1 / span 2;margin-inline:0;max-width:none}}.about-bio p{margin-bottom:var(--space-inset)}.about-bio p:last-child{margin-bottom:0}.about-skills h3{font-size:var(--type-subhead);margin-bottom:var(--space-stack)}.skills-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-sm)}.skills-list li{font-family:var(--font-heading);font-weight:var(--font-weight-medium);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);padding:var(--space-xs) var(--space-md);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-secondary);transition:all var(--transition-fast)}.skills-list li:hover{border-color:var(--color-accent);color:var(--color-accent)}.content-block{margin-bottom:var(--space-2xl)}.content-block h2{margin-bottom:var(--space-inset)}.content-block p+p{margin-top:var(--space-lg)}.principles-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--space-2xl)}.principles-list li{padding-top:var(--space-xl)}.principles-list strong{font-family:var(--font-heading);font-weight:var(--font-weight-bold);font-size:var(--type-subhead);letter-spacing:var(--tracking-wide);display:block;margin-bottom:var(--space-sm)}.experience-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--space-xl)}.experience-list--summary{gap:var(--space-lg)}@media(min-width:48rem){.experience-list{gap:var(--space-2xl)}.experience-list--summary{gap:var(--space-xl)}}.experience-entry{display:flex;align-items:flex-start;gap:var(--space-md)}.experience-entry__logo{flex:0 0 var(--space-avatar);width:var(--space-avatar);height:var(--space-avatar);object-fit:contain;padding:var(--space-2xs);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-xs);background:var(--color-surface)}.experience-entry__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-2xs)}.experience-entry__company{margin:0;font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);line-height:var(--line-snug);color:var(--color-text-primary)}.experience-entry__meta{margin:0;font-size:var(--type-caption);line-height:var(--line-snug);color:var(--color-text-secondary)}.experience-entry__role{font-weight:var(--font-weight-medium)}.experience-entry__sep{margin-inline:var(--space-2xs);color:var(--color-text-muted)}.experience-entry__period{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-snug);color:var(--color-accent)}.experience-entry__description{margin:var(--space-xs) 0 0;font-size:var(--type-caption);line-height:var(--line-compact);color:var(--color-text-secondary);max-width:var(--measure-content)}.section-experience__inner{display:flex;flex-direction:column;gap:var(--space-inset);width:100%}.section-experience__header{margin-bottom:0}.section-experience__header .label{margin-bottom:var(--space-2xs)}.section-experience .experience-list--summary{gap:var(--space-xl)}.section-experience__footer{margin-top:var(--space-stack)}.section-experience--about{border-top:var(--border-width) solid var(--color-border)}.about-page{text-align:left}.about-page .page-header .lead{max-width:var(--measure-xl);color:var(--color-text-secondary)}.about-page>.container{padding-bottom:var(--space-section)}.about-bento{display:grid;grid-template-columns:1fr;gap:var(--space-inset);text-align:left}@media(min-width:48rem){.about-bento{grid-template-columns:1.15fr .85fr;gap:var(--space-inset)}}.about-bento__card{background:var(--color-surface-elevated);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-inset);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}[data-theme=dark] .about-bento__card{background:var(--color-surface)}.about-bento__card:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-card)}.about-bento__card--full{grid-column:1 / -1}.about-bento__card h3{margin-bottom:var(--space-md)}.about-bento__card h3:before{content:"";display:inline-block;width:var(--size-dot);height:var(--size-dot);background:var(--color-accent);border-radius:var(--radius-full);margin-right:var(--space-sm);vertical-align:middle}.about-bento__card p{font-size:var(--type-ui);line-height:var(--line-relaxed);color:var(--color-text-secondary);margin:0}.about-bento__card p+p{margin-top:var(--space-md)}.about-icon-list{list-style:none;padding:0;margin:var(--space-md) 0 0;display:flex;flex-direction:column;gap:var(--space-sm)}.about-icon-list li{display:flex;flex-wrap:wrap;gap:.25em var(--space-xs);font-size:var(--type-ui);line-height:var(--line-relaxed);color:var(--color-text-secondary);padding-left:var(--space-lg);position:relative}.about-icon-list li:before{content:"✦";position:absolute;left:0;top:.1em;color:var(--color-accent);font-size:var(--type-ui);line-height:1}.about-icon-list strong{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.about-toolkit-group{margin-top:var(--space-md)}.about-toolkit-label{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--type-ui);color:var(--color-text-primary);margin:0 0 var(--space-sm)}.about-toolkit-line{margin-top:var(--space-md);font-size:var(--type-ui);line-height:var(--line-relaxed);color:var(--color-text-secondary)}.about-toolkit-line strong{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.media-cover,.media-cover img{object-fit:cover}.image-placeholder{display:flex;align-items:center;justify-content:center;width:100%;box-sizing:border-box;border:var(--border-width-thick) dashed var(--color-placeholder-border);background-color:var(--color-placeholder-bg);color:var(--color-placeholder-text);font-family:var(--font-body);text-align:center;padding:var(--space-sm)}.image-placeholder__meta{display:flex;flex-direction:column;gap:var(--space-2xs);max-width:100%}.image-placeholder__name{font-family:var(--font-heading);font-size:var(--type-micro);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-snug);line-height:var(--line-snug);word-break:break-all}.image-placeholder__specs{font-size:var(--text-micro);font-weight:var(--font-weight-medium);line-height:var(--line-compact);opacity:var(--opacity-subtle)}.image-placeholder[data-ratio="1/1"]{aspect-ratio:var(--aspect-square)}.image-placeholder[data-ratio="4/3"]{aspect-ratio:var(--aspect-standard)}.image-placeholder[data-ratio="16/9"]{aspect-ratio:var(--aspect-wide)}.image-placeholder[data-ratio="3/2"]{aspect-ratio:var(--aspect-photo)}.image-placeholder[data-ratio="3/4"]{aspect-ratio:var(--aspect-portrait)}:is(.hero__media,.project-preview__media,.thought-item__media,.project-card .image-placeholder,.project-hero-media,.thought-hero-media,.about-portrait) img{display:block;width:100%;height:100%;object-fit:cover}[data-theme=dark] .image-placeholder{background-color:var(--color-placeholder-bg);border-color:var(--color-placeholder-border);color:var(--color-placeholder-text)}.project-hero-media{margin-bottom:var(--space-inset);border-radius:var(--radius-xl)}.thought-hero-media{margin-bottom:var(--space-inset);border-radius:var(--radius-lg)}.thought-item__inner{display:grid;gap:var(--space-inset)}.thought-item__media{max-width:14rem}@media(min-width:40rem){.thought-item__inner{grid-template-columns:12rem 1fr;align-items:start}.thought-item__media{max-width:none}}.text-link{font-family:var(--font-heading);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-snug);font-size:var(--type-ui);text-decoration:none;color:var(--color-text-secondary)}.text-link:hover{color:var(--color-accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-header{padding-block:var(--space-section) var(--space-inset)}.page-header__inner{display:grid;gap:var(--space-inset)}@media(min-width:48rem){.page-header__inner{grid-template-columns:1fr auto;align-items:center;gap:var(--space-xl)}}.page-header h1{margin-bottom:var(--space-stack)}.page-header .lead{max-width:var(--measure-xl)}.section-footer-link{margin-top:var(--space-inset);margin-bottom:0}.content-body{max-width:var(--measure-content)}.content-body h2{margin-top:var(--space-2xl);margin-bottom:var(--space-inset);font-size:var(--type-section)}.content-body h2:first-child{margin-top:0}.content-body p{margin-bottom:var(--space-inset)}.content-body p:last-child{margin-bottom:0}.content-body ul,.content-body ol{margin-bottom:var(--space-inset);padding-left:var(--space-xl)}.project-meta--inline{margin-top:var(--space-inset)}.thought-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:var(--space-2xl)}.thought-item{padding-top:0}.thought-item h3{margin-bottom:var(--space-sm)}.thought-item h3 a{text-decoration:none}.thought-item h3 a:hover{color:var(--color-accent)}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-sm);list-style:none;padding:0;margin-top:var(--space-md)}.tag-list li{font-family:var(--font-heading);font-weight:var(--font-weight-medium);font-size:var(--type-ui);letter-spacing:var(--tracking-snug);color:var(--color-accent)}.case-study{background:color-mix(in srgb,var(--color-bg) 96%,var(--color-text-muted))}.case-study-hero{position:relative;padding-top:var(--space-section);padding-bottom:0;text-align:center;overflow:hidden}.case-study-hero__inner{max-width:var(--max-width);margin-inline:auto;padding-inline:var(--space-lg);padding-bottom:var(--space-3xl)}@media(min-width:48rem){.case-study-hero__inner{padding-inline:var(--content-padding);padding-bottom:var(--space-4xl)}}.case-study-hero__brand{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-sm) var(--space-md);margin-bottom:var(--space-xl)}.case-study-hero__mark{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius-xs);background:var(--color-accent);color:var(--color-on-accent);font-family:var(--font-heading);font-weight:var(--font-weight-bold);font-size:var(--type-ui);line-height:1}.case-study-hero__client{font-family:var(--font-heading);font-weight:var(--font-weight-bold);font-size:var(--type-ui);letter-spacing:var(--tracking-snug)}.case-study-hero__rating{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--type-caption);color:var(--color-text-secondary)}.case-study-hero__stars{letter-spacing:.05em;color:var(--color-text-primary)}.case-study-hero__headline{font-family:var(--font-heading);font-weight:var(--font-weight-bold);font-size:clamp(1.875rem,4.5vw,2.75rem);line-height:var(--line-heading);letter-spacing:var(--tracking-tight);max-width:22ch;margin-inline:auto;margin-bottom:var(--space-md)}.case-study-hero__tagline{margin:0 auto var(--space-2xl);max-width:var(--measure-xl);font-size:var(--type-ui);line-height:var(--line-relaxed);letter-spacing:var(--tracking-snug);color:var(--color-text-secondary)}.case-study-hero__devices{position:relative;display:flex;justify-content:center;align-items:flex-end;gap:clamp(var(--space-md),4vw,var(--space-2xl));max-width:36rem;margin-inline:auto;min-height:14rem}.case-study-hero__device{flex:0 1 42%;max-width:11rem;border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 24px 48px color-mix(in srgb,black 14%,transparent),0 0 0 1px color-mix(in srgb,var(--color-border) 60%,transparent)}.case-study-hero__device--left{transform:rotate(-8deg) translateY(var(--space-md))}.case-study-hero__device--right{transform:rotate(8deg) translateY(var(--space-lg))}.case-study-hero__device .image-placeholder,.case-study-hero__device img{aspect-ratio:var(--aspect-portrait);width:100%;object-fit:cover}.case-study-hero__fade{position:absolute;inset:auto 0 0;height:45%;background:linear-gradient(to bottom,transparent 0%,color-mix(in srgb,var(--color-bg) 96%,var(--color-text-muted)) 85%);pointer-events:none}.case-study-body{position:relative;z-index:1;margin-top:calc(-1 * var(--space-2xl));padding-bottom:var(--space-section)}.case-study-body__grid{display:grid;gap:var(--space-2xl);align-items:start}@media(min-width:56rem){.case-study-body__grid{grid-template-columns:minmax(11rem,14rem) minmax(0,1fr);gap:var(--space-3xl)}}.case-study-sidebar{position:sticky;top:var(--space-lg);align-self:start}.case-study-sidebar__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2xs)}@media(max-width:55.99rem){.case-study-sidebar{position:static;overflow-x:auto;padding-bottom:var(--space-xs)}.case-study-sidebar__list{flex-direction:row;flex-wrap:nowrap;gap:var(--space-xs);min-width:min-content}.case-study-sidebar__top{display:none}}.case-study-sidebar__link{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-xl);font-family:var(--font-heading);font-size:var(--type-ui);font-weight:var(--font-weight-medium);line-height:var(--line-snug);letter-spacing:var(--tracking-snug);color:var(--color-text-muted);text-decoration:none;transition:background-color var(--transition-fast),color var(--transition-fast)}.case-study-sidebar__label{flex:1;min-width:0}.case-study-nav-icon{display:flex;flex-shrink:0;width:1.25rem;height:1.25rem;color:var(--color-text-muted);opacity:.85;transition:color var(--transition-fast),opacity var(--transition-fast)}.case-study-sidebar__link:hover,.case-study-sidebar__link:focus-visible{color:var(--color-text-primary);background:color-mix(in srgb,var(--color-text-primary) 7%,transparent)}.case-study-sidebar__link:hover .case-study-nav-icon,.case-study-sidebar__link:focus-visible .case-study-nav-icon{color:var(--color-text-primary);opacity:1}body:not(:has(.markdown-content h2:target)) .case-study-sidebar__list>li:first-child .case-study-sidebar__link{color:var(--color-text-primary);background:color-mix(in srgb,var(--color-text-primary) 8%,transparent)}body:not(:has(.markdown-content h2:target)) .case-study-sidebar__list>li:first-child .case-study-sidebar__link .case-study-nav-icon{color:var(--color-accent);opacity:1}.case-study-meta{margin-bottom:var(--space-2xl);max-width:var(--measure-content)}.case-study-meta__list{display:grid;gap:var(--space-lg);margin:0}@media(min-width:40rem){.case-study-meta__list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-2xl);row-gap:var(--space-lg)}}.case-study-meta__item{display:grid;gap:var(--space-xs);margin:0}.case-study-meta__item dt{font-family:var(--font-heading);font-size:var(--type-caption);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-muted)}.case-study-meta__item dd{margin:0;font-size:var(--type-ui);line-height:var(--line-relaxed);color:var(--color-text-primary)}.case-study-meta__item:first-child dd{color:var(--color-text-secondary)}.case-study-disclaimer{margin-bottom:var(--space-2xl);padding-bottom:var(--space-xl);max-width:var(--measure-content);border-bottom:var(--border-width) solid var(--color-border)}.case-study-disclaimer__title{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--type-caption);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-sm)}.case-study-disclaimer p{margin:0;font-size:var(--type-ui);line-height:var(--line-relaxed);color:var(--color-text-secondary);max-width:var(--measure-lg)}.markdown-content{display:flex;flex-direction:column;gap:var(--space-xl);max-width:var(--measure-content);font-size:var(--type-body);line-height:1.7;color:var(--color-text-secondary)}.markdown-content>*{margin:0}.markdown-content>h2:not(:first-child){padding-top:var(--space-2xl);border-top:var(--border-width) solid var(--color-border)}.markdown-content h2{scroll-margin-top:var(--space-2xl);font-family:var(--font-heading);font-size:var(--type-section);font-weight:var(--font-weight-bold);line-height:var(--line-heading);letter-spacing:var(--tracking-tight);color:var(--color-text-primary)}.markdown-content h3{font-family:var(--font-heading);font-size:var(--type-title);font-weight:var(--font-weight-bold);line-height:var(--line-snug);letter-spacing:var(--tracking-snug);color:var(--color-text-primary)}.markdown-content p{line-height:1.7;color:var(--color-text-secondary)}.markdown-content p:has(>strong:only-child){font-family:var(--font-heading);font-size:var(--type-subhead);font-weight:var(--font-weight-bold);line-height:var(--line-snug);letter-spacing:var(--tracking-snug);color:var(--color-text-primary)}.markdown-content strong{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.markdown-content ul,.markdown-content ol{padding-left:var(--space-xl);line-height:1.7;color:var(--color-text-secondary)}.markdown-content li+li{margin-top:var(--space-md)}.markdown-content li>ul,.markdown-content li>ol{margin-top:var(--space-md)}.markdown-content blockquote{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);min-height:10rem;padding:var(--space-xl) var(--space-lg);border:var(--border-width-thick) dashed var(--color-placeholder-border);border-radius:var(--radius-lg);background:var(--color-placeholder-bg);font-family:var(--font-heading);font-size:var(--type-caption);font-weight:var(--font-weight-medium);line-height:var(--line-relaxed);letter-spacing:var(--tracking-snug);text-align:center;color:var(--color-placeholder-text)}.markdown-content blockquote p{margin:0;max-width:var(--measure-md);line-height:var(--line-relaxed);color:var(--color-placeholder-text)}.markdown-content table{width:100%;border-collapse:collapse;font-size:var(--type-caption);line-height:var(--line-relaxed);color:var(--color-text-secondary)}.markdown-content th,.markdown-content td{padding:var(--space-sm) var(--space-md);border-bottom:var(--border-width) solid var(--color-border);text-align:left}.markdown-content th{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.markdown-content td{color:var(--color-text-secondary)}.case-study-footer{margin-top:var(--space-3xl);padding-top:var(--space-xl);border-top:var(--border-width) solid var(--color-border)}.case-study-more{margin-top:var(--space-3xl);padding-top:var(--space-3xl);border-top:var(--border-width) solid var(--color-border)}.case-study-more__title{margin-bottom:var(--space-xl);font-family:var(--font-heading);font-size:var(--type-section);font-weight:var(--font-weight-bold);line-height:var(--line-heading);letter-spacing:var(--tracking-tight);color:var(--color-text-primary)}.case-study-more__grid{display:grid;gap:var(--space-inset)}@media(min-width:48rem){.case-study-more__grid{grid-template-columns:repeat(2,1fr);gap:var(--space-xl)}}
