:root,[data-theme=light]{color-scheme:light;--color-primary:#ea580c;--color-primary-dark:#c2410c;--color-primary-light:#f97316;--color-accent:#10b981;--color-text:#1c1917;--color-text-muted:#57534e;--color-bg:#f2f0e4;--color-surface:#ffffff;--color-border:#1c1917;--color-on-primary:#ffffff;--color-btn-primary:#ea580c;--color-btn-primary-hover:#c2410c;--color-tint:#e7e5d8;--color-tint-strong:#d6d3c4;--color-tag-bg:#e7e5d8;--color-tag-text:#1c1917;--color-info-bg:#d1fae5;--color-info-border:#1c1917;--color-info-text:#065f46;--color-err-bg:#fee2e2;--color-err-border:#1c1917;--color-err-text:#991b1b;--color-dot:rgba(28,25,23,0.1);--font-body:var(--font-inter),"Inter",system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",monospace;--fs-xs:0.75rem;--fs-sm:0.875rem;--fs-base:1rem;--fs-lg:1.125rem;--fs-xl:1.25rem;--fs-2xl:1.5rem;--fs-3xl:2rem;--fs-4xl:2.5rem;--space-xs:0.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2.5rem;--space-xl:4rem;--space-2xl:6rem;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--shadow-sm:2px 2px 0px 0px var(--color-border);--shadow-md:6px 6px 0px 0px var(--color-border);--shadow-primary:6px 6px 0px 0px var(--color-border);--focus-ring:0 0 0 4px rgba(234,88,12,0.4);--transition:all 0.15s cubic-bezier(0.175,0.885,0.32,1.275);--transition-slow:all 0.3s cubic-bezier(0.4,0,0.2,1)}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-primary:#ea580c;--color-primary-dark:#c2410c;--color-primary-light:#f97316;--color-accent:#10b981;--color-text:#f5f5f4;--color-text-muted:#a8a29e;--color-bg:#1c1917;--color-surface:#292524;--color-border:#44403c;--color-on-primary:#ffffff;--color-btn-primary:#ea580c;--color-btn-primary-hover:#c2410c;--color-tint:rgba(234,88,12,0.15);--color-tint-strong:rgba(234,88,12,0.3);--color-tag-bg:#44403c;--color-tag-text:#f5f5f4;--color-info-bg:rgba(16,185,129,0.1);--color-info-border:#44403c;--color-info-text:#6ee7b7;--color-err-bg:rgba(239,68,68,0.15);--color-err-border:#44403c;--color-err-text:#fca5a5;--color-dot:rgba(255,255,255,0.05);--shadow-primary:4px 4px 0px 0px #000000;--focus-ring:0 0 0 3px rgba(234,88,12,0.4)}}[data-theme=dark]{color-scheme:dark;--color-primary:#ea580c;--color-primary-dark:#c2410c;--color-primary-light:#f97316;--color-accent:#10b981;--color-text:#f5f5f4;--color-text-muted:#a8a29e;--color-bg:#1c1917;--color-surface:#292524;--color-border:#44403c;--color-on-primary:#ffffff;--color-btn-primary:#ea580c;--color-btn-primary-hover:#c2410c;--color-tint:rgba(234,88,12,0.15);--color-tint-strong:rgba(234,88,12,0.3);--color-tag-bg:#44403c;--color-tag-text:#f5f5f4;--color-info-bg:rgba(16,185,129,0.1);--color-info-border:#44403c;--color-info-text:#6ee7b7;--color-err-bg:rgba(239,68,68,0.15);--color-err-border:#44403c;--color-err-text:#fca5a5;--color-dot:rgba(255,255,255,0.05);--shadow-primary:4px 4px 0px 0px #000000;--focus-ring:0 0 0 3px rgba(234,88,12,0.4)}@media (max-width:480px){:root{--fs-3xl:1.75rem;--fs-2xl:1.375rem;--fs-xl:1.125rem;--fs-lg:1rem}}@media (min-width:1280px){:root{--fs-3xl:2.25rem;--fs-4xl:3rem}}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:var(--fs-base);line-height:1.7;color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:-64px;z-index:-1;pointer-events:none;background-image:radial-gradient(var(--color-dot) 2px,transparent 2px);background-size:32px 32px;animation:dot-drift 90s linear infinite}@keyframes dot-drift{to{transform:translate3d(32px,32px,0)}}::selection{background:var(--color-primary);color:var(--color-on-primary)}a{color:var(--color-primary);text-decoration:none;transition:var(--transition)}a:hover{color:var(--color-primary-dark)}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4{line-height:1.1;font-weight:900;color:var(--color-text);letter-spacing:-.02em;text-transform:uppercase}h1{font-size:var(--fs-3xl)}h2{font-size:var(--fs-2xl)}h3{font-size:var(--fs-xl)}p{margin-bottom:var(--space-sm)}ul{padding-left:1.2em}code{font-family:var(--font-mono);font-size:.875em;background:var(--color-tint);color:var(--color-primary-dark);padding:.15em .4em;border-radius:var(--radius-sm)}.container{max-width:100rem;margin-inline:auto;padding-inline:clamp(var(--space-md),4vw,var(--space-2xl))}.page{min-height:100vh;display:flex;flex-direction:column}main{flex:1 1;padding:var(--space-2xl) 0}.btn:focus-visible,.theme-toggle:focus-visible,a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.dock-header{position:sticky;top:0;z-index:50;display:flex;justify-content:center;pointer-events:none;padding:0;background:var(--color-bg);border-bottom:3px solid var(--color-border)}.dock{pointer-events:auto;position:relative;display:flex;align-items:center;width:100%}@media (prefers-reduced-motion:no-preference){.dock-inner{transition:padding .32s cubic-bezier(.4,0,.2,1)}.dock-brand{transition:padding .32s cubic-bezier(.4,0,.2,1),box-shadow .32s ease,transform .15s ease}.dock-progress{transition:opacity .2s ease}}.dock-inner{display:flex;align-items:center;gap:var(--space-sm);width:100%;max-width:100rem;margin-inline:auto;padding:var(--space-xs) clamp(var(--space-md),4vw,var(--space-2xl))}.dock-progress{position:absolute;inset:auto 0 0 0;height:3px;background:var(--color-primary);transform:scaleX(var(--scroll-progress,0));transform-origin:left;opacity:0;pointer-events:none}.dock-header[data-scrolled] .dock-progress{opacity:1}.dock-brand{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-btn-primary);color:var(--color-on-primary);font-weight:800;font-size:var(--fs-lg);white-space:nowrap;box-shadow:3px 3px 0 0 var(--color-border)}.dock-brand:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 0 var(--color-border);color:var(--color-on-primary)}.dock-header[data-scrolled] .dock-brand{padding:6px 10px;box-shadow:2px 2px 0 0 var(--color-border)}.dock-header[data-scrolled] .dock-brand:hover{box-shadow:3px 3px 0 0 var(--color-border)}.dock-brand-mark{display:none;align-items:center;justify-content:center;width:32px;height:32px;background:var(--color-btn-primary);color:var(--color-on-primary);border:3px solid var(--color-border);border-radius:var(--radius-sm);font-weight:800;flex-shrink:0}.dock-items{position:relative;min-width:0;margin-left:auto}.dock-nav{display:flex;gap:var(--space-xs)}.dock-item{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:42px;height:42px;padding-inline:8px;flex-shrink:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);will-change:transform;transition:color .15s,background-color .15s}.dock-item svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;transition:transform .12s ease-out}.dock-item:active svg{transform:scale(.82)}.dock-item:hover{color:var(--color-primary);background:var(--color-tint)}.dock-item[data-active]{background:var(--color-btn-primary);color:var(--color-on-primary)}.dock-item[data-active]:hover{background:var(--color-btn-primary-hover);color:var(--color-on-primary)}.dock-item-label{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%,4px);opacity:0;pointer-events:none;font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;background:var(--color-text);color:var(--color-bg);border:2px solid var(--color-border);padding:.15em .55em;border-radius:var(--radius-sm);box-shadow:2px 2px 0 0 var(--color-border);white-space:nowrap;transition:opacity .15s,transform .15s;z-index:30}.dock-item:focus-visible .dock-item-label,.dock-item:hover .dock-item-label{opacity:1;transform:translate(-50%)}@media (min-width:1100px){.dock-item-label{display:inline;position:static;transform:none;opacity:1;background:transparent;color:inherit;border:0;box-shadow:none;padding:0;transition:none}.dock-item:focus-visible .dock-item-label,.dock-item:hover .dock-item-label{transform:none}}.dock-divider{width:3px;align-self:stretch;margin:6px 2px;background:var(--color-border);border-radius:999px;opacity:.35;flex-shrink:0}.dock-tools{display:flex;align-items:center;gap:6px;padding-right:4px}.dock .theme-toggle{width:36px;height:36px}.skip-link{position:fixed;top:10px;left:10px;z-index:100;transform:translateY(calc(-100% - 16px));padding:.5em 1em;background:var(--color-btn-primary);color:var(--color-on-primary);border:3px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);font-weight:700;text-decoration:none;transition:transform .15s}.skip-link:focus-visible{transform:translateY(0)}main:focus{outline:none}.lang-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em;cursor:pointer;transition:var(--transition);flex-shrink:0}.lang-toggle:hover{color:var(--color-primary);border-color:var(--color-primary-light);background:var(--color-tint)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:var(--transition);flex-shrink:0}.theme-toggle:hover{color:var(--color-primary);border-color:var(--color-primary-light);background:var(--color-tint)}.theme-toggle__icon{width:18px;height:18px;display:block}.theme-toggle__icon--moon,[data-theme=dark] .theme-toggle__icon--sun{display:none}[data-theme=dark] .theme-toggle__icon--moon{display:block}.dock-auth-btn{height:36px;padding:0 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-size:var(--fs-xs);font-weight:600;cursor:pointer;transition:var(--transition);flex-shrink:0}.dock-auth-btn:hover{color:var(--color-primary);border-color:var(--color-primary-light);background:var(--color-tint)}.dock-auth-btn--primary{border-width:2px;background:var(--color-btn-primary);color:var(--color-on-primary);box-shadow:var(--shadow-sm)}.dock-auth-btn--primary:hover{color:var(--color-on-primary);transform:translate(-1px,-1px);box-shadow:3px 3px 0 0 var(--color-border)}.dock-auth-btn--primary:active{transform:translate(1px,1px);box-shadow:none}.dock-user{display:inline-flex;align-items:center;height:36px;flex-shrink:0}.dock-user .cl-userButtonAvatarBox,.dock-user .cl-userButtonRoot,.dock-user .cl-userButtonTrigger{width:32px!important;height:32px!important}@media (max-width:880px){.dock-brand{padding:0;border:0;background:transparent;box-shadow:none;gap:0}.dock-brand:hover{transform:none;box-shadow:none}.dock-brand-text{display:none}.dock-brand-mark{display:inline-flex}}@media (max-width:640px){.dock-inner{gap:4px;padding-inline:var(--space-sm)}.dock-nav{gap:4px}.dock-item{min-width:40px;height:40px}.dock-item svg{width:18px;height:18px}.dock-items{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent);mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent)}.dock-items::-webkit-scrollbar{display:none}.dock-divider,.dock-item-label{display:none}.dock-tools{padding-right:0}}.hero{text-align:center;padding:var(--space-xl) 0 var(--space-lg)}.hero-tagline{font-size:var(--fs-3xl);font-weight:700;color:var(--color-text);margin-bottom:var(--space-sm);line-height:1.3}.hero-bio{font-size:var(--fs-lg);color:var(--color-text-muted);max-width:560px;margin:0 auto}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.hero-bio,.hero-tagline{animation:rise-in .45s cubic-bezier(.22,1,.36,1) both}.hero-bio{animation-delay:.08s}.btn{display:inline-block;font-weight:800;font-size:var(--fs-base);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);border:3px solid var(--color-border);cursor:pointer;transition:var(--transition);text-transform:uppercase}.btn--primary{background:var(--color-btn-primary);color:var(--color-on-primary);box-shadow:var(--shadow-primary)}.btn--primary:hover{background:var(--color-btn-primary-hover);color:var(--color-on-primary);transform:translate(-2px,-2px);box-shadow:8px 8px 0 0 var(--color-border)}.btn--primary:active{transform:translate(2px,2px);box-shadow:0 0 0 0 var(--color-border)}.btn--secondary{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.btn--secondary:hover{background:var(--color-tint);color:var(--color-text);transform:translate(-2px,-2px);box-shadow:var(--shadow-md)}.btn--secondary:active{transform:translate(2px,2px);box-shadow:0 0 0 0 var(--color-border)}.card{background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);box-shadow:var(--shadow-sm);transition:var(--transition)}.card:hover{border-color:var(--color-border);box-shadow:var(--shadow-md);transform:translate(-2px,-2px)}.card-grid{display:grid;gap:var(--space-md);grid-template-columns:1fr}@media (min-width:580px){.card-grid{grid-template-columns:repeat(2,1fr)}}.project-card h3{margin-bottom:var(--space-xs)}.project-card h3 a{color:inherit}.project-card h3 a:hover{color:var(--color-primary)}.project-card p{font-size:var(--fs-sm);color:var(--color-text-muted)}.project-card p,.tag-list{margin-bottom:var(--space-sm)}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.tag{font-size:var(--fs-xs);font-family:var(--font-mono);background:var(--color-tag-bg);color:var(--color-tag-text);padding:.2em .6em;border-radius:var(--radius-sm)}.project-links{font-size:var(--fs-sm);font-weight:500}.contact-list,.project-links{display:flex;gap:var(--space-md)}.contact-list{list-style:none;padding:0;flex-direction:column}.contact-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-md);transition:var(--transition);box-shadow:var(--shadow-sm)}.contact-item:hover{border-color:var(--color-border);box-shadow:var(--shadow-md);transform:translate(-2px,-2px)}.contact-label{font-weight:600;min-width:100px;color:var(--color-text)}.contact-value a{color:var(--color-primary);font-weight:500}.links-categories{display:flex;flex-direction:column;gap:var(--space-xl)}.links-category-title{font-size:var(--fs-xl);margin-bottom:var(--space-md);display:flex;align-items:center;gap:var(--space-xs)}.links-emoji{font-size:var(--fs-lg)}.links-grid{display:grid;grid-template-columns:1fr;gap:var(--space-sm)}@media (min-width:540px){.links-grid{grid-template-columns:repeat(2,1fr)}}.link-card{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);transition:var(--transition);position:relative;color:var(--color-text);box-shadow:var(--shadow-sm)}.link-card:hover{border-color:var(--color-border);box-shadow:var(--shadow-md);transform:translate(-2px,-2px);color:var(--color-text)}.link-name{font-weight:600;font-size:var(--fs-sm);color:var(--color-primary-dark)}.link-desc{font-size:var(--fs-xs);flex:1 1;min-width:0}.link-arrow,.link-desc{color:var(--color-text-muted)}.link-arrow{font-size:var(--fs-sm);transition:var(--transition)}.link-card:hover .link-arrow{color:var(--color-primary);transform:translate(2px,-2px)}.footer{border-top:1px solid var(--color-border);padding:var(--space-lg) 0;text-align:center}.footer-container{padding-inline:clamp(var(--space-md),4vw,var(--space-2xl));padding-block:0;display:flex;justify-content:space-between;align-items:center}.footer p{font-size:var(--fs-sm);margin:0}.footer a,.footer p{color:var(--color-text-muted)}.footer a:hover{color:var(--color-primary)}.tool-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--color-tint);color:var(--color-primary-dark);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.7rem;font-weight:700;flex-shrink:0}.tool-page{max-width:56rem;margin-inline:auto}.tool-back{display:inline-flex;align-items:center;font-size:var(--fs-sm);font-weight:600;color:var(--color-text-muted);margin-bottom:var(--space-md);transition:color .15s ease,transform .15s ease}.tool-back:hover{color:var(--color-primary);transform:translateX(-3px)}.tool-page-header{margin-bottom:var(--space-lg);padding-bottom:var(--space-md);border-bottom:3px solid var(--color-border)}.tool-page-title{margin:0 0 var(--space-xs);font-size:var(--fs-3xl);letter-spacing:-.02em;color:var(--color-primary)}.tool-page-desc{margin:0;color:var(--color-text-muted)}.showcase-grid{position:relative;display:grid;gap:var(--space-md);grid-template-columns:1fr}.showcase-card{position:relative;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-md);background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);color:inherit;text-decoration:none;transition:box-shadow .15s ease,border-color .15s ease;animation:showcase-card-in .55s cubic-bezier(.175,.885,.32,1.275) backwards;animation-delay:calc(var(--i, 0) * 70ms);scroll-margin-top:72px}@media (hover:hover) and (pointer:fine){.showcase-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.showcase-card:hover .showcase-index{color:var(--color-primary-light)}.showcase-card:hover .showcase-cta{transform:translateX(4px)}}.showcase-card:focus-visible{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-md)}.showcase-card:active{box-shadow:var(--shadow-sm)}.showcase-card--feature .showcase-name{font-size:var(--fs-2xl)}.showcase-card--feature .showcase-preview{min-height:104px}.showcase-index{position:absolute;top:.55rem;right:.85rem;font-family:var(--font-mono);font-size:var(--fs-2xl);font-weight:700;line-height:1;color:var(--color-tint-strong);pointer-events:none;transition:color .2s ease}.showcase-name{margin:0;font-size:var(--fs-xl);letter-spacing:-.01em}.showcase-desc{margin:0;font-size:var(--fs-sm);color:var(--color-text-muted)}.showcase-cta{margin-top:auto;align-self:flex-end;font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:700;color:var(--color-primary);transition:transform .18s cubic-bezier(.175,.885,.32,1.275)}.showcase-preview{display:flex;align-items:center;gap:var(--space-sm);min-height:72px;margin-top:var(--space-xs);padding:var(--space-sm);background:var(--color-bg);border:3px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:inset 2px 2px 0 0 rgba(0,0,0,.05);overflow:hidden}.pv-mono{font-family:var(--font-mono)}.pv-window{display:flex;flex-direction:column;gap:7px;width:100%}.pv-line{height:8px;border-radius:2px;background:var(--color-tint-strong);transform-origin:left center;animation:pv-breathe 2.8s ease-in-out infinite}.pv-line--key{width:55%;background:var(--color-primary-light)}.pv-line--str{width:82%;animation-delay:.5s}.pv-line--num{width:38%;background:var(--color-accent);animation-delay:1s}.pv-digits{font-weight:700;font-size:var(--fs-lg);letter-spacing:.02em}.pv-scan{position:relative;flex:1 1;height:24px;border:2px solid var(--color-border);border-radius:4px;background:var(--color-surface);overflow:hidden}.pv-scan-bar{position:absolute;top:2px;bottom:2px;width:6px;border-radius:2px;background:var(--color-primary);animation:pv-scan 2.6s cubic-bezier(.45,0,.55,1) infinite alternate}.pv-swatches{display:flex;gap:var(--space-xs);width:100%}.pv-swatch{flex:1 1;height:42px;border:3px solid var(--color-border);border-radius:var(--radius-sm);animation:pv-bob 3s ease-in-out infinite}.pv-swatch--a{background:var(--color-primary)}.pv-swatch--b{background:var(--color-accent);animation-delay:.4s}.pv-swatch--c{background:var(--color-tint-strong);animation-delay:.8s}.pv-badges{display:flex;justify-content:center;gap:var(--space-xs);width:100%}.pv-badge{padding:.3em .65em;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:700;animation:pv-badge-pop 3.2s ease-in-out infinite}.pv-badge--ok{background:var(--color-info-bg);color:var(--color-info-text)}.pv-badge--warn{background:var(--color-tint-strong);color:var(--color-text);animation-delay:.5s}.pv-badge--err{background:var(--color-err-bg);color:var(--color-err-text);animation-delay:1s}.pv-todos{display:flex;flex-direction:column;justify-content:center;gap:var(--space-sm);width:100%}.pv-todo{display:flex;align-items:center;gap:var(--space-xs)}.pv-todo-box{flex:none;width:14px;height:14px;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);animation:pv-todo-check 3.6s ease-in-out infinite}.pv-todo-line{flex:1 1;height:8px;border-radius:999px;background:var(--color-tint-strong)}.pv-todo:nth-child(2) .pv-todo-box{animation-delay:1.2s}.pv-todo:nth-child(2) .pv-todo-line{flex:0.6 1}@keyframes pv-todo-check{0%,15%{background:var(--color-surface)}30%,70%{background:var(--color-btn-primary)}85%,to{background:var(--color-surface)}}.pv-swap{position:relative;width:100%;height:44px;transform-style:preserve-3d;animation:pv-flip 4.4s cubic-bezier(.6,0,.4,1) infinite}.pv-face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--fs-lg);font-weight:700;backface-visibility:hidden}.pv-face:last-child{transform:rotateY(180deg)}@keyframes showcase-card-in{0%{opacity:0;transform:translateY(18px) rotate(-.5deg)}to{opacity:1;transform:none}}@keyframes pv-breathe{0%,to{transform:scaleX(1);opacity:1}50%{transform:scaleX(.7);opacity:.65}}@keyframes pv-scan{0%{left:4%}to{left:calc(96% - 6px)}}@keyframes pv-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pv-badge-pop{0%,84%,to{transform:translateY(0) scale(1)}90%{transform:translateY(-5px) scale(1.08)}}@keyframes pv-tap{0%,20%,to{transform:translateY(0)}8%{transform:translateY(2px) scale(.94)}}@keyframes pv-float{0%,55%,to{opacity:0;transform:translateY(0)}70%{opacity:1}90%{opacity:0;transform:translateY(-16px)}}@keyframes pv-flip{0%,36%{transform:rotateY(0deg)}50%,86%{transform:rotateY(180deg)}to{transform:rotateY(1turn)}}@media (min-width:640px){.showcase-grid{grid-template-columns:repeat(2,1fr)}.showcase-card--feature{grid-column:span 2}}@media (min-width:1280px){.showcase-grid{grid-template-columns:repeat(6,1fr);grid-auto-rows:1fr}.showcase-card{grid-column:span 2}.showcase-card--feature{grid-column:span 2;grid-row:span 2}}.tool-body{display:flex;flex-direction:column;gap:var(--space-xs)}.tool-textarea{width:100%;font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.6;color:var(--color-text);background:var(--color-bg);border:3px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-sm);resize:vertical;transition:var(--transition);box-shadow:inset 2px 2px 0 0 rgba(0,0,0,.05)}.tool-textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.tool-input,.tool-select{width:100%;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-text);background:var(--color-bg);border:3px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);transition:var(--transition);box-shadow:inset 2px 2px 0 0 rgba(0,0,0,.05)}.tool-input:focus,.tool-select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.tool-label{font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-top:var(--space-xs)}.tool-detail,.tool-label{font-size:var(--fs-xs);color:var(--color-text-muted)}.tool-detail{display:block;margin:2px 0 0;font-family:var(--font-mono);word-break:break-all}.json-tok--key{color:var(--color-primary);font-weight:700}.json-tok--number{color:var(--color-accent)}.json-tok--boolean,.json-tok--null,.json-tok--plain{color:var(--color-text-muted)}.tool-actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.btn--sm{padding:var(--space-xs) var(--space-md)}.btn--sm,.tool-result{font-size:var(--fs-sm)}.tool-result{font-family:var(--font-mono);line-height:1.6;white-space:pre-wrap;word-break:break-all;padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--color-bg);border:3px solid var(--color-border);min-height:0;max-height:300px;overflow-y:auto;box-shadow:inset 2px 2px 0 0 rgba(0,0,0,.05)}.tool-result:empty{display:none}.tool-result--ok{background:var(--color-tint);border-color:var(--color-tint-strong);color:var(--color-primary-dark)}.tool-result--err{background:var(--color-err-bg);border-color:var(--color-err-border);color:var(--color-err-text)}.tool-row,.ts-now-row{display:flex;gap:var(--space-xs);align-items:center}.tool-row .tool-input,.ts-now-row .tool-input{flex:1 1}.tool-row .btn,.ts-now-row .btn{flex-shrink:0}.tool-arrow{text-align:center;font-size:var(--fs-lg);color:var(--color-text-muted);padding:var(--space-xs) 0}.tool-row .tool-select{flex:0 0 auto;width:auto;min-width:110px}.color-history{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.color-history-item{width:22px;height:22px;border:2px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;padding:0;transition:var(--transition)}.color-history-item:hover{transform:translate(-1px,-1px);box-shadow:2px 2px 0 0 var(--color-border)}.color-row{display:flex;gap:var(--space-md);align-items:flex-start}.color-pick{width:56px;height:56px;border:3px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;padding:0;background:none;flex-shrink:0;box-shadow:2px 2px 0 0 var(--color-border);transition:var(--transition)}.color-pick:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 0 var(--color-border)}.color-pick::-webkit-color-swatch-wrapper{padding:3px}.color-pick::-webkit-color-swatch{border:none;border-radius:3px}.color-pick::-moz-color-swatch{border:none;border-radius:3px}.color-values{flex:1 1;flex-direction:column}.color-line,.color-values{display:flex;gap:var(--space-xs)}.color-line{align-items:center}.color-label{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:700;color:var(--color-text-muted);width:36px;flex-shrink:0}.color-code{flex:1 1}@media (max-width:480px){.contact-item{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.contact-label{min-width:auto}.footer-container{flex-direction:column;gap:var(--space-xs)}}@media (min-width:1280px){.hero-tagline{font-size:var(--fs-4xl)}.hero-bio{max-width:640px;font-size:1.25rem}.card-grid,.links-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:1536px){.links-grid{grid-template-columns:repeat(4,1fr)}}.blog-header{margin-bottom:var(--space-xl);border-bottom:3px solid var(--color-border);padding-bottom:var(--space-md)}.blog-title{font-size:var(--fs-4xl);color:var(--color-primary);margin-bottom:var(--space-sm);letter-spacing:-.03em}.blog-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-text-muted)}.blog-content{font-size:var(--fs-lg);line-height:1.8;color:var(--color-text)}.blog-content h2{font-size:var(--fs-2xl);margin-top:2.5rem;margin-bottom:1.25rem;padding-bottom:var(--space-xs);border-bottom:3px solid var(--color-border);display:inline-block;color:var(--color-primary)}.blog-content h3{font-size:var(--fs-xl);margin-top:2rem;margin-bottom:1rem;font-weight:800}.blog-content p{margin-bottom:1.25rem}.blog-content ul{margin-bottom:1.5rem;padding-left:1.5rem}.blog-content li{margin-bottom:.5rem}.blog-content strong{color:var(--color-primary-dark);font-weight:800}.blog-code-block{background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-md);margin:var(--space-lg) 0;overflow:hidden;box-shadow:var(--shadow-sm)}.blog-code-block-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);background:var(--color-tint);border-bottom:3px solid var(--color-border);padding:var(--space-xs) var(--space-sm)}.blog-code-block-left{display:flex;align-items:center;gap:var(--space-md);min-width:0}.blog-code-block-dots{display:flex;gap:8px;flex-shrink:0}.blog-code-block-dot{width:12px;height:12px;border-radius:50%;border:2px solid var(--color-border)}.blog-code-block-dot--err{background:var(--color-err-text)}.blog-code-block-dot--warn{background:var(--color-primary)}.blog-code-block-dot--ok{background:var(--color-info-text)}.blog-code-block-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.blog-code-block-copy,.blog-code-block-title{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:700;color:var(--color-text-muted)}.blog-code-block-copy{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;border:2px solid transparent;border-radius:var(--radius-sm);background:transparent;padding:2px 8px;cursor:pointer}.blog-code-block-copy:hover{border-color:var(--color-border);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.blog-code-block-body{display:flex;background:var(--color-bg)}.blog-code-block-gutter{display:flex;flex-direction:column;flex-shrink:0;text-align:right;padding:var(--space-md) var(--space-sm);background:var(--color-surface);border-right:2px solid var(--color-border);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.6;color:var(--color-text-muted);opacity:.7;-webkit-user-select:none;user-select:none}.blog-code-block-pre{margin:0;padding:var(--space-md);overflow-x:auto;flex:1 1}.blog-code-block-pre code{display:block;font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.6;color:var(--color-text);white-space:pre}.blog-code-block-line{min-height:1.6em}.tok-kw{color:var(--color-primary);font-weight:700}.tok-num{color:var(--color-info-text);font-weight:700}.tok-builtin{color:var(--color-primary-dark);font-weight:700}.tok-comment{color:var(--color-text-muted);font-style:italic}.blog-inline-code{background:var(--color-tint);border:2px solid var(--color-border);padding:.1em .3em;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.9em;font-weight:700}.blog-callout{background:var(--color-info-bg);border:3px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);margin:var(--space-lg) 0;box-shadow:var(--shadow-sm);color:var(--color-text);font-weight:500}.blog-summary{background:var(--color-surface);border:4px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);margin:var(--space-xl) 0;box-shadow:var(--shadow-md)}.blog-summary h3{margin-top:0;color:var(--color-primary)}.blog-back{display:inline-flex;align-items:center;gap:var(--space-xs);font-weight:700;text-transform:uppercase;font-size:var(--fs-sm);margin-bottom:var(--space-lg);color:var(--color-text-muted)}.blog-back:hover{color:var(--color-primary);transform:translateX(-4px)}.blog-card-date{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--color-text-muted);margin-bottom:var(--space-xs)}.blog-card-tags{margin-top:var(--space-sm)}.blog-card-links{margin-top:var(--space-md)}.blog-meta .tag-list{margin-bottom:0}.blog-article{max-width:800px;margin:0 auto;padding-top:var(--space-xl);padding-bottom:var(--space-2xl)}.blog-abstract{background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-lg);margin-bottom:var(--space-lg);font-size:var(--fs-base);line-height:1.85}.blog-abstract p{margin:0}.blog-abstract-keywords{margin-top:1rem}.blog-table-wrap{overflow-x:auto;margin-bottom:2rem}.blog-table{width:100%;border-collapse:collapse;font-size:var(--fs-base);font-family:inherit}.blog-table th{border-bottom:3px solid var(--color-border);border-top:3px solid var(--color-border);text-align:left}.blog-table td,.blog-table th{padding:.6rem .75rem;white-space:nowrap}.blog-table td:first-child{font-weight:700}.blog-table tbody tr:nth-child(2n){background:var(--color-tint)}.blog-table tbody tr:last-child td{border-bottom:3px solid var(--color-border)}.blog-figure{margin:2rem 0 3rem}.blog-figcaption{text-align:center;font-size:var(--fs-sm);color:var(--color-text-muted);margin-top:.75rem}.blog-references{font-size:var(--fs-base);line-height:1.9;color:var(--color-text-muted);padding-left:1.5rem}.demo-container{background:var(--color-surface);border:3px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-xl) 0;box-shadow:var(--shadow-sm)}.demo-layout{display:flex;flex-direction:column;gap:var(--space-xl);margin-top:var(--space-lg)}@media (min-width:768px){.demo-layout{flex-direction:row}}.demo-col{flex:1 1;display:flex;flex-direction:column;align-items:center}.demo-bucket{width:140px;height:220px;border:4px solid var(--color-border);border-top:none;border-radius:0 0 var(--radius-lg) var(--radius-lg);flex-direction:column-reverse;padding:var(--space-xs);gap:var(--space-xs);background:var(--color-bg)}.demo-bucket,.demo-token{position:relative;display:flex;overflow:hidden}.demo-token{width:100%;height:24px;background:var(--color-primary);border-radius:var(--radius-sm);border:2px solid var(--color-border);align-items:center;justify-content:center;animation:demo-token-drop .6s both}.demo-token span{font-family:var(--font-mono);font-size:10px;color:var(--color-on-primary);opacity:.7}.demo-token--leaving{animation:demo-token-vanish .15s ease-in both;pointer-events:none}.demo-queue{width:100%;max-width:300px;display:flex;flex-direction:column;gap:var(--space-sm)}.demo-req{padding:var(--space-sm);border:3px solid var(--color-border);border-radius:var(--radius-sm);text-align:center;font-weight:800;font-size:var(--fs-sm);text-transform:uppercase;background:var(--color-surface)}.demo-req--success{background:var(--color-info-bg);color:var(--color-info-text)}.demo-req--rejected{background:var(--color-err-bg);color:var(--color-err-text);animation:demo-card-shake .5s ease-in-out}.demo-req-list{display:flex;flex-direction:column;gap:.5rem}.demo-empty{padding:var(--space-lg) 0;text-align:center;color:var(--color-text-muted);font-family:var(--font-mono);animation:demo-fade-in .25s ease-out both}.demo-gear{display:inline-block;animation:demo-spin 5s linear infinite}@keyframes demo-token-drop{0%{transform:translateY(-150px) scale(.5) rotate(var(--token-rotate,0deg));opacity:0;animation-timing-function:ease-in}55%{transform:translateY(0) scale(1.12) rotate(0deg);opacity:1;animation-timing-function:ease-out}75%{transform:translateY(-6px) scale(.96);animation-timing-function:ease-in}to{transform:translateY(0) scale(1) rotate(0deg)}}@keyframes demo-token-vanish{to{transform:scale(0);opacity:0}}@keyframes demo-card-in{0%{transform:translateX(50px) scale(.9);opacity:0}to{transform:translateX(0) scale(1);opacity:1}}@keyframes demo-card-shake{0%,to{transform:translateX(0)}20%{transform:translateX(-10px)}40%{transform:translateX(10px)}60%{transform:translateX(-10px)}80%{transform:translateX(10px)}}@keyframes demo-fade-in{0%{opacity:0}to{opacity:1}}@keyframes demo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.todo-tabs{display:flex;gap:var(--space-xs);margin-bottom:var(--space-md)}.todo-tab{padding:.5rem 1.25rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--fs-sm);font-weight:700;cursor:pointer;transition:var(--transition)}.todo-tab:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-sm)}.todo-tab[aria-selected=true]{background:var(--color-btn-primary);color:var(--color-on-primary);box-shadow:var(--shadow-sm)}.todo-modal-overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-md);background:rgba(0,0,0,.45);animation:todo-fade-in .18s ease-out both}.todo-modal{width:min(560px,100%);max-height:calc(100vh - 2 * var(--space-md));overflow-y:auto;padding:var(--space-md);border:3px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-md);display:grid;gap:var(--space-sm);animation:todo-rise-in .22s ease-out both}@keyframes todo-fade-in{0%{opacity:0}to{opacity:1}}@keyframes todo-rise-in{0%{transform:translateY(16px) scale(.97);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@media (max-width:480px){.todo-tab{flex:1 1}}.todo-add{display:flex;gap:var(--space-xs);margin-bottom:var(--space-sm)}.todo-add-input{flex:1 1;min-width:0;padding:.5rem .75rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--fs-sm);transition:var(--transition)}.todo-add-input::placeholder{color:var(--color-text-muted)}.todo-add-input:focus-visible{outline:none;box-shadow:var(--focus-ring)}.todo-prio-select{padding:.5rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--fs-sm);font-weight:700;cursor:pointer;transition:var(--transition)}.todo-prio-select:focus-visible{outline:none;box-shadow:var(--focus-ring)}.todo-dnd-hint{margin:0 0 var(--space-md);font-size:var(--fs-xs);color:var(--color-text-muted)}.todo-group{margin-bottom:var(--space-md)}.todo-group-head{display:flex;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-xs)}.todo-group-name{letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.todo-group-count,.todo-group-name{font-size:var(--fs-xs);font-weight:700}.todo-group-count{min-width:1.5rem;padding:0 .4rem;border:2px solid var(--color-border);border-radius:999px;background:var(--color-tag-bg);color:var(--color-tag-text);text-align:center}.todo-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-xs)}.todo-item{display:flex;align-items:center;gap:var(--space-xs);padding:.5rem .65rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);transition:var(--transition);animation:todo-item-in .28s cubic-bezier(.175,.885,.32,1.275) both}.todo-item:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-sm)}.todo-item.todo-item--dragging{opacity:.92;border-style:dashed;background:var(--color-tint);box-shadow:var(--shadow-md);pointer-events:none;cursor:grabbing;z-index:20;will-change:transform;transition:none}body.todo-dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.todo-grip{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:2.2rem;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);cursor:grab;touch-action:none;transition:var(--transition)}.todo-grip:hover{color:var(--color-text);background:var(--color-tint)}.todo-grip:active{cursor:grabbing}.todo-grip:focus-visible{outline:none;box-shadow:var(--focus-ring)}.todo-check{flex:none;width:1.25rem;height:1.25rem;appearance:none;border:3px solid var(--color-border);border-radius:6px;background:var(--color-surface);cursor:pointer;transition:var(--transition)}.todo-check:hover{box-shadow:var(--shadow-sm)}.todo-check:focus-visible{outline:none;box-shadow:var(--focus-ring)}.todo-check:checked{background:var(--color-accent);animation:todo-pop .25s cubic-bezier(.175,.885,.32,1.275)}.todo-check:checked:after{content:"";display:block;width:.3rem;height:.6rem;margin:.05rem auto 0;border:solid var(--color-on-primary);border-width:0 3px 3px 0;transform:rotate(45deg)}.todo-item-main{flex:1 1;min-width:0;display:grid;gap:2px}.todo-item-title{font-size:var(--fs-sm);font-weight:600;overflow-wrap:anywhere}.todo-item-title--done{color:var(--color-text-muted);text-decoration:line-through}.todo-item-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.todo-badge{display:inline-flex;align-items:center;padding:0 .45rem;border:2px solid var(--color-border);border-radius:999px;background:var(--color-tag-bg);color:var(--color-tag-text);font-size:var(--fs-xs);line-height:1.4}.todo-badge--overdue{background:var(--color-err-bg);color:var(--color-err-text);animation:todo-overdue-pulse 1.6s ease-in-out infinite}.todo-prio{display:inline-flex;align-items:center;padding:0 .45rem;border:2px solid var(--color-border);border-radius:999px;font-size:var(--fs-xs);font-weight:700;line-height:1.4}.todo-prio--1{background:var(--color-tag-bg);color:var(--color-tag-text)}.todo-prio--2{background:var(--color-tint-strong);color:var(--color-text)}.todo-prio--3{background:var(--color-primary);color:var(--color-on-primary)}.todo-drop-line{display:flex;align-items:center;height:6px}.todo-drop-line:before{content:"";width:100%;height:3px;border-radius:999px;background:var(--color-primary);animation:todo-drop-pulse .9s ease-in-out infinite}.todo-sync{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--color-text-muted)}.todo-sync--saved{color:var(--color-accent)}.todo-sync--error{color:var(--color-err-text)}.todo-sync-dot{width:10px;height:10px;border-radius:999px;background:currentcolor;animation:todo-sync-pulse 1s ease-in-out infinite}.todo-sync-retry{display:inline-flex;align-items:center;padding:0 .5rem;border:2px solid;border-radius:var(--radius-sm);background:transparent;color:inherit;font-size:var(--fs-xs);font-weight:700;cursor:pointer;transition:var(--transition)}.todo-sync-retry:hover{box-shadow:var(--shadow-sm);transform:translate(-1px,-1px)}.todo-sync-retry:focus-visible{outline:none;box-shadow:var(--focus-ring)}.todo-modal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}@keyframes todo-item-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes todo-pop{0%{transform:scale(1)}45%{transform:scale(1.35)}to{transform:scale(1)}}@keyframes todo-drop-pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes todo-overdue-pulse{0%,to{opacity:1}50%{opacity:.65}}@keyframes todo-sync-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.82)}}@media (max-width:480px){.todo-add{flex-wrap:wrap}.todo-add-input{flex:1 1 100%}.todo-prio-select{flex:1 1}.todo-modal-grid{grid-template-columns:1fr}}.todo-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);margin:var(--space-xs) 0}.todo-search{flex:1 1;min-width:140px;padding:.35rem .6rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--fs-sm)}.todo-chip-row{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.todo-chip{font-family:inherit;font-size:var(--fs-sm);font-weight:700;padding:.3rem .65rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;background:var(--color-surface);color:var(--color-text);transition:var(--transition)}.todo-chip--on{background:var(--color-primary);color:var(--color-on-primary)}.todo-group-btn{font-family:inherit;border:none;background:none;color:var(--color-text-muted);cursor:pointer;font-size:var(--fs-sm);padding:0 .15rem;line-height:1}.todo-group-btn:hover{color:var(--color-primary)}.todo-badge--today{background:var(--color-tint-strong);font-weight:700}.todo-undo{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-top:var(--space-xs);padding:.5rem .75rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-tint)}.todo-undo-text{font-size:var(--fs-sm);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-group-dot{display:inline-block;width:8px;height:8px;border-radius:50%;border:1px solid var(--color-border);margin-right:.4rem;vertical-align:middle}.todo-bulk-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);margin-top:var(--space-xs);padding:.5rem .75rem;border:3px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-tint)}.todo-board{display:flex;gap:var(--space-sm);overflow-x:auto;align-items:stretch;padding-bottom:var(--space-sm)}.todo-board-col{flex:0 0 240px;display:flex;flex-direction:column;gap:var(--space-xs);border:3px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);padding:var(--space-xs);min-height:220px}.todo-board-head{display:flex;align-items:center;gap:.4rem;font-weight:800;padding:.25rem .15rem}.todo-card{display:grid;gap:.3rem;border:2px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);padding:.5rem .6rem;cursor:grab;box-shadow:var(--shadow-sm)}.todo-card--done{opacity:.6}.todo-card .todo-item-meta{display:flex;flex-wrap:wrap;gap:.3rem}.color-contrast{font-family:var(--font-mono);font-size:var(--fs-sm)}.skeleton-block,.skeleton-line{border:2px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-tint);animation:skeleton-pulse 1.4s ease-in-out infinite}.skeleton-line{height:.9rem}.skeleton-line--wide{width:60%}.skeleton-block{height:3.2rem}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.skeleton-block,.skeleton-line{animation:none;opacity:.6}}.todo-mark{background:var(--color-tint-strong);color:inherit;border-radius:2px;padding:0 1px}.empty-state{display:grid;justify-items:center;gap:var(--space-xs);padding:var(--space-md);text-align:center;color:var(--color-text-muted)}.empty-state-icon{width:44px;height:44px;display:grid;place-items:center;border:3px solid var(--color-border);border-radius:50%;background:var(--color-tint);color:var(--color-text)}.empty-state--compact{padding:var(--space-xs)}.empty-state--compact .empty-state-icon{width:32px;height:32px;border-width:2px}.empty-state-title{margin:0;font-weight:700;color:var(--color-text)}.empty-state-desc{margin:0;font-size:var(--fs-sm)}.nb-alert{padding:var(--space-md);border:3px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);font-size:var(--fs-sm);font-weight:500}.nb-alert--info{background:var(--color-info-bg);border-color:var(--color-info-border);color:var(--color-info-text)}.nb-alert--err{background:var(--color-err-bg);border-color:var(--color-err-border);color:var(--color-err-text)}.presence{display:inline-flex;align-items:center;gap:6px;margin-inline-start:var(--space-md);font-family:var(--font-mono);font-size:var(--fs-sm)}.presence-dot{width:8px;height:8px;border-radius:50%;background:var(--color-primary);border:2px solid var(--color-border);animation:presence-pulse 2s ease-in-out infinite}@keyframes presence-pulse{0%,to{opacity:1}50%{opacity:.35}}.heatmap-section{padding:var(--space-md) 0 var(--space-xl)}.heatmap{width:fit-content;max-width:100%;margin-inline:auto}.heatmap-title{font-size:var(--fs-xl);font-weight:700;text-align:center;margin-bottom:var(--space-xs)}.heatmap-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-xs) var(--space-md);margin-top:var(--space-xs)}.heatmap-total{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-text-muted);margin:0}.heatmap-scroller{overflow-x:auto;padding-bottom:var(--space-xs)}.heatmap-gridwrap{display:grid;grid-template-columns:auto max-content;grid-template-areas:".    months" "axis grid";column-gap:6px;width:max-content}.heatmap-months{grid-area:months;grid-template-columns:repeat(var(--heatmap-weeks),11px);margin-bottom:var(--space-xs)}.heatmap-months,.heatmap-weekdays{display:grid;gap:3px;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1;color:var(--color-text-muted);white-space:nowrap}.heatmap-weekdays{grid-area:axis;grid-template-rows:repeat(7,11px);align-items:center;justify-items:end}.heatmap-grid{grid-area:grid;display:flex;gap:3px}.heatmap-col{display:grid;grid-template-rows:repeat(7,auto);gap:3px}.heatmap-cell{width:11px;height:11px;border-radius:3px;border:1px solid color-mix(in srgb,var(--color-border) 45%,transparent);background:var(--color-surface);transition:transform .1s ease}.heatmap-cell:hover{transform:scale(1.35)}.heatmap-cell[data-level="1"]{background:color-mix(in srgb,var(--color-primary) 30%,var(--color-surface))}.heatmap-cell[data-level="2"]{background:color-mix(in srgb,var(--color-primary) 55%,var(--color-surface))}.heatmap-cell[data-level="3"]{background:color-mix(in srgb,var(--color-primary) 80%,var(--color-surface))}.heatmap-cell[data-level="4"]{background:var(--color-primary);border-color:var(--color-primary-dark)}.heatmap-legend{display:flex;align-items:center;justify-content:flex-end;gap:4px}.heatmap-legend .heatmap-cell{width:9px;height:9px;border-radius:2px}.heatmap-legend-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--color-text-muted);margin:0 var(--space-xs)}.heatmap-status{text-align:center;color:var(--color-text-muted);font-size:var(--fs-sm)}.auth-backdrop{background:rgba(0,0,0,.55)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.auth-modal{margin:auto!important;background:var(--color-surface)!important;border:3px solid var(--color-border)!important;border-radius:var(--radius-md)!important;box-shadow:var(--shadow-primary)!important;overflow:hidden}.auth-modal .auth-card{background:transparent!important;box-shadow:none!important;border:0!important}.auth-title{color:var(--color-text)!important;font-weight:800!important}.auth-subtitle{color:var(--color-text-muted)!important}.auth-label{font-weight:600!important;letter-spacing:.04em}.auth-divider-text,.auth-label{color:var(--color-text-muted)!important;font-size:var(--fs-xs)!important;text-transform:uppercase}.auth-divider-text{letter-spacing:.06em}.auth-divider-line{background:var(--color-border)!important;opacity:.2}.auth-input{background:var(--color-bg)!important;border:1px solid var(--color-border)!important;border-radius:var(--radius-sm)!important;box-shadow:none!important;color:var(--color-text)!important;transition:var(--transition)}.auth-input:hover{border-color:var(--color-primary-light)!important}.auth-input:focus{border-color:var(--color-primary)!important;box-shadow:var(--focus-ring)!important}.auth-otp{border:1px solid var(--color-border)!important;border-radius:var(--radius-sm)!important;background:var(--color-bg)!important;color:var(--color-text)!important}.auth-submit{background:var(--color-btn-primary)!important;color:var(--color-on-primary)!important;border:2px solid var(--color-border)!important;border-radius:var(--radius-sm)!important;box-shadow:var(--shadow-sm)!important;font-weight:700!important;transition:var(--transition)}.auth-submit:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 0 var(--color-border)!important}.auth-submit:active{transform:translate(1px,1px);box-shadow:none!important}.auth-oauth-btn{background:transparent!important;border:1px solid var(--color-border)!important;border-radius:var(--radius-sm)!important;box-shadow:none!important;color:var(--color-text)!important;font-weight:600!important;transition:var(--transition)}.auth-oauth-btn:hover{background:var(--color-tint)!important;border-color:var(--color-primary-light)!important;color:var(--color-primary)!important}.auth-ghost{background:transparent!important;box-shadow:none!important;color:var(--color-text-muted)!important;font-weight:600!important;transition:var(--transition)}.auth-ghost:hover{background:var(--color-tint)!important}.auth-ghost:hover,.auth-link{color:var(--color-primary)!important}.auth-link{font-weight:600;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;transition:var(--transition)}.auth-link:hover{color:var(--color-primary-dark)!important}.auth-popover{background:var(--color-surface)!important;border:3px solid var(--color-border)!important;border-radius:var(--radius-md)!important;box-shadow:var(--shadow-sm)!important}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-inter:"Inter","Inter Fallback"}