@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700;800;900&display=swap');

/* =====================================================================
   پنل مدرسه — سیستم طراحی «کاشی و نور»
   بازطراحی کامل گرافیکی: عمق لایه‌ای، شیشه‌ای، طلایی، فیروزه‌ای
   ===================================================================== */

:root{
    /* پالت اصلی */
    --turquoise:#0FA396;
    --turquoise-dark:#0A6B66;
    --turquoise-soft:#E4F4F2;
    --lapis:#16305E;
    --lapis-deep:#0C1C3C;
    --gold:#C9A24B;
    --gold-light:#F0D48A;
    --gold-soft:#FBF2DC;
    --terracotta:#C2603C;
    --cream:#F7F3E8;
    --cream-dark:#E9E0CB;
    --ink:#241F19;
    --muted:#8B8069;
    --white:#ffffff;
    --green:#219B5E;
    --green-soft:#E6F6ED;
    --red:#C6432B;
    --red-soft:#FCEBE8;

    --line:rgba(36,31,25,.09);
    --radius:18px;
    --radius-sm:12px;
    --radius-lg:26px;

    --shadow-xs:0 1px 2px rgba(22,48,94,.06);
    --shadow:0 10px 30px -14px rgba(12,28,60,.28), 0 2px 6px rgba(12,28,60,.05);
    --shadow-lg:0 30px 70px -30px rgba(12,28,60,.45);
    --ring:0 0 0 4px rgba(15,163,150,.16);

    --grad-deep:linear-gradient(135deg, var(--lapis-deep) 0%, var(--lapis) 45%, var(--turquoise-dark) 100%);
    --grad-gold:linear-gradient(135deg, var(--gold-light), var(--gold));
    --grad-teal:linear-gradient(135deg, var(--turquoise), var(--turquoise-dark));
}

*{box-sizing:border-box;}
*::selection{background:rgba(201,162,75,.35);}

html{scroll-behavior:smooth;}

html,body{
    margin:0;padding:0;
    font-family:'Vazirmatn', Tahoma, sans-serif;
    background:var(--cream);
    color:var(--ink);
    direction:rtl;
    font-size:15px;
    line-height:1.75;
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
}

body{
    background-color:var(--cream);
    background-image:
        radial-gradient(1100px 520px at 100% -10%, rgba(201,162,75,.16) 0%, transparent 60%),
        radial-gradient(900px 480px at -10% 0%, rgba(15,163,150,.13) 0%, transparent 60%),
        radial-gradient(800px 500px at 50% 120%, rgba(22,48,94,.08) 0%, transparent 60%);
    background-attachment:fixed;
    min-height:100vh;
}

a{text-decoration:none;color:inherit;}
button{font-family:inherit;cursor:pointer;}
input, select, textarea{font-family:inherit;}
:focus-visible{outline:2px solid var(--turquoise);outline-offset:2px;}

/* اسکرول‌بار ظریف */
*::-webkit-scrollbar{width:10px;height:10px;}
*::-webkit-scrollbar-track{background:transparent;}
*::-webkit-scrollbar-thumb{background:rgba(22,48,94,.18);border-radius:99px;border:3px solid transparent;background-clip:content-box;}
*::-webkit-scrollbar-thumb:hover{background:rgba(22,48,94,.3);background-clip:content-box;}

/* ============ نوار کاشی‌کاری ============ */
.tile-bar{
    height:8px;width:100%;
    background:
        repeating-linear-gradient(90deg,
            var(--turquoise) 0 22px,
            var(--gold) 22px 30px,
            var(--lapis) 30px 52px,
            var(--terracotta) 52px 60px);
    box-shadow:0 2px 12px rgba(12,28,60,.18);
}

/* ============ صفحه ورود ============ */
.login-wrap{
    min-height:100vh;
    display:flex;align-items:center;justify-content:center;
    padding:28px 20px;
    position:relative;
}
.login-wrap::before{
    content:'';position:fixed;inset:0;pointer-events:none;
    background-image:
        radial-gradient(circle at 1px 1px, rgba(22,48,94,.10) 1px, transparent 0);
    background-size:22px 22px;
    mask-image:radial-gradient(circle at 50% 40%, #000 0%, transparent 75%);
    -webkit-mask-image:radial-gradient(circle at 50% 40%, #000 0%, transparent 75%);
    opacity:.7;
}

.login-card{
    position:relative;
    width:100%;max-width:452px;
    background:rgba(255,255,255,.92);
    backdrop-filter:blur(14px);
    border-radius:var(--radius-lg);
    box-shadow:var(--shadow-lg);
    overflow:hidden;
    border:1px solid rgba(255,255,255,.9);
    animation:cardIn .5s cubic-bezier(.21,1,.28,1) both;
}
@keyframes cardIn{from{opacity:0;transform:translateY(14px) scale(.985);}to{opacity:1;transform:none;}}

.login-header{
    background:var(--grad-deep);
    padding:40px 24px 30px;
    text-align:center;color:#fff;position:relative;overflow:hidden;
}
.login-header::before{
    content:'';position:absolute;inset:0;
    background:
        radial-gradient(circle at 85% -20%, rgba(240,212,138,.42) 0%, transparent 52%),
        radial-gradient(circle at 5% 120%, rgba(15,163,150,.45) 0%, transparent 55%);
}
.login-header::after{
    content:'';position:absolute;left:0;right:0;bottom:0;height:5px;
    background:repeating-linear-gradient(90deg,
        var(--gold) 0 18px, rgba(255,255,255,.4) 18px 24px,
        var(--terracotta) 24px 42px, rgba(255,255,255,.4) 42px 48px);
}
.login-header .emblem{
    position:relative;z-index:1;
    width:74px;height:74px;margin:0 auto 14px;
    border-radius:50%;
    background:var(--grad-gold);
    display:flex;align-items:center;justify-content:center;
    font-size:34px;
    box-shadow:0 10px 28px rgba(0,0,0,.35), inset 0 -3px 8px rgba(0,0,0,.15);
    border:3px solid rgba(255,255,255,.35);
}
.login-header .emblem-logo{
    position:relative;z-index:1;
    width:74px;height:74px;margin:0 auto 14px;
    border-radius:50%;object-fit:cover;display:block;
    box-shadow:0 10px 28px rgba(0,0,0,.35);
    border:3px solid rgba(255,255,255,.35);
}
.login-header h1{position:relative;z-index:1;margin:0;font-size:21px;font-weight:800;letter-spacing:-.2px;}
.login-header p{position:relative;z-index:1;margin:8px 0 0;font-size:13px;opacity:.82;}

.role-tabs{display:flex;background:var(--cream);border-bottom:1px solid var(--line);}
.role-tabs button{
    flex:1;border:none;background:transparent;
    padding:16px 8px;font-size:15px;font-weight:700;color:var(--muted);
    transition:.22s ease;border-bottom:3px solid transparent;
}
.role-tabs button:hover{color:var(--lapis);}
.role-tabs button.active{
    color:var(--turquoise-dark);background:var(--white);
    border-bottom-color:var(--gold);
}

.login-body{padding:30px 28px 34px;}

/* ============ فرم‌ها ============ */
.field{margin-bottom:18px;}
.field label{display:block;font-size:13px;font-weight:700;margin-bottom:7px;color:#5C5342;}
.field input, .field select, .field textarea{
    width:100%;padding:13px 15px;
    border-radius:var(--radius-sm);
    border:1.5px solid var(--cream-dark);
    background:#FFFDF8;
    font-size:14px;color:var(--ink);
    outline:none;transition:border-color .2s, box-shadow .2s, background .2s;
}
.field textarea{resize:vertical;min-height:96px;line-height:1.9;}
.field input:hover, .field select:hover, .field textarea:hover{border-color:#DCCFA9;}
.field input:focus, .field select:focus, .field textarea:focus{
    border-color:var(--turquoise);background:#fff;box-shadow:var(--ring);
}
.field input::placeholder, .field textarea::placeholder{color:#B7AC93;}
.field-hint{font-size:12px;color:var(--muted);margin-top:7px;}

.balance-hint{
    display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
    background:linear-gradient(120deg,#FFFaEC,#F8ECCB);
    border:1px solid rgba(201,162,75,.45);
    color:#7A5F18;padding:14px 16px;border-radius:var(--radius-sm);
    font-size:12.5px;line-height:1.9;margin-bottom:14px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.7);
}
.balance-hint .btn{flex-shrink:0;}

/* ============ دکمه‌ها ============ */
.btn{
    display:inline-flex;align-items:center;justify-content:center;gap:7px;
    border:none;border-radius:var(--radius-sm);
    padding:13px 20px;font-size:14px;font-weight:800;
    transition:transform .18s ease, box-shadow .22s ease, background .22s ease, color .2s;
    position:relative;overflow:hidden;
}
.btn:active{transform:translateY(1px) scale(.995);}
.btn-primary{
    width:100%;background:var(--grad-teal);color:#fff;
    box-shadow:0 12px 24px -12px rgba(10,107,102,.85);
}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 18px 32px -14px rgba(10,107,102,.95);}
.btn-gold{background:var(--grad-gold);color:#4A3A12;box-shadow:0 10px 22px -12px rgba(201,162,75,.9);}
.btn-gold:hover{transform:translateY(-2px);}
.btn-outline{background:#fff;border:1.5px solid rgba(15,163,150,.5);color:var(--turquoise-dark);}
.btn-outline:hover{background:var(--turquoise-soft);border-color:var(--turquoise);}
.btn-sm{padding:9px 15px;font-size:13px;border-radius:10px;}
.btn-danger{background:var(--red-soft);color:var(--red);border:1px solid rgba(198,67,43,.25);}
.btn-danger:hover{background:#F9DBD5;}
.btn-approve{background:var(--green-soft);color:var(--green);border:1px solid rgba(33,155,94,.25);}
.btn-approve:hover{background:#D7F0E2;}
.modal-box .btn-danger,
.modal-box .btn-approve:not(.btn-sm){width:100%;}
#examArchEditBox .btn{width:100%;}
.btn-reject{background:var(--red-soft);color:var(--red);border:1px solid rgba(198,67,43,.25);}
.btn-reject:hover{background:#F9DBD5;}

.cert-review-actions{display:flex;gap:8px;flex-wrap:wrap;width:100%;}
.cert-review-actions .btn{flex:1 1 0;min-width:120px;}
.cert-view-link{width:100%;}

/* ============ پیام‌ها ============ */
.error-msg, .success-msg{
    padding:12px 15px;border-radius:var(--radius-sm);
    font-size:13px;font-weight:600;margin-bottom:15px;
    display:flex;align-items:center;gap:8px;
}
.error-msg{background:var(--red-soft);color:var(--red);border:1px solid rgba(198,67,43,.28);}
.success-msg{background:var(--green-soft);color:var(--green);border:1px solid rgba(33,155,94,.28);}

/* ============ بنر یادآوری موعد تکلیف (زیر topbar) ============ */
.homework-banners{display:flex;flex-direction:column;gap:15px;margin-bottom:15px;}
.homework-banner{
    padding:14px 18px;border-radius:var(--radius-sm);
    font-size:13.5px;font-weight:700;
    display:flex;align-items:center;gap:10px;
    box-shadow:var(--shadow-xs);
}
.homework-banner-today{background:var(--red-soft);color:var(--red);border:1px solid rgba(198,67,43,.28);}
.homework-banner-soon{background:var(--gold-soft);color:#8a6d16;border:1px solid rgba(201,162,75,.35);}

/* ============ انتخاب روز هفته با لیست کشویی (تکلیف جدید) ============ */
#nhDaySelect{width:100%;}
.day-select-date{margin-top:7px;font-size:12px;font-weight:700;color:var(--turquoise-dark);}
.save-notice{animation:attendanceAlertIn .3s ease;}
.demo-hint{margin-top:18px;text-align:center;font-size:12px;color:#A9A08A;}

/* ============ لایوت داشبورد ============ */
.app{display:flex;min-height:100vh;}

.sidebar{
    width:262px;flex-shrink:0;
    background:var(--grad-deep);
    color:#fff;padding:22px 16px 28px;
    position:sticky;top:0;height:100vh;overflow-y:auto;
    border-inline-start:1px solid rgba(255,255,255,.06);
    box-shadow:inset 0 0 90px rgba(0,0,0,.28);
}
.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);background-clip:content-box;}
.sidebar .brand{
    display:flex;align-items:center;gap:11px;
    padding:6px 8px 20px;
    border-bottom:1px solid rgba(255,255,255,.14);
    margin-bottom:16px;
}
.sidebar .brand .icon{
    width:42px;height:42px;border-radius:13px;
    background:var(--grad-gold);
    display:flex;align-items:center;justify-content:center;font-size:19px;
    box-shadow:0 8px 20px -8px rgba(0,0,0,.7), inset 0 -2px 6px rgba(0,0,0,.15);
}
.sidebar .brand .brand-logo-img{
    width:42px;height:42px;border-radius:13px;object-fit:cover;flex-shrink:0;
    box-shadow:0 8px 20px -8px rgba(0,0,0,.7);
}
.sidebar .brand span{font-weight:800;font-size:15.5px;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sidebar .user{
    font-size:12.5px;color:rgba(255,255,255,.78);
    background:rgba(255,255,255,.07);
    border:1px solid rgba(255,255,255,.10);
    border-radius:12px;padding:10px 12px;margin:0 2px 10px;
}
.sidebar-date{
    display:flex;align-items:center;justify-content:center;gap:6px;
    width:100%;box-sizing:border-box;
    font-size:12.5px;font-weight:700;color:#fff;
    background:rgba(255,255,255,.10);
    border:1px solid rgba(255,255,255,.16);
    border-radius:12px;padding:10px 12px;margin:0 0 18px;
}
.nav-link{
    display:flex;align-items:center;gap:11px;
    padding:12px 14px;border-radius:13px;margin-bottom:5px;
    font-size:14px;font-weight:600;color:rgba(255,255,255,.82);
    transition:background .2s, color .2s, transform .18s;
    position:relative;
}
.nav-link:hover{background:rgba(255,255,255,.09);color:#fff;transform:translateX(-3px);}
.nav-link.active{
    background:linear-gradient(90deg, rgba(255,255,255,.20), rgba(255,255,255,.06));
    color:#fff;
    box-shadow:inset 3px 0 0 var(--gold), 0 8px 20px -14px #000;
}
.nav-link .ic{font-size:16px;width:22px;text-align:center;}

.logout-link{
    margin-top:22px;
    display:flex;align-items:center;gap:11px;
    padding:12px 14px;border-radius:13px;
    font-size:14px;font-weight:700;
    background:rgba(198,67,43,.22);color:#FFE4DE;
    border:1px solid rgba(255,255,255,.10);
    transition:.2s;
}
.logout-link:hover{background:rgba(198,67,43,.4);}

.main{flex:1;padding:26px 32px 70px;min-width:0;max-width:1400px;}

/* ============ نوار بالای صفحه ============ */
.topbar{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:15px;flex-wrap:wrap;gap:14px;
    position:relative;overflow:hidden;
    background:var(--grad-deep);
    border-radius:var(--radius);
    padding:26px 30px;
    box-shadow:var(--shadow-lg);
}
.topbar::before{
    content:'';position:absolute;inset:0;pointer-events:none;
    background:
        radial-gradient(circle at 92% -20%, rgba(240,212,138,.34) 0%, transparent 48%),
        radial-gradient(circle at -5% 130%, rgba(15,163,150,.35) 0%, transparent 52%);
}
.topbar::after{
    content:'';position:absolute;left:0;right:0;bottom:0;height:5px;
    background:repeating-linear-gradient(90deg,
        var(--gold) 0 18px, rgba(255,255,255,.35) 18px 24px,
        var(--terracotta) 24px 42px, rgba(255,255,255,.35) 42px 48px);
    opacity:.92;
}
.topbar h2{
    margin:0;font-size:22px;font-weight:800;color:#fff;
    position:relative;z-index:1;display:flex;align-items:center;gap:10px;
    letter-spacing:-.3px;text-shadow:0 2px 14px rgba(0,0,0,.25);
}
.topbar .date-chip{
    position:relative;z-index:1;
    background:rgba(255,255,255,.14);
    border:1px solid rgba(255,255,255,.30);
    backdrop-filter:blur(6px);
    border-radius:999px;padding:10px 18px;font-size:13px;
    color:#fff;font-weight:700;
    box-shadow:0 6px 18px rgba(0,0,0,.18);
}
.topbar-title-row{display:flex;align-items:center;gap:12px;position:relative;z-index:1;}

/* نسخه‌ای از topbar که حتی در موبایل هم افقی می‌ماند (عنوان راست، چیپ سمت چپ هدر) */
.topbar.topbar-inline{flex-wrap:nowrap;}
.topbar.topbar-inline h2{white-space:nowrap;}
.topbar.topbar-inline .date-chip{white-space:nowrap;flex-shrink:0;}

/* ============ کارت‌ها ============ */
.card{
    background:rgba(255,255,255,.94);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    padding:24px;margin-bottom:15px;
    border:1px solid rgba(255,255,255,.9);
    position:relative;overflow:hidden;
    transition:box-shadow .25s ease, transform .25s ease;
}
.card::before{
    content:'';position:absolute;inset-inline-start:0;top:0;bottom:0;width:3px;
    background:var(--grad-gold);opacity:0;transition:opacity .25s;
}
.card:hover{box-shadow:0 22px 50px -26px rgba(12,28,60,.42);}
.card:hover::before{opacity:1;}
.card h3{
    margin:0 0 18px;font-size:16px;font-weight:800;color:var(--lapis);
    display:flex;align-items:center;gap:9px;
    padding-bottom:12px;border-bottom:1px solid var(--line);
}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:15px;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:15px;}
.grid-2 .card,.grid-3 .card{margin-bottom:0;}

.quick-links-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.quick-link{
    display:block;text-align:center;padding:14px 10px;border-radius:12px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);border:1px solid var(--cream-dark);
    color:var(--ink);font-weight:700;font-size:13px;text-decoration:none;transition:transform .12s,box-shadow .12s;
}
.quick-link:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.08);}
@media (max-width:700px){.quick-links-grid{grid-template-columns:repeat(2,1fr);}}

.filters-row{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:18px;}
.filters-row .field{margin-bottom:0;min-width:180px;flex:1;}

/* ============ همبرگر موبایل ============ */
.hamburger{
    display:none;flex-shrink:0;
    background:rgba(255,255,255,.16);
    border:1px solid rgba(255,255,255,.32);
    backdrop-filter:blur(6px);
    color:#fff;border-radius:11px;
    width:40px;height:40px;font-size:17px;
    box-shadow:0 6px 16px rgba(0,0,0,.18);
}
.sidebar-overlay{display:none;}

/* ============ ردیف دانش‌آموز ============ */
.student-row{
    display:flex;align-items:center;justify-content:space-between;
    padding:14px 16px;border-radius:14px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    border:1px solid var(--cream-dark);
    margin-bottom:10px;flex-wrap:wrap;gap:10px;
    transition:border-color .2s, box-shadow .2s, transform .2s;
}
.student-row:hover{border-color:rgba(201,162,75,.6);box-shadow:var(--shadow-xs);transform:translateY(-1px);}
.student-row .s-name{font-weight:800;font-size:14.5px;color:var(--ink);}
.student-row .s-meta{font-size:12px;color:var(--muted);}

.status-toggle{display:flex;gap:8px;flex-wrap:wrap;}
.status-btn{
    padding:9px 17px;border-radius:11px;border:1.5px solid var(--cream-dark);
    background:#fff;font-size:13px;font-weight:700;color:var(--muted);
    transition:.18s ease;
}
.status-btn:hover{border-color:#D6C9A4;color:var(--ink);}
.status-btn.answered.selected,
.status-btn.present.selected,
.status-btn.done.selected{
    background:var(--green);border-color:var(--green);color:#fff;
    box-shadow:0 8px 18px -12px rgba(33,155,94,.9);
}
.status-btn.not_answered.selected,
.status-btn.absent.selected,
.status-btn.not_done.selected{
    background:var(--red);border-color:var(--red);color:#fff;
    box-shadow:0 8px 18px -12px rgba(198,67,43,.9);
}
.status-btn.excused.selected{
    background:linear-gradient(135deg,#FDF6E3,#F7E9C2);
    border-color:var(--gold);color:#8A6D1D;
    box-shadow:0 8px 18px -12px rgba(201,162,75,.9);
}
.status-btn.excellent.selected{
    background:linear-gradient(135deg,#E4F4F2,#C7EAE6);
    border-color:var(--turquoise);color:var(--turquoise-dark);
    box-shadow:0 8px 18px -12px rgba(15,163,150,.9);
}
.status-btn.good.selected{
    background:linear-gradient(135deg,#E9F7EF,#D2EFE0);
    border-color:var(--green);color:var(--green);
    box-shadow:0 8px 18px -12px rgba(33,155,94,.9);
}
.status-btn.acceptable.selected{
    background:linear-gradient(135deg,#FDF6E3,#F7E9C2);
    border-color:var(--gold);color:#8A6D1D;
    box-shadow:0 8px 18px -12px rgba(201,162,75,.9);
}
.status-btn.needs_effort.selected{
    background:linear-gradient(135deg,#FBEDE6,#F5D2C0);
    border-color:var(--terracotta);color:#8A3E1F;
    box-shadow:0 8px 18px -12px rgba(194,96,60,.9);
}

/* در تب امتحانات کتبی، دکمه انتخاب‌شده همیشه سبز نمایش داده شود (صرف‌نظر از سطح نمره) */
.exam-toggle .status-btn.selected{
    background:linear-gradient(135deg,#E9F7EF,#D2EFE0);
    border-color:var(--green);color:var(--green);
    box-shadow:0 8px 18px -12px rgba(33,155,94,.9);
}

/* ============ امتحانات کتبی ============ */
.exam-row{flex-direction:column;align-items:stretch;}
.exam-row .exam-row-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;}
.exam-upload-row{
    display:flex;gap:8px;flex-wrap:wrap;align-items:center;
    margin-top:12px;padding-top:12px;border-top:1px dashed var(--cream-dark);
}
.exam-upload-row .btn{width:auto;}
.exam-file-input{
    flex:1;min-width:160px;font-size:12.5px;
    padding:9px 11px;border-radius:11px;border:1.5px solid var(--cream-dark);background:#fff;
}
.exam-current-file{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);flex-wrap:wrap;}
.exam-current-file a{color:var(--turquoise-dark);font-weight:700;}
.exam-thumb{
    width:44px;height:44px;border-radius:10px;object-fit:cover;
    border:1.5px solid var(--cream-dark);flex-shrink:0;
}
.exam-gallery{display:flex;gap:8px;flex-wrap:wrap;width:100%;margin-top:2px;}
.exam-gallery-item{position:relative;}
.exam-gallery-item .exam-thumb{display:block;}
.exam-file-chip{
    display:flex;align-items:center;justify-content:center;width:44px;height:44px;
    border-radius:10px;border:1.5px solid var(--cream-dark);background:#fff;
    font-size:11px;color:var(--turquoise-dark);font-weight:700;
}
.exam-image-delete{
    position:absolute;top:-6px;left:-6px;width:19px;height:19px;line-height:17px;
    border-radius:50%;border:1.5px solid #fff;background:var(--red);color:#fff;
    font-size:11px;font-weight:800;cursor:pointer;padding:0;text-align:center;
}
.exam-msg{width:100%;margin-top:6px;}

.status-badge.excellent{background:var(--turquoise-soft);color:var(--turquoise-dark);border:1px solid rgba(15,163,150,.3);}
.status-badge.good{background:var(--green-soft);color:var(--green);border:1px solid rgba(33,155,94,.3);}
.status-badge.acceptable{background:var(--gold-soft);color:#8A6D1D;border:1px solid rgba(201,162,75,.4);}
.status-badge.needs_effort{background:#FBEDE6;color:#8A3E1F;border:1px solid rgba(194,96,60,.35);}

/* ============ وضعیت انضباط لحظه‌ای (مثل سایر دروس) ============ */
.discipline-status-box{
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    border:1px solid var(--cream-dark);border-radius:13px;
    padding:14px 16px;margin-bottom:15px;
}
.discipline-status-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.discipline-status-label{font-weight:800;font-size:13.5px;color:var(--ink);}

/* ============ کارنامه (جدولی) ============ */
.report-table-wrap{
    overflow-x:auto;border-radius:13px;border:1px solid var(--cream-dark);
}
.report-table{
    width:100%;border-collapse:collapse;background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    font-size:13px;min-width:620px;table-layout:auto;
}
/* ستون‌های امتحان/پرسش/تکلیف/وضعیت نهایی حداقل عرض مشخصی دارند تا نشان‌ها و توضیح زیرشان هرگز نشکنند */
.report-table th:not(:first-child),
.report-table td:not(.report-table-subject){min-width:118px;}
.report-table thead th{
    background:var(--cream-dark);color:var(--ink);font-weight:800;font-size:12.5px;
    padding:10px 12px;text-align:center;white-space:nowrap;
}
.report-table thead th:first-child{text-align:right;}
.report-table tbody td{
    padding:10px 12px;text-align:center;vertical-align:middle;
    border-top:1px solid var(--cream-dark);
}
.report-table tbody tr:hover{background:rgba(201,162,75,.08);}
.report-table-subject{text-align:right;font-weight:800;color:var(--ink);white-space:nowrap;position:relative;}
.report-table-sub{font-size:11px;color:var(--muted);margin-top:4px;white-space:nowrap;}
.report-table-empty{font-size:12px;color:var(--muted);white-space:nowrap;}

/* متن‌های داخل سلول‌ها (نشان وضعیت + توضیح زیرش) هرگز نباید به‌صورت عمودی/حرف‌به‌حرف شکسته شوند؛
   در صورت تنگ بودن صفحه، کل جدول به‌صورت افقی اسکرول می‌شود (report-table-wrap) */
.status-badge{white-space:nowrap;}

/* ============ ردیف قابل‌کلیک درس: با کلیک روی هر درس، پاپ‌آپ «چرا این نمره + پیشنهاد پیشرفت» باز می‌شود ============ */
.report-row-clickable{cursor:pointer;}
.report-row-hint{font-size:11px;opacity:.55;white-space:nowrap;}
.grade-breakdown-modal .modal-box{max-width:420px;padding:22px;}
.breakdown-box{
    margin-top:0;text-align:right;background:#FBF7EC;border:1px solid var(--cream-dark);
    border-radius:10px;padding:10px 12px;font-size:12px;
}
.breakdown-list{margin:0 0 8px;padding-inline-start:18px;}
.breakdown-list li{margin-bottom:4px;color:var(--ink);}
.breakdown-bonus,.breakdown-hint{color:var(--muted);font-size:11.5px;margin-bottom:6px;}
.breakdown-final{font-weight:700;font-size:12.5px;margin-top:6px;}
.breakdown-empty{color:var(--muted);font-size:12px;}

/* ============ پیشنهاد پیشرفت هر درس ============ */
.recommendation-box{
    margin-top:8px;text-align:right;background:var(--turquoise-soft);
    border:1px solid rgba(15,163,150,.3);border-radius:10px;padding:8px 12px;
}
.recommendation-label{font-weight:800;font-size:11.5px;color:var(--turquoise-dark);display:block;margin-bottom:3px;}
.recommendation-text{font-size:11.5px;color:var(--ink);line-height:1.7;}

/* ============ برترین‌های هفته/ماه/ترم ============ */
.leaderboard-table tbody tr.leaderboard-top{background:rgba(201,162,75,.12);}
.leaderboard-table tbody tr.leaderboard-me{background:rgba(15,163,150,.14);}
.leaderboard-rank{font-weight:800;white-space:nowrap;}
.leaderboard-score{font-weight:800;color:var(--turquoise-dark);}
.leaderboard-me-badge{
    display:inline-block;font-size:10px;font-weight:700;background:var(--turquoise-dark);color:#fff;
    border-radius:6px;padding:1px 6px;margin-inline-start:6px;vertical-align:middle;
}
.leaderboard-table tbody tr.leaderboard-gap td{
    text-align:center;color:var(--muted);font-weight:800;padding:2px 0;background:transparent;border:none;
}

/* ============ برنامه هفتگی ============ */
.schedule-table th, .schedule-table td{text-align:center;vertical-align:top;}
.schedule-cell{min-width:110px;padding:6px !important;}
.schedule-subject-select{width:100%;font-size:11.5px;padding:4px;margin-bottom:4px;}
.schedule-room-input{width:100%;font-size:11px;padding:3px 4px;text-align:center;}
.schedule-cell-view{min-width:100px;}
.schedule-view-subject{font-weight:800;font-size:12px;color:var(--ink);}
.copy-link-btn{color:var(--turquoise-dark);text-decoration:none;font-weight:700;}
.copy-link-btn:hover{text-decoration:underline;}

/* ============ پرسش‌ها (دانش‌آموز) ============ */
.question-list-item{
    padding:16px;border-radius:14px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    border:1px solid var(--cream-dark);margin-bottom:10px;
    transition:border-color .2s, box-shadow .2s;
}
.question-list-item:hover{border-color:rgba(15,163,150,.4);box-shadow:var(--shadow-xs);}
.question-list-item .q-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.question-list-item .q-subject{font-weight:800;font-size:14.5px;color:var(--lapis);}
.question-list-item .q-date{
    font-size:12px;color:var(--muted);background:#fff;
    border:1px solid var(--cream-dark);padding:3px 11px;border-radius:999px;
}
.status-badge{
    font-size:12px;font-weight:800;padding:5px 13px;border-radius:999px;margin-inline-start:auto;
}
.status-badge.answered,.status-badge.present{background:var(--green-soft);color:var(--green);border:1px solid rgba(33,155,94,.3);}
.status-badge.not_answered,.status-badge.absent{background:var(--red-soft);color:var(--red);border:1px solid rgba(198,67,43,.3);}
.status-badge.excused{background:var(--gold-soft);color:#8A6D1D;border:1px solid rgba(201,162,75,.4);}
.question-list-item .q-desc{
    font-size:13px;color:var(--ink);line-height:1.95;
    background:#fff;border-radius:11px;padding:10px 13px;
    border:1px dashed var(--cream-dark);
}
.question-list-item .q-desc-empty{color:#A89C80;font-style:italic;}

/* ============ سابقه حضور و غیاب ============ */
.attendance-history-list{max-height:480px;overflow-y:auto;padding-inline-end:4px;}
.attendance-item{
    display:flex;align-items:center;justify-content:space-between;
    gap:10px;flex-wrap:wrap;padding:13px 15px;border-radius:14px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    border:1px solid var(--cream-dark);margin-bottom:10px;
    transition:border-color .2s;
}
.attendance-item:hover{border-color:rgba(201,162,75,.55);}
.attendance-item .a-info{display:flex;flex-direction:column;gap:2px;}
.attendance-item .a-student{font-weight:800;font-size:14px;color:var(--ink);}
.attendance-item .a-grade{font-size:12px;color:var(--muted);}
.attendance-item .a-date{font-size:13px;color:var(--muted);}

/* آکاردئون روزها */
.day-group{
    border:1px solid var(--cream-dark);border-radius:14px;
    margin-bottom:12px;overflow:hidden;background:#fff;
    box-shadow:var(--shadow-xs);transition:box-shadow .2s;
}
.day-group.open{box-shadow:var(--shadow);}
.day-group-header{
    width:100%;display:flex;align-items:center;gap:10px;flex-wrap:nowrap;
    justify-content:space-between;padding:15px 17px;
    background:linear-gradient(180deg,#FFFDF7,#F8F3E6);
    border:none;cursor:pointer;text-align:right;font-family:inherit;
    transition:background .2s;
}
.day-group-header:hover{background:#F5EFDF;}
.day-group-title{font-weight:800;font-size:14px;color:var(--lapis);flex-shrink:0;}
.day-group-counts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex:1 1 auto;min-width:0;}
.day-group-arrow{color:var(--muted);transition:transform .25s ease;flex-shrink:0;}
.day-group.open .day-group-arrow{transform:rotate(180deg);}
.day-group-body{display:none;padding:14px;border-top:1px solid var(--line);}
.day-group.open .day-group-body{display:block;animation:fadeIn .25s ease;}
.day-group-body .attendance-item{margin-bottom:8px;}
.day-group-body .attendance-item:last-child{margin-bottom:0;}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}

.mini-badge{font-size:11px;font-weight:800;padding:4px 11px;border-radius:999px;}
.mini-badge.present,.mini-badge.answered{background:var(--green-soft);color:var(--green);}
.mini-badge.absent,.mini-badge.not-answered{background:var(--red-soft);color:var(--red);}
.mini-badge.excused{background:var(--gold-soft);color:#8A6D1D;}

/* ============ سابقه پرسش‌ها ============ */
.question-row{
    display:flex;align-items:center;gap:14px;flex-wrap:wrap;
    padding:15px 17px;border-radius:14px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    border:1px solid var(--cream-dark);margin-bottom:10px;
    cursor:pointer;transition:.18s ease;
}
.question-row:hover{
    background:#FFFBF0;border-color:var(--gold);
    transform:translateY(-2px);box-shadow:0 14px 28px -20px rgba(201,162,75,.9);
}
.q-seq{
    flex-shrink:0;font-size:12px;font-weight:800;color:#fff;
    background:var(--grad-teal);padding:7px 13px;border-radius:999px;
    box-shadow:0 8px 18px -12px rgba(10,107,102,.9);
}
.q-main{flex:1;min-width:180px;}
.q-date-line{font-weight:800;font-size:14px;color:var(--lapis);margin-bottom:2px;}
.q-meta-line{font-size:12.5px;color:var(--muted);margin-bottom:5px;}
.q-desc-line{
    font-size:12.5px;color:var(--ink);background:#fff;
    border:1px dashed var(--cream-dark);border-radius:9px;
    padding:7px 11px;display:inline-block;
}
.q-counts{display:flex;flex-direction:column;gap:6px;flex-shrink:0;align-items:center;}

.late-badge{
    display:inline-flex;align-items:center;gap:4px;
    font-size:11px;font-weight:800;color:#8A6D1D;
    background:var(--gold-soft);border:1px solid rgba(201,162,75,.45);
    padding:4px 11px;border-radius:999px;
}
.s-meta.late-badge{margin-top:4px;}

/* ============ آلارم حضور و غیاب ============ */
@keyframes attendanceAlertIn{
    from{opacity:0;transform:translateY(-10px);}
    to{opacity:1;transform:translateY(0);}
}
.attendance-alert{
    display:flex;align-items:center;gap:15px;
    padding:18px 22px;border-radius:var(--radius);
    margin-bottom:15px;box-shadow:var(--shadow);
    animation:attendanceAlertIn .35s ease;
    position:relative;overflow:hidden;
}
.attendance-alert::before{
    content:'';position:absolute;inset-inline-start:0;top:0;bottom:0;width:5px;background:currentColor;opacity:.6;
}
.attendance-alert .alert-icon{font-size:28px;line-height:1;}
.attendance-alert .alert-text{display:flex;flex-direction:column;gap:2px;}
.attendance-alert .alert-text strong{font-size:14.5px;font-weight:800;}
.attendance-alert .alert-text span{font-size:12.5px;opacity:.85;}
.attendance-alert .alert-link{display:inline-block;margin-top:6px;font-size:12px;font-weight:800;color:inherit;text-decoration:underline;}
.attendance-alert .alert-note{display:inline-block;margin-top:6px;font-size:12px;opacity:.9;}
.attendance-alert.present{background:linear-gradient(120deg,#E9F7EF,#D2EFE0);border:1px solid rgba(33,155,94,.3);color:#1B7A46;}
.attendance-alert.absent{background:linear-gradient(120deg,#FDECEB,#F9D9D3);border:1px solid rgba(198,67,43,.3);color:#A5341F;}
.attendance-alert.excused{background:linear-gradient(120deg,#FDF6E3,#F7E9C2);border:1px solid rgba(201,162,75,.45);color:#8A6D1D;}

/* ============ گواهی پزشکی ============ */
.certificate-box{
    flex-basis:100%;margin-top:12px;padding-top:12px;
    border-top:1px dashed var(--cream-dark);
}
.certificate-box .cert-hint{font-size:12.5px;color:var(--muted);margin-bottom:9px;}
.certificate-box .cert-hint.pending{color:#8A6D1D;}
.certificate-box .cert-hint.expired{color:var(--red);}
.certificate-box{overflow:hidden;}
.cert-upload-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;max-width:100%;}
.cert-upload-row .btn{width:auto;}
.cert-choose-btn{position:relative;overflow:hidden;cursor:pointer;flex-shrink:0;}
.cert-choose-btn input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;}
.cert-file-name{
    display:block;flex:1 1 100px;min-width:0;max-width:100%;box-sizing:border-box;font-size:12.5px;color:var(--muted);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    padding:9px 11px;border-radius:11px;border:1.5px solid var(--cream-dark);background:#fff;
}
.cert-msg{margin-top:6px;}

.empty-state{
    text-align:center;padding:40px 16px;color:#A9A08A;font-size:13.5px;
    background:
        radial-gradient(circle at 50% 0%, rgba(201,162,75,.10), transparent 70%);
    border:1px dashed var(--cream-dark);border-radius:var(--radius);
}

/* ============ اسکرول افقی برای جداولی که ممکن است متن‌شان بشکند ============ */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.table-scroll table{width:100%;min-width:640px;}

/* ============ جدول ============ */
table.data-table{
    width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;
    overflow:hidden;border-radius:14px;border:1px solid var(--cream-dark);
}
table.data-table th, table.data-table td{
    padding:13px 14px;text-align:right;border-bottom:1px solid var(--line);
}
table.data-table th{
    color:#6F654F;font-weight:800;font-size:12.5px;letter-spacing:.2px;
    background:linear-gradient(180deg,#FBF7EC,#F5EFDF);
    position:sticky;top:0;z-index:1;
}
table.data-table tbody tr{transition:background .18s;}
table.data-table tbody tr:nth-child(even){background:rgba(251,247,236,.55);}
table.data-table tbody tr:hover{background:var(--gold-soft);}
table.data-table tbody tr:last-child td{border-bottom:none;}

.badge{display:inline-block;padding:4px 11px;border-radius:999px;font-size:11px;font-weight:800;}
.badge-turquoise{background:var(--turquoise-soft);color:var(--turquoise-dark);border:1px solid rgba(15,163,150,.25);}
.badge-gold{background:var(--gold-soft);color:#8A6A1C;border:1px solid rgba(201,162,75,.32);}
.badge-danger{background:var(--red-soft);color:var(--red);border:1px solid rgba(198,67,43,.25);}
.grade-plain{white-space:nowrap;font-weight:800;color:var(--turquoise-dark);}
#studentsTable th:nth-child(4), #studentsTable td:nth-child(4){white-space:nowrap;width:1%;}
#studentsTable th:nth-child(6), #studentsTable td:nth-child(6){white-space:nowrap;width:1%;}
#studentsTable td:nth-child(6) .btn{white-space:nowrap;}

.list-item{
    display:flex;align-items:center;justify-content:space-between;
    padding:11px 13px;border-radius:12px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    border:1px solid var(--cream-dark);margin-bottom:9px;
    transition:border-color .2s, transform .2s;
}
.list-item:hover{border-color:rgba(201,162,75,.6);transform:translateX(-2px);}
.list-item .del-form{margin:0;}

/* ============ مودال ============ */
.modal-overlay{
    display:none;position:fixed;inset:0;z-index:200;
    background:rgba(12,20,34,.55);
    backdrop-filter:blur(6px);
    align-items:center;justify-content:center;padding:16px;
}
.modal-overlay.open{display:flex;animation:fadeIn .2s ease;}
.modal-box{
    width:100%;max-width:540px;
    background:#fff;border-radius:22px;
    box-shadow:var(--shadow-lg);
    padding:26px;max-height:90vh;overflow-y:auto;
    border:1px solid rgba(255,255,255,.9);
    animation:cardIn .28s cubic-bezier(.21,1,.28,1) both;
}
.modal-head{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--line);
}
.modal-head h3{margin:0;color:var(--lapis);font-size:16.5px;font-weight:800;}
.modal-close{
    background:var(--cream);border:1px solid var(--cream-dark);
    width:32px;height:32px;border-radius:10px;font-size:14px;color:#5C5342;
    transition:.2s;
}
.modal-close:hover{background:var(--cream-dark);}

/* ============ دیالوگ‌های سفارشی تایید/ورودی (جایگزین confirm/prompt مرورگر) ============ */
.confirm-box{max-width:380px;text-align:center;padding:24px;}
.confirm-message{font-size:14.5px;color:var(--ink);line-height:1.9;margin-bottom:18px;white-space:pre-line;}
.confirm-box .field{margin-bottom:16px;text-align:right;}
.confirm-actions{display:flex;gap:10px;}
.confirm-actions .btn{flex:1;}

/* ============ زنگوله اعلان‌های داشبورد ============ */
.alerts-bar{
    display:flex;align-items:center;gap:12px;margin-bottom:15px;
    width:100%;background:rgba(255,255,255,.94);
    border-radius:var(--radius);padding:12px 18px;
    box-shadow:var(--shadow-xs);border:1px solid rgba(255,255,255,.9);
}
.alerts-bell{
    position:relative;
    width:46px;height:46px;flex:0 0 auto;
    border-radius:14px;
    background:var(--grad-gold);
    color:#4A3A12;font-size:20px;
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 12px 24px -14px rgba(201,162,75,.95), inset 0 -2px 6px rgba(0,0,0,.10);
    transition:transform .2s;
}
.alerts-bell:hover{transform:translateY(-2px);}
.alerts-bell-badge{
    position:absolute;top:-6px;left:-6px;
    min-width:20px;height:20px;padding:0 5px;
    border-radius:999px;
    background:var(--red);color:#fff;
    font-size:11px;font-weight:800;line-height:20px;text-align:center;
    display:none;align-items:center;justify-content:center;
    border:2px solid #fff;
    box-shadow:0 4px 10px rgba(198,67,43,.4);
}
.alerts-bell-label{font-size:13px;font-weight:700;color:var(--lapis);}

.alert-item{
    display:flex;align-items:flex-start;gap:12px;
    padding:12px 13px;border-radius:12px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);
    border:1px solid var(--cream-dark);margin-bottom:9px;
}
.alert-item.alert-item-new{background:linear-gradient(180deg,#FFF9EC,#FBEFCF);border:1px solid rgba(201,162,75,.5);}
.alert-item-icon{font-size:22px;line-height:1;flex:0 0 auto;}
.alert-item-body{display:flex;flex-direction:column;gap:3px;min-width:0;}
.alert-item-body strong{font-size:13.5px;font-weight:800;color:var(--ink);}
.alert-item-body span{font-size:12px;color:var(--muted);}

/* ============ کارت آمار ============ */
.stat-card{display:flex;align-items:center;gap:15px;}
.stat-card .num{
    font-size:29px;font-weight:900;line-height:1.2;
    background:linear-gradient(135deg,var(--lapis),var(--turquoise-dark));
    -webkit-background-clip:text;background-clip:text;color:transparent;
}
.stat-card .lbl{font-size:12.5px;color:var(--muted);font-weight:600;}
.stat-card.negative .num{
    background:none;-webkit-background-clip:unset;background-clip:unset;
    -webkit-text-fill-color:unset;color:var(--red);
}
.stat-card .ic{
    width:54px;height:54px;border-radius:17px;
    display:flex;align-items:center;justify-content:center;font-size:24px;
    background:var(--grad-gold);color:#4A3A12;
    box-shadow:0 12px 24px -14px rgba(201,162,75,.95), inset 0 -2px 6px rgba(0,0,0,.10);
}

/* ============ تقویم جلالی ============ */
.jdp-wrap{position:relative;}
.jdp-pop{
    position:fixed;z-index:500;
    background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);
    padding:15px;width:276px;border:1px solid var(--cream-dark);display:none;
}
.jdp-pop.open{display:block;animation:fadeIn .18s ease;}
.jdp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.jdp-head button{background:var(--cream);border:1px solid var(--cream-dark);width:30px;height:30px;border-radius:9px;font-size:14px;transition:.2s;}
.jdp-head button:hover{background:var(--cream-dark);}
.jdp-head .jdp-title{font-weight:800;font-size:13.5px;color:var(--lapis);}
.jdp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.jdp-grid .dow{font-size:11px;text-align:center;color:#A9A08A;padding:4px 0;font-weight:700;}
.jdp-grid .day{text-align:center;padding:8px 0;border-radius:9px;font-size:12.5px;cursor:pointer;transition:.15s;}
.jdp-grid .day:hover{background:var(--turquoise-soft);color:var(--turquoise-dark);font-weight:700;}
.jdp-grid .day.today{border:1.5px solid var(--gold);background:var(--gold-soft);font-weight:800;}
.jdp-grid .day.empty{cursor:default;}
.jdp-grid .day.empty:hover{background:transparent;}

.chart-box{position:relative;height:320px;}

/* ============ تب‌های حالت ============ */
.mode-tabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap;}
.mode-tabs button{
    flex:1 1 130px;text-align:center;
    padding:10px 14px;border-radius:999px;border:1.5px solid var(--cream-dark);
    background:#fff;font-size:13px;font-weight:800;color:var(--muted);transition:.2s;
}
.mode-tabs button:hover{border-color:rgba(15,163,150,.45);color:var(--turquoise-dark);}
.mode-tabs button.active{
    background:var(--grad-teal);color:#fff;border-color:transparent;
    box-shadow:0 12px 24px -14px rgba(10,107,102,.95);
}

/* ============ گالری تصاویر ============ */
.gallery-grid{
    display:grid;grid-template-columns:repeat(auto-fill, minmax(190px, 1fr));gap:18px;
}
.gallery-item{
    background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);
    overflow:hidden;box-shadow:var(--shadow-xs);transition:.2s;
}
.gallery-item:hover{box-shadow:var(--shadow);transform:translateY(-2px);}
.gallery-thumb-wrap{
    position:relative;width:100%;aspect-ratio:1/1;background:var(--cream);
    display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.gallery-thumb-wrap img{width:100%;height:100%;object-fit:cover;cursor:pointer;}
.gallery-source-badge{
    position:absolute;top:8px;right:8px;padding:3px 9px;border-radius:999px;
    font-size:10.5px;font-weight:800;color:#fff;background:rgba(22,48,94,.72);backdrop-filter:blur(2px);
}
.gallery-source-badge.certificate{background:rgba(198,67,43,.82);}
.gallery-source-badge.site_logo{background:rgba(201,162,75,.85);}
.gallery-delete-btn{
    position:absolute;bottom:8px;left:8px;width:32px;height:32px;border:none;border-radius:50%;
    background:rgba(198,67,43,.9);color:#fff;font-size:14px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;transition:.18s;
}
.gallery-delete-btn:hover{background:var(--red);transform:scale(1.08);}
.gallery-item-body{padding:10px 12px;}
.gallery-item-title{font-size:12.5px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.gallery-item-sub{font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.gallery-item-date{font-size:10.5px;color:var(--muted);margin-top:4px;}
.gallery-lightbox{
    display:none;position:fixed;inset:0;z-index:200;background:rgba(12,20,40,.82);
    align-items:center;justify-content:center;padding:30px;backdrop-filter:blur(3px);
}
.gallery-lightbox.open{display:flex;animation:fadeIn .2s ease;}
.gallery-lightbox img{max-width:100%;max-height:100%;border-radius:12px;box-shadow:var(--shadow-lg);}
.gallery-lightbox-close{
    position:absolute;top:22px;left:26px;width:40px;height:40px;border-radius:50%;border:none;
    background:rgba(255,255,255,.14);color:#fff;font-size:18px;cursor:pointer;
}

/* ============ ریسپانسیو ============ */
@media (max-width:1024px){
    .grid-3{grid-template-columns:repeat(2,1fr);}
    .main{padding:22px 22px 60px;}
}

@media (max-width:900px){
    .sidebar{
        position:fixed;right:0;top:0;z-index:100;
        transform:translateX(100%);
        transition:transform .28s cubic-bezier(.4,0,.2,1);
        box-shadow:0 0 60px rgba(0,0,0,.45);
    }
    .sidebar.open{transform:translateX(0);}
    .sidebar-overlay.open{
        display:block;position:fixed;inset:0;
        background:rgba(10,18,32,.45);backdrop-filter:blur(3px);z-index:90;
    }
    .hamburger{display:flex;align-items:center;justify-content:center;background:var(--grad-deep);border-color:rgba(255,255,255,.18);margin-bottom:14px;}
    .main{padding:18px 16px 56px;}
    .grid-2, .grid-3{grid-template-columns:1fr;}
    .topbar{flex-direction:column;align-items:flex-start;flex-wrap:nowrap;gap:10px;}
    .topbar h2{width:100%;}
    .topbar .date-chip{align-self:flex-start;white-space:nowrap;}
    .topbar.topbar-inline{flex-direction:row;align-items:center;justify-content:space-between;gap:10px;}
    .topbar.topbar-inline h2{width:auto;}
    .topbar.topbar-inline .date-chip{align-self:auto;}
}

@media (max-width:600px){
    html,body{font-size:14.5px;}
    .login-header{padding:30px 18px 24px;}
    .login-body{padding:24px 18px 28px;}
    .student-row{flex-direction:column;align-items:flex-start;}
    .status-toggle{width:100%;}
    .status-btn{flex:1;}
    .filters-row .field{min-width:100%;}
    .card{padding:18px;border-radius:16px;}
    .topbar{padding:18px 16px;border-radius:16px;flex-direction:column;align-items:flex-start;flex-wrap:nowrap;gap:10px;}
    .topbar h2{font-size:17px;width:100%;flex-wrap:wrap;line-height:1.5;}
    .topbar .date-chip{align-self:flex-start;font-size:12px;padding:8px 14px;white-space:nowrap;}
    .topbar.topbar-inline{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;}
    .topbar.topbar-inline h2{font-size:15px;width:auto;flex-wrap:nowrap;white-space:normal;min-width:0;line-height:1.5;}
    .topbar.topbar-inline .date-chip{align-self:auto;font-size:11px;padding:7px 12px;}

    /* دکمه‌های عملیاتی مستقل (پایان یک کارت/فرم) که در دسکتاپ عرض خودکار دارند، در موبایل تمام‌عرض شوند */
    .rep-random-btn,
    .btn-gold,
    #repSubmitBtn,
    #createBackupBtn,
    #restoreBackupBtn,
    #resetDataBtn,
    #registerEndpointBtn,
    #sendTestSmsBtn,
    #teacherConnGenBtn,
    #uploadLogoBtn{
        width:100% !important;
    }
    .exam-upload-row .btn{width:100%;}
    .qarch-announce-actions .btn{flex:1 1 100%;}
    #hwArchEditBox .btn{width:100%;}

    .q-counts{flex-direction:row;flex-wrap:nowrap;width:100%;align-items:stretch;}
    .q-counts .mini-badge{flex:1 1 50%;text-align:center;box-sizing:border-box;}
    .discipline-row .d-badges{width:100%;}
    .discipline-row .d-badges .status-badge,
    .discipline-row .d-badges > .badge{flex:1 1 calc(50% - 4px);text-align:center;box-sizing:border-box;}
    .discipline-row .d-badges .forgive-open-btn{flex:1 1 100%;width:100%;box-sizing:border-box;}
    .stat-card .num{font-size:24px;}
    .stat-card .ic{width:46px;height:46px;font-size:20px;border-radius:14px;}
    table.data-table{font-size:12.5px;}
    table.data-table th, table.data-table td{padding:10px 9px;}
    .cert-upload-row{flex-direction:column;align-items:stretch;}
    .cert-upload-row .btn{width:100%;}
    .cert-choose-btn{width:100%;text-align:center;}
    .cert-file-name{width:100%;max-width:100%;text-align:center;}
    #printAttendanceBtn, #printReportBtn{display:block;width:100%;margin-top:15px;margin-bottom:15px;}
    .exam-file-link{flex-basis:100%;width:100%;margin-top:4px;}
}

@media (prefers-reduced-motion:reduce){
    *{animation-duration:.001ms !important;transition-duration:.001ms !important;}
}

/* ============ وضعیت انضباطی ============ */
.score-btns{display:flex;gap:10px;margin:12px 0;flex-wrap:wrap;}
.score-btn{
    padding:11px 22px;border-radius:12px;border:1.5px solid var(--cream-dark);
    background:#fff;font-size:14px;font-weight:800;color:var(--muted);cursor:pointer;
    transition:.18s ease;
}
.score-btn:hover{border-color:#D6C9A4;color:var(--ink);}
.score-btn.active{
    background:linear-gradient(135deg,#e8776a,var(--red));
    color:#fff;border-color:transparent;
    box-shadow:0 8px 18px -12px rgba(198,67,43,.9);
}
.score-btn.forgive-btn.active{
    background:linear-gradient(135deg,#6fcf97,var(--green));
    color:#fff;border-color:transparent;
    box-shadow:0 8px 18px -12px rgba(33,155,94,.9);
}

.discipline-row{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:12px 14px;border-radius:12px;flex-wrap:wrap;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);border:1px solid var(--cream-dark);
    margin-bottom:8px;cursor:pointer;transition:.18s ease;
}
.discipline-row:hover{border-color:var(--gold);box-shadow:var(--shadow-xs);}
.discipline-row .d-info{min-width:0;flex:1 1 140px;}
.discipline-row .d-name{font-weight:800;color:var(--lapis);font-size:14px;}
.discipline-row .d-grade{font-size:12px;color:var(--muted);margin-inline-start:8px;}
.discipline-row .d-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1 1 100%;}
@media (min-width:520px){
    .discipline-row .d-badges{flex:0 1 auto;}
}

.discipline-archive-item{
    padding:10px 12px;border-radius:10px;
    background:linear-gradient(180deg,#FFFDF7,#FBF7EC);border:1px solid var(--cream-dark);
    margin-bottom:8px;font-size:13px;
}
.discipline-archive-item .da-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:4px;}
.discipline-archive-item .da-date{color:var(--muted);font-size:12px;}
.discipline-archive-item .da-score{font-weight:800;color:var(--red);}
.discipline-archive-item .da-desc{color:var(--ink);}
.discipline-archive-item.forgiveness{background:var(--green-soft);border-color:rgba(33,155,94,.3);}
.discipline-archive-item.forgiveness .da-score{color:var(--green);}
