:root{
  --tt-green-950:#0b3424;
  --tt-green-900:#10432d;
  --tt-green-800:#1a5a38;
  --tt-green-700:#2f7447;
  --tt-green-600:#4f8f5d;
  --tt-green-300:#a9c8ad;
  --tt-green-100:#eaf4ec;
  --tt-green-050:#f6faf7;
  --tt-gold:#b38b46;
  --tt-gold-soft:#f4ead8;
  --tt-ink:#18211b;
  --tt-muted:#657069;
  --tt-line:#dce5de;
  --tt-bg:#e9efeb;
  --tt-white:#fff;
  --tt-red:#aa4545;
  --tt-shadow:0 18px 46px rgba(10,45,30,.12);
}
*{box-sizing:border-box}
html{background:var(--tt-bg)}
body{
  margin:0;
  color:var(--tt-ink);
  background:
    radial-gradient(circle at 7% 4%,rgba(79,143,93,.11),transparent 24%),
    linear-gradient(135deg,#edf2ee 0%,#e5ebe7 100%);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
.report-page-v2{
  width:min(1240px,calc(100% - 28px));
  min-height:820px;
  margin:14px auto;
  background:var(--tt-white);
  border:1px solid rgba(15,59,39,.08);
  border-radius:18px;
  box-shadow:var(--tt-shadow);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  position:relative;
}
.rpt-header{
  min-height:82px;
  display:grid;
  grid-template-columns:170px minmax(0,1fr) 255px;
  align-items:center;
  gap:20px;
  padding:8px 24px;
  border-bottom:1px solid var(--tt-line);
  background:linear-gradient(90deg,#fff 0%,#fbfdfb 62%,#f5f9f5 100%);
}
.rpt-brand-link{
  display:flex;
  align-items:center;
  width:170px;
  height:68px;
  text-decoration:none;
}
.rpt-brand-link img{
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:left center;
  transform:scale(1.48);
  transform-origin:left center;
}
.rpt-heading{min-width:0}
.rpt-kicker{
  color:var(--tt-gold);
  font-size:10.5px;
  font-weight:900;
  letter-spacing:1.25px;
  text-transform:uppercase;
  margin-bottom:4px;
}
.rpt-heading h1{
  margin:0;
  color:var(--tt-green-950);
  font-size:21px;
  line-height:1.12;
  letter-spacing:-.35px;
}
.rpt-subtitle{
  margin-top:4px;
  color:var(--tt-muted);
  font-size:11.5px;
  line-height:1.35;
}
.rpt-period{
  justify-self:end;
  text-align:right;
  padding-left:18px;
  border-left:1px solid var(--tt-line);
}
.rpt-period strong{
  display:block;
  color:var(--tt-green-950);
  font-size:18px;
  line-height:1.1;
}
.rpt-period span{
  display:block;
  margin-top:5px;
  color:var(--tt-muted);
  font-size:10.5px;
  line-height:1.35;
}
.rpt-content{
  flex:1;
  padding:18px 22px 62px;
}
.rpt-panel{
  border:1px solid var(--tt-line);
  border-radius:14px;
  background:#fff;
  box-shadow:0 4px 14px rgba(15,59,39,.035);
}
.rpt-panel.soft{background:var(--tt-green-050)}
.rpt-panel-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:10px;
}
.rpt-panel-title{
  margin:0;
  color:var(--tt-green-950);
  font-size:13px;
  font-weight:900;
  letter-spacing:.25px;
  text-transform:uppercase;
}
.rpt-panel-note{
  color:var(--tt-muted);
  font-size:10.5px;
}
.rpt-section-title{
  margin:0 0 10px;
  color:var(--tt-green-950);
  font-size:13px;
  font-weight:900;
  letter-spacing:.2px;
  text-transform:uppercase;
}
.rpt-value-toggle{
  border:1px solid #cfdad1;
  background:#fff;
  color:var(--tt-green-800);
  border-radius:999px;
  padding:6px 10px;
  font:inherit;
  font-size:10px;
  font-weight:850;
  cursor:pointer;
}
.rpt-value-toggle:hover{background:var(--tt-green-050);border-color:#aebfb2}
.chart-value-label{
  opacity:0;
  pointer-events:none;
  transition:opacity .16s ease;
}
.show-values .chart-value-label{opacity:1}
.axis-label{font-size:9px;fill:#758078}
.trend-svg,.donut-svg{width:100%;height:auto;display:block}
.up{color:#287046;font-weight:850}
.down{color:var(--tt-red);font-weight:850}
.neutral{color:var(--tt-muted);font-weight:800}

/* Page 1 */
.p1-top{
  display:grid;
  grid-template-columns:45% 55%;
  gap:14px;
  align-items:stretch;
  margin-bottom:14px;
}
.p1-summary{padding:16px 18px}
.p1-summary-text{
  font-size:12.5px;
  line-height:1.55;
  color:#334139;
}
.p1-focus-title{
  margin:14px 0 8px;
  color:var(--tt-green-950);
  font-size:11.5px;
  font-weight:900;
}
.p1-focus-list{display:grid;gap:7px}
.p1-focus-item{
  display:grid;
  grid-template-columns:24px 1fr;
  gap:8px;
  align-items:start;
  font-size:11px;
  line-height:1.35;
  color:#39463e;
}
.p1-focus-no{
  width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--tt-green-100);
  color:var(--tt-green-800);
  font-size:10px;font-weight:900;
}
.p1-kpis{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  align-self:stretch;
  grid-auto-rows:1fr;
}
.p1-kpi{
  padding:12px 13px;
  border:1px solid var(--tt-line);
  border-radius:13px;
  background:linear-gradient(180deg,#fff,#fbfdfb);
  min-height:112px;
}
.p1-kpi-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.p1-kpi-label{
  color:#56635b;
  font-size:10.5px;
  font-weight:900;
  letter-spacing:.2px;
  text-transform:uppercase;
}
.p1-kpi-icon{
  width:27px;height:27px;border-radius:9px;
  display:grid;place-items:center;
  background:var(--tt-green-100);
  color:var(--tt-green-800);
  font-weight:900;
  font-size:13px;
}
.p1-kpi-value{
  margin:8px 0 5px;
  color:var(--tt-green-950);
  font-size:24px;
  line-height:1;
  font-weight:900;
  letter-spacing:-.45px;
}
.p1-kpi-comps{
  display:grid;
  gap:3px;
  font-size:9.5px;
  line-height:1.25;
  color:var(--tt-muted);
}
.p1-kpi-comps span{display:block}
.p1-charts{
  display:grid;
  grid-template-columns:1.2fr .8fr;
  gap:14px;
  margin-bottom:14px;
}
.p1-chart{padding:14px 16px;min-height:248px}
.p1-chart .trend-svg{height:185px}
.p1-service-grid{
  display:grid;
  grid-template-columns:55% 45%;
  gap:8px;
  align-items:center;
}
.p1-service-legend{display:grid;gap:6px}
.p1-service-row{
  display:grid;
  grid-template-columns:9px 1fr;
  gap:7px;
  align-items:start;
  font-size:10.5px;
  color:#4f5b54;
}
.p1-service-row .dot{width:9px;height:9px;border-radius:50%;margin-top:3px}
.p1-service-row strong{display:block;color:#28352d;font-size:10.5px}
.p1-insights{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:9px;
}
.p1-insight{
  min-height:72px;
  padding:11px 11px 11px 40px;
  position:relative;
  border:1px solid var(--tt-line);
  border-radius:12px;
  background:#fff;
  font-size:10.5px;
  line-height:1.42;
  color:#344139;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.p1-insight-no{
  position:absolute;
  left:10px;top:10px;
  width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--tt-green-100);
  color:var(--tt-green-800);
  font-size:10px;font-weight:900;
}

/* Page 2 */
.p2-financial{padding:0;overflow:hidden;margin-bottom:14px}
.p2-financial table{width:100%;border-collapse:collapse;font-size:11px}
.p2-financial th,.p2-financial td{
  padding:9px 12px;
  border-bottom:1px solid #e7ece8;
  text-align:right;
}
.p2-financial th{
  background:#f4f8f4;
  color:#59665e;
  font-size:9.5px;
  text-transform:uppercase;
  letter-spacing:.35px;
}
.p2-financial th:first-child,.p2-financial td:first-child{text-align:left}
.p2-financial tbody td:first-child{font-weight:850;color:var(--tt-green-950)}
.p2-financial tbody tr:last-child td{border-bottom:0}
.p2-middle{
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:14px;
  margin-bottom:14px;
}
.p2-expense-list,.p2-trend{padding:14px 16px;min-height:275px}
.expense-row{
  display:grid;
  grid-template-columns:128px 1fr 94px;
  gap:8px;
  align-items:center;
  margin:8px 0;
  font-size:10.5px;
}
.expense-name{font-weight:800;color:#304037;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.expense-name small{display:block;color:var(--tt-muted);font-size:9px;font-weight:700;margin-top:2px}
.expense-track{height:10px;border-radius:999px;background:#edf2ee;overflow:hidden}
.expense-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--tt-green-700),#75a97f)}
.expense-value{text-align:right;font-weight:850;color:#344139}
.expense-trend-chart{
  height:205px;
  display:flex;
  align-items:flex-end;
  gap:5px;
  padding:12px 4px 0;
  border-bottom:1px solid #dfe6e0;
}
.expense-col{
  flex:1;
  min-width:0;
  height:185px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  position:relative;
}
.expense-stack{
  width:min(24px,72%);
  height:145px;
  display:flex;
  flex-direction:column-reverse;
  justify-content:flex-start;
}
.expense-direct{background:#2f7447;border-radius:4px 4px 0 0}
.expense-operating{background:#9dba82;border-radius:4px 4px 0 0}
.expense-month{font-size:9px;color:#778279;margin-top:6px}
.expense-total-label{
  position:absolute;
  bottom:24px;
  font-size:9.5px;
  font-weight:850;
  color:var(--tt-green-900);
  white-space:nowrap;
}
.p2-legend-inline{display:flex;gap:14px;align-items:center;font-size:9.5px;color:var(--tt-muted)}
.p2-legend-inline span{display:flex;align-items:center;gap:5px}
.p2-legend-swatch{width:9px;height:9px;border-radius:3px}
.p2-labor{padding:0}
.p2-labor-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}
.p2-labor-card{
  border:1px solid var(--tt-line);
  border-radius:12px;
  padding:11px 10px;
  background:#fbfdfb;
  text-align:center;
}
.p2-labor-label{font-size:9.5px;font-weight:900;text-transform:uppercase;color:#5a665f;min-height:26px}
.p2-labor-value{font-size:21px;font-weight:900;color:var(--tt-green-950);margin:7px 0 4px}
.p2-labor-comp{font-size:9.5px;color:var(--tt-muted);line-height:1.3}

/* Page 3 */
.p3-top{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.p3-job-card,.p3-service-card{padding:14px 16px;min-height:245px}
.p3-job-inner{display:grid;grid-template-columns:130px 1fr;gap:14px;align-items:stretch}
.p3-big{
  border-right:1px solid var(--tt-line);
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding-right:12px;
}
.p3-big-label{font-size:10px;font-weight:900;text-transform:uppercase;color:#5c685f}
.p3-big-value{font-size:40px;font-weight:900;line-height:1;color:var(--tt-green-950);margin:8px 0}
.p3-big-comp{font-size:10.5px;line-height:1.4;color:var(--tt-muted)}
.jobs-trend-v2{
  height:185px;
  display:flex;
  align-items:flex-end;
  gap:9px;
  padding:14px 4px 0;
  border-bottom:1px solid #e0e7e2;
}
.job-col-v2{
  flex:1;
  min-width:0;
  height:165px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  position:relative;
}
.job-bar-v2{
  width:min(32px,72%);
  min-height:4px;
  border-radius:6px 6px 2px 2px;
  background:linear-gradient(180deg,#5f9c6b,#2f7447);
  box-shadow:0 5px 12px rgba(47,116,71,.12);
}
.job-month-v2{font-size:9.5px;color:#758078;margin-top:6px}
.job-value-v2{
  position:absolute;
  bottom:24px;
  font-size:9.5px;
  font-weight:900;
  color:var(--tt-green-900);
}
.service-bars-dynamic{
  display:grid;
  gap:4px;
  min-height:178px;
}
.service-bar-row{
  display:grid;
  grid-template-columns:145px 1fr 112px;
  gap:9px;
  align-items:center;
  margin:0;
  min-height:0;
  font-size:10.5px;
}
.service-bar-name{font-weight:800;color:#304037;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.service-track{height:var(--service-bar-height,12px);background:#edf3ef;border-radius:999px;overflow:hidden}
.service-fill{height:100%;background:linear-gradient(90deg,#245f3b,#7ea886);border-radius:999px}
.service-bar-value{text-align:right;font-weight:850;color:#37443c}
.p3-tables{display:grid;grid-template-columns:1.3fr .7fr;gap:14px;margin-bottom:14px}
.p3-table{padding:12px 14px}
.p3-table table{width:100%;border-collapse:collapse;font-size:10.5px}
.p3-table th,.p3-table td{padding:7px 8px;border-bottom:1px solid #e5ebe6}
.p3-table th{font-size:9px;text-transform:uppercase;color:#657169;text-align:left;background:#f6f9f6}
.p3-table td.num,.p3-table th.num{text-align:right}
.p3-table tbody tr:last-child td{border-bottom:0}
.p3-cash{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:14px}
.p3-cash-card{
  padding:11px 12px;
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"label comp" "value comp" "note comp";
  column-gap:10px;
  align-items:center;
  border:1px solid var(--tt-line);
  border-radius:12px;
  background:linear-gradient(180deg,#fff,#fbfdfb);
}
.p3-cash-label{grid-area:label;font-size:9.5px;text-transform:uppercase;font-weight:900;color:#627067}
.p3-cash-value{grid-area:value;font-size:20px;font-weight:900;color:var(--tt-green-950);margin:6px 0 2px}
.p3-cash-note{grid-area:note;font-size:9.5px;color:var(--tt-muted)}
.p3-cash-comps{grid-area:comp;font-size:9px;line-height:1.45;color:var(--tt-muted);text-align:right;white-space:nowrap}
.p3-recs{
  padding:13px 15px;
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:9px;
}
.p3-rec{
  display:grid;
  grid-template-columns:25px 1fr;
  gap:8px;
  align-items:start;
  padding:9px 10px;
  border-radius:10px;
  background:var(--tt-green-050);
  font-size:10.5px;
  line-height:1.4;
}
.p3-check{
  width:25px;height:25px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--tt-green-100);
  color:var(--tt-green-800);
  font-weight:900;
}

/* Page 4 */
.p4-kicker{
  margin-bottom:12px;
  padding:9px 12px;
  border:1px solid #e4dccb;
  border-radius:10px;
  background:#fffaf1;
  color:#6e5a32;
  font-size:10.5px;
  font-weight:800;
}
.p4-overall{padding:14px 16px;margin-bottom:14px}
.p4-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.p4-column{display:grid;gap:14px}
.p4-section{padding:14px 16px}
.p4-title{
  display:flex;align-items:center;gap:9px;
  color:var(--tt-green-950);
  font-size:12px;font-weight:900;
  text-transform:uppercase;
  margin-bottom:8px;
}
.p4-no{
  width:25px;height:25px;border-radius:8px;
  display:grid;place-items:center;
  background:var(--tt-green-100);
  color:var(--tt-green-800);
  font-size:9.5px;font-weight:900;
}
.p4-text{
  color:#334139;
  font-size:12.5px;
  line-height:1.55;
}

/* Footer/navigation */
.rpt-footer{
  position:absolute;
  bottom:0;left:0;right:0;
  height:46px;
  background:linear-gradient(90deg,var(--tt-green-950),#13472e);
  color:#fff;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:12px;
  padding:0 18px;
  font-size:9.5px;
}
.rpt-footer-left{opacity:.82}
.rpt-footer-right{text-align:right;opacity:.82}
.rpt-nav{display:flex;align-items:center;justify-content:center;gap:7px}
.rpt-nav a{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:27px;
  padding:0 10px;
  border:1px solid rgba(255,255,255,.30);
  border-radius:999px;
  color:#fff;
  text-decoration:none;
  font-size:9.5px;
  font-weight:800;
  background:rgba(255,255,255,.06);
}
.rpt-nav a:hover{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.5)}
.rpt-nav .rpt-menu-link{background:rgba(255,255,255,.12)}
.rpt-nav .rpt-site-link{border-color:rgba(214,184,117,.65);color:#f4dfae}

/* Responsive */
@media(max-width:980px){
  .report-page-v2{width:calc(100% - 18px);margin:9px auto;border-radius:12px}
  .rpt-header{grid-template-columns:135px 1fr;gap:12px}
  .rpt-period{grid-column:1/-1;justify-self:stretch;text-align:left;border-left:0;border-top:1px solid var(--tt-line);padding:8px 0 0}
  .rpt-brand-link{width:128px;height:58px}
  .p1-top,.p1-charts,.p2-middle,.p3-top,.p3-tables,.p4-columns{grid-template-columns:1fr}
  .p1-insights{grid-template-columns:repeat(2,1fr)}
  .p2-labor-grid,.p3-cash{grid-template-columns:repeat(2,1fr)}
  .rpt-footer{position:static;grid-template-columns:1fr;min-height:76px;height:auto;padding:9px 12px}
  .rpt-footer-left,.rpt-footer-right{text-align:center}
  .rpt-content{padding-bottom:18px}
}
@media(max-width:620px){
  .p1-kpis{grid-template-columns:1fr 1fr}
  .p1-insights,.p2-labor-grid,.p3-cash,.p3-recs{grid-template-columns:1fr}
  .p3-job-inner{grid-template-columns:1fr}
  .p3-big{border-right:0;border-bottom:1px solid var(--tt-line);padding:0 0 10px}
  .expense-row,.service-bar-row{grid-template-columns:1fr}
  .expense-value,.service-bar-value{text-align:left}
  .rpt-nav{flex-wrap:wrap}
}
@media print{
  html,body{background:#fff}
  .report-page-v2{width:100%;margin:0;border:0;border-radius:0;box-shadow:none;min-height:auto}
  .rpt-value-toggle,.rpt-nav,.rpt-site-link{display:none!important}
  .chart-value-label{opacity:1!important}
  .rpt-footer{position:static}
}

/* Phase 8.5.2.2: detailed expense hover/focus breakdown. */
.expense-tooltip {
  display:none; position:absolute; bottom:calc(100% + 8px); left:50%;
  transform:translateX(-50%); width:170px; z-index:30; padding:9px 11px;
  border:1px solid #cad9cf; border-radius:8px; background:#fff;
  box-shadow:0 4px 16px rgba(0,0,0,.16); font-size:10px; color:#20392c;
  pointer-events:none; text-align:left;
}
.expense-tooltip strong { display:block; margin-bottom:5px; }
.expense-tooltip span { display:flex; justify-content:space-between; gap:8px; margin-top:3px; }
.expense-col:hover .expense-tooltip,.expense-col:focus .expense-tooltip,
.expense-col:focus-within .expense-tooltip { display:block; }

/* Job Performance Y axis. */
.jobs-chart-wrap{display:grid;grid-template-columns:28px 1fr;gap:5px;min-width:0}
.jobs-y-axis{height:185px;padding:14px 0 20px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;color:#778279;font-size:8.5px;line-height:1}
.jobs-trend-v2{position:relative;isolation:isolate}
.jobs-trend-v2:before,.jobs-trend-v2:after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  border-top:1px solid #edf1ee;
  pointer-events:none;
  z-index:0;
}
.jobs-trend-v2:before{top:14px}
.jobs-trend-v2:after{top:79px}
.job-col-v2{z-index:1}
