.tracking-view{display:grid;gap:20px;font-size:1rem;min-width:0}.tracking-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.tracking-toolbar strong{font-size:1.15rem}.tracking-toolbar p{margin:8px 0 0;font-size:.875rem;line-height:1.6;color:var(--muted);max-width:850px}.tracking-filters{display:flex;flex-wrap:wrap;gap:14px}.tracking-filters label,.tracking-email-form label,.tracking-range label,.observed-chart label{display:grid;gap:7px;font-size:.875rem;min-width:0}.tracking-filters label{flex:1 1 160px}.tracking-filters select,.tracking-filters input,.tracking-email-form select,.tracking-email-form input,.tracking-range input,.observed-chart select{border:1px solid var(--line);border-radius:7px;background:#fff;padding:11px 12px;font:inherit;max-width:100%;min-width:0}.tracking-view .btn,.price-history-dialog .btn{font-size:.875rem}.tracking-table{min-width:1060px}.tracking-table td,.observations-table td{font-size:.875rem;line-height:1.5;white-space:normal;max-width:350px}.tracking-table th,.observations-table th{font-size:.75rem}.tracking-table small,.observations-table small{display:block;font-size:.75rem;color:var(--muted);line-height:1.6;margin-top:5px}.product-history-link{padding:0;border:0;background:none;text-align:left;color:var(--green);font:600 .94rem/1.5 inherit;cursor:pointer}.product-history-link:hover{text-decoration:underline}.tracking-alerts h2{margin:0;font-size:1.2rem}.tracking-alerts .surface-toolbar{align-items:flex-start}.tracking-alerts .surface-toolbar p{font-size:.875rem;line-height:1.6;color:var(--muted);margin:6px 0 0}.tracking-event-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding:20px}.price-event{border:1px solid var(--line);border-radius:10px;padding:20px;min-width:0;background:white}.event-top{display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap;font-size:.75rem;color:var(--muted)}.price-event h3{font-size:1rem;line-height:1.5;margin:12px 0 4px}.event-sku{font-size:.75rem;color:var(--muted);line-height:1.5;overflow-wrap:anywhere}.event-price{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin:17px 0;font-size:.94rem}.event-price strong{font-size:1.2rem}.price-down{color:#206d48}.price-up{color:#a95022}.changed-fields{margin:12px 0;padding-left:20px;font-size:.875rem;line-height:1.8}.match-context{font-size:.875rem;line-height:1.6;color:#596b60}.price-event details{font-size:.875rem;line-height:1.6;margin:14px 0}.price-event summary{cursor:pointer;font-weight:600}.event-details{display:grid;grid-template-columns:minmax(100px,.6fr) minmax(0,1fr);gap:8px 12px}.event-details dt{color:var(--muted)}.event-details dd{margin:0;overflow-wrap:anywhere}.tracking-email-settings{padding:20px;background:#fff;border:1px solid var(--line);border-radius:10px;line-height:1.6}.tracking-email-settings>summary{font-size:1.05rem;font-weight:650;cursor:pointer}.tracking-email-form{display:flex;flex-wrap:wrap;align-items:end;gap:14px;margin:20px 0}.tracking-email-form label{flex:1 1 160px}.tracking-help{color:var(--muted);font-size:.875rem;line-height:1.6}.tracking-email-settings p{font-size:.875rem}#tracking-recipients article{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:15px 0;border-top:1px solid var(--line)}#tracking-recipients p{margin:5px 0;color:var(--muted)}#tracking-more-events{margin:0 20px 20px}.tracking-empty{padding:30px;text-align:center;color:var(--muted);font-size:.94rem;line-height:1.6}.tracking-error{color:#a73d29!important;background:#fff5ec;padding:10px;font-size:.875rem;line-height:1.6}.price-history-dialog{position:fixed;inset:20px;margin:auto;width:min(1200px,calc(100% - 40px));max-width:1200px;max-height:calc(100dvh - 40px);padding:0;background:#f8faf8;border:0;border-radius:14px;color:var(--ink)}.price-history-dialog::backdrop{background:#132a22cc}.price-history-dialog>header{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:20px 26px;background:#fff;border-bottom:1px solid var(--line)}.price-history-dialog h2{font-size:1.4rem;line-height:1.4;margin:5px 0}.price-history-dialog .kicker{font-size:.75rem}.history-range{padding:18px 26px 0}#price-history-content{padding:10px 26px 28px;font-size:1rem;line-height:1.6;min-width:0}#price-history-content h3{font-size:1.1rem}.history-product-meta{color:var(--muted);font-size:.875rem}.history-product-meta a{color:var(--green)}.history-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin:20px 0}.history-summary article{padding:18px;background:white;border:1px solid var(--line);border-radius:9px}.history-summary h3{font-size:.94rem!important;margin:0 0 10px}.history-summary strong{font-size:1.55rem}.history-summary p{font-size:.875rem;color:var(--muted);margin:8px 0}.history-summary small{display:block;color:var(--muted);font-size:.75rem;line-height:1.6}.observed-chart{background:white;border:1px solid var(--line);border-radius:10px;padding:22px;margin:20px 0}.observed-chart header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.observed-chart h3{margin:5px 0}.observed-chart svg{display:block;width:100%;height:auto;margin-top:20px}.observed-chart svg text{fill:#637268;font:13px 'Segoe UI',sans-serif}.chart-grid{stroke:#e2e8e3}.history-series path{fill:none;stroke:currentColor;stroke-width:2}.history-series circle{fill:currentColor;stroke:white;stroke-width:1;cursor:help}.series-own{color:var(--chart-own)}.series-competitor{color:var(--chart-competitor)}.series-own path,.legend-swatch.series-own line{stroke-width:3}.history-chart-legend{display:flex;flex-wrap:wrap;gap:12px 20px;font-size:.75rem}.history-chart-legend span{display:inline-flex;align-items:center;gap:7px;max-width:350px}.history-comparisons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.history-comparisons article{padding:18px;background:white;border:1px solid var(--line);border-radius:9px;min-width:0}.history-comparisons h4{font-size:1rem;margin:10px 0}.history-comparisons p,.history-comparisons ul{font-size:.875rem;line-height:1.6;overflow-wrap:anywhere}.history-comparisons ul{padding-left:20px}.history-readings{margin-top:25px;border:1px solid var(--line);padding:18px;border-radius:9px;background:white}.history-readings>summary{cursor:pointer;font-size:1rem;font-weight:650}.observations-table{min-width:1000px}.history-readings .table-scroll{margin-top:16px}.tracking-view button:focus-visible,.price-history-dialog button:focus-visible{outline:3px solid var(--green);outline-offset:3px}.filters select{max-width:240px;min-width:0}.filters{flex-wrap:wrap}
@media(max-width:1000px){.tracking-event-list,.history-comparisons{grid-template-columns:1fr}.history-summary{grid-template-columns:1fr}.history-summary article{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.history-summary article p,.history-summary article small{grid-column:1/-1}.tracking-alerts .surface-toolbar{flex-direction:column}.tracking-toolbar{flex-wrap:wrap}.tracking-table{min-width:1000px}.sidebar nav{overflow-x:auto}}
@media(max-width:600px){.price-history-dialog{inset:0;width:100%;max-height:100dvh;border-radius:0}.price-history-dialog>header{padding:16px}.price-history-dialog h2{font-size:1.2rem}.history-range{padding:15px 16px 0}#price-history-content{padding:10px 16px 24px}.tracking-event-list{padding:12px}.observed-chart{padding:12px}.observed-chart header{flex-direction:column}.observed-chart svg text{font-size:21px}.event-details{grid-template-columns:1fr}.event-details dd{margin-bottom:8px}.tracking-filters label{flex-basis:130px}.history-comparisons{grid-template-columns:1fr}}
.product-history-link{font:inherit;font-size:.94rem;font-weight:600;line-height:1.5}
.event-delta,.event-specifications{font-size:.875rem;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}
@media(max-width:600px){#price-history-dialog .history-summary{grid-template-columns:repeat(3,minmax(230px,1fr));overflow-x:auto;scroll-snap-type:x proximity}#price-history-dialog .history-summary article{display:block;scroll-snap-align:start}.observed-chart svg text{font-size:30px}}
/* Prices and changes, UI round: the price index across retailers, its alerts, the page range and the key observations. Colours are tokens here, on the page, the history dialog and the chart frame the Pricing Lab reuses: our line green, competitors one orange told apart by dash, a retailer the same colour everywhere it is drawn. */
.tracking-view,.price-history-dialog,.observed-chart{--chart-own:#1d684f;--chart-competitor:#b45a1f;--retailer-1:#2f69b3;--retailer-2:#b4531f;--retailer-3:#7a4ea5;--retailer-4:#0d7a80;--retailer-5:#a8365f;--retailer-6:#5f6a12;--tone-risk:#a8423a;--tone-watch:#9a6b00;--tone-good:#1d684f;--tone-info:#69736f}
.retailer-1{color:var(--retailer-1)}.retailer-2{color:var(--retailer-2)}.retailer-3{color:var(--retailer-3)}.retailer-4{color:var(--retailer-4)}.retailer-5{color:var(--retailer-5)}.retailer-6{color:var(--retailer-6)}
.dash-long path,.dash-long line{stroke-dasharray:7 4}.dash-dot path,.dash-dot line{stroke-dasharray:2 4}.dash-dashdot path,.dash-dashdot line{stroke-dasharray:10 4 2 4}.dash-short path,.dash-short line{stroke-dasharray:4 2}.dash-fine path,.dash-fine line{stroke-dasharray:1 3}
.legend-swatch{width:30px;height:10px;flex:none;overflow:visible}.observed-chart .legend-swatch{width:30px;height:10px;margin:0}.legend-swatch line{fill:none;stroke:currentColor;stroke-width:3}.index-reference-swatch line{stroke:var(--chart-own);stroke-width:2;stroke-dasharray:6 5}.history-chart-header{margin:14px 0 0;font-size:.94rem;font-weight:600;overflow-wrap:anywhere}
#price-index-granularity{margin-left:8px}
.severity-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;flex:none;background:var(--tone-info)}.severity-dot.is-risk{background:var(--tone-risk)}.severity-dot.is-watch{background:var(--tone-watch)}.severity-dot.is-good{background:var(--tone-good)}.severity-dot.is-info,.severity-dot.is-neutral{background:var(--tone-info)}
.price-index-body{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:20px;padding:18px;align-items:start}#price-index-chart{min-width:0}.index-svg{display:block;width:100%;height:auto}.index-svg text{fill:#637268;font:26.5px 'Segoe UI',sans-serif}.index-line{fill:none;stroke:currentColor;stroke-width:2.5}.index-point{fill:currentColor;stroke:#fff;stroke-width:1;cursor:help}.index-point.is-today{fill:#fff;stroke:currentColor;stroke-width:2}.index-reference{stroke:var(--chart-own);stroke-width:1.5;stroke-dasharray:6 5}.index-svg .index-reference-label{fill:var(--chart-own);font-weight:600}.index-basket-tick{fill:#69736f;cursor:help}
.index-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin:10px 0 0;padding:0;list-style:none;font-size:.875rem}.index-legend li{display:inline-flex;align-items:center;gap:7px;min-width:0;overflow-wrap:anywhere}
.index-chips{display:flex;flex-wrap:wrap;gap:12px;margin:0;padding:0 18px 18px;list-style:none}.index-chip{display:flex;gap:10px;flex:1 1 240px;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:.875rem;line-height:1.5;overflow-wrap:anywhere}.index-chip-swatch{width:6px;align-self:stretch;border-radius:3px;background:currentColor;flex:none}.index-chip b{margin-left:6px;font-size:1.1rem}.index-chip small{display:block;color:var(--muted);font-size:.75rem}
.price-index-alerts{min-width:0;padding:16px;border:1px solid var(--line);border-radius:10px;background:#fbfcfa}.price-index-alerts h3{margin:0 0 12px;font-size:1rem}.price-index-alerts>a{display:inline-block;margin-top:12px;color:var(--green);font-size:.875rem}.alert-list{display:grid;gap:14px;margin:0;padding:0;list-style:none}.alert-row{display:flex;align-items:flex-start;font-size:.875rem;line-height:1.55;overflow-wrap:anywhere}.alert-row .severity-dot{margin-top:6px}.alert-row p{margin:0}.alert-row time{display:block;margin-top:3px;color:var(--muted);font-size:.75rem}.alert-row .product-history-link{display:inline;font-size:inherit;text-align:inherit}
.price-index-numbers{padding:0 18px 18px}.price-index-numbers summary{cursor:pointer;font-size:.875rem;font-weight:600}.index-table-scroll{overflow-x:auto;margin-top:12px}.index-table{min-width:100%;border-collapse:collapse;font-size:.875rem}.index-table th,.index-table td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.index-table small{display:block;color:var(--muted);font-size:.75rem}#price-index-status{margin:0;padding:0 18px 16px;color:var(--muted);font-size:.875rem;line-height:1.6}#price-index-status:empty{display:none}
.tracking-range{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px;flex:1 1 100%;min-width:0}.tracking-filters .tracking-range label,.tracking-range label{flex:0 1 170px}.tracking-range .tab{padding:9px 12px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);font-size:.875rem}.tracking-range .tab.is-active{background:var(--green);border-color:var(--green);color:#fff}.tracking-range .tab.is-active:after{display:none}.history-range .tracking-help{margin:8px 0 0}.history-range .tracking-help:empty{display:none}
.history-observations{margin:20px 0}.history-observations>h3{margin:0 0 12px}.observation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.observation-card{min-width:0;padding:16px 18px;background:#fff;border:1px solid var(--line);border-radius:9px;font-size:.875rem;line-height:1.6;overflow-wrap:anywhere}.observation-card h4{display:flex;align-items:center;margin:0 0 8px;font-size:.875rem;color:var(--muted)}.observation-card strong{display:block;font-size:1.3rem;color:var(--ink)}.observation-card p{margin:6px 0 0}.observation-list{margin:8px 0 0;padding-left:18px}
.undercut-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;margin-top:10px}.undercut-strip.is-dense{gap:0}.undercut-strip.is-dense .undercut-cell{border-radius:0}.undercut-cell{display:block;min-height:18px;border-radius:2px;background:#e2e8e3}.undercut-cell.is-undercut{background:var(--tone-risk)}.undercut-cell.is-level{background:#a07a12}.undercut-cell.is-cheapest{background:var(--tone-good)}.undercut-cell.is-none{background:#e2e8e3;box-shadow:inset 0 0 0 1px #7d8883}.undercut-key{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:8px 0 0;color:var(--muted);font-size:.75rem}.undercut-key .undercut-cell{display:inline-block;width:12px;min-height:12px;margin-right:4px}
@media(max-width:1000px){.price-index-body{grid-template-columns:1fr}.index-svg text{font-size:21px}.observation-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.price-index-body{padding:12px}.index-chips{padding:0 12px 12px}.observation-grid{grid-template-columns:1fr}.tracking-filters .tracking-range label,.tracking-range label{flex:1 1 100%}.tracking-range input{width:100%}.index-svg text{font-size:31px}.index-tick.is-minor{display:none}}
/* The price index is drawn in a 900-unit viewBox scaled to its column, so its text reads at its font size times the drawn width over 900. The sizes below keep it at 12px or more at the narrowest the chart is drawn in each band of the page's width (measured in Edge, 2026-10-04: 251px at 320, 352px at 421, 520px at 601, 412px at 1051 beside the alerts - styles.css lays the page out anew at max-width:1050px, so the chart is narrowest just above it - 600px at 1280, 814px at 1600). work/qa-price-history.mjs holds the same figures. At 1001-1279px the dates are large enough that the first and last, anchored inside the chart, met their neighbours over a month of September dates, so that band hides those two neighbours and shows six. */
@media(max-width:420px){.index-svg text{font-size:44px}}@media(min-width:1280px){.index-svg text{font-size:18.5px}}@media(min-width:1600px){.index-svg text{font-size:13.5px}}@media(min-width:1001px) and (max-width:1279px){.index-tick.is-minor:nth-child(2 of .index-tick),.index-tick.is-minor:nth-last-child(2 of .index-tick){display:none}}
