@keyframes pyb-pop{0%{transform:scale(.2) rotate(-40deg)}70%{transform:scale(1.2) rotate(8deg)}to{transform:scale(1) rotate(0)}}@font-face{font-family:"PyFa";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/vazirmatn-arabic-500.woff2)format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+200C-200E,U+FB50-FDFF,U+FE70-FEFC}.py-facts li,.py-kicker{border-radius:var(--r-pill)}.py-kicker{display:inline-block;margin:0 0 6px;padding:2px 14px;background:rgba(235,205,138,.14);border:1px solid rgba(235,205,138,.4);color:var(--gold-l);font-size:.86rem;font-weight:700}.py-facts{list-style:none;display:flex;flex-wrap:wrap;gap:8px 10px;margin:20px 0 0;padding:0}.py-facts li{display:flex;align-items:baseline;gap:6px;padding:4px 14px;border:1px solid rgba(235,205,138,.35);color:var(--mist);font-size:.92rem;background:rgba(255,255,255,.04)}.py-facts strong{color:var(--gold-l);font-size:1.1rem}.py-hero-sm{padding-bottom:clamp(28px,4vw,48px)}.py{padding-top:clamp(24px,4vw,44px)}.py code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;font-size:.9em;background:#e9edf8;color:#0b3070;border-radius:6px;padding:1px 6px;unicode-bidi:isolate;white-space:nowrap}.py-player{display:flex;align-items:center;gap:12px;background:var(--paper);border:1px solid var(--line-l);border-radius:18px;padding:10px 16px;margin-bottom:22px;box-shadow:0 6px 18px rgba(3,36,83,.05)}.py-player p{margin:0;line-height:1.8;color:var(--ink-2);font-size:.94rem}.py-head-row h2,.py-player strong,.pyb-task strong{color:var(--navy)}.py-player a{color:var(--navy-3);font-weight:700}.py-player-ic{flex:none;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--navy),var(--navy-3));color:var(--gold-l);font-family:var(--font-d);font-size:1.25rem}.py-player.is-in .py-player-ic{background:linear-gradient(135deg,#0d5f41,#1b8a5e);color:#fff}.py-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.py-head-row h2{font-weight:400;font-size:clamp(1.5rem,1.1rem + 1.4vw,2rem)}.py-lessons{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}.py-lesson-card a{display:flex;gap:14px;height:100%;padding:16px;border-radius:20px;background:var(--paper);border:1px solid var(--line-l);text-decoration:none;color:var(--ink);transition:transform .18s ease,box-shadow .18s ease,border-color .18s}.py-lesson-card a:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(3,36,83,.09);border-color:#c9d1e6}.py-head-row h2,.py-num{font-family:var(--font-d)}.py-num{flex:none;width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:var(--navy);color:var(--gold-l);font-size:1.35rem}.py-ch.is-done .py-ch-n,.py-lesson-card.is-done .py-num{background:#1b8a5e;color:#fff}.py-lesson-body{display:flex;flex-direction:column;min-width:0}.py-lesson-title{color:var(--navy);font-weight:800;font-size:1.08rem;line-height:1.6}.py-lesson-sum{color:var(--ink-2);font-size:.9rem;line-height:1.8;margin-top:2px}.py-lesson-meta{margin-top:auto;padding-top:6px;color:#5e6a92;font-size:.83rem}.py-done{display:inline-block;margin-inline-start:8px;padding:0 9px;border-radius:var(--r-pill);background:#e6f4ec;color:#0d5f41;font-weight:700}.py-done[hidden]{display:none}.py-points{margin-top:0}.py-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(18px,3vw,34px);align-items:start}.py-text{min-width:0;font-size:1.02rem}.py-text>p{color:var(--ink);line-height:2}.py-h{color:var(--navy);font-size:1.25rem;font-weight:800;margin:1.6em 0 .6em;line-height:1.6}.py-tip{position:relative;background:#fff7e6;border:1px solid #f0d9a6;border-radius:16px;padding:12px 16px;padding-inline-start:46px;color:#5a3f09;line-height:1.95}.py-tip::before{content:"";position:absolute;inset-inline-start:16px;top:16px;width:18px;height:18px;background:var(--gold);clip-path:var(--star)}.py-list{margin:0 0 1em;padding-inline-start:1.3em;line-height:2}.py-list li::marker{color:var(--gold-d)}.py-example{position:relative;margin:0 0 1.2em;background:var(--night);border-radius:16px;padding:12px 14px;box-shadow:0 8px 20px rgba(1,18,47,.12)}.py-example pre{margin:0;overflow-x:auto;color:#e4e8f6;font:500 .95rem/1.8 ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;text-align:left;padding-bottom:50px}.py-example code{background:0 0;color:inherit;padding:0;font-size:inherit;white-space:pre}.py-try{position:absolute;inset-inline-start:12px;bottom:10px;font:inherit;font-weight:700;font-size:.88rem;min-height:42px;padding:2px 18px;border-radius:var(--r-pill);border:0;background:var(--gold);color:var(--night);cursor:pointer}.py-try:hover{background:var(--gold-l)}.py-try:disabled{opacity:.5;cursor:default}.py-challenges{list-style:none;margin:0;padding:0;display:grid;gap:12px}.py-ch{background:var(--paper);border:1px solid var(--line-l);border-radius:18px;padding:14px 16px}.py-ch.is-active{border-color:var(--gold);box-shadow:0 0 0 3px rgba(205,161,70,.2)}.py-ch-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}.py-ch-head h3{font-size:1.05rem;line-height:1.6;flex:1}.py-ch-head h3,.py-ch-n,.py-pager a{color:var(--navy);font-weight:800}.py-ch-n{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--moon);font-size:.9rem}.py-ch-state{background:#e6f4ec;color:#0d5f41;font-weight:700;font-size:.8rem;border-radius:var(--r-pill);padding:0 10px}.py-ch-state[hidden]{display:none}.py-ch p{margin:0 0 10px;color:var(--ink-2);line-height:1.95}.py-pager{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:28px}.py-pager a{display:flex;flex-direction:column;padding:12px 16px;border-radius:16px;background:var(--paper);border:1px solid var(--line-l);text-decoration:none;line-height:1.7}.py-pager a:hover{border-color:var(--gold)}.py-pager small{color:#5e6a92;font-weight:400}.py-pager-next{text-align:left}.py-back{margin-top:18px}.py-back a{color:var(--navy-3);font-weight:700}.py-noscript{background:var(--paper);border:1px solid var(--line-l);border-radius:14px;padding:14px 18px;color:var(--ink-2)}.py-bench{position:sticky;top:84px;min-width:0}.py-bench-wide{position:static;max-width:1000px;margin-inline:auto}.pyb{background:var(--paper);border:1px solid var(--line-l);border-radius:22px;box-shadow:0 14px 34px rgba(3,36,83,.1);overflow:hidden}.pyb-head,.pyb-title{display:flex;align-items:center}.pyb-head{justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 16px;background:var(--navy);color:#fff}.pyb-title{font-weight:800;line-height:1.6;gap:8px;min-width:0}.pyb-title::before{content:"";flex:none;width:12px;height:12px;background:var(--gold);clip-path:var(--star)}.pyb-head select{font:inherit;font-size:.9rem;background:var(--navy-2);color:#fff;border:1px solid rgba(235,205,138,.5);border-radius:10px;padding:4px 10px;min-height:42px;max-width:100%}.pyb-free{font:inherit;font-size:.86rem;font-weight:700;background:0 0;border:1px solid rgba(235,205,138,.55);color:var(--gold-l);border-radius:var(--r-pill);padding:2px 14px;min-height:40px;cursor:pointer}.pyb-free:hover{background:rgba(235,205,138,.12)}.pyb-task{padding:12px 16px;background:#fff7e6;border-bottom:1px solid #f0d9a6;color:#4a3408;line-height:1.95;font-size:.95rem}.pyb-task code{background:#fff}.pyb-editor{position:relative;display:flex;background:#0b1733;direction:ltr;height:260px}.pyb-gutter{flex:none;width:42px;padding:12px 6px 12px 0;text-align:right;color:#5f6e99;font:500 15px/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;user-select:none;overflow:hidden;background:#091229}.pyb-gutter span{display:block}.pyb-gutter span.err{color:#fff;background:#c0392b;border-radius:0 4px 4px 0}.pyb-code{position:relative;flex:1;min-width:0;overflow:hidden}.pyb-hl,.pyb-ta{margin:0;padding:12px 14px;font:500 15px/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;white-space:pre;tab-size:4;letter-spacing:0;word-spacing:0;direction:ltr;text-align:left;border:0;box-sizing:border-box;position:absolute;inset:0}.pyb-hl{overflow:hidden;pointer-events:none;color:#e4e8f6}.pyb-ta{width:100%;height:100%;resize:none;background:0 0;color:transparent;caret-color:#ffd48a;outline:0;overflow:auto;-webkit-text-fill-color:transparent}.pyb-ta::selection{background:rgba(140,200,255,.35);color:transparent}.pyb-code:focus-within{box-shadow:inset 0 0 0 2px rgba(235,205,138,.45)}.pyb-hl .k{color:#f7a8c4}.pyb-hl .s{color:#b7e4a5}.pyb-hl .n{color:#ffd48a}.pyb-hl .c{color:#7f8db5;font-style:italic}.pyb-hl .f{color:#8cc8ff}.pyb-hl .b{color:#c4b5fd}.pyb-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;background:var(--moon);border-bottom:1px solid var(--line-l)}.pyb-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:700;font-size:.92rem;min-height:42px;padding:4px 16px;border-radius:var(--r-pill);border:1.5px solid var(--navy);background:var(--paper);color:var(--navy);cursor:pointer}.pyb-btn svg{width:16px;height:16px;flex:none}.pyb-btn:hover{background:#e4e9f7}.pyb-btn:disabled{opacity:.45;cursor:default}.pyb-btn[hidden]{display:none}.pyb-run{background:#1b8a5e;border-color:#1b8a5e;color:#fff}.pyb-run:hover{background:#157049}.pyb-check{background:var(--gold);border-color:var(--gold);color:var(--night)}.pyb-check:hover{background:var(--gold-l)}.pyb-stop{border-color:#b42323;color:#b42323}.pyb-spacer{flex:1}.pyb-kbd{font-size:.78rem;color:#5e6a92}.pyb-out{background:#0a1430;color:#e4e8f6;direction:ltr}.pyb-out-head{display:flex;justify-content:space-between;align-items:center;padding:6px 14px;color:#8b98c2;font-size:.82rem;border-bottom:1px solid rgba(255,255,255,.06);direction:rtl}.pyb-console{margin:0;padding:10px 14px 12px;min-height:84px;max-height:260px;overflow:auto;font:500 15px/1.75 ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;white-space:pre-wrap;word-break:break-word;unicode-bidi:plaintext;text-align:start}.pyb-console .o-in{color:#ffd48a}.pyb-console .o-err{color:#ff9c9c}.pyb-console .o-info{color:#8b98c2;font-style:italic}.pyb-input{display:flex;gap:8px;padding:8px 12px 12px;direction:rtl;align-items:center}.pyb-canvas[hidden],.pyb-fb[hidden],.pyb-input[hidden]{display:none}.pyb-input label{color:#ffd48a;font-size:.85rem;white-space:nowrap}.pyb-input input{flex:1;min-width:0;font:500 16px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;background:#13214a;color:#fff;border:1.5px solid #ffd48a;border-radius:10px;padding:6px 10px;min-height:42px;unicode-bidi:plaintext}.pyb-input button{font:inherit;font-weight:700;font-size:.9rem;min-height:42px;padding:0 14px;border-radius:10px;border:0;background:#ffd48a;color:var(--night);cursor:pointer}.pyb-canvas,.pyb-fb{border-top:1px solid var(--line-l)}.pyb-canvas{background:#fff;padding:10px;display:flex;justify-content:center}.pyb-canvas canvas{width:100%;max-width:520px;aspect-ratio:1;border:1px solid var(--line-l);border-radius:14px;background:#fff;touch-action:pan-y}.pyb-fb{padding:12px 16px;line-height:1.95;font-size:.95rem}.pyb-fb.err{background:#fdf0f0;color:#7a1c1c}.pyb-fb.ok{background:#e9f6ef;color:#0d5f41}.pyb-fb.warn{background:#fff7e6;color:#5a3f09}.pyb-fb strong{display:block;font-size:1.02rem;margin-bottom:2px}.pyb-fb .pyb-en,.pyb-fb pre{direction:ltr;text-align:left}.pyb-fb .pyb-en{display:block;font:500 .82rem/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;opacity:.75;margin-top:4px;unicode-bidi:isolate}.pyb-fb ul{margin:6px 0 0;padding-inline-start:1.2em}.pyb-fb pre{background:rgba(255,255,255,.65);border-radius:10px;padding:8px 10px;margin:6px 0 0;white-space:pre-wrap;font:500 .88rem/1.7 ui-monospace,SFMono-Regular,Menlo,Consolas,"PyFa",monospace;unicode-bidi:plaintext}.pyb-fb .pyb-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.pyb-hint{margin-top:8px;padding:10px 12px;border-radius:12px;background:#fff;border:1px dashed #f0d9a6;color:#5a3f09}.pyb-celebrate{display:flex;align-items:center;gap:12px}.pyb-celebrate::before{content:"";flex:none;width:34px;height:34px;background:var(--gold);clip-path:var(--star);animation:pyb-pop .6s ease}@media (max-width:1100px){.py-layout{grid-template-columns:1fr}.py-bench{position:static}}@media (pointer:coarse){.pyb-gutter,.pyb-hl,.pyb-ta{font-size:16px}}@media (max-width:560px){.pyb-gutter{width:34px}.pyb-kbd{display:none}.py-pager{grid-template-columns:1fr}.py-pager-next{text-align:right}}@media (prefers-reduced-motion:reduce){.py-lesson-card a{transition:none}.pyb-celebrate::before{animation:none}}.py-player{flex-wrap:wrap}.py-player p{flex:1 1 260px}.py-player-acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.py-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:8px 16px;border-radius:999px;border:0;background:var(--navy);color:#fff;font:700 .92rem/1.4 var(--font-b);cursor:pointer}.py-btn:hover{background:var(--navy-3)}.py-btn-line{background:0 0;color:var(--navy);border:1.5px solid var(--line-l)}.py-btn-line:hover{background:#f3f5fb}.py-btn:focus-visible,.py-kid:focus-visible{outline:3px solid var(--gold-d);outline-offset:2px}.py-kids{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--ink-2);font-size:.88rem}.py-kid,.py-tag{border-radius:999px}.py-kid{min-height:40px;padding:6px 14px;border:1.5px solid var(--line-l);background:#fff;color:var(--navy);font:700 .88rem var(--font-b);cursor:pointer}.py-kid[aria-current=true]{background:var(--navy);color:#fff;border-color:var(--navy)}.py-tag{display:inline-block;margin-inline-start:6px;padding:1px 8px;background:#fff3d6;color:#7a5a12;font-size:.78rem;font-weight:700}.py-alert{flex-basis:100%;margin:0;color:#a12e22;font-weight:700}.py-dialog{border:0;border-radius:22px;padding:0;width:min(440px,calc(100vw - 24px));max-height:calc(100vh - 24px);box-shadow:0 24px 60px rgba(1,18,47,.35);color:var(--ink)}.py-dialog::backdrop{background:rgba(1,18,47,.55)}.py-dialog form{display:flex;flex-direction:column;gap:14px;padding:20px 22px 22px}.py-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.py-dialog-head h2{margin:0;font-size:1.15rem;color:var(--navy)}.py-close{width:42px;height:42px;border-radius:50%;border:0;background:#f1f3f9;color:var(--navy);cursor:pointer;display:grid;place-items:center}.py-close svg{width:20px;height:20px}.py-dialog-foot,.py-dialog-lead{margin:0;color:var(--ink-2);font-size:.9rem;line-height:1.9}.py-dialog-foot{font-size:.82rem}.py-field{display:flex;flex-direction:column;gap:6px;font-weight:700;color:var(--navy);font-size:.92rem}.py-field input{font:600 1.15rem/1.4 var(--font-b);letter-spacing:.08em;padding:10px 12px;border:1.5px solid #c9d1e6;border-radius:12px;min-height:48px;width:100%;box-sizing:border-box;text-align:left}.py-field input:focus{outline:0;border-color:var(--navy-3);box-shadow:0 0 0 3px rgba(42,63,126,.15)}.py-pin{position:relative;display:block}.py-pin input{padding-inline-end:76px}.py-link{position:absolute;inset-inline-end:8px;top:50%;transform:translateY(-50%);border:0;background:0 0;color:var(--navy-3);font:700 .85rem var(--font-b);cursor:pointer;min-height:36px;padding:0 8px}.py-check{display:flex;gap:10px;align-items:flex-start;font-size:.88rem;color:var(--ink-2);line-height:1.8;cursor:pointer}.py-check input{width:20px;height:20px;margin-top:4px;flex:none}.py-form-msg{margin:0;min-height:1.4em;color:#a12e22;font-weight:700;font-size:.9rem}.py-dialog .btn{min-height:48px}@media (max-width:520px){.py-player-acts{width:100%}.py-player-acts .py-btn{flex:1}}