/* ============================================================
   BERIA Askari — Material 3
   Idara ya Uhamiaji Tanzania · Mkoa wa Dodoma

   RANGI RASMI ZA IDARA
     Navy    #002060      Njano  #FCE142
     Nyeupe  #FFFFFF      Kijivu #F2F2F2
     Kijani  #D9F2D0      Buluu  #0070C0

   FALSAFA YA MWONEKANO
     NYEUPE ndiyo msingi. Rangi hutumika kusisitiza tu —
     namba muhimu, kitufe kikuu, onyo, na kilichochaguliwa.
     Kurasa nyingi ni nyeupe yenye mistari myembamba ya kijivu.
     Hii inarahisisha kusoma kwenye jua kali na inapunguza
     uchovu wa macho kwenye zamu ndefu.

     · Kadi ni nyeupe zenye mstari, siyo maeneo ya rangi
     · Text fields ni outlined (siyo filled), zinabaki nyeupe
     · Rangi kubwa moja tu kwenye skrini: kitufe cha kitendo
     · Njano = kitendo kikuu.  Navy = mfumo.  Nyekundu = hatari.
   ============================================================ */

/* ------------------------------------------------------------
   1. TOKENS — MCHANA (nyeupe ikitawala)
   ------------------------------------------------------------ */
:root {
  /* --- Rangi rasmi --- */
  --brand-navy:   #002060;
  --brand-njano:  #FCE142;
  --brand-nyeupe: #FFFFFF;
  --brand-kijivu: #F2F2F2;
  --brand-kijani: #D9F2D0;
  --brand-buluu:  #0070C0;

  /* --- Primary: navy --- */
  --md-primary:              #002060;
  --md-on-primary:           #FFFFFF;
  --md-primary-container:    #E4EAF6;
  --md-on-primary-container: #001845;

  /* --- Secondary: buluu --- */
  --md-secondary:              #0070C0;
  --md-on-secondary:           #FFFFFF;
  --md-secondary-container:    #E2F0FB;
  --md-on-secondary-container: #00436F;

  /* --- Tertiary: njano (kitendo kikuu) --- */
  --md-tertiary:              #6B5A00;
  --md-on-tertiary:           #FFFFFF;
  --md-tertiary-container:    #FCE142;
  --md-on-tertiary-container: #2E2600;

  /* --- Hatari --- */
  --md-error:              #C62222;
  --md-on-error:           #FFFFFF;
  --md-error-container:    #FDE7E6;
  --md-on-error-container: #5C0000;

  /* --- Tahadhari (familia ya njano) --- */
  --md-warn:              #7A6300;
  --md-warn-container:    #FFF7CC;
  --md-on-warn-container: #2E2600;

  /* --- Sawa (kijani cha brand) --- */
  --md-ok:              #2E7D32;
  --md-ok-container:    #D9F2D0;
  --md-on-ok-container: #10391A;

  /* --- Nyuso: NYEUPE ndiyo msingi --- */
  --md-surface:                   #FFFFFF;
  --md-on-surface:                #16181D;
  --md-on-surface-variant:        #5A5F6A;
  --md-surface-container-lowest:  #FFFFFF;
  --md-surface-container-low:     #FFFFFF;
  --md-surface-container:         #F7F8F9;
  --md-surface-container-high:    #F2F2F2;
  --md-surface-container-highest: #EAEBED;

  --md-outline:         #9AA0AA;
  --md-outline-variant: #E1E3E7;

  --md-inverse-surface:    #2B2E34;
  --md-inverse-on-surface: #F2F2F2;
  --md-inverse-primary:    #AFC5F0;

  /* --- Shape --- */
  --shape-xs: 4px;
  --shape-sm: 8px;
  --shape-md: 12px;
  --shape-lg: 16px;
  --shape-xl: 28px;
  --shape-full: 999px;

  /* --- Elevation: laini, kwa sababu msingi ni nyeupe --- */
  --el-1: 0 1px 2px rgba(0,32,96,.08), 0 1px 3px rgba(0,32,96,.06);
  --el-2: 0 2px 4px rgba(0,32,96,.10), 0 1px 2px rgba(0,32,96,.06);
  --el-3: 0 6px 16px rgba(0,32,96,.14), 0 2px 4px rgba(0,32,96,.08);

  /* --- Motion --- */
  --ease-standard:   cubic-bezier(.2, 0, 0, 1);
  --ease-decelerate: cubic-bezier(0, 0, 0, 1);
  --ease-emphasized: cubic-bezier(.2, 0, 0, 1);
  --dur-short:  150ms;
  --dur-medium: 250ms;
  --dur-long:   400ms;

  /* --- Vipimo --- */
  --juu-h: 64px;
  --chini-h: 80px;
  --pembeni: 16px;

  --font: Roboto, system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  --mono: "Roboto Mono", ui-monospace, "Courier New", monospace;

  color-scheme: light;
}

/* ------------------------------------------------------------
   2. TOKENS — USIKU (zamu za usiku barabarani)
   ------------------------------------------------------------ */
@media (prefers-color-scheme: dark) {
  :root {
    --md-primary:              #AFC5F0;
    --md-on-primary:           #002F6C;
    --md-primary-container:    #123A7A;
    --md-on-primary-container: #DAE4FA;

    --md-secondary:              #8ECBF5;
    --md-on-secondary:           #00354F;
    --md-secondary-container:    #004D77;
    --md-on-secondary-container: #C9E7FB;

    --md-tertiary:              #FCE142;
    --md-on-tertiary:           #2E2600;
    --md-tertiary-container:    #FCE142;
    --md-on-tertiary-container: #2E2600;

    --md-error:              #FFB4AB;
    --md-on-error:           #690005;
    --md-error-container:    #8C1414;
    --md-on-error-container: #FFDAD6;

    --md-warn:              #F3D257;
    --md-warn-container:    #4A3D00;
    --md-on-warn-container: #FFF3B8;

    --md-ok:              #8FD79A;
    --md-ok-container:    #1B4D24;
    --md-on-ok-container: #D9F2D0;

    --md-surface:                   #14161A;
    --md-on-surface:                #E4E5E8;
    --md-on-surface-variant:        #BCC0C8;
    --md-surface-container-lowest:  #0F1114;
    --md-surface-container-low:     #191C21;
    --md-surface-container:         #1D2026;
    --md-surface-container-high:    #262A31;
    --md-surface-container-highest: #31353D;

    --md-outline:         #8B9099;
    --md-outline-variant: #3A3E45;

    --md-inverse-surface:    #E4E5E8;
    --md-inverse-on-surface: #2B2E34;
    --md-inverse-primary:    #002060;

    --el-1: 0 1px 2px rgba(0,0,0,.40), 0 1px 3px rgba(0,0,0,.28);
    --el-2: 0 2px 4px rgba(0,0,0,.44), 0 1px 2px rgba(0,0,0,.30);
    --el-3: 0 6px 16px rgba(0,0,0,.52), 0 2px 4px rgba(0,0,0,.34);

    color-scheme: dark;
  }
}

/* ------------------------------------------------------------
   3. MSINGI
   ------------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }

/* [hidden] LAZIMA ishinde `display` yoyote hapa chini */
[hidden] { display: none !important; }

html { -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; padding: 0; }

body {
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.5;
  color: var(--md-on-surface);
  background: var(--md-surface);
  overscroll-behavior-y: contain;
  padding-top: env(safe-area-inset-top);
}

img { max-width: 100%; }
code {
  font-family: var(--mono);
  word-break: break-all;
  background: var(--md-surface-container-high);
  padding: .1em .35em;
  border-radius: var(--shape-xs);
  font-size: .92em;
}

h1, h2, h3 { font-weight: 400; letter-spacing: 0; margin: 0 0 .5rem; color: var(--md-on-surface); }
h1 { font-size: 1.75rem;  line-height: 1.28; }
h2 { font-size: 1.375rem; line-height: 1.27; }
h3 { font-size: 1rem; font-weight: 600; letter-spacing: .009em; }
p  { margin: 0 0 .75rem; }
ul, ol { margin: 0 0 .75rem; padding-left: 1.3rem; }
li { margin-bottom: .3rem; }

.hint {
  font-size: .8125rem;
  line-height: 1.45;
  color: var(--md-on-surface-variant);
  letter-spacing: .025em;
}
.maelezo { font-size: .875rem; color: var(--md-on-surface-variant); line-height: 1.5; }

.ruka { position: absolute; left: -9999px; }
.ruka:focus {
  left: 8px; top: 8px; z-index: 999;
  background: var(--brand-njano);
  color: var(--brand-navy);
  padding: 12px 16px;
  border-radius: var(--shape-sm);
}

/* ------------------------------------------------------------
   4. RIPPLE
   ------------------------------------------------------------ */
.md-wimbi {
  position: absolute;
  border-radius: 50%;
  background: currentColor;
  opacity: .16;
  transform: scale(0);
  pointer-events: none;
  animation: wimbi var(--dur-long) var(--ease-decelerate) forwards;
  z-index: 0;
}
@keyframes wimbi { to { transform: scale(2.6); opacity: 0; } }

:focus-visible { outline: 3px solid var(--md-secondary); outline-offset: 2px; }

/* ------------------------------------------------------------
   5. TOP APP BAR — nyeupe safi
   ------------------------------------------------------------ */
#juu {
  position: fixed;
  top: env(safe-area-inset-top);
  left: 0; right: 0;
  height: var(--juu-h);
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 0 8px 0 4px;
  background: var(--md-surface);
  color: var(--md-on-surface);
  z-index: 40;
  transition: box-shadow var(--dur-medium) var(--ease-standard),
              border-color var(--dur-medium) var(--ease-standard);
  border-bottom: 1px solid transparent;
}
#juu.imesogea {
  border-bottom-color: var(--md-outline-variant);
  box-shadow: var(--el-1);
}

.juu-btn {
  width: 48px; height: 48px;
  min-width: 48px;
  border: 0;
  background: transparent;
  color: var(--md-on-surface);
  border-radius: var(--shape-full);
  font-size: 1.5rem;
  line-height: 1;
  display: grid;
  place-items: center;
  cursor: pointer;
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.juu-btn::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.juu-btn:active::after { opacity: .10; }
.juu-btn svg { width: 24px; height: 24px; fill: currentColor; position: relative; z-index: 1; }
.juu-logo img { border-radius: var(--shape-sm); display: block; position: relative; z-index: 1; }

.juu-kichwa {
  flex: 1;
  min-width: 0;
  font-size: 1.375rem;
  font-weight: 500;
  line-height: 1.27;
  padding-left: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--md-primary);
}

.hali-mtandao {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 30px;
  padding: 0 11px;
  border-radius: var(--shape-full);
  font-size: .6875rem;
  font-weight: 700;
  letter-spacing: .06em;
  white-space: nowrap;
  background: var(--md-surface-container-high);
  color: var(--md-on-surface-variant);
  flex-shrink: 0;
}
.hali-mtandao::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}
/* ── HALI TATU ──────────────────────────────────────────────
   HAI: kijani kinachopumua. Mpigo ni wa polepole (sekunde 2) kwa
   makusudi — kiashiria kinachopepesa haraka machoni mwa askari
   kwa saa nane kinachosha na huanza kupuuzwa.
   OFFLINE: kijivu tulivu, SIYO nyekundu. Kufanya kazi bila mtandao
   ni hali ya kawaida kabisa ya kazi ya porini, siyo kosa. */
.hali-mtandao.hai {
  background: var(--md-ok-container);
  color: var(--md-on-ok-container);
}
.hali-mtandao.hai::before {
  background: #1E7A34;
  animation: pumua-kijani 2s ease-in-out infinite;
}
@keyframes pumua-kijani {
  0%, 100% { box-shadow: 0 0 0 0 rgba(30,122,52,.55); opacity: 1; }
  50%      { box-shadow: 0 0 0 5px rgba(30,122,52,0);  opacity: .55; }
}

.hali-mtandao.jaribu {
  background: #FFF4D6;
  color: #7A5B06;
}
.hali-mtandao.jaribu::before {
  background: #B98B0A;
  animation: pumua-njano 1.1s ease-in-out infinite;
}
@keyframes pumua-njano { 0%,100%{opacity:1} 50%{opacity:.3} }

.hali-mtandao.offline {
  background: var(--md-surface-container-high);
  color: var(--md-on-surface-variant);
}
.hali-mtandao.offline::before { background: currentColor; opacity: .55; }

/* Majina ya zamani — yasivunje kitu kilichobaki */
.hali-mtandao.ipo   { background: var(--md-ok-container);    color: var(--md-on-ok-container); }
.hali-mtandao.haipo { background: var(--md-surface-container-high); color: var(--md-on-surface-variant); }

/* Ukanda wa taarifa — siyo wa kosa.
   Ulikuwa mwekundu (--md-error). Askari wa porini hufanya kazi bila
   mtandao mara nyingi zaidi kuliko akiwa nao; kumwonyesha nyekundu
   kila siku humfanya adhani mfumo umeharibika. Sasa ni navy tulivu
   yenye ujumbe unaomtia moyo aendelee na kazi. */
.banda-offline {
  position: fixed;
  top: calc(var(--juu-h) + env(safe-area-inset-top));
  left: 0; right: 0;
  z-index: 39;
  background: #002060;
  color: #fff;
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .03em;
  text-align: center;
  padding: 10px 16px;
  animation: shuka var(--dur-medium) var(--ease-decelerate);
}
@keyframes shuka { from { transform: translateY(-100%); } }
.banda-offline.jaribu { background: #7A5B06; }

/* ------------------------------------------------------------
   6. MAUDHUI
   ------------------------------------------------------------ */
#app {
  padding: calc(var(--juu-h) + env(safe-area-inset-top) + 12px)
           var(--pembeni)
           calc(var(--chini-h) + env(safe-area-inset-bottom) + 24px);
  max-width: 720px;
  margin: 0 auto;
  min-height: 100vh;
  outline: none;
  animation: ingia var(--dur-medium) var(--ease-decelerate);
}
body.ni-offline #app { padding-top: calc(var(--juu-h) + env(safe-area-inset-top) + 52px); }
body.hakuna-chini #app { padding-bottom: calc(env(safe-area-inset-bottom) + 24px); }

@keyframes ingia {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}
@keyframes ingiaNyuma {
  from { opacity: 0; transform: translateX(-20px); }
  to   { opacity: 1; transform: none; }
}
#app.nyuma { animation: ingiaNyuma var(--dur-medium) var(--ease-decelerate); }

/* ------------------------------------------------------------
   7. BOTTOM NAVIGATION — nyeupe yenye mstari
   ------------------------------------------------------------ */
#chini {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  height: calc(var(--chini-h) + env(safe-area-inset-bottom));
  padding-bottom: env(safe-area-inset-bottom);
  display: flex;
  align-items: flex-start;
  background: var(--md-surface);
  border-top: 1px solid var(--md-outline-variant);
  z-index: 40;
  transition: transform var(--dur-medium) var(--ease-emphasized);
}

.nav-kitufe {
  flex: 1;
  min-width: 0;
  height: 100%;
  padding: 12px 0 0;
  border: 0;
  background: transparent;
  color: var(--md-on-surface-variant);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  font-family: inherit;
}

.nav-ikoni {
  position: relative;
  width: 64px; height: 32px;
  display: grid;
  place-items: center;
}
.nav-ikoni::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: var(--shape-full);
  background: var(--md-primary-container);
  transform: scaleX(.3);
  opacity: 0;
  transition: transform var(--dur-medium) var(--ease-emphasized),
              opacity var(--dur-short) var(--ease-standard);
}
.nav-kitufe[aria-selected="true"] .nav-ikoni::before { transform: scaleX(1); opacity: 1; }
.nav-ikoni svg {
  width: 24px; height: 24px;
  fill: currentColor;
  position: relative;
  z-index: 1;
  transition: transform var(--dur-short) var(--ease-standard);
}
.nav-kitufe[aria-selected="true"] { color: var(--md-primary); }
.nav-kitufe[aria-selected="true"] .nav-ikoni svg { transform: scale(1.04); }
.nav-kitufe:active .nav-ikoni svg { transform: scale(.88); }

.nav-lebo {
  font-size: .75rem;
  font-weight: 500;
  letter-spacing: .04em;
  line-height: 1.33;
  max-width: 100%;
  padding: 0 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nav-kitufe[aria-selected="true"] .nav-lebo { font-weight: 700; }

.nav-beji {
  position: absolute;
  top: -2px; right: 8px;
  min-width: 16px; height: 16px;
  padding: 0 4px;
  border-radius: var(--shape-full);
  background: var(--md-error);
  color: var(--md-on-error);
  font-size: .625rem;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
  z-index: 2;
}

/* ------------------------------------------------------------
   8. FAB — njano juu ya nyeupe
   ------------------------------------------------------------ */
#fab {
  position: fixed;
  right: 16px;
  bottom: calc(var(--chini-h) + env(safe-area-inset-bottom) + 16px);
  z-index: 45;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  height: 56px;
  padding: 0 20px;
  border: 0;
  border-radius: var(--shape-lg);
  background: var(--brand-njano);
  color: var(--brand-navy);
  font-family: inherit;
  font-size: .875rem;
  font-weight: 800;
  letter-spacing: .04em;
  box-shadow: var(--el-3);
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition: transform var(--dur-medium) var(--ease-emphasized),
              box-shadow var(--dur-short) var(--ease-standard);
}
#fab::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
#fab:active::after { opacity: .12; }
#fab:active { box-shadow: var(--el-1); transform: scale(.96); }
#fab svg { width: 24px; height: 24px; fill: currentColor; flex-shrink: 0; position: relative; z-index: 1; }

.fab-txt {
  position: relative;
  z-index: 1;
  max-width: 200px;
  opacity: 1;
  white-space: nowrap;
  transition: max-width var(--dur-medium) var(--ease-emphasized),
              opacity var(--dur-short) var(--ease-standard);
}
#fab.ndogo { padding: 0 16px; gap: 0; }
#fab.ndogo .fab-txt { max-width: 0; opacity: 0; overflow: hidden; }

/* ------------------------------------------------------------
   9. VITUFE
   ------------------------------------------------------------ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 24px;
  border: 0;
  border-radius: var(--shape-full);
  font-family: inherit;
  font-size: .875rem;
  font-weight: 700;
  letter-spacing: .04em;
  cursor: pointer;
  text-decoration: none;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: box-shadow var(--dur-short) var(--ease-standard),
              transform var(--dur-short) var(--ease-standard);
}
.btn > * { position: relative; z-index: 1; }
.btn::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.btn:hover::after  { opacity: .06; }
.btn:active::after { opacity: .12; }
.btn:active { transform: scale(.98); }
.btn:disabled { opacity: .38; cursor: not-allowed; box-shadow: none; }
.btn:disabled::after { opacity: 0; }
.btn svg { width: 18px; height: 18px; fill: currentColor; }

/* Njano — kitendo kikuu */
.btn-gold {
  background: var(--brand-njano);
  color: var(--brand-navy);
  box-shadow: var(--el-1);
}
/* Navy — kitendo cha mfumo */
.btn-navy {
  background: var(--md-primary);
  color: var(--md-on-primary);
  box-shadow: var(--el-1);
}
/* Nyeupe yenye mstari — kitendo cha pili */
.btn-nyeupe {
  background: var(--md-surface);
  color: var(--md-primary);
  border: 1px solid var(--md-outline);
}
.btn-hatari {
  background: var(--md-error);
  color: var(--md-on-error);
  box-shadow: var(--el-1);
}
.btn-gold:hover, .btn-navy:hover { box-shadow: var(--el-2); }

.btn-kubwa { width: 100%; min-height: 56px; font-size: 1rem; }
.btn-ndogo { min-height: 40px; padding: 0 16px; font-size: .8125rem; }

.btn-jumbo {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  min-height: 64px;
  padding: 0 20px;
  border: 0;
  border-radius: var(--shape-lg);
  font-family: inherit;
  font-size: 1.0625rem;
  font-weight: 800;
  letter-spacing: .05em;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: transform var(--dur-short) var(--ease-standard),
              box-shadow var(--dur-short) var(--ease-standard);
}
.btn-jumbo::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.btn-jumbo:active::after { opacity: .12; }
.btn-jumbo:active { transform: scale(.985); }
.btn-jumbo > * { position: relative; z-index: 1; }
.btn-jumbo svg { width: 24px; height: 24px; fill: currentColor; }
.btn-jumbo.btn-gold {
  background: var(--brand-njano);
  color: var(--brand-navy);
  box-shadow: var(--el-2);
}
.btn-jumbo.btn-navy {
  background: var(--md-primary);
  color: var(--md-on-primary);
  box-shadow: var(--el-1);
}
.btn-jumbo.btn-nyeupe {
  background: var(--md-surface);
  color: var(--md-primary);
  border: 1px solid var(--md-outline-variant);
  box-shadow: none;
}

.vitufe-kubwa  { display: grid; gap: 12px; margin: 20px 0; }
.vitufe-mstari { display: flex; gap: 12px; flex-wrap: wrap; margin: 16px 0; }
.vitufe-mstari .btn { flex: 1; min-width: 140px; }

/* ------------------------------------------------------------
   10. TEXT FIELDS — M3 OUTLINED (zinabaki nyeupe)
   ------------------------------------------------------------ */
.fomu { display: block; }

.uwanja { position: relative; margin-bottom: 20px; }

.lebo {
  display: block;
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .02em;
  color: var(--md-on-surface-variant);
  margin: 0 0 6px 4px;
}
/* JS huweka `*` yenyewe ndani ya span hii — CSS inaipa rangi tu.
   (Usiongeze `content: "*"` hapa, alama itaonekana mara mbili.) */
.lazima { color: var(--md-error); font-weight: 700; }

.ingizo {
  width: 100%;
  min-height: 56px;
  padding: 16px;
  border: 1px solid var(--md-outline);
  border-radius: var(--shape-xs);
  background: var(--md-surface);
  color: var(--md-on-surface);
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.5;
  letter-spacing: .02em;
  -webkit-appearance: none;
  appearance: none;
  transition: border-color var(--dur-short) var(--ease-standard),
              box-shadow var(--dur-short) var(--ease-standard);
}
.ingizo::placeholder { color: var(--md-on-surface-variant); opacity: .65; }
.ingizo:hover { border-color: var(--md-on-surface); }
.ingizo:focus {
  outline: none;
  border-color: var(--md-primary);
  box-shadow: inset 0 0 0 1px var(--md-primary);
}
.ingizo:disabled { opacity: .38; }

textarea.ingizo { min-height: 112px; resize: vertical; }

select.ingizo {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%235A5F6A'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 24px;
  padding-right: 44px;
}

.uwanja-shaka .ingizo {
  border-color: var(--md-error);
  box-shadow: inset 0 0 0 1px var(--md-error);
}
.uwanja-shaka .lebo { color: var(--md-error); }

/* Alama ya shaka kwenye lebo — JS huweka maandishi ndani yake */
.alama-shaka {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 6px;
  margin-left: 6px;
  border-radius: var(--shape-xs);
  background: var(--md-warn-container);
  color: var(--md-on-warn-container);
  font-size: .625rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  vertical-align: middle;
}

.jozi { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 380px) { .jozi { grid-template-columns: 1fr; } }

.swichi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 56px;
  padding: 8px 4px;
  cursor: pointer;
  font-size: .9375rem;
}
.swichi input { position: absolute; opacity: 0; pointer-events: none; }
.swichi > span:last-child {
  position: relative;
  width: 52px; height: 32px;
  border-radius: var(--shape-full);
  background: var(--md-surface-container-high);
  border: 2px solid var(--md-outline);
  flex-shrink: 0;
  transition: background var(--dur-short) var(--ease-standard),
              border-color var(--dur-short) var(--ease-standard);
}
.swichi > span:last-child::after {
  content: "";
  position: absolute;
  top: 50%; left: 6px;
  width: 16px; height: 16px;
  border-radius: 50%;
  background: var(--md-outline);
  transform: translateY(-50%);
  transition: transform var(--dur-medium) var(--ease-emphasized),
              width var(--dur-short) var(--ease-standard),
              height var(--dur-short) var(--ease-standard),
              left var(--dur-short) var(--ease-standard),
              background var(--dur-short) var(--ease-standard);
}
.swichi input:checked + span { background: var(--md-primary); border-color: var(--md-primary); }
.swichi input:checked + span::after {
  width: 24px; height: 24px;
  left: 2px;
  transform: translateY(-50%) translateX(20px);
  background: var(--md-on-primary);
}

/* ------------------------------------------------------------
   11. CHIPS / CHAGUO / BEJI
   ------------------------------------------------------------ */
.chaguo-gridi { display: grid; gap: 10px; margin-bottom: 20px; }
.safu-1 { grid-template-columns: 1fr; }
.safu-2 { grid-template-columns: 1fr 1fr; }
.safu-3 { grid-template-columns: repeat(3, 1fr); }
.chaguo-mstari { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }

.chaguo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 8px 16px;
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-sm);
  background: var(--md-surface);
  color: var(--md-on-surface);
  font-family: inherit;
  font-size: .875rem;
  font-weight: 500;
  text-align: center;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: background var(--dur-short) var(--ease-standard),
              border-color var(--dur-short) var(--ease-standard),
              color var(--dur-short) var(--ease-standard);
}
.chaguo::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.chaguo:active::after { opacity: .10; }
.chaguo > * { position: relative; z-index: 1; }

/* JS huweka darasa `hai` kwa chaguo lililochaguliwa */
.chaguo.hai, .chaguo[aria-pressed="true"], .chaguo.imechaguliwa {
  background: var(--md-primary-container);
  border-color: var(--md-primary);
  color: var(--md-on-primary-container);
  font-weight: 700;
}
.chaguo.hai::before,
.chaguo[aria-pressed="true"]::before {
  content: "";
  width: 18px; height: 18px;
  flex-shrink: 0;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E") center/contain no-repeat;
}
.chaguo-kubwa { min-height: 76px; font-size: 1rem; flex-direction: column; gap: 4px; }
.chaguo-kubwa.hai::before { display: none; }
.chaguo-nyeti.hai, .chaguo-nyeti[aria-pressed="true"] {
  background: var(--md-error-container);
  border-color: var(--md-error);
  color: var(--md-on-error-container);
}

.b {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 24px;
  padding: 0 10px;
  border-radius: var(--shape-full);
  font-size: .6875rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  white-space: nowrap;
}
.b-navy   { background: var(--md-primary-container);        color: var(--md-on-primary-container); }
.b-ok     { background: var(--md-ok-container);             color: var(--md-on-ok-container); }
.b-onyo   { background: var(--md-warn-container);           color: var(--md-on-warn-container); }
.b-hatari { background: var(--md-error-container);          color: var(--md-on-error-container); }
.b-info   { background: var(--md-secondary-container);      color: var(--md-on-secondary-container); }
.b-kimya  { background: var(--md-surface-container-high);   color: var(--md-on-surface-variant); }

/* ------------------------------------------------------------
   12. KADI — nyeupe zenye mstari myembamba
   ------------------------------------------------------------ */
.kadi {
  background: var(--md-surface);
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-md);
  padding: 16px;
  margin-bottom: 16px;
}
.kadi > h3 { margin: 0 0 12px; color: var(--md-primary); }

/* Kadi za tahadhari zinabaki na rangi — ndipo rangi inapohitajika */
.kadi-onyo {
  background: var(--md-warn-container);
  border-color: transparent;
  color: var(--md-on-warn-container);
}
.kadi-hatari {
  background: var(--md-error-container);
  border-color: transparent;
  color: var(--md-on-error-container);
}

.onyo-kisanduku {
  background: var(--md-warn-container);
  color: var(--md-on-warn-container);
  border-radius: var(--shape-md);
  padding: 14px 16px;
  font-size: .875rem;
  line-height: 1.45;
  margin: 12px 0;
}
.ok-kisanduku {
  background: var(--md-ok-container);
  color: var(--md-on-ok-container);
  border-radius: var(--shape-md);
  padding: 14px 16px;
  font-size: .875rem;
  margin: 12px 0;
}
.txt-onyo   { color: var(--md-warn);  font-weight: 600; }
.txt-hatari { color: var(--md-error); font-weight: 600; }
.txt-ok     { color: var(--md-ok);    font-weight: 600; }

.kadi-chaguo {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  width: 100%;
  padding: 16px;
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-md);
  background: var(--md-surface);
  color: var(--md-on-surface);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  margin-bottom: 10px;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: border-color var(--dur-short) var(--ease-standard);
}
.kadi-chaguo::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.kadi-chaguo:active::after { opacity: .08; }
.kadi-chaguo:active { border-color: var(--md-primary); }
.kadi-chaguo > * { position: relative; z-index: 1; }
.kadi-chaguo-jina { font-size: 1rem; font-weight: 600; color: var(--md-primary); }
.kadi-chaguo-meta { font-size: .8125rem; color: var(--md-on-surface-variant); }

/* ------------------------------------------------------------
   13. KPI — nyeupe, namba ndiyo yenye rangi
   ------------------------------------------------------------ */
.nyumbani-kichwa {
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--md-outline-variant);
}

.kpi-gridi { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 8px; }
.kpi {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 16px;
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-md);
  background: var(--md-surface);
  color: var(--md-on-surface-variant);
  text-align: left;
  font-family: inherit;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.kpi::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.kpi:active::after { opacity: .08; }
.kpi > * { position: relative; z-index: 1; }
.kpi-namba { font-size: 2.125rem; font-weight: 500; line-height: 1.15; }
.kpi-lebo  { font-size: .75rem; font-weight: 600; letter-spacing: .03em; }

/* Rangi inagusa NAMBA pekee, siyo kadi nzima — nyeupe inabaki ikitawala.
   Isipokuwa hali za tahadhari: hapo kadi nzima inabadilika ili ionekane. */
.kpi-navy  .kpi-namba { color: var(--md-primary); }
.kpi-ok    .kpi-namba { color: var(--md-ok); }
.kpi-info  .kpi-namba { color: var(--md-secondary); }
.kpi-kimya .kpi-namba { color: var(--md-on-surface-variant); }

.kpi-onyo {
  background: var(--md-warn-container);
  border-color: transparent;
  color: var(--md-on-warn-container);
}
.kpi-onyo .kpi-namba { color: var(--md-on-warn-container); }

.kpi-hatari {
  background: var(--md-error-container);
  border-color: transparent;
  color: var(--md-on-error-container);
}
.kpi-hatari .kpi-namba { color: var(--md-error); }

/* ------------------------------------------------------------
   14. MENYU YA NYUMBANI
   ------------------------------------------------------------ */
.menyu-gridi { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 16px 0; }
.menyu-kitufe {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 56px;
  padding: 12px 14px;
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-md);
  background: var(--md-surface);
  color: var(--md-on-surface);
  font-family: inherit;
  font-size: .875rem;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.menyu-kitufe::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.menyu-kitufe:active::after { opacity: .08; }
.menyu-kitufe > span { position: relative; z-index: 1; }
.menyu-ikoni {
  display: grid;
  place-items: center;
  width: 40px; height: 40px;
  flex-shrink: 0;
  border-radius: var(--shape-full);
  background: var(--md-primary-container);
  color: var(--md-primary);
  font-size: 1.125rem;
}
.menyu-ikoni svg { width: 22px; height: 22px; fill: currentColor; }

/* ------------------------------------------------------------
   15. ORODHA
   ------------------------------------------------------------ */
.orodha { display: grid; gap: 8px; margin: 12px 0; }
.orodha-hatua { margin: 0 0 12px; padding-left: 1.25rem; font-size: .875rem; line-height: 1.7; }

.rekodi-kadi {
  display: block;
  width: 100%;
  padding: 14px 16px;
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-md);
  background: var(--md-surface);
  color: var(--md-on-surface);
  text-align: left;
  font-family: inherit;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.rekodi-kadi::after {
  content: ""; position: absolute; inset: 0;
  background: currentColor; opacity: 0; pointer-events: none;
  transition: opacity var(--dur-short) var(--ease-standard);
}
.rekodi-kadi:active::after { opacity: .08; }
.rekodi-kadi > * { position: relative; z-index: 1; }
.rekodi-juu {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 2px;
}
.rekodi-jina   { font-size: .9375rem; font-weight: 600; }
.rekodi-meta   { font-size: .75rem; color: var(--md-on-surface-variant); }
.rekodi-kichwa { font-size: 1.125rem; font-weight: 600; margin-bottom: 4px; color: var(--md-primary); }
.rekodi-kosa   { font-size: .75rem; color: var(--md-error); margin-top: 4px; font-weight: 600; }

.nk-jina { font-weight: 600; font-size: 1.0625rem; color: var(--md-primary); }
.nk-meta { font-size: .8125rem; color: var(--md-on-surface-variant); }

.tupu {
  display: grid;
  place-items: center;
  gap: 12px;
  padding: 48px 24px;
  text-align: center;
  color: var(--md-on-surface-variant);
  font-size: .9375rem;
}

.makosa-orodha {
  margin: 8px 0;
  padding-left: 1.25rem;
  color: var(--md-error);
  font-size: .8125rem;
  line-height: 1.6;
}

.zaidi {
  display: block;
  width: 100%;
  margin-top: 12px;
  min-height: 48px;
  border: 1px solid var(--md-outline);
  border-radius: var(--shape-full);
  background: var(--md-surface);
  color: var(--md-primary);
  font-family: inherit;
  font-weight: 700;
  font-size: .875rem;
  cursor: pointer;
}

/* ------------------------------------------------------------
   16. STEPPER
   ------------------------------------------------------------ */
.hatua-kichwa {
  position: sticky;
  top: calc(var(--juu-h) + env(safe-area-inset-top));
  z-index: 20;
  background: var(--md-surface);
  padding: 8px 0 12px;
  margin: -12px 0 8px;
}
.hatua-jina {
  font-size: 1.375rem;
  font-weight: 500;
  line-height: 1.27;
  margin-bottom: 10px;
  color: var(--md-primary);
}
.hatua-upau { display: flex; gap: 4px; }
.hatua-nukta {
  flex: 1;
  height: 5px;
  border: 0;
  padding: 0;
  border-radius: var(--shape-full);
  background: var(--md-surface-container-highest);
  cursor: pointer;
  transition: background var(--dur-medium) var(--ease-standard);
}
.hatua-nukta.imepita { background: var(--md-primary); }
/* JS huweka darasa `hai` kwa hatua ya sasa (siyo `sasa`) */
.hatua-nukta.hai { background: var(--brand-njano); }

/* Nafasi ya kutosha chini ili kitufe cha mwisho cha fomu kisifunikwe
   na upau wa vitufe unaoshikilia chini. Bila hii, kwenye simu ndogo
   askari anaweza kugusa kitufe kisicho sahihi. */
.hatua-mwili { padding-bottom: 88px; }

.hatua-miguu {
  position: sticky;
  bottom: calc(env(safe-area-inset-bottom) + 8px);
  display: flex;
  gap: 12px;
  padding: 12px 0 8px;
  /* Rangi imara chini, inayofifia juu — maudhui yasionekane yakipita
     chini yake, lakini mpaka usikatike ghafla. */
  background: linear-gradient(to top,
              var(--md-surface) 0%, var(--md-surface) 80%, transparent 100%);
  /* Juu ya kichwa cha hatua (20) ili kisiweze kufunika vitufe */
  z-index: 25;
}
.hatua-miguu .btn { flex: 1; }
.hatua-miguu::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: -1px;
  height: 1px;
  background: var(--md-outline-variant);
  opacity: .6;
}

/* ------------------------------------------------------------
   17. KAMERA
   ------------------------------------------------------------ */
.kamera-eneo {
  position: relative;
  border-radius: var(--shape-lg);
  overflow: hidden;
  background: #000;
  margin-bottom: 16px;
  aspect-ratio: 4 / 3;
}
.kamera { width: 100%; height: 100%; object-fit: cover; display: block; }
.kamera-kubwa { aspect-ratio: 3 / 4; }

.mwongozo { position: absolute; inset: 0; pointer-events: none; display: grid; place-items: center; }
.mwongozo-nyaraka {
  width: 86%;
  aspect-ratio: 1.42;
  border: 3px solid var(--brand-njano);
  border-radius: var(--shape-md);
  box-shadow: 0 0 0 9999px rgba(0, 0, 0, .5);
}
.mwongozo-mrz {
  width: 92%;
  aspect-ratio: 7.5;
  border: 3px solid var(--brand-njano);
  border-radius: var(--shape-sm);
  box-shadow: 0 0 0 9999px rgba(0, 0, 0, .5);
}

.picha-gridi {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
  gap: 10px;
  margin: 12px 0;
}
.picha-kadi {
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-md);
  overflow: hidden;
  background: var(--md-surface);
  position: relative;
}
.picha-kidole { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }
.picha-lebo { font-size: .6875rem; font-weight: 700; padding: 6px 8px 2px; }
.picha-meta { font-size: .625rem; padding: 0 8px 6px; color: var(--md-on-surface-variant); }
.picha-onyo { font-size: .625rem; padding: 0 8px 6px; color: var(--md-error); font-weight: 700; }

.mrz-ingizo { font-family: var(--mono); font-size: .8125rem; letter-spacing: .06em; min-height: 96px; }
.mrz-onyesho {
  font-family: var(--mono);
  font-size: .75rem;
  background: var(--md-surface-container-high);
  border-radius: var(--shape-sm);
  padding: 12px;
  overflow-x: auto;
  white-space: pre;
  letter-spacing: .05em;
}

/* ------------------------------------------------------------
   18. WATCHLIST — hapa rangi LAZIMA iwe kubwa
   ------------------------------------------------------------ */
.wl-banda {
  background: var(--md-error);
  color: var(--md-on-error);
  border-radius: var(--shape-lg);
  padding: 16px;
  margin-bottom: 16px;
  animation: mpigo 1.1s var(--ease-standard) 3;
}
@keyframes mpigo {
  0%, 100% { box-shadow: 0 0 0 0 rgba(198, 34, 34, .55); }
  50%      { box-shadow: 0 0 0 14px rgba(198, 34, 34, 0); }
}
.wl-banda-kichwa {
  font-size: 1.125rem;
  font-weight: 800;
  letter-spacing: .03em;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.wl-banda-mstari { font-size: .875rem; line-height: 1.5; }

.wl-kadi {
  background: var(--md-error-container);
  color: var(--md-on-error-container);
  border-radius: var(--shape-md);
  padding: 14px 16px;
  margin-bottom: 10px;
}
.wl-jina  { font-weight: 800; font-size: 1rem; }
.wl-meta  { font-size: .8125rem; opacity: .9; }
.wl-hatua { font-size: .875rem; font-weight: 700; margin-top: 6px; }
.wl-onyo  { font-size: .8125rem; font-weight: 800; color: var(--md-error); letter-spacing: .04em; }

/* ------------------------------------------------------------
   19. BOTTOM SHEET (modali)
   ------------------------------------------------------------ */
.modali-nyuma {
  position: fixed;
  inset: 0;
  background: rgba(0, 16, 48, .42);
  z-index: 100;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  animation: fifia var(--dur-medium) var(--ease-standard);
}
@keyframes fifia { from { opacity: 0; } }

.modali {
  width: 100%;
  max-width: 640px;
  max-height: 88vh;
  overflow-y: auto;
  background: var(--md-surface);
  color: var(--md-on-surface);
  border-radius: var(--shape-xl) var(--shape-xl) 0 0;
  padding: 0 24px calc(24px + env(safe-area-inset-bottom));
  box-shadow: var(--el-3);
  animation: panda var(--dur-long) var(--ease-emphasized);
}
@keyframes panda { from { transform: translateY(100%); } }

.modali::before {
  content: "";
  display: block;
  width: 32px; height: 4px;
  margin: 16px auto 20px;
  border-radius: var(--shape-full);
  background: var(--md-outline);
  opacity: .5;
}

.modali-kichwa { font-size: 1.375rem; font-weight: 600; line-height: 1.33; margin-bottom: 16px; color: var(--md-primary); }
.modali-mwili  { font-size: .9375rem; line-height: 1.55; color: var(--md-on-surface); }
.modali-miguu  { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; margin-top: 24px; }
.modali-hatari .modali-kichwa { color: var(--md-error); }

@media (min-width: 600px) {
  .modali-nyuma { align-items: center; }
  .modali {
    border-radius: var(--shape-xl);
    max-width: 560px;
    margin: 0 24px;
    padding: 24px;
  }
  .modali::before { display: none; }
}

/* ------------------------------------------------------------
   20. SNACKBAR (arifa)
   ------------------------------------------------------------ */
.arifa-eneo {
  position: fixed;
  left: 8px; right: 8px;
  bottom: calc(var(--chini-h) + env(safe-area-inset-bottom) + 8px);
  z-index: 120;
  display: grid;
  gap: 8px;
  pointer-events: none;
}
body.hakuna-chini .arifa-eneo { bottom: calc(env(safe-area-inset-bottom) + 16px); }

.arifa {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 48px;
  padding: 12px 16px;
  border-radius: var(--shape-sm);
  background: var(--md-inverse-surface);
  color: var(--md-inverse-on-surface);
  box-shadow: var(--el-3);
  font-size: .875rem;
  line-height: 1.43;
  pointer-events: auto;
  max-width: 600px;
  margin: 0 auto;
  width: 100%;
  animation: panda var(--dur-medium) var(--ease-emphasized);
}
.arifa-ikoni { flex-shrink: 0; font-size: 1.125rem; line-height: 1; }
.arifa-ikoni svg { width: 20px; height: 20px; fill: currentColor; }
.arifa-txt { flex: 1; }
.arifa-btn {
  border: 0;
  background: transparent;
  color: var(--brand-njano);
  font-family: inherit;
  font-size: .875rem;
  font-weight: 700;
  letter-spacing: .04em;
  padding: 8px 12px;
  margin: -8px -8px -8px 0;
  border-radius: var(--shape-xs);
  cursor: pointer;
  flex-shrink: 0;
}

/* Kutoka kwa snackbar — JS huweka darasa `toka` kabla ya kuiondoa */
.arifa.toka { animation: shukaToka var(--dur-medium) var(--ease-standard) forwards; }
@keyframes shukaToka { to { opacity: 0; transform: translateY(16px); } }

.arifa-ok      { background: var(--md-ok);    color: #FFFFFF; }
.arifa-kosa    { background: var(--md-error); color: var(--md-on-error); }
.arifa-onyo    { background: var(--brand-njano); color: var(--brand-navy); }
.arifa-offline { background: var(--md-inverse-surface); color: var(--md-inverse-on-surface); }
.arifa-ok .arifa-btn, .arifa-kosa .arifa-btn, .arifa-onyo .arifa-btn { color: inherit; text-decoration: underline; }

/* ------------------------------------------------------------
   21. PROGRESS
   ------------------------------------------------------------ */
.upau-kikundi { margin: 12px 0; }
.upau-nje {
  height: 6px;
  background: var(--md-surface-container-highest);
  border-radius: var(--shape-full);
  overflow: hidden;
}
.upau-ndani {
  height: 100%;
  background: var(--md-primary);
  border-radius: var(--shape-full);
  transition: width var(--dur-long) var(--ease-standard);
}
.upau-txt { font-size: .75rem; color: var(--md-on-surface-variant); margin-top: 6px; }

/* Mwaliko wa kusakinisha app */
.sakinisha-banda {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  background: var(--md-surface);
  border: 1px solid var(--md-primary);
  border-radius: var(--shape-lg);
  padding: 16px;
  margin-bottom: 16px;
  animation: ingia var(--dur-long) var(--ease-decelerate);
}
.sakinisha-txt { flex: 1; min-width: 180px; font-size: .9375rem; color: var(--md-primary); }
.sakinisha-txt .hint { margin-top: 2px; }
.sakinisha-vitufe { display: flex; gap: 8px; }

/* ------------------------------------------------------------
   22. SPLASH
   ------------------------------------------------------------ */
.splash { display: grid; place-items: center; gap: 14px; min-height: 70vh; text-align: center; }
.splash .nembo-duara { animation: kua var(--dur-long) var(--ease-emphasized); }
@keyframes kua { from { transform: scale(.82); opacity: 0; } }
.splash h1 {
  font-size: 2.5rem;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--md-primary);
  margin: 0;
}
.splash-txt { font-size: .875rem; color: var(--md-on-surface-variant); max-width: 300px; }
.splash-spin {
  width: 36px; height: 36px;
  border: 4px solid var(--md-surface-container-highest);
  border-top-color: var(--brand-njano);
  border-radius: 50%;
  animation: zunguka .9s linear infinite;
}
@keyframes zunguka { to { transform: rotate(360deg); } }
.splash-toleo { font-size: .6875rem; color: var(--md-on-surface-variant); letter-spacing: .06em; }

/* ------------------------------------------------------------
   23. NEMBO — duara jeupe
   Nembo ya Idara imezungushiwa duara jeupe lenye pete nyembamba,
   ili ikae vizuri kwenye mandhari yoyote (mchana au usiku) na
   ionekane kama alama rasmi, siyo picha iliyobandikwa.
   ------------------------------------------------------------ */
.nembo-duara {
  width: 128px; height: 128px;
  border-radius: 50%;
  background: #FFFFFF;
  display: grid;
  place-items: center;
  margin: 0 auto;
  box-shadow: 0 0 0 1px rgba(0,32,96,.10),
              0 8px 24px rgba(0,32,96,.14);
  position: relative;
  overflow: hidden;
}
/* Pete nyembamba ya njano ndani ya duara */
.nembo-duara::after {
  content: "";
  position: absolute;
  inset: 6px;
  border-radius: 50%;
  border: 2px solid var(--brand-njano);
  pointer-events: none;
}
.nembo-duara img {
  width: 78%;
  height: 78%;
  object-fit: contain;
  display: block;
}
.nembo-kubwa { width: 152px; height: 152px; }

/* ------------------------------------------------------------
   24. LOGIN / PIN
   ------------------------------------------------------------ */
/* App bar tupu kwenye skrini za kuingia — kiashiria cha mtandao pekee */
body.skrini-ingia .juu-logo,
body.skrini-ingia .juu-kichwa { display: none; }
body.skrini-ingia #juu { justify-content: flex-end; padding-right: 12px; }
body.skrini-ingia #juu.imesogea { border-bottom-color: transparent; box-shadow: none; }

.login-fomu { padding-top: 8px; }

.login-kichwa { text-align: center; margin-bottom: 28px; }

.login-jina {
  font-size: 2.25rem;
  font-weight: 800;
  letter-spacing: .14em;
  color: var(--md-primary);
  margin-top: 18px;
  line-height: 1.1;
}
.login-taasisi {
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--md-on-surface-variant);
  margin-top: 2px;
}
.login-mkoa { margin-top: 12px; }

/* Kadi ya fomu — nyeupe yenye mstari, inainua fomu kutoka usuli */
.login-kadi {
  background: var(--md-surface);
  border: 1px solid var(--md-outline-variant);
  border-radius: var(--shape-lg);
  padding: 24px 20px 20px;
  box-shadow: var(--el-1);
}
.login-karibu {
  font-size: 1.375rem;
  font-weight: 700;
  color: var(--md-primary);
  margin: 0 0 4px;
}
.login-maelekezo { margin-bottom: 22px; }

.login-chini {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 20px;
  flex-wrap: wrap;
}
.login-kifaa {
  font-family: var(--mono);
  font-size: .75rem;
  color: var(--md-on-surface-variant);
  background: var(--md-surface-container-high);
  padding: 6px 10px;
  border-radius: var(--shape-full);
  letter-spacing: .02em;
}

.pin-skrini { display: grid; place-items: center; gap: 20px; min-height: 70vh; text-align: center; }
.pin-ingizo {
  width: 210px;
  text-align: center;
  font-size: 2rem;
  letter-spacing: .5em;
  padding: 16px 8px;
  text-indent: .5em;
}

.kifaa-uuid, .uuid-kubwa {
  font-family: var(--mono);
  font-size: .8125rem;
  background: var(--md-surface-container-high);
  color: var(--md-on-surface);
  padding: 10px 12px;
  border-radius: var(--shape-sm);
  word-break: break-all;
}
.uuid-kubwa { font-size: 1rem; text-align: center; letter-spacing: .04em; }

/* ------------------------------------------------------------
   25. LOGI
   ------------------------------------------------------------ */
.logi-orodha { display: grid; gap: 2px; margin: 12px 0; }
.logi {
  display: flex;
  gap: 10px;
  font-size: .75rem;
  font-family: var(--mono);
  padding: 8px 10px;
  border-radius: var(--shape-xs);
  background: var(--md-surface-container);
}
.logi-muda  { color: var(--md-on-surface-variant); flex-shrink: 0; }
.logi-txt   { flex: 1; word-break: break-word; }
.logi-warn  { background: var(--md-warn-container);  color: var(--md-on-warn-container); }
.logi-error { background: var(--md-error-container); color: var(--md-on-error-container); }

/* ------------------------------------------------------------
   26. UPATIKANAJI
   ------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

@media (prefers-contrast: more) {
  :root {
    --md-outline: var(--md-on-surface);
    --md-outline-variant: #8A8F98;
    --md-on-surface-variant: #33373E;
  }
}

/* Jua kali la uwanjani */
body.jua {
  --md-on-surface: #000000;
  --md-on-surface-variant: #16181D;
  --md-outline-variant: #B4B8BE;
  --md-outline: #000000;
}
body.jua .btn, body.jua .btn-jumbo { font-weight: 800; }

/* Skrini kubwa — tablet ya kituo */
@media (min-width: 720px) {
  .kpi-gridi    { grid-template-columns: repeat(4, 1fr); }
  .menyu-gridi  { grid-template-columns: repeat(3, 1fr); }
  .vitufe-kubwa { grid-template-columns: repeat(3, 1fr); }
}

@media print {
  #juu, #chini, #fab, .arifa-eneo, .banda-offline { display: none !important; }
  #app { padding: 0; }
}

/* ══════════════════════════════════════════════════════════
   KICHAGUZI CHA TAREHE (tarehe.js)
   ----------------------------------------------------------
   Vitufe ni vikubwa kwa makusudi: askari anavibonyeza akiwa
   amesimama barabarani, mara nyingi kwa kidole gumba, wakati
   mwingine akiwa na glavu. 44px ndicho kipimo cha chini
   kinachobonyezeka bila kukosea.
   ══════════════════════════════════════════════════════════ */

/* Kitufe kinachoonekana badala ya <input type="date"> */
.ingizo-tarehe {
  text-align: left;
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
  cursor: pointer;
  position: relative;
  padding-right: 44px;
}
.ingizo-tarehe::after {
  content: "";
  position: absolute;
  right: 14px; top: 50%;
  width: 18px; height: 18px;
  transform: translateY(-50%);
  background: currentColor;
  opacity: .5;
  -webkit-mask: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2v2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-2V2h-2v2H9V2H7zm12 8v10H5V10h14z'/%3E%3C/svg%3E");
          mask: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2v2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-2V2h-2v2H9V2H7zm12 8v10H5V10h14z'/%3E%3C/svg%3E");
}
.ingizo-tarehe.tupu { color: var(--md-on-surface-variant); font-weight: 400; }

.tr-pazia {
  position: fixed; inset: 0; z-index: 120;
  background: rgba(0, 12, 36, .55);
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
  animation: tr-fifia var(--dur-short, .15s) ease;
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
@keyframes tr-fifia { from { opacity: 0 } }

.tr-kadi {
  width: 100%; max-width: 360px;
  max-height: 90vh; overflow-y: auto;
  background: var(--md-surface, #fff);
  border-radius: 26px;
  padding: 14px 14px 12px;
  box-shadow: 0 24px 60px rgba(0, 12, 36, .38);
  animation: tr-panda var(--dur-medium, .22s) cubic-bezier(.22,.61,.36,1);
}
@keyframes tr-panda { from { opacity: 0; transform: translateY(18px) scale(.97) } }

.tr-juu {
  display: flex; align-items: center; justify-content: space-between;
  gap: 6px; margin-bottom: 8px;
}
.tr-kati { display: flex; align-items: center; gap: 8px; flex: 1; justify-content: center; }

.tr-mshale {
  width: 44px; height: 44px; flex-shrink: 0;
  border: 0; border-radius: 50%;
  background: transparent; color: var(--md-on-surface, #1a1c1e);
  font-size: 1.6rem; line-height: 1; cursor: pointer;
}
.tr-mshale:active { background: var(--md-surface-container-high, #eceef2); }
.tr-mshale.zimwa { opacity: .25; pointer-events: none; }

.tr-kiungo {
  border: 0; background: transparent; cursor: pointer;
  font-size: 1.05rem; font-weight: 800;
  color: var(--md-primary, #002060);
  padding: 8px 12px; border-radius: 12px;
  display: inline-flex; align-items: center; gap: 5px;
}
.tr-kiungo::after {
  content: "▾"; font-size: .7em; opacity: .65;
}
.tr-kiungo[data-rudi]::after { content: none; }
.tr-kiungo:active { background: var(--md-surface-container-high, #eceef2); }

.tr-dokezo {
  text-align: center; font-size: .72rem; font-weight: 600;
  color: var(--md-on-surface-variant, #43474e);
  background: var(--md-surface-container, #f2f3f7);
  border-radius: 999px; padding: 4px 10px; margin: 0 auto 8px;
  width: fit-content;
}

.tr-wiki {
  display: grid; grid-template-columns: repeat(7, 1fr);
  text-align: center; font-size: .68rem; font-weight: 800;
  color: var(--md-on-surface-variant, #43474e);
  letter-spacing: .04em; margin-bottom: 2px;
}
.tr-gridi { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.tr-siku {
  height: 44px; border: 0; border-radius: 50%;
  background: transparent; color: var(--md-on-surface, #1a1c1e);
  font-size: .95rem; font-weight: 600; cursor: pointer;
  font-variant-numeric: tabular-nums;
}
.tr-siku:active { background: var(--md-surface-container-high, #eceef2); }
.tr-siku.leo   { box-shadow: inset 0 0 0 2px var(--md-primary, #002060); font-weight: 800; }
.tr-siku.teule { background: var(--md-primary, #002060); color: #fff; font-weight: 800; }
.tr-siku.zimwa { opacity: .22; pointer-events: none; }

.tr-gridi-mwezi { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 4px 0; }
.tr-mwezi {
  height: 52px; border: 0; border-radius: 16px;
  background: var(--md-surface-container, #f2f3f7);
  color: var(--md-on-surface, #1a1c1e);
  font-size: .92rem; font-weight: 700; cursor: pointer;
}
.tr-mwezi:active { background: var(--md-surface-container-high, #eceef2); }
.tr-mwezi.leo   { box-shadow: inset 0 0 0 2px var(--md-primary, #002060); }
.tr-mwezi.teule { background: var(--md-primary, #002060); color: #fff; }
.tr-mwezi.zimwa { opacity: .25; pointer-events: none; }

.tr-gridi-mwaka {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  max-height: 340px; overflow-y: auto; padding: 4px 2px;
  scrollbar-width: thin;
}
.tr-mwaka-kitufe {
  height: 50px; border: 0; border-radius: 14px;
  background: var(--md-surface-container, #f2f3f7);
  color: var(--md-on-surface, #1a1c1e);
  font-size: .95rem; font-weight: 700; cursor: pointer;
  font-variant-numeric: tabular-nums;
}
.tr-mwaka-kitufe:active { background: var(--md-surface-container-high, #eceef2); }
.tr-mwaka-kitufe.leo   { box-shadow: inset 0 0 0 2px var(--md-primary, #002060); }
.tr-mwaka-kitufe.teule { background: var(--md-primary, #002060); color: #fff; }

.tr-chini {
  display: flex; gap: 8px; margin-top: 10px;
  border-top: 1px solid var(--md-outline-variant, #e1e3e7); padding-top: 10px;
}
.tr-kitufe {
  flex: 1; height: 46px; border: 0; border-radius: 14px;
  background: var(--md-surface-container, #f2f3f7);
  color: var(--md-on-surface, #1a1c1e);
  font-size: .88rem; font-weight: 800; cursor: pointer;
}
.tr-kitufe.tr-kuu { background: var(--md-primary, #002060); color: #fff; }
.tr-kitufe:active { opacity: .85; }

/* ══════════ HALI YA HATI — halali / inakaribia / imeisha ══════════ */
.hali-hati {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  border-radius: 14px; padding: 11px 14px; margin: -4px 0 14px;
  font-size: .84rem; font-weight: 600;
  border: 1px solid transparent;
}
.hali-hati strong {
  font-size: .72rem; font-weight: 900; letter-spacing: .07em;
  padding: 3px 10px; border-radius: 999px;
}
.hali-hati.halali  { background: #EFFAEA; border-color: #C6E6C0; color: #1B5B29; }
.hali-hati.halali strong  { background: #1E7A34; color: #fff; }
.hali-hati.karibu  { background: #FFF9E6; border-color: #F0DFA6; color: #7A5B06; }
.hali-hati.karibu strong  { background: #B98B0A; color: #fff; }
.hali-hati.imeisha { background: #FEF2F2; border-color: #F3C9C4; color: #8C1C13; }
.hali-hati.imeisha strong { background: #C0271A; color: #fff; }

@media (prefers-reduced-motion: reduce) {
  .tr-pazia, .tr-kadi { animation: none; }
}
