/* =====================================================================
   نظام تقييم الدارسين — stylesheet
   Mobile-first, RTL, high contrast for outdoor / poolside use.
   ===================================================================== */

:root{
  --navy-900:#08131f; --navy-800:#0b1a2b; --navy-700:#11253b; --navy-600:#17314d;
  --navy-500:#204060; --line:#22405e;
  --ink:#eef4fa; --ink-2:#a9c0d6; --ink-3:#6f8aa5;
  --accent:#3da9fc; --accent-2:#1e7fd1;
  --ok:#2ecc8f; --warn:#f5a623; --bad:#ef4b5c; --purple:#9b6dff;
  --r:12px; --r-lg:18px;
  --shadow:0 6px 24px rgba(0,0,0,.35);
  --nav-w:250px; --top-h:56px; --tab-h:62px;
  --font:'IBM Plex Sans Arabic',system-ui,'Segoe UI',Tahoma,sans-serif;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{
  font-family:var(--font); background:var(--navy-900); color:var(--ink);
  font-size:15px; line-height:1.55; overscroll-behavior-y:none;
}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.3;font-weight:600}
h1{font-size:1.35rem} h2{font-size:1.12rem} h3{font-size:1rem}
a{color:var(--accent);text-decoration:none}
small{font-size:.8rem}
.muted{color:var(--ink-3)}
.dim{color:var(--ink-2)}
[hidden]{display:none!important}

/* ---------------- boot / setup ---------------- */
.boot{
  position:fixed;inset:0;display:grid;place-items:center;padding:20px;
  background:radial-gradient(1200px 600px at 50% -10%,#12314f,var(--navy-900));
  z-index:200;overflow:auto;
}
.boot__card{
  width:min(460px,100%);background:var(--navy-800);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:28px 24px;text-align:center;box-shadow:var(--shadow);
}
.brand-mark{
  width:42px;height:42px;border-radius:12px;display:grid;place-items:center;
  background:linear-gradient(160deg,var(--accent),var(--accent-2));font-size:20px;
}
.brand-mark--lg{width:60px;height:60px;font-size:28px;margin:0 auto 14px}

/* ---------------- layout ---------------- */
.topbar{
  position:fixed;top:0;inset-inline:0;height:var(--top-h);z-index:60;
  display:flex;align-items:center;gap:10px;padding:0 12px;
  background:var(--navy-800);border-bottom:1px solid var(--line);
  padding-top:env(safe-area-inset-top);height:calc(var(--top-h) + env(safe-area-inset-top));
}
.topbar__title{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.15}
.topbar__title span{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar__title small{color:var(--ink-3);font-size:.72rem}
.topbar__right{display:flex;align-items:center;gap:6px}

.sync{width:9px;height:9px;border-radius:50%;background:var(--ok);flex:none}
.sync.off{background:var(--bad)} .sync.pending{background:var(--warn)}

.icon-btn{
  background:transparent;border:0;color:var(--ink);font-size:19px;
  width:38px;height:38px;border-radius:10px;cursor:pointer;flex:none;
}
.icon-btn:active{background:var(--navy-600)}

.sidenav{
  position:fixed;inset-block:0;inset-inline-start:0;width:var(--nav-w);z-index:80;
  background:var(--navy-800);border-inline-end:1px solid var(--line);
  transform:translateX(100%);transition:transform .22s ease;
  display:flex;flex-direction:column;
}
.sidenav.open{transform:none}
.sidenav__brand{
  display:flex;align-items:center;gap:10px;padding:14px 16px;
  border-bottom:1px solid var(--line);padding-top:calc(14px + env(safe-area-inset-top));
}
.sidenav__brand small{display:block;color:var(--ink-3);font-size:.72rem}
.sidenav__scroll{overflow:auto;padding:8px 8px 30px;flex:1}
.navgroup{
  font-size:.7rem;color:var(--ink-3);letter-spacing:.04em;
  padding:14px 12px 5px;text-transform:uppercase;
}
.sidenav a{
  display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;
  color:var(--ink-2);font-size:.9rem;
}
.sidenav a i{font-style:normal;width:20px;text-align:center;opacity:.8;font-size:.95rem}
.sidenav a:hover{background:var(--navy-700);color:var(--ink)}
.sidenav a.active{background:var(--navy-600);color:#fff}
.scrim{
  position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:70;
  opacity:0;pointer-events:none;transition:opacity .2s;
}
.scrim.show{opacity:1;pointer-events:auto}

.view{
  padding:calc(var(--top-h) + env(safe-area-inset-top) + 12px) 12px
         calc(var(--tab-h) + env(safe-area-inset-bottom) + 20px);
  max-width:1180px;margin:0 auto;
}

.tabbar{
  position:fixed;inset-inline:0;bottom:0;z-index:60;height:var(--tab-h);
  display:flex;background:var(--navy-800);border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
  height:calc(var(--tab-h) + env(safe-area-inset-bottom));
}
.tabbar a{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;color:var(--ink-3);font-size:.68rem;
}
.tabbar a i{font-style:normal;font-size:17px}
.tabbar a.active{color:var(--accent)}

@media(min-width:900px){
  .sidenav{transform:none}
  .scrim{display:none}
  .nav-toggle{display:none}
  .tabbar{display:none}
  .topbar{inset-inline-start:var(--nav-w)}
  .view{margin-inline-start:var(--nav-w);padding-bottom:40px;max-width:none}
}

/* ---------------- cards, grid ---------------- */
.card{
  background:var(--navy-800);border:1px solid var(--line);border-radius:var(--r);
  padding:14px;margin-bottom:12px;
}
.card--flush{padding:0;overflow:hidden}
.card__head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-bottom:10px;flex-wrap:wrap;
}
.card__head h2,.card__head h3{margin:0}

.grid{display:grid;gap:10px}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.grid-3{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.grid-4{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row--between{justify-content:space-between}
.spacer{flex:1}

/* ---------------- stats ---------------- */
.stat{
  background:var(--navy-700);border:1px solid var(--line);border-radius:var(--r);
  padding:12px;text-align:center;
}
.stat b{display:block;font-size:1.5rem;font-weight:700;line-height:1.15}
.stat span{color:var(--ink-3);font-size:.74rem}
.stat--ok b{color:var(--ok)} .stat--warn b{color:var(--warn)} .stat--bad b{color:var(--bad)}

/* ---------------- buttons ---------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:var(--navy-600);color:var(--ink);border:1px solid var(--line);
  border-radius:10px;padding:9px 15px;font:inherit;font-size:.88rem;font-weight:500;
  cursor:pointer;white-space:nowrap;
}
.btn:active{transform:translateY(1px)}
.btn--primary{background:linear-gradient(160deg,var(--accent),var(--accent-2));border-color:transparent;color:#031425;font-weight:600}
.btn--ok{background:var(--ok);border-color:transparent;color:#04231a;font-weight:600}
.btn--bad{background:var(--bad);border-color:transparent;color:#2a0509;font-weight:600}
.btn--ghost{background:transparent}
.btn--sm{padding:5px 10px;font-size:.78rem;border-radius:8px}
.btn--block{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed}

.fab{
  position:fixed;inset-inline-end:16px;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 16px);
  width:54px;height:54px;border-radius:50%;z-index:55;font-size:24px;
  box-shadow:var(--shadow);border:0;
  background:linear-gradient(160deg,var(--accent),var(--accent-2));color:#031425;cursor:pointer;
}
@media(min-width:900px){.fab{bottom:24px}}

/* ---------------- forms ---------------- */
label.field{display:block;margin-bottom:10px}
label.field > span{display:block;font-size:.78rem;color:var(--ink-2);margin-bottom:4px}
input,select,textarea{
  width:100%;background:var(--navy-700);border:1px solid var(--line);color:var(--ink);
  border-radius:10px;padding:10px 12px;font:inherit;font-size:.92rem;
}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}
input[type=checkbox]{width:auto}
textarea{min-height:70px;resize:vertical}
input::placeholder{color:var(--ink-3)}
.inline-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}

.seg{display:flex;background:var(--navy-700);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{
  flex:1;background:transparent;border:0;color:var(--ink-2);padding:8px 6px;
  font:inherit;font-size:.8rem;cursor:pointer;
}
.seg button.on{background:var(--navy-500);color:#fff;font-weight:600}

/* ---------------- tables ---------------- */
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:.85rem;white-space:nowrap}
th,td{padding:8px 10px;text-align:right;border-bottom:1px solid var(--line)}
th{
  background:var(--navy-700);color:var(--ink-2);font-weight:600;font-size:.76rem;
  position:sticky;top:0;z-index:2;
}
tbody tr:hover{background:rgba(61,169,252,.06)}
tbody tr.is-absent{opacity:.42}
tbody tr.is-absent td{text-decoration:line-through;text-decoration-color:var(--bad)}
td.num,th.num{text-align:center;font-variant-numeric:tabular-nums}
.t-sticky{position:sticky;inset-inline-start:0;background:var(--navy-800);z-index:1}
th.t-sticky{z-index:3;background:var(--navy-700)}

/* ---------------- badges / pills ---------------- */
.pill{
  display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;
  font-size:.72rem;font-weight:600;background:var(--navy-600);color:var(--ink-2);
}
.pill--ok{background:rgba(46,204,143,.16);color:var(--ok)}
.pill--warn{background:rgba(245,166,35,.16);color:var(--warn)}
.pill--bad{background:rgba(239,75,92,.16);color:var(--bad)}
.pill--info{background:rgba(61,169,252,.16);color:var(--accent)}
.pill--purple{background:rgba(155,109,255,.16);color:var(--purple)}

.g-excellent{background:rgba(46,204,143,.2);color:var(--ok)}
.g-vgood{background:rgba(61,169,252,.2);color:var(--accent)}
.g-good{background:rgba(155,109,255,.2);color:var(--purple)}
.g-pass{background:rgba(245,166,35,.2);color:var(--warn)}
.g-fail{background:rgba(239,75,92,.2);color:var(--bad)}

.trend-up{color:var(--ok)} .trend-down{color:var(--bad)} .trend-flat{color:var(--ink-3)}

/* ---------------- list rows ---------------- */
.list{display:flex;flex-direction:column}
.list__item{
  display:flex;align-items:center;gap:10px;padding:11px 14px;
  border-bottom:1px solid var(--line);cursor:pointer;
}
.list__item:last-child{border-bottom:0}
.list__item:active{background:var(--navy-700)}
.list__item .grow{flex:1;min-width:0}
.list__item .grow b{display:block;font-weight:600;font-size:.92rem}
.list__item .grow small{color:var(--ink-3);display:block;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{
  width:34px;height:34px;border-radius:10px;flex:none;display:grid;place-items:center;
  background:var(--navy-600);font-weight:700;font-size:.8rem;color:var(--ink-2);
}

/* ---------------- entry screen ---------------- */
.entry-row{
  border-bottom:1px solid var(--line);padding:10px 12px;
  display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;
}
.entry-row.absent{background:rgba(239,75,92,.06)}
.entry-row.absent .entry-row__name b{text-decoration:line-through;opacity:.55}
.entry-row.absent .entry-inputs{opacity:.3;pointer-events:none;filter:grayscale(1)}
.entry-row.excused .entry-inputs{opacity:.35;pointer-events:none;filter:grayscale(1)}
.entry-row.excused{background:rgba(245,166,35,.06)}
.entry-row__no{
  width:30px;height:30px;border-radius:9px;background:var(--navy-600);
  display:grid;place-items:center;font-size:.78rem;font-weight:700;color:var(--ink-2);
}
.entry-row__name b{font-size:.92rem;display:block}
.entry-row__name small{color:var(--ink-3);font-size:.72rem}
.entry-by{font-size:.68rem;color:var(--ink-3);margin-top:4px}
.entry-by b{color:var(--ink-2);font-weight:600}
.entry-inputs{display:flex;gap:6px;align-items:flex-end;flex-wrap:wrap;margin-top:6px}
.entry-inputs input{width:98px;text-align:center;font-variant-numeric:tabular-nums;font-size:1rem;padding:8px}
.entry-inputs .tiny{width:78px;font-size:.92rem;padding:7px 4px}
/* label above each box — essential once an activity has many fields
   (closed-circuit diving has nine) */
.entry-field{display:flex;flex-direction:column;gap:2px}
.entry-field > span{
  font-size:.65rem;color:var(--ink-3);text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:98px;
}
/* the س:د / د:ث unit hint next to each time label */
.entry-field > span > i{font-style:normal;opacity:.65;font-size:.9em}
.entry-field--opt > span{opacity:.6}
.entry-field--opt input{background:var(--navy-800)}
/* a زمن box filled in from بداية/نهاية rather than typed */
.entry-inputs input.is-auto{
  color:var(--accent);border-color:rgba(61,169,252,.45);
  background:rgba(61,169,252,.07);
}
.score-chip{
  min-width:52px;text-align:center;padding:7px 8px;border-radius:10px;font-weight:700;
  background:var(--navy-600);font-variant-numeric:tabular-nums;font-size:.95rem;
}
.score-chip.good{background:rgba(46,204,143,.18);color:var(--ok)}
.score-chip.mid{background:rgba(245,166,35,.18);color:var(--warn)}
.score-chip.low{background:rgba(239,75,92,.18);color:var(--bad)}
.score-chip.none{color:var(--ink-3)}

.att-seg{display:flex;gap:3px;background:var(--navy-700);border-radius:9px;padding:3px}
.att-seg button{
  border:0;background:transparent;color:var(--ink-3);border-radius:7px;
  width:30px;height:28px;font:inherit;font-size:.76rem;font-weight:700;cursor:pointer;
}
.att-seg button.on{color:#fff}
.att-seg button.on[data-s=present]{background:var(--ok);color:#04231a}
.att-seg button.on[data-s=excused]{background:var(--warn);color:#2b1a02}
.att-seg button.on[data-s=absent]{background:var(--bad);color:#2a0509}
.att-seg button.on[data-s=dnf]{background:var(--navy-500)}

.stopwatch{
  font-variant-numeric:tabular-nums;font-size:2.6rem;font-weight:700;
  text-align:center;letter-spacing:.02em;padding:8px 0;
}

/* ---------------- charts ---------------- */
.chartbox{position:relative;height:230px}
.chartbox--sm{height:170px}
.chartbox--lg{height:320px}

/* ---------------- modal ---------------- */
.modal{
  position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center;
  background:rgba(3,10,18,.7);padding:0;
}
.modal__box{
  background:var(--navy-800);border:1px solid var(--line);width:min(680px,100%);
  border-radius:var(--r-lg) var(--r-lg) 0 0;max-height:92vh;display:flex;flex-direction:column;
}
.modal__head{
  display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);
}
.modal__head h3{flex:1;margin:0}
.modal__body{padding:16px;overflow:auto;flex:1}
.modal__foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:8px;
  padding-bottom:calc(12px + env(safe-area-inset-bottom))}
.modal__foot .btn{flex:1}
@media(min-width:700px){
  .modal{align-items:center;padding:20px}
  .modal__box{border-radius:var(--r-lg)}
}

/* ---------------- misc ---------------- */
.empty{text-align:center;padding:36px 16px;color:var(--ink-3)}
.empty div:first-child{font-size:34px;margin-bottom:8px;opacity:.55}
.divider{height:1px;background:var(--line);margin:14px 0}
.kv{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--line);font-size:.86rem}
.kv:last-child{border-bottom:0}
.kv span{color:var(--ink-3)}
.kv b{font-weight:600;font-variant-numeric:tabular-nums}
.bar{height:6px;background:var(--navy-600);border-radius:99px;overflow:hidden}
.bar>i{display:block;height:100%;background:var(--accent);border-radius:99px}
.warnbox{
  border-inline-start:3px solid var(--warn);background:rgba(245,166,35,.08);
  padding:10px 12px;border-radius:8px;font-size:.84rem;margin-bottom:10px;
}
.warnbox--bad{border-color:var(--bad);background:rgba(239,75,92,.08)}
.warnbox--info{border-color:var(--accent);background:rgba(61,169,252,.08)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{
  padding:5px 11px;border-radius:999px;background:var(--navy-700);border:1px solid var(--line);
  font-size:.78rem;cursor:pointer;white-space:nowrap;
}
.chip.on{background:var(--accent);color:#031425;border-color:transparent;font-weight:600}
.scroll-x{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.scroll-x::-webkit-scrollbar{height:0}

/* ---------------- toasts ---------------- */
#toasts{
  position:fixed;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 12px);
  inset-inline:12px;z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;
  pointer-events:none;
}
.toast{
  background:var(--navy-600);border:1px solid var(--line);color:var(--ink);
  padding:10px 16px;border-radius:10px;font-size:.85rem;box-shadow:var(--shadow);
  max-width:520px;transition:opacity .3s,transform .3s;
}
.toast--ok{border-color:var(--ok)} .toast--err{border-color:var(--bad)} .toast--warn{border-color:var(--warn)}
.toast.is-out{opacity:0;transform:translateY(8px)}

/* ---------------- print (report cards) ---------------- */
@media print{
  .topbar,.sidenav,.tabbar,.fab,.scrim,#toasts,.no-print{display:none!important}
  body{background:#fff;color:#000;font-size:11pt}
  .view{padding:0;margin:0;max-width:none}
  .card{border:1px solid #bbb;background:#fff;break-inside:avoid;margin-bottom:8px}
  th{background:#eee!important;color:#000;position:static}
  td,th{border-bottom:1px solid #ccc;color:#000}
  .stat{background:#f5f5f5;border-color:#ccc}
  .stat b,.muted,.dim,.kv span{color:#000!important}
  .page-break{break-after:page}
  a{color:#000}
}
