.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{--bg:#12151a;--bg-alt:#181c23;--bg-card:#1d222a;--line:#2a303b;--line-soft:#20252d;--text:#e9e7e1;--text-dim:#8b93a1;--text-faint:#5c6472;--orange:#e8833a;--orange-dim:#8a5227;--blue:#4c9fd8;--blue-dim:#2c5c79;--green:#6fae7f;--header-bg:#12151ad9;--hover-bg:#212630;--mono:"JetBrains Mono", monospace;--sans:"Inter", -apple-system, sans-serif;--maxw:1120px;--ease-ui:cubic-bezier(.22,.7,.25,1)}html[data-theme=light]{--bg:#f7f5f0;--bg-alt:#efebe2;--bg-card:#fff;--line:#dcd6c9;--line-soft:#e8e3d8;--text:#1e2530;--text-dim:#5a6270;--text-faint:#848c99;--orange:#c1600f;--orange-dim:#f6dec0;--blue:#1e6f9c;--blue-dim:#bee0f2;--green:#2f7a48;--header-bg:#f7f5f0d9;--hover-bg:#efeae0}html[data-theme=light] .grid-bg{opacity:.6}html[data-theme=light] ::selection{color:#fff}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-delay:0s!important}}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;transition:background-color .22s var(--ease-ui), color .22s var(--ease-ui);font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}::selection{background:var(--orange);color:#12151a}.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:28px}button{cursor:pointer;font-family:inherit}.theme-toggle{border:1px solid var(--line);width:34px;height:34px;color:var(--text-dim);background:0 0;border-radius:8px;justify-content:center;align-items:center;transition:border-color .2s,color .2s;display:flex}.theme-toggle:hover{border-color:var(--orange);color:var(--orange)}.theme-toggle svg{width:16px;height:16px}.theme-toggle .icon-moon,html[data-theme=light] .theme-toggle .icon-sun{display:none}html[data-theme=light] .theme-toggle .icon-moon{display:block}html.theme-transition-active body,html.theme-transition-active header{transition:none!important}::view-transition-old(root){animation:none}::view-transition-new(root){z-index:1;animation:.46s cubic-bezier(.22,1,.36,1) both theme-reveal}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--theme-reveal-x) var(--theme-reveal-y))}to{clip-path:circle(var(--theme-reveal-radius) at var(--theme-reveal-x) var(--theme-reveal-y))}}.grid-bg{z-index:0;pointer-events:none;background-image:linear-gradient(var(--line-soft) 1px, transparent 1px), linear-gradient(90deg, var(--line-soft) 1px, transparent 1px);opacity:.35;background-size:64px 64px;position:fixed;inset:0;mask-image:radial-gradient(80% 60% at 50% 0,#000 40%,#0000 100%)}header{z-index:60;background:var(--header-bg);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);transition:transform .26s var(--ease-ui), background-color .22s var(--ease-ui);position:fixed;top:0;left:0;right:0}header.nav-hidden{transform:translateY(-110%)}.nav-inner{max-width:var(--maxw);align-items:center;gap:30px;margin:0 auto;padding:12px 28px;display:flex}.logo{font-family:var(--mono);letter-spacing:.02em;white-space:nowrap;align-items:center;gap:8px;font-size:13.5px;font-weight:700;display:flex}.logo .dot{background:var(--green);width:8px;height:8px;box-shadow:0 0 8px var(--green);border-radius:50%;display:inline-block}nav{margin-left:auto}nav ul{justify-content:flex-end;align-items:center;gap:4px;list-style:none;display:flex}nav a{color:var(--text-dim);font-family:var(--mono);white-space:nowrap;padding:9px 12px;font-size:12px;transition:color .2s;display:block}nav a:hover,nav a.active{color:var(--orange)}.nav-right{align-items:center;gap:12px;display:flex}.nav-toggle{border:1px solid var(--line);width:36px;height:36px;color:var(--text);background:0 0;border-radius:8px;justify-content:center;align-items:center;display:none}.nav-toggle svg{width:18px;height:18px}.contact-float{z-index:55;right:calc(26px + env(safe-area-inset-right));bottom:calc(26px + env(safe-area-inset-bottom));background:var(--orange);color:#161006;border:0;border-radius:50%;place-items:center;width:54px;height:54px;padding:0;transition:transform .2s,box-shadow .2s,background-color .2s;display:grid;position:fixed;box-shadow:0 8px 24px #00000047}.contact-float:hover{transform:translateY(-3px);box-shadow:0 12px 30px #00000057}.contact-float svg{width:24px;height:24px}.contact-float:focus-visible,.nav-toggle:focus-visible,.theme-toggle:focus-visible,nav a:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.back-to-top{z-index:54;right:calc(30px + env(safe-area-inset-right));bottom:calc(92px + env(safe-area-inset-bottom));border:1px solid var(--line);background:var(--bg-card);width:46px;height:46px;color:var(--text);opacity:0;visibility:hidden;pointer-events:none;border-radius:50%;place-items:center;padding:0;transition:opacity .22s,visibility .22s,transform .22s,color .2s,border-color .2s;display:grid;position:fixed;transform:translateY(8px);box-shadow:0 6px 20px #0003}.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.back-to-top:hover{color:var(--orange);border-color:var(--orange)}.back-to-top svg{width:20px;height:20px}.back-to-top:focus-visible{outline:2px solid var(--blue);outline-offset:3px}@media (width<=860px){.nav-inner{gap:16px;padding-block:11px}nav a{padding-inline:8px;font-size:11px}}@media (width<=700px){.nav-inner{padding-inline:20px}nav{position:static}nav ul{visibility:hidden;opacity:0;background:var(--bg);border:1px solid #0000;border-radius:0 0 10px 10px;flex-direction:column;align-items:stretch;gap:0;max-height:0;padding:0 18px;transition:max-height .25s,opacity .2s,padding .25s,visibility .25s;display:flex;position:absolute;top:100%;left:16px;right:16px;overflow:hidden;box-shadow:0 16px 28px #0003}nav ul.open{visibility:visible;opacity:1;border-color:var(--line);max-height:70vh;padding:8px 18px}nav a{border-bottom:1px solid var(--line-soft);padding:13px 4px;font-size:12px}nav li:last-child a{border-bottom:0}.nav-toggle{display:flex}.logo{font-size:12px}}@media (width<=380px){.logo{font-size:10px}.nav-inner{padding-inline:14px}.nav-right{gap:8px}.contact-float{right:18px;bottom:calc(18px + env(safe-area-inset-bottom));width:50px;height:50px}.back-to-top{right:20px;bottom:calc(78px + env(safe-area-inset-bottom))}}main{padding-top:64px}#pageEndMarker{pointer-events:none;height:8px}section{z-index:1;border-bottom:1px solid var(--line-soft);padding:100px 0;position:relative}.tag{font-family:var(--mono);color:var(--orange);letter-spacing:.06em;align-items:center;gap:10px;margin-bottom:18px;font-size:12px;display:flex}.tag:before{content:"";background:var(--orange);width:22px;height:1px}h2{font-family:var(--mono);letter-spacing:-.01em;margin-bottom:36px;font-size:clamp(24px,3vw,32px);font-weight:700}.reveal{opacity:0;transition:opacity .34s var(--ease-ui), transform .34s var(--ease-ui);transition-delay:0s;transform:translateY(10px)}.reveal.in{opacity:1;transform:translateY(0)}.hero{border-bottom:1px solid var(--line-soft);align-items:center;min-height:82vh;padding:130px 0 90px;display:flex}.hero-grid{flex-wrap:wrap;align-items:center;gap:56px;display:flex}.hero-grid>.hero-copy{flex:480px}.hero-grid>.terminal{flex:380px;max-width:460px}.status-pill{font-family:var(--mono);color:var(--green);border:1px solid var(--blue-dim);background:#4c9fd80f;border-radius:100px;align-items:center;gap:8px;margin-bottom:24px;padding:6px 12px;font-size:12px;display:inline-flex}.status-pill .dot{background:var(--green);width:6px;height:6px;box-shadow:0 0 6px var(--green);border-radius:50%}.hero h1{font-family:var(--mono);letter-spacing:-.02em;margin-bottom:20px;font-size:clamp(32px,5vw,52px);font-weight:800;line-height:1.12}.hero h1 span{color:var(--orange)}.hero p.lead{color:var(--text-dim);max-width:52ch;margin-bottom:32px;font-size:17px}.btn-row{flex-wrap:wrap;gap:14px;display:flex}.btn{font-family:var(--mono);letter-spacing:.04em;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;padding:13px 22px;font-size:13px;transition:all .2s;display:inline-flex}.btn-primary{background:var(--orange);color:#161006;font-weight:700}.btn-primary:hover{background:#f39552;transform:translateY(-1px)}.btn-outline{border-color:var(--line);color:var(--text)}.btn-outline:hover{border-color:var(--orange);color:var(--orange)}.btn-ghost{border:1px dashed var(--line);color:var(--text-dim)}.btn-ghost:hover{border-color:var(--blue);color:var(--blue)}.stat-row{flex-wrap:wrap;gap:36px;margin-top:44px;display:flex}.stat b{font-family:var(--mono);font-size:26px;display:block}.stat span{color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;font-size:12.5px}.terminal{background:var(--bg-card);border:1px solid var(--line);direction:ltr;border-radius:10px;overflow:hidden;box-shadow:0 20px 50px -20px #0009}.terminal-bar{background:var(--bg-alt);border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:12px 16px;display:flex}.terminal-bar span{border-radius:50%;width:10px;height:10px}.terminal-bar span:first-child{background:#e0645c}.terminal-bar span:nth-child(2){background:#e8b23a}.terminal-bar span:nth-child(3){background:#5cbf6a}.terminal-bar .path{font-family:var(--mono);color:var(--text-faint);margin-left:12px;font-size:11.5px}.terminal-body{font-family:var(--mono);color:var(--text-dim);min-height:220px;padding:22px 20px;font-size:13px}.terminal-body .line{gap:8px;margin-bottom:10px;display:flex}.terminal-body .prompt{color:var(--green)}.terminal-body .out{color:var(--text-faint);padding-left:16px}.cursor{background:var(--orange);vertical-align:middle;width:7px;height:15px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.about-layout{flex-direction:column;gap:36px;display:flex}.about-top{flex-wrap:wrap;align-items:flex-start;gap:44px;display:flex}.about-text{flex:320px;max-width:400px}.about-text p{color:var(--text-dim);text-align:justify;text-align-last:start;margin-bottom:16px;font-size:15px}.about-photo{flex:280px;justify-content:center;align-items:center;min-width:240px;display:flex}.about-photo .avatar-fallback{aspect-ratio:3/4;width:100%;max-width:360px;font-family:var(--mono);color:var(--text-faint);letter-spacing:.05em;justify-content:center;align-items:center;font-size:56px;font-weight:700;display:flex}.about-photo img{object-fit:contain;filter:grayscale()brightness(.85);width:100%;max-width:400px;height:auto;max-height:480px;transition:filter .34s var(--ease-ui);cursor:pointer;display:block;transform:translateY(-87px)}.about-photo img:hover{filter:grayscale(0%)brightness(1.02)drop-shadow(0 0 30px #e8833a66)drop-shadow(0 0 60px #4c9fd833)}.edu-card{background:var(--bg-card);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;align-items:center;gap:36px;width:100%;padding:28px 34px;display:flex}.edu-left{flex:none;min-width:220px}.edu-left .eyebrow{font-family:var(--mono);color:var(--blue);letter-spacing:.08em;margin-bottom:8px;font-size:11px}.edu-left h3{font-family:var(--mono);margin-bottom:4px;font-size:16px}.edu-left .school{color:var(--text-dim);font-size:13.5px}.edu-divider{background:var(--line);flex:0 0 1px;align-self:stretch;width:1px;min-height:56px}.edu-courses{flex:260px;grid-template-columns:repeat(2,1fr);gap:10px 28px;margin:0;padding:0;list-style:none;display:grid}.edu-courses li{font-family:var(--mono);color:var(--text-faint);padding-inline-start:14px;font-size:12.5px;position:relative}.edu-courses li:before{content:"";inset-inline-start:0;background:var(--orange);border-radius:50%;width:5px;height:5px;position:absolute;top:7px}@media (width<=700px){.about-photo img{transform:translateY(-18px)}.edu-divider{width:100%;height:1px;min-height:1px}.edu-courses{grid-template-columns:1fr}}.skills-grid{background:var(--line);border:1px solid var(--line);border-radius:10px;grid-template-columns:repeat(2,1fr);gap:1px;display:grid;overflow:hidden}@media (width<=700px){.skills-grid{grid-template-columns:1fr}}.skill-cat{background:var(--bg-card);padding:26px}.skill-cat h3{font-family:var(--mono);color:var(--orange);letter-spacing:.04em;text-transform:uppercase;margin-bottom:16px;font-size:13px}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.chip{font-family:var(--mono);color:var(--text-dim);border:1px solid var(--line);border-radius:5px;padding:6px 11px;font-size:12.5px;transition:border-color .2s,color .2s}.chip:hover{border-color:var(--blue);color:var(--text)}.project-list{background:var(--line);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:1px;display:flex;overflow:hidden}.project{background:var(--bg-card);cursor:pointer;flex-wrap:wrap;gap:28px;padding:32px;transition:background .2s;display:flex}.project:hover{background:var(--hover-bg)}.project:hover .gallery-hint{color:var(--orange);border-color:var(--orange)}.project .meta{font-family:var(--mono);color:var(--text-faint);flex:0 0 170px;font-size:12px}.project .meta .year{color:var(--blue);margin-bottom:6px;font-size:20px;font-weight:700;display:block}.project .content{flex:400px}.project h3{font-family:var(--mono);margin-bottom:4px;font-size:17px}.project .kicker{color:var(--orange);font-size:12.5px;font-family:var(--mono);transition:margin .24s var(--ease-ui);margin-bottom:0;display:block}.project ul{color:var(--text-dim);opacity:0;max-height:0;transition:max-height .3s var(--ease-ui), opacity .2s var(--ease-ui);padding-inline-start:18px;font-size:14.5px;overflow:hidden}.project li{margin-bottom:8px}.project .stack{opacity:0;max-height:0;transition:max-height .3s var(--ease-ui), opacity .2s var(--ease-ui), margin .24s var(--ease-ui);flex-wrap:wrap;align-items:center;gap:8px;display:flex;overflow:hidden}.project .stack span{font-family:var(--mono);color:var(--text-faint);border:1px solid var(--line-soft);border-radius:4px;padding:4px 9px;font-size:11px}.project:hover .kicker{margin-bottom:14px}.project:hover ul{opacity:1;max-height:400px}.project:hover .stack{opacity:1;max-height:80px;margin-top:16px}.gallery-hint{font-family:var(--mono);color:var(--text-faint);border:1px solid var(--line-soft);white-space:nowrap;border-radius:100px;margin-inline-start:auto;padding:4px 10px;font-size:11px;transition:all .2s}.project-collapsed-hint{font-family:var(--mono);color:var(--text-faint);opacity:1;margin-top:2px;font-size:11px;transition:opacity .25s}.project:hover .project-collapsed-hint{opacity:0;height:0}.cert-carousel{width:calc(100% + 56px);margin-inline-start:-28px;padding-inline:48px;position:relative}.cert-grid{--cert-card-width:240px;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;padding:30px max(8px,calc((100% - var(--cert-card-width))/2)) 42px;touch-action:pan-y;cursor:grab;gap:20px;display:flex;overflow-x:auto}.cert-grid::-webkit-scrollbar{display:none}.cert-grid.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}.cert-card{flex:0 0 var(--cert-card-width);width:var(--cert-card-width);aspect-ratio:2.5/3.5;scroll-snap-align:center;border:1px solid var(--line);color:#1e2530;text-align:left;transform:perspective(1000px) rotateY(var(--card-tilt,0deg));transform-origin:50%;transition:transform .23s var(--ease-ui), box-shadow .2s var(--ease-ui);background:#f7f7f3;border-radius:9px;flex-direction:column;padding:0;display:flex;position:relative;overflow:hidden;box-shadow:0 3px #bfc2bf,0 7px #969c9e,0 14px 26px #0003}.cert-card:hover{transform:perspective(1000px) rotateY(var(--card-tilt,0deg)) translateY(-5px) rotateZ(-.4deg);box-shadow:0 3px #bfc2bf,0 7px #969c9e,0 20px 32px #00000047}.cert-card:first-child,.cert-card:last-child{will-change:transform}html[data-theme=light] .cert-card{box-shadow:0 3px #d6d9d5,0 7px #bcc2be,0 18px 32px #1b252b2b}html[data-theme=light] .cert-card:hover{box-shadow:0 3px #d6d9d5,0 7px #bcc2be,0 24px 40px #1b252b38}.cert-card:focus-within{outline:3px solid var(--orange);outline-offset:4px}.cert-open{width:100%;height:100%;color:inherit;text-align:left;background:0 0;border:0;flex-direction:column;flex:1;padding:0;display:flex;overflow:hidden}.cert-thumb{background:#f7f7f3;flex:1;justify-content:center;align-items:center;min-height:0;padding:10px;display:flex;position:relative;overflow:hidden}.cert-thumb-fallback{color:#7c838a;font-family:var(--mono);place-items:center;font-size:12px;display:grid;position:absolute;inset:0}.cert-thumb img{z-index:1;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block;position:relative}.cert-info{background:#fff;border-top:1px solid #dfe1dd;flex-direction:column;flex:0 0 94px;justify-content:center;gap:3px;padding:8px 12px 30px;display:flex}.cert-info strong{font-family:var(--mono);color:#1e2530;font-size:12px}.cert-info .vendor{color:#68717a;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:9px;line-height:1.25;display:-webkit-box;overflow:hidden}.cert-info .validity{font-family:var(--mono);color:#2f7a48;font-size:8px}.cert-pdf{z-index:3;color:#1e6f9c;font-family:var(--mono);background:#fff;border:1px solid #dfe1dd;border-radius:4px;align-items:center;gap:4px;padding:3px 6px;font-size:8px;line-height:1.2;text-decoration:none;display:inline-flex;position:absolute;bottom:9px;right:10px}.cert-pdf svg{width:11px;height:11px}.cert-pdf:hover{background:#edf6fa;border-color:#1e6f9c}.cert-scroll{z-index:2;border:1px solid var(--line);background:var(--bg-card);width:34px;height:34px;color:var(--text);border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 3px 10px #0000002e}.cert-scroll svg{width:18px;height:18px}.cert-scroll:hover:not(:disabled){border-color:var(--orange);color:var(--orange)}.cert-scroll:disabled{opacity:.35;cursor:default}.cert-scroll-prev{left:0}.cert-scroll-next{right:0}.contact{border-bottom:none;align-items:center;min-height:68vh;display:flex}.contact>.wrap{width:100%}.contact-heading{text-align:center;margin-bottom:30px}.contact-heading .tag{justify-content:center}.contact-heading h2{margin-bottom:8px}.contact-heading p{font-family:var(--mono);color:var(--text-faint);font-size:11px}.contact-heading p span{color:var(--orange);padding-inline:6px}.contact-card-stage{perspective:1200px;justify-content:center;width:min(380px,100%);margin:0 auto;display:flex}.contact-card-stage .biz-card-mini{width:100%;transform-style:preserve-3d;transform:rotateX(5deg)rotateY(-7deg);box-shadow:0 1px 0 1px #d6d0c5,0 3px 0 1px #bbb5aa,0 6px 0 1px #a59f95,0 20px 36px -12px #0000007a}.contact-card-stage .biz-card-mini:after{content:"";z-index:-1;background:linear-gradient(#e4ded2,#aaa497);border-radius:6px;position:absolute;inset:3px -5px -7px 3px;transform:translateZ(-5px)}.contact-card-stage .biz-card-mini:hover{transform:rotateX(2deg)rotateY(-3deg)translateY(-4px);box-shadow:0 1px 0 1px #d6d0c5,0 3px 0 1px #bbb5aa,0 6px 0 1px #a59f95,0 25px 40px -12px #00000080}.chat-form{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:16px;max-width:440px;padding:26px 26px 24px;display:flex}.chat-form .field{flex-direction:column;gap:7px;display:flex}.chat-form label{font-family:var(--mono);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;font-size:11.5px}.chat-form input,.chat-form textarea{background:var(--bg-card);border:1px solid var(--line);color:var(--text);font-family:var(--sans);resize:vertical;border-radius:8px;padding:12px 14px;font-size:14.5px;transition:border-color .2s}.chat-form input:focus,.chat-form textarea:focus{border-color:var(--orange);outline:none}.chat-form button{align-self:flex-end}.chat-form button:disabled{opacity:.6;cursor:not-allowed}.form-status{font-family:var(--mono);min-height:16px;font-size:12.5px}.form-status.ok{color:var(--green)}.form-status.err{color:#e0645c}.mail-dialog{width:min(520px,100% - 32px);max-width:none;max-height:calc(100dvh - 32px);color:var(--text);background:0 0;border:0;margin:auto;padding:0;position:fixed;inset:0;overflow:visible}.mail-dialog::backdrop{backdrop-filter:blur(5px);animation:mail-backdrop-in .24s var(--ease-ui) both;background:#080b0f94}.mail-panel{background:var(--bg-card);border:1px solid var(--line);max-height:calc(100dvh - 32px);transform-origin:var(--mail-origin-x,50%) var(--mail-origin-y,100%);border-radius:14px;padding:clamp(24px,5vw,38px);animation:.44s cubic-bezier(.2,.82,.22,1) both mail-open;overflow-y:auto;box-shadow:0 28px 90px #00000061}.mail-topline{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.mail-index{font-family:var(--mono);color:var(--text-faint);align-items:center;gap:8px;font-size:10px;display:flex}.mail-index i{background:var(--green);border-radius:50%;width:6px;height:6px}.mail-close{border:1px solid var(--line);width:34px;height:34px;color:var(--text-dim);background:0 0;border-radius:8px;place-items:center;font-size:22px;line-height:1;display:grid}.mail-close:hover{border-color:var(--orange);color:var(--orange)}.mail-heading{align-items:center;gap:14px;margin-bottom:24px;display:flex}.mail-icon{border:1px solid var(--line);width:42px;height:42px;color:var(--orange);border-radius:10px;flex:0 0 42px;place-items:center;display:grid}.mail-icon svg{width:23px;height:23px}.mail-panel h2{margin:0;font-size:21px}.mail-panel .chat-form{background:0 0;border:0;max-width:none;padding:0}.mail-panel .chat-form input,.mail-panel .chat-form textarea{background:var(--bg)}.mail-panel .chat-form button{margin-top:2px}@keyframes mail-open{0%{opacity:0;filter:blur(2px);border-radius:50%;transform:scale(.08)}55%{opacity:1;filter:blur();border-radius:14px;transform:scale(1.025)}to{opacity:1;filter:blur();border-radius:14px;transform:scale(1)}}@keyframes mail-backdrop-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.mail-panel,.mail-dialog::backdrop{animation-duration:.01ms}}:root{--card-bg:#efe9de;--card-ink:#242a38;--card-ink-soft:#5b6270;--card-line:#242a38}.biz-card-mini{aspect-ratio:1.586;background:var(--card-bg);width:100%;color:var(--card-ink);cursor:pointer;text-align:center;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:18px 20px;transition:transform .25s,box-shadow .25s;display:flex;position:relative;box-shadow:0 10px 22px -10px #0006}.biz-card-mini:before{content:"";border:1px solid var(--card-ink);opacity:.55;pointer-events:none;border-radius:2px;position:absolute;inset:8px}.biz-card-mini:hover{transform:translateY(-4px);box-shadow:0 16px 30px -10px #00000073}.biz-mark{width:30px;height:30px;color:var(--card-ink)}.biz-mark svg{width:100%;height:100%}.biz-mini-name{font-family:var(--sans);letter-spacing:.12em;font-size:12.5px;font-weight:700;line-height:1.5}.biz-mini-role{font-family:var(--sans);letter-spacing:.18em;color:var(--card-ink-soft);font-size:9px}.lightbox-inner.card-modal-inner{box-shadow:none;background:0 0;border:none;flex-direction:column;align-items:center;gap:22px;max-width:460px;max-height:none;padding:0;display:flex;overflow:visible}.lightbox-inner.cert-modal-inner.cert-modal-landscape{width:min(680px,100% - 32px);max-width:680px}.card-3d-scene.cert-3d-scene{aspect-ratio:2.5/3.5;width:min(400px,84vw);max-width:400px}.cert-modal-landscape .card-3d-scene.cert-3d-scene{aspect-ratio:4/3;width:min(600px,84vw);max-width:600px}.cert-3d .card-face{border-radius:9px;overflow:hidden}.cert-face.front{background:#f7f7f3;place-items:center;display:grid}.cert-face.front img{object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.lightbox-inner.cert-modal-inner{max-width:420px}.cert-back-content{color:#1e2530;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;padding:24px;display:flex;position:absolute;inset:0}.cert-back-kicker{font-family:var(--mono);color:#1e6f9c;font-size:10px}.cert-back-content h3{font-family:var(--mono);color:#1e2530;margin:0;padding:0;font-size:clamp(17px,5vw,22px)}.cert-back-content p{color:#5a6270;font-size:13px;line-height:1.45}.cert-back-content .cert-back-valid{font-family:var(--mono);color:#2f7a48;font-size:11px}.cert-modal-pdf{margin-top:8px;text-decoration:none}.cert-modal-pdf svg{width:15px;height:15px}.card-modal-inner .lightbox-close{inset-inline-end:24px;backdrop-filter:blur(4px);background:#12151a99;position:fixed;top:20px}.card-3d-scene{perspective:1400px;aspect-ratio:1.586;width:100%;max-width:360px;margin:10px 0}.card-3d{width:100%;height:100%;transform-style:preserve-3d;cursor:grab;touch-action:none;position:relative}.card-3d:before{content:"";background:#bcb6aa;border-radius:6px;position:absolute;inset:0;transform:translateZ(-3px);box-shadow:0 1px 0 1px #ddd7cb,0 3px 0 1px #a8a294}.card-3d.dragging{cursor:grabbing}.card-face{backface-visibility:hidden;background:var(--card-bg);color:var(--card-ink);border-radius:6px;position:absolute;inset:0;box-shadow:0 30px 60px -12px #000000a6}.card-face.back{transform:rotateY(180deg)}.card-frame{border:1px solid var(--card-ink);opacity:.9;border-radius:2px;flex-direction:column;padding:20px;display:flex;position:absolute;inset:10px}.card-face.front .card-frame{text-align:center;justify-content:center;align-items:center;gap:14px}.card-mark{width:44px;height:44px;color:var(--card-ink)}.card-mark.small{width:28px;height:28px}.card-mark svg{width:100%;height:100%}.card-title-block .card-title{font-family:var(--sans);letter-spacing:.14em;font-size:17px;font-weight:700;line-height:1.5}.card-title-block .card-subtitle{font-family:var(--sans);letter-spacing:.22em;color:var(--card-ink-soft);margin-top:4px;font-size:10.5px}.card-back-top{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:16px;display:flex}.card-back-name{font-family:var(--sans);letter-spacing:.06em;font-size:13px;font-weight:700}.card-back-role{font-family:var(--sans);letter-spacing:.14em;color:var(--card-ink-soft);margin-top:3px;font-size:9.5px}.card-contact-list{flex-direction:column;gap:9px;list-style:none;display:flex}.card-contact-list li{font-family:var(--sans);color:var(--card-ink);align-items:center;gap:10px;font-size:11px;display:flex}.card-contact-list svg{width:14px;height:14px;color:var(--card-ink-soft);flex-shrink:0}footer{text-align:center;font-family:var(--mono);color:var(--text-faint);padding:32px 0;font-size:12px}.lightbox{z-index:100;backdrop-filter:blur(5px);background:#080b0f94;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.lightbox.card-backdrop{backdrop-filter:blur(5px);background:#080b0f94}.lightbox.open{animation:gallery-backdrop-in .2s var(--ease-ui) both;display:flex}.lightbox-inner{background:var(--bg-card);border:1px solid var(--line);border-radius:14px;width:100%;max-width:640px;max-height:85vh;padding:28px;position:relative;overflow-y:auto}.lightbox-inner.from-card{transform-origin:var(--gallery-origin-x,50%) var(--gallery-origin-y,50%);animation:.4s cubic-bezier(.2,.82,.22,1) both gallery-card-open}.lightbox-close{inset-inline-end:18px;border:1px solid var(--line);color:var(--text);background:0 0;border-radius:8px;width:32px;height:32px;font-size:18px;line-height:1;position:absolute;top:16px}.lightbox-close:hover{border-color:var(--orange);color:var(--orange)}.lightbox-inner h3{font-family:var(--mono);margin-bottom:6px;padding-inline-end:36px;font-size:17px}.lightbox-sub{font-family:var(--mono);color:var(--text-faint);margin-bottom:22px;font-size:12px}.lightbox-grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.lightbox-grid.single{grid-template-columns:1fr;max-width:280px;margin:0 auto}.lightbox-grid.single.landscape{max-width:440px}.photo-slot{aspect-ratio:4/3;border:1px dashed var(--line);background:var(--bg-alt);border-radius:10px;position:relative;overflow:hidden}.photo-slot.aspect-portrait{aspect-ratio:3/4}.photo-slot .slot-fallback{z-index:0;color:var(--text-faint);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.photo-slot .slot-fallback svg{opacity:.5;width:26px;height:26px}.photo-slot .slot-fallback span{font-family:var(--mono);text-align:center;padding:0 10px;font-size:11px}.photo-slot img{z-index:1;object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.photo-slot.imglink-slot{text-decoration:none;transition:border-color .2s;display:block}.photo-slot.imglink-slot:hover{border-color:var(--orange)}.photo-slot.gallery-pending{min-height:180px}.pdf-badge{z-index:2;inset-inline-end:8px;font-family:var(--mono);color:var(--orange);border:1px solid var(--line);background:#12151ad9;border-radius:5px;padding:3px 8px;font-size:10px;position:absolute;bottom:8px}@keyframes gallery-card-open{0%{opacity:0;transform:scale(.12)}65%{opacity:1;transform:scale(1.025)}to{opacity:1;transform:scale(1)}}@keyframes gallery-backdrop-in{0%{opacity:0}to{opacity:1}}@media (width<=860px),(hover:none){.project .kicker{margin-bottom:12px}.project ul{opacity:1;max-height:none;margin-top:6px}.project .stack{opacity:1;max-height:none;margin-top:14px}.gallery-hint{color:var(--orange);border-color:var(--orange);background:#e8833a14}}@media (width<=600px){.cert-grid{--cert-card-width:200px;gap:16px}.project{padding:24px}.project .meta{flex:100%}section{padding:72px 0}}.back-nav{font-family:var(--mono);color:var(--text-dim);align-items:center;gap:8px;margin-bottom:28px;font-size:13px;transition:color .2s;display:inline-flex}.back-nav:hover{color:var(--orange)}.project-detail-hero{padding:110px 0 40px}.project-detail-card{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;margin-top:24px;padding:36px}.project-detail-card h3{font-family:var(--mono);color:var(--orange);margin-bottom:16px}.project-detail-card p{color:var(--text-dim);margin-bottom:16px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}
