:root{--coral-50: #fff3f0;--coral-100: #ffe2da;--coral-200: #ffc7b8;--coral-300: #ffa28b;--coral-400: #fb7559;--coral-500: #f0563f;--coral-600: #db3f28;--coral-700: #b62f1c;--coral-800: #8f291a;--coral-900: #74241a;--ink-0: #ffffff;--ink-50: #f6f8fa;--ink-100: #eef1f4;--ink-200: #dfe4ea;--ink-300: #c4ccd5;--ink-400: #97a2af;--ink-500: #6c7886;--ink-600: #515d6b;--ink-700: #3a4553;--ink-800: #283341;--ink-900: #1b2430;--ink-950: #121922;--ok: #15924f;--ok-bg: #eafaf0;--ok-border: #b8e8cb;--warn: #b45309;--warn-bg: #fdf3df;--warn-border: #f3dba6;--err: #e11d48;--err-bg: #fff0f3;--err-border: #fbcdd8;--info: #0a7ea4;--info-bg: #ecf8fd;--info-border: #bce6f2;--surface-page: var(--ink-50);--surface-card: var(--ink-0);--surface-subtle: var(--ink-100);--surface-warm: #fff7f4;--surface-inset: var(--ink-950);--surface-sticky: rgba(255,255,255,.82);--text-strong: var(--ink-900);--text-default: var(--ink-800);--text-muted: var(--ink-500);--text-faint: var(--ink-400);--text-inverse: var(--ink-0);--border-subtle: var(--ink-100);--border-default: var(--ink-200);--border-strong: var(--ink-300);--brand: var(--coral-600);--brand-hover: var(--coral-700);--brand-text: var(--coral-700);--brand-fg: #ffffff;--brand-tint: var(--coral-50);--brand-tint-bd: var(--coral-200);--font-sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Inter", "Noto Sans KR", system-ui, sans-serif;--font-mono: "JetBrains Mono", "D2Coding", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-display: 3.25rem;--fs-h1: 2.125rem;--fs-h2: 1.625rem;--fs-h3: 1.25rem;--fs-h4: 1.0625rem;--fs-body-lg: 1.125rem;--fs-body: 1rem;--fs-sm: .875rem;--fs-xs: .8125rem;--fs-code: .9375rem;--lh-tight: 1.18;--lh-snug: 1.35;--lh-body: 1.75;--lh-code: 1.62;--ls-tight: -.02em;--ls-snug: -.01em;--ls-normal: -.003em;--fw-regular: 400;--fw-medium: 500;--fw-semibold:600;--fw-bold: 700;--fw-extra: 800;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px;--sp-9: 96px;--sp-10: 128px;--w-doc: 720px;--w-prose:840px;--w-app: 1080px;--w-page: 1200px;--r-xs: 6px;--r-sm: 8px;--r-md: 10px;--r-lg: 14px;--r-xl: 18px;--r-2xl: 24px;--r-full: 999px;--shadow-xs: 0 1px 2px rgba(18,25,34,.05);--shadow-sm: 0 1px 2px rgba(18,25,34,.06), 0 1px 1px rgba(18,25,34,.04);--shadow-md: 0 4px 8px -2px rgba(18,25,34,.08), 0 2px 4px -2px rgba(18,25,34,.05);--shadow-lg: 0 12px 24px -6px rgba(18,25,34,.1), 0 4px 8px -4px rgba(18,25,34,.05);--shadow-xl: 0 24px 48px -12px rgba(18,25,34,.16);--shadow-brand: 0 12px 28px -10px rgba(219,63,40,.45);--ease: cubic-bezier(.4,0,.2,1);--dur-fast: .13s;--dur: .2s;--dur-slow: .3s;--focus-ring: 0 0 0 3px var(--coral-200), 0 0 0 1.5px var(--coral-500);color-scheme:light}[data-theme=dark]{--surface-page: #0e141b;--surface-card: #161e27;--surface-subtle: #1c2630;--surface-warm: #20191a;--surface-inset: #0a0f15;--surface-sticky: rgba(14,20,27,.82);--text-strong: #f1f4f7;--text-default: #d3dae2;--text-muted: #94a0ad;--text-faint: #6c7886;--text-inverse: #0e141b;--border-subtle: #1f2a35;--border-default: #29323d;--border-strong: #3a4553;--brand: var(--coral-500);--brand-hover: var(--coral-400);--brand-text: var(--coral-300);--brand-fg: #1b0f0c;--brand-tint: rgba(240,86,63,.12);--brand-tint-bd: rgba(240,86,63,.34);--ok-bg: rgba(21,146,79,.14);--ok-border: rgba(21,146,79,.4);--warn-bg:rgba(180,83,9,.16);--warn-border:rgba(180,83,9,.42);--err-bg: rgba(225,29,72,.14);--err-border: rgba(225,29,72,.4);--info-bg:rgba(10,126,164,.16);--info-border:rgba(10,126,164,.42);--shadow-xs: 0 1px 2px rgba(0,0,0,.4);--shadow-sm: 0 1px 2px rgba(0,0,0,.45);--shadow-md: 0 4px 10px -2px rgba(0,0,0,.5);--shadow-lg: 0 16px 30px -8px rgba(0,0,0,.6);--shadow-xl: 0 28px 56px -14px rgba(0,0,0,.7);--shadow-brand: 0 14px 30px -12px rgba(240,86,63,.5);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);letter-spacing:var(--ls-normal);color:var(--text-default);background:var(--surface-page);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"tnum" 0;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}::selection{background:var(--coral-200);color:var(--ink-900)}[data-theme=dark] ::selection{background:#f0563f66;color:#fff}a{color:var(--brand-text);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}.t-link{font-weight:var(--fw-semibold)}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}img{max-width:100%;display:block}.wrap{width:100%;max-width:var(--w-page);margin-inline:auto;padding-inline:var(--sp-5)}.wrap-app{max-width:var(--w-app)}.wrap-doc{max-width:var(--w-doc)}.row{display:flex;align-items:center}.spacer{flex:1}.t-display{font-size:var(--fs-display);font-weight:var(--fw-extra);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--text-strong)}.t-h1{font-size:var(--fs-h1);font-weight:var(--fw-bold);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--text-strong)}.t-h2{font-size:var(--fs-h2);font-weight:var(--fw-bold);line-height:var(--lh-snug);letter-spacing:var(--ls-snug);color:var(--text-strong)}.t-h3{font-size:var(--fs-h3);font-weight:var(--fw-semibold);line-height:var(--lh-snug);letter-spacing:var(--ls-snug);color:var(--text-strong)}.t-body-lg{font-size:var(--fs-body-lg);line-height:var(--lh-body)}.t-body{font-size:var(--fs-body);line-height:var(--lh-body)}.t-sm{font-size:var(--fs-sm)}.t-xs{font-size:var(--fs-xs)}.t-muted{color:var(--text-muted)}.t-mono{font-family:var(--font-mono);font-feature-settings:"tnum"}.t-num{font-variant-numeric:tabular-nums;font-weight:var(--fw-extra);letter-spacing:0}.eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--brand-text)}.btn{--_bg: var(--brand);--_fg: var(--brand-fg);--_bd: transparent;display:inline-flex;align-items:center;gap:var(--sp-2);font-family:inherit;font-size:var(--fs-body);font-weight:var(--fw-semibold);line-height:1;letter-spacing:var(--ls-snug);padding:12px 18px;border-radius:var(--r-md);background:var(--_bg);color:var(--_fg);border:1px solid var(--_bd);cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.btn:hover{background:var(--brand-hover);text-decoration:none}.btn:active{transform:translateY(.5px)}.btn .ico{width:18px;height:18px}.btn--lg{font-size:var(--fs-body-lg);padding:15px 26px;border-radius:var(--r-lg)}.btn--sm{font-size:var(--fs-sm);padding:8px 13px}.btn--secondary{--_bg: var(--surface-card);--_fg: var(--text-strong);--_bd: var(--border-default)}.btn--secondary:hover{background:var(--surface-subtle);border-color:var(--border-strong)}.btn--ghost{--_bg: transparent;--_fg: var(--text-default);--_bd: transparent}.btn--ghost:hover{background:var(--surface-subtle)}.btn--brand-soft{--_bg: var(--brand-tint);--_fg: var(--brand-text);--_bd: var(--brand-tint-bd)}.btn--brand-soft:hover{background:var(--coral-100)}[data-theme=dark] .btn--brand-soft:hover{background:#f0563f33}.btn--hero{box-shadow:var(--shadow-brand)}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);line-height:1;letter-spacing:var(--ls-snug);white-space:nowrap;padding:5px 9px 5px 8px;border-radius:var(--r-full);border:1px solid transparent}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.badge--live{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-border)}.badge--planned{color:var(--text-muted);background:var(--surface-subtle);border-color:var(--border-default)}.badge--slide{color:var(--brand-text);background:var(--brand-tint);border-color:var(--brand-tint-bd)}.badge--doc{color:var(--info);background:var(--info-bg);border-color:var(--info-border)}.badge--new{color:var(--err);background:var(--err-bg);border-color:var(--err-border)}.badge--free{color:var(--ink-700);background:var(--ink-100);border-color:var(--border-default)}[data-theme=dark] .badge--free{color:var(--text-default);background:var(--surface-subtle)}.tag:not(.token){display:inline-flex;align-items:center;white-space:nowrap;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);padding:3px 9px;border-radius:var(--r-full);background:var(--surface-subtle);border:1px solid var(--border-subtle)}.site-header{position:sticky;top:0;z-index:50;background:var(--surface-sticky);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--border-subtle)}.header-inner{height:64px;display:flex;align-items:center;gap:var(--sp-5);max-width:var(--w-page);margin-inline:auto;padding-inline:var(--sp-5)}.brand{display:inline-flex;align-items:center;gap:10px;flex:none}.brand:hover{text-decoration:none}.brand-mark{width:32px;height:32px;border-radius:50%;flex:none;display:block;object-fit:cover}.brand-name{font-weight:var(--fw-extra);font-size:1.0625rem;color:var(--text-strong);letter-spacing:var(--ls-snug);white-space:nowrap}.brand-name b{color:var(--brand-text)}.nav{display:flex;align-items:stretch;gap:2px;height:100%}.nav-item{position:relative;display:flex;align-items:center}.nav-link{display:inline-flex;align-items:center;gap:6px;height:100%;padding:0 14px;font-size:var(--fs-body);font-weight:var(--fw-semibold);color:var(--text-default);cursor:pointer;border:none;background:none;font-family:inherit;letter-spacing:var(--ls-snug);white-space:nowrap;border-bottom:2px solid transparent;text-decoration:none}.nav-link:hover{color:var(--text-strong);text-decoration:none}.nav-link.is-active{border-bottom-color:var(--brand);color:var(--text-strong)}.nav-link .chev{width:15px;height:15px;color:var(--text-faint);transition:transform var(--dur-fast) var(--ease)}.nav-item:hover .chev,.nav-item:focus-within .chev{transform:rotate(180deg)}.nav-panel{position:absolute;top:100%;left:0;min-width:340px;padding:var(--sp-2);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),visibility var(--dur-fast)}.nav-item:hover .nav-panel,.nav-item:focus-within .nav-panel{opacity:1;visibility:visible;transform:translateY(8px)}.nav-panel-grid{display:grid;gap:2px}.nav-opt{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-md);color:inherit}.nav-opt:hover{background:var(--surface-subtle);text-decoration:none}.nav-opt[aria-disabled=true]{opacity:.5;pointer-events:none;cursor:default}.nav-opt-ico{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--brand-tint);color:var(--brand-text);font-weight:var(--fw-bold);font-size:15px}.nav-opt-ico.is-cool{background:var(--info-bg);color:var(--info)}.nav-opt-body{line-height:1.3;min-width:0}.nav-opt-title{display:block;font-weight:var(--fw-semibold);color:var(--text-strong);font-size:var(--fs-body);white-space:nowrap}.nav-opt-sub{display:block;font-size:var(--fs-xs);color:var(--text-muted)}.nav-cta{margin-left:auto}.header-actions{margin-left:auto;display:flex;gap:10px;align-items:center}.card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-xl);box-shadow:var(--shadow-sm);transition:box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}.card--pad{padding:var(--sp-5)}.card--link{display:block;color:inherit}.card--link:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);text-decoration:none}.grid{display:grid;gap:var(--sp-4)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media(max-width:860px){.grid-2{grid-template-columns:1fr}.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.track-card{padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-4);position:relative;overflow:hidden}.track-card .track-emoji{width:52px;height:52px;border-radius:var(--r-lg);display:grid;place-items:center;font-size:26px;background:var(--brand-tint);border:1px solid var(--brand-tint-bd)}.track-card.is-coding .track-emoji{background:var(--info-bg);border-color:var(--info-border)}.track-card h3{margin:0;white-space:nowrap}.track-card .track-desc{color:var(--text-muted);font-size:var(--fs-sm);margin:0}.track-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.track-list li{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--text-default);flex-wrap:nowrap}.track-list li .lbl{font-weight:var(--fw-medium);white-space:nowrap}.track-list li .sub{min-width:0;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-faint);font-size:var(--fs-xs)}.cat-card{padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.cat-card .cat-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.cat-card .cat-ico{width:40px;height:40px;border-radius:var(--r-md);display:grid;place-items:center;font-size:20px;background:var(--surface-subtle)}.cat-card .cat-title{font-weight:var(--fw-semibold);color:var(--text-strong);font-size:var(--fs-h4)}.cat-card .cat-sub{font-size:var(--fs-xs);color:var(--text-muted)}.cat-card .cat-meta{display:flex;align-items:center;gap:8px;font-size:var(--fs-xs);color:var(--text-faint)}.lec-list{display:flex;flex-direction:column;border:1px solid var(--border-default);border-radius:var(--r-xl);overflow:hidden;background:var(--surface-card)}.lec-row{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:var(--sp-3);padding:var(--sp-4);color:inherit;border-top:1px solid var(--border-subtle);transition:background var(--dur-fast) var(--ease)}.lec-row:first-child{border-top:none}.lec-row:hover{background:var(--surface-subtle);text-decoration:none}.lec-num{font-variant-numeric:tabular-nums;font-weight:var(--fw-bold);color:var(--text-faint);font-size:var(--fs-sm);text-align:center}.lec-row:hover .lec-num{color:var(--brand-text)}.lec-title{display:block;font-weight:var(--fw-medium);color:var(--text-strong);font-size:var(--fs-body)}.lec-sub{display:block;font-size:var(--fs-xs);color:var(--text-muted);margin-top:1px}.lec-meta{display:flex;align-items:center;gap:8px}.lec-row.is-disabled{opacity:.6;cursor:default}.lec-row.is-disabled:hover{background:none}.lec-row.is-disabled .lec-title{color:var(--text-muted)}.doc{max-width:var(--w-doc);margin-inline:auto;font-size:var(--fs-body-lg);line-height:var(--lh-body);color:var(--text-default);word-break:keep-all;overflow-wrap:anywhere}.doc>*+*{margin-top:var(--sp-4)}.doc h1{font-size:var(--fs-h1);font-weight:var(--fw-bold);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--text-strong);margin:0 0 var(--sp-2);text-wrap:pretty}.doc h2{font-size:var(--fs-h2);font-weight:var(--fw-bold);line-height:var(--lh-snug);letter-spacing:var(--ls-snug);color:var(--text-strong);margin-top:var(--sp-7);padding-top:var(--sp-4);border-top:1px solid var(--border-subtle);text-wrap:pretty}.doc h3{font-size:var(--fs-h3);font-weight:var(--fw-semibold);line-height:var(--lh-snug);color:var(--text-strong);margin-top:var(--sp-6);text-wrap:pretty}.doc h2+h3,.doc h2+p{margin-top:var(--sp-4)}.doc p{margin:0;text-wrap:pretty}.doc strong{font-weight:var(--fw-bold);color:var(--text-strong)}.doc a{color:var(--brand-text);font-weight:var(--fw-medium);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--brand-tint-bd)}.doc a:hover{text-decoration-color:var(--brand)}.doc hr{border:0;border-top:1px solid var(--border-default);margin:var(--sp-6) 0 0}.doc ul,.doc ol{padding-left:1.4em}.doc li{margin-top:6px}.doc li>ul,.doc li>ol{margin-top:6px;margin-bottom:0}.doc li::marker{color:var(--text-faint)}.doc ul li::marker{color:var(--brand)}.doc :not(pre)>code{font-family:var(--font-mono);font-size:.875em;background:var(--surface-subtle);border:1px solid var(--border-subtle);padding:1px 6px;border-radius:var(--r-xs);color:var(--coral-700)}[data-theme=dark] .doc :not(pre)>code{color:var(--coral-300)}.doc pre{background:var(--surface-inset);color:#e7edf5;border:1px solid var(--border-default);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);overflow-x:auto;font-size:var(--fs-code);line-height:var(--lh-code);-webkit-font-smoothing:auto}.doc pre code{font-family:var(--font-mono);background:none;border:none;padding:0;color:inherit;font-size:1em;text-shadow:none}.code-figure{margin-top:var(--sp-4)}.code-figure figcaption{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);background:var(--surface-subtle);border:1px solid var(--border-subtle);border-bottom:none;padding:5px 12px;border-radius:var(--r-sm) var(--r-sm) 0 0}.code-figure figcaption+pre{border-top-left-radius:0;margin-top:0}.doc pre .c{color:#7d8da3;font-style:italic}.doc pre .k{color:#ff9d85}.doc pre .s{color:#9ad29a}.doc pre .n{color:#f5c97b}.doc pre .f{color:#8fc3f0}.doc pre[class*=language-]{background:var(--surface-inset);color:#e7edf5;text-shadow:none;font-family:var(--font-mono)}.doc code[class*=language-]{color:#e7edf5;background:none;text-shadow:none;font-family:var(--font-mono)}.doc :not(pre)>code[class*=language-]{background:var(--surface-subtle)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#7d8da3;font-style:italic}.token.punctuation{color:#b8c2cf}.token.keyword,.token.operator,.token.tag,.token.selector,.token.atrule,.token.important,.token.builtin,.token.deleted{color:#ff9d85}.token.string,.token.char,.token.attr-value,.token.regex,.token.inserted{color:#9ad29a}.token.number,.token.boolean,.token.constant,.token.symbol{color:#f5c97b}.token.function,.token.class-name{color:#8fc3f0}.token.property,.token.attr-name,.token.variable,.token.parameter{color:#e7c08f}.token.entity,.token.url{color:#9ad29a}.doc table{width:100%;border-collapse:collapse;font-size:var(--fs-body);border:1px solid var(--border-default);border-radius:var(--r-lg);overflow:hidden}.doc thead th{background:var(--surface-subtle);text-align:left;font-weight:var(--fw-semibold);color:var(--text-strong);padding:11px 16px;font-size:var(--fs-sm);border-bottom:1px solid var(--border-default)}.doc tbody td{padding:11px 16px;border-top:1px solid var(--border-subtle);vertical-align:top}.doc tbody tr:nth-child(2n){background:var(--surface-subtle)}[data-theme=dark] .doc tbody tr:nth-child(2n){background:#ffffff05}.doc blockquote{margin:var(--sp-4) 0 0;padding:var(--sp-3) var(--sp-5);border-left:3px solid var(--brand);background:var(--brand-tint);border-radius:0 var(--r-md) var(--r-md) 0;color:var(--text-default)}.doc blockquote p{margin:0}.doc blockquote strong{color:var(--brand-text)}.callout{display:grid;grid-template-columns:26px 1fr;gap:12px;padding:var(--sp-4);border-radius:var(--r-lg);border:1px solid;font-size:var(--fs-body);margin-top:var(--sp-4)}.callout .cico{font-size:18px;line-height:1.4}.callout--tip{background:var(--ok-bg);border-color:var(--ok-border);color:var(--text-default)}.callout--note{background:var(--info-bg);border-color:var(--info-border);color:var(--text-default)}.callout--warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--text-default)}.doc details,.answer{border:1px solid var(--border-default);border-radius:var(--r-lg);background:var(--surface-card);overflow:hidden;margin-top:var(--sp-4)}.doc summary,.answer>summary{list-style:none;cursor:pointer;padding:13px var(--sp-4);font-weight:var(--fw-semibold);color:var(--text-strong);font-size:var(--fs-body);display:flex;align-items:center;gap:10px;user-select:none;background:var(--surface-subtle)}.doc summary::-webkit-details-marker{display:none}.doc summary:before{content:"";width:18px;height:18px;flex:none;background:var(--brand);-webkit-mask:var(--mask-plus) center/18px no-repeat;mask:var(--mask-plus) center/18px no-repeat;--mask-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");transition:transform var(--dur-fast) var(--ease)}.doc details[open] summary:before{transform:rotate(90deg)}.doc summary .answer-tag{margin-left:auto;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--brand-text)}.doc details>*:not(summary){margin-left:var(--sp-4);margin-right:var(--sp-4)}.doc details>summary+*{margin-top:var(--sp-4)}.doc details>*:not(summary)+*:not(summary){margin-top:var(--sp-4)}.doc details[open]{padding-bottom:var(--sp-4)}.doc details>div>*+*{margin-top:var(--sp-3)}.figure{margin-top:var(--sp-5)}.figure .frame{border:1px solid var(--border-default);border-radius:var(--r-lg);overflow:hidden;background:var(--surface-subtle)}.figure .frame img{width:100%}.figure figcaption{margin-top:8px;font-size:var(--fs-sm);color:var(--text-muted);text-align:center;display:flex;align-items:center;gap:8px;justify-content:center}.figure figcaption .num{color:var(--brand-text);font-weight:var(--fw-semibold)}.slide-tag{display:inline-flex;align-items:center;font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--brand-text);background:var(--brand-tint);border:1px solid var(--brand-tint-bd);padding:4px 10px;border-radius:var(--r-full);margin:0}.empty{padding:var(--sp-7);text-align:center;color:var(--text-muted);border:1px dashed var(--border-strong);border-radius:var(--r-lg)}.cta-band{border:1px solid var(--brand-tint-bd);background:var(--surface-warm);border-radius:var(--r-2xl);padding:var(--sp-6);margin-top:var(--sp-7)}.cta-band .eyebrow{margin-bottom:8px}.cta-band h3{margin:0 0 6px}.cta-band p{margin:0 0 var(--sp-4);color:var(--text-muted);font-size:var(--fs-sm)}.cta-row{display:flex;flex-wrap:wrap;gap:var(--sp-3)}@media(max-width:560px){.cta-band{padding:var(--sp-5)}}.funnel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4)}@media(max-width:760px){.funnel-grid{grid-template-columns:1fr}}.funnel-card{padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3)}.funnel-card .fn-logo{width:44px;height:44px;border-radius:var(--r-md);display:grid;place-items:center;font-weight:var(--fw-extra);color:#fff;font-size:15px}.funnel-card .fn-kind{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em}.funnel-card .fn-name{font-weight:var(--fw-bold);color:var(--text-strong);font-size:var(--fs-h4)}.funnel-card .fn-desc{font-size:var(--fs-sm);color:var(--text-muted);flex:1}.funnel-card .fn-link{font-weight:var(--fw-semibold);color:var(--brand-text);font-size:var(--fs-sm);display:inline-flex;align-items:center;gap:4px}.site-footer{border-top:1px solid var(--border-default);background:var(--surface-card);margin-top:var(--sp-9)}.footer-inner{max-width:var(--w-page);margin-inline:auto;padding:var(--sp-7) var(--sp-5) var(--sp-6)}.footer-top{display:grid;grid-template-columns:1.3fr 2fr;gap:var(--sp-7)}@media(max-width:760px){.footer-top{grid-template-columns:1fr;gap:var(--sp-6)}}.footer-about{max-width:320px}.footer-about p{color:var(--text-muted);font-size:var(--fs-sm);margin:12px 0 0}.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--border-subtle);font-size:var(--fs-xs);color:var(--text-faint);flex-wrap:wrap}.footer-bottom a{color:var(--text-muted)}@media(max-width:560px){.footer-bottom{justify-content:flex-start;gap:var(--sp-3)}}.deck-shell{max-width:1100px;margin-inline:auto}.deck-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:10px 14px;background:var(--surface-card);border:1px solid var(--border-default);border-bottom:none;border-radius:var(--r-lg) var(--r-lg) 0 0;flex-wrap:wrap}.deck-toolbar .dt-title{display:flex;align-items:center;gap:10px;font-weight:var(--fw-semibold);color:var(--text-strong);font-size:var(--fs-sm)}.deck-toolbar .dt-actions{display:flex;gap:8px;flex-wrap:wrap}.deck-stage{background:var(--ink-950);border:1px solid var(--border-default);display:grid;place-items:center;padding:var(--sp-4);border-radius:0 0 var(--r-lg) var(--r-lg)}.deck-frame{position:relative;width:100%;max-width:1024px;margin-inline:auto;aspect-ratio:1024 / 768;background:#fff;border-radius:var(--r-sm);box-shadow:var(--shadow-lg);overflow:hidden;container-type:inline-size}.deck-scaler{position:absolute;top:0;left:0;width:1024px;height:768px;transform-origin:top left;transform:scale(var(--deck-scale, calc(100cqw / 1024)))}.deck-scaler>iframe{width:1024px;height:768px;border:0;display:block}.deck-help{text-align:center;color:var(--text-faint);font-size:var(--fs-xs);margin-top:var(--sp-3)}.theme-toggle{width:38px;height:38px;border-radius:var(--r-md);display:grid;place-items:center;border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-muted);cursor:pointer;flex:none}.theme-toggle:hover{background:var(--surface-subtle);color:var(--text-strong)}.theme-toggle .sun{display:none}.theme-toggle .moon,[data-theme=dark] .theme-toggle .sun{display:block}[data-theme=dark] .theme-toggle .moon{display:none}.breadcrumb{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:var(--sp-4)}.breadcrumb a{color:var(--text-muted);white-space:nowrap}.breadcrumb a:hover{color:var(--text-strong)}.breadcrumb .sep{color:var(--text-faint)}.slide-head{margin-bottom:var(--sp-4)}.slide-head h1{font-size:var(--fs-h2);font-weight:var(--fw-bold);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--text-strong);margin:0;text-wrap:balance}.slide-head .slide-sub{margin:6px 0 0;font-size:var(--fs-sm);color:var(--text-muted)}.page{max-width:var(--w-app);margin-inline:auto;padding:var(--sp-7) var(--sp-5) 0}.page-head{margin-bottom:var(--sp-6)}.page-head h1{font-size:var(--fs-h1);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);color:var(--text-strong);margin:0;line-height:var(--lh-tight)}.page-head .lede{color:var(--text-muted);font-size:var(--fs-body-lg);margin:12px 0 0}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin:var(--sp-7) 0 var(--sp-5)}.section-head:first-child{margin-top:0}.section-head h2{margin:0}.section-head p{margin:6px 0 0;color:var(--text-muted);font-size:var(--fs-sm)}@media(prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.nav-toggle{display:none;width:44px;height:44px;flex:none;align-items:center;justify-content:center;border:none;border-radius:var(--r-md);background:transparent;color:var(--text-strong);cursor:pointer;padding:0;-webkit-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent}.nav-toggle:hover{background:var(--surface-subtle)}.nav-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring)}.nav-toggle .bars{position:relative;width:18px;height:14px}.nav-toggle .bars span{position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor;transition:transform var(--dur) var(--ease),opacity var(--dur-fast) var(--ease)}.nav-toggle .bars span:nth-child(1){top:0}.nav-toggle .bars span:nth-child(2){top:6px}.nav-toggle .bars span:nth-child(3){top:12px}.nav-toggle[aria-expanded=true] .bars span:nth-child(1){transform:translateY(6px) rotate(45deg)}.nav-toggle[aria-expanded=true] .bars span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] .bars span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.nav-item.is-open>.nav-panel{opacity:1;visibility:visible;transform:translateY(8px)}.nav-item.is-open>.nav-link .chev{transform:rotate(180deg)}.drawer-scrim{position:fixed;inset:0;z-index:90;background:#12192275;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur) var(--ease),visibility var(--dur) var(--ease)}.drawer-scrim.is-open{opacity:1;visibility:visible;pointer-events:auto}[data-theme=dark] .drawer-scrim{background:#0009}.drawer{position:fixed;top:0;right:0;z-index:100;width:min(86vw,380px);height:100%;display:flex;flex-direction:column;background:var(--surface-card);border-left:1px solid var(--border-default);box-shadow:var(--shadow-xl);transform:translate(100%);visibility:hidden;transition:transform var(--dur-slow) var(--ease),visibility var(--dur-slow) var(--ease);overscroll-behavior:contain}.drawer.is-open{transform:translate(0);visibility:visible}.drawer-head{flex:none;display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4) var(--sp-3) var(--sp-5);border-bottom:1px solid var(--border-subtle)}.drawer-close{width:44px;height:44px;flex:none;display:grid;place-items:center;border:1px solid var(--border-default);border-radius:var(--r-md);background:var(--surface-card);color:var(--text-muted);cursor:pointer}.drawer-close:hover{background:var(--surface-subtle);color:var(--text-strong)}.drawer-body{flex:1;overflow-y:auto;padding:var(--sp-2) var(--sp-3) var(--sp-4);-webkit-overflow-scrolling:touch}.drawer-acc{border-bottom:1px solid var(--border-subtle)}.drawer-acc-trigger{width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3);cursor:pointer;background:none;border:none;font-family:inherit;font-size:var(--fs-body);font-weight:var(--fw-bold);color:var(--text-strong);letter-spacing:var(--ls-snug)}.drawer-acc-trigger .chev{width:18px;height:18px;flex:none;color:var(--text-faint);transition:transform var(--dur-fast) var(--ease)}.drawer-acc-trigger[aria-expanded=true] .chev{transform:rotate(180deg)}.drawer-acc-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur) var(--ease)}.drawer-acc-trigger[aria-expanded=true]+.drawer-acc-panel{grid-template-rows:1fr}.drawer-acc-inner{min-height:0;overflow:hidden;display:grid;gap:2px;padding-bottom:var(--sp-2)}.drawer .nav-opt.is-soon{opacity:.5}.drawer-link{display:flex;align-items:center;min-height:52px;padding:var(--sp-3);font-size:var(--fs-body);font-weight:var(--fw-semibold);color:var(--text-default);border-bottom:1px solid var(--border-subtle)}.drawer-link:hover{color:var(--text-strong);text-decoration:none;background:var(--surface-subtle)}.drawer-foot{flex:none;display:grid;gap:var(--sp-3);padding:var(--sp-4) var(--sp-3) calc(var(--sp-4) + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border-subtle)}.drawer-foot .btn{width:100%;justify-content:center}.drawer-theme{display:flex;align-items:center;justify-content:space-between;padding-left:var(--sp-3);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted)}body.body--locked{overflow:hidden}@media(max-width:760px){.nav,.header-actions{display:none}.nav-toggle{display:inline-flex;margin-left:auto}.header-inner{gap:var(--sp-3)}}@media(min-width:761px){.drawer,.drawer-scrim{display:none}}.deck-controls{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);padding:var(--sp-2);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-lg)}.deck-nav-btn{flex:1 1 0;min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-size:var(--fs-body);font-weight:var(--fw-semibold);letter-spacing:var(--ls-snug);color:var(--text-strong);background:var(--surface-subtle);border:1px solid var(--border-default);border-radius:var(--r-md);cursor:pointer;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.deck-nav-btn:hover{background:var(--surface-card);border-color:var(--border-strong)}.deck-nav-btn:disabled{opacity:.4;pointer-events:none}.deck-nav-btn .ar{font-size:1.15em;line-height:1;color:var(--text-muted)}.deck-nav-btn:hover .ar{color:var(--brand-text)}.deck-counter{flex:none;min-width:86px;text-align:center;font-size:var(--fs-body);color:var(--text-muted);font-variant-numeric:tabular-nums;letter-spacing:0}.deck-counter b{color:var(--brand-text);font-weight:var(--fw-bold)}.deck-counter .sl{margin:0 5px;color:var(--text-faint)}.deck-fs-btn{flex:none;width:48px;min-height:48px;display:grid;place-items:center;font-size:1.15rem;color:var(--brand-text);background:var(--brand-tint);border:1px solid var(--brand-tint-bd);border-radius:var(--r-md);cursor:pointer;transition:background var(--dur-fast) var(--ease)}.deck-fs-btn:hover{background:var(--coral-100)}[data-theme=dark] .deck-fs-btn:hover{background:#f0563f33}.deck-help .help-touch{display:none}@media(hover:none),(pointer:coarse){.deck-help .help-desk{display:none}.deck-help .help-touch{display:inline}}@media(max-width:760px){.deck-help .help-desk{display:none}.deck-help .help-touch{display:inline}}@media(max-width:760px){.slide-page{padding-inline:var(--sp-3)}.deck-stage{padding:var(--sp-2)}.deck-toolbar{padding:9px 12px}.deck-toolbar .dt-title{font-size:var(--fs-xs)}.deck-nav-btn .lbl{display:none}}.icon-btn{width:38px;height:38px;border-radius:var(--r-md);display:grid;place-items:center;border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-muted);cursor:pointer;flex:none}.icon-btn:hover{background:var(--surface-subtle);color:var(--text-strong)}.icon-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.drawer-search{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;margin:var(--sp-2) 0 var(--sp-3);padding:0 var(--sp-3);font-family:inherit;font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--text-muted);background:var(--surface-subtle);border:1px solid var(--border-default);border-radius:var(--r-md);cursor:pointer;text-align:left}.drawer-search:hover{color:var(--text-strong);border-color:var(--border-strong)}.drawer-search svg{width:18px;height:18px;flex:none}.search-modal{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;padding:clamp(12px,8vh,96px) var(--sp-4) var(--sp-4)}.search-modal[hidden]{display:none}.search-scrim{position:fixed;inset:0;background:#12192275}[data-theme=dark] .search-scrim{background:#0000009e}.search-panel{position:relative;z-index:1;width:min(640px,100%);max-height:80vh;display:flex;flex-direction:column;background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-xl);box-shadow:var(--shadow-xl);overflow:hidden}.search-panel-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-5);border-bottom:1px solid var(--border-subtle)}.search-kbd-hint{font-size:var(--fs-sm);color:var(--text-muted)}.search-close{width:38px;height:38px;flex:none;display:grid;place-items:center;border:1px solid var(--border-default);border-radius:var(--r-md);background:var(--surface-card);color:var(--text-muted);cursor:pointer}.search-close:hover{background:var(--surface-subtle);color:var(--text-strong)}.pf-mount{flex:1;min-height:0;overflow-y:auto;padding:var(--sp-4) var(--sp-5) var(--sp-5);--pagefind-ui-primary: var(--brand);--pagefind-ui-text: var(--text-default);--pagefind-ui-background: var(--surface-card);--pagefind-ui-border: var(--border-default);--pagefind-ui-tag: var(--surface-subtle);--pagefind-ui-border-width: 1px;--pagefind-ui-border-radius: var(--r-md);--pagefind-ui-font: var(--font-sans)}.search-fallback{color:var(--text-muted);font-size:var(--fs-sm);line-height:1.6;margin:var(--sp-3) 0}.search-fallback code{font-family:var(--font-mono);background:var(--surface-subtle);padding:1px 6px;border-radius:6px;font-size:.92em}.lec-progress{margin:var(--sp-4) 0 var(--sp-5)}.lp-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.lp-pos{font-size:var(--fs-sm);color:var(--text-muted)}.lp-pos b{color:var(--text-strong);font-weight:var(--fw-bold)}.lp-group{color:var(--text-faint)}.lp-toggle{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;font-family:inherit;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-md);cursor:pointer}.lp-toggle:hover{color:var(--text-strong);border-color:var(--border-strong)}.lp-toggle svg{width:15px;height:15px;flex:none}.lp-toggle .lbl-done{display:none}.lec-progress.is-read .lp-toggle{color:var(--ok);border-color:var(--ok-border);background:var(--ok-bg)}.lec-progress.is-read .lp-toggle .lbl-todo{display:none}.lec-progress.is-read .lp-toggle .lbl-done{display:inline-flex;align-items:center;gap:6px}.lp-bar{margin-top:10px;height:6px;border-radius:99px;background:var(--surface-subtle);overflow:hidden}.lp-bar i{display:block;height:100%;border-radius:99px;background:var(--brand)}.prog-summary{padding:var(--sp-5);border:1px solid var(--border-default);border-radius:var(--r-lg);background:var(--surface-card)}.ps-line{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.ps-count{font-size:var(--fs-sm);color:var(--text-muted)}.ps-count b{color:var(--text-strong);font-weight:var(--fw-bold);margin-left:6px}.ps-pct{font-size:var(--fs-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.ps-bar{margin:0 0 var(--sp-4);height:7px;border-radius:99px;background:var(--surface-subtle);overflow:hidden}.ps-bar i{display:block;height:100%;border-radius:99px;background:var(--brand);transition:width .3s var(--ease, ease)}.prog-summary.is-done .ps-bar i{background:var(--ok)}.ps-resume{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--brand-text)}.ps-resume:hover{text-decoration:none;opacity:.85}.ps-resume b{font-weight:var(--fw-bold)}.ps-resume .ps-resume-done{display:none}.prog-summary.is-done .ps-resume{color:var(--ok)}.prog-summary.is-done .ps-resume .ps-resume-todo{display:none}.prog-summary.is-done .ps-resume .ps-resume-done{display:inline}.row-check{display:none;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--ok)}.row-check svg{width:14px;height:14px}.is-read>.row-check,.is-read .row-check{display:inline-flex}.lec-row.is-read .lec-title{color:var(--text-muted)}.cat-card.is-read{border-color:var(--ok-border)}.resume-hero{display:none;align-items:center;gap:var(--sp-4);flex-wrap:wrap;padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-6);border:1px solid var(--brand-tint-bd);border-radius:var(--r-xl);background:var(--brand-tint)}.resume-hero.has-last{display:flex}.resume-hero .rh-ico{width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:var(--r-md);background:var(--surface-card);font-size:19px}.resume-hero .rh-body{min-width:0}.resume-hero .rh-eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--brand-text);letter-spacing:.02em}.resume-hero .rh-title{font-weight:var(--fw-semibold);color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resume-hero .rh-cta{margin-left:auto}.map-group{display:grid;grid-template-columns:1fr;gap:0}.map-card{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-5)}.map-card .mc-head{display:flex;align-items:center;gap:var(--sp-3)}.map-card .mc-ico{width:38px;height:38px;flex:none;border-radius:var(--r-md);display:grid;place-items:center;font-weight:var(--fw-bold);font-size:14px;background:var(--brand-tint);color:var(--brand-text)}.map-card .mc-ico.is-cool{background:var(--info-bg);color:var(--info)}.map-card .mc-title{font-weight:var(--fw-bold);color:var(--text-strong)}.map-card .mc-title a{color:inherit}.map-card .mc-sub{font-size:var(--fs-xs);color:var(--text-muted)}.map-card .mc-total{margin-left:auto;font-size:var(--fs-xs);color:var(--text-faint);white-space:nowrap}.skip-link[data-astro-cid-5hce7sga]{position:fixed;left:12px;top:-56px;z-index:1200;padding:10px 16px;border-radius:var(--r-md, 8px);background:var(--brand-text, #db3f28);color:#fff;font-weight:var(--fw-bold, 700);text-decoration:none;box-shadow:var(--shadow-lg, 0 8px 24px rgba(0,0,0,.18));transition:top .15s ease}.skip-link[data-astro-cid-5hce7sga]:focus{top:12px;outline:2px solid #fff;outline-offset:2px}main[data-astro-cid-5hce7sga]:focus{outline:none}
