/* ===== CodeLine UI ===== */
@font-face{font-family:'Vazirmatn';src:url('../fonts/vazirmatn.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{--ink:#0f1f35;--navy:#13294b;--navy2:#1d3a68;--paper:#f4f6fb;--card:#fff;--line:#e3e8f2;--brand:#13294b;--accent:#ff9a1f;--accent-d:#e58200;--tint:#eaf0fb;--mute:#5f6b85;--ok:#0e9f6e;--err:#d6334a;--r:16px;--sh:0 10px 30px -14px rgba(19,41,75,.25);
  --font:Vazirmatn,'Vazir',Tahoma,'Segoe UI',system-ui,sans-serif;--mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);background:var(--paper);color:var(--ink);line-height:1.9;font-size:16px}
a{color:inherit;text-decoration:none}img{max-width:100%}
.wrap{max-width:1160px;margin:auto;padding:0 22px}.narrow{max-width:470px}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* header */
.top{background:rgba(255,255,255,.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.bar{display:flex;align-items:center;gap:30px;height:68px}
.brand{font-weight:900;font-size:1.35rem;display:flex;align-items:center;gap:10px;color:var(--navy)}
.logo{height:36px;width:auto;display:block}
nav{display:flex;gap:6px;flex:1}
nav a{color:var(--mute);padding:6px 14px;border-radius:10px;font-weight:500}nav a:hover{background:var(--tint);color:var(--navy)}
.acts{display:flex;gap:8px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;background:var(--accent);color:#1a1200;padding:9px 22px;border-radius:12px;font:inherit;font-weight:700;cursor:pointer;transition:background .15s,transform .1s,box-shadow .15s;box-shadow:0 6px 16px -8px rgba(255,154,31,.8)}
.btn:hover{background:var(--accent-d)}.btn:active{transform:translateY(1px)}
.btn.ghost{background:#fff;color:var(--navy);border:1px solid var(--line);box-shadow:none}.btn.ghost:hover{border-color:var(--navy);background:#fff}
.btn.big{padding:13px 30px;font-size:1.05rem;border-radius:14px}.btn.sm{padding:3px 14px;font-size:.88rem;border-radius:10px}
.btn.danger{background:var(--err);color:#fff;box-shadow:none}.btn.danger:hover{background:#b9263b}

/* hero */
.hero{position:relative;overflow:hidden;background:radial-gradient(900px 400px at 85% -10%,rgba(255,154,31,.28),transparent 60%),radial-gradient(700px 500px at 0% 100%,rgba(61,110,200,.45),transparent 60%),linear-gradient(160deg,#0e1f3b,#13294b 55%,#1a3763);color:#fff;padding:76px 0 90px}
.hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.09) 1px,transparent 1px);background-size:22px 22px;mask-image:linear-gradient(180deg,#000,transparent 85%)}
.hero-grid{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:54px;align-items:center}
h1{font-size:clamp(1.9rem,3.8vw,2.9rem);line-height:1.55;font-weight:900;margin:0 0 18px}
.hero h1 em{font-style:normal;color:var(--accent)}
.lead{color:#c7d3ea;font-size:1.12rem;max-width:34em}
.cta{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}
.hero .btn.ghost{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.28)}.hero .btn.ghost:hover{background:rgba(255,255,255,.16);border-color:#fff}
.trust{display:flex;gap:22px;margin-top:30px;flex-wrap:wrap;color:#aebcd8;font-size:.93rem}.trust span::before{content:"✓";color:var(--accent);font-weight:900;margin-left:6px}
.planner{background:rgba(255,255,255,.97);color:var(--ink);border-radius:22px;padding:22px;box-shadow:0 30px 60px -25px rgba(0,0,0,.6);transform:rotate(-1.2deg)}
.planner-h{display:flex;justify-content:space-between;margin-bottom:10px}.planner-h span{color:var(--mute);font-size:.9rem}
.prow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:9px 0;border-top:1px dashed var(--line)}
.pday{width:78px;font-weight:700}
.chip{font-family:var(--mono);font-size:.85rem;padding:2px 13px;border-radius:999px;background:var(--tint);color:var(--navy2)}
.chip.on{background:var(--navy);color:#fff}
.code{margin:14px 0 0;background:#0e1f3b;color:#d5dff3;border-radius:14px;padding:13px 18px;font-family:var(--mono);font-size:.85rem;line-height:1.7;overflow-x:auto}
.code .k{color:var(--accent)}.code .s{color:#8ff0c4}

/* stats strip */
.strip{margin-top:-38px;position:relative;z-index:2}
.strip .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.strip .it{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--sh);display:flex;gap:12px;align-items:center}
.strip .ic{width:42px;height:42px;border-radius:12px;background:var(--tint);display:grid;place-items:center;font-size:1.3rem}
.strip b{display:block;line-height:1.5}.strip span{color:var(--mute);font-size:.88rem}

/* sections */
.sec{padding:58px 22px 10px}.sec h2{font-size:1.7rem;margin:0 0 6px;font-weight:900}.sec .sub{color:var(--mute);margin:0 0 26px}
.sec h2 small{font-size:.9rem;color:var(--mute);font-weight:500;margin-right:8px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px}
.course{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 12px 18px;transition:transform .18s,box-shadow .18s,border-color .18s;display:block}
.course:hover{transform:translateY(-4px);box-shadow:var(--sh);border-color:#c9d4ea}
.course .ph{height:130px;border-radius:12px;margin-bottom:12px;display:grid;place-items:center;color:rgba(255,255,255,.9);font-family:var(--mono);font-size:2.2rem;font-weight:700;background:linear-gradient(135deg,#13294b,#2a5aa8);position:relative;overflow:hidden}
.course .ph::after{content:"";position:absolute;width:120px;height:120px;border-radius:50%;background:rgba(255,154,31,.35);right:-30px;top:-40px}
.course .ph.l-intermediate{background:linear-gradient(135deg,#7a3e00,#e58200)}.course .ph.l-advanced{background:linear-gradient(135deg,#3b1148,#a1316b)}
.course img.cv{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:12px;margin-bottom:12px;display:block;background:var(--tint)}
.course .in{padding:0 8px}.course h3{margin:8px 0 4px;font-size:1.12rem}.course p{margin:0;color:var(--mute);font-size:.92rem}
.course .go{display:inline-block;margin-top:12px;color:var(--navy2);font-weight:700;font-size:.92rem}
.lvl{font-size:.76rem;padding:1px 11px;border-radius:999px;background:#e5f7ef;color:var(--ok);font-weight:700}.lvl.intermediate{background:#fff2da;color:#9a6500}.lvl.advanced{background:#fde6ea;color:var(--err)}
.plans .plan{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:24px;position:relative}
.plan.hot{border:2px solid var(--accent);box-shadow:var(--sh)}.plan.hot::before{content:"پرطرفدار";position:absolute;top:-13px;right:20px;background:var(--accent);color:#1a1200;font-size:.78rem;font-weight:800;padding:1px 14px;border-radius:999px}
.plan h3{margin:0 0 10px;font-size:1.3rem}.plan ul{padding:0;margin:0 0 16px;list-style:none;color:var(--mute)}
.plan li{padding:4px 0}.plan li::before{content:"✓";color:var(--ok);font-weight:900;margin-left:8px}
.price{font-weight:900;color:var(--navy);font-size:1.1rem}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;padding:0;list-style:none;counter-reset:s}
.steps li{counter-increment:s;background:var(--card);border-radius:var(--r);padding:22px;border:1px solid var(--line)}
.steps li::before{content:counter(s,persian);display:inline-grid;place-items:center;width:36px;height:36px;border-radius:12px;background:var(--navy);color:#fff;font-weight:900;margin-bottom:10px}
.steps b{display:block;font-size:1.05rem}.steps span{color:var(--mute);font-size:.93rem}
.band{margin:60px auto 0;max-width:1116px;border-radius:24px;background:linear-gradient(120deg,#13294b,#2a5aa8);color:#fff;padding:38px 40px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.band h2{margin:0;font-size:1.6rem}.band p{margin:4px 0 0;color:#c7d3ea}

/* cards & forms */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px}
.form{display:grid;gap:14px}.form label{display:grid;gap:5px;font-weight:600;font-size:.95rem}
input,select,textarea{font:inherit;padding:10px 13px;border:1px solid #cfd7e6;border-radius:12px;background:#fff;width:100%;color:var(--ink)}
input:focus,textarea:focus,select:focus{border-color:var(--navy2);outline:none;box-shadow:0 0 0 3px rgba(42,90,168,.15)}
input[type=checkbox],input[type=radio]{width:auto}
.muted{color:var(--mute)}.flash{padding:12px 18px;border-radius:12px;margin:16px 0;background:#e5f7ef;color:#0a7a54;border:1px solid #bfe8d6}.flash.err{background:#fde8ec;color:#a8243a;border-color:#f6c2cb}
main.narrow{padding:56px 22px}main.narrow h1{font-size:1.7rem}
.status{font-size:.8rem;padding:1px 11px;border-radius:999px;background:#eee;font-weight:700}.status.active{background:#e5f7ef;color:var(--ok)}.status.pending_payment{background:#fff2da;color:#9a6500}
.msg{padding:12px 16px;border-radius:14px;margin:8px 0;background:#eef1f8}.msg.me{background:var(--tint)}

/* footer */
.foot{margin-top:70px;background:#0e1f3b;color:#b7c4de;padding:40px 0 30px}
.foot .wrap{display:flex;justify-content:space-between;gap:28px;flex-wrap:wrap}.foot p{margin:4px 0}.foot b{color:#fff}.foot a:hover{color:var(--accent)}

/* panel (admin / instructor) */
body.panel{display:grid;grid-template-columns:248px 1fr;min-height:100vh;background:var(--paper)}
.side{background:linear-gradient(180deg,#0e1f3b,#13294b);color:#b7c4de;padding:22px 16px;display:flex;flex-direction:column;gap:20px;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .brand{color:#fff;padding:0 8px}.side nav{display:grid;gap:3px;flex:1;align-content:start}
.side nav a{padding:9px 14px;border-radius:12px;color:#b7c4de;display:block}.side nav a:hover{background:rgba(255,255,255,.08);color:#fff}
.side nav a.on{background:var(--accent);color:#1a1200;font-weight:800}
.who{font-size:.9rem;padding:12px 14px;background:rgba(255,255,255,.07);border-radius:12px}.who a{color:var(--accent)}
.main{padding:32px;max-width:1120px;width:100%}
.main h1{font-size:1.6rem;margin:0 0 20px;font-weight:900}.main h2{font-size:1.15rem;margin:30px 0 12px;font-weight:800}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;border-right:5px solid var(--navy2)}.stat b{display:block;font-size:2rem;line-height:1.3}.stat span{color:var(--mute)}
.stat.warn{border-right-color:var(--accent);background:#fffaf1}
table.t{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.t th,.t td{padding:11px 16px;text-align:right;border-bottom:1px solid var(--line);vertical-align:middle}.t th{background:#f0f3fa;font-weight:800;font-size:.9rem;color:var(--navy)}.t tr:last-child td{border-bottom:0}.t tr:hover td{background:#fafbfe}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.checks{display:flex;flex-wrap:wrap;gap:8px 20px}.checks label{display:flex;gap:7px;align-items:center;font-weight:400}.checks input{width:auto}
.sect{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:16px}
.lesson{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px dashed var(--line);align-items:center}a.lesson:hover{color:var(--navy2)}
.tag{font-size:.75rem;padding:0 9px;border-radius:999px;background:var(--tint);color:var(--navy2);font-weight:700}
details summary{cursor:pointer;font-weight:800;color:var(--navy2)}

/* planner */
.pl-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:var(--r)}
table.pl{border-collapse:collapse;width:100%;min-width:640px;user-select:none}
.pl th,.pl td{border:1px solid var(--line);text-align:center;height:30px;padding:0}
.pl th.dh{cursor:pointer;background:#f0f3fa;position:sticky;top:0}.pl th.dh:hover{background:#dfe8f8}
.pl th.tm{background:#f0f3fa;font-family:var(--mono);font-size:.78rem;width:64px;direction:ltr}
.pl td{cursor:pointer}.pl td:hover{background:#f0f5ff}.pl td.on{background:#f4f8ff}.pl td.lock{background:#fff2da;cursor:not-allowed}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 1px}
.slotbtn{font-family:var(--mono);direction:ltr}
.cover-big{width:100%;max-height:340px;object-fit:cover;border-radius:var(--r);margin-bottom:18px}

@media(max-width:900px){.hero-grid{grid-template-columns:1fr}.planner{transform:none}.strip .wrap{grid-template-columns:1fr 1fr}nav{display:none}.bar{justify-content:space-between}
 body.panel{grid-template-columns:1fr}.side{position:static;height:auto}.two{grid-template-columns:1fr}.main{padding:20px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.side .logo{background:#fff;border-radius:11px;padding:4px 6px;height:42px}

/* ===== v2 additions ===== */
.eyebrow{display:inline-block;background:rgba(255,154,31,.16);color:#ffc778;border:1px solid rgba(255,154,31,.35);border-radius:999px;padding:2px 16px;font-size:.88rem;font-weight:700;margin-bottom:14px}
.eyebrow.dark{background:#fff2da;color:#9a6500;border-color:#ffd9a0}
.heroart{position:relative}.heroart img{width:100%;height:auto;display:block;filter:drop-shadow(0 30px 40px rgba(0,0,0,.35));animation:float 7s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.sechead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;flex-wrap:wrap}.sechead .sub{margin:0}.sechead h2{margin:0 0 4px}
.feature{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:26px;padding:40px}
.feature .planner{transform:none;box-shadow:var(--sh);border:1px solid var(--line);background:#fbfcff}
.feature h2{margin:0 0 8px}
.ticks{list-style:none;padding:0;margin:14px 0 0}.ticks li{padding:4px 0}.ticks li::before{content:"✓";display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#e5f7ef;color:var(--ok);font-weight:900;font-size:.8rem;margin-left:10px}
.lvl.hrs{background:var(--tint);color:var(--navy2);margin-right:6px}
.person{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:26px 20px;text-align:center}
.person .av{width:84px;height:84px;border-radius:50%;object-fit:cover;display:grid;place-items:center;margin:0 auto 12px;border:3px solid var(--tint)}
.person .av.ini{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;font-size:2rem;font-weight:900;border-color:var(--accent)}
.person h3{margin:0 0 4px}.person p{margin:0;font-size:.92rem}.person .pc{margin-top:10px;font-size:.85rem;color:var(--navy2)}
.faq{display:grid;gap:10px}
.faq details{background:#fff;border:1px solid var(--line);border-radius:14px;padding:4px 20px;transition:border-color .15s}
.faq details[open]{border-color:#c9d4ea;box-shadow:var(--sh)}
.faq summary{cursor:pointer;font-weight:800;color:var(--navy);padding:12px 0;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";font-size:1.4rem;line-height:1;color:var(--accent-d)}.faq details[open] summary::after{content:"−"}
.faq details>div{padding:0 0 16px;color:var(--mute)}
.band.small{margin-top:30px;padding:26px 30px}.band.small h2{font-size:1.25rem}
.pagehead{background:linear-gradient(160deg,#0e1f3b,#13294b 60%,#1d3a68);color:#fff;padding:46px 0 40px;position:relative;overflow:hidden}
.pagehead::after{content:"";position:absolute;width:320px;height:320px;border-radius:50%;background:rgba(255,154,31,.18);left:-80px;top:-120px}
.pagehead h1{margin:0 0 6px;font-size:clamp(1.6rem,3vw,2.3rem)}.pagehead p{margin:0;color:#c7d3ea}
.cbgrid{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center;position:relative;z-index:1}
.cbgrid img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:18px;box-shadow:0 24px 50px -20px rgba(0,0,0,.6)}
.cbanner .lvl{display:inline-block;margin-bottom:10px}
.narrow-prose{max-width:820px}
.prose{padding:30px 34px;font-size:1.04rem}.prose p{margin:0 0 14px}.prose p:last-child{margin-bottom:0}
.prose-list{margin:0 0 14px;padding:0;list-style:none}.prose-list li{padding:6px 0;border-bottom:1px dashed var(--line)}.prose-list li::before{content:"●";color:var(--accent);font-size:.6rem;margin-left:10px;vertical-align:middle}
.filters{display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:24px}
.chips{display:flex;gap:8px;flex-wrap:wrap}.fchip{padding:6px 18px;border-radius:999px;background:#fff;border:1px solid var(--line);font-weight:600;color:var(--mute)}
.fchip:hover{border-color:var(--navy2);color:var(--navy)}.fchip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.contact-grid{display:grid;grid-template-columns:1.4fr .8fr;gap:24px;align-items:start}.cinfo{display:grid;gap:14px}.cinfo p{margin:4px 0 0;color:var(--mute)}
/* footer */
.foot{margin-top:80px;background:#0b1a33;color:#aebcd8;padding:56px 0 0;border-top:4px solid var(--accent)}
.fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.3fr;gap:40px}.foot .brand{color:#fff;margin-bottom:12px}
.foot .logo{background:#fff;border-radius:10px;padding:4px 6px;height:42px}
.foot h4{color:#fff;margin:0 0 14px;font-size:1.05rem}.foot ul{list-style:none;padding:0;margin:0}.foot li{padding:4px 0}
.foot a{color:#aebcd8}.foot a:hover{color:var(--accent)}.foot p{margin:0 0 10px;line-height:1.9}.foot .fi b{color:#fff;font-weight:600}
.social{display:flex;gap:10px;margin-top:14px}.social a{width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.08);display:grid;place-items:center;color:#fff}.social a:hover{background:var(--accent);color:#1a1200}.social svg{width:20px;height:20px}
.enamad{margin-top:10px;background:#fff;border-radius:12px;padding:8px;display:inline-block}
.fbar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:40px;padding-top:20px;padding-bottom:24px;border-top:1px solid rgba(255,255,255,.1);font-size:.88rem;color:#7f8fb0}
/* mobile nav */
.burger{display:none;background:#fff;border:1px solid var(--line);border-radius:10px;width:42px;height:42px;cursor:pointer;flex-direction:column;gap:5px;align-items:center;justify-content:center;padding:0}
.burger span{display:block;width:20px;height:2px;background:var(--navy);border-radius:2px}
.acts-m{display:none}
/* panel */
.side .ngroup{font-size:.74rem;color:#7f8fb0;margin:14px 14px 4px;letter-spacing:.02em}
.side nav a{display:flex;align-items:center;gap:10px}.ni{width:19px;height:19px;flex:none;opacity:.9}
.who{display:grid;gap:2px}.who b{color:#fff}.who span{font-size:.8rem;color:#7f8fb0}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;padding-bottom:14px;border-bottom:1px solid var(--line)}.hello{color:var(--mute);font-weight:600}
a.stat{display:block;transition:transform .15s,box-shadow .15s}a.stat:hover{transform:translateY(-2px);box-shadow:var(--sh)}
.dash2{display:grid;grid-template-columns:1fr 1.2fr;gap:24px;align-items:start}
.todo{padding:8px 18px}.todo a{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px dashed var(--line)}.todo a:last-child{border-bottom:0}.todo a:hover span{color:var(--navy2)}
.pill{background:var(--accent);color:#1a1200;border-radius:999px;padding:0 12px;font-size:.9rem;min-width:30px;text-align:center}
.qa{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:900px){
 .burger{display:flex}.bar{flex-wrap:wrap;height:auto;padding:10px 0}.bar .acts{display:none}.brand{margin-left:auto}
 nav{display:none;order:5;width:100%;flex-direction:column;background:#fff;border-top:1px solid var(--line);padding:10px 0;margin-top:8px}
 body.nav-open nav{display:flex}nav a{padding:10px 14px}.acts-m{display:flex;gap:8px;padding:8px 14px 4px}.acts-m a{background:var(--tint);border-radius:10px;padding:6px 18px!important;font-weight:700;color:var(--navy)}
 .feature,.cbgrid,.contact-grid,.dash2{grid-template-columns:1fr}.feature{padding:22px}.fgrid{grid-template-columns:1fr 1fr}.strip .wrap{grid-template-columns:1fr 1fr}
 .side nav .ngroup{display:none}}
@media(max-width:560px){.fgrid{grid-template-columns:1fr}.strip .wrap{grid-template-columns:1fr}.prose{padding:22px}}
.foot .wrap.fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.3fr;gap:40px;flex-wrap:nowrap}
.foot .wrap.fbar{display:flex;justify-content:space-between}
@media(max-width:900px){.foot .wrap.fgrid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.foot .wrap.fgrid{grid-template-columns:1fr}}
