body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Ccircle cx='14' cy='14' r='5' fill='none' stroke='%237c3aed' stroke-width='2'/%3E%3Ccircle cx='14' cy='14' r='10' fill='none' stroke='%2338bdf8' stroke-opacity='.45' stroke-width='1.2'/%3E%3C/svg%3E") 14 14,auto;font-family:Inter,Segoe UI,Roboto,sans-serif;scroll-behavior:smooth}*{box-sizing:border-box;cursor:inherit}[role=button],a,button{cursor:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Ccircle cx='14' cy='14' r='5' fill='%237c3aed' fill-opacity='.25'/%3E%3Ccircle cx='14' cy='14' r='10' fill='none' stroke='%237c3aed' stroke-width='2'/%3E%3C/svg%3E") 14 14,pointer}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--accent:#7c3aed;--accent-soft:#7c3aed1a;--shadow:0 28px 90px #0f172a1f}body.light-mode{--page-bg:#f8faff;--surface:#fffc;--surface-strong:#fff;--border:#0f172a40;--text-primary:#0f172a;--text-muted:#475569;--hero-panel-bg:#ffffffe6;--hero-panel-border:#7c3aed33;--hero-panel-overlay:#7c3aed14;--hero-footer-bg:#7c3aed0d;--card-bg:#fff;--icon-bg:#7c3aed14;--timeline-content-bg:#fff;--timeline-text:#0f172a}body.dark-mode{--page-bg:#040816;--surface:#0c1222b3;--surface-strong:#0c1222;--border:#ffffff26;--text-primary:#f8fafc;--text-muted:#94a3b8;--hero-panel-bg:#0c1222e6;--hero-panel-border:#ffffff26;--hero-panel-overlay:#7c3aed26;--hero-footer-bg:#ffffff0f;--card-bg:#0c1222;--icon-bg:#7c3aed26;--timeline-content-bg:#0c1222;--timeline-text:#f8fafc}body{background:radial-gradient(circle at top left,#7c3aed29,#0000 24%),radial-gradient(circle at bottom right,#3b82f624,#0000 20%),linear-gradient(135deg,#f7f8ff,#eef4ff);color:var(--text-primary);margin:0;min-height:100vh;transition:background .35s ease,color .35s ease}body.dark-mode{background:radial-gradient(circle at top left,#a78bfa29,#0000 22%),radial-gradient(circle at bottom right,#38bdf824,#0000 22%),linear-gradient(135deg,#040816,#090d21)}body:after,body:before{border-radius:50%;content:"";filter:blur(60px);opacity:.15;pointer-events:none;position:fixed;z-index:0}body:before{background:#7c3aed;height:460px;left:-140px;top:-120px;width:460px}body:after{background:#38bdf8;bottom:-80px;height:360px;right:-100px;width:360px}body.dark-mode:after,body.dark-mode:before{opacity:.28}.project-vertical-list{display:flex;flex-direction:column;gap:.75rem;position:relative}.project-list-row{align-items:center;background:var(--surface-strong);border:1px solid var(--border);border-radius:1.2rem;cursor:pointer;display:flex;justify-content:space-between;min-height:90px;padding:1.25rem 1.5rem;transition:all .3s ease}.project-list-row:hover{background:#7c3aed1a;background:var(--accent-soft);border-color:#7c3aed4d;transform:translateX(6px)}.project-row-left{align-items:center;display:flex;flex:1 1;gap:1.5rem}.project-index{color:#7c3aed;color:var(--accent);font-family:monospace;font-size:1.1rem;opacity:.85}.project-row-title{color:var(--text-primary)!important;font-size:1.35rem;font-weight:700;margin:0 0 .3rem;transition:color .25s ease}.project-list-row:hover .project-row-title{color:#7c3aed!important;color:var(--accent)!important}.project-row-tech-text{color:var(--text-muted)!important;font-size:.88rem;margin:0}.modal-tech-muted{color:var(--text-muted)!important;font-size:.95rem;margin-bottom:0}.project-row-right{align-items:center;display:flex;gap:1.25rem}.project-row-category{background:#7c3aed1a;background:var(--accent-soft);border:1px solid #7c3aed2e;border-radius:20px;color:#7c3aed;color:var(--accent);font-size:.85rem;font-weight:600;padding:.3rem .8rem}body.dark-mode .project-row-category{background:#000;border:1px solid #ffffff26;color:#fff}.project-arrow-btn{background:var(--surface);border:1px solid var(--border);border-radius:50%;color:var(--text-primary);display:grid;height:40px;place-items:center;transition:all .3s ease;width:40px}.project-list-row:hover .project-arrow-btn{background:#7c3aed;background:var(--accent);border-color:#7c3aed;border-color:var(--accent);color:#fff;transform:rotate(45deg)}.project-preview-slot{align-items:center;display:flex;height:90px;justify-content:flex-end;position:relative;width:160px}.project-hover-preview{animation:fadeInPreview .25s ease-out;border:1px solid #fff3;border-radius:10px;box-shadow:0 10px 25px #00000080,0 0 15px #7c3aed4d;height:90px;overflow:hidden;pointer-events:none;width:160px}.project-hover-preview img{height:100%;object-fit:cover;width:100%}@keyframes fadeInPreview{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.modal-overlay{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#020617c7;bottom:0;display:grid;left:0;padding:1.5rem;place-items:center;right:0;top:0;z-index:9999}.glass-modal{animation:modalPop .3s ease;background:var(--surface-strong);border:1px solid var(--border);border-radius:1.5rem;box-shadow:0 28px 90px #0f172a1f;box-shadow:var(--shadow);color:var(--text-primary);display:flex;flex-direction:column;max-height:85vh;max-width:850px;overflow:hidden;width:100%}@keyframes modalPop{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-header{border-bottom:1px solid var(--border);padding:1.8rem 2rem 1.2rem}.modal-title{color:var(--text-primary)!important;margin:.35rem 0 .25rem}.btn-close-modal{background:#0000;border:none;color:var(--text-muted);cursor:pointer;font-size:2rem;line-height:1;transition:color .2s}.btn-close-modal:hover{color:var(--text-primary)}.modal-body{display:flex;flex-direction:column;gap:2rem;overflow-y:auto;padding:1.8rem 2rem}.detail-label{color:#7c3aed;color:var(--accent);display:block;font-size:.85rem;font-weight:600;letter-spacing:.06em;margin-bottom:.75rem;text-transform:uppercase}.features-list{color:var(--text-primary);padding-left:1.2rem}.features-list li{line-height:1.5;margin-bottom:.4rem}.detail-description{color:var(--text-primary);line-height:1.65}.modal-gallery-section{display:flex;flex-direction:column}.gallery-scroll-container{gap:1rem;padding-bottom:.75rem}.gallery-scroll-container::-webkit-scrollbar{height:6px}.gallery-scroll-container::-webkit-scrollbar-thumb{background:#7c3aed66;border-radius:10px}.gallery-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-shrink:0;height:150px;min-width:240px}.gallery-card img{height:100%;object-fit:cover;width:100%}.modal-footer{background:var(--surface);border-top:1px solid var(--border);padding:1.2rem 2rem}.footer-tagline{color:var(--text-muted);font-size:.85rem}@media (max-width:768px){.project-hover-preview,.project-row-category{display:none}.project-list-row{padding:1.2rem 1rem}}.app-shell{min-height:100vh;padding-left:50px;position:relative;transition:padding-left .3s cubic-bezier(.4,0,.2,1);z-index:1}.app-shell:has(.side-nav--expanded),.side-nav--expanded~.site-main{padding-left:50px}.app-shell.has-expanded-nav,.side-nav--expanded~.site-main{padding-left:130px}.side-nav{transition:width .3s cubic-bezier(.4,0,.2,1)}.site-main{position:relative}.container{margin:0 auto;max-width:1400px;padding-left:3rem;padding-right:2rem;width:100%}.hero-section .container{align-items:center;display:flex;justify-content:center}.page-section{padding:5rem 0}.hero-section{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-height:100vh;padding-bottom:2rem;padding-top:2rem;width:100%}.section-heading{margin:0 auto 2.4rem;max-width:760px;text-align:center}.section-kicker{align-items:center;color:#7c3aed;color:var(--accent);display:inline-flex;font-size:.82rem;font-weight:700;letter-spacing:.28em;margin-bottom:.75rem;text-transform:uppercase}.section-title{font-size:clamp(2rem,3.4vw,3rem);font-weight:800;letter-spacing:-.04em;margin-bottom:.6rem}.section-subtitle{color:var(--text-muted);line-height:1.8;margin:0}.side-nav{align-items:center;bottom:0;display:flex;justify-content:center;left:0;padding:1rem .75rem;position:fixed;top:0;transition:width .3s ease;width:96px;z-index:1000}.side-nav--expanded{width:220px}.side-nav__inner{align-items:center;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #ffffff29;border-radius:1.6rem;box-shadow:0 18px 55px #0f172a1f;display:flex;flex-direction:column;height:100%;justify-content:space-between;padding:1rem .7rem;width:100%}.side-nav-light .side-nav__inner{background:#ffffffc7;border-color:#0f172a1f}.side-nav-dark .side-nav__inner{background:#080f24d1;border-color:#ffffff1f}.side-nav__brand{align-items:center;background:linear-gradient(135deg,#7c3aed,#38bdf8);border:0;border-radius:999px;color:#fff;display:inline-flex;font-weight:800;gap:.6rem;height:46px;justify-content:center;overflow:hidden;padding:0 .85rem;transition:width .3s ease,padding .3s ease;white-space:nowrap;width:46px}.side-nav--expanded .side-nav__brand{justify-content:center;margin:.6rem auto;max-width:180px;padding:.35rem 1rem;width:auto}.side-nav__brand-mark{display:inline-grid;flex-shrink:0;font-size:1rem;height:24px;place-items:center;width:24px}.side-nav__brand-name{display:none;font-size:.95rem;letter-spacing:-.02em}.side-nav--expanded .side-nav__brand-mark{display:none}.side-nav--expanded .side-nav__brand-name{display:inline-block;font-weight:700;text-align:center;width:100%}.side-nav__links{display:flex;flex-direction:column;gap:.7rem;margin-top:.8rem;width:100%}.side-nav--expanded .side-nav__link{justify-content:flex-start;padding-left:1rem}.side-nav__icon{width:36px}.side-nav--expanded .side-nav__tooltip{display:none!important}.side-nav__link{align-items:center;border-radius:999px;color:var(--text-muted);display:flex;gap:.75rem;justify-content:center;padding:.8rem .85rem;position:relative;text-decoration:none;transition:all .25s ease;width:100%}.side-nav__link.active,.side-nav__link:hover{background:linear-gradient(135deg,#7c3aed,#38bdf8);color:#fff;transform:translateX(3px)}.side-nav__icon{display:grid;flex-shrink:0;place-items:center}.side-nav__label{display:none;font-size:.95rem;font-weight:600;white-space:nowrap}.side-nav--expanded .side-nav__label{display:inline-block}.side-nav__tooltip{background:#080f24f2;border-radius:.7rem;color:#fff;font-size:.8rem;left:72px;opacity:0;padding:.45rem .7rem;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:opacity .2s ease;white-space:nowrap}.side-nav__link:focus-visible .side-nav__tooltip,.side-nav__link:hover .side-nav__tooltip{opacity:1}.side-nav__theme{background:#0000;border:0;border-radius:50%;color:var(--text-muted);height:46px;width:46px}.side-nav__theme:hover{color:#7c3aed;color:var(--accent)}.hero-card{grid-gap:2rem;align-items:center;background:linear-gradient(135deg,#7c3aed1f,#38bdf80f),var(--surface);border:1px solid var(--border);border-radius:2rem;box-shadow:0 28px 90px #0f172a1f;box-shadow:var(--shadow);display:grid;gap:2rem;grid-template-columns:minmax(0,1.8fr) minmax(240px,310px);margin:0 auto;max-width:1250px;overflow:hidden;padding:2.2rem 2.8rem;position:relative;width:100%}.hero-card:after{background:radial-gradient(circle,#7c3aed33,#0000 70%);border-radius:50%;content:"";height:240px;inset:auto -40px -40px auto;position:absolute;width:240px}.hero-content{display:flex;flex-direction:column;justify-content:center;max-width:780px}.hero-eyebrow{align-items:center;color:#7c3aed;color:var(--accent);display:inline-flex;font-size:.88rem;font-weight:700;gap:.65rem;letter-spacing:.3em;margin-bottom:1rem;text-transform:uppercase}.hero-title{font-size:clamp(3rem,5vw,5rem);letter-spacing:-.04em;line-height:1.02;margin-bottom:1.3rem}.hero-content p{color:var(--text-muted);font-size:1.05rem;line-height:1.85;margin-bottom:1.5rem;max-width:700px}.hero-actions{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;margin-top:.75rem}.btn{align-items:center;border-radius:999px;cursor:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Ccircle cx='14' cy='14' r='5' fill='%237c3aed' fill-opacity='.25'/%3E%3Ccircle cx='14' cy='14' r='10' fill='none' stroke='%237c3aed' stroke-width='2'/%3E%26gt;%3C/svg%3E") 14 14,pointer;display:inline-flex;font-weight:700;gap:.75rem;justify-content:center;min-height:56px;padding:0 1.55rem;text-decoration:none;transition:transform .2s ease,background-color .2s ease,color .2s ease,box-shadow .2s ease}.btn *{cursor:inherit}.btn:hover{transform:translateY(-2px)}.btn-primary{background:linear-gradient(135deg,#7c3aed,#38bdf8);border:1px solid #0000;box-shadow:0 18px 40px #7c3aed2e;color:#fff}.btn-outline-primary{background:#0000;border:1px solid #7c3aed38;color:var(--text-primary)}.btn-outline-primary:hover{background:#7c3aed14}.btn-icon{align-items:center;display:inline-flex;justify-content:center}.hero-badges{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.4rem}.hero-socials{gap:.8rem;margin-top:1.6rem}.hero-socials,.hero-socials a{align-items:center;display:inline-flex}.hero-socials a{background:#7c3aed24;border-radius:14px;color:#7c3aed;color:var(--accent);height:44px;justify-content:center;transition:transform .2s ease,background .2s ease;width:44px}.hero-socials a:hover{background:#7c3aed38;transform:translateY(-2px)}.hero-socials a svg{height:20px;width:20px}.feature-pill{align-items:center;background:var(--surface-strong);border:1px solid #7c3aed29;border-radius:999px;color:#7c3aed;color:var(--accent);display:inline-flex;font-size:.9rem;font-weight:700;justify-content:center;padding:.7rem .95rem}.hero-visual{align-self:center;display:grid;justify-self:end;place-items:center;position:relative}.hero-visual-shell{padding:0;position:relative;width:100%}.hero-visual-card{background:var(--hero-panel-bg);border:1px solid var(--hero-panel-border);border-radius:1.5rem;box-shadow:0 16px 40px #0f172a1a;display:flex;flex-direction:column;gap:1rem;overflow:hidden;padding:1.25rem 1.4rem;position:relative;width:100%}.hero-visual-card:before{background:radial-gradient(circle at top right,var(--hero-panel-overlay),#0000 48%);content:"";inset:0;opacity:.9;pointer-events:none;position:absolute}.hero-visual-card>*{position:relative;z-index:1}.hero-visual-avatar{background:linear-gradient(135deg,#7c3aed,#38bdf8);border-radius:28px;color:#fff;display:grid;font-size:2.1rem;font-weight:800;height:82px;place-items:center;width:82px}.hero-visual-title{color:#7c3aed;color:var(--accent);font-size:1.15rem;font-weight:700;margin:0}.hero-visual-copy{color:var(--text-muted);line-height:1.75;margin:0}.hero-visual-features{display:flex;flex-direction:column;gap:.6rem}.hero-visual-feature{align-items:center;background:#7c3aed14;border-radius:1.35rem;color:var(--text-primary);display:inline-flex;font-weight:700;justify-content:center;padding:.95rem 1rem}.hero-visual-footer{background:var(--hero-footer-bg);border-radius:1.4rem;color:var(--text-primary);font-size:.95rem;line-height:1.6;margin-top:auto;padding:1rem 1.1rem}.hero-stats{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.hero-stat{background:#7c3aed14;border-radius:1.15rem;display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem}.hero-stat strong{color:var(--text-primary);display:block;font-size:1.45rem}.hero-stat span{color:var(--text-muted);font-size:.95rem}.about-card-panel{background:var(--surface-strong);border:1px solid var(--border);border-radius:1.6rem;box-shadow:0 28px 90px #0f172a1f;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:2.5rem;padding:3rem 2.5rem}.about-header{max-width:800px}.about-tag{color:#38bdf8;display:inline-block;font-size:.9rem;font-weight:600;letter-spacing:.08em;margin-bottom:.5rem;text-transform:uppercase}.about-main-title{color:var(--text-primary);font-size:2.2rem;font-weight:700;letter-spacing:-.02em;margin-bottom:1rem}.about-intro{color:var(--text-muted);font-size:1.08rem;line-height:1.7}.capabilities-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(2,1fr)}.capability-card{background:var(--card-bg);border:1px solid var(--border);border-radius:1.2rem;padding:1.5rem;transition:all .25s ease}.capability-card:hover{background:#7c3aed1a;background:var(--accent-soft);border-color:#7c3aed40;transform:translateY(-2px)}.capability-icon{background:var(--icon-bg);border-radius:10px;color:#7c3aed;color:var(--accent);display:grid;font-size:1.25rem;height:42px;margin-bottom:1rem;place-items:center;width:42px}.capability-card h3{color:var(--text-primary);font-size:1.15rem;font-weight:600;margin-bottom:.5rem}.capability-card p{color:var(--text-muted);font-size:.95rem;line-height:1.6;margin:0}.about-footer-bar{background:var(--hero-footer-bg);border-left:3px solid #7c3aed;border-left:3px solid var(--accent);border-radius:12px;padding:1.2rem 1.6rem}.about-quote{color:var(--text-primary);font-size:.98rem;font-style:italic;line-height:1.5;margin:0}@media (max-width:768px){.capabilities-grid{grid-template-columns:1fr}}.hero-code-window{background:#0f172afa;border-radius:1.8rem;color:#e2e8f0;font-family:Fira Code,Courier New,monospace;font-size:.92rem;line-height:1.75;margin-top:1.5rem;padding:1.25rem}.code-window-header{display:flex;gap:.65rem;margin-bottom:1rem}.code-window-dot{border-radius:50%;height:10px;width:10px}.code-window-dot:first-child{background:#f87171}.code-window-dot:nth-child(2){background:#fbbf24}.code-window-dot:nth-child(3){background:#34d399}.code-line{background:#94a3b840;border-radius:999px;height:12px;margin-bottom:.8rem;width:100%}.code-line.line-long{width:100%}.code-line.line-medium{width:82%}.code-line.line-short{width:60%}.hero-visual:after,.hero-visual:before{border-radius:50%;content:"";filter:blur(70px);opacity:.28;pointer-events:none;position:absolute}.hero-visual:before{background:#38bdf833;height:220px;right:-40px;top:-40px;width:220px}.hero-visual:after{background:#7c3aed2e;bottom:-40px;height:180px;left:-40px;width:180px}.hero-floating-card{background:var(--surface-strong);border:1px solid var(--border);border-radius:1.2rem;bottom:-8px;box-shadow:0 16px 45px #0f172a1f;min-width:180px;padding:1rem 1.1rem;position:absolute;right:-8px}.hero-floating-card strong{display:block;font-size:1rem;margin-bottom:.2rem}.hero-floating-card span{color:var(--text-muted);font-size:.9rem}.section-panel{background:linear-gradient(145deg,#7c3aed14,#ffffff05);border:1px solid var(--border);border-radius:2rem;box-shadow:0 28px 90px #0f172a1f;box-shadow:var(--shadow);padding:2rem}.about-grid{grid-gap:2rem;align-items:center;display:grid;gap:2rem;grid-template-columns:1.1fr .9fr}.about-copy p{color:var(--text-muted);line-height:1.8}.about-list{grid-gap:.85rem;display:grid;gap:.85rem;margin-top:1.5rem}.about-item{align-items:flex-start;background:var(--surface-strong);border:1px solid var(--border);border-radius:1rem;display:flex;gap:.75rem;padding:.95rem 1rem}.about-item span{background:linear-gradient(135deg,#7c3aed,#38bdf8);border-radius:50%;display:inline-flex;height:10px;margin-top:.45rem;width:10px}.about-visual img{border-radius:1.6rem;box-shadow:0 20px 65px #0f172a1f;object-fit:cover;width:100%}.skills-shell{grid-gap:1.25rem;display:grid;gap:1.25rem}.skills-intro-card{background:linear-gradient(135deg,#7c3aed1f,#38bdf814);border:1px solid var(--border);border-radius:1.4rem;box-shadow:0 16px 42px #0f172a0f;padding:1.5rem 1.7rem}.skills-intro-card h3{font-size:1.15rem;margin:0 0 .45rem}.skills-intro-card p{color:var(--text-muted);line-height:1.7;margin:0}.contact-grid,.skills-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.contact-card,.skill-card{background:var(--surface-strong);border:1px solid var(--border);border-radius:1.3rem;box-shadow:0 12px 32px #0f172a0f;display:flex;flex-direction:column;justify-content:flex-start;min-height:180px;overflow:hidden;padding:1.25rem;position:relative;text-align:left;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.skill-card:before{background:linear-gradient(135deg,#7c3aed0f,#0000 65%);content:"";inset:0;pointer-events:none;position:absolute}.contact-card:hover,.project-card:hover,.skill-card:hover{border-color:#7c3aed3d;box-shadow:0 18px 40px #0f172a17;transform:translateY(-6px)}.skill-icon{background:linear-gradient(135deg,#7c3aed29,#38bdf824);border-radius:14px;color:#7c3aed;color:var(--accent);display:grid;height:46px;margin-bottom:.9rem;place-items:center;width:46px}.skill-icon svg{height:22px;width:22px}.contact-card h5,.skill-content h5{font-size:1rem;margin:0 0 .45rem}.skill-content p{color:var(--text-muted);font-size:.95rem;line-height:1.65;margin:0}.skill-index{color:#7c3aed38;font-size:1rem;font-weight:800;letter-spacing:.08em;position:absolute;right:1rem;top:1rem}@media (max-width:768px){.contact-grid,.skills-grid{grid-template-columns:1fr}}.projects-wrapper{position:relative}.project-card{background:var(--surface-strong);border:1px solid var(--border);border-radius:1.6rem;box-shadow:0 18px 45px #0f172a14;cursor:pointer;display:flex;flex-direction:column;min-height:100%;overflow:hidden}.project-card .project-media{background:linear-gradient(135deg,#7c3aed24,#38bdf81f);display:grid;min-height:250px;place-items:center}.project-card .project-media img{height:100%;object-fit:cover;width:100%}.project-card .project-info{flex:1 1;padding:1.6rem;text-align:left}.project-card .project-info h3{font-size:1.2rem;margin-bottom:.8rem}.project-card .project-info p{color:var(--text-muted);line-height:1.75;margin-bottom:1.3rem}.project-badge{align-items:center;background:#7c3aed1a;background:var(--accent-soft);border-radius:999px;color:#7c3aed;color:var(--accent);display:inline-flex;font-size:.82rem;font-weight:700;justify-content:center;margin-bottom:.9rem;padding:.5rem .85rem}body.dark-mode .project-badge{background:#000;border:1px solid #ffffff26;color:#fff}.modal-overlay{align-items:center;background:#020617e0;display:flex;inset:0;justify-content:center;padding:2rem;position:fixed;z-index:2000}.project-modal{background:var(--surface-strong);border:1px solid var(--border);border-radius:1.6rem;box-shadow:0 40px 120px #0f172a33;overflow:hidden;width:min(100%,900px)}.project-modal .modal-footer,.project-modal .modal-header{padding:1.4rem 1.6rem}.project-modal .modal-body{padding:1.7rem 1.6rem 1.6rem}.project-modal .detail-grid{grid-gap:1.3rem;display:grid;gap:1.3rem;grid-template-columns:1fr 1fr}.project-modal .detail-grid p{color:var(--text-primary);line-height:1.75}.project-modal .detail-grid span{display:block;font-weight:700;margin-bottom:.45rem}.project-modal .btn-primary{border-radius:999px;padding:.9rem 1.4rem}.work-timeline .vertical-timeline-element-content{background:var(--timeline-content-bg)!important;border:1px solid var(--border)!important;border-radius:1.2rem!important;box-shadow:0 28px 90px #0f172a1f!important;box-shadow:var(--shadow)!important;color:var(--timeline-text)!important}.work-timeline .vertical-timeline-element-content-arrow{border-right-color:var(--border)!important}.vertical-timeline-element-subtitle,.vertical-timeline-element-title{color:var(--text-primary)!important}.vertical-timeline-element-content p{color:var(--text-muted)!important}.footer{color:var(--text-muted);padding:2rem 0 3rem;text-align:center}@media (max-width:992px){.hero-section{align-items:center;display:flex;justify-content:center;min-height:calc(100vh - 80px);padding-bottom:3rem;padding-top:3rem}.hero-card{grid-template-columns:1fr;margin:0 auto;max-width:600px;padding:2rem 1.5rem;text-align:center}.hero-content{align-items:center;max-width:100%}.hero-actions{width:100%}.hero-actions,.hero-badges{justify-content:center}.hero-visual{justify-self:center;max-width:360px;width:100%}}@media (max-width:767px){.hero-section{padding-bottom:3rem;padding-top:6rem}.hero-card{padding:1.5rem}.hero-title{font-size:2.7rem}.hero-actions{align-items:stretch;flex-direction:column}.hero-actions .btn{width:100%}}@media (min-width:1920px){.hero-section{align-items:center;display:flex;height:100vh;justify-content:center;padding-bottom:0;padding-top:0}.hero-card{max-width:1550px;padding:3rem 3.5rem}}@media (max-width:767px){.app-shell{padding-left:0}.side-nav{bottom:0;height:72px;left:0;padding:.5rem .7rem;position:fixed;right:0;top:auto;width:100%}.side-nav__inner{align-items:center;flex-direction:row;height:100%;justify-content:space-between;padding:.4rem .8rem}.side-nav__brand{display:none}.side-nav__links{flex-direction:row;gap:.35rem;height:100%;margin-top:0}.side-nav__link,.side-nav__links{align-items:center;justify-content:center}.side-nav__link{display:flex;height:42px;min-width:42px;padding:.6rem}.side-nav__link.active,.side-nav__link:hover{transform:none}.side-nav__theme{align-items:center;display:flex;flex-shrink:0;justify-content:center;margin:0}.side-nav__tooltip{display:none!important}.page-section{padding:3.5rem 0}.hero-section{padding-bottom:4rem;padding-top:6rem}.container{padding-left:1.25rem;padding-right:1.25rem}.page-section{padding-left:0;padding-right:0}.hero-card{padding:1.4rem}.hero-title{font-size:2.6rem}.section-panel{padding:1.4rem}.project-hover-preview,.project-preview-slot{display:none!important}.project-row-right{gap:.85rem}.project-row-left{flex:1 1 100%}}.contact-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(4,1fr);margin:0 auto;max-width:1200px;width:100%}.contact-card{background:#ffffffb3;background:var(--row-bg,#ffffffb3);border:1px solid #00000014;border:1px solid var(--row-border,#00000014);border-radius:18px;box-shadow:0 4px 20px #00000008;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;padding:1.35rem;position:relative;text-decoration:none!important;transition:all .3s cubic-bezier(.16,1,.3,1)}.dark-mode .contact-card,[data-theme=dark] .contact-card{background:#ffffff08;border:1px solid #ffffff14;box-shadow:0 10px 30px #0003}.contact-card:hover{border-color:#7c3aed66;box-shadow:0 15px 30px #7c3aed26;transform:translateY(-6px)}.contact-card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.25rem}.contact-icon-wrapper{align-items:center;background:#7c3aed14;border-radius:12px;color:var(--accent-light);display:flex;height:50px;justify-content:center;transition:all .3s ease;width:50px}.dark-mode .contact-icon-wrapper,[data-theme=dark] .contact-icon-wrapper{background:#ffffff0f;color:var(--accent-dark)}.contact-card:hover .contact-icon-wrapper{background:var(--accent-light);color:#fff;transform:scale(1.05)}.dark-mode .contact-card:hover .contact-icon-wrapper,[data-theme=dark] .contact-card:hover .contact-icon-wrapper{background:var(--accent-dark);color:#0f172a}.contact-arrow{color:#64748b;color:var(--text-sub,#64748b);transition:transform .3s ease,color .3s ease}.contact-card:hover .contact-arrow{color:#0f172a;color:var(--text-main,#0f172a);transform:translate(3px,-3px)}.dark-mode .contact-card:hover .contact-arrow,[data-theme=dark] .contact-card:hover .contact-arrow{color:#fff}.contact-card-body{display:flex;flex-direction:column}.contact-name{color:#0f172a;color:var(--text-main,#0f172a);font-size:1.2rem;font-weight:700;margin-bottom:.2rem}.dark-mode .contact-name,[data-theme=dark] .contact-name{color:#fff}.contact-handle{color:#7c3aed;font-size:.85rem;font-weight:600;margin-bottom:.4rem;word-break:break-all}.contact-desc{color:#64748b;color:var(--text-sub,#64748b);font-size:.8rem;line-height:1.4;margin:0}.dark-mode .contact-desc,[data-theme=dark] .contact-desc{color:#94a3b8}@media (max-width:1024px){.contact-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.contact-grid{grid-template-columns:1fr}}.gallery-scroll-container{display:flex;gap:16px;overflow-x:auto;padding:10px 4px 16px;scroll-behavior:smooth}.gallery-card{background:#ffffff08;border:1px solid #ffffff1a;border-radius:12px;cursor:pointer;flex:0 0 auto;height:380px;overflow:hidden;position:relative;transition:transform .2s ease,border-color .2s ease}.gallery-card:hover{border-color:#a855f7;transform:translateY(-4px)}.gallery-thumbnail{display:block;height:100%;max-width:100%;object-fit:contain;width:auto}.gallery-hint{color:#000000e6;font-size:.8rem;margin-bottom:8px}[data-theme=dark] .gallery-hint,body.dark-mode .gallery-hint{color:#ffffffeb}.gallery-card-overlay{align-items:center;background:#0006;color:#fff;display:flex;font-size:.9rem;font-weight:600;inset:0;justify-content:center;opacity:0;position:absolute;transition:opacity .2s ease}.gallery-card:hover .gallery-card-overlay{opacity:1}.lightbox-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000eb;flex-direction:column;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:9999}.lightbox-content,.lightbox-overlay{align-items:center;display:flex;justify-content:center}.lightbox-content{max-height:85vh;max-width:90vw;position:relative}.lightbox-image-wrapper{align-items:center;display:flex;justify-content:center;max-height:80vh;max-width:80vw}.lightbox-image{border-radius:8px;box-shadow:0 10px 40px #000c;height:auto;max-height:80vh;max-width:100%;object-fit:contain;width:auto}.lightbox-close-btn{background:#0000;border:none;color:#fff;cursor:pointer;font-size:2.5rem;line-height:1;position:absolute;right:32px;top:24px;transition:color .2s;z-index:10000}.lightbox-close-btn:hover{color:#a855f7}.lightbox-arrow{align-items:center;background:#ffffff1a;border:1px solid #fff3;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.8rem;height:50px;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:all .2s ease;width:50px;z-index:10000}.lightbox-arrow:hover{background:#a855f7cc;border-color:#a855f7}.lightbox-arrow.left{left:-70px}.lightbox-arrow.right{right:-70px}@media (max-width:768px){.lightbox-arrow.left{left:-20px}.lightbox-arrow.right{right:-20px}}.lightbox-counter{color:#ffffffb3;font-size:.9rem;letter-spacing:1px;margin-top:16px}.vertical-timeline *{-webkit-box-sizing:border-box;box-sizing:border-box}.vertical-timeline{margin:0 auto;max-width:1170px;padding:2em 0;position:relative;width:95%}.vertical-timeline:after{clear:both;content:"";display:table}.vertical-timeline:before{background:var(--line-color);content:"";height:100%;left:18px;position:absolute;top:0;width:4px}.vertical-timeline.vertical-timeline--one-column-right:before{left:auto;right:18px}@media only screen and (min-width:1170px){.vertical-timeline.vertical-timeline--two-columns{width:90%}.vertical-timeline.vertical-timeline--two-columns:before{left:50%;margin-left:-2px}}.vertical-timeline-element{margin:2em 0;position:relative}.vertical-timeline-element>div{min-height:1px}.vertical-timeline-element:after{clear:both;content:"";display:table}.vertical-timeline-element:first-child{margin-top:0}.vertical-timeline-element:last-child{margin-bottom:0}@media only screen and (min-width:1170px){.vertical-timeline-element{margin:4em 0}.vertical-timeline-element:first-child{margin-top:0}.vertical-timeline-element:last-child{margin-bottom:0}}.vertical-timeline-element-icon{border-radius:50%;-webkit-box-shadow:0 0 0 4px #fff,inset 0 2px 0 #00000014,0 3px 0 4px #0000000d;box-shadow:0 0 0 4px #fff,inset 0 2px 0 #00000014,0 3px 0 4px #0000000d;height:40px;left:0;position:absolute;top:0;width:40px}.vertical-timeline--one-column-right .vertical-timeline-element-icon{left:auto;right:0}.vertical-timeline-element-icon svg{display:block;height:24px;left:50%;margin-left:-12px;margin-top:-12px;position:relative;top:50%;width:24px}@media only screen and (min-width:1170px){.vertical-timeline--two-columns .vertical-timeline-element-icon{height:60px;left:50%;margin-left:-30px;width:60px}}.vertical-timeline-element-icon{-webkit-backface-visibility:hidden;-webkit-transform:translateZ(0)}.vertical-timeline--animate .vertical-timeline-element-icon.is-hidden{visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-icon.bounce-in{-webkit-animation:cd-bounce-1 .6s;animation:cd-bounce-1 .6s;visibility:visible}@-webkit-keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(.5)}60%{opacity:1;-webkit-transform:scale(1.2)}to{-webkit-transform:scale(1)}}@keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}60%{opacity:1;-webkit-transform:scale(1.2);transform:scale(1.2)}to{-webkit-transform:scale(1);transform:scale(1)}}.vertical-timeline-element-content{background:#fff;border-radius:.25em;-webkit-box-shadow:0 3px 0 #ddd;box-shadow:0 3px 0 #ddd;margin-left:60px;padding:1em;position:relative}.vertical-timeline--one-column-right .vertical-timeline-element-content{margin-left:0;margin-right:60px}.vertical-timeline-element--no-children .vertical-timeline-element-content{background:0 0;-webkit-box-shadow:none;box-shadow:none}.vertical-timeline-element-content:after{clear:both;content:"";display:table}.vertical-timeline-element-content h2{color:#303e49}.vertical-timeline-element-content .vertical-timeline-element-date,.vertical-timeline-element-content p{font-size:13px;font-size:.8125rem;font-weight:500}.vertical-timeline-element-content .vertical-timeline-element-date{display:inline-block}.vertical-timeline-element-content p{line-height:1.6;margin:1em 0 0}.vertical-timeline-element-subtitle,.vertical-timeline-element-title{margin:0}.vertical-timeline-element-content .vertical-timeline-element-date{float:left;opacity:.7;padding:.8em 0}.vertical-timeline-element-content-arrow{border:7px solid #0000;border-right-color:#fff;content:"";height:0;position:absolute;right:100%;top:16px;width:0}.vertical-timeline--one-column-right .vertical-timeline-element-content-arrow{border:7px solid #0000;border-left-color:#fff;content:"";height:0;left:100%;position:absolute;right:auto;top:16px;width:0}.vertical-timeline--one-column-right .vertical-timeline-element-content:before{border-left:7px solid #fff;border-right:initial;left:100%}.vertical-timeline-element--no-children .vertical-timeline-element-content-arrow,.vertical-timeline-element--no-children .vertical-timeline-element-content:before{display:none}@media only screen and (min-width:768px){.vertical-timeline-element-content h2{font-size:20px;font-size:1.25rem}.vertical-timeline-element-content p{font-size:16px;font-size:1rem}.vertical-timeline-element-content .vertical-timeline-element-date{font-size:14px;font-size:.875rem}}@media only screen and (min-width:1170px){.vertical-timeline--two-columns .vertical-timeline-element-content{margin-left:0;padding:1.5em;width:44%}.vertical-timeline--two-columns .vertical-timeline-element-content-arrow{left:100%;top:24px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.vertical-timeline--two-columns .vertical-timeline-element-content .vertical-timeline-element-date{font-size:16px;font-size:1rem;left:124%;position:absolute;top:6px;width:100%}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content{float:right}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content-arrow,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content-arrow{left:auto;right:100%;top:24px;-webkit-transform:rotate(0);transform:rotate(0)}.vertical-timeline--one-column-right .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content-arrow,.vertical-timeline--one-column-right .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content-arrow{left:100%;right:auto;top:24px;-webkit-transform:rotate(0);transform:rotate(0)}.vertical-timeline--two-columns .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content .vertical-timeline-element-date,.vertical-timeline--two-columns .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content .vertical-timeline-element-date{left:auto;right:124%;text-align:right}}.vertical-timeline--animate .vertical-timeline-element-content.is-hidden{visibility:hidden}.vertical-timeline--animate .vertical-timeline-element-content.bounce-in{-webkit-animation:cd-bounce-2 .6s;animation:cd-bounce-2 .6s;visibility:visible}@media only screen and (min-width:1170px){.vertical-timeline--two-columns.vertical-timeline--animate .vertical-timeline-element.vertical-timeline-element--right .vertical-timeline-element-content.bounce-in,.vertical-timeline--two-columns.vertical-timeline--animate .vertical-timeline-element:nth-child(2n):not(.vertical-timeline-element--left) .vertical-timeline-element-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@media only screen and (max-width:1169px){.vertical-timeline--animate .vertical-timeline-element-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s;visibility:visible}}@-webkit-keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px)}to{-webkit-transform:translateX(0)}}@keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px);transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px);transform:translateX(20px)}to{-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px)}to{-webkit-transform:translateX(0)}}@keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px);transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px);transform:translateX(-20px)}to{-webkit-transform:translateX(0);transform:translateX(0)}}
/*# sourceMappingURL=main.a39fbb8b.css.map*/