/* FC greenhouse types (gh-*) */
.gh-bar .cp-sub nav a img{border-radius:50%}
.gh-ty-grid{display:grid;grid-template-columns:repeat(var(--c,3),minmax(0,1fr));gap:18px;margin-top:44px}
.gh-ty{position:relative;display:flex;flex-direction:column;border-radius:26px;overflow:hidden;background:#fff;box-shadow:inset 0 0 0 1px var(--line);text-decoration:none!important;color:var(--ink)!important;transition:transform .5s var(--ease),box-shadow .4s}
.hp-white .gh-ty{background:var(--paper);box-shadow:none}
.gh-ty:hover{transform:translateY(-5px);box-shadow:0 22px 44px -22px rgba(19,42,29,.35),inset 0 0 0 1.5px var(--forest)}
.gh-ty__im{display:block;aspect-ratio:16/10.5;overflow:hidden;background:var(--field)}
.gh-ty__im img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.gh-ty:hover .gh-ty__im img{transform:scale(1.06)}
.gh-ty__b{position:relative;display:flex;flex-direction:column;gap:8px;padding:22px 24px 26px;flex:1}
.gh-ty__n{font:500 11.5px/1 "Geist Mono",ui-monospace,monospace;letter-spacing:.1em;color:var(--muted)}
.gh-ty__b b{font-size:21px;letter-spacing:-.015em;line-height:1.2}
.gh-ty__b p{margin:0;font-size:15.5px;line-height:1.55;color:var(--muted)}
.gh-ty__b .hp-link{margin-top:auto;padding-top:10px}
@media(max-width:1000px){.gh-ty-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.gh-ty-grid{grid-template-columns:1fr}}

/* matcher */
.gh-match{margin-top:40px}
.gh-match .cp-seg{max-width:760px}
.gh-mt{display:grid;gap:12px}
.gh-mr{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px 28px;align-items:center;padding:20px 24px;border-radius:20px;background:#fff;box-shadow:inset 0 0 0 1px var(--line);transition:box-shadow .35s,transform .45s var(--ease)}
.hp-white .gh-mr{background:var(--paper);box-shadow:none}
.gh-mr:hover{transform:translateX(4px);box-shadow:inset 0 0 0 1.5px var(--forest)}
.gh-mr b{display:block;font-size:18.5px;letter-spacing:-.01em}
.gh-mr p{margin:5px 0 0;font-size:15.5px;line-height:1.55;color:var(--muted)}
.gh-mr__l{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.hp .gh-mr__l a{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:999px;background:var(--deep);color:#fff!important;font-size:13.5px;font-weight:600;text-decoration:none!important;transition:background .3s,color .3s,transform .35s var(--ease)}
.hp .gh-mr__l a svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--ease)}
.hp .gh-mr__l a:hover{background:var(--lime);color:var(--ink)!important;transform:translateY(-1px)}
.gh-mr__l a:hover svg{transform:translateX(3px)}
@media(max-width:800px){.gh-mr{grid-template-columns:1fr}.gh-mr__l{justify-content:flex-start}}

/* spec ledger */
.gh-spec{display:grid;margin-top:36px;border-top:1px solid var(--line)}
.gh-sp{display:grid;grid-template-columns:44px minmax(150px,.55fr) minmax(0,1.6fr);gap:6px 22px;align-items:baseline;padding:18px 14px;border-bottom:1px solid var(--line);transition:background .35s,padding .45s var(--ease)}
.gh-sp:hover{background:#fff;padding-left:24px}
.hp-dark .gh-spec,.hp-dark .gh-sp{border-color:rgba(255,255,255,.16)}
.hp-dark .gh-sp:hover{background:rgba(255,255,255,.06)}
.gh-sp__n{font:500 11.5px/1 "Geist Mono",ui-monospace,monospace;letter-spacing:.1em;color:var(--muted)}
.gh-sp b{font-size:18px;letter-spacing:-.01em}
.gh-sp p{margin:0;font-size:16.5px;line-height:1.55;color:var(--muted)}
.hp-dark .gh-sp p,.hp-dark .gh-sp__n{color:rgba(255,255,255,.76)}
.gh-spec__cap{margin-top:16px;font-size:15px;color:var(--muted)}
@media(max-width:700px){.gh-sp{grid-template-columns:34px 1fr}.gh-sp p{grid-column:2}}
.gh-lab{margin-top:20px}
.gh-solo{margin-top:36px}
.gh-mr--s{grid-template-columns:1fr}
.gh-lead2{margin-top:6px}

/* ===== gh2: refinement layer for the 13 greenhouse type pages (scoped to html.gh2) ===== */
.gh2{--e2:cubic-bezier(.22,.8,.16,1);--e3:cubic-bezier(.65,0,.25,1)}

/* reading progress */
.gh2-prog{position:fixed;left:0;top:0;width:100%;height:3px;z-index:100001;pointer-events:none;transform-origin:0 50%;transform:scaleX(var(--p,0));background:linear-gradient(90deg,#9fd13a,var(--lime));box-shadow:0 0 12px rgba(205,235,79,.55)}

/* ---------- hero ---------- */
.gh2 .hp-hero{isolation:isolate}
.gh2 .hp-hero__bg{scale:1.04;translate:var(--hx,0px) var(--hy,0px);transition:translate 1.6s var(--e2)}
.gh2-glow{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity 1.2s;background:radial-gradient(520px circle at var(--gx,70%) var(--gy,40%),rgba(205,235,79,.16),transparent 62%);mix-blend-mode:soft-light}
.gh2 .hp-hero:hover .gh2-glow{opacity:1}
.gh2 .hp-hero__in{position:relative;z-index:2}
.gh2-cue{position:absolute;left:50%;bottom:30px;z-index:3;width:24px;height:38px;margin-left:-12px;border-radius:14px;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.55);opacity:0;animation:gh2Fade .9s 1.6s forwards;transition:opacity .4s}
.gh2-cue::after{content:"";position:absolute;left:50%;top:8px;width:3px;height:7px;margin-left:-1.5px;border-radius:2px;background:var(--lime);animation:gh2Cue 1.9s 2.2s var(--e3) infinite}
.gh2-cue.off{opacity:0!important;animation:none}
@keyframes gh2Cue{0%{transform:translateY(0);opacity:0}25%{opacity:1}70%{transform:translateY(12px);opacity:0}100%{opacity:0}}
@keyframes gh2Fade{to{opacity:1}}
.gh2 .sv-crumb a{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .45s var(--e2)}
.gh2 .sv-crumb a:hover{background-size:100% 1px}

/* ---------- type strip ---------- */
.gh2 .gh-bar .cp-sub{position:relative}
.gh2 .gh-bar nav{scroll-behavior:smooth;cursor:grab;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 var(--ml,0px),#000 calc(100% - var(--mr,0px)),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 var(--ml,0px),#000 calc(100% - var(--mr,0px)),transparent 100%);transition:--ml .3s}
.gh2 .gh-bar nav.drag{cursor:grabbing;scroll-behavior:auto}
.gh2 .gh-bar nav.drag a{pointer-events:none}
.gh2 .gh-bar nav a{opacity:0;translate:0 10px;transition:opacity .6s var(--e2) calc(var(--i,0)*45ms),translate .7s var(--e2) calc(var(--i,0)*45ms),box-shadow .3s,transform .35s var(--e2),background .3s}
.gh2 .gh-bar.gh2-in nav a{opacity:1;translate:none}
.gh2 .gh-bar nav a[aria-current]{position:relative}
.gh2 .gh-bar nav a[aria-current]::after{content:"";position:absolute;right:9px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--ink);animation:syDot 2.4s ease-in-out infinite}
.gh2 .gh-bar nav a[aria-current]{padding-right:24px}
.gh2-arr{flex:0 0 auto;display:none;gap:6px;margin-left:10px}
.gh2 .gh-bar.ovf .gh2-arr{display:flex}
.gh2-arr button{width:34px;height:34px;border:0;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);cursor:pointer;transition:background .3s,color .3s,transform .35s var(--e2),opacity .3s}
.gh2-arr button:hover{background:var(--deep);color:#fff;transform:scale(1.06)}
.gh2-arr button:disabled{opacity:.35;pointer-events:none}
.gh2-arr svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:800px){.gh2 .gh-bar.ovf .gh2-arr{display:none}}

/* ---------- intro guide links ---------- */
.gh2 .cp-toc li a{transition:background .3s,color .3s,box-shadow .3s,transform .35s var(--e2)}
.gh2 .cp-toc li a:hover{transform:translateY(-2px)}
.gh2 .cp-toc li a.on{background:var(--deep);color:#fff!important;box-shadow:none}
.gh2 .cp-toc li a.on span{color:var(--lime)}
.gh2 .cp-toc li{opacity:0;translate:0 8px;transition:opacity .55s var(--e2) calc(var(--i,0)*50ms + .15s),translate .65s var(--e2) calc(var(--i,0)*50ms + .15s)}
.gh2 .cp-toc.gh2-in li{opacity:1;translate:none}

/* ---------- guide dock ---------- */
.gh2-dock{position:fixed;left:50%;bottom:22px;z-index:9990;translate:-50% 140%;opacity:0;transition:translate .7s var(--e2),opacity .45s;font-family:Onest,system-ui,sans-serif;pointer-events:none}
.gh2-dock.show{translate:-50% 0;opacity:1;pointer-events:auto}
.gh2-dock__btn{display:flex;align-items:center;gap:12px;min-width:270px;max-width:420px;padding:7px 16px 7px 7px;border:0;border-radius:999px;background:rgba(15,34,23,.9);-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);color:#fff;text-align:left;cursor:pointer;box-shadow:0 18px 40px -18px rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.08);transition:background .3s,transform .4s var(--e2)}
.gh2-dock__btn:hover{background:rgba(19,42,29,.97);transform:translateY(-2px)}
.gh2-ring{position:relative;flex:0 0 auto;width:40px;height:40px}
.gh2-ring svg{width:40px;height:40px;transform:rotate(-90deg)}
.gh2-ring circle{fill:none;stroke-width:2.5}
.gh2-ring .bg{stroke:rgba(255,255,255,.14)}
.gh2-ring .fg{stroke:var(--lime);stroke-linecap:round;stroke-dasharray:113.1;stroke-dashoffset:calc(113.1 - 113.1 * var(--p,0));transition:stroke-dashoffset .35s linear}
.gh2-ring b{position:absolute;inset:0;display:grid;place-items:center;font:500 11.5px/1 "Geist Mono",ui-monospace,monospace;color:var(--lime)}
.gh2-dock__t{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.gh2-dock__t small{font:500 10.5px/1 "Geist Mono",ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.58)}
.gh2-dock__t span{position:relative;display:block;height:18px;overflow:hidden}
.gh2-dock__t em{position:absolute;left:0;top:0;font-style:normal;font-size:14.5px;font-weight:600;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;transition:transform .55s var(--e2),opacity .4s}
.gh2-dock__t em.out{transform:translateY(-100%);opacity:0}
.gh2-dock__t em.pre{transform:translateY(100%);opacity:0;transition:none}
.gh2-dock__chev{flex:0 0 auto;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.1);transition:transform .45s var(--e2),background .3s}
.gh2-dock__chev svg{width:12px;height:12px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gh2-dock.open .gh2-dock__chev{transform:rotate(180deg);background:var(--lime)}
.gh2-dock.open .gh2-dock__chev svg{stroke:var(--ink)}
.gh2-dock__p{position:absolute;left:50%;bottom:calc(100% + 10px);width:min(360px,calc(100vw - 24px));translate:-50% 12px;scale:.97;opacity:0;visibility:hidden;transform-origin:50% 100%;padding:10px;border-radius:24px;background:rgba(15,34,23,.95);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);box-shadow:0 30px 60px -24px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.08);transition:translate .5s var(--e2),scale .5s var(--e2),opacity .3s,visibility 0s .5s}
.gh2-dock.open .gh2-dock__p{translate:-50% 0;scale:1;opacity:1;visibility:visible;transition:translate .5s var(--e2),scale .5s var(--e2),opacity .3s}
.gh2-dock__p ol{list-style:none;margin:0;padding:0;display:grid;gap:2px;max-height:min(52vh,420px);overflow:auto}
.gh2-dock__p li{opacity:0;translate:0 6px;transition:opacity .35s,translate .45s var(--e2)}
.gh2-dock.open .gh2-dock__p li{opacity:1;translate:none;transition-delay:calc(var(--i)*30ms + 60ms)}
.gh2-dock__p a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:14px;color:rgba(255,255,255,.82)!important;font-size:14.5px;font-weight:500;text-decoration:none!important;transition:background .25s,color .25s,padding .35s var(--e2)}
.gh2-dock__p a span{font:500 11px/1 "Geist Mono",ui-monospace,monospace;color:rgba(255,255,255,.45);transition:color .25s}
.gh2-dock__p a:hover{background:rgba(255,255,255,.07);color:#fff!important;padding-left:18px}
.gh2-dock__p a.on{background:rgba(205,235,79,.12);color:#fff!important}
.gh2-dock__p a.on span{color:var(--lime)}
.gh2-dock__p a.on::after{content:"";margin-left:auto;width:6px;height:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 4px rgba(205,235,79,.18)}
.gh2-dock__q{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:6px 6px 6px 16px;border-radius:999px;background:var(--lime);color:var(--ink)!important;font-size:14.5px;font-weight:600;text-decoration:none!important;transition:transform .35s var(--e2)}
.gh2-dock__q i{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--lime)}
.gh2-dock__q svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--e2)}
.gh2-dock__q:hover svg{transform:translateX(3px)}
@media(max-width:700px){.gh2-dock{left:12px;bottom:14px;translate:0 140%}.gh2-dock.show{translate:0 0}.gh2-dock__btn{min-width:0;max-width:calc(100vw - 190px);padding-right:10px;gap:9px}.gh2-ring,.gh2-ring svg{width:36px;height:36px}.gh2-dock__t small{display:none}.gh2-dock__t em{font-size:13.5px}.gh2-dock__chev{display:none}.gh2-dock__p{left:0;translate:0 12px;transform-origin:0 100%;width:calc(100vw - 24px)}.gh2-dock.open .gh2-dock__p{translate:0 0}}

/* ---------- photos: gentle depth on scroll ---------- */
.gh2 .cp-pk__f .sy-fig>img,.gh2 .gh-ty__im img,.gh2 .sy-tp__v img{scale:var(--ps,1.1);translate:0 var(--py,0px);will-change:translate}
.gh2 .sy-fig .ind-chip{transition:transform .5s var(--e2),background .3s}
.gh2 .sy-fig:hover .ind-chip{transform:translateY(-2px)}

/* ---------- cards: tilt, glare, cursor bubble ---------- */
.gh2 .ind-rel,.gh2 .gh-ty-grid,.gh2 .cp-worn{perspective:1400px}
.gh2 .ind-cc,.gh2 .gh-ty,.gh2 .cp-w{rotate:var(--ax,0) var(--ay,1) 0 var(--aa,0deg);transition:transform .5s var(--e2),box-shadow .4s,rotate .6s var(--e2)}
.gh2 .ind-cc.tilt,.gh2 .gh-ty.tilt,.gh2 .cp-w.tilt{transition:transform .5s var(--e2),box-shadow .4s,rotate .12s linear}
.gh2-glare{position:absolute;inset:0;z-index:3;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .45s;background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.2),transparent 55%)}
.gh2 .gh-ty .gh2-glare,.gh2 .cp-w .gh2-glare{background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%),rgba(205,235,79,.18),transparent 55%)}
.gh2 .tilt>.gh2-glare{opacity:1}
.gh2 .cp-w{position:relative}
.gh2-bub{position:fixed;left:0;top:0;z-index:9995;width:74px;height:74px;margin:-37px 0 0 -37px;border-radius:50%;display:grid;place-items:center;background:var(--lime);color:var(--ink);pointer-events:none;scale:0;opacity:0;transition:scale .45s var(--e2),opacity .3s;box-shadow:0 14px 30px -12px rgba(0,0,0,.45)}
.gh2-bub.on{scale:1;opacity:1}
.gh2-bub svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;rotate:-45deg}

/* ---------- dark sections: soft light that follows the pointer ---------- */
.gh2 section.hp-dark{overflow:hidden}
.gh2 section.hp-dark>.hp-wrap{position:relative;z-index:1}
.gh2-amb{position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(700px circle at var(--ax2,75%) var(--ay2,20%),rgba(205,235,79,.09),transparent 60%),radial-gradient(600px circle at 8% 110%,rgba(120,180,110,.08),transparent 60%)}
.gh2-amb::after{content:"";position:absolute;inset:0;opacity:.05;background-image:radial-gradient(rgba(255,255,255,.9) 1px,transparent 1px);background-size:22px 22px;-webkit-mask-image:linear-gradient(180deg,#000,transparent 70%);mask-image:linear-gradient(180deg,#000,transparent 70%)}

/* ---------- eyebrows, ledger, checks ---------- */
.gh2 .hp-eyebrow.gh2-in i{animation:hpPulse 1.5s .3s 2 ease-out}
.gh2 .gh-sp{position:relative}
.gh2 .gh-sp::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1.5px;background:var(--forest);transform:scaleX(0);transform-origin:0 50%;opacity:0}
.gh2 .hp-dark .gh-sp::after{background:var(--lime)}
.gh2 .gh-spec.gh2-in .gh-sp::after{animation:gh2Sweep 1.5s var(--e3) calc(var(--i,0)*110ms + .2s) both}
.gh2 .gh-sp:hover::after{transform:scaleX(1);opacity:1;animation:none;transition:transform .5s var(--e2)}
@keyframes gh2Sweep{0%{transform:scaleX(0);opacity:1}60%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
.gh2 .gh-sp__n{transition:color .3s,transform .45s var(--e2)}
.gh2 .gh-sp:hover .gh-sp__n{color:var(--forest);transform:translateX(3px)}
.gh2 .hp-dark .gh-sp:hover .gh-sp__n{color:var(--lime)}
.gh2 .sv-ck li i svg path{stroke-dasharray:22;stroke-dashoffset:22;transition:stroke-dashoffset .75s var(--e3) calc(var(--d,0s) + .45s)}
.gh2 .sv-ck.gh2-in li i svg path{stroke-dashoffset:0}

/* ---------- buttons: arrow passes through ---------- */
.gh2 .hp-btn .ar{overflow:hidden}
.gh2 a.hp-btn:hover .ar svg,.gh2 .gh-mr__l a:hover svg{animation:gh2Pass .6s var(--e2)}
@keyframes gh2Pass{0%{transform:none}42%{transform:translateX(150%)}43%{transform:translateX(-150%)}100%{transform:none}}

/* ---------- FAQ: open item gets a lime edge ---------- */
.gh2 .hp-q{position:relative}
.gh2 .hp-q::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:2px;border-radius:2px;background:var(--lime);transform:scaleY(0);transition:transform .5s var(--e2)}
.gh2 .hp-q.open::before{transform:scaleY(1)}

@media (prefers-reduced-motion:reduce){.gh2 *,.gh2 *::before,.gh2 *::after{animation:none!important;transition-duration:.01ms!important}.gh2 .gh-bar nav a,.gh2 .cp-toc li{opacity:1;translate:none}.gh2 .sv-ck li i svg path{stroke-dashoffset:0}.gh2-cue{display:none}.gh2 .cp-pk__f .sy-fig>img,.gh2 .gh-ty__im img,.gh2 .sy-tp__v img{scale:1}}
@media (hover:none){.gh2-glow,.gh2-bub{display:none}}
@media(max-width:700px){.gh2-cue{display:none}.gh2 .cp-pk__f .sy-fig>img,.gh2 .gh-ty__im img,.gh2 .sy-tp__v img{scale:1}}

.gh2-dock__p a.gh2-dock__q{color:var(--ink)!important;background:var(--lime);padding:6px 6px 6px 16px}
.gh2-dock__p a.gh2-dock__q:hover{background:#d9f26a;padding-left:16px}
@media(max-width:700px){.gh2-dock__btn{width:calc(100vw - 200px);max-width:240px}}
