:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#08080b;--bg-soft:#0e0e13;--surface:#12121a;--surface-2:#181822;--line:#ffffff17;--line-strong:#ffffff2e;--line-hover:#ffffff4d;--text:#f2f2f5;--muted:#9a9aa8;--accent:#c6ff4a;--accent-text:#c6ff4a;--accent-2:#8f7bff;--on-accent:#0a0a0a;--header-bg:#08080bb8;--hover:#ffffff0f;--hover-strong:#ffffff12;--fill-1:#ffffff05;--fill-2:#ffffff08;--fill-3:#ffffff0d;--tag-bg:#ffffff0f;--panel-hi:#ffffff0d;--panel-lo:#ffffff03;--thumb-text:#ffffffd9;--glow-purple:#8f7bff29;--glow-lime:#c6ff4a17;--glow-purple-soft:#8f7bff12;--spot-lime:#c6ff4a17;--spot-purple:#8f7bff14;--hero-glow-1:#8f7bff42;--hero-glow-2:#c6ff4a12;--card-glow:#c6ff4a1f;--alert-error-border:#ff6b6b66;--alert-error-bg:#ff6b6b1a;--alert-error-text:#ffb3b3;--alert-ok-border:#c6ff4a59;--alert-ok-bg:#c6ff4a14;--alert-ok-text:#dcff9a;--radius:20px;--max:1140px;--hero-shift:0px;--hero-fade:1}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f6f2;--bg-soft:#eeeee8;--surface:#fff;--surface-2:#f0f0ea;--line:#14160f1a;--line-strong:#14160f33;--line-hover:#14160f52;--text:#14160f;--muted:#6b6f62;--accent:#c6ff4a;--accent-text:#3f7300;--accent-2:#6a55e0;--on-accent:#10130a;--header-bg:#f6f6f2c7;--hover:#14160f0f;--hover-strong:#14160f14;--fill-1:#14160f05;--fill-2:#14160f09;--fill-3:#14160f0e;--tag-bg:#14160f0f;--panel-hi:#ffffffeb;--panel-lo:#14160f05;--thumb-text:#ffffffeb;--glow-purple:#8f7bff1f;--glow-lime:#aadc3c38;--glow-purple-soft:#8f7bff0f;--spot-lime:#78aa141a;--spot-purple:#8f7bff14;--hero-glow-1:#8f7bff29;--hero-glow-2:#c6ff4a40;--card-glow:#aadc3c33;--alert-error-border:#be28284d;--alert-error-bg:#be282812;--alert-error-text:#b42318;--alert-ok-border:#508c004d;--alert-ok-bg:#c6ff4a33;--alert-ok-text:#3f7300}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:ui-sans-serif,system-ui,Segoe UI,Inter,Arial,sans-serif;font-size:16px;line-height:1.6;overflow-x:hidden}body:before{content:"";z-index:-1;background:radial-gradient(600px 400px at 15% -5%, var(--glow-purple), transparent 70%), radial-gradient(700px 500px at 90% 0%, var(--glow-lime), transparent 70%), radial-gradient(500px 400px at 50% 100%, var(--glow-purple-soft), transparent 70%);pointer-events:none;position:fixed;inset:0}a{color:inherit;text-decoration:none}h1,h2,h3,h4{letter-spacing:-.03em;margin:0;font-weight:600;line-height:1.05}p{margin:0}img{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}::selection{background:var(--accent);color:var(--on-accent)}.container{width:100%;max-width:var(--max);margin:0 auto;padding:0 24px}.header{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:var(--header-bg);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:24px;height:72px;display:flex}.brand{letter-spacing:-.02em;align-items:center;gap:10px;font-weight:600;display:flex}.brand-dot{background:var(--accent);border-radius:50%;width:9px;height:9px;box-shadow:0 0 16px #c6ff4acc}.nav{align-items:center;gap:4px;display:flex}.nav a{color:var(--muted);border-radius:999px;padding:8px 14px;font-size:14px;transition:color .2s,background .2s}.nav a:hover{color:var(--text);background:var(--hover)}.header-actions{align-items:center;gap:10px;display:flex}.theme-toggle{border:1px solid var(--line-strong);background:var(--fill-1);width:38px;height:38px;color:var(--text);cursor:pointer;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0;transition:background .2s,border-color .2s,color .2s,transform .15s;display:inline-flex}.theme-toggle:hover{background:var(--hover-strong);border-color:var(--line-hover)}.theme-toggle:active{transform:translateY(1px)}.theme-toggle:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}.theme-toggle svg{width:17px;height:17px;display:block}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:500;transition:transform .15s,background .2s,border-color .2s,opacity .2s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:#d6ff75}.btn-ghost{border-color:var(--line-strong);color:var(--text);background:var(--fill-1)}.btn-ghost:hover{background:var(--hover-strong)}.btn-sm{padding:9px 16px;font-size:13px}.hero{padding:88px 0 64px;position:relative}.badge{border:1px solid var(--line);background:var(--fill-2);color:var(--muted);border-radius:999px;align-items:center;gap:9px;margin-bottom:28px;padding:6px 14px 6px 10px;font-size:13px;display:inline-flex}.badge .pulse{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:2.2s infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 #c6ff4a8c}50%{box-shadow:0 0 0 7px #c6ff4a00}}.hero-title{letter-spacing:-.05em;max-width:15ch;font-size:clamp(2.8rem,8.5vw,6.2rem);line-height:.95}.hero-title .thin{color:var(--muted);font-weight:300}.hero-sub{color:var(--text);letter-spacing:-.01em;max-width:34ch;margin-top:18px;font-size:clamp(1.05rem,2vw,1.35rem)}.hero-text{max-width:56ch;color:var(--muted);margin-top:22px;font-size:16px}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.hero-meta{border-top:1px solid var(--line);flex-wrap:wrap;gap:28px;margin-top:56px;padding-top:28px;display:flex}.meta-item .value{letter-spacing:-.03em;font-size:clamp(1.5rem,3vw,2rem);font-weight:600}.meta-item .value span{color:var(--accent-text)}.meta-item .label{color:var(--muted);font-size:13px}.section{padding:72px 0}.section-head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:36px;display:flex}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:10px;margin-bottom:14px;font-size:12px;display:flex}.eyebrow:before{content:"";background:var(--accent);width:22px;height:1px}.section-title{font-size:clamp(1.8rem,4vw,2.8rem)}.about-grid{grid-template-columns:1.4fr 1fr;align-items:start;gap:48px;display:grid}.about-text p{color:var(--muted);margin-bottom:16px;font-size:17px}.about-text p:last-child{margin-bottom:0}.skills{flex-wrap:wrap;gap:8px;margin-top:28px;display:flex}.skill{border:1px solid var(--line);color:var(--text);background:var(--fill-1);border-radius:999px;padding:7px 14px;font-size:13px}.card-panel{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(160deg, var(--panel-hi), var(--panel-lo));padding:28px}.panel-row{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding:14px 0;font-size:14px;display:flex}.panel-row:last-child{border-bottom:0;padding-bottom:0}.panel-row:first-child{padding-top:0}.panel-row .k{color:var(--muted)}.panel-row .v{text-align:right}.dot-live{background:var(--accent);vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.work-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-direction:column;transition:transform .3s cubic-bezier(.2,.8,.2,1),border-color .3s;display:flex;overflow:hidden}.work-card:hover{border-color:var(--line-strong);transform:translateY(-4px)}.work-thumb{aspect-ratio:16/10;background:var(--surface-2);position:relative;overflow:hidden}.work-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .5s cubic-bezier(.2,.8,.2,1)}.work-card:hover .work-thumb img{transform:scale(1.04)}.thumb-fallback{letter-spacing:-.04em;width:100%;height:100%;color:var(--thumb-text);justify-content:center;align-items:center;font-size:clamp(2rem,5vw,3.4rem);font-weight:600;display:flex}.work-body{flex-direction:column;flex:1;gap:10px;padding:20px 22px 22px;display:flex}.work-topline{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.work-title{letter-spacing:-.02em;font-size:19px;font-weight:600}.work-year{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.work-desc{color:var(--muted);font-size:14.5px}.work-tags{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:6px;display:flex}.tag{background:var(--tag-bg);color:var(--muted);border-radius:6px;padding:4px 9px;font-size:11.5px}.work-link{color:var(--accent-text);margin-top:4px;font-size:13px}.empty{border:1px dashed var(--line-strong);border-radius:var(--radius);text-align:center;color:var(--muted);padding:56px 24px}.contact-box{border:1px solid var(--line);border-radius:calc(var(--radius) + 6px);background:radial-gradient(600px 300px at 80% 0%, var(--card-glow), transparent 70%), linear-gradient(160deg, var(--panel-hi), var(--panel-lo));padding:clamp(28px,5vw,56px)}.contact-title{max-width:18ch;font-size:clamp(2rem,5vw,3.2rem)}.contact-sub{color:var(--muted);max-width:46ch;margin-top:16px}.contact-links{flex-wrap:wrap;gap:10px;margin-top:32px;display:flex}.contact-link{border:1px solid var(--line-strong);border-radius:999px;align-items:center;gap:8px;padding:11px 18px;font-size:14px;transition:background .2s,border-color .2s;display:inline-flex}.contact-link:hover{background:var(--hover-strong);border-color:var(--line-hover)}.contact-link .muted{color:var(--muted)}.footer{border-top:1px solid var(--line);margin-top:48px;padding:32px 0}.footer-inner{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.footer-inner a:hover{color:var(--text)}.admin-wrap{max-width:820px;margin:0 auto;padding:48px 24px 96px}.admin-head{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:32px;display:flex}.admin-title{font-size:clamp(1.8rem,4vw,2.4rem)}.admin-hint{color:var(--muted);margin-top:8px;font-size:14px}.field{flex-direction:column;gap:7px;margin-bottom:16px;display:flex}.field label{color:var(--muted);font-size:13px}.input,.textarea{border:1px solid var(--line-strong);background:var(--fill-2);border-radius:12px;outline:none;width:100%;padding:12px 14px;transition:border-color .2s,background .2s}.input:focus,.textarea:focus{border-color:var(--accent-text);background:var(--fill-3)}.textarea{resize:vertical;min-height:96px}.form-grid{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}.alert{border:1px solid;border-radius:12px;margin-bottom:18px;padding:12px 16px;font-size:14px}.alert-error{border-color:var(--alert-error-border);background:var(--alert-error-bg);color:var(--alert-error-text)}.alert-ok{border-color:var(--alert-ok-border);background:var(--alert-ok-bg);color:var(--alert-ok-text)}.admin-list{flex-direction:column;gap:10px;margin-top:28px;display:flex}.admin-item{border:1px solid var(--line);background:var(--fill-1);border-radius:14px;align-items:center;gap:14px;padding:12px 14px;display:flex}.admin-item .thumb{object-fit:cover;background:var(--surface-2);width:56px;height:42px;color:var(--muted);border-radius:8px;flex:none;justify-content:center;align-items:center;font-size:16px;font-weight:600;display:flex;overflow:hidden}.admin-item .info{flex:1;min-width:0}.admin-item .info strong{white-space:nowrap;text-overflow:ellipsis;font-size:14.5px;font-weight:500;display:block;overflow:hidden}.admin-item .info span{color:var(--muted);font-size:12px}.icon-btn{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;padding:7px 10px;font-size:12px;transition:color .2s,border-color .2s}.icon-btn:hover{color:var(--alert-error-text);border-color:var(--alert-error-border)}.divider{background:var(--line);height:1px;margin:32px 0}.reveal{animation:.7s cubic-bezier(.2,.8,.2,1) both rise}.reveal-2{animation-delay:80ms}.reveal-3{animation-delay:.16s}.reveal-4{animation-delay:.24s}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important}}@media (max-width:860px){.about-grid{grid-template-columns:1fr;gap:32px}.work-grid{grid-template-columns:1fr}.nav{display:none}.form-grid{grid-template-columns:1fr}.hero{padding-top:56px}.section{padding:56px 0}}@media (max-width:520px){.header-actions .btn-ghost{display:none}.hero-meta{gap:20px}.admin-head{flex-direction:column}}.cursor-spot{pointer-events:none;z-index:1;opacity:0;background:radial-gradient(circle, var(--spot-lime) 0%, var(--spot-purple) 35%, transparent 68%);will-change:transform;border-radius:50%;width:560px;height:560px;margin:-280px 0 0 -280px;transition:opacity .45s;position:fixed;top:0;left:0}.cursor-spot.is-on{opacity:1}.hero{isolation:isolate}.hero-glow{z-index:-1;pointer-events:none;filter:blur(60px);background:radial-gradient(circle at 40% 40%, var(--hero-glow-1), var(--hero-glow-2) 45%, transparent 68%);width:62%;height:110%;transform:translate3d(0, calc(var(--hero-shift) * -.6), 0);opacity:var(--hero-fade);border-radius:50%;position:absolute;top:-18%;left:-12%}.type{display:inline-block;position:relative}.type-ghost{visibility:hidden}.type-live{white-space:pre;position:absolute;inset:0}.type-caret{background:var(--accent);vertical-align:.01em;border-radius:1px;width:.055em;height:.72em;margin-left:.08em;animation:1s step-end infinite caret-blink;display:inline-block}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}.marquee{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:8px;padding:16px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000);mask-image:linear-gradient(90deg,#0000,#000 7% 93%,#0000)}.marquee-track{will-change:transform;width:max-content;animation:36s linear infinite marquee;display:flex}.marquee:hover .marquee-track{animation-play-state:paused}.marquee-group{align-items:center;display:flex}.marquee-item{white-space:nowrap;letter-spacing:.02em;color:var(--muted);align-items:center;font-size:15px;display:inline-flex}.marquee-dot{background:var(--accent);opacity:.7;border-radius:50%;width:5px;height:5px;margin:0 26px}@keyframes marquee{to{transform:translate(-50%)}}[data-reveal]{transition:opacity .75s cubic-bezier(.2,.8,.2,1),transform .75s cubic-bezier(.2,.8,.2,1)}.js [data-reveal]{opacity:0;transform:translateY(22px)}.js [data-reveal].is-in{opacity:1;transform:none}@media (max-width:860px){.cursor-spot,.hero-glow{display:none}.marquee{padding:13px 0}.marquee-item{font-size:14px}}@media (prefers-reduced-motion:reduce){.js [data-reveal],.js [data-reveal].is-in{opacity:1;transform:none}.marquee-track{animation:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
