:root{--primary: #2563EB;--primary-dark: #1d4ed8;--secondary: #F59E0B;--accent: #EC4899;--bg: #EFF6FF;--fg: #0F172A;--muted: #F1F5FD;--border: #c9d8f6;--green: #16a34a;--red: #dc2626;--amber: #d97706;--ink: #0F172A;--card-shadow: 6px 6px 0 rgba(15, 23, 42, .9);--card-border: 3px solid var(--ink);--radius: 20px;--font-head: "Baloo 2", "Tajawal", sans-serif;--font-body: "Tajawal", "Baloo 2", sans-serif}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);background:var(--bg);color:var(--fg);min-height:100vh;line-height:1.7}h1,h2,h3,h4{font-family:var(--font-head);line-height:1.35}button{font-family:var(--font-body);cursor:pointer}input,textarea,select{font-family:var(--font-body);font-size:1rem;color:var(--fg)}a{color:var(--primary)}::selection{background:#fde68a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:var(--card-border);border-radius:14px;padding:10px 18px;font-weight:700;font-size:1rem;color:#fff;background:var(--primary);box-shadow:4px 4px #0f172ae6;transition:transform .18s ease-out,box-shadow .18s ease-out}.btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px #0f172ae6}.btn:active{transform:translate(2px,2px);box-shadow:1px 1px #0f172ae6}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:3px 3px #0f172a80}.btn.ghost{background:#fff;color:var(--ink)}.btn.yellow{background:var(--secondary)}.btn.pink{background:var(--accent)}.btn.green{background:var(--green)}.btn.red{background:var(--red)}.btn.sm{padding:6px 12px;font-size:.85rem;border-radius:10px;box-shadow:3px 3px #0f172ae6}.card{background:#fff;border:var(--card-border);border-radius:var(--radius);box-shadow:var(--card-shadow);padding:20px}.clay{background:linear-gradient(145deg,#fff,#e8f1ff);border:var(--card-border);border-radius:var(--radius);box-shadow:var(--card-shadow)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-weight:800;font-size:.95rem}.field input,.field textarea,.field select{border:3px solid var(--ink);border-radius:12px;padding:10px 12px;background:#fff;outline:none;transition:box-shadow .15s}.field input:focus,.field textarea:focus,.field select:focus{box-shadow:0 0 0 4px #2563eb40}.field textarea{min-height:80px;resize:vertical}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--muted);border:2px solid var(--ink);border-radius:999px;padding:4px 12px;font-size:.82rem;font-weight:700}.tag{display:inline-block;border:2px solid var(--ink);border-radius:999px;padding:1px 10px;font-size:.75rem;font-weight:800}.tag.blue{background:#dbeafe;color:#1d4ed8}.tag.green{background:#dcfce7;color:#15803d}.tag.yellow{background:#fef3c7;color:#b45309}.tag.pink{background:#fce7f3;color:#be185d}.tag.gray{background:#e2e8f0;color:#475569}.home{min-height:100vh;position:relative;overflow:hidden;background:radial-gradient(1000px 600px at 85% -10%,rgba(37,99,235,.18),transparent 60%),radial-gradient(800px 500px at 10% 110%,rgba(236,72,153,.16),transparent 60%),radial-gradient(600px 400px at 50% 50%,rgba(245,158,11,.12),transparent 60%),var(--bg)}.blob{position:absolute;border-radius:50%;filter:blur(2px);opacity:.8;animation:floaty 9s ease-in-out infinite;pointer-events:none}.blob.b1{width:220px;height:220px;background:#2563eb40;top:8%;left:6%}.blob.b2{width:150px;height:150px;background:#f59e0b4d;bottom:12%;left:12%;animation-delay:-3s}.blob.b3{width:180px;height:180px;background:#ec489938;top:15%;right:8%;animation-delay:-6s}.blob.b4{width:120px;height:120px;background:#16a34a33;bottom:8%;right:18%;animation-delay:-1.5s}@keyframes floaty{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-24px) rotate(6deg)}}.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 26px;position:relative;z-index:5}.brand{display:flex;align-items:center;gap:12px}.brand .logo{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--primary);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);color:#fff}.brand h1{font-size:1.35rem;font-weight:800}.brand p{font-size:.8rem;color:#475569;font-weight:700}.topbar .btn{font-size:.85rem;padding:8px 14px}.hero{position:relative;z-index:3;max-width:1180px;margin:0 auto;padding:20px 24px 70px}.hero-head{text-align:center;margin-bottom:34px}.hero-head h2{font-size:clamp(1.9rem,4.4vw,3rem);font-weight:800}.hero-head h2 .hl{color:var(--primary)}.hero-head p{max-width:640px;margin:10px auto 0;color:#475569;font-weight:500;font-size:1.05rem}.portal-top{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-bottom:34px}.portal-card{position:relative;border:var(--card-border);border-radius:24px;padding:20px 22px;display:flex;align-items:center;gap:16px;text-align:right;cursor:pointer;transition:transform .2s ease-out,box-shadow .2s ease-out;color:var(--ink);text-decoration:none}.portal-card:hover{transform:translateY(-6px)}.portal-card:active{transform:translateY(0)}.portal-card .picon{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;flex-shrink:0;border:3px solid var(--ink);color:#fff;box-shadow:4px 4px 0 var(--ink)}.portal-card h3{font-size:1.2rem;font-weight:800}.portal-card p{font-size:.85rem;font-weight:600;color:#475569}.portal-card .arr{margin-inline-start:auto;font-size:1.4rem}.portal-card.teacher{background:linear-gradient(135deg,#fef3c7,#fde68a)}.portal-card.teacher .picon{background:var(--secondary)}.portal-card.admin{background:linear-gradient(135deg,#fce7f3,#fbcfe8)}.portal-card.admin .picon{background:var(--accent)}.portal-center{display:grid;grid-template-columns:1fr 1fr;gap:34px;max-width:900px;margin:0 auto}.portal-card.big{flex-direction:column;text-align:center;padding:34px 24px;gap:14px}.portal-card.big .picon{width:92px;height:92px;border-radius:26px}.portal-card.big h3{font-size:1.6rem}.portal-card.big p{font-size:.95rem}.portal-card.student{background:linear-gradient(135deg,#dbeafe,#bfdbfe)}.portal-card.student .picon{background:var(--primary)}.portal-card.parent{background:linear-gradient(135deg,#dcfce7,#bbf7d0)}.portal-card.parent .picon{background:var(--green)}.portal-card .lock{position:absolute;top:-10px;inset-inline-end:14px;width:34px;height:34px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;border:3px solid #fff}.demo-box{max-width:640px;margin:42px auto 0;background:#fff;border:3px dashed var(--ink);border-radius:18px;padding:16px 20px;font-size:.85rem}.demo-box summary{cursor:pointer;font-weight:800;color:var(--primary)}.demo-box table{width:100%;border-collapse:collapse;margin-top:10px}.demo-box td,.demo-box th{border:1px solid var(--border);padding:6px 8px;text-align:center;font-weight:600}.demo-box th{background:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:60;padding:16px;animation:fadeIn .2s ease-out}.modal{width:100%;max-width:420px;background:#fff;border:var(--card-border);border-radius:24px;box-shadow:10px 10px #0f172ae6;padding:26px;animation:popIn .25s ease-out}.modal .m-head{display:flex;align-items:center;gap:12px;margin-bottom:18px}.modal .m-head .picon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;color:#fff;border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink)}.modal .m-head h3{font-size:1.25rem;font-weight:800}.modal .m-close{margin-inline-start:auto;border:2px solid var(--ink);border-radius:10px;background:var(--muted);width:34px;height:34px;font-size:1rem;font-weight:800}.err-msg{background:#fee2e2;border:2px solid var(--ink);color:#b91c1c;border-radius:12px;padding:8px 12px;font-weight:700;font-size:.88rem;margin-bottom:12px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.92) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.shell{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.shell-top{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#fff;border-bottom:3px solid var(--ink);position:sticky;top:0;z-index:30}.shell-top .logo{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--primary);color:#fff;border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink)}.shell-top h2{font-size:1.1rem;font-weight:800}.shell-top .who{font-size:.8rem;color:#475569;font-weight:700}.shell-top .spacer{flex:1}.points-pill{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#fde68a,#fbbf24);border:3px solid var(--ink);border-radius:999px;padding:6px 16px;font-weight:800;font-size:1rem;box-shadow:3px 3px 0 var(--ink)}.shell-body{display:flex;flex:1}.sidebar{width:250px;flex-shrink:0;background:#fff;border-inline-end:3px solid var(--ink);padding:16px 12px;display:flex;flex-direction:column;gap:6px}.sidebar .s-title{font-size:.8rem;font-weight:800;color:#64748b;padding:8px 10px 2px}.sidebar button.sitem{display:flex;align-items:center;gap:10px;text-align:right;border:2px solid transparent;background:transparent;border-radius:12px;padding:10px 12px;font-weight:700;font-size:.95rem;color:var(--fg);transition:all .15s}.sidebar button.sitem:hover{background:var(--muted)}.sidebar button.sitem.active{background:#dbeafe;border-color:var(--ink);box-shadow:3px 3px 0 var(--ink)}.sidebar .logout{margin-top:auto}.shell-main{flex:1;padding:22px;overflow:hidden}.lesson-nav{display:flex;flex-direction:column;gap:8px}.lesson-nav .ln{display:flex;align-items:center;gap:10px;border:2px solid var(--ink);border-radius:12px;padding:9px 10px;background:#fff;font-weight:700;font-size:.9rem;cursor:pointer;text-align:right;transition:all .15s}.lesson-nav .ln:hover{transform:translate(-3px)}.lesson-nav .ln.active{background:#dbeafe;box-shadow:3px 3px 0 var(--ink)}.lesson-nav .ln .num{width:26px;height:26px;border-radius:8px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:.8rem;flex-shrink:0}.lesson-nav .ln.done .num{background:var(--green)}.lesson-nav .ln .ln-info{flex:1;min-width:0}.lesson-nav .ln .ln-title{font-size:.88rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson-nav .ln .ln-sub{font-size:.72rem;color:#64748b;font-weight:600}.lesson-nav .ln.locked{opacity:.6;cursor:not-allowed}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.tabs button{border:var(--card-border);border-radius:12px;padding:8px 18px;font-weight:800;font-size:.95rem;background:#fff;color:var(--ink);box-shadow:3px 3px 0 var(--ink);transition:all .15s}.tabs button.active{background:var(--primary);color:#fff;transform:translate(-1px,-1px)}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}.section-title{font-size:1.25rem;font-weight:800;margin-bottom:6px;display:flex;align-items:center;gap:10px}.section-sub{color:#64748b;font-weight:600;margin-bottom:16px;font-size:.92rem}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:20px}.stat-card{background:#fff;border:var(--card-border);border-radius:16px;box-shadow:4px 4px 0 var(--ink);padding:14px 16px;text-align:center}.stat-card .n{font-family:var(--font-head);font-size:1.8rem;font-weight:800;color:var(--primary)}.stat-card .l{font-size:.82rem;font-weight:800;color:#475569}.stat-card.orange .n{color:var(--secondary)}.stat-card.pink .n{color:var(--accent)}.stat-card.green .n{color:var(--green)}.face-row{display:flex;gap:10px;flex-wrap:wrap}.face-box{display:flex;flex-direction:column;align-items:center;gap:4px;border:var(--card-border);border-radius:16px;padding:12px 14px;background:#fff;box-shadow:4px 4px 0 var(--ink);min-width:110px;text-align:center}.face-box .fl{font-weight:800;font-size:.82rem}.face-box .fs{font-size:.72rem;color:#64748b;font-weight:600}.chat-box{display:flex;flex-direction:column;height:480px;border:var(--card-border);border-radius:18px;background:#fff;overflow:hidden}.chat-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#dbeafe;border-bottom:3px solid var(--ink);font-weight:800}.chat-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;background:#f8fbff}.msg{max-width:78%;padding:9px 13px;border-radius:14px;font-size:.92rem;font-weight:600;border:2px solid var(--ink)}.msg.me{align-self:flex-start;background:#dbeafe;border-start-start-radius:4px}.msg.them{align-self:flex-end;background:#fff;border-end-end-radius:4px}.msg .mt{font-size:.7rem;color:#64748b;font-weight:700;margin-top:3px}.msg audio{width:220px;max-width:100%;margin-top:4px}.chat-input{display:flex;gap:8px;padding:10px;border-top:3px solid var(--ink);background:#fff;align-items:center}.chat-input input{flex:1;border:2px solid var(--ink);border-radius:10px;padding:9px 12px;outline:none}.chat-input button{border:2px solid var(--ink);border-radius:10px;background:var(--primary);color:#fff;width:40px;height:40px;display:grid;place-items:center}.chat-input button.rec{background:var(--red);animation:pulse 1.4s infinite}@keyframes pulse{0%,to{box-shadow:0 0 #dc262680}50%{box-shadow:0 0 0 8px #dc262600}}.lesson-viewer{display:flex;flex-direction:column;gap:14px}.lv-video{width:100%;border:var(--card-border);border-radius:16px;background:#000;aspect-ratio:16/9}.lv-img{width:100%;border:var(--card-border);border-radius:16px;max-height:460px;object-fit:cover}.task-area textarea{width:100%;min-height:130px;border:3px solid var(--ink);border-radius:14px;padding:12px}.done-banner{display:flex;align-items:center;gap:10px;background:#dcfce7;border:3px solid var(--ink);border-radius:14px;padding:12px 16px;font-weight:800;color:#15803d}.quiz-wrap{border:var(--card-border);border-radius:18px;background:#fff;overflow:hidden}.quiz-top{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#fef3c7;border-bottom:3px solid var(--ink);font-weight:800}.quiz-q{padding:18px}.quiz-q h4{font-size:1.1rem;margin-bottom:12px}.quiz-q .opt{display:block;width:100%;text-align:right;border:3px solid var(--ink);border-radius:12px;padding:10px 14px;margin-bottom:8px;background:#fff;font-weight:700;transition:all .15s}.quiz-q .opt:hover{background:#dbeafe}.quiz-q .opt.correct{background:#dcfce7}.quiz-q .opt.wrong{background:#fee2e2}.quiz-q .opt.selected{background:#dbeafe}.timer-badge{display:inline-flex;align-items:center;gap:6px;background:#fff;border:3px solid var(--ink);border-radius:999px;padding:4px 14px;font-weight:800;color:var(--red)}.map-stage{perspective:1200px}.map3d{position:relative;width:100%;max-width:520px;margin:0 auto;transform:rotateX(55deg) rotate(-28deg) scale(1.02);transform-style:preserve-3d}.map-svg{display:block;width:100%;height:auto;filter:drop-shadow(0 14px 10px rgba(15,23,42,.35))}.pin{position:absolute;transform:translate(-50%,-50%);cursor:pointer;z-index:5}.pin .dot{width:18px;height:18px;border-radius:50%;background:var(--accent);border:3px solid #fff;box-shadow:0 0 0 3px var(--ink),0 0 14px #ec4899e6;animation:ping 2s infinite}@keyframes ping{0%{box-shadow:0 0 0 3px var(--ink),0 0 #ec489999}70%{box-shadow:0 0 0 3px var(--ink),0 0 0 14px #ec489900}to{box-shadow:0 0 0 3px var(--ink),0 0 #ec489900}}.pin .plabel{position:absolute;top:-30px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;font-size:.68rem;font-weight:800;padding:1px 8px;border-radius:999px;white-space:nowrap}.pin-tooltip{position:absolute;z-index:20;width:230px;background:#fff;border:3px solid var(--ink);border-radius:14px;box-shadow:6px 6px #0f172ae6;padding:10px 12px;transform:translate(-50%,calc(-100% - 14px))}.pin-tooltip h5{font-size:.95rem;font-weight:800;color:var(--primary)}.pin-tooltip p{font-size:.8rem;font-weight:600;color:#334155}.map-note{text-align:center;font-weight:800;color:#475569;font-size:.88rem;margin-top:14px}.table-wrap{overflow-x:auto;background:#fff;border:var(--card-border);border-radius:16px;box-shadow:4px 4px 0 var(--ink)}table.tbl{width:100%;border-collapse:collapse;font-size:.9rem}.tbl th{background:var(--ink);color:#fff;padding:10px 12px;font-weight:800;text-align:right}.tbl td{padding:9px 12px;border-bottom:1px solid var(--border);font-weight:600}.tbl tr:nth-child(2n) td{background:var(--muted)}.tbl tr:hover td{background:#e8f1ff}.pbar{height:16px;background:#e2e8f0;border:2px solid var(--ink);border-radius:999px;overflow:hidden}.pbar>div{height:100%;background:linear-gradient(90deg,var(--green),#4ade80);border-radius:999px;transition:width .6s ease-out}.drop-zone{border:3px dashed var(--primary);border-radius:16px;padding:28px;text-align:center;background:#f8fbff;cursor:pointer;transition:all .2s}.drop-zone:hover{background:#dbeafe}.drop-zone input{display:none}.drop-zone .dz-title{font-weight:800;font-size:1.05rem;color:var(--primary)}.drop-zone .dz-sub{font-size:.82rem;color:#64748b;font-weight:600}.toast{position:fixed;bottom:22px;inset-inline-start:50%;transform:translate(50%);background:var(--ink);color:#fff;border:3px solid #fff;border-radius:14px;padding:12px 22px;font-weight:800;z-index:100;box-shadow:6px 6px #ec489999;animation:popIn .25s ease-out}@media (max-width: 960px){.portal-top,.portal-center{grid-template-columns:1fr}.shell-body{flex-direction:column}.sidebar{width:100%;flex-direction:row;flex-wrap:wrap;border-inline-end:none;border-bottom:3px solid var(--ink)}.sidebar .s-title{display:none}.sidebar button.sitem{flex:1 1 auto;justify-content:center}.sidebar .logout{margin-top:0}.shell-main{padding:14px}.chat-box{height:60vh}}@media (max-width: 600px){.brand p{display:none}.hero{padding:12px 14px 50px}.portal-card.big{padding:24px 16px}.stat-cards{grid-template-columns:1fr 1fr}.grid-2,.grid-3{grid-template-columns:1fr}.msg{max-width:90%}.pin .plabel{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.center{text-align:center}.mt{margin-top:14px}.mb{margin-bottom:14px}.empty{text-align:center;color:#94a3b8;font-weight:700;padding:26px}.divider{height:3px;background:var(--border);border-radius:2px;margin:16px 0}.mini-head{font-size:.95rem;font-weight:800;margin:14px 0 8px;display:flex;align-items:center;gap:8px}.answer-chip{background:#dcfce7;border:2px solid var(--ink);border-radius:10px;padding:4px 10px;font-size:.78rem;font-weight:700}.lesson-preview-video{width:100%;border-radius:10px;border:2px solid var(--ink)}.lesson-thumb{width:100%;border-radius:10px;border:2px solid var(--ink);max-height:130px;object-fit:cover}input[type=file]{font-size:.85rem}.scroll-y{max-height:460px;overflow-y:auto}
