/* 根と葉 NE TO HA — organic, warm, handmade. Slow. A grower's notebook set on a real grid. */
:root {
  --sky: #f3eedd;
  --paper: #f1e8d3;
  --paper-2: #e9dec4;
  --sheet: #f6efdd;
  --kraft: #cdb88f;
  --moss: #586a35;
  --moss-2: #6f8247;
  --forest: #1b3524;
  --forest-2: #24432f;
  --ink: #1f2f1e;
  --ink-2: #4a5340;
  --terra: #b9582f;
  --terra-2: #c8643a;
  --ochre: #cf9a35;
  --soil: #3a2719;
  --soil-2: #281a10;
  --soil-3: #170e08;
  --bone: #efe6cf;
  --bone-2: #cfc3a6;

  --f-latin: "Fraunces", "Times New Roman", serif;
  --f-disp: "Zen Old Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --f-body: "Zen Maru Gothic", "Hiragino Maru Gothic ProN", "Yu Gothic", sans-serif;
  --f-hand: "Klee One", "Zen Maru Gothic", sans-serif;

  --grow: cubic-bezier(.16, .72, .18, 1);
  --unfurl: cubic-bezier(.3, 1.1, .35, 1);
  --slow: 1.5s;

  --gut: clamp(18px, 4.2vw, 64px);
  --gap: clamp(12px, 1.7vw, 26px);
  --blob: 46% 54% 52% 48% / 58% 44% 56% 42%;
  --blob-2: 54% 46% 44% 56% / 44% 56% 46% 54%;

  /* a hand-drawn rule, one long pen line that repeats far off-screen */
  --rule: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1400' height='10' viewBox='0 0 1400 10'%3E%3Cpath d='M0 5.6 C 90 3.4 170 7.3 280 5.2 S 470 3.1 610 5.8 S 840 7.4 980 4.6 S 1230 3.6 1400 5.6' fill='none' stroke='%231f2f1e' stroke-width='1.25' stroke-linecap='round'/%3E%3C/svg%3E");
  --rule-b: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1400' height='10' viewBox='0 0 1400 10'%3E%3Cpath d='M0 5.6 C 90 3.4 170 7.3 280 5.2 S 470 3.1 610 5.8 S 840 7.4 980 4.6 S 1230 3.6 1400 5.6' fill='none' stroke='%23efe6cf' stroke-width='1.25' stroke-linecap='round'/%3E%3C/svg%3E");
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; background: var(--sky); }
html.loading { overflow: hidden; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
body {
  margin: 0; color: var(--ink); background: var(--sky);
  font-family: var(--f-body); font-weight: 400; font-size: clamp(15px, 1.08vw, 16.5px); line-height: 1.95; letter-spacing: .035em;
  overflow-x: clip; -webkit-font-smoothing: antialiased;
}
canvas { display: block; }
a { color: inherit; }
h1, h2, h3, p, dl, dd, ol, ul, figure { margin: 0; padding: 0; }
ol, ul { list-style: none; }
button, input { font: inherit; color: inherit; letter-spacing: inherit; }
:focus-visible { outline: 2px solid var(--terra); outline-offset: 3px; border-radius: 4px; }
.vh { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.lk-switch img { max-width: none; width: 18px; }
.kp { display: inline-block; }

/* Japanese text discipline */
p, li, dd, h3, .lead, .lead-b { line-break: strict; word-break: auto-phrase; text-wrap: pretty; }
h1, h2 { line-break: strict; word-break: auto-phrase; text-wrap: balance; }
.hand { font-family: var(--f-hand); }

/* layer order: band colours < plant canvas < content */
#plant { position: fixed; left: 0; top: 0; width: 100vw; height: 100lvh; z-index: 2; pointer-events: none; }
.nojs #plant, .nojs #loader, .nojs .depth { display: none; }
section, footer { position: relative; }
.wrap { position: relative; z-index: 3; width: min(100% - var(--gut) * 2, 1400px); margin-inline: auto; }
.band { position: absolute; inset: 0; }
.band-forest { background: var(--forest); }
.band-moss { background: var(--moss); }

.above { background: linear-gradient(180deg, #f4f1e2 0, #f3eedd 900px, #f1e8d3 40%, #eee2c9 100%); }
.below { background: linear-gradient(180deg, var(--soil) 0, #34221a 12%, var(--soil-2) 45%, var(--soil-3) 100%); color: var(--bone); }

/* --------------------------------------------------- shared pieces */
.eyebrow { display: flex; align-items: baseline; gap: .9em; font: italic 400 clamp(14px, 1.15vw, 17px)/1.4 var(--f-latin); letter-spacing: .02em; font-variation-settings: "SOFT" 100, "WONK" 1; }
.eyebrow span { font-style: normal; font-size: max(.82em, 12px); font-feature-settings: "tnum"; padding: .05em .55em; border: 1px solid currentColor; border-radius: var(--blob); }
h2 { font-family: var(--f-disp); font-weight: 700; letter-spacing: .04em; line-height: 1.34; }
.lead { font-family: var(--f-disp); font-weight: 500; font-size: clamp(16px, 1.32vw, 20px); line-height: 2; letter-spacing: .05em; }
.rule { height: 10px; background: var(--rule) repeat-x left center; }

/* reveals: nothing is clipped, things rise a little and settle like a shoot */
.js:not(.nojs) .rv { opacity: 0; transform: translateY(26px); transition: opacity var(--slow) var(--grow), transform var(--slow) var(--grow); transition-delay: var(--d, 0s); }
.js:not(.nojs) .rv.in { opacity: 1; transform: none; }
.js:not(.nojs) .rv-k .kp { opacity: 0; transform: translateY(.42em) rotate(.6deg); transform-origin: left bottom; transition: opacity 1.3s var(--grow), transform 1.7s var(--grow); }
.js:not(.nojs) .rv-k.in .kp { opacity: 1; transform: none; }
.rv-k .kp:nth-child(2) { transition-delay: .14s; }
.rv-k .kp:nth-child(3) { transition-delay: .28s; }
.rv-k .kp:nth-child(4) { transition-delay: .42s; }
.js:not(.nojs) .rv-rule { clip-path: inset(-4px 100% -4px 0); transition: clip-path 2.4s var(--grow); }
.js:not(.nojs) .rv-rule.in { clip-path: inset(-4px 0 -4px 0); }

/* --------------------------------------------------- loader */
#loader {
  position: fixed; inset: 0; z-index: 99999; background: var(--soil-2); color: var(--bone);
  display: none; place-items: center; align-content: center; gap: 22px;
}
.js #loader { display: grid; animation: loader-safety .01s 9s forwards; }
@keyframes loader-safety { to { visibility: hidden; } }
.sprout { width: min(46vw, 46vh, 340px); height: auto; overflow: visible; }
.loader-cap { display: flex; flex-direction: column; align-items: center; gap: 2px; font-family: var(--f-disp); font-weight: 700; font-size: 17px; letter-spacing: .34em; padding-left: .34em; }
.loader-cap em { font: italic 300 13px/1.5 var(--f-latin); letter-spacing: .03em; color: var(--bone-2); padding: 0; }

/* --------------------------------------------------- header + depth */
.hd {
  position: fixed; left: 0; right: 0; top: 0; z-index: 80; display: flex; align-items: center; gap: 24px;
  padding: clamp(10px, 1.1vw, 16px) var(--gut); color: var(--ink); transition: color .8s var(--grow), opacity 1.2s var(--grow) .4s;
  pointer-events: none; transition: color .8s var(--grow), opacity 1.2s var(--grow) .4s, transform .9s var(--grow);
}
.hd.is-away { transform: translateY(-110%); }
.hd > * { pointer-events: auto; }
.js:not(.gate):not(.nojs) .hd { opacity: 0; }
.hd[data-tone="dark"] { color: var(--bone); }
.hd-mark { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; min-height: 44px; }
.lk-mark { width: 38px; height: 32px; display: block; }
.hd-name { display: flex; align-items: baseline; gap: .7em; }
.hd-name b { font: 700 18px/1 var(--f-disp); letter-spacing: .12em; }
.hd-name i { font: italic 400 15px/1 var(--f-latin); font-variation-settings: "SOFT" 100, "WONK" 1; }
.hd-nav { margin-left: auto; display: flex; gap: clamp(14px, 1.9vw, 30px); padding: 0 20px; border-radius: var(--blob); transition: background .8s var(--grow); }
/* a paper tab, so the links stay readable where they cross the dark leaf shape */
.hd:not([data-tone="dark"]) .hd-nav { background: rgba(243, 238, 224, .92); }
.hd-nav a { position: relative; display: inline-flex; align-items: center; min-height: 44px; font-size: 13.5px; letter-spacing: .1em; text-decoration: none; }
.hd-nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 8px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .8s var(--grow); }
@media (hover:hover) { .hd-nav a:hover::after { transform: scaleX(1); } }
.hd-cta { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 20px; font-size: 13.5px; letter-spacing: .1em; text-decoration: none; background: var(--forest); color: var(--bone); border-radius: var(--blob); transition: border-radius 1.2s var(--grow), background .8s var(--grow), color .8s var(--grow); }
.hd[data-tone="dark"] .hd-cta { background: var(--bone); color: var(--forest); }
@media (hover:hover) { .hd-cta:hover { border-radius: var(--blob-2); } }
.hd-cta b { font: 500 12px/1 var(--f-latin); padding: 3px 7px; border-radius: 50%; background: var(--terra); color: #fff6e6; }

.depth { position: fixed; right: var(--gut); bottom: 22px; z-index: 70; color: var(--ink); background: #fbf6e6; border: 1px solid rgba(60, 45, 20, .55); box-shadow: 1.5px 1.5px 0 rgba(60, 45, 20, .18); padding: 7px 12px 7px 10px; transform: rotate(-1.2deg); transition: opacity 1.5s var(--grow) .8s; pointer-events: none; display: grid; grid-template-columns: auto 1fr; column-gap: 11px; align-items: end; }
.js:not(.gate):not(.nojs) .depth { opacity: 0; }
.depth-scale { grid-row: 1 / 3; position: relative; width: 11px; height: 52px; border-left: 1px solid currentColor; background: repeating-linear-gradient(180deg, currentColor 0 1px, transparent 1px 8.5px) left top / 6px 100% no-repeat; }
.depth-seed { position: absolute; left: -5px; top: 0; width: 9px; height: 13px; background: var(--terra); border-radius: 58% 42% 50% 50% / 62% 62% 38% 38%; }
.depth-read { font: 400 22px/1 var(--f-latin); font-feature-settings: "tnum", "lnum"; font-variation-settings: "SOFT" 100, "WONK" 0, "opsz" 40; letter-spacing: 0; }
.depth-read small { font-size: 13px; margin-left: 3px; font-style: italic; }
.depth-zone { font: 400 12.5px/1.5 var(--f-hand); letter-spacing: .06em; margin-top: 2px; }

/* --------------------------------------------------- hero */
.hero { height: 100svh; min-height: 620px; overflow: clip; }
.hero-inner { position: relative; z-index: 3; height: 100%; width: 100%; padding: 0 var(--gut); }
.hero-word {
  display: block; font: 900 min(14.6vw, 26vh)/.98 var(--f-disp); letter-spacing: .01em; color: var(--forest);
  position: relative;
}
.hero-word .ch { display: inline-block; transform-origin: 50% 100%; }
.hero-word .to { font-size: .6em; font-weight: 700; margin-inline: .05em; color: var(--terra); }
.js:not(.nojs) .hero-word .ch { opacity: 0; transform: translateY(.16em) scale(.97, .86); transition: opacity 1.4s var(--grow), transform 2.2s var(--unfurl); }
.js.gate:not(.nojs) .hero-word .ch { opacity: 1; transform: none; }
.hero-word .ch:nth-child(1) { transition-delay: .45s !important; }
.hero-word .ch:nth-child(2) { transition-delay: .7s !important; }
.hero-word .ch:nth-child(3) { transition-delay: .95s !important; }
.hero-roman { position: absolute; left: .08em; top: -1.12em; font: italic 300 clamp(26px, 3.6vw, 56px)/1 var(--f-latin); color: var(--ink); letter-spacing: 0; font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144; }
.hero-lockup { position: absolute; left: var(--gut); bottom: clamp(38px, 7.4vh, 74px); width: min(62vw, 880px); }
.hero-lead { font: 500 clamp(15px, 1.34vw, 20px)/1.95 var(--f-disp); letter-spacing: .06em; margin-top: 16px; max-width: 34em; }
.hero-cue { display: inline-flex; align-items: center; gap: 12px; margin-top: 8px; min-height: 44px; font: 400 14px/1.5 var(--f-hand); letter-spacing: .06em; text-decoration: none; color: var(--terra); }
.cue-stem { width: 2px; height: 34px; background: var(--terra); border-radius: 2px; transform-origin: top; animation: cue 3.4s var(--grow) infinite; }
@keyframes cue { 0% { transform: scaleY(.1); opacity: .2; } 55% { transform: scaleY(1); opacity: 1; } 100% { transform: scaleY(1) translateY(10px); opacity: 0; } }
.hero-plate { position: absolute; left: var(--gut); top: clamp(72px, 11vh, 110px); font: 400 13.5px/1.6 var(--f-hand); letter-spacing: .06em; }
.hero-plate span { font: italic 400 15px/1 var(--f-latin); margin-right: .6em; }
.hero-plate i { font: italic 300 13.5px/1.5 var(--f-latin); letter-spacing: .01em; font-variation-settings: "SOFT" 100, "WONK" 1; }
.hero-fig { position: absolute; left: 47vw; bottom: 86px; width: 11.5em; font: 400 13.5px/1.75 var(--f-hand); color: var(--ink); text-align: left; }
.hero-fig b { display: block; font: italic 400 15px/1.4 var(--f-latin); }
.js:not(.nojs) .rv-h { opacity: 0; transform: translateY(14px); transition: opacity 1.6s var(--grow) 1.5s, transform 1.9s var(--grow) 1.5s; }
.js.gate:not(.nojs) .rv-h { opacity: 1; transform: none; }

/* --------------------------------------------------- philosophy */
.phil { padding: clamp(110px, 17vh, 200px) 0 clamp(120px, 18vh, 220px); }
.phil .wrap { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); }
.phil .eyebrow { grid-column: 1 / 8; margin-bottom: 26px; }
.phil-h { grid-column: 1 / 10; font-size: clamp(38px, 6vw, 94px); line-height: 1.28; font-weight: 700; color: var(--forest); letter-spacing: .03em; }
.phil .rule { grid-column: 1 / 8; margin: clamp(36px, 5vh, 64px) 0; }
.phil-body { grid-column: 2 / 8; display: grid; gap: 1.5em; font-size: clamp(15.5px, 1.16vw, 17.5px); }
.phil-facts { grid-column: 1 / 9; margin-top: clamp(60px, 10vh, 120px); display: grid; grid-template-columns: repeat(8, 1fr); column-gap: var(--gap); row-gap: 36px; }
.fact dt { font: 400 13.5px/1.5 var(--f-hand); letter-spacing: .06em; }
.fact dd { font: 300 clamp(58px, 6.4vw, 104px)/1.05 var(--f-latin); font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144; letter-spacing: -.01em; color: var(--terra); font-feature-settings: "lnum"; }
.fact dd small { font-size: .28em; font-style: italic; margin-left: .15em; color: var(--ink); letter-spacing: 0; }
.fact .note { font: 400 13.5px/1.8 var(--f-hand); letter-spacing: .04em; color: var(--ink-2); }
.fact-a { grid-column: 1 / 4; }
.fact-b { grid-column: 4 / 7; margin-top: 56px; }
.fact-c { grid-column: 2 / 5; margin-top: 8px; }
.anno { position: absolute; z-index: 3; left: var(--ax); top: var(--ay); font: 400 13.5px/1.75 var(--f-hand); letter-spacing: .05em; color: var(--ink); }
.anno b { display: block; font: italic 400 15px/1.3 var(--f-latin); }

/* --------------------------------------------------- seasons */
.seasons { height: 480vh; }
.s-pin { position: sticky; top: 0; height: 100svh; overflow: hidden; z-index: 4; background: #e7ebcd; color: #1f2f1e; --sink: #1f2f1e; }
.s-pin[data-season="1"] { --sink: #efe6cf; color: #efe6cf; }
.s-pin[data-season="2"] { --sink: #21130a; color: #21130a; }
.s-pin[data-season="3"] { --sink: #23291f; color: #23291f; }
.s-pin { transition: color .9s var(--grow); }
#seasonCanvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.s-head { position: absolute; left: var(--gut); top: clamp(84px, 12vh, 124px); z-index: 2; }
.s-sub { margin-top: 8px; font: italic 400 clamp(15px, 1.25vw, 18px)/1.6 var(--f-latin); font-variation-settings: "SOFT" 100, "WONK" 1; }
.s-sub-j { font: 400 14px/1.6 var(--f-hand); margin-left: 1em; }
.s-panels { position: absolute; left: var(--gut); top: clamp(190px, 29vh, 300px); width: min(33vw, 460px); z-index: 2; }
.s-panel { position: absolute; left: 0; top: 0; width: 100%; opacity: 0; transform: translateY(18px); transition: opacity .9s var(--grow), transform 1.2s var(--grow); }
.nojs .s-panel { position: static; opacity: 1; transform: none; margin-bottom: 2em; }
.nojs .seasons { height: auto; } .nojs .s-pin { position: relative; height: auto; padding: 120px var(--gut) 60px; overflow: visible; }
.nojs .s-panels, .nojs .s-head { position: static; width: auto; } .nojs .s-ruler, .nojs #seasonCanvas { display: none; }
.s-panel.is-on { opacity: 1; transform: none; }
.s-en { font: italic 300 clamp(20px, 2vw, 30px)/1 var(--f-latin); font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144; }
.s-panel h3 { font: 900 clamp(96px, 12.5vw, 200px)/1.04 var(--f-disp); letter-spacing: 0; margin-bottom: 8px; }
.s-panel h3 small { display: block; font: 400 14px/1.7 var(--f-hand); letter-spacing: .08em; margin-top: 6px; }
.s-text { font-size: clamp(15px, 1.14vw, 17px); }
.s-log { margin-top: 12px; font: 400 13.5px/1.6 var(--f-hand); letter-spacing: .06em; }
.s-ruler { position: absolute; right: calc(var(--gut) + 150px); left: 42%; bottom: 74px; z-index: 2; display: flex; justify-content: space-between; color: var(--bone); font: 400 13px/1 var(--f-latin); font-feature-settings: "lnum", "tnum"; padding-top: 14px; border-top: 1px solid rgba(239, 230, 207, .55); }
.s-ruler span { width: 1.6em; text-align: center; }
.s-marker { position: absolute; left: 0; top: -7px; width: 12px; height: 14px; margin-left: -6px; background: var(--terra-2); border-radius: 58% 42% 50% 50% / 62% 62% 38% 38%; }

/* --------------------------------------------------- herbarium */
.herb { padding: clamp(110px, 16vh, 190px) 0 clamp(120px, 18vh, 200px); }
@media (min-width: 768px) { .herb .wrap, .goods .wrap, .cal .wrap, .garden .wrap { width: auto; margin: 0 clamp(92px, 9vw, 150px) 0 var(--gut); } }
.herb.has-open .wrap { z-index: 8; }
.herb-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(20px, 2.5vw, 40px) var(--gap); align-items: start; }
.herb-intro { grid-column: span 2; padding-right: 8%; padding-bottom: 20px; }
.herb-intro h2 { font-size: clamp(56px, 8vw, 128px); line-height: 1.16; color: var(--forest); margin: 16px 0 18px; }
.herb-fallback { grid-column: 1 / -1; line-height: 2.2; }
.js:not(.nojs) .herb-fallback { display: none; }
.herb-end { grid-column: span 2; padding: 34px 0 0 8%; align-self: center; }
.herb-end .hand { display: block; font: italic 400 clamp(22px, 2.3vw, 36px)/1.3 var(--f-latin); color: var(--terra); font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 100; margin-bottom: 10px; }
.herb-end-t { font-size: 15.5px; display: block; }

.spec { position: relative; display: block; margin-top: var(--mt, 0); }
.spec-sheet {
  position: relative; display: block; width: 100%; aspect-ratio: 3 / 4.15; padding: 0; border: 0; cursor: pointer; text-align: left;
  background: var(--sheet); box-shadow: 0 1px 0 rgba(90, 70, 30, .22), 0 14px 26px -18px rgba(70, 50, 20, .6);
  transition: transform 1.1s var(--grow), box-shadow 1.1s var(--grow); transform: rotate(var(--r, 0deg)); color: var(--ink);
}
@media (hover:hover) { .spec-sheet:hover { transform: rotate(0deg) translateY(-6px); box-shadow: 0 2px 0 rgba(90, 70, 30, .25), 0 26px 38px -20px rgba(70, 50, 20, .62); } }
.spec-sheet canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.spec-label {
  position: absolute; right: 8px; bottom: 8px; width: min(66%, 188px); padding: 7px 9px 8px; background: #fbf6e6;
  border: 1px solid rgba(60, 45, 20, .5); box-shadow: 1.5px 1.5px 0 rgba(60, 45, 20, .16);
  font: 400 12px/1.5 var(--f-hand); letter-spacing: .03em;
}
.spec-label b { display: block; font: 600 clamp(13.5px, 1.1vw, 15.5px)/1.4 var(--f-hand); letter-spacing: .05em; }
.spec-label i { display: block; font: italic 400 12.5px/1.25 var(--f-latin); letter-spacing: 0; color: var(--ink-2); }
.spec-no { position: absolute; left: 10px; top: 8px; font: 400 12px/1.4 var(--f-hand); color: var(--ink-2); }
.spec-open { position: absolute; right: 10px; top: 8px; font: 400 12px/1.4 var(--f-hand); color: var(--terra); }

.flap {
  position: absolute; z-index: 10; top: 26px; width: calc(200% + var(--gap)); padding: clamp(18px, 2vw, 30px); background: #fbf6e6; color: var(--ink);
  border: 1px solid rgba(60, 45, 20, .5); box-shadow: 0 30px 60px -24px rgba(50, 35, 15, .6);
  transform-origin: left center; transform: perspective(1400px) rotateY(-96deg); opacity: 0; visibility: hidden;
  transition: transform 1.25s var(--unfurl), opacity .35s linear, visibility 0s 1.25s; display: grid; gap: 10px; align-content: start;
}
.flap.to-right { left: 100%; }
.flap.to-left { right: 100%; transform-origin: right center; transform: perspective(1400px) rotateY(96deg); }
.spec.is-open .flap { transform: perspective(1400px) rotateY(0); opacity: 1; visibility: visible; transition: transform 1.25s var(--unfurl), opacity .25s linear, visibility 0s; }
.spec.is-open { z-index: 9; }
.flap h3 { font: 700 clamp(22px, 2.2vw, 32px)/1.3 var(--f-disp); letter-spacing: .05em; padding-right: 48px; }
.flap h3 i { display: block; font: italic 400 15px/1.5 var(--f-latin); letter-spacing: 0; color: var(--ink-2); }
.flap dl { display: grid; grid-template-columns: auto 1fr; gap: 2px 14px; font-size: 13.5px; line-height: 1.75; }
.flap dt { font-family: var(--f-hand); color: var(--terra); white-space: nowrap; }
.flap .flap-note { font: 400 14.5px/1.95 var(--f-hand); letter-spacing: .04em; }
.flap-close { position: absolute; right: 8px; top: 8px; width: 44px; height: 44px; border: 0; background: none; cursor: pointer; border-radius: 50%; font: 300 26px/1 var(--f-latin); color: var(--ink); }
@media (hover:hover) { .flap-close:hover { color: var(--terra); } }

/* --------------------------------------------------- goods */
.goods { padding: clamp(100px, 15vh, 170px) 0 clamp(120px, 16vh, 180px); color: var(--bone); }
.goods-head { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); align-items: end; margin-bottom: clamp(50px, 8vh, 90px); }
.goods-head .eyebrow { grid-column: 1 / -1; margin-bottom: 18px; }
.goods-head h2 { grid-column: 1 / 7; font-size: clamp(50px, 8.2vw, 136px); line-height: 1.16; }
.goods-head .lead { grid-column: 1 / 7; padding-top: 16px; }
.goods-grid { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); row-gap: clamp(56px, 9vh, 110px); }
.good-fig { position: relative; width: 100%; }
.good-fig canvas { width: 100%; height: 100%; }
.good h3 { font: 700 clamp(19px, 1.7vw, 25px)/1.45 var(--f-disp); letter-spacing: .05em; }
.good h3 small { display: block; font: italic 300 clamp(14px, 1.1vw, 16px)/1.5 var(--f-latin); letter-spacing: .01em; color: var(--bone-2); font-variation-settings: "SOFT" 100, "WONK" 1; }
.good-text p { margin-top: 8px; font-size: 14.5px; line-height: 1.9; }
.good-text .price { font: 400 clamp(21px, 1.9vw, 27px)/1.3 var(--f-latin); font-feature-settings: "lnum"; margin-top: 12px; letter-spacing: 0; font-variation-settings: "SOFT" 100, "WONK" 0; }
.price small { display: block; margin-top: 2px; font: 400 13px/1.5 var(--f-hand); letter-spacing: .04em; color: var(--bone-2); }
.keep {
  margin-top: 14px; min-height: 44px; padding: 0 22px; background: transparent; color: var(--bone); border: 1px solid currentColor; cursor: pointer;
  border-radius: var(--blob); font-size: 13.5px; letter-spacing: .1em; transition: background .9s var(--grow), color .9s var(--grow), border-radius 1.2s var(--grow);
}
@media (hover:hover) { .keep:hover { background: var(--bone); color: var(--forest); border-radius: var(--blob-2); } }
.keep[aria-pressed="true"] { background: var(--terra); border-color: var(--terra); color: #fff6e6; }
.good-1 { grid-column: 1 / 8; grid-row: 1 / 3; display: flex; flex-direction: column; }
.good-1 .good-fig { flex: 1; min-height: 520px; }
.good-1 .good-text { display: grid; grid-template-columns: 1.15fr 1fr; column-gap: var(--gap); margin-top: 14px; }
.good-1 .good-text h3, .good-1 .good-text > p:first-of-type { grid-column: 1; }
.good-1 .good-text .price { grid-column: 2; grid-row: 1 / 3; margin-top: 2px; }
.good-1 .good-text .keep { grid-column: 2; grid-row: 2; align-self: end; justify-self: start; }
.good-2 { grid-column: 9 / 13; }
.good-2 .good-fig { aspect-ratio: 1 / .82; }
.good-3 { grid-column: 9 / 13; margin-top: 10px; }
.good-3 .good-fig { aspect-ratio: 1 / 1.06; }
.good-4 { grid-column: 1 / 5; margin-top: 30px; }
.good-4 .good-fig { aspect-ratio: 1 / 1.06; }
.good-5 { grid-column: 5 / 9; margin-top: 90px; }
.good-5 .good-fig { aspect-ratio: 1 / 1.08; }
.good-6 { grid-column: 9 / 13; margin-top: 0; }
.good-6 .good-fig { aspect-ratio: 1 / .78; }
.good .good-fig canvas { transition: transform 1.4s var(--grow); transform-origin: 50% 88%; }
@media (hover:hover) { .good:hover .good-fig canvas.g-item { transform: rotate(-1.6deg) translateY(-5px); } }
.good-fig canvas { position: absolute; inset: 0; }

/* --------------------------------------------------- calendar */
.cal { padding: clamp(110px, 16vh, 180px) 0 clamp(110px, 15vh, 170px); }
.cal-head { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); align-items: end; margin-bottom: clamp(30px, 5vh, 60px); }
.cal-head .eyebrow { grid-column: 1 / -1; margin-bottom: 16px; }
.cal-head h2 { grid-column: 1 / 7; font-size: clamp(50px, 7.6vw, 124px); line-height: 1.16; color: var(--forest); }
.cal-note { grid-column: 8 / 12; padding-bottom: 16px; min-height: 8.6em; }
.cal-note-m { font: 400 14px/1.5 var(--f-hand); letter-spacing: .08em; }
.cal-note-m b { font: 300 46px/1 var(--f-latin); color: var(--terra); margin-right: 4px; font-feature-settings: "lnum"; font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144; }
.cal-note-t { margin-top: 6px; font: 400 16px/1.9 var(--f-hand); letter-spacing: .04em; }
.cal-table-wrap { padding-right: clamp(0px, 3vw, 44px); }
.cal-table { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.cal-table th, .cal-table td { padding: 0; font-weight: 400; }
.cal-name-h { width: 21%; text-align: left; font: 400 13px/1 var(--f-hand); letter-spacing: .08em; vertical-align: bottom; padding-bottom: 12px !important; }
.m-btn { width: 100%; min-height: 44px; background: none; border: 0; cursor: pointer; font: 400 clamp(14px, 1.2vw, 17px)/1 var(--f-latin); font-feature-settings: "lnum"; color: var(--ink); border-radius: var(--blob); transition: background .8s var(--grow), color .8s var(--grow); }
.m-btn[aria-pressed="true"] { background: var(--terra); color: #fff6e6; }
@media (hover:hover) { .m-btn:hover:not([aria-pressed="true"]) { background: var(--paper-2); } }
.cal-row th { text-align: left; padding: 11px 10px 11px 0 !important; background: var(--rule) repeat-x left top; }
.cal-row td { background: var(--rule) repeat-x left top; position: relative; height: 62px; }
.cal-row th b { display: block; font: 700 clamp(15px, 1.3vw, 19px)/1.35 var(--f-disp); letter-spacing: .06em; }
.cal-row th i { display: block; font: italic 300 13px/1.3 var(--f-latin); letter-spacing: .01em; color: var(--ink-2); }
.cal-row td.is-now::before { content: ""; position: absolute; inset: 2px 0 0; background: rgba(185, 88, 47, .1); }
.mk { position: absolute; left: -.5px; right: -.5px; top: 15px; bottom: 13px; display: block; background: var(--c, var(--moss-2)); transform-origin: left center; border-radius: 3px; }
.mk.a { border-radius: 2px; }
.mk.first { border-top-left-radius: 62% 50%; border-bottom-left-radius: 44% 50%; left: 4px; }
.mk.last { border-top-right-radius: 52% 50%; border-bottom-right-radius: 66% 50%; right: 4px; }
.mk.b { background: none; top: 22px; bottom: 20px; border-top: 1.5px solid var(--c); border-bottom: 1.5px solid var(--c); border-radius: 0; background-image: repeating-linear-gradient(112deg, var(--c) 0 1px, transparent 1px 5px); }
.mk.b.first { border-left: 1.5px solid var(--c); border-radius: 50% 0 0 50%; }
.mk.b.last { border-right: 1.5px solid var(--c); border-radius: 0 50% 50% 0; }
.js:not(.nojs) .cal-table .mk { transform: scaleX(0); transition: transform 1s var(--grow) var(--d, 0s); }
.js:not(.nojs) .cal-table.in .mk { transform: none; }
.cal-legend { display: flex; flex-wrap: wrap; gap: 8px 26px; margin-top: 22px; font-size: 13.5px; align-items: center; }
.cal-legend span { display: inline-flex; align-items: center; gap: 8px; }
.lg { display: inline-block; width: 28px; height: 13px; border-radius: 50%; background: var(--moss-2); }
.lg-b { background: repeating-linear-gradient(112deg, var(--moss-2) 0 1px, transparent 1px 5px); border-top: 1px solid var(--moss-2); border-bottom: 1px solid var(--moss-2); border-radius: 0; height: 9px; }

/* --------------------------------------------------- garden */
.garden { padding: clamp(90px, 14vh, 150px) 0 clamp(80px, 12vh, 130px); color: var(--bone); }
.garden-wrap { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); row-gap: 18px; }
.garden-head { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); align-items: end; margin-bottom: 18px; }
.garden-head .eyebrow { grid-column: 1 / -1; margin-bottom: 14px; }
.garden-head h2 { grid-column: 1 / 7; font-size: clamp(50px, 7.6vw, 124px); line-height: 1.16; }
.garden-head .lead { grid-column: 7 / 13; padding-bottom: 14px; }
.sheet { grid-column: 1 / 10; position: relative; margin: 0; background: var(--sheet); box-shadow: 0 20px 44px -24px rgba(20, 28, 12, .75); height: min(78vh, 720px); min-height: 500px; }
#gardenCanvas { position: absolute; inset: 0; width: 100%; height: 100%; touch-action: pan-y; cursor: crosshair; }
#gardenCanvas:focus-visible { outline: 3px solid var(--terra); outline-offset: 3px; }
.sheet.is-drawing { box-shadow: 0 0 0 3px var(--terra), 0 20px 44px -24px rgba(20, 28, 12, .75); }
.sheet.is-drawing #gardenCanvas { touch-action: none; }
.sheet-tag { position: absolute; left: 14px; top: 10px; font-size: 13px; color: var(--ink-2); pointer-events: none; line-height: 1.5; }
.sheet-tag b { font: italic 400 14px/1 var(--f-latin); margin-right: 6px; }
.sheet-hint { position: absolute; right: 14px; top: 10px; color: var(--terra); font: 400 13.5px/1.5 var(--f-hand); letter-spacing: .05em; pointer-events: none; transition: opacity 1s var(--grow); }
.sheet-hint.gone { opacity: 0; }
.hint-touch { display: none; }
@media (hover:none) { .hint-mouse { display: none; } .hint-touch { display: inline; } }
.garden-tools { grid-column: 1 / 10; grid-row: 3; display: flex; flex-wrap: wrap; gap: 8px; }
.tool { min-height: 44px; padding: 0 20px; background: var(--bone); color: var(--forest); border: 0; cursor: pointer; border-radius: var(--blob); font-size: 13.5px; letter-spacing: .08em; transition: border-radius 1.1s var(--grow), background .8s var(--grow), color .8s var(--grow); }
@media (hover:hover) { .tool:hover { border-radius: var(--blob-2); background: #fff8e8; } }
.tool-q { background: transparent; color: var(--bone); box-shadow: inset 0 0 0 1px currentColor; }
@media (hover:hover) { .tool-q:hover { background: rgba(239, 230, 207, .14); } }
.tool-mode { display: none; background: var(--ochre); color: #24180a; }
.tool-mode .tool-on { display: none; }
.tool-mode[aria-pressed="true"] { background: var(--terra); color: #fff6e6; }
.tool-mode[aria-pressed="true"] .tool-on { display: inline; }
.tool-mode[aria-pressed="true"] .tool-off { display: none; }
@media (hover:none), (pointer:coarse) { .tool-mode { display: inline-block; } #vineBtn { display: none; } }
.garden-log { grid-column: 10 / 13; grid-row: 2 / 4; min-width: 0; padding-left: 6px; }
.garden-log h3 { display: flex; justify-content: space-between; align-items: baseline; font-weight: 600; font-size: 17px; letter-spacing: .05em; padding-bottom: 6px; background: var(--rule-b) repeat-x left bottom; }
.garden-log h3 small { font: italic 400 13px/1 var(--f-latin); letter-spacing: 0; }
#logList { max-height: 560px; overflow: auto; overscroll-behavior: auto; scrollbar-width: thin; display: grid; gap: 8px; margin-top: 10px; }
.log-item { background: #fbf6e6; color: var(--ink); padding: 8px 10px 9px; transform: rotate(var(--r, 0deg)); border: 1px solid rgba(60, 45, 20, .5); font: 400 12.5px/1.5 var(--f-hand); animation: tag-in 1.5s var(--unfurl) both; }
.log-item b { display: block; font: 600 15px/1.4 var(--f-hand); letter-spacing: .05em; }
.log-item i { display: block; font: italic 400 13.5px/1.3 var(--f-latin); letter-spacing: 0; }
.log-item span { display: block; color: var(--ink-2); margin-top: 3px; }
@keyframes tag-in { from { transform: translateY(-8px) rotate(4deg); opacity: 0; transform-origin: 20% 0; } }
.log-foot { margin-top: 12px; font-size: 12.5px; line-height: 1.8; color: var(--bone-2); }

/* --------------------------------------------------- ground */
.ground { height: clamp(340px, 52vh, 520px); }
.ground-t { position: absolute; z-index: 3; left: var(--gut); bottom: 250px; font: 700 clamp(22px, 2.9vw, 44px)/1.5 var(--f-disp); letter-spacing: .05em; color: var(--forest); }

/* --------------------------------------------------- soil */
.soil { padding: clamp(150px, 24vh, 240px) 0 clamp(60px, 10vh, 120px); }
.zero { position: absolute; z-index: 3; left: var(--gut); top: -.62em; font: 300 clamp(76px, 15vw, 250px)/1 var(--f-latin); font-variation-settings: "SOFT" 100, "WONK" 1, "opsz" 144; font-feature-settings: "lnum"; letter-spacing: -.02em; color: var(--bone); mix-blend-mode: normal; pointer-events: none; text-shadow: none; }
.zero small { font-size: .2em; font-style: italic; margin-left: .15em; }
.zero span { background: linear-gradient(180deg, var(--terra) 0 62%, var(--bone) 62%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.zero small { color: var(--bone); }
.soil-wrap { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); }
.soil-main { grid-column: 1 / 7; }
.soil-main h2 { font-size: clamp(38px, 5.2vw, 84px); line-height: 1.32; margin: 20px 0 30px; }
.lead-b { margin-top: 1.3em; font-size: clamp(15.5px, 1.16vw, 17.5px); }
.horizons { grid-column: 7 / 10; display: grid; gap: clamp(130px, 20vh, 220px); padding-top: clamp(200px, 40vh, 400px); }
.hz { display: grid; gap: 2px; padding-left: 16px; background: var(--rule-b) repeat-x left top; background-size: 1400px 10px; padding-top: 14px; }
.hz-d { font: 400 14px/1.4 var(--f-latin); font-feature-settings: "lnum", "tnum"; color: var(--ochre); }
.hz b { font: 700 clamp(19px, 1.8vw, 26px)/1.4 var(--f-disp); letter-spacing: .08em; }
.hz-t { font: 400 14px/1.9 var(--f-hand); letter-spacing: .04em; }

/* --------------------------------------------------- journal */
.journal { padding: clamp(70px, 12vh, 130px) 0 clamp(90px, 15vh, 160px); }
.journal-head h2 { font-size: clamp(50px, 7.6vw, 124px); line-height: 1.16; margin-top: 16px; }
.tags { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); row-gap: clamp(40px, 7vh, 70px); margin-top: clamp(40px, 7vh, 70px); align-items: start; }
.tag {
  position: relative; background: var(--sheet); color: var(--ink); padding: 42px clamp(22px, 2.2vw, 32px) 26px; --rot: 0deg;
  clip-path: polygon(0 26px, 26px 0, calc(100% - 26px) 0, 100% 26px, 100% 100%, 0 100%);
  background-image: radial-gradient(circle at 50% 22px, var(--soil-2) 0 6px, rgba(205, 184, 143, .9) 6px 8px, transparent 8.5px);
}
.js:not(.nojs) .tag.rv { transform: translateY(26px) rotate(var(--rot)); }
.js:not(.nojs) .tag.rv.in, .tag { transform: rotate(var(--rot)); }
.tag-1 { grid-column: 1 / 6; --rot: -1deg; }
.tag-2 { grid-column: 7 / 12; margin-top: 110px; --rot: .9deg; }
.tag-3 { grid-column: 2 / 7; margin-top: -30px; --rot: .7deg; }
.tag-4 { grid-column: 8 / 13; margin-top: 70px; --rot: -.8deg; }
.tag-meta { font: 400 13px/1.6 var(--f-hand); letter-spacing: .04em; color: var(--ink-2); }
.tag h3 { font: 700 clamp(21px, 2vw, 29px)/1.5 var(--f-disp); letter-spacing: .06em; color: var(--forest); margin: 4px 0 8px; }
.tag > p:not(.tag-meta):not(.tag-by) { font: 400 clamp(15px, 1.1vw, 16.5px)/2 var(--f-hand); letter-spacing: .04em; }
.tag-by { margin-top: 10px; text-align: right; font: 400 13px/1.5 var(--f-hand); color: var(--terra); }

/* --------------------------------------------------- letter */
.letter { padding: clamp(40px, 7vh, 90px) 0 clamp(90px, 14vh, 150px); }
.letter-wrap { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); }
.letter-blob {
  grid-column: 2 / 12; position: relative; background: var(--terra); color: #fff6e6; padding: clamp(60px, 9vw, 130px) clamp(44px, 8vw, 130px);
  border-radius: 48% 52% 46% 54% / 22% 18% 26% 20%; display: grid; grid-template-columns: repeat(10, 1fr); column-gap: var(--gap); align-items: center;
}
.letter-copy { grid-column: 1 / 5; }
.letter-copy h2 { font-size: clamp(40px, 4.7vw, 74px); line-height: 1.2; margin: 14px 0 16px; }
.letter-t { font-size: 15px; }
.letter-form { grid-column: 6 / 11; display: grid; gap: 14px; }
.plans { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.plan { position: relative; display: block; cursor: pointer; }
.plan input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; cursor: pointer; }
.plan span { display: block; padding: 11px 14px; min-height: 66px; border: 1px solid rgba(255, 246, 230, .75); border-radius: 18px 26px 20px 28px; transition: background .7s var(--grow), color .7s var(--grow); }
.plan b { display: block; font: 700 16px/1.5 var(--f-disp); letter-spacing: .06em; }
.plan i { font: 400 12.5px/1.5 var(--f-body); font-style: normal; letter-spacing: .02em; display: block; }
.plan input:checked + span { background: #fff6e6; color: #5a2a13; }
.plan input:focus-visible + span { outline: 2px solid #fff6e6; outline-offset: 3px; }
.field label { display: block; font: 400 13.5px/1.6 var(--f-hand); letter-spacing: .06em; }
.field input { width: 100%; min-height: 46px; padding: 6px 2px; background: transparent; border: 0; border-bottom: 1.5px solid #fff6e6; border-radius: 0; font-size: 16px; color: #fff6e6; }
.field input::placeholder { color: rgba(255, 246, 230, .72); }
.field input:focus { outline: 0; border-bottom-width: 3px; }
.form-err { font: 600 13.5px/1.6 var(--f-hand); background: #fff6e6; color: #7a2f11; padding: 5px 12px; border-radius: 14px; }
.sow { justify-self: start; min-height: 52px; padding: 0 38px; background: var(--forest); color: var(--bone); border: 0; cursor: pointer; font: 700 16px/1 var(--f-disp); letter-spacing: .16em; border-radius: var(--blob); transition: border-radius 1.1s var(--grow), background .8s var(--grow); }
@media (hover:hover) { .sow:hover { border-radius: var(--blob-2); background: #0f2719; } }
.form-note { font-size: 12.5px; line-height: 1.8; color: #fbe6d2; }
.letter-done { grid-column: 6 / 11; position: relative; }
.letter-done:focus { outline: 0; }
.letter-done[hidden] { display: none; }
#doneCanvas { width: 100%; height: 220px; }
.done-h { font: 900 clamp(38px, 4vw, 60px)/1.3 var(--f-disp); letter-spacing: .05em; }
.done-t { margin: 8px 0 8px; }
.letter-done .tool { margin-top: 12px; color: #fff6e6; }

/* --------------------------------------------------- footer */
.ft { padding: clamp(60px, 10vh, 110px) 0 calc(96px + env(safe-area-inset-bottom)); min-height: 86vh; display: flex; align-items: flex-end; }
.ft-wrap { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); row-gap: 40px; }
.ft-deep { grid-column: 1 / 8; justify-self: start; width: fit-content; font: 700 clamp(24px, 3vw, 46px)/1.6 var(--f-disp); letter-spacing: .05em; }
.ft-mark { grid-column: 4 / 10; grid-row: 2; justify-self: center; width: min(34vw, 340px); padding: 20px 0 34px; color: var(--bone); }
.ft-mark .lk-mark { width: 100%; height: auto; aspect-ratio: 880 / 740; }
.ft-cols { grid-column: 1 / -1; grid-row: 3; display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); padding-top: 22px; background: var(--rule-b) repeat-x left top; }
.ft-cols > div:nth-child(1) { grid-column: 1 / 6; }
.ft-cols > div:nth-child(2) { grid-column: 7 / 10; }
.ft-cols > div:nth-child(3) { grid-column: 10 / 13; }
.ft-name { font: 700 19px/1.5 var(--f-disp); letter-spacing: .1em; }
.ft-name i { font: italic 300 17px/1 var(--f-latin); letter-spacing: 0; margin-left: .4em; }
.ft-small { font-size: 13px; line-height: 1.9; color: var(--bone-2); margin-top: 6px; max-width: 32em; }
.ft-lab { font: italic 400 14px/1.6 var(--f-latin); color: var(--ochre); letter-spacing: 0; }
.ft-link { display: inline-flex; align-items: center; min-height: 44px; text-underline-offset: 4px; font-size: 14px; }
.ft-credit { font-size: 14px; line-height: 1.8; letter-spacing: .03em; }
.ft-credit b { font-family: var(--f-latin); font-weight: 500; letter-spacing: .14em; }

/* ====================================================== tablet + phone */
@media (max-width: 1040px) {
  .hd-nav { display: none; }
  .hd-cta { margin-left: auto; }
  .good-1 .good-text { margin-left: 0; }
}

@media (max-width: 767px) {
  body { font-size: 15px; }
  .hd { padding: 8px 16px; gap: 10px; }
  .lk-mark { width: 34px; height: 29px; }
  .hd-name i { display: none; }
  .hd-name b { font-size: 16px; }
  .hd-cta { padding: 0 16px; }
  /* depth readout rides in the header on phones */
  .depth { right: auto; left: 50%; top: 12px; bottom: auto; transform: translateX(-32%) rotate(-1.2deg); display: flex; align-items: baseline; gap: 2px; z-index: 81; padding: 3px 8px; }
  .depth-scale, .depth-zone { display: none; }
  .depth-read { font-size: 17px; }
  .depth-read small { font-size: 12px; }

  .hero-word { font-size: 27vw; }
  .hero-roman { font-size: 26px; top: -.95em; left: .1em; }
  .hero-lockup { width: calc(100vw - 32px); left: 16px; bottom: 74px; }
  .hero-lead { font-size: 15px; line-height: 1.85; margin-top: 8px; }
  .hero-plate { top: 60px; left: 16px; }
  .hero-fig, .hero-plate { display: none; }
  .hero-cue { margin-top: 0; }

  .phil { padding: 90px 0 110px; }
  .phil-h { grid-column: 1 / -1; font-size: 10.4vw; line-height: 1.36; }
  .phil .eyebrow, .phil .rule { grid-column: 1 / -1; }
  .phil-body { grid-column: 1 / -1; padding-right: 10%; }
  .phil-facts { grid-column: 1 / -1; grid-template-columns: 1fr 1fr; padding-right: 8%; }
  .fact-a, .fact-b, .fact-c { grid-column: auto; margin-top: 0; }
  .fact-c { grid-column: 1 / -1; }
  .fact dd { font-size: 62px; }
  .anno { display: none; }

  .s-head { top: 62px; left: 16px; right: 16px; }
  .s-sub { margin-top: 2px; }
  .s-panels { left: 16px; right: 16px; top: 116px; width: auto; }
  .s-panel h3 { font-size: 68px; display: inline-block; margin-right: 8px; margin-bottom: 0; vertical-align: bottom; line-height: 1.1; }
  .s-panel h3 small { display: inline-block; font-size: 13px; margin-left: 8px; }
  .s-en { display: none; }
  .s-text { font-size: 14.5px; line-height: 1.85; margin-top: 2px; }
  .s-log { font-size: 13px; margin-top: 4px; }
  .s-ruler { left: 16px; right: 16px; bottom: 72px; font-size: 12px; padding-top: 10px; }
  .s-ruler span { width: 1.3em; }

  .herb { padding: 90px 0 100px; }
  .herb-grid { grid-template-columns: 1fr 1fr; column-gap: 12px; row-gap: 22px; }
  .herb-intro { grid-column: 1 / -1; padding: 0 6% 8px 0; }
  .herb-intro h2 { font-size: 21vw; }
  .herb-end { grid-column: 1 / -1; padding: 18px 8% 0 0; }
  .spec.col-l { margin-top: 0; }
  .spec.col-r { margin-top: 26px; }
  .spec-label { width: 80%; right: 5px; bottom: 5px; padding: 5px 7px 6px; }
  .spec-label i { font-size: 12px; }
  .spec-open { display: none; }
  .flap, .flap.to-left, .flap.to-right { left: 0; right: auto; top: calc(100% - 12px); width: calc(200% + 12px); min-height: 0; transform-origin: center top; transform: perspective(1200px) rotateX(-92deg); }
  .spec.col-r .flap, .spec.col-r .flap.to-left, .spec.col-r .flap.to-right { left: auto; right: 0; }
  .spec.is-open .flap { transform: perspective(1200px) rotateX(0); }

  .goods { padding: 84px 0 96px; }
  .goods-head { display: block; }
  .goods-head h2 { font-size: 17vw; }
  .goods-head .lead { padding: 10px 0 0; }
  .goods-grid { display: block; }
  .good { margin-top: 52px !important; }
  .good-1 { display: block; }
  .good-1 .good-text { display: block; }
  .good-1 .good-fig { min-height: 0; }
  .good-fig, .good-1 .good-fig, .good-2 .good-fig, .good-3 .good-fig, .good-4 .good-fig, .good-5 .good-fig, .good-6 .good-fig { width: 82%; aspect-ratio: 1 / 1; }
  .good-1 .good-fig { width: 100%; }
  .good:nth-child(odd) .good-fig { margin-left: auto; }
  .good-1 .good-text { min-width: 0; }
  .good-text { margin-top: 12px; padding-right: 8%; }

  .cal { padding: 84px 0 90px; }
  .cal-head { display: block; }
  .cal-head h2 { font-size: 17vw; }
  .cal-note { min-height: 9.8em; padding-top: 12px; padding-right: 8%; }
  .cal-note-m b { font-size: 40px; }
  .cal-table-wrap { padding-right: 0; }
  .cal-table, .cal-table thead, .cal-table tbody { display: block; }
  .cal-table thead tr { display: grid; grid-template-columns: repeat(12, 1fr); }
  .cal-name-h { display: none; }
  .m-btn { min-height: 44px; font-size: 13px; padding: 0; }
  .cal-row { display: grid; grid-template-columns: repeat(12, 1fr); }
  .cal-row th { grid-column: 1 / -1; padding: 12px 0 2px !important; display: flex; align-items: baseline; gap: 10px; }
  .cal-row th b { font-size: 16px; }
  .cal-row td { height: 34px; background: none; }
  .mk { top: 8px; bottom: 7px; }
  .mk.b { top: 12px; bottom: 10px; }

  .garden { padding: 84px 0 80px; }
  .garden-head { display: block; }
  .garden-head h2 { font-size: 17vw; }
  .garden-head .lead { padding: 10px 6% 0 0; }
  .sheet { grid-column: 1 / -1; height: 62svh; min-height: 400px; }
  .sheet-hint { top: auto; bottom: 8px; right: 10px; font-size: 13px; }
  .garden-tools { grid-column: 1 / -1; grid-row: auto; }
  .tool { padding: 0 15px; }
  .garden-log { grid-column: 1 / -1; grid-row: auto; padding: 8px 0 0; }
  #logList { max-height: none; grid-template-columns: 1fr; }
  #logList .log-item:nth-child(n+4) { display: none; }

  .ground { height: 340px; }
  .ground-t { bottom: 190px; left: 16px; font-size: 24px; }

  .zero { font-size: 26vw; left: 16px; }
  .soil { padding: 110px 0 50px; }
  .soil-main { grid-column: 1 / -1; }
  .soil-main h2 { font-size: 10.6vw; }
  .lead-b { padding-right: 15%; }
  .horizons { grid-column: 1 / -1; padding: 100px 18% 0 0; gap: 96px; }

  .journal-head h2 { font-size: 17vw; }
  .tags { display: grid; grid-template-columns: 1fr; row-gap: 30px; }
  .tag { grid-column: 1 / -1 !important; margin-top: 0 !important; padding: 40px 20px 22px; }
  .tag-2, .tag-4 { margin-left: 16px !important; }
  .tag-1, .tag-3 { margin-right: 16px !important; }

  .letter-wrap { display: block; }
  .letter-blob { display: block; padding: 64px 30px 62px; border-radius: 42% 58% 40% 60% / 8% 7% 9% 8%; }
  .letter-copy h2 { font-size: 16vw; }
  .letter-form { margin-top: 22px; }
  .plans { grid-template-columns: 1fr; }
  .plan span { min-height: 0; }
  .letter-done { margin-top: 22px; }

  .ft { padding-top: 80px; }
  .ft-wrap { display: block; }
  .ft-deep { font-size: 25px; }
  .ft-mark { width: 62%; margin: 60px auto 40px; }
  .ft-cols { display: block; }
  .ft-cols > div + div { margin-top: 18px; }
}

/* ====================================================== reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01s !important; animation-iteration-count: 1 !important; transition-duration: .15s !important; transition-delay: 0s !important; }
  .js:not(.nojs) .rv, .js:not(.nojs) .rv-k .kp { transform: none; }
}
