/* Fonts: self-hosted (the page CSP only allows own files). Readex Pro, SIL OFL. */
@font-face{font-family:"Readex Pro";font-weight:300;font-display:swap;src:url(/fonts/readex-pro-arabic-300-normal.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Readex Pro";font-weight:400;font-display:swap;src:url(/fonts/readex-pro-arabic-400-normal.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Readex Pro";font-weight:500;font-display:swap;src:url(/fonts/readex-pro-arabic-500-normal.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Readex Pro";font-weight:600;font-display:swap;src:url(/fonts/readex-pro-arabic-600-normal.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:"Readex Pro";font-weight:300;font-display:swap;src:url(/fonts/readex-pro-latin-300-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Readex Pro";font-weight:400;font-display:swap;src:url(/fonts/readex-pro-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Readex Pro";font-weight:500;font-display:swap;src:url(/fonts/readex-pro-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Readex Pro";font-weight:600;font-display:swap;src:url(/fonts/readex-pro-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ---- themes: light | dark (deep blue) | black (pure black) | auto (follows the device) ---- */
:root{
  color-scheme:light;
  --bg:#eaf0f1; --sheet:#f7fafa; --ink:#12303a; --mute:#4a6570; --line:#c3d3d8; --weekend:#e1eaec; --hol:#c4cdd2;
  --accent:#1f7a8c; --accent-d:#14596a; --on-accent:#fff;
  --annual:#1f7a8c; --sick:#a8385a; --pending:#d9921e; --pending-ink:#7a4c00; --ok:#2e7d5b; --danger:#b3261e;
  --on-fill:#fff; --on-danger:#fff; --on-pending:#1b1200; --focus:#1f7a8c; --shadow:0 1px 0 var(--line);
}
@media (prefers-color-scheme:dark){
  :root[data-theme=auto]{
    color-scheme:dark;
    --bg:#0f1d24; --sheet:#162830; --ink:#e6f0f2; --mute:#9fb7bf; --line:#2a424b; --weekend:#1b323b; --hol:#33464f;
    --accent:#4fb3c6; --accent-d:#7fd0e0; --on-accent:#06222a;
    --annual:#4fb3c6; --sick:#e0708f; --pending:#f0b24a; --pending-ink:#f0b24a; --ok:#5ac08f; --danger:#ff8a80;
    --on-fill:#06222a; --on-danger:#2b0a07; --on-pending:#1b1200; --focus:#7fd0e0;
  }
}
:root[data-theme=light]{color-scheme:light}
:root[data-theme=dark]{
  color-scheme:dark;
  --bg:#0f1d24; --sheet:#162830; --ink:#e6f0f2; --mute:#9fb7bf; --line:#2a424b; --weekend:#1b323b; --hol:#33464f;
  --accent:#4fb3c6; --accent-d:#7fd0e0; --on-accent:#06222a;
  --annual:#4fb3c6; --sick:#e0708f; --pending:#f0b24a; --pending-ink:#f0b24a; --ok:#5ac08f; --danger:#ff8a80;
  --on-fill:#06222a; --on-danger:#2b0a07; --on-pending:#1b1200; --focus:#7fd0e0;
}
:root[data-theme=black]{
  color-scheme:dark;
  --bg:#000; --sheet:#0b0b0b; --ink:#f2f2f2; --mute:#aaa; --line:#2b2b2b; --weekend:#121212; --hol:#2b2b2b;
  --accent:#5cc0d3; --accent-d:#8fdcea; --on-accent:#001a20;
  --annual:#5cc0d3; --sick:#ee7a9a; --pending:#f5bb55; --pending-ink:#f5bb55; --ok:#62cc98; --danger:#ff8a80;
  --on-fill:#001a20; --on-danger:#2b0a07; --on-pending:#1b1200; --focus:#8fdcea;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.65 "Readex Pro","Segoe UI",Tahoma,sans-serif;min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
a{color:var(--accent-d)}
.ltr{direction:ltr;unicode-bidi:isolate;display:inline-block}
.n{font-variant-numeric:tabular-nums}
[hidden]{display:none!important}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---- shell ---- */
.top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:10px clamp(14px,4vw,40px);background:var(--sheet);border-bottom:1px solid var(--line)}
.brand{font-weight:600;margin-inline-end:8px}
.nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}
.nav a{text-decoration:none;color:var(--ink);padding:6px 14px;border-radius:999px;border:1px solid transparent}
.nav a[aria-current=page]{border-color:var(--ink);font-weight:500}
.badge{display:inline-block;min-width:22px;padding:0 6px;margin-inline-start:6px;border-radius:999px;background:var(--pending);color:var(--on-pending);font-size:13px;text-align:center;font-weight:600}
.prefs{display:flex;gap:8px;align-items:center}
.prefs select,.chip{border:1px solid var(--line);background:transparent;border-radius:999px;padding:3px 12px}
.who{color:var(--mute);font-size:14px}
main{max-width:1120px;margin:0 auto;padding:clamp(18px,4vw,40px) clamp(14px,4vw,40px) 70px}
h1{font-weight:300;font-size:clamp(24px,4vw,42px);line-height:1.35;margin:0 0 6px}
h1 b{font-weight:600}
h2{font-size:18px;font-weight:600;margin:0 0 10px}
.sub{color:var(--mute);margin:0 0 22px}

/* ---- buttons and forms ---- */
.btn{border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);border-radius:6px;padding:9px 20px;font-weight:500}
.btn:hover{background:var(--accent-d);border-color:var(--accent-d)}
.btn.alt{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn.alt:hover{background:var(--line)}
.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger)}
.btn.sm{padding:4px 14px;font-size:14px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.field{display:block;margin-bottom:14px}
.field>span{display:block;font-size:14px;color:var(--mute);margin-bottom:2px}
.field input,.field select,.field textarea{width:100%;background:var(--sheet);border:1px solid var(--line);border-radius:6px;padding:8px 10px}
.field textarea{min-height:70px;resize:vertical}
.err{color:var(--danger);margin:6px 0 0;min-height:1.6em}
.hint{color:var(--mute);font-size:14px}
.card{background:var(--sheet);border:1px solid var(--line);border-radius:6px;padding:clamp(16px,3vw,28px)}

/* ---- login ---- */
.login{max-width:420px;margin:8vh auto 0}
.login h1{font-size:30px}

/* ---- year ruler (the member's home) ---- */
.ruler{position:relative;margin:48px 0 10px;height:112px;border-block:1px solid var(--ink)}
.ruler .minor{position:absolute;inset:0 0 auto 0;height:12px;background:repeating-linear-gradient(to left,var(--ink) 0 1px,transparent 1px 7px);opacity:.55}
:root[dir=ltr] .ruler .minor{background:repeating-linear-gradient(to right,var(--ink) 0 1px,transparent 1px 7px)}
.tick{position:absolute;top:0;bottom:0;border-inline-start:1px solid var(--ink)}
.tick span{position:absolute;bottom:6px;inset-inline-start:6px;font-size:12px;color:var(--mute);white-space:nowrap}
.seg{position:absolute;top:22px;height:54px;border-radius:3px;min-width:12px;border:0;padding:0;background:var(--annual)}
.seg.sick{background:var(--sick)}
.seg.pending{background:repeating-linear-gradient(135deg,var(--pending) 0 6px,transparent 6px 12px);border:2px solid var(--pending)}
.today{position:absolute;top:-16px;bottom:-16px;border-inline-start:2px solid var(--ink)}
.today em{position:absolute;top:-6px;inset-inline-start:6px;font-style:normal;font-size:12px;background:var(--ink);color:var(--bg);padding:0 8px;border-radius:3px;white-space:nowrap}
.flag{position:absolute;top:-40px;inset-inline-end:0;font-size:13px;color:var(--accent-d);white-space:nowrap}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;color:var(--mute);font-size:14px;margin-top:18px}
.legend span::before{content:"";display:inline-block;width:14px;height:10px;border-radius:2px;margin-inline-end:6px;background:var(--c)}
.cols{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(20px,4vw,56px);margin-top:34px}
@media (max-width:820px){.cols{grid-template-columns:1fr}.tick:nth-child(even) span{display:none}}
.facts{margin:0;padding:0;list-style:none}
.facts li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.facts small{display:block;color:var(--mute)}
.reqs{margin:0;padding:0;list-style:none}
.reqs li{display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:baseline}
.dot{width:10px;height:10px;border-radius:2px;background:var(--c,var(--annual))}
.st{font-size:14px;color:var(--mute)}
.st.wait{color:var(--pending-ink);font-weight:500}
.st.bad{color:var(--danger)}
.reqs .more{grid-column:2/4;display:flex;gap:12px;flex-wrap:wrap;font-size:14px;color:var(--mute)}
.linkbtn{background:none;border:0;padding:0;text-decoration:underline;color:var(--accent-d)}
.empty{color:var(--mute);padding:14px 0}

/* ---- team board (leader / manager) ---- */
.head{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:end;justify-content:space-between;margin-bottom:14px}
.counts{display:flex;gap:8px;flex-wrap:wrap}
.pill{border:1px solid var(--ink);border-radius:4px;padding:2px 12px;background:var(--sheet)}
.pill.hot{background:var(--pending);border-color:var(--pending);color:var(--on-pending);font-weight:600}
.board{border:1px solid var(--ink);overflow-x:auto;background:var(--sheet)}
.brow{display:grid;grid-template-columns:170px repeat(21,minmax(28px,1fr));min-width:780px;border-bottom:1px solid var(--line)}
.brow:last-child{border-bottom:0}
.bcell{grid-row:1;min-height:46px;border-inline-start:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--mute)}
.bcell.name{grid-column:1;justify-content:flex-start;border-inline-start:0;padding-inline:12px;color:var(--ink);font-size:14px;font-weight:500;flex-direction:column;align-items:flex-start;line-height:1.3}
.bcell.name small{font-weight:400;color:var(--mute);font-size:12px}
.bcell.we{background:var(--weekend)}
.bcell.hol{background:repeating-linear-gradient(135deg,transparent 0 4px,var(--hol) 4px 6px)}
.bcell.tod{box-shadow:inset 2px 0 0 var(--danger),inset -2px 0 0 var(--danger)}
.brow.head-row .bcell{flex-direction:column;background:var(--weekend);color:var(--ink);font-weight:500;min-height:52px}
.brow.head-row .bcell.we{background:var(--line)}
.brow.head-row .bcell.tod{background:var(--danger);color:var(--on-danger)}
.brow.head-row .bcell span{font-size:11px;font-weight:400;opacity:.8}
.bar{grid-row:1;z-index:1;align-self:center;height:28px;margin:0 3px;border-radius:3px;background:var(--annual);color:var(--on-fill);font-size:12px;display:flex;align-items:center;padding-inline:8px;white-space:nowrap;overflow:hidden;border:0}
.bar.sick{background:var(--sick)}
.bar.pending{background:var(--sheet);color:var(--pending-ink);border:2px dashed var(--pending)}
.perm{grid-row:1;z-index:1;align-self:center;justify-self:center;width:12px;height:12px;border-radius:50%;background:var(--annual)}
.perm.pending{background:transparent;border:2px dashed var(--pending)}
.me .bcell.name{background:var(--weekend)}
.slips{margin-top:26px;border:1px solid var(--ink)}
.slips h2{margin:0;padding:8px 14px;background:var(--ink);color:var(--bg)}
.slip{display:grid;grid-template-columns:1fr auto;gap:2px 16px;padding:12px 14px;border-bottom:1px solid var(--line);align-items:center;background:var(--sheet)}
.slip:last-child{border-bottom:0}
.slip small{color:var(--mute)}
.slip .acts{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:560px){.slip{grid-template-columns:1fr}}
.away{list-style:none;margin:0;padding:0}.away li{padding:6px 0;border-bottom:1px solid var(--line)}

/* ---- tables (admin) ---- */
.tbl{width:100%;border-collapse:collapse}
.tbl th{font-weight:500;color:var(--mute);font-size:13px;text-align:start;border-bottom:2px solid var(--ink);padding:6px 8px;white-space:nowrap}
.tbl td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr.off td{opacity:.55}
.scroll{overflow-x:auto}
.section{margin-top:36px}

/* ---- modal and toast ---- */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:flex-start;justify-content:center;padding:6vh 14px;overflow:auto;z-index:20}
.modal{background:var(--sheet);border:1px solid var(--ink);border-radius:8px;width:min(520px,100%);padding:22px}
.modal h2{margin-top:0}
.modal .actions{display:flex;gap:10px;justify-content:flex-start;margin-top:18px;flex-wrap:wrap}
.secret{font-size:26px;letter-spacing:.08em;padding:12px;border:2px dashed var(--ink);border-radius:6px;text-align:center;user-select:all;direction:ltr}
.toasts{position:fixed;inset-block-end:16px;inset-inline:0;display:flex;flex-direction:column;align-items:center;gap:8px;z-index:30;pointer-events:none}
.toast{background:var(--ink);color:var(--bg);padding:8px 18px;border-radius:6px;pointer-events:auto}
.toast.bad{background:var(--danger);color:var(--on-danger)}
