/* icddr,b brand system — core: Pantone 144C orange + Cool Gray 8C · supporting teal/navy · tertiary plum/vermilion/pink */
:root{
  --orange:#F1911F; --orange-d:#D97C0B; --orange-l:#FDF0DC;
  --gray:#77787B; --gray-l:#E6E8EA;
  --navy:#336179; --teal:#007E9E; --teal-d:#006784; --teal-2:#4AACB4; --teal-3:#7BCDCC; --teal-4:#ADDEDD; --teal-l:#E8F5F6;
  --plum:#9C296A; --vermilion:#E84E24; --pink:#D04B8C;
  --ink:#1D2B33; --ink-2:#4B5A63; --bg:#F5F7F8; --card:#FFFFFF; --line:#E3E8EB;
  --ok:#2A9D8F; --warn:var(--orange); --bad:var(--vermilion);
  --r:14px; --r-sm:10px; --shadow:0 1px 2px rgba(29,43,51,.06),0 6px 20px rgba(29,43,51,.06);
  --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  --font:system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans","Noto Sans Bengali","Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);font-size:15px;line-height:1.45}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.2;color:var(--ink)} h1{font-size:1.5rem} h2{font-size:1.15rem} h3{font-size:1rem}
p{margin:0 0 .8em} a{color:var(--teal)} code,pre{font-family:var(--mono);font-size:.85em;background:var(--teal-l);padding:.1em .35em;border-radius:6px}
pre{padding:12px;overflow:auto;white-space:pre-wrap}
.muted{color:var(--ink-2)} .small{font-size:.82rem} .mono{font-family:var(--mono)} .hide{display:none!important}
.stack{display:flex;flex-direction:column;gap:12px} .row{display:flex;align-items:center;gap:10px} .row.wrap{flex-wrap:wrap} .grow{flex:1;min-width:0} .sp{justify-content:space-between}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:16px}
.card h2{display:flex;align-items:center;gap:8px}
.btn{appearance:none;border:1px solid transparent;border-radius:12px;padding:11px 16px;font:inherit;font-weight:650;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;min-height:44px;transition:transform .06s,background .15s,opacity .15s}
.btn:active{transform:scale(.98)} .btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}
.btn-primary{background:var(--orange);color:#1b2a33} .btn-primary:hover:not([disabled]){background:var(--orange-d)}
.btn-teal{background:var(--teal);color:#fff} .btn-teal:hover:not([disabled]){background:var(--teal-d)}
.btn-ghost{background:#fff;border-color:var(--line);color:var(--ink)} .btn-ghost:hover:not([disabled]){border-color:var(--teal-2);background:var(--teal-l)}
.btn-danger{background:#fff;border-color:#f3c3b6;color:var(--vermilion)} .btn-sm{min-height:34px;padding:6px 11px;font-size:.85rem;border-radius:10px} .btn-block{width:100%} .btn-lg{min-height:54px;font-size:1.05rem;border-radius:14px}
.field{display:flex;flex-direction:column;gap:5px} .field>span{font-size:.8rem;font-weight:650;color:var(--ink-2)}
.input,select.input,textarea.input{width:100%;font:inherit;color:var(--ink);background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:11px 13px;min-height:46px;outline:none;transition:border .15s,box-shadow .15s}
.input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,126,158,.15)}
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:99px;padding:3px 10px;font-size:.75rem;font-weight:700;background:var(--gray-l);color:var(--ink-2);white-space:nowrap}
.chip.ok{background:#DDF3F0;color:#146c61}.chip.warn{background:var(--orange-l);color:#9a5a05}.chip.bad{background:#FDE5DE;color:#b3320f}.chip.info{background:var(--teal-l);color:var(--teal-d)}.chip.plum{background:#F5E1EE;color:var(--plum)}
.dot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
.alert{border-radius:12px;padding:11px 14px;font-size:.9rem;border:1px solid var(--line);background:#fff}
.alert-err{background:#FDE5DE;border-color:#f3c3b6;color:#8f2a0d}.alert-warn{background:var(--orange-l);border-color:#f6d7a6;color:#7a4704}.alert-ok{background:#DDF3F0;border-color:#b5e1db;color:#10594f}.alert-info{background:var(--teal-l);border-color:var(--teal-4);color:#075a70}
.err{color:var(--vermilion)} .checks{padding-left:18px}
.spin{width:18px;height:18px;border:2.5px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:spin .7s linear infinite} @keyframes spin{to{transform:rotate(360deg)}}
.toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + var(--safe-b));z-index:9999;display:flex;flex-direction:column;gap:8px;width:min(92vw,420px);pointer-events:none}
.toast{background:var(--ink);color:#fff;border-radius:12px;padding:12px 14px;box-shadow:var(--shadow);font-size:.9rem;animation:up .2s ease-out;pointer-events:auto;border-left:5px solid var(--teal-2)}
.toast.err{border-color:var(--vermilion)} .toast.ok{border-color:var(--ok)} .toast.warn{border-color:var(--orange)}
@keyframes up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* auth / setup */
.auth-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:
  radial-gradient(900px 500px at 100% -10%,rgba(0,126,158,.14),transparent 60%),radial-gradient(700px 420px at -10% 110%,rgba(241,145,31,.16),transparent 60%),var(--bg)}
.setup-card{width:min(520px,100%);background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:26px}
.setup-card .logo{height:46px;margin-bottom:14px}
table{border-collapse:collapse;width:100%} th,td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--line);font-size:.88rem;vertical-align:middle}
th{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);background:#FAFBFC;position:sticky;top:0}
.modal-back{position:fixed;inset:0;background:rgba(29,43,51,.55);z-index:5000;display:grid;place-items:center;padding:16px;backdrop-filter:blur(2px)}
.modal{background:#fff;border-radius:18px;width:min(460px,100%);max-height:90vh;overflow:auto;padding:20px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.progress{height:8px;border-radius:99px;background:var(--gray-l);overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--orange),#f7b04f);border-radius:99px;transition:width .4s}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
