/* ==========================================================================
   Burst Report 1 — the client recovery report (pts-burst.js).

   Burst Billing's own look, not the module's: purple, coral and yellow, Sora
   and JetBrains Mono, a gradient hero. Every rule is scoped under .pts-burst
   and every class is bb- prefixed, so none of it can reach the standard
   reports beside it, and none of the app's own .container / .hero / .footer
   rules can reach in. The page keeps its light look in the app's dark theme
   too: it is the document that goes to the client, and it should look the
   same on screen as on paper.
   ========================================================================== */

@font-face { font-family: 'BB Sora'; font-weight: 400; font-display: swap;
  src: url('../fonts/burst/Sora-Regular.ttf') format('truetype'); }
@font-face { font-family: 'BB Sora'; font-weight: 600; font-display: swap;
  src: url('../fonts/burst/Sora-SemiBold.ttf') format('truetype'); }
@font-face { font-family: 'BB Sora'; font-weight: 700; font-display: swap;
  src: url('../fonts/burst/Sora-Bold.ttf') format('truetype'); }
@font-face { font-family: 'BB Sora'; font-weight: 800; font-display: swap;
  src: url('../fonts/burst/Sora-ExtraBold.ttf') format('truetype'); }
@font-face { font-family: 'BB JetBrains Mono'; font-weight: 400; font-display: swap;
  src: url('../fonts/burst/JetBrainsMono-Regular.ttf') format('truetype'); }
@font-face { font-family: 'BB JetBrains Mono'; font-weight: 700; font-display: swap;
  src: url('../fonts/burst/JetBrainsMono-Bold.ttf') format('truetype'); }
@font-face { font-family: 'BB JetBrains Mono'; font-weight: 800; font-display: swap;
  src: url('../fonts/burst/JetBrainsMono-ExtraBold.ttf') format('truetype'); }

.pts-burst {
  --purple:#7C3AED; --purple-mid:#A855F7; --purple-light:#C084FC; --purple-dark:#5B21B6;
  --coral:#E8876D; --orange:#F59E0B; --yellow:#FACC15; --yellow-light:#FEF9C3;
  --bg:#FAF9F7; --card:#FFFFFF; --card-alt:#FBF8F4;
  --ink:#1E293B; --muted:#64748B; --muted-2:#94A3B8;
  --border:#E2E8F0; --border-strong:#CBD5E1;
  --green:#22C55E; --green-bg:#DCFCE7; --green-dark:#15803D;
  --red:#EF4444; --red-bg:#FEE2E2; --red-dark:#B91C1C;
  --shadow-sm:0 1px 3px rgba(0,0,0,0.08);
  --shadow:0 4px 12px rgba(0,0,0,0.08);
  --shadow-lg:0 12px 28px rgba(0,0,0,0.12);
  --bb-sans:'BB Sora','Sora',system-ui,-apple-system,'Segoe UI',sans-serif;
  --bb-mono:'BB JetBrains Mono','JetBrains Mono',ui-monospace,'SFMono-Regular',Consolas,monospace;
  color-scheme: light;
  margin-top: 12px;
}
.pts-burst *, .pts-burst *::before, .pts-burst *::after { box-sizing: border-box; }
.pts-burst :focus { outline: none; }
.pts-burst :focus-visible { outline: 2px solid var(--purple); outline-offset: 2px; border-radius: 6px; }

/* Above the report: which organization, when the scope covers several. Part
   of the app, not of the client's page, so it is not printed. */
.pts-burst .bb-tools { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:10px; font-size:calc(13px * var(--ui-font-scale, 1)); }
.pts-burst .bb-tools label { font-weight:600; }
.pts-burst .bb-tools select { padding:6px 10px; border-radius:8px; border:1px solid var(--border-strong); background:#fff; color:var(--ink); font:inherit; max-width:100%; }
.pts-burst .bb-tools .bb-tools-note { color:var(--muted); }
.pts-burst .bb-alert { padding:12px 14px; border-radius:8px; background:var(--red-bg); color:var(--red-dark); font-size:calc(13px * var(--ui-font-scale, 1)); }

.pts-burst .bb-page { background:var(--bg); font-family:var(--bb-sans); color:var(--ink); line-height:1.45; border-radius:12px; overflow:hidden; border:1px solid var(--border); }

/* TOP NAV */
.pts-burst .bb-topnav { background:var(--purple); padding:14px 24px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.pts-burst .bb-topnav-brand { display:flex; align-items:center; gap:12px; }
.pts-burst .bb-topnav-logo { width:36px; height:36px; background:linear-gradient(135deg,var(--orange),var(--yellow)); border-radius:8px; display:flex; align-items:center; justify-content:center; font-weight:800; color:var(--purple); font-size:calc(17px * var(--ui-font-scale, 1)); }
.pts-burst .bb-topnav-title { color:#fff; font-size:calc(17px * var(--ui-font-scale, 1)); font-weight:700; line-height:1.1; }
.pts-burst .bb-topnav-sub { color:var(--yellow); font-size:calc(12px * var(--ui-font-scale, 1)); line-height:1.2; }
.pts-burst .bb-topnav-right { display:flex; align-items:center; gap:12px; }
.pts-burst .bb-topnav-date { color:rgba(255,255,255,0.7); font-size:calc(12px * var(--ui-font-scale, 1)); }

.pts-burst .bb-container { max-width:1100px; margin:0 auto; padding:20px 24px 24px; }

/* HERO */
.pts-burst .bb-hero { background:linear-gradient(135deg,#7C3AED 0%,#C084FC 25%,#E8876D 55%,#FACC15 100%); border-radius:12px; padding:36px 44px; color:#fff; margin-bottom:20px; position:relative; overflow:hidden; }
.pts-burst .bb-hero::after { content:''; position:absolute; top:-60px; right:-60px; width:180px; height:180px; background:rgba(250,204,21,.1); border-radius:50%; pointer-events:none; }
.pts-burst .bb-hero-label { font-size:calc(13px * var(--ui-font-scale, 1)); text-transform:uppercase; letter-spacing:1.5px; color:var(--yellow); margin-bottom:6px; font-weight:600; }
.pts-burst .bb-hero-amount { font-family:var(--bb-mono); font-size:calc(52px * var(--ui-font-scale, 1)); font-weight:800; letter-spacing:-2px; line-height:1.1; color:var(--yellow-light); }
.pts-burst .bb-hero-sub { font-size:calc(14px * var(--ui-font-scale, 1)); color:rgba(255,255,255,.7); margin-top:8px; }
.pts-burst .bb-hero-sub strong { color:#fff; }
.pts-burst .bb-hero-badge { display:inline-flex; align-items:center; gap:6px; padding:5px 14px; border-radius:20px; font-size:calc(12px * var(--ui-font-scale, 1)); font-weight:600; margin-top:12px; }
.pts-burst .bb-hero-badge.up { background:rgba(250,204,21,.2); color:var(--yellow); }
.pts-burst .bb-hero-badge.dn { background:rgba(239,68,68,.22); color:#FECACA; }

/* SECTION HEADER */
.pts-burst .bb-section-hdr { font-size:calc(17px * var(--ui-font-scale, 1)); font-weight:700; margin-bottom:14px; display:flex; align-items:center; gap:9px; margin-top:28px; color:var(--ink); }
.pts-burst .bb-section-hdr .bb-dot { width:8px; height:8px; border-radius:50%; background:var(--purple-mid); display:inline-block; }

/* FINANCIAL BREAKDOWN CARDS */
.pts-burst .bb-cards-grid { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:14px; margin-bottom:20px; }
.pts-burst .bb-metric-card { background:var(--card); border-radius:12px; box-shadow:var(--shadow-sm); padding:18px 20px; border-top:3px solid var(--purple-mid); min-width:0; }
.pts-burst .bb-metric-card.gold-top { border-top-color:var(--orange); }
.pts-burst .bb-mc-label { font-size:calc(10px * var(--ui-font-scale, 1)); text-transform:uppercase; letter-spacing:.8px; color:var(--muted); font-weight:600; margin-bottom:6px; }
.pts-burst .bb-mc-value { font-family:var(--bb-mono); font-size:calc(22px * var(--ui-font-scale, 1)); font-weight:800; color:var(--purple); }
.pts-burst .bb-mc-sub { font-size:calc(11px * var(--ui-font-scale, 1)); color:var(--muted); margin-top:2px; }
.pts-burst .bb-mc-divider { height:1px; background:var(--border); margin:14px 0; }
.pts-burst .bb-mc-stacked-label { font-size:calc(10px * var(--ui-font-scale, 1)); text-transform:uppercase; letter-spacing:.8px; color:var(--muted); font-weight:600; margin-bottom:4px; }
.pts-burst .bb-mc-stacked-value { font-family:var(--bb-mono); font-size:calc(20px * var(--ui-font-scale, 1)); font-weight:800; color:var(--purple); }
.pts-burst .bb-mc-stacked-sub { font-size:calc(10px * var(--ui-font-scale, 1)); color:var(--muted); margin-top:2px; }
.pts-burst .bb-mc-list { margin-top:10px; }
.pts-burst .bb-mc-row { display:flex; justify-content:space-between; align-items:center; padding:5px 0; border-bottom:1px solid #F1F5F9; font-size:calc(12px * var(--ui-font-scale, 1)); gap:8px; }
.pts-burst .bb-mc-row:last-child { border-bottom:none; }
.pts-burst .bb-mc-row-name { color:var(--ink); font-weight:500; display:flex; align-items:center; gap:6px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pts-burst .bb-mc-row-name > span:last-child { overflow:hidden; text-overflow:ellipsis; }
.pts-burst .bb-mc-row-val { color:var(--purple); font-weight:700; font-family:var(--bb-mono); font-size:calc(11px * var(--ui-font-scale, 1)); white-space:nowrap; }
.pts-burst .bb-mc-row-bar { height:4px; border-radius:2px; margin-top:3px; }
.pts-burst .bb-swatch { display:inline-block; width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.pts-burst .bb-donut-wrap { width:100%; display:flex; justify-content:center; margin-top:8px; }
.pts-burst .bb-donut-wrap canvas { max-width:130px; max-height:130px; }
.pts-burst .bb-mc-explain { font-size:calc(10px * var(--ui-font-scale, 1)); color:var(--muted-2); line-height:1.4; margin-top:12px; padding-top:10px; border-top:1px solid #F1F5F9; }
.pts-burst .bb-mc-empty { font-size:calc(11px * var(--ui-font-scale, 1)); color:var(--muted); padding:14px 4px; text-align:center; }

/* FACILITY TABLE */
.pts-burst .bb-ftable { background:var(--card); border-radius:12px; box-shadow:var(--shadow-sm); overflow:hidden; margin-bottom:20px; }
.pts-burst .bb-ftable-hdr { display:grid; grid-template-columns:1fr 180px; padding:12px 20px; border-bottom:2px solid var(--border); }
.pts-burst .bb-ftable-hdr span { font-size:calc(11px * var(--ui-font-scale, 1)); text-transform:uppercase; letter-spacing:1px; color:var(--muted); font-weight:600; }
.pts-burst .bb-frow { display:grid; grid-template-columns:1fr 180px; padding:14px 20px; border-bottom:1px solid var(--border); cursor:pointer; transition:background .15s; align-items:center; }
.pts-burst .bb-frow:hover { background:var(--card-alt); }
.pts-burst .bb-frow:last-child { border-bottom:none; }
.pts-burst .bb-fname { font-weight:600; font-size:calc(14px * var(--ui-font-scale, 1)); display:flex; align-items:center; gap:8px; color:var(--ink); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pts-burst .bb-chev { font-size:calc(10px * var(--ui-font-scale, 1)); color:var(--muted-2); transition:transform .2s; flex-shrink:0; display:inline-block; }
.pts-burst .bb-fname.open .bb-chev, .pts-burst .bb-subfac-name.open .bb-chev { transform:rotate(90deg); color:var(--purple-mid); }
.pts-burst .bb-fpaid { font-family:var(--bb-mono); font-weight:700; font-size:calc(15px * var(--ui-font-scale, 1)); font-variant-numeric:tabular-nums; color:var(--purple); display:flex; align-items:center; justify-content:flex-end; }

/* EXPANDED PANEL */
.pts-burst .bb-expanded { padding:0 20px 20px; background:var(--card-alt); }
.pts-burst .bb-exp-top { display:grid; grid-template-columns:repeat(6,1fr); gap:10px; padding:14px; background:var(--card); border-radius:8px 8px 0 0; border:1px solid var(--border); border-bottom:none; }
.pts-burst .bb-exp-cards { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; padding:14px; background:var(--card); border:1px solid var(--border); border-top:1px dashed var(--border); border-bottom:none; }
.pts-burst .bb-exp-label { font-size:calc(9px * var(--ui-font-scale, 1)); text-transform:uppercase; letter-spacing:.8px; color:var(--muted); margin-bottom:3px; font-weight:600; }
.pts-burst .bb-exp-val { font-family:var(--bb-mono); font-size:calc(16px * var(--ui-font-scale, 1)); font-weight:700; color:var(--purple); }
.pts-burst .bb-exp-proj-tag { display:inline-flex; align-items:center; gap:3px; margin-top:3px; font-size:calc(9px * var(--ui-font-scale, 1)); font-weight:600; padding:2px 6px; border-radius:8px; }
.pts-burst .bb-exp-proj-up { background:rgba(245,158,11,.12); color:var(--orange); }
.pts-burst .bb-exp-proj-dn { background:rgba(239,68,68,.1); color:var(--red); }
.pts-burst .bb-exp-chart-wrap { padding:14px; background:var(--card); border:1px solid var(--border); border-top:none; border-radius:0 0 8px 8px; }
.pts-burst .bb-exp-chart { height:160px; position:relative; }
.pts-burst .bb-exp-mc { background:#F9F7F5; border-radius:8px; padding:12px; min-width:0; }
.pts-burst .bb-exp-mc .bb-mc-label { font-size:calc(9px * var(--ui-font-scale, 1)); margin-bottom:4px; }
.pts-burst .bb-exp-mc .bb-mc-row { font-size:calc(11px * var(--ui-font-scale, 1)); padding:3px 0; }
.pts-burst .bb-exp-mc .bb-mc-row-val { font-size:calc(11px * var(--ui-font-scale, 1)); }
.pts-burst .bb-exp-mc .bb-mc-explain { font-size:calc(9px * var(--ui-font-scale, 1)); margin-top:8px; padding-top:6px; }
.pts-burst .bb-exp-mc .bb-swatch { width:6px; height:6px; }
.pts-burst .bb-offcurve { font-size:calc(11px * var(--ui-font-scale, 1)); color:var(--muted); padding:8px 14px 0; }

/* SUB-FACILITY SECTION */
.pts-burst .bb-subfac-section { margin-top:16px; padding:16px; background:var(--card); border:1px solid var(--border); border-radius:8px; }
.pts-burst .bb-subfac-header { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.pts-burst .bb-subfac-label { font-size:calc(11px * var(--ui-font-scale, 1)); text-transform:uppercase; letter-spacing:.08em; color:var(--muted); font-weight:600; }
.pts-burst .bb-subfac-hint { font-size:calc(11px * var(--ui-font-scale, 1)); color:var(--purple-mid); font-style:italic; }
.pts-burst .bb-subfac-row { display:grid; grid-template-columns:1fr 140px; padding:12px 14px; border:1px solid var(--border); border-radius:8px; margin-bottom:8px; cursor:pointer; transition:all .15s; background:var(--card); }
.pts-burst .bb-subfac-row:hover { border-color:var(--purple-mid); background:rgba(124,58,237,.03); }
.pts-burst .bb-subfac-row.is-open { border-radius:8px 8px 0 0; border-bottom:none; }
.pts-burst .bb-subfac-row:last-child { margin-bottom:0; }
.pts-burst .bb-subfac-name { font-weight:600; font-size:calc(13px * var(--ui-font-scale, 1)); display:flex; align-items:center; gap:8px; color:var(--ink); min-width:0; }
.pts-burst .bb-subfac-name .bb-chev { font-size:calc(9px * var(--ui-font-scale, 1)); }
.pts-burst .bb-subfac-paid { font-family:var(--bb-mono); font-weight:700; font-size:calc(14px * var(--ui-font-scale, 1)); color:var(--purple); text-align:right; }
.pts-burst .bb-subfac-expanded { padding:16px; background:var(--card-alt); border:1px solid var(--border); border-top:none; border-radius:0 0 8px 8px; margin-top:-9px; margin-bottom:8px; }

/* MOMENTUM CHART */
.pts-burst .bb-momentum-card { background:var(--card); border-radius:12px; box-shadow:var(--shadow-sm); padding:24px 28px; margin-bottom:20px; }
.pts-burst .bb-momentum-header { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:16px; }
.pts-burst .bb-momentum-title { font-size:calc(13px * var(--ui-font-scale, 1)); text-transform:uppercase; letter-spacing:1px; color:var(--muted); font-weight:600; }
.pts-burst .bb-momentum-note { background:linear-gradient(90deg,#FEF3C7,#FDE68A); border-left:3px solid #F59E0B; padding:10px 14px; border-radius:0 6px 6px 0; margin-top:8px; font-size:calc(12px * var(--ui-font-scale, 1)); color:#92400E; line-height:1.5; }
.pts-burst .bb-momentum-wrap { height:280px; position:relative; }

/* FOOTER */
.pts-burst .bb-footer { text-align:center; padding:28px; color:var(--muted); font-size:calc(11px * var(--ui-font-scale, 1)); }
.pts-burst .bb-footer a { color:var(--purple-mid); text-decoration:none; }
.pts-burst .bb-empty { padding:40px 20px; text-align:center; color:var(--muted); }

/* RESPONSIVE */
@media (max-width:760px) {
  .pts-burst .bb-hero { padding:26px 22px; }
  .pts-burst .bb-hero-amount { font-size:calc(34px * var(--ui-font-scale, 1)); }
  .pts-burst .bb-cards-grid { grid-template-columns:1fr 1fr; }
  .pts-burst .bb-exp-top { grid-template-columns:1fr 1fr 1fr; }
  .pts-burst .bb-exp-cards { grid-template-columns:1fr; }
  .pts-burst .bb-container { padding:14px; }
  .pts-burst .bb-topnav { padding:12px 16px; }
  .pts-burst .bb-momentum-wrap { height:220px; }
  .pts-burst .bb-ftable-hdr, .pts-burst .bb-frow { grid-template-columns:1fr auto; }
  .pts-burst .bb-subfac-row { grid-template-columns:1fr auto; }
}
@media (max-width:480px) {
  .pts-burst .bb-cards-grid { grid-template-columns:1fr; }
  .pts-burst .bb-subfac-row, .pts-burst .bb-frow { grid-template-columns:1fr; gap:4px; }
  .pts-burst .bb-subfac-paid { text-align:left; padding-left:17px; }
  .pts-burst .bb-fpaid { justify-content:flex-start; padding-left:18px; }
  .pts-burst .bb-exp-top { grid-template-columns:1fr 1fr; }
}

@media print {
  /* Ctrl+P on the Reports screen prints every tab panel (pts.css). With the
     client report open, that is this page alone — not the standard panels
     filled underneath it, nor the module's own footer. */
  #ptsRepResult.is-client-layout .pts-tab-panel:not(#ptsRepTabBurst),
  #ptsRepResult.is-client-layout .pts-report-footer,
  #ptsRepResult.is-client-layout .pts-report-status,
  #ptsRepTabBurst:empty { display:none !important; }
  .pts-burst .bb-tools { display:none; }
  .pts-burst .bb-page { border:none; border-radius:0; }
  .pts-burst .bb-container { max-width:100%; padding:0; }
  .pts-burst .bb-hero { break-inside:avoid; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .pts-burst .bb-topnav { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .pts-burst .bb-metric-card, .pts-burst .bb-ftable, .pts-burst .bb-momentum-card { break-inside:avoid; page-break-inside:avoid; box-shadow:none; border:1px solid #ddd; }
}
