:root{--bg:#04060d;--bg-2:#070b16;--surface:#94aadc0d;--surface-2:#94aadc17;--panel:#0a101f;--panel-2:#0e1626;--border:#94aadc12;--border-strong:#94aadc29;--text:#e9eefb;--text-dim:#aab6d4;--text-faint:#93a0c0;--green:#3ddc97;--cyan:#2dd4ea;--violet:#3b82f6;--pink:#7c8cf8;--grad:linear-gradient(120deg, var(--cyan) 0%, var(--violet) 100%);--grad-soft:linear-gradient(120deg, color-mix(in srgb, var(--cyan) 16%, transparent), color-mix(in srgb, var(--violet) 16%, transparent));--ink-accent:var(--cyan);--glass-blur:0px;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #0006, 0 16px 40px -24px #000000b3;--shadow-card:0 1px 1px #00000047, 0 12px 32px -20px #0000008c, inset 0 1px 0 color-mix(in srgb, var(--text) 4%, transparent);--shadow-lift:0 2px 4px #0000004d, 0 24px 56px -28px #000000bf;--glow:0 12px 36px -12px color-mix(in srgb, var(--cyan) 45%, transparent);--maxw:1600px;--pad:clamp(20px, 4vw, 56px);--font-display:var(--f-display), "Space Grotesk", system-ui, sans-serif;--font-body:var(--f-body), "Inter", system-ui, sans-serif;--font-mono:var(--f-mono), "JetBrains Mono", ui-monospace, monospace}[data-theme=ocean]{--cyan:#22d3ee;--violet:#3b82f6;--pink:#6366f1}[data-theme=cyber]{--cyan:#00e5ff;--violet:#7c5cff;--pink:#ff5cc8}[data-theme=matrix]{--cyan:#45f0a0;--violet:#14b8a6;--pink:#00e5ff}[data-theme=sunset]{--cyan:#ffd166;--violet:#ff8a3d;--pink:#ff5cc8}[data-mode=light]{--bg:#eef1f9;--bg-2:#e3e8f4;--surface:#f4f6fb;--surface-2:#e9edf6;--panel:#fff;--panel-2:#f6f8fd;--border:#0f172a14;--border-strong:#0f172a29;--text:#131a30;--text-dim:#41506e;--text-faint:#4c5878;--shadow:0 1px 2px #0f172a0f, 0 8px 24px #0f172a14;--shadow-card:0 1px 2px #0f172a0f, 0 8px 24px #0f172a14;--shadow-lift:0 2px 4px #0f172a12, 0 16px 40px #0f172a24;--shadow-chip:0 0 0 1px #0f172a14, 0 1px 2px #0f172a0d, 0 4px 14px -4px #0f172a1a;--ink-accent:color-mix(in srgb, var(--violet) 48%, #0a0a18)}[data-mode=light] .bg-wrap{background:radial-gradient(900px 600px at 80% -10%, color-mix(in srgb, var(--violet) 22%, transparent), transparent 60%), radial-gradient(800px 500px at 0% 20%, color-mix(in srgb, var(--cyan) 18%, transparent), transparent 55%), linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%)}[data-mode=light] .bg-grid{background-image:linear-gradient(#141e3c0d 1px,#0000 1px),linear-gradient(90deg,#141e3c0d 1px,#0000 1px)}[data-mode=light] .blob{opacity:.3}[data-mode=light] .navbar{-webkit-backdrop-filter:blur(14px)saturate(1.5);backdrop-filter:blur(14px)saturate(1.5);border-bottom:1px solid var(--border);background:#fffffff5;box-shadow:0 1px 2px #0f172a0a}[data-mode=light] .navbar.scrolled{background:#fffffff5;box-shadow:0 1px 2px #0f172a0d,0 8px 24px -12px #0f172a1f}[data-mode=light] .nav-links{background:0 0}[data-mode=light] .btn-primary,[data-mode=light] .filter-chip.active,[data-mode=light] .lesson-done.is-done .check,[data-mode=light] .brand-mark,[data-mode=light] .stat-num{color:#07101a}[data-mode=light] ::selection{color:#07101a;background:#3b82f640}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(84px + env(safe-area-inset-top));-webkit-text-size-adjust:100%}body{font-family:var(--font-body);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.65;overflow-x:hidden}a{color:inherit;text-decoration:none}ul{list-style:none}img{max-width:100%;display:block}::selection{background:color-mix(in srgb, var(--cyan) 32%, transparent);color:#fff}.container{width:100%;max-width:var(--maxw);padding:0 var(--pad);margin:0 auto}.section{padding:128px 0;position:relative}@media (max-width:700px){.section{padding:84px 0}}.bg-wrap{z-index:-2;background:radial-gradient(1100px 720px at 88% -8%, color-mix(in srgb, var(--violet) 13%, transparent), transparent 62%), radial-gradient(900px 620px at -12% 18%, color-mix(in srgb, var(--cyan) 9%, transparent), transparent 58%), linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);transition:background .5s;position:fixed;inset:0;overflow:hidden}.bg-grid{background-image:linear-gradient(#94aadc0d 1px,#0000 1px),linear-gradient(90deg,#94aadc0d 1px,#0000 1px);background-size:44px 44px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(90% 60% at 50% 0,#000 0%,#0000 78%);mask-image:radial-gradient(90% 60% at 50% 0,#000 0%,#0000 78%)}.bg-noise{opacity:.05;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");position:absolute;inset:0}.blob{opacity:.2;will-change:transform;border-radius:50%;position:absolute;transform:translateZ(0)}.blob-1{background:radial-gradient(circle closest-side, var(--cyan), transparent 70%);width:480px;height:480px;animation:22s ease-in-out infinite float1;top:-140px;left:-100px}.blob-2{background:radial-gradient(circle closest-side, var(--violet), transparent 70%);width:520px;height:520px;animation:26s ease-in-out infinite float2;bottom:-160px;right:-120px}.blob-3{background:radial-gradient(circle closest-side, var(--pink), transparent 70%);opacity:.13;width:360px;height:360px;animation:30s ease-in-out infinite float3;top:48%;left:58%}@keyframes float1{0%,to{transform:translate(0)}50%{transform:translate(60px,80px)}}@keyframes float2{0%,to{transform:translate(0)}50%{transform:translate(-70px,-50px)}}@keyframes float3{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-40px,40px)scale(1.15)}}.scroll-progress{transform-origin:0 0;will-change:transform;pointer-events:none;background:var(--grad);z-index:200;width:100%;height:3px;box-shadow:0 0 12px color-mix(in srgb, var(--cyan) 55%, transparent);position:fixed;top:0;left:0;transform:scaleX(0)}.glass{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow-card);border:1px solid #0000}.navbar{z-index:100;border-bottom:1px solid #0000;padding:20px 0;transition:background .3s,border-color .3s,padding .3s;position:fixed;top:0;left:0;right:0}.navbar.scrolled{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#04060dd9;padding:12px 0}.nav-inner{justify-content:space-between;align-items:center;gap:20px;display:flex}.brand{font-family:var(--font-display);align-items:center;gap:12px;font-weight:700;display:flex}.brand-mark{background:var(--grad);color:#04101c;width:38px;height:38px;box-shadow:var(--glow);border-radius:11px;place-items:center;font-size:15px;font-weight:700;display:grid}.brand-name{letter-spacing:-.02em;font-size:18px}.brand-dot{color:var(--ink-accent)}.nav-links{align-items:center;gap:4px;display:flex}.nav-links a{color:var(--text-dim);border-radius:999px;padding:8px 13px;font-size:.95rem;font-weight:500;transition:color .2s,background .2s,box-shadow .2s;position:relative}.nav-links a:hover,.nav-links a.active{color:var(--text);background:var(--surface-2)}.nav-links a.contact-cta{color:#04101c;background:var(--grad);box-shadow:var(--glow);margin-left:10px;padding:8px 18px;font-weight:600}.nav-links a.contact-cta:hover{background:var(--grad);color:#04101c;filter:brightness(1.08)}.nav-actions{align-items:center;gap:12px;display:flex}.lang-toggle{cursor:pointer;background:color-mix(in srgb, var(--panel) 72%, transparent);font-family:var(--font-mono);color:var(--text-faint);border:0;border-radius:10px;align-items:center;gap:4px;padding:7px 12px;font-size:.8125rem;font-weight:500;transition:background .2s,color .2s;display:flex}.lang-toggle:hover{background:var(--surface-2);color:var(--text)}.lang-opt{transition:color .2s}.lang-opt.active{color:var(--ink-accent)}.lang-sep{color:var(--text-faint)}.menu-btn{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:6px;display:none}.menu-btn span{background:var(--text);border-radius:2px;width:24px;height:2px;transition:transform .3s,opacity .3s}.menu-btn.open span:first-child{transform:translateY(7px)rotate(45deg)}.menu-btn.open span:nth-child(2){opacity:0}.menu-btn.open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.btn{cursor:pointer;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:14px 28px;font-size:.97rem;font-weight:600;transition:transform .2s,box-shadow .2s,background .2s,filter .2s,background-position .45s;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--grad);color:#04101c;box-shadow:var(--glow)}.btn-primary:hover{filter:brightness(1.08);box-shadow:0 16px 44px -12px color-mix(in srgb, var(--cyan) 55%, transparent)}.btn-ghost{background:color-mix(in srgb, var(--panel) 72%, transparent);color:var(--text)}.btn-ghost:hover{background:var(--surface-2)}.hero{align-items:center;min-height:100svh;padding-top:80px;display:flex;position:relative}.hero-inner{flex-direction:column;align-items:stretch;width:100%;display:flex}.hero-badge{letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);background:color-mix(in srgb, var(--panel) 72%, transparent);border:0;border-radius:999px;align-items:center;gap:9px;margin-bottom:30px;padding:8px 16px;font-size:.75rem;font-weight:600;line-height:1.5;display:inline-flex}.status-dot{background:var(--green);border-radius:50%;width:8px;height:8px;position:relative}.status-dot:after{content:"";border:1px solid color-mix(in srgb, var(--green) 60%, transparent);border-radius:50%;animation:2s infinite pulse;position:absolute;inset:0}@keyframes pulse{0%{opacity:.9;transform:scale(1)}70%,to{opacity:0;transform:scale(2.8)}}.hero-title{font-family:var(--font-display);letter-spacing:-.04em;margin-bottom:24px;font-size:clamp(2.8rem,7vw,6.2rem);font-weight:700;line-height:.98}.hero-title span{display:block}.hero-name{background:linear-gradient(120deg, #fff 30%, color-mix(in srgb, var(--cyan) 65%, #fff) 100%);-webkit-text-fill-color:transparent;color:#0000;-webkit-background-clip:text;background-clip:text}.gradient-text{color:var(--ink-accent)}.hero-role{font-family:var(--font-mono);font-size:clamp(1.1rem,2.6vw,1.6rem)}.hero-desc{color:var(--text-dim);max-width:680px;margin-bottom:40px;font-size:1.32rem}.hero-cta{flex-wrap:wrap;gap:14px;margin-bottom:34px;display:flex}.hero-socials{gap:12px;display:flex}.social-link{background:color-mix(in srgb, var(--panel) 72%, transparent);width:46px;height:46px;color:var(--text-dim);border-radius:12px;place-items:center;transition:color .2s,transform .2s,background .2s;display:grid}.social-link:hover{color:var(--ink-accent);background:var(--surface-2);transform:translateY(-3px)}.section-head{margin-bottom:56px}.section-kicker{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--text-dim);align-items:center;gap:10px;margin-bottom:18px;font-size:.75rem;line-height:1.5;display:inline-flex}.section-kicker:before{content:"";background:var(--grad);width:5px;height:5px;box-shadow:0 0 8px color-mix(in srgb, var(--cyan) 60%, transparent);border-radius:50%;flex-shrink:0}.section-kicker.center{justify-content:center;display:flex}.kicker-num{background:linear-gradient(120deg, var(--ink-accent), color-mix(in srgb, var(--violet) 18%, var(--ink-accent)));-webkit-text-fill-color:transparent;color:var(--ink-accent);font-variant-numeric:tabular-nums;-webkit-background-clip:text;background-clip:text}[data-mode=light] .kicker-num{background:linear-gradient(120deg, var(--ink-accent), color-mix(in srgb, #0a0a18 12%, var(--ink-accent)));-webkit-background-clip:text;background-clip:text}.section-kicker:after{content:"";background:linear-gradient(90deg, color-mix(in srgb, var(--ink-accent) 45%, transparent), transparent);width:48px;height:1px;display:inline-block}.section-title{font-family:var(--font-display);letter-spacing:-.03em;text-wrap:balance;max-width:24ch;font-size:clamp(2rem,4.6vw,3.4rem);font-weight:700;line-height:1.08}.section-title.center{text-align:center;max-width:none}.section-lead{color:var(--text-dim);max-width:62ch;margin-top:14px;font-size:1.18rem}.section-head.masthead .section-kicker{width:100%;display:flex}.section-head.masthead .section-kicker:after{flex:1;width:auto}.section-head.masthead .section-title{max-width:none;font-size:clamp(2.2rem,5vw,4rem)}@media (min-width:961px){.section-head.split{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;column-gap:clamp(32px,4vw,72px);display:grid}.section-head.split .section-kicker{grid-column:1/-1;display:flex}.section-head.split .section-kicker:after{flex:1;width:auto}.section-head.split .section-title{grid-area:2/1/4;align-self:end;max-width:14ch;font-size:clamp(2.2rem,5vw,4rem)}.section-head.split .hero-desc,.section-head.split .section-lead{text-align:left;grid-area:2/2;place-self:end;max-width:52ch;margin-bottom:0}.section-head.split .hero-cta{grid-area:3/2;justify-self:end;margin-top:0}}.tl-date,.project-period,.cert-meta,.blog-meta,.lesson-date,.course-meta,.digest-meta,.stat-num,.prog-count,.anum,.ip-count,.mkt-price{font-variant-numeric:tabular-nums}.footer-col a,.project-links a,.bl-read,.digest-open,.post-back,.blog-readmore,.cert-verify,.footer-top{background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px}.footer-col a:hover,.project-links a:hover,.bl-read:hover,.digest-open:hover,.post-back:hover,.blog-readmore:hover,.cert-verify:hover,.footer-top:hover{background-size:100% 1px}.about-grid{grid-template-columns:1.4fr 1fr;align-items:start;gap:28px;display:grid}.about-text{padding:42px;font-size:clamp(1.05rem,1rem + .25vw,1.15rem)}.about-text p{color:var(--text-dim);max-width:72ch;margin-bottom:16px}.about-text p:last-child{margin-bottom:0}.about-text strong{color:var(--text)}.about-stats{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (min-width:1200px){.about-stats{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}}.stat-card{flex-direction:column;gap:7px;padding:24px 20px;transition:transform .25s,box-shadow .25s,background .25s;display:flex}.stat-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translateY(-4px)}.stat-num{font-family:var(--font-display);color:var(--ink-accent);font-size:clamp(2rem,3.6vw,2.9rem);font-weight:700}.stat-label{letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);font-size:.75rem;font-weight:500;line-height:1.5}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:20px;display:grid}.skill-card{padding:26px;transition:transform .25s,box-shadow .25s,background .25s}.skill-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translateY(-5px)}.skill-icon{margin-bottom:12px;font-size:26px}.skill-card h3{font-family:var(--font-display);margin-bottom:16px;font-size:1.3rem}.tags{flex-wrap:wrap;gap:8px;display:flex}.tags span{font-size:.8125rem;line-height:1.5;font-family:var(--font-mono);background:var(--surface-2);color:var(--text-dim);border-radius:8px;padding:5px 12px}.lang-bars{border-radius:var(--radius);background:color-mix(in srgb, var(--panel) 72%, transparent);box-shadow:var(--shadow-card);margin-top:30px;padding:30px 34px}.lang-bars-title{font-family:var(--font-display);margin-bottom:20px;font-size:1.15rem}.bar-row{margin-bottom:16px}.bar-row:last-child{margin-bottom:0}.bar-label{color:var(--text-dim);margin-bottom:8px;font-size:14px;display:block}.bar{background:var(--surface-2);border-radius:6px;height:8px;overflow:hidden}.bar i{background:var(--grad);border-radius:6px;width:0;height:100%;transition:width 1.2s cubic-bezier(.2,.8,.2,1);display:block}.lang-bars.reveal-in .bar i,.bar.animate i{width:var(--w)}.timeline{padding-left:34px;position:relative}.timeline:before{content:"";background:linear-gradient(var(--cyan), var(--violet), transparent);width:2px;position:absolute;top:8px;bottom:8px;left:7px}.tl-item{margin-bottom:26px;position:relative}.tl-item:last-child{margin-bottom:0}.tl-dot{background:var(--bg-2);border:3px solid var(--cyan);width:16px;height:16px;box-shadow:0 0 0 4px color-mix(in srgb, var(--cyan) 12%, transparent);border-radius:50%;position:absolute;top:26px;left:-34px}.tl-card{max-width:min(1300px,100%);padding:clamp(26px,2.4vw,40px) clamp(28px,3.2vw,56px);transition:transform .25s,box-shadow .25s,background .25s}.tl-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translate(4px)}.tl-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:4px;display:flex}.tl-card h3{font-family:var(--font-display);font-size:clamp(1.4rem,1.2rem + .9vw,1.75rem)}.tl-date{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-accent);white-space:nowrap;font-size:.875rem}.tl-company{color:var(--text-faint);margin-bottom:16px;font-size:.95rem}.tl-card ul{flex-direction:column;gap:10px;max-width:70ch;display:flex}.tl-card li{color:var(--text-dim);padding-left:20px;font-size:clamp(1rem,.95rem + .25vw,1.09rem);position:relative}.tl-card li:before{content:"▹";color:var(--ink-accent);position:absolute;left:0}.tl-card strong{color:var(--text)}.projects-grid{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:22px;display:grid}.project-card{flex-direction:column;padding:28px;transition:transform .25s,box-shadow .25s,background .25s;display:flex}.project-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translateY(-6px)}.project-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.project-icon{font-size:30px}.project-period{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);font-size:.72rem}.project-card h3{font-family:var(--font-display);margin-bottom:4px;font-size:1.35rem}.project-sub{color:var(--ink-accent);font-size:.8125rem;line-height:1.5;font-family:var(--font-mono);margin-bottom:14px}.project-desc{color:var(--text-dim);flex:1;max-width:62ch;margin-bottom:18px;font-size:1rem}.project-links{margin-top:16px}.project-links a{color:var(--ink-accent);font-size:.9375rem;font-weight:600;transition:background-size .3s}.edu-grid{grid-template-columns:1fr;align-items:start;gap:28px;display:grid}.edu-col-title{font-family:var(--font-display);margin-bottom:18px;font-size:clamp(1.2rem,1.05rem + .5vw,1.4rem)}.edu-card{max-width:min(1100px,100%);padding:26px clamp(26px,2.6vw,40px)}.edu-card h4{font-family:var(--font-display);font-size:clamp(1.22rem,1.1rem + .55vw,1.5rem)}.cert-meta{color:var(--text-faint);font-size:.8125rem;line-height:1.5;font-family:var(--font-mono)}.cert-block{margin-top:44px}.cert-carousel{position:relative}.cert-track{scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:22px;padding:6px 2px 18px;display:flex;overflow-x:auto}.cert-track::-webkit-scrollbar{display:none}.cert-slide{scroll-snap-align:center;cursor:zoom-in;border-radius:18px;flex:0 0 min(620px,84%);margin:0;padding:0;transition:transform .28s,box-shadow .28s;overflow:hidden}.cert-slide:hover{box-shadow:var(--shadow-lift);transform:translateY(-6px)}.cert-slide img{background:#fff;width:100%;height:auto;display:block}.cert-slide figcaption{padding:16px 18px 18px}.cert-slide figcaption h4{font-family:var(--font-display);margin-bottom:4px;font-size:1.15rem;font-weight:600}.cert-nav{z-index:3;background:var(--panel);width:44px;height:44px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;border:0;border-radius:50%;place-items:center;font-size:26px;line-height:1;transition:background .2s,transform .2s;display:grid;position:absolute;top:42%;transform:translateY(-50%);box-shadow:0 10px 26px -10px #00000080}.cert-nav:hover{transform:translateY(-50%)scale(1.08)}.cert-prev{left:-10px}.cert-next{right:-10px}.cert-dots{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:4px;display:flex}.cert-dots button{background:var(--border-strong);cursor:pointer;border:0;border-radius:50%;width:8px;height:8px;padding:0;transition:transform .2s,background .2s}.cert-dots button.active{background:var(--ink-accent);transform:scale(1.35)}@media (max-width:720px){.cert-slide{flex-basis:92%}.cert-nav{display:none}}.contact-box{text-align:center;flex-direction:column;align-items:center;padding:76px clamp(24px,6vw,96px);display:flex}.contact-desc{color:var(--text-dim);max-width:52ch;margin:6px auto 30px;font-size:1.18rem}.contact-actions{flex-wrap:wrap;justify-content:center;gap:14px;margin-bottom:28px;display:flex}.contact-form{text-align:left;flex-direction:column;gap:12px;width:100%;max-width:640px;margin:0 auto 26px;display:flex}.cf-row{gap:12px;display:flex}.contact-form input,.contact-form textarea{background:var(--surface-2);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--font-body);border-radius:12px;outline:none;padding:13px 16px;font-size:15px;transition:border-color .2s,box-shadow .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:color-mix(in srgb, var(--ink-accent) 60%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--ink-accent) 16%, transparent)}.contact-form textarea{resize:vertical}.contact-form .hp{opacity:0;width:1px;height:1px;position:absolute;left:-9999px}.contact-form .btn{align-self:center;min-width:200px}.cf-status{text-align:center;min-height:1.2em;margin:0;font-size:14px}.cf-status.ok{color:var(--green)}.cf-status.err{color:#ff7a7a}@media (max-width:540px){.cf-row{flex-direction:column}}.contact-meta{color:var(--text-faint);flex-wrap:wrap;justify-content:center;gap:24px;font-size:.8125rem;display:flex}.footer{border-top:1px solid var(--border);background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--bg-2) 75%, transparent));padding:64px 0 30px}.footer-grid{grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;padding-bottom:44px;display:grid}.footer-tag{color:var(--text-dim);max-width:30ch;margin-top:16px;font-size:1.06rem;line-height:1.6}.footer-col h4{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);margin-bottom:16px;font-size:.72rem;font-weight:500;line-height:1.5}.footer-col ul{flex-direction:column;gap:10px;display:flex}.footer-col a{color:var(--text-dim);font-size:.9375rem;transition:color .2s,background-size .3s}.footer-col a:hover{color:var(--ink-accent)}.footer-bottom{border-top:1px solid var(--border);color:var(--text-faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-top:24px;font-size:.875rem;display:flex}.footer-top{color:var(--text-dim);cursor:pointer;background-color:#0000;border:0;font-family:inherit;font-size:.875rem;transition:color .2s,background-size .3s}.footer-top:hover{color:var(--ink-accent)}@media (max-width:860px){.footer-grid{grid-template-columns:1fr 1fr}.footer-about{grid-column:1/-1}}@media (max-width:520px){.footer-grid{grid-template-columns:1fr;gap:28px}}@media (max-width:700px){.footer-bottom{padding-right:150px}}[data-reveal]{opacity:0;transition:opacity .7s,transform .7s cubic-bezier(.2,.8,.2,1);transform:translateY(28px)}[data-reveal].in{opacity:1;transform:none}@media (max-width:920px){.skills-grid,.projects-grid{grid-template-columns:repeat(2,1fr)}.about-grid{grid-template-columns:1fr}}@media (max-width:1150px){.nav-links{width:min(82%,300px);height:100dvh;padding:calc(88px + env(safe-area-inset-top)) 22px calc(40px + env(safe-area-inset-bottom));visibility:hidden;border-left:1px solid var(--border);z-index:110;background:#0a101f;flex-direction:column;align-items:stretch;gap:4px;transition:transform .35s,visibility 0s .35s;position:fixed;inset:0 0 0 auto;overflow-y:auto;transform:translate(101%);box-shadow:-24px 0 60px #00000073}[data-mode=light] .nav-links{background:#f3f5fb}.navbar .nav-links.open{visibility:visible;transition:transform .35s,visibility;transform:translate(0)!important}.nav-links a{border-radius:10px;padding:13px 16px;font-size:1.05rem}.menu-btn{z-index:115;display:flex;position:relative}}@media (max-width:760px){.edu-grid{grid-template-columns:1fr}.about-stats{grid-template-columns:1fr 1fr}}@media (min-width:1151px) and (max-width:1279px){.nav-inner{gap:12px}.nav-links{gap:2px}.nav-links a{padding:8px 10px;font-size:.9rem}}@media (max-width:540px){.skills-grid,.projects-grid{grid-template-columns:1fr}.contact-box{padding:40px 22px}.contact-actions{flex-direction:column;width:100%}.contact-actions .btn{width:100%}.tl-card,.about-text{padding:22px}.brand-name{display:none}}.about-top{grid-template-columns:minmax(280px,380px) 1fr;align-items:stretch;gap:36px;margin-bottom:28px;display:grid}.photo-card{justify-content:center;align-items:center;padding:16px;display:flex}.photo-frame{aspect-ratio:1;background:var(--grad-soft);border-radius:16px;width:100%;position:relative;overflow:hidden}.photo-frame img{object-fit:cover;width:100%;height:100%;display:block}.photo-fallback{font-family:var(--font-display);color:#06101a;background:var(--grad);justify-content:center;align-items:center;font-size:4rem;font-weight:700;display:flex;position:absolute;inset:0}.photo-ring{background:var(--grad);-webkit-mask-composite:xor;opacity:.6;pointer-events:none;border-radius:18px;padding:2px;position:absolute;inset:-2px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.theme-fab{z-index:120;cursor:pointer;background:var(--grad);color:#06101a;border:none;border-radius:50%;place-items:center;width:52px;height:52px;font-size:22px;transition:transform .25s;display:grid;position:fixed;bottom:22px;right:22px;box-shadow:0 10px 30px -8px #0009}.theme-fab:hover{transform:rotate(25deg)scale(1.08)}.theme-panel{z-index:120;opacity:0;pointer-events:none;visibility:hidden;border-radius:16px;width:230px;padding:18px;transition:opacity .25s,transform .25s,visibility 0s .25s;position:fixed;bottom:86px;right:22px;transform:translateY(12px)scale(.96)}.theme-panel.open{opacity:1;pointer-events:auto;visibility:visible;transition:opacity .25s,transform .25s,visibility;transform:none}.theme-panel h4{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.18em;color:var(--text-faint);margin-bottom:12px;font-size:.72rem}.swatches{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.swatch{cursor:pointer;background:var(--surface-2);border:0;border-radius:11px;flex-direction:column;align-items:flex-start;gap:7px;padding:9px;transition:transform .2s,box-shadow .2s;display:flex}.swatch:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.swatch-bar{border-radius:7px;width:100%;height:22px}.swatch-name{color:var(--text-dim);font-size:.75rem;font-family:var(--font-mono)}.mode-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:16px;padding-top:14px;display:flex}.mode-row>span{text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);font-size:.75rem;font-family:var(--font-display)}.mode-toggle{cursor:pointer;background:var(--surface-2);border:0;border-radius:999px;gap:4px;padding:4px;display:flex}.mode-opt{opacity:.45;border-radius:999px;place-items:center;width:30px;height:26px;font-size:14px;transition:opacity .2s,background .2s;display:grid}.mode-opt.active{opacity:1;background:var(--grad)}.sw-ocean{background:linear-gradient(120deg,#22d3ee,#3b82f6,#6366f1)}.sw-cyber{background:linear-gradient(120deg,#00e5ff,#7c5cff,#ff5cc8)}.sw-matrix{background:linear-gradient(120deg,#45f0a0,#14b8a6,#00e5ff)}.sw-sunset{background:linear-gradient(120deg,#ffd166,#ff8a3d,#ff5cc8)}.gallery-grid{columns:3;column-gap:16px}.gallery-item{break-inside:avoid;border-radius:var(--radius);cursor:pointer;background:var(--surface);border:0;margin-bottom:16px;transition:transform .25s,box-shadow .25s;position:relative;overflow:hidden}.gallery-item:hover{box-shadow:var(--shadow-lift);transform:translateY(-4px)}.gallery-item img,.gallery-item video{width:100%;display:block}.vid-badge{z-index:2;color:#fff;pointer-events:none;background:#05081099;border-radius:50%;place-items:center;width:48px;height:48px;padding-left:3px;font-size:18px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lightbox video{max-width:92vw;max-height:82vh;box-shadow:var(--shadow-lift);background:#000;border-radius:14px}.gallery-item .ph{aspect-ratio:4/3;background:var(--grad-soft);place-items:center;font-size:2.4rem;display:grid}.gallery-cap{color:#fff;opacity:0;background:linear-gradient(#0000,#050810d9);padding:28px 16px 14px;font-size:13.5px;transition:opacity .25s;position:absolute;inset:auto 0 0}.gallery-item:hover .gallery-cap{opacity:1}.gallery-cap .g-loc{font-family:var(--font-mono);color:var(--ink-accent);margin-top:2px;font-size:.72rem;display:block}.empty-note{color:var(--text-faint);text-align:center;padding:22px;font-size:.875rem}.lightbox{z-index:200;background:#04060ce0;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.lightbox.open{display:flex}.lightbox img{max-width:92vw;max-height:82vh;box-shadow:var(--shadow-lift);border-radius:14px}.lightbox-cap{text-align:center;color:var(--text-dim);font-size:14px;position:absolute;bottom:26px;left:0;right:0}.lightbox-close{color:#fff;cursor:pointer;z-index:20;background:0 0;border:none;font-size:30px;line-height:1;position:absolute;top:22px;right:26px}.blog-list{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.blog-card{flex-direction:column;padding:0;transition:transform .25s,box-shadow .25s,background .25s;display:flex;overflow:hidden}.blog-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translateY(-5px)}.blog-media{aspect-ratio:16/9;background:var(--grad-soft);width:100%;position:relative;overflow:hidden}.blog-media img,.blog-media video,.blog-media iframe{object-fit:cover;border:0;width:100%;height:100%;display:block}.blog-media .ph{place-items:center;width:100%;height:100%;font-size:2.6rem;display:grid}.blog-type-tag{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cyan);background:#050810b3;border-radius:7px;padding:4px 10px;font-size:11px;line-height:1.5;position:absolute;top:12px;left:12px}.blog-body{flex-direction:column;flex:1;padding:22px 24px 24px;display:flex}.blog-meta{font-family:var(--font-mono);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;font-size:.8125rem;line-height:1.5;display:flex}.blog-meta .b-loc{color:var(--ink-accent)}.blog-card h3{font-family:var(--font-display);margin-bottom:8px;font-size:1.32rem}.blog-card p{color:var(--text-dim);font-size:1rem}.blog-card.text-only .blog-body{padding-top:24px}@media (max-width:920px){.gallery-grid{columns:2}.blog-list{grid-template-columns:1fr}.about-top{grid-template-columns:220px 1fr}}@media (max-width:620px){.gallery-grid{columns:1}.about-top{grid-template-columns:1fr}.photo-card{width:100%;max-width:260px;margin:0 auto}.theme-fab{bottom:16px;right:16px}.theme-panel{bottom:80px;right:16px}}.filter-bar{flex-wrap:wrap;gap:10px;margin-bottom:26px;display:flex}.filter-chip{cursor:pointer;font-family:var(--font-mono);background:color-mix(in srgb, var(--panel) 72%, transparent);color:var(--text-dim);border:0;border-radius:999px;padding:8px 16px;font-size:.8125rem;transition:color .2s,background .2s,transform .2s}.filter-chip:hover:not(.active){color:var(--text);background:var(--surface-2);transform:translateY(-2px)}.filter-chip.active{color:#06101a;background:var(--grad);border-color:#0000;font-weight:600}.blog-readmore{cursor:pointer;color:var(--ink-accent);font-family:var(--font-body);background-color:#0000;border:none;align-self:flex-start;margin-top:14px;padding:0;font-size:.875rem;font-weight:600;transition:background-size .3s}.post-modal{z-index:210;background:#04060cd9;justify-content:center;align-items:flex-start;padding:40px 20px;display:none;position:fixed;inset:0;overflow-y:auto}.post-modal.open{display:flex}.post-modal-inner{border-radius:var(--radius);width:100%;max-width:760px;animation:.35s cubic-bezier(.2,.8,.2,1) popin;position:relative;overflow:hidden}@keyframes popin{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:none}}.post-close{z-index:3;color:#fff;cursor:pointer;background:#05081099;border:0;border-radius:50%;width:38px;height:38px;font-size:24px;line-height:1;position:absolute;top:14px;right:16px}.post-close:hover{background:#050810e6}.post-media{background:var(--grad-soft);width:100%;max-height:420px;overflow:hidden}.post-media img,.post-media video{object-fit:cover;width:100%;max-height:420px;display:block}.post-media-video{aspect-ratio:16/9;max-height:none}.post-media-video iframe{border:0;width:100%;height:100%;display:block}.post-text{padding:30px 34px 36px}.post-text h2{font-family:var(--font-display);margin:6px 0 16px;font-size:1.7rem;line-height:1.15}.post-text p{color:var(--text-dim);margin-bottom:14px;font-size:1.02rem}.lx-hero{min-height:auto;padding-top:150px;padding-bottom:40px}.lessons-grid{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:20px;display:grid}.lesson-card{flex-direction:column;padding:26px 28px;transition:transform .25s,box-shadow .25s,background .25s;display:flex}.lesson-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translateY(-4px)}.lesson-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.lesson-date{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-faint);font-size:.75rem}.lesson-cat{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:var(--grad-soft);color:var(--ink-accent);border-radius:7px;padding:4px 11px;font-size:.72rem;line-height:1.5}.lesson-card h3{font-family:var(--font-display);margin-bottom:10px;font-size:1.38rem}.lesson-body{color:var(--text-dim);flex:1;font-size:1rem}.lesson-body p{max-width:65ch;margin-bottom:10px}.lesson-body code,.post-text code{font-family:var(--font-mono);background:var(--surface-2);color:var(--ink-accent);border-radius:6px;padding:2px 6px;font-size:.88em}.lesson-cmds{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.lesson-cmds-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);width:100%;margin-bottom:2px;font-size:.72rem}.cmd-chip{cursor:pointer;font-family:var(--font-mono);background:var(--surface-2);color:var(--text-dim);border-radius:8px;padding:6px 12px;font-size:.8125rem;transition:color .2s,background .2s,transform .2s}.cmd-chip:before{content:"$ ";color:var(--ink-accent)}.cmd-chip:hover{color:var(--text);background:color-mix(in srgb, var(--ink-accent) 10%, var(--surface-2));transform:translateY(-2px)}.term-window{padding:0;overflow:hidden}.term-bar{border-bottom:1px solid var(--border);background:#ffffff0a;align-items:center;gap:8px;padding:12px 16px;display:flex}.term-dot{border-radius:50%;width:12px;height:12px}.d-red{background:#ff5f57}.d-yellow{background:#febc2e}.d-green{background:#28c840}.term-bar-title{font-family:var(--font-mono);color:var(--text-faint);margin-left:10px;font-size:.78rem}.term{cursor:text;height:440px;font-family:var(--font-mono);color:#d8e0f0;background:#03060c8c;padding:18px 20px;font-size:13.5px;line-height:1.6;overflow-y:auto}.term::-webkit-scrollbar{width:9px}.term::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px}.term-line{white-space:pre-wrap;word-break:break-word}.term-inputline{align-items:baseline;gap:8px;display:flex}.term-prompt{color:var(--green);white-space:nowrap}.term-input{caret-color:var(--cyan);font-family:var(--font-mono);color:#eaf0ff;background:0 0;border:none;outline:none;flex:1;padding:0;font-size:13.5px}.term-cmd{color:var(--cyan)}.term-dir{color:#6ea8ff;font-weight:600}.term-file{color:#d8e0f0}.term-err{color:#ff7a7a}.term-match{color:#ffe7a6;background:#ffd16647;border-radius:3px}.term-dim{color:var(--text-faint)}.term-logo{color:var(--cyan)}.nano-overlay{z-index:240;background:#04060ccc;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.nano-overlay.open{display:flex}.nano-win{width:100%;max-width:760px;height:min(75vh,560px);font-family:var(--font-mono);background:#0b0f1a;border:0;border-radius:12px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 30px 80px -20px #000000b3}.nano-top{color:#1a1a1a;text-align:center;background:#e8e8e8;padding:7px 14px;font-size:13px;font-weight:600}.nano-area{resize:none;color:#e8ecf6;width:100%;font-family:var(--font-mono);background:#0b0f1a;border:none;outline:none;flex:1;padding:16px 18px;font-size:13.5px;line-height:1.6}.nano-bottom{color:#1a1a1a;background:#e8e8e8;justify-content:center;gap:22px;padding:7px 14px;font-size:.75rem;display:flex}.nano-bottom b{color:#000}.term-note{color:var(--text-faint);margin-top:14px;font-size:13px}@media (max-width:760px){.term{height:360px;font-size:.78rem}.post-text{padding:24px 22px 28px}}.books-grid{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:20px;display:grid}.book-card{align-items:flex-start;gap:18px;padding:22px;transition:transform .25s,box-shadow .25s,background .25s;display:flex;position:relative}.book-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translateY(-4px)}.book-cover{background:var(--grad-soft);border-radius:10px;flex-shrink:0;width:92px;height:124px;overflow:hidden}.book-cover img{object-fit:cover;width:100%;height:100%;display:block}.book-emoji{place-items:center;width:100%;height:100%;font-size:2.6rem;display:grid}.book-info{flex:1;min-width:0}.book-info h3{font-family:var(--font-display);margin-bottom:3px;font-size:1.28rem}.book-author{color:var(--ink-accent);font-size:.8125rem;line-height:1.5;font-family:var(--font-mono);margin-bottom:10px}.book-desc{color:var(--text-dim);margin-bottom:16px;font-size:.97rem}.book-actions{flex-wrap:wrap;gap:10px;display:flex}.book-nofile{color:var(--text-faint);font-size:.78rem}.blog-card,.lesson-card{position:relative}.pin-badge{z-index:3;filter:drop-shadow(0 2px 4px #00000080);font-size:14px;position:absolute;top:10px;right:12px}.gallery-item .pin-badge,.blog-card .pin-badge{top:10px;left:12px;right:auto}.reader-modal{z-index:230;background:#04060ce6;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.reader-modal.open{display:flex}.reader-inner{flex-direction:column;width:100%;max-width:960px;height:90vh;padding:0;display:flex;overflow:hidden}.reader-title{font-family:var(--font-display);text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:600;overflow:hidden}@media (max-width:760px){.reader-inner{height:88vh}}html,body{max-width:100%}.tags span,.cmd-chip,.lesson-body code,.post-text code,.project-sub,.cert-meta,.term-bar-title,.blog-meta,.lesson-meta{overflow-wrap:anywhere;word-break:break-word}.cmd-chip{white-space:normal;text-align:left;max-width:100%}.lesson-body,.blog-card p,.project-desc,.about-text p{overflow-wrap:anywhere}img,video,iframe{max-width:100%}.lesson-foot{margin-top:16px}.lesson-done{cursor:pointer;font-family:var(--font-body);background:var(--surface);color:var(--text-dim);border:0;border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-size:.8125rem;font-weight:600;transition:color .2s,background .2s;display:inline-flex}.lesson-done:hover{background:var(--surface-2);color:var(--text)}.lesson-done .check{border:1.5px solid var(--text-faint);border-radius:50%;place-items:center;width:18px;height:18px;font-size:.75rem;line-height:1;display:inline-grid}.lesson-done.is-done{background:var(--grad-soft);color:var(--green);border-color:#0000}.lesson-done.is-done .check{border-color:var(--green);color:var(--green)}.lesson-card.done{background:color-mix(in srgb, var(--green) 4%, transparent)}.btn-sm{padding:9px 15px;font-size:.85rem}.btn-block{width:100%;margin-top:12px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important}[data-reveal]{opacity:1;transform:none}}section.page-hero{padding-top:124px}article.post-page{max-width:780px;padding-top:120px;padding-bottom:80px}article.post-page:not(.album-page){background:color-mix(in srgb, var(--panel) 88%, transparent);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:120px clamp(22px,3vw,40px) 80px}article.post-page .post-text{padding:0}article.post-page.album-page{max-width:min(1240px,100%)}.post-back{color:var(--text-dim);margin-bottom:22px;font-size:.875rem;font-weight:600;transition:color .2s,background-size .3s;display:inline-block}.post-back:hover{color:var(--ink-accent)}.post-page .post-media{border-radius:var(--radius);margin:0 0 28px;overflow:hidden}.post-page .post-media img,.post-page .post-media video{width:100%;display:block}.post-page .post-media-video{padding-top:56.25%;position:relative}.post-page .post-media-video iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.post-title{font-family:var(--font-display);margin:10px 0 18px;font-size:clamp(1.9rem,4vw,2.9rem);line-height:1.12}.post-text .blog-meta{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:14px;font-size:.8125rem;display:flex}.read-time{color:var(--ink-accent);font-weight:600}.post-text p{color:var(--text);margin:0 0 1.15em;font-size:1.08rem;line-height:1.8}.post-text strong{color:var(--ink-accent)}.post-share{border-top:1px solid var(--border);margin:40px 0 10px;padding-top:26px}.post-share-label{color:var(--text-dim);margin-bottom:12px;font-size:.95rem;font-weight:600;display:block}.share-row{flex-wrap:wrap;gap:10px;display:flex}.share-btn{background:color-mix(in srgb, var(--panel) 72%, transparent);width:44px;height:44px;color:var(--text);cursor:pointer;border:0;border-radius:50%;place-items:center;transition:transform .18s,color .18s,background .18s;display:grid}.share-btn:hover{background:var(--surface-2);color:var(--ink-accent);transform:translateY(-3px)}.share-btn.ok{color:var(--green);background:color-mix(in srgb, var(--green) 12%, transparent)}.post-related{margin-top:52px}.post-related h3{font-family:var(--font-display);margin-bottom:16px;font-size:1.25rem}.related-grid{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:14px;display:grid}.related-card{border-radius:var(--radius);padding:16px 18px;display:block}.related-card:hover{transform:translateY(-3px)}.related-date{color:var(--text-dim);font-size:.8rem}.related-card h4{margin-top:6px;font-size:1rem;line-height:1.35}.bl-grid{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:22px;display:grid}@media (min-width:1240px){.bl-grid.bl-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.bl-card{border-radius:var(--radius);flex-direction:column;transition:transform .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.bl-card:hover{box-shadow:var(--shadow);transform:translateY(-5px)}.bl-thumb{aspect-ratio:16/9;background:var(--surface);position:relative;overflow:hidden}.bl-thumb img,.bl-thumb video{object-fit:cover;width:100%;height:100%}.bl-thumb .ph{place-items:center;width:100%;height:100%;font-size:2.4rem;display:grid}.bl-thumb-text{background:var(--grad-soft);place-items:center;font-size:2.6rem;display:grid}.bl-body{flex-direction:column;flex:1;gap:8px;padding:18px 20px 22px;display:flex}.bl-body h3{font-size:1.28rem;line-height:1.3}.bl-body p{color:var(--text-dim);flex:1;max-width:68ch;font-size:1.02rem;line-height:1.6}.bl-read{color:var(--ink-accent);margin-top:4px;font-size:.9rem;font-weight:600}.blog-viewall{width:max-content;margin:28px auto 0;display:flex}.album-grid{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:20px;display:grid}.album-card{border-radius:var(--radius);aspect-ratio:4/3;transition:transform .2s,box-shadow .2s;display:block;position:relative;overflow:hidden}.album-card:hover{box-shadow:var(--shadow);transform:translateY(-5px)}.album-card img{object-fit:cover;width:100%;height:100%;transition:transform .4s}.album-card:hover img{transform:scale(1.05)}.album-card .ph{background:var(--grad-soft);place-items:center;width:100%;height:100%;font-size:2.6rem;display:grid}.album-overlay{background:linear-gradient(#0000 35%,#000000d1);flex-direction:column;justify-content:flex-end;padding:16px 18px;display:flex;position:absolute;inset:0}.album-overlay h3{color:#fff;font-size:1.1rem}.album-count{color:#fffc;margin-top:2px;font-size:.82rem}.album-photos{grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:10px;display:grid}.album-photos figure{aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;background:var(--surface);position:relative;overflow:hidden}.album-photos img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.album-photos figure:hover img{transform:scale(1.06)}.album-title{margin-bottom:24px}.album-photos figure figcaption{color:#fff;opacity:0;background:linear-gradient(#0000,#000c);padding:8px 10px;font-size:.78rem;transition:opacity .2s;position:absolute;bottom:0;left:0;right:0}.album-photos figure:hover figcaption{opacity:1}.album-photos .vid-badge{width:44px;height:44px}.lb-count{opacity:.7;margin-left:8px;font-size:.85em}.digest-card{border-radius:var(--radius);align-items:center;gap:16px;padding:22px 24px;transition:transform .2s,box-shadow .2s,background .2s;display:flex;position:relative;overflow:hidden}.digest-card:hover{box-shadow:var(--shadow-lift);background:var(--surface-2);transform:translateY(-4px)}.digest-bg{opacity:.16;z-index:0;background-position:50%;background-size:cover;position:absolute;inset:0}.digest-card:hover .digest-bg{opacity:.26}.digest-icon{z-index:1;width:56px;height:56px;color:var(--ink-accent);background:var(--panel-2);border-radius:10px;flex-shrink:0;place-items:center;display:grid;position:relative}.digest-body{z-index:1;flex-direction:column;flex:1;gap:3px;min-width:0;display:flex;position:relative}.digest-body b{font-family:var(--font-display);font-size:1.2rem}.digest-sub{color:var(--ink-accent);font-size:.86rem;font-weight:600}.digest-teaser{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:.86rem;overflow:hidden}.digest-arrow{z-index:1;color:var(--text-dim);flex-shrink:0;font-size:1.3rem;transition:transform .2s,color .2s;position:relative}.digest-card:hover .digest-arrow{color:var(--ink-accent);transform:translate(4px)}@media (max-width:680px){.digest-grid{grid-template-columns:1fr}}.hero{overflow:hidden}.hero-canvas{z-index:0;pointer-events:none;position:absolute;inset:0}.hero-canvas canvas{width:100%!important;height:100%!important}.hero .hero-inner{z-index:2;position:relative}.hero-hi{color:var(--text-dim);font-size:clamp(1.8rem,2.6vw,2.6rem);font-weight:500}.hero-role-line{font-family:var(--font-mono);min-height:1.6em;margin:4px 0 22px;font-size:clamp(1.25rem,2.2vw,1.85rem)}.hero-role-prefix{color:var(--text-dim)}.caret{width:2px;color:var(--cyan);margin-left:1px;animation:1s steps(2,end) infinite blink;display:inline-block}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.digest-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}@media (min-width:1440px){.digest-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.digest-wrap{display:block}.digest-card{border-radius:var(--radius);flex-direction:column;height:100%;transition:transform .25s,box-shadow .25s,background .25s;display:flex;overflow:hidden}.digest-card:hover{background:var(--surface-2);box-shadow:var(--shadow-lift);transform:translateY(-6px)}.digest-cover{object-fit:cover;width:100%;height:clamp(150px,12vw,200px);display:block}.digest-cover.ph{color:var(--text-faint);background:var(--panel-2);place-items:center;display:grid}.digest-body{flex-direction:column;flex:1;gap:7px;padding:18px 20px 22px;display:flex;position:relative}.digest-icon{width:46px;height:46px;color:var(--ink-accent);background:var(--panel-2);box-shadow:var(--shadow-card);border-radius:10px;place-items:center;display:grid;position:absolute;top:-26px;right:18px}.digest-body h3{font-size:1.35rem}.digest-body p{color:var(--text-dim);flex:1;max-width:60ch;font-size:1rem;line-height:1.5}.digest-meta{color:var(--text-faint);font-size:.8125rem;line-height:1.5;font-family:var(--font-mono)}.digest-open{color:var(--ink-accent);margin-top:4px;font-size:.9rem;font-weight:600}@media (max-width:680px){.digest-grid{grid-template-columns:1fr}}.hero-title span{opacity:0;animation:.9s cubic-bezier(.2,.7,.2,1) forwards heroUp}.hero-title span:first-child{animation-delay:.12s}.hero-title span:nth-child(2){animation-delay:.26s}@keyframes heroUp{0%{opacity:0;transform:translateY(38px)}to{opacity:1;transform:translateY(0)}}.ad-loading{min-height:100vh;color:var(--text-dim);place-items:center;display:grid}.ad-lock{place-items:center;min-height:100vh;padding:24px;display:grid}.ad-lock-card{border-radius:var(--radius);text-align:center;flex-direction:column;gap:14px;width:100%;max-width:380px;padding:36px 30px;display:flex}.ad-lock-icon{font-size:2.4rem}.ad-lock-card h1{font-family:var(--font-display);font-size:1.5rem}.ad-lock-card p{color:var(--text-dim);font-size:.92rem}.ad-lock-card input{width:100%}.ad-lock-note{color:var(--text-faint);font-size:.78rem}.ad-err{color:#ff6b6b;font-size:.85rem}.ad-app{min-height:100vh;display:flex}.ad-side{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:6px;width:256px;height:100vh;padding:24px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.ad-brand{font-family:var(--font-display);align-items:center;gap:10px;padding:0 8px 14px;font-size:1.1rem;display:flex}.ad-navlabel{text-transform:uppercase;letter-spacing:.14em;color:var(--text-faint);margin:14px 8px 4px;font-size:.72rem}.ad-side nav button{text-align:left;width:100%;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:9px 12px;font-family:inherit;font-size:.92rem;transition:background .15s,color .15s}.ad-side nav button:hover{background:var(--surface-2);color:var(--text)}.ad-side nav button.active{background:color-mix(in srgb, var(--cyan) 13%, transparent);color:var(--cyan);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cyan) 30%, transparent);font-weight:600}.ad-side-foot{flex-direction:column;gap:8px;margin-top:auto;padding-top:16px;display:flex}.ad-burger{z-index:60;background:var(--surface);width:40px;height:40px;color:var(--text);cursor:pointer;box-shadow:var(--shadow-card);border:0;border-radius:10px;font-size:1.2rem;display:none;position:fixed;top:12px;left:12px}.ad-main{flex:1;max-width:980px;padding:34px clamp(18px,4vw,48px)}.ad-section{flex-direction:column;gap:18px;display:flex}.ad-head{align-items:center;gap:14px;display:flex}.ad-head h2{font-family:var(--font-display);font-size:1.5rem}.ad-msg{color:var(--cyan);font-size:.9rem}.ad-card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow-card);border:0;flex-direction:column;gap:12px;padding:22px;display:flex}.ad-card h3{font-size:1.05rem}.ad-form{gap:12px;display:grid}.ad-field{flex-direction:column;gap:5px;display:flex}.ad-field>span{color:var(--text-dim);font-size:.82rem}.ad-app input:not([type=checkbox]):not([type=file]),.ad-app textarea,.ad-app select,.ad-lock input{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:9px;padding:10px 12px;font-size:.92rem;transition:border-color .15s}.ad-app input:not([type=checkbox]):not([type=file]):focus,.ad-app textarea:focus,.ad-app select:focus,.ad-lock input:focus{border-color:var(--cyan);outline:none}.ad-app input::placeholder,.ad-app textarea::placeholder{color:var(--text-faint)}.ad-app select option{background:var(--bg);color:var(--text)}.ad-app textarea{resize:vertical}.ad-check{color:var(--text-dim);align-items:center;gap:8px;font-size:.9rem;display:flex}.ad-check input{width:auto}.ad-actions{gap:10px;display:flex}.ad-list{flex-direction:column;gap:6px;display:flex}.ad-item{background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;transition:background .15s,box-shadow .15s;display:flex}.ad-item.active{background:var(--surface-2);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--cyan) 50%, transparent)}.ad-item-title{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.ad-item-actions{flex-shrink:0;gap:4px;display:flex}.ad-item-actions button{background:var(--bg);width:30px;height:30px;color:var(--text-dim);cursor:pointer;border:0;border-radius:7px}.ad-item-actions button:hover{color:var(--text);background:var(--surface-2)}.ad-item-actions button.danger:hover{color:#ff6b6b;background:#ff6b6b1f}.ad-hint{color:var(--text-faint);font-size:.9rem}.ad-grid2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.ad-grid4{grid-template-columns:1fr 1fr 1fr auto;align-items:center;gap:8px;display:grid}.ad-dropzone{border:1.5px dashed var(--border-strong);text-align:center;color:var(--text-dim);cursor:pointer;border-radius:12px;padding:26px;font-size:.9rem}.ad-dropzone:hover{border-color:var(--cyan);color:var(--text)}.ad-thumbs,.ad-media-grid{grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;display:grid}.ad-tn,.ad-media{aspect-ratio:1;background:var(--bg);border-radius:9px;position:relative;overflow:hidden}.ad-tn img,.ad-tn video,.ad-media img{object-fit:cover;width:100%;height:100%}.ad-tn button,.ad-media button{color:#fff;cursor:pointer;background:#000000a8;border:0;border-radius:50%;width:22px;height:22px;font-size:.7rem;position:absolute;top:3px;right:3px}.ad-media button.danger{top:29px;right:3px}.ad-media-doc{place-items:center;width:100%;height:100%;font-size:1.8rem;display:grid}.ad-upload{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ad-upload input[type=text]{flex:1;min-width:160px}.ad-thumb{object-fit:cover;border-radius:8px;width:46px;height:46px}.ad-filelink{color:var(--cyan);font-size:.85rem}.ad-acc{color:var(--text);font-family:var(--font-display);cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-size:1.05rem}.ad-cats{flex-direction:column;gap:6px;display:flex}.ad-cat{align-items:center;gap:10px;font-size:.88rem;display:flex}.ad-cat b{color:var(--cyan)}.ad-cat button{cursor:pointer;background:0 0;border:0;margin-left:auto}.ad-stats{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.ad-stat{background:var(--surface);border-radius:var(--radius);text-align:center;padding:18px}.ad-stat b{font-family:var(--font-display);color:var(--cyan);font-size:1.8rem;display:block}.ad-stat span{color:var(--text-dim);font-size:.8rem}.ad-bar-row{align-items:center;gap:10px;font-size:.82rem;display:flex}.ad-bar-label{text-overflow:ellipsis;white-space:nowrap;width:130px;color:var(--text-dim);flex-shrink:0;overflow:hidden}.ad-bar{background:var(--bg);border-radius:5px;flex:1;height:9px;overflow:hidden}.ad-bar i{background:var(--grad);height:100%;display:block}.ad-bar-n{text-align:right;width:36px}.ad-msg-card p{color:var(--text-dim);white-space:pre-wrap;font-size:.92rem}.ad-msg-top{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ad-msg-date{color:var(--text-faint);margin-left:auto;font-size:.78rem}@media (max-width:820px){.ad-side{z-index:60;background-color:var(--bg);background-image:linear-gradient(180deg, var(--surface-2), var(--surface));width:270px;max-width:84vw;transition:transform .28s;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:6px 0 44px #00000080}.ad-side.open{transform:translate(0)}.ad-backdrop{z-index:55;background:#02050c8c;display:block;position:fixed;inset:0}.ad-burger{z-index:65;display:block}.ad-main{padding-top:64px}.ad-grid2,.ad-stats{grid-template-columns:1fr}}.ad-backdrop{display:none}.lx-progress{color:var(--text-dim);align-items:center;gap:14px;margin-bottom:18px;font-size:.9rem;display:flex}.lx-prog-bar{background:var(--surface);border-radius:5px;flex:1;height:9px;overflow:hidden}.lx-prog-bar i{background:var(--grad);height:100%;transition:width .5s;display:block}.lx-controls{flex-direction:column;gap:12px;margin-bottom:22px;display:flex}.lx-search{background:var(--surface);border:1px solid var(--border);width:100%;max-width:420px;color:var(--text);font:inherit;border-radius:10px;padding:11px 14px}.lx-search:focus{border-color:var(--cyan);outline:none}@media (min-width:761px){.lx-controls{flex-flow:wrap;justify-content:space-between;align-items:center}.lx-search{flex:320px;width:auto;max-width:480px}.lx-controls .filter-bar{margin:0}}.ad-avatar{object-fit:cover;border-radius:9px;width:30px;height:30px}.gprev-grid{grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:14px;display:grid}.gprev-tile{aspect-ratio:1;border-radius:var(--radius-sm);background:var(--surface);display:block;position:relative;overflow:hidden}.gprev-tile img,.gprev-tile video{object-fit:cover;width:100%;height:100%;transition:transform .35s}.gprev-tile:hover img,.gprev-tile:hover video{transform:scale(1.07)}.gprev-tile .vid-badge{width:40px;height:40px}@media (max-width:899px){.gprev-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:900px){.gprev-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.ad-files{flex-direction:column;gap:8px;display:flex}.ad-file-list{flex-direction:column;gap:4px;display:flex}.ad-file-row{background:var(--bg);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;font-size:.85rem;display:flex}.ad-file-row a{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ad-file-row button{color:var(--text-dim);cursor:pointer;background:0 0;border:0}.ad-file-row button:hover{color:#ff6b6b}.lesson-files{flex-wrap:wrap;gap:10px;margin:12px 0;display:flex}.lesson-att{background:var(--surface);color:var(--ink-accent);border-radius:9px;align-items:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:600;transition:background .15s,transform .15s;display:inline-flex}.lesson-att:hover{background:var(--surface-2);transform:translateY(-2px)}.lesson-att-img{border-radius:9px;width:120px;height:84px;display:block;overflow:hidden}.lesson-att-img img{object-fit:cover;width:100%;height:100%}.lesson-att-vid{border-radius:9px;width:240px;max-width:100%}.ad-album{background:var(--surface);border-radius:12px;margin-top:10px;overflow:hidden}.ad-album-head{align-items:center;gap:12px;padding:10px 12px;display:flex}.ad-album-cover{object-fit:cover;background:var(--bg);border-radius:9px;flex-shrink:0;place-items:center;width:52px;height:52px;font-size:1.4rem;display:grid}.ad-album-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.ad-album-info b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ad-album-info span{color:var(--text-dim);font-size:.8rem}.ad-album-actions{flex-shrink:0;gap:4px;display:flex}.ad-album-actions button{background:var(--bg);width:32px;height:32px;color:var(--text-dim);cursor:pointer;border:0;border-radius:8px;font-size:.9rem}.ad-album-actions button:hover{color:var(--text);background:var(--surface-2)}.ad-album-actions button.danger:hover{color:#ff6b6b;background:#ff6b6b1f}.ad-album-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;padding:0 12px 12px;display:grid}.ad-album-ph{aspect-ratio:1;background:var(--bg);border-radius:9px;position:relative;overflow:hidden}.ad-album-ph.is-cover{box-shadow:0 0 0 2px var(--cyan)}.ad-album-ph img,.ad-album-ph video{object-fit:cover;width:100%;height:100%}.ad-cover-badge{background:var(--cyan);color:#06121f;border-radius:5px;padding:1px 6px;font-size:.62rem;font-weight:700;position:absolute;top:4px;left:4px}.ad-album-ph-actions{opacity:0;gap:4px;transition:opacity .15s;display:flex;position:absolute;bottom:4px;right:4px}.ad-album-ph:hover .ad-album-ph-actions{opacity:1}.ad-album-ph-actions button{color:#fff;cursor:pointer;background:#000000b3;border:0;border-radius:6px;width:24px;height:24px;font-size:.72rem}.ad-album-ph-actions button.danger:hover{background:#e5484d}.cv-wrap{max-width:1040px;margin:0 auto;padding-top:100px}.cv-actions{justify-content:flex-end;gap:10px;margin-bottom:18px;display:flex}.cv-page{color:#1a2030;border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:44px 48px}.cv-head{border-bottom:2px solid #e3e8f0;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px;padding-bottom:16px;display:flex}.cv-name{font-family:var(--font-display);color:#0d1424;font-size:1.9rem}.cv-role{color:#5b6b8c;margin-top:2px;font-weight:600}.cv-contact{text-align:right;color:#41506e;flex-direction:column;gap:3px;font-size:.86rem;list-style:none;display:flex}.cv-sec{margin-bottom:18px}.cv-sec h2{font-family:var(--font-display);color:#0d1424;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid #e3e8f0;margin-bottom:10px;padding-bottom:4px;font-size:1.05rem}.cv-sec p{color:#2a3650;font-size:.92rem;line-height:1.5}.cv-job{margin-bottom:12px}.cv-job-top{justify-content:space-between;gap:12px;display:flex}.cv-job-top b{color:#0d1424;font-size:.98rem}.cv-job-top span{color:#5f6f8e;white-space:nowrap;font-size:.82rem}.cv-job-meta{color:#5b6b8c;margin:1px 0 5px;font-size:.85rem}.cv-job ul{margin:0;padding-left:18px}.cv-job li{color:#2a3650;margin-bottom:3px;font-size:.88rem;line-height:1.55}.cv-skills p{color:#2a3650;margin-bottom:3px;font-size:.88rem}.cv-skills b,.cv-edu b{color:#0d1424}.cv-cols{grid-template-columns:1fr 1fr;gap:24px;display:grid}.cv-edu{flex-direction:column;margin-bottom:8px;display:flex}.cv-edu span{color:#5b6b8c;font-size:.82rem}.cv-certs{margin:0;padding-left:18px}.cv-certs li{color:#2a3650;margin-bottom:3px;font-size:.88rem}@media (max-width:620px){.cv-page{padding:28px 22px}.cv-head{flex-direction:column}.cv-contact{text-align:left}.cv-cols{grid-template-columns:1fr}}@media print{.navbar,.theme-fab,.theme-panel,.search-fab,.search-overlay,.footer,.bg-wrap,.photo-layer,.scroll-progress,.cv-actions,.edit-fab,.edit-hint,.edit-toast{display:none!important}body{background:#fff!important}.cv-wrap{max-width:none;padding:0}.cv-page{box-shadow:none;border-radius:0;padding:0}.section{padding:0!important}.cv-job,.cv-edu,.cv-certs li,.cv-head{page-break-inside:avoid}.cv-sec h2{break-after:avoid}}.ctf-score{background:var(--surface);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:22px;padding:16px 20px;display:flex}.ctf-score-main{align-items:baseline;gap:6px;display:flex}.ctf-score-main b{font-family:var(--font-display);color:var(--cyan);font-size:1.8rem}.ctf-score-main span{color:var(--text-dim);font-size:.85rem}.ctf-score-meta{color:var(--text-dim);align-items:center;gap:14px;font-size:.85rem;display:flex}.ctf-rank{color:var(--ink-accent);font-weight:700}.ctf-grid{grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:18px;display:grid}.ctf-card{border-radius:var(--radius);flex-direction:column;gap:12px;padding:22px;transition:background .2s,box-shadow .2s;display:flex;position:relative}.ctf-card.solved{background:color-mix(in srgb, var(--green) 5%, transparent)}.ctf-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ctf-top h3{font-size:1.12rem}.ctf-pts{font-family:var(--font-mono);color:#06121f;background:var(--grad);border-radius:20px;flex-shrink:0;padding:3px 10px;font-size:.78rem;font-weight:700}.ctf-prompt{color:var(--text-dim);font-size:.92rem;line-height:1.55}.ctf-prompt code{background:var(--bg);font-family:var(--font-mono);color:var(--ink-accent);border-radius:5px;padding:1px 6px;font-size:.85em}.ctf-hint{background:var(--bg);border-left:3px solid var(--cyan);color:var(--text-dim);border-radius:6px;padding:8px 12px;font-size:.85rem}.ctf-hint-btn{color:var(--text-faint);cursor:pointer;background:0 0;border:0;align-self:flex-start;margin:-10px -12px;padding:10px 12px;font-size:.82rem}.ctf-hint-btn:hover{color:var(--cyan)}.ctf-answer{flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;display:flex}.ctf-answer input{background:var(--bg);border:1px solid var(--border);min-width:150px;color:var(--text);font:inherit;border-radius:9px;flex:1;padding:9px 12px;font-size:.9rem}.ctf-answer input:focus{border-color:var(--cyan);outline:none}.ctf-answer.shake input{border-color:#ff6b6b;animation:.4s ctfshake}@keyframes ctfshake{0%,to{transform:translate(0)}20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.ctf-fb-err{color:#ff6b6b;width:100%;font-size:.82rem}.ctf-solved-row{color:var(--green);margin-top:auto;font-size:.92rem;font-weight:600}.ctf-solved-row b{color:var(--green)}.rte{border:1px solid var(--border);background:var(--bg);border-radius:9px;overflow:hidden}.rte-bar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;gap:2px;padding:6px;display:flex}.rte-bar button{min-width:30px;height:28px;color:var(--text-dim);cursor:pointer;font-size:.85rem;font-family:var(--font-mono);background:0 0;border:1px solid #0000;border-radius:6px;padding:0 8px}.rte-bar button:hover{background:var(--bg);color:var(--text)}.rte-body{min-height:140px;max-height:360px;color:var(--text);font:inherit;outline:none;padding:12px 14px;font-size:.92rem;line-height:1.55;overflow-y:auto}.rte-body:empty:before{content:attr(data-ph);color:var(--text-faint)}.rte-body h3{margin:.6em 0 .3em;font-size:1.1rem}.rte-body p{margin:0 0 .6em}.rte-body ul,.rte-body ol{margin:0 0 .6em;padding-left:22px}.rte-body a{color:var(--cyan)}.rte-body [style]{color:var(--text)!important;background-color:#0000!important}.rte-body a[style]{color:var(--cyan)!important}.rte-body pre{background:var(--surface);font-family:var(--font-mono);border-radius:8px;padding:10px 12px;font-size:.85em;overflow-x:auto}.ad-drag{cursor:grab;color:var(--text-faint);-webkit-user-select:none;user-select:none;padding:0 4px}.ad-item{cursor:default}.ad-item.dragging{opacity:.5;box-shadow:0 0 0 1px color-mix(in srgb, var(--cyan) 50%, transparent)}.post-rich{color:var(--text);font-size:1.08rem;line-height:1.8}.post-rich h2,.post-rich h3{font-family:var(--font-display);margin:1.2em 0 .4em;line-height:1.2}.post-rich h3{font-size:1.4rem}.post-rich p{margin:0 0 1.1em}.post-rich li{margin-bottom:.4em}.post-rich a{color:var(--ink-accent);text-decoration:underline}.post-rich strong{color:var(--ink-accent)}.post-rich blockquote{border-left:3px solid var(--cyan);color:var(--text-dim);margin:0 0 1.1em;padding-left:16px}.crop-modal{border-radius:var(--radius);flex-direction:column;gap:14px;width:min(560px,94vw);max-height:92vh;padding:22px;display:flex;overflow:auto}.crop-stage{align-self:center;max-width:100%;line-height:0;display:inline-block;position:relative}.crop-stage img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;border-radius:6px;max-width:min(520px,86vw);max-height:56vh}.crop-box{border:2px solid var(--cyan);cursor:move;touch-action:none;position:absolute;box-shadow:0 0 0 9999px #00000080}.crop-handle{background:var(--cyan);cursor:nwse-resize;touch-action:none;border:2px solid #06121f;border-radius:50%;width:18px;height:18px;position:absolute;bottom:-8px;right:-8px}.voice-rec{flex-direction:column;gap:6px;margin:-4px 0 4px;display:flex}.voice-label{color:var(--text-dim);font-size:.82rem}.voice-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.voice-btn{background:var(--surface);color:var(--text);cursor:pointer;font:inherit;border:0;border-radius:10px;align-items:center;gap:8px;padding:9px 16px;font-size:.9rem;transition:background .15s,color .15s;display:inline-flex}.voice-btn:hover{background:var(--surface-2)}.voice-btn.is-rec{color:#ff8095;background:#ff54701a}.rec-dot{background:#ff5470;border-radius:50%;width:10px;height:10px;animation:1s infinite recpulse}@keyframes recpulse{0%,to{opacity:1}50%{opacity:.3}}.voice-row audio{max-width:240px;height:36px}.voice-x{color:var(--text-dim);cursor:pointer;background:0 0;border:0;font-size:1rem}.voice-x:hover{color:#ff6b6b}.voice-err{color:#ff6b6b;font-size:.8rem}.ad-msg-audio{width:100%;max-width:320px;height:38px;margin-top:8px}.search-fab{z-index:90;background:var(--panel);width:50px;height:50px;color:var(--text);cursor:pointer;box-shadow:var(--shadow);border:0;border-radius:50%;place-items:center;transition:transform .2s,color .2s;display:grid;position:fixed;bottom:24px;right:88px}.search-fab:hover{color:var(--ink-accent);transform:translateY(-3px)}.search-overlay{z-index:250;background:#0000008c;justify-content:center;align-items:flex-start;padding:12vh 20px 20px;display:flex;position:fixed;inset:0}.search-box{border-radius:var(--radius);flex-direction:column;width:min(620px,96vw);max-height:70vh;display:flex;overflow:hidden}.search-inp{border-bottom:1px solid var(--border);color:var(--text-dim);align-items:center;gap:10px;padding:16px 18px;display:flex}.search-inp input{color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;font-size:1.05rem}.search-inp kbd{font-family:var(--font-mono);color:var(--text-faint);background:var(--surface-2);border-radius:5px;padding:2px 7px;font-size:.72rem}.search-results{padding:6px;overflow-y:auto}.search-empty{text-align:center;color:var(--text-faint);padding:24px}.search-hit{border-radius:10px;align-items:center;gap:12px;padding:11px 14px;display:flex}.search-hit:hover{background:var(--surface)}.search-hit-ic{flex-shrink:0;font-size:1.2rem}.search-hit-main{flex-direction:column;flex:1;min-width:0;display:flex}.search-hit-main b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.search-hit-main span{color:var(--text-dim);font-size:.8rem}.search-hit-kind{color:var(--text-faint);font-size:.72rem;font-family:var(--font-mono);flex-shrink:0}@media (max-width:560px){.search-fab{width:46px;height:46px;bottom:22px;right:80px}}.crop-overlay{z-index:400;background:#040810d1;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.crop-modal{border-radius:var(--radius);flex-direction:column;gap:14px;width:100%;max-width:600px;padding:22px;display:flex}.crop-modal h3{font-size:1.1rem}.crop-ratios{flex-wrap:wrap;gap:6px;display:flex}.crop-stage{-webkit-user-select:none;user-select:none;touch-action:none;max-width:100%;margin:0 auto;line-height:0;display:inline-block;position:relative}.crop-stage img{border-radius:8px;max-width:100%;max-height:56vh;display:block}.crop-box{border:2px solid var(--cyan);cursor:move;position:absolute;box-shadow:0 0 0 9999px #00000080}.crop-handle{background:var(--cyan);cursor:nwse-resize;border:2px solid #06121f;border-radius:50%;width:18px;height:18px;position:absolute;bottom:-8px;right:-8px}.crop-actions{flex-wrap:wrap;gap:10px;display:flex}.ad-dash-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;display:grid}.ad-dash-card{background:var(--panel);border-radius:var(--radius);cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:2px;padding:18px 16px;transition:transform .15s,box-shadow .15s;display:flex}.ad-dash-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.ad-dash-ic{font-size:1.3rem}.ad-dash-card b{font-family:var(--font-display);color:var(--cyan);font-size:1.7rem;line-height:1.1}.ad-dash-label{color:var(--text-dim);font-size:.8rem}.ad-recent{text-align:left;background:var(--bg);cursor:pointer;border-radius:9px;align-items:center;gap:10px;width:100%;margin-bottom:6px;padding:9px 12px;display:flex}.ad-recent:hover{background:var(--surface)}.ad-recent b{flex-shrink:0}.ad-recent span{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.85rem;overflow:hidden}.ad-recent-date{color:var(--text-faint);flex:none}.ad-filter{margin-bottom:8px}.tool-card{border-radius:var(--radius);max-width:min(1200px,100%);margin:0 auto;padding:clamp(22px,2.6vw,40px)}.tool-pane{flex-direction:column;gap:16px;display:flex}.tool-in,.tool-area{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:10px;padding:12px 14px;font-size:.95rem}.tool-area{resize:vertical;font-family:var(--font-mono)}.tool-in:focus,.tool-area:focus{border-color:var(--cyan);outline:none}.tool-hint{color:var(--text-faint);text-align:center;padding:20px}.tool-row{color:var(--text-dim);align-items:center;gap:12px;font-size:.9rem;display:flex}.tool-checks{flex-wrap:wrap;gap:14px;display:flex}.tool-check{font-family:var(--font-mono);color:var(--text-dim);align-items:center;gap:6px;font-size:.9rem;display:flex}.tool-out{background:var(--bg);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex}.tool-result{min-width:0;font-family:var(--font-mono);color:var(--cyan);word-break:break-all;flex:1;font-size:1.05rem}.tool-result.wrap{white-space:pre-wrap;font-size:.9rem}.qr-out{flex-direction:column;align-items:center;gap:14px;display:flex}.qr-out img,.qr-out canvas{background:#fff;border-radius:12px;width:min(240px,100%);height:auto;padding:10px}.tool-stats{grid-template-columns:repeat(auto-fit,minmax(min(120px,100%),1fr));gap:12px;display:grid}.tool-stat{background:var(--bg);text-align:center;border-radius:10px;padding:14px}.tool-stat b{font-family:var(--font-display);color:var(--cyan);font-size:1.5rem;display:block}.tool-stat span{color:var(--text-dim);font-size:.78rem}.pw-strength{color:var(--text-dim);flex-direction:column;gap:6px;font-size:.82rem;display:flex}.pw-bar{background:var(--bg);border-radius:4px;height:7px;overflow:hidden}.pw-bar i{height:100%;transition:width .25s;display:block}.pw-bar i.s0{background:#ff5470}.pw-bar i.s1{background:#ffb13d}.pw-bar i.s2{background:#4dd6c1}.pw-bar i.s3{background:var(--green,#46d369)}.reader-modal{z-index:360;background:#040810d9;padding:20px;display:none;position:fixed;inset:0}.reader-modal.open{place-items:center;display:grid}.reader-inner{border-radius:var(--radius);flex-direction:column;width:100%;max-width:960px;height:min(88vh,1000px);display:flex;overflow:hidden}.reader-bar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.reader-title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.reader-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.reader-close{color:var(--text-dim);cursor:pointer;background:0 0;border:0;font-size:1.5rem;line-height:1}.reader-close:hover{color:var(--text)}.reader-inner iframe{background:#fff;border:0;flex:1;width:100%}.cert-verify{color:var(--ink-accent);margin-top:4px;font-size:.8125rem;font-weight:600;transition:background-size .3s;display:inline-block}.cert-view-btn{background:var(--grad-soft);color:var(--ink-accent);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:6px;margin-top:9px;padding:6px 13px;font-family:inherit;font-size:.8125rem;font-weight:600;text-decoration:none;transition:transform .15s,filter .2s;display:inline-flex}.cert-view-btn:hover{filter:brightness(1.15);transform:translateY(-1px)}.cert-clickable{cursor:pointer}.cert-clickable:focus-visible{outline:2px solid var(--ink-accent);outline-offset:2px}.cert-doc{opacity:.7;font-size:.85em}.cert-img-wrap{background:var(--bg);flex:1;place-items:center;min-height:0;padding:16px;display:grid;overflow:auto}.cert-img-wrap img{object-fit:contain;border-radius:8px;max-width:100%;max-height:100%}.ad-up-err{color:#ff6b81;word-break:break-word;margin:6px 0 0;font-size:.82rem;font-weight:500}.reader-inner:fullscreen{background:var(--bg);border-radius:0;flex-direction:column;width:100vw;max-width:none;height:100vh;display:flex}.reader-inner:fullscreen iframe{flex:1;width:100%}.reader-inner:fullscreen .cert-img-wrap{flex:1}.rte-sep{background:var(--border);align-self:stretch;width:1px;margin:0 4px}.rte-busy{color:var(--cyan);margin-left:auto;padding:0 6px;font-size:.78rem}.rte-body img,.rte-body video{border-radius:8px;max-width:100%;margin:8px 0;display:block}.rte-body blockquote{border-left:3px solid var(--cyan);color:var(--text-dim);margin:10px 0;padding:4px 14px;font-style:italic}.rte-embed{border-radius:10px;width:100%;height:0;margin:10px 0;padding-bottom:56.25%;position:relative;overflow:hidden}.rte-embed iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.post-rich img,.post-rich video{border-radius:12px;max-width:100%;height:auto;margin:18px 0;display:block}.post-rich figure{margin:18px 0}.post-rich blockquote{border-left:3px solid var(--cyan);color:var(--text-dim);margin:18px 0;padding:6px 18px;font-size:1.05rem;font-style:italic}.post-rich .rte-embed{border-radius:12px;width:100%;height:0;margin:22px 0;padding-bottom:56.25%;position:relative;overflow:hidden}.post-rich .rte-embed iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.post-rich pre{background:var(--bg);font-family:var(--font-mono);border-radius:10px;margin:16px 0;padding:14px;font-size:.9rem;overflow-x:auto}.ad-analytics-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;display:grid}.ad-spark{align-items:flex-end;gap:4px;height:90px;padding-top:6px;display:flex}.ad-spark-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;height:100%;display:flex}.ad-spark-col i{background:linear-gradient(to top, var(--cyan), #7c5cff);border-radius:3px 3px 0 0;width:100%;min-height:2px;transition:height .3s;display:block}.ad-spark-col span{color:var(--text-faint);font-size:.62rem}.ip-toolbar{justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px;display:flex}.ip-count{font-family:var(--font-mono);color:var(--text-dim);font-size:.8125rem}.ip-zoom{gap:5px;display:inline-flex}.ip-zoom button{background:var(--surface);width:36px;height:30px;color:var(--text-dim);cursor:pointer;border:0;border-radius:8px;place-items:center;font-size:.95rem;line-height:1;transition:color .15s,background .15s;display:grid}.ip-zoom button:hover:not(:disabled){color:var(--text);background:var(--surface-2)}.ip-zoom button:disabled{opacity:.35;cursor:default}.ip-grid{grid-template-columns:repeat(var(--cols,3), 1fr);touch-action:pan-y;gap:4px;display:grid}.ip-tile{aspect-ratio:1;cursor:pointer;background:var(--surface);border-radius:5px;position:relative;overflow:hidden}.ip-tile img,.ip-tile video{object-fit:cover;width:100%;height:100%;transition:transform .35s;display:block}.ip-tile:hover img{transform:scale(1.05)}.ip-sentinel{place-items:center;padding:26px 0;display:grid}.ip-spin{border:2px solid var(--border);border-top-color:var(--ink-accent);border-radius:50%;width:22px;height:22px;animation:.7s linear infinite ip-spin}@keyframes ip-spin{to{transform:rotate(360deg)}}.ip-lb{touch-action:none}.ip-lb-stage{place-items:center;width:100%;height:100%;display:grid;overflow:hidden}.ip-lb-stage img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform;border-radius:10px;max-width:96vw;max-height:85vh}.ip-lb-stage video{background:#000;border-radius:10px;max-width:96vw;max-height:85vh}.ip-lb-nav{color:#fff;cursor:pointer;z-index:3;background:#080c1480;border:0;border-radius:50%;place-items:center;width:46px;height:46px;font-size:26px;line-height:1;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.ip-lb-nav:hover{background:#080c14cc}.ip-lb-prev{left:16px}.ip-lb-next{right:16px}.gallery-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:24px;display:flex}.seg-toggle{background:var(--surface);border-radius:999px;padding:3px;display:inline-flex}.seg{color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 17px;font-size:.85rem;font-weight:600;transition:color .15s}.seg.active{background:var(--grad-soft);color:var(--ink-accent)}@media (max-width:640px){.album-page .ip-grid{margin:0 calc(-1 * var(--pad));gap:2px}.album-page .ip-tile{border-radius:0}.ip-lb-nav{display:none}}.read-progress{z-index:200;pointer-events:none;height:3px;position:fixed;top:0;left:0;right:0}.read-progress i{background:var(--grad);transform-origin:0;height:100%;transition:transform 80ms linear;display:block;transform:scaleX(0)}.post-toc{background:var(--surface);border-radius:12px;margin:0 0 26px;padding:2px 18px}.post-toc summary{cursor:pointer;color:var(--text);padding:13px 0;font-size:.95rem;font-weight:600;list-style:none}.post-toc summary::-webkit-details-marker{display:none}.post-toc summary::marker{content:""}.post-toc ul{flex-direction:column;gap:8px;margin:0 0 14px;padding:0;list-style:none;display:flex}.post-toc li a{color:var(--text-dim);font-size:.92rem;text-decoration:none;transition:color .15s}.post-toc li a:hover{color:var(--ink-accent)}.post-toc .toc-sub{padding-left:16px}.post-toc .toc-sub a{opacity:.82;font-size:.88rem}.bl-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 18px;margin-bottom:28px;display:flex}.bl-controls .filter-bar{margin:0}.bl-search{background:var(--surface);border:1px solid var(--border);color:var(--text-dim);border-radius:999px;flex:240px;align-items:center;gap:9px;max-width:360px;padding:9px 15px;transition:border-color .15s,box-shadow .15s;display:inline-flex}.bl-search:focus-within{border-color:color-mix(in srgb, var(--ink-accent) 60%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--ink-accent) 14%, transparent)}.bl-search input{color:var(--text);font:inherit;background:0 0;border:0;outline:0;width:100%;font-size:.92rem}.bl-search input::-webkit-search-cancel-button{display:none}.bl-search-x{color:var(--text-dim);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:1.15rem;line-height:1}.bl-search-x:hover{color:var(--text)}.bl-featured{border-radius:var(--radius);grid-template-columns:1.05fr 1fr;margin-bottom:28px;transition:transform .2s,box-shadow .2s;display:grid;position:relative;overflow:hidden}.bl-featured:hover{box-shadow:var(--shadow);transform:translateY(-4px)}.bl-featured .bl-thumb{aspect-ratio:auto;height:100%;min-height:240px}.bl-feat-body{flex-direction:column;justify-content:center;gap:11px;padding:28px 32px;display:flex}.bl-feat-tag{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-accent);background:var(--grad-soft);border-radius:999px;align-self:flex-start;padding:4px 13px;font-size:.7rem;font-weight:700}.bl-feat-body h2{font-family:var(--font-display);font-size:clamp(1.45rem,2.6vw,2.1rem);line-height:1.16}.bl-feat-body p{color:var(--text-dim);-webkit-line-clamp:3;-webkit-box-orient:vertical;max-width:60ch;font-size:1rem;line-height:1.6;display:-webkit-box;overflow:hidden}.post-rich img,.post-rich video{border-radius:12px;max-width:100%;margin:20px 0;display:block}.post-rich blockquote{border-left:3px solid var(--ink-accent);color:var(--text-dim);margin:20px 0;padding:6px 18px;font-style:italic}.post-rich pre{background:var(--surface);border-radius:10px;margin:18px 0;padding:14px 16px;font-size:.9em;overflow-x:auto}.post-rich ul,.post-rich ol{margin:0 0 1.15em;padding-left:24px}.post-rich li{color:var(--text-dim);margin-bottom:.45em}.post-rich .rte-embed{margin:22px 0}@media (max-width:760px){.bl-featured{grid-template-columns:1fr}.bl-featured .bl-thumb{aspect-ratio:16/9;min-height:0}.bl-search{max-width:none}}.ad-date{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-mode=light] .ad-date{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.ad-date::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.8}.ad-date::-webkit-calendar-picker-indicator:hover{opacity:1}.ui-dialog-overlay{z-index:400;background:#02050cad;place-items:center;padding:24px;animation:.12s ui-fade;display:grid;position:fixed;inset:0}@keyframes ui-fade{0%{opacity:0}to{opacity:1}}.ui-dialog{background-color:var(--bg);background-image:linear-gradient(180deg, var(--surface-2), var(--surface));border:0;border-radius:16px;width:100%;max-width:430px;padding:22px 22px 18px;animation:.16s ui-pop;box-shadow:0 24px 60px #00000080}@keyframes ui-pop{0%{opacity:0;transform:translateY(10px)scale(.97)}to{opacity:1;transform:none}}.ui-dialog-msg{color:var(--text);white-space:pre-wrap;margin:0 0 14px;font-size:1rem;line-height:1.5}.ui-dialog-input{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:9px;outline:none;padding:11px 13px;font-size:.95rem;transition:border-color .15s}.ui-dialog-input:focus{border-color:var(--cyan)}.ui-dialog-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.ui-dialog-danger{color:#fff;background:#ff4d5e;border:1px solid #ff4d5e;font-weight:600}.ui-dialog-danger:hover{background:#ff3a4c;border-color:#ff3a4c}.ad-item.archived{opacity:.5}.ad-item.archived .ad-item-title{text-decoration:line-through;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint)}.ad-item-actions button.on{color:var(--cyan);background:color-mix(in srgb, var(--cyan) 12%, transparent)}.ad-cat-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ad-cat-form input{flex:1;min-width:120px}.ad-cat-form .ad-cat-key{max-width:130px}.ad-cat-form .ad-cat-icon{text-align:center;max-width:64px}.ad-cat button[title=Edit]{color:var(--text-dim);cursor:pointer;background:0 0;border:0;padding:2px 6px}.ad-cat button[title=Edit]:hover{color:var(--text)}.ad-cat-unmanaged{margin:4px 0 10px}.ad-cat-suggest{background:var(--surface);color:var(--cyan);font:inherit;cursor:pointer;border:0;border-radius:999px;margin:0 6px 6px 0;padding:5px 12px;font-size:.8125rem}.ad-cat-suggest:hover{background:var(--grad-soft)}.ad-item-cat{flex-shrink:0;max-width:150px;border-radius:7px!important;padding:4px 8px!important;font-size:.8rem!important}@media (max-width:720px){.ad-item-cat{max-width:110px}}.ad-item-cat-btn{background:var(--surface);max-width:160px;color:var(--text-dim);font:inherit;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border:0;border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:4px 10px;font-size:.8125rem;transition:background .15s,color .15s;display:inline-flex;overflow:hidden}.ad-item-cat-btn:hover{background:var(--surface-2);color:var(--text)}.ad-item-cat-btn.has{color:var(--cyan);background:color-mix(in srgb, var(--cyan) 12%, transparent)}.ad-catpick{max-width:440px}.ad-catpick-list{flex-wrap:wrap;gap:8px;max-height:240px;margin:14px 0;display:flex;overflow-y:auto}.ad-catpick-opt{background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border:0;border-radius:999px;padding:7px 14px;font-size:.875rem;transition:background .15s,color .15s}.ad-catpick-opt:hover{background:var(--surface-2)}.ad-catpick-opt.active{background:var(--grad-soft);color:var(--ink-accent);font-weight:600}.ad-catpick-new{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding-top:14px;display:flex}.ad-catpick-new .ad-catpick-or{color:var(--text-dim);flex-basis:100%;margin-bottom:2px;font-size:.8rem}.ad-catpick-new input{flex:1;min-width:140px}.rte-body:empty:before{pointer-events:none}.rte-body img,.rte-body video{border-radius:8px;max-width:100%;height:auto;margin:8px 0;display:block}.rte-body .rte-embed{border-radius:8px;width:100%;height:0;margin:10px 0;padding-bottom:56.25%;position:relative;overflow:hidden}.rte-body .rte-embed iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.blk-editor,.blk-list{flex-direction:column;gap:10px;display:flex}.blk{background:var(--bg);border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex}.blk-head{justify-content:space-between;align-items:center;display:flex}.blk-type{color:var(--text-dim);font-size:.8125rem;font-weight:600}.blk-ctrl{gap:4px;display:flex}.blk-ctrl button{background:var(--surface);width:28px;height:26px;color:var(--text-dim);cursor:pointer;border:0;border-radius:6px;font-size:.8125rem}.blk-ctrl button:hover:not(:disabled){color:var(--text);background:var(--surface-2)}.blk-ctrl button:disabled{opacity:.35;cursor:default}.blk-ctrl button.danger:hover{color:#ff6b81;background:#ff6b811f}.blk-media{object-fit:contain;border-radius:8px;max-width:100%;max-height:220px;display:block}.blk-yt{border-radius:8px;width:100%;height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.blk-yt iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.blk-add{flex-wrap:wrap;gap:8px;display:flex}.blk-add button{border:1px dashed var(--border-strong);color:var(--cyan);font:inherit;cursor:pointer;background:0 0;border-radius:8px;padding:7px 14px;font-size:.82rem}.blk-add button:hover:not(:disabled){background:var(--grad-soft);border-style:solid}.blk-add button:disabled{opacity:.5;cursor:default}.post-block-text{margin:0 0 4px}.post-block-img{margin:22px 0}.post-block-img img,.post-block-img video{border-radius:12px;width:100%;height:auto;display:block}.post-block-img figcaption{color:var(--text-dim);text-align:center;margin-top:8px;font-size:.9rem}.post-block-yt{margin:22px 0}.post-block-file{background:var(--grad-soft);color:var(--ink-accent);border-radius:10px;align-items:center;gap:8px;margin:10px 0;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-flex}.post-block-file:hover{filter:brightness(1.15)}.nf-page{text-align:center;place-items:center;min-height:70vh;display:grid}.nf-code{font-family:var(--font-mono);color:var(--ink-accent);margin-bottom:10px;font-size:clamp(4rem,14vw,8rem);font-weight:700;line-height:1}.nf-inner .hero-desc{margin:12px auto 26px}.nf-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.edit-fab{z-index:340;background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;box-shadow:var(--shadow);border:0;border-radius:999px;padding:10px 16px;font-size:.875rem;font-weight:600;position:fixed;bottom:20px;left:20px}.edit-fab.on{background:var(--grad-soft);color:var(--ink-accent)}.edit-hint{z-index:340;max-width:280px;color:var(--text-dim);background:var(--surface-2);box-shadow:var(--shadow-card);border-radius:10px;padding:8px 12px;font-size:.75rem;line-height:1.5;position:fixed;bottom:66px;left:20px}.edit-toast{z-index:360;background:var(--surface-2);color:var(--text);box-shadow:var(--shadow);border:0;border-radius:999px;padding:10px 18px;font-size:.875rem;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}body.edit-on [data-edit]{outline:2px dashed var(--cyan);outline-offset:4px;cursor:text;border-radius:4px;transition:outline-color .15s}body.edit-on [data-edit]:hover,body.edit-on [data-edit]:focus{outline-style:solid;outline-color:var(--ink-accent)}.admin-edit-link{background:var(--grad-soft);color:var(--ink-accent);border-radius:999px;align-items:center;gap:6px;margin-left:12px;padding:4px 12px;font-size:.8125rem;font-weight:600;text-decoration:none;display:inline-flex}.admin-edit-link:hover{filter:brightness(1.15)}.mkt-header{z-index:100;background:color-mix(in srgb, var(--bg) 82%, transparent);border-bottom:1px solid var(--border);position:sticky;top:0}.mkt-header-in{justify-content:space-between;align-items:center;gap:12px;padding-top:14px;padding-bottom:14px;display:flex}.mkt-logo{font-family:var(--font-display);letter-spacing:.04em;color:var(--text);white-space:nowrap;font-size:1.05rem;text-decoration:none}.mkt-logo b{color:var(--ink-accent)}.mkt-header-right{align-items:center;gap:14px;display:flex}.mkt-langs{background:var(--surface);border-radius:999px;padding:3px;display:inline-flex}.mkt-lang{color:var(--text-dim);font:inherit;font-size:.74rem;font-weight:700;font-family:var(--font-mono);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:4px 10px}.mkt-lang.active{background:var(--grad-soft);color:var(--ink-accent)}.mkt-main-link{color:var(--text-dim);white-space:nowrap;font-size:.82rem;text-decoration:none}.mkt-main-link:hover{color:var(--text)}.mkt-main{min-height:72vh}.mkt-footer{border-top:1px solid var(--border);color:var(--text-faint);text-align:center;padding:22px 0 30px;font-size:.8rem}.mkt-controls{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:26px;display:flex}.mkt-empty{text-align:center;color:var(--text-dim);place-items:center;gap:10px;padding:60px 24px;display:grid}.mkt-empty span{font-size:2.6rem}.mkt-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px;display:grid}.mkt-card{color:var(--text);padding:0;text-decoration:none;transition:transform .2s,box-shadow .2s;display:block;overflow:hidden}.mkt-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-4px)}.mkt-card-img{aspect-ratio:4/3;background:var(--surface);position:relative}.mkt-card-img img{object-fit:cover;width:100%;height:100%;display:block}.mkt-ph{place-items:center;width:100%;height:100%;font-size:2.4rem;display:grid}.mkt-origin{color:#fff;font-family:var(--font-mono);background:#050810b8;border-radius:999px;padding:3px 10px;font-size:.66rem;position:absolute;top:10px;left:10px}.mkt-card-body{padding:14px 16px 16px}.mkt-card-body h3{margin-bottom:8px;font-size:.98rem;font-weight:600}.mkt-card-meta{justify-content:space-between;align-items:center;gap:8px;display:flex}.mkt-price{font-family:var(--font-mono);color:var(--ink-accent);font-weight:700}.mkt-price.big{font-size:1.5rem}.mkt-stock{letter-spacing:.04em;border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:600}.mkt-stock.inStock{color:#4ade80;background:#4ade801f}.mkt-stock.preorder{color:#fbbf24;background:#fbbf241f}.mkt-stock.soldOut{color:var(--text-faint);background:var(--surface-2);text-decoration:line-through}.mkt-detail{grid-template-columns:1fr;gap:28px;margin-top:18px;display:grid}@media (min-width:900px){.mkt-detail{grid-template-columns:1.1fr 1fr}}.mkt-gallery-main{aspect-ratio:4/3;place-items:center;padding:0;display:grid;overflow:hidden}.mkt-gallery-main img{object-fit:contain;width:100%;height:100%}.mkt-thumbs{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.mkt-thumb{background:var(--surface);cursor:pointer;border:0;border-radius:10px;width:64px;height:64px;padding:0;transition:box-shadow .15s;overflow:hidden}.mkt-thumb img{object-fit:cover;width:100%;height:100%;display:block}.mkt-thumb.active{box-shadow:0 0 0 2px var(--ink-accent)}.mkt-info h1{font-family:var(--font-display);margin-bottom:14px;font-size:clamp(1.5rem,3.4vw,2.2rem)}.mkt-info-meta{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.mkt-origin-chip{color:var(--text-dim);background:var(--surface);border-radius:999px;padding:4px 12px;font-size:.8125rem}.mkt-desc{color:var(--text-dim);white-space:pre-line;margin-bottom:24px;line-height:1.7}.mkt-order{gap:10px;padding:20px;display:grid}.mkt-order h3{margin-bottom:4px;font-size:1.05rem}.mkt-order input,.mkt-order textarea{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:10px;padding:11px 13px;font-size:.92rem}.mkt-order input:focus,.mkt-order textarea:focus{border-color:var(--cyan);outline:none}.mkt-ok{color:#4ade80;font-size:.88rem}.mkt-err{color:#ff6b81;font-size:.88rem}@media (max-width:640px){.mkt-header-right{gap:8px}.mkt-main-link{display:none}}.mkt-preview-more{text-align:center;margin-top:24px}.reveal-init{opacity:0;transform:translateY(16px)}.reveal-init,.reveal-in{transition:opacity .5s cubic-bezier(.22,.7,.25,1),transform .5s cubic-bezier(.22,.7,.25,1)}.reveal-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal-init{opacity:1;transition:none;transform:none}}.hero-grid{grid-template-columns:1fr;align-items:center;display:grid}.hero-main{z-index:2;min-width:0;max-width:980px;position:relative}[data-mode=light] .hero-name{background:linear-gradient(120deg, #0d1424 25%, color-mix(in srgb, var(--violet) 65%, #0d1424) 100%);-webkit-background-clip:text;background-clip:text}[data-mode=light] .nav-links a.contact-cta{color:#07101a}@media (max-width:1060px){.hero-grid{grid-template-columns:1fr}}.mkt-arch-main{flex-direction:column;justify-content:center;min-height:100vh;display:flex}.mkt-arch-box{text-align:center;flex-direction:column;align-items:center;gap:8px;max-width:620px;margin:0 auto;padding:64px 40px;display:flex}.mkt-arch-icon{margin-bottom:10px;font-size:3rem}.mkt-arch-box .btn{margin-top:22px}[data-theme=cosmos]{--cyan:#8f7bff;--violet:#4f6df5;--pink:#22d3ee}[data-mode=dark][data-theme=cosmos] .bg-wrap{background:radial-gradient(1000px 700px at 76% -10%,#7c3aed2b,#0000 62%),radial-gradient(820px 620px at 8% 28%,#4f6df51c,#0000 58%),radial-gradient(700px 520px at 88% 78%,#22d3ee0f,#0000 60%),linear-gradient(#030310 0%,#050517 100%)}[data-mode=dark][data-theme=cosmos] .blob-1{opacity:.3;background:radial-gradient(circle closest-side,#7c3aed,#0000 70%)}[data-mode=dark][data-theme=cosmos] .blob-2{opacity:.24;background:radial-gradient(circle closest-side,#2563eb,#0000 70%)}[data-mode=dark][data-theme=cosmos] .blob-3{opacity:.18;background:radial-gradient(circle closest-side,#ec4899,#0000 70%)}.bg-stars,.bg-comet{display:none}[data-mode=dark][data-theme=cosmos] .bg-stars{will-change:opacity;background-image:radial-gradient(1.2px 1.2px at 12% 22%,#ffffffe6,#0000 55%),radial-gradient(1px 1px at 38% 68%,#ffffffb3,#0000 55%),radial-gradient(1.4px 1.4px at 64% 14%,#c7d2fee6,#0000 55%),radial-gradient(1px 1px at 82% 44%,#ffffffa6,#0000 55%),radial-gradient(1.6px 1.6px at 26% 84%,#a5b4fccc,#0000 55%),radial-gradient(1px 1px at 52% 40%,#ffffff8c,#0000 55%),radial-gradient(1.2px 1.2px at 92% 78%,#ffffffbf,#0000 55%),radial-gradient(1px 1px at 6% 58%,#e0e7ff99,#0000 55%);background-repeat:repeat;background-size:520px 520px,380px 380px,610px 610px,440px 440px,560px 560px,330px 330px,490px 490px,400px 400px;animation:5.5s ease-in-out infinite alternate twinkle;display:block;position:absolute;inset:0;transform:translateZ(0)}@keyframes twinkle{0%{opacity:.5}to{opacity:1}}[data-mode=dark][data-theme=cosmos] .bg-comet{will-change:transform;background:linear-gradient(90deg,#fffffff2,#a5b4fc00);border-radius:2px;width:150px;height:2px;animation:11s linear infinite comet;display:block;position:absolute;top:14%;left:-160px}[data-mode=dark][data-theme=cosmos] .bg-comet:nth-child(odd){animation-delay:5.5s;top:8%}@keyframes comet{0%,86%{opacity:0;transform:translate(0,0)rotate(16deg)}88%{opacity:1}to{opacity:0;transform:translate(130vw,38vh)rotate(16deg)}}[data-theme=cosmos] .stat-num,[data-theme=cosmos] .gradient-text{text-shadow:0 0 22px color-mix(in srgb, var(--cyan) 38%, transparent)}[data-mode=light][data-theme=cosmos] .stat-num,[data-mode=light][data-theme=cosmos] .gradient-text{text-shadow:none}.sw-cosmos{background:linear-gradient(120deg,#8f7bff,#4f6df5,#22d3ee)}[data-theme=cosmos]{--radius:16px}[data-theme=ocean]{--radius:20px}[data-mode=dark][data-theme=ocean] .bg-wrap{background:radial-gradient(1000px 640px at 12% -8%,#22d3ee24,#0000 60%),radial-gradient(900px 620px at 88% 30%,#3b82f61f,#0000 62%),radial-gradient(760px 560px at 50% 108%,#14b8a621,#0000 60%),linear-gradient(#030914 0%,#04101f 100%)}[data-mode=dark][data-theme=ocean] .blob-1{opacity:.3;background:radial-gradient(circle closest-side,#0ea5e9,#0000 70%)}[data-mode=dark][data-theme=ocean] .blob-2{opacity:.26;background:radial-gradient(circle closest-side,#2563eb,#0000 70%)}[data-mode=dark][data-theme=ocean] .blob-3{opacity:.2;background:radial-gradient(circle closest-side,#14b8a6,#0000 70%)}[data-mode=dark][data-theme=ocean] .bg-grid{background-image:linear-gradient(#22d3ee0f 1px,#0000 1px),linear-gradient(90deg,#22d3ee0f 1px,#0000 1px);background-size:64px 64px}[data-theme=cyber]{--radius:8px}[data-mode=dark][data-theme=cyber] .bg-wrap{background:radial-gradient(900px 620px at -6% 12%,#00e5ff21,#0000 58%),radial-gradient(900px 620px at 106% 78%,#ff5cc81f,#0000 58%),linear-gradient(#040208 0%,#0a0416 100%)}[data-mode=dark][data-theme=cyber] .bg-noise{opacity:1;background-image:repeating-linear-gradient(0deg,#0000 0 2px,#ff5cc808 2px 4px)}[data-mode=dark][data-theme=cyber] .blob-1{opacity:.26;background:radial-gradient(circle closest-side,#00e5ff,#0000 70%)}[data-mode=dark][data-theme=cyber] .blob-2{opacity:.2;background:radial-gradient(circle closest-side,#ff5cc8,#0000 70%)}[data-mode=dark][data-theme=cyber] .blob-3{opacity:.22;background:radial-gradient(circle closest-side,#7c5cff,#0000 70%)}[data-mode=dark][data-theme=cyber] .bg-grid{background-image:linear-gradient(#00e5ff12 1px,#0000 1px),linear-gradient(90deg,#00e5ff12 1px,#0000 1px);background-size:64px 64px}[data-theme=matrix]{--radius:10px}[data-mode=dark][data-theme=matrix] .bg-wrap{background:radial-gradient(1000px 660px at 80% -10%,#45f0a01c,#0000 60%),radial-gradient(800px 560px at 6% 40%,#14b8a61a,#0000 58%),linear-gradient(#010805 0%,#03130b 100%)}[data-mode=dark][data-theme=matrix] .blob-1{opacity:.22;background:radial-gradient(circle closest-side,#22c55e,#0000 70%)}[data-mode=dark][data-theme=matrix] .blob-2{opacity:.2;background:radial-gradient(circle closest-side,#14b8a6,#0000 70%)}[data-mode=dark][data-theme=matrix] .blob-3{opacity:.14;background:radial-gradient(circle closest-side,#45f0a0,#0000 70%)}[data-mode=dark][data-theme=matrix] .bg-grid{background-image:linear-gradient(#45f0a014 1px,#0000 1px),linear-gradient(90deg,#45f0a014 1px,#0000 1px);background-size:32px 32px}[data-theme=sunset]{--radius:18px}[data-mode=dark][data-theme=sunset] .bg-wrap{background:radial-gradient(1100px 640px at 50% 118%,#ff8a3d33,#0000 64%),radial-gradient(800px 520px at 88% -8%,#ff5cc81f,#0000 58%),radial-gradient(700px 500px at -6% 24%,#ffd1661a,#0000 56%),linear-gradient(#080409 0%,#150812 100%)}[data-mode=dark][data-theme=sunset] .blob-1{opacity:.26;background:radial-gradient(circle closest-side,#ff8a3d,#0000 70%)}[data-mode=dark][data-theme=sunset] .blob-2{opacity:.2;background:radial-gradient(circle closest-side,#ff5cc8,#0000 70%)}[data-mode=dark][data-theme=sunset] .blob-3{opacity:.18;background:radial-gradient(circle closest-side,#ffd166,#0000 70%)}@media (min-width:1280px){html{font-size:16.5px}}@media (min-width:1536px){html{font-size:17.5px}}@media (min-width:1800px){html{font-size:18.5px}}.video-ph{background:linear-gradient(135deg, color-mix(in srgb, var(--cyan) 9%, transparent), color-mix(in srgb, var(--violet) 14%, transparent));place-items:center;display:grid;position:absolute;inset:0}.video-fallback{text-align:center;background:var(--surface);border:1px solid var(--border);max-width:min(92vw,560px);color:var(--text-dim);border-radius:10px;place-items:center;gap:10px;padding:30px 24px;display:grid}.video-fallback .vf-icon{font-size:2.2rem;line-height:1}.video-fallback .vf-name{font-family:var(--font-mono,monospace);color:var(--text);word-break:break-all;font-size:.8rem}.video-fallback .vf-note{color:var(--text-faint);font-size:.85rem}.video-fallback .vf-link{color:var(--text);text-underline-offset:3px;font-size:.8rem;text-decoration:underline}.ip-lb-stage video{min-width:min(320px,80vw);min-height:min(180px,45vh)}.video-ph video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.ip-tile:hover .video-ph video{transform:scale(1.05)}.ip-zoom{align-items:center}.ip-zoom-level{text-align:center;min-width:22px;font-family:var(--font-mono);color:var(--text-dim);font-size:.8rem}.ip-lb-zoom{z-index:20;gap:6px;display:flex;position:absolute;top:14px;right:64px}.ip-lb-zoom button{background:var(--surface);width:36px;height:36px;color:var(--text);cursor:pointer;box-shadow:var(--shadow-card);border:0;border-radius:50%;place-items:center;font-size:1.1rem;line-height:1;transition:background .15s;display:grid}[data-mode=light]{--green:#0d7a4f}[data-mode=light] .cf-status.err,[data-mode=light] .ctf-fb-err,[data-mode=light] .voice-err,[data-mode=light] .voice-btn.is-rec,[data-mode=light] .mkt-err{color:#b3261e}[data-mode=light] .rec-dot{background:#b3261e}[data-mode=light] .voice-x:hover{color:#b3261e}[data-mode=light] .mkt-ok{color:#0d7a4f}[data-mode=light] .ctf-answer.shake input{border-color:#b3261e}[data-mode=light] .hero-canvas{opacity:.35}.ip-tile:focus-visible{outline:2px solid var(--ink-accent);outline-offset:2px}.ip-lb-zoom button{color:#fff;-webkit-backdrop-filter:blur(8px);background:#080c148c}.ip-lb-zoom button:hover{background:#080c14c7}.lesson-card .pin-badge{left:12px;right:auto}.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}@media (pointer:coarse){.term-input,.nano-area,.ctf-answer input,.tool-in,.tool-area,.lx-search,.bl-search input,.mkt-order input,.mkt-order textarea,.ui-dialog-input,.ad-app input,.ad-app textarea,.ad-app select,.contact-form input,.contact-form textarea{font-size:16px}}.navbar{padding-top:max(20px, env(safe-area-inset-top))}.theme-fab{bottom:max(22px, env(safe-area-inset-bottom))}.ip-lb-zoom,.lightbox-close{top:max(14px, env(safe-area-inset-top))}html{overflow-x:clip}*{-webkit-tap-highlight-color:transparent}.cert-slide{aspect-ratio:3/2}.cert-slide img{object-fit:cover;height:100%}.post-page .post-media img{aspect-ratio:16/9;object-fit:cover}.menu-btn{padding:10px}.lightbox-close{min-width:44px;min-height:44px}.reader-modal:focus{outline:none}.nav-links a.contact-cta.active{background:var(--grad);color:#04101c}.term-error{color:#f87171;padding:16px 18px;font-size:.9rem}.btn:disabled,.btn[disabled]{opacity:.55;cursor:default;transform:none}.btn:disabled:hover,.btn[disabled]:hover{filter:none;transform:none}@media (pointer:coarse){.btn:active,.filter-chip:active,.seg:active,.swatch:active,.cmd-chip:active,.ip-tile:active,.nav-links a:active,.share-btn:active{filter:brightness(.92);transform:scale(.97)}.search-inp kbd{display:none}}.search-fab{bottom:max(22px, env(safe-area-inset-bottom));z-index:125}.edit-fab{bottom:max(20px, env(safe-area-inset-bottom))}.ip-lb-zoom{right:84px}.nav-scrim{z-index:105;background:#04060c80;position:fixed;inset:0}@media (max-width:760px){.nav-links a.contact-cta{margin-top:10px;margin-left:0}}.cert-dots button{box-sizing:content-box;background-clip:content-box;width:12px;height:12px;padding:6px}.reader-close{min-width:44px;min-height:44px}.ip-zoom button{width:40px;height:40px}.footer-top{padding:10px 0}.lang-toggle{gap:2px;padding:3px 6px}.lang-toggle .lang-opt{color:var(--text-dim);font-family:var(--font-mono);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:5px 8px;font-size:.85rem;transition:color .15s,background .15s}.lang-toggle .lang-opt.active{color:var(--ink-accent);background:var(--surface-2)}.term-window{max-width:920px;margin:0 auto}.book-desc{max-width:62ch}.footer-bottom{padding-right:90px}@media (max-width:560px){.search-overlay{align-items:flex-end;padding:0}.search-box{border-radius:var(--radius) var(--radius) 0 0;width:100%;max-height:80dvh;padding-bottom:env(safe-area-inset-bottom)}}@media (pointer:coarse){.lang-toggle{padding:11px 14px}.filter-chip{padding:12px 18px}.seg{padding:10px 18px}.ip-zoom button{width:44px;height:38px}.cert-dots button{width:14px;height:14px}}.cert-badge{background:var(--grad-soft);color:var(--ink-accent);font-family:var(--font-mono);border-radius:999px;margin-top:6px;padding:2px 9px;font-size:.72rem;font-weight:600;display:inline-block}html[data-fx=off] .blob{animation:none}html[data-fx=off] .bg-comet{display:none}.hero-grid{grid-template-columns:1.08fr .92fr;align-items:center;gap:clamp(32px,5vw,72px)}.hero-main{text-shadow:0 1px 2px #00000080,0 4px 18px #00000059;max-width:760px}[data-mode=light] .hero-main{text-shadow:none}[data-mode=light] .photo-layer img{filter:brightness(.7)saturate(.9)}[data-mode=light][data-theme=matrix] .photo-layer img{filter:brightness(.6)saturate(.9)}[data-mode=light] .hero-badge,[data-mode=light] .social-link,[data-mode=light] .lang-toggle,[data-mode=light] .filter-chip:not(.active),[data-mode=light] .share-btn:not(.ok){box-shadow:var(--shadow-chip);background:#fff}.btn-ghost:hover,.social-link:hover,.lang-toggle:hover{background:color-mix(in srgb, var(--panel) 84%, transparent)}.hero-name{text-shadow:none}.seg-toggle,.bl-search,.lx-search,.ctf-score,.ip-zoom button{background:color-mix(in srgb, var(--panel) 72%, transparent)}[data-mode=light] .lx-search{border-color:var(--border-strong);background:#fff}[data-mode=light] .seg-toggle,[data-mode=light] .bl-search,[data-mode=light] .ip-zoom button{box-shadow:var(--shadow-chip);background:#fff}[data-mode=light] .ctf-score{box-shadow:0 0 0 1px var(--border), var(--shadow-card);background:#fff}html.has-photo-layer .bg-wrap{display:none}html:has(.photo-layer) .bg-wrap{display:none}body.edit-on .to-top-fab{bottom:76px}[data-mode=dark][data-theme=cosmos]{--ink-accent:#b2a6ff}[data-mode=dark] .hero-name{text-shadow:0 1px 2px #00000073,0 6px 24px #0000004d}html[data-fx=off] *,html[data-fx=off] :before,html[data-fx=off] :after{animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.nf-page .section-title,.nf-page .nf-code,.nf-inner .hero-desc{text-shadow:0 1px 2px #00000080,0 4px 18px #00000059}.ip-toolbar{background:color-mix(in srgb, var(--panel) 72%, transparent);border-radius:999px;align-items:center;gap:10px;width:fit-content;margin:0 0 16px auto;padding:6px 8px;display:inline-flex}[data-mode=light] .ip-toolbar{box-shadow:var(--shadow-chip);background:#fff}.lx-progress{background:color-mix(in srgb, var(--panel) 72%, transparent);border-radius:10px;padding:8px 12px}[data-mode=light] .lx-progress{box-shadow:var(--shadow-chip);background:#fff}.btn-primary{background-position:0 0;background-size:180% 180%}.btn-primary:hover{background-position:92% 92%}.btn:active:not(:disabled){transform:translateY(0)scale(.98)}.filter-chip:active,.seg:active,.cmd-chip:active,.swatch:active,.lesson-done:active{transform:translateY(0)scale(.97)}.social-link:active{transform:translateY(-1px)scale(.96)}.nav-links a.contact-cta{transition:color .2s,background .2s,box-shadow .2s,transform .2s}.nav-links a.contact-cta:hover{transform:translateY(-1px)}.cert-nav:hover{background:color-mix(in srgb, var(--ink-accent) 12%, var(--panel))}.cert-nav:active{transform:translateY(-50%)scale(.94)}.post-toc[open] summary{color:var(--ink-accent)}.theme-fab[aria-expanded=true]{transform:rotate(25deg)scale(1.08)}:where(a,button,[role=button],[role=switch],summary,input,select,textarea):focus-visible{outline:2px solid var(--ink-accent);outline-offset:2px}.ip-lb-zoom button{min-width:44px;min-height:44px}.bl-search-x{border-radius:50%;place-items:center;width:34px;height:34px;margin:-4px -8px -4px 0;transition:color .15s,background .15s;display:grid}.bl-search-x:hover{background:var(--surface-2)}.voice-x{border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.voice-x:hover{background:#ff6b6b1f}@media (hover:hover) and (pointer:fine){.cert-track{cursor:grab}.cert-track.dragging{cursor:grabbing;scroll-behavior:auto;scroll-snap-type:none;-webkit-user-select:none;user-select:none}}.to-top-fab{left:22px;bottom:max(22px, env(safe-area-inset-bottom));z-index:85;cursor:pointer;background:color-mix(in srgb, var(--panel) 84%, transparent);width:46px;height:46px;color:var(--text);box-shadow:var(--shadow-card);opacity:0;pointer-events:none;border:0;border-radius:50%;place-items:center;transition:opacity .25s,transform .25s,background .2s,color .2s;display:grid;position:fixed;transform:translateY(10px)}.to-top-fab.show{opacity:1;visibility:visible;pointer-events:auto;transform:none}.to-top-fab:hover{background:var(--surface-2);color:var(--ink-accent)}@media print{.to-top-fab{display:none!important}}.swatch{position:relative}.swatch.active{box-shadow:0 0 0 2px var(--ink-accent), 0 0 0 5px color-mix(in srgb, var(--ink-accent) 22%, transparent)}.swatch.active:after{content:"✓";background:var(--ink-accent);color:#04101c;text-align:center;border-radius:50%;width:16px;height:16px;font-size:10px;font-weight:700;line-height:16px;position:absolute;top:6px;right:7px}[data-mode=light] .swatch.active:after{color:#fff}.mode-opt{transition:opacity .2s,background .2s,transform .2s}.mode-opt.active{transform:scale(1.05)}@media (max-width:760px){.hero-desc{color:var(--text)}}[data-mode=light] .glass{border-color:var(--border);background:#fff}[data-mode=light] .lang-bars,[data-mode=light] article.post-page:not(.album-page){box-shadow:0 0 0 1px var(--border), var(--shadow-card);background:#fff}[data-mode=light] .cv-page{box-shadow:0 0 0 1px var(--border), var(--shadow-card)}[data-mode=light] .ui-dialog{background-color:#fff;background-image:none}[data-mode=light] .section{background:#fff}[data-mode=light] .section:nth-of-type(2n){background:color-mix(in srgb, var(--bg) 55%, #fff)}[data-mode=light] .section.nf-page{background:0 0}[data-mode=light] .nf-page .section-title,[data-mode=light] .nf-page .nf-code,[data-mode=light] .nf-inner .hero-desc{text-shadow:none}[data-mode=light] .btn{box-shadow:0 1px 2px #0f172a14}[data-mode=light] .btn-ghost{border-color:var(--border-strong);background:#fff}[data-mode=light] .btn-primary{box-shadow:0 1px 2px #0f172a1f, 0 10px 28px -10px color-mix(in srgb, var(--cyan) 55%, transparent)}[data-mode=light] .nav-links a.contact-cta{box-shadow:0 1px 2px #0f172a1a, 0 6px 18px -6px color-mix(in srgb, var(--cyan) 45%, transparent)}[data-mode=light] .filter-chip.active{box-shadow:0 2px 10px -2px color-mix(in srgb, var(--violet) 40%, transparent)}[data-mode=light] .btn-ghost:hover,[data-mode=light] .social-link:hover,[data-mode=light] .lang-toggle:hover,[data-mode=light] .filter-chip:hover,[data-mode=light] .share-btn:not(.ok):hover{background:var(--surface-2)}[data-mode=light] .to-top-fab{box-shadow:0 0 0 1px var(--border), var(--shadow-card);background:#fff}[data-mode=light] .to-top-fab:hover{background:var(--surface-2)}[data-mode=light] .cert-nav{box-shadow:0 0 0 1px var(--border), 0 10px 26px -12px #0f172a4d}[data-mode=light] .search-fab{box-shadow:0 0 0 1px var(--border), var(--shadow-card)}[data-mode=light] .theme-fab{box-shadow:0 8px 24px -8px #0f172a59}[data-mode=light] .contact-form input,[data-mode=light] .contact-form textarea,[data-mode=light] .ctf-answer input,[data-mode=light] .tool-in,[data-mode=light] .tool-area,[data-mode=light] .ui-dialog-input,[data-mode=light] .mkt-order input,[data-mode=light] .mkt-order textarea,[data-mode=light] .ad-app input:not([type=checkbox]):not([type=file]),[data-mode=light] .ad-app textarea,[data-mode=light] .ad-app select{border-color:var(--border-strong);background:#fff}[data-mode=light] .mkt-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb}[data-mode=light] .term,[data-mode=light] .term-window{background:#0b1120}[data-mode=light] .ad-lock input{border-color:var(--border-strong);background:#fff}.ad-toast{z-index:420;background:var(--surface-2);max-width:min(92vw,560px);color:var(--text);box-shadow:var(--shadow);border:0;border-radius:999px;align-items:center;gap:10px;padding:10px 18px;font-size:.875rem;animation:.18s ad-toast-in;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.ad-toast a{color:var(--cyan);font-weight:600;text-decoration:none}.ad-toast a:hover{text-decoration:underline}.ad-toast-x{width:28px;height:28px;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;font-size:.8rem}.ad-toast-x:hover{color:var(--text);background:var(--surface)}@keyframes ad-toast-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}}.ad-item-actions button,.ad-album-actions button{width:40px;height:40px}.ad-tn button,.ad-media button{width:36px;height:36px;font-size:.85rem}.ad-media button.danger{top:43px}.blk-ctrl button{width:36px;height:36px}.crop-handle{touch-action:none;width:36px;height:36px;bottom:-19px;right:-19px}.ad-view{color:var(--cyan);white-space:nowrap;flex:none;align-self:center;padding:8px 6px;font-size:.78rem;font-weight:600;text-decoration:none}.ad-view:hover{text-decoration:underline}@media (hover:none){.ad-album-ph-actions{opacity:1}.ad-album-ph-actions button{width:40px;height:40px;font-size:.95rem}.ad-drag-hint{display:none}}[data-mode=light] .ad-err,[data-mode=light] .ad-up-err{color:#b3261e}[data-mode=light] .ui-dialog-danger{background:#b3261e;border-color:#b3261e}[data-mode=light] .ui-dialog-danger:hover{background:#9a1f19;border-color:#9a1f19}@media (max-width:899px){.hero-grid{grid-template-columns:1fr;gap:0}.hero-main{max-width:100%}.hero-title{letter-spacing:-.02em;margin-bottom:14px;font-size:clamp(2.3rem,11vw,3.35rem)}.hero-role-line{min-height:1.7em;margin:2px 0 16px;font-size:clamp(.84rem,4.7vw,1.15rem);line-height:1.7}.hero-desc{max-width:100%;margin-bottom:24px;font-size:1.0625rem;line-height:1.6}.hero-cta{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:22px;display:grid}.hero-cta .btn{width:100%;padding:13px 10px;font-size:.95rem}.hero-cta .btn-primary{grid-column:1/-1}.hero-badge{margin-bottom:22px}.hero-socials{gap:10px}.hero{padding-bottom:104px}}@media (max-width:359px){.hero-cta{grid-template-columns:1fr}.hero-cta .btn-primary{grid-column:auto}}@media (max-width:760px){.tags span,.blog-meta,.digest-meta,.cert-meta,.course-meta,.lesson-date,.tl-date{font-size:.9375rem}:root{--fab-size:48px;--fab-gap:12px;--fab-inset-x:max(16px, env(safe-area-inset-right));--fab-inset-b:max(16px, env(safe-area-inset-bottom));--fab-cluster-h:calc(var(--fab-size) + var(--fab-inset-b));--fab-clearance:calc(var(--fab-cluster-h) + 20px)}.theme-fab,.search-fab{width:var(--fab-size);height:var(--fab-size);right:var(--fab-inset-x);bottom:var(--fab-inset-b);z-index:95}.search-fab{right:calc(var(--fab-inset-x) + var(--fab-size) + var(--fab-gap))}.theme-panel{right:var(--fab-inset-x);bottom:calc(var(--fab-cluster-h) + var(--fab-gap));z-index:100}body.edit-on .to-top-fab{bottom:calc(var(--fab-inset-b) + 72px)}.menu-btn{padding:14px 10px}.lang-toggle{padding:0 6px}.lang-toggle .lang-opt{padding:14px 8px}}@media (max-width:700px){section.page-hero{padding-top:104px}.section-head{margin-bottom:40px}.footer-bottom{padding-left:60px;padding-right:150px}}@media (max-width:760px){article.post-page{padding-top:96px;padding-bottom:64px}article.post-page:not(.album-page){padding:100px clamp(20px,5vw,40px) 64px}.section-title,.section-head.masthead .section-title,.section-head.split .section-title{font-size:clamp(1.625rem,1.25rem + 2vw,2rem)}.post-title{font-size:clamp(1.65rem,1.3rem + 1.8vw,1.9rem)}.blog-card h3,.bl-body h3,.lesson-card h3,.book-info h3,.digest-body h3{font-size:1.1875rem}.bl-feat-body h2{font-size:clamp(1.35rem,1.15rem + 1vw,1.55rem)}.book-desc{font-size:1rem}.post-rich h2{font-size:1.5rem}.post-rich h3{font-size:1.3rem}.post-rich pre{white-space:pre-wrap;overflow-wrap:anywhere}.bl-body h3{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.cv-actions,.lx-progress{flex-wrap:wrap}}@media (max-width:480px){.book-cover{width:76px;height:102px}.book-card{gap:14px;padding:20px 18px}.lesson-card{padding:22px 20px}.bl-feat-body{padding:22px 20px 26px}}@media (max-width:520px){.footer-col ul{gap:12px}}@media (pointer:coarse){.cmd-chip{padding:10px 14px}.btn-sm{padding:12px 17px;font-size:.9rem}.post-back{margin-bottom:10px;padding:10px 12px 10px 0}.post-toc summary{padding:15px 0}}.cert-dots button{box-sizing:content-box;background-clip:content-box;width:12px;height:12px;padding:0;position:relative}.cert-dots button:after{content:"";position:absolute;inset:-6px}@media (max-width:760px){.ip-zoom button,.lightbox-close{width:44px;height:44px}.mode-opt{min-width:44px;min-height:40px}.bl-search-x,.voice-x{width:44px;height:44px}.cmd-chip{padding:12px 14px}.post-back{padding:12px 12px 12px 0}}.footer-bottom{padding-left:80px}@media (max-width:860px){.footer{padding:38px 0 22px}.footer-grid{gap:22px 16px;padding-bottom:24px}.footer-tag{max-width:46ch;margin-top:8px;font-size:.95rem}.footer-col h4{margin-bottom:8px}.footer-col ul{gap:7px}.footer-col a{padding:4px 0;font-size:.9rem;display:inline-block}}@media (max-width:520px){.footer-grid{grid-template-columns:1fr 1fr;gap:20px 14px;padding-bottom:22px}.footer-about,.footer-col:last-child{grid-column:1/-1}.footer-col:last-child ul{grid-template-columns:1fr 1fr;gap:6px 14px;display:grid}.footer-bottom{gap:6px 12px;padding-top:16px;font-size:.8125rem}}@media (max-width:760px){.footer-bottom{padding-left:78px;padding-right:150px}}@media (pointer:coarse){.filter-chip{min-height:40px}}@media (max-height:640px){.hero{align-items:flex-start}}@media (max-width:420px){.term{font-size:12px}}.cert-dots button{z-index:0}.cert-dots button:after{z-index:-1}.search-inp:focus-within{border-bottom-color:color-mix(in srgb, var(--ink-accent) 60%, var(--border));box-shadow:0 0 0 3px color-mix(in srgb, var(--ink-accent) 14%, transparent)}@media (pointer:coarse){.term-input{min-height:44px}.lesson-done,.cert-view-btn{min-height:40px}.footer-top{padding:10px 0}.lang-opt{min-width:44px}}.footer-bottom{text-align:center;justify-content:center;padding-left:20px;padding-right:20px}.footer-bottom span{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);font-size:.78rem}@media (max-width:760px){.footer-bottom{padding-bottom:86px}}.gallery-subhead{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-faint);align-items:center;gap:14px;margin:0 0 16px;font-size:.74rem;font-weight:500;display:flex}.gallery-subhead:after{content:"";background:var(--border);flex:1;height:1px}.album-section{margin-top:6px}.allphotos-section{margin-top:44px}.album-card .album-go{color:#fff;opacity:0;-webkit-backdrop-filter:blur(6px);background:#080c188c;border-radius:50%;place-items:center;width:34px;height:34px;font-size:1.05rem;transition:opacity .25s,transform .25s;display:grid;position:absolute;top:14px;right:16px;transform:translate(-6px)}.album-card:hover .album-go,.album-card:focus-visible .album-go{opacity:1;transform:none}@media (pointer:coarse){.album-card .album-go{opacity:1;background:#080c1873;width:30px;height:30px;font-size:.95rem;transform:none}}@media (max-width:640px){.album-card{aspect-ratio:16/10;border-radius:14px}.album-overlay{padding:16px}.album-overlay h3{font-size:1.15rem}}@media (max-width:768px){.search-fab,.theme-fab{transition:opacity .3s,transform .3s}body.fab-gate .search-fab,body.fab-gate .theme-fab{opacity:0;pointer-events:none;transform:translateY(14px)}}
