:root{
  --bg:#f1f5f4;--card:#fff;--ink:#1c2b2a;--muted:#62716f;--line:#dbe4e2;--pri:#1f5f5b;--pri2:#2a7f79;--pri-soft:#e1efed;
  --ok:#17803d;--ok-soft:#dcf3e4;--warn:#9a5b00;--warn-soft:#fdeccc;--bad:#b42318;--bad-soft:#fde3e0;--info:#2c55a8;--info-soft:#e2eafb;
  --rest:#eef0f2;--radius:10px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:Cairo,Tahoma,sans-serif;font-size:14px}
.hidden{display:none!important}
.muted{color:var(--muted)}.small{font-size:12px}
input,select,textarea,button{font:inherit}
input,select,textarea{border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:#fff;color:var(--ink);min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--pri2);outline-offset:0;border-color:var(--pri2)}
label{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--muted)}
label>input,label>select,label>textarea{color:var(--ink);font-size:14px}
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:7px 14px;cursor:pointer;font-weight:600;white-space:nowrap}
.btn:hover{border-color:var(--pri2)}
.btn.primary{background:var(--pri);border-color:var(--pri);color:#fff}.btn.primary:hover{background:var(--pri2)}
.btn.danger{color:var(--bad);border-color:#f0c4be}.btn.ok{color:var(--ok);border-color:#b7e0c4}
.btn.ghost{background:transparent;border-color:transparent;color:inherit}
.btn.sm{padding:3px 10px;font-size:13px}.btn.wide{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}
.icon-btn{background:none;border:0;font-size:20px;cursor:pointer;color:inherit;padding:4px 8px}
/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:linear-gradient(160deg,#1f5f5b,#2a7f79 60%,#8fc7bf)}
.login-card{background:#fff;padding:28px;border-radius:14px;width:min(380px,100%);display:flex;flex-direction:column;gap:12px;box-shadow:0 10px 30px #0003}
.brand-big{font-size:24px;font-weight:700;color:var(--pri);direction:ltr;text-align:center}
.login-card .muted{text-align:center}
/* shell */
.top{position:sticky;top:0;z-index:30;height:54px;background:var(--pri);color:#fff;display:flex;align-items:center;gap:8px;padding:0 10px}
.brand{font-weight:700;direction:ltr}.spacer{flex:1}.who{font-size:13px;opacity:.9}
.nav{position:fixed;top:54px;right:0;bottom:0;width:210px;background:#fff;border-left:1px solid var(--line);overflow:auto;padding:8px;z-index:25}
.nav a{display:flex;gap:8px;align-items:center;padding:9px 12px;border-radius:8px;color:var(--ink);text-decoration:none;font-weight:600}
.nav a:hover{background:var(--pri-soft)}.nav a.on{background:var(--pri);color:#fff}
.nav .sec{font-size:11px;color:var(--muted);padding:10px 12px 2px}
.nav .badge{margin-inline-start:auto}
main{margin-right:210px;padding:18px;max-width:1500px}
.shade{display:none}
#menuBtn{display:none}
@media(max-width:900px){
  #menuBtn{display:block}.who{display:none}
  .nav{transform:translateX(100%);transition:transform .2s;width:240px}
  .nav.open{transform:none}
  .shade.open{display:block;position:fixed;inset:54px 0 0 0;background:#0004;z-index:20}
  main{margin-right:0;padding:12px}
}
/* page */
h2.page{margin:0 0 12px;font-size:20px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:14px}
.card h3{margin:0 0 10px;font-size:16px}
.bar{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:12px}
.bar label{min-width:120px}
.grid{display:grid;gap:10px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:700px){.g2,.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.g2,.g3,.g4{grid-template-columns:minmax(0,1fr)}.grid>label{grid-column:auto!important}}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px}
.stat .n{font-size:22px;font-weight:700}.stat .l{color:var(--muted);font-size:12px}
.stat.warn{border-color:#f2cf8c;background:var(--warn-soft)}.stat.bad{border-color:#f0b8b0;background:var(--bad-soft)}
.tw{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff;max-height:70vh}
table.t{width:100%;border-collapse:collapse;font-size:13px}
.t th{position:sticky;top:0;background:#f4f8f7;z-index:2;font-weight:700;color:#33504d;white-space:nowrap}
.t th,.t td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:right;vertical-align:top}
.t tr:hover td{background:#f8fbfa}
.t td.num,.t th.num{text-align:left;white-space:nowrap;font-variant-numeric:tabular-nums}
.t tfoot td{font-weight:700;background:#f4f8f7;position:sticky;bottom:0}
.t .link{color:var(--pri);cursor:pointer;text-decoration:underline dotted}
.t .sticky1{position:sticky;right:0;background:#fff;z-index:1}
.t th.sticky1{z-index:3;background:#f4f8f7}
.pill{display:inline-block;padding:1px 9px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.p-ok{background:var(--ok-soft);color:var(--ok)}.p-warn{background:var(--warn-soft);color:var(--warn)}
.p-bad{background:var(--bad-soft);color:var(--bad)}.p-info{background:var(--info-soft);color:var(--info)}.p-mute{background:var(--rest);color:var(--muted)}
.badge{background:var(--bad);color:#fff;border-radius:20px;font-size:11px;padding:0 7px;min-width:20px;text-align:center}
.alert{padding:10px 12px;border-radius:8px;margin-bottom:12px;border:1px solid}
.alert.warn{background:var(--warn-soft);border-color:#f2cf8c;color:#6b4000}
.alert.bad{background:var(--bad-soft);border-color:#f0b8b0;color:#7a160d}
.alert.ok{background:var(--ok-soft);border-color:#b7e0c4;color:#0f5a2a}
.alert.info{background:var(--info-soft);border-color:#bfd0f3;color:#1f3d7a}
.tabs{display:flex;gap:4px;border-bottom:2px solid var(--line);margin-bottom:12px;overflow:auto}
.tabs button{border:0;background:none;padding:8px 14px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}
.tabs button.on{color:var(--pri);border-bottom-color:var(--pri)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.days-pick{display:flex;flex-wrap:wrap;gap:6px}
.days-pick label{flex-direction:row;align-items:center;gap:4px;background:#f4f8f7;border:1px solid var(--line);padding:4px 8px;border-radius:8px;color:var(--ink)}
.chk{flex-direction:row!important;align-items:center;gap:6px!important;color:var(--ink)!important}
/* modal */
.modal{position:fixed;inset:0;background:#0006;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:4vh 10px;overflow:auto}
.modal-box{background:#fff;border-radius:12px;width:min(900px,100%);box-shadow:0 10px 40px #0004}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;font-size:17px}
.modal-body{padding:16px;max-height:72vh;overflow:auto}
.modal-foot{display:flex;gap:8px;justify-content:flex-start;padding:12px 16px;border-top:1px solid var(--line);flex-wrap:wrap}
.modal-foot:empty{display:none}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#1c2b2a;color:#fff;padding:10px 18px;border-radius:10px;z-index:60;max-width:90vw;box-shadow:0 6px 20px #0004}
.toast.err{background:var(--bad)}
/* calendar */
.cal td,.cal th{padding:2px;text-align:center;min-width:30px;font-size:11px}
.cal td.c{height:30px;border-left:1px solid #eef2f1}
.cal .off{background:var(--rest)}.cal .hol{background:#fde3e0}
.cal .lv{display:block;height:100%;min-height:24px;border-radius:4px;color:#fff;font-weight:700;line-height:24px}
.cal .pend{opacity:.55;background-image:repeating-linear-gradient(45deg,#fff5 0 4px,transparent 4px 8px)}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;margin:8px 0}
.legend span{display:inline-flex;align-items:center;gap:4px}.legend i{width:14px;height:14px;border-radius:3px;display:inline-block}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:13px}.kv b{color:var(--muted);font-weight:600}
.formula{background:#f4f8f7;border-radius:8px;padding:8px 12px;font-size:13px;margin:6px 0}
.hint{font-size:12px;color:var(--muted);margin-top:2px}
.setting-grp{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px}
.setting-grp h4{margin:0 0 8px;color:var(--pri)}
a.btn{text-decoration:none;display:inline-block}
.t td.sticky1{white-space:nowrap}
.bell{position:relative;font-size:20px}
.bell-cnt{position:absolute;top:-2px;left:-4px;background:#e53935;color:#fff;border-radius:10px;font-size:11px;min-width:18px;height:18px;line-height:18px;padding:0 4px;font-weight:700;text-align:center}
.bell-panel{position:fixed;top:54px;left:8px;width:min(380px,calc(100vw - 16px));max-height:70vh;overflow:auto;background:#fff;color:#1d2b2a;border-radius:12px;box-shadow:0 8px 30px #0003;z-index:40}
.bell-panel .bh{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #e5ecea;position:sticky;top:0;background:#fff}
.bell-panel .bi{display:block;padding:10px 14px;border-bottom:1px solid #f0f3f2;cursor:pointer}
.bell-panel .bi.unread{background:#eef7f5}
.bell-panel .bi b{display:block;font-size:14px}.bell-panel .bi span{font-size:13px;color:#445}.bell-panel .bi small{color:#889;font-size:11px}
.bell-panel .bf{padding:8px 14px;font-size:12px;color:#667;display:flex;justify-content:space-between;align-items:center;gap:8px}

.stat.click{cursor:pointer;transition:transform .12s, box-shadow .12s}
.stat.click:hover{transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,.08)}
.stat.sel{outline:2px solid var(--primary,#0b7285);outline-offset:-2px}
.seg{display:inline-flex;flex-wrap:wrap;gap:4px}
