/* Zugdidi Botanical Garden — "garden" layer (zbg3), loaded after zbg2/css/site.css.
   Everything here is decoration: pointer-events none, aria-hidden in markup, off under reduced motion. */

.theme-garden {
    --serif: "Noto Serif Georgian", "Noto Serif", Georgia, serif;
    --latin: "Noto Serif", Georgia, "Times New Roman", serif;
    --organic: cubic-bezier(.16, 1, .3, 1);
    --paper-tex: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .32 0 0 0 0 .28 0 0 0 0 .18 0 0 0 .075 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    --linen: repeating-linear-gradient(0deg, rgba(120, 100, 60, .025) 0 1px, transparent 1px 3px), repeating-linear-gradient(90deg, rgba(120, 100, 60, .02) 0 1px, transparent 1px 4px);
    --leaf-pattern: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.055' stroke-width='1.2'%3E%3Cpath d='M30 70C30 40 50 22 86 18c0 34-20 52-56 52zM30 70L70 32'/%3E%3Cpath d='M170 60c26 4 44 22 46 54-30-2-48-22-46-54zM170 60l40 48'/%3E%3Cpath d='M90 200c4-30 24-46 58-46-2 32-24 48-58 46zM90 200l50-40'/%3E%3Cpath d='M210 210c-28-6-42-26-40-58 30 6 44 26 40 58zM210 210l-36-52'/%3E%3C/g%3E%3C/svg%3E");
}
.theme-garden { background: var(--paper) var(--paper-tex); }
.theme-garden .paper { background-color: var(--paper); background-image: var(--paper-tex), var(--linen); }
.theme-garden .page-latin, .theme-garden .card-latin, .theme-garden .tag-latin { font-family: var(--latin); font-style: italic; font-weight: 400; }
.theme-garden .section { overflow: hidden; overflow: clip; }

/* ---------- organic scroll reveal ---------- */
.js .theme-garden .reveal, .js.theme-garden .reveal { opacity: 0; transform: translate3d(0, 34px, 0) rotate(-.6deg) scale(.985); filter: blur(3px); transition: opacity 1.1s var(--organic), transform 1.3s var(--organic), filter 1.1s var(--organic); transition-delay: var(--rd, 0s); }
.js .theme-garden .reveal.is-in, .js.theme-garden .reveal.is-in { opacity: 1; transform: none; filter: none; }
.js .reveal { opacity: 0; transform: translate3d(0, 34px, 0) rotate(-.5deg); filter: blur(3px); transition: opacity 1.1s cubic-bezier(.16, 1, .3, 1), transform 1.3s cubic-bezier(.16, 1, .3, 1), filter 1.1s cubic-bezier(.16, 1, .3, 1); transition-delay: var(--rd, 0s); }
.js .reveal.is-in { opacity: 1; transform: none; filter: none; }

/* ---------- HERO: layered garden ---------- */
.hero-garden { background: #16301f; }
.hero-garden .hero-back { position: absolute; inset: -7% 0; z-index: 0; translate: 0 var(--py, 0px); will-change: translate; }
.hero-garden .hero-back .hero-media, .hero-garden .hero-back .hero-media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-garden .hero-media img { animation: kenBurns 26s ease-in-out infinite alternate; transform-origin: 46% 42%; }
@keyframes kenBurns { from { transform: scale(1.04); } to { transform: scale(1.13) translate3d(-1.2%, -1%, 0); } }

/* sun dapple: soft warm light pools drifting very slowly */
.hero-dapple { position: absolute; inset: 0; z-index: 1; overflow: hidden; pointer-events: none; mix-blend-mode: soft-light; }
.hero-dapple span { position: absolute; border-radius: 50%; background: radial-gradient(circle, rgba(255, 236, 170, .95) 0%, rgba(255, 226, 150, .45) 35%, transparent 70%); filter: blur(8px); animation: dapple 22s ease-in-out infinite alternate; }
.hero-dapple span:nth-child(1) { width: 46vmax; height: 46vmax; left: 38%; top: -14%; }
.hero-dapple span:nth-child(2) { width: 30vmax; height: 30vmax; left: 8%; top: 30%; animation-duration: 28s; animation-delay: -7s; }
.hero-dapple span:nth-child(3) { width: 22vmax; height: 22vmax; left: 66%; top: 46%; animation-duration: 19s; animation-delay: -3s; }
.hero-dapple span:nth-child(4) { width: 14vmax; height: 14vmax; left: 52%; top: 18%; animation-duration: 15s; animation-delay: -10s; opacity: .8; }
@keyframes dapple { 0% { transform: translate3d(0, 0, 0) scale(1); opacity: .55; } 50% { opacity: .95; } 100% { transform: translate3d(6vw, 4vh, 0) scale(1.15); opacity: .6; } }

/* moving leaf shadows (canopy overhead) */
.hero-shadows { position: absolute; inset: -20%; z-index: 1; pointer-events: none; background: url("../img/leaf-shadows.svg") 0 0 / 760px auto repeat; opacity: .16; filter: blur(5px); mix-blend-mode: multiply; animation: shadowDrift 60s linear infinite; }
@keyframes shadowDrift { from { transform: translate3d(0, 0, 0) rotate(0deg); } to { transform: translate3d(-760px, 120px, 0) rotate(2deg); } }

.hero-garden .hero-shade { z-index: 2; }
.hero-fore { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
.hero-fore img, .fore-grass { position: absolute; display: block; translate: 0 var(--py, 0px); will-change: translate, transform; }
.fore-canopy { left: -2%; top: -3%; width: clamp(230px, 34vw, 560px); height: auto; transform-origin: 0 0; animation: swayTL 11s ease-in-out infinite alternate; filter: drop-shadow(0 18px 24px rgba(0, 0, 0, .25)); opacity: .96; }
.fore-fern { right: -3%; bottom: -2%; height: min(78%, 680px); width: auto; transform-origin: 100% 100%; animation: swayBR 9s ease-in-out infinite alternate; filter: drop-shadow(0 0 20px rgba(0, 0, 0, .25)); opacity: .95; }
.fore-grass { left: 0; right: 0; bottom: -4px; height: clamp(70px, 11vh, 130px); background: #0c1b11; -webkit-mask: url("../img/grass-bottom.svg") center bottom / 1200px 100% repeat-x; mask: url("../img/grass-bottom.svg") center bottom / 1200px 100% repeat-x; }
@keyframes swayTL { from { transform: rotate(-1.2deg); } to { transform: rotate(1.4deg) translate3d(4px, 2px, 0); } }
@keyframes swayBR { from { transform: rotate(1.6deg); } to { transform: rotate(-1.4deg); } }
.hero-garden .hero-content { z-index: 4; }
.hero-garden .hero-scroll { z-index: 5; }
.hero-garden .hero-title { text-shadow: 0 2px 40px rgba(0, 0, 0, .45), 0 1px 3px rgba(0, 0, 0, .3); }
@media (max-width: 700px) {
    .fore-canopy { width: 78vw; top: -1%; }
    .fore-fern { height: 46%; right: -14%; opacity: .9; }
}

/* ---------- dappled light on light sections ---------- */
.intro, .visit { isolation: isolate; }
.intro::before, .visit::before { content: ""; position: absolute; inset: -30%; z-index: -1; pointer-events: none;
    background: radial-gradient(28% 22% at 22% 30%, rgba(255, 232, 160, .22), transparent 70%), radial-gradient(22% 18% at 70% 60%, rgba(255, 232, 160, .18), transparent 70%), radial-gradient(18% 14% at 46% 82%, rgba(255, 236, 170, .15), transparent 70%);
    animation: sectionDapple 34s ease-in-out infinite alternate; }
.intro::after, .visit::after { content: ""; position: absolute; inset: -25%; z-index: -1; pointer-events: none; background: url("../img/leaf-shadows.svg") 0 0 / 900px auto repeat; opacity: .045; filter: blur(4px); animation: shadowDrift 90s linear infinite; }
@keyframes sectionDapple { from { transform: translate3d(-3%, -2%, 0); } to { transform: translate3d(4%, 3%, 0); } }
.visit { background-color: var(--cream); background-image: var(--paper-tex), var(--linen); }

/* ---------- botanical line illustrations ---------- */
.illo { position: absolute; z-index: 0; pointer-events: none; user-select: none; opacity: .13; width: clamp(160px, 22vw, 320px); height: auto; }
.illo-intro { right: -2%; top: 4%; transform: rotate(12deg); }
.illo-collection { right: 2%; top: 2%; transform: rotate(-14deg); opacity: .11; }
.illo-heritage { right: -3%; bottom: -6%; filter: invert(1) brightness(2); opacity: .07; width: clamp(220px, 30vw, 420px); }
.illo-gallery { left: -3%; top: 0; transform: rotate(-18deg); opacity: .1; }
.section > .container { position: relative; z-index: 1; }
@media (max-width: 700px) { .illo { width: 150px; opacity: .09; } .illo-intro { top: 1%; right: -12%; } }

/* ---------- vine dividers ---------- */
.vine-divider { display: flex; align-items: center; justify-content: center; gap: 18px; max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); height: 0; position: relative; z-index: 2; }
.vine-divider img { width: min(380px, 60vw); height: auto; opacity: .75; transform: translateY(0); }
.vine-divider .vine-line { flex: 1; height: 1px; background: linear-gradient(90deg, transparent, rgba(63, 107, 74, .35)); }
.vine-divider .vine-line:last-child { background: linear-gradient(270deg, transparent, rgba(63, 107, 74, .35)); }
@media (max-width: 600px) { .vine-divider .vine-line { display: none; } }

/* ---------- deep forest sections with leaf pattern ---------- */
.heritage.leafy, .theme-garden .page-hero, .theme-garden .site-footer { background-image: var(--leaf-pattern); background-size: 260px 260px; }
.heritage.leafy { background-color: var(--forest); }
.theme-garden .page-hero { background-color: var(--forest); }
.theme-garden .page-hero::after { content: ""; position: absolute; right: -40px; top: -30px; width: clamp(220px, 34vw, 520px); aspect-ratio: 560 / 460; z-index: -1; pointer-events: none; background: rgba(5, 14, 9, .55); -webkit-mask: url("../img/canopy-left.svg") 0 0 / 100% 100% no-repeat; mask: url("../img/canopy-left.svg") 0 0 / 100% 100% no-repeat; transform: scaleX(-1); transform-origin: 50% 0; animation: swayPH 12s ease-in-out infinite alternate; }
@keyframes swayPH { from { transform: scaleX(-1) rotate(-1deg); } to { transform: scaleX(-1) rotate(1.2deg); } }
.theme-garden .page-hero-cover::after { background: rgba(5, 14, 9, .65); }

/* ---------- cards: leaves rustle on hover ---------- */
.theme-garden .card { position: relative; }
.theme-garden .card-media::after { content: ""; position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; background: url("../img/leaf.svg") center / contain no-repeat; opacity: 0; transform: rotate(-20deg) scale(.6); transform-origin: 20% 90%; transition: opacity .35s, transform .5s var(--organic); filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .25)); }
.theme-garden .card:hover .card-media::after, .theme-garden .card:focus-within .card-media::after { opacity: 1; transform: none; animation: rustle 1.2s ease-in-out .15s; }
.theme-garden .card:hover .card-media img { animation: rustleImg 1.6s ease-in-out; }
@keyframes rustle { 0%, 100% { transform: rotate(0); } 20% { transform: rotate(-16deg); } 40% { transform: rotate(11deg); } 60% { transform: rotate(-7deg); } 80% { transform: rotate(3deg); } }
@keyframes rustleImg { 0% { transform: scale(1); } 30% { transform: scale(1.05) rotate(-.4deg); } 60% { transform: scale(1.06) rotate(.3deg); } 100% { transform: scale(1.06); } }
.theme-garden .card { background: #fffdf8; }
.theme-garden .card-body { background-image: linear-gradient(180deg, rgba(227, 234, 219, .0), rgba(227, 234, 219, .25)); }

/* ---------- herbarium plant page ---------- */
.page-plant .page-latin { font-size: clamp(1.1rem, 2vw, 1.45rem); color: #f1dfb3; margin-top: .2em; letter-spacing: .01em; }
.article-layout.is-herbarium { max-width: 1120px; }
.is-herbarium .prose { max-width: 72ch; margin: 0 auto; }
.herbarium { display: grid; gap: 28px; margin-bottom: 44px; align-items: start; }
@media (min-width: 900px) { .herbarium { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 48px; } }
.specimen { position: relative; margin: 0; padding: clamp(14px, 2.4vw, 26px) clamp(14px, 2.4vw, 26px) 56px; background: #fbf7ec var(--paper-tex); border: 1px solid #e6dcc6; box-shadow: 0 2px 2px rgba(60, 45, 20, .05), 0 22px 40px -22px rgba(60, 45, 20, .45); transform: rotate(-.7deg); transition: transform .8s var(--organic); }
.specimen:hover { transform: rotate(0); }
.specimen img { width: 100%; max-height: 620px; object-fit: cover; border: 1px solid rgba(60, 45, 20, .18); filter: saturate(.92) contrast(1.02); cursor: zoom-in; }
.specimen figcaption { position: absolute; left: clamp(14px, 2.4vw, 26px); right: clamp(14px, 2.4vw, 26px); bottom: 16px; display: flex; justify-content: space-between; gap: 12px; font-family: var(--serif); font-size: .82rem; letter-spacing: .02em; color: #6b5b3e; border-top: 1px dashed rgba(107, 91, 62, .45); padding-top: 8px; }
.tape { position: absolute; width: 96px; height: 26px; background: rgba(236, 224, 192, .82); box-shadow: 0 1px 2px rgba(0, 0, 0, .08); z-index: 2; }
.tape::before, .tape::after { content: ""; position: absolute; top: 0; bottom: 0; width: 6px; background: repeating-linear-gradient(180deg, transparent 0 3px, rgba(251, 247, 236, .9) 3px 5px); }
.tape::before { left: -3px; } .tape::after { right: -3px; }
.tape-a { top: -10px; left: 22px; transform: rotate(-8deg); }
.tape-b { top: -10px; right: 22px; transform: rotate(7deg); }
.museum-tag { position: relative; background: #fffdf6 var(--paper-tex); border: 1px solid #cdbf9f; border-radius: 6px; padding: 30px 26px 20px; box-shadow: inset 0 0 0 5px #fffdf6, inset 0 0 0 6px rgba(160, 135, 85, .45), 0 18px 34px -24px rgba(40, 30, 10, .5); }
.museum-tag::before { content: ""; position: absolute; top: 12px; left: 50%; width: 12px; height: 12px; margin-left: -6px; border-radius: 50%; background: var(--paper); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .35); border: 1px solid #cdbf9f; }
.tag-head { margin: 8px 0 14px; text-align: center; font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: #8a744a; font-weight: 600; }
.tag-name { font-family: var(--serif); font-size: clamp(1.35rem, 2.4vw, 1.7rem); font-weight: 600; line-height: 1.25; color: var(--ink); margin: 0 0 4px; text-align: center; }
.tag-latin { text-align: center; font-size: 1.12rem; color: var(--forest-2); margin: 0 0 18px; }
.museum-tag .taxonomy { margin: 0; padding: 0; background: none; border: 0; border-top: 1px solid rgba(160, 135, 85, .4); border-radius: 0; }
.museum-tag .taxonomy > div { border-bottom: 1px dotted rgba(160, 135, 85, .5); padding: 10px 0; grid-template-columns: 1fr; gap: 2px; }
.museum-tag .taxonomy dt { color: #8a744a; font-size: .68rem; }
.museum-tag .taxonomy dd { font-size: .98rem; }
.tag-foot { display: flex; justify-content: space-between; align-items: center; margin: 14px 0 0; font-family: var(--latin); font-style: italic; color: #8a744a; font-size: .9rem; }

/* ---------- mobile menu: parting leaves ---------- */
@media (max-width: 1099px) {
    .theme-garden .main-nav::before, .theme-garden .main-nav::after { content: ""; position: absolute; top: 0; bottom: 0; min-height: 100%; width: 52%; z-index: 2; pointer-events: none; background-color: #1f3d2b; background-image: var(--leaf-pattern); transition: transform .85s var(--organic); }
    .theme-garden .main-nav::before { left: 0; border-right: 1px solid rgba(255, 255, 255, .08); background-image: url("../img/canopy-left.svg"), var(--leaf-pattern); background-size: 120% auto, 260px; background-position: 0 0, 0 0; background-repeat: no-repeat, repeat; }
    .theme-garden .main-nav::after { background-image: url("../img/fern-right.svg"), var(--leaf-pattern); background-size: auto 70%, 260px; background-position: right bottom, 0 0; background-repeat: no-repeat, repeat; }
    .theme-garden .main-nav::after { right: 0; }
    .theme-garden.menu-open .main-nav::before { transform: translateX(-104%); }
    .theme-garden.menu-open .main-nav::after { transform: translateX(104%); }
    .theme-garden .main-nav { background: var(--paper) var(--paper-tex); }
    .theme-garden .main-nav .nav-list > li { opacity: 0; transform: translateY(14px); transition: opacity .5s var(--organic), transform .6s var(--organic); }
    .theme-garden.menu-open .main-nav .nav-list > li { opacity: 1; transform: none; }
    .theme-garden.menu-open .main-nav .nav-list > li:nth-child(1) { transition-delay: .25s; }
    .theme-garden.menu-open .main-nav .nav-list > li:nth-child(2) { transition-delay: .31s; }
    .theme-garden.menu-open .main-nav .nav-list > li:nth-child(3) { transition-delay: .37s; }
    .theme-garden.menu-open .main-nav .nav-list > li:nth-child(4) { transition-delay: .43s; }
    .theme-garden.menu-open .main-nav .nav-list > li:nth-child(5) { transition-delay: .49s; }
    .theme-garden.menu-open .main-nav .nav-list > li:nth-child(6) { transition-delay: .55s; }
    .theme-garden .main-nav .nav-cta { position: relative; }
    .theme-garden .main-nav { padding-bottom: 180px; }
    .theme-garden .main-nav .nav-list::after { content: ""; position: fixed; right: -30px; bottom: -10px; width: 230px; height: 320px; pointer-events: none; opacity: .12; background: url("../img/fern-right.svg") right bottom / contain no-repeat; z-index: 0; }
}

/* ---------- leaf cursor accent (fine pointers only) ---------- */
@media (pointer: fine) {
    .theme-garden a[href], .theme-garden button, .theme-garden [data-lb-item] { cursor: url("../img/leaf-cursor.svg") 4 4, pointer; }
    .theme-garden .prose a, .theme-garden .link-arrow { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; text-decoration: none; transition: background-size .45s var(--organic); }
    .theme-garden .prose a:hover, .theme-garden .link-arrow:hover { background-size: 100% 1px; }
}

/* ---------- back to top: a small leaf ---------- */
.leaf-top { position: fixed; right: 18px; bottom: 18px; z-index: 90; width: 50px; height: 50px; border-radius: 50%; display: grid; place-items: center; color: var(--moss); background: rgba(251, 248, 242, .94); border: 1px solid var(--line); box-shadow: 0 10px 26px -12px rgba(23, 36, 28, .5); opacity: 0; transform: translateY(16px) rotate(-30deg); pointer-events: none; transition: opacity .4s, transform .6s var(--organic), color .2s; }
.leaf-top svg { width: 26px; height: 26px; }
.leaf-top.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.leaf-top:hover { color: var(--forest); animation: rustle 1.1s ease-in-out; }
.theme-garden .footer-bottom .to-top { display: none; }

/* ---------- drifting leaves canvas ---------- */
.leaf-drift { position: fixed; inset: 0; width: 100%; height: 100%; z-index: 60; pointer-events: none; }

/* ---------- footer ---------- */
.theme-garden .site-footer { background-color: #12241a; overflow: visible; margin-top: 70px; }
.footer-canopy { position: absolute; left: 0; right: 0; top: -68px; height: 70px; background: #12241a; -webkit-mask: url("../img/grass-bottom.svg") center bottom / 1100px 100% repeat-x; mask: url("../img/grass-bottom.svg") center bottom / 1100px 100% repeat-x; pointer-events: none; }
.footer-illo { position: absolute; right: 4%; bottom: 60px; width: clamp(160px, 18vw, 260px); height: auto; filter: invert(1) brightness(2.2); opacity: .07; pointer-events: none; }
.theme-garden .site-footer .footer-leaf { display: none; }

/* ---------- reduced motion: no drifting, swaying, parallax or dapple motion ---------- */
@media (prefers-reduced-motion: reduce) {
    .leaf-drift { display: none !important; }
    .hero-garden .hero-media img, .hero-dapple span, .hero-shadows, .fore-canopy, .fore-fern, .intro::before, .visit::before, .intro::after, .visit::after, .theme-garden .page-hero::after { animation: none !important; }
    .hero-garden .hero-back, .hero-fore img, .fore-grass { translate: none !important; }
    .js .reveal, .js .theme-garden .reveal, .js.theme-garden .reveal { opacity: 1 !important; transform: none !important; filter: none !important; }
    .theme-garden .main-nav::before, .theme-garden .main-nav::after { display: none; }
    .theme-garden .main-nav .nav-list > li { opacity: 1 !important; transform: none !important; }
}
@media print { .leaf-drift, .leaf-top, .hero-fore, .hero-dapple, .hero-shadows, .illo, .vine-divider, .footer-canopy { display: none !important; } }

@media (min-width: 1100px) {
    .theme-garden .nav-list > li > a, .theme-garden .nav-cta { white-space: nowrap; }
    .theme-garden .brand { flex: 1 1 auto; min-width: 0; }
    .theme-garden .main-nav, .theme-garden .lang-switch { flex: none; }
}
@media (min-width: 1100px) and (max-width: 1299px) {
    .theme-garden .brand-sub { display: none; }
    .theme-garden .main-nav { gap: 12px; }
    .theme-garden .nav-list > li > a { padding: 8px 8px; font-size: .9rem; }
    .theme-garden .nav-cta { padding: .6em 1.05em; }
}
