/* KyaTax shared design-system layer (2026-08) — additive polish only.
   Loaded AFTER each page's own styles; deliberately avoids layout-affecting
   rules (margins/positions/display) so no page can break. Scope: brand tokens,
   button/input/card feel, focus rings, selection, scrollbar, micro-motion.
   NOT loaded on games (tax-run/road-rush/salary-survival) — they own their look. */
:root{
  --kt-navy:#102147; --kt-teal:#12B886; --kt-teal-d:#0e9c72; --kt-gold:#F5B800;
  --kt-ink:#1a2233; --kt-muted:#5b6472; --kt-border:#e3e8f0;
  --kt-shadow-sm:0 1px 3px rgba(16,33,71,.06),0 1px 2px rgba(16,33,71,.04);
  --kt-shadow-md:0 6px 20px rgba(16,33,71,.10);
  --kt-radius:10px;
}

/* typography feel — smoother rendering + tighter display headings */
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth}
h1,h2{letter-spacing:-.02em}
h3{letter-spacing:-.01em}

/* brand text selection */
::selection{background:rgba(18,184,134,.22)}

/* slim, tasteful scrollbar (WebKit) */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#c3cddd;border-radius:8px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#9fb0c9;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

/* buttons & button-ish links: consistent feel, gentle lift on hover */
@media (prefers-reduced-motion:no-preference){
  button,.btn,.cta,.tc-btn,.pcard-btn,.btn-pay,.svc-btn,a[class*="btn-"],input[type=submit]{
    transition:transform .14s ease,box-shadow .14s ease,filter .14s ease}
  button:hover,.btn:hover,.cta:hover,.tc-btn:hover,.pcard-btn:hover,.btn-pay:hover,.svc-btn:hover,a[class*="btn-"]:hover,input[type=submit]:hover{
    transform:translateY(-1px);box-shadow:var(--kt-shadow-md)}
  button:active,.btn:active,.cta:active,.tc-btn:active,.pcard-btn:active,.btn-pay:active,.svc-btn:active,a[class*="btn-"]:active,input[type=submit]:active{
    transform:translateY(0);box-shadow:var(--kt-shadow-sm)}
}

/* inputs: one clean brand focus ring everywhere */
input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--kt-teal)!important;outline-offset:1px;border-color:var(--kt-teal)!important}
button:focus-visible,a:focus-visible{outline:2px solid var(--kt-teal);outline-offset:2px}

/* cards: consistent depth + a soft hover only where the page already made it interactive */
.card,.pcard,.tc,.fcard,.svc,.kpi,.c{box-shadow:var(--kt-shadow-sm)}
@media (prefers-reduced-motion:no-preference){
  .pcard,.tc,.fcard,.svc{transition:transform .16s ease,box-shadow .16s ease}
  .pcard:hover,.tc:hover,.fcard:hover,.svc:hover{transform:translateY(-2px);box-shadow:var(--kt-shadow-md)}
}

/* tables: calmer zebra + header consistency where pages use bare <table> */
table th{letter-spacing:.02em}

/* images never overflow their box */
img{max-width:100%}

/* scroll-reveal: kya-boost.js adds .kt-in when a card enters the viewport.
   Base state stays fully visible — if JS never runs, nothing is ever hidden. */
@media (prefers-reduced-motion:no-preference){
  @keyframes ktRise{from{opacity:.001;transform:translateY(14px)}to{opacity:1;transform:none}}
  .kt-in{animation:ktRise .45s cubic-bezier(.22,.8,.36,1) both}
}
