/* Seasons Atlas (Cultivera Insights). One page stylesheet layered after the shared site shell. */
:root{--paper:#f5f2ea;--paper2:#e9ede5;--forest:#193c29;--sage:#52654d;--muted:#5b6c5f;--line:#cad3c6;--harvest:#ae7724;--growing:#5a8767;--start:#6b8a69;--ink:#1b2920;--focus:#a86d21;--sans:Inter,system-ui,sans-serif;--serif:"Playfair Display",Georgia,serif}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:var(--paper);font:400 16px/1.55 var(--sans)}
button,select,input{font:inherit}button,select{cursor:pointer}
a{color:var(--forest);text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
:where(a,button,input,select,summary,[tabindex]):focus-visible{outline:3px solid var(--focus);outline-offset:3px}
[hidden]{display:none!important}
.skip{position:absolute;left:12px;top:-100px;z-index:200;background:white;padding:10px}
.skip:focus{top:8px}
/* The shared nav is fixed; the page starts below it. */
main{max-width:1380px;margin:auto;padding:var(--cv-shell-offset,64px) 24px 0}
.load-status{min-height:1.4em;padding:8px 0;margin:0;color:var(--muted);font-size:12px}
/* Routine progress is announced, not printed above the crop; failures (.is-alert) stay visible. */
.load-status:not(.is-alert){position:absolute;width:1px;height:1px;min-height:0;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.load-status.is-alert{color:#8a3b12;font-size:14px}
.opening{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(34px,6vw,110px);align-items:center;padding:10px 0 80px}
.opening{margin-top:34px}.portrait-wrap{min-width:0}
/* Specimen plate: one treatment for all 42 categories. Photograph or engraved line drawing on the same mat,
   numbered, with the record basis and the crop's published year beneath. */
.portrait{margin:0;position:relative;display:grid;background:#f9f7f1;border:1px solid var(--line);padding:clamp(12px,1.5vw,20px)}
.portrait::before{content:"";position:absolute;inset:5px;border:1px solid rgba(25,60,41,.12);pointer-events:none}
.plate-art{position:relative;aspect-ratio:1/.92;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 50% 47%,#eef1e7 0 36%,rgba(238,241,231,0) 36.3%),#f4f2ea}
/* Photographs keep their intrinsic (or art-directed) proportions: no portrait crop, no upscaling beyond the file. */
.portrait.is-photo{max-width:var(--photo-max,100%)}
.portrait.is-photo .plate-art{aspect-ratio:var(--photo-aspect,4 / 3);background:#e5e9dd}
.plate-art img{width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.82);display:block}
/* Keep the complete painted specimen and its original colour; all series plates share a square mat. */
.portrait.is-illustration .plate-art{aspect-ratio:1;background:#f9f7f1}
.portrait.is-illustration .plate-art img{object-fit:contain;filter:none}
.specimen{width:70%;height:auto;max-height:88%;overflow:visible;color:var(--forest);--ci-fill:url(#plate-hatch)}
/* Redraw the 32px icon strokes as fine engraved lines at any plate size. */
.specimen #cropSpecimen *{vector-effect:non-scaling-stroke}
.specimen #cropSpecimen g{stroke-width:1.6px}
.specimen-ground{fill:#e3e7da}
.plate-label{display:grid;gap:10px;padding:14px 0 0;font:11px/1.45 var(--sans);color:var(--muted)}
.plate-head{display:flex;justify-content:space-between;align-items:baseline;gap:14px;border-bottom:1px solid var(--line);padding-bottom:9px}
.plate-no{font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--sage);white-space:nowrap}
.plate-basis{font:italic 400 15px/1.3 var(--serif);color:var(--forest);text-align:right}
.plate-year{display:grid;gap:5px}
.plate-track{position:relative;display:block;height:12px;background:#e6eae0}
.plate-year.is-empty .plate-track{background:repeating-linear-gradient(135deg,#e8ebe4 0 3px,#c9d1c5 3px 4px)}
.plate-bar{position:absolute;top:2px;height:8px;border-radius:1px;min-width:2px}
.plate-months{display:grid;grid-template-columns:4fr 4fr 5fr 4fr 4fr 5fr 4fr 5fr 4fr 4fr 5fr 4fr;font-size:9px;letter-spacing:.06em;text-align:center}
.plate-months,.plate-year__note{height:14px;line-height:14px}
.plate-year__note{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plate-months .is-month{color:var(--forest);font-weight:750}
.plate-year.is-empty .plate-band{display:none}
.plate-credit{font-size:10.5px}
.opening-copy{align-self:center;max-width:610px}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:700;color:var(--sage);text-transform:uppercase}
h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif);font-weight:400;letter-spacing:-.035em;color:var(--forest);text-wrap:balance}
h1{font-size:clamp(64px,8vw,132px);line-height:.95;margin:22px 0 28px;overflow-wrap:anywhere}
h2{font-size:clamp(36px,4.2vw,64px);line-height:1.11;margin:8px 0 14px}
h3{font-size:clamp(22px,2.1vw,30px);font-weight:500;line-height:1.22}
.lede{font-size:clamp(20px,2.1vw,30px);line-height:1.38;max-width:470px}
.choice-row{display:flex;align-items:end;flex-wrap:wrap;gap:12px;margin:32px 0}
.choose-btn{border:1px solid var(--forest);background:var(--forest);color:white;padding:14px 18px;min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.choose-btn:hover{background:#29563b}
.district-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);min-width:175px}
.district-field select{width:100%;color:var(--forest);border:1px solid var(--line);background:transparent;border-radius:0;padding:12px;min-height:50px}
.crop-facts{display:grid;grid-template-columns:1fr;gap:18px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0}
.crop-facts div{display:grid;gap:5px}.fact-label{font:700 10px/1.4 var(--sans);letter-spacing:.1em;color:var(--sage);text-transform:uppercase}
.crop-facts strong{font:400 clamp(19px,1.7vw,24px)/1.3 var(--serif);color:var(--forest)}.opening-note{font-size:12px;color:var(--muted);max-width:480px;margin-top:14px}
.chapters{display:flex;gap:8px 20px;flex-wrap:wrap;margin-top:26px;font-size:12px}.chapters a{text-decoration:none;border-bottom:1px solid var(--sage);padding-bottom:4px}
.chapter{padding:66px 0 80px;border-top:1px solid var(--line);scroll-margin-top:12px}.chapter-top{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:24px}
.chapter-top h2{max-width:750px}.chapter-intro,.chapter-footer,.source-note{font-size:13px;color:var(--muted)}
.month-controls{display:flex;align-items:end;gap:8px;flex-wrap:nowrap}
.month-controls button{width:44px;min-height:46px;background:transparent;color:var(--forest);border:1px solid var(--line)}
.month-controls label{display:flex;flex-direction:column;color:var(--muted);font-size:11px}
.month-controls select{color:var(--forest);min-width:134px;padding:9px 7px;border:1px solid var(--line);background:transparent;min-height:46px}
.calendar-stage{position:relative;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
/* Only the week plot scrolls sideways; the record header and source link stay in view. */
.cal-scroll{overflow-x:auto;overscroll-behavior-inline:contain}
.cal-row{display:grid;grid-template-columns:174px minmax(620px,1fr);min-width:794px;border-bottom:1px solid #dbe0d7;align-items:center;min-height:42px}
.cal-row:last-child{border:0}.cal-label{position:sticky;left:0;z-index:1;background:var(--paper);padding:9px 12px 9px 0;font-size:12px;line-height:1.3;color:var(--forest)}
.cal-label small{display:block;font-size:10px;color:var(--muted);line-height:1.3}
.cal-plot{height:32px;position:relative;background:repeating-linear-gradient(to right,transparent 0,transparent calc(100% / 52 - 1px),#d9dfd6 calc(100% / 52 - 1px),#d9dfd6 calc(100% / 52))}
.cal-axis .cal-plot{height:44px;display:grid;grid-template-columns:4fr 4fr 5fr 4fr 4fr 5fr 4fr 5fr 4fr 4fr 5fr 4fr;background:none;border-bottom:1px solid var(--line)}
.cal-axis .cal-plot span{text-align:center;font-size:10px;color:var(--muted);padding-top:15px;border-right:1px solid var(--line);cursor:pointer}
.cal-axis .cal-plot span:hover{color:var(--forest);background:#ecefe6}
.cal-axis .cal-plot span.is-month{color:var(--forest);font-weight:750;background:#e5eadd;box-shadow:inset 0 -2px var(--forest)}
.cal-bar{position:absolute;z-index:1;top:8px;height:16px;border-radius:2px;min-width:2px;background:var(--growing)}
:is(.cal-bar,.plate-bar).start{background:repeating-linear-gradient(135deg,var(--start),var(--start) 5px,#dce8d6 5px,#dce8d6 8px)}:is(.cal-bar,.plate-bar).grow{background:var(--growing)}:is(.cal-bar,.plate-bar).harvest{background:var(--harvest)}
:is(.cal-bar,.plate-bar).maturity-harvest{background:repeating-linear-gradient(135deg,var(--harvest),var(--harvest) 5px,#ebd5aa 5px,#ebd5aa 9px)}
/* The focus month is one forest band on every plot (calendar lanes, compact previews, plate strip). Amber stays
   reserved for harvest stages and keyboard focus. */
.cal-focus,.cal-mini__focus,.plate-band{position:absolute;top:0;bottom:0;left:var(--month-l,84.6%);width:var(--month-w,9.6%);pointer-events:none;
  background:rgba(25,60,41,.08);box-shadow:inset 1.5px 0 var(--forest),inset -1.5px 0 var(--forest)}
.plate-band{top:-3px;bottom:-3px;background:rgba(25,60,41,.12)}
.is-gliding :is(.cal-focus,.cal-mini__focus,.plate-band){transition:left .38s cubic-bezier(.3,.7,.2,1),width .38s cubic-bezier(.3,.7,.2,1)}
.cal-stage.is-now .cal-label{font-weight:600}
.cal-stage.is-now .cal-label::before{content:"";display:inline-block;width:6px;height:6px;margin:0 6px 1px 0;border-radius:50%;background:var(--forest)}
.month-reading{border-top:1px solid var(--line);padding:16px 0 18px;font-size:15px;color:var(--ink);max-width:980px}
.month-reading:empty{display:none}
.month-reading__head{margin:0}
.month-reading__head strong{font:400 24px/1.2 var(--serif);letter-spacing:-.02em;color:var(--forest);margin-right:2px}
.month-reading__list{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 28px;font-size:13px}
.month-reading__list li{display:flex;justify-content:space-between;gap:14px;padding:6px 0;border-bottom:1px solid #dbe0d7}
.month-reading__name{color:var(--forest);font-weight:550}
.month-reading__list li span:last-child{text-align:right}
.month-reading__list li.is-quiet{color:var(--muted)}
.cal-source-details{border-top:1px solid var(--line);margin-top:14px}
.cal-record{display:flex;gap:12px;align-items:center;position:sticky;left:0;padding:12px 8px 12px 0;min-height:52px;cursor:pointer;background:var(--paper);font-size:13px;font-weight:550;color:var(--forest)}
.cal-record::before{content:"+";display:grid;place-items:center;width:22px;height:22px;border:1px solid var(--sage);font-size:16px;line-height:1;font-weight:400;flex:none}
.cal-record::-webkit-details-marker{display:none}.cal-record{list-style:none}
/* The open record shows the exact lanes, so its compact preview would repeat them. */
.cal-source-details[open] .cal-mini{visibility:hidden}
.cal-source-details[open]>.cal-record::before{content:"−"}
.cal-record__name{min-width:0;flex:1}
.cal-mini{position:relative;display:block;flex:0 0 36%;height:21px;min-width:95px;background:#e4e9df;border:1px solid #cad3c6}
.cal-mini .cal-bar{top:5px;height:10px}
.cal-mini__focus{z-index:2}
.cal-source-link{font-size:12px;margin:7px 0 13px;display:flex;flex-wrap:wrap;gap:4px 16px;color:var(--muted)}
.cal-source-details[open] .cal-record{border-bottom:1px solid var(--line)}
.cal-record a{font-size:11px;margin-left:10px;font-weight:400}
.cal-empty{padding:34px 0;max-width:700px;color:var(--muted)}
.chapter-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px}
.text-button{border:0;border-bottom:1px solid var(--forest);color:var(--forest);background:none;padding:7px 0;font-size:12px;min-height:44px}
#fullYear{display:none}
.map-modes{display:flex;flex-wrap:wrap;gap:7px}
.map-modes button{background:transparent;border:1px solid var(--line);padding:10px 12px;color:var(--forest);min-height:44px;font-size:12px}
.map-modes button[aria-pressed="true"]{background:var(--forest);color:white;border-color:var(--forest)}
.map-layout{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(260px,1fr);align-items:center;gap:clamp(25px,8vw,120px)}
.map-frame{display:grid;place-items:center;min-height:400px;padding:6px 0}
.map-frame svg{display:block;max-width:400px;width:100%;height:auto}
.map-frame path{stroke:var(--paper);stroke-width:1.1;transition:fill .2s}
.map-frame path:hover,.map-frame path:focus-visible{stroke:var(--forest);stroke-width:2;cursor:pointer;outline:none}
.map-frame path.is-selected{stroke:#132b1d;stroke-width:3.8;paint-order:stroke fill}
/* Keyboard focus must differ from the selection outline, including on the selected district itself. */
.map-frame path:focus-visible,.map-frame path.is-selected:focus-visible{stroke:var(--focus);stroke-width:4.2;outline:none}
.map-copy{max-width:460px;border-top:1px solid var(--line);padding-top:18px}.map-copy p{font-size:14px;color:var(--muted)}
#mapReading{font:400 clamp(26px,2.6vw,38px)/1.2 var(--serif);letter-spacing:-.02em;color:var(--forest);text-wrap:balance}
.map-copy .map-instruction{font-size:12px}
/* Legend reads as a scale: swatches share the calendar bar shape, labels sit beneath. */
.legend{display:flex;flex-wrap:wrap;gap:12px 4px;font-size:10.5px;line-height:1.3;color:var(--muted);border-top:1px solid var(--line);padding-top:12px}
.legend span{display:grid;gap:5px;flex:1 1 78px}.legend i{display:block;width:100%;height:10px;border:1px solid #c4ccc0;border-radius:2px}
.legend i.is-gap{background:repeating-linear-gradient(135deg,#e8ebe4 0 3px,#b8c2b4 3px 4px)}
.year-tag{font-size:12px;color:var(--muted);white-space:nowrap}
.production-head{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:25px;padding:28px 0;border-top:1px solid var(--line)}
.big-number{font-family:var(--serif);font-weight:400;font-size:clamp(40px,6vw,82px);line-height:1.1;color:var(--forest)}
.production-head p{font-size:13px;color:var(--muted);margin:8px 0}
.secondary-numbers{display:grid;gap:10px}.secondary-numbers div{border-bottom:1px solid var(--line);display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:8px 0}
.secondary-numbers span{font-size:12px;color:var(--muted)}.secondary-numbers strong{font:400 clamp(24px,2.4vw,32px)/1.1 var(--serif);color:var(--forest);white-space:nowrap}
.trend{border-top:1px solid var(--line);padding:25px 0}.trend-bars{display:grid;grid-template-columns:repeat(var(--n,12),minmax(0,1fr));align-items:end;gap:clamp(3px,1.2vw,15px);height:195px}
.trend-year{height:100%;display:flex;flex-direction:column;justify-content:end;gap:8px;align-items:center;min-width:0}
.trend-bars{border-bottom:0}
.trend-year b{display:block;width:100%;max-width:26px;min-height:2px;border-radius:2px 2px 0 0;background:var(--growing);transition:height .2s}.trend-year b.latest{background:var(--forest)}
.trend-value{font:400 12px/1 var(--serif);color:var(--forest);white-space:nowrap}
.trend-year b.missing{height:2px;background:repeating-linear-gradient(90deg,#ccd2c7,#ccd2c7 2px,transparent 2px,transparent 4px)}
.trend-year span{font:10px/1.2 var(--sans);color:var(--muted);text-align:center;white-space:nowrap}
/* Narrow screens: label every third year counted back from the latest; the table keeps every value. */
@media(max-width:560px){.trend-year:not(:nth-last-child(3n+1)) span{visibility:hidden}}
.trend details{margin-top:20px;border-top:1px solid var(--line);padding-top:2px;font-size:12px}.trend summary{padding:10px 0;cursor:pointer}.trend table{width:100%;border-collapse:collapse;text-align:left}
.trend th,.trend td{padding:8px;border-bottom:1px solid var(--line)}
.source-details{margin:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 0;font-size:13px}
.source-details summary{font-weight:600;color:var(--forest);cursor:pointer;padding:10px 0}.source-details p{margin:12px 0}.source-details ul{padding-left:18px}
.closing{border-top:1px solid var(--line);padding:50px 0 65px;display:grid;gap:10px}
.closing p{font:400 clamp(26px,3.4vw,45px)/1.2 var(--serif);color:var(--forest);margin:0}
.closing small{color:var(--muted)}
/* Fixed height: filtering the list must not re-centre (shift) the dialog. */
.crop-dialog{border:0;padding:0;width:min(700px,calc(100vw - 22px));height:min(88vh,900px);max-height:min(88vh,900px);background:var(--paper);box-shadow:0 28px 70px #0c1f163d;color:var(--ink)}
.crop-dialog::backdrop{background:rgba(9,30,16,.62)}
.dialog-top{display:flex;align-items:start;justify-content:space-between;padding:24px 28px 10px;gap:20px}
.dialog-top h2{font-size:clamp(33px,5vw,54px)}#closeCrop{background:none;border:1px solid var(--line);min-height:44px;padding:8px 14px;color:var(--forest)}
.search-label{display:grid;gap:6px;font-size:12px;color:var(--muted);padding:0 28px}
.search-label input{width:100%;padding:12px;border:1px solid var(--line);border-radius:0;background:white;min-height:48px;color:var(--forest);font-size:16px}
.crop-count{margin:9px 28px 0;font-size:12px;color:var(--muted)}
.crop-dialog[open]{display:flex;flex-direction:column}
.crop-list{padding:12px 28px 28px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:3px;flex:1;min-height:0;overflow-y:auto}
.crop-list .cal-empty{grid-column:1/-1}
.crop-choice{display:flex;align-items:center;gap:12px;border:1px solid transparent;background:#e8ede5;color:var(--forest);text-align:left;padding:12px;min-height:55px}
.crop-choice:hover,.crop-choice[aria-current="true"]{border-color:var(--forest);background:#dbe6da}
.crop-choice svg{width:28px;height:28px;flex:none;--ci-fill:#f5f2ea}
.crop-choice span{font-weight:550;font-size:13px}
.nojs{padding:20px;background:#fff4dc}
@media(max-width:900px){
 .opening{gap:30px;grid-template-columns:.9fr 1.1fr}
 .chapter-top{align-items:start;flex-direction:column}.map-layout{gap:34px}
}
@media(max-width:700px){
 main{padding:var(--cv-shell-offset,64px) 17px 0}.opening{margin-top:0}
 .opening{display:flex;flex-direction:column;gap:0;padding:0 0 43px}
 .opening-copy{display:contents}.opening .eyebrow{order:0;align-self:stretch;margin:10px 0 0}
 h1{order:1;align-self:stretch;font-size:clamp(52px,13vw,82px);margin:14px 0}
 .opening .lede{order:2;align-self:stretch;font-size:18px;margin-bottom:10px}
 .portrait-wrap{order:3;width:100%;max-width:490px;margin:8px 0 12px;align-self:center}
 .plate-art{aspect-ratio:1.5}.plate-basis{font-size:13px}
 .choice-row{order:4;align-self:stretch;margin:10px 0 18px}.choose-btn{flex:1;min-width:145px}.district-field{flex:1;min-width:140px}
 .crop-facts{order:5;align-self:stretch}.opening-note{order:6;align-self:stretch}.chapters{order:7;align-self:stretch;margin-top:12px}
 .chapter{padding:43px 0 48px}.chapter-top{gap:9px}
 h2{font-size:38px}.cal-row{grid-template-columns:130px minmax(620px,1fr);min-width:750px}
 .cal-label{font-size:11px}.cal-scroll{scrollbar-width:thin}
 .cal-record{font-size:12px;gap:7px}.cal-mini{flex-basis:34%;min-width:70px}.cal-source-link{font-size:11px}
 #fullYear{display:inline-block}
 .calendar-stage.is-full .cal-row{min-width:0;grid-template-columns:86px minmax(0,1fr)}
 .calendar-stage.is-full .cal-axis .cal-plot span{font-size:8px;overflow:hidden;white-space:nowrap}
 .calendar-stage.is-full .cal-label{font-size:10px}
 .map-layout{grid-template-columns:1fr}.map-frame{min-height:0;padding:0}
 .month-reading__list{grid-template-columns:1fr}.month-reading__head strong{font-size:21px}
 .production-head{grid-template-columns:1fr;gap:10px}.secondary-numbers{grid-template-columns:1fr 1fr}.secondary-numbers div{display:grid}
 .chapter-footer{align-items:start;flex-direction:column}
 .crop-list{grid-template-columns:1fr}
}
@media(max-width:390px){.month-controls{width:100%}.month-controls label{flex:1}.month-controls select{width:100%}.secondary-numbers{grid-template-columns:1fr 1fr}.crop-facts strong{font-size:13px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
