/* ============================================================
   C.S. Science Academy — Shared Design System
   Powered by Prajapati NexaTech Group
   ============================================================ */
:root{
  --brand-950:#081226; --brand-900:#0b1f3a; --brand-800:#10294c; --brand-700:#163761;
  --brand-600:#1d4a80; --brand-500:#2563ab; --brand-400:#4b83c4; --brand-300:#8fb6e0; --brand-100:#e3eefb; --brand-50:#f2f7fd;
  --accent-600:#0b8f6f; --accent-500:#10a37f; --accent-400:#2fbf98; --accent-100:#d7f4ea;
  --gold-500:#f0a51f; --gold-400:#ffc14d; --gold-100:#fff3d6;
  --danger:#dc4b4b; --danger-100:#fde8e8; --warn:#e59a1c; --warn-100:#fdf1da; --ok:#189d6e; --ok-100:#dcf5ea; --info:#2f7fd6; --info-100:#e2eefc;
  --ink-900:#0f1b2d; --ink-700:#2b3a4e; --ink-500:#51617a; --ink-400:#71809b; --ink-300:#9aa7bd;
  --line:#e3e8f0; --line-soft:#edf1f7;
  --bg:#f4f6fb; --card:#ffffff; --tint:#f8fafd;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;
  --shadow-sm:0 1px 2px rgba(15,27,45,.06),0 1px 6px rgba(15,27,45,.05);
  --shadow-md:0 6px 18px -4px rgba(15,27,45,.12),0 2px 6px rgba(15,27,45,.06);
  --shadow-lg:0 18px 40px -12px rgba(15,27,45,.22),0 4px 12px rgba(15,27,45,.08);
  --grad-brand:linear-gradient(135deg,#0b1f3a 0%,#163761 55%,#1d4a80 100%);
  --grad-accent:linear-gradient(135deg,#10a37f,#0b8f6f);
  --grad-gold:linear-gradient(135deg,#ffc14d,#f0a51f);
  --grad-hero:linear-gradient(180deg,rgba(8,18,38,.30) 0%,rgba(8,18,38,.62) 62%,rgba(8,18,38,.88) 100%);
  --r-sm:8px; --r-md:12px; --r-lg:18px; --r-xl:26px;
  --side-w:264px; --top-h:64px;
}
html[data-theme="dark"]{
  --brand-50:#0e1930; --brand-100:#13223d;
  --ink-900:#eef3fa; --ink-700:#c6d2e4; --ink-500:#96a6c0; --ink-400:#7e8fa9; --ink-300:#5f7089;
  --line:#22314b; --line-soft:#1b2942;
  --bg:#0a1220; --card:#101c31; --tint:#0d1728;
  --brand-900:#13223d; --brand-800:#16274a;
  --shadow-sm:0 1px 3px rgba(0,0,0,.4); --shadow-md:0 8px 22px -6px rgba(0,0,0,.5); --shadow-lg:0 20px 44px -12px rgba(0,0,0,.6);
  --ok-100:#10362a; --danger-100:#3a1717; --warn-100:#392b12; --info-100:#132741; --accent-100:#0e3328; --gold-100:#3a2d10;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--font);color:var(--ink-900);background:var(--bg);line-height:1.55;font-size:15.5px;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--brand-500);text-decoration:none}
a:hover{color:var(--brand-600)}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14.5px;color:var(--ink-900)}
::selection{background:var(--brand-100)}
:focus-visible{outline:2px solid var(--brand-400);outline-offset:2px;border-radius:4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-999px;top:0;background:var(--brand-900);color:#fff;padding:10px 16px;z-index:2000;border-radius:0 0 8px 0}
.skip-link:focus{left:0}

/* ---------- Typography ---------- */
h1,h2,h3,h4,h5{line-height:1.22;font-weight:800;letter-spacing:-.015em;color:var(--ink-900)}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-500)}
.eyebrow::before{content:"";width:26px;height:2.5px;border-radius:2px;background:var(--grad-accent)}
.section-head{max-width:720px;margin:0 auto 42px;text-align:center}
.section-head h2{font-size:clamp(26px,3.4vw,38px);margin:10px 0 12px}
.section-head p{color:var(--ink-500);font-size:16px}
.muted{color:var(--ink-500)}
.small{font-size:13px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--r-sm);
  padding:10px 18px;font-size:14.5px;font-weight:700;line-height:1.2;transition:transform .15s ease,box-shadow .2s ease,background .2s;white-space:nowrap;user-select:none}
.btn:active{transform:translateY(1px) scale(.99)}
.btn svg{width:17px;height:17px;flex:none}
.btn-primary{background:var(--grad-brand);color:#fff;box-shadow:0 8px 20px -8px rgba(13,42,80,.55)}
.btn-primary:hover{color:#fff;box-shadow:0 12px 26px -8px rgba(13,42,80,.65);transform:translateY(-1px)}
.btn-accent{background:var(--grad-accent);color:#fff;box-shadow:0 8px 20px -8px rgba(11,110,86,.55)}
.btn-accent:hover{color:#fff;transform:translateY(-1px)}
.btn-gold{background:var(--grad-gold);color:#3d2a05;box-shadow:0 8px 20px -8px rgba(190,130,20,.5)}
.btn-gold:hover{color:#3d2a05;transform:translateY(-1px)}
.btn-outline{background:transparent;border-color:var(--line);color:var(--ink-700)}
.btn-outline:hover{border-color:var(--brand-400);color:var(--brand-600);background:var(--brand-50)}
.btn-ghost{background:transparent;color:var(--ink-500)}
.btn-ghost:hover{background:var(--tint);color:var(--ink-900)}
.btn-danger{background:var(--danger);color:#fff}
.btn-danger:hover{background:#c23c3c;color:#fff}
.btn-sm{padding:7px 12px;font-size:13px;border-radius:7px}
.btn-lg{padding:14px 26px;font-size:16px;border-radius:12px}
.btn-block{width:100%}
.btn[disabled]{opacity:.55;pointer-events:none}
.btn-icon{width:38px;height:38px;padding:0;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--card);color:var(--ink-500)}
.btn-icon:hover{color:var(--brand-600);border-color:var(--brand-300)}
.btn-icon svg{width:18px;height:18px}

/* ---------- Badges & chips ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:3.5px 10px;border-radius:99px;font-size:12px;font-weight:700;line-height:1.3}
.badge-ok{background:var(--ok-100);color:var(--ok)} .badge-danger{background:var(--danger-100);color:var(--danger)}
.badge-warn{background:var(--warn-100);color:#a56d0a} .badge-info{background:var(--info-100);color:var(--info)}
.badge-muted{background:var(--line-soft);color:var(--ink-500)} .badge-gold{background:var(--gold-100);color:#a06f08}
.badge-accent{background:var(--accent-100);color:var(--accent-600)}
.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:99px;border:1.5px solid var(--line);background:var(--card);
  font-size:13.5px;font-weight:600;color:var(--ink-500);transition:.18s}
.chip:hover{border-color:var(--brand-300);color:var(--brand-600)}
.chip.active{background:var(--grad-brand);border-color:transparent;color:#fff;box-shadow:0 6px 14px -6px rgba(13,42,80,.5)}

/* ---------- Forms ---------- */
.field{margin-bottom:15px}
.field label{display:block;font-size:13px;font-weight:700;color:var(--ink-700);margin-bottom:6px}
.field label .req{color:var(--danger)}
.input,.select,.textarea{width:100%;border:1.5px solid var(--line);border-radius:var(--r-sm);padding:10px 13px;background:var(--card);
  color:var(--ink-900);transition:border .15s, box-shadow .15s}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--brand-400);box-shadow:0 0 0 3.5px rgba(37,99,171,.14)}
.textarea{min-height:96px;resize:vertical}
.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2371809b' d='M1.4.6 6 5.2 10.6.6 12 2 6 8 0 2z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;padding-right:34px}
.hint{font-size:12.5px;color:var(--ink-400);margin-top:5px}
.err{font-size:12.5px;color:var(--danger);margin-top:5px;display:none}
.field.invalid .input,.field.invalid .select,.field.invalid .textarea{border-color:var(--danger)}
.field.invalid .err{display:block}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.form-grid .full{grid-column:1/-1}
.form-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 18px}
.switch{position:relative;display:inline-flex;align-items:center;gap:9px;cursor:pointer;font-size:13.5px;font-weight:600;color:var(--ink-500)}
.switch input{position:absolute;opacity:0}
.switch .track{width:40px;height:22px;border-radius:99px;background:var(--line);transition:.2s;position:relative;flex:none}
.switch .track::after{content:"";position:absolute;top:2.5px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25);transition:.2s}
.switch input:checked+.track{background:var(--accent-500)}
.switch input:checked+.track::after{left:20px}
input[type="checkbox"].chk,input[type="radio"].rad{width:17px;height:17px;accent-color:var(--brand-500)}

/* ---------- Cards ---------- */
.card{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}
.card-pad{padding:22px}
.card-hover{transition:transform .22s ease,box-shadow .22s ease}
.card-hover:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.card-3d{position:relative;transform-style:preserve-3d;transition:transform .35s cubic-bezier(.2,.7,.3,1),box-shadow .35s}
.card-3d::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(120deg,rgba(255,255,255,.16),transparent 40%);opacity:0;transition:opacity .3s;pointer-events:none}
.card-3d:hover{transform:translateY(-6px) rotateX(2.5deg) rotateY(-2.5deg);box-shadow:var(--shadow-lg)}
.card-3d:hover::after{opacity:1}

/* ---------- Tables ---------- */
.table-wrap{overflow-x:auto;border-radius:var(--r-md);border:1px solid var(--line-soft);background:var(--card)}
table.tbl{width:100%;border-collapse:collapse;font-size:14px;min-width:640px}
.tbl th{background:var(--tint);text-align:left;padding:11px 14px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-400);border-bottom:1px solid var(--line-soft);white-space:nowrap}
.tbl td{padding:11px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink-700);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr{transition:background .12s}
.tbl tbody tr:hover{background:var(--brand-50)}
html[data-theme="dark"] .tbl tbody tr:hover{background:var(--brand-50)}
.tbl .row-actions{display:flex;gap:6px;justify-content:flex-end}

/* ---------- Modal ---------- */
.modal-back{position:fixed;inset:0;background:rgba(8,15,30,.55);backdrop-filter:blur(4px);z-index:900;display:flex;align-items:center;justify-content:center;padding:18px;animation:fade .18s ease}
.modal{background:var(--card);border-radius:var(--r-lg);width:100%;max-width:560px;max-height:92vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:pop .22s cubic-bezier(.2,.9,.3,1.15)}
.modal.modal-lg{max-width:860px}.modal.modal-xl{max-width:1080px}.modal.modal-sm{max-width:420px}
.modal-head{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line-soft)}
.modal-head h3{font-size:17px;flex:1}
.modal-body{padding:22px;overflow-y:auto}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:15px 22px;border-top:1px solid var(--line-soft);flex-wrap:wrap}
@keyframes fade{from{opacity:0}} @keyframes pop{from{opacity:0;transform:scale(.94) translateY(10px)}}

/* ---------- Toast ---------- */
.toast-wrap{position:fixed;top:18px;right:18px;z-index:1200;display:flex;flex-direction:column;gap:10px;max-width:min(92vw,380px)}
.toast{display:flex;gap:11px;align-items:flex-start;background:var(--card);border:1px solid var(--line-soft);border-left:4px solid var(--brand-500);
  border-radius:12px;padding:13px 16px;box-shadow:var(--shadow-lg);animation:slideIn .25s ease;font-size:14px}
.toast.ok{border-left-color:var(--ok)} .toast.err{border-left-color:var(--danger)} .toast.warn{border-left-color:var(--warn)}
.toast b{display:block;font-size:13.5px;margin-bottom:1px}
.toast .muted{font-size:13px}
@keyframes slideIn{from{opacity:0;transform:translateX(30px)}}
.toast.out{animation:slideOut .25s ease forwards}
@keyframes slideOut{to{opacity:0;transform:translateX(30px)}}

/* ---------- Skeleton / loading ---------- */
.skel{position:relative;overflow:hidden;background:var(--line-soft);border-radius:8px;min-height:14px}
.skel::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation:shimmer 1.3s infinite}
html[data-theme="dark"] .skel::after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.07),transparent)}
@keyframes shimmer{to{transform:translateX(100%)}}
.spinner{width:20px;height:20px;border-radius:50%;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .7s linear infinite;flex:none}
.spinner.dark{border-color:rgba(37,99,171,.25);border-top-color:var(--brand-500)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- Empty state ---------- */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:52px 22px;color:var(--ink-400)}
.empty .empty-ico{width:74px;height:74px;border-radius:22px;background:var(--brand-50);display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.empty .empty-ico svg{width:34px;height:34px;color:var(--brand-300)}
.empty h4{font-size:16.5px;color:var(--ink-700);margin-bottom:5px}
.empty p{font-size:14px;max-width:380px;margin:0 auto 16px}

/* ---------- Avatars ---------- */
.avatar{border-radius:50%;background:var(--grad-brand);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;flex:none;letter-spacing:.02em;box-shadow:inset 0 0 0 2px rgba(255,255,255,.18)}
.avatar.acc{background:var(--grad-accent)} .avatar.gold{background:var(--grad-gold);color:#4a3205}

/* ---------- Utility ---------- */
.row{display:flex;align-items:center;gap:12px}
.row.between{justify-content:space-between}
.row.wrap{flex-wrap:wrap}
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(3,1fr)} .g4{grid-template-columns:repeat(4,1fr)}
.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mt-4{margin-top:36px}
.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.mb-3{margin-bottom:24px}
.right{margin-left:auto}
.tnum{font-variant-numeric:tabular-nums}
.hide{display:none!important}
.divider{height:1px;background:var(--line-soft);margin:18px 0}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.3,1)}
.reveal.in{opacity:1;transform:none}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

/* ---------- Print ---------- */
@media print{
  body{background:#fff}
  .no-print{display:none!important}
  .print-area{position:static!important;inset:auto!important;box-shadow:none!important}
}
