/* Панель этапа, собранная из случаев (tools/build_stage_panels.py). Всё под .pz и .pz-drawer.
   Три варианта подачи одних и тех же блоков: data-v="a" сводка, "b" по шагам весны, "c" наглядно. */
.pz,.pz-drawer{--st-swell:#b98a74;--st-open:#86ad5a;--st-shoot:#3f7a35;--o-ok:var(--ok);--o-part:var(--mid);--o-dead:var(--bad);--o-split:#5d7194;--o-unk:var(--few);--o-late:#c98f12;}
.js .panel.pz:not([data-hide]),.panel.pz{display:block;}
.js .panel.pz[data-hide]{display:none;}

/* шапка и переключатель вариантов */
.pz-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 24px;}
.pz-switch{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px;border-radius:16px;background:var(--sel);border:1px solid var(--border-subtle);box-shadow:0 1px 0 rgb(255 255 255 / .6) inset;}
.pz-switch>span{font:600 11.5px/1.2 var(--sans);letter-spacing:.07em;text-transform:uppercase;color:var(--text-primary);padding:0 8px 0 6px;}
.pz-switch button{border:0;border-radius:11px;padding:9px 14px;background:transparent;font:500 14.5px/1 var(--sans);color:var(--ink);cursor:pointer;}
.pz-switch button b{display:inline-grid;place-items:center;width:20px;height:20px;margin-right:4px;border-radius:50%;background:rgb(255 255 255 / .7);font:600 12px/1 var(--sans);}
.pz-switch button:hover{background:rgb(255 255 255 / .55);}
.pz-switch button[aria-pressed=true]{background:var(--ink);color:#fff;}
.pz-switch button[aria-pressed=true] b{background:rgb(255 255 255 / .18);color:#fff;}
.pz-lead{margin:22px 0 24px;font:400 30px/1.28 var(--serif);color:var(--ink);max-width:30em;}

/* общие элементы */
.pz-grid{display:grid;gap:18px;align-items:start;}
.pz-c{background:var(--paper);border:1px solid var(--rule);border-radius:18px;padding:20px 22px;min-width:0;}
.pz-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:0 0 10px;}
.pz-h h4{font:400 26px/1.15 var(--serif);margin:0;}
.pz-time{display:none;width:100%;font:600 11.5px/1.3 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);}
.pz-n{font:500 12.5px/1 var(--sans);color:var(--ink2);background:var(--soft);border-radius:999px;padding:5px 10px;white-space:nowrap;}
.pz-text{margin:0 0 12px;font-size:16px;line-height:1.55;max-width:44em;}
.pz-aside{font-size:14.5px;color:var(--ink2);}
.pz-cap{margin:8px 0 0;font-size:13px;color:var(--ink3);}
.pz-big{font:400 30px/1 var(--serif);margin-right:4px;}
.pz-sum{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:10px;}
.pz-sum li{position:relative;padding-left:20px;font-size:16px;line-height:1.5;}
.pz-sum li::before{content:"";position:absolute;left:3px;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--leaf);}
.pz-c h5{margin:16px 0 6px;font:600 13px/1.3 var(--sans);color:var(--ink2);}
.pz-c h5 small,.pz-wl small,.pz-ladder small{font-weight:400;color:var(--ink3);}
.pz-d{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--o-unk);flex:none;}
.pz-d.ok{background:var(--o-ok);}.pz-d.part{background:var(--o-part);}.pz-d.dead{background:var(--o-dead);}.pz-d.split{background:var(--o-split);}
.pz-d.swell{background:var(--st-swell);}.pz-d.open{background:var(--st-open);}.pz-d.shoot{background:var(--st-shoot);}.pz-d.late{background:var(--o-late);}.pz-d.bad{background:var(--o-dead);}
.pz-d.cov{background:none;outline:1.5px dashed var(--ink3);outline-offset:-1px;}
.pz-d.wh{width:18px;height:3px;border-radius:2px;background:var(--ink3);opacity:.5;}
.pz-legend{display:flex;flex-wrap:wrap;gap:4px 16px;margin:10px 0 0;padding:0;list-style:none;font-size:12.5px;color:var(--ink2);}
.pz-legend li{display:flex;align-items:center;gap:6px;}

/* случай: одна строка-предложение */
.pz-case{all:unset;box-sizing:border-box;width:100%;display:grid;grid-template-columns:12px minmax(0,1fr);gap:10px;align-items:baseline;padding:9px 10px;border-radius:10px;cursor:pointer;line-height:1.45;}
.pz-case .pz-d{transform:translateY(1px);}
.pz-case b{display:block;font:600 13px/1.35 var(--sans);color:var(--ink2);}
.pz-case .t{display:block;font-size:15px;color:var(--ink);}
.pz-case .m{display:block;font-size:12.5px;color:var(--ink3);}
.pz-case:hover,.pz-case:focus-visible,.pz-case.is-hl{background:var(--soft);}
.pz-case:focus-visible{outline:2px solid var(--grape);outline-offset:-2px;}
.pz-list{list-style:none;margin:0;padding:0;}
.pz-keys{display:grid;gap:6px;margin-top:4px;}
.pz-keys h5{margin:4px 0 2px;}
.pz-keys .pz-case{background:var(--bg);border:1px solid var(--rule);}
.pz-link{all:unset;cursor:pointer;text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:3px;}
.pz-link:hover{text-decoration-color:var(--ink3);}
.pz-facts{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:14.5px;}
.pz-facts small{color:var(--ink3);}
details.pz-all{margin-top:12px;border-top:1px solid var(--rule);padding-top:10px;}
details.pz-all>summary{display:inline-flex;align-items:center;gap:8px;cursor:pointer;list-style:none;font:600 14px/1.2 var(--sans);color:var(--ink);padding:8px 12px;border:1px solid var(--rule);border-radius:10px;background:var(--paper);}
details.pz-all>summary::-webkit-details-marker{display:none;}
details.pz-all>summary::after{content:"";width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);}
details.pz-all[open]>summary::after{transform:rotate(-135deg) translateY(-1px);}
details.pz-all[open]>summary{margin-bottom:6px;}

/* шкала состояний */
.pz-chart{--yw:48px;margin:6px 0 0;}
.pz-ticks,.pz-lrow{display:grid;grid-template-columns:var(--yw) minmax(0,1fr);}
.pz-ticks>div{position:relative;height:22px;border-bottom:1px solid var(--rule);}
.pz-ticks>div span{position:absolute;bottom:5px;transform:translateX(-50%);font:12px/1 var(--sans);color:var(--ink3);white-space:nowrap;}
.pz-lrow{border-bottom:1px dashed var(--rule);}
.pz-yr{font:500 13px/1 var(--sans);color:var(--ink2);padding-top:14px;}
.pz-track{position:relative;min-height:40px;}
.pz-track i.g{position:absolute;top:0;bottom:0;width:1px;background:var(--rule);opacity:.6;}
.pz-pt{--c:var(--o-unk);position:absolute;width:15px;height:15px;margin:0;padding:0;border-radius:50%;border:2px solid var(--paper);background:var(--c);transform:translate(-50%,-50%);cursor:pointer;z-index:2;box-shadow:0 0 0 1px rgb(0 0 0 / .1);}
.pz-pt.swell,.pz-wh.swell{--c:var(--st-swell);}.pz-pt.open,.pz-wh.open{--c:var(--st-open);}.pz-pt.shoot,.pz-wh.shoot{--c:var(--st-shoot);}
.pz-pt.cov{outline:1.5px dashed var(--c);outline-offset:2px;}
.pz-pt:hover,.pz-pt:focus-visible,.pz-pt.is-hl{transform:translate(-50%,-50%) scale(1.25);box-shadow:0 0 0 3px rgb(30 28 25 / .14);}
.pz-wh{position:absolute;height:3px;border-radius:2px;background:var(--c);opacity:.35;transform:translateY(-50%);z-index:1;}
.pz-lbl{position:absolute;transform:translate(13px,-50%);font:12px/1.15 var(--sans);color:var(--ink2);white-space:nowrap;pointer-events:none;}
.pz-lbl.l{transform:translate(calc(-100% - 13px),-50%);}
.pz-nb{margin-top:16px;padding-top:14px;border-top:1px solid var(--rule);}
.pz-nb>p{margin:0;font-size:16px;line-height:1.5;}

/* стена точек */
.pz-wall{display:none;margin:4px 0 6px;}
.pz-wrow{display:grid;grid-template-columns:200px minmax(0,1fr);gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--rule);}
.pz-wl{font-size:14px;color:var(--ink2);}
.pz-dots{display:flex;flex-wrap:wrap;gap:6px;}
.pz-dot{width:22px;height:22px;margin:0;padding:0;border:2px solid var(--paper);border-radius:50%;background:var(--o-unk);cursor:pointer;box-shadow:0 0 0 1px rgb(0 0 0 / .08);}
.pz-dot.ok{background:var(--o-ok);}.pz-dot.part{background:var(--o-part);}.pz-dot.dead{background:var(--o-dead);}.pz-dot.split{background:var(--o-split);}
.pz-dot:hover,.pz-dot:focus-visible,.pz-dot.is-hl{transform:scale(1.2);box-shadow:0 0 0 3px rgb(30 28 25 / .16);}

/* плитки ситуаций */
.pz-ladder{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px;}
.pz-ladder li{padding:5px 10px;border-radius:999px;background:var(--soft);font-size:13.5px;}
.pz-ladder b{font-weight:600;}

/* карта */
.pz-map h4{font:400 20px/1.2 var(--serif);margin:0 0 8px;}
.pz-mapbox .by-map{min-height:0;border-radius:12px;}
.pz-mapbox .by-map__region{pointer-events:none;}
.pz-mapbox .by-map__marker{cursor:pointer;--marker-color:#6f5a8e;}
.pz-mapbox .by-map__marker circle{r:17px;fill:var(--marker-color);stroke:#fff;stroke-width:1.5;}
.pz-mapbox .by-map__marker.is-cluster circle{r:23px;}
.pz-mapbox .by-map__cluster-count{font:600 21px/1 var(--sans);fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;}
.pz-mapbox .by-map__marker.pz-hl circle{stroke:var(--text-primary);stroke-width:3;}
.pz-method{grid-area:method;padding:4px 2px 0;font-size:13.5px;color:var(--ink3);}
.pz-method p{margin:0;max-width:60em;}

/* А · Сводка: выводы, по три показательных случая, остальное свёрнуто */
.pz[data-v=a] .pz-grid{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-areas:"when when when when map map" "winter winter winter frost frost frost" "uncover uncover forecast forecast repl repl" "method method method method method method";}
.pz[data-v=a] .pz-when .pz-text{font-size:17px;}
.pz[data-v=a] .pz-tile{background:var(--bg);}
.pz[data-v=a] .pz-map{align-self:stretch;}

/* Б · По шагам весны: одна колонка, шаги по порядку, случаи свёрнуты */
.pz[data-v=b] .pz-grid{grid-template-columns:minmax(0,1fr);max-width:860px;gap:0;counter-reset:pzstep;grid-template-areas:"when" "uncover" "winter" "forecast" "frost" "repl" "map" "method";}
.pz[data-v=b] .pz-step{position:relative;counter-increment:pzstep;border:0;border-radius:0;background:none;padding:0 0 34px 66px;}
.pz[data-v=b] .pz-step::before{content:counter(pzstep);position:absolute;left:0;top:0;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:var(--leaf);color:#fff;font:400 22px/1 var(--serif);}
.pz[data-v=b] .pz-step::after{content:"";position:absolute;left:20px;top:50px;bottom:8px;width:2px;background:var(--rule);}
.pz[data-v=b] .pz-time{display:block;}
.pz[data-v=b] .pz-h h4{font-size:30px;}
.pz[data-v=b] .pz-keys,.pz[data-v=b] .pz-wall{display:none;}
.pz[data-v=b] .pz-map{margin-left:66px;max-width:420px;}
.pz[data-v=b] .pz-method{margin-left:66px;margin-top:14px;}

/* В · Наглядно: каждый случай — точка, сгруппированы по условиям */
.pz[data-v=c] .pz-grid{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-areas:"when when when when map map" "winter winter winter frost frost frost" "uncover uncover forecast forecast repl repl" "method method method method method method";}
.pz[data-v=c] .pz-wall{display:block;}
.pz[data-v=c] .pz-keys{display:none;}
.pz[data-v=c] .pz-sum li{font-size:15px;}
.pz[data-v=c] .pz-tile .pz-text{font-size:15px;}
.pz[data-v=c] .pz-map{align-self:stretch;}
.pz:not([data-v=c]) .pz-wall{display:none;}

/* карточка случая */
.pz-veil{position:fixed;inset:0;background:rgb(30 28 25 / .32);opacity:0;pointer-events:none;transition:opacity .2s;z-index:60;}
.pz-drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,100vw);background:var(--paper);box-shadow:-12px 0 40px rgb(30 28 25 / .16);transform:translateX(102%);transition:transform .24s ease;z-index:61;display:flex;flex-direction:column;}
.pz-open .pz-veil{opacity:1;pointer-events:auto;}
.pz-open .pz-drawer{transform:none;}
.pz-dhead{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 22px 0;}
.pz-kick{display:flex;flex-wrap:wrap;gap:6px;}
.pz-kick span{display:inline-flex;align-items:center;gap:6px;font:500 12px/1 var(--sans);padding:6px 10px;border-radius:999px;background:var(--soft);color:var(--ink2);}
.pz-x{border:0;background:none;font-size:26px;line-height:1;cursor:pointer;color:var(--ink2);padding:4px 6px;}
.pz-dbody{padding:12px 22px 22px;overflow:auto;flex:1;}
.pz-dbody h3{font:400 28px/1.18 var(--serif);margin:6px 0 16px;}
.pz-dl{display:grid;grid-template-columns:118px minmax(0,1fr);gap:9px 14px;margin:0;padding:14px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);font-size:14.5px;}
.pz-dl dt{color:var(--ink3);font:italic 15px/1.4 var(--serif);}
.pz-dl dd{margin:0;}
.pz-dl dd small{display:block;color:var(--ink3);font-size:12.5px;}
.pz-q{margin:18px 0 0;}
.pz-q h6{margin:0 0 8px;font:400 17px/1.3 var(--serif);}
.pz-q blockquote{margin:0;padding:2px 0 2px 16px;border-left:3px solid var(--rule);font:italic 17px/1.45 var(--serif);color:var(--ink);}
.pz-warn{margin:18px 0 0;padding:12px 14px;border-radius:12px;background:var(--mid-bg);font-size:13.5px;color:var(--text-primary);}
.pz-priv{margin:16px 0 0;font-size:12px;color:var(--ink3);}
.pz-dfoot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 22px 16px;border-top:1px solid var(--rule);}
.pz-dfoot span{font-size:12.5px;color:var(--ink3);}
.pz-dfoot button{border:1px solid var(--rule);background:var(--paper);border-radius:10px;padding:8px 12px;font:500 13.5px/1 var(--sans);cursor:pointer;}
.pz-dfoot button:disabled{opacity:.4;cursor:default;}
/* лента этапов: при прокрутке картинка уезжает, полоса с названиями прилипает к верху и работает как меню (stage-panel.js) */
.season{--nav-bar:56px;}
.season .panels>.panel{scroll-margin-top:calc(var(--nav-bar) + 12px);}
.season.nav-sticky .strip{position:sticky;top:var(--nav-top,0px);z-index:30;background:var(--paper);transition:clip-path .18s ease;}
body:not(.atlas-paper) .season.nav-sticky{overflow:clip;}
.season.nav-stuck .strip{clip-path:inset(0 0 var(--nav-cut,0px) 0);}
.season.nav-sticky .stg small{transition:opacity .15s;}
.season.nav-sticky .tabs{transition:transform .18s ease;}
.season.nav-stuck .tabs{transform:translateY(6px);}
.season.nav-stuck .stg small{opacity:0;}
/* прилипшая полоса низкая (--nav-bar): название этапа — в одну строку, кнопка по ширине текста, центр на точке */
.season.nav-stuck .stg{width:auto;white-space:nowrap;}
.season.nav-stuck .tabs::after{content:"";position:absolute;left:0;right:0;top:calc(var(--nav-bar) - 7px);height:1px;background:var(--rule);}

@media (max-width:1060px){
 .pz[data-v=a] .pz-grid,.pz[data-v=c] .pz-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"when when" "winter winter" "frost frost" "uncover forecast" "repl map" "method method";}
}
@media (max-width:760px){
 .pz-switch{width:100%;}
 .pz-switch>span{width:100%;padding:4px 6px 2px;}
 .pz-switch button{flex:1;padding:9px 6px;font-size:13.5px;}
 .pz-lead{font-size:23px;margin:16px 0 18px;}
 .pz-c{padding:16px;}
 .pz-h h4{font-size:23px;}
 .pz[data-v=a] .pz-grid,.pz[data-v=c] .pz-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"when" "winter" "frost" "uncover" "forecast" "repl" "map" "method";}
 .pz[data-v=b] .pz-step{padding-left:0;padding-top:52px;}
 .pz[data-v=b] .pz-step::after{display:none;}
 .pz[data-v=b] .pz-map,.pz[data-v=b] .pz-method{margin-left:0;}
 .pz-lbl{display:none;}
 .pz-chart{--yw:38px;}
 .pz-wrow{grid-template-columns:minmax(0,1fr);}
 .pz-drawer{top:auto;width:100vw;height:88vh;border-radius:18px 18px 0 0;transform:translateY(102%);}
 .pz-dl{grid-template-columns:96px minmax(0,1fr);}
}
@media print{.pz-switch,.pz-map{display:none;}.pz details.pz-all>*{display:block;}.season.nav-sticky .strip{position:static;clip-path:none;}}

/* Этап блоками текста (tools/build_stage_panels.py, *.blocks.json). Всё под .sb */
.sb{--sb-pro:#4a7d32;--sb-ama:#c47a2a;--sb-row:30px;--sb-lane:14px;--sb-yw:52px;--sb-wash:232 211 160;}
.sb-block{margin:22px 0 0;padding:22px 0 0;border-top:1px solid var(--rule);}
.sb-head{display:flex;align-items:center;gap:14px;margin:0 0 8px;}
.sb-title{font:400 30px/1.15 var(--serif);margin:0;color:var(--ink);}
.sb-curl{width:74px;height:auto;opacity:.85;transform:translateY(4px);}
.sb-text{margin:0 0 16px;font:400 17px/1.55 var(--serif);color:var(--ink2);max-width:52em;}
.sb-kicker{display:flex;align-items:center;gap:8px;margin:0 0 6px;font:600 11px/1.3 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--brand-coral);}
.sb-kicker::after{content:"";flex:0 0 26px;height:1px;background:currentColor;opacity:.45;}

/* график: строка — год, маркер-почка — наблюдение */
.sb-chart{margin:0 0 20px;padding:14px 20px 12px;background:var(--paper);border:1px solid var(--rule);border-radius:16px;}
.sb-plot{position:relative;}
.sb-body{position:relative;padding-top:8px;}
.sb-bg{position:absolute;top:0;bottom:0;left:var(--sb-yw);right:0;pointer-events:none;}
/* период этапа — ровная тонированная полоса с подписью сверху */
.sb-band{position:absolute;top:0;bottom:0;background:rgb(239 227 198 / .55);border-left:1px solid rgb(201 170 104 / .35);border-right:1px solid rgb(201 170 104 / .35);}
.sb-band span{position:absolute;left:0;right:0;top:6px;text-align:center;font:600 10.5px/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand-coral);white-space:nowrap;}
.sb-zone{position:absolute;top:8px;bottom:0;border-radius:8px 8px 0 0;background:rgb(110 140 70 / .11);box-shadow:inset 1px 0 rgb(110 140 70 / .35),inset -1px 0 rgb(110 140 70 / .35);}
.sb-gl{position:absolute;top:8px;bottom:0;width:0;border-left:1px dotted rgb(201 188 160 / .55);}
.sb-gl.major{border-left:1px solid rgb(201 188 160 / .75);}
/* все строки одной высоты: года идут с равным шагом; --up/--dn — дорожки, занятые выше и ниже нитки (на .sb-body) */
.sb-row{--mid:calc(var(--sb-row) / 2 + var(--up,0) * var(--sb-lane));display:grid;grid-template-columns:var(--sb-yw) minmax(0,1fr);align-items:start;height:calc(var(--sb-row) + (var(--up,0) + var(--dn,0)) * var(--sb-lane));}
.sb-row>.sb-yr{padding-top:calc(var(--mid) - 7px);}
.sb-yr{font:400 14px/1 var(--serif);color:var(--ink2);font-variant-numeric:lining-nums tabular-nums;text-align:right;padding-right:14px;}
.sb-track{position:relative;height:100%;}
/* ровная нитка года, на ней почки */
.sb-track::before{content:"";position:absolute;left:0;right:0;top:var(--mid);border-top:1px solid rgb(201 188 160 / .45);}
/* почка: капля остриём вверх */
.sb-dot{position:absolute;top:calc(var(--mid) + var(--dy) * var(--sb-lane));width:12px;height:12px;margin:0;padding:0;border:0;
 border-radius:50% 0 50% 50%;transform:translate(-50%,-42%) rotate(-45deg);background:var(--c);
 box-shadow:0 0 0 2px var(--paper);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;--c:var(--sb-pro);z-index:1;}
.sb-dot.community{--c:var(--sb-ama);}
/* Исход зимовки: цвета заданы явно — внутри строки графика --mid занят под высоту. */
.sb-dot.out-ok{--c:#3d8a4e;}
.sb-dot.out-part{--c:#c98f12;}
.sb-dot.out-bad{--c:#c5523a;}
.sb-dot.gh{border-radius:2.5px;transform:translate(-50%,-50%);}
.sb-dot.sleep{background:var(--paper);box-shadow:inset 0 0 0 2px var(--c),0 0 0 2px var(--paper);}
.sb-dot.after{background:radial-gradient(circle,var(--paper) 0 2.2px,var(--c) 2.8px);}
.sb-dot:hover,.sb-dot:focus-visible,.sb-dot.on{transform:translate(-50%,-42%) rotate(-45deg) scale(1.45);z-index:3;outline:0;box-shadow:0 0 0 2px var(--paper),0 0 0 3.5px var(--c);}
.sb-dot.gh:hover,.sb-dot.gh:focus-visible,.sb-dot.gh.on{transform:translate(-50%,-50%) scale(1.45);}
.sb-dot.sleep:hover,.sb-dot.sleep:focus-visible,.sb-dot.sleep.on{box-shadow:inset 0 0 0 2px var(--c),0 0 0 2px var(--paper),0 0 0 3.5px var(--c);}
/* календарная линейка */
.sb-axis{display:grid;grid-template-columns:var(--sb-yw) minmax(0,1fr);margin-top:4px;border-top:1px solid rgb(201 188 160 / .75);}
.sb-ticks{position:relative;height:24px;}
.sb-ticks span{position:absolute;top:5px;white-space:nowrap;}
.sb-ticks .m{transform:translateX(5px);font:italic 400 14px/1 var(--serif);color:var(--ink2);}
.sb-ticks .m::before{content:"";position:absolute;left:-5px;top:-5px;height:7px;border-left:1px solid rgb(160 145 115 / .8);}
.sb-winter .sb-ticks .m:last-child{transform:translateX(calc(-100% - 5px));}
.sb-winter .sb-ticks .m:last-child::before{left:auto;right:-5px;}
.sb-ticks .d{transform:translateX(-50%);font:400 11px/1 var(--sans);color:var(--ink3);font-variant-numeric:tabular-nums;}
.sb-ticks.zoned{height:44px;}
.sb-ticks .z{top:0;bottom:0;border-left:1px solid rgb(110 140 70 / .55);border-right:1px solid rgb(110 140 70 / .55);pointer-events:none;}
.sb-ticks .z b{position:absolute;bottom:2px;font:500 12px/1 var(--sans);color:var(--text-primary);white-space:nowrap;}
.sb-ticks .z b:first-child{right:100%;margin-right:5px;}
.sb-ticks .z b:last-child{left:100%;margin-left:5px;}
.sb-tip{position:absolute;z-index:5;width:max-content;max-width:280px;padding:9px 12px;border-radius:12px;background:var(--brand-teal-deep);color:#fff;
 font:400 13.5px/1.4 var(--sans);box-shadow:0 8px 24px rgb(30 28 25 / .22);pointer-events:none;transform:translate(-50%,calc(-100% - 12px));}
.sb-tip b{display:block;font:400 15px/1.3 var(--serif);}
.sb-tip small{display:block;margin-top:3px;color:rgb(255 255 255 / .6);font-size:12px;}
.sb-chart figcaption{margin-top:10px;padding-top:9px;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 24px;}
.sb-chart figcaption p{margin:0;font-size:12.5px;line-height:1.4;color:var(--ink3);max-width:46em;}
.sb-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 16px;font:400 13px/1.3 var(--sans);color:var(--ink2);}
.sb-legend li{display:flex;align-items:center;gap:7px;}
.sb-key{display:inline-block;flex:none;width:9px;height:9px;border-radius:50% 0 50% 50%;transform:rotate(-45deg);background:var(--sb-pro);}
.sb-key.community{background:var(--sb-ama);}
.sb-key.gh{border-radius:2px;transform:none;background:var(--ink3);}
.sb-key.sleep{background:transparent;box-shadow:inset 0 0 0 1.6px var(--ink3);}
.sb-key.after{background:radial-gradient(circle,var(--paper) 0 1.5px,var(--ink3) 2px);}
.sb-key.out-ok{background:var(--brand-teal);}
.sb-key.out-part{background:var(--brand-coral);}
.sb-key.out-bad{background:var(--brand-coral);}
.sb-key.vineby{border-radius:2px;transform:rotate(45deg);background:var(--grape,var(--brand-teal-deep));}
/* блок без наблюдений: заметка vine.farm в виде комментария, на всю ширину блока */
.sb-col.vineby{max-width:46em;padding:14px 18px 8px;border-radius:14px;background:rgb(var(--sb-wash) / .28);}
.sb-col.vineby .sb-colh{margin-bottom:4px;}

/* два столбца наблюдений */
.sb-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 36px;}
/* заголовок столбца — не заголовок документа (docs/SEO_GEO.md §3.1), цвет как у h4 из brand-ui.css */
.sb-col .sb-colh{display:flex;align-items:center;gap:9px;margin:0 0 2px;font:400 20px/1.2 var(--serif);color:var(--color-heading);}
.sb-col .sb-colh small{font:400 12.5px/1 var(--sans);color:var(--ink3);margin-left:2px;}
.sb-list{list-style:none;margin:0;padding:0;}
.js .sb-list[data-collapsed] .more{display:none;}
.sb-ob{display:grid;grid-template-columns:50px minmax(0,1fr);gap:12px;padding:9px 8px 9px 6px;margin:0 -8px 0 -6px;border-top:1px solid var(--rule);border-radius:10px;transition:background .3s ease;}
.sb-ob:first-child{border-top-color:transparent;}
.sb-ob.on{background:rgb(239 227 198 / .55);}
.sb-ob.flash{animation:sb-flash 1.6s ease;}
@keyframes sb-flash{0%,30%{background:var(--sel)}100%{background:transparent}}
.sb-date{display:flex;flex-direction:column;align-items:flex-start;line-height:1;padding-top:1px;}
.sb-date b{font:400 23px/1 var(--serif);color:var(--ink);}
.sb-date.approx b{font-size:16px;padding-top:3px;}
.sb-date>span{margin-top:2px;font:500 11.5px/1.2 var(--sans);color:var(--ink2);}
.sb-date small{margin-top:2px;font:400 11.5px/1 var(--sans);color:var(--ink3);font-variant-numeric:tabular-nums;}
.sb-col.pro .sb-date small{color:var(--sb-pro);}
.sb-col.community .sb-date small{color:var(--sb-ama);}
.sb-ot{display:block;min-width:0;position:relative;}
.sb-where{display:block;margin-bottom:6px;font:400 12.5px/1.4 var(--sans);color:var(--ink2);}
.sb-where b{font-weight:600;}
.sb-wx{display:flex;align-items:flex-start;gap:6px;margin-top:2px;}
.sb-wx svg{width:14px;height:14px;flex:none;margin-top:1px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;}
.sb-wx.warm{color:var(--brand-coral);}
.sb-wx.cold{color:var(--brand-teal);}
.sb-wx.rain{color:var(--brand-teal);}
.sb-wx.odd{color:var(--text-secondary);}
.sb-wx.gh{color:var(--text-secondary);}  /* под крышей: уличной погоды нет */
.sb-tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;background:var(--soft);font:500 11px/1.3 var(--sans);color:var(--ink2);vertical-align:1px;}
.sb-what{font-size:15px;line-height:1.45;color:var(--ink);}
.sb-more{margin:4px 0 0;padding:7px 14px;border:1px solid var(--rule);border-radius:999px;background:var(--paper);font:500 13px/1 var(--sans);color:var(--ink);cursor:pointer;}
.sb-more::after{content:" ↓";color:var(--ink3);}
.sb-more[aria-expanded=true]::after{content:" ↑";}
.sb-more:hover{background:var(--soft);}
html:not(.js) .sb-more{display:none;}

/* интересный факт и вывод — рядом */
.sb-end{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px;margin:20px 0 0;align-items:stretch;}
.sb-fact{position:relative;overflow:hidden;margin:0;padding:16px 120px 16px 20px;border-radius:16px;
 background:linear-gradient(135deg,rgb(239 232 214),rgb(236 238 216));}
.sb-art{position:absolute;right:-18px;bottom:-26px;width:132px;height:auto;opacity:.5;transform:rotate(-14deg);pointer-events:none;}
.sb-fact .sb-kicker,.sb-fact p{position:relative;}
.sb-fact p{margin:0;font:400 16px/1.5 var(--serif);color:var(--ink);}
.sb-concl{padding:16px 20px;border-radius:16px;border:1px solid var(--rule);background:var(--paper);}
.sb-concl p{margin:0;font:400 17px/1.5 var(--serif);color:var(--ink);}

@media (max-width:760px){
 .sb{--sb-yw:40px;--sb-row:28px;--sb-lane:13px;}
 .sb-block{margin-top:18px;padding-top:18px;}
 .sb-title{font-size:25px;}
 .sb-curl{width:56px;}
 .sb-text{font-size:16px;}
 .sb-chart{padding:10px 10px 8px;margin:0 -4px 18px;}
 .sb-band span{font-size:9.5px;letter-spacing:.03em;}
 .sb-ticks .d{display:none;}
 .sb-ticks .m{font-size:13px;}
 .sb-yr{font-size:13px;}
 .sb-tip{max-width:230px;}
 .sb-cols{grid-template-columns:minmax(0,1fr);gap:18px;}
 .sb-end{grid-template-columns:minmax(0,1fr);}
 .sb-fact{padding-right:44px;}
 .sb-art{width:104px;opacity:.32;bottom:-30px;}
}

/* номер блока, оглавление этапа, рисунок у заголовка */
.sb-num{flex:none;display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--brand-coral);font:italic 400 16px/1 var(--serif);color:var(--brand-coral);background:rgb(239 227 198 / .45);}
.sb-icon{width:auto;height:46px;max-width:76px;object-fit:contain;flex:none;opacity:.9;margin-left:2px;}
.sb-toc{display:flex;flex-wrap:wrap;gap:6px 8px;margin:18px 0 0;}
.sb-toc button{display:inline-flex;align-items:center;gap:8px;text-align:left;padding:6px 13px 6px 6px;border:1px solid var(--rule);border-radius:999px;background:var(--paper);font:400 14px/1.2 var(--serif);color:var(--ink);cursor:pointer;}
.sb-toc button:hover{background:var(--soft);}
/* Пустой блок: кнопка раздела серая, в блоке только строка «Наблюдений пока нет» (empty_block) */
.sb-toc button:disabled{cursor:default;opacity:.45;filter:grayscale(1);}
.sb-toc button:disabled:hover{background:var(--paper);}
.sb-none-t{margin:10px 0 0;font:400 15px/1.5 var(--sans);color:var(--text-secondary);}
.sb-toc button span{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgb(239 227 198 / .7);font:italic 400 13px/1 var(--serif);color:var(--brand-coral);}

/* случаи: место — условия — что вышло */
.sb-case{display:grid;grid-template-columns:14px minmax(0,1fr);gap:12px;padding:11px 8px 11px 6px;margin:0 -8px 0 -6px;border-top:1px solid var(--rule);}
.sb-case:first-child{border-top-color:transparent;}
.sb-out{width:9px;height:9px;margin-top:7px;border-radius:50%;background:var(--few);}
.sb-out.ok{background:var(--ok);}
.sb-out.part{background:var(--mid);}
.sb-out.bad{background:var(--bad);}
.sb-out.unk{background:transparent;box-shadow:inset 0 0 0 1.6px var(--few);}
.sb-cplace{display:block;margin-bottom:1px;padding-right:64px;font:400 17px/1.3 var(--serif);color:var(--ink);}
.sb-cplace .sb-tag{font-family:var(--sans);}
.sb-tag.ok{background:rgb(61 138 78 / .12);color:var(--text-primary);}
.sb-tag.part{background:rgb(201 143 18 / .14);color:var(--text-primary);}
.sb-tag.bad{background:rgb(197 82 58 / .12);color:var(--brand-coral);}
.sb-tag.unk{background:var(--soft);color:var(--ink3);}
.sb-case .sb-where{font-weight:500;color:var(--ink3);}
.sb-end.one{grid-template-columns:minmax(0,1fr);}
.sb-end.one .sb-concl{max-width:52em;}

/* климатический контекст: годы с майским заморозком */
.sb-climate{margin:0;padding:16px 20px;border-radius:16px;background:linear-gradient(135deg,var(--surface-mint),var(--surface-card));border:1px solid var(--border-subtle);}
.sb-climate .sb-kicker{color:var(--text-secondary);}
.sb-cl-cap{margin:0 0 8px;font-size:13px;line-height:1.4;color:var(--ink3);}
.sb-cl{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:6px;}
.sb-cl li{display:grid;grid-template-columns:92px minmax(0,1fr) 62px;align-items:center;gap:10px;}
.sb-cl-place{font:400 15px/1.2 var(--serif);}
.sb-cl-bar{display:grid;grid-template-columns:repeat(26,minmax(0,1fr));gap:2px;}
.sb-cl-bar i{height:12px;border-radius:2px;background:var(--surface-mint);}
.sb-cl-bar i.on{background:var(--brand-teal);}
.sb-cl-n{font:400 13px/1 var(--sans);color:var(--ink3);white-space:nowrap;}
.sb-cl-n b{font:400 17px/1 var(--serif);color:var(--ink);}
.sb-climate>p:not(.sb-cl-cap){margin:0;font:400 15px/1.5 var(--serif);color:var(--ink2);}

@media (max-width:760px){
 .sb-toc button{font-size:13.5px;}
 .sb-icon{height:38px;max-width:60px;}
 .sb-cplace{font-size:16px;}
 .sb-cl li{grid-template-columns:76px minmax(0,1fr) 54px;gap:8px;}
 .sb-climate{padding:14px 14px;}
}

/* климат по областям: строка — область, полоса — 8 лет из 10, кружок — середина ряда */
.sb-oblasts{--on:118px;--ov:150px;--og:16px;margin:22px 0 0;padding:16px 20px 12px;border-radius:16px;border:1px solid var(--border-subtle);background:linear-gradient(180deg,var(--surface-card),var(--surface-card));}
.sb-oblasts .sb-kicker{color:var(--text-secondary);}
.sb-ob-text{margin:0 0 12px;font:400 15px/1.5 var(--serif);color:var(--ink2);max-width:58em;}
.sb-ob-plot{position:relative;}
.sb-ob-grid{position:absolute;top:0;bottom:30px;left:calc(var(--on) + var(--og));right:calc(var(--ov) + var(--og));pointer-events:none;}
.sb-ob-rows{list-style:none;margin:0;padding:0;position:relative;}
.sb-ob-row{display:grid;grid-template-columns:var(--on) minmax(0,1fr) var(--ov);gap:var(--og);align-items:center;min-height:40px;padding:6px 0;border-top:1px solid rgb(201 205 200 / .45);}
.sb-ob-row:first-child{border-top:0;}
.sb-ob-name{font:400 16px/1.2 var(--serif);color:var(--ink);}
.sb-ob-track{position:relative;height:22px;}
.sb-ob-track::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:1px solid rgb(180 190 188 / .5);}
.sb-ob-band{position:absolute;top:4px;bottom:4px;border-radius:999px;}
.sb-ob-band.warm{background:rgb(196 122 42 / .2);}
.sb-ob-band.frost{background:rgb(108 147 166 / .25);}
.sb-ob-link{position:absolute;top:50%;height:2px;margin-top:-1px;background:rgb(196 122 42 / .55);}
.sb-ob-pt{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px var(--surface-card);}
.sb-ob-pt.t5{background:var(--surface-card);box-shadow:inset 0 0 0 2px var(--brand-coral),0 0 0 2px var(--surface-card);}
.sb-ob-pt.t10{background:var(--brand-coral);}
.sb-ob-pt.fr{background:var(--brand-teal);}
.sb-ob-val{display:flex;flex-direction:column;gap:2px;line-height:1.2;}
.sb-ob-val b{font:400 16px/1.2 var(--serif);color:var(--ink);}
.sb-ob-val small{font:400 12px/1.25 var(--sans);color:var(--ink3);}
.sb-ob-may{margin-top:4px;max-width:132px;}
.sb-ob-may i{height:6px;}
.sb-ob-may i.on{background:var(--brand-teal);}
.sb-ob-axis{display:grid;grid-template-columns:var(--on) minmax(0,1fr) var(--ov);gap:var(--og);border-top:1px solid rgb(180 190 188 / .7);margin-top:2px;}
.sb-oblasts figcaption{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-subtle);display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 24px;}
.sb-oblasts figcaption p{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink3);max-width:52em;}
.sb-ok{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none;}
.sb-ok.t5{box-shadow:inset 0 0 0 2px var(--brand-coral);}
.sb-ok.t10{background:var(--brand-coral);}
.sb-ok.fr{background:var(--brand-teal);}
.sb-ok.band{width:20px;height:8px;border-radius:999px;}
.sb-ok.band.warm{background:rgb(196 122 42 / .25);}
.sb-ok.band.frost{background:rgb(108 147 166 / .3);}

@media (max-width:760px){
 .sb-oblasts{--on:86px;--ov:0px;--og:8px;padding:14px 12px 10px;}
 .sb-ob-name{font-size:14px;}
 .sb-ob-row{grid-template-columns:var(--on) minmax(0,1fr);padding:6px 0;}
 .sb-ob-val{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:2px 8px;margin:-2px 0 2px;}
 .sb-ob-val b{font-size:14px;}
 .sb-ob-may{flex-basis:100%;max-width:none;}
 .sb-ob-axis{grid-template-columns:var(--on) minmax(0,1fr);}
 .sb-ob-axis>span:last-child{display:none;}
 .sb-ob-grid{display:none;}
}

/* климат своей области: полоса устойчивых +10 °C на строке года, сравнение у наблюдения, сводка */
.sb-row.empty .sb-yr{color:var(--ink3);opacity:.6;}
.sb-tip .c{display:block;margin-top:5px;padding-top:5px;border-top:1px solid rgb(255 255 255 / .18);color:var(--brand-coral);font-size:12.5px;}
.sb-climline{margin:-6px 0 20px;padding:10px 14px;border-radius:12px;background:rgb(196 122 42 / .08);font:400 15.5px/1.5 var(--serif);color:var(--ink);}
.sb-climline b{font-weight:600;}
.sb-climline a,.sb-cl-link a{color:var(--brand-coral);text-decoration:underline;text-underline-offset:3px;white-space:nowrap;}
.sb-cl-link{margin:8px 0 0!important;font:400 14px/1.4 var(--sans)!important;}
.sb-tip.below{transform:translate(-50%,12px);}
.sb-xref{margin:18px 0 0;padding:10px 14px;border-radius:12px;background:var(--soft);font:400 15px/1.5 var(--serif);color:var(--ink2);}
.sb-xref a{color:var(--brand-coral);text-decoration:underline;text-underline-offset:3px;white-space:nowrap;}
.sb-extra{grid-column:1/-1;margin-top:12px;}

/* Шапка этапа — она же заголовок первого блока: строка блока 1 (h4) и чьи наблюдения; сам блок 1 без заголовка */
.sb .sb-lede{margin:12px 0 0;font:400 22px/1.3 var(--serif);color:var(--ink);}
.sb .sb-src{margin:4px 0 0;font:400 14px/1.4 var(--sans);color:var(--ink3);}
/* в конце этапа: откуда погода в строках наблюдений, со ссылками на страницы климата */
.sb .sb-wxsrc{grid-column:1/-1;margin:24px 0 0;padding-top:14px;border-top:1px solid var(--rule);font:400 13px/1.45 var(--sans);color:var(--ink3);}
.sb .sb-wxsrc a{color:var(--ink2);}
.sb-toc + .sb-block{margin-top:20px;padding-top:0;border-top:0;}
@media (max-width:760px){
 .sb .sb-lede{font-size:19px;}
 .sb .sb-src{font-size:13px;}
}

/* Бирюзовая заметка vine.farm в конце каждого блока: ценное замечание из описаний сорта и агротехники */
/* Комментарий vine.farm: мятная бумага, утверждённый карандашный знак A без рамки
   (2026-11-05), разделитель слева, гравюра виноградной лозы справа — небольшая, в верхнем углу: главное здесь текст
   (хозяин 2026-11-05). */
.sb-wise{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:62px 1px minmax(0,1fr);gap:0 28px;align-items:center;
 margin:26px 0 6px;padding:26px 270px 26px 32px;border-radius:16px;border:1px solid var(--border-subtle);color:var(--text-primary);
 background:url(vineby-vine.webp) right 10px top 8px/260px auto no-repeat,
  url(vineby-paper.svg) 0 0/240px 240px,
  radial-gradient(120% 140% at 30% 40%,var(--surface-mint),var(--surface-mint) 70%,var(--surface-mint));
 box-shadow:inset 0 1px 0 rgb(255 255 255 / .85),inset 0 0 0 4px rgb(255 255 255 / .25),0 1px 2px rgb(40 70 58 / .08),0 10px 24px -16px rgb(40 70 58 / .35);}
.sb-wise::before{content:"";grid-column:2;grid-row:1/3;align-self:stretch;width:1px;margin:6px 0;background:var(--border-subtle);opacity:.7;}
.sb-wise-i{grid-column:1;grid-row:1/3;width:62px;height:62px;background:url(vineby-mark-pencil.webp) center/118% auto no-repeat;}
.sb-wise-k{grid-column:3;margin:0 0 8px;font:600 25px/1.2 var(--serif);color:var(--text-primary);letter-spacing:.003em;}
.sb-wise-k b{font-weight:inherit;}
/* Текст прямой и темнее фона на тон: курсив Palatino на мятной бумаге читался тяжело (хозяин, 2026-11-05). */
.sb-wise p{grid-column:3;margin:0;font:400 17px/1.6 var(--serif);color:#0f2627;}
/* Два факта в одной плашке (wise списком) — абзацами */
.sb-wise-t{grid-column:3;}
.sb-wise-t p+p{margin-top:10px;}
@media (max-width:1000px){.sb-wise{padding-right:200px;background-size:200px auto,240px 240px,auto;background-position:right 8px top 6px,0 0,0 0;}}
@media (max-width:760px){
 /* на узком экране лоза уходит в нижний угол, как у «Вывода», чтобы заголовок шёл одной строкой */
 .sb-wise{grid-template-columns:46px 1px minmax(0,1fr);gap:0 16px;margin-top:22px;padding:18px 18px 54px;
  background:url(vineby-corner.webp) right 0 bottom 0/34% auto no-repeat,url(vineby-paper.svg) 0 0/240px 240px,radial-gradient(120% 140% at 30% 40%,var(--surface-mint),var(--surface-mint) 70%,var(--surface-mint));}
 .sb-wise::before{grid-row:1;margin:4px 0;}
 .sb-wise-i{grid-row:1;width:46px;height:46px;}
 .sb-wise-k{grid-row:1;margin:0;font-size:20px;}
 .sb-wise p{grid-column:1/-1;margin-top:14px;font-size:15.5px;}
 .sb-wise-t{grid-column:1/-1;margin-top:14px;}
 .sb-wise-t p{margin-top:0;}
 .sb-wise-t p+p{margin-top:10px;}
}


/* Главный вывод vine.farm справа от графика — та же бумага, карандашный знак и гравюра, что у комментария vine.farm (.sb-wise), лоза в углу (vineby-corner.webp).
   Общий для «Пробуждения», «Цветения» (flowering-distribution) и «Созревания» (ripening-window). */
.sb-sum{position:relative;isolation:isolate;overflow:hidden;padding:20px 20px 74px;border-radius:16px;border:1px solid var(--border-subtle);color:var(--text-primary);
 background:url(vineby-corner.webp) right 0 bottom 0/48% auto no-repeat,url(vineby-paper.svg) 0 0/240px 240px,
  radial-gradient(130% 120% at 30% 25%,var(--surface-mint),var(--surface-mint) 70%,var(--surface-mint));
 box-shadow:inset 0 1px 0 rgb(255 255 255 / .85),inset 0 0 0 4px rgb(255 255 255 / .25),0 1px 2px rgb(40 70 58 / .08),0 12px 26px -16px rgb(40 70 58 / .4);}
.sb-sum h5{display:flex;align-items:center;gap:0;margin:0 0 16px;font:600 21px/1.2 var(--serif);color:var(--brand-teal-deep);white-space:nowrap;}
.sb-sum h5::before{content:"";flex:none;width:49px;height:36px;margin-right:13px;border-radius:0;transform:none;
 background:url(vineby-mark-pencil.webp) 0 50%/38px 38px no-repeat,linear-gradient(var(--border-subtle),var(--border-subtle)) 100% 50%/1px 30px no-repeat;opacity:1;}
.sb-sum p{position:relative;margin:0 0 12px;font:400 14.5px/1.5 var(--sans);color:var(--text-primary);}
.sb-sum p:last-child{margin-bottom:0;}
.sb-sum b,.sb-sum strong{font-weight:600;color:var(--text-primary);}
/* Рамка «график + вывод» у «Пробуждения» — те же размеры, что у карточек .fd и .rw. */
.sb-withsum{display:grid;grid-template-columns:minmax(0,1fr) 288px;gap:0 24px;margin:0 0 20px;padding:18px 18px 10px;
 border:1px solid var(--rule);border-radius:18px;background:var(--paper);}
.sb-withsum>.sb-chart{align-self:start;min-width:0;margin:0;padding:0;border:0;border-radius:0;background:none;}
.sb-withsum>.sb-sum{align-self:center;}
/* Компактный график внутри рамки — плотность как у графика «Цветения»: строки ниже, капли мельче, подписи 10–12 px. */
.sb-withsum .sb-chart{--sb-row:22px;--sb-lane:10px;--sb-yw:46px;}
/* строки одной высоты у всех сортов: по одной дорожке над и под ниткой (WAKE_LANES), независимо от данных */
.sb-withsum .sb-body{padding-top:4px;--up:1;--dn:1;}
.sb-withsum .sb-zone{top:4px;}
.sb-withsum .sb-gl{top:4px;}
.sb-withsum .sb-yr{font:400 12px/1 var(--sans);color:var(--text-primary);padding-right:12px;}
.sb-withsum .sb-row>.sb-yr{padding-top:calc(var(--mid) - 6px);}
.sb-withsum .sb-dot{width:10px;height:10px;}
.sb-withsum .sb-axis{margin-top:2px;}
.sb-withsum .sb-ticks span{top:4px;}
.sb-withsum .sb-ticks .m{font:400 12px/1 var(--sans);color:var(--text-secondary);}
.sb-withsum .sb-ticks .d{font-size:10px;color:var(--text-secondary);}
.sb-withsum .sb-ticks.zoned{height:34px;}
.sb-withsum .sb-ticks .z b{font-size:11px;}
.sb-withsum .sb-chart figcaption{margin-top:6px;padding-top:0;border-top:0;}
.sb-withsum .sb-legend{font-size:10.5px;gap:4px 14px;}
@media (max-width:1100px){
 .sb-withsum{grid-template-columns:minmax(0,1fr) 260px;gap:0 18px;padding:16px;}
 .sb-sum{padding:16px 15px 64px;}
 .sb-sum p{font-size:13px;}
}
@media (max-width:850px){
 .sb-withsum{grid-template-columns:minmax(0,1fr);gap:16px;}
 .sb-sum p{font-size:14px;}
 .sb-sum h5{font-size:22px;}
 .sb-sum{background-size:30% auto,240px 240px,auto;}
}
@media (max-width:520px){.sb-withsum{padding:13px 12px;border-radius:15px;}}

/* выпуклые карточки (2026-11-02): цифры наблюдений, лента сезона и панель этапа приподняты над листом;
   шапка этапа по концепту хозяина — пиктограмма пером без рамки и широкая акварель этапа справа на всю высоту, растворяющаяся к тексту */
body.atlas-paper{--card:var(--surface-card);--card-edge:#e6dbc5;--lift:0 1px 0 rgb(255 255 255 / .9) inset,0 2px 4px rgb(74 56 28 / .06),0 14px 34px -18px rgb(74 56 28 / .38);}
body.atlas-paper .hnums{margin-top:6px;padding:20px 6px;background:linear-gradient(180deg,var(--surface-card),var(--surface-card));border:1px solid var(--card-edge);border-radius:20px;box-shadow:var(--lift);}
body.atlas-paper .hnums li{border-left-color:var(--border-subtle);}
body.atlas-paper .hnums b{color:var(--text-primary);text-shadow:0 1px 0 #fff;}
body.atlas-paper .season::before,body.atlas-paper .season::after{display:none;}
body.atlas-paper .season{padding-inline:0;margin-inline:0;}
body.atlas-paper .season .shead{position:relative;background:var(--card);border:1px solid var(--card-edge);border-bottom:0;border-radius:22px 22px 0 0;box-shadow:0 -10px 24px -20px rgb(74 56 28 / .35),0 1px 0 #fff inset;}
body.atlas-paper .season .strip{background:var(--card);border:1px solid var(--card-edge);border-top:0;border-radius:0 0 22px 22px;box-shadow:0 18px 30px -20px rgb(74 56 28 / .45),0 3px 5px -3px rgb(74 56 28 / .10);}
body.atlas-paper .season.nav-stuck .strip{border-radius:0;box-shadow:0 10px 18px -14px rgb(74 56 28 / .4);}
body.atlas-paper .season .arrows button{background:linear-gradient(180deg,#fff,var(--surface-card));border:1px solid var(--card-edge);box-shadow:0 1px 0 #fff inset,0 3px 8px -3px rgb(74 56 28 / .28);}
body.atlas-paper .season .panels{padding:22px 0 40px;}
body.atlas-paper .season .panels>.panel{position:relative;background:var(--card);border:1px solid var(--card-edge);border-radius:24px;box-shadow:var(--lift);padding:0 28px 30px;overflow:clip;}
body.atlas-paper .sb-toc button{box-shadow:0 1px 0 #fff inset,0 2px 6px -2px rgb(74 56 28 / .22);}
@media(max-width:1185px){
 body.atlas-paper .season .strip{border-radius:0;box-shadow:none;}
 body.atlas-paper .season .strip-hint{display:block;margin:0;padding:8px 18px 12px;background:var(--card);border:1px solid var(--card-edge);border-top:0;border-radius:0 0 22px 22px;box-shadow:0 18px 30px -20px rgb(74 56 28 / .45);}
}
@media(max-width:860px){
 body.atlas-paper .season .panels{padding:16px 0 28px;}
 body.atlas-paper .season .panels>.panel{padding:0 16px 22px;border-radius:20px;}
 body.atlas-paper .season .shead,body.atlas-paper .season .strip-hint{border-radius:20px 20px 0 0;}
 body.atlas-paper .season .strip-hint{border-radius:0 0 20px 20px;}
}

/* шапка этапа: --sg1/--sg2 плитка, --sgt подложка картинки */
.phead.sg{position:relative;isolation:isolate;margin:0 -28px;padding:26px 28px 24px;min-height:172px;align-items:center;gap:18px;
 background:linear-gradient(90deg,var(--card,var(--surface-card)) 0 38%,var(--sgt) 100%);border-bottom:1px solid var(--border-subtle);}
.phead.sg>div{position:relative;z-index:1;max-width:min(560px,62%);}
.phead.sg .per{margin-top:2px;}
.sglyph{flex:none;display:grid;place-items:center;width:88px;height:88px;}
.sglyph img{width:88px;height:88px;mix-blend-mode:multiply;}
.sglyph svg{width:40px;height:40px;}
.sart{position:absolute;z-index:0;top:0;right:0;bottom:0;width:56%;height:100%;object-fit:cover;object-position:100% 50%;pointer-events:none;mix-blend-mode:multiply;
 -webkit-mask-image:linear-gradient(90deg,transparent 0,rgb(0 0 0 / .55) 18%,#000 42%);mask-image:linear-gradient(90deg,transparent 0,rgb(0 0 0 / .55) 18%,#000 42%);}
.sg-probuzhdenie{--sg1:#cfa486;--sg2:#9c6a4f;--sgt:#f3e6dc;}
.sg-rost{--sg1:#9cc66c;--sg2:#5b8c37;--sgt:#e8f0dc;}
.sg-cvetenie{--sg1:#d5c862;--sg2:#998f2c;--sgt:#f2eed4;}
.sg-naliv{--sg1:#86b656;--sg2:#4b7a2a;--sgt:#e4eed9;}
.sg-okrashivanie{--sg1:#ae87c6;--sg2:#6f4b8b;--sgt:#ece3f0;}
.sg-sozrevanie{--sg1:#6a73bb;--sg2:#3a4182;--sgt:#e3e5f1;}
.sg-visenie{--sg1:#e09a4c;--sg2:#a65d22;--sgt:#f5e5d2;}
.sg-pokoj{--sg1:#3fa79d;--sg2:#1d6b65;--sgt:#e1eeef;}
@media(max-width:860px){
 .phead.sg{margin:0 -16px;padding:20px 16px 18px;gap:14px;min-height:128px;}
 .phead.sg>div{max-width:none;}
 .sglyph{width:64px;height:64px;}
 .sglyph img{width:64px;height:64px;}
 .sglyph svg{width:32px;height:32px;}
 .sart{width:60%;opacity:.38;}
}
