@charset "UTF-8";@font-face{font-display:swap;font-family:Sora;font-style:normal;font-weight:600;src:url(./sora-latin-ext-600-normal.Cue1zdhl.woff2) format("woff2"),url(./sora-latin-ext-600-normal.DLOJK0Ta.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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-display:swap;font-family:Sora;font-style:normal;font-weight:600;src:url(./sora-latin-600-normal.Cdg4DaK0.woff2) format("woff2"),url(./sora-latin-600-normal.1_7fyUAY.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Sora;font-style:normal;font-weight:700;src:url(./sora-latin-ext-700-normal.DM0oy5s8.woff2) format("woff2"),url(./sora-latin-ext-700-normal.Oc7uZIYt.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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-display:swap;font-family:Sora;font-style:normal;font-weight:700;src:url(./sora-latin-700-normal.9waGdLWo.woff2) format("woff2"),url(./sora-latin-700-normal.BKPfQAnC.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Instrument Sans Variable;font-style:normal;font-weight:400 700;src:url(./instrument-sans-latin-ext-wght-normal.B5bTHO_g.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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-display:swap;font-family:Instrument Sans Variable;font-style:normal;font-weight:400 700;src:url(./instrument-sans-latin-wght-normal.BbzFLZTg.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:url(./ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:url(./ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:url(./ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2) format("woff2"),url(./ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:url(./ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2) format("woff2"),url(./ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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-display:swap;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2"),url(./ibm-plex-mono-latin-400-normal.CvHOgSBP.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{color-scheme:light;--bg:#f7f8fb;--bg-elevated:#fff;--surface:#fff;--surface-2:#f1f3f7;--surface-3:#e9edf3;--text-primary:#0e1320;--text-secondary:#586173;--text-muted:#828c9b;--line:#e7e9ef;--line-strong:#d7dbe3;--accent:#6d5dfc;--accent-strong:#5a47f0;--accent-soft:#ece9ff;--accent-contrast:#fff;--accent-rgb:109 93 252;--warm:#ff6b57;--warm-soft:#ffe7e1;--warm-rgb:255 107 87;--success:#15914f;--danger:#c5453a;--grad-brand:linear-gradient(135deg,#6d5dfc,#a96cf2 52%,#ff6b57 120%);--grad-text:linear-gradient(120deg,#6d5dfc,#b06cf0 60%,#ff7a59);--ring:0 0 0 3px rgb(var(--accent-rgb)/.28);--shadow-soft:0 18px 45px -30px rgba(20,27,45,.4);--shadow-card:0 1px 2px rgba(16,24,40,.05),0 16px 36px -26px rgba(16,24,40,.28);--shadow-pop:0 24px 60px -28px rgba(20,27,45,.45);--glass:color-mix(in srgb,var(--bg-elevated) 72%,transparent);--radius-sm:12px;--radius-md:18px;--radius-lg:26px;--radius-pill:999px;--font-heading:"Sora","Segoe UI",sans-serif;--font-body:"Instrument Sans Variable","Segoe UI",sans-serif;--font-mono:"IBM Plex Mono","Consolas",monospace;--space-1:.5rem;--space-2:.75rem;--space-3:1rem;--space-4:1.5rem;--space-5:2rem;--space-6:3rem;--space-7:4.5rem}:root[data-theme=dark]{color-scheme:dark;--bg:#0a0c12;--bg-elevated:#11141d;--surface:#11141d;--surface-2:#161a24;--surface-3:#1c2130;--text-primary:#eef1f7;--text-secondary:#a4adbd;--text-muted:#7a8494;--line:#232836;--line-strong:#2e3543;--accent:#8b7dff;--accent-strong:#9c90ff;--accent-soft:#1b1933;--accent-contrast:#0a0c12;--accent-rgb:139 125 255;--warm:#ff7d68;--warm-soft:#2a1b18;--warm-rgb:255 125 104;--success:#3ad17f;--danger:#ff6b5e;--grad-brand:linear-gradient(135deg,#8b7dff,#b98bf2 52%,#ff7d68 120%);--grad-text:linear-gradient(120deg,#9b8dff,#c79bf0 55%,#ff8e75);--ring:0 0 0 3px rgb(var(--accent-rgb)/.32);--shadow-soft:0 24px 55px -30px rgba(0,0,0,.75);--shadow-card:0 1px 2px rgba(0,0,0,.5),0 22px 44px -28px rgba(0,0,0,.7);--shadow-pop:0 30px 70px -30px rgba(0,0,0,.8);--glass:color-mix(in srgb,var(--bg-elevated) 68%,transparent)}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text-primary);font-family:var(--font-body);line-height:1.65;margin:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .4s ease,color .4s ease}a{color:inherit;text-decoration:none}p{margin:0}img{max-width:100%}::-moz-selection{background:rgb(var(--accent-rgb)/.22)}::selection{background:rgb(var(--accent-rgb)/.22)}:where(section[id]){scroll-margin-top:6.5rem}:focus-visible{border-radius:var(--radius-sm);box-shadow:var(--ring);outline:none}.about-grid__strengths li,.app-header__inner,.contact-form,.contact-info,.hero__photo-card,.hero__stat-card,.project-card,.skills-group,.timeline-item{transition:background-color .4s ease,border-color .4s ease,color .4s ease,transform .28s ease,box-shadow .28s ease}.site-shell{min-height:100vh}.portfolio-page{margin:0 auto;padding-bottom:var(--space-7);position:relative;width:min(1180px,100% - 2.5rem)}.bg-orb{border-radius:50%;filter:blur(90px);opacity:.55;pointer-events:none;position:fixed;z-index:-1}.bg-orb--one{background:radial-gradient(circle,rgb(var(--accent-rgb)/.5) 0,transparent 70%);height:520px;right:-60px;top:-180px;width:520px}.bg-orb--two{background:radial-gradient(circle,rgb(var(--warm-rgb)/.4) 0,transparent 70%);bottom:8%;height:420px;left:-120px;width:420px}:root[data-theme=dark] .bg-orb{opacity:.4}.app-header{padding-top:var(--space-3);position:sticky;top:var(--space-3);z-index:50}.app-header__inner{align-items:center;backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);background:var(--glass);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:var(--radius-pill);box-shadow:var(--shadow-card);display:flex;gap:var(--space-3);justify-content:space-between;padding:.6rem .7rem .6rem .9rem}.app-header__brand{border-radius:.7rem;box-shadow:0 6px 18px -8px rgb(var(--accent-rgb)/.7);display:inline-grid;height:2.4rem;place-items:center;transition:transform .22s ease;width:2.4rem}.app-header__brand:hover{transform:translateY(-1px)}.app-header__brand-mark{display:block;height:100%;width:100%}.app-header__nav{display:flex;gap:.35rem;margin:0 auto}.app-header__link{border-radius:var(--radius-pill);color:var(--text-secondary);font-size:.92rem;padding:.45rem .8rem;position:relative;transition:color .22s ease,background-color .22s ease}.app-header__link:hover{background:color-mix(in srgb,var(--surface-2) 70%,transparent);color:var(--text-primary)}.app-header__actions{align-items:center;display:flex;gap:.5rem}.app-header__toggle{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;display:inline-grid;height:2.3rem;place-items:center;transition:color .22s ease,transform .22s ease,border-color .22s ease;width:2.3rem}.app-header__toggle:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));color:var(--accent);transform:translateY(-1px)}.app-header__toggle svg{height:1.15rem;width:1.15rem}.app-header__toggle .ti-sun{display:none}:root[data-theme=dark] .app-header__toggle .ti-sun{display:block}:root[data-theme=dark] .app-header__toggle .ti-moon{display:none}.app-header__cta{align-items:center;background:var(--text-primary);border-radius:var(--radius-pill);color:var(--bg);display:inline-flex;font-size:.88rem;font-weight:500;justify-content:center;padding:.58rem 1.05rem;transition:transform .22s ease,opacity .22s ease}.app-header__cta:hover{opacity:.9;transform:translateY(-1px)}.app-header__menu-btn{display:none}.app-header__menu{backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);background:var(--glass);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);display:none;flex-direction:column;gap:.2rem;left:0;margin-top:var(--space-2);padding:.6rem;position:absolute;right:0;top:100%}.app-header__menu-link{border-radius:var(--radius-md);color:var(--text-secondary);font-size:.95rem;padding:.65rem .9rem;transition:color .22s ease,background-color .22s ease}.app-header__menu-link:hover{background:color-mix(in srgb,var(--surface-2) 70%,transparent);color:var(--text-primary)}.section{padding:var(--space-7) 0 0}.state-banner{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-secondary);margin-top:var(--space-4);padding:var(--space-3) var(--space-4)}.state-banner--error{background:color-mix(in srgb,var(--danger) 10%,var(--surface));border-color:color-mix(in srgb,var(--danger) 40%,transparent);color:var(--danger)}.section-title{max-width:720px}.section-title--center{margin:0 auto;text-align:center}.section-title__eyebrow{align-items:center;background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--accent);display:inline-flex;font-family:var(--font-mono);font-size:.72rem;gap:.5rem;letter-spacing:.12em;margin-bottom:var(--space-3);padding:.32rem .7rem;text-transform:uppercase}.section-title__headline{font-family:var(--font-heading);font-size:clamp(1.75rem,2.2vw + 1rem,2.7rem);font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0}.section-title__description{color:var(--text-secondary);font-size:1.04rem;margin-top:var(--space-3);max-width:60ch}.section-title--center .section-title__description{margin-inline:auto}.hero{display:grid;gap:var(--space-6);grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);padding-top:calc(var(--space-7) + var(--space-5))}.hero,.hero__role{align-items:center}.hero__role{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--text-secondary);display:inline-flex;font-family:var(--font-mono);font-size:.76rem;gap:.5rem;padding:.4rem .85rem}.hero__role:before{background:var(--success);border-radius:50%;box-shadow:0 0 0 3px color-mix(in srgb,var(--success) 28%,transparent);content:"";height:.5rem;width:.5rem}.hero__headline{background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent;font-family:var(--font-heading);font-size:clamp(2.2rem,4.6vw + 1rem,4.4rem);font-weight:700;letter-spacing:-.03em;line-height:1.05;margin:var(--space-4) 0 0}.hero__summary{font-size:1.1rem;max-width:620px}.hero__meta,.hero__summary{color:var(--text-secondary);margin-top:var(--space-4)}.hero__meta{display:flex;flex-wrap:wrap;font-size:.9rem;gap:.6rem var(--space-3)}.hero__meta span{align-items:center;display:inline-flex;gap:.5rem}.hero__meta span+span:before{background:var(--line-strong);border-radius:50%;content:"";height:4px;margin-right:.5rem;width:4px}.hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5)}.hero__aside{align-content:start;display:grid;gap:var(--space-3)}.hero__photo-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin:0;padding:.5rem;position:relative}.hero__photo-card:before{background:var(--grad-brand);border-radius:inherit;content:"";filter:blur(14px);inset:-1.5px;opacity:.6;position:absolute;z-index:-1}.hero__photo{aspect-ratio:4/5;border-radius:calc(var(--radius-lg) - .4rem);display:block;height:auto;-o-object-fit:cover;object-fit:cover;width:100%}.button{align-items:center;border:1px solid transparent;border-radius:var(--radius-pill);cursor:pointer;display:inline-flex;font-size:.94rem;font-weight:500;gap:.5rem;justify-content:center;padding:.78rem 1.3rem;transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,border-color .22s ease}.button--primary{background:var(--accent);box-shadow:0 10px 26px -12px rgb(var(--accent-rgb)/.8);color:var(--accent-contrast)}.button--primary:hover{background:var(--accent-strong);box-shadow:0 16px 32px -12px rgb(var(--accent-rgb)/.9);transform:translateY(-2px)}.button--ghost{background:var(--surface);border-color:var(--line-strong);color:var(--text-primary)}.button--ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.button:disabled{cursor:not-allowed;opacity:.6;transform:none}.stats{padding-top:var(--space-5)}.hero__stats{display:grid;gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr))}.hero__stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden;padding:var(--space-4);position:relative}.hero__stat-card:after{background:var(--grad-brand);content:"";height:3px;left:0;opacity:0;position:absolute;top:0;transition:opacity .28s ease;width:100%}.hero__stat-card:hover{box-shadow:var(--shadow-pop);transform:translateY(-4px)}.hero__stat-card:hover:after{opacity:1}.hero__stat-value{font-family:var(--font-heading);font-size:1.9rem;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0}.hero__stat-label{color:var(--text-secondary);font-size:.9rem;margin-top:var(--space-2)}.about-grid{display:grid;gap:var(--space-5);grid-template-columns:minmax(0,2fr) minmax(0,1fr);margin-top:var(--space-5)}.about-grid__story{align-content:start;display:grid;font-size:1.04rem;gap:var(--space-3)}.about-grid__story p{color:var(--text-secondary)}.about-grid__strengths-block{align-content:start;background:color-mix(in srgb,var(--accent-soft) 50%,var(--surface));border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:var(--space-3);padding:var(--space-4)}.about-grid__strengths-title{color:var(--accent);font-family:var(--font-mono);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase}.about-grid__strengths{align-content:start;display:grid;gap:var(--space-2);list-style:none;margin:0;padding:0}.about-grid__strengths li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:.94rem;padding:.7rem .9rem .7rem 2.2rem;position:relative}.about-grid__strengths li:before{background:var(--grad-brand);border-radius:50%;content:"";height:.55rem;left:.85rem;position:absolute;top:1.05rem;width:.55rem}.skills-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));margin-top:var(--space-5)}.skills-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-4)}.skills-group:hover{box-shadow:var(--shadow-pop);transform:translateY(-3px)}.skills-group h3{font-family:var(--font-heading);font-size:1.05rem;font-weight:600;margin:0}.skills-group ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:var(--space-3) 0 0;padding:0}.skills-group li{align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--text-primary);display:inline-flex;font-size:.83rem;gap:.45rem;padding:.4rem .75rem;transition:border-color .2s ease,color .2s ease,transform .2s ease}.skills-group li:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--accent);transform:translateY(-2px)}.skill-icon{display:inline-grid;flex:0 0 1.05rem;height:1.05rem;place-items:center;width:1.05rem}.skill-icon__image{display:block;height:100%;-o-object-fit:contain;object-fit:contain;width:100%}:root[data-theme=dark] .skill-icon__image{filter:invert(1) brightness(1.6) grayscale(.2);opacity:.92}.skill-icon__fallback{background:var(--accent);border-radius:50%;color:var(--accent-contrast);display:inline-grid;font-family:var(--font-mono);font-size:.5rem;height:100%;line-height:1;place-items:center;width:100%}.journey-list{margin-top:var(--space-5)}.journey-list,.timeline-item{display:grid;gap:var(--space-3)}.timeline-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-4) var(--space-4) var(--space-4) var(--space-5);position:relative}.timeline-item:before{background:var(--grad-brand);border-radius:var(--radius-pill);bottom:var(--space-4);content:"";left:0;opacity:.5;position:absolute;top:var(--space-4);transition:opacity .28s ease;width:3px}.timeline-item:hover{box-shadow:var(--shadow-pop);transform:translateY(-3px)}.timeline-item:hover:before{opacity:1}.timeline-item__head{align-items:flex-start;display:flex;gap:var(--space-3);justify-content:space-between}.timeline-item__head-text{min-width:0}.timeline-item__logo{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-card);flex:0 0 auto;height:52px;-o-object-fit:cover;object-fit:cover;width:52px}.timeline-item__period{color:var(--text-muted);font-family:var(--font-mono);font-size:.76rem;letter-spacing:.04em}.timeline-item__role{font-family:var(--font-heading);font-size:1.18rem;font-weight:600;margin:var(--space-2) 0 0}.timeline-item__company{color:var(--accent);font-size:.92rem;font-weight:500;margin-top:.2rem}.timeline-item__highlights,.timeline-item__summary{color:var(--text-secondary)}.timeline-item__highlights{display:grid;gap:.4rem;margin:0;padding-left:1.1rem}.timeline-item__highlights li::marker{color:var(--accent)}.timeline-item__media{margin-top:var(--space-1)}.timeline-item__media-label{color:var(--text-muted);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;margin-bottom:.5rem;text-transform:uppercase}.timeline-item__thumbnails{display:flex;flex-wrap:wrap;gap:.55rem;list-style:none;margin:0;padding:0}.timeline-item__thumbnail-button{background:transparent;border:1px solid var(--line);border-radius:10px;cursor:pointer;display:inline-flex;overflow:hidden;padding:0;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.timeline-item__thumbnail-button:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:var(--shadow-card);transform:translateY(-2px)}.timeline-item__thumbnail-image{display:block;height:64px;max-height:100%;max-width:100%;min-height:64px;min-width:92px;-o-object-fit:cover;object-fit:cover;width:92px}.timeline-lightbox{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#080a0edb;display:grid;height:100dvh;inset:0;padding:1.2rem;place-items:center;position:fixed;width:100vw;z-index:1200}.timeline-lightbox__figure{margin:0;width:min(940px,92vw)}.timeline-lightbox__image{background:#0f1418;border:1px solid hsla(0,0%,100%,.18);border-radius:16px;display:block;height:auto;max-height:82dvh;-o-object-fit:contain;object-fit:contain;width:100%}.timeline-lightbox__caption{color:#d7dee4;font-family:var(--font-mono);font-size:.78rem;margin-top:.6rem;text-align:center}.timeline-lightbox__close{border:1px solid hsla(0,0%,100%,.32);border-radius:var(--radius-pill);padding:.46rem .8rem;right:1rem;top:1rem}.timeline-lightbox__close,.timeline-lightbox__nav{background:#ffffff1a;color:#fff;cursor:pointer;position:absolute}.timeline-lightbox__nav{border:1px solid hsla(0,0%,100%,.3);border-radius:50%;font-size:1.4rem;height:2.6rem;line-height:1;top:50%;transform:translateY(-50%);width:2.6rem}.timeline-lightbox__nav--prev{left:.9rem}.timeline-lightbox__nav--next{right:.9rem}.projects-grid{align-items:start;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:var(--space-5)}.project-card,.projects-grid{display:grid;gap:var(--space-4)}.project-card{align-content:start;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-4)}.project-card:hover{box-shadow:var(--shadow-pop);transform:translateY(-5px)}.project-card__banner-wrap{border:1px solid var(--line);border-radius:var(--radius-md);margin:0;overflow:hidden}.project-card__banner{aspect-ratio:16/9;display:block;height:auto;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease;width:100%}.project-card:hover .project-card__banner{transform:scale(1.04)}.project-card__gallery{display:grid;gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));list-style:none;margin:0;padding:0}.project-card__gallery li{border:1px solid var(--line);border-radius:10px;overflow:hidden}.project-card__gallery-image{aspect-ratio:3/2;display:block;height:auto;-o-object-fit:cover;object-fit:cover;width:100%}.project-card__period{color:var(--text-muted);font-family:var(--font-mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase}.project-card__title{font-family:var(--font-heading);font-size:1.25rem;font-weight:600;letter-spacing:-.01em;margin:var(--space-2) 0 0}.project-card__summary{color:var(--text-secondary);margin-top:var(--space-2)}.project-card__highlights{color:var(--text-secondary);display:grid;gap:.55rem;margin:0;padding-left:1.1rem}.project-card__highlights li::marker{color:var(--accent)}.project-card__meta{display:grid;gap:var(--space-3)}.project-card__stack{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.project-card__stack li{background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:var(--radius-pill);color:var(--accent);font-size:.78rem;font-weight:500;padding:.32rem .7rem}.project-card__links{display:flex;flex-wrap:wrap;gap:var(--space-3)}.project-card__link{align-items:center;color:var(--accent);display:inline-flex;font-size:.88rem;font-weight:500;gap:.35rem}.project-card__link:after{content:"↗";font-size:.9em;transition:transform .2s ease}.project-card__link:hover:after{transform:translate(2px,-2px)}.contact-grid{display:grid;gap:var(--space-5);grid-template-columns:minmax(240px,1fr) minmax(0,1.4fr);margin-top:var(--space-5)}.contact-info{align-content:start;background:linear-gradient(160deg,color-mix(in srgb,var(--accent-soft) 60%,var(--surface)),var(--surface));border:1px solid var(--line);border-radius:var(--radius-md);display:grid;gap:var(--space-3);padding:var(--space-5)}.contact-info p{color:var(--text-secondary)}.contact-info a{color:var(--accent);font-weight:500;width:-moz-fit-content;width:fit-content}.contact-info a:hover{text-decoration:underline}.contact-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-card);display:grid;gap:var(--space-3);padding:var(--space-5)}.contact-form label{display:grid;font-size:.9rem;font-weight:500;gap:.45rem}.contact-form input,.contact-form textarea{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius-sm);color:var(--text-primary);font:inherit;padding:.8rem .95rem;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease;width:100%}.contact-form input::-moz-placeholder,.contact-form textarea::-moz-placeholder{color:var(--text-muted)}.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--text-muted)}.contact-form input:focus,.contact-form textarea:focus{background:var(--surface);border-color:var(--accent);box-shadow:var(--ring);outline:none}.contact-form textarea{min-height:7.5rem;resize:vertical}.turnstile-container{display:grid;gap:.4rem}.form-error{color:var(--danger);font-size:.79rem}.form-feedback{font-size:.9rem}.form-feedback--success{color:var(--success)}.form-feedback--error{color:var(--danger)}.app-footer{border-top:1px solid var(--line);margin-top:var(--space-7);padding-top:var(--space-4)}.app-footer__inner{align-items:center;display:flex;gap:var(--space-3);justify-content:space-between}.app-footer__copy{color:var(--text-muted);font-size:.86rem}.app-footer__links{display:flex;font-size:.88rem;gap:var(--space-4)}.app-footer__links a{color:var(--text-secondary);transition:color .2s ease}.app-footer__links a:hover{color:var(--accent)}@media(max-width:980px){.hero{gap:var(--space-5);grid-template-columns:1fr}.hero__aside{order:-1;width:min(100%,420px)}.about-grid,.contact-grid,.projects-grid,.skills-grid{grid-template-columns:1fr}.app-header__nav{display:none}.app-header__menu-btn{display:inline-grid}.app-header__menu{display:flex}}@media(max-width:640px){.portfolio-page{width:min(1180px,100% - 1.5rem)}.section{padding-top:var(--space-6)}.hero{padding-top:calc(var(--space-6) + var(--space-4))}.hero__stats{grid-template-columns:1fr}.app-header{top:var(--space-2)}.app-footer__inner{align-items:flex-start;flex-direction:column}.project-card__gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}
