/* =====================================================================
   Base: reset, typography, focus, utilities
   ===================================================================== */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}  /* JS relies on the hidden attribute winning over component display rules */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--topbar-h) + 16px)}
html,body{margin:0;padding:0;width:100%;min-width:0}
body{
  font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.5;color:var(--text);background:var(--bg);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;
  font-feature-settings:"kern" 1;font-optical-sizing:auto;
}
img,svg,video,canvas{max-width:100%}
img{height:auto}
button,input,select,textarea{font:inherit;color:inherit}
::selection{background:var(--selection-bg);color:var(--selection-tx)}  /* tokens follow both the OS dark mode and the toggle */

/* ---- headings: size + weight + ink carry hierarchy, not colour ---- */
h1,h2,h3,h4,h5{margin:0 0 .5em;color:var(--text);font-weight:600;line-height:1.3;letter-spacing:-.005em;text-wrap:balance}
h1{font-size:var(--fs-3xl);letter-spacing:-.022em;line-height:1.2}
h2{font-size:var(--fs-xl);letter-spacing:-.012em}
h3{font-size:var(--fs-md)}
h4{font-size:var(--fs-base)}
p{margin:0 0 12px;text-wrap:pretty}
small,.small{font-size:var(--fs-sm)}
/* Onest is a touch soft on Windows below 14px at 400 — lift small secondary text slightly (variable font) */
small,.small,.hint,td small,td .sub,.card-sub,.stat-meta,.crumbs,.user-role,.pager-info,.faint{font-weight:450}
strong,b{font-weight:600}
hr{border:0;border-top:1px solid var(--border);margin:20px 0}
code,kbd,samp{font-family:var(--font-mono);font-size:.88em}
code{background:var(--surface-2);border:1px solid var(--border-subtle);padding:1px 5px;border-radius:var(--r-xs)}
kbd,.kbd{display:inline-flex;align-items:center;min-width:20px;height:20px;padding:0 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;background:var(--surface);color:var(--text-3);font-size:11px;font-family:var(--font-sans);font-weight:500;justify-content:center}

/* ---- links ---- */
a{color:var(--link);text-decoration:none;text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{text-decoration:underline}
:lang(bn) a:hover{text-underline-offset:.35em}

/* ---- focus: visible for keyboard, silent for mouse ---- */
:where(a,button,summary,[role="button"],[tabindex]):focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--r-sm)}
:where(a,button,summary,[role="button"],[tabindex]):focus:not(:focus-visible){outline:none}

/* ---- Bangla: roomier leading, never tracked, never italic/underlined for emphasis ---- */
:lang(bn),.bn{font-family:var(--font-bn);line-height:1.7;letter-spacing:0!important}
body:lang(bn){font-size:var(--fs-md)}
:lang(bn) h1,:lang(bn) h2,:lang(bn) h3,.bn h1,.bn h2{line-height:1.45;letter-spacing:0}
:lang(bn) em,:lang(bn) i{font-style:normal;font-weight:600}

/* ---- numbers ---- */
.num,.tnum,td.num,th.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.num{text-align:right;white-space:nowrap}
.u,.unit{color:var(--text-3);font-size:.86em;font-weight:400;margin-left:.15em}
.mono{font-family:var(--font-mono);font-size:.92em;letter-spacing:0}

/* ---- icons (views/icons.js) ---- */
.i{display:inline-block;flex-shrink:0;vertical-align:-.19em;stroke-width:1.75}
.i-lg{stroke-width:1.6}

/* ---- text utilities ---- */
.muted{color:var(--text-3)}
.faint{color:var(--text-4)}
.ink{color:var(--text)}
.strong{font-weight:600}
.right{text-align:right}.center{text-align:center}.left{text-align:left}
.nowrap{white-space:nowrap}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.eyebrow{font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}
.eyebrow:lang(bn){letter-spacing:0;text-transform:none;font-size:var(--fs-sm)}
.lead{font-size:var(--fs-md);color:var(--text-2);line-height:1.6;max-width:68ch}
.hint{display:block;font-size:var(--fs-xs);color:var(--text-3);font-weight:400;margin-top:5px;line-height:1.45}
.req::after{content:" *";color:var(--text-4);font-weight:500}
.text-ok{color:var(--ok-tx)}.text-warn{color:var(--warn-tx)}.text-err,.text-danger{color:var(--high-tx)}.text-info{color:var(--info-tx)}.text-primary{color:var(--primary-text)}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---- layout utilities ---- */
.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.stack{display:flex;flex-direction:column;gap:12px}
.stack-sm{display:flex;flex-direction:column;gap:6px}
.stack-lg{display:flex;flex-direction:column;gap:24px}
.grow{flex:1 1 auto;min-width:0}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 16px}
.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 16px}
.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.split{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
.mt-0{margin-top:0!important}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mt-8{margin-top:32px}
.mb-0{margin-bottom:0!important}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}
.w-full{width:100%}
@media (max-width:1100px){.split{grid-template-columns:1fr}}
@media (max-width:900px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* .hide-sm hides on phones; .show-sm is its counterpart (phone-only content). .show-sm.flex / .show-sm.inline pick the phone display */
.show-sm{display:none!important}
@media (max-width:640px){.grid-2,.grid-3,.grid-4,.two-col{grid-template-columns:1fr}.hide-sm{display:none!important}
  .show-sm{display:revert!important}.show-sm.flex{display:flex!important}.show-sm.inline{display:inline!important}.show-sm.block{display:block!important}}
/* screen-only chrome (toolbars, buttons) on any printed page */
@media print{.no-print{display:none!important}}

/* ---- scrollbars (subtle, theme aware) ---- */
*{scrollbar-width:thin;scrollbar-color:var(--border-input) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--border-input);border-radius:10px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background-color:var(--border-input-hover)}
::-webkit-scrollbar-track{background:transparent}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
