:root{--palette-accent-50:#eef2ff;--palette-accent-100:#e0e7ff;--palette-accent-200:#c7d2fe;--palette-accent-300:#a5b4fc;--palette-accent-400:#818cf8;--palette-accent-500:#6366f1;--palette-accent-600:#4f46e5;--palette-accent-700:#4338ca;--palette-accent-800:#3730a3;--palette-accent-900:#312e81;--palette-gray-0:#fff;--palette-gray-50:#f9fafb;--palette-gray-100:#f3f4f6;--palette-gray-200:#e5e7eb;--palette-gray-300:#d1d5db;--palette-gray-400:#9ca3af;--palette-gray-500:#6b7280;--palette-gray-600:#4b5563;--palette-gray-700:#374151;--palette-gray-800:#1f2937;--palette-gray-900:#111827;--palette-gray-950:#0a0c10;--palette-green-500:#22c55e;--palette-yellow-500:#eab308;--palette-red-500:#ef4444;--palette-blue-500:#3b82f6;--palette-category-creational:#8b5cf6;--palette-category-structural:#06b6d4;--palette-category-behavioral:#f59e0b;--font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--font-serif:Georgia, serif;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.2;--line-height-snug:1.35;--line-height-normal:1.5;--line-height-relaxed:1.7;--line-height-code:1.6;--tracking-tight:-.02em;--tracking-normal:0em;--tracking-wide:.04em;--tracking-wider:.08em;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--text-6xl:3.75rem;--text-7xl:4.5rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-32:8rem;--radius-none:0;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:24px;--radius-full:9999px;--shadow-none:none;--shadow-xs:0 1px 2px #0000000d;--shadow-sm:0 1px 2px #0000000a, 0 4px 8px #0000000a;--shadow-md:0 2px 4px #0000000a, 0 10px 20px #0000000f;--shadow-lg:0 4px 8px #0000000a, 0 20px 40px #00000014;--shadow-xl:0 8px 16px #0000000a, 0 32px 64px #0000001a;--shadow-2xl:0 25px 50px #00000040;--shadow-accent:0 0 0 3px #6366f159;--shadow-inset:inset 0 2px 4px #0000000f;--bp-xs:375px;--bp-sm:640px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;--bp-2xl:1536px;--container-xs:480px;--container-sm:640px;--container-md:768px;--container-lg:1024px;--container-xl:1280px;--container-full:100%;--container-prose:65ch;--grid-columns:12;--grid-gap:var(--space-6);--grid-gap-sm:var(--space-4);--grid-gap-lg:var(--space-8);--z-below:-1;--z-base:0;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-overlay:300;--z-modal:400;--z-toast:500;--z-tooltip:600;--duration-instant:50ms;--duration-fast:.1s;--duration-normal:.2s;--duration-moderate:.3s;--duration-slow:.5s;--duration-slower:.7s;--duration-crawl:1s;--ease-linear:linear;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-smooth:cubic-bezier(.25, .1, .25, 1);--transition-colors:color var(--duration-normal) var(--ease-in-out), background-color var(--duration-normal) var(--ease-in-out), border-color var(--duration-normal) var(--ease-in-out);--transition-transform:transform var(--duration-normal) var(--ease-out);--transition-opacity:opacity var(--duration-moderate) var(--ease-in-out);--transition-shadow:box-shadow var(--duration-normal) var(--ease-in-out);--transition-all:all var(--duration-normal) var(--ease-in-out);--icon-xs:12px;--icon-sm:16px;--icon-md:20px;--icon-lg:24px;--icon-xl:32px;--icon-2xl:48px;--code-bg:var(--palette-gray-100);--code-text:var(--palette-gray-900);--code-keyword:#cf222e;--code-string:#0a3069;--code-number:#0550ae;--code-comment:#636a76;--code-function:#8250df;--code-class:#953800;--code-variable:var(--palette-gray-900);--code-operator:#cf222e;--code-punctuation:var(--palette-gray-600);--code-header-bg:var(--palette-gray-50);--code-border:var(--palette-gray-200);--code-btn-border:var(--palette-gray-300);--code-btn-hover-bg:var(--palette-gray-200);--code-btn-hover-border:var(--palette-gray-400);--code-scrollbar:var(--palette-gray-300);--code-shadow:var(--shadow-sm);--code-selection-bg:#6366f140;--color-bg-base:#f8f8fc;--color-bg-surface:#fffdf9;--color-bg-elevated:var(--palette-gray-0);--color-bg-subtle:var(--palette-gray-100);--color-bg-inverse:var(--palette-gray-900);--color-text-primary:var(--palette-gray-900);--color-text-secondary:var(--palette-gray-700);--color-text-tertiary:var(--palette-gray-500);--color-text-disabled:var(--palette-gray-400);--color-text-inverse:var(--palette-gray-0);--color-text-link:var(--palette-accent-600);--color-text-link-hover:var(--palette-accent-700);--color-border:var(--palette-gray-200);--color-border-subtle:var(--palette-gray-100);--color-border-strong:var(--palette-gray-300);--color-border-accent:var(--palette-accent-500);--color-accent:var(--palette-accent-500);--color-accent-hover:var(--palette-accent-600);--color-accent-pressed:var(--palette-accent-700);--color-accent-subtle:var(--palette-accent-50);--color-accent-text:var(--palette-gray-0);--color-success:var(--palette-green-500);--color-warning:var(--palette-yellow-500);--color-error:var(--palette-red-500);--color-info:var(--palette-blue-500)}[data-theme=dark]{--color-bg-base:#0a0c10;--color-bg-surface:#15161d;--color-bg-elevated:#1a1d24;--color-bg-subtle:#0f1117;--color-bg-inverse:var(--palette-gray-50);--color-text-primary:var(--palette-gray-50);--color-text-secondary:var(--palette-gray-200);--color-text-tertiary:var(--palette-gray-400);--color-text-disabled:var(--palette-gray-600);--color-text-inverse:var(--palette-gray-900);--color-text-link:var(--palette-accent-400);--color-text-link-hover:var(--palette-accent-300);--color-border:var(--palette-gray-800);--color-border-subtle:var(--palette-gray-900);--color-border-strong:var(--palette-gray-700);--color-border-accent:var(--palette-accent-500);--color-accent:var(--palette-accent-500);--color-accent-hover:var(--palette-accent-400);--color-accent-pressed:var(--palette-accent-300);--color-accent-subtle:#6366f11f;--color-accent-text:var(--palette-gray-0);--color-success:var(--palette-green-500);--color-warning:var(--palette-yellow-500);--color-error:var(--palette-red-500);--color-info:var(--palette-blue-500);--shadow-sm:0 1px 3px #0006, 0 1px 2px #0000004d;--shadow-md:0 4px 6px #00000059, 0 2px 4px #00000040;--shadow-lg:0 10px 15px #0006, 0 4px 6px #00000040;--shadow-xl:0 20px 25px #00000073, 0 10px 10px #0003;--shadow-2xl:0 25px 50px #0009;--code-bg:#0d1117;--code-text:#e6edf3;--code-keyword:#ff7b72;--code-string:#a5d6ff;--code-number:#79c0ff;--code-comment:#8b949e;--code-function:#d2a8ff;--code-class:#ffa657;--code-variable:#e6edf3;--code-operator:#ff7b72;--code-punctuation:#8b949e;--code-header-bg:#ffffff0a;--code-border:#ffffff0f;--code-btn-border:#ffffff14;--code-btn-hover-bg:#ffffff0f;--code-btn-hover-border:#ffffff26;--code-scrollbar:#ffffff1a;--code-shadow:none;--code-selection-bg:#6366f159}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.93)}to{opacity:1;transform:scale(1)}}@keyframes filter-in{0%{opacity:0;transform:scale(.95)translateY(6px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes count-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}body:not(.is-loaded) #router-outlet{opacity:0}body.is-loaded #router-outlet{opacity:1}#router-outlet{transition:opacity .16s var(--ease-out), transform .16s var(--ease-out);transform-origin:top}body.is-loaded #router-outlet.is-transitioning{transition-timing-function:var(--ease-in-out);opacity:0;pointer-events:none;transform:translateY(6px)}.footer{transition:opacity .16s var(--ease-out)}.footer.is-transitioning{transition-timing-function:var(--ease-in-out);opacity:0}.reveal{opacity:0;will-change:opacity, transform;transition:opacity var(--duration-slower) var(--ease-out), transform var(--duration-slower) var(--ease-out);transform:translateY(18px)}.reveal.is-visible{opacity:1;will-change:auto;transform:none}@media (scripting:none){.reveal{opacity:1!important;transform:none!important}}.hero__inner .hero__badge,.hero__inner .hero__title,.hero__inner .hero__subtitle,.hero__inner .hero__actions{opacity:0;transform:translateY(14px)}.hero__inner .hero__badge{transition:opacity .38s var(--ease-out), transform .38s var(--ease-spring);transform:translateY(10px)scale(.97)}.hero__inner .hero__title{transition:opacity .48s var(--ease-out), transform .48s var(--ease-out)}.hero__inner .hero__subtitle{transition:opacity .46s var(--ease-out), transform .46s var(--ease-out)}.hero__inner .hero__actions{transition:opacity .42s var(--ease-out), transform .42s var(--ease-out)}.hero.hero-ready .hero__badge{opacity:1;transition-delay:0s;transform:none}.hero.hero-ready .hero__title{opacity:1;transition-delay:.1s;transform:none}.hero.hero-ready .hero__subtitle{opacity:1;transition-delay:.2s;transform:none}.hero.hero-ready .hero__actions{opacity:1;transition-delay:.3s;transform:none}.stats__grid .stat:first-child{animation-delay:0s}.stats__grid .stat:nth-child(2){animation-delay:60ms}.stats__grid .stat:nth-child(3){animation-delay:.12s}.stats__grid .stat:nth-child(4){animation-delay:.18s}.header__nav-link{position:relative}.header__nav-link:after{content:"";background-color:var(--color-accent);border-radius:var(--radius-full);height:2px;transition:left var(--duration-normal) var(--ease-out), right var(--duration-normal) var(--ease-out);position:absolute;bottom:-1px;left:50%;right:50%}.header__nav-link.is-active:after,.header__nav-link:hover:after{left:var(--space-3);right:var(--space-3)}.header__logo-mark{transition:transform var(--duration-moderate) var(--ease-spring)}.header__logo:hover .header__logo-mark{transform:rotate(20deg)scale(1.1)}.header__dropdown{transform-origin:top}.mobile-nav.is-open .mobile-nav__item:first-child{animation:fade-in-up .26s var(--ease-out) both;animation-delay:90ms}.mobile-nav.is-open .mobile-nav__item:nth-child(2){animation:fade-in-up .26s var(--ease-out) both;animation-delay:.15s}.mobile-nav.is-open .mobile-nav__item:nth-child(3){animation:fade-in-up .26s var(--ease-out) both;animation-delay:.21s}.mobile-nav.is-open .mobile-nav__item:nth-child(4){animation:fade-in-up .26s var(--ease-out) both;animation-delay:.27s}.pattern-card{position:relative}.pattern-card:after{content:"";border-radius:inherit;opacity:0;transition:opacity var(--duration-normal) var(--ease-in-out);pointer-events:none;background:linear-gradient(135deg,#6366f10d,#0000 60%);position:absolute;top:0;bottom:0;left:0;right:0}.pattern-card:hover:after{opacity:1}[data-filter-item].filter-entering{animation:filter-in var(--duration-moderate) var(--ease-out) both}.code-block:focus-within .code-block__header{transition:background-color var(--duration-fast) var(--ease-in-out);background-color:#ffffff12}.search-page .search-page__header{animation:fade-in-up .3s var(--ease-out) both;animation-delay:40ms}.breadcrumb{animation:fade-in-down var(--duration-moderate) var(--ease-out) both;animation-delay:20ms}.pattern-detail__header{animation:fade-in-up .35s var(--ease-out) both;animation-delay:60ms}.error-illustration{animation:fade-in-scale .55s var(--ease-spring) both;animation-delay:0s}.error-page__code{animation:fade-in-scale .6s var(--ease-spring) both;animation-delay:50ms}.error-page__title{animation:fade-in-up .4s var(--ease-out) both;animation-delay:.2s}.error-page__desc{animation:fade-in-up .4s var(--ease-out) both;animation-delay:.3s}.error-page__actions{animation:fade-in-up .4s var(--ease-out) both;animation-delay:.4s}.coming-soon-page{animation:fade-in-up .4s var(--ease-out) both;animation-delay:80ms}.catalog-page__header{animation:fade-in-up .36s var(--ease-out) both;animation-delay:40ms}.about-page__hero{animation:fade-in-up .38s var(--ease-out) both;animation-delay:40ms}.page-loading{animation:fade-in var(--duration-moderate) var(--ease-out) both}:focus-visible{transition:outline-offset var(--duration-fast) var(--ease-out)!important}.btn:active:not(:disabled):not(.btn--loading){transition-duration:60ms;transform:scale(.97)}[data-theme-transitioning],[data-theme-transitioning] :not(.diagram *),[data-theme-transitioning] :not(.diagram *):before,[data-theme-transitioning] :not(.diagram *):after{transition:background-color .32s var(--ease-in-out), border-color .32s var(--ease-in-out)!important}[data-lang-transitioning] #router-outlet{opacity:.75;transition:opacity .18s var(--ease-in-out)}@media (prefers-reduced-motion:reduce){.reveal,.reveal.is-visible{opacity:1!important;will-change:auto!important;transition:none!important;transform:none!important}#router-outlet,#router-outlet.is-transitioning,.footer,.footer.is-transitioning{opacity:1!important;transition:none!important;transform:none!important}.hero__inner .hero__badge,.hero__inner .hero__title,.hero__inner .hero__subtitle,.hero__inner .hero__actions,.hero.hero-ready .hero__badge,.hero.hero-ready .hero__title,.hero.hero-ready .hero__subtitle,.hero.hero-ready .hero__actions{opacity:1!important;transition:none!important;transform:none!important}.mobile-nav__item,.mobile-nav.is-open .mobile-nav__item,.hero:before,.hero:after{animation:none!important}[data-filter-item].filter-entering,.pattern-card:after,.breadcrumb,.pattern-detail__header,.catalog-page__header,.about-page__hero,.coming-soon-page,.search-page .search-page__header,.error-illustration,.error-page__code,.error-page__title,.error-page__desc,.error-page__actions,.page-loading{opacity:1!important;animation:none!important;transform:none!important}.header__nav-link:after,.header__logo-mark{transition:none!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;hanging-punctuation:first last;font-size:16px}body{min-height:100dvh;font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:var(--tracking-tight);color:var(--color-text-primary)}ul,ol{list-style:none}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none}table{border-collapse:collapse}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}::selection{background-color:var(--color-accent-subtle);color:var(--color-text-primary)}fieldset{border:none}td,th{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}h1{font-size:var(--text-4xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:var(--tracking-tight)}h2{font-size:var(--text-3xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);letter-spacing:var(--tracking-tight)}h3{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-snug);letter-spacing:var(--tracking-tight)}h4{font-size:var(--text-3xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug)}h5{font-size:var(--text-2xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug)}h6{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-normal)}p{font-size:var(--text-base);line-height:var(--line-height-relaxed);color:var(--color-text-secondary)}.lead{font-size:var(--text-lg);line-height:var(--line-height-relaxed);color:var(--color-text-secondary)}.caption{font-size:var(--text-xs);line-height:var(--line-height-normal);color:var(--color-text-tertiary)}.label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-wide);color:var(--color-text-secondary)}.overline{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-tertiary)}a{color:var(--color-text-link);text-underline-offset:3px;transition:var(--transition-colors);text-decoration:underline}a:hover{color:var(--color-text-link-hover)}strong,b{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}em,i{font-style:italic}code{font-family:var(--font-mono);background-color:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--palette-accent-500);padding:2px 6px;font-size:.875em}[data-theme=dark] code{color:var(--palette-accent-300)}blockquote{border-left:3px solid var(--color-accent);padding-left:var(--space-4);color:var(--color-text-secondary);font-style:italic}@media (min-width:641px){h1{font-size:var(--text-5xl)}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-3xl)}}@media (min-width:769px){h1{font-size:var(--text-6xl)}h2{font-size:var(--text-5xl)}h3{font-size:var(--text-4xl)}}.skip-link{top:var(--space-4);left:var(--space-4);z-index:var(--z-tooltip);padding:var(--space-2) var(--space-4);background-color:var(--color-accent);color:var(--color-accent-text);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);transform:translateY(calc(-100% - var(--space-8)));transition:transform var(--duration-fast) var(--ease-out);position:fixed}.skip-link:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:2px;transform:translateY(0)}#app{background-color:var(--color-bg-base);flex-direction:column;min-height:100dvh;display:flex}body.nav-open{overflow:hidden}.main{padding-block:var(--space-8);outline:none;flex:1}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%;max-width:var(--container-xl);padding-inline:var(--space-4);margin-inline-start:auto;margin-inline-end:auto}@media (min-width:640px){.container{padding-inline:var(--space-6)}}@media (min-width:1024px){.container{padding-inline:var(--space-8)}}.grid{gap:var(--grid-gap);grid-template-columns:1fr;display:grid}.grid--sm{gap:var(--grid-gap-sm)}.grid--lg{gap:var(--grid-gap-lg)}.grid--auto-sm{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.grid--auto-md{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.grid--auto-lg{grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}@media (min-width:640px){.grid{grid-template-columns:repeat(var(--grid-columns), 1fr)}}.layout--prose{max-width:var(--container-prose);margin-inline-start:auto;margin-inline-end:auto}.layout--sidebar{gap:var(--grid-gap-lg);grid-template-columns:1fr;align-items:start;display:grid}@media (min-width:1024px){.layout--sidebar{grid-template-columns:240px 1fr}}.layout--full{width:100vw;margin-inline-start:calc(50% - 50vw);margin-inline-end:calc(50% - 50vw)}.section{padding-block:var(--space-10)}.section--lg{padding-block:var(--space-16)}.section--xl{padding-block:var(--space-20)}.section--sm{padding-block:var(--space-8)}@media (min-width:768px){.section{padding-block:var(--space-16)}.section--lg{padding-block:var(--space-24)}.section--xl{padding-block:var(--space-32)}}.divider{border:none;border-top:1px solid var(--color-border);margin-block-start:0;margin-block-end:0}.header{z-index:var(--z-sticky);height:var(--header-height);background-color:var(--color-bg-surface);border-bottom:1px solid var(--color-border);transition:var(--transition-shadow), background-color var(--duration-normal) var(--ease-in-out);position:sticky;top:0}.header.is-scrolled{box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(12px);background-color:color-mix(in srgb, var(--color-bg-surface) 92%, transparent)}.header__inner{align-items:center;gap:var(--space-4);height:100%;display:flex}.header__logo{align-items:center;gap:var(--space-3);color:var(--color-text-primary);transition:opacity var(--duration-fast) var(--ease-in-out);flex-shrink:0;text-decoration:none;display:flex}.header__logo:hover{opacity:.8;text-decoration:none}.header__logo-mark{color:var(--color-accent);flex-shrink:0}.header__logo-text{flex-direction:column;line-height:1;display:none}@media (min-width:480px){.header__logo-text{display:flex}}.header__logo-name{font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);letter-spacing:var(--tracking-wide)}.header__logo-suffix{font-size:var(--text-sm);font-weight:var(--font-weight-bold);color:var(--color-text-primary);letter-spacing:var(--tracking-tight)}.header__nav{flex:1;align-items:center;margin-inline-start:var(--space-4);display:none}.header__nav-list{align-items:center;gap:var(--space-1);list-style:none;display:flex}.header__nav-link{align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;transition:var(--transition-colors), background-color var(--duration-fast) var(--ease-in-out);background:0 0;border:none;text-decoration:none;display:flex}.header__nav-link:hover,.header__nav-link[aria-current=page]{color:var(--color-text-primary);background-color:var(--color-bg-subtle);text-decoration:none}.header__nav-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.header__nav-chevron{transition:transform var(--duration-fast) var(--ease-in-out)}.header__nav-item--dropdown{position:relative}.header__dropdown{top:calc(100% + var(--space-2));min-width:180px;padding:var(--space-2);background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration-moderate) var(--ease-out), transform var(--duration-moderate) var(--ease-out), visibility var(--duration-moderate);z-index:var(--z-dropdown);list-style:none;position:absolute;left:50%;transform:translate(-50%)translateY(-8px)}.header__nav-item--dropdown:hover .header__dropdown,.header__nav-item--dropdown:focus-within .header__dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%)translateY(0)}.header__nav-item--dropdown:hover .header__nav-chevron,.header__nav-item--dropdown:focus-within .header__nav-chevron{transform:rotate(180deg)}.header__dropdown-link{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-md);transition:var(--transition-colors), background-color var(--duration-fast) var(--ease-in-out);text-decoration:none;display:flex}.header__dropdown-link:hover{color:var(--color-text-primary);background-color:var(--color-bg-subtle);text-decoration:none}.header__dropdown-dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.header__dropdown-dot--creational{background-color:var(--palette-category-creational)}.header__dropdown-dot--structural{background-color:var(--palette-category-structural)}.header__dropdown-dot--behavioral{background-color:var(--palette-category-behavioral)}.header__utils{align-items:center;gap:var(--space-1);flex-shrink:0;margin-inline-start:auto;display:flex}.header__btn{justify-content:center;align-items:center;gap:var(--space-1);border-radius:var(--radius-md);width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;transition:color var(--duration-fast) var(--ease-in-out), background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out);background:0 0;border:1px solid #0000;display:flex}.header__btn:hover{color:var(--color-text-primary);background-color:var(--color-bg-subtle);border-color:var(--color-border)}.header__btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.header__btn--lang{width:auto;padding-inline:var(--space-2);gap:var(--space-2)}.header__lang-code{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide)}.header__theme-icon--sun,.header__theme-icon--moon{transition:opacity var(--duration-fast) var(--ease-in-out)}:root .header__theme-icon--moon,[data-theme=dark] .header__theme-icon--sun{display:none}[data-theme=dark] .header__theme-icon--moon{display:block}.header__burger{border:1px solid var(--color-border);border-radius:var(--radius-md);width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors), background-color var(--duration-fast) var(--ease-in-out);background:0 0;justify-content:center;align-items:center;display:flex}.header__burger:hover{color:var(--color-text-primary);background-color:var(--color-bg-subtle)}.header__burger:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:root{--header-height:56px}@media (min-width:768px){:root{--header-height:64px}}@media (min-width:1024px){.header__nav{display:flex}.header__burger{display:none}}.mobile-nav{z-index:var(--z-modal);visibility:hidden;pointer-events:none;position:fixed;top:0;bottom:0;left:0;right:0}.mobile-nav.is-open{visibility:visible;pointer-events:auto}.mobile-nav__backdrop{-webkit-backdrop-filter:blur(4px);opacity:0;transition:opacity var(--duration-moderate) var(--ease-in-out);background-color:#00000080;position:absolute;top:0;bottom:0;left:0;right:0}.mobile-nav.is-open .mobile-nav__backdrop{opacity:1}.mobile-nav__panel{width:300px;max-width:calc(100vw - var(--space-12));background-color:var(--color-bg-elevated);border-left:1px solid var(--color-border);transition:transform var(--duration-moderate) var(--ease-in-out);overscroll-behavior:contain;flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%)}.mobile-nav.is-open .mobile-nav__panel{transform:translate(0)}.mobile-nav__header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);height:var(--header-height);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.mobile-nav__logo{align-items:center;gap:var(--space-2);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:var(--font-weight-bold);text-decoration:none;display:flex}.mobile-nav__logo:hover{opacity:.8;text-decoration:none}.mobile-nav__close{border-radius:var(--radius-md);width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;transition:var(--transition-colors), background-color var(--duration-fast) var(--ease-in-out);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.mobile-nav__close:hover{color:var(--color-text-primary);background-color:var(--color-bg-subtle)}.mobile-nav__close:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.mobile-nav__list{padding:var(--space-3) var(--space-3);gap:var(--space-1);flex-direction:column;flex:1;list-style:none;display:flex}.mobile-nav__item{flex-direction:column;display:flex}.mobile-nav__link{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3);font-size:var(--text-base);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-md);transition:var(--transition-colors), background-color var(--duration-fast) var(--ease-in-out);text-decoration:none;display:flex}.mobile-nav__link:hover,.mobile-nav__link[aria-current=page]{color:var(--color-text-primary);background-color:var(--color-bg-subtle);text-decoration:none}.mobile-nav__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.mobile-nav__group-label{padding:var(--space-3) var(--space-3) var(--space-1);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-tertiary);display:block}.mobile-nav__sub{gap:var(--space-1);flex-direction:column;padding-inline-start:var(--space-3);list-style:none;display:flex}.mobile-nav__link--sub{font-size:var(--text-sm)}.mobile-nav__dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.mobile-nav__dot--creational{background-color:var(--palette-category-creational)}.mobile-nav__dot--structural{background-color:var(--palette-category-structural)}.mobile-nav__dot--behavioral{background-color:var(--palette-category-behavioral)}.mobile-nav__footer{align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border);background-color:var(--color-bg-subtle);flex-shrink:0;display:flex}.mobile-nav__util-btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-colors), background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out);flex:1;justify-content:center;display:flex}.mobile-nav__util-btn:hover,.mobile-nav__util-btn:active{color:var(--color-accent);background-color:var(--color-bg-elevated);border-color:var(--color-accent)}.mobile-nav__util-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (min-width:1024px){.mobile-nav{display:none}}.footer{background-color:var(--color-bg-surface);border-top:1px solid var(--color-border);padding-block:var(--space-12) var(--space-8);margin-top:auto}.footer__inner{row-gap:var(--space-10);column-gap:var(--space-16);grid-template-columns:1fr;grid-template-areas:"brand""nav""bottom";display:grid}.footer__brand{gap:var(--space-4);flex-direction:column;grid-area:brand;max-width:100%;display:flex}.footer__logo{align-items:center;gap:var(--space-3);color:var(--color-text-primary);width:-moz-fit-content;width:fit-content;transition:opacity var(--duration-fast) var(--ease-in-out);text-decoration:none;display:flex}.footer__logo:hover{opacity:.8;text-decoration:none}.footer__logo-text{font-size:var(--text-sm);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.footer__tagline{font-size:var(--text-sm);line-height:var(--line-height-relaxed);color:var(--color-text-tertiary)}.footer__nav{gap:var(--space-6);flex-direction:column;grid-area:nav;display:flex}.footer__col{gap:var(--space-4);flex-direction:column;min-width:120px;display:flex}.footer__col-title{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-tertiary);line-height:var(--line-height-normal)}.footer__col-list{gap:var(--space-2);flex-direction:column;list-style:none;display:flex}.footer__link{width:-moz-fit-content;width:fit-content;font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);transition:color var(--duration-fast) var(--ease-in-out);text-decoration:none;position:relative}.footer__link:after{content:"";background-color:var(--color-accent);transform-origin:0;width:100%;height:1px;transition:transform var(--duration-fast) var(--ease-in-out);position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.footer__link:hover{color:var(--color-accent);text-decoration:none}.footer__link:hover:after{transform:scaleX(1)}.footer__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.footer__bottom{justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding-top:var(--space-6);border-top:1px solid var(--color-border-subtle);flex-direction:column;grid-area:bottom;display:flex}.footer__copyright{font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--line-height-normal)}.footer__github{align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);transition:color var(--duration-fast) var(--ease-in-out);text-decoration:none;display:flex}.footer__github:hover{color:var(--color-accent);text-decoration:none}@media (min-width:480px){.footer__nav{gap:var(--space-8);flex-direction:row}.footer__bottom{align-items:center;gap:var(--space-4);flex-direction:row}}@media (min-width:768px){.footer__inner{grid-template-columns:1fr auto;grid-template-areas:"brand nav""bottom bottom"}.footer__brand{max-width:320px}.footer__nav{gap:var(--space-12)}}.btn{justify-content:center;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out), transform var(--duration-fast) var(--ease-out), opacity var(--duration-fast) var(--ease-in-out);border:1px solid #0000;flex-shrink:0;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn--sm{height:32px;padding-inline:var(--space-3);font-size:var(--text-xs);gap:var(--space-1);border-radius:var(--radius-sm)}.btn--md{height:40px;padding-inline:var(--space-4);font-size:var(--text-sm)}.btn--lg{height:48px;padding-inline:var(--space-6);font-size:var(--text-base);gap:var(--space-3);border-radius:var(--radius-lg)}.btn--primary{background-color:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.btn--primary:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--color-accent-hover);border-color:var(--color-accent-hover);color:var(--color-accent-text);box-shadow:var(--shadow-lg);transform:translateY(-1px)}.btn--primary:active:not(:disabled){background-color:var(--color-accent-pressed);box-shadow:none;transform:scale(.98)}.btn--secondary{background-color:var(--color-bg-surface);color:var(--color-text-primary);border-color:var(--color-border)}.btn--secondary:hover:not(:disabled){background-color:var(--color-bg-subtle);border-color:var(--color-border-strong);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}.btn--secondary:active:not(:disabled){transform:scale(.98)}.btn--ghost{color:var(--color-text-primary);background:0 0;border-color:#0000}.btn--ghost:hover:not(:disabled){background-color:var(--color-bg-subtle);color:var(--color-text-primary)}.btn--ghost:active:not(:disabled){transform:scale(.98)}.btn--danger{background-color:var(--color-error);color:#fff;border-color:var(--color-error)}.btn--danger:hover:not(:disabled){filter:brightness(.9);color:#fff;box-shadow:var(--shadow-md)}.btn--danger:active:not(:disabled){transform:scale(.98)}.btn:focus-visible{box-shadow:var(--shadow-accent);outline:none}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;pointer-events:none}.btn--loading{cursor:wait;pointer-events:none}.btn__spinner{border-radius:var(--radius-full);width:14px;height:14px;animation:btn-spin var(--duration-slow) linear infinite;border:2px solid;border-top-color:#0000;flex-shrink:0}@keyframes btn-spin{to{transform:rotate(360deg)}}.icon-btn{border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out), transform var(--duration-fast) var(--ease-out);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.icon-btn--sm{width:32px;height:32px}.icon-btn--md{width:40px;height:40px}.icon-btn--lg{width:48px;height:48px}.icon-btn--round{border-radius:var(--radius-full)}.icon-btn--primary{background-color:var(--color-accent);color:var(--color-accent-text);border-color:var(--color-accent)}.icon-btn--secondary{background-color:var(--color-bg-surface);color:var(--color-text-primary);border-color:var(--color-border)}.icon-btn--ghost{color:var(--color-text-secondary);background:0 0}.icon-btn--danger{background-color:var(--color-error);color:#fff;border-color:var(--color-error)}.icon-btn--primary:hover{background-color:var(--color-accent-hover);box-shadow:var(--shadow-sm)}.icon-btn--secondary:hover{background-color:var(--color-bg-subtle);box-shadow:var(--shadow-sm)}.icon-btn--ghost:hover{background-color:var(--color-bg-subtle);color:var(--color-text-primary)}.icon-btn--danger:hover{filter:brightness(.9)}.icon-btn:active{transform:scale(.92)}.icon-btn:focus-visible{box-shadow:var(--shadow-accent);outline:none}.icon-btn:disabled,.icon-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;pointer-events:none}.card{background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:var(--space-6);transition:box-shadow var(--duration-moderate) var(--ease-out), border-color var(--duration-normal) var(--ease-in-out), transform var(--duration-moderate) var(--ease-out)}.card--pattern{gap:var(--space-4);padding:var(--space-5);cursor:pointer;color:inherit;border-top:3px solid #0000;flex-direction:column;text-decoration:none;display:flex}.card--pattern:hover{box-shadow:var(--shadow-lg);border-top-color:var(--color-accent);text-decoration:none;transform:translateY(-4px)}.card--pattern:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.card--feature{padding:var(--space-8);border-radius:var(--radius-2xl)}.card--feature:hover{box-shadow:var(--shadow-xl)}.card--code{background-color:var(--color-bg-subtle);border-color:var(--color-border-subtle);box-shadow:none;border-radius:var(--radius-md);padding:0;overflow:hidden}.card--stat{padding:var(--space-5) var(--space-6);border-left:3px solid var(--color-accent)}.card--interactive{cursor:pointer}.card--interactive:hover{box-shadow:var(--shadow-lg);border-color:var(--color-border-strong);transform:translateY(-4px)}.card--interactive:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.card__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.card__title{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug)}.card__subtitle{font-size:var(--text-sm);color:var(--color-text-tertiary);margin-top:var(--space-1)}.card__body{flex:1}.card__footer{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-subtle);display:flex}.card__metric{font-size:var(--text-5xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);letter-spacing:var(--tracking-tight);line-height:1}.card__metric-label{font-size:var(--text-sm);color:var(--color-text-tertiary);margin-top:var(--space-2)}.badge{align-items:center;gap:var(--space-1);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);white-space:nowrap;padding:3px var(--space-2);border-radius:var(--radius-full);border:1px solid #0000;line-height:1;display:inline-flex}.badge--sm{padding:2px 6px;font-size:10px}.badge--lg{font-size:var(--text-sm);padding:var(--space-1) var(--space-3)}.badge--default{background-color:var(--color-bg-subtle);color:var(--color-text-secondary);border-color:var(--color-border)}.badge--success{color:#16a34a;background-color:#22c55e1f;border-color:#22c55e40}.badge--warning{color:#b45309;background-color:#eab3081f;border-color:#eab30840}.badge--error{color:#dc2626;background-color:#ef44441f;border-color:#ef444440}.badge--info{color:#2563eb;background-color:#3b82f61f;border-color:#3b82f640}.badge--accent{background-color:var(--color-accent-subtle);color:var(--color-accent);border-color:#6366f140}[data-theme=dark] .badge--success{color:#4ade80}[data-theme=dark] .badge--warning{color:#fcd34d}[data-theme=dark] .badge--error{color:#f87171}[data-theme=dark] .badge--info{color:#60a5fa}.badge--creational{color:var(--palette-category-creational);background-color:#8b5cf61f;border-color:#8b5cf640}.badge--structural{color:var(--palette-category-structural);background-color:#06b6d41f;border-color:#06b6d440}.badge--behavioral{color:var(--palette-category-behavioral);background-color:#f59e0b1f;border-color:#f59e0b40}.badge__dot{border-radius:var(--radius-full);background-color:currentColor;flex-shrink:0;width:6px;height:6px}.tag{align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background-color:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-3);white-space:nowrap;transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);display:inline-flex}.tag--accent{background-color:var(--color-accent-subtle);color:var(--color-accent);border-color:#6366f140}.tag__remove{border-radius:var(--radius-full);width:16px;height:16px;color:inherit;cursor:pointer;opacity:.6;transition:opacity var(--duration-fast) var(--ease-in-out), background-color var(--duration-fast) var(--ease-in-out);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.tag__remove:hover{opacity:1;background-color:var(--color-border)}.tag__remove:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.chip{align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--space-2) var(--space-4);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);display:inline-flex}.chip:hover{background-color:var(--color-bg-subtle);border-color:var(--color-border-strong)}.chip--selected{background-color:var(--color-accent-subtle);border-color:var(--color-accent);color:var(--color-accent)}.chip--selected:hover{background-color:var(--color-accent-subtle);filter:brightness(.95)}.chip:focus-visible{box-shadow:var(--shadow-accent);outline:none}.chip:disabled,.chip[aria-disabled=true]{opacity:.45;cursor:not-allowed;pointer-events:none}.field{gap:var(--space-2);flex-direction:column;width:100%;display:flex}.field__label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);line-height:var(--line-height-normal)}.field__required{color:var(--color-error);margin-inline-start:var(--space-1)}.field__helper{font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--line-height-normal)}.field__error{font-size:var(--text-xs);color:var(--color-error);line-height:var(--line-height-normal);align-items:center;gap:var(--space-1);display:flex}.field__input,.field__textarea,.field__select{width:100%;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-regular);color:var(--color-text-primary);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);transition:border-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out), background-color var(--duration-fast) var(--ease-in-out);-webkit-appearance:none;appearance:none;outline:none}.field__input::placeholder,.field__textarea::placeholder{color:var(--color-text-disabled)}.field__input:hover:not(:disabled):not([aria-invalid=true]),.field__textarea:hover:not(:disabled):not([aria-invalid=true]),.field__select:hover:not(:disabled):not([aria-invalid=true]){border-color:var(--color-border-strong)}.field__input:focus,.field__textarea:focus,.field__select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #6366f133}.field__input:disabled,.field__textarea:disabled,.field__select:disabled{opacity:.55;cursor:not-allowed;background-color:var(--color-bg-subtle)}.field--error .field__input,.field--error .field__textarea,.field--error .field__select,.field__input[aria-invalid=true],.field__textarea[aria-invalid=true],.field__select[aria-invalid=true]{border-color:var(--color-error)}.field--error .field__input:focus,.field--error .field__textarea:focus,.field--error .field__select:focus{box-shadow:0 0 0 3px #ef444433}.field__input{height:40px;line-height:1}.field__input--sm{height:32px;font-size:var(--text-xs);padding:var(--space-1) var(--space-2)}.field__input--lg{height:48px;font-size:var(--text-base);padding:var(--space-3) var(--space-4)}.search-input{align-items:center;display:flex;position:relative}.search-input__icon{left:var(--space-3);color:var(--color-text-tertiary);pointer-events:none;flex-shrink:0;position:absolute}.search-input__input{padding-inline-start:calc(var(--space-3) + 20px + var(--space-2))}.search-input__clear{right:var(--space-2);border-radius:var(--radius-sm);width:24px;height:24px;color:var(--color-text-tertiary);cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute}.search-input__clear:hover{color:var(--color-text-primary)}.search-input:has(input:not(:placeholder-shown)) .search-input__clear{opacity:1;pointer-events:auto}.field__textarea{resize:vertical;min-height:120px;line-height:var(--line-height-relaxed)}.field__textarea--sm{min-height:80px}.field__textarea--lg{min-height:200px}.field__select{height:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%236B7280' stroke-width='1.5'%3E%3Cpolyline points='4 6 8 10 12 6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;cursor:pointer;padding-inline-end:var(--space-8)}.field__select:focus{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%236366F1' stroke-width='1.5'%3E%3Cpolyline points='4 6 8 10 12 6'/%3E%3C/svg%3E")}.checkbox{align-items:flex-start;gap:var(--space-3);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.checkbox--disabled{opacity:.45;cursor:not-allowed}.checkbox__input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.checkbox__box{border:2px solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-bg-surface);width:18px;min-width:18px;height:18px;transition:border-color var(--duration-fast) var(--ease-in-out), background-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);justify-content:center;align-items:center;margin-top:1px;display:flex}.checkbox__check{width:10px;height:10px;color:var(--color-accent-text);opacity:0;transition:opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);transform:scale(.5)}.checkbox__input:checked+.checkbox__box{background-color:var(--color-accent);border-color:var(--color-accent)}.checkbox__input:checked+.checkbox__box .checkbox__check{opacity:1;transform:scale(1)}.checkbox__input:focus-visible+.checkbox__box{box-shadow:var(--shadow-accent)}.checkbox:hover .checkbox__box{border-color:var(--color-accent)}.checkbox__label{font-size:var(--text-sm);color:var(--color-text-primary);line-height:1.4}.radio{align-items:flex-start;gap:var(--space-3);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.radio--disabled{opacity:.45;cursor:not-allowed}.radio__input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.radio__circle{border:2px solid var(--color-border-strong);border-radius:var(--radius-full);background-color:var(--color-bg-surface);width:18px;min-width:18px;height:18px;transition:border-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);justify-content:center;align-items:center;margin-top:1px;display:flex}.radio__dot{border-radius:var(--radius-full);background-color:var(--color-accent-text);opacity:0;width:8px;height:8px;transition:opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);transform:scale(0)}.radio__input:checked+.radio__circle{border-color:var(--color-accent);background-color:var(--color-accent)}.radio__input:checked+.radio__circle .radio__dot{opacity:1;transform:scale(1)}.radio__input:focus-visible+.radio__circle{box-shadow:var(--shadow-accent)}.radio:hover .radio__circle{border-color:var(--color-accent)}.radio__label{font-size:var(--text-sm);color:var(--color-text-primary);line-height:1.4}.divider{align-items:center;gap:var(--space-4);width:100%;color:var(--color-text-tertiary);font-size:var(--text-xs);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-wide);white-space:nowrap;display:flex}.divider:before,.divider:after{content:"";background-color:var(--color-border);flex:1;height:1px}.divider:empty:after{display:none}.divider:empty{background-color:var(--color-border);height:1px;display:block}.divider--subtle:before,.divider--subtle:after{background-color:var(--color-border-subtle)}.divider--strong:before,.divider--strong:after{background-color:var(--color-border-strong)}.divider--vertical{background-color:var(--color-border);align-self:stretch;width:1px;height:100%;min-height:1em;display:inline-block}.tooltip-wrap{align-items:center;display:inline-flex;position:relative}.tooltip-wrap:after{content:attr(data-tooltip);z-index:var(--z-tooltip);padding:var(--space-2) var(--space-3);background-color:var(--palette-gray-900);color:var(--palette-gray-0);font-size:var(--text-xs);font-weight:var(--font-weight-medium);font-family:var(--font-sans);line-height:var(--line-height-normal);white-space:nowrap;text-wrap:balance;border-radius:var(--radius-sm);max-width:240px;box-shadow:var(--shadow-lg);pointer-events:none;opacity:0;transition:opacity var(--duration-moderate) var(--ease-out), transform var(--duration-moderate) var(--ease-out);position:absolute;transform:scale(.92)}[data-theme=dark] .tooltip-wrap:after{background-color:var(--palette-gray-100);color:var(--palette-gray-900)}.tooltip-wrap:before{content:"";z-index:calc(var(--z-tooltip) + 1);pointer-events:none;opacity:0;width:0;height:0;transition:opacity var(--duration-moderate) var(--ease-out);position:absolute}.tooltip-wrap:not([data-tooltip-info]):hover:after,.tooltip-wrap:hover:before,.tooltip-wrap:not([data-tooltip-info]):focus-within:after,.tooltip-wrap:focus-within:before{opacity:1;transform:scale(1)}.tooltip-wrap,.tooltip-wrap[data-tooltip-pos=top]{--tt-offset:calc(100% + var(--space-2))}.tooltip-wrap:after,.tooltip-wrap[data-tooltip-pos=top]:after{bottom:var(--tt-offset);left:50%;transform:translate(-50%)scale(.92)}.tooltip-wrap:not([data-tooltip-info]):hover:after,.tooltip-wrap[data-tooltip-pos=top]:not([data-tooltip-info]):hover:after,.tooltip-wrap:not([data-tooltip-info]):focus-within:after,.tooltip-wrap[data-tooltip-pos=top]:not([data-tooltip-info]):focus-within:after{transform:translate(-50%)scale(1)}.tooltip-wrap:before,.tooltip-wrap[data-tooltip-pos=top]:before{border:5px solid #0000;border-top-color:var(--palette-gray-900);bottom:100%;left:50%;transform:translate(-50%)}[data-theme=dark] .tooltip-wrap:before,[data-theme=dark] .tooltip-wrap[data-tooltip-pos=top]:before{border-top-color:var(--palette-gray-100)}.tooltip-wrap[data-tooltip-pos=bottom]:after{top:calc(100% + var(--space-2));bottom:auto;left:50%;transform:translate(-50%)scale(.92)}.tooltip-wrap[data-tooltip-pos=bottom]:not([data-tooltip-info]):hover:after,.tooltip-wrap[data-tooltip-pos=bottom]:not([data-tooltip-info]):focus-within:after{transform:translate(-50%)scale(1)}.tooltip-wrap[data-tooltip-pos=bottom]:before{border:5px solid #0000;border-bottom-color:var(--palette-gray-900);top:100%;bottom:auto;left:50%;transform:translate(-50%)}[data-theme=dark] .tooltip-wrap[data-tooltip-pos=bottom]:before{border-bottom-color:var(--palette-gray-100)}.tooltip-wrap[data-tooltip-pos=left]:after{right:calc(100% + var(--space-2));top:50%;bottom:auto;left:auto;transform:translateY(-50%)scale(.92)}.tooltip-wrap[data-tooltip-pos=left]:hover:after,.tooltip-wrap[data-tooltip-pos=left]:focus-within:after{transform:translateY(-50%)scale(1)}.tooltip-wrap[data-tooltip-pos=left]:before{border:5px solid #0000;border-left-color:var(--palette-gray-900);top:50%;bottom:auto;left:auto;right:100%;transform:translateY(-50%)}.tooltip-wrap[data-tooltip-pos=right]:after{left:calc(100% + var(--space-2));top:50%;bottom:auto;transform:translateY(-50%)scale(.92)}.tooltip-wrap[data-tooltip-pos=right]:hover:after,.tooltip-wrap[data-tooltip-pos=right]:focus-within:after{transform:translateY(-50%)scale(1)}.tooltip-wrap[data-tooltip-pos=right]:before{border:5px solid #0000;border-right-color:var(--palette-gray-900);top:50%;bottom:auto;left:100%;transform:translateY(-50%)}.tooltip-wrap[data-tooltip-info]:after{white-space:normal;text-align:left;text-wrap:pretty;width:max-content;min-width:260px;max-width:340px;font-weight:var(--font-weight-normal);font-size:var(--text-sm);line-height:var(--line-height-relaxed);padding:var(--space-4);border-radius:var(--radius-lg);background-color:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border);box-shadow:var(--shadow-xl);transition:opacity .11s var(--ease-out), transform .11s var(--ease-out)}[data-theme=dark] .tooltip-wrap[data-tooltip-info]:after{background-color:var(--color-bg-elevated);color:var(--color-text-primary);border-color:var(--color-border)}.tooltip-wrap[data-tooltip-info]:before{display:none}.tooltip-wrap[data-tooltip-info]{cursor:default;outline:none}.tooltip-wrap[data-tooltip-info]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.tooltip-wrap[data-tooltip-info][data-tooltip-pos=bottom]:after{top:calc(100% + var(--space-2));transform:translateX(calc(-50% + var(--tt-shift-x,0px))) translateY(-6px) scale(.98);bottom:auto;left:50%}.tooltip-wrap[data-tooltip-info][data-tooltip-pos=top]:after{bottom:calc(100% + var(--space-2));transform:translateX(calc(-50% + var(--tt-shift-x,0px))) translateY(6px) scale(.98);top:auto;left:50%}.tooltip-wrap[data-tooltip-info].is-open[data-tooltip-pos=bottom]:after,.tooltip-wrap[data-tooltip-info].is-open[data-tooltip-pos=top]:after{opacity:1;transform:translateX(calc(-50% + var(--tt-shift-x,0px))) translateY(0) scale(1)}.modal{z-index:var(--z-modal);padding:var(--space-4);visibility:hidden;pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.modal.is-open{visibility:visible;pointer-events:auto}.modal__backdrop{-webkit-backdrop-filter:blur(4px);opacity:0;transition:opacity var(--duration-moderate) var(--ease-in-out);cursor:pointer;background-color:#0000008c;position:absolute;top:0;bottom:0;left:0;right:0}.modal.is-open .modal__backdrop{opacity:1}.modal__panel{width:100%;max-height:calc(100dvh - var(--space-8));background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);opacity:0;transition:opacity var(--duration-moderate) var(--ease-out), transform var(--duration-moderate) var(--ease-out);flex-direction:column;display:flex;position:relative;overflow:hidden;transform:scale(.94)translateY(8px)}.modal.is-open .modal__panel{opacity:1;transform:scale(1)translateY(0)}.modal__panel--sm{max-width:var(--container-xs)}.modal__panel--md{max-width:560px}.modal__panel--lg{max-width:var(--container-md)}.modal__panel--xl{max-width:var(--container-lg)}.modal__header{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.modal__title{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug)}.modal__close{color:var(--color-text-tertiary);flex-shrink:0}.modal__close:hover{color:var(--color-text-primary)}.modal__body{padding:var(--space-6);overscroll-behavior:contain;flex:1;overflow-y:auto}.modal__footer{justify-content:flex-end;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border);background-color:var(--color-bg-surface);flex-shrink:0;display:flex}body.modal-open{overflow:hidden}.accordion{gap:var(--space-2);flex-direction:column;width:100%;display:flex}.accordion__item{background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:border-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);overflow:hidden}.accordion__item:has(.accordion__trigger:hover){border-color:var(--color-border-accent);box-shadow:0 0 0 1px #6366f126,0 8px 24px #6366f11f}.accordion__item.is-open{border-color:var(--color-border-strong)}.accordion__heading{margin:0}.accordion__trigger{width:100%;padding:var(--space-4) var(--space-5);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:var(--space-4);transition:background-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);background:0 0;border:none;display:flex}.accordion__trigger:hover{background-color:var(--color-bg-subtle)}.accordion__trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.accordion__icon{color:var(--color-text-tertiary);transition:transform var(--duration-moderate) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);flex-shrink:0}.accordion__item.is-open .accordion__icon{color:var(--color-accent);transform:rotate(180deg)}.accordion__panel{max-height:0;transition:max-height var(--duration-moderate) var(--ease-in-out);overflow:hidden}.accordion__content{padding:0 var(--space-5) var(--space-5);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);border-top:1px solid var(--color-border-subtle);padding-top:var(--space-4)}.accordion__content p+p{margin-top:var(--space-3)}.tabs{flex-direction:column;gap:0;width:100%;display:flex}.tabs__list{align-items:flex-end;gap:var(--space-1);border-bottom:1px solid var(--color-border);overscroll-behavior-x:contain;touch-action:pan-x;scrollbar-width:none;-ms-overflow-style:none;min-width:0;padding-inline:var(--space-1);display:flex;overflow-x:auto}.tabs__list::-webkit-scrollbar{display:none}.tabs--pills .tabs__list{background-color:var(--color-bg-subtle);padding:var(--space-1);border-radius:var(--radius-lg);gap:var(--space-1);border-bottom:none}.tabs__tab{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);cursor:pointer;white-space:nowrap;touch-action:pan-x;transition:color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out);background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;margin-bottom:-1px;display:flex}.tabs__tab:hover{color:var(--color-text-primary);border-bottom-color:var(--color-border-strong)}.tabs__tab[aria-selected=true]{color:var(--color-accent);border-bottom-color:var(--color-accent);font-weight:var(--font-weight-semibold)}.tabs__tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm) var(--radius-sm) 0 0}.tabs--pills .tabs__tab{border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);border:none;margin-bottom:0}.tabs--pills .tabs__tab[aria-selected=true]{background-color:var(--color-bg-surface);color:var(--color-text-primary);box-shadow:var(--shadow-sm);border-color:#0000}.tabs__count{min-width:20px;height:20px;font-size:11px;font-weight:var(--font-weight-semibold);background-color:var(--color-bg-subtle);color:var(--color-text-tertiary);border-radius:var(--radius-full);justify-content:center;align-items:center;padding-inline-start:6px;padding-inline-end:6px;display:inline-flex}.tabs__tab[aria-selected=true] .tabs__count{background-color:var(--color-accent-subtle);color:var(--color-accent)}.tabs__panels{padding-top:var(--space-5)}.tabs__panel{animation:tab-in var(--duration-moderate) var(--ease-out) both}.tabs__panel[hidden]{display:none}@keyframes tab-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.breadcrumb{flex-wrap:wrap;align-items:center;display:flex}.breadcrumb__list{align-items:center;gap:var(--space-1);flex-wrap:wrap;list-style:none;display:flex}.breadcrumb__item{align-items:center;gap:var(--space-1);display:flex}.breadcrumb__item+.breadcrumb__item:before{content:"";background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%239CA3AF' stroke-width='1.5'%3E%3Cpolyline points='6 4 10 8 6 12'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;flex-shrink:0;width:16px;height:16px;display:inline-block}.breadcrumb__link{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);transition:color var(--duration-fast) var(--ease-in-out);white-space:nowrap;text-decoration:none}.breadcrumb__link:hover{color:var(--color-text-primary);text-decoration:none}.breadcrumb__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.breadcrumb__current{align-items:center;gap:var(--space-1);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;display:inline-flex}.breadcrumb__home{color:var(--color-text-tertiary);transition:color var(--duration-fast) var(--ease-in-out);align-items:center;display:flex}.breadcrumb__home:hover{color:var(--color-text-primary)}.pagination{justify-content:center;align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.pagination__btn{min-width:36px;height:36px;padding-inline:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out);background-color:#0000;border:1px solid #0000;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.pagination__btn:hover:not(:disabled){background-color:var(--color-bg-subtle);border-color:var(--color-border);color:var(--color-text-primary)}.pagination__btn:focus-visible{box-shadow:var(--shadow-accent);outline:none}.pagination__btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.pagination__btn--active{background-color:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text);font-weight:var(--font-weight-semibold);pointer-events:none}.pagination__btn--prev,.pagination__btn--next{gap:var(--space-1);padding-inline:var(--space-3)}.pagination__ellipsis{min-width:36px;height:36px;font-size:var(--text-sm);color:var(--color-text-tertiary);cursor:default;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:inline-flex}.code-block{background-color:var(--code-bg);border:1px solid var(--code-border);border-radius:var(--radius-lg);font-family:var(--font-mono);line-height:var(--line-height-code);box-shadow:var(--code-shadow);overflow:hidden}.code-block ::selection{background-color:var(--code-selection-bg);color:var(--code-text)}.playground__textarea::selection{background-color:var(--code-selection-bg);color:var(--code-text)}.code-block__header{padding:var(--space-3) var(--space-4);background-color:var(--code-header-bg);border-bottom:1px solid var(--code-border);justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.code-block__lang{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--code-comment)}.code-block__dots{align-items:center;gap:6px;display:flex}.code-block__dot{border-radius:var(--radius-full);width:12px;height:12px}.code-block__dot--red{background-color:#ff5f57}.code-block__dot--yellow{background-color:#ffbd2e}.code-block__dot--green{background-color:#28ca41}.code-block__body{scrollbar-width:thin;scrollbar-color:var(--code-scrollbar) transparent;overflow-x:auto}.code-block__body::-webkit-scrollbar{height:4px}.code-block__body::-webkit-scrollbar-track{background:0 0}.code-block__body::-webkit-scrollbar-thumb{background-color:var(--code-scrollbar);border-radius:2px}.code-block__pre{padding:var(--space-5) var(--space-6);margin:0;overflow:visible}.code-block__code{font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--line-height-code);color:var(--code-text);white-space:pre;-moz-tab-size:2;tab-size:2;background-color:#0000;border:none;border-radius:0;padding:0;display:block}.code-block__line{margin-inline:calc(-1 * var(--space-6));padding-inline:var(--space-6);transition:background-color var(--duration-fast) var(--ease-in-out);display:block}.code-block__line.is-active-line{background-color:var(--color-accent-subtle);box-shadow:inset 3px 0 0 var(--color-accent)}[data-theme=light] .code-block__line.is-active-line{background-color:var(--palette-accent-100)}.code-block--numbered .code-block__code{counter-reset:line}.code-block--numbered .code-block__line{counter-increment:line}.code-block--numbered .code-block__line:before{content:counter(line);text-align:right;width:2.5em;margin-right:var(--space-4);color:var(--code-comment);-webkit-user-select:none;user-select:none;opacity:.5;display:inline-block}.token-keyword{color:var(--code-keyword)}.token-string{color:var(--code-string)}.token-number{color:var(--code-number)}.token-comment{color:var(--code-comment);font-style:italic}.token-function{color:var(--code-function)}.token-class{color:var(--code-class)}.token-variable{color:var(--code-variable)}.token-operator{color:var(--code-operator)}.token-punctuation{color:var(--code-punctuation)}.inline-code{font-family:var(--font-mono);background-color:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--palette-accent-500);padding:2px 6px;font-size:.875em}[data-theme=dark] .inline-code{color:var(--palette-accent-300)}.copy-btn{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--code-comment);border:1px solid var(--code-btn-border);border-radius:var(--radius-sm);cursor:pointer;transition:color var(--duration-fast) var(--ease-in-out), background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out);background:0 0;display:inline-flex}.copy-btn:hover{color:var(--code-text);background-color:var(--code-btn-hover-bg);border-color:var(--code-btn-hover-border)}.copy-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.copy-btn.is-copied{color:var(--palette-green-500);border-color:#22c55e4d}.copy-btn.is-copy-error{color:var(--color-error);border-color:var(--color-error)}.copy-btn__icon{flex-shrink:0}.alert{align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-4) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-surface);border-left-width:4px;display:flex;position:relative}.alert--info{border-color:var(--palette-blue-500);background-color:#3b82f60f}.alert--success{border-color:var(--palette-green-500);background-color:#22c55e0f}.alert--warning{border-color:var(--palette-yellow-500);background-color:#eab3080f}.alert--error{border-color:var(--palette-red-500);background-color:#ef44440f}.alert__icon{flex-shrink:0;margin-top:1px}.alert--info .alert__icon{color:var(--palette-blue-500)}.alert--success .alert__icon{color:var(--palette-green-500)}.alert--warning .alert__icon{color:var(--palette-yellow-500)}.alert--error .alert__icon{color:var(--palette-red-500)}.alert__content{gap:var(--space-1);flex-direction:column;flex:1;display:flex}.alert__title{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug)}.alert__message{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.alert__close{border-radius:var(--radius-sm);width:24px;height:24px;color:var(--color-text-tertiary);cursor:pointer;transition:color var(--duration-fast) var(--ease-in-out), background-color var(--duration-fast) var(--ease-in-out);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:flex}.alert__close:hover{color:var(--color-text-primary);background-color:var(--color-bg-subtle)}.alert__close:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.alert.is-dismissed{animation:alert-dismiss var(--duration-moderate) var(--ease-in) forwards}@keyframes alert-dismiss{to{opacity:0;border:none;height:0;margin:0;padding:0;transform:translate(8px)}}.quiz,.quiz__question{gap:var(--space-4);flex-direction:column;display:flex}.quiz__question[hidden]{display:none}.quiz__progress{font-size:var(--text-sm);color:var(--color-text-tertiary);font-weight:var(--font-weight-medium)}.quiz__prompt-row{align-items:flex-start;gap:var(--space-2);display:flex}.quiz__prompt{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.quiz__prompt-row [data-quiz-hint-btn]{color:var(--color-warning,#d97706);flex-shrink:0;transition:color .15s,background-color .15s,box-shadow .15s}.quiz__prompt-row [data-quiz-hint-btn]:hover{color:var(--color-warning,#d97706);background-color:#d9770624;box-shadow:0 0 0 4px #d9770624}.quiz__hint-wrap{grid-template-rows:0fr;transition:grid-template-rows .25s;display:grid}.quiz__hint-wrap.is-open{grid-template-rows:1fr}.quiz__hint-wrap>.quiz__hint{opacity:0;min-height:0;transition:opacity .2s;overflow:hidden}.quiz__hint-wrap.is-open>.quiz__hint{opacity:1;transition-delay:50ms}.quiz__hint{padding:0 var(--space-4);border-radius:var(--radius-lg);color:var(--color-text-secondary);font-size:var(--text-sm);border:1px solid #0000;line-height:1.6}.quiz__hint-wrap.is-open>.quiz__hint{padding:var(--space-3) var(--space-4);background-color:#d977061a;border-color:#d977064d}.quiz__options{gap:var(--space-2);flex-direction:column;display:flex}.quiz__option{align-items:center;gap:var(--space-3);text-align:left;width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-surface);color:var(--color-text-primary);font-size:var(--text-base);cursor:pointer;transition:border-color .15s,background-color .15s;display:flex}.quiz__option:hover:not(:disabled){border-color:var(--color-accent)}.quiz__option:disabled{cursor:default}.quiz__option-marker{border-radius:var(--radius-full);border:2px solid var(--color-border);flex-shrink:0;width:18px;height:18px}.quiz__option.is-correct{border-color:var(--color-success);background-color:#22c55e14}.quiz__option.is-correct .quiz__option-marker{border-color:var(--color-success);background-color:var(--color-success)}.quiz__option.is-incorrect{border-color:var(--color-error);background-color:#ef444414}.quiz__option.is-incorrect .quiz__option-marker{border-color:var(--color-error);background-color:var(--color-error)}.quiz__feedback-text{align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-sm);color:var(--color-text-primary);border:1px solid #0000;border-left-width:4px;line-height:1.6;display:flex}.quiz__feedback-icon{flex-shrink:0;margin-top:2px}.quiz__feedback-text--correct{border-color:var(--color-success);background-color:#22c55e1f}.quiz__feedback-text--correct .quiz__feedback-icon,.quiz__feedback-text--correct .quiz__feedback-label{color:var(--color-success)}.quiz__feedback-text--incorrect{border-color:var(--color-error);background-color:#ef44441f}.quiz__feedback-text--incorrect .quiz__feedback-icon,.quiz__feedback-text--incorrect .quiz__feedback-label{color:var(--color-error)}.quiz__results{align-items:flex-start;gap:var(--space-3);padding:var(--space-6) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-subtle);flex-direction:column;display:flex}.quiz__results.is-pass{border-color:var(--color-success);background-color:#22c55e14}.quiz__results.is-warn{border-color:var(--color-warning);background-color:#eab30814}.quiz__results.is-fail{border-color:var(--color-error);background-color:#ef44440f}.quiz__result-icon{color:var(--color-text-tertiary)}.quiz__results.is-pass .quiz__result-icon{color:var(--color-success)}.quiz__results.is-warn .quiz__result-icon{color:var(--color-warning)}.quiz__results.is-fail .quiz__result-icon{color:var(--color-error)}.quiz__result-icon [hidden]{display:none}.quiz__result-title{font-size:var(--text-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.quiz__result-message{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6}.quiz__next{align-self:flex-start}.quiz__next[hidden],.quiz__feedback[hidden],.quiz__feedback-text[hidden],.quiz__results[hidden]{display:none}.quiz__score{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.quiz__report{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-tertiary);align-self:flex-start;text-decoration:none;display:inline-flex}.quiz__report:hover{color:var(--color-text-secondary);text-decoration:underline}.walkthrough-wrap{align-items:start;gap:var(--space-4);grid-template-columns:1fr;display:grid}.walkthrough-wrap .code-block__body{max-height:45vh;overflow-y:auto}.walkthrough{gap:var(--space-3);padding:var(--space-4) var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-subtle);flex-direction:column;display:flex;position:static}@media (min-width:861px){.walkthrough-wrap{grid-template-columns:minmax(0,1fr) 300px}.walkthrough-wrap .code-block__body{max-height:60vh}.walkthrough{top:calc(var(--header-height) + var(--space-4));position:sticky}}.walkthrough__steps{display:grid}.walkthrough__step{grid-area:1/1}.walkthrough__step[hidden]{visibility:hidden;pointer-events:none;display:block}.walkthrough__progress{font-size:var(--text-sm);color:var(--color-text-tertiary);font-weight:var(--font-weight-medium)}.walkthrough__title{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.walkthrough__explanation{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6}.walkthrough__nav{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.walkthrough__prev,.walkthrough__next{flex:1;justify-content:center}.walkthrough__dots{justify-content:center;align-items:center;gap:var(--space-2);flex-basis:100%;order:-1;display:flex}.walkthrough__dot{border-radius:var(--radius-full);background-color:var(--color-border);width:6px;height:6px}.walkthrough__dot.is-active{background-color:var(--color-accent)}.walkthrough__next--restart svg{flex-shrink:0}.playground__note{margin-bottom:var(--space-3);font-size:var(--text-sm);color:var(--color-text-tertiary)}.playground{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (min-width:861px){.playground{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.playground__pane{background-color:var(--code-bg);border:1px solid var(--code-border);border-radius:var(--radius-lg);box-shadow:var(--code-shadow);flex-direction:column;display:flex;overflow:hidden}.playground__pane-header{padding:var(--space-3) var(--space-4);background-color:var(--code-header-bg);border-bottom:1px solid var(--code-border);justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.playground__pane-label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--code-comment)}.playground__actions{gap:var(--space-2);display:flex}.playground__textarea{min-height:320px;padding:var(--space-5) var(--space-6);color:var(--code-text);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--line-height-code);resize:none;background:0 0;border:0;flex:1}.playground__textarea:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.playground__console{min-height:320px;padding:var(--space-5) var(--space-6);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--line-height-code);flex:1;overflow-y:auto}.playground__console-hint{color:var(--code-comment)}.playground__console-line{white-space:pre-wrap;word-break:break-word;padding-block:var(--space-1);border-bottom:1px solid var(--code-border)}.playground__console-line:last-child{border-bottom:0}.playground__console-line--error{color:var(--color-error)}.playground__console-line--warn{color:var(--color-warning)}.empty-state{text-align:center;justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-16) var(--space-8);width:100%;max-width:var(--container-sm);flex-direction:column;margin-inline-start:auto;margin-inline-end:auto;display:flex}.empty-state__icon{background-color:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-xl);width:72px;height:72px;color:var(--color-text-tertiary);margin-bottom:var(--space-2);justify-content:center;align-items:center;display:flex}.empty-state__title{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug)}.empty-state__description{font-size:var(--text-base);color:var(--color-text-tertiary);line-height:var(--line-height-relaxed);max-width:40ch}.empty-state__actions{justify-content:center;align-items:center;gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.empty-state--sm{padding:var(--space-8) var(--space-4)}.empty-state--sm .empty-state__icon{border-radius:var(--radius-lg);width:48px;height:48px}.empty-state--sm .empty-state__title{font-size:var(--text-base)}.empty-state--sm .empty-state__description{font-size:var(--text-sm)}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton{background-color:var(--color-bg-subtle);border-radius:var(--radius-sm);animation:skeleton-pulse var(--duration-crawl) var(--ease-in-out) infinite;display:block}.skeleton--text{border-radius:var(--radius-sm);height:1em}.skeleton--text-sm{height:.75em}.skeleton--text-lg{height:1.25em}.skeleton--avatar{border-radius:var(--radius-full);width:40px;height:40px}.skeleton--avatar-sm{width:32px;height:32px}.skeleton--avatar-lg{width:56px;height:56px}.skeleton--btn{border-radius:var(--radius-md);width:120px;height:40px}.skeleton--image{border-radius:var(--radius-lg);width:100%;padding-bottom:56.25%}.skeleton--badge{border-radius:var(--radius-full);width:60px;height:20px}.skeleton--card{padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-lg);gap:var(--space-4);background-color:var(--color-bg-surface);flex-direction:column;animation:none;display:flex}.spinner{animation:spinner-rotate var(--duration-slow) linear infinite;color:var(--color-accent);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.spinner--sm{width:var(--icon-sm);height:var(--icon-sm)}.spinner--md{width:var(--icon-lg);height:var(--icon-lg)}.spinner--lg{width:var(--icon-xl);height:var(--icon-xl)}.spinner--xl{width:var(--icon-2xl);height:var(--icon-2xl)}.spinner--muted{color:var(--color-text-tertiary)}.spinner--white{color:#fff}.spinner--success{color:var(--color-success)}.spinner--error{color:var(--color-error)}.spinner-overlay{background-color:color-mix(in srgb, var(--color-bg-base) 80%, transparent);border-radius:inherit;z-index:var(--z-raised);justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.progress{background-color:var(--color-bg-subtle);border-radius:var(--radius-full);width:100%;height:8px;overflow:hidden}.progress--sm{height:4px}.progress--lg{height:12px}.progress__bar{background-color:var(--color-accent);border-radius:var(--radius-full);height:100%;transition:width var(--duration-slow) var(--ease-out);min-width:0;max-width:100%}.progress--success .progress__bar{background-color:var(--color-success)}.progress--warning .progress__bar{background-color:var(--color-warning)}.progress--error .progress__bar{background-color:var(--color-error)}.progress--indeterminate .progress__bar{animation:progress-slide var(--duration-crawl) var(--ease-in-out) infinite;width:40%!important}@keyframes progress-slide{0%{transform:translate(-150%)}to{transform:translate(350%)}}.progress-wrap{gap:var(--space-2);flex-direction:column;display:flex}.progress-wrap__header{justify-content:space-between;align-items:center;display:flex}.progress-wrap__label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.progress-wrap__value{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-tertiary)}.diagram{--diagram-accent:var(--color-accent);margin:0}.diagram--creational{--diagram-accent:var(--palette-category-creational)}.diagram--structural{--diagram-accent:var(--palette-category-structural)}.diagram--behavioral{--diagram-accent:var(--palette-category-behavioral)}.diagram__viewport{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-5);box-shadow:var(--shadow-sm);-webkit-overflow-scrolling:touch;overflow-x:auto}@media (min-width:769px){.diagram__viewport{padding:var(--space-6)}}[data-theme=light] .diagram__viewport{background:var(--color-bg-subtle)}.diagram__svg{width:100%;max-width:100%;height:auto;font-family:var(--font-sans);display:block}.diagram__node{cursor:default;outline:none}.diagram__node-box{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1px;transition:var(--transition-colors)}.diagram__node--abstract .diagram__node-box{stroke-dasharray:5 4}.diagram__node--client .diagram__node-box{fill:var(--color-bg-subtle)}[data-theme=light] .diagram__node--client .diagram__node-box{fill:var(--color-bg-base)}.diagram__node-accent{fill:var(--diagram-accent)}.diagram__node-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);font-size:14px}.diagram__node-member{fill:var(--color-text-secondary);font-family:var(--font-mono);font-size:12px}.diagram__node-sep{stroke:var(--color-border-subtle);stroke-width:1px}.diagram__node:hover .diagram__node-box{stroke:var(--color-border-strong)}.diagram__node:focus-visible .diagram__node-box{stroke:var(--diagram-accent);stroke-width:2px}.diagram__edge{fill:none;stroke:var(--color-border-strong);stroke-width:1.5px}.diagram__edge--dashed{stroke-dasharray:6 4}.diagram__edge-label{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-size:12px}.diagram__marker path{stroke:var(--color-border-strong);stroke-width:1.5px}.diagram__marker--association path{fill:none}.diagram__marker--inheritance path,.diagram__marker--aggregation path{fill:var(--color-bg-surface)}.diagram__marker--composition path{fill:var(--color-border-strong)}.diagram__caption{margin-top:var(--space-3);text-align:center;font-size:var(--text-sm);color:var(--color-text-tertiary)}.diagram--concept .diagram__viewport{background:radial-gradient(62% 78% at 80% 50%, color-mix(in srgb, var(--diagram-accent) 16%, transparent), transparent 74%), var(--color-bg-subtle);border-color:var(--color-border-strong);border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);padding:var(--space-6)}@media (min-width:769px){.diagram--concept .diagram__viewport{padding:var(--space-10) var(--space-8)}}[data-theme=light] .diagram--concept .diagram__viewport{background:radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--color-border-strong) 55%, transparent) 1px, transparent 0) 0 0 / 26px 26px, radial-gradient(120% 120% at 50% 50%, transparent 42%, color-mix(in srgb, var(--palette-gray-500) 32%, transparent) 100%), radial-gradient(58% 68% at 86% 12%, color-mix(in srgb, var(--diagram-accent) 36%, transparent), transparent 68%), radial-gradient(64% 78% at 8% 94%, color-mix(in srgb, var(--diagram-accent) 28%, transparent), transparent 70%), linear-gradient(135deg, var(--palette-gray-100), var(--palette-gray-300))}[data-theme=dark] .diagram--concept .diagram__viewport{border-color:var(--color-border)}.diagram__card{filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 12px 22px #1118271f);transition:transform var(--duration-normal) var(--ease-out);outline:none}[data-theme=dark] .diagram__card{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.diagram__card:hover{transform:translateY(-2px)}.diagram__card-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1px;transition:var(--transition-colors)}.diagram__card:hover .diagram__card-bg{stroke:var(--color-border-strong)}.diagram__card:focus-visible .diagram__card-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__card--emphasis{filter:drop-shadow(0 6px 14px #11182729) drop-shadow(0 20px 42px color-mix(in srgb, var(--diagram-accent) 40%, transparent))}[data-theme=dark] .diagram__card--emphasis{filter:drop-shadow(0 6px 14px #00000080) drop-shadow(0 20px 46px color-mix(in srgb, var(--diagram-accent) 55%, transparent))}.diagram__card--emphasis .diagram__card-bg{stroke:#0000}.diagram__card-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__card-chip--on-accent{fill:#ffffff2e}.diagram__card-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:15px}.diagram__card-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:12px}.diagram__card--emphasis .diagram__card-title--on-accent{font-size:17px}.diagram__card-title--on-accent{fill:#fff}.diagram__card-sub--on-accent{fill:#ffffffe6;font-family:var(--font-sans)}.diagram__card-icon{color:var(--diagram-accent)}.diagram__card-icon--on-accent{color:#fff}.diagram__card-icon path,.diagram__card-icon circle{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__badge circle{fill:#fff;stroke:none}.diagram__badge text{fill:var(--diagram-accent);font-family:var(--font-sans);font-weight:var(--font-weight-bold);font-size:16px}.diagram__grad-start{stop-color:var(--diagram-accent);stop-opacity:1}.diagram__grad-end{stop-color:var(--diagram-accent);stop-opacity:.78}.diagram__result-badge{opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity var(--duration-normal) var(--ease-out)}.diagram__result-badge rect{fill:var(--diagram-accent);stroke:none}.diagram__result-badge text{fill:#fff;font-family:var(--font-sans);font-weight:var(--font-weight-bold);font-size:13px}.diagram__flow{fill:none;stroke:var(--diagram-accent);stroke-width:2.5px;stroke-linecap:round}.diagram__flow--create{opacity:.95}.diagram__flow--reuse,.diagram__flow--optional{opacity:.55;stroke-dasharray:7 6}.diagram__marker--flow path{fill:var(--diagram-accent);stroke:none}.diagram__flow-label{fill:var(--color-text-secondary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);paint-order:stroke;stroke:var(--color-bg-subtle);stroke-width:5px;stroke-linejoin:round;font-size:12px}.diagram__flow-dash{fill:none;stroke:var(--diagram-accent);stroke-width:3px;stroke-linecap:round;stroke-dasharray:.1 16;animation:diagram-flow-pulse 2.6s var(--ease-in-out) infinite}.diagram__flow-dash--create{animation-delay:0s}.diagram__flow-dash--reuse{animation-delay:.9s}.diagram__flow-dash--optional{animation-delay:1.4s}@keyframes diagram-flow-pulse{0%{stroke-dashoffset:16px;opacity:0}15%{opacity:1}85%{opacity:1}to{stroke-dashoffset:0;opacity:0}}@keyframes diagram-rise-in{0%{transform:translateY(20px)}to{transform:translateY(0)}}@keyframes diagram-pop-in{0%{transform:scale(.96)}to{transform:scale(1)}}.diagram--concept .diagram__nodes>.diagram__card{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--concept .diagram__nodes>.diagram__card:first-child{animation-delay:60ms}.diagram--concept .diagram__nodes>.diagram__card:nth-child(2){animation-delay:.13s}.diagram--concept .diagram__nodes>.diagram__card:nth-child(3){animation-delay:.2s}.diagram--concept .diagram__nodes>.diagram__card:nth-child(4){animation-delay:.3s}.diagram--concept .diagram__edges{animation:fade-in .7s var(--ease-out) both;animation-delay:.36s}@media (prefers-reduced-motion:reduce){.diagram__flow-dash{display:none}}.diagram__shell-bg{fill:color-mix(in srgb, var(--diagram-accent) 7%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 34%, transparent);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__shell[data-shell-index="1"] .diagram__shell-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, transparent)}[data-theme=dark] .diagram__shell-bg{fill:color-mix(in srgb, var(--diagram-accent) 12%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent)}[data-theme=dark] .diagram__shell[data-shell-index="1"] .diagram__shell-bg{fill:color-mix(in srgb, var(--diagram-accent) 17%, transparent)}.diagram__shell[data-viz-state=active] .diagram__shell-bg{fill:color-mix(in srgb, var(--diagram-accent) 16%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 62%, transparent)}.diagram__shell-chip{fill:color-mix(in srgb, var(--diagram-accent) 16%, transparent);stroke:none}.diagram__shell-icon{color:var(--diagram-accent)}.diagram__shell-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__shell-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:14px}.diagram__shell-badge rect{fill:var(--diagram-accent);stroke:none;transition:fill var(--duration-normal) var(--ease-out)}.diagram__shell-badge text{fill:#fff;font-family:var(--font-sans);font-weight:var(--font-weight-bold);font-size:12px}.diagram__shell[data-viz-state=active] .diagram__shell-badge rect,.diagram__shell[data-viz-highlight=true] .diagram__shell-badge rect{fill:color-mix(in srgb, var(--diagram-accent) 88%, black 6%)}.diagram__flow--guide{fill:none;stroke:color-mix(in srgb, var(--diagram-accent) 26%, transparent);stroke-width:1.6px;stroke-linecap:round;stroke-dasharray:1 9;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--guide[data-viz-active=true]{stroke:color-mix(in srgb, var(--diagram-accent) 62%, transparent);filter:drop-shadow(0 0 4px color-mix(in srgb, var(--diagram-accent) 55%, transparent))}[data-theme=dark] .diagram__flow--guide{stroke:color-mix(in srgb, var(--diagram-accent) 34%, transparent)}.diagram--nested .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--nested .diagram__flow-dash{display:none}.diagram--nested .diagram__shell{animation:diagram-pop-in .6s var(--ease-out) both;animation-fill-mode:none}.diagram--nested .diagram__shell[data-shell-index="0"]{animation-delay:.12s}.diagram--nested .diagram__shell[data-shell-index="1"]{animation-delay:.2s}@media (min-width:769px){.diagram__shell-title{font-size:15px}.diagram__shell-badge text{font-size:13px}}.diagram__shell-toast{transform-box:fill-box;transform-origin:50%;opacity:0}.diagram__shell-toast rect{fill:color-mix(in srgb, var(--diagram-accent) 92%, var(--color-bg-elevated));stroke:none}.diagram__shell-toast text{fill:#fff;font-family:var(--font-sans);font-weight:var(--font-weight-semibold);font-size:12.5px}.diagram__shell.viz-anim--highlight .diagram__shell-toast{animation:shell-toast-flash 1.5s var(--ease-out)}@keyframes shell-toast-flash{0%{opacity:0;transform:translateY(5px)scale(.94)}16%{opacity:1;transform:translateY(0)scale(1)}74%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-4px)scale(1)}}.diagram__shell.viz-anim--highlight .diagram__shell-badge{transform-box:fill-box;transform-origin:50%;animation:shell-badge-pop 1.5s var(--ease-out)}@keyframes shell-badge-pop{0%,to{transform:scale(1)}20%{transform:scale(1.14)}40%{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.diagram__shell.viz-anim--highlight .diagram__shell-toast,.diagram__shell.viz-anim--highlight .diagram__shell-badge{animation:none}}.diagram--nested .diagram__grad-end{stop-opacity:.92}.diagram--nested .diagram__nodes>.diagram__card--emphasis{animation:diagram-rise-in .46s var(--ease-out) both, core-breathe 3.4s var(--ease-in-out) .52s infinite;animation-fill-mode:none,none}.diagram--nested .diagram__nodes>.diagram__card--emphasis[data-viz-glow=true]{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--nested .diagram__card--emphasis .diagram__card-bg{stroke:#ffffff59;stroke-width:1.5px}@keyframes core-breathe{0%,to{filter:drop-shadow(0 8px 18px #11182738) drop-shadow(0 0 22px color-mix(in srgb, var(--diagram-accent) 48%, transparent))}50%{filter:drop-shadow(0 8px 18px #11182738) drop-shadow(0 0 34px color-mix(in srgb, var(--diagram-accent) 78%, transparent))}}@media (prefers-reduced-motion:reduce){.diagram--nested .diagram__card--emphasis{animation:none}}.diagram__rail-base{stroke:color-mix(in srgb, var(--diagram-accent) 20%, transparent);stroke-width:3px;stroke-linecap:round}[data-theme=dark] .diagram__rail-base{stroke:color-mix(in srgb, var(--diagram-accent) 30%, transparent)}.diagram__flow--rail{stroke:color-mix(in srgb, var(--diagram-accent) 34%, transparent);stroke-width:3px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--rail{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram__chev path{fill:none;stroke:color-mix(in srgb, var(--diagram-accent) 60%, transparent);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.diagram--chain .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram__station{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 10px 20px #1118271a);outline:none}[data-theme=dark] .diagram__station{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 12px 24px #0000008c)}.diagram__station-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__station:focus-visible .diagram__station-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__station[data-viz-state=passed]{opacity:.72}.diagram__station[data-viz-state=active] .diagram__station-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 60%, transparent);stroke-width:1.75px}.diagram__station--handle[data-viz-state=active] .diagram__station-bg{fill:color-mix(in srgb, var(--color-success) 10%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--color-success) 68%, transparent)}.diagram__station-order circle{fill:color-mix(in srgb, var(--diagram-accent) 12%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:1px}.diagram__station-order text{fill:var(--diagram-accent);font-family:var(--font-sans);font-weight:var(--font-weight-bold);font-size:12px}.diagram__station[data-viz-state=active] .diagram__station-order circle{fill:var(--diagram-accent);stroke:none}.diagram__station[data-viz-state=active] .diagram__station-order text{fill:#fff}.diagram__station-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__station-icon{color:var(--diagram-accent)}.diagram__station-icon path,.diagram__station-icon circle{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__station-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:14px}.diagram__station-guard{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:11px}.diagram__station-stamp{opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity var(--duration-normal) var(--ease-out)}.diagram__station-stamp circle{fill:var(--color-success);stroke:none}.diagram__station-stamp path{fill:none;stroke:#fff;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.diagram__station--handle[data-viz-state=active] .diagram__station-stamp{opacity:1}.diagram__station-decision{opacity:0;transition:opacity var(--duration-normal) var(--ease-out)}.diagram__station-decision rect{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1px}.diagram__station-decision text{fill:var(--color-text-secondary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);font-size:12px}.diagram__station[data-viz-state=passed] .diagram__station-decision,.diagram__station[data-viz-state=active] .diagram__station-decision{opacity:1}.diagram__station--handle[data-viz-state=active] .diagram__station-decision rect{fill:color-mix(in srgb, var(--color-success) 92%, var(--color-bg-elevated));stroke:none}.diagram__station--handle[data-viz-state=active] .diagram__station-decision text{fill:#fff}.diagram--chain .diagram__station{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--chain .diagram__station[data-station-index="0"]{animation-delay:.16s}.diagram--chain .diagram__station[data-station-index="1"]{animation-delay:.24s}.diagram--chain .diagram__station[data-station-index="2"]{animation-delay:.32s}.diagram--chain .diagram__station[data-station-index="3"]{animation-delay:.4s}@media (min-width:769px){.diagram__station-title{font-size:15px}.diagram__station-guard{font-size:12px}}.diagram__region-bg{fill:color-mix(in srgb, var(--diagram-accent) 6%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 30%, transparent);stroke-width:1.5px}[data-theme=dark] .diagram__region-bg{fill:color-mix(in srgb, var(--diagram-accent) 11%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent)}.diagram__region-wall{stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:3px;stroke-linecap:round}[data-theme=dark] .diagram__region-wall{stroke:color-mix(in srgb, var(--diagram-accent) 66%, transparent)}.diagram__region-title{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;font-size:11.5px}.diagram__flow--facade{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--facade{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--facade .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--facade .diagram__flow-dash{display:none}.diagram--facade .diagram__region-bg,.diagram--facade .diagram__region-wall,.diagram--facade .diagram__region-title{animation:fade-in .7s var(--ease-out) both;animation-delay:.14s}@media (prefers-reduced-motion:reduce){.diagram--facade .diagram__region-bg,.diagram--facade .diagram__region-wall,.diagram--facade .diagram__region-title{animation:none}}@media (min-width:769px){.diagram__region-title{font-size:12.5px}}.diagram__pool-bg{fill:color-mix(in srgb, var(--diagram-accent) 6%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 26%, transparent);stroke-width:1.5px;stroke-dasharray:5 4}[data-theme=dark] .diagram__pool-bg{fill:color-mix(in srgb, var(--diagram-accent) 11%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 36%, transparent)}.diagram__pool-title{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;font-size:11.5px}.diagram__pool-item{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 8px 16px #1118271a);outline:none}[data-theme=dark] .diagram__pool-item{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 10px 20px #0000008c)}.diagram__pool-token{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__pool-item:focus-visible .diagram__pool-token{stroke:var(--diagram-accent);stroke-width:2px}.diagram__pool-item[data-viz-state=active] .diagram__pool-token{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 62%, transparent);stroke-width:1.75px}.diagram__pool-icon{color:var(--diagram-accent)}.diagram__pool-icon path,.diagram__pool-icon circle{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__pool-label{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:12px}.diagram__flow--pool{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--pool{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--pool .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--pool .diagram__flow-dash{display:none}.diagram--pool .diagram__pool-bg,.diagram--pool .diagram__pool-title{animation:fade-in .7s var(--ease-out) both;animation-delay:.14s}.diagram--pool .diagram__pool-item{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--pool .diagram__pool-item[data-pool-index="0"]{animation-delay:.22s}.diagram--pool .diagram__pool-item[data-pool-index="1"]{animation-delay:.3s}.diagram--pool .diagram__pool-item[data-pool-index="2"]{animation-delay:.38s}.diagram--pool .diagram__pool-item[data-pool-index="3"]{animation-delay:.46s}@media (prefers-reduced-motion:reduce){.diagram--pool .diagram__pool-bg,.diagram--pool .diagram__pool-title,.diagram--pool .diagram__pool-item{animation:none}}@media (min-width:769px){.diagram__pool-title{font-size:12.5px}.diagram__pool-label{font-size:13px}}.diagram__gateway-blocked-path{stroke:color-mix(in srgb, var(--color-text-tertiary) 42%, transparent);stroke-width:1.75px;stroke-linecap:round;stroke-dasharray:6 5}[data-theme=dark] .diagram__gateway-blocked-path{stroke:color-mix(in srgb, var(--color-text-tertiary) 55%, transparent)}.diagram__gateway-blocked-badge circle{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--color-text-tertiary) 55%, transparent);stroke-width:1.75px}.diagram__gateway-blocked-badge line{stroke:color-mix(in srgb, var(--color-text-tertiary) 70%, transparent);stroke-width:1.75px;stroke-linecap:round}[data-theme=dark] .diagram__gateway-blocked-badge circle{stroke:color-mix(in srgb, var(--color-text-tertiary) 65%, transparent)}[data-theme=dark] .diagram__gateway-blocked-badge line{stroke:color-mix(in srgb, var(--color-text-tertiary) 80%, transparent)}.diagram__gateway-blocked-label{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.02em;font-size:11px}.diagram__flow--gateway{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--gateway{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--gateway .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--gateway .diagram__flow-dash{display:none}.diagram--gateway .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--gateway .diagram__gateway-blocked-path,.diagram--gateway .diagram__gateway-blocked-badge,.diagram--gateway .diagram__gateway-blocked-label{animation:fade-in .7s var(--ease-out) both;animation-delay:.14s}@media (prefers-reduced-motion:reduce){.diagram--gateway .diagram__gateway-blocked-path,.diagram--gateway .diagram__gateway-blocked-badge,.diagram--gateway .diagram__gateway-blocked-label{animation:none}}@media (min-width:769px){.diagram__gateway-blocked-label{font-size:12px}}.diagram__command-socket{fill:color-mix(in srgb, var(--diagram-accent) 14%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 34%, transparent);stroke-width:1.5px}[data-theme=dark] .diagram__command-socket{fill:color-mix(in srgb, var(--diagram-accent) 20%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram__capsule{cursor:default;filter:drop-shadow(0 3px 6px #1118271a)drop-shadow(0 10px 20px #11182724);outline:none}[data-theme=dark] .diagram__capsule{filter:drop-shadow(0 3px 8px #0000008c)drop-shadow(0 12px 24px #0009)}.diagram__capsule-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__capsule:focus-visible .diagram__capsule-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__capsule[data-viz-state=active] .diagram__capsule-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 62%, transparent);stroke-width:1.75px}.diagram__capsule-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__capsule-icon{color:var(--diagram-accent)}.diagram__capsule-icon path,.diagram__capsule-icon circle{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__capsule-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:13px}.diagram__capsule-undo circle{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 45%, transparent);stroke-width:1.5px}.diagram__capsule-undo text{fill:var(--diagram-accent);font-family:var(--font-sans);font-weight:var(--font-weight-bold);font-size:12px}[data-theme=dark] .diagram__capsule-undo circle{stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__flow--command{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--command{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--command .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--command .diagram__flow-dash{display:none}.diagram--command .diagram__command-socket{animation:fade-in .7s var(--ease-out) both;animation-delay:.14s}.diagram--command .diagram__capsule{animation:diagram-rise-in .46s var(--ease-out) both;animation-delay:.26s;animation-fill-mode:none}@media (prefers-reduced-motion:reduce){.diagram--command .diagram__command-socket,.diagram--command .diagram__capsule{animation:none}}@media (min-width:769px){.diagram__capsule-title,.diagram__capsule-undo text{font-size:14px}}.diagram__flow--expression{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--expression{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--expression .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--expression .diagram__flow-dash{display:none}.diagram--expression .diagram__nodes>.diagram__card:nth-child(5){animation-delay:.38s}.diagram--expression .diagram__nodes>.diagram__card:nth-child(6){animation-delay:.46s}.diagram__cursor-bg{fill:color-mix(in srgb, var(--diagram-accent) 6%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 26%, transparent);stroke-width:1.5px;stroke-dasharray:5 4}[data-theme=dark] .diagram__cursor-bg{fill:color-mix(in srgb, var(--diagram-accent) 11%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 36%, transparent)}.diagram__cursor-title{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;font-size:11.5px}.diagram__cell{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 8px 16px #1118271a);outline:none}[data-theme=dark] .diagram__cell{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 10px 20px #0000008c)}.diagram__cell-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out), opacity var(--duration-normal) var(--ease-out)}.diagram__cell:focus-visible .diagram__cell-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__cell[data-viz-state=active] .diagram__cell-bg{fill:color-mix(in srgb, var(--diagram-accent) 12%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 65%, transparent);stroke-width:1.75px}.diagram__cell[data-viz-state=passed]{opacity:.6}.diagram__cell[data-viz-state=passed] .diagram__cell-bg{stroke:color-mix(in srgb, var(--diagram-accent) 30%, transparent)}.diagram__cell-icon{color:var(--diagram-accent)}.diagram__cell-icon path,.diagram__cell-icon circle{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__cell-label{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:11.5px}.diagram__cell-cursor{fill:var(--diagram-accent);stroke:none;opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity var(--duration-normal) var(--ease-out)}.diagram__cell[data-viz-state=active] .diagram__cell-cursor{opacity:1;animation:cursor-bob 1.6s var(--ease-in-out) infinite}@keyframes cursor-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.diagram__flow--cursor{stroke:color-mix(in srgb, var(--diagram-accent) 30%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--cursor{stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent)}.diagram--cursor .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--cursor .diagram__flow-dash{display:none}.diagram--cursor .diagram__cursor-bg,.diagram--cursor .diagram__cursor-title{animation:fade-in .7s var(--ease-out) both;animation-delay:.14s}.diagram--cursor .diagram__cell{animation:diagram-rise-in .46s var(--ease-out) both}.diagram--cursor .diagram__cell[data-cell-index="0"]{animation-delay:.22s}.diagram--cursor .diagram__cell[data-cell-index="1"]{animation-delay:.3s}.diagram--cursor .diagram__cell[data-cell-index="2"]{animation-delay:.38s}.diagram--cursor .diagram__cell[data-cell-index="3"]{animation-delay:.46s}.diagram--cursor .diagram__nodes>.diagram__card,.diagram--cursor .diagram__cell{animation-fill-mode:none}@media (prefers-reduced-motion:reduce){.diagram--cursor .diagram__cursor-bg,.diagram--cursor .diagram__cursor-title,.diagram--cursor .diagram__cell,.diagram__cell[data-viz-state=active] .diagram__cell-cursor{animation:none}}@media (min-width:769px){.diagram__cursor-title,.diagram__cell-label{font-size:12.5px}}.diagram__flow--hub{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--hub{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram__hub-blocked-path{stroke:color-mix(in srgb, var(--color-text-tertiary) 38%, transparent);stroke-width:1.5px;stroke-linecap:round;stroke-dasharray:5 5}[data-theme=dark] .diagram__hub-blocked-path{stroke:color-mix(in srgb, var(--color-text-tertiary) 50%, transparent)}.diagram__hub-blocked-badge circle{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--color-text-tertiary) 50%, transparent);stroke-width:1.5px}.diagram__hub-blocked-badge line{stroke:color-mix(in srgb, var(--color-text-tertiary) 65%, transparent);stroke-width:1.5px;stroke-linecap:round}[data-theme=dark] .diagram__hub-blocked-badge circle{stroke:color-mix(in srgb, var(--color-text-tertiary) 60%, transparent)}[data-theme=dark] .diagram__hub-blocked-badge line{stroke:color-mix(in srgb, var(--color-text-tertiary) 75%, transparent)}.diagram--hub .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--hub .diagram__flow-dash{display:none}.diagram--hub .diagram__hub-blocked-path,.diagram--hub .diagram__hub-blocked-badge{animation:fade-in .7s var(--ease-out) both;animation-delay:.14s}.diagram--hub .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--hub .diagram__nodes>.diagram__card:first-child{animation-delay:60ms}.diagram--hub .diagram__nodes>.diagram__card:nth-child(2){animation-delay:.16s}.diagram--hub .diagram__nodes>.diagram__card:nth-child(3){animation-delay:.24s}.diagram--hub .diagram__nodes>.diagram__card:nth-child(4){animation-delay:.32s}.diagram--hub .diagram__nodes>.diagram__card:nth-child(5){animation-delay:.4s}@media (prefers-reduced-motion:reduce){.diagram--hub .diagram__hub-blocked-path,.diagram--hub .diagram__hub-blocked-badge{animation:none}}.diagram__flow--broadcast{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--broadcast{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--broadcast .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram__flow--state{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--state{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--state .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram__flow--state-return{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;stroke-dasharray:6 6;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--state-return{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram__flow--memento,.diagram__flow--memento-return{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--memento-return{stroke-dasharray:6 6}[data-theme=dark] .diagram__flow--memento,[data-theme=dark] .diagram__flow--memento-return{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--memento .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram__flow--singleton-create{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--singleton-reuse{stroke:color-mix(in srgb, var(--diagram-accent) 26%, transparent);stroke-width:2px;stroke-linecap:round;stroke-dasharray:7 6;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--singleton-create{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--singleton-reuse{stroke:color-mix(in srgb, var(--diagram-accent) 36%, transparent)}.diagram--singleton .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--singleton .diagram__flow-dash{display:none}.diagram__flow--slot{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--slot-candidate{stroke:color-mix(in srgb, var(--diagram-accent) 26%, transparent);stroke-width:2px;stroke-linecap:round;stroke-dasharray:7 6;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--slot{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--slot-candidate{stroke:color-mix(in srgb, var(--diagram-accent) 36%, transparent)}.diagram__slot-bg{fill:color-mix(in srgb, var(--diagram-accent) 6%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 26%, transparent);stroke-width:1.5px;stroke-dasharray:5 4}[data-theme=dark] .diagram__slot-bg{fill:color-mix(in srgb, var(--diagram-accent) 11%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 36%, transparent)}.diagram__slot-title{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;font-size:11.5px}.diagram--slot .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--slot .diagram__flow-dash{display:none}.diagram--slot .diagram__slot-bg,.diagram--slot .diagram__slot-title{animation:fade-in .7s var(--ease-out) both;animation-delay:.14s}.diagram--slot .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--slot .diagram__nodes>.diagram__card:first-child{animation-delay:60ms}.diagram--slot .diagram__nodes>.diagram__card:nth-child(2){animation-delay:.13s}.diagram--slot .diagram__nodes>.diagram__card:nth-child(3){animation-delay:.2s}.diagram--slot .diagram__nodes>.diagram__card:nth-child(4){animation-delay:.28s}.diagram--slot .diagram__nodes>.diagram__card:nth-child(5){animation-delay:.34s}@media (prefers-reduced-motion:reduce){.diagram--slot .diagram__slot-bg,.diagram--slot .diagram__slot-title,.diagram--slot .diagram__nodes>.diagram__card{animation:none}}@media (min-width:769px){.diagram__slot-title{font-size:12.5px}}.diagram__spine{cursor:default;filter:drop-shadow(0 3px 6px #1118271a)drop-shadow(0 12px 24px #11182724);outline:none}[data-theme=dark] .diagram__spine{filter:drop-shadow(0 3px 8px #0000008c)drop-shadow(0 14px 28px #0009)}.diagram__spine-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__spine:focus-visible .diagram__spine-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__spine[data-viz-state=active] .diagram__spine-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__spine-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__spine-icon{color:var(--diagram-accent)}.diagram__spine-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__spine-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:13px}.diagram__spine-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:12px}.diagram__spine-divider{stroke:var(--color-border-subtle);stroke-width:1px}.diagram__step-bg{fill:var(--color-bg-subtle);stroke:var(--color-border);stroke-width:1.25px;stroke-dasharray:5 4}.diagram__step-label{fill:var(--color-text-secondary);font-family:var(--font-mono);font-size:11.5px}.diagram__step--required .diagram__step-bg{fill:color-mix(in srgb, var(--diagram-accent) 9%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 46%, transparent);stroke-width:1.5px}.diagram__step--required .diagram__step-label{fill:var(--color-text-primary);font-weight:var(--font-weight-semibold)}[data-theme=dark] .diagram__step--required .diagram__step-bg{fill:color-mix(in srgb, var(--diagram-accent) 14%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent)}.diagram__spine-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__spine-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__flow--skeleton-call{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--skeleton-plug{stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--skeleton-call{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--skeleton-plug{stroke:color-mix(in srgb, var(--diagram-accent) 44%, transparent)}.diagram--skeleton .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--skeleton .diagram__flow-dash{display:none}.diagram--skeleton .diagram__spine{animation:diagram-rise-in .46s var(--ease-out) both;animation-delay:.13s;animation-fill-mode:none}@media (prefers-reduced-motion:reduce){.diagram--skeleton .diagram__spine{animation:none}}@media (min-width:769px){.diagram__spine-title{font-size:14.5px}.diagram__step-label{font-size:12.5px}}.diagram__dispatch{cursor:default;filter:drop-shadow(0 6px 14px #11182729) drop-shadow(0 20px 42px color-mix(in srgb, var(--diagram-accent) 40%, transparent));outline:none}[data-theme=dark] .diagram__dispatch{filter:drop-shadow(0 6px 14px #00000080) drop-shadow(0 20px 46px color-mix(in srgb, var(--diagram-accent) 55%, transparent))}.diagram__dispatch-bg{stroke:#0000}.diagram__dispatch:focus-visible .diagram__dispatch-bg{stroke:#fff;stroke-width:2px}.diagram__dispatch-chip{fill:#ffffff2e;stroke:none}.diagram__dispatch-icon{color:#fff}.diagram__dispatch-icon path,.diagram__dispatch-icon circle{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__dispatch-title{fill:#fff;font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:14px}.diagram__dispatch-sub{fill:#ffffffe0;font-family:var(--font-sans);font-size:12px}.diagram__dispatch-divider{stroke:#ffffff47;stroke-width:1px}.diagram__dispatch-row-bg{fill:#ffffff24;stroke:#ffffff42;stroke-width:1px}.diagram__dispatch-row-label{fill:#fff;font-family:var(--font-mono);font-size:11.5px}.diagram__dispatch-port{fill:#fff;stroke:color-mix(in srgb, var(--diagram-accent) 70%, transparent);stroke-width:2px}.diagram__flow--dispatch-call{stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--dispatch-route{stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--dispatch-call{stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}[data-theme=dark] .diagram__flow--dispatch-route{stroke:color-mix(in srgb, var(--diagram-accent) 70%, transparent)}.diagram--dispatch .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--dispatch .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--dispatch .diagram__nodes>.diagram__card:first-child{animation-delay:60ms}.diagram--dispatch .diagram__nodes>.diagram__card:nth-child(2){animation-delay:.15s}.diagram--dispatch .diagram__nodes>.diagram__card:nth-child(3){animation-delay:.22s}.diagram--dispatch .diagram__dispatch{animation:diagram-rise-in .46s var(--ease-out) both;animation-delay:.3s;animation-fill-mode:none}@media (prefers-reduced-motion:reduce){.diagram--dispatch .diagram__dispatch{animation:none}}@media (min-width:769px){.diagram__dispatch-title{font-size:16px}.diagram__dispatch-row-label{font-size:12.5px}}.diagram__override{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 12px 22px #1118271f);outline:none}[data-theme=dark] .diagram__override{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.diagram__override-ghost{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1.25px;stroke-dasharray:4 5}[data-theme=dark] .diagram__override-ghost{stroke:var(--color-border-strong)}.diagram__override-bg{fill:var(--color-bg-elevated);stroke:var(--color-border-strong);stroke-width:1.5px;stroke-dasharray:6 5;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__override:focus-visible .diagram__override-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__override[data-viz-state=active] .diagram__override-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__override-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__override-icon{color:var(--diagram-accent)}.diagram__override-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__override-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:14px}.diagram__override-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:12px;font-style:italic}.diagram__override-divider{stroke:var(--color-border-subtle);stroke-width:1px}.diagram__override-row-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent);stroke-width:1.25px}.diagram__override-row-role{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.05em;text-transform:uppercase;font-size:8.5px}.diagram__override-row-label{fill:var(--color-text-primary);font-family:var(--font-mono);font-weight:var(--font-weight-semibold);font-size:11.5px}.diagram__override-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__override-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__flow--override-call{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--override-create{stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--override-call{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--override-create{stroke:color-mix(in srgb, var(--diagram-accent) 70%, transparent)}.diagram--override .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--override .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--override .diagram__nodes>.diagram__card:first-child{animation-delay:60ms}.diagram--override .diagram__nodes>.diagram__card:nth-child(3){animation-delay:.36s}.diagram--override .diagram__override{animation:diagram-rise-in .46s var(--ease-out) both;animation-delay:.16s;animation-fill-mode:none}@media (prefers-reduced-motion:reduce){.diagram--override .diagram__override{animation:none}}@media (min-width:769px){.diagram__override-title{font-size:14.5px}.diagram__override-row-role{font-size:9.5px}.diagram__override-row-label{font-size:12.5px}}.diagram__family{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 12px 22px #1118271f);outline:none}[data-theme=dark] .diagram__family{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.diagram__family-bg{fill:var(--color-bg-elevated);stroke:var(--color-border-strong);stroke-width:1.5px;stroke-dasharray:6 5;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__family:focus-visible .diagram__family-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__family[data-viz-state=active] .diagram__family-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__family-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__family-icon{color:var(--diagram-accent)}.diagram__family-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__family-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:12.5px}.diagram__family-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:11px;font-style:italic}.diagram__family-divider{stroke:var(--color-border-subtle);stroke-width:1px}.diagram__family-plate-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent);stroke-width:1.25px}.diagram__family-plate-role{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.05em;text-transform:uppercase;font-size:8.5px}.diagram__family-plate-label{fill:var(--color-text-primary);font-family:var(--font-mono);font-weight:var(--font-weight-semibold);font-size:11.5px}.diagram__family-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__family-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__family-bound-bg{fill:color-mix(in srgb, var(--diagram-accent) 6%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 30%, transparent);stroke-width:1.5px;stroke-dasharray:5 4}[data-theme=dark] .diagram__family-bound-bg{fill:color-mix(in srgb, var(--diagram-accent) 11%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent)}.diagram__family-bound-title{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase;font-size:10.5px}.diagram__flow--family-call{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--family-create{stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--family-call{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--family-create{stroke:color-mix(in srgb, var(--diagram-accent) 70%, transparent)}.diagram--family .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--family .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--family .diagram__family{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--family .diagram__family--factory{animation-delay:.12s}.diagram--family .diagram__family--product:first-of-type{animation-delay:.26s}.diagram--family .diagram__family--product:nth-of-type(2){animation-delay:.34s}.diagram--family .diagram__family-bound-bg,.diagram--family .diagram__family-bound-title{animation:fade-in .7s var(--ease-out) both;animation-delay:.2s}@media (prefers-reduced-motion:reduce){.diagram--family .diagram__family,.diagram--family .diagram__family-bound-bg,.diagram--family .diagram__family-bound-title{animation:none}}@media (min-width:769px){.diagram__family-title{font-size:13.5px}.diagram__family-plate-role{font-size:9.5px}.diagram__family-plate-label{font-size:12.5px}.diagram__family-bound-title{font-size:11.5px}}.diagram__assembly-builder,.diagram__assembly-frame{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 12px 22px #1118271f);outline:none}[data-theme=dark] .diagram__assembly-builder,[data-theme=dark] .diagram__assembly-frame{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.diagram__assembly-builder-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__assembly-builder:focus-visible .diagram__assembly-builder-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__assembly-builder[data-viz-state=active] .diagram__assembly-builder-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__assembly-chip,.diagram__assembly-frame-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__assembly-icon,.diagram__assembly-frame-icon{color:var(--diagram-accent)}.diagram__assembly-icon path,.diagram__assembly-frame-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__assembly-title,.diagram__assembly-frame-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:12.5px}.diagram__assembly-sub,.diagram__assembly-frame-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:11px;font-style:italic}.diagram__assembly-divider,.diagram__assembly-frame-divider{stroke:var(--color-border-subtle);stroke-width:1px}.diagram__assembly-plate-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent);stroke-width:1.25px}.diagram__assembly-plate-role{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.05em;text-transform:uppercase;font-size:8.5px}.diagram__assembly-plate-label{fill:var(--color-text-primary);font-family:var(--font-mono);font-weight:var(--font-weight-semibold);font-size:11.5px}.diagram__assembly-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__assembly-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__assembly-slot-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__assembly-slot:focus-visible .diagram__assembly-slot-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__assembly-slot[data-viz-state=active] .diagram__assembly-slot-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__assembly-slot-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__assembly-slot-icon{color:var(--diagram-accent)}.diagram__assembly-slot-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__assembly-slot-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:11.5px}.diagram__assembly-slot-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:10.5px}.diagram__assembly-frame-bg{fill:color-mix(in srgb, var(--diagram-accent) 5%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 32%, transparent);stroke-width:1.5px;stroke-dasharray:6 5;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out), stroke-dasharray var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__assembly-frame-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, transparent);stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent)}.diagram__assembly-frame:focus-visible .diagram__assembly-frame-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__assembly-frame[data-viz-state=active] .diagram__assembly-frame-bg{fill:color-mix(in srgb, var(--diagram-accent) 14%, transparent);stroke:var(--diagram-accent);stroke-dasharray:none}.diagram__assembly-dep-path{stroke:color-mix(in srgb, var(--color-text-tertiary) 55%, transparent);stroke-width:1.5px;stroke-dasharray:4 4}.diagram__flow--assembly-call,.diagram__flow--assembly-build{stroke:color-mix(in srgb, var(--diagram-accent) 45%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--assembly-assemble{stroke:color-mix(in srgb, var(--diagram-accent) 62%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--assembly-call,[data-theme=dark] .diagram__flow--assembly-build{stroke:color-mix(in srgb, var(--diagram-accent) 56%, transparent)}[data-theme=dark] .diagram__flow--assembly-assemble{stroke:color-mix(in srgb, var(--diagram-accent) 72%, transparent)}.diagram--assembly .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--assembly .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--assembly .diagram__assembly-builder,.diagram--assembly .diagram__assembly-frame,.diagram--assembly .diagram__assembly-slot{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--assembly .diagram__assembly-builder{animation-delay:.1s}.diagram--assembly .diagram__assembly-slot:first-of-type{animation-delay:.22s}.diagram--assembly .diagram__assembly-slot:nth-of-type(2){animation-delay:.28s}.diagram--assembly .diagram__assembly-slot:nth-of-type(3){animation-delay:.34s}.diagram--assembly .diagram__assembly-frame{animation-delay:.18s}@media (prefers-reduced-motion:reduce){.diagram--assembly .diagram__assembly-builder,.diagram--assembly .diagram__assembly-frame,.diagram--assembly .diagram__assembly-slot{animation:none}}@media (min-width:769px){.diagram__assembly-title,.diagram__assembly-frame-title{font-size:13.5px}.diagram__assembly-plate-role{font-size:9.5px}.diagram__assembly-plate-label,.diagram__assembly-slot-title{font-size:12.5px}}.diagram__mirror{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 12px 22px #1118271f);outline:none}[data-theme=dark] .diagram__mirror{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.diagram__mirror-bg{fill:var(--color-bg-elevated);stroke:var(--color-border-strong);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__mirror:focus-visible .diagram__mirror-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__mirror[data-viz-state=active] .diagram__mirror-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__mirror-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__mirror-icon{color:var(--diagram-accent)}.diagram__mirror-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__mirror-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:14px}.diagram__mirror-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:12px;font-style:italic}.diagram__mirror-divider{stroke:var(--color-border-subtle);stroke-width:1px}.diagram__mirror-row-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent);stroke-width:1.25px}.diagram__mirror-row-role{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.05em;text-transform:uppercase;font-size:8.5px}.diagram__mirror-row-label{fill:var(--color-text-primary);font-family:var(--font-mono);font-weight:var(--font-weight-semibold);font-size:12.5px}.diagram__mirror-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__mirror-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__mirror-axis{stroke:var(--color-border);stroke-width:1.5px;stroke-dasharray:3 6}[data-theme=dark] .diagram__mirror-axis{stroke:var(--color-border-strong)}.diagram__mirror-axis-node{fill:var(--color-bg-elevated);stroke:var(--color-border-strong);stroke-width:1.5px}.diagram__flow--mirror-call{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--mirror-clone{stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--mirror-call{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--mirror-clone{stroke:color-mix(in srgb, var(--diagram-accent) 70%, transparent)}.diagram--mirror .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--mirror .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--mirror .diagram__mirror{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--mirror .diagram__mirror--original{animation-delay:.1s}.diagram--mirror .diagram__mirror--clone{animation-delay:.22s}@media (prefers-reduced-motion:reduce){.diagram--mirror .diagram__mirror{animation:none}}@media (min-width:769px){.diagram__mirror-title{font-size:14.5px}.diagram__mirror-row-role{font-size:9.5px}}.diagram__translate-card{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 12px 22px #1118271f);outline:none}[data-theme=dark] .diagram__translate-card{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.diagram__translate-bg{fill:var(--color-bg-elevated);stroke:var(--color-border-strong);stroke-width:1.5px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__translate-card:focus-visible .diagram__translate-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__translate-card[data-viz-state=active] .diagram__translate-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__translate-card--adapter .diagram__translate-bg{stroke-width:2px}.diagram__translate-card--target .diagram__translate-bg{stroke-dasharray:5 4}.diagram__translate-card--target[data-viz-state=active] .diagram__translate-bg{stroke-dasharray:none}.diagram__translate-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__translate-icon{color:var(--diagram-accent)}.diagram__translate-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__translate-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:13px}.diagram__translate-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:11.5px;font-style:italic}.diagram__translate-divider{stroke:var(--color-border-subtle);stroke-width:1px}.diagram__translate-row-bg{fill:color-mix(in srgb, var(--diagram-accent) 10%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent);stroke-width:1.25px}.diagram__translate-row-role{fill:var(--color-text-tertiary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:.05em;text-transform:uppercase;font-size:8.5px}.diagram__translate-row-label{fill:var(--color-text-primary);font-family:var(--font-mono);font-weight:var(--font-weight-semibold);font-size:11px}.diagram__translate-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__translate-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__translate-port--diamond{fill:color-mix(in srgb, var(--color-text-tertiary) 12%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--color-text-tertiary) 60%, transparent)}.diagram__flow--translate-call{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--translate-forward{stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--translate-shape{stroke:color-mix(in srgb, var(--color-text-tertiary) 50%, transparent);stroke-width:1.75px;stroke-dasharray:4 4;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--translate-call{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--translate-forward{stroke:color-mix(in srgb, var(--diagram-accent) 70%, transparent)}[data-theme=dark] .diagram__flow--translate-shape{stroke:color-mix(in srgb, var(--color-text-tertiary) 62%, transparent)}.diagram--translate .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--translate .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--translate .diagram__translate-card{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--translate .diagram__translate-card--target{animation-delay:80ms}.diagram--translate .diagram__translate-card--adapter{animation-delay:.18s}.diagram--translate .diagram__translate-card--adaptee{animation-delay:.28s}@media (prefers-reduced-motion:reduce){.diagram--translate .diagram__translate-card{animation:none}}@media (min-width:769px){.diagram__translate-title{font-size:14px}.diagram__translate-row-role{font-size:9.5px}.diagram__translate-row-label{font-size:12px}}.diagram__span-deck{fill:color-mix(in srgb, var(--diagram-accent) 30%, var(--color-bg-subtle));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:1px}[data-theme=dark] .diagram__span-deck{fill:color-mix(in srgb, var(--diagram-accent) 38%, var(--color-bg-subtle))}.diagram__span-tie{stroke:color-mix(in srgb, var(--diagram-accent) 45%, transparent);stroke-width:2px;stroke-linecap:round}[data-theme=dark] .diagram__span-tie{stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent)}.diagram__span-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__span-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__flow--span-extend{stroke:color-mix(in srgb, var(--color-text-tertiary) 50%, transparent);stroke-width:1.75px;stroke-dasharray:4 4;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--span-cross{stroke:color-mix(in srgb, var(--diagram-accent) 62%, transparent);stroke-width:3px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--span-realize{stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent);stroke-width:1.75px;stroke-dasharray:5 4;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--span-extend{stroke:color-mix(in srgb, var(--color-text-tertiary) 62%, transparent)}[data-theme=dark] .diagram__flow--span-cross{stroke:color-mix(in srgb, var(--diagram-accent) 76%, transparent)}[data-theme=dark] .diagram__flow--span-realize{stroke:color-mix(in srgb, var(--diagram-accent) 56%, transparent)}.diagram--span .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--span .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--span .diagram__nodes>.diagram__card:nth-child(5){animation-delay:.38s}.diagram--span .diagram__span-deck,.diagram--span .diagram__span-tie{animation:fade-in .7s var(--ease-out) both;animation-delay:.2s}@media (prefers-reduced-motion:reduce){.diagram--span .diagram__span-deck,.diagram--span .diagram__span-tie{animation:none}}.diagram__tree-card{cursor:default;filter:drop-shadow(0 2px 4px #1118270f)drop-shadow(0 12px 22px #1118271f);outline:none}[data-theme=dark] .diagram__tree-card{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.diagram__tree-ghost{fill:none;stroke:color-mix(in srgb, var(--diagram-accent) 30%, transparent);stroke-width:1.25px;stroke-dasharray:5 4}[data-theme=dark] .diagram__tree-ghost{stroke:color-mix(in srgb, var(--diagram-accent) 42%, transparent)}.diagram__tree-bg{fill:var(--color-bg-elevated);stroke:var(--color-border);stroke-width:1px;transition:fill var(--duration-normal) var(--ease-out), stroke var(--duration-normal) var(--ease-out)}.diagram__tree-card:focus-visible .diagram__tree-bg{stroke:var(--diagram-accent);stroke-width:2px}.diagram__tree-card[data-viz-state=active] .diagram__tree-bg{fill:color-mix(in srgb, var(--diagram-accent) 8%, var(--color-bg-elevated));stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent)}.diagram__tree-chip{fill:var(--color-accent-subtle);stroke:none}.diagram__tree-icon{color:var(--diagram-accent)}.diagram__tree-icon path{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.diagram__tree-title{fill:var(--color-text-primary);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);letter-spacing:-.01em;font-size:13px}.diagram__tree-sub{fill:var(--color-text-tertiary);font-family:var(--font-mono);font-size:11px}.diagram__tree-seal{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:1.5px}[data-theme=dark] .diagram__tree-seal{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__tree-seal-icon{color:var(--diagram-accent)}.diagram__tree-seal-icon path{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.diagram__tree-port{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--diagram-accent) 55%, transparent);stroke-width:2px}[data-theme=dark] .diagram__tree-port{stroke:color-mix(in srgb, var(--diagram-accent) 68%, transparent)}.diagram__flow--tree-call{stroke:color-mix(in srgb, var(--diagram-accent) 40%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--tree-delegate{stroke:color-mix(in srgb, var(--diagram-accent) 58%, transparent);stroke-width:2px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}.diagram__flow--tree-child{stroke:color-mix(in srgb, var(--diagram-accent) 50%, transparent);stroke-width:1.75px;stroke-linecap:round;transition:stroke var(--duration-normal) var(--ease-out)}[data-theme=dark] .diagram__flow--tree-call{stroke:color-mix(in srgb, var(--diagram-accent) 54%, transparent)}[data-theme=dark] .diagram__flow--tree-delegate{stroke:color-mix(in srgb, var(--diagram-accent) 70%, transparent)}[data-theme=dark] .diagram__flow--tree-child{stroke:color-mix(in srgb, var(--diagram-accent) 62%, transparent)}.diagram--tree .viz-packet{filter:drop-shadow(0 0 5px color-mix(in srgb, var(--diagram-accent) 70%, transparent))}.diagram--tree .diagram__nodes>.diagram__card{animation-fill-mode:none}.diagram--tree .diagram__nodes>.diagram__card:first-child{animation-delay:60ms}.diagram--tree .diagram__tree-card{animation:diagram-rise-in .46s var(--ease-out) both;animation-fill-mode:none}.diagram--tree .diagram__nodes>.diagram__tree-card:first-of-type{animation-delay:.18s}.diagram--tree .diagram__nodes>.diagram__tree-card:nth-of-type(2){animation-delay:.3s}.diagram--tree .diagram__nodes>.diagram__tree-card:nth-of-type(3){animation-delay:.36s}.diagram--tree .diagram__nodes>.diagram__tree-card:nth-of-type(4){animation-delay:.42s}@media (prefers-reduced-motion:reduce){.diagram--tree .diagram__tree-card{animation:none}}@media (min-width:769px){.diagram__tree-title{font-size:14.5px}.diagram__tree-sub{font-size:12px}}.diagram{--viz-accent:var(--color-accent)}.diagram--creational{--viz-accent:var(--palette-category-creational)}.diagram--structural{--viz-accent:var(--palette-category-structural)}.diagram--behavioral{--viz-accent:var(--palette-category-behavioral)}.diagram__card--accent-error{--viz-accent:var(--color-error)}.diagram__card--accent-warning{--viz-accent:var(--color-warning)}.diagram__card--accent-success{--viz-accent:var(--color-success)}.viz-overlay{pointer-events:none}[data-node-id]{transition:opacity var(--duration-moderate) var(--ease-in-out), transform var(--duration-moderate) var(--ease-out);transform-box:fill-box;transform-origin:50%}[data-viz-state=dim]{opacity:.32}[data-viz-state=idle],[data-viz-state=active]{opacity:1}[data-viz-highlight=true]{filter:drop-shadow(0 0 16px color-mix(in srgb, var(--viz-accent) 85%, transparent)) drop-shadow(0 0 6px var(--viz-accent))}[data-viz-glow=true]{filter:drop-shadow(0 0 26px color-mix(in srgb, var(--viz-accent) 80%, transparent)) drop-shadow(0 0 12px color-mix(in srgb, var(--viz-accent) 95%, transparent)) drop-shadow(0 0 4px var(--viz-accent))}[data-viz-focus=true]{filter:drop-shadow(0 0 0 2px var(--color-border-focus,var(--viz-accent)));outline:none}[data-node-id]:focus-visible{filter:drop-shadow(0 0 0 2px var(--color-border-focus,var(--viz-accent)));outline:none}[data-theme=dark] [data-viz-highlight=true]{filter:drop-shadow(0 0 18px var(--viz-accent)) drop-shadow(0 0 7px var(--viz-accent))}[data-theme=dark] [data-viz-glow=true]{filter:drop-shadow(0 0 32px var(--viz-accent)) drop-shadow(0 0 15px var(--viz-accent)) drop-shadow(0 0 5px var(--viz-accent))}[data-theme=dark] .diagram__flow[data-viz-active=true],[data-theme=dark] .diagram__edge[data-viz-active=true]{filter:drop-shadow(0 0 14px var(--viz-accent)) drop-shadow(0 0 4px var(--viz-accent))}@media (max-width:640px){[data-viz-highlight=true]{filter:drop-shadow(0 0 42px color-mix(in srgb, var(--viz-accent) 90%, transparent)) drop-shadow(0 0 16px var(--viz-accent))}[data-viz-glow=true]{filter:drop-shadow(0 0 70px color-mix(in srgb, var(--viz-accent) 90%, transparent)) drop-shadow(0 0 34px var(--viz-accent)) drop-shadow(0 0 12px var(--viz-accent))}[data-theme=dark] [data-viz-highlight=true]{filter:drop-shadow(0 0 48px var(--viz-accent)) drop-shadow(0 0 18px var(--viz-accent))}[data-theme=dark] [data-viz-glow=true]{filter:drop-shadow(0 0 90px var(--viz-accent)) drop-shadow(0 0 42px var(--viz-accent)) drop-shadow(0 0 14px var(--viz-accent))}[data-theme=dark] .diagram__flow[data-viz-active=true],[data-theme=dark] .diagram__edge[data-viz-active=true]{filter:drop-shadow(0 0 34px var(--viz-accent)) drop-shadow(0 0 10px var(--viz-accent))}}@media (min-width:1025px) and (hover:hover) and (pointer:fine){[data-viz-highlight=true]{filter:drop-shadow(0 0 6px var(--viz-accent))}[data-viz-glow=true]{filter:drop-shadow(0 0 10px color-mix(in srgb, var(--viz-accent) 55%, transparent)) drop-shadow(0 0 2px color-mix(in srgb, var(--viz-accent) 80%, transparent))}[data-theme=dark] [data-viz-highlight=true]{filter:drop-shadow(0 0 8px var(--viz-accent)) drop-shadow(0 0 2px var(--viz-accent))}[data-theme=dark] [data-viz-glow=true]{filter:drop-shadow(0 0 14px color-mix(in srgb, var(--viz-accent) 85%, transparent)) drop-shadow(0 0 4px var(--viz-accent))}[data-theme=dark] .diagram__flow[data-viz-active=true],[data-theme=dark] .diagram__edge[data-viz-active=true]{filter:drop-shadow(0 0 6px color-mix(in srgb, var(--viz-accent) 80%, transparent))}}.viz-anim--reveal{animation:viz-reveal var(--duration-slow) var(--ease-out) both}.viz-anim--creation{animation:viz-creation var(--duration-slow) var(--ease-spring) both}.viz-anim--reuse{animation:viz-pulse var(--duration-slower) var(--ease-in-out)}.viz-anim--pulse{animation:viz-pulse var(--duration-slower) var(--ease-in-out) infinite}.viz-anim--highlight{animation:viz-highlight var(--duration-slow) var(--ease-out)}.viz-anim--focus{animation:viz-focus var(--duration-moderate) var(--ease-out) both}.viz-anim--expansion{animation:viz-expand var(--duration-slow) var(--ease-out) both}.viz-anim--collapse{animation:viz-collapse var(--duration-slow) var(--ease-in) both}.viz-anim--swap-out{animation:viz-swap-out var(--duration-moderate) var(--ease-in) both}.viz-anim--swap-in{animation:viz-swap-in var(--duration-moderate) var(--ease-out) both}.viz-anim--wrap{animation:viz-wrap var(--duration-slow) var(--ease-spring) both}.viz-anim--transition{animation:viz-highlight var(--duration-slow) var(--ease-in-out)}.viz-packet{fill:var(--viz-accent);offset-path:var(--viz-path);offset-rotate:0deg;animation:viz-travel var(--duration-crawl) var(--ease-smooth) forwards}.viz-packet--response{fill:var(--color-info);animation-direction:reverse}.viz-packet--loop{animation-iteration-count:infinite}.viz-wave{fill:none;stroke:var(--viz-accent);transform-box:fill-box;transform-origin:50%;animation:viz-wave var(--duration-crawl) var(--ease-out) forwards}.viz-wave--loop{animation-iteration-count:infinite}.diagram__flow[data-viz-active=true],.diagram__edge[data-viz-active=true]{stroke:var(--viz-accent);filter:drop-shadow(0 0 4px color-mix(in srgb, var(--viz-accent) 60%, transparent))}@keyframes viz-reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes viz-creation{0%{opacity:0;transform:scale(.6)}60%{opacity:1}to{opacity:1;transform:scale(1)}}@keyframes viz-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes viz-highlight{0%,to{opacity:1}40%{opacity:.55}}@keyframes viz-focus{0%{transform:scale(1)}to{transform:scale(1.06)}}@keyframes viz-expand{0%{opacity:0;transform:scaleY(.4)}to{opacity:1;transform:scaleY(1)}}@keyframes viz-collapse{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(.4)}}@keyframes viz-swap-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-14px)}}@keyframes viz-swap-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes viz-wrap{0%{opacity:0;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes viz-travel{0%{offset-distance:0%;opacity:0}10%{opacity:1}90%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes viz-wave{0%{opacity:.5;transform:scale(.3)}to{opacity:0;transform:scale(1)}}.viz-replay{align-items:center;gap:var(--space-2);margin:var(--space-4) auto 0;padding:var(--space-2) var(--space-5);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:color var(--duration-normal) var(--ease-out), border-color var(--duration-normal) var(--ease-out), background var(--duration-normal) var(--ease-out);background:0 0;display:none}.viz-replay:hover{color:var(--color-text-primary);border-color:var(--viz-accent);background:var(--color-bg-subtle)}.viz-replay--visible{display:flex}@media (prefers-reduced-motion:reduce){[data-node-id],.viz-anim--reveal,.viz-anim--creation,.viz-anim--reuse,.viz-anim--pulse,.viz-anim--highlight,.viz-anim--focus,.viz-anim--expansion,.viz-anim--collapse,.viz-anim--swap-out,.viz-anim--swap-in,.viz-anim--wrap,.viz-anim--transition{transition:none!important;animation:none!important}.viz-packet,.viz-wave{display:none!important}}.pattern-icon{--icon-accent:var(--color-accent);vertical-align:middle;color:var(--color-text-primary);flex:none;display:inline-block}.pattern-icon--creational{--icon-accent:var(--palette-category-creational)}.pattern-icon--structural{--icon-accent:var(--palette-category-structural)}.pattern-icon--behavioral{--icon-accent:var(--palette-category-behavioral)}.pattern-icon__base{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.pattern-icon__accent{fill:none;stroke:var(--icon-accent);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.pattern-icon__accent--fill{fill:var(--icon-accent);stroke:none}.pattern-icon--sm{width:var(--icon-sm);height:var(--icon-sm)}.pattern-icon--md{width:var(--icon-lg);height:var(--icon-lg)}.pattern-icon--lg{width:var(--icon-xl);height:var(--icon-xl)}.pattern-icon--xl{width:var(--icon-2xl);height:var(--icon-2xl)}.pattern-icon--emphasis{filter:drop-shadow(0 2px 6px color-mix(in srgb, var(--icon-accent) 45%, transparent))}.pattern-icon--animated .pattern-icon__accent{transform-box:fill-box;transform-origin:50%;transition:transform var(--duration-normal) var(--ease-out)}@media (hover:hover){.pattern-icon--animated:hover .pattern-icon__accent{transform:scale(1.12)}}@media (prefers-reduced-motion:reduce){.pattern-icon--animated .pattern-icon__accent{transition:none}.pattern-icon--animated:hover .pattern-icon__accent{transform:none}}.page-loading{justify-content:center;align-items:center;min-height:50vh;display:flex}.hero{padding-block:var(--space-16) var(--space-12);text-align:center;position:relative;overflow:hidden}@media (min-width:640px){.hero{padding-block:var(--space-24) var(--space-20)}}.hero:before{content:"";background-image:radial-gradient(circle, var(--color-border-strong) 1px, transparent 1px);opacity:.4;pointer-events:none;will-change:transform;background-size:28px 28px;animation:50s linear infinite hero-grid-drift;position:absolute;top:-28px;bottom:-28px;left:-28px;right:-28px;-webkit-mask-image:radial-gradient(60% 60% at 50% 28px,#000 0%,#0000 75%);mask-image:radial-gradient(60% 60% at 50% 28px,#000 0%,#0000 75%)}.hero:after{content:"";background:radial-gradient(ellipse, var(--palette-accent-500) 0%, transparent 70%);opacity:.14;filter:blur(100px);pointer-events:none;width:760px;height:420px;position:absolute;top:-80px;left:50%;translate:-50%}@keyframes hero-grid-drift{to{transform:translate(28px,28px)}}.hero__inner{z-index:1;align-items:center;gap:var(--space-6);flex-direction:column;max-width:720px;margin-inline-start:auto;margin-inline-end:auto;display:flex;position:relative}.hero__badge{display:inline-flex}.hero__title{font-size:var(--text-4xl);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);line-height:var(--line-height-tight);color:var(--color-text-primary);background:linear-gradient(135deg, var(--color-text-primary) 0%, var(--color-accent) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.hero__subtitle{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);max-width:55ch}@media (min-width:640px){.hero__subtitle{font-size:var(--text-lg)}}.hero__actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;justify-content:center;display:flex}.stats{padding-block:var(--space-8);border-block:1px solid var(--color-border);background-color:var(--color-bg-subtle)}.stats__grid{gap:var(--space-4);text-align:center;grid-template-columns:repeat(2,1fr);display:grid}@media (min-width:1024px){.stats__grid{grid-template-columns:repeat(4,1fr)}}.stat{gap:var(--space-1);padding:var(--space-3);flex-direction:column;display:flex}.stat__number{font-size:var(--text-4xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);letter-spacing:var(--tracking-tight);line-height:1}.stat__label{font-size:var(--text-sm);color:var(--color-text-tertiary);font-weight:var(--font-weight-medium)}.section__header{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-8);flex-wrap:wrap;display:flex}.section__title{font-size:var(--text-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.section__subtitle{font-size:var(--text-base);color:var(--color-text-tertiary);margin-top:var(--space-2)}.category-cards{gap:var(--space-6);grid-template-columns:1fr;display:grid}@media (min-width:640px){.category-cards{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.category-cards{grid-template-columns:repeat(3,1fr)}}.category-card{gap:var(--space-4);padding:var(--space-6);color:inherit;border:1px solid var(--color-border);border-radius:var(--radius-2xl);background-color:var(--color-bg-surface);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-moderate) var(--ease-out), transform var(--duration-moderate) var(--ease-out), border-color var(--duration-normal) var(--ease-in-out);flex-direction:column;text-decoration:none;display:flex;position:relative;overflow:hidden}.category-card:before{content:"";background-color:var(--cat-color);opacity:0;height:3px;transition:opacity var(--duration-normal) var(--ease-in-out);position:absolute;top:0;left:0;right:0}.category-card:hover{box-shadow:var(--shadow-xl);border-color:var(--color-border-strong);text-decoration:none;transform:translateY(-6px)}.category-card:hover:before{opacity:1}.category-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.category-card--creational{--cat-color:var(--palette-category-creational)}.category-card--structural{--cat-color:var(--palette-category-structural)}.category-card--behavioral{--cat-color:var(--palette-category-behavioral)}.category-card__icon{border-radius:var(--radius-lg);background-color:var(--color-bg-subtle);width:48px;height:48px;color:var(--cat-color);flex-shrink:0;justify-content:center;align-items:center;display:flex}.category-card__name{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.category-card__desc{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);flex:1}.category-card__count{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--cat-color);margin-top:auto}@media (min-width:640px){.hero__title{font-size:var(--text-5xl)}}@media (min-width:1024px){.hero__title{font-size:var(--text-6xl)}}.catalog-page__header{padding-block:var(--space-12) var(--space-8);border-bottom:1px solid var(--color-border-subtle);margin-bottom:var(--space-8)}.catalog-page__title{font-size:var(--text-4xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:var(--line-height-tight)}.catalog-page__subtitle{font-size:var(--text-lg);color:var(--color-text-secondary);margin-top:var(--space-3);max-width:60ch}.module-grid{gap:var(--space-6);grid-template-columns:1fr;display:grid}@media (min-width:640px){.module-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}.module-card{gap:var(--space-4);padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-xl);background-color:var(--color-bg-surface);color:inherit;transition:box-shadow var(--duration-normal) var(--ease-out), transform var(--duration-normal) var(--ease-out), border-color var(--duration-normal) var(--ease-in-out);flex-direction:column;text-decoration:none;display:flex}.module-card--active:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-strong);text-decoration:none;transform:translateY(-2px)}.module-card--active:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.module-card--planned{opacity:.6;pointer-events:none;cursor:default}.module-card__icon{border-radius:var(--radius-lg);background-color:var(--color-accent-subtle);width:48px;height:48px;color:var(--color-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.module-card--planned .module-card__icon{background-color:var(--color-bg-subtle);color:var(--color-text-tertiary)}.module-card__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.module-card__title{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug)}.module-card__desc{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);flex:1}.module-card__footer{align-items:center;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-border-subtle);margin-top:auto;display:flex}.patterns-page__header{padding-block:var(--space-12) var(--space-6)}.patterns-page__title{font-size:var(--text-4xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.patterns-page__subtitle{font-size:var(--text-base);color:var(--color-text-secondary);margin-top:var(--space-2)}.patterns-page__intro{margin-bottom:var(--space-8)}.filter-bar{gap:var(--space-2);padding-block:var(--space-4);border-bottom:1px solid var(--color-border-subtle);margin-bottom:var(--space-6);grid-template-columns:1fr 1fr;display:grid}@media (min-width:640px){.filter-bar{flex-wrap:wrap;align-items:center;display:flex}}.filter-chip{justify-content:center;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);display:inline-flex}@media (min-width:640px){.filter-chip{justify-content:flex-start;width:auto}}.filter-chip:hover{background-color:var(--color-bg-subtle);border-color:var(--color-border-strong);color:var(--color-text-primary)}.filter-chip.is-active{background-color:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text);box-shadow:var(--shadow-sm)}.filter-chip:focus-visible{box-shadow:var(--shadow-accent);outline:none}.filter-chip__dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.filter-chip__dot--creational{background-color:var(--palette-category-creational)}.filter-chip__dot--structural{background-color:var(--palette-category-structural)}.filter-chip__dot--behavioral{background-color:var(--palette-category-behavioral)}.intro-category-link{color:inherit;font-weight:var(--font-weight-semibold);text-decoration:underline;-webkit-text-decoration-color:var(--color-border-strong);text-decoration-color:var(--color-border-strong);text-underline-offset:3px;transition:color var(--duration-normal) var(--ease-in-out), text-decoration-color var(--duration-normal) var(--ease-in-out)}.intro-category-link--creational:hover{color:var(--palette-category-creational);-webkit-text-decoration-color:var(--palette-category-creational);text-decoration-color:var(--palette-category-creational)}.intro-category-link--creational:focus-visible{color:var(--palette-category-creational);-webkit-text-decoration-color:var(--palette-category-creational);text-decoration-color:var(--palette-category-creational)}.intro-category-link--structural:hover{color:var(--palette-category-structural);-webkit-text-decoration-color:var(--palette-category-structural);text-decoration-color:var(--palette-category-structural)}.intro-category-link--structural:focus-visible{color:var(--palette-category-structural);-webkit-text-decoration-color:var(--palette-category-structural);text-decoration-color:var(--palette-category-structural)}.intro-category-link--behavioral:hover{color:var(--palette-category-behavioral);-webkit-text-decoration-color:var(--palette-category-behavioral);text-decoration-color:var(--palette-category-behavioral)}.intro-category-link--behavioral:focus-visible{color:var(--palette-category-behavioral);-webkit-text-decoration-color:var(--palette-category-behavioral);text-decoration-color:var(--palette-category-behavioral)}.patterns-intro__categories{gap:var(--space-2);margin:var(--space-2) 0 var(--space-4);padding-left:var(--space-5);flex-direction:column;display:flex}.patterns-intro__categories li{color:var(--color-text-secondary);list-style:outside}.patterns-intro__groups{gap:var(--space-6);margin:var(--space-4) 0;padding:var(--space-4);background-color:var(--color-bg-subtle);border-radius:var(--radius-md);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.patterns-intro__group-title{align-items:center;gap:var(--space-2);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);display:flex}.patterns-intro__dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.patterns-intro__dot--creational{background-color:var(--palette-category-creational)}.patterns-intro__dot--structural{background-color:var(--palette-category-structural)}.patterns-intro__dot--behavioral{background-color:var(--palette-category-behavioral)}.patterns-intro__list{margin-top:var(--space-2);padding-left:var(--space-5);color:var(--color-text-secondary);font-size:var(--text-sm);line-height:var(--leading-relaxed,1.7)}.patterns-intro__list li{list-style:outside}.filter-bar__count{text-align:right;font-size:var(--text-sm);color:var(--color-text-tertiary);white-space:nowrap;grid-column:1/-1;margin-left:0}@media (min-width:640px){.filter-bar__count{text-align:left;grid-column:auto;margin-left:auto}}.patterns-grid{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (min-width:640px){.patterns-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}.pattern-card{gap:var(--space-4);padding:var(--space-5);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);color:inherit;transition:box-shadow var(--duration-moderate) var(--ease-out), transform var(--duration-moderate) var(--ease-out), border-top-color var(--duration-normal) var(--ease-in-out), border-color var(--duration-normal) var(--ease-in-out);border-top:3px solid #0000;flex-direction:column;text-decoration:none;display:flex}.pattern-card:hover{box-shadow:var(--shadow-lg);text-decoration:none;transform:translateY(-4px)}.pattern-card--creational:hover{border-top-color:var(--palette-category-creational)}.pattern-card--structural:hover{border-top-color:var(--palette-category-structural)}.pattern-card--behavioral:hover{border-top-color:var(--palette-category-behavioral)}.pattern-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.pattern-card.is-filtered-out{display:none}.pattern-card__top{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.pattern-card__completed-badge{width:22px;height:22px;color:var(--color-bg-base);background-color:var(--color-success);border-radius:var(--radius-full);flex-shrink:0;justify-content:center;align-items:center;display:flex}.pattern-card__favorite-btn{padding:var(--space-1);color:var(--color-text-tertiary);border-radius:var(--radius-md);cursor:pointer;transition:color var(--duration-fast) var(--ease-in-out), transform var(--duration-fast) var(--ease-out);background:0 0;border:none;justify-content:center;align-items:center;margin-left:auto;display:flex}.pattern-card__favorite-btn:hover{color:var(--color-warning);transform:scale(1.1)}.pattern-card__favorite-btn.is-active{color:var(--color-warning)}.pattern-card__favorite-btn.is-active svg{fill:currentColor}.pattern-card__name{align-items:center;gap:var(--space-2);font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug);display:flex}.pattern-card__summary{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);-webkit-line-clamp:3;-webkit-box-orient:vertical;flex:1;display:-webkit-box;overflow:hidden}.pattern-card__footer{padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;margin-top:auto;display:flex}.pattern-card__complexity{align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-text-tertiary);display:flex}.pattern-card__arrow{color:var(--color-text-tertiary);transition:transform var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-in-out)}.pattern-card:hover .pattern-card__arrow{color:var(--color-accent);transform:translate(3px)}.pattern-card--coming-soon{opacity:.65;pointer-events:none}.complexity-pip{background-color:var(--color-border-strong);border-radius:50%;width:8px;height:8px}.complexity-pip.is-filled{background-color:var(--color-accent)}.roadmap-page__header{padding-block:var(--space-12) var(--space-6)}.roadmap-page__title{font-size:var(--text-4xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.roadmap-page__subtitle{font-size:var(--text-base);color:var(--color-text-secondary);margin-top:var(--space-2);max-width:60ch}.roadmap-page__progress{margin-top:var(--space-5);max-width:420px}.roadmap-page__body{gap:var(--space-10);padding-bottom:var(--space-12);flex-direction:column;display:flex}.roadmap-section__title{align-items:center;gap:var(--space-2);font-size:var(--text-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-5);display:flex}.roadmap-section__dot{border-radius:var(--radius-full);flex-shrink:0;width:10px;height:10px}.roadmap-section__dot--creational{background-color:var(--palette-category-creational)}.roadmap-section__dot--structural{background-color:var(--palette-category-structural)}.roadmap-section__dot--behavioral{background-color:var(--palette-category-behavioral)}.roadmap-list{gap:var(--space-5);padding-left:var(--space-10);flex-direction:column;display:flex;position:relative}.roadmap-list:before{content:"";background-color:var(--color-border);width:2px;position:absolute;top:4px;bottom:4px;left:15px}.roadmap-step{position:relative}.roadmap-step__marker{top:0;left:calc(var(--space-10) * -1);border-radius:var(--radius-full);background-color:var(--color-bg-surface);border:2px solid var(--color-border-strong);width:28px;height:28px;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);z-index:1;justify-content:center;align-items:center;display:flex;position:absolute}.roadmap-step__card .pattern-card{height:100%}@media (min-width:640px){.roadmap-list{padding-left:var(--space-12)}.roadmap-step__marker{left:calc(var(--space-12) * -1);width:32px;height:32px}}.favorites-page{padding-top:var(--space-8);padding-bottom:var(--space-20)}.favorites-page__header{padding-block:var(--space-12) var(--space-6)}.favorites-page__title{font-size:var(--text-4xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.favorites-page__subtitle{font-size:var(--text-base);color:var(--color-text-secondary);margin-top:var(--space-2);max-width:60ch}.favorites-page__results{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (min-width:640px){.favorites-page__results{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}.pattern-detail{padding-bottom:var(--space-20)}.pattern-detail__header{padding-block:var(--space-10) var(--space-8);border-bottom:1px solid var(--color-border-subtle);margin-bottom:var(--space-8)}.pattern-detail__meta{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.pattern-detail__title{align-items:center;gap:var(--space-3);font-size:var(--text-4xl);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);color:var(--color-text-primary);margin-bottom:var(--space-4);display:flex}.pattern-detail__intent{font-size:var(--text-lg);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);max-width:70ch}.pattern-detail__stats{align-items:center;gap:var(--space-6);margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--color-border-subtle);flex-wrap:wrap;display:flex}.progress-toggle-btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border:1px solid var(--color-border-strong);border-radius:var(--radius-full);cursor:pointer;transition:color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), background-color var(--duration-fast) var(--ease-in-out);background:0 0;margin-left:auto;display:flex}.progress-toggle-btn:hover{border-color:var(--color-success);color:var(--color-success)}.progress-toggle-btn.is-active{color:var(--color-success);border-color:var(--color-success);background-color:color-mix(in srgb, var(--color-success) 12%, transparent)}.pattern-stat{align-items:center;gap:var(--space-2);display:flex}.pattern-stat__label{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-tertiary)}.pattern-stat__pips{align-items:center;gap:4px;display:flex}.pip{background-color:var(--color-border-strong);border-radius:50%;width:10px;height:10px}.pip.is-filled{background-color:var(--color-accent)}.detail-section{gap:var(--space-8);flex-direction:column;display:flex}.detail-section__title{font-size:var(--text-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-4)}.detail-section p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.detail-section p+p{margin-top:var(--space-4)}.participants-list{gap:var(--space-3);margin-top:var(--space-4);flex-direction:column;display:flex}.participant{gap:var(--space-4);padding:var(--space-4);background-color:var(--color-bg-subtle);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);grid-template-columns:1fr;display:grid}.participant__name{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--color-accent);font-family:var(--font-mono)}.participant__role{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.participant__diagram-note{margin-top:var(--space-2);font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--line-height-relaxed)}.participant__diagram-note-label{font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.lang-select{gap:var(--space-1);margin-bottom:var(--space-4);background-color:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1);width:-moz-fit-content;width:fit-content;display:flex}.lang-btn{padding:var(--space-1) var(--space-3);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-in-out), color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);background:0 0;border:none;position:relative}.lang-btn:hover{color:var(--color-text-primary)}.lang-btn.is-active{background-color:var(--color-bg-surface);color:var(--color-accent);font-weight:var(--font-weight-semibold);box-shadow:var(--shadow-sm)}.lang-btn:focus-visible{box-shadow:var(--shadow-accent);outline:none}.lang-btn__badge{border-radius:var(--radius-full);background-color:var(--color-accent);width:6px;height:6px;position:absolute;top:2px;right:2px}.lang-panel{display:none}.lang-panel.is-visible{display:block}.pros-cons{gap:var(--space-6);grid-template-columns:1fr;display:grid}.pros-cons__col{gap:var(--space-3);flex-direction:column;display:flex}.pros-cons__title{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.pros-cons__title--pros{color:var(--color-success)}.pros-cons__title--cons{color:var(--color-error)}.pros-cons__list{gap:var(--space-2);flex-direction:column;list-style:none;display:flex}.pros-cons__item{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);padding:var(--space-3);background-color:var(--color-bg-subtle);border-radius:var(--radius-md);gap:var(--space-2);align-items:flex-start;display:flex}.pros-cons__item:before{content:"";border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-top:6px}.pros-cons__col--pros .pros-cons__item:before{background-color:var(--color-success)}.pros-cons__col--cons .pros-cons__item:before{background-color:var(--color-error)}.detail-list{gap:var(--space-3);flex-direction:column;list-style:none;display:flex}.detail-list__item{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);padding:var(--space-4);background-color:var(--color-bg-subtle);border-left:3px solid var(--color-accent);border-radius:0 var(--radius-md) var(--radius-md) 0}.related-patterns{margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--color-border)}.related-patterns__title{font-size:var(--text-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-6)}.related-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.related-card{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:var(--font-weight-medium);transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);text-decoration:none;display:flex}.related-card:hover{background-color:var(--color-bg-subtle);border-color:var(--color-accent);box-shadow:var(--shadow-sm);text-decoration:none}.related-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.pattern-adjacent-nav{gap:var(--space-4);margin-top:var(--space-8);grid-template-columns:1fr;display:grid}.adjacent-nav-link{align-items:center;gap:var(--space-3);padding:var(--space-4);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);transition:background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);text-decoration:none;display:flex}.adjacent-nav-link--next{text-align:left;grid-column:1;justify-content:flex-start}.adjacent-nav-link:hover{background-color:var(--color-bg-subtle);border-color:var(--color-accent);box-shadow:var(--shadow-sm);text-decoration:none}.adjacent-nav-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.adjacent-nav-link__body{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.adjacent-nav-link--next .adjacent-nav-link__body{align-items:flex-start}.adjacent-nav-link__label{font-size:var(--text-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:var(--tracking-wide)}.adjacent-nav-link__name{align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-weight-medium);display:flex}.coming-soon-page{padding-block:var(--space-20);text-align:center;max-width:480px;margin-inline-start:auto;margin-inline-end:auto}@media (min-width:768px){.pattern-detail__title{font-size:var(--text-5xl)}.pros-cons{grid-template-columns:1fr 1fr}.participant{grid-template-columns:180px 1fr}.pattern-adjacent-nav{grid-template-columns:1fr 1fr}.adjacent-nav-link--next{text-align:right;grid-column:2;justify-content:flex-end}.adjacent-nav-link--next .adjacent-nav-link__body{align-items:flex-end}}.about-page__hero{padding-block:var(--space-12) var(--space-10);border-bottom:1px solid var(--color-border-subtle);margin-bottom:var(--space-10)}.about-page__title{font-size:var(--text-3xl);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);color:var(--color-text-primary);margin-bottom:var(--space-4)}.about-page__lead{font-size:var(--text-lg);color:var(--color-text-secondary);max-width:65ch;line-height:var(--line-height-relaxed)}.about-section{padding-block:var(--space-10);border-bottom:1px solid var(--color-border-subtle)}.about-section:last-of-type{border-bottom:none}.about-section__title{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-5)}.about-section p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);max-width:70ch}.about-section p+p{margin-top:var(--space-4)}.tech-table{border:1px solid var(--color-border);border-radius:var(--radius-lg);border-collapse:collapse;width:100%;margin-top:var(--space-4);overflow:hidden}.tech-table th{text-align:left;font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-tertiary);padding:var(--space-3) var(--space-4);background-color:var(--color-bg-subtle);border-bottom:1px solid var(--color-border);white-space:nowrap;text-overflow:clip;overflow:visible}.tech-table td{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--color-text-primary);border-bottom:1px solid var(--color-border-subtle);white-space:normal;text-overflow:clip;overflow:visible}.tech-table tr:last-child td{border-bottom:none}.tech-table tr:hover td{background-color:var(--color-bg-subtle)}.tech-table td:first-child{font-weight:var(--font-weight-medium);color:var(--color-accent);font-family:var(--font-mono);font-size:var(--text-xs)}.principles-grid{gap:var(--space-3);margin-top:var(--space-4);grid-template-columns:1fr;display:grid}.principles-grid--philosophy{margin-top:var(--space-5)}.principle-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background-color:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);cursor:pointer;transition:background-color .12s var(--ease-out), border-color .12s var(--ease-out), transform .12s var(--ease-out), box-shadow .12s var(--ease-out);outline:none;display:flex;position:relative}.principle-item:hover{background-color:var(--color-accent-subtle);border-color:var(--color-border-accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.principle-item:focus-visible{background-color:var(--color-accent-subtle);border-color:var(--color-border-accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.principle-item:has(.tooltip-wrap.is-open){z-index:var(--z-dropdown)}.principle-item:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.principle-item .tooltip-wrap{align-items:center;gap:inherit;width:100%;display:flex}.principle-item__icon{color:var(--color-accent);flex-shrink:0}.about-cta{padding:var(--space-10);background-color:var(--color-accent-subtle);border-radius:var(--radius-xl);text-align:center;align-items:center;gap:var(--space-4);margin-top:var(--space-10);border:1px solid #6366f133;flex-direction:column;display:flex}.about-cta__title{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.about-cta__desc{font-size:var(--text-base);color:var(--color-text-secondary);max-width:55ch}@media (min-width:640px){.about-page__title{font-size:var(--text-5xl)}.principles-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.search-page{padding-top:var(--space-8);padding-bottom:var(--space-20)}.search-page__header{padding-bottom:var(--space-6);margin-bottom:var(--space-6);border-bottom:1px solid var(--color-border-subtle)}.search-page__input-wrap{max-width:640px;margin-bottom:var(--space-4)}.search-page__meta{font-size:var(--text-sm);color:var(--color-text-tertiary)}.search-page__meta strong{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.search-page__results{gap:var(--space-4);grid-template-columns:1fr;display:grid}@media (min-width:640px){.search-page__results{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}}.error-page{isolation:isolate;min-height:calc(100dvh - var(--header-height) - 200px);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.error-page__backdrop{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0}.error-page__bg-node{fill:var(--color-accent);opacity:.18;transform-box:fill-box;transform-origin:50%;animation:error-bg-pulse 5s var(--ease-in-out) infinite}.error-page__bg-line{stroke:var(--color-accent);stroke-width:.12px;stroke-dasharray:1.4 2.6;opacity:.16;animation:9s linear infinite error-bg-drift}.error-page__content{z-index:1;text-align:center;padding:var(--space-12) var(--space-8);align-items:center;gap:var(--space-5);flex-direction:column;display:flex;position:relative}.error-page__art{width:-moz-fit-content;width:fit-content;margin-bottom:var(--space-4);display:inline-flex;position:relative}.error-illustration{width:clamp(200px,65vw,260px);height:auto;color:var(--color-text-tertiary);--icon-accent:var(--color-accent);overflow:visible}.error-illustration__base{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.error-illustration__ghost{fill:none;stroke:var(--icon-accent);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5 4;opacity:.7}.error-illustration__ghost--warn{stroke:var(--color-error)}.error-illustration__glow{fill:var(--icon-accent);opacity:.16;filter:blur(10px);animation:error-glow-pulse 2.6s var(--ease-in-out) infinite}.error-illustration__glow--warn{fill:var(--color-error)}.error-illustration__ghost-wrap{transform-box:fill-box;transform-origin:50%;animation:error-ghost-float 3.6s var(--ease-in-out) infinite}.error-illustration__dash{stroke:var(--icon-accent);stroke-width:1.5px;stroke-linecap:round;stroke-dasharray:1 10;animation:1.4s linear infinite error-dash-flow}.error-illustration__particle{fill:var(--icon-accent);transform-box:fill-box;transform-origin:50%;animation:error-particle-pulse 1.4s var(--ease-in-out) infinite}.error-illustration__crack{stroke:var(--color-error);stroke-width:2px;animation:2.4s ease-in-out infinite error-crack-flicker}.error-illustration__mark{font-family:var(--font-mono);font-size:22px;font-weight:var(--font-weight-bold);fill:var(--icon-accent)}.error-illustration__mark--warn{fill:var(--color-error)}.error-page__code{font-size:var(--text-sm);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);color:var(--icon-accent,var(--color-accent));background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);box-shadow:var(--shadow-sm);-webkit-user-select:none;user-select:none;position:absolute;top:4px;right:-8px}.error-page__title{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.error-page__desc{font-size:var(--text-base);color:var(--color-text-tertiary);max-width:45ch;line-height:var(--line-height-relaxed)}.error-page__actions{gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;justify-content:center;display:flex}@keyframes error-bg-pulse{0%,to{opacity:.08;transform:scale(.7)}50%{opacity:.28;transform:scale(1.4)}}@keyframes error-bg-drift{to{stroke-dashoffset:-24px}}@keyframes error-glow-pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:.28;transform:scale(1.15)}}@keyframes error-ghost-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes error-dash-flow{to{stroke-dashoffset:-34px}}@keyframes error-particle-pulse{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.3)}}@keyframes error-crack-flicker{0%,44%,56%,to{opacity:1}50%{opacity:.35}}@media (min-width:480px){.error-page__title{font-size:var(--text-4xl)}.error-illustration{width:clamp(280px,40vw,420px)}}@media (prefers-reduced-motion:reduce){.error-page__bg-node,.error-page__bg-line,.error-illustration__ghost-wrap,.error-illustration__glow,.error-illustration__dash,.error-illustration__particle,.error-illustration__crack{animation:none}}.a11y-dock{right:var(--space-6);bottom:var(--space-6);z-index:var(--z-toast);width:52px;height:52px;position:fixed}.a11y-widget__trigger{border-radius:var(--radius-full);background-color:var(--color-accent);color:var(--color-accent-text);box-shadow:var(--shadow-lg);transition:transform .45s var(--ease-in-out), var(--transition-shadow);justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.a11y-widget__trigger[aria-expanded=true]{background-color:var(--color-accent-pressed)}.a11y-dock.is-docked .a11y-widget__trigger{pointer-events:none;transform:translate(80px)}@media (hover:hover) and (pointer:fine){.a11y-widget__trigger:hover{background-color:var(--color-accent-hover);transform:translateY(-2px)}.a11y-dock.is-docked:hover .a11y-widget__trigger,.a11y-dock.is-docked:focus-within .a11y-widget__trigger{pointer-events:auto;transform:translate(0)}}.a11y-widget__icon{width:var(--icon-lg);height:var(--icon-lg)}.a11y-dock__tab{right:0;bottom:calc(var(--space-6) + 4px);z-index:var(--z-toast);background-color:var(--color-accent);width:20px;height:44px;color:var(--color-accent-text);clip-path:polygon(100% 0,100% 100%,25% 100%,0 50%,25% 0);box-shadow:var(--shadow-md);transition:background-color var(--duration-fast) var(--ease-in-out);justify-content:center;align-items:center;padding-left:2px;display:flex;position:fixed}@media (hover:hover) and (pointer:fine){.a11y-dock__tab:hover{background-color:var(--color-accent-hover)}}.a11y-dock__tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.a11y-dock__tab-icon{width:9px;height:15px;transition:transform var(--duration-fast) var(--ease-in-out)}.a11y-dock:not(.is-docked) .a11y-dock__tab-icon{transform:rotate(180deg)}.a11y-widget__panel{right:var(--space-6);bottom:calc(var(--space-6) + 64px);z-index:var(--z-modal);width:min(320px, calc(100vw - var(--space-6) * 2));background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-xl);max-height:min(560px,100vh - 120px);box-shadow:var(--shadow-2xl);opacity:0;visibility:hidden;pointer-events:none;transition:var(--transition-opacity), var(--transition-transform);position:fixed;overflow-y:auto;transform:translateY(12px)scale(.98)}.a11y-widget__panel.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)scale(1)}.a11y-widget__header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.a11y-widget__title{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.a11y-widget__close{border-radius:var(--radius-md);width:32px;height:32px;color:var(--color-text-secondary);justify-content:center;align-items:center;display:flex}@media (hover:hover) and (pointer:fine){.a11y-widget__close:hover{background-color:var(--color-bg-subtle);color:var(--color-text-primary)}}.a11y-widget__body{padding:var(--space-5);gap:var(--space-5);flex-direction:column;display:flex}.a11y-widget__group{gap:var(--space-2);flex-direction:column;display:flex}.a11y-widget__legend{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.a11y-widget__segment{gap:var(--space-1);background-color:var(--color-bg-subtle);border-radius:var(--radius-lg);padding:var(--space-1);grid-template-columns:repeat(3,1fr);display:grid}.a11y-widget__segment-btn{padding:var(--space-2) var(--space-1);border-radius:var(--radius-md);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);text-align:center;transition:var(--transition-colors)}@media (hover:hover) and (pointer:fine){.a11y-widget__segment-btn:hover{color:var(--color-text-primary)}}.a11y-widget__segment-btn.is-active{background-color:var(--color-bg-elevated);color:var(--color-accent);box-shadow:var(--shadow-xs)}.a11y-widget__switch-row{justify-content:space-between;align-items:center;gap:var(--space-3);font-size:var(--text-sm);color:var(--color-text-primary);cursor:pointer;display:flex}.a11y-widget__switch{flex-shrink:0;display:inline-flex;position:relative}.a11y-widget__switch input{opacity:0;cursor:pointer;margin:0;position:absolute;top:0;bottom:0;left:0;right:0}.a11y-widget__switch-track{border-radius:var(--radius-full);background-color:var(--color-border-strong);width:40px;height:22px;transition:var(--transition-colors)}.a11y-widget__switch-thumb{border-radius:var(--radius-full);background-color:var(--color-bg-elevated);width:18px;height:18px;box-shadow:var(--shadow-xs);transition:var(--transition-transform);margin:2px;display:block}.a11y-widget__switch input:checked~.a11y-widget__switch-track{background-color:var(--color-accent)}.a11y-widget__switch input:checked~.a11y-widget__switch-track .a11y-widget__switch-thumb{transform:translate(18px)}.a11y-widget__switch input:focus-visible~.a11y-widget__switch-track{outline:2px solid var(--color-accent);outline-offset:2px}.a11y-widget__reset{padding:var(--space-3);border-radius:var(--radius-lg);border:1px solid var(--color-border);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);text-align:center;transition:var(--transition-colors)}@media (hover:hover) and (pointer:fine){.a11y-widget__reset:hover{border-color:var(--color-border-strong);color:var(--color-text-primary)}}html:has(body.a11y-font-large){font-size:18px}html:has(body.a11y-font-xlarge){font-size:20px}body.a11y-contrast-high{--color-text-primary:#000;--color-text-secondary:#000;--color-border:#000;--color-border-strong:#000;--color-bg-base:#fff;--color-bg-surface:#fff;--color-bg-elevated:#fff;--color-bg-subtle:#e5e5e5;--color-text-link:#00e;--color-accent:#00e;--color-accent-hover:#00e;--color-accent-pressed:#00e}body{--a11y-grayscale:0;--a11y-invert:0}body.a11y-monochrome{--a11y-grayscale:1}body.a11y-contrast-invert{--a11y-invert:1}body.a11y-monochrome #app,body.a11y-contrast-invert #app{filter:grayscale(var(--a11y-grayscale)) invert(var(--a11y-invert)) hue-rotate(calc(var(--a11y-invert) * 180deg))}body.a11y-readable-font,body.a11y-readable-font *{font-family:Arial,Helvetica,sans-serif!important}body.a11y-underline-links a{text-underline-offset:2px;text-decoration:underline!important}.scroll-top-btn{right:calc(var(--space-6) + 52px + var(--space-3));bottom:var(--space-6);z-index:var(--z-toast);border-radius:var(--radius-full);background-color:var(--color-bg-elevated);width:52px;height:52px;color:var(--color-text-primary);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;pointer-events:none;transition:var(--transition-opacity), var(--transition-transform), var(--transition-shadow);justify-content:center;align-items:center;display:flex;position:fixed;transform:translateY(12px)}.scroll-top-btn.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.scroll-top-btn:hover{border-color:var(--color-border-strong);transform:translateY(-2px)}.scroll-top-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
