/* Design Tokens
   ------------- */

:root {
  --navy:#071a33;
  --navy2:#0c294d;
  --blue:#1475e8;
  --orange:#f47b20;
  --bg:#f3f6fa;
  --card:#fff;
  --text:#172235;
  --muted:#66758b;
  --line:#dce4ee;
  --green:#11966b;
  --red:#db3b4b;
  --amber:#e69b17;
  --purple:#7657d6;
  --shadow:0 8px 28px rgba(8,31,62,.08)
}

/* Base
   ---- */

* {
  box-sizing:border-box
}

body {
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;
  font-size:14px
}

button,input,select {
  font:inherit
}

button {
  cursor:pointer
}

.hidden {
  display:none!important
}

/* Header
   ------ */

.top {
  background:linear-gradient(130deg,var(--navy),var(--navy2));
  color:#fff;
  padding:18px 26px;
  position:sticky;
  top:0;
  z-index:20;
  box-shadow:0 5px 20px rgba(3,19,38,.22)
}

.topin {
  max-width:1600px;
  margin:auto;
  display:flex;
  gap:18px;
  align-items:center;
  justify-content:space-between
}

.brand {
  display:flex;
  align-items:center;
  gap:13px
}

.brand-logo {
  display:block;
  width:180px;
  height:58px;
  object-fit:contain;
  object-position:left center
}

.brand p {
  margin:3px 0 0;
  color:#bcd0e7;
  font-size:12px
}

.actions {
  display:flex;
  gap:8px;
  flex-wrap:wrap
}

/* Layout
   ------ */

main {
  max-width:1600px;
  margin:0 auto;
  padding:20px 24px 38px
}

.panel {
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:var(--shadow);
  margin-bottom:16px
}

.pad {
  padding:17px
}

.section-title {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:15px;
  margin-bottom:14px
}

.section-title h2 {
  font-size:16px;
  margin:0
}

.section-title small {
  color:var(--muted)
}

.notice {
  padding:10px 12px;
  background:#fff7e9;
  color:#81530b;
  border:1px solid #ffe0aa;
  border-radius:9px;
  margin-bottom:12px
}

.toast {
  position:fixed;
  right:20px;
  bottom:20px;
  background:#14243a;
  color:#fff;
  padding:12px 16px;
  border-radius:10px;
  box-shadow:0 10px 30px #0004;
  z-index:90;
  max-width:420px
}

.empty {
  text-align:center;
  color:var(--muted);
  padding:38px
}

.technical {
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
  font-size:11px
}

/* Buttons
   ------- */

.btn {
  border:1px solid transparent;
  border-radius:9px;
  padding:9px 13px;
  font-weight:650;
  background:#fff;
  color:var(--navy);
  display:inline-flex;
  align-items:center;
  gap:7px
}

.btn:hover {
  filter:brightness(.97)
}

.btn.primary {
  background:var(--orange);
  color:#fff
}

.btn.ghost {
  background:rgba(255,255,255,.09);
  border-color:rgba(255,255,255,.22);
  color:#fff
}

.btn.soft {
  background:#edf4fc;
  color:#164a82
}

.btn.danger {
  background:#fff0f1;
  color:#b82d3d
}

.linkbtn {
  border:0;
  background:transparent;
  color:var(--blue);
  font-size:12px;
  font-weight:700;
  padding:3px
}

/* Upload
   ------ */

.drop {
  border:2px dashed #b9c9da;
  border-radius:14px;
  padding:42px 20px;
  text-align:center;
  background:linear-gradient(180deg,#fff,#f8fbfe);
  transition:.2s
}

.drop.drag {
  border-color:var(--orange);
  background:#fff7ef
}

.drop .ico {
  font-size:42px
}

.drop h2 {
  margin:10px 0 4px
}

.drop p {
  color:var(--muted);
  margin:0 0 15px
}

.filemeta {
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:center;
  margin-top:13px;
  color:var(--muted)
}

.badge {
  padding:5px 9px;
  border-radius:999px;
  background:#eaf2fb;
  color:#245784;
  font-size:12px;
  font-weight:650
}

.badge.ok {
  background:#e7f7f1;
  color:#087a55
}

.badge.warn {
  background:#fff2da;
  color:#95600a
}

/* Filters
   ------- */

.filters {
  display:grid;
  grid-template-columns:repeat(6,minmax(150px,1fr));
  gap:10px
}

.field label {
  display:block;
  color:var(--muted);
  font-size:11px;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.45px;
  margin:0 0 5px
}

.field input,.field select {
  width:100%;
  height:39px;
  border:1px solid var(--line);
  border-radius:8px;
  padding:7px 9px;
  background:#fff;
  color:var(--text)
}

.field.wide {
  grid-column:span 2
}

details.multi {
  position:relative
}

details.multi summary {
  height:39px;
  border:1px solid var(--line);
  border-radius:8px;
  padding:10px 30px 8px 10px;
  background:#fff;
  list-style:none;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  position:relative
}

details.multi summary:after {
  content:'▾';
  position:absolute;
  right:10px;
  color:var(--muted)
}

details.multi[open] summary {
  border-color:var(--blue)
}

.menu {
  position:absolute;
  top:43px;
  z-index:30;
  background:#fff;
  border:1px solid var(--line);
  border-radius:10px;
  box-shadow:0 14px 34px rgba(10,30,50,.2);
  width:max(100%,240px);
  max-height:300px;
  padding:8px
}

.menu input[type=search] {
  width:100%;
  height:34px;
  border:1px solid var(--line);
  border-radius:7px;
  padding:6px 8px;
  margin-bottom:6px
}

.opts {
  max-height:225px;
  overflow:auto
}

.opt {
  display:flex;
  align-items:center;
  gap:8px;
  padding:6px;
  border-radius:6px
}

.opt:hover {
  background:#f1f6fb
}

.opt input {
  accent-color:var(--blue)
}

.menufoot {
  border-top:1px solid var(--line);
  padding-top:7px;
  margin-top:6px;
  display:flex;
  justify-content:space-between
}

.scope {
  display:flex;
  gap:4px;
  background:#eaf0f6;
  padding:4px;
  border-radius:9px
}

.scope button {
  border:0;
  border-radius:7px;
  background:transparent;
  padding:7px 10px;
  color:#50647a;
  font-weight:650
}

.scope button.active {
  background:#fff;
  color:var(--navy);
  box-shadow:0 2px 8px #0c294d18
}

/* KPIs
   ---- */

.kpis {
  display:grid;
  grid-template-columns:repeat(8,1fr);
  gap:11px;
  margin-bottom:16px
}

.kpi {
  background:#fff;
  border:1px solid var(--line);
  border-radius:13px;
  padding:14px;
  box-shadow:var(--shadow);
  position:relative;
  overflow:hidden;
  min-height:105px;
  cursor:pointer;
  transition:.16s
}

.kpi:hover {
  transform:translateY(-2px);
  border-color:#aebfd2
}

.kpi:before {
  content:'';
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:4px;
  background:var(--blue)
}

.kpi.green:before {
  background:var(--green)
}

.kpi.red:before {
  background:var(--red)
}

.kpi.amber:before {
  background:var(--amber)
}

.kpi.purple:before {
  background:var(--purple)
}

.kpi.orange:before {
  background:var(--orange)
}

.kpi .lab {
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.5px;
  color:var(--muted);
  font-weight:750
}

.kpi .val {
  font-size:26px;
  font-weight:800;
  margin:9px 0 4px
}

.kpi .sub {
  font-size:11px;
  color:var(--muted)
}

/* Charts
   ------ */

.charts {
  display:grid;
  grid-template-columns:1.15fr 1fr 1fr;
  gap:13px;
  margin-bottom:16px
}

.chart {
  background:#fff;
  border:1px solid var(--line);
  border-radius:13px;
  padding:15px;
  box-shadow:var(--shadow);
  min-height:310px
}

.chart h3 {
  margin:0;
  font-size:14px
}

.chart .hint {
  font-size:11px;
  color:var(--muted);
  margin-top:3px
}

.chart canvas {
  width:100%;
  height:250px;
  display:block;
  margin-top:8px
}

.compare-grid {
  display:grid;
  grid-template-columns:240px 1fr;
  gap:18px;
  align-items:start
}

.compare-selects {
  display:grid;
  gap:10px
}

.compare-table {
  overflow:auto
}

.compare-table table {
  min-width:650px
}

.up {
  color:var(--green);
  font-weight:750
}

.down {
  color:var(--red);
  font-weight:750
}

.neutral {
  color:var(--muted)
}

/* Tables
   ------ */

.tabletools {
  display:flex;
  gap:8px;
  align-items:center;
  flex-wrap:wrap
}

.tabletools input {
  height:37px;
  border:1px solid var(--line);
  border-radius:8px;
  padding:7px 10px;
  min-width:240px
}

.tablewrap {
  overflow:auto;
  max-height:650px;
  border-top:1px solid var(--line)
}

table {
  border-collapse:separate;
  border-spacing:0;
  width:100%;
  font-size:12px
}

th {
  position:sticky;
  top:0;
  z-index:2;
  background:#eef3f8;
  color:#3a4d65;
  text-align:left;
  padding:10px 9px;
  border-bottom:1px solid #cdd8e5;
  white-space:nowrap;
  cursor:pointer
}

td {
  padding:9px;
  border-bottom:1px solid #edf1f5;
  white-space:nowrap
}

tbody tr:hover {
  background:#f7faff
}

.status {
  display:inline-block;
  border-radius:999px;
  padding:4px 8px;
  font-size:10px;
  font-weight:800
}

.s-answered {
  background:#dff6ed;
  color:#087755
}

.s-no-answer {
  background:#fff0d8;
  color:#955e00
}

.s-failed {
  background:#ffe5e8;
  color:#b52738
}

.s-busy {
  background:#ece8ff;
  color:#5d46a9
}

.s-other {
  background:#e9eef4;
  color:#506176
}

.foot {
  padding:11px 15px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  color:var(--muted)
}

.pager {
  display:flex;
  align-items:center;
  gap:7px
}

.pager select {
  height:33px;
  border:1px solid var(--line);
  border-radius:7px
}

.pager button {
  height:33px;
  min-width:33px;
  border:1px solid var(--line);
  background:#fff;
  border-radius:7px
}

.pager button:disabled {
  opacity:.4;
  cursor:not-allowed
}

/* PDF Modal
   --------- */

.pdf-modal {
  position:fixed;
  inset:0;
  z-index:100;
  background:rgba(3,15,30,.82);
  padding:18px;
  display:flex;
  align-items:center;
  justify-content:center
}

.pdf-dialog {
  width:min(1500px,98vw);
  height:96vh;
  background:#fff;
  border-radius:14px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  box-shadow:0 24px 80px rgba(0,0,0,.45)
}

.pdf-head {
  position:relative;
  z-index:5;
  flex:0 0 auto;
  background:var(--navy);
  color:#fff;
  padding:12px 15px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px
}

.pdf-head strong {
  font-size:15px
}

.pdf-head-actions {
  position:relative;
  z-index:6;
  display:flex;
  gap:8px;
  flex-wrap:wrap
}

.pdf-head .btn {
  position:relative;
  z-index:7;
  padding:8px 11px
}

.pdf-head a.btn {
  text-decoration:none
}

.pdf-view {
  position:relative;
  z-index:1;
  border:0;
  width:100%;
  min-height:0;
  flex:1 1 auto;
  background:#fff
}

.pdf-help {
  font-size:11px;
  color:#bcd0e7;
  margin-top:3px
}

#printHost {
  display:none
}

/* Responsive
   ---------- */

@media(max-width:1200px) {
  .filters {
  grid-template-columns:repeat(3,1fr)
}.kpis {
  grid-template-columns:repeat(4,1fr)
}.charts {
  grid-template-columns:1fr 1fr
}.chart:first-child {
  grid-column:span 2
}
}

@media(max-width:720px) {
  main {
  padding:12px
}.top {
  padding:12px
}.brand-logo {
  width:145px;
  height:48px
}.brand p {
  display:none
}.actions .btn span {
  display:none
}.filters {
  grid-template-columns:1fr 1fr
}.field.wide {
  grid-column:span 2
}.kpis {
  grid-template-columns:1fr 1fr
}.charts {
  grid-template-columns:1fr
}.chart:first-child {
  grid-column:auto
}.compare-grid {
  grid-template-columns:1fr
}.section-title {
  align-items:flex-start;
  flex-direction:column
}.topin {
  align-items:flex-start
}.actions {
  justify-content:flex-end
}
}

/* Print
   ----- */

@media print {
  .top,.filters-panel,.actions,.tabletools,.foot,.drop-panel,.notice {
  display:none!important
}body {
  background:#fff
}main {
  padding:0
}.panel,.chart,.kpi {
  box-shadow:none;
  break-inside:avoid
}.charts {
  grid-template-columns:1fr 1fr
}.tablewrap {
  max-height:none;
  overflow:visible
}th {
  position:static
}.kpis {
  grid-template-columns:repeat(4,1fr)
}
}

@media print {
  body.cdr-print>*:not(#printHost) {
  display:none!important
}body.cdr-print {
  background:#fff!important;
  margin:0!important
}body.cdr-print #printHost {
  display:block!important;
  color:#182437;
  font-family:Arial,sans-serif;
  font-size:9px
}#printHost .sheet {
  width:auto;
  max-width:none;
  margin:0;
  background:#fff;
  box-shadow:none;
  padding:0
}#printHost header {
  border-bottom:4px solid #f47b20;
  padding-bottom:10px;
  margin-bottom:12px;
  display:flex;
  justify-content:space-between;
  align-items:end
}#printHost h1 {
  font-size:20px;
  color:#071a33;
  margin:0 0 4px
}#printHost .meta {
  color:#607086;
  line-height:1.5
}#printHost .tag {
  background:#071a33!important;
  color:#fff!important;
  border-radius:7px;
  padding:8px 11px;
  font-weight:bold;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact
}#printHost .summary {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:7px;
  margin-bottom:12px
}#printHost .card {
  border:1px solid #d6e0ea;
  border-left:4px solid #1475e8;
  border-radius:7px;
  padding:8px;
  break-inside:avoid
}#printHost .card.good {
  border-left-color:#11966b
}#printHost .card.warn {
  border-left-color:#e69b17
}#printHost .card.bad {
  border-left-color:#db3b4b
}#printHost .card span {
  display:block;
  color:#66758b;
  text-transform:uppercase;
  font-size:8px;
  font-weight:bold
}#printHost .card b {
  display:block;
  font-size:16px;
  margin-top:3px
}#printHost .charts {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px
}#printHost .chartbox {
  border:1px solid #dbe4ed;
  border-radius:7px;
  padding:10px;
  background:#f9fbfd!important;
  min-height:150px;
  break-inside:avoid;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact
}#printHost .chartbox h3 {
  margin:0 0 8px;
  font-size:12px
}#printHost .barrow {
  display:grid;
  grid-template-columns:95px 1fr 38px;
  gap:7px;
  align-items:center;
  margin:6px 0
}#printHost .barrow i {
  height:8px;
  background:#e3e9ef!important;
  border-radius:4px;
  overflow:hidden;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact
}#printHost .barrow b {
  display:block;
  height:100%;
  border-radius:4px;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact
}#printHost .barrow strong {
  text-align:right
}#printHost .dashboard {
  break-after:page
}#printHost .detail-title {
  font-size:15px;
  color:#071a33;
  margin:0 0 8px
}#printHost table {
  border-collapse:collapse;
  width:100%;
  font-size:8px
}#printHost thead {
  display:table-header-group
}#printHost th {
  position:static;
  background:#dfe8f2!important;
  color:#20364e;
  text-align:left;
  padding:5px 4px;
  border:1px solid #c5d2df;
  white-space:nowrap;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact
}#printHost td {
  padding:4px;
  border:1px solid #dce4ec;
  vertical-align:top
}#printHost tr {
  break-inside:avoid
}#printHost tbody tr:nth-child(even) {
  background:#f7f9fb!important;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact
}#printHost .st {
  font-weight:bold
}#printHost .footer {
  margin-top:8px;
  color:#687789;
  font-size:8px
}@page {
  size:A4 landscape;
  margin:9mm
}
}

@media print {
  #printHost .report-brand {
  display:flex;
  align-items:center;
  gap:11px
}#printHost .report-logo-box {
  background:#071a33!important;
  border-radius:7px;
  padding:4px 9px;
  -webkit-print-color-adjust:exact;
  print-color-adjust:exact
}#printHost .report-logo {
  display:block;
  width:145px;
  height:58px;
  object-fit:contain
}
}

/* Other
   ----- */

.filter-actions {
  display:flex;
  align-items:end;
  gap:8px
}

.filter-actions .btn {
  height:39px
}
