:root{color-scheme:dark;--bg:#10161d;--surface:#17202a;--surface-sunken:#0c1117;--surface-hover:#1e2935;--border:#26313d;--border-strong:#3a4756;--control-border:#6b7787;--rail-idle:#34404e;--selection:#22303f;--text:#e6eaf0;--text-body:#cdd4dd;--text-2:#98a3b1;--text-3:#8792a0;--py-yellow:#ffd43b;--go-cyan:#00add8;--devops-orange:#f05033;--seo-green:#34c759;--py-ink:var(--py-yellow);--go-ink:var(--go-cyan);--devops-ink:#f7603f;--seo-ink:var(--seo-green);--project:#aeb6c2;--right:#5fd18a;--wrong:#ff8f8a;--code-bg:var(--surface-sunken);--code-inline-bg:var(--surface-sunken);--shadow-menu:0 6px 24px rgba(0,0,0,.35);--shadow-ink:rgba(0,0,0,.5);--tint-mix:15%;--glass:rgba(23,32,42,.66);--glass-sunken:rgba(12,17,23,.52);--glass-raised:rgba(30,41,53,.58);--glass-solid:rgba(23,32,42,.92);--glass-blur:16px;--glass-edge:rgba(255,255,255,.10);--glass-border:rgba(230,234,240,.11);--glass-shadow:0 2px 10px rgba(0,0,0,.35),inset 0 1px 0 var(--glass-edge);--glass-shadow-2:0 4px 14px rgba(0,0,0,.4),0 14px 34px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.09);--bar-bg:var(--glass);--primary-bg:var(--text);--primary-bg-hover:color-mix(in srgb,var(--text) 84%,var(--bg));--primary-ink:var(--bg);--primary-ink-2:color-mix(in srgb,var(--bg) 75%,var(--text));--hl-comment:#8792a0;--hl-keyword:#7fb2ff;--hl-string:#8fd694;--hl-number:#f0b26b;--hl-type:#6fd3d8;--hl-name:#e6eaf0;--hl-attr:#cdd4dd;--hl-meta:#98a3b1;--check-white:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.4 8.4l3.1 3.2L12.7 5' fill='none' stroke='%23ffffff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");--check-dark:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.4 8.4l3.1 3.2L12.7 5' fill='none' stroke='%23161a22' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");--check-img:var(--check-dark)}:root[data-theme="light"]{color-scheme:light;--bg:#f6f7f9;--surface:#ffffff;--surface-sunken:#eef0f3;--surface-hover:#eceff3;--border:#dde1e7;--border-strong:#b9c0ca;--control-border:#848d9a;--rail-idle:#c9ced6;--selection:#e0e6ee;--text:#161a22;--text-body:#2a303b;--text-2:#5b6472;--text-3:#626b79;--py-ink:#306998;--go-ink:#00758f;--devops-ink:#c4381c;--seo-ink:#1f7a3d;--project:#5b6478;--right:#166534;--wrong:#b3261e;--shadow-menu:0 6px 24px rgba(22,26,34,.12);--shadow-ink:rgba(22,26,34,.16);--tint-mix:35%;--glass:rgba(255,255,255,.72);--glass-sunken:rgba(238,240,243,.66);--glass-raised:rgba(255,255,255,.7);--glass-solid:rgba(255,255,255,.94);--glass-edge:rgba(255,255,255,.7);--glass-border:rgba(22,26,34,.10);--glass-shadow:0 1px 2px rgba(22,26,34,.05),0 2px 8px rgba(22,26,34,.06),inset 0 1px 0 rgba(255,255,255,.6);--glass-shadow-2:0 2px 4px rgba(22,26,34,.07),0 12px 30px rgba(22,26,34,.12),inset 0 1px 0 rgba(255,255,255,.75);--bar-bg:rgba(230,234,239,.9);--primary-bg:#56627a;--primary-bg-hover:#495368;--primary-ink:#ffffff;--primary-ink-2:#e3e8f0;--hl-comment:#626b79;--hl-keyword:#0b5fa5;--hl-string:#1f7a3d;--hl-number:#a3560b;--hl-type:#0e6e77;--hl-name:#161a22;--hl-attr:#2a303b;--hl-meta:#5b6472;--check-img:var(--check-white);--cover-sky-0:#e6edf6;--cover-sky-1:#eef2f8;--cover-sky-2:#f3f6fa;--sky-far:#d3dae5;--sky-near:#bcc6d4;--win-warm:#fff4d6;--win-cool:#f2f9ff;--sun:#ecd9a3;--cloud:#d3dae4;--trail:rgba(132,148,176,.45);--plane:var(--primary-bg);--beacon:#ff5a4f;--strobe:#2fb36a;--rail:#98a3b4;--train:var(--primary-bg)}:root{--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--r-lg:14px;--r-md:10px;--r-sm:6px;--r-xs:4px;--fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-md:14px;--fs-base:15px;--fs-lg:18px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:32px;--fs-prose:16px;--fs-read:17px;--fs-code:13.5px;--font-ui:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-read:"Literata",Georgia,"Times New Roman",serif;--font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Consolas,"Liberation Mono",monospace;--t-fast:150ms ease;--t:180ms ease;--ease-out:cubic-bezier(.22,1,.36,1);--dur-slow:260ms;--dur-vt:120ms;--t-out:200ms var(--ease-out);--t-slow:var(--dur-slow) var(--ease-out);--press:.985;--press-control:.96;--press-tick:.88;interpolate-size:allow-keywords;--strip-w:4px;--accent:var(--text);--line:var(--project);--strip:linear-gradient(var(--project),var(--project));--shadow-tint:0 12px 28px -16px var(--shadow-ink);--cover-sky-0:#05070b;--cover-sky-1:#070c14;--cover-sky-2:#0e1826;--sky-far:#101825;--sky-near:#080c12;--win-warm:#ffcf7a;--win-cool:#7be6da;--moon:#8f8b7e;--star:#dbe5ff;--cloud:rgba(120,140,175,.16);--trail:rgba(215,226,250,.42);--plane:#56627a;--beacon:#ff5a4f;--strobe:#ffffff;--rail:#3a4556;--train:#56627a}.track-py{--accent:var(--py-ink);--line:var(--py-ink);--strip:linear-gradient(var(--py-ink),var(--py-ink));--check-img:var(--check-dark)}:root[data-theme="light"] .track-py{--check-img:var(--check-white)}.track-go{--accent:var(--go-ink);--line:var(--go-cyan);--strip:linear-gradient(var(--go-cyan),var(--go-cyan));--check-img:var(--check-dark)}.track-devops{--accent:var(--devops-ink);--line:var(--devops-orange);--strip:linear-gradient(var(--devops-orange),var(--devops-orange));--check-img:var(--check-dark)}.track-seo{--accent:var(--seo-ink);--line:var(--seo-green);--strip:linear-gradient(var(--seo-green),var(--seo-green));--check-img:var(--check-dark)}.track-py,.track-go,.track-devops,.track-seo{--shadow-tint:0 12px 28px -16px color-mix(in srgb,var(--line) var(--tint-mix),var(--shadow-ink))}.track-project{--accent:var(--project);--line:var(--project);--strip:linear-gradient(var(--project),var(--project));--shadow-tint:0 12px 28px -16px var(--shadow-ink)}*{box-sizing:border-box}[hidden]{display:none !important}html{background:var(--bg)}body{margin:0;background:transparent;color:var(--text);font-family:var(--font-ui);font-size:var(--fs-base);line-height:1.55;-webkit-font-smoothing:antialiased}::selection{background:var(--selection);color:var(--text)}html{scrollbar-color:var(--border-strong) transparent}html{scrollbar-gutter:stable}h1,h2,h3{text-wrap:balance}p,li{text-wrap:pretty}details.phase::details-content,.quiz-item::details-content,.admin-help::details-content{block-size:0;overflow-y:clip;transition:block-size var(--t-slow),content-visibility var(--t-slow) allow-discrete}details.phase[open]::details-content,.quiz-item[open]::details-content,.admin-help[open]::details-content{block-size:auto}.wrap{max-width:860px;margin:0 auto;padding:0 var(--sp-4)}.topbar{background:var(--bar-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border-bottom:1px solid var(--glass-border);box-shadow:inset 0 -1px 0 var(--glass-edge);padding:var(--sp-3) 0;position:sticky;top:0;z-index:30}.title-row{display:flex;align-items:center;gap:var(--sp-3)}.wordmark{font-size:var(--fs-xl);font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--text);text-decoration:none;flex-shrink:0;padding:var(--sp-1) 0}.wordmark:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.site-nav{display:flex;align-items:center;gap:var(--sp-1);margin-left:var(--sp-4)}.site-nav a,.admin-menu a{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--sp-3);border-radius:var(--r-md);color:var(--text-2);text-decoration:none;font-size:var(--fs-md);font-weight:500;transition:color var(--t-fast),background-color var(--t-fast),scale var(--t-out)}.site-nav a:hover,.admin-menu a:hover{color:var(--text);background:var(--surface-hover)}.site-nav a:active,.admin-menu a:active{scale:var(--press-control)}.site-nav a[aria-current],.admin-menu a[aria-current]{color:var(--text);background:var(--surface-hover);box-shadow:inset 0 -2px 0 var(--text)}.title-side{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0;margin-left:auto}.course-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--border)}.course-head{display:flex;align-items:baseline;min-width:0}.course-up{flex-shrink:0;font-size:var(--fs-sm);color:var(--text-2);text-decoration:none;transition:color var(--t-fast)}.course-up:hover{color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.course-title{margin:0;min-width:0;font-size:var(--fs-lg);font-weight:700;letter-spacing:-.01em;color:var(--text)}.course-side{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}.page-title{margin:0 0 var(--sp-4);font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.025em;line-height:1.15}.pct{font-size:var(--fs-sm);color:var(--text-2);font-variant-numeric:tabular-nums}#pct{color:var(--text);font-weight:600}.pct-counts{margin-left:var(--sp-2)}.theme-toggle,.lang-switch,.nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:transparent;color:var(--text-2);border:1px solid var(--border-strong);border-radius:var(--r-md);cursor:pointer;transition:color var(--t-fast),background-color var(--t-fast),scale var(--t-out)}.theme-toggle:active,.lang-switch:active,.nav-toggle:active{scale:var(--press-control)}.theme-toggle:hover,.lang-switch:hover,.nav-toggle:hover{color:var(--text);background:var(--surface-hover)}.lang-switch{width:auto;min-width:36px;padding:0 var(--sp-2);font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;text-decoration:none}.theme-toggle svg,.nav-toggle svg,.acct-caret svg{width:16px;height:16px;display:block;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.theme-icon{display:none}.theme-icon-sun{display:block}:root[data-theme="light"] .theme-icon-sun{display:none}:root[data-theme="light"] .theme-icon-moon{display:block}.nav-toggle-icon{display:block;transition:transform var(--t)}:root:not([data-nav-collapsed]) .nav-toggle-icon{transform:rotate(180deg)}:root[data-nav-mode="shown"] .nav-toggle,:root[data-nav-mode="hidden"] .nav-toggle{color:var(--text);border-color:var(--text)}.acct{position:relative}.acct-trigger{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 var(--sp-2);background:transparent;color:var(--text-2);border:1px solid var(--border-strong);border-radius:var(--r-md);font-size:var(--fs-sm);line-height:1;cursor:pointer;list-style:none;transition:color var(--t-fast),background-color var(--t-fast),scale var(--t-out)}.acct-trigger:active{scale:var(--press-control)}.acct-trigger::-webkit-details-marker{display:none}.acct-trigger:hover{color:var(--text);background:var(--surface-hover)}.acct[open] .acct-trigger{color:var(--text);background:var(--surface-hover)}.acct-avatar{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--primary-bg);color:var(--primary-ink);font-size:var(--fs-2xs);font-weight:700;line-height:1}.acct-avatar svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.acct-name{font-weight:500;max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-caret{display:inline-flex;transition:transform var(--t)}.acct-caret svg{width:12px;height:12px}.acct[open] .acct-caret{transform:rotate(180deg)}.acct-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:40;min-width:190px;display:flex;flex-direction:column;background:var(--surface);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--shadow-menu);padding:var(--sp-1);animation:acct-in var(--dur-slow) var(--ease-out) both}@keyframes acct-in{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}.acct-menu-up{top:auto;bottom:calc(100% + var(--sp-2));max-height:calc(100dvh - 140px);overflow-y:auto;animation-name:acct-in-up}@keyframes acct-in-up{from{opacity:0;transform:translateY(4px) scale(.98)}to{opacity:1;transform:none}}.acct-head{margin:0;padding:6px var(--sp-2) var(--sp-1);font-size:var(--fs-xs);font-weight:500;color:var(--text-3);overflow:hidden;text-overflow:ellipsis}.acct-item{display:block;width:100%;text-align:left;padding:9px var(--sp-3);border:none;border-radius:var(--r-sm);background:none;color:var(--text-2);text-decoration:none;font-family:inherit;font-size:var(--fs-md);line-height:1.3;cursor:pointer;transition:color var(--t-fast),background-color var(--t-fast)}.acct-item:hover{color:var(--text);background:var(--surface-hover)}.acct-item[aria-current]{color:var(--text);background:var(--surface-hover)}.acct-sep{margin:var(--sp-1) 0;border:none;border-top:1px solid var(--border)}.tracks{margin-top:var(--sp-3);display:flex;flex-direction:column;gap:6px}.track-row{display:flex;align-items:center;gap:var(--sp-3)}@media (min-width:621px){.tracks{flex-direction:row;flex-wrap:wrap;gap:var(--sp-2) var(--sp-8)}.track-row{flex:1 1 220px;max-width:360px}}.track-name{font-size:var(--fs-xs);font-weight:500;color:var(--text-2);flex:0 0 60px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-count{font-size:var(--fs-xs);color:var(--text-2);font-variant-numeric:tabular-nums;flex:0 0 auto;min-width:42px;text-align:right}.bar-outer{height:6px;border-radius:999px;flex:1;background:var(--rail-idle);overflow:hidden}.bar-inner{height:100%;border-radius:999px;background:var(--strip);transition:width var(--t-slow)}.phase-nav-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--t),opacity var(--t-fast)}.phase-nav-clip{min-height:0;overflow:hidden}:root[data-nav-collapsed] .phase-nav-wrap{grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows var(--t),opacity var(--t-fast),visibility 0s var(--t)}:root[data-nav-instant] .phase-nav-wrap{transition:none}main.wrap{padding-top:var(--sp-6);padding-bottom:var(--sp-8)}details.phase{scroll-margin-top:var(--header-h,120px)}main.wrap>details.phase{--strip-idle:linear-gradient(color-mix(in srgb,var(--line) 30%,var(--bg)),color-mix(in srgb,var(--line) 30%,var(--bg)));background:var(--strip) left top / var(--strip-w) calc(var(--p,100) * 1%) no-repeat,var(--strip-idle) left / var(--strip-w) 100% no-repeat,var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border:1px solid var(--glass-border);border-radius:var(--r-lg);box-shadow:var(--glass-shadow),var(--shadow-tint),inset 7px 0 20px -12px color-mix(in srgb,var(--line) 50%,transparent);transition:background-size var(--t-slow);margin-bottom:var(--sp-3);overflow:hidden}main.wrap>details.phase.is-untouched{box-shadow:var(--glass-shadow)}main.wrap>details.phase>summary{cursor:pointer;list-style:none;margin-left:var(--strip-w);padding:var(--sp-4) var(--sp-5);min-height:64px;display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);transition:background-color var(--t-fast)}details.phase>summary::-webkit-details-marker{display:none}details.phase>summary:hover{background:var(--surface-hover)}details.phase>summary::after{content:"";flex-shrink:0;width:7px;height:7px;margin-right:4px;border-right:1.5px solid var(--text-3);border-bottom:1.5px solid var(--text-3);transform:rotate(-45deg);transition:transform var(--t),border-color var(--t-fast)}details.phase[open]>summary::after{transform:rotate(45deg)}details.phase>summary:hover::after{border-color:var(--text)}details.phase>summary>.ph-title{flex:1 1 auto;min-width:0}.ph-title h3{margin:0;font-size:var(--fs-lg);font-weight:700;letter-spacing:-.01em;display:inline;text-underline-offset:4px;text-decoration-thickness:1px;transition:color var(--t-fast)}details.phase>summary:hover h3{text-decoration:underline}.ph-meta{display:block;font-size:var(--fs-sm);color:var(--text-2);margin-top:2px}.ph-progress{font-size:var(--fs-md);font-weight:600;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}main.wrap>details.phase>.ph-body{margin-left:var(--strip-w);padding:var(--sp-4) var(--sp-5);background:var(--glass-sunken);border-top:1px solid var(--glass-border)}.ph-why{font-size:var(--fs-md);color:var(--text-2);margin:0 0 var(--sp-3);max-width:62ch}ul.lessons{list-style:none;margin:0;padding:0}details.phase ul.lessons li{display:flex;gap:var(--sp-3);align-items:flex-start;background:var(--glass-raised);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:inset 0 1px 0 var(--glass-edge);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-2);transition:border-color var(--t-fast),box-shadow var(--t),background-color var(--t-fast)}details.phase ul.lessons li:last-child{margin-bottom:0}details.phase ul.lessons li:hover{border-color:var(--border-strong);box-shadow:var(--glass-shadow)}details.phase ul.lessons li.done{background:transparent;box-shadow:none;border-color:var(--border)}details.phase ul.lessons li.done:hover{box-shadow:var(--glass-shadow);background:var(--glass-raised)}details.phase ul.lessons form.toggle-form{margin:0;padding:1px 0 0}.tick-hit{display:inline-flex;padding:10px;margin:-10px;border-radius:50%;cursor:pointer}ul.lessons .lesson-info{font-size:var(--fs-base);min-width:0}.lesson-title-link{color:var(--text);text-decoration:none;display:inline-block;padding:1px 0;transition:color var(--t-fast);text-underline-offset:3px;text-decoration-thickness:1px}.lesson-title-link b{font-weight:600}.lesson-title-link:hover{text-decoration:underline}ul.lessons li.done .lesson-title-link{color:var(--text-2)}ul.lessons li.done .lesson-title-link b{font-weight:500}details.phase ul.lessons li.is-next{background:var(--glass-solid);border-color:var(--text-3);box-shadow:var(--glass-shadow-2),var(--shadow-tint)}ul.lessons li.is-next input[type=checkbox]{border-color:var(--text);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 20%,transparent)}ul.lessons li.is-next .lesson-title-link::after{content:"следующий";display:inline-block;margin-left:var(--sp-2);font-size:var(--fs-xs);font-weight:600;color:var(--text);padding:1px var(--sp-2);border:1px solid var(--border-strong);border-radius:var(--r-sm);vertical-align:1px;text-decoration:none}.lesson-text{display:block;font-size:var(--fs-md);line-height:1.5;color:var(--text-2);margin-top:2px;max-width:62ch}.task-label{font-weight:600;color:var(--text-2)}input[type=checkbox]{appearance:none;-webkit-appearance:none;flex-shrink:0;margin:0;width:20px;height:20px;border:2px solid var(--control-border);border-radius:50%;background:var(--check-img) center / 0 0 no-repeat,var(--strip) center / 0 0 no-repeat,var(--surface);background-origin:border-box;cursor:pointer;transition:border-color var(--t-fast),background-size var(--t-out),scale var(--t-out)}input[type=checkbox]:hover{border-color:var(--text)}input[type=checkbox]:active{scale:var(--press-tick)}input[type=checkbox]:checked{border-color:transparent;background-size:65% 65%,100% 100%}.links{margin-top:var(--sp-2);display:flex;flex-wrap:wrap;gap:4px var(--sp-4)}.links a{display:inline;font-size:var(--fs-sm);color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;overflow-wrap:anywhere;transition:color var(--t-fast)}.links a:hover{text-decoration-thickness:2px}.note-mark{font-size:var(--fs-xs);color:var(--text-3);margin-left:var(--sp-2)}.continue-card{display:flex;align-items:center;gap:var(--sp-3);background:var(--strip) left / var(--strip-w) 100% no-repeat,var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border:1px solid var(--glass-border);border-radius:var(--r-lg);box-shadow:var(--glass-shadow),var(--shadow-tint),inset 7px 0 20px -12px color-mix(in srgb,var(--line) 50%,transparent);padding:var(--sp-5) var(--sp-6);padding-left:calc(var(--sp-6) + var(--strip-w));margin-bottom:var(--sp-6);color:var(--text);text-decoration:none;overflow:hidden;transition:border-color var(--t-fast),box-shadow var(--t),translate var(--t-out),scale var(--t-out)}.continue-card.continue-done{--strip:linear-gradient(var(--project),var(--project));--accent:var(--text-2)}a.continue-card:hover{border-color:var(--border-strong);box-shadow:var(--glass-shadow-2),var(--shadow-tint),inset 7px 0 22px -11px color-mix(in srgb,var(--line) 60%,transparent);translate:0 -1px}a.continue-card:active{translate:0 0;scale:var(--press)}.continue-label{font-size:var(--fs-sm);font-weight:600;color:var(--text-2);flex-shrink:0}.continue-title{font-size:var(--fs-xl);font-weight:700;letter-spacing:-.01em;flex:1;min-width:0;overflow-wrap:anywhere}.continue-arrow{display:inline-flex;flex-shrink:0;color:var(--accent);transition:translate var(--t-out)}.continue-arrow svg,.cta-arrow svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}a.continue-card:hover .continue-arrow{translate:3px 0}.course-page .continue-card{background:var(--primary-bg);color:var(--primary-ink);-webkit-backdrop-filter:none;backdrop-filter:none;border:0;box-shadow:none;padding:var(--sp-5) var(--sp-6);margin-bottom:var(--sp-8)}.course-page .continue-card.continue-done{background:none;color:var(--text);border:1px solid var(--border-strong)}.course-page .continue-label{color:var(--primary-ink-2)}.course-page .continue-done .continue-label{color:var(--text-2)}.course-page .continue-arrow{color:inherit}.course-page a.continue-card:hover{box-shadow:none;background:var(--primary-bg-hover)}.course-page main.wrap>details.phase:not(.plan-intro){background:var(--strip) left top / var(--strip-w) calc(var(--p,100) * 1%) no-repeat,var(--strip-idle) left / var(--strip-w) 100% no-repeat;-webkit-backdrop-filter:none;backdrop-filter:none;border:0;border-top:1px solid var(--border-strong);border-radius:0;box-shadow:none;margin-bottom:0}.course-page main.wrap>details.phase:not(.plan-intro):last-of-type{border-bottom:1px solid var(--border-strong)}.course-page main.wrap>details.phase:not(.plan-intro)>summary{padding:var(--sp-5);min-height:76px}.course-page main.wrap>details.phase:not(.plan-intro)>.ph-body{padding:0 var(--sp-5) var(--sp-6);background:none;border-top:0}.course-page .ph-title h3{font-size:var(--fs-xl)}.course-page details.phase.is-complete>summary .ph-title h3{color:var(--text-2)}.course-page details.phase ul.lessons{display:grid;column-gap:var(--sp-8)}.course-page details.phase ul.lessons li,.course-page details.phase ul.lessons li:hover,.course-page details.phase ul.lessons li.done,.course-page details.phase ul.lessons li.done:hover{background:none;box-shadow:none;margin:0;border:0;border-top:1px solid var(--border);border-radius:0;padding:var(--sp-4) var(--sp-3)}.course-page details.phase ul.lessons li.is-next{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md)}@media (min-width:1001px){.course-page details.phase ul.lessons{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}.ph-list{display:grid;gap:var(--sp-3)}.ph-row{--strip-idle:linear-gradient(color-mix(in srgb,var(--line) 30%,var(--bg)),color-mix(in srgb,var(--line) 30%,var(--bg)));display:grid;grid-template-columns:3.2rem minmax(0,1fr) auto auto;align-items:center;column-gap:var(--sp-4);padding:var(--sp-5) var(--sp-5) var(--sp-5) calc(var(--sp-5) + var(--strip-w));background:var(--strip) left top / var(--strip-w) calc(var(--p,100) * 1%) no-repeat,var(--strip-idle) left / var(--strip-w) 100% no-repeat,var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-lg);color:var(--text);text-decoration:none;scroll-margin-top:var(--header-h,120px);transition:background-color var(--t-fast),border-color var(--t-fast)}.ph-row:hover{background-color:var(--surface-hover);border-color:var(--text-3)}.ph-num{font-size:var(--fs-3xl);font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--text-3);font-variant-numeric:tabular-nums}.ph-name{margin:0;font-size:var(--fs-xl);font-weight:700;letter-spacing:-.01em;line-height:1.25}.ph-row.is-complete .ph-name{color:var(--text-2)}.ph-row:hover .ph-name{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.ph-blurb{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;margin-top:var(--sp-1);font-size:var(--fs-md);line-height:1.45;color:var(--text-2);max-width:70ch}.ph-row .ph-meta{margin-top:var(--sp-1);color:var(--text-3)}.ph-go{display:inline-flex;color:var(--text-3);transition:translate var(--t-out),color var(--t-fast)}.ph-go svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.ph-row:hover .ph-go{color:var(--text);translate:3px 0}@media (max-width:620px){.course-page .continue-card{padding:var(--sp-4)}.course-page main.wrap>details.phase:not(.plan-intro)>summary{padding:var(--sp-4) var(--sp-3);min-height:0}.course-page main.wrap>details.phase:not(.plan-intro)>.ph-body{padding:0 var(--sp-3) var(--sp-4)}.course-page details.phase ul.lessons li,.course-page details.phase ul.lessons li:hover,.course-page details.phase ul.lessons li.done,.course-page details.phase ul.lessons li.done:hover{padding:var(--sp-3) var(--sp-2)}.ph-row{grid-template-columns:2.4rem minmax(0,1fr) auto;column-gap:var(--sp-3);padding:var(--sp-4) var(--sp-3) var(--sp-4) calc(var(--sp-3) + var(--strip-w))}.ph-num{font-size:var(--fs-2xl)}.ph-name{font-size:var(--fs-lg)}.ph-go{display:none}}.danger-zone{margin-top:var(--sp-8);padding-top:var(--sp-3);border-top:1px solid var(--border-strong)}.danger-zone>summary{display:flex;align-items:center;gap:var(--sp-2);width:max-content;padding:var(--sp-2) 0;list-style:none;cursor:pointer;font-size:var(--fs-sm);font-weight:600;color:var(--text-2);transition:color var(--t-fast)}.danger-zone>summary::-webkit-details-marker{display:none}.danger-zone>summary::after{content:"";width:7px;height:7px;margin-top:-2px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform var(--t)}.danger-zone[open]>summary::after{transform:rotate(45deg)}.danger-zone>summary:hover{color:var(--text)}.danger-zone form{margin:var(--sp-3) 0 0;max-width:56ch}.danger-zone p{margin:0 0 var(--sp-3);font-size:var(--fs-md);line-height:1.5;color:var(--text-2)}.lesson-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px solid var(--border)}.crumb{flex:1 1 auto;min-width:0;font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumb a{color:var(--text-2);text-decoration:none;transition:color var(--t-fast)}.crumb a:last-child{color:var(--text);font-weight:600}.crumb a:hover{color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.crumb-sep{margin:0 var(--sp-2);color:var(--text-3)}.lesson-progress{display:flex;align-items:center;gap:var(--sp-2);flex:0 0 auto}.lesson-progress .bar-outer{flex:none;width:96px;height:4px}.lesson-page{background:var(--strip) left / var(--strip-w) 100% no-repeat,var(--glass-solid);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(140%);backdrop-filter:blur(var(--glass-blur)) saturate(140%);border:1px solid var(--glass-border);border-radius:var(--r-lg);box-shadow:var(--glass-shadow),var(--shadow-tint),inset 7px 0 20px -12px color-mix(in srgb,var(--line) 50%,transparent);padding:var(--sp-8) var(--sp-10) var(--sp-10);padding-left:calc(var(--sp-10) + var(--strip-w));overflow:hidden}.lesson-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4)}.lesson-head h1,.lesson-head h2{margin:0;font-size:var(--fs-3xl);font-weight:800;line-height:1.12;letter-spacing:-.025em}.lesson-meta{flex:1 0 100%;margin:0 0 calc(-1 * var(--sp-2));font-size:var(--fs-sm);color:var(--text-2)}.done-toggle{display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;min-height:40px;font-size:var(--fs-sm);font-weight:600;color:var(--text-2);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:8px 14px 8px 10px;white-space:nowrap;transition:border-color var(--t-fast),color var(--t-fast),background-color var(--t-fast)}.done-toggle:hover{color:var(--text);background:var(--surface-hover)}.done-toggle:has(input:checked){color:var(--text);background:var(--glass-raised);border-color:var(--text-3)}.done-toggle input{width:18px;height:18px}.done-toggle:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.done-toggle input[type=checkbox]:focus-visible{outline:none}.lesson-task-line{font-size:var(--fs-md);color:var(--text-2);margin:var(--sp-1) 0 var(--sp-6);max-width:62ch}.no-content{font-size:var(--fs-md);color:var(--text-2);font-style:italic}.lesson-content{font-family:var(--font-read);font-size:var(--fs-read);line-height:1.65;color:var(--text-body)}.lesson-content>p,.lesson-content>ul,.lesson-content>ol{max-width:68ch}.lesson-content h2,.lesson-content h3{font-family:var(--font-ui)}.lesson-content h2{font-size:var(--fs-xl);font-weight:700;margin:var(--sp-10) 0 var(--sp-3);color:var(--text);letter-spacing:-.01em;line-height:1.3}.lesson-content h2:first-child{margin-top:0}.lesson-content h3{font-size:var(--fs-lg);font-weight:700;margin:var(--sp-6) 0 var(--sp-2);color:var(--accent)}.lesson-content p{margin:0 0 var(--sp-4);color:var(--text-body)}.lesson-content ul,.lesson-content ol{margin:0 0 var(--sp-4);padding-left:24px;color:var(--text-body)}.lesson-content li{margin-bottom:var(--sp-1)}.lesson-content strong{color:var(--text);font-weight:650}.lesson-content a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}.lesson-content code,.practice-list code,.verify-item code{font-family:var(--font-mono);font-size:.84em;overflow-wrap:anywhere;background:var(--code-inline-bg);border-radius:var(--r-xs);padding:1px 5px}.lesson-content pre{background:var(--code-bg);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);margin:0 0 var(--sp-4);max-width:100%;overflow-x:auto}.lesson-content pre code{white-space:pre;overflow-wrap:normal}.lesson-content pre code{background:none;padding:0;font-size:var(--fs-code);line-height:1.6}.lesson-content .code-block{position:relative;margin:0 0 var(--sp-4)}.lesson-content .code-block pre{margin:0}.lesson-content .code-block pre{padding-right:40px}.code-copy{position:absolute;top:6px;right:6px;display:grid;place-items:center;width:28px;height:28px;padding:0;background:none;border:0;border-radius:var(--r-sm);color:var(--text-2);opacity:.45;cursor:pointer;transition:opacity var(--t-fast),color var(--t-fast)}.code-copy svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.code-copy:hover,.code-copy:focus-visible{opacity:1;color:var(--text)}.code-copy:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.code-copy.copied{opacity:1;color:var(--accent)}.lesson-content blockquote{margin:0 0 var(--sp-4);padding:var(--sp-1) 0 var(--sp-1) var(--sp-4);border:none;background:var(--strip) left / 3px 100% no-repeat;color:var(--text-2)}.lesson-content blockquote>:last-child{margin-bottom:0}.lesson-content table{border-collapse:collapse;width:100%;margin:0 0 var(--sp-4);font-family:var(--font-ui);font-size:var(--fs-md);border-top:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong)}.lesson-content th,.lesson-content td{border-bottom:1px solid var(--border);padding:9px 12px 9px 0;text-align:left;vertical-align:top}.lesson-content tr:last-child td{border-bottom:none}.lesson-content th{color:var(--text);font-size:var(--fs-sm);font-weight:700;border-bottom-color:var(--border-strong)}.lesson-content hr{border:none;border-top:1px solid var(--border);margin:var(--sp-6) 0}.step-head{display:flex;align-items:center;margin-bottom:var(--sp-4)}.step-name{font-size:var(--fs-2xl);font-weight:800;color:var(--text);letter-spacing:-.02em}.lesson-step{margin-top:var(--sp-12);padding-top:var(--sp-8);border-top:1px solid var(--border-strong)}.practice-list{margin:0 0 var(--sp-4);padding-left:24px;font-family:var(--font-read);font-size:var(--fs-read);line-height:1.6;color:var(--text-body);max-width:68ch}.practice-list li{margin-bottom:var(--sp-2);white-space:pre-wrap}.practice-list li::marker{font-family:var(--font-ui);font-weight:700;color:var(--text-2);font-variant-numeric:tabular-nums}.step-form{margin:0}.verify-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}.verify-list li{border-bottom:1px solid var(--border);padding:var(--sp-3) 0}.verify-item{display:flex;gap:var(--sp-3);align-items:flex-start;cursor:pointer;font-size:var(--fs-base);line-height:1.5}.verify-item input{margin-top:2px}.verify-list li.done .verify-item span{color:var(--text-2)}.quiz-list{border-top:1px solid var(--border)}.quiz-item{border-bottom:1px solid var(--border);padding:var(--sp-1) 0}.quiz-item>summary{cursor:pointer;font-size:var(--fs-base);font-weight:500;color:var(--text);list-style:none;display:flex;gap:var(--sp-3);align-items:center;min-height:44px}.quiz-item>summary::-webkit-details-marker{display:none}.quiz-item>summary::before{content:"";flex-shrink:0;width:7px;height:7px;margin:0 3px 1px 2px;border-right:1.5px solid var(--text-2);border-bottom:1.5px solid var(--text-2);transform:rotate(-45deg);transition:transform var(--t-fast)}.quiz-item[open]>summary::before{transform:rotate(45deg)}.quiz-item>summary:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.quiz-item[open]>summary{margin-bottom:var(--sp-2)}.quiz-item p{margin:0;padding-bottom:var(--sp-3);padding-left:calc(7px + 5px + var(--sp-3));font-family:var(--font-read);font-size:var(--fs-read);line-height:1.6;color:var(--text-body);max-width:68ch}.mcq{list-style:none;margin:0;padding:0;counter-reset:mcq;max-width:68ch}.mcq-item{counter-increment:mcq;padding:var(--sp-5) 0;border-bottom:1px solid var(--border)}.mcq-q{margin:0 0 var(--sp-4);font-family:var(--font-ui);font-size:var(--fs-lg);font-weight:600;line-height:1.4;color:var(--text);scroll-margin-top:calc(var(--header-h,0px) + var(--sp-4))}.mcq-q:focus{outline:none}.mcq-q::before{content:counter(mcq) ". ";color:var(--text-2);font-variant-numeric:tabular-nums}.mcq.is-live .mcq-q::before{content:none}.mcq.is-live .mcq-item{border-bottom:0;padding-top:0}.mcq-opts{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}.mcq-opt{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);width:100%;min-height:48px;padding:var(--sp-3) var(--sp-4);font-family:var(--font-ui);font-size:var(--fs-base);line-height:1.4;text-align:left;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast),background-color var(--t-fast),scale var(--t-out)}.mcq-opt:hover:not(:disabled){background:var(--surface-hover);border-color:var(--text-2)}.mcq-opt:active:not(:disabled){scale:var(--press-control)}.mcq-opt:disabled{cursor:default;color:var(--text)}.mcq:not(.is-live) .mcq-opt{cursor:default}.mcq-opt.is-right,.mcq-opt.is-wrong{border-width:2px;padding:calc(var(--sp-3) - 1px) calc(var(--sp-4) - 1px)}.mcq-opt.is-right{border-color:var(--right);background:color-mix(in srgb,var(--right) 14%,var(--surface))}.mcq-opt.is-wrong{border-color:var(--wrong);background:color-mix(in srgb,var(--wrong) 14%,var(--surface))}.mcq-opt.is-right::after,.mcq-opt.is-wrong::after{flex-shrink:0;font-size:var(--fs-xs);font-weight:700}.mcq-opt.is-right::after{content:"Верно";color:var(--right)}.mcq-opt.is-wrong::after{content:"Неверно";color:var(--wrong)}.mcq-ans{margin-top:var(--sp-3)}.mcq-ans>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:var(--fs-sm);font-weight:600;color:var(--text-2)}.mcq-ans>summary:hover{color:var(--text)}.mcq-ans p{margin:0 0 var(--sp-2);font-family:var(--font-read);font-size:var(--fs-read);line-height:1.6;color:var(--text-body)}.mcq-bar{margin:0 0 var(--sp-4);font-size:var(--fs-sm);font-weight:600;color:var(--text-2);font-variant-numeric:tabular-nums}.mcq-foot{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-4)}.mcq-result{margin:0 0 var(--sp-3);font-size:var(--fs-xl);font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}@media (max-width:620px){.mcq-foot .end-btn{width:100%}}.lesson-links{margin-top:var(--sp-10);padding-top:var(--sp-6);border-top:1px solid var(--border)}.res-title{font-size:var(--fs-lg);font-weight:700;color:var(--text);margin-bottom:var(--sp-3)}.lesson-notes{margin-top:var(--sp-10);padding-top:var(--sp-6);border-top:1px solid var(--border)}.note-form{margin:0}.note-area{font-family:var(--font-read);font-size:var(--fs-read);line-height:1.55;color:var(--text);background:var(--surface);width:100%;display:block;min-height:120px;resize:vertical;border:1px solid var(--control-border);border-radius:var(--r-md);padding:var(--sp-3);transition:border-color var(--t-fast)}.note-area::placeholder{color:var(--text-3)}.note-area:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.note-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-2);flex-wrap:wrap}.note-status{font-size:var(--fs-xs);color:var(--text-2)}.note-status.ok{color:var(--accent)}.note-status.err{color:var(--text)}.note-save-btn,.reset-btn,.settings-btn,.admin-ord-btn,.login-btn,.resume-cta,.resume-pdf-btn,a.contact-chip,.end-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:40px;font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:600;line-height:1.2;color:var(--text);background:transparent;border:1px solid var(--border-strong);border-radius:var(--r-md);padding:9px 16px;cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast),background-color var(--t-fast),scale var(--t-out),translate var(--t-out)}.note-save-btn:active,.reset-btn:active,.settings-btn:active,.admin-ord-btn:active,.login-btn:active,.resume-cta:active,.resume-pdf-btn:active,a.contact-chip:active,.end-btn:active{scale:var(--press-control)}.note-save-btn:hover,.reset-btn:hover,.settings-btn:hover,.admin-ord-btn:hover:not(:disabled),.resume-pdf-btn:hover,a.contact-chip:hover,.end-btn:hover{background:var(--surface-hover);border-color:var(--text-2)}.reset-btn{color:var(--text-2)}.note-save-btn,.login-btn,.resume-cta,.admin-save-btn,.btn-primary{color:var(--primary-ink);background:var(--primary-bg);border-color:var(--primary-bg)}.note-save-btn:hover,.login-btn:hover,.resume-cta:hover,.admin-save-btn:hover,.btn-primary:hover{color:var(--primary-ink);background:var(--primary-bg-hover);border-color:var(--primary-bg-hover)}.note-save-btn{margin-left:auto}.footer{padding:var(--sp-3) var(--sp-4) var(--sp-8)}.legal-foot{padding:var(--sp-4) var(--sp-4) var(--sp-6);font-size:var(--fs-xs)}.legal-foot a{color:var(--text-3);text-underline-offset:3px;text-decoration-thickness:1px}.legal-foot a:hover{color:var(--text-2)}.login-wrap ~ .legal-foot{text-align:center}.sticky-nav{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--bar-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border-top:1px solid var(--glass-border);box-shadow:inset 0 1px 0 var(--glass-edge);padding-bottom:env(safe-area-inset-bottom,0px)}.sticky-nav-inner{max-width:860px;margin:0 auto;padding:var(--sp-2) var(--sp-3);display:flex;align-items:center;gap:var(--sp-2)}.sticky-btn{display:flex;align-items:center;gap:6px;min-width:0;min-height:44px;padding:6px 11px;background:var(--glass-sunken);border:1px solid var(--glass-border);border-radius:var(--r-md);color:var(--text);text-decoration:none;font-size:var(--fs-sm);font-weight:500;font-family:inherit;cursor:pointer;transition:background-color var(--t-fast),color var(--t-fast),scale var(--t-out)}.sticky-btn:active{scale:var(--press-control)}.sticky-btn.prev,.sticky-btn.next{flex:1 1 0}.sticky-btn.next{justify-content:flex-end;text-align:right}.sticky-btn.disabled{flex:0 0 auto;color:var(--text-3);border-style:dashed}.sticky-arrow{display:inline-flex;color:var(--text-3);flex-shrink:0;transition:color var(--t-fast)}.sticky-arrow svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.sticky-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a.sticky-btn:hover{background:var(--surface-hover)}a.sticky-btn:hover .sticky-arrow{color:var(--text)}@media (min-width:621px){.sticky-nav{display:none}}.sticky-phone{display:none}.sticky-done{margin:0}.sticky-check{display:inline-grid;place-items:center;flex-shrink:0;width:18px;height:18px;border:1.5px solid var(--control-border);border-radius:var(--r-xs);color:var(--bg);transition:background-color var(--t-fast),border-color var(--t-fast)}.sticky-check svg{width:12px;height:12px;opacity:0;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.sticky-done-btn[aria-pressed="true"]{background:var(--glass-raised);border-color:var(--text-3)}.sticky-done-btn[aria-pressed="true"] .sticky-check{border-color:transparent;background-origin:border-box;background:var(--check-img) center / 65% 65% no-repeat,var(--strip) center / 100% 100% no-repeat}.sticky-menu-btn{list-style:none}.sticky-menu-btn::-webkit-details-marker{display:none}.sticky-menu[open] .sticky-menu-btn{background:var(--surface-hover)}.site-dock{display:none}@media (max-width:620px){:root{--dock-h:56px}body{padding-bottom:calc(var(--dock-h) + env(safe-area-inset-bottom,0px))}.site-dock{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--bar-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border-top:1px solid var(--glass-border);box-shadow:inset 0 1px 0 var(--glass-edge);padding:0 var(--sp-2) env(safe-area-inset-bottom,0px)}.site-dock>a,.site-dock>details{flex:1 1 0;min-width:0}.dock-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--dock-h);padding:6px 2px;color:var(--text-2);text-decoration:none;list-style:none;cursor:pointer}.dock-link::-webkit-details-marker{display:none}.dock-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:28px;border-radius:var(--r-lg);transition:background-color var(--t-fast),scale var(--t-out)}.dock-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.dock-acct .acct-avatar{width:22px;height:22px}.dock-label{font-size:var(--fs-2xs);font-weight:500;line-height:1.2}.dock-link:active .dock-icon{scale:var(--press-control)}.dock-link[aria-current],.dock-acct[open] .dock-link{color:var(--text)}.dock-link[aria-current] .dock-icon,.dock-acct[open] .dock-icon{background:var(--surface-hover)}.dock-link[aria-current] .dock-label{font-weight:600}body.page-lesson{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}.sticky-done{flex:1 1 0;min-width:0}.sticky-menu.sticky-phone{display:block;flex:0 0 auto}.sticky-nav .sticky-btn.prev,.sticky-nav .sticky-btn.next,.sticky-nav .sticky-btn.disabled{flex:0 0 44px;width:44px;padding:0;justify-content:center}.sticky-btn.prev .sticky-text,.sticky-btn.next .sticky-text{display:none}.sticky-done-btn{width:100%;justify-content:center}.sticky-menu-btn{padding:6px var(--sp-3)}}.lesson-wide .wrap{max-width:1280px}.lesson-content :is(h2,h3),.lesson-step,.lesson-notes{scroll-margin-top:var(--header-h,80px)}.lesson-layout{display:block}.lesson-rail{display:none}.lesson-toc-side{display:none}.lesson-toc ol{list-style:none;margin:0;padding:0}.lesson-toc>ol{border-left:1px solid var(--border-strong)}.lesson-toc a{display:block;padding:4px var(--sp-3);margin-left:-1px;border-left:2px solid transparent;font-size:var(--fs-sm);line-height:1.35;color:var(--text-2);text-decoration:none;transition:color var(--t-fast),border-color var(--t-fast)}.lesson-toc li li a{padding-left:var(--sp-6);font-size:var(--fs-xs)}.lesson-toc a:hover{color:var(--text)}.lesson-toc a[aria-current]{color:var(--text);font-weight:650;border-left-color:var(--line)}.toc-h{margin-bottom:var(--sp-2);font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.lesson-toc-side .toc-notes{display:none}.toc-m{margin:0 0 var(--sp-4);background:var(--surface);border:1px solid var(--control-border);border-radius:var(--r-md)}.toc-m>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:44px;padding:0 var(--sp-3);font-size:var(--fs-base);font-weight:600;cursor:pointer;list-style:none}.toc-m>summary::-webkit-details-marker{display:none}.toc-m>summary::after{content:"";flex-shrink:0;width:7px;height:7px;border-right:1.5px solid var(--text-2);border-bottom:1.5px solid var(--text-2);transform:rotate(45deg);transition:transform var(--t-fast)}.toc-m[open]>summary::after{transform:rotate(-135deg)}.toc-m .lesson-toc{padding:0 var(--sp-3) var(--sp-3)}.lesson-aside .lesson-notes{margin-top:var(--sp-4);padding:var(--sp-5) var(--sp-4) var(--sp-5) calc(var(--sp-4) + var(--strip-w));background:var(--strip) left / var(--strip-w) 100% no-repeat,var(--glass-solid);border:1px solid var(--glass-border);border-radius:var(--r-lg);box-shadow:var(--glass-shadow),var(--shadow-tint)}.rail-search{display:flex;align-items:center;gap:var(--sp-2);height:38px;padding:0 var(--sp-2) 0 var(--sp-3);margin-bottom:var(--sp-3);background:var(--surface);border:1px solid var(--control-border);border-radius:var(--r-md)}.rail-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.rail-search input{flex:1;min-width:0;height:100%;padding:0;background:transparent;color:var(--text);border:0;outline:none;font-family:inherit;font-size:var(--fs-md)}.rail-search input::placeholder{color:var(--text-3)}kbd{font-family:var(--font-mono);font-size:var(--fs-2xs);line-height:1;padding:3px 6px;color:var(--text-2);border:1px solid var(--border-strong);border-radius:var(--r-xs)}.rail-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-2);padding:0 var(--sp-2) var(--sp-2);margin-bottom:var(--sp-2);border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-2);font-variant-numeric:tabular-nums}.rail-head b{font-size:var(--fs-md);font-weight:650;color:var(--text)}.rail-tick{flex:none;width:16px;height:16px;margin-top:1px;border:1.5px solid var(--control-border);border-radius:50%;background:var(--check-img) center / 0 0 no-repeat,var(--strip) center / 0 0 no-repeat;background-origin:border-box;transition:border-color var(--t-fast),background-size var(--t-out)}.rail-list li.done .rail-tick,.rail-phase.is-complete>summary .rail-tick{border-color:transparent;background-size:65% 65%,100% 100%}.rail-phase>summary{display:grid;grid-template-columns:16px minmax(0,1fr) auto 10px;gap:var(--sp-2);align-items:start;padding:var(--sp-2);border-radius:var(--r-md);font-size:var(--fs-md);font-weight:600;line-height:1.3;cursor:pointer;list-style:none;transition:background-color var(--t-fast)}.rail-phase>summary::-webkit-details-marker{display:none}.rail-phase>summary::after{content:"";width:6px;height:6px;margin-top:5px;border-right:1.5px solid var(--text-2);border-bottom:1.5px solid var(--text-2);transform:rotate(-45deg);transition:transform var(--t-fast)}.rail-phase[open]>summary::after{transform:rotate(45deg)}.rail-phase>summary:hover{background:var(--surface-hover)}.rail-ph-n{font-size:var(--fs-xs);font-weight:500;color:var(--text-2);font-variant-numeric:tabular-nums;margin-top:2px}.rail-list{list-style:none;margin:0;padding:0 0 var(--sp-2) var(--sp-6)}.rail-list a{display:grid;grid-template-columns:16px minmax(0,1fr);gap:var(--sp-2);padding:6px var(--sp-2);border-radius:var(--r-md);font-size:var(--fs-sm);line-height:1.3;color:var(--text-2);text-decoration:none;transition:color var(--t-fast),background-color var(--t-fast)}.rail-list a:hover{color:var(--text);background:var(--surface-hover)}.rail-list a[aria-current]{color:var(--text);font-weight:650;background:var(--surface-hover);box-shadow:inset 3px 0 0 var(--line)}.rail-state{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (min-width:621px){.lesson-layout>.lesson-page{background:none;border:0;border-radius:0;box-shadow:none;padding:0;overflow:visible;-webkit-backdrop-filter:none;backdrop-filter:none}}.lesson-end{margin-top:var(--sp-10);padding-top:var(--sp-6);border-top:1px solid var(--border);scroll-margin-top:var(--header-h,80px)}.end-q{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-xl);font-weight:700;letter-spacing:-.01em;line-height:1.25;color:var(--text)}.end-tick{flex:none;width:22px;height:22px;border-radius:50%;background:var(--check-img) center / 65% 65% no-repeat,var(--strip) center / 100% 100% no-repeat;background-origin:border-box}.end-next-title{margin:var(--sp-1) 0 0;font-size:var(--fs-md);line-height:1.4;color:var(--text-2)}.end-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4)}.end-form{margin:0}.end-btn{min-height:44px;text-decoration:none}.end-skip{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-2);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color var(--t-fast)}.end-skip:hover{color:var(--text)}.end-undo{margin:0}button.end-skip{background:none;border:0;padding:0;font-family:inherit;cursor:pointer}.end-kbd{display:none;align-items:center;padding:3px 5px;color:var(--text-2);border:1px solid var(--border-strong);border-radius:var(--r-xs)}.end-kbd svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}@media (min-width:621px) and (hover:hover){.end-kbd{display:inline-flex}}.btn-primary .end-kbd{color:var(--primary-ink);border-color:color-mix(in srgb,var(--primary-ink) 45%,transparent)}@media (max-width:620px){.end-form,.end-form .end-btn{width:100%}}@media (min-width:861px){.lesson-layout{display:grid;grid-template-columns:248px minmax(0,1fr);column-gap:var(--sp-8);align-items:start}.lesson-layout>.lesson-page,.lesson-aside{grid-column:2}.lesson-rail{display:block;grid-column:1;grid-row:1 / span 3;position:sticky;top:var(--header-h,80px);max-height:calc(100dvh - var(--header-h,80px) - var(--sp-6));overflow-y:auto;scrollbar-width:thin;padding-right:var(--sp-2)}}@media (min-width:1101px){.lesson-layout{grid-template-columns:260px minmax(0,1fr) 280px}.lesson-rail{grid-row:1}.lesson-aside{grid-column:3;grid-row:1;position:sticky;top:var(--header-h,80px);max-height:calc(100dvh - var(--header-h,80px) - var(--sp-6));display:flex;flex-direction:column}.toc-m{display:none}.lesson-toc-side{display:block;flex:0 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin}.lesson-aside .lesson-notes{flex:none;margin-top:var(--sp-5);padding:var(--sp-5) 0 0;background:none;border:0;border-top:1px solid var(--border);border-radius:0;box-shadow:none}.lesson-aside .note-area{font-size:var(--fs-md);min-height:140px}.lesson-wide .topbar>.wrap{display:flex;align-items:center;gap:var(--sp-3)}.lesson-wide .title-row{display:contents}.lesson-wide .title-side{order:3}.lesson-wide .lesson-bar{order:2;flex:1 1 0;min-width:0;margin:0 0 0 var(--sp-2);padding:0 0 0 var(--sp-4);border-top:0;border-left:1px solid var(--border-strong)}}@media (max-width:620px){.toc-m{display:none}.lesson-progress .bar-outer{width:56px}.lesson-progress .pct:last-child{display:none}}a:focus-visible,button:focus-visible,summary:focus-visible,label:focus-visible,input[type=file]:focus-visible,input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}input[type=checkbox]:focus-visible{border-radius:50%}details.phase>summary:focus-visible{outline-offset:-3px}.settings-title{font-size:var(--fs-lg);font-weight:700;margin:var(--sp-8) 0 var(--sp-3)}.settings-form{display:flex;flex-direction:column;gap:var(--sp-4);max-width:360px}.settings-btn{align-self:flex-start}.settings-ok,.settings-error,.login-error{display:flex;gap:var(--sp-2);align-items:flex-start;margin:0 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);line-height:1.45;color:var(--text);font-weight:500;background:var(--glass-sunken);border:1px solid var(--border-strong);border-radius:var(--r-md)}.settings-error,.login-error{font-weight:600;border-color:var(--text-2)}.settings-ok svg,.settings-error svg,.login-error svg{width:16px;height:16px;flex-shrink:0;margin-top:1px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.settings-note{margin:var(--sp-4) 0 0;font-size:var(--fs-sm);line-height:1.55;color:var(--text-2);max-width:62ch}.settings-note a{color:var(--accent)}.login-wrap{max-width:400px}main.wrap.login-wrap{padding-top:10vh;padding-bottom:var(--sp-8)}.login-card{display:flex;flex-direction:column;gap:var(--sp-4);background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border:1px solid var(--glass-border);border-radius:var(--r-lg);box-shadow:var(--glass-shadow-2);padding:var(--sp-8)}.login-title{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.02em;line-height:1.15;margin:0;text-align:center}.login-sub{margin:calc(-1 * var(--sp-2)) 0 0;text-align:center;font-size:var(--fs-md);color:var(--text-2)}.login-card>.login-error{margin:0}.login-logo{display:block;height:48px;width:auto;margin:0 auto}.login-field{display:flex;flex-direction:column;gap:var(--sp-1)}.login-label{font-size:var(--fs-sm);font-weight:500;color:var(--text-2)}.login-field input,.login-field select{font-family:inherit;font-size:var(--fs-base);color:var(--text);background:var(--bg);width:100%;box-sizing:border-box;min-height:44px;border:1px solid var(--control-border);border-radius:var(--r-md);padding:10px var(--sp-3);transition:border-color var(--t-fast)}.login-field input:hover,.login-field select:hover,.note-area:hover{border-color:var(--text-2)}.login-field input:focus,.login-field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.login-remember{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--text-2);min-height:32px;cursor:pointer;user-select:none}.login-remember:hover{color:var(--text)}.login-btn{min-height:44px;font-size:var(--fs-base)}.login-card form{display:flex;flex-direction:column;gap:var(--sp-4);margin:0}.login-alt{margin:0;font-size:var(--fs-sm);color:var(--text-2);text-align:center}.login-alt a,.login-remember a{color:var(--text);text-underline-offset:3px;text-decoration-thickness:1px}.resume-page main.wrap{padding-top:var(--sp-6);padding-bottom:var(--sp-8)}.resume-summary{margin:0 0 var(--sp-3);max-width:62ch;font-family:var(--font-read);font-size:var(--fs-read);line-height:1.6;color:var(--text-body)}.resume-contacts{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:var(--sp-5) 0}.contact-chip{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:40px;padding:0 var(--sp-2);font-size:var(--fs-sm);color:var(--text-2);text-decoration:none}a.contact-chip{background:var(--glass-raised)}.chip-icon{width:16px;height:16px;flex-shrink:0;stroke-width:1.5}.resume-cta-form{margin:var(--sp-4) 0 0}.resume-cta{font-size:var(--fs-md);padding:11px 18px;text-decoration:none}.cta-arrow{display:inline-flex;vertical-align:middle;transition:translate var(--t-out)}.resume-cta:hover{translate:0 -1px}.resume-cta:active{translate:0 0}.resume-cta:hover .cta-arrow{translate:3px 0}.resume-cta-hint{margin:var(--sp-2) 0 0;font-size:var(--fs-sm);color:var(--text-2);max-width:56ch}.resume-pdf-btn{margin:0 0 var(--sp-4);text-decoration:none}.acct-login{text-decoration:none}.ph-body details.phase.phase-nested{background:var(--glass-raised);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:inset 0 1px 0 var(--glass-edge);margin-bottom:var(--sp-2);overflow:hidden}.ph-body details.phase.phase-nested:last-child{margin-bottom:0}.ph-body details.phase.phase-nested>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4)}.ph-body details.phase.phase-nested>summary h3{font-size:var(--fs-base)}.ph-body details.phase.phase-nested>.ph-body{padding:var(--sp-4);background:var(--glass-sunken);border-top:1px solid var(--glass-border)}.resume-list{margin:0;padding-left:1.1em;max-width:68ch}.resume-list li{font-family:var(--font-read);font-size:var(--fs-prose);line-height:1.6;color:var(--text-body);margin-bottom:var(--sp-3)}.resume-list li:last-child{margin-bottom:0}.resume-list li::marker{color:var(--text-3)}.resume-list a,.resume-summary a,.resume-edu a,.deck-text a,.arch-text a,.ph-why a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}.resume-list a:hover,.deck-text a:hover{text-decoration-thickness:2px}.resume-edu,.deck-text{margin:0 0 var(--sp-3);max-width:68ch;font-family:var(--font-read);font-size:var(--fs-prose);line-height:1.6;color:var(--text-body)}.resume-edu:last-child,.deck-text:last-child{margin-bottom:0}.resume-list + .deck-text{margin-top:var(--sp-3)}.skill-list{margin:0;display:grid;grid-template-columns:minmax(140px,auto) 1fr;gap:var(--sp-4) var(--sp-6)}.skill-list dt{font-size:var(--fs-sm);font-weight:600;color:var(--text);padding-top:5px}.skill-list dd{margin:0;font-size:var(--fs-base);line-height:1.55;color:var(--text-body)}.skill-tags{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0;padding:0;list-style:none}.skill-tags li{padding:3px var(--sp-3);font-size:var(--fs-sm);line-height:1.45;color:var(--text);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-sm)}.shot-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-top:var(--sp-3)}.shot-row img{width:100%;height:132px;object-fit:contain;border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--glass-shadow);background:var(--glass-sunken);padding:3px}.shot-row-2{grid-template-columns:repeat(2,1fr)}.deck-video{display:block;width:100%;max-width:320px;aspect-ratio:9 / 16;margin:0 auto var(--sp-3);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--glass-shadow);background:var(--glass-sunken);object-fit:contain}.deck-gif{margin:0 0 var(--sp-4)}.deck-gif :is(img,video){display:block;width:100%;height:auto;aspect-ratio:16 / 9;border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--glass-shadow);background:var(--glass-sunken)}.deck-gif figcaption{margin-top:var(--sp-2);font-size:var(--fs-sm);line-height:1.45;color:var(--text-2)}.arch-diagram{--accent:var(--text-2);margin-top:var(--sp-8);padding:var(--sp-3) var(--sp-3) var(--sp-2);background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(150%);backdrop-filter:blur(var(--glass-blur)) saturate(150%);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--glass-shadow)}.arch-svg{display:block;width:100%;height:auto}.arch-svg-tall{display:none}.arch-node{cursor:pointer}.arch-node rect{fill:color-mix(in srgb,var(--accent) 9%,var(--glass-raised));stroke:color-mix(in srgb,var(--accent) 40%,transparent);stroke-width:1;transition:fill var(--t-fast),stroke var(--t-fast)}.arch-node:hover rect{fill:color-mix(in srgb,var(--accent) 16%,var(--glass-raised));stroke:var(--accent)}.arch-node-hub rect{fill:color-mix(in srgb,var(--accent) 15%,var(--glass-raised));stroke:color-mix(in srgb,var(--accent) 60%,transparent)}.arch-node-hub:hover rect{fill:color-mix(in srgb,var(--accent) 22%,var(--glass-raised))}.arch-node.is-active rect{fill:color-mix(in srgb,var(--accent) 22%,var(--glass-raised));stroke:var(--accent);stroke-width:1.6}.arch-node:focus{outline:none}.arch-node:focus-visible rect{stroke:var(--accent);stroke-width:2.2}.arch-t{fill:var(--text);font-family:var(--font-ui);font-size:13px;font-weight:600;text-anchor:middle;pointer-events:none}.arch-s{fill:var(--text-2);font-family:var(--font-ui);font-size:10.5px;text-anchor:middle;pointer-events:none}.arch-link{stroke:var(--border-strong);stroke-width:1.5}.arch-link-label{fill:var(--text-3);font-family:var(--font-ui);font-size:9.5px;text-anchor:middle}.arch-pulse{stroke:var(--text);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:8 84;animation:arch-flow 2.8s linear infinite alternate}.arch-pulse-left{animation-direction:alternate-reverse}@keyframes arch-flow{from{stroke-dashoffset:92}to{stroke-dashoffset:0}}.arch-hint{margin:var(--sp-2) 0 0;font-size:var(--fs-xs);color:var(--text-3);text-align:center}.ph-body details.phase.arch-detail>summary{padding:var(--sp-2) var(--sp-4)}.ph-body details.phase.arch-detail>summary h3{font-size:var(--fs-sm)}.arch-text{margin:0;font-family:var(--font-read);font-size:var(--fs-prose);line-height:1.6;color:var(--text-body);max-width:68ch}.it-deck-page .rail-list{padding:0 0 var(--sp-2)}.it-deck-page .deck-video{margin-left:0}.it-deck-page .lesson-content .ph-why{max-width:68ch;font-size:inherit;color:var(--text-body)}.it-deck-page .arch-hint,.it-deck-page .ph-meta{font-family:var(--font-ui)}.it-deck-page .arch-diagram{margin-bottom:var(--sp-2)}.deck-aside{margin-top:var(--sp-8);padding-top:var(--sp-5);border-top:1px solid var(--border)}.deck-about-name{margin:0 0 var(--sp-1);font-size:var(--fs-lg);font-weight:700;color:var(--text)}.deck-about-text{margin:0 0 var(--sp-3);font-size:var(--fs-sm);line-height:1.5;color:var(--text-2)}.deck-about-meta{margin:0 0 var(--sp-2);font-size:var(--fs-sm)}.deck-about-meta a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}@media (min-width:1101px){.deck-aside{margin-top:0;padding-top:0;border-top:0}.deck-aside .lesson-toc-side + .toc-h{margin-top:var(--sp-6)}}.page-head{margin:0 0 var(--sp-8);padding-top:var(--sp-4)}.page-head .page-title{margin:0;font-size:clamp(32px,3.4vw,44px);font-weight:650;letter-spacing:-.03em;line-height:1.1}.page-sub{margin:var(--sp-2) 0 0;max-width:60ch;font-size:var(--fs-lg);line-height:1.45;color:var(--text-2)}.sec-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-1) var(--sp-4);margin:64px 0 var(--sp-6);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border-strong)}.sec-head h2{margin:0;font-size:clamp(22px,2.2vw,28px);font-weight:650;letter-spacing:-.025em}.sec-meta{font:500 var(--fs-sm)/1.3 var(--font-mono);color:var(--text-3)}.proj-grid{display:grid;gap:var(--sp-8) var(--sp-10);grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}.proj-lead{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}.proj{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);padding-top:var(--sp-5);border-top:1px solid var(--border-strong)}.proj-name{margin:0;font-size:var(--fs-xl);font-weight:650;letter-spacing:-.02em;line-height:1.2}.proj-lead .proj-name{font-size:clamp(24px,2.4vw,32px);letter-spacing:-.025em}.proj-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3);margin:0;font:500 var(--fs-sm)/1.3 var(--font-mono);color:var(--text-3)}.proj-text{margin:0;max-width:52ch;font-size:var(--fs-lg);line-height:1.5;color:var(--text-2)}.proj .resume-cta{margin-top:auto}.proj-feature{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-6);align-items:center}.proj-feature .proj-body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3)}.proj-feature .proj-demo{margin:0;order:-1}.proj-more{margin-top:var(--sp-10)}@media (min-width:900px){.proj-feature{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--sp-10)}.proj-feature .proj-demo{order:0}}.sort-switch{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-5)}.sort-label{margin-right:var(--sp-1);font-size:var(--fs-sm);color:var(--text-2)}.sort-switch a{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--sp-3);font-size:var(--fs-sm);font-weight:600;color:var(--text);text-decoration:none;border:1px solid var(--border-strong);border-radius:var(--r-md);transition:background-color var(--t-fast),border-color var(--t-fast),color var(--t-fast)}.sort-switch a:hover{background:var(--surface-hover);border-color:var(--text-2)}.sort-switch a[aria-current]{color:var(--primary-ink);background:var(--primary-bg);border-color:var(--primary-bg)}.course-level{padding:2px var(--sp-2);color:var(--text-2);border:1px solid var(--border-strong);border-radius:var(--r-sm)}.course-grid{display:grid;gap:var(--sp-5);grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr))}.course-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-5);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-lg);transition:border-color var(--t-fast),background-color var(--t-fast)}.course-card:hover{border-color:var(--text-2);background:var(--surface-hover)}.course-card-title{margin:0;font-size:var(--fs-xl);font-weight:650;letter-spacing:-.02em;line-height:1.25}.course-card-title a{color:var(--text);text-decoration:none}.course-card-title a::after{content:"";position:absolute;inset:0;border-radius:var(--r-lg)}.course-card-title a:focus-visible{outline:none}.course-card-title a:focus-visible::after{outline:2px solid var(--text);outline-offset:2px}.course-card-progress{align-self:stretch;display:flex;align-items:center;gap:var(--sp-3)}.course-card-count{min-width:5ch;text-align:right;font:500 var(--fs-sm)/1 var(--font-mono);color:var(--text-2);font-variant-numeric:tabular-nums}.course-card-next{margin:0;font-size:var(--fs-base);line-height:1.4;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-card .resume-cta{position:relative;z-index:1;margin-top:auto}.gh-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3)}.gh-badge{display:inline-block;padding:1px var(--sp-2);border:1px solid var(--glass-border);border-radius:var(--r-sm);background:var(--glass-raised);color:var(--text);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;white-space:nowrap}.gh-activity{list-style:none;margin:0;padding:0}.gh-activity li{display:grid;grid-template-columns:10em 14em minmax(0,1fr);gap:var(--sp-4);align-items:baseline;padding:var(--sp-3) 0;border-bottom:1px solid var(--border);font-size:var(--fs-base)}.gh-when,.gh-repo{font:500 var(--fs-sm)/1.4 var(--font-mono);color:var(--text-2);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.gh-activity a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px;overflow-wrap:anywhere}.gh-source{margin:var(--sp-4) 0 0;font-size:var(--fs-sm)}.gh-source a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}.gh-readme{overflow-wrap:anywhere}.gh-readme img{max-width:100%;height:auto;border-radius:var(--r-md)}.gh-readme table{display:block;overflow-x:auto;overflow-wrap:normal}.gh-readme details{margin:0 0 var(--sp-4)}.gh-readme summary{cursor:pointer;font-family:var(--font-ui);font-weight:600;color:var(--text)}.gh-readme [align="center"]{text-align:center}.gh-readme [align="right"]{text-align:right}@media (max-width:620px){.gh-activity li{grid-template-columns:auto minmax(0,1fr);gap:var(--sp-1) var(--sp-3)}.gh-activity a{grid-column:1 / -1}}@media (max-width:620px){main.wrap.login-wrap{padding-top:var(--sp-8)}.login-card{padding:var(--sp-6) var(--sp-5)}}@media (max-width:620px){.title-row{gap:var(--sp-2)}.site-nav,.title-side .acct,.title-side .acct-login{display:none}.topbar{padding:var(--sp-2) 0}.theme-toggle,.nav-toggle{width:40px;height:40px}.lang-switch{height:40px;min-width:40px}.course-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-up,.course-head .crumb-sep{display:none}.pct-counts{display:none}.tracks{gap:var(--sp-1)}.track-name{flex-basis:50px}.track-count{min-width:36px}main.wrap{padding-top:var(--sp-4)}main.wrap>details.phase>summary{padding:var(--sp-3)}main.wrap>details.phase>.ph-body{padding:var(--sp-3)}details.phase ul.lessons li{padding:var(--sp-3)}.ph-body details.phase.phase-nested>summary{padding:var(--sp-3)}.ph-body details.phase.phase-nested>.ph-body{padding:var(--sp-3)}.lesson-page{padding:var(--sp-5) var(--sp-4) var(--sp-6);padding-left:calc(var(--sp-4) + var(--strip-w))}.continue-card{padding:var(--sp-3) var(--sp-4);padding-left:calc(var(--sp-4) + var(--strip-w))}.lesson-content table{display:block;width:100%;overflow-x:auto}.resume-cta{width:100%;justify-content:center}.skill-list{grid-template-columns:1fr;gap:var(--sp-2)}.skill-list dd{margin-bottom:var(--sp-3)}.shot-row{grid-template-columns:1fr}.shot-row img{height:auto}.arch-svg-wide{display:none}.arch-svg-tall{display:block}}@media (max-width:480px){.continue-card{flex-wrap:wrap;gap:var(--sp-1)}.continue-label{width:100%}.continue-arrow{margin-left:auto}.lesson-head h1,.lesson-head h2{font-size:var(--fs-2xl)}.lesson-head{gap:var(--sp-2)}}:where(.plan-intro) :is(ol,ul){list-style:none;margin:0;padding:0}.plan-lead{font-family:var(--font-read);font-size:var(--fs-prose);line-height:1.6;color:var(--text-body);max-width:68ch;margin:0 0 var(--sp-3)}.plan-rule{font-size:var(--fs-base);color:var(--text);max-width:68ch;margin:0}.plan-sec{margin-top:var(--sp-8)}.plan-h{margin:0 0 var(--sp-1);font-size:var(--fs-base);font-weight:700;letter-spacing:-.01em}.plan-note{margin:0 0 var(--sp-4);font-size:var(--fs-sm);color:var(--text-2);max-width:62ch}.plan-note a{color:var(--text);text-underline-offset:3px;text-decoration-thickness:1px}.plan-box{min-width:0;padding:var(--sp-3) var(--sp-3) var(--sp-3) calc(var(--sp-3) + var(--strip-w));background:var(--strip) left / var(--strip-w) 100% no-repeat,var(--glass-raised);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:inset 0 1px 0 var(--glass-edge)}.plan-name{display:block;margin:0;font-size:var(--fs-base);font-weight:700;letter-spacing:-.01em;color:var(--text);overflow-wrap:break-word}.plan-sub{display:block;margin:2px 0 0;font-size:var(--fs-sm);line-height:1.45;color:var(--text-2)}.plan-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.plan-chip{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:32px;padding:0 var(--sp-3);font-size:var(--fs-sm);color:var(--text);text-decoration:none;background:var(--glass-sunken);border:1px solid var(--glass-border);border-radius:var(--r-sm)}a.plan-chip{transition:border-color var(--t-fast),background-color var(--t-fast)}a.plan-chip:hover{border-color:var(--border-strong);background:var(--surface-hover)}.plan-route{display:grid;gap:var(--sp-3);padding-left:var(--sp-8)}.plan-route>li{position:relative}.plan-route>li::before{content:"";position:absolute;z-index:1;left:calc(-1 * var(--sp-8));top:14px;width:18px;height:18px;box-sizing:border-box;border-radius:50%;background:var(--bg);border:2px solid var(--text-2)}.plan-route>.plan-stage::before{background:var(--strip);border:3px solid var(--bg)}.plan-route>li:not(:last-child)::after{content:"";position:absolute;left:calc(-1 * var(--sp-8) + 8px);top:23px;width:2px;height:calc(100% + var(--sp-3));background:var(--control-border)}.plan-goal{background:var(--strip) left / var(--strip-w) 100% no-repeat,var(--glass-solid)}.plan-stage>.plan-sub{margin-bottom:var(--sp-3)}.plan-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);counter-reset:plan-chip}.plan-chips .plan-chip::before{counter-increment:plan-chip;content:counter(plan-chip);font-weight:600;color:var(--text-2);font-variant-numeric:tabular-nums}.plan-stack-head,.plan-layer{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-1) var(--sp-2)}.plan-stack-head{margin-bottom:var(--sp-2);font-size:var(--fs-sm);font-weight:700;color:var(--text)}.plan-stack-head span{padding-left:calc(var(--sp-3) + var(--strip-w))}.plan-stack{display:flex;flex-direction:column-reverse;gap:var(--sp-3)}.plan-layer>.plan-name{grid-column:1 / -1;font-size:var(--fs-sm);color:var(--text-2)}.plan-layer>.plan-box{position:relative;padding-block:var(--sp-2);font-size:var(--fs-sm);line-height:1.4;color:var(--text)}.plan-off{border:1px dashed var(--border);border-radius:var(--r-md)}.plan-flow{display:grid;gap:var(--sp-4);counter-reset:plan-step}.plan-flow>li{position:relative;counter-increment:plan-step}.plan-flow .plan-name::before{content:counter(plan-step);display:inline-grid;place-items:center;min-width:20px;height:20px;margin-right:var(--sp-2);vertical-align:1px;border:1px solid var(--control-border);border-radius:50%;font-size:var(--fs-xs);font-weight:600;color:var(--text-2);font-variant-numeric:tabular-nums}.plan-ask{border-style:dashed;border-color:var(--border-strong)}.plan-flow>li:not(:last-child)::after{content:"";position:absolute;left:calc(50% - 4px);bottom:-12px;width:7px;height:7px;border-right:1.5px solid var(--control-border);border-bottom:1.5px solid var(--control-border);transform:rotate(45deg)}.plan-return{margin-top:var(--sp-3);font-size:var(--fs-sm);color:var(--text-2)}.plan-return-line{display:none}.plan-results{display:grid;gap:var(--sp-4)}.plan-result{padding:var(--sp-4) var(--sp-4) var(--sp-4) calc(var(--sp-4) + var(--strip-w))}.plan-result .plan-name{font-size:var(--fs-lg)}.plan-vacancies{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-3) 0 var(--sp-4)}.plan-result>.plan-sub{margin:0 0 var(--sp-2);font-weight:600;color:var(--text)}.plan-can{display:grid;gap:var(--sp-2)}.plan-can li{display:flex;gap:var(--sp-2);align-items:flex-start;font-size:var(--fs-md);line-height:1.45;color:var(--text-body)}.plan-can svg{flex:none;width:16px;height:16px;margin-top:2px;fill:none;stroke:var(--text-2);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}@media (min-width:720px){.plan-stack-head,.plan-layer{grid-template-columns:minmax(120px,.7fr) repeat(2,minmax(0,1fr))}.plan-stack-head span:first-child{grid-column:2}.plan-layer>.plan-name{grid-column:auto;align-self:center}.plan-flow-5{grid-template-columns:repeat(5,minmax(0,1fr))}.plan-flow-6{grid-template-columns:repeat(3,minmax(0,1fr))}.plan-flow .plan-name::before{display:grid;width:20px;margin:0 0 var(--sp-2)}.plan-flow>li:not(:last-child)::after{left:auto;bottom:auto;right:-12px;top:calc(50% - 4px);transform:rotate(-45deg)}.plan-flow-6>li:nth-child(3n)::after{display:none}.plan-return{margin-top:0;text-align:center}.plan-return-line{display:block;position:relative;height:18px;margin:0 calc(10% - 6px) var(--sp-2);border:1.5px solid var(--control-border);border-top:0;border-radius:0 0 var(--r-md) var(--r-md)}.plan-return-line::before{content:"";position:absolute;left:-4px;top:2px;width:7px;height:7px;border-left:1.5px solid var(--control-border);border-top:1.5px solid var(--control-border);transform:rotate(45deg)}.plan-results{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:621px){.wide-page .wrap{max-width:1200px;padding-inline:var(--sp-6)}}.home-page main.wrap{padding-top:0;padding-bottom:0}.home-cover{position:relative;overflow:hidden;background:linear-gradient(180deg,var(--cover-sky-0) 0%,var(--cover-sky-1) 55%,var(--cover-sky-2) 100%)}.cover-sky{position:absolute;left:0;right:0;bottom:24px;width:100%;height:110px;display:block;pointer-events:none}.cover-far{fill:var(--sky-far)}.cover-near{fill:var(--sky-near)}.cover-warm{fill:var(--win-warm)}.cover-cool{fill:var(--win-cool)}.cover-preview{position:relative;z-index:1;padding-top:var(--sp-4)}.cover-preview .resume-preview-bar{margin:0}.home-page .cover-in{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:72px;align-items:stretch;padding-top:16px;padding-bottom:181px}.cover-text{container-type:inline-size}.cover-prompt{margin:0;font:500 var(--fs-md)/1.4 var(--font-mono);color:var(--text-3);letter-spacing:.02em}.cover-prompt b{color:var(--text);font-weight:600}.cover-cursor{display:inline-block;width:8px;height:15px;margin-left:4px;vertical-align:-2px;background:var(--text);opacity:.85}.cover-name{margin:var(--sp-5) 0;color:var(--text);white-space:nowrap;font-size:clamp(32px,10.6cqi,88px);line-height:.94;letter-spacing:-.05em;font-weight:650}.cover-role{margin:0;font-size:clamp(20px,2vw,28px);font-weight:500;letter-spacing:-.015em}.home-page .cover-about .resume-summary{margin:var(--sp-5) 0 0;max-width:58ch;font-family:var(--font-ui);font-size:18px;line-height:1.55;color:var(--text-2)}.home-page .cover-note .resume-summary{margin:var(--sp-3) 0 0;max-width:58ch;font-family:var(--font-ui);font-size:var(--fs-md);line-height:1.5;color:var(--text-3)}.home-page .cover .resume-summary a{color:var(--text)}.cover-cta{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-8)}.home-page .cover-cta>a,.home-page .cover-contacts a.contact-chip{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:50px;margin:0;padding:0 24px;font:600 var(--fs-base)/1.2 var(--font-ui);text-decoration:none;white-space:nowrap;color:var(--text);background:transparent;border:1.5px solid var(--border-strong);border-radius:var(--r-md);transition:color var(--t-fast),border-color var(--t-fast),background-color var(--t-fast),scale var(--t-out)}.home-page .cover-cta>a:active,.home-page .cover-contacts a.contact-chip:active{scale:var(--press-control)}.home-page .cover-cta>a:hover,.home-page .cover-contacts a.contact-chip:hover{background:var(--surface-hover);border-color:var(--text-2)}.home-page .cover-cta>.cover-btn-primary{color:var(--primary-ink);background:var(--primary-bg);border-color:var(--primary-bg)}.home-page .cover-cta>.cover-btn-primary:hover{color:var(--primary-ink);background:var(--primary-bg-hover);border-color:var(--primary-bg-hover)}.cover-btn-ico{display:inline-flex}.cover-btn-ico svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.home-page .cover-contacts .resume-contacts{margin:var(--sp-3) 0 0;gap:var(--sp-3)}.home-page .cover-contacts .chip-icon{width:18px;height:18px;stroke-width:1.4}.home-page .cover-contacts span.contact-chip{min-height:0;padding:0 var(--sp-2);font-size:var(--fs-base);color:var(--text-2)}.home-page .cover-contacts span.contact-chip .chip-icon{color:var(--text-3)}.cover-side{display:flex;flex-direction:column;align-items:center}.cover-photo{width:100%;margin:calc(var(--fs-md) * 1.4 + var(--sp-5)) 0 0;aspect-ratio:3 / 4;overflow:hidden;border:1px solid var(--border-strong);border-radius:var(--r-lg);box-shadow:0 30px 60px -30px var(--shadow-ink);background:var(--surface-sunken)}.cover-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 20%}.cover-orb{--orb:40px;width:var(--orb);height:var(--orb);margin:auto 0;flex-shrink:0}.cover-orb svg,.cover-air svg,.cover-plane{display:block;shape-rendering:crispEdges}.cover-orb svg{width:100%;height:100%}.cover-orb .orb-moon{fill:var(--moon)}.cover-orb .orb-sun{fill:var(--sun);display:none}:root[data-theme="light"] .cover-orb .orb-moon{display:none}:root[data-theme="light"] .cover-orb .orb-sun{display:block}.home-cover{--z-sky:0;--z-city:1;--z-plane:2;--z-content:3}.cover-air{position:absolute;inset:0 0 74px;pointer-events:none;overflow:hidden;z-index:var(--z-sky)}.cover-sky,.cover-rail{z-index:var(--z-city)}.cover-flight{z-index:var(--z-plane)}.home-page .cover-in,.cover-preview{z-index:var(--z-content)}.cover-stars{position:absolute;inset:0;width:100%;height:100%;fill:var(--star);opacity:.55}.home-page .cover-cta>a:not(.cover-btn-primary),.home-page .cover-contacts a.contact-chip{background:color-mix(in srgb,var(--bar-bg) 55%,transparent);-webkit-backdrop-filter:blur(4px) saturate(150%);backdrop-filter:blur(4px) saturate(150%)}.home-page .cover-cta>a:not(.cover-btn-primary):hover{background:var(--surface-hover)}.home-page .cover-cta>.cover-btn-primary,.home-page .cover-cta>.cover-btn-primary:hover{-webkit-backdrop-filter:blur(4px) saturate(150%);backdrop-filter:blur(4px) saturate(150%)}.home-page .cover-cta>.cover-btn-primary{background:color-mix(in srgb,var(--primary-bg) 85%,transparent);border-color:transparent}.home-page .cover-cta>.cover-btn-primary:hover{background:color-mix(in srgb,var(--primary-bg-hover) 90%,transparent)}.cover-stars .tw{animation:sky-twinkle var(--t) var(--d) ease-in-out infinite alternate}:root[data-theme="light"] :is(.cover-stars,.cover-meteor){display:none}.cover-cloud{position:absolute;left:0;fill:var(--cloud);animation:sky-drift var(--t) linear var(--d) infinite}.cloud-1{bottom:104px;width:96px;height:18px;--t:170s;--d:-12s}.cloud-2{bottom:58px;width:66px;height:18px;--t:210s;--d:-150s}.cloud-3{bottom:150px;width:128px;height:24px;--t:240s;--d:-70s}.cloud-4{bottom:86px;width:88px;height:24px;--t:190s;--d:-118s}.cloud-5{bottom:128px;width:80px;height:15px;--t:260s;--d:-205s}.cloud-6{bottom:40px;width:110px;height:30px;--t:225s;--d:-40s}.cloud-7{bottom:170px;width:64px;height:12px;--t:180s;--d:-160s}.cover-flight{position:absolute;left:0;right:0;bottom:136px;height:14px;rotate:-.6deg;pointer-events:none}.cover-plane{position:absolute;top:-4px;left:-60px;width:60px;height:21px;fill:var(--plane);opacity:0;animation:sky-fly 48s linear -25s infinite}.cover-trail{position:absolute;left:-60px;right:-60px;top:5px;height:4px;border-block:1px solid var(--trail);-webkit-mask-image:linear-gradient(90deg,transparent,var(--text) 30%);mask-image:linear-gradient(90deg,transparent,var(--text) 30%);opacity:0;animation:sky-trail 48s linear -25s infinite}.plane-win{fill:var(--win-warm)}:root[data-theme="light"] :is(.plane-win,.train-win,.train-lamp){fill:color-mix(in srgb,var(--plane) 55%,var(--cover-sky-0));opacity:1}.plane-beacon{fill:var(--beacon);animation:sky-blink 1.3s steps(1) infinite}.plane-strobe{fill:var(--strobe);animation:sky-blink 1.7s steps(1) .4s infinite}.cover-meteor{position:absolute;top:8%;left:64%;width:110px;height:1.5px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--star));rotate:160deg;opacity:0;--mx:-220px;--my:80px;animation:sky-meteor 73s ease-out 19s infinite}@media (min-width:621px){.cover-meteor{width:240px;--mx:-460px;--my:168px}}.cover-blink .cw-off{opacity:0;animation:sky-win-off var(--t) var(--d) steps(1) infinite}.cover-blink .cw-on{opacity:0;animation:sky-win-on var(--t) var(--d) steps(1) infinite}@property --tx{syntax:"<length-percentage>";inherits:true;initial-value:-200px}.cover-rail{position:absolute;left:0;right:0;bottom:0;height:24px;overflow:hidden;background:var(--sky-near);transform:scaleX(-1);--tx:-200px;animation:rail-run 48s linear -25s infinite}.cover-track{position:absolute;left:0;right:0;bottom:5px;height:6px;background:linear-gradient(var(--rail),var(--rail)) top / 100% 2px no-repeat,repeating-linear-gradient(90deg,var(--rail) 0 3px,transparent 3px 10px) bottom / 100% 3px no-repeat;-webkit-mask-image:linear-gradient(90deg,transparent calc(var(--tx) - 640px),var(--text) calc(var(--tx) - 140px),var(--text) calc(var(--tx) + 30px),transparent calc(var(--tx) + 110px));mask-image:linear-gradient(90deg,transparent calc(var(--tx) - 640px),var(--text) calc(var(--tx) - 140px),var(--text) calc(var(--tx) + 30px),transparent calc(var(--tx) + 110px))}.cover-train{position:absolute;bottom:9px;left:calc(var(--tx) - 120px);width:120px;height:18px}.train-body{fill:var(--train)}.train-win,.train-lamp{fill:var(--win-warm);opacity:.45}.train-wheel{fill:var(--rail)}@keyframes rail-run{0%,52%{--tx:-200px}90%,100%{--tx:calc(100% + 760px)}}@keyframes sky-twinkle{from{opacity:1}to{opacity:.25}}@keyframes sky-drift{from{translate:-320px 0}to{translate:100vw 0}}@keyframes sky-fly{0%{left:-60px;opacity:1}36%{left:calc(100% + 20px);opacity:1}36.01%,100%{left:calc(100% + 20px);opacity:0}}@keyframes sky-trail{0%{opacity:1;clip-path:inset(0 100% 0 0)}36%{opacity:1;clip-path:inset(0 0 0 0)}50%{opacity:0;clip-path:inset(0 0 0 0);scale:1 2}100%{opacity:0}}@keyframes sky-blink{0%{opacity:1}15%{opacity:.15}}@keyframes sky-meteor{0%{opacity:0;translate:0 0}.2%{opacity:1}1.3%{opacity:0;translate:var(--mx) var(--my)}100%{opacity:0;translate:var(--mx) var(--my)}}@keyframes sky-win-off{0%{opacity:0}74%{opacity:1}92%{opacity:0}}@keyframes sky-win-on{0%{opacity:0}58%{opacity:1}84%{opacity:0}}@media (prefers-reduced-motion:reduce){.cover-air *,.cover-blink *,.cover-flight *,.cover-rail{animation:none !important}.end-scene{animation:none !important}.end-scene{-webkit-mask-image:none !important;mask-image:none !important}.end-scene .end-train{display:none}}.home-page main.wrap>details.phase{margin:0;padding-top:64px;overflow:visible;scroll-margin-top:var(--header-h,80px);background:none;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}@media (min-width:621px){.home-page main.wrap>details.phase:first-of-type{padding-top:32px}}.home-page main.wrap>details.phase>summary{margin:0;padding:0 0 var(--sp-3);min-height:0;cursor:default;border-bottom:1px solid var(--border-strong)}.home-page main.wrap>details.phase>summary::after{display:none}.home-page main.wrap>details.phase>summary:hover{background:none}.home-page main.wrap>details.phase>summary:hover h3{text-decoration:none}.home-page main.wrap>details.phase>summary>.ph-title{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-1) var(--sp-4)}.home-page main.wrap>details.phase>summary h3{font-size:clamp(22px,2.2vw,28px);letter-spacing:-.025em;font-weight:650}.home-page main.wrap>details.phase>summary .ph-meta{margin:0;font:500 var(--fs-sm)/1.3 var(--font-mono);color:var(--text-3)}.home-page main.wrap>details.phase>.ph-body{margin:0;padding:var(--sp-6) 0 0;background:none;border:0}.home-page .read-check{display:none}@media (max-width:620px){.home-page .cover-in{grid-template-columns:96px minmax(0,1fr);column-gap:var(--sp-4);row-gap:0;align-items:start;padding-top:var(--sp-5);padding-bottom:208px}.cover-sky{height:130px}.cover-air{inset:0 0 134px}.cover-text{display:contents}.cover-prompt{grid-column:1 / -1;grid-row:1;margin-bottom:var(--sp-3)}.cover-side{display:contents}.cover-photo{grid-column:1;grid-row:2 / span 2;width:96px;margin:0}.cover-orb{position:absolute;top:var(--sp-4);right:var(--sp-4);--orb:30px;margin:0}.cover-flight{bottom:150px}.cover-name{grid-column:2;grid-row:2;align-self:end;font-size:36px;margin:0 0 var(--sp-1);white-space:normal}.cover-role{grid-column:2;grid-row:3;align-self:start;font-size:var(--fs-md);line-height:1.35}.cover-about{grid-column:1 / -1;grid-row:4}.home-page .cover-about .resume-summary{font-size:var(--fs-base);line-height:1.45;margin-top:var(--sp-4)}.cover-cta{grid-column:1 / -1;grid-row:5;display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2);margin-top:var(--sp-5)}.home-page .cover-cta>a{min-height:48px;padding:0 var(--sp-3)}.cover-contacts{grid-column:1 / -1;grid-row:6}.home-page .cover-contacts .resume-contacts{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2);margin-top:var(--sp-2)}.home-page .cover-contacts a.contact-chip{min-height:44px;padding:0 var(--sp-2);gap:6px;font-size:var(--fs-sm)}.home-page .cover-contacts .chip-icon{width:16px;height:16px}.home-page .cover-contacts span.contact-chip{grid-column:1 / -1;font-size:var(--fs-md);padding:0;justify-content:flex-start}.cover-note{grid-column:1 / -1;grid-row:7}.home-page main.wrap>details.phase{padding-top:44px}.home-page main.wrap>details.phase>.ph-body{padding:var(--sp-4) 0 0}}@view-transition{navigation:auto}.topbar{view-transition-name:site-topbar}.site-dock,.sticky-nav{view-transition-name:site-bottom}.lesson-rail{view-transition-name:lesson-rail}.lesson-aside{view-transition-name:lesson-aside}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:var(--dur-vt);animation-timing-function:var(--ease-out)}@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none !important;animation:none !important;scale:none !important;translate:none !important}.arch-pulse{display:none}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none !important}}@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.topbar,.sticky-nav,.site-dock{background:var(--bg)}.acct-menu{background:var(--surface)}}.lesson-content pre code.hljs{background:none;padding:0;color:var(--text-body)}.hljs-comment,.hljs-quote{color:var(--hl-comment)}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-section,.hljs-operator{color:var(--hl-keyword)}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-template-tag,.hljs-selector-attr,.hljs-selector-pseudo{color:var(--hl-string)}.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-link{color:var(--hl-number)}.hljs-type,.hljs-built_in,.hljs-class .hljs-title,.hljs-selector-class,.hljs-params{color:var(--hl-type)}.hljs-title,.hljs-title.function_,.hljs-title.class_,.hljs-name{color:var(--hl-name);font-weight:600}.hljs-attr,.hljs-attribute,.hljs-variable,.hljs-template-variable,.hljs-property{color:var(--hl-attr)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-comment .hljs-doctag,.hljs-deletion{color:var(--hl-meta)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700;color:var(--text)}.admin-layout{display:flex;flex-direction:column;gap:var(--sp-4)}.admin-menu{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.admin-main{flex:1;min-width:0}@media (max-width:620px){.admin-menu{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.admin-menu::-webkit-scrollbar{display:none}.admin-menu a{flex:none;white-space:nowrap}}@media (min-width:621px){.admin-layout{flex-direction:row;align-items:flex-start;gap:var(--sp-6)}.admin-menu{flex:none;flex-direction:column;width:168px;position:sticky;top:calc(var(--header-h,64px) + var(--sp-4))}.admin-menu a[aria-current]{box-shadow:inset 3px 0 0 var(--text)}}.login-field input.admin-link-field{width:100%;font-family:var(--font-mono);font-size:var(--fs-sm)}.admin-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin:var(--sp-4) 0 var(--sp-3)}.admin-actions form{margin:0}.admin-link-btn,.admin-edit-btn{text-decoration:none;display:inline-flex}.settings-btn[aria-current="true"]{background:var(--surface-hover);border-color:var(--text-2)}.settings-btn:disabled,.admin-ord-btn:disabled{opacity:.4;cursor:default;scale:none}.admin-status{margin:0 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);font-weight:600;color:var(--text);background:var(--glass-sunken);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:inset 3px 0 0 var(--text)}.admin-help{margin:var(--sp-2) 0 var(--sp-3)}.admin-help>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:var(--sp-2);min-height:32px;font-size:var(--fs-sm);font-weight:600;color:var(--text-2)}.admin-help>summary:hover{color:var(--text)}.admin-help>summary::-webkit-details-marker{display:none}.admin-help>summary::before{content:"";flex-shrink:0;width:7px;height:7px;margin:0 3px 1px 2px;border-right:1.5px solid var(--text-2);border-bottom:1.5px solid var(--text-2);transform:rotate(-45deg);transition:transform var(--t-fast)}.admin-help[open]>summary::before{transform:rotate(45deg)}.admin-help>.settings-note{margin-top:var(--sp-2)}.admin-group-note{margin-top:var(--sp-2)}.admin-clean{margin-top:var(--sp-3)}.admin-list{margin-top:var(--sp-3)}.admin-users-title{margin:var(--sp-8) 0 0;font-size:var(--fs-lg);font-weight:800}ul.lessons.admin-list li{display:flex;gap:var(--sp-3);background:var(--glass-raised);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--glass-shadow);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-2)}ul.lessons.admin-list li:last-child{margin-bottom:0}.admin-row{align-items:center}.admin-info{flex:1;min-width:0}.admin-edit-btn{flex:none;align-self:center}.admin-preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ul.lessons.admin-list li.admin-row-changed{box-shadow:var(--glass-shadow),inset 3px 0 0 var(--text)}.admin-order{flex:none;width:30px;display:flex;flex-direction:column;gap:4px}.admin-order form{margin:0;display:flex}.admin-ord-btn{width:100%;min-height:28px;padding:3px 0;line-height:1.2;font-size:var(--fs-sm);text-align:center}.admin-ord-btn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.admin-order-fixed{color:var(--text-3);text-align:center}.admin-fields{list-style:none;margin:var(--sp-3) 0 0;padding:0}.admin-fields>li{margin-bottom:var(--sp-3)}.admin-field-area{min-height:0}.admin-group{margin:var(--sp-3) 0 0;padding:var(--sp-3) var(--sp-4);border:1px solid var(--glass-border);border-radius:var(--r-md);display:flex;flex-direction:column;gap:var(--sp-3)}.admin-group legend{padding:0 var(--sp-2);font-size:var(--fs-sm);font-weight:600;color:var(--text)}.admin-group-new{border-style:dashed}.admin-order-field{max-width:120px}.admin-modes{margin-top:var(--sp-3)}.admin-area{font-family:var(--font-mono);font-size:var(--fs-sm);min-height:340px;line-height:1.5}.admin-title-field{margin-bottom:var(--sp-4);max-width:480px}.admin-save-btn{margin-top:var(--sp-3)}.admin-img-warn{margin-top:var(--sp-3)}.admin-slots{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-3)}.admin-slot{display:flex;gap:var(--sp-3);align-items:flex-start;background:var(--glass-raised);border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--glass-shadow);padding:var(--sp-3)}.admin-slot-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-2)}.admin-slot-main form{margin:0;display:flex;flex-direction:column;gap:var(--sp-2);align-items:flex-start}.admin-thumb{flex:none;width:148px;height:100px;object-fit:contain;border:1px solid var(--glass-border);border-radius:var(--r-md);background:var(--glass-sunken);padding:3px}.admin-slot input[type=file]{font-size:var(--fs-sm);color:var(--text-2);max-width:100%}.admin-page .lesson-content :is(th,td):not(:first-child){text-align:right;font-variant-numeric:tabular-nums;padding:9px 0 9px var(--sp-3)}.admin-page .lesson-content p{font-family:var(--font-ui);font-size:var(--fs-base)}.admin-page .lesson-content h3{margin-top:var(--sp-8)}.resume-preview-bar{margin:0 0 var(--sp-4);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);color:var(--text-2);background:var(--glass-sunken);border:1px solid var(--glass-border);border-left:3px solid var(--text);border-radius:var(--r-sm)}.resume-preview-bar a{color:var(--text)}@media (max-width:560px){.admin-row{flex-wrap:wrap}.admin-preview{white-space:normal;overflow:visible;text-overflow:clip}.admin-edit-btn{width:100%;text-align:center;margin-left:0}.admin-slot{flex-direction:column}.admin-thumb{width:100%;height:140px}}.lesson-content p,.resume-summary,.resume-edu,.deck-text,.ph-why{text-align:justify;text-align-last:start;-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:6 3 3}.admin-page .lesson-content p{text-align:start;-webkit-hyphens:manual;hyphens:manual}@media (max-width:620px){.legal-page .lesson-content p{text-align:start}}.home-page main.wrap :is(.resume-edu,.deck-text,.ph-why),.home-cover .resume-summary{text-align:start;-webkit-hyphens:manual;hyphens:manual}.job-wins{display:grid;gap:var(--sp-1);margin-top:var(--sp-2);max-width:68ch;font-size:var(--fs-sm);line-height:1.45;color:var(--text-2)}.job-wins>span{position:relative;padding-left:1.1em}.job-wins>span::before{content:"";position:absolute;left:.3em;top:.62em;width:4px;height:4px;border-radius:50%;background:var(--text-3)}.li-shot{margin:var(--sp-3) 0 var(--sp-2);max-width:480px}.li-shot img{display:block;width:100%;height:auto;border:1px solid var(--glass-border);border-radius:var(--r-md);box-shadow:var(--glass-shadow);background:var(--glass-sunken);padding:3px}.li-shot figcaption{margin-top:var(--sp-1);font-family:var(--font-ui);font-size:var(--fs-sm);line-height:1.4;color:var(--text-2)}@media (max-width:999px){.resume-list:has(.li-shot)>li{list-style:none;position:relative}.resume-list:has(.li-shot)>li::before{content:"";position:absolute;left:-.8em;top:.75em;width:5px;height:5px;border-radius:50%;background:var(--text-3)}.resume-list>li:has(> .li-shot){display:flex;flex-direction:column}.li-shot{order:1}}@media (min-width:1000px){.ph-body:has(> .resume-list .li-shot){container-type:inline-size}.resume-list:has(.li-shot){--shot-w:50cqi;display:flow-root;max-width:none;margin-right:calc(var(--shot-w) + var(--sp-8))}.li-shot{float:right;clear:right;width:var(--shot-w);max-width:none;margin:0 calc(-1 * (var(--shot-w) + var(--sp-8))) var(--sp-3) 0}.li-shot img{width:auto;max-width:100%;max-height:185px}}.lightbox{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:var(--sp-12) var(--sp-4) var(--sp-6);border:0;background:color-mix(in srgb,var(--bg) 97%,transparent);color:var(--text)}.lightbox[open]{display:grid;place-items:center}.lightbox::backdrop{background:transparent}html:has(.lightbox[open]){overflow:hidden}.lightbox-fig{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;align-items:center;gap:var(--sp-2)}.lightbox-fig :is(img,video){display:block;max-width:100%;max-height:calc(100dvh - 140px);width:auto;height:auto;object-fit:contain;border-radius:var(--r-md);box-shadow:var(--glass-shadow)}.lightbox-fig figcaption{font-size:var(--fs-sm);line-height:1.4;color:var(--text-2);text-align:center;max-width:68ch}.lightbox-close{position:fixed;top:var(--sp-3);right:var(--sp-3);width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--glass-border);border-radius:var(--r-md);background:var(--glass);color:var(--text);cursor:pointer}.lightbox-close svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.zoomable{cursor:zoom-in}video.zoomable[controls]{cursor:auto}.home-cover .resume-summary{-webkit-hyphens:auto;hyphens:auto;hyphenate-limit-chars:6 3 3}.home-page main.wrap>details.phase>.ph-body>:is(.resume-list,.resume-edu,.deck-text){max-width:92ch}.home-page main.wrap .resume-edu{text-wrap:balance}.ph-body>.proj-feature{border-top:0;padding-top:0;margin-bottom:var(--sp-6)}.lesson-content .box{--box-c:var(--border-strong);max-width:68ch;margin:var(--sp-4) 0;padding:var(--sp-3) var(--sp-4);background:var(--surface-sunken);border-left:4px solid var(--box-c);border-radius:var(--r-md)}.lesson-content .box.short{--box-c:var(--hl-string)}.lesson-content .box.tip{--box-c:var(--hl-keyword)}.lesson-content .box.warn{--box-c:var(--hl-number)}.lesson-content .box.follow{--box-c:var(--hl-type)}.lesson-content .box>.lbl{display:block;margin-bottom:var(--sp-1);color:var(--box-c);font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.lesson-content .box>:is(p,ul,ol,pre,.short-body):last-child,.lesson-content .box .short-body>p:last-child{margin-bottom:0}.lesson-content .box pre{margin-top:var(--sp-3)}.lesson-content dl.terms{display:grid;grid-template-columns:fit-content(14rem) 1fr;gap:var(--sp-2) var(--sp-4);margin:var(--sp-3) 0 var(--sp-4)}.lesson-content dl.terms dt{color:var(--text);font-family:var(--font-ui);font-weight:700}.lesson-content dl.terms dd{margin:0}@media (max-width:620px){.lesson-content dl.terms{grid-template-columns:1fr}.lesson-content dl.terms dd{margin-bottom:var(--sp-2)}}.lesson-content .tbl-wrap{overflow-x:auto;margin:var(--sp-3) 0 var(--sp-4)}.lesson-content .tbl-wrap table{margin:0}.lesson-content .grid3,.lesson-content .codes{display:grid;gap:var(--sp-3);margin:var(--sp-3) 0 var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.lesson-content .codes{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-2)}.lesson-content .mini,.lesson-content .steps>div,.lesson-content details.check{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);font-family:var(--font-ui);font-size:var(--fs-md);line-height:1.55}.lesson-content .mini h4{margin:0 0 var(--sp-2);color:var(--text);font-size:var(--fs-base)}.lesson-content .mini ul{margin:0}.lesson-content .steps{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-4) 0;counter-reset:iv-step}.lesson-content .steps>div{flex:1 1 150px;counter-increment:iv-step}.lesson-content .steps>div::before{content:counter(iv-step);display:inline-grid;place-items:center;width:22px;height:22px;margin-right:var(--sp-2);border-radius:50%;background:var(--primary-bg);color:var(--primary-ink);font-size:var(--fs-xs);font-weight:700;font-variant-numeric:tabular-nums}.lesson-content .steps b{display:block;margin:var(--sp-1) 0 2px;color:var(--text)}.lesson-content .codes>div{--cc:var(--project);padding:var(--sp-3);border-radius:var(--r-md);font-family:var(--font-ui);font-size:var(--fs-sm);background:color-mix(in srgb,var(--cc) 14%,var(--surface));border:1px solid color-mix(in srgb,var(--cc) 45%,var(--border))}.lesson-content .codes b{display:block;color:var(--text);font-size:var(--fs-base)}.lesson-content .codes .c2{--cc:var(--hl-string)}.lesson-content .codes .c3{--cc:var(--hl-keyword)}.lesson-content .codes .c4{--cc:var(--hl-number)}.lesson-content .codes .c5{--cc:var(--devops-ink)}.lesson-content .mem{display:flex;height:34px;margin:var(--sp-3) 0;overflow:hidden;border:1px solid var(--border);border-radius:var(--r-sm);font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:600}.lesson-content .mem>div{display:grid;place-items:center;overflow:hidden;color:var(--text);white-space:nowrap}.lesson-content .mem>:nth-child(1){flex:3;background:color-mix(in srgb,var(--project) 35%,var(--surface))}.lesson-content .mem>:nth-child(2){flex:7;background:color-mix(in srgb,var(--hl-number) 35%,var(--surface))}.lesson-content .mem>:nth-child(3){flex:3;background:color-mix(in srgb,var(--hl-keyword) 35%,var(--surface))}.lesson-content .mem>:nth-child(4){flex:1.5;background:color-mix(in srgb,var(--hl-string) 35%,var(--surface))}.lesson-content .mem>:nth-child(5){flex:1.2;background:color-mix(in srgb,var(--devops-ink) 35%,var(--surface))}.lesson-content details.check{color:var(--text-body)}.lesson-content details.check>summary{color:var(--text);cursor:pointer;font-weight:600}.lesson-content details.check[open]>summary{margin-bottom:var(--sp-2)}.lesson-content .tl{margin:var(--sp-3) 0 var(--sp-4) var(--sp-2);padding-left:var(--sp-5);border-left:3px solid var(--border-strong)}.lesson-content .tl>div{position:relative;margin-bottom:var(--sp-4)}.lesson-content .tl>div::before{content:"";position:absolute;top:6px;left:calc(-1 * var(--sp-5) - 8px);width:13px;height:13px;border:3px solid var(--border-strong);border-radius:50%;background:var(--bg)}.lesson-content .tl .when{color:var(--text);font-family:var(--font-ui);font-weight:700}.lesson-content .iv-fig{margin:var(--sp-4) 0;padding:var(--sp-2);overflow-x:auto;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-md)}.lesson-content .iv-fig svg{display:block;width:100%;min-width:520px;height:auto}.lesson-content .iv-cap{margin-top:var(--sp-2);color:var(--text-2);font-family:var(--font-ui);font-size:var(--fs-sm)}.lesson-content svg text{fill:var(--text);font-family:var(--font-ui)}.lesson-content svg .t{font-size:14px;font-weight:600}.lesson-content svg .s{font-size:12px;fill:var(--text-2)}.lesson-content svg .xs{font-size:11px;fill:var(--text-2)}.lesson-content svg .lb{font-size:12px;font-weight:600;fill:var(--hl-keyword)}.lesson-content svg .lr{font-size:12px;font-weight:600;fill:var(--devops-ink)}.lesson-content svg :is(.bx,.bg,.bb,.bgr,.bo,.bp,.br){stroke-width:1.5}.lesson-content svg .bx{fill:var(--surface);stroke:var(--border-strong)}.lesson-content svg .bg{fill:var(--surface-hover);stroke:var(--border-strong)}.lesson-content svg .bb{fill:color-mix(in srgb,var(--hl-keyword) 16%,var(--surface));stroke:var(--hl-keyword)}.lesson-content svg .bgr{fill:color-mix(in srgb,var(--hl-string) 16%,var(--surface));stroke:var(--hl-string)}.lesson-content svg .bo{fill:color-mix(in srgb,var(--hl-number) 16%,var(--surface));stroke:var(--hl-number)}.lesson-content svg .bp{fill:color-mix(in srgb,var(--hl-type) 16%,var(--surface));stroke:var(--hl-type)}.lesson-content svg .br{fill:color-mix(in srgb,var(--devops-ink) 16%,var(--surface));stroke:var(--devops-ink)}.lesson-content svg :is(.ln,.ln2,.lnr,.lnd){fill:none;stroke:var(--text-2);stroke-width:2}.lesson-content svg .ln{marker-end:url(#ah)}.lesson-content svg .ln2{marker-start:url(#ah);marker-end:url(#ah)}.lesson-content svg .lnr{stroke:var(--devops-ink);stroke-dasharray:6 5}.lesson-content svg .lnd{stroke-dasharray:6 5;marker-start:url(#ah);marker-end:url(#ah)}.lesson-content svg .vl{stroke:var(--border-strong);stroke-width:3}.lesson-content svg .ahp{fill:var(--text-2)}.lesson-content details.iv-qa{max-width:68ch;margin:0 0 var(--sp-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.lesson-content details.iv-qa>summary{display:flex;gap:var(--sp-3);align-items:baseline;min-height:44px;padding:var(--sp-3) var(--sp-4);cursor:pointer;list-style:none;color:var(--text);font-family:var(--font-ui);font-size:var(--fs-base);font-weight:600;line-height:1.4}.lesson-content details.iv-qa>summary::-webkit-details-marker{display:none}.lesson-content details.iv-qa>summary::after{content:"";flex-shrink:0;align-self:center;margin:0 2px 0 auto;width:7px;height:7px;border-right:1.5px solid var(--text-2);border-bottom:1.5px solid var(--text-2);transform:rotate(45deg);transition:transform var(--t-fast)}.lesson-content details.iv-qa[open]>summary::after{transform:rotate(-135deg)}.lesson-content details.iv-qa>summary:hover{background:var(--surface-hover);border-radius:var(--r-md)}.lesson-content details.iv-qa[open]>summary{border-bottom:1px solid var(--border);border-radius:var(--r-md) var(--r-md) 0 0}.lesson-content .iv-qa-n{flex-shrink:0;min-width:2ch;color:var(--text-2);font-variant-numeric:tabular-nums;font-weight:500}.lesson-content .iv-qa-body{padding:var(--sp-4) var(--sp-4) var(--sp-1)}.lesson-content .iv-qa-body p{text-align:start}.lesson-content .iv-qa-body>:last-child{margin-bottom:var(--sp-3)}.lesson-content .iv-qa-label{margin:var(--sp-4) 0 var(--sp-2);color:var(--text-2);font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.lesson-content .iv-qa-body>.iv-qa-label:first-child{margin-top:0}@media (max-width:620px){.lesson-content details.iv-qa>summary{padding:var(--sp-3);gap:var(--sp-2)}.lesson-content .iv-qa-body{padding:var(--sp-3) var(--sp-3) var(--sp-1)}}.skip-link{position:fixed;left:var(--sp-3);top:-100px;z-index:50;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);background:var(--primary-bg);color:var(--primary-ink);text-decoration:none}.skip-link:focus-visible{top:var(--sp-3)}main.wrap:focus{outline:none}.end-scene{position:relative;isolation:isolate;height:114px;margin-top:var(--sp-6);overflow:hidden;pointer-events:none;background:var(--sky-far);--tx:-225px;animation:tunnel-run 20s linear infinite;-webkit-mask-image:linear-gradient(90deg,transparent calc(var(--tx) - 750px),var(--text) calc(var(--tx) - 420px),var(--text) calc(var(--tx) + 45px),transparent calc(var(--tx) + 180px));mask-image:linear-gradient(90deg,transparent calc(var(--tx) - 750px),var(--text) calc(var(--tx) - 420px),var(--text) calc(var(--tx) + 45px),transparent calc(var(--tx) + 180px))}.end-scene svg{position:absolute;display:block;shape-rendering:crispEdges}.end-wall{left:0;top:0;z-index:0}.end-floor{left:0;bottom:0;z-index:1}.end-vault,.end-bed{fill:var(--sky-near)}.end-track,.end-sleeper{fill:var(--rail)}.end-lamp-case{fill:var(--train)}.end-lamp{fill:var(--win-warm)}.end-train{bottom:15px;left:calc(var(--tx) - 306px);width:306px;height:30px;z-index:2}.end-win,.end-head{fill:var(--win-warm)}.end-glow{fill:var(--win-warm);opacity:.35}.end-tail{fill:var(--beacon)}:root[data-theme="light"] .end-glow{opacity:.6}@keyframes tunnel-run{0%,10%{--tx:-225px}90%,100%{--tx:calc(100% + 750px)}}@media (max-width:620px){.end-scene{height:102px}}.site-foot{--foot-head:var(--text-2);--foot-link:var(--text-3);--foot-hover:var(--text-2);margin-top:var(--sp-8);background:var(--sky-near);font-size:var(--fs-sm);line-height:1.45}:root[data-theme="light"] .site-foot{--foot-head:var(--text);--foot-link:var(--text-body);--foot-hover:var(--text)}.end-scene + .site-foot{margin-top:0}.site-foot .wrap{padding-top:var(--sp-10);padding-bottom:var(--sp-6)}.foot-grid{display:grid;gap:var(--sp-8) var(--sp-6);grid-template-columns:minmax(0,1.5fr) repeat(4,minmax(0,1fr))}.foot-mark{display:inline-block;color:var(--text);line-height:0}.foot-mark svg{display:block;width:76px;height:36px;fill:currentColor;shape-rendering:crispEdges}.foot-role{margin:var(--sp-3) 0 var(--sp-4);color:var(--foot-link)}.foot-contacts,.foot-col ul,.foot-legal{list-style:none;margin:0;padding:0}.foot-contacts{display:grid;gap:var(--sp-1);justify-items:start}.foot-contacts a,.foot-col a,.foot-legal a{color:var(--foot-link);text-decoration:none}.foot-contacts a:hover,.foot-col a:hover,.foot-legal a:hover{color:var(--foot-hover);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.foot-contacts a{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0}.foot-ico{display:inline-flex}.foot-ico svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.foot-col h2{margin:0 0 var(--sp-2);font:600 var(--fs-xs)/1.3 var(--font-ui);letter-spacing:.02em;color:var(--foot-head)}.foot-col a{display:inline-block;padding:var(--sp-1) 0}.foot-note{padding:var(--sp-1) 0;color:var(--foot-link)}.foot-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-2) var(--sp-6);margin-top:var(--sp-8);padding-top:var(--sp-4);border-top:1px solid color-mix(in srgb,var(--text) 16%,transparent);font-size:var(--fs-xs);color:var(--foot-link)}.foot-copy{margin:0}.foot-legal{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-5)}.site-foot :is(a,li){overflow-wrap:anywhere}@media (max-width:900px){.foot-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.foot-brand{grid-column:1 / -1}}@media (max-width:620px){.foot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-6) var(--sp-4)}.foot-mark svg{width:57px;height:27px}.site-foot{margin-bottom:calc(-1 * (var(--dock-h) + env(safe-area-inset-bottom,0px)))}.site-foot .wrap{padding-top:var(--sp-8);padding-bottom:calc(var(--sp-6) + var(--dock-h) + env(safe-area-inset-bottom,0px))}.foot-bottom{flex-direction:column}}