@import url("https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;600;700&family=Space+Grotesk:wght@400;500;700&display=swap");:root,:root[data-theme=light]{--bg:#f5f7fb;--bg-soft:#eef2f9;--surface:rgba(255,255,255,0.84);--surface-strong:rgba(255,255,255,0.96);--text:#141821;--muted:#4e586d;--line:rgba(20,24,33,0.12);--accent:#1f5eff;--accent-soft:rgba(31,94,255,0.12);--shadow:0 12px 30px rgba(23,34,54,0.1);--header-offset:94px}:root[data-theme=dark]{--bg:#090d14;--bg-soft:#111827;--surface:rgba(16,21,33,0.72);--surface-strong:rgba(17,23,36,0.88);--text:#edf2ff;--muted:#a9b3c9;--line:rgba(237,242,255,0.14);--accent:#7aa2ff;--accent-soft:rgba(122,162,255,0.18);--shadow:0 16px 38px rgba(0,0,0,0.35)}*{box-sizing:border-box}body,html{margin:0;padding:0;scroll-behavior:smooth;scroll-padding-top:var(--header-offset);color:var(--text);font-family:Space Grotesk,sans-serif;background:radial-gradient(900px 500px at 10% 8%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 45%),radial-gradient(820px 430px at 92% 14%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 45%),linear-gradient(165deg,var(--bg),var(--bg-soft));transition:background-color .22s ease,color .22s ease,background .26s ease}.site{width:min(1120px,92%);margin:0 auto;padding-top:var(--header-offset);padding-bottom:42px}.nav-wrap{position:fixed;top:0;left:0;right:0;z-index:40;display:flex;justify-content:center;padding:12px 0;background:var(--surface-strong);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.nav{width:min(1120px,92%);border:1px solid var(--line);border-radius:999px;padding:12px 14px;background:var(--surface);box-shadow:var(--shadow);align-items:center;justify-content:space-between;gap:12px;transition:background-color .22s ease,border-color .22s ease}.links,.nav{display:flex}.links{flex-wrap:wrap;gap:14px}.links a{color:var(--text);text-decoration:none;opacity:.86;font-size:.94rem;font-weight:500}.links a:hover{color:var(--accent);opacity:1}.theme-toggle{border:1px solid var(--line);border-radius:999px;background:var(--surface-strong);color:var(--text);padding:8px 13px;font-size:.84rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:transform .16s ease,background-color .2s ease,border-color .2s ease}.theme-toggle svg{width:14px;height:14px}.theme-toggle:hover{transform:translateY(-1px)}main{display:grid;grid-gap:18px;gap:18px}section[id]{scroll-margin-top:var(--header-offset)}.panel{border:1px solid var(--line);border-radius:24px;background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:clamp(22px,4vw,40px);transition:background-color .22s ease,border-color .22s ease,box-shadow .22s ease}.panel>h2{max-width:none;text-align:left}.hero{position:relative;display:grid;grid-template-columns:1fr 1fr;grid-gap:28px;gap:28px;align-items:stretch;padding-top:clamp(34px,3.4vw,44px)}.hero-copy{display:flex;flex-direction:column;gap:20px;margin-top:clamp(8px,1vw,14px);height:100%;order:2}.hero-top{display:none}.hero-head{max-width:64ch}.hero-lower{margin-top:auto;width:min(100%,560px)}.eyebrow{margin:0 0 12px;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--accent)}h1,h2,h3{margin:0;line-height:1.1;font-family:Playfair Display,serif}h1{font-size:clamp(1.95rem,4.2vw,3.35rem);max-width:16ch}h2{font-size:clamp(1.6rem,3.3vw,2.7rem);max-width:23ch}.about-text,.intro{margin:0;color:var(--muted);font-size:1.08rem;line-height:1.6;max-width:68ch}.hero-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px}.hero-stats article{border:1px solid var(--line);border-radius:12px;background:var(--surface-strong);padding:11px 12px;display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.hero-stats article:is(:hover,:active,:focus-visible){transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 38%,var(--line));box-shadow:0 10px 20px color-mix(in srgb,#000 18%,transparent);background:color-mix(in srgb,var(--surface-strong) 82%,var(--accent-soft))}.hero-stats strong{font-family:Playfair Display,serif;font-size:1.4rem;color:var(--accent)}.hero-stats span{font-size:.86rem;color:var(--muted);font-weight:600}.about-actions{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.about-actions-right{display:none}.about-actions-left{display:grid;margin-top:auto}.profile-button{text-decoration:none;border-radius:10px;padding:12px 14px;font-size:.9rem;font-weight:700;border:1px solid transparent;text-align:center;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .18s ease,box-shadow .2s ease,border-color .2s ease}.button-icon{width:16px;height:16px}.profile-button-solid{background:linear-gradient(140deg,#4f8dff,#2d63e8);color:#fff;border-color:color-mix(in srgb,#7aa6ff 55%,transparent);box-shadow:0 10px 18px rgba(45,99,232,.3)}.profile-button-ghost{border-color:color-mix(in srgb,var(--line) 90%,rgba(255,255,255,.2));color:color-mix(in srgb,var(--text) 92%,#dbe8ff);background:linear-gradient(145deg,rgba(255,255,255,.04),rgba(118,153,235,.1));box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.profile-button-call{border-color:color-mix(in srgb,#47d1b0 60%,var(--line));color:#dffef5;background:linear-gradient(140deg,#168c7a,#0f6b79);box-shadow:0 10px 18px rgba(12,82,89,.28)}.profile-button:hover{transform:translateY(-2px)}.profile-button-ghost:hover{border-color:color-mix(in srgb,var(--accent) 44%,var(--line));background:linear-gradient(145deg,rgba(255,255,255,.08),rgba(118,153,235,.16))}.profile-button-call:hover{border-color:color-mix(in srgb,#70f0cd 65%,transparent);box-shadow:0 12px 22px rgba(12,82,89,.34)}.hero-photo-wrap{gap:12px;justify-content:flex-start;margin-top:clamp(8px,1vw,14px);height:100%;order:1}.hero-id,.hero-photo-wrap{display:flex;flex-direction:column}.hero-id{align-items:flex-start}.hero-id-left{display:none}.hero-id-right{display:flex}.hero-id h3{font-size:clamp(2rem,3vw,2.85rem)}.location-link{margin-top:10px;display:inline-flex;align-items:center;gap:7px;text-decoration:none;color:var(--accent);font-weight:600}.location-icon{width:15px;height:15px}.aspiring-line{margin:7px 0 0;color:var(--muted);font-size:.87rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.hero-photo{position:relative;width:100%;margin-top:6px;height:min(73vh,760px);border-radius:20px;overflow:hidden;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 70%,#000 30%);box-shadow:0 16px 34px rgba(0,0,0,.22);transition:transform .32s ease,box-shadow .32s ease,border-color .28s ease}.hero-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(112deg,transparent 35%,rgba(255,255,255,.2) 50%,transparent 65%);transform:translateX(-120%);transition:transform .64s ease;pointer-events:none}.hero-home{position:absolute;top:clamp(16px,2.2vw,24px);left:clamp(24px,3.2vw,36px);margin:0;z-index:2;padding:6px 9px}.hero-home,.section-chip{border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,var(--surface-strong) 88%,transparent)}.section-chip{display:inline-flex;width:-moz-fit-content;width:fit-content;padding:6px 10px;margin-bottom:14px}.profile-photo-image{width:100%;height:100%;object-fit:cover;object-position:center 12%;transform:scale(1);transition:transform .32s ease,filter .32s ease}.hero-photo:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--accent) 42%,var(--line));box-shadow:0 24px 48px rgba(0,0,0,.34)}.hero-photo:hover:after{transform:translateX(120%)}.hero-photo:hover .profile-photo-image{transform:scale(1.03);filter:saturate(1.06) contrast(1.04)}.about-section .about-text,.about-section h2{max-width:none}.about-card{margin-top:14px;display:grid;grid-gap:16px;gap:16px}.about-columns{margin-top:6px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.about-block{border:1px solid var(--line);border-radius:16px;background:linear-gradient(165deg,color-mix(in srgb,var(--surface-strong) 82%,transparent),color-mix(in srgb,var(--surface) 72%,transparent)),radial-gradient(280px 120px at 0 0,color-mix(in srgb,var(--accent-soft) 42%,transparent),transparent 65%);padding:16px;box-shadow:0 10px 24px color-mix(in srgb,#000 18%,transparent);transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}.about-block:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 44%,var(--line));box-shadow:0 16px 30px color-mix(in srgb,#000 24%,transparent)}.about-block-title{display:inline-flex;align-items:center;gap:10px}.about-block-title svg{width:22px;height:22px;color:var(--accent);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--accent) 26%,transparent));animation:aboutIconFloat 3.2s ease-in-out infinite}.about-block:hover .about-block-title svg{animation-duration:1.8s}.about-timeline{list-style:none;margin:14px 0 0;padding:0 0 0 18px;border-left:1px solid color-mix(in srgb,var(--line) 82%,transparent);display:grid;grid-gap:14px;gap:14px}.about-timeline li{position:relative;padding-left:12px}.about-timeline li:before{content:"";position:absolute;left:-24px;top:6px;width:10px;height:10px;border-radius:50%;border:2px solid var(--accent);background:var(--surface-strong);box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 30%,transparent);animation:aboutDotPulse 2.6s ease-in-out infinite}.about-timeline li:nth-child(2):before{animation-delay:.35s}.about-timeline li:nth-child(3):before{animation-delay:.7s}.about-timeline li:nth-child(4):before{animation-delay:1.05s}.about-item-head{margin:0;display:flex;justify-content:space-between;gap:10px}.about-item-head span:first-child{font-weight:700}.about-item-head span:last-child{color:var(--muted);font-size:.8rem;font-weight:700}.about-item-detail{margin:6px 0 0;color:var(--muted);font-size:.93rem;line-height:1.5}.skills-section h2{max-width:none;text-align:left}.skills-groups{margin-top:24px;display:grid;grid-gap:16px;gap:16px}.skills-group{border:1px solid var(--line);border-radius:16px;background:linear-gradient(165deg,color-mix(in srgb,var(--surface-strong) 86%,transparent),color-mix(in srgb,var(--surface) 74%,transparent)),radial-gradient(280px 130px at 0 0,color-mix(in srgb,var(--accent-soft) 36%,transparent),transparent 66%);padding:14px}.skills-group-title{margin:0 0 12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:color-mix(in srgb,var(--text) 86%,var(--accent))}.skills-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:14px;gap:14px}.skills-view-all-wrap{margin-top:14px;display:flex;justify-content:center}.skills-view-all{text-decoration:none;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--line));border-radius:999px;padding:10px 16px;color:var(--text);background:color-mix(in srgb,var(--surface-strong) 86%,transparent);font-weight:700;transition:transform .18s ease,border-color .18s ease,background-color .18s ease}.skills-view-all:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 52%,var(--line));background:color-mix(in srgb,var(--accent-soft) 42%,var(--surface-strong))}.skill-card{border:1px solid var(--line);border-radius:14px;background:linear-gradient(170deg,color-mix(in srgb,var(--surface-strong) 80%,transparent),color-mix(in srgb,var(--surface) 76%,transparent));padding:18px 16px;display:grid;grid-gap:12px;gap:12px;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease;animation:skillCardIn .42s ease both}.skill-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 38%,var(--line));box-shadow:0 12px 24px color-mix(in srgb,#000 20%,transparent)}.skill-title{margin:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center;font-size:clamp(1.1rem,1.6vw,1.35rem)}.skill-title svg{width:18px;height:18px;color:var(--accent);transition:transform .2s ease;animation:skillIconFloat 2.8s ease-in-out infinite}.skill-card:nth-child(2) .skill-title svg{animation-delay:.2s}.skill-card:nth-child(3) .skill-title svg{animation-delay:.4s}.skill-card:nth-child(4) .skill-title svg{animation-delay:.6s}.skill-card:nth-child(5) .skill-title svg{animation-delay:.8s}.skill-card:nth-child(6) .skill-title svg{animation-delay:1s}.skill-card:nth-child(7) .skill-title svg{animation-delay:1.2s}.skill-card:nth-child(8) .skill-title svg{animation-delay:1.4s}.skill-card:hover .skill-title svg{transform:translateY(-1px) scale(1.08)}.skill-card{border-top:3px solid var(--skill-tone,var(--accent))}.skill-card .skill-title svg{color:var(--skill-tone,var(--accent))}.skill-card:hover{border-color:color-mix(in srgb,var(--skill-tone,var(--accent)) 45%,var(--line));border-top-color:var(--skill-tone,var(--accent))}.gallery-section h2{max-width:none}.gallery-slider{--gallery-gap:28px;--gallery-pad-y:22px;--gallery-pad-x:24px;margin:14px auto 0;max-width:980px;padding:var(--gallery-pad-y) var(--gallery-pad-x);border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));border-radius:14px;overflow:hidden;background:linear-gradient(165deg,color-mix(in srgb,var(--surface-strong) 84%,transparent),color-mix(in srgb,var(--surface) 72%,transparent)),radial-gradient(280px 140px at 0 0,color-mix(in srgb,var(--accent-soft) 40%,transparent),transparent 70%);box-shadow:0 8px 20px color-mix(in srgb,#000 16%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent)}.gallery-track{display:flex;width:max-content;animation:galleryMarquee 36s linear infinite}.gallery-group{display:flex;flex-shrink:0;gap:var(--gallery-gap);padding-right:var(--gallery-gap)}.gallery-slide{width:clamp(240px,26vw,336px);min-width:clamp(240px,26vw,336px);height:auto;aspect-ratio:4/5;margin:0;position:relative;background:color-mix(in srgb,var(--bg-soft) 78%,#000 22%);border-radius:10px;overflow:hidden;border:1px solid color-mix(in srgb,var(--line) 90%,transparent);padding:0}.gallery-slide img{width:100%;height:100%;object-fit:cover;display:block;border-radius:0;transform:scale(1);filter:saturate(1.04) contrast(1.01)}@keyframes galleryMarquee{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.certificate-cards{margin-top:14px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.certificate-card{border:1px solid var(--line);border-radius:18px;background:linear-gradient(165deg,color-mix(in srgb,var(--surface-strong) 88%,transparent),color-mix(in srgb,var(--surface) 72%,transparent)),radial-gradient(260px 120px at 8% 0,color-mix(in srgb,var(--accent-soft) 44%,transparent),transparent 66%);padding:18px 16px 20px;display:grid;grid-gap:10px;gap:10px;justify-items:center;align-content:start;text-align:center;box-shadow:0 10px 24px color-mix(in srgb,#000 20%,transparent);transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease,background-color .22s ease}.certificate-card:hover{transform:translateY(-7px);border-color:color-mix(in srgb,var(--accent) 44%,var(--line));box-shadow:0 18px 34px color-mix(in srgb,#000 28%,transparent)}.certificate-frame{position:relative;margin-top:2px;border-radius:14px;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));background:linear-gradient(160deg,color-mix(in srgb,var(--surface-strong) 84%,transparent),color-mix(in srgb,var(--surface) 72%,transparent)),radial-gradient(260px 130px at 10% 0,color-mix(in srgb,var(--accent-soft) 38%,transparent),transparent 68%);overflow:hidden;min-height:230px;aspect-ratio:4/3;width:100%;display:grid;place-items:center;padding:8px;box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 16%,transparent),0 10px 22px color-mix(in srgb,#000 16%,transparent)}.certificate-frame:before{content:"";position:absolute;inset:8px;border-radius:10px;border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));pointer-events:none}.certificate-frame:after{content:"";position:absolute;top:0;left:-35%;width:44%;height:100%;background:linear-gradient(100deg,transparent,color-mix(in srgb,#fff 20%,transparent),transparent);pointer-events:none;opacity:.5}.certificate-frame img{display:block;width:100%;height:100%;object-fit:contain;object-position:center;transform:translateY(var(--certificate-shift-y,0)) scale(var(--certificate-scale,1));transform-origin:center;border-radius:8px;transition:transform .22s ease}.certificate-card:hover .certificate-frame img{transform:translateY(calc(var(--certificate-shift-y, 0px) - 2px)) scale(var(--certificate-scale,1))}.certificate-frame-placeholder{display:grid;place-items:center;color:var(--muted);font-size:.86rem;font-weight:600}.certificate-card h3{margin-top:4px;font-size:1.28rem;max-width:16ch;min-height:2.2em;text-wrap:balance;justify-self:start;text-align:left}.certificate-card p{margin:5px 0 0;color:var(--muted);text-align:left;justify-self:start}.certificate-year{margin-top:3px;font-weight:700}.project-status{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;background:rgba(245,158,11,.14);color:#b45309;font-size:.74rem;font-weight:700}:root[data-theme=dark] .project-status{color:#fbbf24}.project-status:before{content:"";width:7px;height:7px;border-radius:50%;background:#f59e0b}.currently-taking{margin-top:14px;padding:14px 16px;border:1px dashed var(--line);border-radius:18px;background:var(--surface)}.currently-taking-title{margin:0 0 10px;color:var(--muted);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.currently-taking ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.currently-taking li{display:flex;align-items:center;gap:10px;min-width:0}.currently-taking-dot{flex:none;width:9px;height:9px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.18)}.currently-taking-name{display:grid;min-width:0}.currently-taking-name strong{font-size:.95rem}.currently-taking-name span{overflow:hidden;color:var(--muted);font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.currently-taking-badge{flex:none;margin-left:auto;padding:3px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.74rem;font-weight:700;white-space:nowrap}@media (max-width:640px){.currently-taking ul{grid-template-columns:1fr}}.certificate-card a{margin-top:8px;color:var(--accent)}.certificate-card a,.certificate-link-disabled{display:inline-block;text-align:left;justify-self:start}.certificate-link-disabled{margin-top:14px;color:var(--muted);font-weight:600}.certificates-view-all-wrap{margin-top:14px;display:flex;justify-content:center}.certificates-view-all{text-decoration:none;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--line));border-radius:999px;padding:10px 16px;color:var(--text);background:color-mix(in srgb,var(--surface-strong) 86%,transparent);font-weight:700;transition:transform .18s ease,border-color .18s ease,background-color .18s ease}.certificates-view-all:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 52%,var(--line));background:color-mix(in srgb,var(--accent-soft) 42%,var(--surface-strong))}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-head>div{min-width:0}.section-see-all{flex-shrink:0;margin-top:6px;text-decoration:none;white-space:nowrap;color:var(--accent);font-weight:700;font-size:.95rem}.section-see-all:after{content:" →"}.section-see-all:hover{text-decoration:underline;text-underline-offset:4px}@media (max-width:640px){.section-see-all{font-size:.88rem}}.contact-section{position:relative;overflow:hidden;background:radial-gradient(440px 220px at 12% 8%,color-mix(in srgb,var(--accent-soft) 72%,transparent),transparent 72%),radial-gradient(420px 240px at 92% 10%,color-mix(in srgb,var(--accent) 13%,transparent),transparent 72%),linear-gradient(160deg,color-mix(in srgb,var(--surface-strong) 88%,transparent),color-mix(in srgb,var(--surface) 70%,transparent))}.contact-section:after,.contact-section:before{content:"";position:absolute;inset:auto;pointer-events:none;opacity:.45}.contact-section:before{top:34px;left:12%;width:180px;height:180px;border-radius:999px;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 24%,transparent),transparent 72%);filter:blur(20px)}.contact-section:after{right:9%;top:28px;width:220px;height:220px;border-radius:999px;background:radial-gradient(circle,color-mix(in srgb,#8f6dff 18%,transparent),transparent 70%);filter:blur(26px)}.contact-header{position:relative;z-index:1;text-align:left;display:grid;grid-gap:14px;gap:14px;justify-items:start}.contact-header .eyebrow{margin-bottom:0;letter-spacing:.14em}.contact-header h2{max-width:none}.contact-grid{position:relative;z-index:1;margin-top:32px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.85fr);grid-gap:24px;gap:24px}.contact-connect-card,.contact-form-card{border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));border-radius:26px;background:linear-gradient(165deg,color-mix(in srgb,var(--surface-strong) 86%,transparent),color-mix(in srgb,var(--surface) 70%,transparent));box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 10%,transparent),0 20px 40px color-mix(in srgb,#000 24%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.contact-form-card{padding:22px;display:grid;grid-gap:16px;gap:16px}.contact-field{display:grid;grid-gap:10px;gap:10px}.contact-connect-card h3,.contact-field span{font-family:Space Grotesk,sans-serif;font-size:.98rem;font-weight:700;letter-spacing:.01em}.contact-field input,.contact-field textarea{width:100%;border:1px solid color-mix(in srgb,var(--line) 86%,transparent);border-radius:16px;background:color-mix(in srgb,var(--bg-soft) 40%,var(--surface-strong));color:var(--text);padding:14px 16px;outline:none;font:inherit;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.contact-field input::placeholder,.contact-field textarea::placeholder{color:color-mix(in srgb,var(--muted) 76%,transparent)}.contact-field textarea{resize:vertical;min-height:140px}.contact-field input:focus,.contact-field textarea:focus{border-color:color-mix(in srgb,var(--accent) 48%,var(--line));box-shadow:0 0 0 4px color-mix(in srgb,var(--accent-soft) 38%,transparent)}.contact-submit{margin-top:6px;border:1px solid color-mix(in srgb,var(--accent) 44%,transparent);border-radius:18px;padding:15px 18px;font:inherit;font-size:1rem;font-weight:700;color:#fff;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 80%,#67b7ff),color-mix(in srgb,var(--accent) 65%,#163b9d));box-shadow:0 18px 30px color-mix(in srgb,var(--accent) 24%,transparent);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}.contact-submit:hover{transform:translateY(-2px);box-shadow:0 24px 36px color-mix(in srgb,var(--accent) 28%,transparent);filter:saturate(1.06)}.contact-connect-card{padding:24px;display:grid;grid-gap:22px;gap:22px;align-content:start}.contact-connect-card h3{margin:0;font-size:clamp(1.5rem,2.4vw,2rem);font-family:Playfair Display,serif}.contact-social-list{display:grid;grid-gap:12px;gap:12px;margin-top:4px}.contact-social{width:58px;height:58px;border-radius:18px;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));background:color-mix(in srgb,var(--surface-strong) 88%,transparent);color:var(--text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none;box-shadow:0 12px 22px color-mix(in srgb,#000 12%,transparent);transition:transform .18s ease,border-color .18s ease,color .18s ease,background-color .18s ease}.contact-social-wide{width:100%;height:auto;min-height:60px;padding:0 18px;justify-content:flex-start;gap:12px;font-weight:700}.contact-social:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 54%,var(--line));background:color-mix(in srgb,var(--accent-soft) 34%,var(--surface-strong));color:var(--accent)}.contact-social-wide span{font-size:.96rem}.contact-social-icon{width:24px;height:24px}:root[data-theme=light] .theme-toggle{background:#ffffff;border-color:rgba(20,24,33,.16)}:root[data-theme=light] .panel{background:linear-gradient(160deg,rgba(255,255,255,.92),rgba(250,252,255,.86))}:root[data-theme=light] .profile-button-ghost{background:linear-gradient(145deg,rgba(255,255,255,.88),rgba(235,243,255,.78));border-color:rgba(98,126,186,.24);color:#1c2c4c}:root[data-theme=light] .profile-button-call{color:#ffffff;border-color:rgba(10,102,112,.5);box-shadow:0 10px 18px rgba(10,102,112,.24)}@keyframes skillCardIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes skillIconFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes aboutIconFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes aboutDotPulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 20%,transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 0%,transparent)}}.footer{margin-top:20px;text-align:center;color:var(--muted);font-size:.92rem}.chatbot-shell{position:fixed;right:18px;bottom:18px;z-index:70;display:flex;flex-direction:column;align-items:flex-end;gap:12px}.chatbot-chip,.chatbot-close,.chatbot-send,.chatbot-toggle{font:inherit}.chatbot-toggle{border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));border-radius:999px;padding:12px 16px;color:#fff;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 80%,#67b7ff),color-mix(in srgb,var(--accent) 65%,#163b9d));box-shadow:0 14px 28px color-mix(in srgb,#000 26%,transparent);cursor:pointer;font-weight:700;transition:transform .18s ease,box-shadow .18s ease}.chatbot-chip:hover,.chatbot-close:hover,.chatbot-send:hover,.chatbot-toggle:hover{transform:translateY(-1px)}.chatbot-panel{width:min(380px,calc(100vw - 24px));min-width:0;height:min(76vh,640px);max-height:min(76vh,640px);display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:22px;border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));overflow:hidden;background:radial-gradient(240px 160px at 100% 0,color-mix(in srgb,var(--accent-soft) 65%,transparent),transparent 72%),linear-gradient(180deg,color-mix(in srgb,var(--surface-strong) 96%,transparent),color-mix(in srgb,var(--surface) 82%,transparent));box-shadow:0 22px 48px color-mix(in srgb,#000 28%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.chatbot-header{justify-content:space-between}.chatbot-header,.chatbot-profile{display:flex;align-items:center;gap:12px}.chatbot-profile{min-width:0}.chatbot-avatar{width:46px;height:46px;flex:0 0 46px;border-radius:50%;object-fit:cover;object-position:center 14%;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));box-shadow:0 10px 18px color-mix(in srgb,#000 18%,transparent)}.chatbot-header h2{margin:0;max-width:none;font-size:1.18rem;line-height:1.12}.chatbot-close{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,var(--surface-strong) 90%,transparent);color:var(--text);cursor:pointer}.chatbot-close span{line-height:1;font-size:1rem;text-transform:uppercase}.chatbot-intro{margin:0;color:var(--muted);line-height:1.5;font-size:.95rem}.chatbot-suggestions{display:flex;flex-wrap:wrap;gap:8px}.chatbot-chip{border:1px solid color-mix(in srgb,var(--line) 86%,transparent);border-radius:999px;padding:7px 11px;background:color-mix(in srgb,var(--surface-strong) 92%,transparent);color:var(--text);cursor:pointer;font-size:.84rem;transition:transform .16s ease,border-color .16s ease,background-color .16s ease}.chatbot-chip:hover{border-color:color-mix(in srgb,var(--accent) 42%,var(--line));background:color-mix(in srgb,var(--accent-soft) 28%,var(--surface-strong))}.chatbot-chip:disabled,.chatbot-send:disabled{cursor:not-allowed;opacity:.6;transform:none}.chatbot-messages{flex:1 1 auto;min-height:0;max-height:none;display:flex;flex-direction:column;gap:10px;overflow-y:auto;overflow-x:hidden;padding-right:4px}.chatbot-bubble{max-width:88%;padding:12px 13px;border-radius:16px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;font-size:.94rem}.chatbot-bubble.assistant{align-self:flex-start;background:color-mix(in srgb,var(--surface-strong) 94%,transparent);border:1px solid color-mix(in srgb,var(--line) 88%,transparent);color:var(--text)}.chatbot-bubble.user{align-self:flex-end;background:color-mix(in srgb,var(--accent) 16%,var(--surface-strong));border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));color:var(--text)}.chatbot-loading{display:inline-flex;align-items:center;gap:6px}.chatbot-loading span{width:8px;height:8px;border-radius:50%;background:color-mix(in srgb,var(--accent) 70%,#9dc1ff);animation:chatbotPulse 1s ease-in-out infinite}.chatbot-loading span:nth-child(2){animation-delay:.16s}.chatbot-loading span:nth-child(3){animation-delay:.32s}.chatbot-form{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px;gap:10px;flex:0 0 auto;margin-top:auto;width:100%;min-width:0;align-items:stretch;overflow:hidden}.chatbot-input{width:100%;min-width:0;border-radius:14px;border:1px solid color-mix(in srgb,var(--line) 88%,transparent);background:color-mix(in srgb,var(--surface-strong) 96%,transparent);color:var(--text);padding:12px 14px;outline:none}.chatbot-input:focus{border-color:color-mix(in srgb,var(--accent) 44%,var(--line));box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-soft) 38%,transparent)}.chatbot-send{min-width:78px;white-space:nowrap;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--line));border-radius:14px;padding:0 16px;background:color-mix(in srgb,var(--accent) 18%,var(--surface-strong));color:var(--text);cursor:pointer;font-weight:700;transition:transform .16s ease,border-color .16s ease,background-color .16s ease}.chatbot-shell.is-open .chatbot-toggle{display:none}@keyframes chatbotPulse{0%,to{transform:translateY(0);opacity:.55}50%{transform:translateY(-2px);opacity:1}}@media (max-width:980px){.certificate-cards,.hero{grid-template-columns:1fr}.hero-copy{order:1}.hero-photo-wrap{max-width:460px;order:2}.hero-photo{height:min(72vh,680px)}.about-actions,.about-columns,.hero-stats{grid-template-columns:1fr}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){:root,:root[data-theme=dark],:root[data-theme=light]{--header-offset:102px}.site{width:min(1120px,94%)}.nav{border-radius:18px;align-items:center;flex-direction:row;gap:8px}.links{flex:1 1 auto;width:auto;flex-wrap:nowrap;overflow-x:auto;gap:12px;padding-bottom:0;scrollbar-width:none}.links::-webkit-scrollbar{display:none}.links a{font-size:.82rem;white-space:nowrap}.theme-toggle{margin-left:auto;padding:7px 9px;font-size:.76rem;min-width:34px;justify-content:center}.theme-toggle-label{display:none}.panel{padding:20px 18px}h1{font-size:clamp(1.7rem,8.2vw,2.2rem)}h2{font-size:clamp(1.35rem,6.2vw,1.8rem)}.about-text,.intro{font-size:.98rem}.skills-grid{grid-template-columns:1fr}.hero-photo-wrap{margin-top:20px}.hero-photo{height:min(58vh,460px)}.hero-copy{order:2}.hero-photo-wrap{order:1}.hero-id-left{display:flex}.hero-id-right{display:none}.hero-copy>.hero-id{order:1}.hero-copy>.about-actions-right{order:2;display:grid}.hero-copy>.hero-head{order:3}.hero-copy>.intro{order:4}.hero-copy>.hero-lower{order:5;margin-top:0}.about-actions-left{display:none}.about-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.profile-button{padding:9px 8px;font-size:.78rem;gap:6px}.button-icon{width:14px;height:14px}.hero-stats strong{font-size:1.22rem}.hero-stats span{font-size:.8rem}.certificate-frame{min-height:180px}.certificate-card h3{min-height:auto}.about-item-head{flex-direction:column;align-items:flex-start;gap:4px}.gallery-slider{max-width:100%}.gallery-slide{width:176px;min-width:176px;height:auto}.chatbot-shell{left:12px;right:12px;bottom:12px;align-items:stretch}.chatbot-panel{width:100%;height:min(72vh,560px);max-height:min(72vh,560px)}.chatbot-toggle{width:100%;justify-content:center}}@media (max-width:640px){:root,:root[data-theme=dark],:root[data-theme=light]{--header-offset:112px}.nav-wrap{padding:10px 0}.nav{width:min(1120px,95%);padding:10px 12px}.links a{font-size:.79rem}.theme-toggle{font-size:.74rem;padding:6px 8px}.about-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.profile-button{font-size:.72rem;padding:8px 6px;gap:4px}.button-icon{width:12px;height:12px}.certificate-cards{gap:10px}.contact-grid{grid-template-columns:1fr;gap:18px}.gallery-slider{--gallery-gap:12px;--gallery-pad-y:10px;--gallery-pad-x:10px}.gallery-slide{width:168px;min-width:168px;height:auto}}@media (max-width:480px){:root,:root[data-theme=dark],:root[data-theme=light]{--header-offset:118px}body,html{overflow-x:hidden;overflow-y:auto}.site{width:min(1120px,96%);padding-top:var(--header-offset);padding-bottom:14px}.site,main{height:auto;overflow:visible}main{display:grid;grid-gap:14px;gap:14px}main>section.panel{min-width:0;height:auto;overflow:visible}.panel{border-radius:18px;padding:14px 12px}.hero{gap:14px;padding-top:26px}.hero-photo-wrap{gap:10px}.hero-photo{height:min(36vh,250px);border-radius:16px}.profile-photo-image{object-fit:cover;object-position:center 18%}.hero-home{left:14px;top:12px}.hero-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.hero-stats article{padding:8px}.hero-stats strong{font-size:1.05rem}.hero-stats span{font-size:.72rem}.profile-button{font-size:.68rem;padding:7px 5px;gap:4px}.about-card{gap:10px}.about-text{font-size:.9rem;line-height:1.45}.about-item-detail{font-size:.82rem}.skills-groups{gap:10px;margin-top:14px}.skills-group{padding:10px}.skill-card{padding:14px 12px;gap:8px}.certificate-cards{margin-top:10px}.certificate-frame{min-height:150px}.certificate-card{padding:14px 12px 16px}.certificate-card h3{font-size:1.08rem}.contact-connect-card,.contact-form-card{padding:16px;border-radius:20px}.contact-submit{padding:13px 15px}.contact-social{width:52px;height:52px;border-radius:16px}.contact-social-wide{min-height:54px}.gallery-slider{--gallery-gap:10px;--gallery-pad-y:8px;--gallery-pad-x:8px}.gallery-slide{width:132px;min-width:132px;height:auto}.chatbot-form{grid-template-columns:minmax(0,1fr) 74px;gap:8px}.chatbot-input{padding:10px 12px}.chatbot-send{min-width:74px;padding:0 10px}.chatbot-messages{min-height:160px}.contact-header{gap:10px}.contact-grid{margin-top:20px;gap:14px}.contact-connect-card,.contact-form-card{padding:14px;border-radius:18px}.contact-field{gap:8px}.contact-field input,.contact-field textarea{border-radius:14px;padding:12px 13px}.contact-field textarea{min-height:120px}.contact-meta-link{border-radius:14px;padding:12px 13px}.contact-social{width:48px;height:48px}.contact-social-wide{width:100%;min-height:50px;padding:0 14px}.footer{font-size:.84rem}}@media (max-width:360px){:root,:root[data-theme=dark],:root[data-theme=light]{--header-offset:122px}.links a{font-size:.8rem}.panel{padding:14px 12px}.hero-photo{height:min(46vh,320px)}.gallery-slide{width:126px;min-width:126px;height:auto}}@media (prefers-reduced-motion:reduce){.about-block-title svg,.about-timeline li:before,.skill-card,.skill-title svg{animation:none}.gallery-track{transition:none;animation:none;width:max-content}.gallery-slider{overflow-x:auto;-webkit-mask-image:none;mask-image:none}.gallery-group[aria-hidden=true]{display:none}}.projects h2{max-width:none;line-height:1.12}.projects-intro{margin:12px 0 0;color:var(--muted);font-size:1.02rem;line-height:1.6;max-width:68ch}.project-list{margin-top:28px;display:grid;grid-gap:20px;gap:20px}.project-row{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);grid-gap:clamp(20px,3.4vw,44px);gap:clamp(20px,3.4vw,44px);align-items:center;padding:clamp(16px,2.4vw,28px);border:1px solid var(--line);border-radius:20px;background:var(--surface-strong);transition:border-color .2s ease,box-shadow .2s ease}.project-row:hover{border-color:color-mix(in srgb,var(--accent) 34%,var(--line));box-shadow:0 18px 36px color-mix(in srgb,#000 16%,transparent)}.project-row:nth-child(2n) .device-preview{order:2}:root[data-theme=light] .project-row{background:rgba(255,255,255,.9)}.device-preview{display:grid;grid-gap:12px;gap:12px;justify-items:center;min-width:0}.device-stage{position:relative;width:100%;aspect-ratio:16/11;display:grid;place-items:center;padding:clamp(12px,2vw,22px);border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:16px;background:radial-gradient(90% 80% at 50% 0,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%),linear-gradient(170deg,color-mix(in srgb,var(--bg-soft) 80%,var(--accent-soft)),var(--bg));cursor:zoom-in;overflow:hidden;font:inherit;color:inherit}.device-stage:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.browser-frame{width:100%;height:100%;display:flex;flex-direction:column;border-radius:10px;overflow:hidden;border:1px solid color-mix(in srgb,#fff 10%,var(--line));background:#0f1523;box-shadow:0 18px 40px color-mix(in srgb,#020617 32%,transparent);transition:transform .26s ease}.browser-bar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:8px 12px;background:#1a2233;border-bottom:1px solid rgba(255,255,255,.06)}.browser-dots{display:inline-flex;gap:6px}.browser-dots i{width:9px;height:9px;border-radius:50%;background:#ff5f57}.browser-dots i:nth-child(2){background:#febc2e}.browser-dots i:nth-child(3){background:#28c840}.browser-url{max-width:60%;margin:0 auto;padding:3px 10px;border-radius:999px;background:rgba(255,255,255,.07);color:#b8c3d9;font-size:.72rem;text-align:center;white-space:nowrap;text-overflow:ellipsis}.browser-screen,.browser-url{flex:1 1 auto;overflow:hidden}.browser-screen{min-height:0;background:#fff}.browser-screen img{display:block;width:100%;height:auto}.phone-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.phone-frame{top:clamp(12px,2vw,22px);bottom:clamp(12px,2vw,22px);translate:-50% 0;display:block;aspect-ratio:9/19;padding:7px;border-radius:30px;background:linear-gradient(160deg,#273043,#0b0f17);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 20px 40px color-mix(in srgb,#020617 36%,transparent);transition:transform .26s ease}.phone-frame,.phone-notch{position:absolute;left:50%}.phone-notch{top:13px;z-index:1;width:30%;height:12px;border-radius:999px;background:#0b0f17;transform:translateX(-50%)}.phone-screen{display:block;width:100%;height:100%;border-radius:23px;overflow:hidden;background:#fff}.device-stage:hover .browser-frame,.device-stage:hover .phone-frame{transform:translateY(-3px)}.device-expand{position:absolute;right:12px;bottom:12px;display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;background:rgba(8,12,20,.78);color:#fff;font-size:.76rem;font-weight:700;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transform:translateY(4px);transition:opacity .18s ease,transform .18s ease}.device-expand svg{width:14px;height:14px}.device-stage:focus-visible .device-expand,.device-stage:hover .device-expand{opacity:1;transform:none}@media (hover:none){.device-expand{opacity:1;transform:none}}.gallery-filters,.viewport-switch{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--surface-strong) 90%,transparent)}.gallery-filters button,.viewport-switch button{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:0;border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:.84rem;font-weight:700;cursor:pointer;transition:background-color .16s ease,color .16s ease}.viewport-switch svg{width:16px;height:16px}.gallery-filters button:hover,.viewport-switch button:hover{color:var(--text)}.gallery-filters button[aria-pressed=true],.viewport-switch button[aria-pressed=true]{background:var(--accent);color:#fff}:root[data-theme=dark] .gallery-filters button[aria-pressed=true],:root[data-theme=dark] .viewport-switch button[aria-pressed=true]{color:#0b1020}.gallery-filters button:focus-visible,.viewport-switch button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-info{display:flex;flex-direction:column;gap:14px;min-width:0}.project-meta{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;color:var(--accent);font-size:.76rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.project-index{margin-right:4px;font-family:Playfair Display,serif;font-size:1.1rem;letter-spacing:0;color:color-mix(in srgb,var(--text) 70%,var(--accent))}.project-info h3{margin:0;font-size:clamp(1.6rem,2.6vw,2.1rem);line-height:1.1}.project-info h3 a{color:inherit;text-decoration:none}.project-info h3 a:hover{color:var(--accent)}.project-description{margin:0;color:var(--muted);line-height:1.65;font-size:1rem}.project-highlights{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.project-highlights li{position:relative;padding-left:26px;color:color-mix(in srgb,var(--text) 88%,var(--muted));font-size:.94rem;line-height:1.5}.case-checklist li:before,.project-highlights li:before{content:"";position:absolute;left:0;top:.18em;width:17px;height:17px;border-radius:50%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") 50% /11px no-repeat,var(--accent)}.project-stack{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.project-stack-chip{display:inline-flex;align-items:center;min-height:30px;padding:0 11px;border-radius:999px;border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));background:color-mix(in srgb,var(--accent-soft) 45%,transparent);color:color-mix(in srgb,var(--text) 90%,var(--accent));font-size:.8rem;font-weight:600}.project-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}.project-button{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--surface-strong) 90%,transparent);color:var(--text);font-size:.9rem;font-weight:700;text-decoration:none;transition:transform .18s ease,border-color .18s ease,background-color .18s ease}.project-button svg{width:16px;height:16px}.project-button:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accent-soft) 50%,var(--surface-strong))}.project-button-primary{border-color:color-mix(in srgb,#7aa6ff 55%,transparent);background:linear-gradient(140deg,#4f8dff,#2d63e8);color:#fff;box-shadow:0 10px 18px rgba(45,99,232,.28)}.project-button-primary:hover{background:linear-gradient(140deg,#5d97ff,#2f68f0)}.project-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}html.lightbox-open{overflow:hidden}.lightbox{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(4,7,13,.9);color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.lightbox::-webkit-backdrop{background:transparent}.lightbox::backdrop{background:transparent}.lightbox[open]{animation:lightboxIn .18s ease}.lightbox-stage{position:relative;width:100%;height:100%;display:grid;place-items:center;padding:60px 84px}.lightbox-figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:14px;max-width:100%}.lightbox-figure img{display:block;width:auto;height:auto;max-width:min(1280px,100%);max-height:calc(100dvh - 160px);object-fit:contain;border-radius:12px;background:#fff;box-shadow:0 24px 60px rgba(0,0,0,.5);animation:lightboxImageIn .22s ease}.lightbox-figure-mobile img{border-radius:26px;border:6px solid #1b2130}.lightbox-figure figcaption{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 16px;color:#d3dbeb;font-size:.94rem;text-align:center}.lightbox-count{color:#8f9ab2;font-weight:700;letter-spacing:.06em}.lightbox-close,.lightbox-nav{position:absolute;display:inline-grid;place-items:center;width:48px;height:48px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;cursor:pointer;transition:background-color .16s ease}.lightbox-close svg,.lightbox-nav svg{width:22px;height:22px}.lightbox-close:hover,.lightbox-nav:hover{background:rgba(255,255,255,.18)}.lightbox-close:focus-visible,.lightbox-nav:focus-visible{outline:2px solid #9dbcff;outline-offset:2px}.lightbox-nav{top:50%;transform:translateY(-50%)}.lightbox-nav-prev{left:20px}.lightbox-nav-next{right:20px}.lightbox-close{top:16px;right:20px}@keyframes lightboxIn{0%{opacity:0}to{opacity:1}}@keyframes lightboxImageIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}.case-nav{justify-content:space-between}.case-back{display:inline-flex;align-items:center;gap:8px;padding:4px 6px;color:var(--text);font-weight:700;text-decoration:none}.case-back svg{width:18px;height:18px}.case-back:hover{color:var(--accent)}.case-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-gap:clamp(24px,4vw,48px);gap:clamp(24px,4vw,48px);align-items:center}.case-hero-copy{display:flex;flex-direction:column;gap:18px;min-width:0}.case-hero-copy .section-chip{margin-bottom:0}.case-hero h1{max-width:none;font-size:clamp(2.2rem,5vw,3.6rem)}.case-facts{margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px}.case-facts div:first-child{grid-column:1/-1}.case-facts div{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface-strong) 90%,transparent)}.case-facts dt{color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.case-facts dd{margin:4px 0 0;font-weight:700;font-size:.92rem}.case-link-note{margin:-6px 0 0;color:var(--muted);font-size:.86rem}.case-layout{grid-template-columns:minmax(0,290px) minmax(0,1fr);align-items:start}.case-aside,.case-layout{display:grid;grid-gap:18px;gap:18px}.case-aside{position:-webkit-sticky;position:sticky;top:calc(var(--header-offset) + 8px)}.case-aside-card{padding:22px}.case-aside-card h2{max-width:none;font-size:1.25rem;margin-bottom:12px}.case-stack{margin:0;display:grid}.case-stack div{padding:10px 0;border-top:1px solid var(--line)}.case-stack div:first-child{border-top:0;padding-top:0}.case-stack dt{font-weight:700;font-size:.94rem}.case-stack dd{margin:3px 0 0;color:var(--muted);font-size:.86rem;line-height:1.5}.case-toc ol{list-style:none;margin:0;padding:0;display:grid;grid-gap:2px;gap:2px;counter-reset:toc}.case-toc li{counter-increment:toc}.case-toc a{display:flex;gap:10px;padding:6px 8px;border-radius:8px;color:var(--muted);font-size:.9rem;font-weight:600;text-decoration:none}.case-toc a:before{content:counter(toc,decimal-leading-zero);color:color-mix(in srgb,var(--accent) 70%,var(--muted));font-size:.78rem;padding-top:1px}.case-toc a:hover{color:var(--text);background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}.case-body{display:grid;grid-gap:clamp(30px,4vw,44px);gap:clamp(30px,4vw,44px)}.case-section{scroll-margin-top:calc(var(--header-offset) + 12px)}.case-section h2{max-width:none;font-size:clamp(1.4rem,2.4vw,1.85rem);margin-bottom:14px}.case-section>p{margin:0;color:var(--muted);font-size:1.03rem;line-height:1.75;max-width:72ch}.case-section h3{font-family:Space Grotesk,sans-serif;font-size:1.04rem;font-weight:700;line-height:1.35}.case-checklist,.case-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px}.case-checklist li,.case-list li{position:relative;padding-left:28px;color:color-mix(in srgb,var(--text) 86%,var(--muted));line-height:1.6}.case-list li:before{content:"";position:absolute;left:6px;top:.62em;width:8px;height:8px;border-radius:50%;background:var(--accent)}.case-feature-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.case-feature-grid li{padding:16px;border:1px solid var(--line);border-radius:14px;background:radial-gradient(220px 100px at 0 0,color-mix(in srgb,var(--accent-soft) 40%,transparent),transparent 70%),color-mix(in srgb,var(--surface-strong) 90%,transparent)}.case-feature-grid p{margin:6px 0 0;color:var(--muted);font-size:.93rem;line-height:1.55}.case-challenges{list-style:none;margin:0;padding:0;display:grid;grid-gap:14px;gap:14px;counter-reset:challenge}.case-challenges li{counter-increment:challenge;padding:18px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--surface-strong) 90%,transparent)}.case-challenges h3:before{content:counter(challenge,decimal-leading-zero);margin-right:10px;color:var(--accent);font-family:Playfair Display,serif}.case-challenge-columns{margin-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.case-challenge-columns p{margin:0;color:var(--muted);font-size:.94rem;line-height:1.6}.case-challenge-columns .case-label{margin-bottom:4px;color:#d0584f;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.case-challenge-columns .case-label-solution{color:#138a6b}:root[data-theme=dark] .case-challenge-columns .case-label{color:#ff8f86}:root[data-theme=dark] .case-challenge-columns .case-label-solution{color:#52d6ae}.case-screens h2{max-width:none}.project-gallery{margin-top:18px;display:grid;grid-gap:18px;gap:18px}.gallery-filters{justify-self:start;flex-wrap:nowrap;max-width:100%;overflow-x:auto;scrollbar-width:none}.gallery-filters button{flex:0 0 auto}.gallery-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:18px;gap:18px}.gallery-thumb{width:100%;display:grid;grid-gap:8px;gap:8px;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:zoom-in}.gallery-thumb-frame{display:block;aspect-ratio:4/3;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:linear-gradient(170deg,color-mix(in srgb,var(--bg-soft) 80%,var(--accent-soft)),var(--bg));transition:border-color .18s ease,transform .18s ease}.gallery-thumb-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.gallery-thumb-mobile .gallery-thumb-frame{padding:10px 0 0}.gallery-thumb-mobile .gallery-thumb-frame img{width:auto;height:calc(100% + 40px);margin:0 auto;border-radius:16px 16px 0 0;border:4px solid #1b2130;border-bottom:0}.gallery-thumb:focus-visible .gallery-thumb-frame,.gallery-thumb:hover .gallery-thumb-frame{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));transform:translateY(-2px)}.gallery-thumb:focus-visible{outline:none}.gallery-thumb-caption{color:var(--muted);font-size:.88rem;line-height:1.45}.case-pager{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.case-pager-link{display:grid;grid-gap:6px;gap:6px;padding:20px 24px;color:var(--text);text-decoration:none;transition:border-color .18s ease,transform .18s ease}.case-pager-link:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));transform:translateY(-2px)}.case-pager-next{text-align:right}.case-pager-label{color:var(--muted);font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.case-pager-title{display:inline-flex;align-items:center;gap:8px;font-family:Playfair Display,serif;font-size:1.35rem;font-weight:700}.case-pager-next .case-pager-title{justify-content:flex-end}.case-pager-title svg{width:20px;height:20px;color:var(--accent)}@media (max-width:980px){.project-row{grid-template-columns:1fr}.project-row:nth-child(2n) .device-preview{order:0}.case-hero,.case-layout{grid-template-columns:1fr}.case-aside{position:static}.case-toc{display:none}}@media (max-width:640px){.project-list{margin-top:18px;gap:14px}.project-row{padding:12px;border-radius:16px}.device-stage{padding:10px;aspect-ratio:4/3.3}.browser-bar{padding:6px 9px}.browser-dots i{width:7px;height:7px}.phone-frame{top:10px;bottom:10px;padding:5px;border-radius:24px}.phone-screen{border-radius:19px}.phone-notch{top:10px;height:9px}.project-info{gap:12px;padding:0 4px 6px}.project-description{font-size:.93rem}.project-actions{display:grid;grid-template-columns:1fr 1fr}.project-button{justify-content:center;padding:11px 12px;font-size:.86rem}.project-button-primary{grid-column:1/-1}.lightbox-stage{padding:64px 12px 92px}.lightbox-figure img{max-height:calc(100dvh - 190px)}.lightbox-nav{top:auto;bottom:22px;transform:none}.lightbox-nav-prev{left:calc(50% - 60px)}.lightbox-nav-next{right:calc(50% - 60px)}.lightbox-close{top:12px;right:12px}.case-challenge-columns,.case-feature-grid,.case-pager{grid-template-columns:1fr}.case-aside-card{padding:16px}.case-challenges li{padding:14px}.case-pager-next{text-align:left}.case-pager-next .case-pager-title{justify-content:flex-start}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}@media (max-width:380px){.gallery-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.browser-frame,.case-pager-link,.device-expand,.gallery-thumb-frame,.lightbox-figure img,.lightbox[open],.phone-frame,.project-button{transition:none;animation:none}.device-stage:hover .browser-frame,.device-stage:hover .phone-frame{transform:none}}