/* Dating 2025 report — extracted verbatim from research.body_html's embedded
   <style> block (same design tokens/classes as the auto-online-2025 offer:
   rep-hero/rep-founder/rep-toc/rep-section/rank-table/donut/vk-mini-*/volume-*).
   Kept unscoped exactly as it shipped inline, to preserve current visuals 1:1. */
:root {
  --navy-deep:#0A1F44; --navy:#102A5C; --navy-2:#2f67e8; --blue:#2563EB; --blue-2:#1D4ED8; --blue-bright:#3B82F6; --blue-soft:#DCE7FA; --blue-pale:#EEF3FC;
  --paper:#F7F8FB; --paper-2:#EEF1F7; --paper-3:#DDE3EE; --rule:#0A1F44; --rule-soft:#C9D2E2;
  --ink:var(--navy-deep); --ink-2:#2C3D63; --ink-3:#5B6A85; --ink-4:#8A95AC; --ink-5:#B7BFD0;
  --up:#0F8A57; --down:#C0392B; --max-w:1440px; --gutter:56px;
}
*,.edtech-embed *::before,.edtech-embed *::after{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--paper);color:var(--ink)}
body{font-family:"Hanken Grotesk",system-ui,-apple-system,sans-serif}
a{color:inherit;text-decoration:none}.rep-content a,.rep-founder a{color:#1d4ed8;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.edtech-embed{overflow-x:clip;color:var(--ink);background:var(--paper)}
.rep *{font-style:normal!important}
.rep{--read:980px;--sans:"Hanken Grotesk",system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--paper)}
.rep-hero{background:linear-gradient(160deg,var(--navy-deep) 0%,var(--navy) 55%,var(--navy-2) 100%);color:#EAF0FB;position:relative;overflow:hidden;border-bottom:1px solid var(--navy-deep)}
.rep-hero-inner{max-width:var(--max-w);margin:0 auto;padding:64px var(--gutter) 56px;position:relative;z-index:1;display:block;min-height:520px}
.rep-eyebrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-family:"JetBrains Mono",monospace;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:rgba(220,231,250,.8);padding-bottom:22px;margin-bottom:38px;border-bottom:1px solid rgba(255,255,255,.14)}
.rep-eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--blue-bright);box-shadow:0 0 0 4px rgba(59,130,246,.22)}
.rep-eyebrow .sp{color:rgba(255,255,255,.3)}
.rep-hero-title{font-family:"Source Serif 4",Georgia,serif;font-weight:400;font-size:clamp(56px,8vw,108px);line-height:.96;letter-spacing:-.03em;margin:0 0 28px;color:#fff;max-width:17ch;text-wrap:balance}
.rep-hero-title .accent{color:var(--blue-bright)}
.rep-hero-sub{font-family:"Source Serif 4",Georgia,serif;font-size:20px;line-height:1.5;color:rgba(234,240,251,.85);margin:0 0 36px;max-width:60ch}
.rep-founder{background:var(--paper-2);border-bottom:1px solid var(--rule-soft)}
.rep-founder-inner{max-width:var(--max-w);margin:0 auto;padding:56px var(--gutter);display:grid;grid-template-columns:180px 1fr;gap:56px;align-items:start}
.rep-founder-photo{width:132px;height:132px;display:flex;align-items:center;justify-content:center;background:linear-gradient(150deg,var(--navy-deep),var(--blue-2));color:#fff;font-family:"Source Serif 4",Georgia,serif;font-size:44px;letter-spacing:.02em;border-radius:2px;margin-bottom:16px}
.rep-founder-name{font-family:"Source Serif 4",Georgia,serif;font-size:19px;font-weight:600;color:var(--ink)}
.rep-founder-role{font-family:"JetBrains Mono",monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:6px}
.rep-founder-quote{margin:0;font-family:"Source Serif 4",Georgia,serif;font-size:19px;line-height:1.55;font-weight:400;letter-spacing:-.01em;color:var(--ink);position:relative;text-wrap:pretty}
.rep-founder-quote p{margin:0}.rep-founder-quote p+p{margin-top:1.1em}
.rep-body{max-width:var(--max-w);margin:0 auto;padding:0 var(--gutter);display:grid;grid-template-columns:180px minmax(0,1fr);gap:40px;align-items:start}
.rep-toc{position:sticky;top:88px;align-self:start;padding:40px 0}
.rep-toc-label{font-family:"JetBrains Mono",monospace;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--rule-soft)}
.rep-toc-list{list-style:none;margin:0;padding:0}.rep-toc-list li{border-left:2px solid var(--rule-soft)}.rep-toc-list li.on{border-left-color:var(--blue)}
.rep-toc-list a,.rep-toc-list button{display:flex;gap:8px;align-items:baseline;width:100%;padding:8px 0 8px 12px;font-family:var(--sans);font-weight:500;font-size:13px;line-height:1.25;color:var(--ink-3);background:none;border:0;cursor:pointer;text-align:left}
.rep-toc-num{font-family:"JetBrains Mono",monospace;font-size:10.5px;color:var(--ink-4);flex-shrink:0}
.rep-content{padding:40px 0 96px;min-width:0}.rep-section{scroll-margin-top:88px;padding:28px 0 40px}.rep-section+.rep-section{border-top:1px solid var(--rule-soft)}
.rep-kicker{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px}
.rep-h2{font-family:var(--sans);font-weight:700;font-size:34px;line-height:1.08;letter-spacing:-.02em;color:var(--ink);margin:0 0 26px;max-width:none;text-wrap:balance}
.rep-p{font-family:"Source Serif 4",Georgia,serif;font-size:18.5px;line-height:1.62;color:var(--ink);margin:0 0 20px;max-width:var(--read);text-wrap:pretty}
.rep-ul{margin:0 0 22px;padding:0;list-style:none;max-width:var(--read)}
.rep-ul li{position:relative;padding-left:26px;margin-bottom:12px;font-family:"Source Serif 4",Georgia,serif;font-size:18.5px;line-height:1.62;color:var(--ink);text-wrap:pretty}
.rep-ul li::before{content:"";position:absolute;left:4px;top:12px;width:7px;height:7px;background:var(--blue);border-radius:1px}
.rep-chart-block{max-width:var(--read);margin:34px 0 26px}
.rep-chart-title{font-family:var(--sans);font-weight:700;font-size:18px;line-height:1.25;color:var(--ink);margin:0 0 18px}
.volume-card,.segments-card{background:transparent;border:0;padding:0;box-shadow:none}
.volume-sub{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-bottom:1rem}
.volume-plot{display:grid;grid-template-columns:52px 1fr;gap:14px;align-items:end}
.volume-y{display:flex;flex-direction:column;justify-content:space-between;height:332px;padding:0 0 32px 0;font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--ink-3)}
.volume-main{position:relative;height:332px;display:grid;grid-template-rows:300px 32px}
.volume-area{position:relative;height:300px;border-left:1px solid #d8e0ee;border-bottom:1px solid #d8e0ee}
.volume-grid{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between}.volume-grid span{display:block;border-top:1px solid #e2e8f3}
.volume-chart{position:absolute;left:0;right:0;bottom:0;height:300px;display:flex;justify-content:center;align-items:flex-end;gap:6px;padding:0 8px}.volume-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:0 0 148px;min-width:0;height:300px}.volume-bar{width:120px;background:#2f67e8;display:flex;align-items:flex-end;justify-content:center;padding-bottom:.65rem}.volume-value{color:#fff;text-align:center;font-family:"Source Serif 4",Georgia,serif;line-height:1}.volume-value .num{font-size:1.75rem;font-weight:600;display:block}.volume-value .unit{font-size:.78rem;opacity:.95}.volume-xlabels{display:flex;justify-content:center;gap:6px;padding:4px 8px 0}.volume-xlabels span{display:flex;align-items:center;justify-content:center;flex:0 0 148px;font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--ink-3);text-align:center}
.segments-bars{display:flex;flex-direction:column;gap:0}.segments-row{display:grid;grid-template-columns:290px 1fr 150px;gap:20px;align-items:center;padding:16px 0;border-bottom:1px solid var(--rule-soft)}.segments-row:last-child{border-bottom:0}.segments-name{font-family:"Source Serif 4",Georgia,serif;font-size:18px;line-height:1.25;color:var(--ink)}.segments-track{height:18px;background:#dbe4f4;overflow:hidden;position:relative}.segments-fill{height:100%;background:#2f67e8}.segments-value{font-family:"JetBrains Mono",monospace;font-size:14px;line-height:1.3;color:var(--ink);text-align:right;white-space:nowrap}.segments-value .up{color:var(--up)}.segments-value .down{color:var(--down)}.ranking-pair{max-width:var(--read);display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:36px;align-items:start;margin:34px 0 26px}.ranking-pair .rep-chart-block{margin:0;max-width:none}.ranking-pair .volume-card,.ranking-pair .donut-wrap{margin-top:0;padding-top:0;border-top:0}.donut-wrap{display:grid;grid-template-columns:220px 1fr;gap:20px;align-items:center}.donut-chart{width:180px;height:180px;border-radius:50%;position:relative;margin:auto}.donut-chart:after{content:"";position:absolute;inset:42px;background:var(--paper);border-radius:50%}.donut-legend{display:grid;gap:12px}.donut-item{display:flex;align-items:center;gap:12px;font-family:"Source Serif 4",Georgia,serif;font-size:18px;color:var(--ink)}.donut-dot{width:14px;height:14px;flex:0 0 auto}
.rank-table{max-width:var(--read);width:100%;border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft);margin:18px 0 28px}.rank-head,.rank-item{display:grid;grid-template-columns:56px minmax(0,1.7fr) 180px 120px;gap:18px;align-items:center;padding:14px 0;border-bottom:1px solid #e2e8f3}.rank-head{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.rank-item:last-child{border-bottom:0}.rank-company{font-family:var(--sans);font-size:18px;font-weight:600;color:var(--ink)}.rank-value,.rank-yoy{font-family:"Source Serif 4",Georgia,serif;font-size:19px;color:var(--ink)}.rank-yoy.up{color:var(--up)}.rank-yoy.neg{color:var(--down)}.rank-note-small{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--ink-3);margin:10px 0 26px}
.rep-quote{margin:28px 0;padding:0;max-width:var(--read)}.rep-quote-photo{display:grid;grid-template-columns:132px 1fr;gap:20px;align-items:start}.rep-quote-ph{width:132px;height:132px;border:1px dashed var(--rule-soft);background:var(--paper-2);display:flex;align-items:center;justify-content:center;font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);object-fit:cover;object-position:center top}.rep-quote-body{padding:4px 0 4px 24px;border-left:3px solid var(--blue)}.rep-quote-text{font-family:"Source Serif 4",Georgia,serif;font-size:19px;line-height:1.55;color:var(--ink);margin:0 0 10px}.rep-quote-author{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.rep-inline-image{max-width:var(--read);margin:28px 0}.rep-inline-image img{width:100%;display:block;border:1px solid var(--rule-soft)}.rep-stat-inset{max-width:300px;margin:24px 0;padding:18px 20px;border-top:2px solid var(--blue);border-bottom:1px solid var(--rule-soft)}.rep-stat-inset .big{font-family:var(--sans);font-size:44px;line-height:.95;font-weight:800;letter-spacing:-.04em;color:var(--blue)}.rep-stat-inset .small{margin-top:8px;font-family:"Source Serif 4",Georgia,serif;font-size:17px;line-height:1.3;color:var(--ink)}
@media (max-width:980px){.rep-founder-inner,.rep-body,.rep-quote-photo{grid-template-columns:1fr;gap:28px}.rep-toc{position:relative;top:auto;padding:28px 0 0}}
@media (max-width:760px){:root{--gutter:20px}.rep-hero-inner{padding:40px var(--gutter) 36px;min-height:auto}.rep-founder-inner{padding:36px var(--gutter)}.rep-body{padding:0 var(--gutter)}.rep-h2{font-size:28px}.rep-p{font-size:17px}.rank-head,.rank-item{grid-template-columns:40px minmax(0,1.5fr) 120px 90px;gap:10px;font-size:10px}.rank-company{font-size:13px}.rank-value,.rank-yoy{font-size:13px}.segments-row{grid-template-columns:1fr;gap:8px}.segments-value{text-align:left}.volume-col,.volume-xlabels span{flex:0 0 42%}.volume-bar{width:80%}}

.line-chart-card{max-width:var(--read);padding:8px 0 0}
.line-chart-frame{position:relative;height:220px;width:220px;max-width:220px;margin:0 auto}
.line-chart-caption{font-family:var(--sans);font-size:11px;color:var(--ink-3);margin-top:8px}.market-line-block{max-width:var(--read);margin:28px 0 30px}.market-line-frame{position:relative;height:340px}.market-line-source{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--ink-3);margin-top:10px}.slope-block{max-width:var(--read);margin:28px 0 34px}.slope-ref{max-width:860px}.slope-ref-sub{display:none}.slope-ref-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:0 0 6px}.slope-ref-legend-item{display:flex;align-items:center;gap:8px;font-family:var(--sans);font-size:15px;color:var(--ink)}.slope-ref-dot{width:12px;height:12px;border-radius:50%}.slope-ref-svg{width:100%;height:auto;display:block}.slope-ref-source{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--ink-3);margin-top:10px}.vk-trends{max-width:var(--read);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0 28px}.vk-trend-card{background:var(--paper-2);border:1px solid var(--rule-soft);padding:18px 18px 16px}.vk-trend-num{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--blue);margin-bottom:10px}.vk-trend-title{font-family:var(--sans);font-size:18px;font-weight:700;line-height:1.2;color:var(--ink);margin:0 0 10px}.vk-trend-text{font-family:"Source Serif 4",Georgia,serif;font-size:17px;line-height:1.55;color:var(--ink);margin:0}.vk-mini-pair{max-width:760px;display:grid;grid-template-columns:1fr 1fr;gap:28px;margin:24px 0 30px;align-items:start}.vk-mini-card{max-width:340px;display:flex;flex-direction:column}.vk-mini-title{font-family:var(--sans);font-weight:700;font-size:18px;line-height:1.25;color:var(--ink);margin:0 0 16px;min-height:28px;display:flex;align-items:flex-end;white-space:nowrap}.vk-mini-chart{display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:end}.vk-mini-ycol{display:flex;flex-direction:column;align-items:flex-start}.vk-mini-ylabel{font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}.vk-mini-y{height:220px;display:flex;flex-direction:column;justify-content:space-between;font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--ink-3);padding-bottom:28px}.vk-mini-main{height:248px;display:grid;grid-template-rows:220px 28px}.vk-mini-area{position:relative;height:220px;border-left:1px solid #e3e8f2;border-bottom:1px solid #e3e8f2}.vk-mini-grid{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between}.vk-mini-grid span{display:block;border-top:1px solid #edf1f7}.vk-mini-bars{position:absolute;left:0;right:0;bottom:0;height:220px;display:flex;justify-content:center;align-items:flex-end;gap:18px}.vk-mini-barwrap{width:76px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:220px}.vk-mini-value{font-family:var(--sans);font-size:12px;font-weight:600;color:#2f67e8;margin-bottom:8px;white-space:nowrap}.vk-mini-bar{width:76px;background:#2f67e8}.vk-mini-bar.light{background:#9bbcf7}.vk-mini-x{display:flex;justify-content:center;gap:18px;padding-top:6px}.vk-mini-x span{width:76px;text-align:center;font-family:var(--sans);font-size:11px;color:var(--ink-3)}@media (max-width:900px){.vk-trends,.vk-mini-pair{grid-template-columns:1fr}.vk-mini-card{max-width:340px}}
@media (max-width:900px){.line-duo{grid-template-columns:1fr}.line-chart-frame{height:240px}.ranking-pair{grid-template-columns:1fr}.donut-wrap{grid-template-columns:1fr}.donut-legend{justify-items:center}}

/* React port additions: dynamic donut needs its gradient set inline per-instance
   (source had a single hardcoded conic-gradient); TOC items became <button> for
   scroll-spy — buttons already styled above alongside .rep-toc-list a. */
