.cfo{
  --navy:#1c4f8a;
  --navy-2:#86a5d0;
  --red:#c0392b;
  --red-2:#e8a39b;
  --ink:#020d23;
  --g600:#5a6273;
  --g400:#8a8f9b;
  --line:#e6e8ec;
  --grid:#ececec;
  --wash:#f1f3f5;
  --font:"DM Sans",Arial,system-ui,sans-serif;
  --serif:"Crimson Pro",Georgia,serif;
  font-family:var(--font);
  font-feature-settings:"ss03";
  color:var(--ink);
  box-sizing:border-box;
  -webkit-font-smoothing:antialiased;
}
.cfo *,.cfo *::before,.cfo *::after{box-sizing:inherit}
:where(.cfo) button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
.cfo button:focus-visible{outline:2px solid #95b9ff;outline-offset:2px}
.cfo{--stroke:rgba(2,13,35,.08);--titanium:#f7f4f3;--carbon90:#061336;--ink60:rgba(2,13,35,.6)}


.cfo-head p{font-size:16px;line-height:1.5;color:var(--g600);margin:0 0 24px}

/* tabs: grey container, white active */
.cfo-tabs{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px;padding:4px;background:var(--titanium);outline:1px solid var(--stroke);border-radius:0;overflow:hidden;max-width:100%}
.cfo-tab{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:34px;padding:8px 12px;border-radius:0;font-size:12px;font-weight:500;line-height:1.5;letter-spacing:0;color:var(--ink60);background:transparent;white-space:nowrap;transition:background-color .15s,color .15s}
.cfo-tab[aria-selected="true"]{background:var(--carbon90);color:#fff}


/* compare pills */
.cfo-pills{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 20px}
.cfo-pills:empty{display:none}
.cfo-tabs + .cfo-pills:empty + section .cfo-desc{margin-top:20px}
.cfo-pill,.cfo-view button{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:8px 12px;border-radius:0;font-size:12px;font-weight:500;line-height:1.5;letter-spacing:0;color:var(--ink60);background:transparent;box-shadow:inset 0 0 0 1px var(--stroke);white-space:nowrap;transition:background-color .15s,color .15s,box-shadow .15s}
@media (hover:hover){.cfo-pill:hover,.cfo-view button:hover{background:var(--titanium);box-shadow:inset 0 0 0 1px var(--titanium);color:#020d23}}
.cfo-pill[aria-pressed="true"],.cfo-view button[aria-pressed="true"],.cfo-pill[aria-pressed="true"]:hover,.cfo-view button[aria-pressed="true"]:hover{background:#020d23;box-shadow:inset 0 0 0 1px #020d23;color:#fff}

.cfo-desc{font-size:15px;line-height:1.5;color:var(--g600);margin:0 0 16px;max-width:75ch}
.cfo-cards{display:grid;gap:16px}
.cfo-card{will-change:auto}
@keyframes cfo-card{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes cfo-fade{from{opacity:0}to{opacity:1}}
@keyframes cfo-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes cfo-reveal{from{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}
@keyframes cfo-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes cfo-slide{from{transform:translateX(var(--dx,0px))}to{transform:translateX(0)}}
.cfo .draw{stroke-dasharray:1}
.cfo-cards.anim .cfo-card{animation:cfo-card .35s cubic-bezier(.2,.7,.2,1) both}
.cfo-cards.anim .cfo-card:nth-child(2){animation-delay:.08s}
.cfo-cards.anim .draw{animation:cfo-draw .8s cubic-bezier(.35,.6,.25,1) both;animation-delay:calc(var(--d,0ms) + 150ms)}
.cfo-cards.anim .fade{animation:cfo-fade .6s ease-out both;animation-delay:calc(var(--d,0ms) + 150ms)}
.cfo-cards.anim .pop{animation:cfo-fade .35s ease-out both;animation-delay:calc(var(--d,0ms) + 650ms)}
.cfo-cards.anim .pop0{animation:cfo-fade .3s ease-out both;animation-delay:calc(var(--d,0ms) + 100ms)}
.cfo-cards.anim .slide{animation:cfo-slide .7s cubic-bezier(.35,.6,.25,1) both;animation-delay:calc(var(--d,0ms) + 350ms)}
.cfo-cards.anim .draw.slow{animation-duration:.7s;animation-delay:calc(var(--d,0ms) + 350ms)}
.cfo-cards.anim .cfo-stack .bar{animation:cfo-reveal .6s cubic-bezier(.3,.7,.2,1) both;animation-delay:calc(var(--d,0ms) + 150ms)}
.cfo-cards.anim .cfo-stack .pop{animation-delay:calc(var(--d,0ms) + 550ms)}
.cfo-cards.anim .cfo-hbar .fill{transform-origin:left center;animation:cfo-grow .6s cubic-bezier(.3,.7,.2,1) both;animation-delay:calc(var(--d,0ms) + 150ms)}
.cfo-cards.anim .cfo-hbar .pop{animation-delay:calc(var(--d,0ms) + 550ms)}
.cfo-cards.anim .cfo-heat tbody tr{animation:cfo-fade .4s ease-out both;animation-delay:calc(var(--d,0ms) + 100ms)}
@keyframes cfo-blip{0%{opacity:0}18%{opacity:1}72%{opacity:1}100%{opacity:0}}
.cfo .blip{opacity:0}
.cfo-cards.anim .cfo-dots .slide{animation:cfo-slide 1.4s cubic-bezier(.45,0,.2,1) both;animation-delay:calc(var(--d,0ms) + 1350ms)}
.cfo-cards.anim .cfo-dots .draw.slow{animation:cfo-draw 1.4s cubic-bezier(.45,0,.2,1) both;animation-delay:calc(var(--d,0ms) + 1350ms)}
.cfo-cards.anim .cfo-dots .pop0{animation:cfo-fade .4s ease-out both;animation-delay:calc(var(--d,0ms) + 150ms)}
/* 1) "Q2" shows on the starting dot, then fades. 2) Dot moves. 3) "Q3" fades in on arrival, then fades. */
@keyframes cfo-tint{from{fill:#b8c2d1}to{fill:#020d23}}
.cfo-cards.anim .cfo-dots .tint{animation:cfo-tint 1.4s cubic-bezier(.45,0,.2,1) both;animation-delay:calc(var(--d,0ms) + 1350ms)}
.cfo-cards.anim .cfo-dots .blip.b2{animation:cfo-blip 1.1s ease-in-out both;animation-delay:calc(var(--d,0ms) + 250ms)}
.cfo-cards.anim .cfo-dots .blip.b3{animation:cfo-blip 1.6s ease-in-out both;animation-delay:calc(var(--d,0ms) + 2750ms)}
.cfo-cards.anim .cfo-dots .pop.late{animation:cfo-fade .4s ease-out both;animation-delay:calc(var(--d,0ms) + 2750ms)}
@media (prefers-reduced-motion:reduce){.cfo-cards.anim *,.cfo-cards.anim .cfo-card{animation:none!important}.cfo-tab,.cfo-pill{transition:none}}

.cfo-card{border:1px solid var(--stroke);border-radius:0;padding:24px;background:#fff;min-width:0}
.cfo-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.cfo-card h3{font-family:var(--serif);font-size:26px;font-weight:300;margin:0 0 6px;line-height:1.1}
.cfo-card .sub{font-size:13px;color:var(--g600);margin:0;line-height:1.45}
.cfo-note{font-size:12px;line-height:1.5;color:var(--g600);margin:0}
.cfo-card-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-top:16px}
.cfo-next{flex:none;display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:0;font-size:12px;font-weight:500;line-height:1.5;background:#020d23;color:#fff;box-shadow:inset 0 0 0 1px #020d23;white-space:nowrap;transition:background-color .15s}
@media (hover:hover){.cfo-next:hover{background:#061336}}
.cfo-next svg{width:12px;height:12px}
@media (max-width:640px){.cfo-foot{flex-direction:column-reverse;align-items:flex-start}.cfo-next{width:100%;justify-content:center}}

.cfo-legend{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:14px;color:var(--g600)}
.cfo-legend span{display:inline-flex;align-items:center;gap:8px}
.cfo-legend i{display:inline-block;width:12px;height:12px;border-radius:0}
.cfo-legend i.ln{width:20px;height:3px;border-radius:2px}
.cfo-legend i.dash{width:20px;height:0;border-top:2px dashed var(--g600);border-radius:0}

/* view toggle */
.cfo-view{display:inline-flex;flex-wrap:wrap;gap:8px}

.cfo-foot{margin-top:16px;display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:14px;color:var(--g400)}
.cfo-foot p{margin:0}
.cfo-next[hidden]{display:none}

/* heatmap */
.cfo-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.cfo-heat{border-collapse:separate;border-spacing:3px;font-variant-numeric:tabular-nums;margin:-3px}
.cfo-heat th{font-weight:400;text-align:left}
.cfo-heat thead th{font-size:13px;color:var(--g600);vertical-align:bottom;padding:0 2px 8px;text-align:center;line-height:1.3;width:var(--cw,80px);min-width:var(--cw,80px)}
.cfo-heat thead th:first-child{width:auto;min-width:0}
.cfo-heat thead th small{display:block;color:var(--g400);font-size:12px}
.cfo-heat thead th.ov{color:var(--ink);font-weight:600}
.cfo-heat tbody th{font-size:14px;padding:0 16px 0 0;white-space:nowrap;position:sticky;left:0;background:#fff;z-index:1}
.cfo-heat tbody th em{font-style:normal;font-size:11px;font-weight:400;color:var(--g600);background:var(--titanium);border-radius:0;padding:2px 7px;margin-left:6px;vertical-align:1px}
.cfo-heat td{height:38px;width:var(--cw,80px);min-width:var(--cw,80px);text-align:center;font-size:14px;border-radius:0}
.cfo-heat td.na{color:var(--g400)}
.cfo-heat td .d{font-size:11px;margin-left:6px;opacity:.85;letter-spacing:.01em}
.cfo-heat.tight td{height:46px;line-height:1.2}
.cfo-heat.tight td .d{display:block;margin:2px 0 0}
.cfo-heat.tight thead th{font-size:12px}
.cfo-heat.tight tbody th{white-space:normal;max-width:176px;line-height:1.3}
.cfo-legend .k{font-weight:400;font-size:11px;letter-spacing:.02em;color:var(--ink)}
.cfo-legend em.k{font-style:normal;background:var(--titanium);padding:2px 7px}
.cfo-heat .gap,.cfo-heat thead th.gap{width:8px;min-width:8px;padding:0;background:none!important;box-shadow:none!important}
.cfo-heat tr.pin th{color:var(--g600)}
.cfo-heat tr.pin td{background:none!important;color:var(--g600)!important;box-shadow:inset 0 0 0 1px var(--stroke)!important}
.cfo-heat tr.pin td.gap{box-shadow:none!important}
.cfo-heat tr.spacer td{height:6px;background:none!important;box-shadow:none!important}

/* stacked bars */
.cfo-stack{display:grid;grid-template-columns:110px 1fr 84px 76px;column-gap:16px;row-gap:9px;align-items:center;font-variant-numeric:tabular-nums}
.cfo-stack .hd{font-size:12px;color:var(--g600);align-self:end;line-height:1.3}
.cfo-stack .lab{font-size:14px;line-height:1.2}
.cfo-stack .lab small{display:block;font-size:12px;color:var(--g400)}
.cfo-stack .lab.ov{font-weight:600}
.cfo-stack .bar{display:flex;height:32px;border-radius:0;overflow:hidden}
.cfo-stack .bar div{display:flex;align-items:center;justify-content:center;font-size:12px;min-width:0;overflow:hidden;white-space:nowrap}
.cfo-stack .net{font-size:18px;font-weight:400;color:var(--navy)}
.cfo-stack .lab.ov ~ .net{font-weight:400}
.cfo-stack .rule{grid-column:1/-1;height:1px;background:var(--line);margin:4px 0}
.cfo-chg{font-size:14px;font-weight:400;white-space:nowrap}
.cfo-chg.up{color:var(--navy)}
.cfo-chg.down{color:var(--red)}
.cfo-chg.flat,.cfo-chg.na{color:var(--g400)}

/* horizontal value bars */
.cfo-hbar{display:grid;grid-template-columns:110px 1fr;column-gap:16px;row-gap:9px;align-items:center;font-variant-numeric:tabular-nums}
.cfo-hbar .lab{font-size:14px;line-height:1.2}
.cfo-hbar .lab small{display:block;font-size:12px;color:var(--g400)}
.cfo-hbar .lab.ov{font-weight:600}
.cfo-hbar .track{display:flex;align-items:center;gap:10px;height:28px}
.cfo-hbar .fill{height:100%;background:var(--navy);border-radius:0}
.cfo-hbar .lab.ov + .track .fill{background:var(--g600)}
.cfo-hbar .val{font-size:15px;font-weight:400}
.cfo-hbar .rule{grid-column:1/-1;height:1px;background:var(--line);margin:4px 0}

/* charts */
.cfo svg{display:block;overflow:visible}
.cfo svg text{font-family:var(--font);font-variant-numeric:tabular-nums}
.cfo-mults{display:grid;grid-template-columns:repeat(var(--cols,4),1fr);gap:28px}
.cfo-mult h4{font-size:14px;font-weight:400;margin:0 0 6px;display:flex;justify-content:space-between;align-items:baseline}
.cfo-mult h4 small{font-size:12px;color:var(--g400);font-weight:400}
.cfo-mult.ov h4{font-weight:600}
.cfo-mult .mid{opacity:0;transition:opacity .15s}
.cfo-mult:hover .mid,.cfo-mult:focus-within .mid{opacity:1}
@media (hover:none){.cfo-mult .mid{opacity:1}}

.cfo-lines .ln{transition:opacity .12s}
.cfo-lines .ln .pv{opacity:0}
.cfo-lines.has-on .ln:not(.on){opacity:.22}
.cfo-lines .ln.on .pv{opacity:1}
.cfo-lines .ln.on path.vis{stroke-width:3}
.cfo-lines .stem,.cfo-lines .olab{opacity:0;transition:opacity .12s}
.cfo-lines:not(.has-on) .ln[data-i="0"] .stem,.cfo-lines:not(.has-on) .ln[data-i="0"] .olab,.cfo-lines .ln.on .stem,.cfo-lines .ln.on .olab{opacity:1}
.cfo-lines .hit{fill:none;stroke:transparent;stroke-width:16;cursor:pointer}
.cfo-hint{font-size:13px;color:var(--g400);margin:10px 0 0}

.cfo-tip{position:fixed;pointer-events:none;background:var(--ink);color:#fff;font-size:12px;padding:5px 8px;border-radius:0;white-space:nowrap;z-index:10;opacity:0;transform:translate(-50%,-130%)}

@media (max-width:640px){
  .cfo-tabs{justify-content:flex-start}
  .cfo-card{padding:16px}
  .cfo-stack{grid-template-columns:64px 1fr 58px 38px;column-gap:8px}
  .cfo-stack .net{font-size:15px}
  .cfo-stack .hd{font-size:11px}
  .cfo-chg{font-size:12px}
  .cfo-hbar{grid-template-columns:84px 1fr;column-gap:10px}
  .cfo-mults{gap:20px 16px}
  .cfo-heat tbody th{white-space:normal;max-width:118px;font-size:13px;line-height:1.25;padding-right:8px}
  .cfo-heat td,.cfo-heat thead th{width:62px;min-width:62px;font-size:13px}
  .cfo-heat td{height:46px;line-height:1.2}
  .cfo-heat td .d{display:block;margin:2px 0 0}
  .cfo-heat thead th{font-size:12px}
}

