/* Pulse v0.2 data layouts. The shared styles own the site shell, hero,
   typography, cards, fields, buttons and footer. Load this file first. */
.pulse-page{--pulse-up:var(--success-text);--pulse-down:var(--danger-text);--pulse-gold:var(--warning-text);--pulse-chart:var(--primary-2);--pulse-blue:var(--info-text)}
.pulse-page [hidden]{display:none!important}
.pulse-page button:disabled{cursor:wait;opacity:.6}
.pulse-page :focus-visible{outline:3px solid var(--accent-focus);outline-offset:3px}
.skip-link{position:fixed;top:-100px;z-index:100;background:var(--surface);padding:12px}.skip-link:focus{top:8px}
.pulse-content section{scroll-margin-top:calc(var(--gatekeepr-header-height,76px) + 20px)}
.pulse-content h3{margin:7px 0 12px;font-size:24px;font-weight:800;line-height:1.17;letter-spacing:-.04em}
.pulse-content small{font-size:10px;line-height:1.5;color:var(--text-muted)}
.pulse-content input,.pulse-content select{min-width:0;max-width:100%;font-size:12px;min-height:44px}
.pulse-content label{display:grid;gap:5px;font-size:10px;line-height:1.5;color:var(--text-muted)}
.period-bar{padding:20px 0 0;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.period-buttons,.filter-buttons{display:flex;flex-wrap:wrap;gap:6px}
.period-buttons button,.filter-buttons button{min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface-78);color:var(--text-muted);font-size:12px;font-weight:750}
.period-buttons button[aria-pressed="true"],.filter-buttons button[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--line-strong);color:var(--primary)}
.period-buttons button:hover,.filter-buttons button:hover{border-color:var(--line-strong);color:var(--text)}
.pulse-filter-row{width:100%;display:flex;justify-content:space-between;gap:14px;align-items:end}.pulse-filter-row>label:first-child{min-width:240px}
.pulse-content .search-field{display:flex;align-items:center;gap:5px;padding-left:12px;background:var(--surface);border:1px solid var(--line);border-radius:14px;width:290px}
.search-field>span{font-size:22px;color:var(--text-muted);line-height:1}.search-field input{border:0;background:transparent}
.effective-period{width:100%;font-size:10px;line-height:1.5;color:var(--text-muted);margin:0}
#custom-period{display:flex;flex-wrap:wrap;gap:12px;align-items:end;width:100%}
.pulse-jump{display:flex;gap:8px 18px;flex-wrap:wrap;margin:17px 0 0;padding:14px 0;border-block:1px solid var(--line-soft)}
.pulse-jump a,.pulse-back{font-size:12px;font-weight:750;color:var(--primary-2)}.pulse-back{display:inline-block;margin-top:18px}
.notice{padding:15px 18px;border:1px solid var(--warning-line);border-radius:16px;background:var(--warning-bg);color:var(--warning-text);margin:14px 0;font-size:12px;line-height:1.7}
.notice.error{border-color:var(--danger-line);background:var(--danger-bg);color:var(--danger-text)}
.loading,.empty-state{padding:22px 0;color:var(--text-muted);font-size:12px;line-height:1.7}.loading{text-align:center}
.muted,.pulse-context,.chart-note,.footnote,.method-details{font-size:12px;line-height:1.7;color:var(--text-muted)}
.pulse-context{margin:18px 0}.chart-note{padding-top:12px;border-top:1px solid var(--line-soft);margin:14px 0 0}.footnote{margin:14px 0 0}
.micro-label{font-size:10px;font-weight:800;letter-spacing:.075em;color:var(--primary-2)}
#now-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:0}.pulse-featured{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:14px 0}
.pulse-featured>article{display:flex;flex-direction:column}.pulse-featured h2{max-width:none}.pulse-featured small{display:block;margin-top:auto;padding-top:12px}
.pulse-feature-values{display:grid;gap:4px;margin:3px 0 9px;font-size:14px;line-height:1.5}.pulse-feature-values strong{font-weight:800}
.pulse-events-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:14px;align-items:start}
.pulse-panel-head,.pulse-toolbar{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;align-items:center}.pulse-toolbar{align-items:end;margin-bottom:14px}.pulse-toolbar label{min-width:200px;flex:1}.pulse-panel-head{margin-bottom:12px}.pulse-panel-head h3{margin-bottom:0}
.pulse-event{display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;padding:16px 0;border-top:1px solid var(--line-soft);font-size:12px;line-height:1.7}
.pulse-event:first-child{margin-top:14px}.pulse-event-date{font-size:10px;color:var(--text-muted)}.pulse-event-date time{display:block;font-weight:800;color:var(--primary-2)}.pulse-event-date span{display:block;margin-top:5px}
.pulse-event ul{padding-left:15px;margin:5px 0}.pulse-event details{font-size:10px;color:var(--text-muted)}.pulse-event code{font-size:10px;overflow-wrap:anywhere}.pulse-event details p{overflow-wrap:anywhere}
.pulse-event summary,.method-details summary,.pulse-compare summary,.snapshot-explorer summary{cursor:pointer;font-weight:750}
.company-link{display:block;border:0;background:transparent;color:inherit;text-align:left;padding:0;min-width:0;max-width:100%;font:inherit;cursor:pointer;overflow-wrap:anywhere}
.company-link:hover{color:var(--primary-2);text-decoration:underline}
.pulse-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:18px}
.calendar-cell{border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);color:var(--text-muted);min-height:48px;padding:5px 2px;font-size:10px}.calendar-cell span,.calendar-cell strong{display:block}.calendar-cell.has-events{background:var(--accent-soft);color:var(--primary)}.calendar-cell strong{font-size:12px}
.method-details{margin-top:18px}.method-details p{font-size:12px;line-height:1.7}.method-details li{margin:8px 0}
.chart{position:relative;min-width:0;margin-top:12px}.chart svg{display:block;width:100%;height:auto;overflow:visible;touch-action:pan-y}
.chart text{font-family:var(--font-sans);fill:var(--text-muted);font-size:10px}.chart .grid-line{stroke:var(--line-soft);stroke-width:1}.chart .axis-line{stroke:var(--line-strong);stroke-width:1}
.chart .chart-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart .data-point{stroke:var(--surface);stroke-width:2}.chart .hit-point{fill:transparent;cursor:crosshair}
.chart .event-marker{stroke:var(--pulse-gold);stroke-dasharray:3 4;stroke-width:1}.chart .event-marker-point{fill:var(--pulse-gold);stroke:var(--surface);stroke-width:2}
.chart-table{font-size:10px;color:var(--text-muted);line-height:1.5;margin-top:8px}.chart-table summary{cursor:pointer}.chart-table>div{overflow:auto;max-height:300px;margin-top:10px}.chart-table table{width:100%;border-collapse:collapse}.chart-table th,.chart-table td{padding:7px 9px;text-align:right;border-bottom:1px solid var(--line-soft);font-size:10px}.chart-table th:first-child,.chart-table td:first-child{text-align:left}
.chart-tooltip{position:fixed;z-index:120;pointer-events:none;width:290px;max-width:calc(100vw - 24px);padding:13px 16px;background:var(--surface);color:var(--text);border:1px solid var(--line);box-shadow:0 16px 38px var(--shadow-soft);border-radius:16px;font-size:12px;line-height:1.7;max-height:70vh;overflow:hidden}
.chart-tooltip strong{display:block;font-weight:800;margin-bottom:3px}.chart-tooltip small{color:var(--text-muted);font-size:10px}
.radar-positive{fill:var(--success-bg);opacity:.35}.radar-negative{fill:var(--danger-bg);opacity:.3}.matrix-point{cursor:pointer;fill:var(--pulse-chart);stroke:var(--surface);stroke-width:1.5;opacity:.88}.matrix-point:hover,.matrix-point:focus{opacity:1;stroke:var(--text);stroke-width:2}.radar-chart text.quadrant-label{font-size:10px;fill:var(--text-muted)}.chart .group-count{pointer-events:none;fill:var(--on-primary);font-size:9px;font-weight:800}
.matrix-group{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.pulse-divergence-grid,.pulse-proof-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.pulse-divergence>strong{display:block;font-size:17px;margin-top:8px}.pulse-divergence p{font-size:12px;line-height:1.7;color:var(--text-muted)}
.pulse-rank-values{font-size:12px;min-width:0}.pulse-rank-values strong{display:block;font-weight:800}.pulse-rank-values small,.row-delta small{display:block;margin-top:4px}.row-delta{font-size:12px;line-height:1.4;font-weight:800;text-align:right;white-space:nowrap}.more-button{margin-top:12px}
.company-search{width:290px}.company-heading{display:flex;align-items:start;justify-content:space-between;gap:15px;margin:18px 0}.company-heading h3{margin:0}.company-heading p{margin:5px 0 0;font-size:10px;line-height:1.5;color:var(--text-muted)}.company-heading>a{font-size:12px;font-weight:750;color:var(--primary-2)}
.company-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}.pulse-bridge{margin-top:14px}.bridge-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}.bridge-grid span,.bridge-grid strong,.bridge-grid small{display:block}.bridge-grid span{font-size:10px;color:var(--text-muted)}.bridge-grid strong{font-size:17px;margin:7px 0;font-weight:800}.ratio-attribution{font-size:12px;line-height:1.7;color:var(--text-muted)}
.criterion-change{display:grid;grid-template-columns:60px minmax(0,1fr) auto;gap:6px 10px;border-bottom:1px solid var(--line-soft);padding:12px 0;font-size:12px}.criterion-change time{font-size:10px;color:var(--text-muted)}.criterion-change small{grid-column:2/-1}.criterion-table p{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;font-size:12px;line-height:1.5}.criterion-table small{grid-column:1/-1}
.heatmap-scroll,.table-scroll{width:100%;overflow:auto;overscroll-behavior-inline:contain}.heatmap-scroll{border:1px solid var(--line);border-radius:14px}
.kpi-heatmap,.snapshot-table,.coverage-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;text-align:left}.kpi-heatmap caption{text-align:left;padding:13px 14px;font-weight:800;color:var(--primary-2);font-size:12px}.kpi-heatmap th,.kpi-heatmap td{padding:13px 14px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);min-width:120px}.kpi-heatmap th{background:var(--surface-soft);font-size:10px;font-weight:800}.kpi-heatmap tbody th{position:sticky;left:0;z-index:1;min-width:180px;max-width:220px;color:var(--text);font-size:12px}.kpi-heatmap td{vertical-align:top}.kpi-heatmap td>strong,.kpi-heatmap td>span{display:block}.kpi-heatmap td>span{font-size:10px;margin-top:6px}.kpi-heatmap .improved{background:var(--success-bg);color:var(--success-text)}.kpi-heatmap .worsened{background:var(--danger-bg);color:var(--danger-text)}.kpi-heatmap .unchanged,.kpi-heatmap .missing{background:var(--surface-soft);color:var(--text-muted)}
.compact-company{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:13px 0;border-bottom:1px solid var(--line-soft);font-size:12px}.compact-company>span{color:var(--primary-2);font-weight:800}.compact-company small{grid-column:1/-1}
.pulse-compare,.snapshot-explorer{margin-top:14px}.pulse-compare>summary,.snapshot-explorer>summary{font-size:14px;color:var(--text)}.compare-controls{display:grid;grid-template-columns:1fr 1fr 1fr 1.3fr auto;gap:12px;align-items:end;margin-top:20px}.compare-legend{display:flex;gap:20px;flex-wrap:wrap;font-size:10px;color:var(--text-muted);margin-top:10px}.compare-legend i{width:14px;height:2px;display:inline-block;margin:0 5px 3px 0}
.snapshot-table{min-width:780px}.snapshot-table th,.snapshot-table td,.coverage-table th,.coverage-table td{padding:12px;border-bottom:1px solid var(--line-soft);font-size:12px}.snapshot-table th,.coverage-table th{font-size:10px;color:var(--text-muted)}.snapshot-table small{display:block;margin-top:4px}.coverage-table{min-width:550px}
.health-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.health-grid span,.health-grid strong,.health-grid small{display:block}.health-grid span{font-size:10px;color:var(--text-muted)}.health-grid strong{font-size:17px;font-weight:800;line-height:1.35;margin:6px 0;letter-spacing:-.025em}
@media(max-width:1050px){.pulse-featured{grid-template-columns:1fr 1fr}.pulse-featured>article:last-child{grid-column:1/-1}.pulse-events-layout{grid-template-columns:minmax(0,1.7fr) minmax(250px,1fr)}.compare-controls{grid-template-columns:repeat(3,minmax(0,1fr))}.compare-controls .btn{grid-column:3}}
@media(max-width:780px){.pulse-events-layout,.pulse-featured,.pulse-divergence-grid,.pulse-proof-grid{grid-template-columns:1fr}.pulse-featured>article:last-child{grid-column:auto}#now-stats,.company-values,.bridge-grid,.health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pulse-filter-row{flex-direction:column;align-items:stretch}.pulse-filter-row>label:first-child,.pulse-content .search-field,.company-search{width:100%;min-width:0}.pulse-toolbar{align-items:stretch}.pulse-toolbar label{min-width:0;flex:1 1 160px}.company-heading>a{max-width:110px;text-align:right}.compare-controls{grid-template-columns:1fr 1fr}.compare-controls .btn{grid-column:1/-1}}
@media(max-width:560px){.pulse-event{grid-template-columns:1fr;gap:5px}.pulse-event-date{display:flex;gap:10px;align-items:center}.pulse-event-date span{margin:0}.pulse-toolbar{flex-direction:column}.pulse-toolbar label{flex:auto;width:100%}.pulse-ranking-row .pulse-rank-values,.pulse-ranking-row .row-delta{grid-column:2;text-align:left}.radar-chart text.quadrant-label{font-size:8px}.kpi-heatmap tbody th{min-width:130px;max-width:150px}.kpi-heatmap th,.kpi-heatmap td{padding:11px 10px;min-width:105px}.pulse-feature-values{font-size:14px}.period-buttons button,.filter-buttons button{min-height:44px}.pulse-jump{gap:10px 14px}}
@media(prefers-reduced-motion:reduce){.pulse-page *{transition:none!important;scroll-behavior:auto!important}}

.pulse-proof-grid{align-items:start}
.calendar-cell[aria-pressed="true"]{border-color:var(--primary-2);box-shadow:0 0 0 2px var(--accent-focus)}
.radar-list>summary{min-height:44px;display:flex;align-items:center}
.radar-company-list{display:grid;grid-template-columns:minmax(0,1fr) 72px 72px;gap:8px;align-items:center;border-bottom:1px solid var(--line-soft);font-size:12px}
.radar-company-list .company-link{min-height:44px;font-weight:800}
.radar-company-list span{font-size:10px;text-align:right}
