@import "https://fonts.googleapis.com/css2?family=Amiko:wght@400;600;700&family=Domine:wght@400;500;600;700&family=Poppins:wght@400;500;600;700;800&family=League+Spartan:wght@400;500;600;700;800;900&display=swap";
.jr-site{--navy-900:#0f1515;--navy-800:#151e1e;--navy-700:#1c2727;--navy-600:#243333;--teal-500:#6bb19f;--teal-400:#7ec4b1;--teal-900:#2e4a46;--ink-100:#f4f6f7;--ink-400:#5c787b;--ink-600:#3d5459;--red-500:#e07070;--amber-500:#d4a84b;--green-500:#6bb19f;--teal-glow:#6bb19f26;--teal-glow-08:#6bb19f14;--teal-ring:#6bb19f4d;--red-tint:#e070701f;--amber-tint:#d4a84b1f;--surface-app:var(--navy-900);--surface-card:var(--navy-800);--surface-raised:var(--navy-700);--surface-hover:var(--navy-600);--accent:var(--teal-500);--accent-hover:var(--teal-400);--accent-muted:var(--teal-900);--text-primary:var(--ink-100);--text-secondary:var(--ink-400);--text-muted:var(--ink-600);--text-on-accent:var(--navy-900);--border-strong:var(--teal-500);--border-subtle:#6bb19f33;--danger:var(--red-500);--warning:var(--amber-500);--success:var(--green-500);--font-display:"Poppins", system-ui, sans-serif;--font-heading:"Poppins", system-ui, sans-serif;--font-body:"Poppins", system-ui, sans-serif;--font-label:"Amiko", system-ui, sans-serif;--font-logo:"Domine", Georgia, serif;--font-spartan:"League Spartan", "Poppins", system-ui, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--text-6xl:3.75rem;--weight-light:300;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-black:800;--leading-tight:1.05;--leading-snug:1.2;--leading-normal:1.6;--leading-relaxed:1.7;--tracking-tight:-.03em;--tracking-snug:-.02em;--tracking-normal:0;--tracking-wide:.05em;--tracking-wider:.15em;--tracking-widest:.2em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--space-24:6rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 16px #00000080;--shadow-glow:0 0 20px #6bb19f33;--ring-accent:0 0 0 3px #6bb19f26;--ring-danger:0 0 0 3px #e0707026;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-smooth:.4s cubic-bezier(.4,0,.2,1);background:var(--surface-app);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;min-height:100vh}.jr-site *,.jr-site :before,.jr-site :after{box-sizing:border-box}.jr-site ::selection{background:var(--accent-muted);color:var(--text-primary)}html:has(.jr-site){scroll-behavior:smooth;scroll-padding-top:84px}@media (prefers-reduced-motion:reduce){html:has(.jr-site){scroll-behavior:auto}}.wrap{max-width:1080px;padding:0 var(--space-6);margin:0 auto}.jr-site section{scroll-margin-top:84px}.eyebrow{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--accent);font-weight:600}.ds-badge{font-family:var(--font-label);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.05em;padding:3px var(--space-2);border-radius:var(--radius-full);white-space:nowrap;border:1px solid #0000;align-items:center;gap:4px;display:inline-flex}.ds-badge--accent{background:var(--accent-muted);color:var(--accent)}.ds-badge--success{background:var(--teal-glow);color:var(--success);border-color:var(--teal-ring)}.ds-badge--warning{background:var(--amber-tint);color:var(--warning);border-color:#d4a84b4d}.ds-badge--danger{background:var(--red-tint);color:var(--danger);border-color:#e070704d}.ds-badge--neutral{background:var(--surface-raised);color:var(--text-secondary)}.ds-techtag{align-items:center;gap:var(--space-2);background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);font-family:var(--font-label);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-secondary);transition:all var(--transition-fast);cursor:default;display:inline-flex}.ds-techtag:before{content:"";background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.ds-techtag:hover{border-color:var(--accent);color:var(--accent)}.ds-tag{align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);font-family:var(--font-label);font-size:var(--text-xs);font-weight:var(--weight-semibold);cursor:default;border:1px solid #0000;display:inline-flex}.ds-tag:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.ds-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-6);transition:all var(--transition-base)}.ds-card--elevated{background:var(--surface-raised);box-shadow:var(--shadow-md)}.ds-card--interactive:hover{border-color:var(--accent);transform:translateY(-2px)}.ds-card-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-primary);margin-bottom:var(--space-2)}.ds-card-body{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-normal)}.ds-card-footer{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border-subtle);gap:var(--space-2);justify-content:space-between;align-items:center;display:flex}.ds-divider{background:var(--border-subtle);height:1px}.ds-divider--labelled{align-items:center;gap:var(--space-4);margin:var(--space-6) 0;background:0 0;height:auto;display:flex}.ds-divider--labelled:before,.ds-divider--labelled:after{content:"";background:var(--border-subtle);flex:1;height:1px}.ds-divider--labelled>span{font-family:var(--font-label);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);white-space:nowrap}.media-slot{background:linear-gradient(135deg, var(--accent-muted) 0%, var(--surface-raised) 100%);border:1px dashed var(--border-subtle);border-radius:var(--radius-lg);width:100%;color:var(--text-muted);font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;text-align:center;place-items:center;display:grid;position:relative;overflow:hidden}.media-slot img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.nav{z-index:150;-webkit-backdrop-filter:none;backdrop-filter:none;transition:background var(--transition-fast), backdrop-filter var(--transition-fast);background:0 0;grid-template-columns:1fr auto 1fr;align-items:center;padding:clamp(16px,2.4vw,26px) clamp(20px,5vw,56px);display:grid;position:fixed;top:0;left:0;right:0}.nav.is-scrolled{-webkit-backdrop-filter:saturate(140%)blur(6px);backdrop-filter:saturate(140%)blur(6px);background:linear-gradient(#0f1515f5 0%,#0f1515b8 100%)}.brand{justify-self:start;align-items:flex-end;gap:4px;text-decoration:none;display:inline-flex}.brand-word{font-family:var(--font-logo);letter-spacing:-.02em;color:var(--text-primary);font-size:clamp(22px,3vw,30px);font-weight:700;line-height:.9}.brand-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:11px;height:11px;margin-bottom:4px}.nav-links{justify-self:center;align-items:center;gap:clamp(18px,3vw,40px);display:flex}.nav-link{font-family:var(--font-spartan);letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);white-space:nowrap;transition:color var(--transition-fast);font-size:13px;font-weight:600;text-decoration:none}.nav-link:hover,.nav-link.is-active{color:var(--text-primary)}.nav-link.is-active{color:var(--accent)}.nav-burger{border-radius:var(--radius-md);border:1px solid var(--border-subtle);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;flex-direction:column;grid-column:3;justify-content:center;justify-self:end;align-items:center;gap:5px;width:40px;height:40px;display:none}.nav-burger-bar{background:var(--text-primary);border-radius:var(--radius-full);width:18px;height:2px;transition:transform var(--transition-fast), opacity var(--transition-fast)}.nav-burger.is-open .nav-burger-bar:first-child{transform:translateY(7px)rotate(45deg)}.nav-burger.is-open .nav-burger-bar:nth-child(2){opacity:0}.nav-burger.is-open .nav-burger-bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.nav-mobile{z-index:140;justify-content:center;align-items:center;gap:var(--space-8);opacity:0;visibility:hidden;transition:opacity var(--transition-base), transform var(--transition-base), visibility var(--transition-base);background:linear-gradient(#0f1515fa 0%,#0f1515f5 100%);flex-direction:column;display:flex;position:fixed;inset:0;transform:translateY(-8px)}.nav-mobile.is-open{opacity:1;visibility:visible;transform:translateY(0)}.nav-mobile-link{font-family:var(--font-spartan);letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);transition:color var(--transition-fast);font-size:24px;font-weight:700;text-decoration:none}.nav-mobile-link:hover,.nav-mobile-link.is-active{color:var(--accent)}.pill{font-family:var(--font-spartan);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid var(--border-strong);border-radius:var(--radius-full);cursor:pointer;white-space:nowrap;transition:all var(--transition-base);background:0 0;align-items:center;gap:8px;padding:10px 20px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.pill:hover{background:var(--teal-glow);transform:translateY(-1px)}.pill--filled{color:var(--surface-app);background:var(--accent);border-color:var(--accent);padding:13px 26px;font-size:14px}.pill--filled:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.pill .arrow{transition:transform var(--transition-base)}.pill:hover .arrow{transform:translate(3px)}.pill-icon{flex-shrink:0}.back-to-top{z-index:100;border-radius:var(--radius-full);background:var(--surface-raised);border:1px solid var(--border-strong);cursor:pointer;opacity:0;visibility:hidden;width:44px;height:44px;transition:opacity var(--transition-base), transform var(--transition-base), background var(--transition-fast), visibility var(--transition-base);justify-content:center;align-items:center;display:flex;position:fixed;bottom:clamp(16px,4vw,40px);right:clamp(16px,4vw,40px);transform:translateY(8px)}.back-to-top.is-visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{background:var(--teal-glow);border-color:var(--accent)}.back-to-top svg{width:18px;height:18px;fill:var(--accent)}.hero{background:var(--surface-app);border-radius:0 0 10px 10px;justify-content:center;align-items:center;min-height:100svh;display:flex;position:relative;overflow:hidden}.hero-photo{z-index:1;background:linear-gradient(135deg, var(--accent-muted) 0%, var(--surface-raised) 60%, var(--surface-app) 100%);position:absolute;inset:0;overflow:hidden}.hero-img{object-fit:cover;object-position:50% 12%;width:100%;height:100%;display:block}.hero-veil{z-index:2;pointer-events:none;background:linear-gradient(90deg,#0f15158c 0%,#0f151500 28% 70%,#0f15159e 100%),linear-gradient(#0f151580 0%,#0f151500 20% 78%,#0f1515cc 100%);position:absolute;inset:0}.hero-right{z-index:3;text-align:right;max-width:min(660px,62vw);position:absolute;top:50%;right:clamp(20px,5vw,56px);transform:translateY(-50%)}.hero-eyebrow{font-family:var(--font-spartan);color:var(--accent);margin:0 0 14px;font-size:clamp(15px,1.6vw,21px);font-style:italic;font-weight:600}.hero-title{font-family:var(--font-spartan);text-transform:uppercase;letter-spacing:-.02em;color:var(--text-primary);margin:0;font-size:clamp(34px,4.8vw,68px);font-weight:800;line-height:.92}.hero-title span{display:block}.hero-cta{justify-content:flex-end;margin-top:clamp(20px,2.4vw,32px);display:flex}.hero-expertise{z-index:3;border-top:1px solid var(--border-subtle);gap:clamp(12px,3vw,48px);padding-top:18px;display:flex;position:absolute;bottom:clamp(24px,5vh,48px);left:clamp(20px,5vw,56px);right:clamp(20px,5vw,56px)}.exp{flex:1}.exp .num{font-family:var(--font-spartan);letter-spacing:.15em;color:var(--accent);font-size:13px;font-weight:700}.exp .lbl{font-family:var(--font-spartan);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);margin-top:6px;font-size:clamp(11px,1.05vw,14px);font-weight:600;display:block}.block{padding:clamp(40px,7vw,72px) 0}.block-head{margin-bottom:var(--space-8)}.block-head h2{font-family:var(--font-heading);letter-spacing:var(--tracking-snug);margin:var(--space-3) 0 0;font-size:clamp(1.6rem,4vw,2.25rem);font-weight:700}.block-head p{font-family:var(--font-body);color:var(--text-secondary);margin:var(--space-2) 0 0;max-width:520px}.about{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start;gap:clamp(28px,5vw,72px);display:grid}.about-col-head{margin-bottom:var(--space-6)}.about-col-head h2{font-family:var(--font-heading);color:var(--text-primary);letter-spacing:var(--tracking-snug);margin:var(--space-3) 0 0;font-size:clamp(1.5rem,3vw,2rem);font-weight:700;line-height:1.1}.about-quote{font-family:var(--font-heading);color:var(--text-primary);text-wrap:pretty;margin:0 0 10px;font-size:16px;font-weight:400;line-height:1.7}.about-quote .hl{color:var(--accent);font-weight:600}.about-photo{aspect-ratio:4/5;height:auto;max-height:460px}.about-photo img,.bio-photo img{object-fit:cover}.about-bio{flex-direction:column;display:flex}.about-cv{align-self:flex-start;margin-top:30px}.skills-panel{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:clamp(16px,2.4vw,28px) clamp(20px,5vw,48px)}.skills-panel-head{text-align:center}.skills-groups{grid-template-columns:repeat(auto-fit,minmax(140px,160px));justify-content:center;gap:clamp(16px,2.4vw,28px);display:grid}.skill-item{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;display:flex}.tech-card{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);width:100%;padding:var(--space-6) var(--space-4);align-items:center;gap:var(--space-3);transition:transform var(--transition-base), border-color var(--transition-base), box-shadow var(--transition-base);flex-direction:column;display:flex}.tech-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.tech-logo{justify-content:center;align-items:center;height:38px;display:flex}.tech-logo img{object-fit:contain;width:auto;max-width:100px;height:100%;display:block}.tech-card h3{font-family:var(--font-heading);letter-spacing:var(--tracking-snug);color:var(--text-primary);text-align:center;margin:0;font-size:16px;font-weight:700;line-height:1.2}.skill-lang{font-family:var(--font-label);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--accent)}.projects-grid{gap:var(--space-4);grid-template-columns:repeat(4,1fr);display:grid}.proj-link{color:inherit;-webkit-tap-highlight-color:transparent;height:100%;text-decoration:none;display:block}.proj-link:focus,.proj-link:focus-visible{outline:none}.proj-card{flex-direction:column;height:488px;display:flex}.proj-client{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-muted);margin-top:calc(var(--space-2) * -1);margin-bottom:var(--space-2);font-weight:600}.proj-foot{margin-top:auto}.proj-cat{font-family:var(--font-label);font-style:italic;font-weight:400;font-size:var(--text-sm);letter-spacing:.01em;color:var(--text-muted);margin-bottom:var(--space-3)}.proj-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.projects-more{margin-top:var(--space-8);justify-content:center;display:flex}.proj-thumb{border-radius:var(--radius-lg);height:180px;margin:calc(var(--space-6) * -1 + 5px) calc(var(--space-6) * -1 + 5px) var(--space-4);background:linear-gradient(135deg, var(--accent-muted) 0%, var(--surface-raised) 100%);flex-shrink:0;place-items:center;display:grid;position:relative;overflow:hidden}.proj-thumb .glyph{font-family:var(--font-heading);color:var(--accent);opacity:.9;letter-spacing:-.04em;font-size:2.6rem;font-weight:800}.proj-thumb-img{object-fit:scale-down;width:100%;height:100%;display:block;position:absolute;inset:0}.proj-thumb .status{top:var(--space-3);right:var(--space-3);position:absolute}.timeline-cols{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(28px,5vw,72px);display:grid}.timeline-col-label{margin-bottom:var(--space-4);display:block}.timeline-col-label--mirror{text-align:right}.timeline{margin-top:var(--space-4);padding-left:var(--space-8);position:relative}.timeline:before{content:"";background:var(--border-subtle);width:2px;position:absolute;top:6px;bottom:6px;left:7px}.tl-item{padding-bottom:var(--space-8);position:relative}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:"";left:calc(-1 * var(--space-8) + 1px);background:var(--surface-app);border:2px solid var(--accent);width:14px;height:14px;transition:background var(--transition-base);border-radius:50%;position:absolute;top:4px}.tl-item.filled:before{background:var(--accent)}.tl-date{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);font-weight:700}.tl-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-lg);color:var(--text-primary);margin:var(--space-1) 0}.tl-org{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-secondary);margin:0}.tl-place{color:var(--accent);font-style:italic}.tl-title-link{color:inherit;align-items:center;gap:6px;text-decoration:none;display:inline-flex}.tl-title-link:hover,.tl-title-link:focus-visible{text-underline-offset:3px;text-decoration:underline}.tl-title-link svg{flex-shrink:0}.timeline--mirror{padding-left:0;padding-right:var(--space-8)}.timeline--mirror:before{left:auto;right:7px}.timeline--mirror .tl-item:before{left:auto;right:calc(-1 * var(--space-8) + 1px)}.timeline--mirror .tl-item{text-align:right}.contact-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:clamp(24px,5vw,64px);display:grid}.contact-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.contact-list-item{align-items:center;gap:var(--space-4);padding:var(--space-6) var(--space-6);background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);transition:transform var(--transition-base), border-color var(--transition-base), box-shadow var(--transition-base);text-decoration:none;display:flex}a.contact-list-item:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translate(4px)}.contact-list-item--static{cursor:default}.contact-list-icon{border-radius:var(--radius-md);background:var(--accent-muted);border:1px solid var(--border-subtle);width:44px;height:44px;color:var(--accent);transition:background var(--transition-fast), border-color var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}a.contact-list-item:hover .contact-list-icon{background:var(--teal-glow);border-color:var(--accent)}.contact-list-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.contact-label{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--accent);font-weight:600}.contact-value{font-family:var(--font-heading);font-size:var(--text-base);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.contact-form{gap:var(--space-4);flex-direction:column;display:flex}.contact-form-row{gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.contact-field{gap:var(--space-2);flex-direction:column;display:flex}.contact-field-label{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-secondary);font-weight:600}.contact-field-required{color:var(--accent)}.contact-field-optional{color:var(--text-muted);text-transform:none;letter-spacing:0;font-size:.7rem;font-weight:400}.contact-field-input{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:10px var(--space-4);font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-primary);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;width:100%}.contact-field-input::placeholder{color:var(--text-muted)}.contact-field-input:focus{border-color:var(--accent);box-shadow:var(--ring-accent)}.contact-field-textarea{resize:vertical;min-height:120px}.contact-form-submit{white-space:normal;text-align:center;align-self:flex-end;max-width:100%}.contact-form-error{font-family:var(--font-body);font-size:var(--text-sm);color:var(--danger);background:var(--red-tint);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);border:1px solid #e070704d}.contact-form-success{text-align:center;padding:var(--space-8) var(--space-6);justify-content:center;align-items:center;gap:var(--space-4);background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);flex-direction:column;display:flex}.contact-form-success-icon{background:var(--teal-glow);border:2px solid var(--accent);width:52px;height:52px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:1.4rem;display:flex}.contact-form-success-title{font-family:var(--font-heading);font-weight:700;font-size:var(--text-xl);color:var(--text-primary);margin:0}.contact-form-success-body{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-secondary);margin:0}.page-hero{border-bottom:1px solid var(--border-subtle);padding:clamp(120px,16vw,168px) 0 clamp(40px,6vw,64px);position:relative;overflow:hidden}.page-hero:before{content:"";pointer-events:none;background:radial-gradient(#6bb19f24,#0000 70%);width:70%;height:80%;position:absolute;top:-10%;left:50%;transform:translate(-50%)}.page-hero-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:end;gap:clamp(24px,5vw,64px);display:grid;position:relative}.page-title{font-family:var(--font-spartan);text-transform:uppercase;letter-spacing:-.02em;color:var(--text-primary);margin:var(--space-3) 0 0;font-size:clamp(44px,8vw,104px);font-weight:800;line-height:.9}.page-hero-lead{font-family:var(--font-body);color:var(--text-secondary);margin:0 0 var(--space-2);text-wrap:pretty;font-size:clamp(15px,1.5vw,18px);line-height:1.6}.detail-hero{padding:clamp(120px,15vw,160px) 0 0}.detail-meta-top{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.detail-cat{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--accent);font-weight:600}.detail-back{font-family:var(--font-spartan);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;transition:color var(--transition-fast);font-size:12px;font-weight:600;text-decoration:none}.detail-back:hover{color:var(--accent)}.detail-title{font-family:var(--font-spartan);text-transform:uppercase;letter-spacing:-.02em;color:var(--text-primary);margin:var(--space-3) 0 var(--space-6);text-wrap:balance;font-size:clamp(40px,7vw,88px);font-weight:800;line-height:.92}.detail-cover{height:clamp(260px,42vw,520px);margin-top:var(--space-4)}.detail-cover img{object-fit:scale-down}.detail-body{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:clamp(32px,6vw,80px);display:grid}.detail-body--solo{grid-template-columns:minmax(0,1fr);max-width:760px}.bio-layout:after{content:"";clear:both;display:table}.bio-photo{float:left;width:min(440px,42%);height:clamp(320px,32vw,460px);margin:0 clamp(24px, 4vw, 56px) var(--space-6) 0}.detail-section-label{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-3);font-weight:600}.detail-overview{font-family:var(--font-heading);color:var(--text-primary);margin:0 0 var(--space-6);text-wrap:pretty;font-size:clamp(1.15rem,2vw,1.4rem);font-weight:400;line-height:1.5}.detail-highlights{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.detail-highlights li{gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-base);color:var(--text-primary);line-height:1.5;display:flex}.detail-highlights li:before{content:"";background:var(--accent);border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-top:9px}.detail-rich{font-family:var(--font-body);font-size:var(--text-base);color:var(--text-primary);margin:0 0 var(--space-6);line-height:1.7}.detail-rich>:first-child{margin-top:0}.detail-rich>:last-child{margin-bottom:0}.detail-rich p{margin:0 0 var(--space-4);text-wrap:pretty}.detail-rich h2{font-family:var(--font-heading);color:var(--text-primary);margin:var(--space-8) 0 var(--space-3);font-size:clamp(1.2rem,2vw,1.5rem);font-weight:600}.detail-rich h3{font-family:var(--font-heading);color:var(--text-primary);margin:var(--space-6) 0 var(--space-2);font-size:clamp(1.05rem,1.6vw,1.25rem);font-weight:600}.detail-rich ul,.detail-rich ol{margin:0 0 var(--space-4);gap:var(--space-2);flex-direction:column;padding-left:1.4em;display:flex}.detail-rich ul{list-style:outside}.detail-rich ol{list-style:decimal}.detail-rich li{padding-left:var(--space-1)}.detail-rich a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.detail-rich a:hover{color:var(--accent-hover)}.detail-rich strong{color:var(--text-primary);font-weight:600}.detail-rich blockquote{margin:var(--space-4) 0;padding-left:var(--space-4);border-left:3px solid var(--border-subtle);color:var(--text-muted);font-style:italic}.detail-aside{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-6);gap:var(--space-6);flex-direction:column;display:flex;position:sticky;top:96px}.detail-aside-row{gap:var(--space-1);flex-direction:column;display:flex}.detail-aside-label{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);font-weight:600}.detail-aside-value{font-family:var(--font-heading);font-size:var(--text-base);color:var(--text-primary);font-weight:600}.detail-gallery{gap:var(--space-4);margin-top:var(--space-8);flex-wrap:wrap;display:flex}.detail-gallery-btn{cursor:zoom-in;border-radius:var(--radius-lg);transition:transform var(--transition-fast);background:0 0;border:0;padding:0;line-height:0;display:block}.detail-gallery-btn:hover{transform:translateY(-2px)}.detail-gallery-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.detail-gallery-img{border-radius:var(--radius-lg);width:auto;max-width:100%;height:clamp(200px,24vw,300px);display:block}.lightbox{z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:lightbox-in var(--transition-base);background:#0f1515e0;justify-content:center;align-items:center;padding:clamp(24px,6vw,72px);display:flex;position:fixed;inset:0}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}.lightbox-figure{justify-content:center;align-items:center;max-width:100%;max-height:100%;margin:0;display:flex}.lightbox-img{border-radius:var(--radius-lg);width:auto;max-width:100%;height:auto;max-height:85vh;box-shadow:var(--shadow-md);display:block}.lightbox-close{z-index:201;border-radius:var(--radius-full);border:1px solid var(--border-subtle);background:var(--surface-raised);width:44px;height:44px;color:var(--text-primary);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);justify-content:center;align-items:center;font-size:18px;line-height:1;display:inline-flex;position:fixed;top:clamp(16px,3vw,28px);right:clamp(16px,3vw,28px)}.lightbox-close:hover{color:var(--accent);border-color:var(--accent);background:var(--surface-hover)}.lightbox-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.detail-nav{justify-content:space-between;gap:var(--space-4);border-top:1px solid var(--border-subtle);padding-top:var(--space-6);margin-top:var(--space-8);display:flex}.detail-nav a{color:var(--text-secondary);transition:color var(--transition-fast);flex-direction:column;gap:4px;text-decoration:none;display:flex}.detail-nav a:hover{color:var(--accent)}.detail-nav .dn-label{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);font-weight:600}.detail-nav .dn-title{font-family:var(--font-heading);font-size:var(--text-lg);color:var(--text-primary);font-weight:600}.detail-nav .dn-next{text-align:right;align-items:flex-end}.foot{border-top:1px solid var(--border-subtle);margin-top:var(--space-8);padding:var(--space-12) 0 var(--space-8)}.foot-inner{justify-content:space-between;gap:var(--space-8);flex-wrap:wrap;display:flex}.foot-brand{max-width:340px}.foot-brand .brand{margin-bottom:var(--space-3)}.foot-tagline{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-secondary);margin:0 0 var(--space-5);line-height:1.55}.foot-social{gap:var(--space-3);margin-top:10px;display:flex}.foot-social a{border-radius:var(--radius-full);border:1px solid var(--border-subtle);width:40px;height:40px;color:var(--text-secondary);transition:color var(--transition-base), border-color var(--transition-base), transform var(--transition-base);justify-content:center;align-items:center;display:inline-flex}.foot-social a:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-2px)}.foot-social svg{fill:currentColor;width:18px;height:18px}.foot-links{gap:clamp(40px,8vw,96px);display:flex}.foot-col{gap:var(--space-3);flex-direction:column;display:flex}.foot-col-title{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-1);font-weight:600}.foot-col a{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast);text-decoration:none}.foot-col a:hover{color:var(--accent)}.foot-bottom{justify-content:space-between;gap:var(--space-3);margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--border-subtle);flex-wrap:wrap;display:flex}.foot-bottom p{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);margin:0}@media (max-width:980px){.projects-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:981px) and (orientation:portrait){.projects-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:681px) and (orientation:portrait){.hero{aspect-ratio:3/2;min-height:0}.hero-img{object-position:50% 20%}}@media (max-width:680px){.hero{min-height:0;padding:clamp(96px,18vw,132px) clamp(20px,6vw,40px) 48px;display:block}.hero-photo{border-radius:var(--radius-lg);height:46vh;margin:22px 0 30px;position:relative}.hero-img{object-position:25% 20%}.hero-right,.hero-expertise{max-width:none;position:static;transform:none}.hero-right{text-align:left;margin-top:18px}.hero-expertise{flex-wrap:wrap;row-gap:16px;margin-top:28px}.exp{flex:0 0 calc(50% - 24px)}.hero-veil{display:none}.hero-cta{justify-content:center}.about{grid-template-columns:1fr}}@media (max-width:860px){.about{gap:var(--space-8)}.about-photo{height:clamp(220px,60vw,320px)}.skills-groups{grid-template-columns:repeat(auto-fit,minmax(110px,140px))}.detail-body{grid-template-columns:1fr}.detail-aside{position:static}.proj-desc{display:none!important}}@media (max-width:767px){.bio-photo{float:none;width:100%;height:clamp(220px,60vw,320px);margin:0 0 var(--space-6)}}@media (max-width:760px){.page-hero-grid{align-items:start;gap:var(--space-4);grid-template-columns:1fr}}@media (max-width:720px){.projects-grid{grid-template-columns:repeat(2,1fr)}.nav-links{display:none}.nav-burger{display:flex}}@media (max-width:560px){.projects-grid{grid-template-columns:1fr}.proj-card{height:auto}.proj-foot{margin-top:var(--space-4)}.proj-cat{margin-bottom:var(--space-4)}.proj-tags{display:none}}@media (max-width:680px){.foot-inner{gap:var(--space-6);flex-direction:column}.foot-links{gap:var(--space-8)}}@media (max-width:860px){.contact-layout{grid-template-columns:minmax(0,1fr)}}@media (max-width:760px){.timeline-cols{gap:var(--space-8);grid-template-columns:1fr}.timeline--mirror{padding-left:var(--space-8);padding-right:0}.timeline--mirror:before{left:7px;right:auto}.timeline--mirror .tl-item:before{left:calc(-1 * var(--space-8) + 1px);right:auto}.timeline--mirror .tl-item,.timeline-col-label--mirror{text-align:left}}@media (max-width:620px){.contact-form-row{grid-template-columns:minmax(0,1fr)}}
