
:root {
  --page-bg: #ffffff;
  --cyan: #14DCF0;          /* HEX #14DCF0 / RGB(20, 220, 240) for box boundaries & top bar fill */
  --cyan-hover: rgba(20, 220, 240, 0.16);
  --cyan-soft: rgba(20, 220, 240, 0.22);
  --dark-teal: #0F4C5C;     /* Dark teal for all text inside white boxes and on #14DCF0 backgrounds */
  --dark-teal-sub: #166073; /* Slightly softer dark teal for secondary labels */
  --text-main: #0F4C5C;
  --text-sub: #166073;
  --input-bg: #ffffff;
  --input-border: #14DCF0;
}
*, *::before, *::after {
  box-sizing: border-box;
}
body {
  margin: 0;
  padding: 20px 26px 56px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, sans-serif;
  background: var(--page-bg);
  color: var(--dark-teal);
  line-height: 1.45;
}
/* Top Header with Logo on Top Right — #14DCF0 Fill with Dark Teal Text */
.top-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  background: var(--cyan);
  color: var(--dark-teal);
  padding: 16px 22px;
  border-radius: 12px;
  margin-bottom: 18px;
  box-shadow: 0 4px 14px rgba(20, 220, 240, 0.25);
}
.top-bar h1 {
  margin: 0 0 4px 0;
  font-size: 21px;
  font-weight: 800;
  color: var(--dark-teal);
}
.top-bar p {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--dark-teal);
}
.logo-wrap {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-shrink: 0;
}
.logo-wrap img {
  max-height: 52px;
  max-width: 190px;
  object-fit: contain;
  background: #ffffff;
  padding: 6px 12px;
  border-radius: 8px;
}
/* Main Navigation Tabs: Revenues | Costs | PnL */
.main-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 18px;
}
.main-tab-btn {
  background: #ffffff;
  color: var(--dark-teal);
  border: 2px solid var(--cyan);
  padding: 10px 26px;
  border-radius: 10px;
  font-size: 14.5px;
  font-weight: 700;
  cursor: pointer;
  transition: 0.15s;
}
.main-tab-btn:hover {
  background: var(--cyan-hover);
}
.main-tab-btn.active {
  background: var(--cyan);
  color: var(--dark-teal);
  border-color: var(--cyan);
  box-shadow: 0 3px 10px rgba(20, 220, 240, 0.28);
}
.tab-pane {
  display: none;
}
.tab-pane.active {
  display: block;
}
/* All Boxes: White background, #14DCF0 boundary, Dark Teal text */
.teal-box {
  background: #ffffff;
  color: var(--dark-teal);
  border: 2px solid var(--cyan);
  border-radius: 12px;
  padding: 18px 20px;
  margin-bottom: 18px;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}
.teal-box h2, .teal-box h3, .teal-box h4, .teal-box p, .teal-box span, .teal-box div, .teal-box label {
  color: var(--dark-teal);
}
.filters-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 14px;
  align-items: end;
}
.filter-item {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  max-width: 100%;
}
.filter-item label {
  font-size: 11.5px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--dark-teal);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
select, input[type="date"], input[type="number"], input[type="text"], textarea {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--input-bg);
  color: var(--dark-teal);
  border: 1.5px solid var(--input-border);
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 700;
  outline: none;
  box-sizing: border-box;
}
select:focus, input:focus, textarea:focus {
  border-color: var(--dark-teal);
  box-shadow: 0 0 0 2px rgba(20, 220, 240, 0.25);
}
select option {
  background: #ffffff;
  color: var(--dark-teal);
}
input::placeholder, textarea::placeholder {
  color: rgba(15, 76, 92, 0.55);
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  color: var(--dark-teal);
  border: 1.5px solid var(--cyan);
  padding: 8px 14px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
  transition: 0.15s;
  max-width: 100%;
  white-space: nowrap;
}
.btn:hover {
  background: var(--cyan-hover);
}
.btn-primary {
  background: var(--cyan);
  color: var(--dark-teal);
  border-color: var(--cyan);
}
.btn-primary:hover {
  background: #0ec7db;
  color: var(--dark-teal);
}
/* KPI Grid — White fill, #14DCF0 border, Dark Teal text */
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(195px, 1fr));
  gap: 14px;
  margin-bottom: 18px;
}
.kpi-card {
  background: #ffffff;
  color: var(--dark-teal);
  border: 2px solid var(--cyan);
  border-radius: 12px;
  padding: 15px 18px;
  min-height: 100px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.kpi-card .kpi-label {
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--dark-teal);
}
.kpi-card .kpi-val {
  font-size: 21px;
  font-weight: 800;
  margin: 6px 0 4px;
  color: var(--dark-teal);
  word-break: break-word;
}
.kpi-card .kpi-sub {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--dark-teal-sub);
}
/* Sub-tabs & Tables */
.subtabs-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
  justify-content: space-between;
  align-items: center;
}
.subtab-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.subtab-btn {
  background: #ffffff;
  color: var(--dark-teal);
  border: 1.5px solid var(--cyan);
  padding: 8px 14px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
}
.subtab-btn:hover {
  background: var(--cyan-hover);
}
.subtab-btn.active {
  background: var(--cyan);
  color: var(--dark-teal);
  border-color: var(--cyan);
}
.table-wrap {
  overflow-x: auto;
  max-width: 100%;
}
table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
  color: var(--dark-teal);
}
th, td {
  padding: 9px 10px;
  border-bottom: 1px solid rgba(20, 220, 240, 0.45);
  text-align: right;
  white-space: nowrap;
  color: var(--dark-teal);
  font-weight: 600;
}
th:first-child, td:first-child, th.left, td.left {
  text-align: left;
}
th {
  background: var(--cyan-hover);
  font-weight: 800;
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: 0.03em;
  color: var(--dark-teal);
  border-bottom: 2px solid var(--cyan);
}
tr:hover td {
  background: rgba(20, 220, 240, 0.08);
}
/* Charts Grid (PnL Tab) — White background, #14DCF0 border, Dark Teal text */
.charts-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(440px, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}
@media (max-width: 640px) {
  .charts-grid { grid-template-columns: 1fr; }
}
.chart-card {
  background: #ffffff;
  color: var(--dark-teal);
  border: 2px solid var(--cyan);
  border-radius: 12px;
  padding: 16px 18px;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}
.chart-card h3 {
  margin: 0 0 4px 0;
  font-size: 15px;
  font-weight: 800;
  color: var(--dark-teal);
}
.chart-card p.sub {
  margin: 0 0 10px 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--dark-teal-sub);
}
.chart-canvas-box {
  position: relative;
  height: 290px;
  width: 100%;
  background: #ffffff;
  border: 1px solid var(--cyan);
  border-radius: 10px;
  padding: 10px;
}
/* Costs Tab Layout */
.costs-layout {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
  gap: 18px;
  align-items: start;
}
.form-row-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 12px;
}
@media (max-width: 520px) {
  .form-row-2col { grid-template-columns: 1fr; }
}
.cost-single-col-table {
  width: 100%;
  table-layout: fixed;
}
.cost-single-col-table th:nth-child(1),
.cost-single-col-table td:nth-child(1) {
  width: 42px;
}
.cost-single-col-table th:nth-child(3),
.cost-single-col-table td:nth-child(3) {
  width: 165px;
}
.cost-single-col-table td, .cost-single-col-table th {
  padding: 6px 8px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cost-single-col-table input[type="number"] {
  width: 100%;
  max-width: 100%;
  text-align: right;
}
.checkbox-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 10px 0 16px;
  padding: 10px 12px;
  background: #ffffff;
  border: 1.5px solid var(--cyan);
  border-radius: 8px;
}
.status-toast {
  margin-top: 10px;
  padding: 8px 12px;
  border-radius: 8px;
  background: var(--cyan-hover);
  border: 1px solid var(--cyan);
  color: var(--dark-teal);
  font-size: 12.5px;
  font-weight: 800;
  display: none;
}
/* Heatmap Grid */
.heatmap-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
  gap: 8px;
  margin-top: 12px;
}
.heat-cell {
  border-radius: 8px;
  padding: 8px 10px;
  border: 1px solid var(--cyan);
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-height: 68px;
  justify-content: space-between;
}
.heat-cell .h-date {
  font-size: 11px;
  font-weight: 800;
}
.heat-cell .h-pnl {
  font-size: 14px;
  font-weight: 800;
}
.heat-cell .h-meta {
  font-size: 10.5px;
  font-weight: 700;
}
.heatmap-legend {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  font-weight: 800;
  color: var(--dark-teal);
  margin-top: 8px;
}
.legend-bar {
  height: 14px;
  width: 220px;
  border-radius: 7px;
  background: linear-gradient(90deg, #991b1b 0%, #ef4444 30%, #ffffff 50%, #22c55e 70%, #14532d 100%);
  border: 1.5px solid var(--cyan);
}
  
/* ---- additions for the S3-driven app ---- */
.top-bar .user-box{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:700}
.top-bar .user-box .btn{padding:6px 10px}
.top-bar .meta{font-size:12px;font-weight:600;margin-top:2px}
.note{font-size:12px;color:var(--text-sub);margin:4px 0 0}
.warn-box{border-color:#f59e0b !important}
.badge{display:inline-block;padding:2px 7px;border-radius:6px;font-size:11px;font-weight:800;border:1px solid var(--cyan)}
.badge.missing{background:#fee2e2;border-color:#ef4444;color:#991b1b}
.badge.manual{background:#ecfeff}
.badge.estimated{background:#fef3c7;border-color:#f59e0b}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:12px}
.toolbar .filter-item{min-width:180px}
td input[type="text"]{min-width:120px;padding:5px 8px}
tr.changed td{background:rgba(20,220,240,0.12)}
tr.superseded td{opacity:.55;text-decoration:line-through}
.status-toast.err{background:#fee2e2;border-color:#ef4444;color:#991b1b}
.dq-list{margin:6px 0 0 18px;padding:0;font-size:12.5px}
.dq-list li{margin:3px 0}
.loading{padding:40px;text-align:center;font-weight:800}
.readonly-banner{display:none;margin-bottom:12px}
td .btn{padding:4px 8px;font-size:12px}
.dev-banner{background:#fef3c7;border:2px solid #f59e0b;border-radius:8px;padding:6px 10px;font-weight:800;font-size:12px;margin-bottom:12px}
