: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-green-600:#16a34a;--palette-yellow-500:#eab308;--palette-red-500:#ef4444;--palette-blue-500:#3b82f6;--palette-purple-600:#9333ea;--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 #6d28d90f;--shadow-sm:0 1px 3px #6d28d914, 0 4px 12px #6d28d90f;--shadow-md:0 2px 6px #6d28d91a, 0 8px 24px #6d28d912;--shadow-lg:0 4px 12px #6d28d91f, 0 16px 40px #6d28d917;--shadow-xl:0 8px 20px #6d28d91f, 0 32px 60px #6d28d91a;--shadow-2xl:0 25px 50px #6d28d933;--shadow-accent:0 0 0 3px #6366f159;--shadow-inset:inset 0 2px 4px #6d28d914;--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);--color-bg-base:#fafafc;--color-bg-surface:#fff;--color-bg-elevated:#fff;--color-bg-subtle:#f1f0f8;--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-600);--color-success-subtle:#16a34a29;--color-warning:var(--palette-yellow-500);--color-warning-subtle:#eab30829;--color-error:var(--palette-red-500);--color-error-subtle:#ef44441a;--color-info:var(--palette-blue-500);--color-catastrophic:var(--palette-purple-600);--color-catastrophic-subtle:#9333ea1a}[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-success-subtle:#22c55e24;--color-warning:var(--palette-yellow-500);--color-warning-subtle:#eab3082e;--color-error:var(--palette-red-500);--color-error-subtle:#ef44441f;--color-info:var(--palette-blue-500);--color-catastrophic:#a855f7;--color-catastrophic-subtle:#a855f724;--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}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;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,svg{max-width:100%;display:block}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;font:inherit;color:inherit;background:0 0;border:none}.container{width:100%;max-width:var(--container-xl);padding-inline:var(--space-6);margin-inline:auto}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.page-intro{z-index:9999;pointer-events:none;background:#09071e;transition:opacity .82s cubic-bezier(.4,0,.2,1);position:fixed;inset:0}.page-intro__canvas{position:absolute;inset:0}.page-content{opacity:0;pointer-events:none;transform-origin:50%;transform:scale(.96)}.page-content.is-revealed{opacity:1;pointer-events:auto;transition:opacity 1.1s cubic-bezier(.4,0,.2,1),transform 1.2s cubic-bezier(0,0,.2,1);transform:scale(1)}@keyframes revealDown{0%{opacity:0;transform:translateY(-18px)}to{opacity:1;transform:translateY(0)}}@keyframes revealUp{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}.page-content.is-revealed .header{animation:.7s cubic-bezier(0,0,.2,1) both revealDown}.page-content.is-revealed .hero__eyebrow{animation:.65s cubic-bezier(0,0,.2,1) .1s both revealUp}.page-content.is-revealed .hero__title{animation:.75s cubic-bezier(0,0,.2,1) .22s both revealUp}.page-content.is-revealed .hero__subtitle{animation:.65s cubic-bezier(0,0,.2,1) .38s both revealUp}.page-content.is-revealed .academy-card-link{animation:.6s cubic-bezier(0,0,.2,1) both revealUp;animation-delay:calc(.52s + min(var(--card-index,0) * 45ms, .9s))}.page-content.is-revealed .algorithm-card-link{animation:.5s cubic-bezier(0,0,.2,1) both revealUp;animation-delay:min(calc(var(--card-index,0) * 60ms), .4s)}.page-content.is-revealed .footer{animation:.6s cubic-bezier(0,0,.2,1) 1.16s both revealUp}.skip-link{top:-60px;left:var(--space-4);z-index:var(--z-toast);padding:var(--space-2) var(--space-4);background-color:var(--color-accent);color:var(--color-accent-text);border-radius:var(--radius-md);font-weight:var(--font-weight-semibold);transition:top var(--duration-normal) var(--ease-out);position:fixed}.skip-link:focus-visible{top:var(--space-4)}.icon path,.icon circle,.icon rect,.icon line{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.header{z-index:var(--z-sticky);background-color:color-mix(in srgb, var(--color-bg-surface) 82%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--color-border);position:sticky;top:0}.header__inner{justify-content:space-between;align-items:center;height:64px;display:flex}.header__logo{align-items:center;gap:var(--space-3);color:var(--color-accent);transition:opacity var(--duration-normal) var(--ease-in-out);display:flex}.header__logo:hover{opacity:.75}.header__logo-text{align-items:baseline;gap:var(--space-2);display:flex}.header__logo-name{font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary);letter-spacing:var(--tracking-tight)}.header__logo-suffix{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--color-accent)}.header__actions{align-items:center;gap:var(--space-2);display:flex}.lang-toggle{border:1px solid var(--color-border);border-radius:var(--radius-full);width:44px;height:44px;font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wider);color:var(--color-accent);transition:var(--transition-colors), border-color var(--duration-normal) var(--ease-in-out);justify-content:center;align-items:center;display:flex}.lang-toggle:hover{border-color:var(--color-accent);background-color:var(--color-bg-subtle)}.theme-toggle{border:1px solid var(--color-border);border-radius:var(--radius-full);width:44px;height:44px;color:var(--color-text-secondary);transition:var(--transition-colors), border-color var(--duration-normal) var(--ease-in-out);justify-content:center;align-items:center;display:flex}.theme-toggle:hover{border-color:var(--color-accent);background-color:var(--color-bg-subtle);color:var(--color-text-primary)}.hero-wrapper{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 22%,#4c1d95 52%,#6d28d9 78%,#7c3aed 100%);position:relative;overflow:hidden}.hero__canvas{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.hero{z-index:1;padding-block:var(--space-16) var(--space-12);max-width:var(--container-md);position:relative}.hero__eyebrow{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--color-text-link);margin-bottom:var(--space-4);display:inline-block}.hero-wrapper .hero__eyebrow{color:#c4b5fde6}.hero__title{font-size:var(--text-6xl);letter-spacing:var(--tracking-tight);margin-bottom:var(--space-4);color:#fff}.hero__subtitle{font-size:var(--text-lg);line-height:var(--line-height-relaxed);color:#ddd6fed1;max-width:var(--container-sm)}.hero__quote{margin:var(--space-8) 0 0;padding-left:var(--space-5);max-width:var(--container-sm);border-left:2px solid #c4b5fd66}.hero__quote p{font-size:var(--text-base);font-style:italic;line-height:var(--line-height-relaxed);color:#ddd6febf}.hero__quote cite{margin-top:var(--space-2);font-size:var(--text-sm);color:#c4b5fd99;font-style:normal;display:block}.page-transition{animation:page-transition-in .45s var(--ease-smooth,ease-out) both}@keyframes page-transition-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.page-transition{animation:none}}.cards-bg{background:linear-gradient(180deg, var(--color-bg-subtle) 0%, var(--color-bg-base) 100%)}.academy-tree{align-items:start;gap:var(--space-6);padding-top:var(--space-12);padding-bottom:var(--space-20);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (width<=1024px){.academy-tree{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=719px){.academy-tree{grid-template-columns:1fr}}.academy-card-link{text-align:left;border-radius:var(--radius-xl);width:100%;display:block}.academy-card-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.academy-card{gap:var(--space-4);height:100%;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);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);border-top:3px solid #0000;display:flex;position:relative}.academy-card--live{cursor:pointer}.academy-card--live:hover{box-shadow:var(--shadow-lg);border-top-color:var(--color-accent);transform:translateY(-4px)}.academy-card--live:hover .academy-card__expand-hint,.academy-card--planned:hover .academy-card__expand-hint{color:var(--color-accent-hover)}.academy-card--planned{cursor:pointer;border-style:dashed}.academy-card--planned:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-strong)}.academy-card__icon{border-radius:var(--radius-lg);background-color:var(--color-accent-subtle);width:52px;height:52px;color:var(--color-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.academy-card--planned .academy-card__icon{color:var(--color-text-tertiary);background-color:var(--color-bg-subtle)}.academy-card__body{flex-direction:column;flex:1;min-width:0;display:flex}.academy-card__head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.academy-card__title{min-width:0;min-height:calc(var(--line-height-snug) * var(--text-lg) * 2);font-size:var(--text-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);overflow-wrap:break-word}.status-badge{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wide);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);flex-shrink:0}.status-badge--live{color:var(--color-success);background-color:var(--color-success-subtle)}.status-badge--planned{color:var(--color-text-tertiary);background-color:var(--color-bg-subtle)}.academy-card__tagline{-webkit-line-clamp:2;height:calc(var(--line-height-normal) * var(--text-sm) * 2);font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-1);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.academy-card__topics-wrap{z-index:2;opacity:0;height:0;transition:grid-template-rows var(--duration-moderate) var(--ease-smooth), opacity var(--duration-moderate) var(--ease-smooth), height var(--duration-moderate) var(--ease-smooth);margin-top:var(--space-3);grid-template-rows:0fr;display:grid;position:relative}.academy-card__topics-wrap.is-expanded{opacity:1;grid-template-rows:1fr;height:180px}.academy-card__topics-wrap>ul{overscroll-behavior:contain;height:100%;overflow-y:auto}.academy-card__topic{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-secondary);padding-block:var(--space-1);opacity:0;transition:opacity var(--duration-normal) var(--ease-out), transform var(--duration-normal) var(--ease-out);display:flex;transform:translateY(6px)}.academy-card__topics-wrap.is-expanded .academy-card__topic{opacity:1;transform:translateY(0)}.academy-card__topics-wrap.is-expanded .academy-card__topic:first-child{transition-delay:50ms}.academy-card__topics-wrap.is-expanded .academy-card__topic:nth-child(2){transition-delay:80ms}.academy-card__topics-wrap.is-expanded .academy-card__topic:nth-child(3){transition-delay:.11s}.academy-card__topics-wrap.is-expanded .academy-card__topic:nth-child(4){transition-delay:.14s}.academy-card__topics-wrap.is-expanded .academy-card__topic:nth-child(5){transition-delay:.17s}.academy-card__topics-wrap.is-expanded .academy-card__topic:nth-child(6){transition-delay:.2s}.academy-card__topic-dot{border-radius:var(--radius-full);background-color:var(--color-border-strong);flex-shrink:0;width:5px;height:5px}.academy-card__topic-dot--creational{background-color:var(--palette-category-creational)}.academy-card__topic-dot--structural{background-color:var(--palette-category-structural)}.academy-card__topic-dot--behavioral{background-color:var(--palette-category-behavioral)}.academy-card__expand-hint{align-items:center;gap:var(--space-1);padding-top:var(--space-3);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--color-accent);transition:color var(--duration-normal) var(--ease-in-out);margin-top:auto;display:inline-flex}.academy-card__expand-hint:after{content:"";width:6px;height:6px;transition:transform var(--duration-moderate) var(--ease-smooth);border-bottom:1.5px solid;border-right:1.5px solid;flex-shrink:0;transform:rotate(45deg)}.academy-card__expand-hint.is-expanded:after{transform:rotate(-135deg)}.academy-card__expand-hint--button{z-index:2;padding:0;padding-top:var(--space-3);cursor:pointer;background:0 0;border:none;font-family:inherit;position:relative}.academy-card__expand-hint--button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.academy-card__stretched-link{z-index:1;border-radius:inherit;position:absolute;inset:0}.academy-card__stretched-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.footer{border-top:1px solid var(--color-border)}.footer__main{gap:var(--space-12);padding-block:var(--space-10);grid-template-columns:2fr 1fr 1fr;display:grid}@media (width<=768px){.footer__main{gap:var(--space-8);padding-block:var(--space-8);grid-template-columns:1fr 1fr}.footer__brand{grid-column:1/-1}}@media (width<=480px){.footer__main{gap:var(--space-6);grid-template-columns:1fr}}.footer__brand-name{font-size:var(--text-base);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-2)}.footer__brand-desc{font-size:var(--text-sm);color:var(--color-text-tertiary);line-height:var(--line-height-relaxed);max-width:30ch}.footer__col-label{font-size:var(--text-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--color-text-tertiary);margin-bottom:var(--space-3)}.footer__nav{gap:var(--space-2);flex-direction:column;display:flex}.footer__nav-link{font-size:var(--text-sm);color:var(--color-text-secondary);transition:color var(--duration-normal) var(--ease-in-out)}.footer__nav-link:hover{color:var(--color-accent)}.footer__nav-link--icon{align-items:center;gap:var(--space-2);display:inline-flex}.footer__nav-item{font-size:var(--text-sm);color:var(--color-text-tertiary)}.footer__bottom{border-top:1px solid var(--color-border)}.footer__bottom-inner{justify-content:space-between;align-items:center;height:56px;display:flex}.footer__copy{font-size:var(--text-sm);color:var(--color-text-tertiary)}.category-intro{padding-top:var(--space-2);padding-bottom:var(--space-6)}.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}[data-theme=light] .accordion__item{background-color:#fefbf6}.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:var(--space-4) 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)}.accordion__content p+p,.accordion__content p+ul,.accordion__content ul+p{margin-top:var(--space-3)}.accordion__list{padding-left:var(--space-5);gap:var(--space-2);flex-direction:column;list-style:outside;display:flex}.accordion__content strong{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.accordion__group+.accordion__group{margin-top:var(--space-3)}.accordion__group-label{align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-2);display:inline-flex}.accordion__group-label:before{content:"";border-radius:var(--radius-full);background-color:currentColor;width:8px;height:8px}.accordion__group.is-fast .accordion__group-label{color:var(--color-success)}.accordion__group.is-moderate .accordion__group-label{color:var(--palette-yellow-500)}.accordion__group.is-slow .accordion__group-label{color:var(--color-error)}.accordion__group.is-catastrophic .accordion__group-label{color:var(--color-catastrophic)}.algorithm-icon{--icon-accent:var(--color-accent);vertical-align:middle;color:var(--color-text-primary);flex:none;display:inline-block}.algorithm-icon__base{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.algorithm-icon__accent{fill:none;stroke:var(--icon-accent);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.algorithm-icon__accent--fill{fill:var(--icon-accent);stroke:none}.algorithm-icon--sm{width:var(--icon-sm);height:var(--icon-sm)}.algorithm-icon--md{width:var(--icon-lg);height:var(--icon-lg)}.algorithm-icon--lg{width:var(--icon-xl);height:var(--icon-xl)}.algorithm-icon--xl{width:var(--icon-2xl);height:var(--icon-2xl)}.algorithms-hero{padding-top:var(--space-10);padding-bottom:var(--space-4);max-width:var(--container-md)}.algorithms-hero__title{font-size:clamp(var(--text-3xl), 8vw, var(--text-5xl));letter-spacing:var(--tracking-tight);margin-top:var(--space-4);margin-bottom:var(--space-3);color:var(--color-text-primary)}.algorithms-hero__subtitle{font-size:var(--text-lg);line-height:var(--line-height-relaxed);color:var(--color-text-secondary);max-width:var(--container-sm)}.algorithm-illustration{aspect-ratio:3/2;border-radius:var(--radius-lg);background:var(--color-bg-subtle);width:100%;margin-top:var(--space-6);opacity:0;transition:opacity .5s var(--ease-smooth,ease-out), transform .5s var(--ease-smooth,ease-out);overflow:hidden;transform:translateY(16px)}.algorithm-illustration.is-visible{opacity:1;transform:none}.algorithm-illustration__trigger{cursor:zoom-in;width:100%;height:100%;transition:transform .3s var(--ease-smooth,ease-out), box-shadow .3s var(--ease-smooth,ease-out);background:0 0;border:none;padding:0;display:block}@media (hover:hover) and (pointer:fine){.algorithm-illustration__trigger:hover{transform:scale(1.012);box-shadow:0 12px 32px #00000040}}.algorithm-illustration__trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.algorithm-illustration__img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .4s var(--ease-smooth,ease-out);display:block}.algorithm-illustration__img.is-loaded{opacity:1}@media (prefers-reduced-motion:reduce){.algorithm-illustration,.algorithm-illustration__trigger,.algorithm-illustration__img{opacity:1;transition:none;transform:none}}.illustration-lightbox{z-index:var(--z-modal);padding:var(--space-6);cursor:zoom-out;transition:background-color .4s var(--ease-smooth,ease-out);background:0 0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.illustration-lightbox.is-open{background:#000000d9}@media (width<=640px){.illustration-lightbox{padding:var(--space-4) var(--space-3)}}.illustration-lightbox__img{object-fit:contain;border-radius:var(--radius-md);cursor:default;will-change:transform;max-width:100%;max-height:100%}.illustration-lightbox__close{top:var(--space-5);right:var(--space-5);border-radius:var(--radius-full);color:#fff;opacity:0;width:44px;height:44px;transition:opacity .3s var(--ease-smooth,ease-out), background-color .2s;pointer-events:none;font-size:var(--text-2xl);cursor:pointer;background:#ffffff1a;border:none;line-height:1;position:absolute}.illustration-lightbox.is-open .illustration-lightbox__close{opacity:1;pointer-events:auto}.illustration-lightbox__close:hover{background:#fff3}.illustration-lightbox__close:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.illustration-lightbox,.illustration-lightbox__close{transition:none}}.breadcrumb ol{align-items:center;gap:var(--space-1);font-size:var(--text-sm);color:var(--color-text-tertiary);flex-wrap:wrap;display:flex}.breadcrumb a{color:var(--color-text-secondary);transition:color var(--duration-normal) var(--ease-in-out)}.breadcrumb a:hover{color:var(--color-accent)}.breadcrumb__sep{margin:0 var(--space-1)}[data-theme=light] .algorithm-card{background-color:#fefbf6}.academy-card__title .algorithm-icon,.academy-card__title .architecture-icon{margin-right:var(--space-2);vertical-align:middle;position:relative;top:-1px}.algorithm-card--big-o .academy-card__title{min-height:calc(var(--line-height-snug) * var(--text-lg) * 3)}.complexity-pips{flex-shrink:0;gap:3px;margin-top:4px;display:inline-flex}.complexity-pip{border-radius:var(--radius-full);background-color:var(--color-border-strong);width:6px;height:6px}.complexity-pip.is-filled{background-color:var(--color-accent)}.algorithm-card__complexity{gap:var(--space-2);padding-top:var(--space-3);flex-wrap:wrap;margin-top:auto;display:flex}.algorithm-card__complexity-badge{font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background-color:var(--color-bg-subtle);border-radius:var(--radius-full);padding:var(--space-1) var(--space-2)}.algorithm-card--big-o .algorithm-card__complexity{min-height:2.375rem}.algorithm-card__tier-badge{font-size:var(--text-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-full);padding:var(--space-1) var(--space-2)}.algorithm-card__tier-badge.is-fast{color:var(--color-success);background-color:var(--color-success-subtle)}.algorithm-card__tier-badge.is-moderate{color:var(--color-text-primary);background-color:var(--color-warning-subtle)}.algorithm-card__tier-badge.is-slow{color:var(--color-error);background-color:var(--color-error-subtle)}.algorithm-card__tier-badge.is-catastrophic{color:var(--color-catastrophic);background-color:var(--color-catastrophic-subtle)}.algorithm-card__tier-badge.is-compare{color:var(--color-accent);background-color:var(--color-accent-subtle)}.algorithm-detail__head{align-items:center;gap:var(--space-3);margin-top:var(--space-4);margin-bottom:var(--space-3);display:flex}.algorithm-detail__head .algorithms-hero__title{margin-top:0;margin-bottom:0}.algorithm-detail__head .complexity-pips{margin-top:0}.algorithm-detail__tier-badge{flex-shrink:0}.prerequisite-badge{align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-text-secondary);background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);margin-top:var(--space-3);display:inline-flex}.prerequisite-badge__label{font-weight:var(--font-weight-medium)}.prerequisite-badge__link{color:var(--color-accent);font-weight:var(--font-weight-medium);text-decoration:none}.prerequisite-badge__link:hover{text-decoration:underline}.algorithm-detail__complexity{gap:var(--space-2);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.algorithm-detail__section{padding-block:var(--space-8);max-width:var(--container-md)}.algorithm-detail__heading{font-size:var(--text-2xl);margin-bottom:var(--space-5);color:var(--color-text-primary)}.algorithm-steps{gap:var(--space-4);margin-top:var(--space-6);counter-reset:step;flex-direction:column;display:flex}.algorithm-steps__item{padding-left:var(--space-8);position:relative}.algorithm-steps__item:before{counter-increment:step;content:counter(step);width:24px;height:24px;font-size:var(--text-xs);font-weight:var(--font-weight-semibold);color:var(--color-accent);background-color:var(--color-accent-subtle);border-radius:var(--radius-full);justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}.algorithm-steps__item h3{font-size:var(--text-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.algorithm-steps__item p{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.pros-cons{gap:var(--space-6);grid-template-columns:1fr 1fr;display:grid}@media (width<=719px){.pros-cons{grid-template-columns:1fr}}.pros-cons__col h3{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--color-text-tertiary);margin-bottom:var(--space-3)}.pros-cons__col ul{gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);flex-direction:column;display:flex}.pros-cons__col--pros h3{color:var(--color-success)}.pros-cons__col--cons h3{color:var(--color-danger,#ef4444)}.algorithm-detail__section code{font-family:var(--font-mono,monospace);background-color:var(--color-bg-subtle);border-radius:var(--radius-sm);padding:.1em .4em;font-size:.9em}.tabs__list{gap:var(--space-2);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-5);overscroll-behavior-x:contain;touch-action:pan-x;scrollbar-width:none;-ms-overflow-style:none;min-width:0;transition:mask-image var(--duration-normal) var(--ease-in-out);display:flex;overflow-x:auto;-webkit-mask-image:none;mask-image:none}.tabs__list::-webkit-scrollbar{display:none}.tabs__list.is-scrollable-left{-webkit-mask-image:linear-gradient(90deg,#0000,#000 24px);mask-image:linear-gradient(90deg,#0000,#000 24px)}.tabs__list.is-scrollable-right{-webkit-mask-image:linear-gradient(270deg,#0000,#000 24px);mask-image:linear-gradient(270deg,#0000,#000 24px)}.tabs__list.is-scrollable-left.is-scrollable-right{-webkit-mask-image:linear-gradient(90deg,#0000,#000 24px calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#0000,#000 24px calc(100% - 24px),#0000)}.tabs__tab{min-height:44px;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary);white-space:nowrap;transition:color var(--duration-normal) var(--ease-in-out);border-bottom:2px solid #0000;flex-shrink:0;align-items:center;display:inline-flex;transform:translateY(1px)}.tabs__tab:hover{color:var(--color-text-primary)}.tabs__tab.is-active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.tabs__tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px;border-radius:var(--radius-sm)}.tabs__panel{font-size:var(--text-base);line-height:var(--line-height-relaxed);color:var(--color-text-secondary)}.tabs__panel:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.detail-section{gap:var(--space-6);flex-direction:column;display:flex}.detail-section>div+div{border-top:1px solid var(--color-border-subtle);padding-top:var(--space-8)}.detail-section__title{font-size:var(--text-2xl);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);color:var(--color-text-primary);margin-bottom:var(--space-5)}.detail-section p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.detail-section div>p:first-of-type{color:var(--color-text-primary);line-height:1.8}.detail-section div>p+p{margin-top:var(--space-4)}.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}.code-block{border-radius:var(--radius-lg);background-color:var(--code-bg);border:1px solid var(--code-border);box-shadow:var(--code-shadow);overflow:hidden}.code-block__header{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background-color:var(--code-header-bg);border-bottom:1px solid var(--code-border);display:flex}.code-block__dots{align-items:center;gap:6px;display:flex}.code-block__dots span{border-radius:var(--radius-full);flex-shrink:0;width:12px;height:12px}.code-block__dots span:first-child{background-color:#ff5f57}.code-block__dots span:nth-child(2){background-color:#febc2e}.code-block__dots span:nth-child(3){background-color:#28c840}.code-block__lang-tabs{gap:var(--space-1);margin-left:auto;display:flex}.code-block__lang-tab{padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--code-text);opacity:.6;border-radius:var(--radius-sm);transition:opacity var(--duration-normal) var(--ease-in-out), background-color var(--duration-normal) var(--ease-in-out)}.code-block__lang-tab:hover{background-color:var(--code-btn-hover-bg);border-color:var(--code-btn-hover-border)}.code-block__lang-tab.is-active{opacity:1;background-color:var(--code-btn-hover-bg)}.code-block__lang-label{padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--code-text);opacity:.6;margin-left:auto}.code-block__copy{margin-left:var(--space-2);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--code-text);border:1px solid var(--code-btn-border);border-radius:var(--radius-sm);transition:background-color var(--duration-normal) var(--ease-in-out), border-color var(--duration-normal) var(--ease-in-out)}.code-block__copy:hover{background-color:var(--code-btn-hover-bg);border-color:var(--code-btn-hover-border)}.code-block__copy.is-copied{color:var(--color-success);border-color:var(--color-success)}.code-block__pre{padding:var(--space-4);font-family:var(--font-mono,monospace);font-size:var(--text-sm);line-height:var(--line-height-relaxed);scrollbar-color:var(--code-scrollbar) transparent;margin:0;overflow-x:auto}.visualizer{padding:var(--space-6);background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl)}.visualizer__bars{align-items:flex-end;gap:var(--space-2);height:220px;padding-bottom:var(--space-4);display:flex}.visualizer__bar{min-width:0;padding-top:var(--space-1);background-color:var(--color-accent-subtle);border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);transition:height var(--duration-moderate) var(--ease-smooth), background-color var(--duration-normal) var(--ease-in-out);flex:1;justify-content:center;align-items:flex-start;display:flex}.visualizer__bar.is-active{background-color:var(--color-accent);color:var(--color-accent-text)}.visualizer__bar.is-sorted{background-color:var(--color-success);color:#fff}@keyframes stepLabelFade{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.visualizer__topbar{margin-bottom:var(--space-2);justify-content:flex-end;display:flex}.visualizer__step-count{font-size:var(--text-xs);color:var(--color-text-tertiary);white-space:nowrap}.visualizer__step-label{min-height:46px;padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--color-text-secondary);text-align:center;animation:.22s both stepLabelFade}@media (prefers-reduced-motion:reduce){.visualizer__step-label{animation:none}}.visualizer__controls{justify-content:center;align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=599px){.visualizer__step-label{min-height:76px}.visualizer__controls{gap:var(--space-2);align-items:center;justify-content:unset;grid-template-columns:44px 1fr 44px;grid-template-areas:"shuffle shuffle shuffle""prev play next";display:grid}.visualizer__controls>.btn:first-child{grid-area:shuffle}.visualizer__controls>.btn:nth-child(2){grid-area:prev}.visualizer__controls>.btn:nth-child(3){grid-area:play}.visualizer__controls>.btn:nth-child(4){grid-area:next}}.bigo-chart__caption{margin:0 0 var(--space-3);font-size:var(--text-sm);color:var(--color-text-secondary);text-align:center}.bigo-chart{width:100%}.bigo-chart__axis-label{fill:var(--color-text-tertiary);font-size:10px}.bigo-chart svg{width:100%;height:auto;display:block}.bigo-chart__gridline{stroke:var(--color-border-subtle);stroke-width:1px}.bigo-chart__axis{stroke:var(--color-border-strong);stroke-width:1px}.bigo-chart__tick{fill:var(--color-text-tertiary);font-size:9px}.bigo-chart__curve{fill:none;stroke:var(--color-border-strong);stroke-width:1.5px;stroke-linejoin:round;opacity:.6}.bigo-chart__curve--active{stroke:var(--color-accent);stroke-width:3px;opacity:1}.bigo-chart__marker{fill:var(--color-accent);stroke:var(--color-bg-surface);stroke-width:2px;transition:cx .4s var(--ease-smooth,ease-out), cy .4s var(--ease-smooth,ease-out)}@media (prefers-reduced-motion:reduce){.bigo-chart__marker{transition:none}}.bigo-chart__readout{margin-top:var(--space-3);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);text-align:center}.bigo-chart__readout--cases{align-items:center;gap:var(--space-1);flex-direction:column;display:flex}.bigo-chart__readout-n{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin:0 0 var(--space-1)}.bigo-chart__readout-case{font-size:var(--text-sm);font-weight:var(--font-weight-semibold);margin:0}.bigo-legend{justify-content:center;gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.bigo-legend__item{align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-text-tertiary);display:inline-flex}.bigo-legend__item.is-active{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.bigo-legend__dot{border-radius:var(--radius-full);background-color:var(--color-border-strong);flex-shrink:0;width:7px;height:7px}.bigo-visualizer__controls{justify-content:center;align-items:center;gap:var(--space-2);margin-top:var(--space-4);display:flex}.btn{min-height:44px;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:var(--transition-colors);justify-content:center;align-items:center;display:inline-flex}.btn--primary{color:var(--color-accent-text);background-color:var(--color-accent)}.btn--primary:hover{background-color:var(--color-accent-hover)}.btn--secondary{color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn--secondary:hover{border-color:var(--color-border-strong);color:var(--color-text-primary)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.quiz{gap:var(--space-4);overflow-anchor:none;flex-direction:column;display:flex}.quiz--intro{align-items:flex-start}.quiz__progress{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary)}.quiz__prompt-row{align-items:flex-start;gap:var(--space-2);display:flex}.quiz__question{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.quiz__hint-btn{border-radius:var(--radius-full);width:28px;height:28px;color:var(--color-warning);transition:color var(--duration-normal) var(--ease-in-out), background-color var(--duration-normal) var(--ease-in-out), box-shadow var(--duration-normal) var(--ease-in-out);flex-shrink:0;justify-content:center;align-items:center;display:flex}.quiz__hint-btn:hover{background-color:#eab30824;box-shadow:0 0 0 4px #eab30824}.quiz__hint-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.quiz__hint-wrap{transition:grid-template-rows var(--duration-normal) var(--ease-in-out);grid-template-rows:0fr;display:grid}.quiz__hint-wrap.is-open{grid-template-rows:1fr}.quiz__hint{min-height:0;padding:0 var(--space-4);border-radius:var(--radius-lg);color:var(--color-text-secondary);font-size:var(--text-sm);opacity:0;border:1px solid #0000;line-height:1.6;transition:opacity .2s;overflow:hidden}.quiz__hint-wrap.is-open .quiz__hint{padding:var(--space-3) var(--space-4);opacity:1;background-color:#eab3081a;border-color:#eab3084d;transition-delay:50ms}.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);font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-surface);color:var(--color-text-primary);cursor:pointer;transition:border-color .15s,background-color .15s;display:flex}.quiz__option:hover:not(:disabled){border-color:var(--color-accent)}.quiz__option:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.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;transition:border-color .15s,background-color .15s}.quiz__option.is-correct{border-color:var(--color-success);background-color:var(--color-success-subtle)}.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:var(--color-error-subtle)}.quiz__option.is-incorrect .quiz__option-marker{border-color:var(--color-error);background-color:var(--color-error)}.quiz__feedback{gap:var(--space-3);flex-direction:column;display:flex}.quiz__feedback>.btn{align-self:flex-start}.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-label{font-weight:var(--font-weight-semibold)}.quiz__feedback-text--correct{background-color:var(--color-success-subtle);border-color:var(--color-success)}.quiz__feedback-text--correct .quiz__feedback-icon,.quiz__feedback-text--correct .quiz__feedback-label{color:var(--color-success)}.quiz__feedback-text--incorrect{background-color:var(--color-error-subtle);border-color:var(--color-error)}.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-5);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:var(--color-success-subtle)}.quiz__results.is-warn{border-color:var(--color-warning);background-color:#eab30814}.quiz__results.is-fail{border-color:var(--color-error);background-color:var(--color-error-subtle)}.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__results .btn--secondary{background-color:var(--color-bg-surface);border-color:var(--color-border-strong);color:var(--color-text-primary)}.quiz__results .btn--secondary:hover{background-color:var(--color-bg-subtle)}.quiz__results.is-pass .btn--secondary{border-color:var(--color-success)}.quiz__results.is-warn .btn--secondary{border-color:var(--color-warning)}.quiz__results.is-fail .btn--secondary{border-color:var(--color-error)}.quiz__result-title{font-size:var(--text-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.quiz__score{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.quiz__result-message{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6}.quiz__report{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-tertiary);text-decoration:none;display:inline-flex}.quiz__report:hover{color:var(--color-text-secondary);text-decoration:underline}.quiz__report:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.prev-next-nav{justify-content:space-between;gap:var(--space-4);padding-top:var(--space-6);border-top:1px solid var(--color-border);display:flex}.prev-next-nav__link{gap:var(--space-1);flex-direction:column;max-width:45%;display:flex}.prev-next-nav__link--next{text-align:right;margin-left:auto}.prev-next-nav__label{font-size:var(--text-xs);color:var(--color-text-tertiary)}.prev-next-nav__title{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-accent)}.error-boundary{align-items:flex-start;gap:var(--space-4);padding-block:var(--space-20);flex-direction:column;display:flex}.error-boundary__title{font-size:var(--text-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.error-boundary__message{color:var(--color-text-secondary)}.error-boundary__btn{padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);border:1px solid var(--color-border-strong);background:var(--color-bg-surface);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-colors)}.error-boundary__btn:hover{background:var(--color-bg-subtle);border-color:var(--color-accent);color:var(--color-accent)}.error-page{isolation:isolate;justify-content:center;align-items:center;min-height:calc(100dvh - 300px);display:flex;position:relative;overflow:hidden}.error-page__backdrop{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;inset: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: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__glow{fill:var(--icon-accent);opacity:.16;filter:blur(10px);animation:error-glow-pulse 2.6s var(--ease-in-out) infinite}.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__mark{font-family:var(--font-mono);font-size:22px;font-weight:var(--font-weight-bold);fill:var(--icon-accent)}.error-page__code{font-size:var(--text-sm);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);color: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)}}@media (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{animation:none}}.btn--sm{min-height:36px;padding:var(--space-1) var(--space-3);font-size:var(--text-xs,.75rem)}.walkthrough-wrap{gap:var(--space-4);flex-direction:column;display:flex}.walkthrough-wrap .code-block__pre{max-height:50vh;overflow-y:auto}.code-block__line{padding-inline:var(--space-4);transition:background-color var(--duration-fast,.15s) ease}.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,color-mix(in srgb, var(--color-accent) 12%, transparent))}.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}.walkthrough__progress{font-size:var(--text-sm);color:var(--color-text-tertiary);font-weight:var(--font-weight-medium);margin:0}.walkthrough__title{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.walkthrough__explanation{font-size:var(--text-sm);color:var(--color-text-secondary);min-height:7em;margin:0;line-height:1.6}.walkthrough__nav{align-items:center;gap:var(--space-3);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.walkthrough__prev,.walkthrough__next{justify-content:center;align-items:center;gap:var(--space-1);display:inline-flex}.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;transition:background-color var(--duration-fast,.15s) ease}.walkthrough__dot.is-active{background-color:var(--color-accent)}.walkthrough__next--restart svg{flex-shrink:0}@media (width<=599px){.walkthrough__title{min-height:2.5em}.walkthrough__explanation{min-height:11em}.walkthrough__prev,.walkthrough__next{flex:1}}@media (prefers-reduced-motion:reduce){.code-block__line,.walkthrough__dot{transition:none}}.architecture-icon{--icon-accent:var(--color-accent);vertical-align:middle;color:var(--color-text-primary);flex:none;display:inline-block}.architecture-icon__base{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.architecture-icon__accent{fill:none;stroke:var(--icon-accent);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.architecture-icon__accent--fill{fill:var(--icon-accent);stroke:none}.architecture-icon--sm{width:var(--icon-sm);height:var(--icon-sm)}.architecture-icon--md{width:var(--icon-lg);height:var(--icon-lg)}.architecture-icon--lg{width:var(--icon-xl);height:var(--icon-xl)}.architecture-icon--xl{width:var(--icon-2xl);height:var(--icon-2xl)}.architecture-detail__head{align-items:center;gap:var(--space-3);display:flex}.architecture-diagram__viewport{border:1px solid var(--color-border);border-radius:var(--radius-2xl);padding:var(--space-6);margin-bottom:var(--space-6);background:radial-gradient(60% 75% at 82% 12%, color-mix(in srgb, var(--color-accent) 14%, transparent), transparent 70%), var(--color-bg-subtle);box-shadow:var(--shadow-sm)}[data-theme=light] .architecture-diagram__viewport{background:radial-gradient(46% 60% at 86% 6%, color-mix(in srgb, var(--color-accent) 16%, transparent), transparent 70%), linear-gradient(150deg, var(--palette-gray-50), var(--palette-gray-200));border-color:var(--color-border-strong)}.architecture-diagram{width:100%;max-width:640px;height:auto;margin:0 auto;display:block;overflow:visible}.architecture-diagram__node{cursor:default;animation:architecture-fade-in .48s var(--ease-out) both}.architecture-diagram__node:focus-visible{outline:none}.architecture-diagram__node-box{fill:var(--color-bg-elevated);stroke:color-mix(in srgb, var(--color-border-strong) 70%, transparent);stroke-width:1px;filter:drop-shadow(0 2px 4px #6d28d914)drop-shadow(0 12px 22px #6d28d91f);transition:stroke var(--duration-normal) var(--ease-out), filter var(--duration-normal) var(--ease-out)}[data-theme=dark] .architecture-diagram__node-box{filter:drop-shadow(0 2px 6px #00000080)drop-shadow(0 14px 26px #0000008c)}.architecture-diagram__node.is-active .architecture-diagram__node-box,.architecture-diagram__node:focus-visible .architecture-diagram__node-box{stroke:var(--color-accent);stroke-width:1.5px;filter:drop-shadow(0 2px 6px #6366f12e) drop-shadow(0 16px 30px color-mix(in srgb, var(--color-accent) 38%, transparent))}.architecture-diagram__node-chip{fill:color-mix(in srgb, var(--color-accent) 14%, transparent);transition:fill var(--duration-normal) var(--ease-out)}.architecture-diagram__node.is-active .architecture-diagram__node-chip{fill:color-mix(in srgb, var(--color-accent) 24%, transparent)}.architecture-diagram__node-icon path{stroke:var(--color-accent);stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.architecture-diagram__node-icon-fill{fill:var(--color-accent)}.architecture-diagram__node-label{fill:var(--color-text-primary);letter-spacing:-.01em;font-size:15px;font-weight:600}.architecture-diagram__edge{animation:architecture-fade-in .5s var(--ease-out) both}@keyframes architecture-fade-in{0%{opacity:0}to{opacity:1}}.architecture-diagram__edge-line{stroke:var(--color-border-strong);stroke-width:2px;transition:stroke var(--duration-normal) var(--ease-out), stroke-width var(--duration-normal) var(--ease-out)}.architecture-diagram__edge.is-active .architecture-diagram__edge-line{stroke:var(--color-accent);stroke-width:2.5px}.architecture-diagram__edge-flow{stroke:var(--color-accent);stroke-width:3.5px;stroke-linecap:round;stroke-dasharray:.1 18;opacity:0}.architecture-diagram__edge.is-active .architecture-diagram__edge-flow{opacity:1;filter:drop-shadow(0 0 5px color-mix(in srgb, var(--color-accent) 70%, transparent));animation:1.1s linear infinite architecture-flow-pulse}@keyframes architecture-flow-pulse{to{stroke-dashoffset:-18px}}.architecture-diagram__edge-label{fill:var(--color-text-primary);paint-order:stroke;stroke:var(--color-bg-subtle);stroke-width:6px;stroke-linejoin:round;font-size:12.5px;font-weight:700}.architecture-diagram__edge.is-active .architecture-diagram__edge-label{fill:var(--color-accent)}.architecture-diagram__arrowhead{fill:var(--color-border-strong)}.architecture-diagram__arrowhead--active{fill:var(--color-accent)}.architecture-roles{gap:var(--space-3);margin-bottom:var(--space-6);flex-direction:column;list-style:none;display:flex}.architecture-roles__item{gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-bg-surface);flex-direction:column;display:flex}.architecture-roles__item strong{color:var(--color-text-primary)}.architecture-roles__item span{color:var(--color-text-secondary);font-size:var(--text-sm)}html.a11y-text-large{font-size:112.5%}html.a11y-text-xlarge{font-size:125%}html.a11y-contrast-high{--color-bg-base:#000;--color-bg-surface:#000;--color-bg-elevated:#0a0a0a;--color-bg-subtle:#111;--color-text-primary:#fff;--color-text-secondary:#fff;--color-text-tertiary:#e5e5e5;--color-border:#fff;--color-border-subtle:#ccc;--color-border-strong:#fff;--color-accent:#ffd400;--color-accent-hover:#ffe066;--color-text-link:#ffd400;--color-text-link-hover:#ffe066}html.a11y-contrast-invert,html.a11y-contrast-invert img,html.a11y-contrast-invert video,html.a11y-contrast-invert .a11y-dock,html.a11y-contrast-invert .a11y-widget__panel{filter:invert()hue-rotate(180deg)}.page-content.a11y-monochrome{filter:grayscale()}html.a11y-readable-font body{font-family:Arial,Helvetica,Segoe UI,sans-serif!important}html.a11y-underline-links a{text-decoration:underline!important}.a11y-dock{right:0;bottom:var(--space-6);z-index:var(--z-tooltip);align-items:center;display:flex;position:fixed}.a11y-widget__trigger{width:52px;height:52px;margin-right:var(--space-6);border-radius:var(--radius-full);background:var(--color-accent);color:var(--color-accent-text);box-shadow:var(--shadow-lg);transition:var(--transition-transform), var(--transition-colors), var(--transition-opacity);flex-shrink:0;justify-content:center;align-items:center;display:flex}.a11y-widget__trigger:active{transform:scale(.96)}.a11y-widget__trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.a11y-dock__tab{z-index:1;border-radius:var(--radius-full);background:var(--color-accent);width:28px;height:44px;color:var(--color-accent-text);box-shadow:var(--shadow-md);border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:-14px;display:flex;position:relative}.a11y-dock__tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.a11y-dock.is-docked .a11y-widget__trigger{transform:translateX(calc(100% + var(--space-6)));opacity:0}@media (hover:hover) and (pointer:fine){.a11y-widget__trigger:hover,.a11y-dock__tab:hover{background:var(--color-accent-hover)}.a11y-dock.is-docked:hover .a11y-widget__trigger,.a11y-dock.is-docked:focus-within .a11y-widget__trigger{opacity:1;transform:translate(0)}}.back-to-top{right:calc(20px + var(--space-6) + 52px + var(--space-3));bottom:var(--space-6);z-index:var(--z-tooltip);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-bg-surface);width:52px;height:52px;color:var(--color-text-secondary);box-shadow:var(--shadow-lg);transition:var(--transition-transform), var(--transition-colors);justify-content:center;align-items:center;display:flex;position:fixed}.back-to-top:active{transform:scale(.96)}.back-to-top:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}@media (hover:hover) and (pointer:fine){.back-to-top:hover{color:var(--color-accent);border-color:var(--color-border-accent)}}.a11y-widget__panel{right:var(--space-6);bottom:calc(var(--space-6) + 52px + var(--space-3));z-index:var(--z-modal);width:min(320px, calc(100vw - var(--space-12)));max-height:min(560px,100vh - 120px);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-bg-elevated);border:1px solid var(--color-border);box-shadow:var(--shadow-xl);opacity:0;visibility:hidden;pointer-events:none;transition:var(--transition-transform), var(--transition-opacity), visibility var(--duration-normal);position:fixed;overflow-y:auto;transform:translateY(12px)scale(.96)}.a11y-widget__panel.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)scale(1)}.a11y-widget__header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.a11y-widget__title{font-size:var(--text-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.a11y-widget__close{border-radius:var(--radius-md);width:44px;height:44px;font-size:var(--text-xl);color:var(--color-text-secondary);justify-content:center;align-items:center;line-height:1;display:flex}.a11y-widget__close:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (hover:hover) and (pointer:fine){.a11y-widget__close:hover{background:var(--color-bg-subtle)}}.a11y-widget__group{padding-block:var(--space-3);border:none;border-top:1px solid var(--color-border-subtle);margin:0;padding-inline:0}.a11y-widget__group:first-of-type{border-top:none;padding-top:0}.a11y-widget__group-label{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin-bottom:var(--space-2);display:block}.a11y-widget__segmented{gap:var(--space-1);display:flex}.a11y-widget__segment{min-height:44px;padding:var(--space-2) var(--space-1);font-size:var(--text-xs);text-align:center;border-radius:var(--radius-sm);border:1px solid var(--color-border);color:var(--color-text-secondary);flex:1}.a11y-widget__segment[aria-checked=true]{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text)}.a11y-widget__segment:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.a11y-widget__switch-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding-block:var(--space-2);font-size:var(--text-sm);color:var(--color-text-primary);cursor:pointer;display:flex}.a11y-widget__switch-row input[type=checkbox]{appearance:none;border-radius:var(--radius-full);background:var(--color-border);cursor:pointer;width:36px;height:20px;transition:var(--transition-colors);flex-shrink:0;position:relative}.a11y-widget__switch-row input[type=checkbox]:before{content:"";width:16px;height:16px;transition:var(--transition-transform);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.a11y-widget__switch-row input[type=checkbox]:checked{background:var(--color-accent)}.a11y-widget__switch-row input[type=checkbox]:checked:before{transform:translate(16px)}.a11y-widget__switch-row input[type=checkbox]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.a11y-widget__reset{width:100%;min-height:44px;margin-top:var(--space-3);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);border:1px solid var(--color-border-strong);color:var(--color-text-primary)}.a11y-widget__reset:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (hover:hover) and (pointer:fine){.a11y-widget__reset:hover{background:var(--color-bg-subtle)}}
