/* ==========================================================================
   Webyne — Sales Target & Performance Dashboard
   Professional data-centre / cloud palette: dark blue, white, light grey.
   Green / orange / red are reserved exclusively for performance status.
   ========================================================================== */

:root{
  /* brand navy */
  --navy-900:#071a33;
  --navy-800:#0c2748;
  --navy-700:#123561;
  --navy-600:#1a4680;
  --navy-500:#245ba3;

  /* neutrals */
  --ink:#16202e;
  --ink-2:#3d4a5c;
  --muted:#6b7789;
  --line:#dde3ec;
  --line-2:#eaeef4;
  --grey-50:#f5f7fa;
  --grey-100:#eef1f6;
  --white:#ffffff;

  /* status — performance only */
  --green:#12805c;  --green-bg:#e6f4ee;  --green-line:#9dd4bf;
  --orange:#a85c07; --orange-bg:#fdf0e0; --orange-line:#f0c68a;
  --red:#b3261e;    --red-bg:#fdeceb;    --red-line:#f0b3ae;

  --radius:10px;
  --radius-sm:7px;
  --shadow:0 1px 2px rgba(7,26,51,.06), 0 4px 14px rgba(7,26,51,.06);
  --shadow-lg:0 12px 40px rgba(7,26,51,.18);
  --font:"Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono:"Cascadia Mono", Consolas, "SF Mono", Menlo, monospace;
  --sidebar-w:236px;
}

*,*::before,*::after{box-sizing:border-box}

/* Author display rules (.login, .modal, .view) would otherwise beat the UA
   [hidden] rule, so every hidden section would still paint. */
[hidden]{display:none !important}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  font-family:var(--font);
  font-size:14px;
  line-height:1.5;
  color:var(--ink);
  background:var(--grey-50);
}

h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
h1{font-size:1.35rem}
h2{font-size:1.02rem}
h3{font-size:.9rem}
p{margin:0}
b,strong{font-weight:650}

.muted{color:var(--muted)}
.small{font-size:.76rem}
.req{color:var(--red);font-weight:700}
.static{padding:8px 0;font-weight:650;font-size:.9rem}

/* ------------------------------------------------------------- buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:9px 15px;border:1px solid transparent;border-radius:var(--radius-sm);
  font:inherit;font-weight:600;font-size:.83rem;line-height:1;
  cursor:pointer;white-space:nowrap;
  transition:background .14s, border-color .14s, color .14s;
}
.btn:focus-visible{outline:2px solid var(--navy-500);outline-offset:2px}
.btn--primary{background:var(--navy-700);color:#fff}
.btn--primary:hover{background:var(--navy-600)}
.btn--ghost{background:var(--white);color:var(--navy-700);border-color:var(--line)}
.btn--ghost:hover{background:var(--grey-100);border-color:#c8d2e0}
.btn--danger{background:var(--white);color:var(--red);border-color:var(--red-line)}
.btn--danger:hover{background:var(--red-bg)}
.btn--sm{padding:7px 11px;font-size:.78rem}
.btn--block{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn--ok{background:var(--white);color:var(--green);border-color:var(--green-line)}
.btn--ok:hover{background:var(--green-bg)}

/* -------------------------------------------------------------- fields */
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field>span{font-size:.74rem;font-weight:650;color:var(--ink-2);letter-spacing:.02em;text-transform:uppercase}
.field input,.field select,.field textarea{
  width:100%;padding:8px 10px;font:inherit;font-size:.86rem;color:var(--ink);
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius-sm);
  transition:border-color .14s, box-shadow .14s;
}
.field textarea{resize:vertical;min-height:38px}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--navy-500);box-shadow:0 0 0 3px rgba(36,91,163,.14);
}
.field input[readonly],.field select[disabled],.field textarea[readonly],.field input[disabled]{background:var(--grey-100);color:var(--ink-2)}
.field input[type=file]{padding:6px 8px;font-size:.8rem}
.field__hint{font-size:.72rem;color:var(--muted);text-transform:none;font-weight:400}
.field--wide{grid-column:1/-1}
.field--sm>span{font-size:.7rem}
.field--inline{flex-direction:row;align-items:center;gap:8px}
.field--inline>span{white-space:nowrap}
.field--inline select{width:auto;padding:6px 8px;font-size:.8rem}

.form-error{
  margin:0;padding:9px 12px;border-radius:var(--radius-sm);
  background:var(--red-bg);border:1px solid var(--red-line);color:var(--red);
  font-size:.82rem;font-weight:600;
}
.form-error--block ul{margin:6px 0 0;padding-left:18px;font-weight:500}

.note{margin:10px 0 0;font-size:.78rem;color:var(--muted)}
.note--warn{
  padding:9px 11px;border-radius:var(--radius-sm);
  background:#fff8e8;border:1px solid #f0d9a8;color:#7a5410;
}
.note--info{padding:9px 11px;border-radius:var(--radius-sm);background:#eaf1fb;border:1px solid #c7d7ee;color:var(--navy-700)}
code{font-family:var(--mono);font-size:.85em;background:var(--grey-100);padding:1px 5px;border-radius:4px}

.prose{font-size:.84rem;color:var(--ink-2);line-height:1.55}
.prose p{margin:0 0 9px}
.prose ol,.prose ul{margin:0 0 9px;padding-left:20px}
.prose li{margin-bottom:4px}
.prose h4{margin:12px 0 5px;font-size:.84rem;color:var(--navy-700)}
.prose pre{margin:0 0 10px;padding:10px 12px;background:var(--navy-900);color:#d6e2f2;border-radius:var(--radius-sm);font-family:var(--mono);font-size:.76rem;overflow:auto}
.prose a{color:var(--navy-600)}

/* ------------------------------------------------------- key/value row */
.kv-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;font-size:.82rem}
.kv-row>span{color:var(--muted);min-width:120px}
.kv-row code{flex:1 1 auto;min-width:0;background:var(--navy-50,#f2f5fa);padding:4px 8px;border-radius:var(--radius-sm);font-family:var(--mono);font-size:.8rem;word-break:break-all}
.kv-row code.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:normal}
.mono-list{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px}
.mono-list li{font-family:var(--mono);font-size:.9rem;background:var(--navy-50,#f2f5fa);border-radius:var(--radius-sm);padding:6px 8px;text-align:center}

/* ---------------------------------------------------------------- tags */
.tag{
  display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;
  font-size:.7rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  background:var(--grey-100);color:var(--ink-2);white-space:nowrap;
}
.tag--mode{background:rgba(255,255,255,.14);color:#fff}
.tag--lock{background:#fff;color:var(--navy-800)}
.tag--ok{background:var(--green-bg);color:var(--green)}
.tag--warn{background:var(--orange-bg);color:var(--orange)}
.tag--bad{background:var(--red-bg);color:var(--red)}
.tag--info{background:#eaf1fb;color:var(--navy-700)}

/* --------------------------------------------------------------- logo */
.logo{width:32px;height:32px;flex:0 0 auto}
.logo rect{fill:#fff;opacity:.9}
.logo .logo__led{fill:var(--navy-800)}

/* -------------------------------------------------------------- login */
.login{
  min-height:100vh;display:grid;place-items:center;padding:24px 16px;
  background:
    radial-gradient(900px 500px at 15% -10%, rgba(36,91,163,.5), transparent 60%),
    radial-gradient(700px 500px at 100% 100%, rgba(18,53,97,.6), transparent 60%),
    var(--navy-900);
}
.login__card{
  width:100%;max-width:420px;background:var(--white);
  border-radius:14px;box-shadow:var(--shadow-lg);overflow:hidden;
}
.login__brand{
  display:flex;align-items:center;gap:12px;padding:20px 26px;
  background:var(--navy-800);color:#fff;
}
.login__name{font-size:1.15rem;font-weight:750;letter-spacing:.14em}
.login__tag{font-size:.72rem;opacity:.7;letter-spacing:.05em}
.login__form{display:flex;flex-direction:column;gap:14px;padding:26px}
.login__form h1{font-size:1.15rem}
.login__form .muted{font-size:.82rem;margin-top:-10px}
.login__demo{border-top:1px solid var(--line);font-size:.8rem}
.login__demo summary{padding:12px 26px;cursor:pointer;font-weight:600;color:var(--navy-700)}
.login__demo-body{padding:0 26px 20px}
.mini-table{width:100%;border-collapse:collapse;font-size:.78rem}
.mini-table th,.mini-table td{padding:5px 8px;text-align:left;border-bottom:1px solid var(--line-2)}
.mini-table th{color:var(--muted);font-weight:650;text-transform:uppercase;font-size:.68rem}
.mini-table td:nth-child(-n+2){font-family:var(--mono)}

/* --------------------------------------------------------------- shell */
.shell{display:flex;min-height:100vh}
.shell__main{flex:1;min-width:0;display:flex;flex-direction:column}
.shell__backdrop{display:none;position:fixed;inset:0;background:rgba(7,26,51,.5);z-index:40}

.sidebar{
  width:var(--sidebar-w);flex:0 0 var(--sidebar-w);
  position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;
  background:var(--navy-800);color:#fff;z-index:45;
}
.sidebar__brand{display:flex;align-items:center;gap:11px;padding:16px 18px 14px;border-bottom:1px solid rgba(255,255,255,.08)}
.sidebar__name{font-size:.98rem;font-weight:750;letter-spacing:.14em;line-height:1.2}
.sidebar__sub{font-size:.68rem;opacity:.68}
.sidebar__close{display:none;margin-left:auto;background:none;border:0;color:#fff;font-size:1.5rem;line-height:1;cursor:pointer}
.sidebar__cycle{
  display:flex;flex-direction:column;gap:2px;margin:12px 14px 6px;padding:9px 12px;
  background:rgba(255,255,255,.08);border-radius:var(--radius-sm);font-size:.8rem;
}
.sidebar__cycle-label{opacity:.6;font-size:.66rem;text-transform:uppercase;letter-spacing:.05em}
.sidebar__cycle-dates{opacity:.72;font-size:.72rem}
.sidebar__cycle .tag{align-self:flex-start;margin-top:4px}
.sidebar__foot{margin-top:auto;padding:12px 14px 14px;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:10px}
.sidebar .btn--ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.28)}
.sidebar .btn--ghost:hover{background:rgba(255,255,255,.12)}

.nav{display:flex;flex-direction:column;gap:2px;padding:6px 10px;overflow-y:auto}
.nav__item{
  display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;
  background:transparent;border:0;border-radius:var(--radius-sm);
  color:rgba(255,255,255,.78);font:inherit;font-size:.84rem;font-weight:600;text-align:left;
  cursor:pointer;transition:background .14s,color .14s;
}
.nav__item svg{width:18px;height:18px;flex:0 0 auto;fill:currentColor;opacity:.85}
.nav__item:hover{background:rgba(255,255,255,.08);color:#fff}
.nav__item.is-active{background:var(--white);color:var(--navy-800)}
.nav__item.is-active svg{opacity:1}
.nav__badge{margin-left:auto;min-width:20px;padding:1px 6px;border-radius:10px;background:var(--orange);color:#fff;font-size:.68rem;text-align:center}
.nav__item.is-active .nav__badge{background:var(--orange)}

.userchip{display:flex;align-items:center;gap:9px;min-width:0}
.userchip__avatar{
  width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;
  background:var(--navy-500);font-size:.75rem;font-weight:700;letter-spacing:.02em;
}
.userchip__meta{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.userchip__name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.userchip__role{font-size:.66rem;opacity:.66;text-transform:uppercase;letter-spacing:.04em}

/* ------------------------------------------------------------- topbar */
.topbar{
  display:flex;align-items:center;gap:14px;
  padding:12px 22px;background:var(--navy-700);color:#fff;
  position:sticky;top:0;z-index:30;
}
.topbar__menu{display:none;flex-direction:column;gap:4px;padding:6px;background:none;border:0;cursor:pointer}
.topbar__menu span{display:block;width:20px;height:2px;background:#fff;border-radius:1px}
.topbar__title{min-width:0}
.topbar__title h1{font-size:1.05rem;color:#fff}
.topbar__sub{font-size:.72rem;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar__right{margin-left:auto;display:flex;align-items:center;gap:12px}
.bell{position:relative;background:rgba(255,255,255,.1);border:0;border-radius:50%;width:36px;height:36px;display:grid;place-items:center;color:#fff;cursor:pointer}
.bell:hover{background:rgba(255,255,255,.18)}
.bell svg{width:20px;height:20px}
.bell__count{position:absolute;top:-4px;right:-4px;min-width:18px;padding:1px 5px;border-radius:9px;background:var(--red);color:#fff;font-size:.66rem;text-align:center;line-height:1.4}

/* --------------------------------------------------------------- main */
.main{width:100%;max-width:1500px;margin:0 auto;padding:18px;flex:1}
.view{display:flex;flex-direction:column;gap:16px}

.panel{
  background:var(--white);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;
}
.panel__head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex-wrap:wrap;margin-bottom:14px;
}
.panel__head--sub{margin-top:18px;padding-top:14px;border-top:1px solid var(--line-2)}
.panel__actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.panel--filters{padding:14px 16px}

.grid-2{display:grid;grid-template-columns:1.35fr 1fr;gap:16px}
.grid-2--rev{grid-template-columns:1fr 1fr}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}

/* ------------------------------------------------------------ filters */
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;align-items:end}
.filters--compact{margin-bottom:12px}
.filters--top{margin-top:12px}
.filters__actions{display:flex;align-items:end}
.filters__hint{margin-top:10px;font-size:.78rem;color:var(--muted)}
.dayctl{display:flex;align-items:center;gap:8px}
.dayctl input[type=range]{flex:1;min-width:70px;accent-color:var(--navy-600);padding:0}
.dayctl input[type=number]{width:58px;flex:0 0 auto;text-align:center;font-weight:650}

/* --------------------------------------------------------------- KPIs */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(176px,1fr));gap:12px}
.kpi{
  background:var(--white);border:1px solid var(--line);border-left:3px solid var(--navy-600);
  border-radius:var(--radius);padding:13px 15px;box-shadow:var(--shadow);min-width:0;
}
.kpi__label{font-size:.7rem;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.kpi__value{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin-top:3px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi__sub{font-size:.74rem;color:var(--muted);margin-top:3px}
.kpi--green{border-left-color:var(--green)}
.kpi--green .kpi__value{color:var(--green)}
.kpi--orange{border-left-color:var(--orange)}
.kpi--orange .kpi__value{color:var(--orange)}
.kpi--red{border-left-color:var(--red)}
.kpi--red .kpi__value{color:var(--red)}
.kpi--muted{border-left-color:var(--line)}
.kpi--muted .kpi__value{color:var(--ink-2)}

/* ------------------------------------------------------------- alerts */
.alerts{display:flex;flex-direction:column;gap:8px}
.alerts:empty{display:none}
.alert{
  display:flex;gap:11px;align-items:flex-start;padding:11px 14px;
  border-radius:var(--radius-sm);font-size:.83rem;
}
.alert--red{background:var(--red-bg);border:1px solid var(--red-line);color:#8a1e17}
.alert--orange{background:var(--orange-bg);border:1px solid var(--orange-line);color:#7d4505}
.alert--green{background:var(--green-bg);border:1px solid var(--green-line);color:#0c6046}
.alert--info{background:#eaf1fb;border:1px solid #c7d7ee;color:var(--navy-700)}
.alert__dot{width:8px;height:8px;border-radius:50%;background:currentColor;margin-top:6px;flex:0 0 auto}
.alert b{font-weight:700}

/* -------------------------------------------------------------- zones */
.zone{
  display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;
  font-size:.71rem;font-weight:700;letter-spacing:.02em;white-space:nowrap;
}
.zone::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.zone--green{background:var(--green-bg);color:var(--green)}
.zone--orange{background:var(--orange-bg);color:var(--orange)}
.zone--red{background:var(--red-bg);color:var(--red)}
.zone--none{background:var(--grey-100);color:var(--muted)}
.zone--pending{background:#eaf1fb;color:var(--navy-700)}
.zone--rejected{background:var(--grey-100);color:var(--muted);text-decoration:line-through}

/* zone-tinted table rows */
table.data tbody tr.row--green td:first-child{box-shadow:inset 3px 0 0 var(--green)}
table.data tbody tr.row--orange td:first-child{box-shadow:inset 3px 0 0 var(--orange)}
table.data tbody tr.row--red td:first-child{box-shadow:inset 3px 0 0 var(--red)}
table.data tbody tr.row--red td{background:rgba(253,236,235,.45)}
table.data tbody tr.row--orange td{background:rgba(253,240,224,.4)}
table.data tbody tr.row--green td{background:rgba(230,244,238,.4)}

/* ------------------------------------------------------------- charts */
.chartbox{position:relative;height:260px;width:100%}
.chartbox--tall{height:360px}
.chartbox--sq{height:240px}
.chartbox canvas{width:100% !important;height:100% !important}
.chart__fallback{font-size:.8rem;color:var(--muted);padding:12px}

/* ------------------------------------------------------- zone summary */
.zonesum{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.zonecard{padding:12px;border-radius:var(--radius-sm);text-align:center;border:1px solid}
.zonecard--green{background:var(--green-bg);border-color:var(--green-line)}
.zonecard--orange{background:var(--orange-bg);border-color:var(--orange-line)}
.zonecard--red{background:var(--red-bg);border-color:var(--red-line)}
.zonecard__n{font-size:1.7rem;font-weight:750;line-height:1}
.zonecard--green .zonecard__n{color:var(--green)}
.zonecard--orange .zonecard__n{color:var(--orange)}
.zonecard--red .zonecard__n{color:var(--red)}
.zonecard__l{font-size:.72rem;font-weight:650;text-transform:uppercase;letter-spacing:.04em;margin-top:3px;color:var(--ink-2)}
.zonecard__s{font-size:.7rem;color:var(--muted);margin-top:2px}

.runrate{display:flex;flex-direction:column;gap:9px}
.runrate__row{display:flex;justify-content:space-between;gap:12px;font-size:.83rem;padding:6px 0;border-bottom:1px dashed var(--line-2)}
.runrate__row:last-child{border-bottom:0}
.runrate__row b{font-variant-numeric:tabular-nums;text-align:right}

.zonerules{display:flex;flex-direction:column;gap:8px}
.zonerule{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--radius-sm);border:1px solid;font-size:.82rem}
.zonerule--green{background:var(--green-bg);border-color:var(--green-line)}
.zonerule--orange{background:var(--orange-bg);border-color:var(--orange-line)}
.zonerule--red{background:var(--red-bg);border-color:var(--red-line)}
.zonerule b{font-size:.95rem;min-width:70px}
.zonerule small{color:var(--ink-2)}

/* ------------------------------------------------------------- tables */
.tablewrap{overflow:auto;max-height:520px;border:1px solid var(--line);border-radius:var(--radius-sm)}
.tablewrap--tall{max-height:620px}
.tablewrap--top{margin-top:14px}
table.data{width:100%;border-collapse:separate;border-spacing:0;font-size:.82rem}
table.data th,table.data td{padding:9px 11px;text-align:left;white-space:nowrap}
table.data thead th{
  position:sticky;top:0;z-index:2;
  background:var(--grey-100);color:var(--ink-2);
  font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  border-bottom:1px solid var(--line);
}
table.data thead th.sortable{cursor:pointer;user-select:none}
table.data thead th.sortable:hover{color:var(--navy-700)}
table.data thead th.sorted-asc::after{content:" ▲";font-size:.6rem}
table.data thead th.sorted-desc::after{content:" ▼";font-size:.6rem}
table.data tbody td{border-bottom:1px solid var(--line-2)}
table.data tbody tr:last-child td{border-bottom:0}
table.data tbody tr:hover td{background:var(--grey-50)}
table.data tfoot td{
  position:sticky;bottom:0;z-index:2;
  background:var(--navy-800);color:#fff;font-weight:650;border-top:2px solid var(--navy-900);
}
table.data .num{text-align:right;font-variant-numeric:tabular-nums}
table.data .name{font-weight:600;white-space:normal;min-width:150px}
table.data .wrap{white-space:normal;min-width:160px}
table.data .rowact{display:flex;gap:5px;flex-wrap:wrap}
table.data .empty{text-align:center;color:var(--muted);padding:26px;white-space:normal}
table.data tr.subrow td{background:var(--grey-50);font-size:.78rem;padding-top:6px;padding-bottom:6px}
table.data tr.subrow td:first-child{padding-left:28px;color:var(--ink-2)}
table.data.data--expand tbody tr.expandable{cursor:pointer}
table.data.data--expand tbody tr.expandable td:first-child::before{content:"▸ ";color:var(--muted);font-size:.7rem}
table.data.data--expand tbody tr.expandable.is-open td:first-child::before{content:"▾ "}
.linkbtn{
  background:none;border:0;padding:2px 4px;font:inherit;font-size:.78rem;font-weight:600;
  color:var(--navy-600);cursor:pointer;border-radius:4px;
}
.linkbtn:hover{background:var(--grey-100);text-decoration:underline}
.linkbtn--danger{color:var(--red)}
.linkbtn--ok{color:var(--green)}
table.data.data--edit input{
  width:74px;padding:5px 7px;font:inherit;font-size:.8rem;text-align:right;
  border:1px solid var(--line);border-radius:5px;font-variant-numeric:tabular-nums;
}
table.data.data--edit input.wide{width:104px}
table.data.data--edit input:focus{outline:none;border-color:var(--navy-500);box-shadow:0 0 0 2px rgba(36,91,163,.16)}
table.data.data--edit input.is-bad{border-color:var(--red);background:var(--red-bg)}
table.data.data--edit input[disabled]{background:var(--grey-100);color:var(--ink-2)}

.targettotals{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.ttcard{padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--grey-50)}
.ttcard__n{font-size:1.25rem;font-weight:750;font-variant-numeric:tabular-nums}
.ttcard__l{font-size:.72rem;color:var(--muted);font-weight:650;text-transform:uppercase}
.ttcard.is-ok{border-color:var(--green-line);background:var(--green-bg)}
.ttcard.is-ok .ttcard__n{color:var(--green)}
.ttcard.is-bad{border-color:var(--red-line);background:var(--red-bg)}
.ttcard.is-bad .ttcard__n{color:var(--red)}

/* ---------------------------------------------------------- segmented */
.seg{display:inline-flex;background:var(--grey-100);border-radius:var(--radius-sm);padding:3px;gap:2px}
.seg--wide{display:flex;flex-wrap:wrap}
.seg__btn{
  padding:7px 13px;border:0;border-radius:5px;background:transparent;
  font:inherit;font-size:.79rem;font-weight:600;color:var(--ink-2);cursor:pointer;
  transition:background .14s,color .14s;
}
.seg__btn:hover{color:var(--navy-700)}
.seg__btn.is-active{background:var(--white);color:var(--navy-700);box-shadow:0 1px 3px rgba(7,26,51,.12)}

/* --------------------------------------------------------------- form */
.form{display:flex;flex-direction:column;gap:16px}
.form__group{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px 16px;margin:0;min-width:0}
.form__group legend{
  padding:0 7px;font-size:.72rem;font-weight:700;color:var(--navy-700);
  text-transform:uppercase;letter-spacing:.06em;
}
.form__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:13px}
.form__actions{display:flex;gap:9px;flex-wrap:wrap}
.form__actions--top{margin-top:12px}

/* -------------------------------------------------------------- modal */
.modal{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px}
.modal__backdrop{position:absolute;inset:0;background:rgba(7,26,51,.55)}
.modal__box{
  position:relative;width:100%;max-width:560px;max-height:88vh;display:flex;flex-direction:column;
  background:var(--white);border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden;
}
.modal__box--wide{max-width:900px}
.modal__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line)}
.modal__x{background:none;border:0;font-size:1.5rem;line-height:1;color:var(--muted);cursor:pointer;padding:0 4px}
.modal__x:hover{color:var(--ink)}
.modal__body{padding:18px;overflow:auto;display:flex;flex-direction:column;gap:13px}
.modal__foot{display:flex;justify-content:flex-end;gap:9px;padding:13px 18px;border-top:1px solid var(--line);background:var(--grey-50)}
.modal__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:13px}
.modal dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:.83rem}
.modal dt{color:var(--muted);font-weight:600}
.modal dd{margin:0;word-break:break-word}

/* ------------------------------------------------------------- drawer */
.drawer{position:fixed;inset:0;z-index:55}
.drawer__backdrop{position:absolute;inset:0;background:rgba(7,26,51,.35)}
.drawer__box{
  position:absolute;top:0;right:0;bottom:0;width:min(420px,100%);
  display:flex;flex-direction:column;background:var(--white);box-shadow:var(--shadow-lg);
}
.drawer__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.drawer__body{overflow:auto;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.notif{
  display:flex;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:var(--white);
}
.notif.is-unread{background:var(--grey-50);border-color:#c8d2e0}
.notif__dot{width:9px;height:9px;border-radius:50%;margin-top:6px;flex:0 0 auto;background:var(--muted)}
.notif--red .notif__dot{background:var(--red)}
.notif--orange .notif__dot{background:var(--orange)}
.notif--green .notif__dot{background:var(--green)}
.notif--info .notif__dot{background:var(--navy-500)}
.notif__t{font-size:.83rem;font-weight:650}
.notif__b{font-size:.78rem;color:var(--ink-2);margin-top:2px}
.notif__m{font-size:.7rem;color:var(--muted);margin-top:4px}

/* ------------------------------------------------------------ syncres */
.syncresult{margin-top:12px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--grey-50);border:1px solid var(--line);font-size:.8rem}
.syncresult ul{margin:6px 0 0;padding-left:18px}
.syncresult pre{margin:8px 0 0;font-family:var(--mono);font-size:.72rem;white-space:pre-wrap;max-height:220px;overflow:auto}

/* -------------------------------------------------------------- toast */
.toast{
  position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);
  z-index:80;padding:11px 18px;border-radius:var(--radius-sm);
  background:var(--navy-900);color:#fff;font-size:.85rem;font-weight:600;
  box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;
  max-width:calc(100vw - 32px);
}
.toast.is-on{opacity:1;transform:translate(-50%,0)}
.toast.is-err{background:var(--red)}
.toast.is-ok{background:var(--green)}

/* --------------------------------------------------------------- busy */
.busy{position:fixed;inset:0;z-index:70;display:grid;place-items:center;background:rgba(245,247,250,.55)}
.busy__box{display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);font-size:.85rem;font-weight:600}
.spinner{width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--navy-600);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spinner{animation:none}}

/* ------------------------------------------------------------- footer */
.footer{
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;
  width:100%;max-width:1500px;margin:0 auto;padding:18px;
  font-size:.75rem;color:var(--muted);
}

/* -------------------------------------------------------- responsive */
@media (max-width:1180px){
  .grid-2,.grid-2--rev{grid-template-columns:1fr}
  .grid-3{grid-template-columns:1fr 1fr}
}
@media (max-width:980px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;height:auto;transform:translateX(-100%);transition:transform .2s ease}
  .shell.nav-open .sidebar{transform:none}
  .shell.nav-open .shell__backdrop{display:block}
  .sidebar__close{display:block}
  .topbar__menu{display:flex}
  .topbar{padding:10px 14px}
  .grid-3{grid-template-columns:1fr}
}
@media (max-width:820px){
  .main{padding:13px}
  .zonesum{grid-template-columns:1fr}
  .tablewrap{max-height:440px}
  .chartbox--tall{height:300px}
  .topbar__sub{display:none}
}
@media (max-width:560px){
  body{font-size:13px}
  .panel{padding:13px}
  .kpis{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
  .kpi__value{font-size:1.3rem}
  .form__grid,.filters{grid-template-columns:1fr}
  .form__group{padding:12px}
  .panel__head{align-items:flex-start;flex-direction:column;gap:8px}
  .btn{padding:9px 13px}
  .footer{flex-direction:column;gap:4px}
  .chartbox{height:220px}
  .modal__box{max-height:94vh}
  .tag--mode{display:none}
}

/* ------------------------------------------------------------- print */
@media print{
  .sidebar,.topbar,.footer,.filters,.panel__actions,.form__actions,.toast,.modal,
  .alerts,.seg,.drawer,.busy,.shell__backdrop{display:none !important}
  body{background:#fff}
  .shell{display:block}
  .main{max-width:none;padding:0}
  .panel{border:0;box-shadow:none;padding:0;margin-bottom:18px;break-inside:avoid}
  .tablewrap{max-height:none;overflow:visible;border:0}
  table.data{font-size:9.5pt}
  table.data thead th{background:#e9edf3 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  table.data tfoot td{background:#0c2748 !important;color:#fff !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .zone{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .view[hidden]{display:none !important}
  .chartbox{height:auto}
}
