@font-face{font-family:IRANSansWeb;src:url(/Fonts/IRANSansWeb/IRANSansWeb_Light.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:IRANSansWeb;src:url(/Fonts/IRANSansWeb/IRANSansWeb.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IRANSansWeb;src:url(/Fonts/IRANSansWeb/IRANSansWeb_Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IRANSansWeb;src:url(/Fonts/IRANSansWeb/IRANSansWeb_Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IRANSansWeb;src:url(/Fonts/IRANSansWeb/IRANSansWeb_Black.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}:root{--color-primary: #1966ab;--color-primary-strong: #124f86;--color-primary-soft: #e6f0f9;--color-ink: #0c2540;--color-background: #ffffff;--color-surface: #f4f8fc;--color-surface-2: #e9f0f7;--color-text: #14202e;--color-muted: #5d6b7a;--color-border: #dbe5ef;--color-success: #12744a;--color-warning: #a35200;--c-exercise: #1966ab;--c-project: #0d8a79;--c-workshop: #c47a0a;--c-exam: #b33a5b;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 22px;--container-width: 1180px;--font-fa: "IRANSansWeb", "Vazirmatn", "IBM Plex Sans Arabic", "Segoe UI", Tahoma, sans-serif;--font-latin: "IRANSansWeb", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--shadow-sm: 0 1px 2px rgb(12 37 64 / .06);--shadow-md: 0 10px 30px -12px rgb(12 37 64 / .25)}[data-theme=dark]{--color-primary: #62a6e6;--color-primary-strong: #8cc0f0;--color-primary-soft: #14263a;--color-ink: #07111d;--color-background: #0d141c;--color-surface: #131c26;--color-surface-2: #1b2733;--color-text: #e7edf3;--color-muted: #98a6b5;--color-border: #263341;--c-exercise: #62a6e6;--c-project: #3cc4ae;--c-workshop: #e8a43a;--c-exam: #e8718f;--shadow-sm: 0 1px 2px rgb(0 0 0 / .3);--shadow-md: 0 10px 30px -12px rgb(0 0 0 / .6)}*{box-sizing:border-box}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}body{margin:0;font-family:var(--font-fa);background:var(--color-background);color:var(--color-text);line-height:1.9;-webkit-font-smoothing:antialiased}.ltr,code,pre,.mono{direction:ltr;unicode-bidi:embed;font-family:var(--font-mono)}.latin{font-family:var(--font-latin);direction:ltr;unicode-bidi:embed}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:4px}h1,h2,h3,h4{line-height:1.45;margin:0 0 .5em;font-weight:700;letter-spacing:0}h1{font-size:clamp(1.9rem,4.2vw,3rem);font-weight:800}h2{font-size:clamp(1.4rem,2.6vw,1.85rem)}h3{font-size:1.12rem}p{margin:0 0 1em}.muted,small{color:var(--color-muted)}.container{max-width:var(--container-width);margin-inline:auto;padding-inline:1.25rem}.section{padding-block:3.5rem}.section-sm{padding-block:1.75rem}.band{background:var(--color-surface);border-block:1px solid var(--color-border)}.skip-link{position:absolute;inset-inline-start:1rem;top:-100px;z-index:100;background:var(--color-primary);color:#fff;padding:.5rem 1rem;border-radius:var(--radius-sm)}.skip-link:focus{top:.5rem}.navbar{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--color-background) 90%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--color-border)}.navbar-inner{display:flex;align-items:center;gap:1rem;height:64px}.brand{display:flex;align-items:center;gap:.65rem;font-weight:800;color:var(--color-text)}.brand:hover{text-decoration:none}.brand-logo{width:38px;height:38px;border-radius:11px;object-fit:cover;flex:none;background:var(--color-surface-2)}.brand small{display:block;font-weight:400;color:var(--color-muted);font-size:.7rem;line-height:1.3}.nav-links{display:flex;gap:.1rem;margin-inline-start:auto;align-items:center}.nav-links a{color:var(--color-text);padding:.4rem .65rem;border-radius:var(--radius-sm);font-size:.88rem;white-space:nowrap}.nav-links a:hover{background:var(--color-surface-2);text-decoration:none}.nav-links a[aria-current=page]{color:var(--color-primary);font-weight:700;box-shadow:inset 0 -2px 0 var(--color-primary);border-radius:0}.nav-actions{display:flex;gap:.5rem;align-items:center}.menu-btn{display:none}@media(max-width:1100px){.nav-links{display:none}.nav-actions{margin-inline-start:auto}.nav-links.open{display:flex;flex-direction:column;align-items:stretch;position:absolute;inset-inline:0;top:64px;background:var(--color-background);border-bottom:1px solid var(--color-border);padding:.75rem 1.25rem 1rem}.menu-btn{display:inline-flex}.nav-cta-github span.full{display:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.6rem 1.2rem;border-radius:var(--radius-md);font-weight:700;font-size:.93rem;border:1px solid transparent;cursor:pointer;min-height:44px;transition:background .15s,border-color .15s;font-family:inherit}.btn:hover{text-decoration:none}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-strong)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover{background:var(--color-surface-2)}.btn-ghost{background:transparent;color:var(--color-text);border-color:var(--color-border);min-height:38px;padding:.3rem .85rem}.btn-sm{min-height:36px;padding:.25rem .8rem;font-size:.84rem}.btn[aria-disabled=true]{opacity:.45;pointer-events:none}.icon-btn{background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);width:38px;height:38px;display:inline-grid;place-items:center;cursor:pointer;color:var(--color-text)}.hero{background:radial-gradient(900px 400px at 85% 10%,#1b5f9d55,transparent 60%),var(--color-ink);color:#eaf2fa;padding-block:4.5rem 4rem;overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:3rem;align-items:center}@media(max-width:900px){.hero-grid{grid-template-columns:1fr}.hero{padding-block:2.5rem}}.hero h1{color:#fff;margin:.9rem 0 1rem;line-height:1.35}.hero h1 em{font-style:normal;color:#8cc6ff;display:block}.hero p.lead{color:#bcd0e4;font-size:1.08rem;max-width:54ch}.hero .badge-hero{display:inline-flex;gap:.5rem;align-items:center;padding:.25rem .8rem;border:1px solid #ffffff2e;border-radius:999px;font-size:.8rem;color:#cfe2f5}.hero-cta{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.5rem}.hero .btn-primary{background:#fff;color:var(--color-ink)}.hero .btn-primary:hover{background:#dcecfb}.hero .btn-secondary{background:transparent;color:#fff;border-color:#ffffff40}.hero .btn-secondary:hover{background:#ffffff14}.hero-meta{display:flex;gap:1.25rem;flex-wrap:wrap;margin-top:1.5rem;font-size:.85rem;color:#93aac1}.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media(max-width:900px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}@media(min-width:901px)and (max-width:1150px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}.card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-background);padding:1.25rem;transition:border-color .15s,box-shadow .15s;display:block;color:var(--color-text)}a.card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);text-decoration:none}.card h3{margin-bottom:.35rem}.card p{color:var(--color-muted);font-size:.93rem}.card-accent{border-inline-start:4px solid var(--tc, var(--color-primary))}.badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:700;padding:.12rem .6rem;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);white-space:nowrap}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary);border-color:transparent}.badge-success{background:#e2f4ea;color:var(--color-success);border-color:transparent}.badge-warning{background:#fdeccb;color:var(--color-warning);border-color:transparent}.badge-muted{background:var(--color-surface-2);color:var(--color-muted)}.badge-type{background:color-mix(in srgb,var(--tc) 14%,transparent);color:var(--tc);border-color:transparent}[data-theme=dark] .badge-success{background:#123524;color:#6fdc8c}[data-theme=dark] .badge-warning{background:#3a2a10;color:#f5c86b}.meta-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;font-size:.82rem;color:var(--color-muted);margin-top:.75rem}.card-link{display:inline-flex;align-items:center;gap:.3rem;margin-top:.75rem;font-weight:700;font-size:.9rem}.row-between{display:flex;gap:.5rem;align-items:center;justify-content:space-between}.section-head{margin-bottom:1.5rem;max-width:72ch}.section-head .kicker{color:var(--color-primary);font-weight:700;font-size:.88rem}.section-head h2{margin:.15rem 0 .4rem}.section-head p{color:var(--color-muted);margin:0}.timeline{display:grid;grid-template-columns:repeat(6,1fr);gap:0;border-top:2px solid var(--color-primary)}@media(max-width:900px){.timeline{grid-template-columns:1fr;border-top:0;border-inline-start:2px solid var(--color-primary)}}.timeline-step{padding:1rem 1rem 0 .5rem;position:relative}.timeline-step:before{content:"";position:absolute;top:-7px;inset-inline-start:0;width:12px;height:12px;border-radius:50%;background:var(--color-background);border:3px solid var(--color-primary)}@media(max-width:900px){.timeline-step{padding:0 1.25rem 1.25rem}.timeline-step:before{top:6px;inset-inline-start:-7px}}.timeline-step .step-no{font-family:var(--font-mono);font-weight:700;color:var(--color-primary);font-size:.8rem}.tl-filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.5rem;align-items:center}.tl-month{margin:2.2rem 0 .8rem;font-size:1.05rem;color:var(--color-muted);font-weight:700;display:flex;gap:.75rem;align-items:center}.tl-month:after{content:"";flex:1;height:1px;background:var(--color-border)}.tl-list{position:relative;margin:0;padding:0;list-style:none}.tl-item{display:grid;grid-template-columns:92px 1fr;gap:1rem;padding-bottom:1rem;position:relative}.tl-date{text-align:end;padding-top:.75rem;line-height:1.5}.tl-date b{display:block;font-size:1.05rem}.tl-date small{font-size:.75rem}.tl-card{position:relative;border:1px solid var(--color-border);border-inline-start:4px solid var(--tc);border-radius:var(--radius-md);padding:.85rem 1.1rem;background:var(--color-background);color:var(--color-text);display:block}a.tl-card:hover{text-decoration:none;border-color:var(--tc);box-shadow:var(--shadow-md)}.tl-card h3{margin:.25rem 0 .1rem;font-size:1rem}.tl-card p{margin:0;font-size:.86rem;color:var(--color-muted)}.tl-item.past .tl-card{opacity:.6}.tl-item.next .tl-card{box-shadow:0 0 0 2px var(--tc)}.tl-today{display:flex;align-items:center;gap:.6rem;margin:.4rem 0 1.1rem;color:var(--color-danger, #c1292e);font-weight:700;font-size:.85rem}.tl-today:before,.tl-today:after{content:"";height:2px;background:currentColor;flex:1;opacity:.5}@media(max-width:600px){.tl-item{grid-template-columns:1fr;gap:.2rem}.tl-date{text-align:start;padding:0;display:flex;gap:.5rem;align-items:baseline}}.mini-cal{display:flex;gap:.5rem;flex-wrap:wrap}.announce-banner{border:1px solid var(--color-border);border-inline-start:4px solid var(--color-primary);background:var(--color-surface);border-radius:var(--radius-md);padding:1rem 1.25rem;display:flex;gap:1rem;align-items:center;justify-content:space-between;flex-wrap:wrap}.related-box{border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:1rem 1.25rem;background:var(--color-surface);margin-top:1.5rem}.related-box h3{font-size:1rem;margin-bottom:.6rem}.related-box a.rel{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-top:1px solid var(--color-border);color:var(--color-text)}.related-box a.rel:first-of-type{border-top:0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}@media(max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}}.stat{border-inline-start:3px solid var(--color-primary);padding:.3rem 1rem}.stat strong{display:block;font-size:1.7rem;font-family:var(--font-mono);line-height:1.4}.stat span{color:var(--color-muted);font-size:.85rem}.grade-bars{display:grid;gap:.9rem}.grade-row{display:grid;grid-template-columns:170px 1fr 90px;gap:1rem;align-items:center}@media(max-width:700px){.grade-row{grid-template-columns:1fr;gap:.3rem}}.bar{display:flex;height:16px;border-radius:99px;overflow:hidden;background:var(--color-surface-2);direction:ltr}.bar i{display:block;height:100%}.bar .base{background:var(--color-primary)}.bar .bonus{background:repeating-linear-gradient(135deg,var(--c-workshop) 0 6px,color-mix(in srgb,var(--c-workshop) 60%,#fff) 6px 12px)}.avatar{width:84px;height:84px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:linear-gradient(145deg,var(--color-primary),var(--color-ink));color:#fff;font-weight:800;font-size:1.6rem;flex:none}.person{display:flex;gap:1.1rem;align-items:flex-start}.person.big{flex-direction:column;align-items:center;text-align:center}.person.big .avatar{width:112px;height:112px;font-size:2.2rem}.person h3{margin:0}.chips{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.6rem}.contact-links{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.8rem}.contact-links a{font-size:.8rem;border:1px solid var(--color-border);border-radius:99px;padding:.1rem .7rem;color:var(--color-text);background:var(--color-surface)}.contact-links a:hover{border-color:var(--color-primary);text-decoration:none}.dl{display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1.2rem;margin:0;font-size:.93rem}.dl dt{color:var(--color-muted)}.dl dd{margin:0}.slide-card{display:grid;grid-template-columns:1fr auto;gap:1.5rem;align-items:center}@media(max-width:700px){.slide-card{grid-template-columns:1fr}}.slide-no{font-family:var(--font-mono);color:var(--color-primary);font-weight:700;font-size:.85rem}.fmt-row{display:flex;gap:.5rem;flex-wrap:wrap}.slide-frame{width:100%;aspect-ratio:16/9;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md)}table{width:100%;border-collapse:collapse;font-size:.93rem;min-width:560px}th,td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border);text-align:start}th{background:var(--color-surface);font-size:.85rem;color:var(--color-muted)}tr:last-child td{border-bottom:none}.prose{max-width:76ch}.prose h2{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--color-border)}.prose ul,.prose ol{padding-inline-start:1.4rem}.prose li{margin-bottom:.4rem}.prose pre{direction:ltr;text-align:left;background:#0c1624;color:#e6edf3;padding:1rem;border-radius:var(--radius-md);overflow-x:auto;font-size:.85rem;line-height:1.7}.prose code{font-size:.87em;background:var(--color-surface-2);padding:.1em .35em;border-radius:6px}.prose pre code{background:transparent;padding:0}.prose blockquote{border-inline-start:3px solid var(--color-primary);margin:1rem 0;padding:.5rem 1rem;background:var(--color-surface);border-radius:var(--radius-sm)}.page-head{background:var(--color-surface);border-bottom:1px solid var(--color-border)}.page-head .container{padding-block:1.75rem 1.5rem}.page-head h1{font-size:clamp(1.7rem,3.4vw,2.3rem);margin-bottom:.3rem}.breadcrumbs{font-size:.85rem;color:var(--color-muted);display:flex;gap:.5rem;align-items:center;margin-bottom:.8rem}.breadcrumbs a{color:var(--color-muted)}.footer{background:var(--color-ink);color:#b6c8da;margin-top:4rem;padding-block:2.5rem 1.5rem}.footer strong{color:#fff}.footer .muted{color:#8fa5bb}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2rem}@media(max-width:900px){.footer-grid{grid-template-columns:1fr}}.footer nav{display:flex;flex-direction:column;gap:.4rem}.footer nav a{color:#b6c8da;font-size:.92rem}.footer-bottom{margin-top:2rem;padding-top:1rem;border-top:1px solid #ffffff1f;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.82rem;color:#8fa5bb}.empty{border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:2rem;text-align:center;color:var(--color-muted);background:var(--color-surface)}.filter-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.25rem}.filter-btn{border:1px solid var(--color-border);background:var(--color-background);color:var(--color-text);border-radius:999px;padding:.3rem .9rem;font-size:.85rem;cursor:pointer;font-family:inherit}.filter-btn[aria-pressed=true]{background:var(--color-primary);border-color:var(--color-primary);color:#fff}
