/* Base: reset, typography, focus, utilities (WP0). Tokens live in tokens.css; components in components.css. */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body{
  margin:0; min-height:100vh; min-height:100dvh; background:var(--bg); color:var(--ink);
  font:400 var(--fs-body)/var(--lh-body) var(--font); -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
:lang(te),:lang(hi){ font-family:var(--font-indic),var(--font); }
h1,h2,h3,h4{ margin:0; color:var(--ink); }
h1{ font-size:var(--fs-h1); line-height:var(--lh-h1); font-weight:800; letter-spacing:-.01em; }
h2{ font-size:var(--fs-h2); line-height:var(--lh-h2); font-weight:600; }
h3{ font-size:var(--fs-label); line-height:var(--lh-label); font-weight:600; }
p{ margin:0 0 .5rem; }
a{ color:var(--primary); text-decoration:none; }
a:hover{ text-decoration:underline; }
img,svg,video,canvas{ max-width:100%; }
button,input,select,textarea{ font:inherit; color:inherit; }
button{ cursor:pointer; }
button:disabled{ cursor:not-allowed; opacity:.55; }
/* Inputs are never smaller than 16 px, so iOS does not zoom (§2.4). */
input,select,textarea{
  font-size:max(16px,var(--fs-body)); min-height:var(--tap); padding:10px 12px; color:var(--ink);
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm); outline:none; max-width:100%;
}
input[type=checkbox],input[type=radio]{ min-height:auto; width:20px; height:20px; accent-color:var(--primary); }
textarea{ min-height:96px; resize:vertical; }
input:focus,select:focus,textarea:focus{ border-color:var(--primary); }
/* Focus is always visible (§2.8) */
:focus-visible{ outline:2px solid var(--primary); outline-offset:2px; }
input:focus-visible,select:focus-visible,textarea:focus-visible{ outline:2px solid var(--primary); outline-offset:0; }
::selection{ background:var(--primary-soft); }
table{ border-collapse:collapse; width:100%; }
hr{ border:0; border-top:1px solid var(--line); margin:16px 0; }
code,kbd,.mono{ font-family:var(--mono); }
.mono{ font-size:.9em; }
.num,.kpi,td.n{ font-variant-numeric:tabular-nums; }

/* utilities */
.sr-only{ position:absolute!important; width:1px!important; height:1px!important; min-height:0!important; padding:0!important; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0!important; }
.skip-link{ position:absolute; left:8px; top:-60px; z-index:1000; background:var(--primary); color:var(--on-primary); padding:12px 16px; border-radius:var(--r-sm); font-weight:600; }
.skip-link:focus{ top:8px; text-decoration:none; }
.muted{ color:var(--ink-2); }
.caption,.small{ font-size:var(--fs-caption); line-height:var(--lh-caption); }
.label{ font-size:var(--fs-label); line-height:var(--lh-label); font-weight:600; }
.display{ font-size:var(--fs-display); line-height:var(--lh-display); font-weight:800; font-variant-numeric:tabular-nums; }
.stack{ display:flex; flex-direction:column; gap:12px; }
.row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.spacer{ flex:1; }
.hidden,[hidden]{ display:none!important; }
.ai-text{ color:var(--ai); }
.truncate{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wrap-2{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

/* icons from the sprite */
.i{ width:24px; height:24px; flex:none; vertical-align:middle; }
.i-sm{ width:18px; height:18px; }
.i-lg{ width:28px; height:28px; }

/* Motion: everything becomes a short crossfade under reduced motion (§2.7) */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:80ms!important; animation-iteration-count:1!important; transition-duration:80ms!important; scroll-behavior:auto!important; }
}
