:root{--ndvi:#2f7d32;--rain:#2a6fb0;--gdd:#c0601c;--normal:#8b958e;--dip:#9aa39d}.season-map{height:min(62vh,40rem)}.year-select{align-items:center;gap:.5rem;margin-top:.75rem;font-size:.9rem;font-weight:700;display:flex}.year-select select{font:inherit;border:1px solid var(--ink);background:var(--surface);color:var(--ink);border-radius:4px;padding:.2rem .4rem;font-weight:400}.weather-summary{color:var(--ink-secondary);font-size:.9rem;margin-top:.6rem!important}.weather-summary strong{color:var(--ink)}.season{max-width:var(--wide);padding:0 var(--gutter);margin:1.5rem auto 0;position:relative}.season-chart{margin:0 0 .75rem}.season-chart figcaption{color:var(--ink-secondary);margin-left:40px;font-size:.9rem}.season-chart figcaption strong{color:var(--ink)}.season-chart svg{cursor:crosshair;touch-action:pan-y;width:100%;display:block;overflow:visible}.season-chart .grid{stroke:var(--grid);stroke-width:1px}.season-chart .baseline{stroke:var(--baseline);stroke-width:1px}.season-chart .tick{fill:var(--ink-muted);font-variant-numeric:tabular-nums;font-size:11px}.season-chart .end-label{fill:var(--ink);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.season-chart .end-label.muted{fill:var(--ink-muted);font-weight:400}.ndvi-line{fill:none;stroke:var(--ndvi);stroke-width:2px;stroke-linejoin:round}.ndvi-point{fill:var(--ndvi);stroke:var(--surface);stroke-width:1.5px}.ndvi-dip{fill:var(--surface);stroke:var(--dip);stroke-width:1.5px}.ndvi-selected{fill:none;stroke:var(--ink);stroke-width:2px}.rain-line,.gdd-line,.normal-line{fill:none;stroke-width:2px;stroke-linejoin:round}.rain-line{stroke:var(--rain)}.gdd-line{stroke:var(--gdd)}.normal-line{stroke:var(--normal);stroke-dasharray:4 3;stroke-width:1.5px}.crosshair{stroke:var(--ink);stroke-width:1px;pointer-events:none}.season-legend{color:var(--ink-secondary);flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:0 0 0 40px;font-size:.85rem;display:flex}.key{border-radius:50%;width:.7rem;height:.7rem;margin-left:.75rem;display:inline-block}.key:first-child{margin-left:0}.key-ndvi{background:var(--ndvi)}.key-dip{border:1.5px solid var(--dip);background:var(--surface)}.key-normal{border-top:2px dashed var(--normal);border-radius:0;width:1.2rem;height:0}.chart-tooltip{z-index:2;background:var(--ink);color:#fff;pointer-events:none;font-variant-numeric:tabular-nums;border-radius:4px;flex-direction:column;gap:.1rem;max-width:22rem;padding:.45rem .65rem;font-size:.8rem;line-height:1.35;display:flex;position:absolute;top:0;left:0}.snapshots{height:5.25rem;margin:0 64px .5rem 40px;position:relative}.snapshot{width:clamp(1.75rem,6.5%,4.25rem);color:var(--ink-muted);background:0 0;border:0;flex-direction:column;align-items:center;gap:.1rem;padding:0;font-size:.7rem;display:flex;position:absolute;top:0;transform:translate(-50%)}.snapshot img{aspect-ratio:1;object-fit:cover;width:100%;box-shadow:0 0 0 1px var(--rule);image-rendering:pixelated;border-radius:3px;display:block}.snapshot:hover img,.snapshot[aria-pressed=true] img{box-shadow:0 0 0 2px var(--ink)}.snapshot[aria-pressed=true]{color:var(--ink);font-weight:700}.example-curve{background:var(--surface);border:1px solid var(--rule);border-radius:6px;flex-direction:column;gap:.5rem;padding:.6rem;display:flex}.example-curve img{width:100%;height:auto;image-rendering:pixelated;display:block}.example-curve svg{border-bottom:1px solid var(--baseline);width:100%;height:4.5rem;display:block}.example-card:hover .example-curve{border-color:var(--ink)}
