@font-face{font-family:Abyy Sans;src:url(/fonts/abyysans-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Abyy Sans;src:url(/fonts/abyysans-Medium.woff2)format("woff2");font-weight:500 700;font-style:normal;font-display:swap}@font-face{font-family:Abyy Serif Display;src:url(/fonts/abyyserifdisplay-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Abyy Serif Display;src:url(/fonts/abyyserifdisplay-Bold.woff2)format("woff2");font-weight:600 700;font-style:normal;font-display:swap}@font-face{font-family:Abyy Serif Display;src:url(/fonts/abyyserifdisplay-Black.woff2)format("woff2");font-weight:800 900;font-style:normal;font-display:swap}:root{--font-body:"Abyy Sans", "Tajawal", system-ui, sans-serif;--font-head:"Abyy Serif Display", "Abyy Sans", "Tajawal", serif;--bg:#f6f7f5;--surface:#fff;--border:#e5e7e2;--text:#1f2421;--text-soft:#5f6b64;--text-mute:#8a938c;--accent:#1690a1;--accent-soft:#e3f4f6;--accent-ink:#0f6f7d;--accent-strong:#0f6f7d;--gold:#c0894b;--gold-soft:#f7eede;--gold-ink:#8f6224;--subj:var(--accent);--danger:#b3402a;--danger-soft:#faece7;--warn:#8a5a0b;--warn-soft:#faeeda;--radius:12px;--shadow:0 1px 2px #141e190a}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font-body);margin:0;padding:0;font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none}.app{flex-direction:column;min-height:100vh;display:flex}.site-header{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 20px}.brand{align-items:center;gap:12px;max-width:900px;margin:0 auto;display:flex}.brand-mark{background:var(--accent-soft);width:42px;height:42px;color:var(--accent);border-radius:11px;justify-content:center;align-items:center;font-size:22px;display:flex}.brand-logo{width:auto;height:46px;display:block}.brand-text{flex-direction:column;display:flex}.brand-title{font-family:var(--font-head);font-size:20px;font-weight:700}.brand-subtitle{color:var(--text-soft);font-size:13px}.container{flex:1;width:100%;max-width:900px;margin:0 auto;padding:24px 20px 40px}.section-title{color:var(--text-soft);margin:8px 2px 12px;font-size:17px;font-weight:700}.intro{border:1px solid color-mix(in srgb, var(--accent) 20%, var(--border));border-radius:var(--radius);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cg fill='none' stroke='%231690a1' stroke-opacity='0.22' stroke-width='1.2'%3E%3Cpath d='M10 10 L60 40 L110 15 M60 40 L60 90 M60 90 L15 110 M60 90 L105 105'/%3E%3C/g%3E%3Cg fill='%231690a1' fill-opacity='0.35'%3E%3Ccircle cx='10' cy='10' r='3'/%3E%3Ccircle cx='60' cy='40' r='3'/%3E%3Ccircle cx='110' cy='15' r='3'/%3E%3Ccircle cx='60' cy='90' r='3'/%3E%3Ccircle cx='15' cy='110' r='3'/%3E%3Ccircle cx='105' cy='105' r='3'/%3E%3C/g%3E%3C/svg%3E");margin-bottom:24px;padding:5px}.intro-content{background:var(--accent-soft);border-radius:calc(var(--radius) - 3px);padding:14px 16px}.intro-title{font-family:var(--font-head);color:var(--accent-ink);margin:0 0 6px;font-size:18px;font-weight:700}.intro-text{color:var(--text-soft);margin:0;font-size:15px;line-height:1.9}.week-status{border-radius:var(--radius);border:1px solid #0000;align-items:center;gap:10px;margin-bottom:6px;padding:12px 14px;font-size:14px;font-weight:500;display:flex}.week-status-icon{flex:none}.week-status-text{flex:1}.week-status-week{font-weight:700}.week-status-date{opacity:.85;font-weight:400}.week-status-note{opacity:.85;margin-top:2px;font-size:12px;font-weight:400;display:block}.week-disclaimer{color:var(--text-mute);text-align:center;margin:0 2px 20px;font-size:11px}.week-attend{background:var(--accent-soft);color:var(--accent-ink);border-color:color-mix(in srgb, var(--accent) 25%, var(--border))}.week-remote{color:#4b2c73;background:#eee7f6;border-color:#d9c9f0}.week-midterm{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb, var(--warn) 30%, var(--border))}.week-finals{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 30%, var(--border))}.week-break{background:var(--bg);color:var(--text-soft);border-color:var(--border)}.smart-summary{background:var(--surface);border:1px solid var(--border);border-inline-start:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);align-items:flex-start;gap:10px;margin-bottom:20px;padding:12px 14px;display:flex}.smart-summary-icon{color:var(--accent);flex:none;margin-top:2px}.smart-summary-text{color:var(--text);margin:0;font-size:14px;line-height:1.8;animation:.4s smart-summary-fade}@keyframes smart-summary-fade{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.semester-progress{margin-bottom:20px}.semester-progress-track{height:6px;position:relative}.semester-progress-fill-wrap{background:var(--border);border-radius:4px;height:100%;overflow:hidden}.semester-progress-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .3s}.semester-progress-label{color:var(--text-soft);text-align:center;margin-top:6px;font-size:12px;display:block}.semester-milestone{border:2px solid var(--surface);cursor:pointer;border-radius:50%;width:11px;height:11px;margin-inline-start:-5.5px;padding:0;position:absolute;top:50%;transform:translateY(-50%)}.milestone-midterm{background:var(--warn)}.milestone-break{background:var(--text-mute)}.milestone-finals{background:var(--danger)}.semester-milestone-tip{background:var(--text);color:var(--surface);white-space:nowrap;opacity:0;pointer-events:none;border-radius:6px;padding:4px 9px;font-size:11px;font-weight:500;transition:opacity .15s;position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%)}.semester-milestone:hover .semester-milestone-tip,.semester-milestone:focus-visible .semester-milestone-tip,.semester-milestone:focus .semester-milestone-tip{opacity:1}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:28px;padding:8px 8px 4px}.panel .section-title{margin:0 0 4px;padding:8px 8px 2px}.deadline-list{margin:0;padding:0;list-style:none}.overdue-group{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.overdue-group summary{cursor:pointer;color:var(--text-soft);align-items:center;gap:6px;padding:6px 4px;font-size:14px;font-weight:500;list-style:none;display:flex}.overdue-group summary::-webkit-details-marker{display:none}.overdue-group summary:before{content:"◂";font-size:12px;transition:transform .15s}.overdue-group[open] summary:before{transform:rotate(-90deg)}.overdue-group .deadline-list{opacity:.85}.deadline-li{border-top:1px solid var(--border);align-items:flex-start;gap:4px;display:flex}.deadline-list li:first-child.deadline-li{border-top:none}.deadline-li .task-checkbox{margin-top:14px;margin-inline-start:10px}.deadline-row{flex-direction:column;flex:1;gap:4px;min-width:0;padding-block:12px;padding-inline-end:12px;transition:background .12s;display:flex}.deadline-row:hover{background:var(--bg)}.deadline-dot{background:var(--subj);border-radius:50%;flex:none;width:9px;height:9px}.deadline-top{align-items:center;gap:10px;display:flex}.deadline-title{flex:1;font-weight:500}.deadline-sub{align-items:center;gap:6px;padding-inline-start:19px;display:flex}.deadline-subject{color:var(--text-soft);font-size:13px;font-weight:500}.deadline-sep{color:var(--text-mute);font-size:11px}.deadline-instructor{color:var(--text-mute);align-items:center;gap:4px;font-size:12px;display:inline-flex}.calendar-panel{padding:6px}.calendar-toggle{cursor:pointer;border-radius:var(--radius);background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:10px 8px;font-family:inherit;display:flex}.calendar-toggle:hover{background:var(--bg)}.calendar-toggle-arrow{color:var(--text-mute);font-size:18px;transition:transform .15s;transform:rotate(90deg)}.calendar-toggle[aria-expanded=true] .calendar-toggle-arrow{transform:rotate(-90deg)}.calendar-head{justify-content:center;align-items:center;padding:6px 6px 12px;display:flex}.calendar-nav{align-items:center;gap:10px;display:flex}.calendar-nav-btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;width:28px;height:28px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;font-size:16px;display:flex}.calendar-nav-btn:hover{background:var(--bg)}.calendar-month-label{text-align:center;min-width:90px;font-size:14px;font-weight:700}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-weekday{text-align:center;color:var(--text-mute);padding:4px 0;font-size:12px}.calendar-cell{aspect-ratio:1;cursor:default;color:var(--text);background:0 0;border:none;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:2px;font-size:13px;display:flex}.calendar-cell.empty{cursor:default}.calendar-cell:not(.empty){cursor:pointer}.calendar-cell:not(.empty):hover{background:var(--bg)}.calendar-cell.today .calendar-daynum{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.calendar-cell.selected{background:color-mix(in srgb, var(--accent) 12%, #fff)}.calendar-dots{gap:3px;display:flex}.calendar-dot{border-radius:50%;width:5px;height:5px}.calendar-day-details{border-top:1px solid var(--border);margin-top:14px;padding-top:12px}.calendar-day-title{align-items:center;gap:6px;margin:0 0 8px;font-size:14px;font-weight:700;display:flex}.calendar-day-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.calendar-day-list a{align-items:center;gap:8px;font-size:14px;display:flex}.calendar-day-subject{color:var(--text-soft);font-size:13px}.calendar-empty{text-align:center;color:var(--text-mute);padding:16px 8px 4px;font-size:13px}.calendar-empty p{margin:0 0 8px}.calendar-empty-btn{color:var(--subj,var(--accent));border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;padding:6px 14px;font-family:inherit;font-size:13px}.calendar-empty-btn:hover{background:color-mix(in srgb, var(--accent) 10%, #fff);border-color:var(--accent)}.task-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.add-cal{flex-wrap:wrap;gap:8px;display:flex}.add-cal-btn{color:var(--subj);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:5px;padding:4px 10px;font-family:inherit;font-size:12px;display:inline-flex}.add-cal-btn:hover{background:color-mix(in srgb, var(--subj) 10%, #fff);border-color:var(--subj)}.manual-copy-input{color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;min-width:200px;max-width:100%;padding:4px 10px;font-family:inherit;font-size:12px}.task-checkbox{border:1.5px solid var(--border-strong,var(--text-mute));background:var(--surface);cursor:pointer;color:#fff;border-radius:6px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:flex}.task-checkbox:hover{border-color:var(--subj,var(--accent))}.task-checkbox.checked{background:var(--subj,var(--accent));border-color:var(--subj,var(--accent))}.task-head .task-checkbox{margin-inline-end:2px}.celebration{background:var(--accent-soft);color:var(--accent-ink);border:1px solid color-mix(in srgb, var(--accent) 30%, var(--border));border-radius:var(--radius);justify-content:center;align-items:center;gap:8px;margin-bottom:16px;padding:14px;font-size:14px;font-weight:500;animation:.35s celebration-in;display:flex;position:relative;overflow:hidden}@keyframes celebration-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.celebration-burst{pointer-events:none;position:absolute;inset:0}.celebration-dot{background:var(--accent);width:6px;height:6px;animation:1.1s ease-out forwards celebration-burst;animation-delay:calc(var(--i) * 40ms);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.dot-1{background:var(--gold)}.dot-2{background:var(--danger)}.dot-3{background:#4f8f3a}.dot-4{background:var(--accent-ink)}@keyframes celebration-burst{0%{opacity:1;transform:translate(-50%,-50%)translate(0)scale(1)}to{transform:translate(-50%, -50%) translate(calc((var(--i) - 4.5) * 34px), -46px) scale(0);opacity:0}}.task-item.task-flash{animation:2s task-flash-pulse}@keyframes task-flash-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--subj) 45%, transparent)}20%{box-shadow:0 0 0 4px color-mix(in srgb, var(--subj) 35%, transparent)}to{box-shadow:var(--shadow)}}.drive-btn{background:var(--accent);color:#fff;font-family:var(--font-head);box-shadow:var(--shadow);border-radius:12px;justify-content:center;align-items:center;gap:10px;margin-top:24px;padding:16px 20px;font-size:17px;font-weight:700;transition:background .12s;display:flex}.drive-btn:hover{background:var(--accent-strong)}.drive-btn-label{align-items:center;gap:8px;display:inline-flex}.drive-btn-arrow{opacity:.85;flex:none}.subject-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;display:grid}.subject-card{background:color-mix(in srgb, var(--subj) 8%, #fff);border:1px solid color-mix(in srgb, var(--subj) 22%, var(--border));border-radius:var(--radius);border-top:3px solid var(--subj);box-shadow:var(--shadow);padding:18px 18px 14px;transition:border-color .12s,transform .12s,box-shadow .12s,background .12s;display:block}.subject-card:hover{background:color-mix(in srgb, var(--subj) 13%, #fff);border-color:var(--subj);transform:translateY(-2px);box-shadow:0 4px 14px #141e191a}.subject-card-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.subject-icon{background:color-mix(in srgb, var(--subj) 16%, #fff);border-radius:9px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;font-size:16px;display:flex}.subject-icon-lg{border-radius:11px;width:40px;height:40px;font-size:20px}.subject-header-top{align-items:center;gap:10px;display:flex}.code-chip{color:color-mix(in srgb, var(--subj) 78%, #000);background:color-mix(in srgb, var(--subj) 14%, #fff);border-radius:8px;padding:3px 10px;font-size:13px;font-weight:500}.subject-name{font-family:var(--font-head);margin:4px 0 6px;font-size:20px;font-weight:700;line-height:1.5}.subject-instructor{color:var(--text-soft);align-items:center;gap:5px;margin:0;font-size:13px;display:flex}.subject-card-meta{color:var(--text);border-top:1px solid var(--border);grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px;padding-top:12px;font-size:13px;font-weight:500;line-height:1.4;display:grid}.subject-card-meta>span{text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex}.meta-count{align-items:center;gap:4px;font-size:15px;font-weight:700;display:inline-flex}.meta-label{color:var(--text-soft);font-size:12px;font-weight:500}.back-link{color:var(--subj);margin-bottom:16px;font-size:14px;display:inline-block}.back-link:hover{text-decoration:underline}.subject-header{margin-bottom:20px}.required-tasks{margin-bottom:28px}.required-tasks .section-title{margin:0 2px 12px}.subject-page-title{font-family:var(--font-head);margin:10px 0 6px;font-size:26px;font-weight:800}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-bottom:20px;display:flex}.tab{color:var(--text-soft);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px;font-family:inherit;font-size:15px}.tab:hover{color:var(--text)}.tab-active{color:color-mix(in srgb, var(--subj) 80%, #000);border-bottom-color:var(--subj);font-weight:500}.badge{white-space:nowrap;border-radius:20px;padding:2px 10px;font-size:12px;font-weight:500}.badge-task{background:var(--accent-soft);color:var(--accent-ink)}.badge-research{color:#4b2c73;background:#eee7f6}.badge-exam{background:var(--gold-soft);color:var(--gold-ink)}.pill{white-space:nowrap;border-radius:20px;padding:2px 10px;font-size:12px;font-weight:500}.pill-overdue{background:var(--danger-soft);color:var(--danger)}.pill-soon{background:var(--warn-soft);color:var(--warn)}.pill-upcoming{background:var(--bg);color:var(--text-soft)}.pill-no-date{color:#5a4420;background:#f0e8d3}.task-list,.summary-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.task-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.task-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.task-title{flex:1;font-weight:700}.task-due{color:var(--text-soft);align-items:center;gap:6px;margin:8px 0 0;font-size:14px;display:flex}.task-details{color:var(--text-soft);margin:6px 0 0;font-size:14px;line-height:1.8}.task-more{border-top:1px solid var(--border);margin-top:12px;padding-top:10px}.task-more summary{cursor:pointer;color:var(--accent-ink);align-items:center;gap:6px;font-size:14px;font-weight:500;list-style:none;display:flex}.task-more summary::-webkit-details-marker{display:none}.task-more summary:after{content:"⌄";margin-inline-start:auto;font-size:14px;transition:transform .15s}.task-more[open] summary:after{transform:rotate(180deg)}.detail-list{color:var(--text-soft);flex-direction:column;gap:7px;margin:10px 4px 0;padding-inline-start:20px;font-size:14px;display:flex}.detail-list li{line-height:1.6}.topics-note{color:var(--text-mute);margin:10px 0 0;font-size:13px}.quiz-wrap{flex-direction:column;gap:20px;display:flex}.quiz-title{font-family:var(--font-head);align-items:center;gap:8px;margin:0 0 14px;font-size:18px;font-weight:700;display:flex}.quiz-start{color:var(--subj);border:1px solid var(--border);border-radius:8px;margin-bottom:12px;padding:4px 14px;font-size:14px;display:inline-block}.quiz-q{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px;padding:14px 16px}.quiz-q summary{cursor:pointer;align-items:center;gap:8px;font-size:15px;list-style:none;display:flex}.quiz-q summary::-webkit-details-marker{display:none}.quiz-q summary:after{content:"⌄";color:var(--text-mute);margin-inline-start:auto;transition:transform .15s}.quiz-q[open] summary:after{transform:rotate(180deg)}.quiz-qnum{color:#fff;background:var(--subj);white-space:nowrap;border-radius:6px;flex:none;padding:2px 9px;font-size:13px;font-weight:500}.quiz-qtext{color:var(--text);flex:1;font-weight:500}.quiz-q[open] summary{border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:12px}.quiz-answer{color:var(--text-soft);font-size:14px;line-height:1.9}.quiz-answer-label{color:color-mix(in srgb, var(--subj) 78%, #000);background:color-mix(in srgb, var(--subj) 12%, #fff);border-radius:6px;margin:0 0 10px;padding:2px 10px;font-size:12px;font-weight:500;display:inline-block}.quiz-subhead{font-family:var(--font-head);color:var(--text);margin:16px 0 6px;font-size:15px;font-weight:700}.quiz-para,.quiz-labeled,.quiz-block{margin:8px 0}.quiz-label{color:color-mix(in srgb, var(--subj) 78%, #000);font-weight:500}.summary-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.summary-title{align-items:center;gap:8px;font-weight:500;display:flex}.summary-actions{gap:8px;display:flex}.summary-actions a,.quiz-start-btn{color:var(--subj);border:1px solid var(--border);border-radius:8px;padding:4px 14px;font-size:14px}.summary-actions a:hover,.quiz-start-btn:hover{border-color:var(--subj);background:color-mix(in srgb, var(--subj) 12%, #fff)}.empty{color:var(--text-mute);padding:8px 4px;font-size:15px}.site-footer{text-align:center;color:var(--text-mute);border-top:1px solid var(--border);margin-top:auto;padding:24px 20px;font-size:13px}@media (width<=520px){.subject-grid{grid-template-columns:1fr}.deadline-instructor,.deadline-sep{display:none}.container{padding:18px 14px 32px}.intro{padding:13px 14px}.drive-btn{padding:13px 16px;font-size:15px}.subject-card{padding:14px 14px 12px}.task-item{padding:14px}}@media (prefers-color-scheme:dark){:root{--bg:#14181a;--surface:#1b2124;--border:#2b3336;--text:#eceeec;--text-soft:#a7b1ac;--text-mute:#78827d;--accent-soft:#12313a;--accent-ink:#7dd6e6;--gold-soft:#362a17;--gold-ink:#f0cd93;--danger-soft:#3a1c17;--warn-soft:#362a13;--shadow:0 1px 3px #00000073}.week-remote{color:#c9b8e8;background:#2a2140;border-color:#3d3160}.subject-card{background:color-mix(in srgb, var(--subj) 16%, var(--surface));border-color:color-mix(in srgb, var(--subj) 32%, var(--border))}.subject-card:hover{background:color-mix(in srgb, var(--subj) 24%, var(--surface))}.code-chip{color:color-mix(in srgb, var(--subj) 55%, #fff);background:color-mix(in srgb, var(--subj) 24%, var(--surface))}.subject-icon{background:color-mix(in srgb, var(--subj) 26%, var(--surface))}.tab-active{color:color-mix(in srgb, var(--subj) 55%, #fff)}.add-cal-btn:hover{background:color-mix(in srgb, var(--subj) 20%, var(--surface))}.quiz-answer-label{color:color-mix(in srgb, var(--subj) 55%, #fff);background:color-mix(in srgb, var(--subj) 24%, var(--surface))}.quiz-label{color:color-mix(in srgb, var(--subj) 55%, #fff)}.summary-actions a:hover,.quiz-start-btn:hover{background:color-mix(in srgb, var(--subj) 20%, var(--surface))}.calendar-cell.selected{background:color-mix(in srgb, var(--accent) 24%, var(--surface))}.calendar-empty-btn:hover{background:color-mix(in srgb, var(--accent) 20%, var(--surface))}.pill-no-date{color:#e9c98f;background:#362c17}.pill-upcoming{background:var(--surface)}}.chat-widget-root{z-index:900;flex-direction:column;align-items:flex-start;display:flex;position:fixed;bottom:20px;left:20px}.chat-fab{border:2px solid var(--gold);cursor:pointer;color:#fff;background:var(--surface);border-radius:50%;justify-content:center;align-items:center;width:58px;height:58px;transition:transform .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden;box-shadow:0 6px 20px #1690a166}.chat-fab:hover{transform:scale(1.06);box-shadow:0 8px 24px #1690a180}.chat-fab:active{transform:scale(.96)}.chat-fab-open{background:linear-gradient(135deg, var(--text-soft) 0%, var(--text) 100%);box-shadow:0 6px 20px #00000040}.chat-fab-avatar{background-image:url(/mascot/sanad-full.webp);background-position:bottom;background-repeat:no-repeat;background-size:contain;border-radius:50%;position:absolute;inset:0}.chat-fab-glow{border:2px solid var(--gold);opacity:.55;pointer-events:none;border-radius:50%;animation:2.4s ease-out infinite chat-pulse;position:absolute;inset:-6px}@keyframes chat-pulse{0%{opacity:.55;transform:scale(.85)}70%{opacity:0;transform:scale(1.35)}to{opacity:0;transform:scale(1.35)}}.chat-panel{background:var(--surface);border:1px solid var(--border);border-radius:18px;flex-direction:column;width:min(360px,100vw - 40px);height:min(520px,100vh - 140px);margin-bottom:14px;animation:.22s chat-panel-in;display:flex;overflow:hidden;box-shadow:0 12px 40px #141e192e}@keyframes chat-panel-in{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.chat-panel-header{background:linear-gradient(135deg, var(--accent) 0%, var(--accent-ink) 100%);color:#fff;justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;display:flex}.chat-panel-title{align-items:center;gap:10px;display:flex}.chat-panel-avatar{border:1px solid var(--gold);background-color:#fff;background-image:url(/mascot/sanad-full.webp);background-position:bottom;background-repeat:no-repeat;background-size:contain;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.chat-panel-name{font-size:14px;font-weight:700}.chat-panel-subtitle{opacity:.85;font-size:11px}.chat-panel-close{color:#fff;opacity:.85;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:4px;display:flex}.chat-panel-close:hover{opacity:1;background:#ffffff26}.chat-panel-body{background:var(--bg);flex-direction:column;flex:1;gap:8px;padding:14px;display:flex;overflow-y:auto}.chat-empty{color:var(--text-mute);text-align:center;margin:auto 0;padding:0 12px;font-size:13px;line-height:1.7}.chat-suggestions{flex-direction:column;gap:8px;margin-top:14px;display:flex}.chat-suggestions button{border:1px solid var(--accent-soft);background:var(--accent-soft);color:var(--accent-ink);font-size:13px;font-family:var(--font-body);text-align:right;cursor:pointer;border-radius:12px;padding:10px 14px;transition:background .15s}.chat-suggestions button:hover{background:var(--accent);color:#fff}.chat-bubble{overflow-wrap:anywhere;border-radius:14px;max-width:82%;padding:10px 13px;font-size:13.5px;line-height:1.7}.chat-bubble p{margin:0 0 6px}.chat-bubble p:last-child{margin-bottom:0}.chat-bubble ul,.chat-bubble ol{margin:0 0 6px;padding-inline-start:20px}.chat-bubble li{margin-bottom:2px}.chat-bubble .chat-heading{margin-top:4px;font-weight:700}.chat-bubble-user{background:var(--accent-strong);color:#fff;border-bottom-left-radius:4px;align-self:flex-end}.chat-bubble-assistant{background:var(--surface);border:1px solid var(--border);color:var(--text);border-bottom-right-radius:4px;align-self:flex-start}.chat-typing{gap:4px;padding:14px 16px;display:flex}.chat-typing span{background:var(--text-mute);border-radius:50%;width:6px;height:6px;animation:1.1s ease-in-out infinite chat-typing-bounce}.chat-typing span:nth-child(2){animation-delay:.15s}.chat-typing span:nth-child(3){animation-delay:.3s}@keyframes chat-typing-bounce{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.chat-error{color:var(--danger);background:var(--danger-soft);text-align:center;border-radius:10px;align-self:center;padding:8px 12px;font-size:12.5px}.chat-panel-input{border-top:1px solid var(--border);background:var(--surface);gap:8px;padding:10px;display:flex}.chat-panel-input input{border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13.5px;font-family:var(--font-body);border-radius:999px;flex:1;padding:10px 16px}.chat-panel-input input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.chat-panel-input button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;transition:opacity .15s;display:flex}.chat-panel-input button:disabled{opacity:.45;cursor:default}@media (width<=480px){.chat-widget-root{bottom:12px;left:12px}.chat-fab{width:52px;height:52px}}.quiz-start-btn{font-family:var(--font-body);cursor:pointer;background:0 0}.practice{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;scroll-margin-top:16px}.practice-header{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.practice-back{color:var(--subj);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;gap:4px;padding:0;font-size:14px;display:inline-flex}.practice-title{font-family:var(--font-head);margin:0;font-size:18px}.practice-progress{background:var(--bg);border-radius:999px;height:6px;overflow:hidden}.practice-progress span{background:var(--subj);height:100%;transition:width .25s;display:block}.practice-meta{color:var(--text-mute);flex-wrap:wrap;justify-content:space-between;gap:6px;margin:8px 0 14px;font-size:13px;display:flex}.practice-question{margin:0 0 14px;font-size:16px;font-weight:600;line-height:1.8}.practice-choices{flex-direction:column;gap:8px;display:flex}.practice-choice{text-align:right;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font-family:var(--font-body);cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:12px 14px;font-size:14.5px;line-height:1.6;transition:border-color .15s,background .15s;display:flex}.practice-choice:not(:disabled):hover{border-color:var(--subj)}.practice-choice:disabled{cursor:default}.practice-choice.is-correct{background:color-mix(in srgb, #3f8f4a 14%, var(--surface));border-color:#3f8f4a}.practice-choice.is-wrong{border-color:var(--danger);background:var(--danger-soft)}.practice-choice.is-dim{opacity:.55}.practice-feedback{border-radius:10px;margin:14px 0 0;padding:10px 12px;font-size:14px;line-height:1.7}.practice-feedback.ok{background:color-mix(in srgb, #3f8f4a 12%, var(--surface))}.practice-feedback.no{background:var(--danger-soft)}.practice-explain{color:var(--text-soft);font-size:13.5px}.practice-essay{flex-direction:column;gap:10px;display:flex}.practice-essay textarea{resize:vertical;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font-family:var(--font-body);border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.7}.practice-model{background:var(--accent-soft);border-radius:10px;padding:12px;font-size:14px;line-height:1.8}.practice-model p{margin:4px 0 0}.practice-self{flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.practice-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);font-family:var(--font-body);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:9px 16px;font-size:14px;display:inline-flex}.practice-btn-primary{background:var(--subj);border-color:var(--subj);color:#fff}.practice-btn-ok{color:#3f8f4a;border-color:#3f8f4a}.practice-btn-no{border-color:var(--danger);color:var(--danger)}.practice-next{width:100%;margin-top:14px}.practice-results{flex-direction:column;gap:14px;display:flex}.practice-score{text-align:center;background:color-mix(in srgb, var(--subj) 12%, var(--surface));border-radius:12px;padding:14px}.practice-score-num{font-family:var(--font-head);font-size:32px;font-weight:700}.practice-score-pct{color:var(--text-soft);font-size:15px}.practice-chapters{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.practice-chapters li{background:var(--bg);border-radius:8px;justify-content:space-between;padding:8px 12px;font-size:14px;display:flex}.practice-review-title{margin:4px 0 0;font-size:16px}.practice-review{flex-direction:column;gap:12px;margin:0;padding-inline-start:20px;display:flex}.practice-review p{margin:0;font-size:14px;line-height:1.7}.practice-review-q{font-weight:600}.practice-actions{flex-wrap:wrap;gap:8px;display:flex}.quiz-page-subject{color:var(--subj);margin:0 0 12px;font-size:14px;font-weight:500}.quiz-page-group{margin-bottom:24px}.past-date{color:var(--text-mute);margin:-4px 0 10px;font-size:13px}.past-topics{flex-direction:column;gap:8px;margin:0;padding-inline-start:22px;font-size:15px;line-height:1.7;display:flex}.past-topics li::marker{color:var(--subj);font-weight:700}.focus-box{border:1px solid color-mix(in srgb, var(--gold) 45%, var(--border));background:var(--gold-soft);border-radius:var(--radius);margin-bottom:16px;padding:14px 16px}.focus-title{color:var(--gold-ink);margin:0 0 10px;font-size:15px}.focus-box ol{columns:2 220px;column-gap:24px;margin:0;padding-inline-start:22px;font-size:14px;line-height:1.8}.focus-box li{break-inside:avoid}.focus-box li::marker{color:var(--gold-ink);font-weight:700}.practice-focus{margin-bottom:14px;padding:10px 14px}.practice-focus summary{cursor:pointer;color:var(--gold-ink);font-size:14px;font-weight:600}.practice-focus[open] summary{margin-bottom:8px}
