.progress-dashboard{margin-block:var(--space-6) var(--space-7)}.progress-dashboard__title{margin-block:0 var(--space-4)}.progress-summary{gap:var(--space-5);padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:grid}.progress-summary__percent{font-size:var(--text-3xl);font-weight:800;line-height:var(--leading-tight);color:var(--color-primary);margin:0}.progress-summary__count{margin:var(--space-1) 0 var(--space-3);color:var(--color-muted)}.progress-bar{background:var(--color-surface-muted);border-radius:var(--radius-full);block-size:.75rem;overflow:hidden}.progress-bar__fill{background:linear-gradient(to left, var(--color-primary), var(--color-secondary));border-radius:inherit;block-size:100%;transition:inline-size var(--duration-base) var(--easing);display:block}.progress-summary__stats{gap:var(--space-3);grid-template-columns:repeat(2,1fr);margin:0;display:grid}.progress-summary__stats>div{padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);border-radius:var(--radius-md)}.progress-summary__stats dt{color:var(--color-muted);font-size:var(--text-sm)}.progress-summary__stats dd{font-size:var(--text-xl);margin:0;font-weight:700}.progress-summary__stats dd.progress-summary__next{font-size:var(--text-base);font-weight:600}.progress-summary__stats>div:last-child{grid-column:1/-1}.progress-group{margin-block-start:var(--space-6)}.progress-group__title{align-items:center;gap:var(--space-2);margin-block:0 var(--space-3);display:flex}.progress-group__count{min-inline-size:1.75rem;padding-inline:var(--space-2);border-radius:var(--radius-full);font-size:var(--text-sm);background:var(--color-primary-soft);color:var(--color-primary);place-items:center;display:inline-grid}.progress-group--submitted .progress-group__count{background:var(--color-success-soft);color:var(--color-success)}.progress-group__empty{color:var(--color-muted);margin:0}.progress-list{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));margin:0;padding:0;list-style:none;display:grid}.progress-item{--item-accent:var(--color-primary);gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-inline-start:5px solid var(--item-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);align-items:flex-start;display:flex}.progress-item--final{--item-accent:var(--color-secondary);background:var(--color-secondary-soft);grid-column:1/-1}.progress-item--soon{--item-accent:var(--color-warning)}.progress-item--overdue{--item-accent:var(--color-danger)}.progress-item__badge{border-radius:var(--radius-full);background:var(--item-accent);block-size:2.25rem;inline-size:2.25rem;color:var(--color-primary-contrast);flex:none;place-items:center;font-weight:700;display:grid}.progress-item__body{min-inline-size:0}.progress-item__title{margin:0 0 var(--space-2);font-size:var(--text-lg)}.progress-item__title a{text-decoration:none}.progress-item__title a:hover{text-decoration:underline}.progress-item__meta{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-muted);flex-wrap:wrap;margin:0;display:flex}.status-chip,.deadline-flag{padding:0 var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);white-space:nowrap;font-weight:600}.status-chip{background:var(--color-surface-muted);color:var(--color-muted)}.status-chip--in_progress{background:var(--color-primary-soft);color:var(--color-primary)}.status-chip--ready{background:var(--color-secondary-soft);color:var(--color-secondary)}.deadline-flag{background:var(--color-warning-soft);color:var(--color-warning)}.progress-item--overdue .deadline-flag{background:var(--color-danger-soft);color:var(--color-danger)}.submitted-list{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.submitted-chip{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--color-success-soft);color:var(--color-success);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:600;display:inline-flex}.submitted-chip a{color:inherit}.submitted-chip__check{font-weight:800}@media (width>=48rem){.progress-summary{grid-template-columns:1fr 1.2fr;align-items:center}}@media print{.progress-summary,.progress-item{box-shadow:none;break-inside:avoid}}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/heebo-hebrew-400-normal-CVTJgQVK.woff2)format("woff2"),url(/assets/heebo-hebrew-400-normal-DoqplqF9.woff)format("woff")}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/heebo-hebrew-600-normal-CGRgQ0cj.woff2)format("woff2"),url(/assets/heebo-hebrew-600-normal-OHUSVRAa.woff)format("woff")}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/heebo-hebrew-700-normal-BmueYKsA.woff2)format("woff2"),url(/assets/heebo-hebrew-700-normal-C-m02vPD.woff)format("woff")}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/heebo-hebrew-800-normal-CDdwy3LD.woff2)format("woff2"),url(/assets/heebo-hebrew-800-normal-DvzqWKY1.woff)format("woff")}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/heebo-latin-400-normal-BGyEuwIV.woff2)format("woff2"),url(/assets/heebo-latin-400-normal-BVgBBEsj.woff)format("woff")}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/heebo-latin-600-normal-C0GLQ-RT.woff2)format("woff2"),url(/assets/heebo-latin-600-normal-2W86uxnp.woff)format("woff")}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/heebo-latin-700-normal-PoyjiH5f.woff2)format("woff2"),url(/assets/heebo-latin-700-normal-DxB9_ClD.woff)format("woff")}@font-face{font-family:Heebo;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/heebo-latin-800-normal-CXX3wFtI.woff2)format("woff2"),url(/assets/heebo-latin-800-normal-jzg0ZXtx.woff)format("woff")}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fira-code-latin-400-normal-DGosTW8U.woff2)format("woff2"),url(/assets/fira-code-latin-400-normal-C-QZfXAs.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--font-sans:"Heebo", "Assistant", "Segoe UI", "Arial Hebrew", Arial, sans-serif;--font-mono:"Fira Code", ui-monospace, "Cascadia Code", Consolas, monospace;--text-xs:.8125rem;--text-sm:.9375rem;--text-base:1.0625rem;--text-lg:1.25rem;--text-xl:1.5rem;--text-2xl:1.875rem;--text-3xl:2.375rem;--leading-tight:1.25;--leading-normal:1.7;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-full:999px;--duration-fast:.12s;--duration-base:.2s;--easing:cubic-bezier(.2, 0, 0, 1);--color-bg:#f7f8fc;--color-surface:#fff;--color-surface-muted:#eef0f8;--color-text:#1f2333;--color-muted:#4b5266;--color-border:#d9dcea;--color-primary:#4338ca;--color-primary-contrast:#fff;--color-primary-soft:#eceafd;--color-secondary:#0e7490;--color-secondary-soft:#e0f4f8;--color-success:#166534;--color-success-soft:#e6f6ec;--color-warning:#b45309;--color-warning-soft:#fff4e0;--color-danger:#b91c1c;--color-danger-soft:#fdeaea;--color-code-bg:#1b1f33;--color-code-text:#e8eaf3;--color-code-comment:#9aa3c0;--color-code-keyword:#c4b5fd;--color-code-string:#86efac;--color-code-number:#fcd34d;--color-focus:#4338ca;--shadow-sm:0 1px 2px #1f23330f;--shadow-md:0 4px 16px #1f23331a;--shadow-lg:0 12px 32px #1f233324}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--color-bg:#0f1220;--color-surface:#181c2e;--color-surface-muted:#20253b;--color-text:#e8eaf3;--color-muted:#a8afc4;--color-border:#2f3652;--color-primary:#a5b4fc;--color-primary-contrast:#0f1220;--color-primary-soft:#232a52;--color-secondary:#67e8f9;--color-secondary-soft:#123640;--color-success:#4ade80;--color-success-soft:#14301f;--color-warning:#fbbf24;--color-warning-soft:#3a2a0c;--color-danger:#f87171;--color-danger-soft:#3b1717;--color-focus:#a5b4fc;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 16px #00000073;--shadow-lg:0 12px 32px #0000008c}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration-base:0s}}.page-header{border-block-end:2px solid var(--color-primary);margin-block-end:var(--space-5);padding-block-end:var(--space-5)}.page-header__eyebrow{color:var(--color-primary);font-weight:600;font-size:var(--text-sm);margin:0}.page-header__title{margin-block:var(--space-1) var(--space-2)}.page-header__description{color:var(--color-muted);font-size:var(--text-lg);margin:0}.page-header__meta{gap:var(--space-2) var(--space-5);margin:var(--space-3) 0 0;color:var(--color-muted);font-size:var(--text-sm);flex-wrap:wrap;padding:0;list-style:none;display:flex}.callout{--callout-accent:var(--color-primary);--callout-soft:var(--color-primary-soft);margin-block:var(--space-5);padding:var(--space-4) var(--space-5);background:var(--callout-soft);border-inline-start:5px solid var(--callout-accent);border-radius:var(--radius-md);break-inside:avoid}.callout--tip{--callout-accent:var(--color-success);--callout-soft:var(--color-success-soft)}.callout--mistake{--callout-accent:var(--color-danger);--callout-soft:var(--color-danger-soft)}.callout__title{align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);color:var(--callout-accent);font-size:var(--text-base);font-weight:700;display:flex}.callout__body>:first-child{margin-block-start:0}.callout__body>:last-child{margin-block-end:0}.code-block{margin-block:var(--space-5);background:var(--color-code-bg);color:var(--color-code-text);border-radius:var(--radius-md);break-inside:avoid;overflow:hidden}.code-block__caption{padding:var(--space-2) var(--space-4);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-code-comment);text-align:left;border-block-end:1px solid #ffffff1f}.code-block__pre{padding:var(--space-4);font-family:var(--font-mono);font-size:var(--text-sm);text-align:left;tab-size:2;margin:0;line-height:1.6;overflow-x:auto}.code-block__pre:focus-visible{outline-offset:-3px}.tok-comment{color:var(--color-code-comment);font-style:italic}.tok-keyword{color:var(--color-code-keyword)}.tok-string{color:var(--color-code-string)}.tok-number{color:var(--color-code-number)}code.inline{font-family:var(--font-mono);background:var(--color-surface-muted);border-radius:var(--radius-sm);direction:ltr;unicode-bidi:isolate;padding:.1em .35em;font-size:.9em}.step-list{gap:var(--space-4);counter-reset:step;margin:0;padding:0;list-style:none;display:grid}.step-card{gap:var(--space-4);padding:var(--space-4) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);break-inside:avoid;grid-template-columns:auto 1fr;display:grid}.step-card__number{border-radius:var(--radius-full);background:var(--color-primary);width:2.5rem;height:2.5rem;color:var(--color-primary-contrast);place-items:center;font-weight:700;display:grid}.step-card__title{margin:0 0 var(--space-2);font-size:var(--text-lg)}.step-card__body>:first-child{margin-block-start:0}.step-card__body>:last-child{margin-block-end:0}.review-questions{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.review-question{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);break-inside:avoid}.review-question__toggle{justify-content:space-between;align-items:center;gap:var(--space-4);width:100%;padding:var(--space-4) var(--space-5);border-radius:inherit;color:var(--color-text);font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;font-weight:600;display:flex}.review-question__toggle:hover{background:var(--color-surface-muted)}.review-question__chevron{color:var(--color-primary);transition:transform var(--duration-base) var(--easing);flex:none}.review-question__toggle[aria-expanded=true] .review-question__chevron{transform:rotate(180deg)}.review-question__answer{padding:0 var(--space-5) var(--space-4);color:var(--color-muted);margin:0}.assignment-section{margin-block:var(--space-7)}.assignment-section>h2{border-block-end:1px solid var(--color-border);margin-block-start:0;padding-block-end:var(--space-2)}.assignment-summary{padding:var(--space-5);background:var(--color-primary-soft);border-radius:var(--radius-md);font-size:var(--text-lg)}.assignment-summary>h2{font-size:var(--text-lg);color:var(--color-primary);border:0;margin-block-start:0}.assignment-summary>:last-child{margin-block-end:0}.chart-frame{margin-block:var(--space-4);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);break-inside:avoid}.chart-frame figcaption{color:var(--color-muted);font-size:var(--text-sm);text-align:center;margin-block-start:var(--space-2)}.swatches{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));display:grid}.swatch{border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-xs);background:var(--color-surface);overflow:hidden}.swatch__color{height:3rem}.swatch__label{padding:var(--space-2) var(--space-3);text-align:left;font-family:var(--font-mono);direction:ltr}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.cover-page{display:none}@media print{.cover-page{display:flex}}.stat-grid{gap:var(--space-3);margin:0 0 var(--space-4);grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));display:grid}.stat{padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);break-inside:avoid}.stat dt{color:var(--color-muted);font-size:var(--text-sm)}.stat dd{font-size:var(--text-xl);color:var(--color-primary);font-variant-numeric:tabular-nums;margin:0;font-weight:700}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;background:var(--color-surface);font-variant-numeric:tabular-nums;width:100%}.data-table caption{color:var(--color-muted);font-size:var(--text-sm);text-align:start;margin-block-end:var(--space-2)}.data-table th,.data-table td{padding:var(--space-2) var(--space-3);border-block-end:1px solid var(--color-border);text-align:start}.data-table th{background:var(--color-surface-muted);font-weight:600}.assignment-card__number{color:var(--color-primary);font-size:var(--text-sm);margin:0;font-weight:600}.assignment-card__due{color:var(--color-muted);font-size:var(--text-sm);margin:0}@page{size:A4;margin:18mm 16mm}@media print{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#fff;--color-surface:#fff;--color-text:#111;--color-muted:#3d4254;--color-border:#b9bdcc;--color-primary:#3730a3;--color-primary-soft:#eeeefb;--color-success:#15803d;--color-success-soft:#eaf6ee;--color-danger:#b91c1c;--color-danger-soft:#fceeee;--color-surface-muted:#f0f1f6;--color-code-bg:#f4f5fa;--color-code-text:#1b1f33;--color-code-comment:#555c73;--color-code-keyword:#5b21b6;--color-code-string:#166534;--color-code-number:#9a3412;--shadow-sm:none;--shadow-md:none}body{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;font-size:11pt}.app-header nav,.app-footer,.no-print{display:none!important}.app-header{padding:0 0 var(--space-3);border:0}.app-main{max-width:none;padding:0}h1,h2,h3,h4{break-after:avoid}.assignment-section{margin-block:var(--space-5)}.code-block{border:1px solid var(--color-border)}.code-block__pre{white-space:pre-wrap;overflow:visible}a{color:inherit;text-decoration:none}.review-question__answer[hidden]{display:block!important}.review-question__chevron{display:none}.cover-page{justify-content:center;gap:var(--space-4);min-height:255mm;padding-inline:var(--space-6);border-inline-start:8px solid var(--color-primary);break-after:page;flex-direction:column;display:flex}.cover-page__title{margin:0;font-size:32pt}.cover-page__meta{gap:var(--space-2) var(--space-5);grid-template-columns:max-content 1fr;margin-block-start:var(--space-6);font-size:13pt;display:grid}.cover-page__meta dt{color:var(--color-muted)}.cover-page__meta dd{margin:0;font-weight:600}}:root{font-family:var(--font-sans);font-size:100%;line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg)}*,:before,:after{box-sizing:border-box}body{font-size:var(--text-base);margin:0}h1,h2,h3,h4{line-height:var(--leading-tight);margin-block:var(--space-6) var(--space-3);text-wrap:balance}h1{font-size:var(--text-3xl);font-weight:800}h2{font-size:var(--text-2xl);font-weight:700}h3{font-size:var(--text-xl);font-weight:600}h4{font-size:var(--text-lg);font-weight:600}a{color:var(--color-primary)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);background:var(--color-surface);border-block-end:1px solid var(--color-border);flex-wrap:wrap;display:flex}.app-title{font-size:var(--text-lg);font-weight:700}.nav-list{gap:var(--space-5);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.nav-list a{color:var(--color-muted);text-decoration:none}.nav-list a.active{color:var(--color-primary);font-weight:600}.app-main{width:100%;max-width:60rem;padding:var(--space-5) var(--space-4) var(--space-7);flex:1;margin-inline:auto}.app-footer{padding:var(--space-4) var(--space-6);text-align:center;color:var(--color-muted);font-size:var(--text-sm)}.card-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));margin:0;padding:0;list-style:none;display:grid}.card{height:100%;padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:inherit;transition:box-shadow var(--duration-base) var(--easing);text-decoration:none;display:block}.card:hover,.card:focus-visible{box-shadow:var(--shadow-md)}.card h2{font-size:var(--text-xl);color:var(--color-primary);margin-block-start:0}@media (width>=48rem){.app-main{padding:var(--space-6) var(--space-6) var(--space-8)}}
