:root{--ink:15, 23, 42;--ink-inv:255, 255, 255;--bg:#f6f7fb;--bg-2:#fff;--surface:rgba(var(--ink), .04);--surface-2:rgba(var(--ink), .06);--border:rgba(var(--ink), .1);--text:#0f172a;--text-2:rgba(var(--ink), .72);--text-3:rgba(var(--ink), .5);--accent:#334155;--accent-strong:#0f172a;--card-bg:#ffffffeb;--card-bg-2:#ffffffd1;--glass-bg:#ffffffb8;--glass-bg-2:#ffffffe0;--glass-bg-3:#fffffff7;--soft:rgba(var(--ink), .06);--soft-2:rgba(var(--ink), .08);--popover-bg:#fff;--input-bg:rgba(var(--ink), .03);--dot-color:rgba(var(--ink), .05);--dot-opacity:.1;--r-xs:10px;--r-sm:12px;--r-md:16px;--r-lg:20px;--r-xl:24px;--r-full:9999px;--s-2:2px;--s-4:4px;--s-6:6px;--s-8:8px;--s-10:10px;--s-12:12px;--s-16:16px;--s-20:20px;--s-24:24px;--s-32:32px;--s-40:40px;--s-48:48px;--s-64:64px;--font-sys:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;--shadow-sm:0 2px 10px rgba(var(--ink), .08);--shadow-md:0 10px 26px rgba(var(--ink), .1);--shadow-lg:0 18px 44px rgba(var(--ink), .12);--ease:cubic-bezier(.22, 1, .36, 1);--ease-2:cubic-bezier(.16, 1, .3, 1);--dur-1:.16s;--dur-2:.26s;--container:1120px}[data-theme=dark]{--ink:248, 250, 252;--ink-inv:15, 23, 42;--bg:#0f172a;--bg-2:#1e293b;--surface:rgba(var(--ink), .04);--surface-2:rgba(var(--ink), .07);--border:rgba(var(--ink), .12);--text:#f8fafc;--text-2:rgba(var(--ink), .7);--text-3:rgba(var(--ink), .45);--accent:#94a3b8;--accent-strong:#f8fafc;--card-bg:#1e293bf2;--card-bg-2:#1e293bd9;--glass-bg:#0f172abf;--glass-bg-2:#1e293be6;--glass-bg-3:#0f172afa;--soft:rgba(var(--ink), .05);--soft-2:rgba(var(--ink), .08);--popover-bg:#1e293b;--input-bg:rgba(var(--ink), .04);--dot-color:rgba(var(--ink), .05);--dot-opacity:.07;--shadow-sm:0 2px 10px #0000004d;--shadow-md:0 10px 26px #0006;--shadow-lg:0 18px 44px #00000080}[data-theme=midnight]{--ink:199, 210, 254;--ink-inv:15, 23, 42;--bg:#060b14;--bg-2:#0d1526;--surface:#6366f112;--surface-2:#6366f11f;--border:#6366f138;--text:#e2e8f0;--text-2:#e2e8f0ad;--text-3:#e2e8f06b;--accent:#818cf8;--accent-strong:#c7d2fe;--card-bg:#0d1526f7;--card-bg-2:#0d1526e6;--glass-bg:#060b14cc;--glass-bg-2:#0d1526eb;--glass-bg-3:#060b14fa;--soft:#6366f114;--soft-2:#6366f121;--popover-bg:#0d1526;--input-bg:#6366f10f;--dot-color:#6366f11f;--dot-opacity:.1;--shadow-sm:0 2px 10px #0006;--shadow-md:0 10px 26px #0000008c;--shadow-lg:0 18px 44px #000000a6}[data-theme=ocean]{--ink:12, 35, 64;--ink-inv:255, 255, 255;--bg:#f0f8ff;--bg-2:#fff;--surface:rgba(var(--ink), .04);--surface-2:rgba(var(--ink), .07);--border:rgba(var(--ink), .12);--text:#0c2340;--text-2:rgba(var(--ink), .7);--text-3:rgba(var(--ink), .45);--accent:#0e7490;--accent-strong:#164e63;--card-bg:#f0f8ffed;--card-bg-2:#e0f2fed9;--glass-bg:#f0f8ffbf;--glass-bg-2:#f0f8ffe6;--glass-bg-3:#f0f8fffa;--soft:rgba(var(--ink), .05);--soft-2:rgba(var(--ink), .08);--popover-bg:#fff;--input-bg:rgba(var(--ink), .03);--dot-color:rgba(var(--ink), .05);--dot-opacity:.1;--shadow-sm:0 2px 10px #0e749014;--shadow-md:0 10px 26px #0e74901f;--shadow-lg:0 18px 44px #0e749029}[data-theme=forest]{--ink:13, 36, 22;--ink-inv:255, 255, 255;--bg:#f0f4ee;--bg-2:#fafbf8;--surface:rgba(var(--ink), .04);--surface-2:rgba(var(--ink), .07);--border:rgba(var(--ink), .12);--text:#0d2416;--text-2:rgba(var(--ink), .7);--text-3:rgba(var(--ink), .45);--accent:#166534;--accent-strong:#052e16;--card-bg:#f0f4eef0;--card-bg-2:#dceadcd9;--glass-bg:#f0f4eebf;--glass-bg-2:#f0f4eee6;--glass-bg-3:#f0f4eefa;--soft:rgba(var(--ink), .05);--soft-2:rgba(var(--ink), .08);--popover-bg:#fafbf8;--input-bg:rgba(var(--ink), .03);--dot-color:rgba(var(--ink), .05);--dot-opacity:.1;--shadow-sm:0 2px 10px #16653412;--shadow-md:0 10px 26px #1665341a;--shadow-lg:0 18px 44px #16653424}[data-theme=rose]{--ink:28, 10, 15;--ink-inv:255, 255, 255;--bg:#fdf6f0;--bg-2:#fff;--surface:rgba(var(--ink), .04);--surface-2:rgba(var(--ink), .07);--border:rgba(var(--ink), .12);--text:#1c0a0f;--text-2:rgba(var(--ink), .7);--text-3:rgba(var(--ink), .45);--accent:#be123c;--accent-strong:#881337;--card-bg:#fff4eef0;--card-bg-2:#ffe4e6d9;--glass-bg:#fdf6f0bf;--glass-bg-2:#fdf6f0e6;--glass-bg-3:#fdf6f0fa;--soft:rgba(var(--ink), .05);--soft-2:rgba(var(--ink), .08);--popover-bg:#fff;--input-bg:rgba(var(--ink), .03);--dot-color:rgba(var(--ink), .05);--dot-opacity:.1;--shadow-sm:0 2px 10px #be123c12;--shadow-md:0 10px 26px #be123c1a;--shadow-lg:0 18px 44px #be123c21}[data-radius=sharp]{--r-xs:4px;--r-sm:6px;--r-md:8px;--r-lg:10px;--r-xl:12px}[data-radius=soft]{--r-xs:14px;--r-sm:18px;--r-md:24px;--r-lg:30px;--r-xl:36px}[data-radius=android]{--r-xs:10px;--r-sm:14px;--r-md:18px;--r-lg:22px;--r-xl:26px}[data-font=mono]{--font-sys:ui-monospace, "SF Mono", "Fira Code", "Cascadia Code", "Consolas", monospace}[data-font=geo]{--font-sys:"DM Sans", "Outfit", "Plus Jakarta Sans", "Nunito", system-ui, sans-serif}.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}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:0}::-webkit-scrollbar{display:none}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sys);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;line-height:1.5;overflow-x:hidden}body:before{content:"";pointer-events:none;background-image:radial-gradient(rgba(var(--ink), .05) 1px, transparent 1px);opacity:.1;z-index:0;background-size:28px 28px;position:fixed;inset:0}a{color:inherit;text-decoration:none}button{cursor:pointer;-webkit-user-select:none;user-select:none;font-family:inherit}img{max-width:100%;display:block}:focus-visible{outline:2px solid rgba(var(--ink), .25);outline-offset:2px;border-radius:10px}.cursor-pointer{cursor:pointer}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.project-year-badge{background:var(--text);color:var(--bg);border-radius:var(--r-md);z-index:2;box-shadow:0 2px 8px rgba(var(--ink),.1);letter-spacing:.2px;padding:4px 10px;font-size:12px;font-weight:700;position:absolute;top:10px;right:10px}.nav-more-btn{border-radius:var(--r-full);cursor:pointer;color:var(--text-2);background:0 0;border:none;justify-content:center;align-items:center;padding:8px 10px;transition:background .2s,color .2s;display:flex}.nav-more-btn.active,.nav-more-btn:hover{background:rgba(var(--ink), .08);color:var(--text)}.nav-popover{background:var(--popover-bg);opacity:0;pointer-events:none;min-width:180px;padding:8px 0 4px;transition:opacity .18s;display:none;position:absolute;top:110%;right:0}.nav-popover.open{opacity:1;pointer-events:all;display:block}.nav-popover-header{color:var(--text-2);border-bottom:1px solid var(--border);margin-bottom:4px;padding:6px 16px 4px;font-size:12px;font-weight:700}.nav-popover-link{color:var(--text-2);border-radius:var(--r-xs);padding:8px 16px;font-size:13px;text-decoration:none;transition:background .18s,color .18s;display:block}.nav-popover-link:hover,.nav-popover-link.active{background:rgba(var(--ink), .06);color:var(--text)}@media (min-width:768px){html:has(#home){overflow:hidden}html:has(#home) body{overflow:hidden}html:has(#about){overflow:hidden}html:has(#about) body{overflow:hidden}html:has(#skills){overflow:hidden}html:has(#skills) body{overflow:hidden}html:has(#projects){overflow:hidden}html:has(#projects) body{overflow:hidden}html:has(#contact){overflow:hidden}html:has(#contact) body{overflow:hidden}html:has(#blog){overflow:hidden}html:has(#blog) body{overflow:hidden}}.app-shell{z-index:1;min-height:100vh;position:relative}.preloader{background:var(--bg);z-index:99999;opacity:1;pointer-events:all;will-change:opacity;justify-content:center;align-items:center;transition:opacity .6s cubic-bezier(.22,1,.36,1),visibility 0s .6s;animation:10ms linear 4.8s forwards preloaderForceHide;display:flex;position:fixed;inset:0}.preloader.is-done{opacity:0;pointer-events:none;visibility:hidden;animation:none}.preloader-center{justify-content:center;align-items:center;width:80px;height:80px;display:flex;position:relative}.preloader-logo{opacity:0;border-radius:50%;width:56px;height:56px;animation:.5s cubic-bezier(.22,1,.36,1) .15s forwards preloaderLogoIn;transform:scale(.85)}.preloader-spinner{border:2px solid rgba(var(--ink), .06);border-top-color:rgba(var(--ink), .35);border-radius:50%;animation:.8s linear infinite preloaderSpin;position:absolute;inset:0}@keyframes preloaderLogoIn{to{opacity:1;transform:scale(1)}}@keyframes preloaderSpin{to{transform:rotate(360deg)}}@keyframes preloaderForceHide{to{opacity:0;visibility:hidden;pointer-events:none}}.theme-switcher{top:var(--s-16);right:var(--s-16);z-index:10000;gap:var(--s-6);padding:var(--s-6);background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);display:flex;position:fixed}.theme-toggle{min-width:44px;height:36px;padding:0 var(--s-12);border-radius:var(--r-xs);color:var(--text-2);transition:transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease), color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:flex}.theme-toggle.active{background:rgba(var(--ink), .06);border-color:rgba(var(--ink), .12);color:var(--text)}.theme-toggle:active{transform:scale(.96)}.app-header{padding:var(--s-12) var(--s-16);padding-top:calc(var(--s-12) + env(safe-area-inset-top));background:var(--glass-bg);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);z-index:999;position:sticky;top:0}.header-content{align-items:center;gap:var(--s-12);display:flex}.header-avatar--clickable{cursor:pointer}.header-avatar{justify-content:center;align-items:center;width:44px;height:44px;display:flex;box-shadow:none!important;background:0 0!important;border:none!important;border-radius:0!important;padding:0!important;overflow:visible!important}.header-avatar:before,.header-avatar:after{content:none!important;display:none!important}.header-avatar .logo-img,.header-avatar img{width:44px;height:44px;object-fit:contain!important;box-shadow:none!important;filter:none!important;background:0 0!important;border-radius:0!important;outline:none!important}.header-info .header-site-name{letter-spacing:-.2px;font-size:16px;font-weight:750;line-height:1.2;display:block}.header-info p{color:var(--text-2);font-size:13px;font-weight:550}.desktop-nav{display:none}.nav-wrapper{max-width:var(--container);padding:0 var(--s-24);justify-content:space-between;align-items:center;height:64px;margin:0 auto;display:flex}.nav-logo{letter-spacing:-.6px;color:var(--text);cursor:pointer;align-items:center;gap:12px;font-size:18px;font-weight:900;text-decoration:none;transition:opacity .12s ease-out;display:flex}.nav-logo:hover{opacity:.8}.nav-logo-img{object-fit:contain;width:32px;height:32px}.nav-links{align-items:center;gap:12px;display:flex}.nav-item{color:var(--text-2);border-radius:var(--r-full);cursor:pointer;will-change:background, color;border:1px solid #0000;justify-content:center;align-items:center;padding:8px 12px;font-size:13.5px;font-weight:750;text-decoration:none;transition:background .12s ease-out,color .12s ease-out,border-color .12s ease-out;display:inline-flex}.nav-item:hover{background:rgba(var(--ink), .06);color:var(--text)}.nav-item.active{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .1);color:var(--text)}.app-content{padding-bottom:calc(70px + env(safe-area-inset-bottom))}.view{opacity:1;display:block}.view.active{animation:viewFadeIn var(--dur-2) var(--ease) forwards;display:block}.view-inner{padding:var(--s-24);max-width:var(--container);margin:0 auto}.tab-bar{background:var(--glass-bg);-webkit-backdrop-filter:blur(24px);border-top:1px solid rgba(var(--ink), .06);padding:0 4px;padding-bottom:calc(8px + env(safe-area-inset-bottom));z-index:1000;align-items:flex-end;display:flex;position:fixed;bottom:0;left:0;right:0}.tab-item{color:var(--text-3);min-height:56px;transition:color var(--dur-1) var(--ease);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;padding:10px 4px 8px;text-decoration:none;display:flex;position:relative}.tab-item.active{color:var(--text)}.tab-item.active:after{content:"";background:var(--text);width:4px;height:4px;animation:dotIn .3s var(--ease) forwards;border-radius:50%;position:absolute;bottom:2px}@keyframes dotIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}.tab-icon{width:22px;height:22px;transition:transform var(--dur-1) var(--ease)}.tab-item.active .tab-icon{transform:translateY(-1px)}.tab-label{letter-spacing:.2px;font-size:10px;font-weight:600}.tab-item.tab-home{margin-top:-18px;padding-top:0}.tab-home-circle{background:var(--text);width:50px;height:50px;box-shadow:0 4px 16px rgba(var(--ink), .2), 0 1.5px 4px rgba(var(--ink), .1);transition:transform var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);border-radius:50%;justify-content:center;align-items:center;display:flex}.tab-icon-home{width:16px!important;height:16px!important;color:var(--bg)!important}.tab-item.tab-home .tab-label{color:var(--text);margin-top:2px;font-weight:700}.tab-item.tab-home.active .tab-home-circle{box-shadow:0 8px 24px rgba(var(--ink), .25), 0 2px 6px rgba(var(--ink), .12);transform:translateY(-2px)scale(1.04)}.tab-item.tab-home:active .tab-home-circle{box-shadow:0 2px 8px rgba(var(--ink), .15);transform:scale(.94)}.tab-item.tab-home.active:after{display:none}.tab-icon-home{width:16px!important;height:16px!important;color:var(--bg)!important;stroke:var(--bg)!important}.tab-home-circle{background:var(--text);width:50px;height:50px;color:var(--bg);box-shadow:0 4px 16px rgba(var(--ink), .2), 0 1.5px 4px rgba(var(--ink), .1);transition:transform var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);border-radius:50%;justify-content:center;align-items:center;display:flex}.tab-item.tab-home .tab-home-circle .tab-icon{width:24px;height:24px}@media (min-width:768px){.app-header,.tab-bar{display:none}.desktop-nav{z-index:1000;background:var(--card-bg-2);-webkit-backdrop-filter:blur(20px)saturate(1.6);border-bottom:1px solid rgba(var(--ink), .06);will-change:transform;display:block;position:fixed;top:0;left:0;right:0;transform:translateZ(0)}.app-content{padding-top:64px;padding-bottom:0}.view-inner{padding:var(--s-64) var(--s-24)}.theme-switcher{top:84px}}@media (min-width:768px) and (max-width:1279px){.nav-wrapper{padding:0 var(--s-16)}.nav-logo{gap:10px;font-size:16px}.nav-logo-img{width:28px;height:28px}.nav-links{gap:8px}.nav-item{padding:7px 10px;font-size:12.5px}.view-inner{padding-left:var(--s-20);padding-right:var(--s-20)}}@media (min-width:768px) and (max-width:1279px) and (orientation:landscape){.view-inner{padding-top:var(--s-32);padding-bottom:var(--s-24)}}@media (max-width:768px){html{font-size:15px}.view-inner{padding:var(--s-16)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes viewFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes skillGrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes sanityFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes skeletonShimmer{0%{background-position:-400px 0}to{background-position:400px 0}}#home{position:relative;overflow:hidden}#home .view-inner{padding-bottom:var(--s-32)}.hero-code-bg{pointer-events:none;z-index:0;-webkit-mask-composite:destination-in;-webkit-mask-composite:source-in;-webkit-mask-composite:source-in;gap:0;display:flex;position:absolute;inset:0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 8% 92%,#0000 100%),linear-gradient(#0000 0%,#000 12% 88%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0%,#000 8% 92%,#0000 100%),linear-gradient(#0000 0%,#000 12% 88%,#0000 100%);-webkit-mask-composite:source-in;mask-composite:intersect}.hcb-col{will-change:transform;flex-direction:column;flex:1;padding:0 20px;animation:linear infinite hcbScroll;display:flex}.hcb-col--3{display:none}.hcb-line{white-space:pre;letter-spacing:.15px;font-family:Fira Code,SF Mono,Cascadia Code,JetBrains Mono,monospace;font-size:11.5px;line-height:1.85}.hcb-line span{color:rgba(var(--ink), .15)}.hcb-line .c-kw{color:#c586c06b}.hcb-line .c-str{color:#ce91786b}.hcb-line .c-type{color:#4ec9b06b}.hcb-line .c-num{color:#b5cea86b}.hcb-line .c-cmt{color:rgba(var(--ink), .12)}@keyframes hcbScroll{0%{transform:translateY(0)}to{transform:translateY(-50%)}}@media (min-width:640px){.hcb-col--3{display:flex}.hcb-line{font-size:12px}}#home .view-inner{z-index:1;min-height:calc(100dvh - 70px - 70px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding-top:var(--s-32);padding-bottom:var(--s-32);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.hero-grid{flex-direction:column;align-items:center;width:100%;display:flex}.hero-left{text-align:center;flex-direction:column;align-items:center;width:100%;max-width:480px;display:flex;position:relative}.hero-left:before{content:"";background:radial-gradient(ellipse at 50% 50%, var(--bg) 18%, transparent 68%);z-index:-1;pointer-events:none;position:absolute;inset:-80px -100px}.hero-avatar{width:80px;height:80px;box-shadow:0 8px 28px rgba(var(--ink), .16);background:linear-gradient(145deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);border-radius:20px;flex-shrink:0;justify-content:center;align-items:center;margin-bottom:18px;display:flex}.hero-avatar span{letter-spacing:-1px;color:#fff;font-size:26px;font-weight:900}.hero-name{font-family:var(--font-sys);letter-spacing:-1px;color:var(--text);text-shadow:0 0 48px var(--bg), 0 2px 16px var(--bg);margin:0 0 18px;font-size:clamp(56px,15vw,72px);font-weight:800;line-height:1.1}.hero-name-first,.hero-name-last{display:inline}.hero-name-first:after{content:" "}.hero-status{border-radius:var(--r-full);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);color:var(--text-2);align-items:center;gap:7px;margin-bottom:22px;padding:5px 12px;font-size:12px;font-weight:650;display:inline-flex}.hero-status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.hero-status--available .hero-status-dot{background:#22c55e;box-shadow:0 0 0 2px #22c55e33}.hero-status--busy .hero-status-dot{background:#ef4444;box-shadow:0 0 0 2px #ef444433}.hero-status--limited .hero-status-dot{background:#f59e0b;box-shadow:0 0 0 2px #f59e0b33}.hero-status--break .hero-status-dot{background:#94a3b8;box-shadow:0 0 0 2px #94a3b833}.hero-desc{color:var(--text-2);text-align:center;max-width:460px;text-shadow:0 0 24px var(--bg);margin:0 0 28px;font-size:15px;line-height:1.7;display:block}.hero-actions{flex-direction:column;gap:10px;width:100%;display:flex}.hero-btn-primary{background:var(--accent-strong);color:var(--bg);border-radius:var(--r-full);justify-content:center;align-items:center;gap:5px;width:100%;padding:13px 24px;font-size:14px;font-weight:750;text-decoration:none;transition:opacity .15s,transform .15s;display:flex}.hero-btn-primary:hover{opacity:.82;transform:translateY(-1px)}.hero-btn-primary:active{opacity:1;transform:scale(.97)}.hero-btn-secondary{background:var(--card-bg);color:var(--text-2);border:1px solid rgba(var(--ink), .12);border-radius:var(--r-full);box-shadow:0 1px 4px rgba(var(--ink), .04);justify-content:center;align-items:center;width:100%;padding:13px 24px;font-size:14px;font-weight:700;text-decoration:none;transition:background .15s,border-color .15s,color .15s,transform .15s;display:flex}.hero-btn-secondary:hover{background:var(--bg-2);border-color:rgba(var(--ink), .2);color:var(--text);transform:translateY(-1px)}.hero-btn-secondary:active{transform:scale(.97)}.ts-hero{z-index:2;align-items:center;gap:6px;width:calc(100% - 48px);max-width:420px;display:flex;position:absolute;top:28px;left:50%;transform:translate(-50%)}.ts-hero-content{background:#fff;border:1px solid #0f172a1f;border-radius:12px;flex-direction:column;flex:1;gap:4px;min-width:0;padding:10px 14px;animation:.22s ts-slide-in;display:flex;overflow:hidden;box-shadow:0 2px 16px #0f172a1f}[data-theme=dark] .ts-hero-content,[data-theme=midnight] .ts-hero-content{background:#1e293b;border-color:#f8fafc1f}[data-theme=ocean] .ts-hero-content{background:#0d1b2a;border-color:#f8fafc1f}[data-theme=forest] .ts-hero-content{background:#1a2e1a;border-color:#f8fafc1f}[data-theme=rose] .ts-hero-content{background:#2a1a1a;border-color:#f8fafc1f}@keyframes ts-slide-in{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.ts-hero-content--left{animation-name:ts-slide-in-left}@keyframes ts-slide-in-left{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.ts-hero-quote{color:#0f172a;text-align:left;font-size:13px;font-style:italic;line-height:1.6}[data-theme=dark] .ts-hero-quote,[data-theme=midnight] .ts-hero-quote,[data-theme=ocean] .ts-hero-quote,[data-theme=forest] .ts-hero-quote,[data-theme=rose] .ts-hero-quote{color:#f1f5f9}.ts-hero-author{color:#475569;text-align:left;align-items:center;gap:5px;font-size:11.5px;font-weight:600;display:flex}[data-theme=dark] .ts-hero-author,[data-theme=midnight] .ts-hero-author,[data-theme=ocean] .ts-hero-author,[data-theme=forest] .ts-hero-author,[data-theme=rose] .ts-hero-author{color:#94a3b8}.ts-hero-sep{opacity:.4}.ts-hero-dots{align-items:center;gap:4px;display:flex;position:absolute;bottom:-16px;left:50%;transform:translate(-50%)}.ts-hero-dot{background:rgba(var(--ink), .16);cursor:pointer;border:none;border-radius:50%;width:5px;height:5px;padding:0;transition:background .18s,transform .18s}.ts-hero-dot--active{background:var(--text);transform:scale(1.5)}.ts-hero-arrow{border:1px solid rgba(var(--ink), .12);background:var(--card-bg,#fff);width:26px;height:26px;box-shadow:0 1px 6px rgba(var(--ink), .08);color:var(--text-2);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,transform .15s;display:flex}.ts-hero-arrow:hover{background:var(--bg-2);transform:scale(1.1)}.ts-hero-arrow:active{transform:scale(.92)}@media (min-width:768px){.ts-hero{gap:8px;max-width:500px;top:32px}.ts-hero-content{padding:11px 14px}.ts-hero-quote{font-size:12.5px}.ts-hero-author{font-size:11.5px}}@media (max-width:480px){#home .view-inner{padding-top:90px;padding-bottom:var(--s-24);gap:0}.hero-name{margin-bottom:12px;font-size:clamp(40px,12vw,56px)}.hero-status{margin-bottom:14px}.hero-desc{margin-bottom:20px;font-size:14px}.hero-actions{gap:8px}.hero-btn-primary,.hero-btn-secondary{padding:11px 20px;font-size:13.5px}}@media (max-width:375px){#home .view-inner{padding-top:86px}.hero-name{margin-bottom:10px;font-size:clamp(36px,11vw,48px)}.hero-status{margin-bottom:12px;font-size:11px}.hero-desc{margin-bottom:18px;font-size:13.5px}.ts-hero{width:calc(100% - 32px);top:16px}.ts-hero-content{padding:8px 12px}.ts-hero-quote{font-size:11.5px;line-height:1.5}.ts-hero-author{font-size:10.5px}}.ts-section{width:100%;padding:40px var(--s-16) 48px}.ts-inner{flex-direction:column;align-items:center;gap:20px;max-width:640px;margin:0 auto;display:flex}.ts-label{letter-spacing:1.4px;text-transform:uppercase;color:var(--text-3);margin:0;font-size:10.5px;font-weight:700}.ts-stage{grid-template-columns:36px 1fr 36px;align-items:center;gap:10px;width:100%;display:grid}.ts-card{background:var(--card-bg,#ffffffeb);border:1px solid rgba(var(--ink), .08);box-shadow:0 2px 20px rgba(var(--ink), .06);border-radius:18px;flex-direction:column;gap:14px;padding:24px 22px 20px;animation:.22s ts-slide-in;display:flex}.ts-card--left{animation-name:ts-slide-in-left}.ts-quote-icon{color:rgba(var(--ink), .1);flex-shrink:0}.ts-quote{color:var(--text);margin:0;font-size:14px;font-style:italic;line-height:1.72}.ts-footer{border-top:1px solid rgba(var(--ink), .07);flex-direction:column;gap:2px;padding-top:12px;display:flex}.ts-name{color:var(--text);font-size:13px;font-weight:650}.ts-role{color:var(--text-3);font-size:11.5px}.ts-arrow{border:1px solid rgba(var(--ink), .1);background:var(--card-bg,#ffffffeb);width:36px;height:36px;color:var(--text-2);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,border-color .15s,transform .15s;display:flex}.ts-arrow:hover{background:var(--bg-2);border-color:rgba(var(--ink), .2);transform:scale(1.07)}.ts-arrow:active{transform:scale(.94)}.ts-dots{align-items:center;gap:6px;display:flex}.ts-dot{background:rgba(var(--ink), .18);cursor:pointer;border:none;border-radius:50%;width:6px;height:6px;padding:0;transition:background .18s,transform .18s}.ts-dot--active{background:var(--text);transform:scale(1.4)}@media (min-width:768px){.ts-section{padding:48px var(--s-24) 60px}.ts-inner{gap:24px;max-width:680px}.ts-card{padding:28px 26px 22px}.ts-quote{font-size:15px}#home .view-inner{min-height:calc(100dvh - 144px);padding-top:var(--s-64);padding-bottom:var(--s-64)}.hero-left{max-width:520px}.hero-status{order:-1;margin-bottom:14px}.hero-avatar{display:none}.hero-desc{display:block}.hero-name{letter-spacing:-2px;margin-bottom:10px;font-size:clamp(64px,8vw,96px)}.hero-actions{flex-direction:row;justify-content:center;width:auto}.hero-btn-primary,.hero-btn-secondary{width:auto;padding:11px 22px;font-size:13px}}@media (max-width:767px){.page-intro-facts{grid-template-columns:1fr}}.view-header{text-align:center;max-width:760px;margin-left:auto;margin-right:auto;margin-bottom:var(--s-40)}.view-tag{border-radius:var(--r-full);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);color:var(--text-2);letter-spacing:.8px;text-transform:uppercase;margin-bottom:var(--s-16);align-items:center;gap:8px;padding:5px 11px;font-size:11px;font-weight:700;display:inline-flex}.view-title{letter-spacing:-.5px;text-wrap:balance;color:var(--text);margin-bottom:4px;font-size:22px;font-weight:850;line-height:1.1}.view-subtitle,.about-intro{color:var(--text-2);text-wrap:balance;max-width:640px;margin:0 auto;font-size:15px;line-height:1.65}.page-intro{border-radius:var(--r-lg);background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .09);box-shadow:0 1px 4px rgba(var(--ink), .04);gap:14px;margin:0 auto 16px;padding:16px;display:grid}.page-intro-copy{gap:8px;min-width:0;display:grid}.page-intro-kicker{letter-spacing:.8px;text-transform:uppercase;color:var(--text-3);margin:0;font-size:10px;font-weight:800}.page-intro-body{gap:8px;display:grid}.page-intro-body p{color:var(--text-2);margin:0;font-size:13.5px;line-height:1.7}.page-intro-side{border-top:1px solid rgba(var(--ink), .07);align-content:start;gap:12px;padding-top:12px;display:grid}.page-intro-facts{gap:10px;display:grid}.page-intro-fact{border-bottom:1px solid rgba(var(--ink), .06);gap:3px;padding-bottom:10px;display:grid}.page-intro-fact:last-child{border-bottom:none;padding-bottom:0}.page-intro-fact-label{letter-spacing:.8px;text-transform:uppercase;color:var(--text-3);font-size:10px;font-weight:800}.page-intro-fact-value{letter-spacing:-.2px;color:var(--text);font-size:13.5px;font-weight:720;line-height:1.25}.page-intro-chip-list{flex-wrap:wrap;gap:8px;display:flex}.page-intro-chip{border-radius:var(--r-full);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);color:var(--text-2);letter-spacing:.1px;align-items:center;padding:7px 11px;font-size:11px;font-weight:650;display:inline-flex}@media (min-width:768px){.view-header{margin-bottom:var(--s-24)}.page-intro{grid-template-columns:minmax(0,1.6fr) minmax(250px,.9fr);align-items:start;margin-bottom:18px;padding:18px}.page-intro-side{border-top:none;border-left:1px solid rgba(var(--ink), .07);gap:12px;padding-top:0;padding-left:16px}#projects .view-inner,#contact .view-inner{padding-top:var(--s-20);padding-bottom:var(--s-12)}#projects .view-header,#contact .view-header{margin-bottom:var(--s-12)}}.full-width{width:100%}.stats-grid{display:none}#about .view-inner{flex-direction:column;justify-content:flex-start;display:flex}@media (min-width:768px){#about{flex-direction:column;height:calc(100dvh - 64px);display:flex}#about .view-inner{min-height:0;padding-top:var(--s-16);padding-bottom:var(--s-16);flex-direction:column;flex:1;justify-content:flex-start;display:flex;overflow:auto}}.about-grid{grid-template-columns:1fr;gap:8px;min-height:0;display:grid}@media (min-width:768px){.about-grid{grid-template-columns:1fr 1fr;align-items:start;gap:12px}}@media (min-width:1100px){.about-grid{align-items:stretch}}.about-card{background:var(--card-bg);border:1px solid rgba(var(--ink), .09);border-radius:var(--r-lg);box-shadow:0 1px 6px rgba(var(--ink), .05)}.about-card--identity{flex-direction:column;padding:0;display:flex}.about-identity-top{background:rgba(var(--ink), .025);border-bottom:1px solid rgba(var(--ink), .09);padding:22px 22px 20px}.about-name{letter-spacing:-.8px;color:var(--text);margin:0;font-size:26px;font-weight:800;line-height:1.1}.about-name span{display:block}.about-name-role{color:var(--text-2);margin-top:7px;font-size:14px;font-weight:500;line-height:1.4;display:block}.about-role{color:var(--text-3);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .09);border-radius:var(--r-full);align-items:center;margin-top:10px;padding:3px 10px;font-size:11.5px;font-weight:600;line-height:1.5;display:inline-flex}.about-identity-body{flex-direction:column;display:flex}.about-bio-block{border-left:2px solid rgba(var(--accent,79 124 255), .18);flex-direction:column;gap:12px;margin-left:0;padding:20px 22px 16px;display:flex}.about-bio{color:var(--text);text-wrap:pretty;margin:0;font-size:14.5px;line-height:1.78}.about-bio--secondary{color:var(--text-2)}.about-copy-section{border-top:1px solid rgba(var(--ink), .07);flex-direction:column;gap:12px;padding:16px 22px 18px;display:flex}.about-section-label{color:var(--text-3);letter-spacing:.8px;text-transform:uppercase;align-items:center;gap:10px;margin:0;font-size:11px;font-weight:700;display:flex}.about-section-label:after{content:"";background:rgba(var(--ink), .08);flex:1;height:1px}.about-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.about-list-item{color:var(--text);padding-left:16px;font-size:14px;line-height:1.68;position:relative}.about-list-item:before{content:"";background:var(--accent,#4f7cff);opacity:.5;border-radius:50%;width:5px;height:5px;position:absolute;top:9px;left:2px}.about-inline-links{flex-wrap:wrap;gap:6px;display:flex}.about-inline-link{color:var(--text);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08);transition:background .15s var(--ease), border-color .15s var(--ease);border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700;text-decoration:none}.about-inline-link:hover,.about-inline-link:focus-visible{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .14)}.about-platforms{color:var(--text-3);letter-spacing:.4px;margin:0;font-size:11.5px;font-weight:750}.about-traits{flex-wrap:wrap;gap:5px;display:flex}.about-trait{color:var(--text-3);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08);border-radius:var(--r-full);letter-spacing:.2px;padding:3px 10px;font-size:11px;font-weight:700}@media (max-width:767px){.about-name{letter-spacing:-.6px;font-size:clamp(22px,7vw,26px)}.about-name-role{margin-top:5px;font-size:13px}.about-role{margin-top:8px;font-size:11px}.about-bio{font-size:14px;line-height:1.76}.about-list-item{font-size:13.5px}}@media (min-width:768px){.about-identity-top{padding:18px 18px 16px}.about-name{letter-spacing:-.6px;font-size:22px}.about-name-role{margin-top:5px;font-size:13px}.about-bio-block{gap:10px;padding:16px 18px 14px}.about-bio{font-size:13px;line-height:1.72}.about-copy-section{gap:10px;padding:13px 18px 15px}.about-section-label{font-size:10px}.about-list-item{font-size:13px}}@media (min-width:1100px){.about-identity-top{padding:22px 22px 20px}.about-name{letter-spacing:-.7px;font-size:24px}.about-name-role{font-size:13.5px}.about-bio-block{gap:12px;padding:18px 22px 16px}.about-bio{font-size:14px;line-height:1.75}.about-copy-section{gap:11px;padding:14px 22px 16px}.about-section-label{font-size:11.5px}.about-list-item{font-size:13.5px}}.about-card--proof{flex-direction:column;display:flex}.about-stat-rows{flex-direction:column;flex:1;display:flex}.about-stat-row{border-bottom:1px solid rgba(var(--ink), .07);align-items:baseline;gap:12px;padding:20px 28px;display:flex}.about-stat-row:last-child{border-bottom:none}.about-stat-num{letter-spacing:-3px;color:var(--text);flex-shrink:0;font-size:52px;font-weight:900;line-height:1}.about-stat-label{color:var(--text-3);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:700;line-height:1.2}.about-proof-divider{background:rgba(var(--ink), .07);height:1px}.about-techs{flex-wrap:wrap;gap:6px;padding:20px 28px;display:flex}.about-tech-chip{color:var(--text-2);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .09);border-radius:var(--r-full);padding:5px 12px;font-size:12px;font-weight:700}@media (max-width:767px){.about-stat-rows{flex-direction:row}.about-stat-row{border-bottom:none;border-right:1px solid rgba(var(--ink), .07);flex-direction:column;flex:1;align-items:flex-start;gap:4px;padding:20px 16px}.about-stat-row:last-child{border-right:none}.about-stat-num{letter-spacing:-2px;font-size:36px}.about-techs{padding:16px}}.about-card--timeline{box-shadow:none;background:0 0;border:none;flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}@media (min-width:768px){.about-card--timeline{max-height:calc(100dvh - 64px - var(--s-24) - var(--s-32))}}.about-timeline-header{flex-shrink:0;padding:16px 20px 12px}@media (min-width:1100px){.about-timeline-header{padding:20px 24px 14px}}.about-top-techs{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.about-top-techs__label{margin-bottom:6px;padding:0 4px}.about-top-techs .about-techs{gap:6px;padding:0 4px}.about-tech-chip{padding:3px 10px;font-size:11px}.about-tech-chip--more{color:var(--text-3);background:rgba(var(--ink), .06)}@media (min-width:1100px){.about-top-techs{margin-top:20px;padding-top:18px}.about-tech-chip{padding:5px 12px;font-size:12px}}.about-section-label{letter-spacing:1.5px;text-transform:uppercase;color:var(--text-3);margin:0;font-size:11px;font-weight:800}.about-timeline{flex-direction:column;flex:1;min-height:0;padding:6px 12px 16px 20px;display:flex;position:relative;overflow-y:auto}.about-timeline:before{content:"";background:rgba(var(--ink), .08);pointer-events:none;width:1.5px;position:absolute;top:20px;bottom:20px;left:46px}.about-tl-item{cursor:pointer;font:inherit;color:inherit;text-align:left;z-index:1;border-radius:var(--r-sm);background:0 0;border:none;align-items:flex-start;gap:16px;width:100%;margin:0 -8px;padding:11px 8px;text-decoration:none;transition:background .15s;display:flex;position:relative}@media (min-width:768px){.about-tl-item{gap:10px;padding-top:6px;padding-bottom:6px}}@media (min-width:1100px){.about-tl-item{gap:14px;padding-top:8px;padding-bottom:8px}}.about-tl-item:hover{background:rgba(var(--ink), .03)}.about-tl-item:focus-visible{outline:2px solid rgba(var(--ink), .16);outline-offset:2px}.about-tl-item:hover .about-tl-name{color:var(--text)}.about-tl-logo{object-fit:cover;background:var(--glass-bg-2);border:2.5px solid var(--glass-bg-3);width:52px;height:52px;box-shadow:0 0 0 1px rgba(var(--ink), .12), 0 1px 4px rgba(var(--ink), .08);border-radius:50%;flex-shrink:0}.about-tl-logo-fallback{width:52px;height:52px;color:var(--text-2);background:var(--glass-bg-2);border:2.5px solid var(--glass-bg-3);box-shadow:0 0 0 1px rgba(var(--ink), .12), 0 1px 4px rgba(var(--ink), .08);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;font-weight:800;display:flex}@media (min-width:768px){.about-tl-logo,.about-tl-logo-fallback{width:36px;height:36px;font-size:13px}.about-timeline:before{left:38px}}@media (min-width:1100px){.about-tl-logo,.about-tl-logo-fallback{width:44px;height:44px;font-size:15px}.about-timeline:before{left:42px}}.about-tl-body{flex-direction:column;flex:1;gap:5px;min-width:0;padding-top:5px;display:flex}.about-tl-name-row{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.about-tl-name{color:var(--text);font-size:14px;font-weight:750;line-height:1.3;transition:color .15s}.about-tl-version{color:var(--text-3);font-size:11px;font-weight:600}.about-tl-updated{color:var(--text-3);font-size:11.5px;font-weight:500}.about-tl-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.about-tl-date{color:var(--text-3);font-size:12px;font-weight:600}.about-tl-dot{background:var(--text-3);opacity:.35;border-radius:50%;flex-shrink:0;width:3px;height:3px}.about-tl-cats{flex-wrap:wrap;gap:4px;display:flex}.about-tl-cat{color:var(--text-3);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08);letter-spacing:.1px;border-radius:5px;padding:2px 7px;font-size:10.5px;font-weight:700}@media (min-width:768px) and (max-width:1400px) and (max-height:1100px) and (orientation:landscape){#about{height:calc(100dvh - 64px)}#about .view-inner{padding-top:10px;padding-bottom:20px;overflow:hidden}.about-grid{flex:1;grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr;gap:12px;min-height:0}.about-card--identity{grid-template-columns:minmax(0,1.15fr) minmax(240px,.85fr);grid-template-areas:"identity stack""bio bio";align-content:start;gap:10px 16px;min-height:0;padding:0;display:grid;overflow:hidden}.about-identity-top{background:0 0;border-bottom:none;grid-area:identity;min-width:0;padding:14px 16px 12px}.about-identity-body{background:rgba(var(--ink), .06);border-top:1px solid rgba(var(--ink), .08);grid-area:bio;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 1px;display:grid;overflow:hidden}.about-identity-body .about-bio-block,.about-identity-body .about-copy-section{background:var(--card-bg);border-left:none;gap:6px;padding:12px 14px}.about-identity-body .about-copy-section{border-top:none}.about-identity-body .about-section-label:after{display:none}.about-identity-body>.about-bio-block .about-bio:first-child{font-size:11px;font-weight:400;line-height:1.42}.about-identity-body .about-bio-block:first-child{border-bottom:1px solid rgba(var(--ink), .07);grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 12px;display:grid}.about-name{letter-spacing:-1px;font-size:30px;line-height:.98}.about-name-role{margin-top:6px;font-size:13.5px;line-height:1.18}.about-bio{text-wrap:pretty;font-size:11px;line-height:1.42}.about-role{font-size:11.5px}.about-top-techs{border-top:none;border-left:1px solid rgba(var(--ink), .08);grid-area:stack;align-self:start;min-width:0;margin-top:0;padding-top:0;padding-left:14px}.about-top-techs__label{margin-bottom:8px;padding:0;font-size:10.5px}.about-top-techs .about-techs{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:0;display:grid}.about-tech-chip{text-align:center;min-width:0;padding:5px 8px;font-size:9.5px;line-height:1.2}.about-card--timeline{background:var(--card-bg);border:1px solid rgba(var(--ink), .09);min-height:0;max-height:none;box-shadow:0 1px 6px rgba(var(--ink), .05);border-radius:var(--r-lg);overflow:hidden}.about-timeline-header{border-bottom:1px solid rgba(var(--ink), .08);padding:12px 14px 10px}.about-timeline{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:12px 14px 14px;display:grid;overflow:hidden}.about-timeline:before{display:none}.about-tl-item{border:1px solid rgba(var(--ink), .08);border-radius:var(--r-md);background:rgba(var(--ink), .02);flex-direction:column;gap:8px;margin:0;padding:10px}.about-tl-logo,.about-tl-logo-fallback{width:34px;height:34px;font-size:12px}.about-tl-body{gap:4px;padding-top:0}.about-tl-name-row{flex-direction:column;align-items:flex-start;gap:2px}.about-tl-name{font-size:11.5px;line-height:1.25}.about-tl-version,.about-tl-date{font-size:9px}.about-tl-updated{font-size:9px;line-height:1.25}.about-tl-cat{padding:2px 5px;font-size:8px;line-height:1.1}.about-tl-meta,.about-tl-cats{gap:4px}.about-section-label{letter-spacing:.16px;font-size:11.5px}}.logo-img,.nav-logo-img{box-shadow:none!important;filter:none!important;background:0 0!important;border-radius:0!important;outline:none!important}.logo-img{object-fit:contain;width:100%;height:100%}.skills-list{gap:var(--s-16);display:grid}.skill-tags{flex-wrap:wrap;gap:10px;display:flex}.skill-tag{border-radius:var(--r-full);background:rgba(var(--ink),.04);border:1px solid rgba(var(--ink),.1);color:var(--text-2);padding:7px 12px;font-size:12px;font-weight:650}.tech-chips{gap:var(--s-8);flex-wrap:wrap;display:flex}.chip{border-radius:var(--r-full);background:rgba(var(--ink),.04);border:1px solid rgba(var(--ink),.1);color:var(--text-2);padding:8px 12px;font-size:12px;font-weight:650}.skill-clickable{cursor:pointer}.skill-clickable:active{opacity:.75}.skill-project-count{color:var(--text-3);background:rgba(var(--ink),.07);border-radius:var(--r-full);letter-spacing:.2px;padding:1px 5px;font-size:9px;font-weight:800;line-height:1.6}.sk-root{flex-direction:column;gap:14px;width:100%;display:flex}.sk-section{flex-direction:column;gap:10px;display:flex}.sk-section--card{background:var(--card-bg);border:1px solid rgba(var(--ink), .08);border-radius:14px;padding:14px}.sk-section-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);align-items:center;gap:6px;margin:0;font-size:10px;font-weight:800;display:flex}.sk-section-hint{letter-spacing:.02em;text-transform:none;color:var(--accent);opacity:.75;font-size:10px;font-weight:600}.sk-section-label--sub{color:var(--text-3);opacity:.75;margin-top:20px}.sk-tech-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.sk-tech-card{text-align:center;background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .07);border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:12px 8px 10px;transition:background .12s,border-color .12s,transform .1s;display:flex}.sk-tech-card--proven{cursor:pointer;background:rgba(var(--ink), .04);border-color:rgba(var(--ink), .1)}.sk-tech-card--proven:hover{background:rgba(var(--ink), .07);border-color:rgba(var(--ink), .18);transform:translateY(-2px)}.sk-tech-card--proven:active{transform:scale(.97)}.sk-tech-icon{background:rgba(var(--ink), .06);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.sk-tech-initials{color:var(--text-2);font-size:11px;font-weight:800}.sk-tech-name{color:var(--text);letter-spacing:-.01em;word-break:break-word;font-size:11px;font-weight:650;line-height:1.25}.sk-tech-count{color:var(--accent);background:rgba(var(--ink), .06);border-radius:var(--r-full);padding:1px 6px;font-size:9.5px;font-weight:700;line-height:1.5}.sk-tech-card--more{cursor:pointer;background:0 0;border-style:dashed;justify-content:center;gap:4px}.sk-tech-card--more:hover{background:rgba(var(--ink), .04);border-style:solid}.sk-tech-more-num{color:var(--text-3);font-size:17px;font-weight:800;line-height:1}.sk-mid-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sk-tags{flex-wrap:wrap;gap:6px;display:flex}.sk-tag{background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);border-radius:var(--r-full);color:var(--text-2);align-items:center;gap:4px;padding:5px 10px;font-size:11.5px;font-weight:600;line-height:1;display:inline-flex}.sk-tag-icon{opacity:.85;align-items:center;display:flex}.sk-soft-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.sk-soft-card{aspect-ratio:1;background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .07);text-align:center;border-radius:13px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:10px 8px;transition:background .14s,border-color .14s,transform .11s;display:flex}.sk-soft-card:hover{background:rgba(var(--ink), .06);border-color:rgba(var(--ink), .14);transform:translateY(-2px)}.sk-soft-icon-wrap{background:rgba(var(--ink), .06);width:38px;height:38px;color:var(--text-2);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.sk-soft-name{color:var(--text-2);letter-spacing:-.01em;overflow-wrap:break-word;word-break:break-word;min-width:0;font-size:10px;font-weight:650;line-height:1.3}@media (max-width:767px){#skills .view-inner{padding:16px 16px calc(80px + env(safe-area-inset-bottom,0px))}.sk-root{gap:12px}.sk-tech-grid{grid-template-columns:repeat(3,1fr);gap:8px}.sk-tech-card{gap:5px;padding:12px 6px 10px}.sk-tech-icon{border-radius:9px;width:36px;height:36px}.sk-tech-name{font-size:10.5px}.sk-tech-count{font-size:9px}.sk-mid-grid{grid-template-columns:1fr}.sk-section--card{padding:12px}.sk-soft-grid{grid-template-columns:1fr;gap:6px}.sk-soft-card{gap:12px;padding:12px 14px;aspect-ratio:unset!important;text-align:left!important;flex-direction:row!important;justify-content:flex-start!important;align-items:center!important}.sk-soft-icon-wrap{flex-shrink:0;width:34px;height:34px}.sk-soft-name{flex:1;min-width:0;font-size:13px;line-height:1.3}.sk-soft-arrow{display:none}.sk-proof-item strong{font-size:18px}.sk-proof-item span{font-size:9.5px}}@media (max-width:390px){.sk-tech-grid{grid-template-columns:repeat(3,1fr);gap:6px}.sk-soft-name{font-size:12px}}@media (min-width:768px){#skills .view-inner{padding-top:var(--s-16);padding-bottom:var(--s-24);max-height:calc(100dvh - 64px);overflow:auto}#skills .view-header{margin-bottom:var(--s-12)}.sk-root{gap:16px}.sk-tech-grid{grid-template-columns:repeat(5,1fr);gap:10px}.sk-tech-icon{border-radius:11px;width:44px;height:44px}.sk-tech-name{font-size:12px}.sk-tech-count{font-size:10px}.sk-soft-grid{grid-template-columns:repeat(4,1fr);gap:10px}.sk-soft-icon-wrap{width:40px;height:40px}.sk-soft-card{gap:10px;padding:14px 10px}.sk-soft-name{font-size:11.5px}.sk-mid-grid{grid-template-columns:repeat(2,1fr);gap:12px}.sk-proof-item strong{font-size:24px}.sk-proof-item span{font-size:11px}}@media (min-width:768px) and (max-width:1180px){#skills .view-inner{padding-top:var(--s-20);padding-bottom:calc(var(--s-24) + 24px)}}@media (min-width:1100px){.sk-tech-grid{grid-template-columns:repeat(6,1fr)}}.skills-tabs,.skills-tab,.skills-mobile-grid,.skills-mobile-card,.skills-sections,.sk-table-root,.sk-nav{display:none}.sk-tabs{flex-wrap:wrap;gap:6px;display:flex}.sk-tab{color:var(--text-2);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);cursor:pointer;white-space:nowrap;border-radius:999px;padding:6px 13px;font-size:12px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.sk-tab:hover{background:rgba(var(--ink), .09);color:var(--text)}.sk-tab--active{background:var(--accent);border-color:var(--accent);color:#fff}.sk-tab--active:hover{background:var(--accent);color:#fff}.skp-backdrop{z-index:9000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0000008c;justify-content:center;align-items:flex-end;padding:0;animation:.18s skp-fade-in;display:flex;position:fixed;inset:0}@keyframes skp-fade-in{0%{opacity:0}to{opacity:1}}.skp-panel{background:var(--surface-1,#fff);border-radius:18px 18px 0 0;flex-direction:column;gap:0;width:100%;max-height:88svh;padding:24px 20px 28px;animation:.22s cubic-bezier(.32,.72,0,1) skp-slide-up;display:flex;position:relative;overflow-y:auto}@keyframes skp-slide-up{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:translateY(0)}}.skp-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.skp-header-left{flex:1;align-items:center;gap:14px;min-width:0;display:flex}.skp-icon{background:rgba(var(--ink),.07);width:48px;height:48px;color:var(--text-2);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.skp-initials{letter-spacing:-.3px;font-size:15px;font-weight:800}.skp-header-text{flex-direction:column;gap:3px;min-width:0;display:flex}.skp-name{color:var(--text-1);white-space:nowrap;text-overflow:ellipsis;font-size:18px;font-weight:750;line-height:1.15;overflow:hidden}.skp-category{color:var(--text-3);text-transform:uppercase;letter-spacing:.6px;font-size:11.5px;font-weight:600}.skp-close{background:rgba(var(--ink),.07);width:32px;height:32px;color:var(--text-2);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s;display:flex}.skp-close:hover{background:rgba(var(--ink),.13)}.skp-divider{background:rgba(var(--ink),.08);height:1px;margin-bottom:18px}.skp-points{flex-direction:column;gap:10px;margin:0 0 6px;padding:0;list-style:none;display:flex}.skp-point{color:var(--text-1);align-items:flex-start;gap:10px;font-size:14.5px;line-height:1.5;display:flex}.skp-point-icon{color:var(--accent,#4f7cff);opacity:.85;flex-shrink:0;margin-top:3px}.skp-empty{color:var(--text-3);margin:0 0 6px;font-size:14px;font-style:italic}.skp-projects-btn{background:var(--accent,#4f7cff);color:#fff;cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:7px;width:100%;margin-top:20px;padding:13px 20px;font-size:14px;font-weight:700;transition:opacity .15s,transform .15s;display:flex}.skp-projects-btn:hover{opacity:.88}.skp-projects-btn:active{transform:scale(.98)}.sk-tag--clickable{cursor:pointer;border-radius:var(--r-full);background:0 0;background:rgba(var(--ink),.05);border:none;border:1px solid rgba(var(--ink),.1);color:var(--text-2);align-items:center;gap:5px;padding:6px 12px;font-family:inherit;font-size:13px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.sk-tag--clickable:hover{background:rgba(var(--ink),.1);border-color:rgba(var(--ink),.18)}.sk-tech-card--clickable{cursor:pointer}.sk-tech-card--clickable:hover{background:rgba(var(--ink), .06);border-color:rgba(var(--ink), .16);transform:translateY(-2px)}.sk-tech-card--clickable:active{transform:scale(.97)}.sk-tech-arrow{flex-shrink:0;width:11px;height:11px;position:absolute;top:6px;right:6px}.sk-tech-arrow:after{content:"›";color:rgba(var(--ink), .22);font-size:13px;line-height:1;transition:color .12s}.sk-tech-card--clickable{position:relative}.sk-tech-card--clickable:hover .sk-tech-arrow:after{color:var(--accent)}.sk-soft-arrow{width:11px;height:11px;position:absolute;top:6px;right:6px}.sk-soft-arrow:after{content:"›";color:rgba(var(--ink), .22);font-size:13px;line-height:1;transition:color .12s}.sk-soft-card--clickable{cursor:pointer;position:relative}.sk-soft-card--clickable:hover .sk-soft-arrow:after{color:var(--accent)}.sk-soft-card--clickable:active{transform:scale(.97)}@media (min-width:640px){.skp-backdrop{align-items:center;padding:24px}.skp-panel{border-radius:18px;width:100%;max-width:460px;max-height:80vh;animation:.2s cubic-bezier(.32,.72,0,1) skp-scale-in}@keyframes skp-scale-in{0%{opacity:0;transform:scale(.94)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}}#projects .view-inner{position:relative}@media (min-width:768px){#projects .view-inner{padding-top:var(--s-20);padding-bottom:calc(var(--s-12) + 52px);max-height:calc(100dvh - 64px);scroll-padding-bottom:52px;overflow:auto}#projects .view-header{margin-bottom:var(--s-12)}}.projects-list{gap:18px;display:grid}.loading-projects,.no-projects{text-align:center;padding:var(--s-64) var(--s-20);color:var(--text-2)}.no-projects i{color:var(--text-3);margin-bottom:var(--s-12);font-size:44px}.pcm-trigger-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;display:flex}.pcm-trigger{border-radius:var(--r-full);background:var(--glass-bg-2);border:1.5px solid rgba(var(--ink), .1);box-shadow:0 2px 8px rgba(var(--ink), .06);color:var(--text);letter-spacing:-.01em;transition:border-color var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease), background var(--dur-1) var(--ease);white-space:nowrap;cursor:pointer;align-items:center;gap:8px;padding:9px 16px;font-size:13px;font-weight:650;display:inline-flex}.pcm-trigger:hover{border-color:rgba(var(--ink), .18);box-shadow:0 4px 16px rgba(var(--ink), .1);background:var(--bg-2)}.pcm-trigger.has-active{border-color:var(--text);background:var(--text);color:var(--bg);box-shadow:0 4px 14px rgba(var(--ink), .2)}.pcm-trigger-badge{border-radius:var(--r-full);background:#ffffff40;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.pcm-trigger:not(.has-active) .pcm-trigger-badge{background:rgba(var(--ink), .08);color:var(--text)}.pcm-active-pill{border-radius:var(--r-full);background:rgba(var(--ink), .06);border:1px solid rgba(var(--ink), .1);color:var(--text-2);white-space:nowrap;align-items:center;gap:5px;padding:5px 10px 5px 12px;font-size:12px;font-weight:600;display:inline-flex}.pcm-active-pill button{color:var(--text-3);transition:color var(--dur-1) var(--ease);border-radius:50%;justify-content:center;align-items:center;padding:2px;display:inline-flex}.pcm-active-pill button:hover{color:var(--text)}.pcm{z-index:9999;justify-content:stretch;align-items:flex-end;display:flex;position:fixed;inset:0}.pcm-overlay{background:rgba(var(--ink), .32);-webkit-backdrop-filter:blur(6px);position:absolute;inset:0}.pcm-panel{z-index:1;border-radius:var(--r-xl) var(--r-xl) 0 0;background:var(--bg-2);border:1px solid rgba(var(--ink), .08);width:100%;max-height:88dvh;box-shadow:0 -8px 40px rgba(var(--ink), .12);flex-direction:column;animation:.28s cubic-bezier(.32,.72,0,1) both pcm-slide-up;display:flex;position:relative}@keyframes pcm-slide-up{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:translateY(0)}}.pcm-handle{background:rgba(var(--ink), .12);border-radius:2px;flex-shrink:0;width:40px;height:4px;margin:12px auto 0}.pcm-head{border-bottom:1px solid rgba(var(--ink), .07);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px 12px;display:flex}.pcm-head h3{letter-spacing:-.02em;color:var(--text);margin:0;font-size:16px;font-weight:800}.pcm-head-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.pcm-reset{border-radius:var(--r-full);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .1);color:var(--text-2);transition:background var(--dur-1) var(--ease), color var(--dur-1) var(--ease);white-space:nowrap;align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-weight:650;display:inline-flex}.pcm-reset:hover{background:rgba(var(--ink), .08);color:var(--text)}.pcm-close{border-radius:var(--r-sm);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);width:36px;height:36px;color:var(--text);transition:background var(--dur-1) var(--ease);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.pcm-close:hover{background:rgba(var(--ink), .09)}.pcm-body{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:22px;min-height:0;padding:16px 18px;display:flex;overflow-y:auto}.pcm-section{flex-direction:column;gap:10px;display:flex}.pcm-section-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.pcm-section-title{letter-spacing:.8px;text-transform:uppercase;color:var(--text-3);margin:0;font-size:10px;font-weight:800}.pcm-section-clear{border-radius:var(--r-full);background:rgba(var(--ink), .06);border:1px solid rgba(var(--ink), .1);color:var(--text-2);transition:background var(--dur-1) var(--ease), color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease);align-items:center;gap:4px;padding:4px 10px;font-size:11.5px;font-weight:650;display:inline-flex}.pcm-section-clear:hover{background:rgba(var(--ink), .1);border-color:rgba(var(--ink), .16);color:var(--text)}.pcm-tech-icon{object-fit:contain;flex-shrink:0}.filter-btn.active .pcm-tech-icon{filter:brightness(0)invert()}.pcm-status-filter{flex-wrap:wrap;gap:8px;display:flex}.pcm-tech-list{flex-wrap:wrap;gap:6px;display:flex}.pcm-tech-count{border-radius:var(--r-full);background:rgba(var(--ink), .08);min-width:18px;height:18px;color:var(--text-3);justify-content:center;align-items:center;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.filter-btn.active .pcm-tech-count{background:rgba(var(--ink-inv), .18);color:rgba(var(--ink-inv), .9)}.pcm-footer{border-top:1px solid rgba(var(--ink), .07);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px 16px;display:flex}.pcm-footer-results{color:var(--text-3);font-size:12.5px;font-weight:500}.pcm-footer-done{border-radius:var(--r-full);background:var(--text);color:var(--bg);letter-spacing:-.01em;transition:opacity var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);padding:10px 24px;font-size:14px;font-weight:700}.pcm-footer-done:hover{opacity:.88;transform:translateY(-1px)}.projects-filter{flex-wrap:wrap;gap:6px;display:flex}.projects-view-switch{align-self:start;gap:6px;display:flex}.filter-btn,.view-btn{border-radius:var(--r-full);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .09);color:var(--text-2);transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);white-space:nowrap;justify-content:center;align-items:center;gap:7px;padding:8px 14px;font-size:12.5px;font-weight:650;display:inline-flex;position:relative}.filter-btn:hover,.view-btn:hover{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .14);color:var(--text)}.filter-btn.active,.view-btn.active{background:var(--text);border-color:var(--text);color:var(--bg);box-shadow:0 3px 10px rgba(var(--ink), .18)}.filter-btn svg,.view-btn svg{opacity:.7;flex-shrink:0;width:15px;height:15px}.filter-btn.active svg,.view-btn.active svg,.filter-btn:hover svg,.view-btn:hover svg{opacity:1}.project-card{border-radius:var(--r-xl);background:linear-gradient(180deg, var(--glass-bg-2), var(--glass-bg-2));border:1px solid rgba(var(--ink), .1);box-shadow:0 18px 42px rgba(var(--ink), .08);transition:transform var(--dur-2) var(--ease-2), box-shadow var(--dur-2) var(--ease-2), border-color var(--dur-2) var(--ease-2);cursor:pointer;animation:fadeInUp .42s var(--ease) both;color:inherit;text-decoration:none;display:block;position:relative;overflow:hidden}.project-card:before{content:"";background:linear-gradient(135deg, #38bdf81c, transparent 34%, rgba(var(--ink), .04));opacity:0;transition:opacity var(--dur-2) var(--ease-2);pointer-events:none;position:absolute;inset:0}.project-card:hover{box-shadow:0 26px 60px rgba(var(--ink), .12);border-color:rgba(var(--ink), .16);transform:translateY(-5px)}.project-card:hover:before{opacity:1}.project-card:focus-visible{outline:2px solid rgba(var(--ink), .18);outline-offset:3px}.project-card[data-interactive=false]{cursor:default}.project-card[data-interactive=false]:hover{box-shadow:0 18px 42px rgba(var(--ink), .08);border-color:rgba(var(--ink), .1);transform:none}.project-card[data-interactive=false]:hover:before{opacity:0}.project-card.filter-hide{display:none}.project-image{background:rgba(var(--ink), .04);background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:220px;position:relative}.project-image:after{content:"";background:linear-gradient(180deg, #ffffff0f, transparent 28%, rgba(var(--ink), .58));position:absolute;inset:0}.project-image:not([style*=background-image]){background:linear-gradient(180deg, rgba(var(--ink), .03), rgba(var(--ink), .08))}.project-overlay,.project-year-badge{z-index:1;position:absolute}.project-overlay{flex-wrap:wrap;justify-content:flex-start;align-items:flex-end;gap:6px;padding:14px;display:flex;inset:0}.project-badge{border-radius:var(--r-full);background:var(--glass-bg-2);border:1px solid rgba(var(--ink-inv), .25);-webkit-backdrop-filter:blur(12px);letter-spacing:.05em;color:rgba(var(--ink), .84);padding:6px 10px;font-size:10px;font-weight:800;line-height:1}.project-year-badge{border-radius:var(--r-full);background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);-webkit-backdrop-filter:blur(12px);letter-spacing:.04em;color:rgba(var(--ink), .7);padding:7px 11px;font-size:11px;font-weight:800;top:14px;right:14px}.project-content{z-index:1;gap:12px;padding:18px 18px 20px;display:grid;position:relative}.project-title-row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-title-with-version{flex:1;min-width:0}.project-copy{flex-direction:column;flex:1;gap:10px;min-width:0;display:flex}.project-heading{flex-direction:column;gap:2px;min-width:0;display:flex}.project-title-main{flex-wrap:nowrap;align-items:center;gap:6px;min-width:0;display:flex}.project-title-main .project-title,.project-title-main .project-version-list,.project-title-main .project-website-status,.project-title-main .project-update-indicator{flex-shrink:0}.project-link-indicator{background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);width:38px;height:38px;color:var(--text);transition:transform var(--dur-2) var(--ease-2), background var(--dur-2) var(--ease-2), color var(--dur-2) var(--ease-2), border-color var(--dur-2) var(--ease-2);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.project-card:hover .project-link-indicator{background:var(--text);color:var(--bg);border-color:#0000;transform:translate(2px,-2px)}.project-version-list{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:inline-flex}.project-version-status-row{flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;display:flex}.project-updated{color:var(--text-3);letter-spacing:.01em;font-size:12px;line-height:1.4}.project-meta-row{flex-direction:column;gap:4px;margin:-3px 0 0;display:flex}.project-meta-row .project-updated{margin:0}.project-website-status{letter-spacing:.02em;align-items:center;gap:5px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.project-website-status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.project-website-status--online{color:#16a34a}.project-website-status--online .project-website-status-dot{background:#22c55e;box-shadow:0 0 0 2px #22c55e40}.project-website-status--maintenance{color:#b45309}.project-website-status--maintenance .project-website-status-dot{background:#f59e0b;box-shadow:0 0 0 2px #f59e0b40}.project-version-with-indicator{align-items:center;gap:6px;display:flex}.project-update-indicator{cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-left:2px;padding:0;animation:1.2s infinite updatePulse;position:relative;background:#22c55e!important;display:inline-block!important;box-shadow:0 0 0 3px #22c55e66,0 0 8px #22c55e99!important}.project-update-indicator:before{content:"";border-radius:50%;position:absolute;inset:-12px}@keyframes updatePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.3)}}.project-version{letter-spacing:.04em;white-space:nowrap;border-radius:var(--r-full);background:rgba(var(--ink), .06);color:rgba(var(--ink), .56);border:1px solid rgba(var(--ink), .08);flex-shrink:0;align-items:center;gap:5px;padding:5px 9px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.project-version-platform{letter-spacing:.06em;text-transform:uppercase;opacity:.72;font-size:8px;font-weight:800}.project-title{letter-spacing:-.03em;color:var(--text);font-size:20px;font-weight:850;line-height:1.2;display:block;overflow:hidden}.project-desc{color:var(--text-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:14px;line-height:1.72;display:-webkit-box;overflow:hidden}.project-tags{flex-wrap:wrap;gap:8px;display:flex}.tag{border-radius:var(--r-full);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08);letter-spacing:.04em;text-transform:uppercase;color:rgba(var(--ink), .72);padding:7px 11px;font-size:10.5px;font-weight:750}.tag-more{background:rgba(var(--ink), .08)}.project-card.coming-soon .project-image{height:180px}.project-card.coming-soon .project-overlay{justify-content:center;align-items:center;padding:16px}.project-card.coming-soon .project-overlay:before{content:"";background:rgba(var(--ink), .28);position:absolute;inset:0}.project-card.coming-soon .project-badge{z-index:1;background:var(--card-bg);color:rgba(var(--ink), .82);border-color:rgba(var(--ink-inv), .3);letter-spacing:.08em;font-size:11px;position:relative}.projects-page-btn{display:none}@media (min-width:1180px){.projects-page-btn{border-radius:var(--r-md);border:1px solid rgba(var(--ink), .1);background:var(--glass-bg-2);-webkit-backdrop-filter:blur(12px);width:46px;height:46px;box-shadow:0 16px 34px rgba(var(--ink), .1);color:var(--text);cursor:pointer;transition:background var(--dur-1) var(--ease), transform var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);z-index:50;justify-content:center;align-items:center;display:inline-flex;position:fixed;top:50%;transform:translateY(-50%)}.projects-page-btn--prev{left:18px}.projects-page-btn--next{right:18px}.projects-page-btn:hover:not(:disabled){background:var(--bg-2);box-shadow:0 20px 40px rgba(var(--ink), .13);transform:translateY(-50%)scale(1.05)}.projects-page-btn:active:not(:disabled){transform:translateY(-50%)scale(.96)}.projects-page-btn:disabled{opacity:.22;cursor:not-allowed}}.no-results{text-align:center;color:var(--text-3);border-radius:var(--r-xl);background:var(--card-bg-2);border:1px dashed rgba(var(--ink), .14);grid-column:1/-1;padding:48px 20px}.projects-list[data-viewmode=icons]{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.projects-list[data-viewmode=icons] .project-card{box-shadow:none;animation:fadeInUp .42s var(--ease) both;background:0 0;border:none;border-radius:22px;overflow:visible;transform:none}.projects-list[data-viewmode=icons] .project-card:before{display:none}.projects-list[data-viewmode=icons] .project-image{aspect-ratio:1;border:1px solid rgba(var(--ink), .1);height:auto;box-shadow:var(--shadow-sm);transition:transform var(--dur-2) var(--ease-2), box-shadow var(--dur-2) var(--ease-2), border-color var(--dur-2) var(--ease-2);background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:22px}.projects-list[data-viewmode=icons] .project-image:after{display:none}.projects-list[data-viewmode=icons] .project-overlay{display:none!important}.projects-list[data-viewmode=icons] .project-content{box-shadow:none;background:0 0;border:none;padding:10px 2px 0;display:block}.projects-list[data-viewmode=icons] .project-desc,.projects-list[data-viewmode=icons] .project-tags,.projects-list[data-viewmode=icons] .project-version-list,.projects-list[data-viewmode=icons] .project-version-status-row,.projects-list[data-viewmode=icons] .project-updated,.projects-list[data-viewmode=icons] .project-meta-row,.projects-list[data-viewmode=icons] .project-link-indicator,.projects-list[data-viewmode=icons] .project-update-indicator{display:none!important}.projects-list[data-viewmode=icons] .project-title-row{justify-content:center}.projects-list[data-viewmode=icons] .project-title-with-version{display:block}.projects-list[data-viewmode=icons] .project-title{letter-spacing:-.2px;text-align:center;-webkit-line-clamp:2;color:var(--text);opacity:.92;font-size:12.5px;font-weight:850;line-height:1.25}.projects-list[data-viewmode=icons] .project-card:hover .project-image{box-shadow:var(--shadow-md);border-color:rgba(var(--ink), .14);transform:translateY(-2px)}.projects-list[data-viewmode=cards]{align-items:stretch;gap:18px;display:grid}.projects-list[data-viewmode=cards] .project-card{height:100%;min-height:var(--projects-card-min-height,auto);flex-direction:column;display:flex}.projects-list[data-viewmode=cards] .project-image{flex-shrink:0}.projects-list[data-viewmode=cards] .project-content{flex-direction:column;flex:1;display:flex}.projects-list[data-viewmode=cards] .project-title-row{align-items:flex-start;min-height:92px}.projects-list[data-viewmode=cards] .project-title{white-space:nowrap;-webkit-line-clamp:unset;font-size:17px;display:block;overflow:visible}.projects-list[data-viewmode=cards] .project-title-with-version{flex:1;min-width:0}.projects-list[data-viewmode=cards] .project-title-main{overflow:visible}.projects-list[data-viewmode=cards] .project-desc{-webkit-line-clamp:unset;display:block;overflow:visible}.projects-list[data-viewmode=cards] .project-tags{align-content:flex-start;min-height:34px;margin-top:auto}.projects-list[data-viewmode=cards] .project-card.coming-soon .project-image{flex:1;height:auto;min-height:220px}@media (min-width:520px){.projects-list[data-viewmode=icons]{grid-template-columns:repeat(4,1fr)}}@media (min-width:768px){.pcm{justify-content:center;align-items:center;padding:24px}.pcm-panel{border-radius:var(--r-xl);width:min(520px,100vw - 48px);max-height:min(84vh,740px);animation:.22s cubic-bezier(.32,.72,0,1) both pcm-scale-in}@keyframes pcm-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.pcm-handle{display:none}.project-image{height:176px}.project-content{gap:10px;padding:16px}.project-title{font-size:17px}.project-desc{font-size:12.5px;line-height:1.6}.projects-list[data-viewmode=cards] .project-title-row{min-height:82px}.projects-list[data-viewmode=cards] .project-desc{-webkit-line-clamp:unset;display:block;overflow:visible}.projects-list[data-viewmode=cards]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.projects-list[data-viewmode=icons]{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.tag{padding:5px 9px;font-size:9.5px}}@media (min-width:768px) and (max-width:1179px){.projects-controls-right{flex-wrap:wrap}}@media (min-width:1180px){.projects-list[data-viewmode=cards]{grid-template-columns:repeat(3,1fr);gap:18px}.projects-list[data-viewmode=icons]{grid-template-columns:repeat(6,1fr);gap:16px}}@media (max-width:767px){.projects-list{gap:var(--s-16)}.project-image{height:210px}.project-title{font-size:18px}.project-desc{-webkit-line-clamp:3}.projects-list[data-viewmode=cards] .project-card.coming-soon .project-image{min-height:210px}.view-btn{flex:1;min-width:0}.project-card{border-radius:var(--r-xl)}@media (min-width:768px){.projects-list[data-viewmode=cards] .project-card{min-height:360px}.projects-list[data-viewmode=cards] .project-image{background-position:50%;background-size:cover;height:220px}.projects-list[data-viewmode=cards] .project-title{min-height:2.4em}}@media (min-width:1180px){.projects-list[data-viewmode=cards] .project-card{min-height:420px}.projects-list[data-viewmode=cards] .project-image{height:260px}}.project-meta-row{align-items:flex-start}}#project-detail .view-inner{max-width:var(--container);padding-top:var(--s-24);padding-bottom:var(--s-40)}.app-content:has(#project-detail){padding-bottom:0}body:has(#project-detail):before{opacity:0}.project-detail-page{gap:18px;display:grid}.project-detail-toolbar{overscroll-behavior-x:contain;scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:12px;display:flex;overflow-x:auto}.project-detail-toolbar--bottom{border-top:1px solid rgba(var(--ink), .08);padding-top:10px}.project-detail-toolbar::-webkit-scrollbar{display:none}.project-detail-back,.project-detail-pager-link{border-radius:var(--r-full);background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);min-height:40px;color:var(--text-2);white-space:nowrap;transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);flex:none;align-items:center;gap:8px;padding:0 14px;font-size:12.5px;font-weight:700;display:inline-flex}.project-detail-back>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.project-detail-back:hover,.project-detail-pager-link:hover{background:var(--bg-2);border-color:rgba(var(--ink), .14);color:var(--text);transform:translateY(-1px)}.project-detail-pager{flex-wrap:nowrap;flex:none;justify-content:flex-start;gap:8px;margin-left:auto;display:flex}.project-detail-pager-title{white-space:nowrap;text-overflow:ellipsis;max-width:180px;overflow:hidden}.project-detail-pager-link.is-compact .project-detail-pager-title{max-width:124px}.project-detail-pager-logo{background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex;overflow:hidden}.project-detail-pager-logo-image{object-fit:cover;width:100%;height:100%;display:block}.project-detail-pager-logo-fallback{letter-spacing:.03em;color:var(--text-2);font-size:10px;font-weight:800}.project-detail-shell{align-items:start;gap:16px;display:grid}.project-detail-hero-card.card,.project-detail-section.card{background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);box-shadow:0 1px 8px rgba(var(--ink), .05)}.project-detail-hero-card{gap:18px;display:grid}.project-detail-sidebar{align-content:start;gap:16px;display:grid}.project-detail-topline{gap:10px;display:grid}.project-detail-topline .modal-badges,.project-detail-topline .modal-tags{flex-wrap:wrap;gap:8px;display:flex}.project-detail-topline .modal-badge-pill{background:rgba(var(--ink), .04);border-color:rgba(var(--ink), .08);padding:10px 12px;font-size:12px}.project-detail-headline{gap:12px;display:grid}.project-detail-identity{align-items:start;gap:16px;display:grid}.project-detail-identity-logo{justify-content:center;align-items:center;width:132px;min-width:132px;height:132px;padding:8px;display:flex;overflow:hidden}.project-detail-identity-logo-image{object-fit:contain;width:100%;height:100%;display:block}.project-detail-kicker{letter-spacing:.8px;text-transform:uppercase;color:var(--text-3);margin:0;font-size:10px;font-weight:800}.project-detail-title{letter-spacing:-1.6px;color:var(--text);text-wrap:balance;margin:0;font-size:clamp(30px,4vw,48px);font-weight:900;line-height:.97}.project-detail-title-row{align-items:flex-start;gap:12px;display:flex}.project-detail-update-indicator{cursor:pointer;background:#22c55e;border:none;border-radius:50%;flex-shrink:0;width:12px;height:12px;margin-top:10px;animation:1.2s infinite updatePulse;position:relative;box-shadow:0 0 0 4px #22c55e38,0 0 14px #22c55e57}.project-detail-update-indicator:before{content:"";border-radius:50%;position:absolute;inset:-12px}.project-detail-versions{flex-wrap:wrap;gap:8px;display:flex}.project-detail-description{max-width:70ch;color:var(--text-2);margin:0;font-size:15px;line-height:1.8}.project-detail-summary-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.project-detail-summary-card{border-radius:var(--r-lg);background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .08);gap:6px;min-height:82px;padding:14px 15px;display:grid}.project-detail-summary-label{letter-spacing:.8px;text-transform:uppercase;color:var(--text-3);font-size:10px;font-weight:800}.project-detail-summary-value{color:var(--text);text-wrap:balance;font-size:14px;font-weight:780;line-height:1.42}.project-detail-summary-value.project-website-status--online,.project-detail-summary-value.project-website-status--maintenance{align-items:center;gap:7px;font-size:13px;font-weight:700;display:inline-flex}.project-detail-summary-value.project-website-status--online{color:#16a34a}.project-detail-summary-value.project-website-status--maintenance{color:#b45309}.project-detail-summary-value.project-website-status--online .project-website-status-dot{background:#22c55e;box-shadow:0 0 0 2px #22c55e40}.project-detail-summary-value.project-website-status--maintenance .project-website-status-dot{background:#f59e0b;box-shadow:0 0 0 2px #f59e0b40}.project-detail-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.project-detail-actions[data-count="1"]{grid-template-columns:minmax(0,1fr)}.project-detail-actions[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}.project-detail-actions[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.project-detail-actions[data-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.project-detail-actions .primary-btn,.project-detail-actions .secondary-btn,.project-detail-actions .store-btn{border-radius:18px;width:100%;min-width:0;min-height:58px}.project-detail-actions .store-btn{border:1px solid rgba(var(--ink), .12);min-height:58px;box-shadow:none;justify-content:flex-start;gap:12px;padding:12px 14px}.project-detail-actions .store-btn:hover{box-shadow:0 12px 28px rgba(var(--ink), .08);transform:translateY(-1px)}.project-detail-actions .app-store-btn{background:var(--accent-strong);border-color:rgba(var(--ink), .16);color:var(--bg)}.project-detail-actions .app-store-btn:hover{background:var(--accent-strong)}.project-detail-actions .play-store-btn{background:var(--card-bg);color:var(--text)}.project-detail-actions .play-store-btn:hover{background:var(--bg-2)}.project-detail-actions .secondary-btn,.project-detail-actions .play-store-btn{background:var(--card-bg)}.project-detail-actions .primary-btn{background:var(--accent-strong);box-shadow:0 16px 34px rgba(var(--ink), .18)}.project-detail-actions .secondary-btn:hover,.project-detail-actions .play-store-btn:hover{box-shadow:0 12px 28px rgba(var(--ink), .08)}.project-store-btn-icon{background:#ffffff1f;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.project-store-btn-icon--play{background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08)}.project-store-btn-copy{text-align:left;gap:1px;min-width:0;display:grid}.project-store-btn-kicker{letter-spacing:.8px;text-transform:uppercase;opacity:.64;font-size:10px;font-weight:800}.project-store-btn-label{letter-spacing:-.01em;font-size:14px;font-weight:800}.project-detail-card-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-detail-gallery.card{box-shadow:none;background:0 0;border:none;padding:0}.project-detail-gallery{gap:14px;display:grid}.project-detail-gallery-header{gap:12px;display:grid}.project-detail-gallery-header-main{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-detail-gallery-count{border-radius:var(--r-full);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);min-width:28px;height:28px;color:var(--text-2);justify-content:center;align-items:center;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.project-detail-gallery-controls{gap:8px;display:flex}.project-detail-gallery-views{background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08);border-radius:16px;align-items:center;gap:6px;width:fit-content;padding:4px;display:inline-flex}.project-detail-gallery-view{min-height:36px;color:var(--text-2);transition:background var(--dur-1) var(--ease), color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);background:0 0;border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 12px;font-size:12.5px;font-weight:750;display:inline-flex}.project-detail-gallery-view.active{background:var(--bg-2);color:var(--text);box-shadow:0 1px 3px rgba(var(--ink), .08)}.project-detail-gallery-view:disabled{opacity:.45;cursor:not-allowed}.project-detail-gallery-view:not(:disabled):hover{transform:translateY(-1px)}.project-detail-gallery-btn{border-radius:var(--r-md);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);width:38px;height:38px;color:var(--text);transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);justify-content:center;align-items:center;display:inline-flex}.project-detail-gallery-btn:hover{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .14);transform:translateY(-1px)}.project-detail-gallery-frame,.project-detail-gallery-empty{background:0 0;border:none;border-radius:22px;justify-content:center;align-items:center;min-height:340px;display:flex;overflow:hidden}.project-detail-gallery-frame--interactive{cursor:zoom-in;text-align:left;width:100%;transition:border-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);padding:0;position:relative}.project-detail-gallery-frame--interactive:hover{transform:translateY(-1px)}.project-detail-gallery-frame--interactive:focus-visible{outline:2px solid rgba(var(--ink), .18);outline-offset:3px}.project-detail-gallery-image{object-fit:contain;border-radius:22px;width:100%;height:100%;max-height:520px;padding:0;display:block}.project-detail-gallery-frame.is-mobile{align-items:center}.project-detail-gallery-image.is-mobile{width:auto;max-width:min(100%,320px);margin:0 auto}.project-detail-gallery-zoom{border-radius:var(--r-full);background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);min-height:34px;box-shadow:0 8px 24px rgba(var(--ink), .1);color:var(--text);pointer-events:none;align-items:center;gap:8px;padding:0 12px;font-size:12px;font-weight:800;display:inline-flex;position:absolute;bottom:14px;right:14px}.project-detail-gallery-empty{color:var(--text-3);background:rgba(var(--ink), .03);border:1px dashed rgba(var(--ink), .1);min-height:220px;font-size:13px;font-weight:700}.project-detail-thumbs{scrollbar-width:none;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.project-detail-thumbs::-webkit-scrollbar{display:none}.project-detail-thumb{border:1px solid rgba(var(--ink), .1);background:var(--glass-bg-2);white-space:nowrap;min-height:44px;transition:border-color var(--dur-1) var(--ease), background var(--dur-1) var(--ease), transform var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);border-radius:14px;align-items:center;gap:8px;padding:0 12px;display:inline-flex}.project-detail-thumb-index{letter-spacing:.03em;color:var(--text-3);font-size:11px;font-weight:800}.project-detail-thumb-label{text-overflow:ellipsis;max-width:152px;color:var(--text-2);font-size:12.5px;font-weight:750;overflow:hidden}.project-detail-thumb:hover{border-color:rgba(var(--ink), .16);background:var(--bg-2);transform:translateY(-1px)}.project-detail-thumb.active{border-color:rgba(var(--ink), .22);background:var(--bg-2);box-shadow:0 8px 20px rgba(var(--ink), .07)}.project-detail-thumb.active .project-detail-thumb-index,.project-detail-thumb.active .project-detail-thumb-label{color:var(--text)}.project-detail-sections{align-items:start;gap:16px;display:grid}.project-detail-section.card{align-content:start;gap:16px;display:grid}.project-detail-section--problem{background:radial-gradient(circle at top left, rgba(var(--ink), .04), transparent 55%), var(--glass-bg-2);position:relative;overflow:hidden}.project-detail-section--problem:before{content:"";background:linear-gradient(180deg, rgba(var(--ink), .16), rgba(var(--ink), .05));width:4px;position:absolute;inset:0 auto 0 0}.project-detail-section-title{letter-spacing:-.4px;color:var(--text);margin:0;font-size:18px;font-weight:850}.project-detail-problem-text{max-width:72ch;color:var(--text-2);text-wrap:pretty;margin:0;font-size:15px;line-height:1.85}.project-detail-sidebar .project-detail-problem-text{max-width:none}.project-detail-feature-list{border:1px solid rgba(var(--ink), .08);background:rgba(var(--ink), .03);border-radius:18px;grid-template-columns:1fr;gap:0;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.project-detail-feature-list[data-count="1"]{background:rgba(var(--ink), .025)}.project-detail-feature-item{border-bottom:1px solid rgba(var(--ink), .08);grid-template-columns:32px minmax(0,1fr);align-items:start;gap:12px;padding:15px 16px;display:grid}.project-detail-feature-list[data-count="1"] .project-detail-feature-item{min-height:0;padding:13px 15px}.project-detail-feature-item:last-child{border-bottom:none}.project-detail-feature-icon{background:rgba(var(--ink), .05);width:32px;height:32px;color:var(--text);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.project-detail-feature-list[data-count="1"] .project-detail-feature-icon{border-radius:11px;width:30px;height:30px}.project-detail-feature-text{color:var(--text-2);text-wrap:pretty;font-size:14px;font-weight:650;line-height:1.65}.project-detail-feature-list[data-count="1"] .project-detail-feature-text{line-height:1.55}.project-detail-tech-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.project-detail-tech-list[data-count="1"]{grid-template-columns:minmax(0,240px);max-width:240px}.project-detail-tech-list[data-count="3"],.project-detail-tech-list[data-count="5"],.project-detail-tech-list[data-count="6"]{grid-template-columns:repeat(3,minmax(0,1fr))}.project-detail-tech-item{min-width:0}.project-detail-tech-pill{background:var(--card-bg);border:1px solid rgba(var(--ink), .08);width:100%;min-height:48px;color:var(--text);text-align:left;transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);border-radius:16px;justify-content:flex-start;align-items:center;gap:10px;padding:0 15px;display:inline-flex}.project-detail-tech-mark{background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);width:26px;height:26px;color:var(--text);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.project-detail-tech-mark-icon{display:block}.project-detail-tech-mark-fallback{letter-spacing:.02em;color:var(--text-2);font-size:10px;font-weight:800}.project-detail-tech-mark.has-brand{box-shadow:inset 0 1px 0 rgba(var(--ink-inv), .3)}.project-detail-tech-pill:hover{background:rgba(var(--ink), .07);border-color:rgba(var(--ink), .14);color:var(--text);transform:translateY(-1px)}.project-detail-tech-pill:focus-visible{outline:2px solid rgba(var(--ink), .18);outline-offset:3px}.project-detail-tech-name{letter-spacing:-.1px;color:var(--text-2);white-space:normal;text-wrap:balance;font-size:13px;font-weight:700;line-height:1.35}.project-detail-section .modal-highlights{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.project-detail-section .highlight-item{border-radius:var(--r-lg);background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .08);text-align:left;padding:16px 14px}.project-detail-section .highlight-value{letter-spacing:-.6px;color:var(--text);margin-bottom:6px;font-size:26px;font-weight:900}.project-detail-section .highlight-label{color:var(--text-2);font-size:12px;font-weight:700}.project-detail-section--wide{grid-column:1/-1}.project-detail-section .changelog-platform+.changelog-platform{margin-top:18px}.project-detail-action-dock{background:var(--card-bg);border:1px solid rgba(var(--ink), .1);width:100%;box-shadow:0 24px 54px rgba(var(--ink), .18), inset 0 1px 0 rgba(var(--ink-inv), .2);-webkit-backdrop-filter:blur(18px)saturate(1.15);border-radius:26px;padding:14px;position:relative;overflow:visible}.project-detail-action-dock-shell{width:100%;display:grid}.toast.project-detail-action-toast{left:var(--project-detail-action-toast-center,50%);pointer-events:none;z-index:3;width:calc(100% - 32px);max-width:420px;animation:.18s projectDetailActionToastIn;position:absolute;bottom:calc(100% + 12px);transform:translate(-50%)translateY(0)}.project-detail-action-toast-text{color:var(--text);font-size:14px;font-weight:750}@keyframes projectDetailActionToastIn{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.project-detail-action-dock.is-pinned{left:50%;bottom:calc(18px + env(safe-area-inset-bottom));z-index:1000;width:min(calc(var(--container) - 48px), calc(100vw - 36px));position:fixed;transform:translate(-50%)}.project-detail-action-dock:before{content:"";background:linear-gradient(90deg, transparent, rgba(var(--ink), .18), transparent);pointer-events:none;height:1px;position:absolute;inset:0 0 auto}@media (min-width:768px){.project-detail-actions[data-count="1"]{max-width:100%}.project-detail-actions[data-count="3"]{grid-template-columns:1.15fr repeat(2,minmax(0,1fr))}.project-detail-actions[data-count="4"]{grid-template-columns:1.14fr repeat(3,minmax(0,.95fr))}}.project-screenshot-lightbox{z-index:1200;overscroll-behavior:contain;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.project-screenshot-lightbox-backdrop{background:rgba(var(--ink), .78);-webkit-backdrop-filter:blur(12px);position:absolute;inset:0}.project-screenshot-lightbox-panel{z-index:1;background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);width:min(1180px,100%);height:min(900px,100vh - 32px);box-shadow:0 28px 90px rgba(var(--ink), .24);border-radius:28px;grid-template-rows:auto minmax(0,1fr) auto;gap:14px;padding:16px;display:grid;position:relative;overflow:hidden}.project-screenshot-lightbox-panel.is-mobile-shot{width:min(620px,100%)}.project-screenshot-lightbox-toolbar{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-screenshot-lightbox-meta{gap:4px;min-width:0;display:grid}.project-screenshot-lightbox-meta-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-screenshot-lightbox-meta strong{color:var(--text);text-wrap:balance;font-size:15px;font-weight:800;line-height:1.2}.project-screenshot-lightbox-meta span{color:var(--text-3);font-size:12px;font-weight:700}.project-screenshot-lightbox-views{background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .08);border-radius:14px;align-items:center;gap:6px;padding:4px;display:inline-flex}.project-screenshot-lightbox-view{min-height:30px;color:var(--text-2);transition:background var(--dur-1) var(--ease), color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:750;display:inline-flex}.project-screenshot-lightbox-view.active{background:var(--bg-2);color:var(--text);box-shadow:0 1px 3px rgba(var(--ink), .08)}.project-screenshot-lightbox-view:disabled{opacity:.45;cursor:not-allowed}.project-screenshot-lightbox-view:not(:disabled):hover{transform:translateY(-1px)}.project-screenshot-lightbox-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.project-screenshot-lightbox-toggle{background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);min-height:40px;color:var(--text-2);transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);border-radius:12px;justify-content:center;align-items:center;padding:0 14px;font-size:12.5px;font-weight:750;display:none}.project-screenshot-lightbox-toggle:hover{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .14);transform:translateY(-1px)}.project-screenshot-lightbox-toggle.active{background:rgba(var(--ink), .92);border-color:rgba(var(--ink), .92);color:var(--bg)}.project-screenshot-lightbox-btn{background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);width:40px;height:40px;color:var(--text);transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.project-screenshot-lightbox-btn--close{background:rgba(var(--ink), .08)}.project-screenshot-lightbox-btn:hover{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .14);transform:translateY(-1px)}.project-screenshot-lightbox-stage{background:var(--surface);border:1px solid rgba(var(--ink), .08);border-radius:22px;min-height:0;position:relative;overflow:hidden}.project-screenshot-lightbox-figure{justify-content:center;align-items:center;width:100%;height:100%;min-height:0;padding:18px;display:flex}.project-screenshot-lightbox-figure.is-mobile-shot{width:min(100%,440px);margin:0 auto}.project-screenshot-lightbox-figure.is-desktop-shot{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-x pan-y pinch-zoom;padding:10px;display:block;overflow:auto}.project-screenshot-lightbox-image{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:100%;display:block}.project-screenshot-lightbox-image.is-mobile-shot{max-height:100%;box-shadow:0 20px 60px rgba(var(--ink), .22);border-radius:28px}.project-screenshot-lightbox-image.is-desktop-shot{border-radius:16px;width:max(1080px,260vw);max-width:none;max-height:none}.project-screenshot-lightbox-nav{z-index:2;background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);width:46px;height:46px;box-shadow:0 12px 28px rgba(var(--ink), .12);color:var(--text);transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);border-radius:16px;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.project-screenshot-lightbox-nav--prev{left:16px}.project-screenshot-lightbox-nav--next{right:16px}.project-screenshot-lightbox-nav:hover{background:var(--bg-2);border-color:rgba(var(--ink), .14)}.project-screenshot-lightbox-zoom-toggle{z-index:2;background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);width:40px;height:40px;box-shadow:0 12px 28px rgba(var(--ink), .12);color:var(--text);transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);border-radius:14px;justify-content:center;align-items:center;display:none;position:absolute;top:14px;right:14px}.project-screenshot-lightbox-zoom-toggle:hover{background:var(--bg-2);border-color:rgba(var(--ink), .14);transform:translateY(-1px)}.project-screenshot-lightbox-zoom-toggle.active{background:rgba(var(--ink), .92);border-color:rgba(var(--ink), .92);color:var(--bg)}.project-screenshot-lightbox-footer{justify-content:center;display:flex}.project-screenshot-lightbox-views{justify-self:center}.project-screenshot-lightbox-footer-btn{background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);min-height:40px;color:var(--text-2);transition:background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-size:12.5px;font-weight:750;display:none}.project-screenshot-lightbox-footer-btn:hover{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .14);transform:translateY(-1px)}@media (min-width:980px){.project-detail-shell{grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr)}.project-detail-shell.project-detail-shell--single{grid-template-columns:minmax(0,1fr)}.project-detail-identity{grid-template-columns:auto minmax(0,1fr)}.project-detail-sections{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:980px) and (max-width:1179px){.project-detail-shell{grid-template-columns:minmax(0,1fr)}}@media (max-width:767px){#project-detail .view-inner{padding-top:var(--s-16);padding-bottom:var(--s-32)}.project-detail-toolbar{justify-content:space-between;align-items:center;overflow-x:hidden}.project-detail-toolbar--bottom{padding-top:8px}.project-detail-back{flex:auto;min-width:0}.project-detail-pager{gap:6px;margin-left:0}.project-detail-pager-link,.project-detail-back{min-height:38px;padding:0 12px}.project-detail-pager-link{padding-left:10px;padding-right:10px}.project-detail-pager-link .project-detail-pager-title{display:none}.project-detail-title{letter-spacing:-1px;font-size:clamp(24px,8.4vw,34px);line-height:1.04}.project-detail-identity{grid-template-columns:minmax(0,1fr);gap:12px}.project-detail-identity-logo{justify-self:start;width:88px;min-width:88px;height:88px;padding:6px}.project-detail-headline,.project-detail-title-row{gap:10px}.project-detail-action-toast{width:calc(100% - 24px)}.project-detail-versions{gap:6px}.project-detail-summary-grid,.project-detail-sections{grid-template-columns:1fr}.project-detail-feature-item{grid-template-columns:28px minmax(0,1fr);padding:14px 15px}.project-detail-feature-icon{border-radius:10px;width:28px;height:28px}.project-detail-tech-list,.project-detail-tech-list[data-count="2"],.project-detail-tech-list[data-count="3"],.project-detail-tech-list[data-count="4"],.project-detail-tech-list[data-count="5"],.project-detail-tech-list[data-count="6"]{grid-template-columns:repeat(2,minmax(0,1fr))}.project-detail-tech-list[data-count="1"]{grid-template-columns:1fr;max-width:none}.project-detail-tech-pill{border-radius:14px;min-height:46px;padding:0 13px}.project-detail-tech-mark{border-radius:8px;width:24px;height:24px}.project-detail-tech-name{font-size:12.5px}.project-detail-action-dock{border-radius:18px;width:100%;padding:8px}.project-detail-action-dock.is-pinned{width:calc(100vw - 12px);bottom:calc(6px + env(safe-area-inset-bottom))}.project-detail-actions{gap:8px}.project-detail-actions[data-count="1"]{grid-template-columns:1fr}.project-detail-actions[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}.project-detail-actions[data-count="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.project-detail-actions[data-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.project-detail-actions .primary-btn,.project-detail-actions .secondary-btn,.project-detail-actions .store-btn{border-radius:15px;gap:8px;min-width:0;min-height:48px;padding:0 14px;font-size:13px}.project-detail-actions .store-btn{padding:10px 12px}.project-store-btn-icon{border-radius:10px;width:32px;height:32px}.project-store-btn-kicker{display:none}.project-store-btn-label{font-size:12.5px}.project-detail-gallery-header{align-items:stretch}.project-detail-gallery-header-main,.project-detail-gallery-views{width:100%}.project-detail-gallery-view{flex:1;min-width:0}.project-detail-gallery-frame,.project-detail-gallery-empty{min-height:240px}.project-detail-gallery-zoom{min-height:32px;padding:0 10px;bottom:12px;right:12px}.project-screenshot-lightbox{padding:8px}.project-screenshot-lightbox-panel{border-radius:24px;gap:10px;width:100%;height:calc(100vh - 16px);padding:10px}.project-screenshot-lightbox-panel.is-mobile-shot{width:100%}.project-screenshot-lightbox-toolbar{align-items:flex-start}.project-screenshot-lightbox-views{justify-self:center;width:auto}.project-screenshot-lightbox-view{flex:none;min-width:96px}.project-screenshot-lightbox-actions{width:auto}.project-screenshot-lightbox-zoom-toggle{display:inline-flex}.project-screenshot-lightbox-stage{border-radius:20px}.project-screenshot-lightbox-figure{padding:10px}.project-screenshot-lightbox-figure.is-mobile-shot{width:min(100%,360px)}.project-screenshot-lightbox-figure.is-desktop-shot{padding:8px}.project-screenshot-lightbox-image.is-mobile-shot{border-radius:24px}.project-screenshot-lightbox-image.is-desktop-shot{width:max(980px,240vw)}.project-screenshot-lightbox-nav{border-radius:14px;width:42px;height:42px;display:inline-flex}.project-screenshot-lightbox-nav--prev{left:8px}.project-screenshot-lightbox-nav--next{right:8px}.project-screenshot-lightbox-footer{align-items:stretch;gap:10px;display:grid}.project-screenshot-lightbox-footer-btn{display:none}}.project-detail-section--testimonial{background:radial-gradient(circle at top right, rgba(var(--ink), .03), transparent 60%), var(--glass-bg-2);position:relative;overflow:hidden}.pd-testimonial{margin:0;padding-left:16px;position:relative}.pd-testimonial:before{content:"";background:var(--accent);opacity:.7;border-radius:2px;width:3px;position:absolute;inset:0 auto 0 0}.pd-testimonial+.pd-testimonial{border-top:1px solid rgba(var(--ink), .07);margin-top:20px;padding-top:20px}.pd-testimonial-quote{color:var(--text-2);margin:0 0 12px;font-size:15px;font-style:italic;line-height:1.75}.pd-testimonial-footer{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.pd-testimonial-company{color:var(--text);letter-spacing:-.1px;font-size:13px;font-weight:700}.pd-testimonial-role{color:var(--text-3);font-size:12px}.pd-testimonial-role:before{content:"·";margin-right:6px}#skill-detail .view-inner{max-width:var(--container);padding-top:var(--s-24);padding-bottom:var(--s-40)}.app-content:has(#skill-detail){padding-bottom:0}.skill-detail-header{padding:20px!important}.skill-detail-hero{align-items:center;gap:18px;display:flex}.skill-detail-icon{background:rgba(var(--ink), .07);width:64px;height:64px;color:var(--text-2);border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.skill-detail-initials{letter-spacing:-.5px;font-size:22px;font-weight:800}.skill-detail-hero-text{flex-direction:column;gap:5px;display:flex}.skill-detail-name{color:var(--text-1);margin:0;font-size:26px;font-weight:800;line-height:1.1}.skill-detail-category{color:var(--text-3);text-transform:uppercase;letter-spacing:.7px;font-size:11px;font-weight:700}.skill-detail-proof{color:var(--accent,#4f7cff);border-radius:var(--r-full);background:#4f7cff1a;align-items:center;gap:5px;width:fit-content;margin-top:2px;padding:3px 10px;font-size:12px;font-weight:650;display:inline-flex}.skill-detail-points{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.skill-detail-point{color:var(--text-1);border-bottom:1px solid rgba(var(--ink), .06);align-items:baseline;gap:12px;padding:10px 0;font-size:14px;line-height:1.6;display:flex}.skill-detail-point:last-child{border-bottom:none;padding-bottom:0}.skill-detail-point:first-child{padding-top:0}.skill-detail-point-bullet{background:var(--accent,#4f7cff);opacity:.7;border-radius:50%;flex-shrink:0;width:5px;height:5px;margin-top:7px}.skill-detail-project-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:16px 12px;display:grid}.skill-detail-project-app{color:var(--text-1);flex-direction:column;align-items:center;gap:7px;text-decoration:none;display:flex}.skill-detail-project-app:hover .skill-detail-project-app-icon{transform:scale(1.07);box-shadow:0 8px 24px #0000002e}.skill-detail-project-app-icon{background-position:50%;background-size:cover;background-color:rgba(var(--ink), .08);border-radius:16px;flex-shrink:0;width:64px;height:64px;transition:transform .18s,box-shadow .18s;box-shadow:0 2px 8px #0000001a}.skill-detail-project-app-name{color:var(--text-2);text-align:center;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;width:100%;font-size:11px;font-weight:600;line-height:1.35}@media (min-width:768px){.skill-detail-icon{border-radius:20px;width:80px;height:80px}.skill-detail-name{font-size:32px}.skill-detail-hero{gap:24px}}@media (max-width:767px){#skill-detail .view-inner{padding-top:var(--s-16);padding-bottom:var(--s-32)}.skill-detail-header{padding:16px!important}.skill-detail-hero{gap:14px}.skill-detail-icon{border-radius:13px;width:52px;height:52px}.skill-detail-name{font-size:clamp(20px,6vw,26px)}.skill-detail-category{font-size:10px}.skill-detail-proof{padding:2px 8px;font-size:11px}.skill-detail-point{gap:10px;padding:9px 0;font-size:13px}.skill-detail-project-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:14px 10px}.skill-detail-project-app-icon{border-radius:14px;width:56px;height:56px}.skill-detail-project-app-name{font-size:10px}}.skill-detail-tools{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;display:grid}.skill-detail-tool-box{background:rgba(var(--accent,79 124 255), .06);border:1px solid rgba(var(--accent,79 124 255), .15);cursor:default;border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:10px 8px 8px;transition:background .15s,border-color .15s;display:flex}.skill-detail-tool-box:hover{background:rgba(var(--accent,79 124 255), .12);border-color:rgba(var(--accent,79 124 255), .28)}.skill-detail-tool-box__icon{background:#ffffff0f;border-radius:10px;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.skill-detail-tool-box__placeholder{background:rgba(var(--fg,255 255 255), .15);border-radius:6px;width:28px;height:28px;display:block}.skill-detail-tool-box__name{color:rgba(var(--fg,255 255 255), .75);text-align:center;word-break:break-word;font-size:11px;font-weight:500;line-height:1.3}@media (max-width:767px){.skill-detail-tools{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.skill-detail-tool-box{padding:10px 6px 8px}.skill-detail-tool-box__icon{width:36px;height:36px}}#contact .view-inner{min-height:calc(100dvh - 70px - 70px - env(safe-area-inset-top) - env(safe-area-inset-bottom));flex-direction:column;justify-content:flex-start;display:flex}.contact-list{gap:10px;display:grid}.contact-card{background:linear-gradient(180deg, var(--glass-bg-2), var(--glass-bg-2));border:1px solid rgba(var(--ink), .09);border-radius:var(--r-xl);min-height:148px;box-shadow:0 14px 32px rgba(var(--ink), .06);transition:transform .18s var(--ease-2), border-color .18s ease, box-shadow .18s ease, background .18s ease;gap:16px;padding:18px;text-decoration:none;display:grid}.contact-card--link:hover{border-color:rgba(var(--ink), .14);box-shadow:0 20px 40px rgba(var(--ink), .1);background:linear-gradient(180deg, var(--glass-bg-3), var(--glass-bg-2));transform:translateY(-3px)}.contact-card-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.contact-icon{border-radius:var(--r-sm);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);width:42px;height:42px;color:var(--text);box-shadow:inset 0 1px 0 rgba(var(--ink-inv), .2);flex-shrink:0;justify-content:center;align-items:center;display:flex}.contact-text{gap:6px;min-width:0;display:grid}.contact-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:10px;font-weight:800}.contact-value{letter-spacing:-.03em;color:var(--text);text-wrap:balance;text-overflow:ellipsis;font-size:18px;font-weight:850;line-height:1.2;overflow:hidden}.contact-card-action{border-radius:var(--r-sm);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);width:34px;height:34px;color:var(--text-2);flex-shrink:0;justify-content:center;align-items:center;transition:transform .15s,color .15s,background .15s,border-color .15s;display:inline-flex}.contact-card--link:hover .contact-card-action{color:var(--text);background:rgba(var(--ink), .08);transform:translate(2px,-2px)}.contact-copy-btn{cursor:pointer;font-family:inherit}.contact-copy-btn:hover{background:rgba(var(--ink), .08);color:var(--text-2)}.contact-copy-btn:active{transform:scale(.92)}.contact-copy-btn.is-copied{color:#16a34a;background:#22c55e14;border-color:#22c55e33}@media (min-width:768px){#contact .view-inner{min-height:calc(100dvh - 64px);padding-top:var(--s-20);padding-bottom:calc(var(--s-12) + 52px);scroll-padding-bottom:52px;overflow:auto}.contact-list{grid-template-columns:repeat(2,1fr);gap:12px}}@media (min-width:768px) and (max-width:1180px) and (orientation:landscape){#contact .view-inner{padding-top:var(--s-20);padding-bottom:calc(var(--s-24) + 24px)}.contact-card{min-height:136px;padding:16px}.contact-value{font-size:17px}}.lang-toggle{border-radius:var(--r-full);border:1px solid rgba(var(--ink), .14);background:var(--glass-bg);letter-spacing:.6px;color:var(--text-2);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;padding:4px 10px;font-size:11px;font-weight:800;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.lang-toggle:hover{background:var(--popover-bg);color:var(--text)}.card{background:var(--glass-bg);border:1px solid rgba(var(--ink), .1);border-radius:var(--r-lg);padding:var(--s-24);box-shadow:var(--shadow-sm)}.primary-btn,.secondary-btn{border-radius:var(--r-md);letter-spacing:-.2px;min-height:52px;transition:transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:10px;padding:0 22px;font-size:15px;font-weight:700;display:inline-flex}.primary-btn{background:var(--accent-strong);border-color:rgba(var(--ink), .14);color:var(--bg);box-shadow:0 10px 26px rgba(var(--ink), .12)}.primary-btn:hover{box-shadow:0 14px 36px rgba(var(--ink), .16);transform:translateY(-1px)}.primary-btn:active{transform:translateY(0)}.secondary-btn{background:var(--glass-bg);border-color:rgba(var(--ink), .12);color:var(--text)}.secondary-btn:hover{background:var(--card-bg);border-color:rgba(var(--ink), .16);transform:translateY(-1px)}@media (min-width:768px){.primary-btn,.secondary-btn{min-width:200px}}.toast{bottom:calc(86px + env(safe-area-inset-bottom));background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(var(--ink), .1);border-radius:var(--r-lg);width:calc(100% - 32px);max-width:420px;box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease), transform var(--dur-2) var(--ease);z-index:10001;align-items:center;gap:10px;padding:14px 16px;display:flex;position:fixed;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.toast svg{color:rgba(var(--ink), .85);flex-shrink:0}#toastText{color:var(--text);font-size:14px;font-weight:750}@media (min-width:768px){.toast{bottom:var(--s-40)}}.modal-badges{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.modal-badge-pill{border:1px solid rgba(var(--ink),.1);letter-spacing:-.2px;color:rgba(var(--ink),.92);white-space:nowrap;background:#ffffffb8;border-radius:999px;align-items:center;gap:6px;padding:12px;font-size:13px;font-weight:800;line-height:1;display:inline-flex}.modal-badge-pill i{opacity:.9;width:14px;height:14px}.project-badges .modal-badge-pill{gap:0;margin:2px;padding:12px}.deployment-banner{z-index:9999;background:var(--text);color:var(--bg);border-radius:var(--r-full);box-shadow:var(--shadow-lg);white-space:nowrap;animation:deployBannerIn .3s var(--ease) both;align-items:center;gap:12px;padding:10px 16px 10px 18px;font-size:13px;font-weight:500;display:flex;position:fixed;bottom:120px;left:50%;transform:translate(-50%)}@keyframes deployBannerIn{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.deployment-banner__text{opacity:.85}.deployment-banner__btn{background:rgba(var(--ink-inv), .15);border:1px solid rgba(var(--ink-inv), .25);color:var(--bg);border-radius:var(--r-full);cursor:pointer;padding:4px 12px;font-size:12px;font-weight:700;transition:background .15s}.deployment-banner__btn:hover{background:#ffffff40}.project-modal{z-index:10000;padding:var(--s-20);overscroll-behavior:contain;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.project-modal.active{display:flex}.project-modal ::-webkit-scrollbar{display:none}.project-modal *{scrollbar-width:none;-ms-overflow-style:none}.modal-overlay{background:rgba(var(--ink), .35);-webkit-backdrop-filter:blur(6px);animation:fadeIn var(--dur-2) var(--ease);position:absolute;inset:0}.modal-container{background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);border-radius:var(--r-xl);width:100%;max-width:1100px;max-height:92vh;box-shadow:var(--shadow-lg);z-index:1;animation:modalIn var(--dur-2) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.modal-header{top:var(--s-16);right:var(--s-16);z-index:100;position:absolute}.modal-close{border-radius:var(--r-md);background:rgba(var(--ink), .06);border:1px solid rgba(var(--ink), .1);width:44px;height:44px;color:var(--text);transition:transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease);justify-content:center;align-items:center;display:flex}.modal-close:hover{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .14);transform:rotate(6deg)}.modal-close:active{transform:scale(.96)}.modal-content{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none;clip-path:inset(0);flex:1;margin-right:-20px;padding-right:20px;overflow-y:scroll}.modal-content::-webkit-scrollbar{display:none}.modal-slider{background:rgba(var(--ink), .04);border-bottom:1px solid rgba(var(--ink), .08);height:420px;position:relative;overflow:hidden}.slider-container{height:100%;display:flex;position:relative}.slider-slide{justify-content:center;align-items:center;min-width:100%;height:100%;padding:18px;display:none;position:relative}.slider-slide.active{display:flex}.slider-slide img{object-fit:contain;border-radius:var(--r-md);max-width:100%;max-height:100%;box-shadow:var(--shadow-md);border:1px solid rgba(var(--ink), .1);background:var(--glass-bg)}.no-images{height:100%;color:var(--text-2);justify-content:center;align-items:center;font-weight:650;display:flex}.slider-btn{border-radius:var(--r-md);background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);width:44px;height:44px;color:var(--text);transition:transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease);z-index:10;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.slider-btn:hover{background:var(--glass-bg-2);border-color:rgba(var(--ink), .14);transform:translateY(-50%)scale(1.04)}.slider-btn:active{transform:translateY(-50%)scale(.98)}.slider-btn:disabled{opacity:.35;cursor:not-allowed}.slider-prev{left:14px}.slider-next{right:14px}.slider-dots{border-radius:var(--r-full);background:var(--glass-bg-2);border:1px solid rgba(var(--ink), .1);gap:8px;padding:8px 10px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.slider-dot{background:rgba(var(--ink), .2);width:8px;height:8px;transition:width var(--dur-1) var(--ease), background var(--dur-1) var(--ease);border-radius:50%}.slider-dot.active{background:rgba(var(--ink), .55);border-radius:var(--r-full);width:18px}.modal-body{padding:24px 22px 26px}.modal-meta{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.modal-badge{border-radius:var(--r-full);background:rgba(var(--ink), .06);border:1px solid rgba(var(--ink), .1);letter-spacing:.7px;color:var(--text);padding:7px 12px;font-size:12px;font-weight:750}.modal-tags{flex-wrap:wrap;gap:8px;display:flex}.modal-title-row{align-items:center;gap:10px;margin-bottom:10px;display:flex}.modal-title{letter-spacing:-1px;margin-bottom:0;font-size:clamp(20px,3.2vw,34px);font-weight:900}.modal-update-indicator{appearance:none;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#22c55e;border:none;border-radius:50%;outline:none;flex-shrink:0;width:10px;min-width:10px;height:10px;min-height:10px;margin:0;padding:0;animation:1.2s infinite modalUpdatePulse;position:relative;box-shadow:0 0 0 3px #22c55e66,0 0 8px #22c55e99}.modal-update-indicator:before{content:"";border-radius:50%;position:absolute;inset:-12px}@keyframes modalUpdatePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.3)}}.modal-version-badge{letter-spacing:.4px;white-space:nowrap;border-radius:var(--r-full);background:rgba(var(--ink), .06);color:rgba(var(--ink), .48);border:1px solid rgba(var(--ink), .08);flex-shrink:0;padding:5px 10px;font-size:12px;font-weight:700;line-height:1;translate:0 -1px}.modal-description{color:var(--text-2);margin-bottom:18px;font-size:14.5px;line-height:1.75}.modal-submeta{border-radius:var(--r-lg);background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .08);justify-content:space-between;align-items:center;gap:12px;margin:10px 0 16px;padding:12px;display:flex}.submeta-version{letter-spacing:.4px;white-space:nowrap;border-radius:var(--r-full);background:rgba(var(--ink), .06);color:rgba(var(--ink), .48);border:1px solid rgba(var(--ink), .08);flex-shrink:0;padding:6px 12px;font-size:12px;font-weight:700;line-height:1}.submeta-left{align-items:center;gap:10px;min-width:0;display:flex}.status-dot{background:rgba(var(--ink), .25);width:10px;height:10px;box-shadow:0 0 0 3px rgba(var(--ink), .06);border-radius:999px;flex:none}.submeta-status{letter-spacing:-.2px;color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:850;overflow:hidden}.submeta-updated{color:var(--text-2);white-space:nowrap;font-size:12.5px;font-weight:700}.submeta-updated:before{content:"Updated";color:var(--text-3);letter-spacing:.3px;text-transform:uppercase;margin-right:8px;font-size:10.5px;font-weight:800}#modalMetaBar[data-status=done] .status-dot,#modalMetaBar[data-status=completed] .status-dot,#modalMetaBar[data-status=active] .status-dot,#modalMetaBar[data-status=in_progress] .status-dot{background:#22c55e;box-shadow:0 0 0 3px #22c55e24}#modalMetaBar[data-status=maintenance] .status-dot{background:#eab308;box-shadow:0 0 0 3px #eab3082e}#modalMetaBar[data-status=paused] .status-dot{background:#94a3b8;box-shadow:0 0 0 3px #94a3b82e}#modalMetaBar[data-status=concept] .status-dot{background:#a855f7;box-shadow:0 0 0 3px #a855f72e}#modalMetaBar.modal-submeta{box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;flex-flow:wrap!important;justify-content:flex-start!important;align-items:center!important;gap:12px!important;margin:10px 0 16px!important;padding:0!important;display:flex!important}#modalMetaBar .submeta-left,#modalMetaBar .submeta-right{box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;flex-wrap:nowrap!important;flex-shrink:1!important;align-items:center!important;gap:10px!important;min-width:0!important;padding:0!important;display:inline-flex!important}#modalStatusDot{display:none!important}#modalStatus.submeta-status{letter-spacing:-.2px!important;color:var(--text)!important;white-space:nowrap!important;text-overflow:ellipsis!important;border:1px solid var(--border-color,#e5e5e5)!important;background:#fff!important;border-radius:24px!important;flex-shrink:1!important;min-width:0!important;padding:8px 20px!important;font-size:14px!important;font-weight:900!important;display:inline-block!important;overflow:hidden!important}#modalLastUpdated.submeta-updated{color:var(--text)!important;white-space:nowrap!important;border:1px solid var(--border-color,#e5e5e5)!important;background:#fff!important;border-radius:24px!important;flex-shrink:0!important;align-items:center!important;gap:8px!important;padding:8px 20px!important;font-size:14px!important;font-weight:900!important;display:inline-flex!important}#modalLastUpdated.submeta-updated:before{content:"UPDATED"!important;letter-spacing:.22em!important;color:var(--text-3)!important;font-size:11px!important;font-weight:900!important}.modal-stats-inline{border-radius:var(--r-lg);background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .08);flex-wrap:wrap;gap:14px;margin-bottom:18px;padding:12px;display:flex}.stat-inline{border-radius:var(--r-md);background:var(--glass-bg);border:1px solid rgba(var(--ink), .08);align-items:center;gap:8px;padding:8px 10px;display:flex}.stat-inline svg{color:rgba(var(--ink), .75);flex-shrink:0}.stat-inline span{color:var(--text);font-size:13px;font-weight:700}.modal-section{margin-top:18px}.modal-section h3{color:var(--text);letter-spacing:-.2px;align-items:center;gap:10px;margin-bottom:10px;font-size:14px;font-weight:850;display:flex}.modal-features{gap:10px;list-style:none;display:grid}.modal-features li{border-radius:var(--r-md);background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .08);color:var(--text-2);white-space:normal;word-break:break-word;align-items:flex-start;gap:10px;max-height:none;padding:12px;font-size:13.5px;line-height:1.65;display:flex;overflow:visible}.modal-features li:before{content:"✓";background:rgba(var(--ink), .06);border:1px solid rgba(var(--ink), .1);width:20px;height:20px;color:rgba(var(--ink), .85);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;font-weight:900;display:inline-flex}.modal-tech{flex-wrap:wrap;gap:10px;display:flex}.tech-tag{border-radius:var(--r-full);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .1);color:var(--text-2);padding:8px 12px;font-size:12.5px;font-weight:700;transition:background .12s ease-out,border-color .12s ease-out,color .12s ease-out,transform .12s ease-out}.tech-tag:hover{border-color:rgba(var(--ink), .14);color:var(--text)}.tech-tag-clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.tech-tag-clickable:hover{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .18);color:var(--text);transform:scale(1.04)}.tech-tag-clickable:active{transform:scale(.97)}.modal-highlights{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.highlight-item{border-radius:var(--r-lg);background:rgba(var(--ink), .03);border:1px solid rgba(var(--ink), .08);text-align:center;padding:14px}.highlight-value{letter-spacing:-.6px;color:var(--text);margin-bottom:6px;font-size:26px;font-weight:900}.highlight-label{color:var(--text-2);font-size:12px;font-weight:700}.modal-actions{gap:12px;margin-top:18px;display:flex}.modal-actions .primary-btn,.modal-actions .secondary-btn,.modal-actions .store-btn{flex:1;min-height:50px}.store-btn{cursor:pointer;letter-spacing:-.01em;border:none;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:800;text-decoration:none;transition:transform .12s,box-shadow .15s,filter .15s;display:inline-flex}.store-btn svg{flex-shrink:0}.store-btn:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000002e}.store-btn:active{box-shadow:none;transform:translateY(0)}.app-store-btn{background:var(--accent-strong);color:var(--bg)}.app-store-btn:hover{background:var(--accent-strong);opacity:.85}.play-store-btn{background:var(--bg-2);color:var(--text);border:1px solid rgba(var(--ink), .12)}.play-store-btn:hover{background:var(--surface-2)}.modal-changelog-hint{opacity:.72;margin:0 0 10px;font-size:13px;font-weight:650}.changelog-accordion{flex-direction:column;gap:10px;display:flex}details.changelog-major-group{border:1px solid rgba(var(--ink),.1);background:var(--surface);border-radius:16px;overflow:hidden}details.changelog-major-group>summary.changelog-major-summary{cursor:pointer;-webkit-user-select:none;user-select:none;background:rgba(var(--ink),.03);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;list-style:none;display:flex}details.changelog-major-group>summary.changelog-major-summary::-webkit-details-marker{display:none}details.changelog-major-group>summary.changelog-major-summary:hover{background:rgba(var(--ink),.05)}.changelog-major-left{align-items:center;gap:12px;min-width:0;display:flex}.changelog-major-badge{letter-spacing:-.4px;color:var(--text);background:rgba(var(--ink),.08);border-radius:8px;flex-shrink:0;padding:4px 10px;font-size:13px;font-weight:800}.changelog-major-info{flex-direction:column;gap:2px;min-width:0;display:flex}.changelog-major-range{color:var(--text);letter-spacing:-.2px;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.changelog-major-meta{color:var(--text-3);align-items:center;gap:5px;font-size:11px;font-weight:550;display:flex}.changelog-major-dot{opacity:.5}details.changelog-major-group[open] .changelog-chevron{transform:rotate(180deg)}.changelog-major-body{flex-direction:column;gap:8px;padding:10px;display:flex}details.changelog-item{background:rgba(var(--ink),.03);border:1px solid rgba(var(--ink),.08);border-radius:12px;overflow:hidden}.changelog-item.changelog-item-latest{border-width:2px;border-color:#22c55e;box-shadow:0 0 0 3px #22c55e24,0 0 18px #22c55e1a}.changelog-entry.changelog-entry-latest{border-width:2px;border-color:#22c55e;box-shadow:0 0 0 3px #22c55e2e,0 0 12px #22c55e1a}.changelog-item.changelog-item-latest,.changelog-entry.changelog-entry-latest{scroll-margin-top:96px;scroll-margin-bottom:96px}details.changelog-item>summary{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:12px;padding:12px;list-style:none;display:flex}details.changelog-item>summary::-webkit-details-marker{display:none}.changelog-summary-left{flex-direction:column;gap:4px;min-width:0;display:flex}.changelog-version{letter-spacing:-.2px;text-overflow:ellipsis;white-space:nowrap;color:rgba(var(--ink),.92);font-weight:900;overflow:hidden}.changelog-sub{opacity:.75;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:750;overflow:hidden}.changelog-chevron{background:var(--surface);border:1px solid rgba(var(--ink),.1);border-radius:12px;flex:none;place-items:center;width:34px;height:34px;transition:transform .15s;display:grid;transform:rotate(0)}details.changelog-item[open] .changelog-chevron{transform:rotate(180deg)}.changelog-body{padding:0 12px 12px}.changelog-list{flex-direction:column;gap:10px;margin:0;padding-left:0;list-style:none;display:flex}.changelog-entry{background:var(--surface);border:1px solid rgba(var(--ink),.08);border-radius:14px;padding:10px}.changelog-entry-top{justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.changelog-entry-title{text-overflow:ellipsis;white-space:nowrap;color:rgba(var(--ink),.92);margin:0;font-size:13px;font-weight:900;overflow:hidden}.changelog-entry-meta{opacity:.85;white-space:nowrap;flex:none;align-items:center;gap:8px;font-size:12px;font-weight:800;display:flex}.changelog-pill{background:rgba(var(--ink),.04);border:1px solid rgba(var(--ink),.1);border-radius:999px;padding:5px 8px;line-height:1}.changelog-entry-desc{opacity:.82;margin:0;font-size:13px;font-weight:650;line-height:1.45}.changelog-platform{margin-top:16px}.changelog-platform-title{color:rgba(var(--ink),.78);align-items:center;gap:6px;margin:0 0 10px;font-size:14px;font-weight:800;display:flex}.changelog-platform-title svg{opacity:.85;flex-shrink:0}.changelog-empty{color:var(--text-3);background:rgba(var(--ink),.02);border:1px dashed rgba(var(--ink),.1);border-radius:12px;margin:0;padding:12px 14px;font-size:13px;font-weight:650}.coming-soon-body{text-align:center;padding:24px 16px 16px}.coming-soon-body .modal-description{color:var(--text-2);margin:0;font-size:15px;font-weight:700}.modal-project-nav{display:none}@media (min-width:1300px){.modal-project-nav{z-index:2;background:var(--card-bg);border:1px solid rgba(var(--ink), .12);width:52px;height:52px;color:var(--text);transition:transform var(--dur-1) var(--ease), background var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 4px 20px #0000001f}.modal-project-nav:hover{background:var(--bg-2);transform:translateY(-50%)scale(1.06);box-shadow:0 6px 28px #00000029}.modal-project-nav:active{transform:translateY(-50%)scale(.97)}.modal-project-prev{left:20px}.modal-project-next{right:20px}}@keyframes modalEnterFromLeft{0%{opacity:.7;transform:translate(-60px)}to{opacity:1;transform:translate(0)}}@keyframes modalEnterFromRight{0%{opacity:.7;transform:translate(60px)}to{opacity:1;transform:translate(0)}}.modal-container.modal-enter-from-left{animation:.34s cubic-bezier(.25,1,.5,1) both modalEnterFromLeft}.modal-container.modal-enter-from-right{animation:.34s cubic-bezier(.25,1,.5,1) both modalEnterFromRight}@media (max-width:768px){.project-modal{overscroll-behavior:contain;align-items:flex-end;padding:0}.modal-container{border-radius:var(--r-xl) var(--r-xl) 0 0;flex-direction:column;width:100%;height:95dvh;max-height:95dvh;display:flex}.modal-container.modal-slide-up{animation:.32s cubic-bezier(.22,1,.36,1) forwards modalSlideUp}@keyframes modalSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-content{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;scrollbar-width:none;-ms-overflow-style:none;flex:1;min-height:0;overflow-y:auto}.modal-content::-webkit-scrollbar{display:none}.modal-slider{flex-shrink:0;height:44dvh;min-height:200px}.modal-body{padding:16px 16px 18px}.modal-actions{flex-direction:column}.modal-close{width:42px;height:42px}.slider-btn{width:40px;height:40px}.slider-prev{left:10px}.slider-next{right:10px}.modal-submeta{flex-flow:wrap;align-items:center}.modal-features li{white-space:normal;word-break:break-word;-webkit-line-clamp:unset;-webkit-box-orient:unset;max-height:none;padding:10px;font-size:13px;line-height:1.65;overflow:visible}.changelog-entry-top{flex-direction:column;align-items:flex-start;gap:6px}.changelog-entry-title{white-space:normal;text-overflow:unset;word-break:break-word;font-size:13px;overflow:visible}.changelog-entry-meta{flex-wrap:wrap}#modalMetaBar.modal-submeta{flex-flow:wrap;align-items:center;gap:10px}}@media (max-width:480px){#modalMetaBar.modal-submeta{flex-flow:wrap!important;gap:8px!important}#modalStatus.submeta-status{flex:0 auto!important;min-width:0!important;padding:6px 14px!important;font-size:12px!important}#modalLastUpdated.submeta-updated{flex:0 auto!important;gap:5px!important;padding:6px 14px!important;font-size:12px!important}#modalLastUpdated.submeta-updated:before{letter-spacing:.15em!important;font-size:9px!important}}@media (max-width:420px){.modal-title{font-size:20px}}@media (max-width:768px) and (orientation:landscape){.modal-slider{height:50dvh}.modal-container{height:95dvh;max-height:95dvh}}.project-preview{z-index:11000;background:var(--bg,#f8fafc);padding-top:env(safe-area-inset-top);flex-direction:column;animation:.28s cubic-bezier(.22,1,.36,1) forwards previewFadeIn;display:flex;position:fixed;inset:0}.project-preview:before{content:"";height:env(safe-area-inset-top);background:var(--card-bg-2);-webkit-backdrop-filter:blur(24px)saturate(1.8);z-index:3;position:fixed;top:0;left:0;right:0}body:has(.project-preview) .app-header{display:none!important}body:has(.project-preview) .desktop-nav{display:none!important}body:has(.project-preview) .tab-bar{display:none!important}body:has(.project-preview) .theme-switcher{display:none!important}body:has(.project-preview) .preloader{display:none!important}body:has(.project-preview) footer{display:none!important}body:has(.project-preview) .app-shell{min-height:0}body:has(.project-preview) .app-content{max-width:none!important;margin:0!important;padding:0!important}@keyframes previewFadeIn{0%{opacity:0}to{opacity:1}}.preview-bar{background:var(--card-bg-2);-webkit-backdrop-filter:blur(24px)saturate(1.8);border-bottom:1px solid rgba(var(--ink), .06);z-index:2;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;min-height:54px;padding:0 14px;display:flex}.preview-btn-back{background:rgba(var(--ink), .05);color:var(--text,#0f172a);cursor:pointer;white-space:nowrap;border:none;border-radius:10px;flex-shrink:0;align-items:center;gap:6px;padding:7px 14px 7px 10px;font-size:13px;font-weight:700;transition:background .15s,transform .1s;display:inline-flex}.preview-btn-back:hover{background:rgba(var(--ink), .09)}.preview-btn-back:active{transform:scale(.96)}.preview-btn-back svg{transition:transform .15s}.preview-btn-back:hover svg{transform:translate(-2px)}.preview-center{flex:1;justify-content:center;align-items:center;gap:8px;min-width:0;display:flex}.preview-nav-btn{background:rgba(var(--ink), .05);width:34px;height:34px;color:var(--text,#0f172a);cursor:pointer;border:none;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,transform .1s;display:inline-flex}.preview-nav-btn:hover:not(:disabled){background:rgba(var(--ink), .09)}.preview-nav-btn:active:not(:disabled){transform:scale(.92)}.preview-nav-btn:disabled{opacity:.2;cursor:not-allowed}.preview-title-group{flex-direction:column;align-items:center;gap:1px;min-width:0;display:flex}.preview-title{letter-spacing:-.3px;color:var(--text,#0f172a);white-space:nowrap;text-overflow:ellipsis;max-width:260px;font-size:13.5px;font-weight:800;line-height:1.25;overflow:hidden}.preview-domain{color:rgba(var(--ink), .4);letter-spacing:.1px;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:4px;max-width:220px;font-size:11px;font-weight:600;line-height:1.3;display:flex;overflow:hidden}.preview-domain-dot{background:#22c55e;border-radius:50%;flex-shrink:0;width:5px;height:5px}.preview-right-group{flex-shrink:0;align-items:center;gap:8px;display:flex}.preview-seo-btn{background:rgba(var(--ink), .05);color:var(--text,#0f172a);cursor:pointer;white-space:nowrap;border:1.5px solid #0000;border-radius:10px;flex-shrink:0;align-items:center;gap:5px;padding:7px 12px;font-size:13px;font-weight:700;transition:background .15s,border-color .15s,color .15s,transform .1s;display:inline-flex}.preview-seo-btn:hover{background:rgba(var(--ink), .09)}.preview-seo-btn:active{transform:scale(.96)}.preview-seo-btn--active{color:#16a34a;background:#22c55e1a;border-color:#22c55e59}.preview-seo-btn--active:hover{background:#22c55e26}.preview-btn-external{background:var(--text,#0f172a);color:var(--bg);cursor:pointer;white-space:nowrap;border:none;border-radius:10px;flex-shrink:0;align-items:center;gap:5px;padding:7px 14px;font-size:13px;font-weight:700;transition:background .15s,transform .1s,opacity .15s;display:inline-flex}.preview-btn-external:hover{opacity:.85}.preview-btn-external:active{transform:scale(.96)}.preview-seo-overlay{z-index:5;width:min(820px,100% - 32px);animation:.28s cubic-bezier(.22,1,.36,1) forwards seoSlideIn;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}@keyframes seoSlideIn{0%{opacity:0;transform:translate(-50%)translateY(12px)scale(.96)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}.seo-score-panel{box-shadow:0 20px 42px rgba(var(--ink), .14);background:linear-gradient(#f7faf8 0%,#eef7f1 100%);border:1px solid #16a34a24;border-radius:24px;padding:14px 16px}.seo-score-source{letter-spacing:.2px;color:rgba(var(--ink), .62);text-align:center;margin-bottom:10px;font-size:11px;font-weight:800}.seo-score-source-link{color:#166534;border-bottom:1px solid #1665343d;text-decoration:none;transition:color .15s,border-color .15s}.seo-score-source-link:hover{color:#14532d;border-color:#14532d6b}.seo-score-current-link{color:rgba(var(--ink), .72);border-bottom:1px solid rgba(var(--ink), .14);overflow-wrap:anywhere;text-decoration:none;transition:color .15s,border-color .15s}.seo-score-current-link:hover{color:rgba(var(--ink), .94);border-color:rgba(var(--ink), .28)}.seo-rings{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.seo-ring-item{justify-items:center;gap:6px;padding:6px 4px;display:grid}.seo-ring-label{color:rgba(var(--ink), .76);text-align:center;font-size:11px;font-weight:750;line-height:1.3}.seo-score-error{color:rgba(var(--ink), .86);text-align:center;margin:0;padding:8px 4px;font-size:11.5px;font-weight:600;line-height:1.5}.seo-score-error-hint{color:rgba(var(--ink), .48);margin-top:4px;font-size:10px;font-weight:500;display:inline-block}.preview-loading{background:var(--bg,#f8fafc);z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;inset:54px 0 0}.preview-loading-card{flex-direction:column;align-items:center;gap:18px;display:flex}.preview-logo-wrap{justify-content:center;align-items:center;width:80px;height:80px;display:flex;position:relative}.preview-logo{object-fit:contain;opacity:0;border-radius:50%;width:52px;height:52px;animation:.45s cubic-bezier(.22,1,.36,1) .1s forwards previewLogoIn;transform:scale(.85)}.preview-logo-ring{border:2.5px solid rgba(var(--ink), .06);border-top-color:rgba(var(--ink), .32);border-radius:50%;animation:.75s linear infinite previewSpin;position:absolute;inset:0}@keyframes previewLogoIn{to{opacity:1;transform:scale(1)}}@keyframes previewSpin{to{transform:rotate(360deg)}}.preview-loading-title{color:var(--text,#0f172a);letter-spacing:-.3px;font-size:15px;font-weight:800}.preview-loading-url{color:rgba(var(--ink), .38);text-overflow:ellipsis;white-space:nowrap;max-width:280px;font-size:12px;font-weight:600;overflow:hidden}.preview-frame{background:var(--bg-2);border:none;flex:1;width:100%}@media (max-width:768px){.preview-bar{gap:4px;height:48px;padding:0 8px}.preview-btn-back{border-radius:8px;justify-content:center;gap:0;min-width:34px;padding:6px 8px}.preview-btn-back .preview-btn-label{display:none}.preview-btn-external{border-radius:8px;justify-content:center;gap:0;min-width:34px;padding:6px 8px}.preview-btn-external .preview-btn-label{display:none}.preview-seo-btn{border-radius:8px;justify-content:center;gap:0;min-width:34px;padding:6px 8px}.preview-seo-btn .preview-btn-label{display:none}.preview-right-group{gap:4px}.preview-seo-overlay{width:calc(100% - 20px);bottom:12px;left:50%}.seo-score-panel{width:100%;padding:12px 10px}.seo-rings{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.seo-ring-item{padding:6px 2px}.seo-ring-label{font-size:10px}.preview-nav-btn{border-radius:8px;width:30px;height:30px}.preview-title{max-width:140px;font-size:12.5px}.preview-domain{max-width:120px;font-size:10px}.preview-loading{inset:48px 0 0}.preview-logo-wrap{width:72px;height:72px}.preview-logo{width:46px;height:46px}}@media (max-width:380px){.preview-title{max-width:100px}.preview-domain{display:none}}#techSheet.ui-sheet{z-index:99999;display:none;position:fixed;inset:0}#techSheet.ui-sheet.is-open{display:block}#techSheet .ui-overlay{position:absolute;inset:0;-webkit-backdrop-filter:blur(10px)!important;background:#0a011847!important}#techSheet .ui-panel{width:min(760px,100vw - 20px);max-height:min(78vh,720px);position:absolute;bottom:0;left:50%;transform:translate(-50%);padding-bottom:max(14px, env(safe-area-inset-bottom))!important;background:#eef0f3f2!important;border:1px solid #141e321a!important;border-bottom:0!important;border-radius:22px 22px 0 0!important;overflow:hidden!important;box-shadow:0 -30px 80px #00000038,inset 0 2px #ffffffa6!important}#techSheet .ui-head{background:#eef0f3fa!important;border-bottom:1px solid #141e321a!important;justify-content:space-between!important;align-items:center!important;gap:12px!important;padding:14px 16px 10px!important;display:flex!important}#techSheet .ui-title h3{letter-spacing:.2px!important;color:#12161eeb!important;margin:0!important;font-size:16px!important;font-weight:800!important}#techSheet .ui-title p{color:#12161e9e!important;margin:0!important;font-size:12px!important}#techSheet .ui-close{color:#12161ecc!important;cursor:pointer!important;background:#ffffffb3!important;border:1px solid #141e321a!important;border-radius:12px!important;justify-content:center!important;align-items:center!important;width:38px!important;height:38px!important;display:inline-flex!important;box-shadow:0 10px 24px #00000014!important}#techSheet .ui-close:hover{transform:translateY(-1px);background:#ffffffe6!important}#techSheet .ui-close:active{transform:translateY(0)}#techSheet .ui-body{color:#12161ee6!important;background:#eef0f3f2!important;max-height:calc(min(78vh,720px) - 120px)!important;padding:14px 16px 16px!important;overflow:auto!important}#techSheet .tech-list{flex-wrap:wrap!important;gap:10px!important;margin-top:6px!important;display:flex!important}#techSheet .tech-item{appearance:none!important;color:#12161edb!important;cursor:pointer!important;-webkit-user-select:none!important;user-select:none!important;background:#fff9!important;border:1px solid #141e321a!important;border-radius:999px!important;justify-content:space-between!important;align-items:center!important;gap:10px!important;padding:10px 12px!important;font-size:12px!important;font-weight:700!important;transition:transform .15s,background .15s,border-color .15s,box-shadow .15s!important;display:inline-flex!important;box-shadow:0 10px 24px #0000000f!important}#techSheet .tech-item:hover{background:#ffffffd9!important;border-color:#141e3229!important;transform:translateY(-1px)!important}#techSheet .tech-item span:last-child{opacity:.7!important;font-weight:800!important}#techSheet .tech-item[aria-pressed=true]{background:#7c5cff24!important;border-color:#7c5cff8c!important;box-shadow:0 10px 26px #7c5cff24,inset 0 0 0 2px #7c5cff1a!important}#techSheet .tech-item[aria-pressed=true] span:last-child{color:#7c5cfff2!important;opacity:.95!important}#techSheet .tech-item:focus-visible,#techSheet .ui-close:focus-visible{outline:0!important;box-shadow:0 0 0 3px #7c5cff40!important}body.ui-lock{touch-action:none!important;overflow:hidden!important}@media (max-width:860px){#techSheet .ui-panel{width:100vw!important;max-width:100vw!important;max-height:calc(100vh - 64px)!important;padding-bottom:max(14px, env(safe-area-inset-bottom))!important;border-radius:22px 22px 0 0!important;bottom:0!important;left:0!important;right:0!important;transform:none!important}#techSheet .ui-head{z-index:2!important;position:sticky!important;top:0!important}#techSheet .ui-body{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 170px)!important}}[data-sanity-preload]{visibility:hidden;pointer-events:none;height:0;position:absolute;overflow:hidden}[data-sanity-loaded]{animation:.35s both sanityFadeIn;visibility:visible!important;pointer-events:auto!important;height:auto!important;position:relative!important;overflow:visible!important}.sanity-skeleton{flex-direction:column;gap:14px;padding:0;display:flex}.sanity-skeleton-line{background:linear-gradient(90deg,#ffffff0f 25%,#ffffff1f 50%,#ffffff0f 75%) 0 0/800px 100%;border-radius:8px;height:14px;animation:1.6s infinite skeletonShimmer}.sanity-skeleton-block{background:linear-gradient(90deg,#ffffff0a 25%,#ffffff14 50%,#ffffff0a 75%) 0 0/800px 100%;border-radius:16px;animation:1.6s infinite skeletonShimmer}.hero-skeleton .sanity-skeleton-line:first-child{border-radius:999px;width:140px;height:28px}.hero-skeleton .sanity-skeleton-line:nth-child(2){width:70%;height:36px}.hero-skeleton .sanity-skeleton-line:nth-child(3){width:90%;height:14px}.hero-skeleton .sanity-skeleton-line:nth-child(4){width:60%;height:14px}.about-skeleton .sanity-skeleton-block{height:120px;margin-bottom:12px}.about-skeleton .sanity-skeleton-line:nth-child(2){width:50%}.about-skeleton .sanity-skeleton-line:nth-child(3){width:80%}.about-skeleton .sanity-skeleton-line:nth-child(4){width:65%}.contact-skeleton{flex-direction:column;gap:10px;display:flex}.contact-skeleton .sanity-skeleton-block{border-radius:16px;height:68px}.timeline-skeleton{flex-direction:column;gap:16px;margin-top:20px;display:flex}.timeline-skeleton .sanity-skeleton-block{border-radius:14px;height:80px}.sanity-skeleton-container{transition:opacity .2s}.sanity-skeleton-container[data-skeleton-hidden]{opacity:0;pointer-events:none;height:0;position:absolute;overflow:hidden}#skillsSkeleton .sanity-skeleton{gap:20px}#skillsSkeleton .sanity-skeleton-block:first-child,#skillsSkeleton .sanity-skeleton-block:nth-child(2){border-radius:16px;height:180px}#skillsSkeleton .sanity-skeleton-block:nth-child(3){border-radius:16px;height:140px}.header-burger{border-radius:var(--r-xs);background:rgba(var(--ink), .07);border:1.5px solid rgba(var(--ink), .1);width:38px;height:38px;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .18s var(--ease), border-color .18s var(--ease), transform .18s var(--ease);justify-content:center;align-items:center;margin-left:auto;display:flex}.header-burger:hover{background:rgba(var(--ink), .1);border-color:rgba(var(--ink), .14)}.header-burger:active{background:rgba(var(--ink), .12);transform:scale(.92)}.sidebar-drawer-overlay{z-index:10001;pointer-events:none;visibility:hidden;position:fixed;inset:0}.sidebar-drawer-overlay.active{pointer-events:auto;visibility:visible}.sidebar-drawer-overlay:before{content:"";-webkit-backdrop-filter:blur(6px);opacity:0;transition:opacity .3s var(--ease);background:#00000073;position:absolute;inset:0}.sidebar-drawer-overlay.active:before{opacity:1}.sidebar-drawer{background:var(--bg-2);border-right:1px solid rgba(var(--ink), .06);z-index:1;flex-direction:column;width:290px;max-width:82vw;transition:transform .35s cubic-bezier(.32,.72,0,1);display:flex;position:absolute;top:0;bottom:0;left:0;overflow:hidden;transform:translate(-105%);box-shadow:6px 0 24px #0000001a,20px 0 60px #0000000d}.sidebar-drawer.open{transform:translate(0)}.sidebar-drawer-head{padding:18px 18px 16px;padding-top:calc(18px + env(safe-area-inset-top));border-bottom:1px solid rgba(var(--ink), .07);background:rgba(var(--ink), .02);justify-content:space-between;align-items:center;display:flex}.sidebar-drawer-brand{align-items:center;gap:12px;display:flex}.sidebar-drawer-logo{object-fit:contain;flex-shrink:0;width:38px;height:38px}.sidebar-drawer-title{letter-spacing:-.3px;color:var(--text);font-size:16px;font-weight:850;line-height:1.2}.sidebar-drawer-subtitle{color:var(--text-3);text-transform:uppercase;letter-spacing:.6px;margin-top:2px;font-size:11px;font-weight:650}.sidebar-drawer-head-actions{align-items:center;gap:6px;display:flex}.sidebar-drawer-close{border-radius:var(--r-xs);background:rgba(var(--ink), .06);border:1px solid rgba(var(--ink), .08);width:36px;height:36px;color:var(--text-2);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .18s var(--ease), color .18s var(--ease), transform .18s var(--ease);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-drawer-close:hover{background:rgba(var(--ink), .1);color:var(--text)}.sidebar-drawer-close:active{transform:scale(.92)}.sidebar-drawer-nav{flex-direction:column;flex:1;gap:4px;padding:14px 12px 32px;display:flex;overflow-y:auto}.sidebar-drawer-link{border-radius:var(--r-sm);-webkit-tap-highlight-color:transparent;transition:background .2s var(--ease), transform .15s var(--ease);align-items:center;gap:12px;padding:10px 12px;text-decoration:none;display:flex}.sidebar-drawer-link-icon{width:20px;height:20px;color:var(--text-3);transition:color .2s var(--ease);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-drawer-link-dot{background:var(--text-3);border-radius:50%;width:6px;height:6px}.sidebar-drawer-link-label{letter-spacing:-.15px;color:var(--text-2);transition:color .2s var(--ease);flex:1;font-size:15px;font-weight:600}.sidebar-drawer-link-chevron{color:var(--text-3);opacity:0;transition:opacity .2s var(--ease), transform .2s var(--ease);flex-shrink:0;transform:translate(-4px)}.sidebar-drawer-link:hover{background:rgba(var(--ink), .05)}.sidebar-drawer-link:hover .sidebar-drawer-link-label,.sidebar-drawer-link:hover .sidebar-drawer-link-icon{color:var(--text)}.sidebar-drawer-link:hover .sidebar-drawer-link-chevron{opacity:.6;transform:translate(0)}.sidebar-drawer-link:active{transform:scale(.97)}.sidebar-drawer-link.active{background:rgba(var(--ink), .06)}.sidebar-drawer-link.active .sidebar-drawer-link-icon{color:var(--text)}.sidebar-drawer-link.active .sidebar-drawer-link-label{color:var(--text);font-weight:700}.sidebar-drawer-link.active .sidebar-drawer-link-chevron{opacity:.5;transform:translate(0)}@media (min-width:768px){.header-burger{display:none}.sidebar-drawer-overlay{display:none!important}}.nav-more-wrapper{display:none;position:relative}@media (min-width:768px){.nav-more-wrapper{align-items:center;display:flex}.nav-more-btn{border-radius:var(--r-xs);width:36px;height:36px;color:var(--text-2);cursor:pointer;transition:background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease), transform .15s var(--ease);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:flex}.nav-more-btn:hover{background:rgba(var(--ink), .06);color:var(--text)}.nav-more-btn.active{background:rgba(var(--ink), .08);border-color:rgba(var(--ink), .1);color:var(--text)}.nav-more-btn:active{transform:scale(.93)}.nav-popover{background:var(--bg-2);border:1px solid rgba(var(--ink), .1);border-radius:var(--r-sm);opacity:0;visibility:hidden;transform-origin:100% 0;min-width:200px;transition:opacity .15s var(--ease), transform .15s var(--ease), visibility 0s linear .15s;padding:4px;position:absolute;top:calc(100% + 8px);right:-4px;transform:translateY(-4px);box-shadow:0 1px 2px #0000000a,0 4px 12px #0000000f,0 16px 40px #0000000f}.nav-popover.open{opacity:1;visibility:visible;transition:opacity .2s var(--ease), transform .2s var(--ease), visibility 0s linear 0s;transform:translateY(0)}.nav-popover-header{letter-spacing:.4px;text-transform:uppercase;color:var(--text-3);-webkit-user-select:none;user-select:none;padding:8px 10px 5px;font-size:11px;font-weight:700}.nav-popover-link{letter-spacing:-.1px;color:var(--text);transition:background .12s var(--ease);border-radius:8px;align-items:center;gap:8px;padding:9px 10px;font-size:13.5px;font-weight:600;text-decoration:none;display:flex}.nav-popover-link:hover{background:rgba(var(--ink), .05)}.nav-popover-link.active{background:rgba(var(--ink), .06);font-weight:700}}.site-footer{display:none}@media (min-width:768px){.site-footer{text-align:center;pointer-events:none;z-index:990;width:max-content;box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border:none;display:block;position:fixed;bottom:14px;left:50%;right:auto;transform:translate(-50%)}.site-footer-inner{pointer-events:auto;box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border:none;align-items:center;gap:5px;display:inline-flex}.site-footer-copy{color:rgba(var(--ink), .28);letter-spacing:.1px;font-size:11px;font-weight:500}.site-footer-dot{color:rgba(var(--ink), .18);font-size:11px}.site-footer-version{color:rgba(var(--ink), .28);letter-spacing:.1px;background:0 0;border:none;padding:0;font-size:11px;font-weight:600}.site-footer-link{color:rgba(var(--ink), .34);letter-spacing:.1px;transition:color .16s var(--ease);font-size:11px;font-weight:600}.site-footer-link:hover{color:rgba(var(--ink), .6)}}.sidebar-drawer-footer{border-top:1px solid rgba(var(--ink), .06);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding:16px 18px;display:flex}.sidebar-drawer-footer-meta{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.sidebar-drawer-version{letter-spacing:.2px;color:var(--text-3);background:rgba(var(--ink), .04);border:1px solid rgba(var(--ink), .06);border-radius:6px;padding:3px 8px;font-size:11px;font-weight:700}.sidebar-drawer-copy{color:var(--text-3);letter-spacing:-.1px;font-size:11px;font-weight:600}.sidebar-drawer-legal{color:var(--text-2);transition:color .16s var(--ease);font-size:12px;font-weight:700}.sidebar-drawer-legal:hover,.sidebar-drawer-legal.active{color:var(--text)}#blog .view-inner{min-height:calc(100dvh - 70px - 70px - env(safe-area-inset-top) - env(safe-area-inset-bottom));flex-direction:column;justify-content:center;display:flex}@media (min-width:768px){#blog .view-inner{min-height:calc(100dvh - 192px)}#blog .view-header{margin-bottom:var(--s-12)}#blog .view-inner{padding-top:var(--s-20);padding-bottom:var(--s-12)}}@media (min-width:768px) and (max-width:1180px) and (orientation:landscape){#blog .view-inner{min-height:calc(100dvh - 136px);padding-top:var(--s-24);padding-bottom:calc(var(--s-24) + 20px);justify-content:flex-start}}.blog-soon{flex-direction:column;gap:12px;max-width:480px;display:flex}.blog-soon-card{border:1px solid rgba(var(--ink),.09);border-radius:var(--r-lg);box-shadow:0 1px 4px rgba(var(--ink),.04);background:#ffffffeb;padding:24px 22px}.blog-soon-icon{background:rgba(var(--ink),.05);border:1px solid rgba(var(--ink),.09);width:48px;height:48px;color:var(--text-2);border-radius:13px;justify-content:center;align-items:center;margin-bottom:14px;display:flex}.blog-soon-title{letter-spacing:-.4px;color:var(--text);margin-bottom:8px;font-size:18px;font-weight:900}.blog-soon-text{color:var(--text-2);margin:0;font-size:13px;line-height:1.65}.blog-soon-topics{flex-wrap:wrap;gap:6px;display:flex}.blog-soon-topic{color:var(--text-2);border:1px solid rgba(var(--ink),.09);border-radius:var(--r-full);box-shadow:0 1px 3px rgba(var(--ink),.04);background:#ffffffeb;padding:4px 11px;font-size:11.5px;font-weight:700}#impressum .view-inner{padding-top:clamp(24px,5vw,52px);padding-bottom:clamp(36px,7vw,88px)}.legal-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.legal-card{background:var(--card-bg);border:1px solid rgba(var(--ink), .09);border-radius:var(--r-lg);box-shadow:0 1px 4px rgba(var(--ink), .04);padding:24px 22px}.legal-card--notice{background:linear-gradient(135deg, rgba(var(--ink), .035), rgba(var(--ink), .012)), var(--glass-bg-2);grid-column:1/-1}.legal-card-title{letter-spacing:-.35px;color:var(--text);margin-bottom:14px;font-size:18px;font-weight:900}.legal-note{color:var(--text-2);font-size:14px;line-height:1.7}.legal-list{gap:14px;display:grid}.legal-row{gap:4px;display:grid}.legal-label{letter-spacing:.32px;text-transform:uppercase;color:var(--text-3);font-size:11px;font-weight:800}.legal-value{color:var(--text);font-size:15px;font-weight:600;line-height:1.65}.legal-value.is-muted{color:var(--text-3)}.legal-value a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:rgba(var(--ink), .22);-webkit-text-decoration-color:rgba(var(--ink), .22);-webkit-text-decoration-color:rgba(var(--ink), .22);text-decoration-color:rgba(var(--ink), .22);text-underline-offset:3px}.legal-value a:hover{-webkit-text-decoration-color:rgba(var(--ink), .5);-webkit-text-decoration-color:rgba(var(--ink), .5);-webkit-text-decoration-color:rgba(var(--ink), .5);text-decoration-color:rgba(var(--ink), .5)}@media (min-width:768px) and (max-width:1180px) and (orientation:landscape){.legal-grid{grid-template-columns:1fr}}@media (max-width:767px){.legal-grid{grid-template-columns:1fr;gap:12px}.legal-card{padding:20px 18px}.legal-card-title{font-size:17px}.legal-note,.legal-value{font-size:14px}}#not-found .view-inner,#error-page .view-inner{flex-direction:column;justify-content:center;align-items:center;display:flex}@media (max-width:767px){.ep-mobile{display:flex}.ep-desktop{display:none}#not-found .view-inner,#error-page .view-inner{min-height:calc(100dvh - 64px - 70px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:var(--s-24) var(--s-20)}.ep-mobile{text-align:center;width:100%;animation:fadeInUp .32s var(--ease) both;flex-direction:column;align-items:center}.ep-m-icon-wrap{background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);width:68px;height:68px;color:var(--text-2);border-radius:20px;flex-shrink:0;justify-content:center;align-items:center;margin-bottom:22px;display:flex}.ep-m-code{letter-spacing:1.4px;text-transform:uppercase;color:var(--text-3);margin:0 0 8px;font-size:10.5px;font-weight:800}.ep-m-title{letter-spacing:-.4px;color:var(--text);margin:0 0 10px;font-size:22px;font-weight:860;line-height:1.15}.ep-m-desc{color:var(--text-2);max-width:280px;margin:0 0 28px;font-size:14px;line-height:1.65}.ep-m-digest{color:var(--text-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-full);margin-bottom:18px;padding:4px 12px;font-family:ui-monospace,SF Mono,monospace;font-size:10px;font-weight:700}.ep-m-actions{flex-direction:column;gap:10px;width:100%;display:flex}.ep-m-btn-fill,.ep-m-btn-ghost{border-radius:var(--r-md);letter-spacing:-.2px;cursor:pointer;width:100%;transition:transform .12s var(--ease), opacity .12s var(--ease);justify-content:center;align-items:center;gap:8px;padding:15px 20px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.ep-m-btn-fill{background:var(--text);color:var(--bg);border:none}.ep-m-btn-ghost{background:var(--bg-2);color:var(--text-2);border:1px solid rgba(var(--ink), .12)}.ep-m-btn-fill:active{opacity:.82;transform:scale(.98)}.ep-m-btn-ghost:active{background:var(--bg-2);transform:scale(.98)}}@media (min-width:768px){.ep-mobile{display:none}.ep-desktop{display:flex}#not-found .view-inner,#error-page .view-inner{min-height:calc(100dvh - 192px);padding-top:var(--s-64);padding-bottom:var(--s-64)}.ep-desktop{width:100%;max-width:460px;animation:fadeInUp .36s var(--ease) both;flex-direction:column;align-items:center}.ep-d-card{background:var(--card-bg);border:1px solid rgba(var(--ink), .09);border-radius:var(--r-xl);width:100%;box-shadow:0 2px 8px rgba(var(--ink), .05), 0 10px 32px rgba(var(--ink), .08), inset 0 1px 0 var(--glass-bg-2);text-align:center;padding:42px 38px 38px;position:relative;overflow:hidden}.ep-d-watermark{letter-spacing:-8px;color:var(--text);opacity:.032;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:0;font-size:190px;font-weight:900;line-height:1;position:absolute;top:-12px;right:-6px}.ep-d-card-body{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative}.ep-d-badge{border-radius:var(--r-full);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .1);letter-spacing:.9px;text-transform:uppercase;color:var(--text-2);align-items:center;gap:7px;margin-bottom:22px;padding:5px 13px;font-size:10.5px;font-weight:800;display:inline-flex}.ep-d-badge-dot{opacity:.45;background:currentColor;border-radius:50%;flex-shrink:0;width:5px;height:5px}.ep-d-title{letter-spacing:-.9px;color:var(--text);margin:0 0 16px;font-size:32px;font-weight:900;line-height:1.08}.ep-d-rule{background:rgba(var(--ink), .1);border-radius:2px;width:28px;height:2px;margin:0 auto 18px}.ep-d-desc{color:var(--text-2);max-width:340px;margin:0 0 28px;font-size:14.5px;line-height:1.72}.ep-d-digest{letter-spacing:.3px;color:var(--text-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-full);margin-bottom:22px;padding:5px 13px;font-family:ui-monospace,SF Mono,monospace;font-size:10.5px;font-weight:700}.ep-d-actions{justify-content:center;align-items:center;gap:8px;display:flex}.ep-d-actions button.hero-btn-primary{cursor:pointer;border:none}.ep-d-hint{color:var(--text-3);margin-top:16px;font-size:12px;font-weight:600}.ep-d-hint a{color:var(--text-2);text-decoration:underline;-webkit-text-decoration-color:rgba(var(--ink), .22);-webkit-text-decoration-color:rgba(var(--ink), .22);-webkit-text-decoration-color:rgba(var(--ink), .22);text-decoration-color:rgba(var(--ink), .22);text-underline-offset:3px;transition:color .15s,text-decoration-color .15s}.ep-d-hint a:hover{color:var(--text);-webkit-text-decoration-color:rgba(var(--ink), .5);-webkit-text-decoration-color:rgba(var(--ink), .5);-webkit-text-decoration-color:rgba(var(--ink), .5);text-decoration-color:rgba(var(--ink), .5)}}@media (min-width:768px) and (max-width:1180px) and (orientation:landscape){#not-found .view-inner,#error-page .view-inner{min-height:calc(100dvh - 136px);padding-top:var(--s-32);padding-bottom:var(--s-40)}}.page-content{max-width:720px;margin:0 auto;padding:3rem 0 6rem}.page-content__title{letter-spacing:-.03em;margin-bottom:2.5rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.1}.page-content__body{color:var(--text-secondary,#9ca3af);font-size:1.0625rem;line-height:1.75}.page-content__body h2{color:var(--text-primary,#f9fafb);letter-spacing:-.02em;margin:2.5rem 0 .75rem;font-size:1.5rem;font-weight:600}.page-content__body h3{color:var(--text-primary,#f9fafb);margin:2rem 0 .5rem;font-size:1.125rem;font-weight:600}.page-content__body p{margin-bottom:1.25rem}.page-content__body ul,.page-content__body ol{margin-bottom:1.25rem;padding-left:1.5rem}.page-content__body li{margin-bottom:.4rem}.page-content__body blockquote{border-left:3px solid var(--accent,#6366f1);color:var(--text-primary,#f9fafb);margin:1.5rem 0;padding-left:1.25rem;font-style:italic}.page-content__body a{color:var(--accent,#6366f1);text-underline-offset:3px;text-decoration:underline}.page-content__body code{background:var(--surface-2,#ffffff0f);border-radius:4px;padding:.15em .4em;font-family:monospace;font-size:.9em}.desktop-only{display:grid}.mobile-only{display:none}@media (max-width:640px){.desktop-only{display:none!important}.mobile-only{display:flex!important}}.themes-page{flex-direction:column;gap:32px;max-width:680px;margin:0 auto;padding:32px 16px 80px;display:flex}@media (max-width:640px){.themes-page{gap:28px;padding:20px 16px 100px}}.themes-header{flex-direction:column;gap:5px;display:flex}.themes-title{letter-spacing:-.5px;color:var(--text);margin:0;font-size:26px;font-weight:900}.themes-subtitle{color:var(--text-3);margin:0;font-size:14px;font-weight:600}@media (max-width:640px){.themes-title{font-size:22px}}.themes-section{flex-direction:column;gap:12px;display:flex}.themes-section-label{letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);justify-content:space-between;align-items:center;padding:0 2px;font-size:12px;font-weight:800;display:flex}.themes-section-current{letter-spacing:0;text-transform:none;color:var(--accent);background:rgba(var(--ink), .05);border:1px solid rgba(var(--ink), .08);border-radius:999px;padding:3px 10px;font-size:11px;font-weight:750}.themes-grid{grid-template-columns:repeat(3,1fr);gap:10px}.theme-card{cursor:pointer;border-radius:var(--r-md);text-align:left;transition:transform .15s var(--ease);-webkit-tap-highlight-color:transparent;background:0 0;border:none;outline:none;flex-direction:column;gap:8px;padding:0;display:flex}.theme-card:hover{transform:translateY(-2px)}.theme-card:active{transform:scale(.97)}.theme-card-preview{aspect-ratio:4/3;border-radius:var(--r-md);width:100%;transition:border-color .15s var(--ease), box-shadow .15s var(--ease);border:2px solid #0000;position:relative;overflow:hidden;box-shadow:0 2px 10px #00000014}.theme-card--active .theme-card-preview{border-color:var(--accent);box-shadow:0 0 0 3px rgba(var(--ink), .06), 0 4px 16px #0000001f}.tcp-bar{align-items:center;gap:5px;padding:6px 8px;display:flex}.tcp-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.tcp-line{border-radius:4px;flex:1;height:4px}.tcp-line--short{flex:0 0 24px}.tcp-body{flex-direction:column;gap:5px;padding:6px 8px;display:flex}.tcp-card{border-radius:6px;align-items:center;gap:6px;padding:6px 7px;display:flex}.tcp-card-accent{border-radius:4px;flex-shrink:0;width:16px;height:16px}.tcp-card-lines{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.tcp-card-line{opacity:.7;border-radius:4px;height:4px}.tcp-card-line--sub{opacity:.4;width:60%}.tcp-btn{border-radius:4px;width:50px;height:14px}.tcp-check{background:var(--accent);border-radius:50%;place-items:center;width:22px;height:22px;display:grid;position:absolute;top:7px;right:7px;box-shadow:0 2px 8px #00000040}.theme-card-label{flex-direction:column;gap:1px;padding:0 2px;display:flex}.theme-card-name{color:var(--text);letter-spacing:-.2px;font-size:13px;font-weight:800}.theme-card-desc{color:var(--text-3);font-size:11px;font-weight:600}.theme-list{background:var(--card-bg);border-radius:var(--r-lg);border:1px solid rgba(var(--ink), .08);flex-direction:column;overflow:hidden}.tl-row{border:none;border-bottom:1px solid rgba(var(--ink), .07);cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;background:0 0;outline:none;align-items:center;gap:14px;width:100%;padding:14px 16px;transition:background .12s;display:flex}.tl-row:last-child{border-bottom:none}.tl-row:active{background:rgba(var(--ink), .05)}.tl-swatch{border:1px solid rgba(var(--ink), .1);border-radius:50%;flex-shrink:0;width:44px;height:44px;display:flex;overflow:hidden}.tl-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.tl-name{color:var(--text);letter-spacing:-.2px;font-size:15px;font-weight:750}.tl-desc{color:var(--text-3);font-size:12px;font-weight:550}.tl-check{width:24px;height:24px;color:var(--text-3);flex-shrink:0;place-items:center;display:grid}.tl-check--active{color:var(--accent)}.radius-grid{grid-template-columns:repeat(4,1fr);gap:10px}.radius-card{background:var(--card-bg);cursor:pointer;border-radius:var(--r-md);transition:border-color .15s var(--ease), transform .15s var(--ease);-webkit-tap-highlight-color:transparent;border:2px solid #0000;outline:none;flex-direction:column;align-items:center;gap:10px;padding:16px 12px;display:flex}.radius-card:hover{transform:translateY(-2px)}.radius-card--active{border-color:var(--accent);background:rgba(var(--ink), .03)}.radius-preview{background:var(--accent);opacity:.85;width:36px;height:36px}.radius-label{color:var(--text-2);text-align:center;font-size:12px;font-weight:750}.radius-card--active .radius-label{color:var(--accent)}.font-grid{grid-template-columns:repeat(3,1fr);gap:10px}.font-card{background:var(--card-bg);cursor:pointer;border-radius:var(--r-md);transition:border-color .15s var(--ease), transform .15s var(--ease);-webkit-tap-highlight-color:transparent;border:2px solid #0000;outline:none;flex-direction:column;align-items:center;gap:6px;padding:18px 12px 14px;display:flex}.font-card:hover{transform:translateY(-2px)}.font-card--active{border-color:var(--accent);background:rgba(var(--ink), .03)}.font-sample{color:var(--text);font-size:32px;font-weight:700;line-height:1}.font-name{color:var(--text-2);font-size:13px;font-weight:800}.font-card--active .font-name{color:var(--accent)}.font-meta{color:var(--text-3);font-size:11px;font-weight:600}.seg-control{background:rgba(var(--ink), .06);border-radius:var(--r-md);flex-direction:row;gap:3px;padding:4px}.seg-btn{border-radius:calc(var(--r-md) - 4px);cursor:pointer;color:var(--text-2);-webkit-tap-highlight-color:transparent;background:0 0;border:none;outline:none;flex-direction:column;flex:1;align-items:center;gap:5px;padding:10px 4px;font-size:12px;font-weight:700;transition:background .15s,color .15s,box-shadow .15s;display:flex}.seg-btn--active{background:var(--card-bg);color:var(--accent);box-shadow:0 1px 6px rgba(var(--ink), .12)}.seg-radius-box{background:var(--accent);opacity:.75;width:24px;height:24px;transition:opacity .15s}.seg-btn--active .seg-radius-box{opacity:1}.seg-font-sample{color:var(--text);font-size:22px;font-weight:700;line-height:1}.themes-reset{justify-content:center;padding-top:4px;display:flex}.themes-reset-btn{border:1px solid rgba(var(--ink), .12);color:var(--text-3);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;padding:11px 28px;font-size:13px;font-weight:750;transition:border-color .15s,color .15s,background .15s}.themes-reset-btn:hover{border-color:rgba(var(--ink), .24);color:var(--text-2);background:rgba(var(--ink), .04)}@media (max-width:640px){.themes-reset-btn{text-align:center;width:100%}}.fvtp-overlay{--fvtp-bg:#0f172ae0;--fvtp-card:#1a2236;--fvtp-border:#ffffff1a;--fvtp-text:#f1f5f9;--fvtp-text2:#94a3b8;--fvtp-text3:#64748b;--fvtp-surface:#ffffff0f;--fvtp-accent:#818cf8;z-index:9000;background:var(--fvtp-bg);-webkit-backdrop-filter:blur(20px)saturate(1.6);justify-content:center;align-items:center;padding:20px;animation:.3s both fvtp-bg-in;display:flex;position:fixed;inset:0}.fvtp-overlay--out{pointer-events:none;animation:.4s forwards fvtp-bg-out}.fvtp-card{background:var(--fvtp-card);border:1px solid var(--fvtp-border);border-radius:28px;flex-direction:column;gap:26px;width:100%;max-width:560px;padding:32px 28px 28px;animation:.52s cubic-bezier(.34,1.4,.64,1) 60ms both fvtp-card-in;display:flex;box-shadow:0 48px 96px #0000008c,inset 0 0 0 1px #ffffff0a}.fvtp-card--out{animation:.38s cubic-bezier(.4,0,1,1) forwards fvtp-card-out}.fvtp-handle{display:none}.fvtp-header-top{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.fvtp-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--fvtp-accent);margin:0 0 6px;font-size:11px;font-weight:800}.fvtp-title{letter-spacing:-.6px;color:var(--fvtp-text);margin:0 0 5px;font-size:26px;font-weight:900;line-height:1.1}.fvtp-skip{color:#94a3b8;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;background:#ffffff14;border:1px solid #ffffff29;border-radius:999px;outline:none;flex-shrink:0;align-items:center;gap:5px;padding:8px 14px 8px 11px;font-family:inherit;font-size:12px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:flex}.fvtp-skip:hover{color:#cbd5e1;background:#ffffff24;border-color:#ffffff47}.fvtp-skip:active{transform:scale(.96)}.fvtp-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.fvtp-theme{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:18px;outline:none;flex-direction:column;gap:9px;padding:0;transition:transform .2s cubic-bezier(.34,1.56,.64,1);display:flex}.fvtp-theme:hover{transform:translateY(-3px)scale(1.01)}.fvtp-theme:active{transform:scale(.95)}.fvtp-theme--pulse .fvtp-preview{animation:.3s cubic-bezier(.34,1.56,.64,1) fvtp-pulse}.fvtp-preview{aspect-ratio:16/11;border:2.5px solid #ffffff14;border-radius:14px;width:100%;transition:border-color .18s,box-shadow .18s;position:relative;overflow:hidden;box-shadow:0 4px 14px #00000038}.fvtp-theme--active .fvtp-preview{border-color:var(--fvtp-accent);box-shadow:0 0 0 3.5px #818cf838,0 8px 28px #00000052}.fvtp-pv-bar{align-items:center;gap:5px;padding:7px 8px;display:flex}.fvtp-pv-logo{border-radius:3px;flex-shrink:0;width:10px;height:10px}.fvtp-pv-lines{flex-direction:column;flex:1;gap:2px;display:flex}.fvtp-pv-line{border-radius:3px;height:3px}.fvtp-pv-line--s{width:45%}.fvtp-pv-body{flex-direction:column;gap:5px;padding:6px 8px 7px;display:flex}.fvtp-pv-hero{flex-direction:column;gap:3px;display:flex}.fvtp-pv-cards{gap:4px;margin-top:1px;display:flex}.fvtp-pv-card{border-radius:5px;flex-direction:column;flex:1;gap:3px;padding:4px 5px;display:flex}.fvtp-check{background:var(--fvtp-accent);border-radius:50%;place-items:center;width:22px;height:22px;animation:.25s cubic-bezier(.34,1.56,.64,1) both fvtp-check-pop;display:grid;position:absolute;top:6px;right:6px;box-shadow:0 2px 8px #0006}.fvtp-theme-name{color:#94a3b8;letter-spacing:-.1px;text-align:center;font-size:13px;font-weight:800;transition:color .15s}.fvtp-theme--active .fvtp-theme-name{color:#818cf8}.fvtp-confirm{background:var(--fvtp-accent);color:#fff;letter-spacing:-.2px;cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:18px;justify-content:center;align-items:center;gap:8px;width:100%;padding:16px 20px;font-size:16px;font-weight:800;transition:opacity .15s,transform .15s,box-shadow .15s;display:flex;box-shadow:0 4px 24px #6366f166,inset 0 1px #ffffff26}.fvtp-confirm:hover{opacity:.88;transform:translateY(-1px);box-shadow:0 8px 32px #6366f180}.fvtp-confirm:active{opacity:1;transform:scale(.98)translateY(0)}@media (max-width:640px){.fvtp-overlay{-webkit-backdrop-filter:blur(10px)saturate(1.4);align-items:flex-end;padding:0}.fvtp-card{overscroll-behavior:contain;border-radius:26px 26px 0 0;gap:20px;max-width:100%;max-height:90dvh;padding:8px 16px 40px;animation:.46s cubic-bezier(.32,1.24,.5,1) 50ms both fvtp-sheet-in;overflow-y:auto;box-shadow:0 -24px 60px #00000080,inset 0 0 0 1px #ffffff0d}.fvtp-card--out{animation:.36s cubic-bezier(.4,0,1,1) forwards fvtp-sheet-out}.fvtp-handle{background:#ffffff2e;border-radius:999px;flex-shrink:0;width:38px;height:4px;margin:4px auto 8px;display:block}.fvtp-grid{grid-template-columns:repeat(2,1fr);gap:10px}.fvtp-preview{aspect-ratio:5/3;border-radius:16px}.fvtp-title{font-size:22px}.fvtp-theme-name{font-size:14px}.fvtp-theme-desc{font-size:11.5px}.fvtp-confirm{border-radius:20px;padding:17px 20px;font-size:17px}}@keyframes fvtp-bg-in{0%{opacity:0}to{opacity:1}}@keyframes fvtp-bg-out{0%{opacity:1}to{opacity:0}}@keyframes fvtp-card-in{0%{opacity:0;transform:scale(.86)translateY(28px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes fvtp-card-out{0%{opacity:1;transform:scale(1)translateY(0)}to{opacity:0;transform:scale(.92)translateY(20px)}}@keyframes fvtp-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fvtp-sheet-out{0%{transform:translateY(0)}to{transform:translateY(110%)}}@keyframes fvtp-check-pop{0%{opacity:0;transform:scale(.3)rotate(-20deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes fvtp-pulse{0%{transform:scale(1)}45%{transform:scale(.94)}to{transform:scale(1)}}
