@font-face{font-family:Vazirmatn Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/vazirmatn-arabic-wght-normal-Cafbb7Zc.woff2) format("woff2-variations");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Vazirmatn Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/vazirmatn-latin-ext-wght-normal-tDTa1Fj6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Vazirmatn Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/vazirmatn-latin-wght-normal-BFexNX-K.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand: #3FC1BE;--brand-600: #2FA9A6;--brand-700: #1F8784;--brand-800: #16625F;--brand-100: #D5F2F1;--brand-50: #EEFAFA;--accent: #F37067;--accent-600: #E0564D;--accent-100: #FDDCD9;--accent-50: #FEF2F1;--ink: #1C2A33;--ink-2: #3D4C57;--muted: #6B7883;--line: #E2E7EB;--line-2: #EEF1F4;--bg: #F6F8FA;--surface: #FFFFFF;--ok: #1FA36B;--ok-50: #E8F7F0;--warn: #D68A00;--warn-50: #FFF6E0;--danger: #D64545;--danger-50: #FDECEC;--gold: #F2B01E;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(28, 42, 51, .06), 0 2px 8px rgba(28, 42, 51, .05);--shadow-lg: 0 10px 30px rgba(28, 42, 51, .12);--m-none: #FFFFFF;--m-intro: #E3F6F5;--m-dev: #A9E4E2;--m-prof: #3FC1BE;--m-mast: #1F8784;--font: "Vazirmatn Variable", "Vazirmatn", Tahoma, sans-serif;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:15px;line-height:1.75;color:var(--ink);background:var(--bg);direction:rtl;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--brand-700);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%}:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 55%,transparent);outline-offset:2px;border-radius:6px}.en{font-size:.78em;color:var(--muted);font-weight:500;direction:ltr;unicode-bidi:isolate}.ltr{direction:ltr;unicode-bidi:isolate}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:12px}.bold{font-weight:700}.center{text-align:center}.nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.row{display:flex;align-items:center;gap:12px}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.row.top{align-items:flex-start}.col{display:flex;flex-direction:column;gap:12px}.grow{flex:1;min-width:0}.gap-s{gap:6px}.gap-l{gap:20px}.mt-0{margin-top:0}.mt{margin-top:16px}.mt-l{margin-top:28px}.mb{margin-bottom:16px}.mb-0{margin-bottom:0}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:900px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}}.topbar{position:sticky;top:0;z-index:40;height:60px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 20px}.logo-link{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--ink);font-size:16px;white-space:nowrap}.logo-link:hover{text-decoration:none}.brand-mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--brand) 0%,var(--brand-700) 100%);box-shadow:inset 0 -3px #0000001f}.brand-mark svg{width:20px;height:20px}.topnav{display:flex;gap:4px;margin-inline-start:12px}.topnav a{padding:8px 12px;border-radius:8px;color:var(--ink-2);font-weight:600;font-size:14px}.topnav a:hover{background:var(--line-2);text-decoration:none}.topnav a.active{color:var(--brand-700);background:var(--brand-50)}.topbar .spacer{flex:1}.xp-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:99px;background:var(--accent-50);color:var(--accent-600);font-weight:800;font-size:14px}.icon-btn{width:40px;height:40px;border-radius:10px;border:0;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--ink-2);position:relative}.icon-btn:hover{background:var(--line-2)}.icon-btn .dot{position:absolute;top:6px;left:6px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;line-height:1}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff;background:var(--brand-700);font-size:14px;flex:none}.avatar.lg{width:56px;height:56px;font-size:20px}.menu{position:absolute;top:calc(100% + 6px);left:0;min-width:230px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:6px;z-index:60}.menu button,.menu a{display:flex;width:100%;align-items:center;gap:10px;padding:9px 12px;border:0;background:none;border-radius:8px;cursor:pointer;color:var(--ink);text-align:start;font-size:14px}.menu button:hover,.menu a:hover{background:var(--line-2);text-decoration:none}.menu hr{border:0;border-top:1px solid var(--line);margin:6px 0}.mobile-nav{display:none}@media(max-width:860px){.topnav{display:none}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:62px;z-index:40;background:var(--surface);border-top:1px solid var(--line);justify-content:space-around;align-items:stretch;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--muted);font-weight:600}.mobile-nav a.active{color:var(--brand-700)}.mobile-nav a:hover{text-decoration:none}.page{padding-bottom:86px!important}.brand-text{display:none}}.page{max-width:1200px;margin:0 auto;padding:24px 20px 48px}.page.narrow{max-width:820px}.page.wide{max-width:1400px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{margin:0;font-size:26px;line-height:1.4;font-weight:800}.page-head p{margin:4px 0 0;color:var(--muted)}.crumbs{font-size:13px;color:var(--muted);margin-bottom:6px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.crumbs a{color:var(--muted)}h2{font-size:20px;margin:0 0 12px;font-weight:800}h3{font-size:16px;margin:0 0 8px;font-weight:700}.split{display:grid;grid-template-columns:290px minmax(0,1fr);gap:24px;align-items:start}.split.right-rail{grid-template-columns:minmax(0,1fr) 320px}@media(max-width:1000px){.split,.split.right-rail{grid-template-columns:minmax(0,1fr)}}.sticky{position:sticky;top:76px}.hero{background:linear-gradient(120deg,var(--brand-700) 0%,var(--brand) 70%,#6fd6d3 100%);color:#fff;border-radius:18px;padding:26px 28px;position:relative;overflow:hidden;margin-bottom:22px}.hero:after{content:"";position:absolute;left:-60px;bottom:-80px;width:240px;height:240px;border-radius:50%;background:#ffffff1a}.hero:before{content:"";position:absolute;left:120px;top:-70px;width:160px;height:160px;border-radius:50%;background:#f3706759}.hero h1{margin:0;font-size:26px;font-weight:800;position:relative;z-index:1}.hero p{margin:6px 0 0;opacity:.92;position:relative;z-index:1}.hero .hero-stats{display:flex;gap:22px;margin-top:16px;position:relative;z-index:1;flex-wrap:wrap}.hero .hero-stat b{display:block;font-size:22px;font-weight:800;line-height:1.3}.hero .hero-stat span{font-size:13px;opacity:.9}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.card.flat{box-shadow:none}.card.pad-0{padding:0}.card.tight{padding:14px 16px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.card-head h2,.card-head h3{margin:0}.card.accent{border-color:var(--accent-100);background:linear-gradient(180deg,var(--accent-50),#fff 70%)}.card.brand{border-color:var(--brand-100);background:linear-gradient(180deg,var(--brand-50),#fff 70%)}.card.clickable{cursor:pointer;transition:box-shadow .15s,transform .15s,border-color .15s}.card.clickable:hover{box-shadow:var(--shadow-lg);border-color:var(--brand-100);transform:translateY(-1px)}.stat{display:flex;flex-direction:column;gap:2px}.stat b{font-size:26px;font-weight:800;line-height:1.3}.stat span{font-size:13px;color:var(--muted)}.stat .stat-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--brand-50);color:var(--brand-700);margin-bottom:8px}.stat .stat-icon.coral{background:var(--accent-50);color:var(--accent-600)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 18px;border-radius:10px;border:1px solid transparent;font-weight:700;cursor:pointer;font-size:15px;background:var(--brand-600);color:#fff;box-shadow:inset 0 -2px #00000024;white-space:nowrap;text-decoration:none;transition:background .12s,transform .06s}.btn:hover{background:var(--brand-700);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.coral{background:var(--accent)}.btn.coral:hover{background:var(--accent-600)}.btn.ghost{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:none}.btn.ghost:hover{background:var(--line-2)}.btn.soft{background:var(--brand-50);color:var(--brand-800);box-shadow:none}.btn.soft:hover{background:var(--brand-100)}.btn.danger{background:var(--surface);color:var(--danger);border-color:#f2c4c4;box-shadow:none}.btn.danger:hover{background:var(--danger-50)}.btn.link{background:none;color:var(--brand-700);box-shadow:none;padding:0 6px;min-height:auto}.btn.link:hover{text-decoration:underline;background:none}.btn.sm{min-height:34px;padding:0 12px;font-size:14px;border-radius:8px}.btn.lg{min-height:52px;padding:0 26px;font-size:17px;border-radius:12px}.btn.block{width:100%}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field-label{font-weight:700;font-size:14px}.field .hint{font-size:12.5px;color:var(--muted)}.input,select.input,textarea.input{width:100%;min-height:44px;border:1.5px solid var(--line);border-radius:10px;padding:8px 12px;background:#fff;transition:border-color .12s,box-shadow .12s}textarea.input{min-height:110px;resize:vertical;line-height:1.8}.input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 18%,transparent)}.input.ltr{direction:ltr;text-align:left}.check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.check input{width:18px;height:18px;accent-color:var(--brand-600)}.alert{border-radius:10px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;font-size:14px;border:1px solid transparent}.alert svg{flex:none;margin-top:3px}.alert.info{background:var(--brand-50);border-color:var(--brand-100);color:var(--brand-800)}.alert.warn{background:var(--warn-50);border-color:#f4dfa6;color:#7a5200}.alert.error{background:var(--danger-50);border-color:#f2c4c4;color:#8f2a2a}.alert.ok{background:var(--ok-50);border-color:#bfe6d3;color:#14724b}.chip{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:99px;font-size:12.5px;font-weight:700;background:var(--line-2);color:var(--ink-2);white-space:nowrap}.chip.brand{background:var(--brand-50);color:var(--brand-800)}.chip.coral{background:var(--accent-50);color:var(--accent-600)}.chip.ok{background:var(--ok-50);color:var(--ok)}.chip.warn{background:var(--warn-50);color:var(--warn)}.chip.danger{background:var(--danger-50);color:var(--danger)}.chip.live{background:var(--accent);color:#fff}.chip.live:before{content:"";width:7px;height:7px;border-radius:50%;background:#fff;animation:pulse 1.2s infinite}@keyframes pulse{50%{opacity:.3}}.progress{height:10px;background:var(--line-2);border-radius:99px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--brand);border-radius:99px;transition:width .4s ease}.progress.coral>i{background:var(--accent)}.progress.thin{height:6px}.mastery-bar{display:flex;height:14px;border-radius:99px;overflow:hidden;background:var(--line-2)}.mastery-bar i{display:block;height:100%}.msq{width:18px;height:18px;border-radius:4px;border:1.5px solid #C9D1D8;background:var(--m-none);display:inline-grid;place-items:center;flex:none;color:#fff}.msq.introduced{background:var(--m-intro);border-color:#9fdcda}.msq.developing{background:var(--m-dev);border-color:#7fd2cf}.msq.proficient{background:var(--m-prof);border-color:var(--brand-600)}.msq.mastered{background:var(--m-mast);border-color:var(--brand-800)}.msq svg{width:12px;height:12px}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.unit{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px;overflow:hidden;box-shadow:var(--shadow)}.unit-head{padding:16px 20px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,var(--brand-50),#fff)}.unit-num{width:42px;height:42px;border-radius:12px;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:800;font-size:18px;flex:none}.unit-head h3{margin:0;font-size:17px}.unit-head .muted{font-size:13px}.lesson-row{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line-2);color:var(--ink)}.lesson-row:last-child{border-bottom:0}.lesson-row:hover{background:#fafcfc;text-decoration:none}.lesson-row.locked{color:var(--muted);cursor:default}.lesson-row.locked:hover{background:none}.lesson-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--brand-50);color:var(--brand-700);flex:none;border:2px solid var(--brand-100)}.lesson-icon.done{background:var(--brand-600);color:#fff;border-color:var(--brand-600)}.lesson-icon.locked{background:var(--line-2);color:#9aa6b0;border-color:var(--line)}.lesson-icon.live{background:var(--accent);color:#fff;border-color:var(--accent)}.lesson-title{font-weight:700}.lesson-meta{font-size:13px;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap;align-items:center}.sidenav{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.sidenav-head{padding:16px;border-bottom:1px solid var(--line)}.sidenav a,.sidenav button.navitem{display:flex;align-items:center;gap:10px;padding:11px 16px;color:var(--ink-2);font-size:14px;border:0;width:100%;background:none;text-align:start;cursor:pointer;border-inline-start:3px solid transparent}.sidenav a:hover,.sidenav button.navitem:hover{background:var(--line-2);text-decoration:none}.sidenav a.active,.sidenav button.navitem.active{background:var(--brand-50);color:var(--brand-800);font-weight:700;border-inline-start-color:var(--brand)}.sidenav .group{padding:10px 16px 4px;font-size:12px;font-weight:800;color:var(--muted);letter-spacing:.02em}.step-dot{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;flex:none;font-size:12px;font-weight:800;color:var(--muted);background:#fff}.step-dot.done{background:var(--brand-600);border-color:var(--brand-600);color:#fff}.step-dot.current{border-color:var(--brand);color:var(--brand-700)}.md{line-height:2;font-size:15.5px;overflow-wrap:anywhere}.md h1,.md h2,.md h3,.md h4{line-height:1.5;margin:1.4em 0 .5em}.md h1{font-size:22px}.md h2{font-size:19px}.md h3{font-size:16.5px}.md h4{font-size:15px}.md>:first-child{margin-top:0}.md p{margin:.6em 0}.md ul,.md ol{padding-inline-start:1.4em;margin:.5em 0}.md li{margin:.2em 0}.md strong{font-weight:800}.md blockquote{margin:1em 0;padding:10px 16px;border-inline-start:4px solid var(--brand);background:var(--brand-50);border-radius:8px;color:var(--ink-2)}.md blockquote p{margin:.3em 0}.md code{background:var(--line-2);padding:1px 6px;border-radius:5px;font-size:.92em;font-family:var(--font)}.md pre{background:#f3f6f8;border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow-x:auto;line-height:1.8;white-space:pre}.md pre code{background:none;padding:0;font-family:var(--font);font-size:14px}.md pre.ltr-block{direction:ltr;text-align:left}.md table{border-collapse:collapse;width:100%;margin:1em 0;font-size:14px;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--line);padding:8px 10px;text-align:start;vertical-align:top}.md th{background:var(--brand-50);font-weight:800;color:var(--brand-800)}.md tr:nth-child(2n) td{background:#fafbfc}.md hr{border:0;border-top:1px dashed var(--line);margin:1.5em 0}.md a{text-decoration:underline}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:start;font-weight:700;color:var(--muted);font-size:12.5px;padding:10px 14px;background:#fafbfc;border-bottom:1px solid var(--line);white-space:nowrap}table.data td{padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}table.data tr:last-child td{border-bottom:0}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover td{background:var(--brand-50)}.grid-table th.rot{writing-mode:vertical-rl;transform:rotate(180deg);padding:10px 6px;font-weight:700}.grid-table td.cell{padding:6px;text-align:center}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}.tabs button{border:0;background:none;padding:12px 16px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;gap:8px;align-items:center}.tabs button:hover{color:var(--ink)}.tabs button.active{color:var(--brand-700);border-bottom-color:var(--brand)}.exercise{max-width:760px;margin:0 auto}.exercise-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.exercise-body{padding:26px 28px}.exercise-foot{border-top:1px solid var(--line);padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fbfcfd;flex-wrap:wrap}.q-dots{display:flex;gap:6px;justify-content:center;margin:0 0 18px;flex-wrap:wrap}.q-dots i{width:30px;height:8px;border-radius:99px;background:var(--line)}.q-dots i.cur{background:var(--brand-100);outline:2px solid var(--brand)}.q-dots i.ok{background:var(--brand)}.q-dots i.no{background:var(--accent)}.q-dots i.self{background:#b8c4cc}.option{display:flex;align-items:center;gap:14px;width:100%;padding:13px 16px;border:2px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;text-align:start;margin-bottom:10px;font-size:15.5px;transition:border-color .1s,background .1s}.option:hover{border-color:var(--brand-100);background:var(--brand-50)}.option .key{width:32px;height:32px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-weight:800;flex:none;color:var(--muted)}.option.selected{border-color:var(--brand);background:var(--brand-50)}.option.selected .key{background:var(--brand);border-color:var(--brand);color:#fff}.option.correct{border-color:var(--ok);background:var(--ok-50)}.option.correct .key{background:var(--ok);border-color:var(--ok);color:#fff}.option.wrong{border-color:var(--accent);background:var(--accent-50)}.option:disabled{cursor:default}.feedback-box{border-radius:12px;padding:14px 16px;margin-top:14px}.feedback-box.good{background:var(--ok-50);border:1px solid #bfe6d3}.feedback-box.try{background:var(--accent-50);border:1px solid var(--accent-100)}.feedback-box.self{background:var(--brand-50);border:1px solid var(--brand-100)}.flash-wrap{perspective:1200px;max-width:560px;margin:0 auto}.flash{position:relative;height:280px;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.3,.7,.3,1);cursor:pointer}.flash.flipped{transform:rotateY(180deg)}.flash-face{position:absolute;inset:0;backface-visibility:hidden;border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;font-size:19px;font-weight:700;line-height:1.9;box-shadow:var(--shadow-lg)}.flash-front{background:#fff;border:2px solid var(--brand-100)}.flash-back{background:linear-gradient(135deg,var(--brand-700),var(--brand));color:#fff;transform:rotateY(180deg)}.flash-type{position:absolute;top:14px;right:16px;font-size:12px;font-weight:700}.flash-front .flash-type{color:var(--brand-700)}.flash-back .flash-type{color:#ffffffd9}.match-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.match-item{border:2px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;cursor:pointer;min-height:64px;font-size:14px;text-align:start;line-height:1.7;transition:all .12s}.match-item:hover{border-color:var(--brand-100)}.match-item.sel{border-color:var(--brand);background:var(--brand-50)}.match-item.done{border-color:var(--ok);background:var(--ok-50);color:var(--ok);cursor:default;opacity:.75}.match-item.bad{border-color:var(--accent);background:var(--accent-50);animation:shake .3s}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.live-shell{display:grid;grid-template-columns:300px minmax(0,1fr) 330px;gap:18px;align-items:start}@media(max-width:1200px){.live-shell{grid-template-columns:minmax(0,1fr)}}.stage-list button{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:9px 12px;border-radius:10px;cursor:pointer;text-align:start;font-size:14px;color:var(--ink-2)}.stage-list button:hover{background:var(--line-2)}.stage-list button.cur{background:var(--brand-50);color:var(--brand-800);font-weight:800}.stage-list button.past{color:var(--muted)}.timer{font-size:54px;font-weight:800;letter-spacing:.02em;line-height:1.1;direction:ltr;font-variant-numeric:tabular-nums}.timer.over{color:var(--accent)}.present{position:fixed;inset:0;z-index:100;background:#0f2a2e;color:#fff;display:flex;flex-direction:column}.present-top{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;color:#fffc;gap:12px}.present-slide{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 8vw;text-align:center}.present-slide h1{font-size:clamp(32px,5vw,64px);margin:0 0 18px;line-height:1.35;font-weight:800}.present-slide .ptext{font-size:clamp(20px,2.4vw,32px);line-height:1.8;opacity:.95;white-space:pre-line;max-width:1100px}.present-slide .pvisual{margin-top:24px;font-size:16px;opacity:.6;border:1px dashed rgba(255,255,255,.35);padding:8px 16px;border-radius:10px}.present-bottom{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;gap:12px;background:#0003;flex-wrap:wrap}.present .btn.ghost{background:#ffffff14;border-color:#fff3;color:#fff}.present .btn.ghost:hover{background:#ffffff29}.present-notes{background:#ffffff12;border-radius:10px;padding:10px 14px;font-size:14px;color:#ffffffd9;max-width:640px}.present-progress{height:4px;background:#ffffff1f}.present-progress i{display:block;height:100%;background:var(--brand)}.poll-bar{display:flex;align-items:center;gap:10px;margin-bottom:8px}.poll-bar .track{flex:1;height:28px;background:var(--line-2);border-radius:8px;overflow:hidden;position:relative}.poll-bar .track i{position:absolute;background:var(--brand-100);inset:0 0 0 auto}.poll-bar.correct .track i{background:#bfe6d3}.poll-bar .track span{position:relative;z-index:1;padding:0 10px;line-height:28px;font-size:13.5px;font-weight:700}.scoreboard{display:grid;gap:8px}.team{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid var(--line)}.team .score{font-size:24px;font-weight:800;min-width:54px;text-align:center;color:var(--brand-700)}.big-code{font-size:44px;font-weight:800;letter-spacing:.25em;direction:ltr;color:var(--brand-700);text-align:center}.empty{text-align:center;padding:42px 20px;color:var(--muted)}.empty svg{width:46px;height:46px;color:var(--brand);opacity:.75;margin-bottom:8px}.empty h3{color:var(--ink);margin-bottom:4px}.spinner{width:28px;height:28px;border:3px solid var(--brand-100);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:grid;place-items:center;padding:60px}.skeleton{background:linear-gradient(90deg,var(--line-2),#f8fafb,var(--line-2));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:8px}@keyframes sk{to{background-position:-200% 0}}.toast-host{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center;width:min(92vw,460px)}.toast{background:var(--ink);color:#fff;padding:12px 18px;border-radius:12px;box-shadow:var(--shadow-lg);font-size:14.5px;display:flex;gap:10px;align-items:center;animation:up .25s ease;width:100%}.toast.ok{background:var(--brand-800)}.toast.error{background:#8f2a2a}.toast.xp{background:var(--accent);font-weight:800}@keyframes up{0%{transform:translateY(12px);opacity:0}}.modal-back{position:fixed;inset:0;background:#0f1e2473;z-index:150;display:grid;place-items:center;padding:16px;animation:fade .15s}@keyframes fade{0%{opacity:0}}.modal{background:#fff;border-radius:16px;width:min(560px,100%);max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg)}.modal.wide{width:min(880px,100%)}.modal-head{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:#fff;z-index:1}.modal-head h3{margin:0}.modal-body{padding:20px 22px}.modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-start;flex-wrap:wrap}.auth-shell{min-height:100%;display:grid;grid-template-columns:1fr 1fr}.auth-art{background:radial-gradient(circle at 20% 20%,rgba(243,112,103,.55),transparent 40%),linear-gradient(140deg,var(--brand-700),var(--brand));color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-art h1{font-size:34px;line-height:1.5;margin:0 0 12px;font-weight:800}.auth-art p{font-size:16px;opacity:.92;max-width:440px}.auth-art .coins{position:absolute;left:-40px;bottom:-40px;opacity:.18;width:320px;height:320px}.auth-form{display:grid;place-items:center;padding:32px 20px;background:#fff}.auth-box{width:min(400px,100%)}.auth-box h2{font-size:24px;margin-bottom:4px}@media(max-width:860px){.auth-shell{grid-template-columns:1fr}.auth-art{padding:28px 22px;min-height:180px}.auth-art h1{font-size:24px}.auth-art .hide-m{display:none}}.badge-tile{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:18px 12px;border-radius:14px;border:1px solid var(--line);background:#fff}.badge-medal{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#ffe08a,var(--gold));color:#7a5200;box-shadow:0 4px #d49a12,inset 0 -3px #00000014}.badge-tile.locked .badge-medal{background:var(--line-2);color:#a8b3bc;box-shadow:0 4px #dde3e8}.badge-tile.locked{opacity:.8}.badge-tile b{font-size:14px;line-height:1.6}.celebrate{text-align:center;padding:30px 20px}.celebrate .big{font-size:56px;line-height:1}.notif{padding:12px 14px;border-bottom:1px solid var(--line-2);display:flex;gap:10px}.notif.unread{background:var(--brand-50)}.notif:last-child{border-bottom:0}.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:14px}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:600}.dropzone{border:2px dashed var(--brand-100);background:var(--brand-50);border-radius:14px;padding:26px;text-align:center;cursor:pointer;transition:all .15s}.dropzone:hover,.dropzone.over{border-color:var(--brand);background:#e3f6f5}.file-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin-top:8px;background:#fff;font-size:14px}.section-toc a{display:block;padding:6px 10px;border-radius:8px;font-size:13.5px;color:var(--ink-2)}.section-toc a:hover{background:var(--line-2);text-decoration:none}.section-toc a.active{background:var(--brand-50);color:var(--brand-800);font-weight:700}@media print{.topbar,.mobile-nav,.no-print{display:none!important}body{background:#fff}.card{box-shadow:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.sidenav .tabs{margin-bottom:0}.sidenav .tabs button{padding:10px 8px;font-size:13px}
