@font-face {
  font-family: "Louvre Serif";
  src: url("/assets/fonts/louvre-serif.woff2") format("woff2");
  font-weight: 600; font-style: normal; font-display: swap;
  unicode-range: U+20, U+2E, U+30-39, U+41, U+50, U+51, U+61, U+65, U+68, U+73;
}
:root {
  --c-green: #2E6417;
  --c-green-dark: #234D11;
  --c-green-mid: #84AD6B;
  --c-green-100: #DCE7D5;
  --c-green-50: #F2F6EF;
  --c-gray: #E6E6E6;
  --c-band: #F4F4F1;
  --c-white: #FFFFFF;
  --c-ink: #20281D;
  --c-ink-sub: #545D51;
  --c-line: #DCDFD8;
  --f-sans: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "BIZ UDPGothic", "Meiryo", "Noto Sans JP", "Noto Sans CJK JP", sans-serif;
  --f-num: "Louvre Serif", Georgia, "Times New Roman", serif;
  --radius: 20px;
  --radius-sm: 12px;
  --w-max: 1120px;
  --w-text: 38em;
  --gutter: 40px;
  --header-h: 88px;
  --sec: 120px;
  --footer-r: 40px;
}
@media (max-width: 900px) { :root { --header-h: 64px; } }
@media (max-width: 768px) { :root { --gutter: 20px; --sec: 72px; --footer-r: 24px; } }
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
[id] { scroll-margin-top: calc(var(--header-h) + 24px); }
body {
  margin: 0;
  background: var(--c-white);
  color: var(--c-ink);
  font-family: var(--f-sans);
  font-size: 16px;
  line-height: 1.9;
  letter-spacing: .04em;
  word-break: auto-phrase;
  line-break: strict;
  overflow-wrap: anywhere;
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; }
a { color: var(--c-green); text-underline-offset: .3em; text-decoration-thickness: 1px; }
:focus-visible { outline: 3px solid rgba(46, 100, 23, .5); outline-offset: 3px; }
h1, h2, h3 { margin: 0; font-weight: 700; line-height: 1.6; letter-spacing: .08em; }
h1, h2, h3, .btn, .toc a, .gnav-list a { font-feature-settings: "palt"; }
.hero .hero-catch, .page-title-for { font-feature-settings: normal; }
::selection { background: rgba(46, 100, 23, .85); color: var(--c-white); }
p, ul, ol, dl, dd, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
p, li, dd { text-wrap: pretty; }
.wbr { display: inline-block; }
.icon { width: 1em; height: 1em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.sr { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.logo { display: block; height: 18px; width: auto; fill: currentColor; }
.container { width: 100%; max-width: calc(var(--w-max) + var(--gutter) * 2); margin: 0 auto; padding: 0 var(--gutter); }
.skip { position: absolute; left: 12px; top: -80px; z-index: 100; padding: 10px 16px; border-radius: 8px; background: var(--c-white); box-shadow: 0 2px 10px rgba(32, 40, 29, .15); }
.skip:focus { top: 12px; }
.site-header { position: sticky; top: 0; z-index: 50; background: var(--c-white); box-shadow: 0 2px 10px rgba(32, 40, 29, .08); }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: var(--header-h); }
.brand { display: inline-flex; align-items: center; gap: 16px; color: var(--c-green); text-decoration: none; white-space: nowrap; }
.brand-ja { padding-left: 16px; border-left: 1px solid var(--c-line); font-size: 12px; line-height: 1.6; letter-spacing: .2em; }
.gnav { display: flex; align-items: center; gap: 20px; }
.gnav-list { display: flex; }
.gnav-list a { position: relative; display: block; padding: 10px 18px; color: var(--c-ink); font-size: 15px; font-weight: 700; letter-spacing: .08em; text-decoration: none; transition: color .3s; }
.gnav-list a::before { content: ""; position: absolute; left: 18px; bottom: 0; width: calc(100% - 36px); height: 4px; border-radius: 4px; background: var(--c-green); transform: scaleX(0); transform-origin: left center; transition: transform .3s ease; }
.gnav-list a:hover, .gnav-list a[aria-current="page"] { color: var(--c-green); }
.gnav-list a:hover::before, .gnav-list a[aria-current="page"]::before { transform: scaleX(1); }
.gnav .btn-header { min-width: 0; min-height: 46px; padding: 8px 24px; gap: 8px; font-size: 14px; }
.gnav .btn-header .icon { position: static; width: 18px; height: 18px; margin: 0; padding: 0; background: none; color: inherit; stroke-width: 1.8; transform: none; }
.menu { display: none; }
@media (max-width: 900px) {
  .gnav { gap: 6px; }
  .gnav-list { display: none; }
  .gnav .btn-header { min-height: 40px; padding: 8px 14px; font-size: 12px; letter-spacing: .04em; }
  .gnav .btn-header .icon { display: none; }
  .menu { display: block; }
  .menu summary { display: flex; flex-direction: column; justify-content: center; gap: 6px; width: 44px; height: 44px; padding: 0 11px; margin-right: -8px; border-radius: 50%; cursor: pointer; list-style: none; }
  .menu summary::-webkit-details-marker { display: none; }
  .menu-bar { display: block; height: 2px; border-radius: 2px; background: var(--c-green); transition: transform .2s; }
  .menu[open] .menu-bar:nth-child(1) { transform: translateY(8px) rotate(45deg); }
  .menu[open] .menu-bar:nth-child(2) { transform: scaleX(0); }
  .menu[open] .menu-bar:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
  .menu-panel { position: absolute; left: 0; right: 0; top: 100%; padding: 4px var(--gutter) 28px; background: var(--c-white); border-radius: 0 0 var(--radius) var(--radius); box-shadow: 0 16px 24px -12px rgba(32, 40, 29, .25); }
  .menu-panel li a { display: flex; align-items: center; justify-content: space-between; padding: 16px 2px; border-bottom: 1px solid var(--c-line); color: var(--c-ink); font-weight: 700; text-decoration: none; }
  .menu-panel li a[aria-current="page"] { color: var(--c-green); }
  .menu-panel li .icon { color: var(--c-green); }
  .menu-panel .btn { width: 100%; min-width: 0; margin-top: 24px; }
}
@media (max-width: 400px) {
  .brand-ja { display: none; }
  .logo { height: 15px; }
}
@media (max-width: 349px) {
  .gnav .btn-header { display: none; }
}
.btn {
  position: relative; z-index: 0; overflow: hidden;
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  min-width: 300px; min-height: 64px; padding: 14px 66px 14px 42px;
  border: 2px solid var(--c-green); border-radius: 999px;
  font-family: var(--f-sans); font-size: 16px; font-weight: 700; line-height: 1.4; letter-spacing: .08em;
  text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: color .3s ease;
}
.btn::before { content: ""; position: absolute; inset: 0; z-index: -1; transform: scaleX(0); transform-origin: left center; transition: transform .35s ease; }
.btn:hover::before { transform: scaleX(1); }
.btn .icon { position: absolute; top: 50%; right: 14px; width: 34px; height: 34px; margin-top: -17px; padding: 9px; border-radius: 50%; stroke-width: 2.2; transition: background-color .3s, color .3s, transform .3s; }
.btn:hover .icon { transform: translateX(3px); }
.btn:hover .icon-down { transform: translateY(3px); }
.btn-primary { background: var(--c-green); color: var(--c-white); }
.btn-primary::before { background: var(--c-green-dark); }
.btn-primary .icon { background: var(--c-white); color: var(--c-green); }
.btn-secondary { background: var(--c-white); color: var(--c-green); }
.btn-secondary::before { background: var(--c-green); }
.btn-secondary:hover { color: var(--c-white); }
.btn-secondary .icon { background: var(--c-green); color: var(--c-white); }
.btn-secondary:hover .icon { background: var(--c-white); color: var(--c-green); }
.cta-buttons { display: flex; flex-wrap: wrap; gap: 16px; }
.cta-note { margin-top: 16px; font-size: 13px; letter-spacing: .06em; color: var(--c-ink-sub); }
@media (max-width: 600px) { .cta-buttons .btn { width: 100%; min-width: 0; } }
.section { padding: var(--sec) 0; }
.section-soft { background: var(--c-band); }
.section-head { margin: 0 auto clamp(40px, 5vw, 64px); text-align: center; }
.section-head:last-child { margin-bottom: 0; }
.section-head h2, .closing h2 {
  position: relative; display: inline-block; padding: 0 50px;
  font-size: clamp(24px, 3vw, 34px); line-height: 1.55; color: var(--c-green);
}
.section-head h2::before, .section-head h2::after, .closing h2::before, .closing h2::after {
  content: ""; position: absolute; top: 50%; width: 34px; height: 12px; margin-top: -6px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 34 12'%3E%3Ccircle cx='3' cy='6' r='2' fill='%23B9D1A9'/%3E%3Ccircle cx='13' cy='6' r='3' fill='%2384AD6B'/%3E%3Ccircle cx='27' cy='6' r='5' fill='%232E6417'/%3E%3C/svg%3E") no-repeat center / contain;
}
.section-head h2::before, .closing h2::before { left: 0; }
.section-head h2::after, .closing h2::after { right: 0; transform: scaleX(-1); }
.section-head .lead { max-width: var(--w-text); margin: 24px auto 0; }
.after-note { max-width: 46em; margin: 32px auto 0; color: var(--c-ink-sub); text-align: center; }
@media (max-width: 600px) {
  .section-head h2, .closing h2 { padding: 0 28px; font-size: clamp(20px, 5.6vw, 24px); }
  .section-head h2::before, .section-head h2::after, .closing h2::before, .closing h2::after { width: 20px; height: 8px; margin-top: -4px; }
  .section-head .lead, .after-note { text-align: left; }
}
.hero { padding-top: 24px; }
.hero-panel {
  --d: min(24%, 300px);
  position: relative; overflow: hidden; display: flex; align-items: center;
  min-height: clamp(600px, 50vw, 700px); margin: 0 var(--gutter); padding: 64px 0;
  border-radius: var(--radius); background: var(--c-gray);
}
.hero-visual {
  --g: min(700px, 52vw);
  position: absolute; left: calc(50% - var(--d)); top: 50%; width: var(--g); height: var(--g);
  margin: calc(var(--g) / -2) 0 0 calc(var(--g) / -2); pointer-events: none;
}
.hero-orbit, .hero-globe { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; }
.hero-orbit { overflow: visible; }
.hero-content {
  position: relative; display: flex; flex-direction: column; align-items: center;
  width: min(48%, 600px); margin-left: calc(50% + var(--d) - min(24%, 300px)); text-align: center;
}
.hero-label { font-size: 13px; font-weight: 700; line-height: 1.8; letter-spacing: .12em; color: var(--c-green); }
.hero-catch {
  margin-top: 28px; writing-mode: vertical-rl; text-align: start;
  font-size: clamp(34px, 3.4vw, 48px); font-weight: 700; line-height: 1.7; letter-spacing: .16em; color: var(--c-green);
}
.hero-catch .wbr { display: block; }
html:not(:lang(ja)) .hero-catch, .translated-ltr .hero-catch, .translated-rtl .hero-catch { writing-mode: horizontal-tb; letter-spacing: .04em; }
html:not(:lang(ja)) .hero-catch .wbr, .translated-ltr .hero-catch .wbr, .translated-rtl .hero-catch .wbr { display: inline; }
.hero-sub {
  margin-top: 40px; padding: 20px 40px; border-radius: 999px; background: rgba(255, 255, 255, .72);
  font-size: clamp(15px, 1.3vw, 17px); font-weight: 700; line-height: 1.9; color: var(--c-green);
}
.hero-actions { padding-top: 40px; text-align: center; }
.hero-actions .cta-buttons { justify-content: center; }
@media (max-width: 1100px) {
  .hero-panel { display: block; min-height: 0; padding: 56px 32px 44px; }
  .hero-content { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); justify-items: center; width: auto; margin: 0; }
  .hero-label, .hero-catch { grid-column: 2; }
  .hero-sub { grid-column: 1 / -1; margin-top: 36px; }
  .hero-visual { --g: min(560px, 58vw); left: 27%; top: calc(56px + var(--g) * .43); }
}
@media (max-width: 768px) {
  .hero { padding-top: 12px; }
  .hero-panel { padding: 44px 20px 36px; }
  .hero-label { grid-column: 1 / -1; }
  .hero-catch { margin-top: 24px; font-size: clamp(32px, 9.4vw, 40px); }
  .hero-visual { --g: min(440px, 112vw); left: 18%; top: calc(64px + var(--g) * .42); }
  .hero-sub { margin-top: 32px; padding: 16px 22px; border-radius: 22px; font-size: 15px; }
  .hero-actions { padding-top: 32px; }
}
@media (max-width: 374px) { .hero-sub { padding-right: 14px; padding-left: 14px; } }
.page-hero {
  --cw: min(var(--w-max), 100% - var(--gutter) * 2);
  position: relative; overflow: hidden; margin: 24px var(--gutter) 0; padding: clamp(56px, 6vw, 80px) 0;
  border-radius: var(--radius); background: var(--c-gray);
}
.page-hero::before, .page-hero::after { content: ""; position: absolute; top: var(--y); aspect-ratio: 1; transform: translateY(-50%); pointer-events: none; }
.page-hero::before { left: calc(var(--x) - var(--g) / 2); width: var(--g); background: url("/assets/img/globe.svg") center / contain no-repeat; opacity: .8; }
.page-hero::after {
  left: calc(var(--x) - var(--g) * .6556); width: calc(var(--g) * 1.3111);
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-112 -112 944 944' fill='none'%3E%3Ccircle cx='360' cy='360' r='378' stroke='%232E6417' stroke-opacity='.26' stroke-width='1.6' stroke-dasharray='1 9' stroke-linecap='round'/%3E%3Ccircle cx='360' cy='360' r='468' stroke='%23fff' stroke-opacity='.9' stroke-width='1.6'/%3E%3C/svg%3E") center / contain no-repeat;
}
.page-hero > .container { position: relative; }
.page-title { color: var(--c-ink); }
.page-title-for { display: block; font-size: 14px; font-weight: 400; letter-spacing: .08em; color: var(--c-ink-sub); }
.page-title-name { display: block; margin-top: 6px; font-size: clamp(19px, 2.2vw, 24px); letter-spacing: .1em; color: var(--c-green); }
.page-hero .hero-catch { margin-top: 20px; writing-mode: horizontal-tb; font-size: clamp(22px, 6.6vw, 50px); line-height: 1.5; letter-spacing: .06em; }
.page-hero .hero-catch .wbr { display: block; }
.page-hero .hero-sub { max-width: 40em; margin: 24px 0 0; padding: 0; border-radius: 0; background: none; font-weight: 400; font-size: clamp(15px, 1.4vw, 17px); color: var(--c-ink); }
.page-hero .cta-buttons { margin-top: 36px; }
.page-hero-simple h1 { font-size: clamp(28px, 3.6vw, 40px); color: var(--c-green); }
.page-hero-simple .hero-sub { margin-top: 16px; }
@media (min-width: 769px) {
  .page-hero:not(.page-hero-simple) .toc ol { justify-content: flex-start; margin-left: -23px; clip-path: inset(-12px -12px -12px 1px); }
  .page-hero:not(.page-hero-simple) .toc li { border-right: 0; border-left: 1px solid rgba(46, 100, 23, .25); }
}
@media (min-width: 1100px) {
  .page-hero:not(.page-hero-simple) {
    --pt: clamp(64px, 6vw, 88px); --pb: clamp(92px, 8vw, 112px);
    --col: min(560px, .54 * var(--cw));
    --g: min(420px, (var(--cw) - var(--col) - 48px) * .9375);
    --x: calc((100% + var(--cw)) / 2 - var(--g) * .4167);
    --y: calc(50% + (var(--pt) - var(--pb) - 78px) / 2);
    padding: var(--pt) 0 var(--pb);
  }
  .page-hero:not(.page-hero-simple) .container > :not(.toc) { max-width: min(560px, 54%); }
  .page-hero:not(.page-hero-simple) .hero-catch { font-size: clamp(34px, 3.3vw, 46px); }
  .page-hero:not(.page-hero-simple) .btn { min-width: 0; padding-left: 32px; padding-right: 60px; }
}
@media (min-width: 769px) and (max-width: 1099px) {
  .page-hero:not(.page-hero-simple) { --g: clamp(240px, 40vw - 90px, 300px); --x: calc(100% - var(--g) * .2); --y: calc(var(--g) * .1575 + 18px); padding-bottom: 96px; }
  .page-hero:not(.page-hero-simple) .hero-catch { font-size: clamp(36px, 4.8vw, 46px); }
}
@media (min-width: 769px) {
  .page-hero-simple {
    --g: clamp(220px, 32vw - 30px, 330px); --x: calc((100% + var(--cw)) / 2 - var(--g) * .4167); --y: 50%;
    display: flex; align-items: center; min-height: clamp(250px, 26vw, 300px);
  }
  .page-hero-simple .container > * { max-width: min(640px, 52%); }
}
@media (max-width: 768px) {
  .page-hero { margin-top: 12px; }
  .page-hero { --g: min(300px, 42vw); --x: calc(100% - var(--g) * .26); --y: calc(var(--g) * .1575 + 16px); padding-top: calc(var(--g) * .574 + 30px); }
  .page-hero-simple { --g: 200px; --x: calc(100% - 58px); --y: 48px; padding: 144px 0 36px; }
  .page-hero::after { -webkit-mask-image: linear-gradient(#000 60%, transparent 84%); mask-image: linear-gradient(#000 60%, transparent 84%); }
  .page-hero-simple::after { -webkit-mask-image: linear-gradient(#000 52%, transparent 74%); mask-image: linear-gradient(#000 52%, transparent 74%); }
  .page-hero .hero-sub { margin-top: 20px; }
  .page-title-name { font-size: 18px; letter-spacing: .06em; }
}
@media (max-width: 400px) { .page-title-name { font-size: 17px; letter-spacing: .04em; } }
.toc { margin-top: 48px; }
.toc ol { display: flex; flex-wrap: wrap; justify-content: center; row-gap: 12px; }
.toc li { padding: 0 22px; border-right: 1px solid rgba(46, 100, 23, .25); }
.toc li:last-child { border-right: 0; }
.toc a { display: inline-flex; align-items: center; gap: 10px; color: var(--c-green); font-size: 15px; font-weight: 700; text-decoration: none; }
.toc a::after {
  content: ""; flex: none; width: 24px; height: 24px; border-radius: 50%;
  background: var(--c-green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 6v12M7 13l5 5 5-5'/%3E%3C/svg%3E") no-repeat center / 14px;
  transition: transform .3s;
}
.toc a:hover::after { transform: translateY(4px); }
@media (max-width: 768px) {
  .toc { margin-top: 36px; }
  .toc ol { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .toc li { padding: 0; border: 0; }
  .toc a { justify-content: space-between; width: 100%; min-height: 48px; padding: 8px 10px 8px 16px; border-radius: var(--radius-sm); background: var(--c-white); font-size: 14px; line-height: 1.5; text-align: left; }
}
.assure { position: relative; z-index: 1; margin-top: -44px; }
.assure ul { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.assure li { display: flex; align-items: center; gap: 14px; padding: 20px 24px; background: var(--c-white); border: 2px solid var(--c-green-100); border-radius: var(--radius); font-weight: 700; line-height: 1.7; }
.assure .icon { font-size: 28px; color: var(--c-green); }
@media (max-width: 900px) { .assure { margin-top: -28px; } .assure ul { grid-template-columns: minmax(0, 1fr); gap: 10px; } .assure li { padding: 14px 18px; } }
.gaps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }
.gap { display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--c-line); border-radius: var(--radius); background: var(--c-white); }
.gap-q { padding: clamp(24px, 2.6vw, 32px) clamp(22px, 2.4vw, 32px) 32px; font-size: clamp(18px, 1.7vw, 21px); font-weight: 700; line-height: 1.6; letter-spacing: .04em; color: var(--c-ink); }
.gap-no { display: block; margin-bottom: 12px; font-family: var(--f-num); font-size: 22px; font-weight: 600; line-height: 1; letter-spacing: .04em; color: var(--c-green-mid); }
.gap-a { position: relative; flex: 1; padding: 32px clamp(22px, 2.4vw, 32px) clamp(24px, 2.6vw, 30px); background: var(--c-green-50); font-weight: 700; line-height: 1.85; color: var(--c-green); }
.gap-a::before {
  content: ""; position: absolute; left: clamp(22px, 2.4vw, 32px); top: 0; width: 34px; height: 34px; border-radius: 50%; transform: translateY(-50%);
  background: var(--c-green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 6v12M7 13l5 5 5-5'/%3E%3C/svg%3E") no-repeat center / 15px;
  box-shadow: 0 0 0 5px var(--c-white);
}
@media (max-width: 900px) {
  .gaps { grid-template-columns: minmax(0, 1fr); }
  .gap-q { padding-bottom: 28px; }
  .gap-a { padding-top: 28px; }
}
.biz-list { display: grid; gap: 40px; }
.biz {
  position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr);
  background: var(--c-white); border-radius: var(--radius); color: var(--c-ink); text-decoration: none;
  box-shadow: 0 0 0 rgba(32, 40, 29, 0); transition: transform .35s ease, box-shadow .35s ease;
}
.biz:hover { transform: translateY(-4px); box-shadow: 0 28px 48px -28px rgba(32, 40, 29, .4); }
.biz-visual { position: relative; overflow: hidden; min-height: 380px; background: var(--c-green); }
.biz-visual img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform .6s ease; }
.biz:hover .biz-visual img { transform: scale(1.05); }
.biz-no { position: absolute; left: clamp(24px, 3vw, 40px); top: clamp(18px, 2.4vw, 30px); font-family: var(--f-num); font-size: clamp(48px, 5vw, 68px); font-weight: 600; line-height: 1; letter-spacing: .02em; color: var(--c-white); }
.biz-body { padding: clamp(32px, 4vw, 52px) clamp(28px, 4vw, 52px) 132px; }
.biz-target { display: inline-block; padding: 3px 14px; border-radius: 999px; background: var(--c-green-50); color: var(--c-green); font-size: 13px; font-weight: 700; }
.biz-name { display: block; margin-top: 18px; font-size: 15px; font-weight: 700; letter-spacing: .12em; color: var(--c-ink-sub); }
.biz h3 { margin-top: 6px; font-size: clamp(24px, 2.6vw, 32px); line-height: 1.5; color: var(--c-green); }
.biz p { max-width: 30em; margin-top: 18px; }
.duties { max-width: 980px; margin: 0 auto; border-top: 2px solid var(--c-green); }
.duty { display: grid; grid-template-columns: 52px minmax(0, 15.5em) minmax(0, 1fr); align-items: baseline; column-gap: 20px; padding: 22px 12px; border-bottom: 1px solid var(--c-line); }
.duty-no { font-family: var(--f-num); font-size: 22px; font-weight: 600; line-height: 1; letter-spacing: .02em; color: var(--c-green); }
.duty-name { font-size: 17px; font-weight: 700; line-height: 1.6; color: var(--c-ink); }
.duty-desc { font-size: 15px; line-height: 1.85; color: var(--c-ink-sub); }
@media (max-width: 768px) {
  .duty { grid-template-columns: 40px minmax(0, 1fr); column-gap: 12px; padding: 18px 4px; }
  .duty-no { font-size: 19px; }
  .duty-desc { grid-column: 2; margin-top: 4px; }
}
.biz-more {
  position: absolute; right: 44px; bottom: 44px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  width: 124px; height: 124px; padding: 0 0 14px; border-radius: 50%; background: var(--c-green); color: var(--c-white);
  font-size: 13px; font-weight: 700; letter-spacing: .08em; transform: translate(50%, 50%); transition: transform .35s ease, background-color .35s;
}
.biz-more .arrow-circle .icon { width: 22px; height: 22px; stroke-width: 2.2; transition: transform .35s; }
.biz:hover .biz-more { transform: translate(50%, 50%) scale(1.14); background: var(--c-green-dark); }
.biz:hover .biz-more .icon { transform: translateX(4px); }
.biz-2 .biz-visual { order: 2; }
@media (max-width: 900px) {
  .biz { grid-template-columns: minmax(0, 1fr); }
  .biz-2 .biz-visual { order: 0; }
  .biz-visual { min-height: 0; aspect-ratio: 16 / 9; }
  .biz-body { padding: 28px 24px 112px; }
  .biz-more { right: 36px; bottom: 36px; width: 104px; height: 104px; padding-bottom: 10px; font-size: 12px; }
}
.way {
  position: relative; z-index: 0; overflow: hidden;
  padding: clamp(56px, 6vw, 88px) clamp(20px, 5vw, 72px) clamp(48px, 5vw, 72px);
  border-radius: 32px; background: var(--c-green-50);
}
.way-art { position: absolute; right: -104px; top: -112px; z-index: -1; width: clamp(240px, 26vw, 340px); height: auto; }
.way-steps { --badge: 104px; --gap: clamp(24px, 3vw, 40px); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gap); }
.way-step { position: relative; text-align: center; }
.way-badge { position: relative; z-index: 1; display: grid; place-items: center; width: var(--badge); height: var(--badge); margin: 0 auto; border-radius: 50%; background: var(--c-green); color: var(--c-white); box-shadow: 0 0 0 10px rgba(46, 100, 23, .08); }
.way-badge .icon { width: 40px; height: 40px; stroke-width: 1.6; }
.way-step:not(:last-child)::after {
  content: ""; position: absolute; top: calc(var(--badge) / 2 - 1px);
  left: calc(50% + var(--badge) / 2 + 22px); width: calc(100% + var(--gap) - var(--badge) - 44px);
  border-top: 2px dotted var(--c-green-mid);
}
.way-no { margin-top: 22px; font-family: var(--f-num); font-size: 26px; font-weight: 600; line-height: 1.2; letter-spacing: .04em; color: var(--c-green); }
.way-step h3 { margin-top: 6px; font-size: clamp(18px, 1.7vw, 21px); line-height: 1.5; color: var(--c-ink); }
.way-step p:not(.way-no):not(.way-term) { max-width: 18em; margin: 10px auto 0; font-size: 15px; line-height: 1.85; color: var(--c-ink-sub); }
.way-term { width: fit-content; margin: 10px auto 0; padding: 2px 14px; border-radius: 999px; background: var(--c-white); font-size: 13px; font-weight: 700; line-height: 1.8; letter-spacing: .06em; color: var(--c-green); }
.way-foot {
  width: fit-content; max-width: 100%; margin: clamp(40px, 5vw, 56px) auto 0; padding: 14px 36px; border-radius: 999px;
  background: var(--c-white); font-size: clamp(15px, 1.5vw, 18px); font-weight: 700; line-height: 1.7; letter-spacing: .08em; color: var(--c-green); text-align: center;
}
.more-link { margin-top: 22px; text-align: center; }
.more-link a { display: inline-flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 700; letter-spacing: .04em; }
.more-link .icon { width: 18px; height: 18px; stroke-width: 2.2; transition: transform .3s; }
.more-link a:hover .icon { transform: translateX(4px); }
@media (max-width: 760px) {
  .way-steps { --badge: 64px; --gap: 28px; grid-template-columns: minmax(0, 1fr); }
  .way-step { display: grid; grid-template-columns: var(--badge) minmax(0, 1fr); column-gap: 18px; align-content: start; text-align: left; }
  .way-badge { grid-row: 1 / span 4; margin: 0; }
  .way-badge .icon { width: 28px; height: 28px; }
  .way-no { margin-top: 0; font-size: 20px; }
  .way-step p:not(.way-no):not(.way-term) { max-width: none; margin: 6px 0 0; }
  .way-term { margin: 6px 0 0; }
  .way-step:not(:last-child)::after {
    top: calc(var(--badge) + 18px); left: calc(var(--badge) / 2 - 1px); width: 0; height: calc(100% - var(--badge) + var(--gap) - 36px);
    border-top: 0; border-left: 2px dotted var(--c-green-mid);
  }
  .way-foot { padding: 14px 22px; border-radius: 22px; }
}
@media (max-width: 600px) {
  .way { border-radius: var(--radius); }
  .way-art { right: -96px; top: -100px; width: 220px; }
}
@media (max-width: 374px) {
  .way { padding-right: 14px; padding-left: 14px; }
  .way-steps { --badge: 56px; }
  .way-step { column-gap: 14px; }
  .way-badge .icon { width: 24px; height: 24px; }
}
.phases { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr); }
.phase { display: flex; flex-direction: column; overflow: hidden; background: var(--c-band); border-radius: var(--radius); }
.phase-head {
  position: relative; padding: 22px 24px 20px; color: var(--c-white);
  background:
    linear-gradient(to right, var(--c-green) 30%, rgba(46, 100, 23, 0)),
    radial-gradient(circle, rgba(255, 255, 255, .2) 1.1px, transparent 1.6px) 0 0 / 11px 11px,
    var(--c-green);
}
.phase h3 { min-height: calc(28px + 3em); font-size: clamp(18px, 1.7vw, 21px); line-height: 1.5; color: var(--c-white); }
.phase-no { display: block; margin-bottom: 4px; font-family: var(--f-num); font-size: 16px; font-weight: 600; line-height: 1.5; letter-spacing: .08em; color: var(--c-green-100); }
.phase-term { position: absolute; top: 24px; right: 24px; font-size: 12px; line-height: 1.6; color: var(--c-green-100); }
.phase-points { flex: 1; display: grid; align-content: start; gap: 16px; padding: 22px 24px 24px; }
.phase-points dt { font-size: 12px; font-weight: 700; letter-spacing: .1em; color: var(--c-green); }
.phase-points dd { margin-top: 2px; line-height: 1.8; }
.phase-next { display: flex; align-items: flex-start; gap: 10px; margin: 0 12px 12px; padding: 12px 16px; border-radius: var(--radius-sm); background: var(--c-white); color: var(--c-green-dark); font-size: 14px; font-weight: 700; line-height: 1.7; }
.phase-next .icon { margin-top: .35em; color: var(--c-green); }
.phase-gate { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; width: 60px; color: var(--c-green); font-size: 13px; font-weight: 700; line-height: 1.4; letter-spacing: .1em; }
.phase-gate .icon { width: 30px; height: 30px; padding: 7px; border-radius: 50%; background: var(--c-green); color: var(--c-white); stroke-width: 2.4; }
@media (max-width: 1000px) {
  .phases { grid-template-columns: minmax(0, 1fr); }
  .phase h3 { min-height: 0; }
  .phase-gate { flex-direction: row-reverse; width: auto; padding: 14px 0; }
  .phase-gate .icon { transform: rotate(90deg); }
  .phase-points { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
}
@media (max-width: 600px) {
  .phase-head { padding: 20px 20px 18px; }
  .phase-term { top: 22px; right: 20px; }
  .phase-points { grid-template-columns: minmax(0, 1fr); gap: 14px; padding: 20px; }
}
.scope-legend { display: flex; justify-content: flex-end; gap: 20px; margin-bottom: 12px; font-size: 13px; color: var(--c-ink-sub); }
.scope-legend > span { display: inline-flex; align-items: center; gap: 8px; }
.scope-wrap { overflow: hidden; background: var(--c-white); border-radius: var(--radius); }
.scope { width: 100%; border-collapse: collapse; }
.scope th, .scope td { padding: 18px 20px; border-bottom: 1px solid var(--c-line); text-align: left; vertical-align: middle; }
.scope thead th { padding-top: 14px; padding-bottom: 14px; background: var(--c-green); color: var(--c-white); font-size: 14px; letter-spacing: .08em; border-bottom: 0; }
.scope tbody tr:last-child > * { border-bottom: 0; }
.scope tbody th { width: 30%; padding-left: 26px; font-size: 16px; line-height: 1.7; color: var(--c-ink); text-wrap: balance; }
.scope thead th:first-child { padding-left: 26px; }
.scope-no { margin-right: 12px; font-family: var(--f-num); font-size: 1.1em; font-weight: 600; color: var(--c-green); }
.scope-desc { font-size: 15px; line-height: 1.8; color: var(--c-ink-sub); text-wrap: pretty; }
.scope .scope-ph, .scope .scope-mark { width: clamp(64px, 8vw, 92px); padding-left: 8px; padding-right: 8px; text-align: center; }
.mark { display: inline-block; width: 14px; height: 14px; border: 1.5px solid var(--c-green); border-radius: 50%; vertical-align: middle; }
.mark-main { border-width: 7px; }
@media (max-width: 900px) {
  .scope-legend { justify-content: flex-start; }
  .scope, .scope thead, .scope tbody { display: block; }
  .scope tr { display: grid; grid-template-columns: minmax(0, 1fr) repeat(3, 64px); border-bottom: 1px solid var(--c-line); }
  .scope thead tr { background: var(--c-green); }
  .scope thead tr, .scope tbody tr:last-child { border-bottom: 0; }
  .scope th, .scope td { border-bottom: 0; }
  .scope thead th, .scope thead .scope-ph { width: auto; padding: 10px 0; font-size: 12px; line-height: 1.3; text-align: center; }
  .scope thead th:first-child { padding-left: 24px; text-align: left; align-self: center; }
  .scope thead .scope-h-desc { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .scope-ph-word { display: block; font-size: 10px; letter-spacing: .04em; }
  .scope tbody th { position: relative; grid-column: 1; grid-row: 1; width: auto; padding: 16px 8px 2px 60px; }
  .scope tbody .scope-no { position: absolute; left: 24px; top: 16px; margin: 0; }
  .scope .scope-desc { grid-column: 1; grid-row: 2; padding: 0 8px 16px 60px; font-size: 14px; line-height: 1.7; }
  .scope .scope-mark { grid-row: 1 / span 2; display: flex; align-items: center; justify-content: center; width: auto; padding: 0; }
  .scope .scope-mark:nth-child(3) { grid-column: 2; }
  .scope .scope-mark:nth-child(4) { grid-column: 3; }
  .scope .scope-mark:nth-child(5) { grid-column: 4; }
}
@media (max-width: 600px) {
  .scope tr { grid-template-columns: minmax(0, 1fr) repeat(3, 40px); }
  .scope thead th:first-child { padding-left: 16px; }
  .scope tbody th { padding: 14px 4px 2px 46px; font-size: 15px; }
  .scope tbody .scope-no { left: 16px; top: 14px; }
  .scope .scope-desc { padding: 0 4px 14px 46px; font-size: 13px; }
}
@media (max-width: 374px) {
  .scope tr { grid-template-columns: minmax(0, 1fr) repeat(3, 36px); }
  .scope-ph-word { font-size: 9px; letter-spacing: 0; }
  .scope thead th:first-child { padding-left: 12px; }
  .scope tbody th { padding-left: 38px; }
  .scope tbody .scope-no { left: 12px; }
  .scope .scope-desc { padding-left: 38px; }
}
.flow { max-width: 54em; margin: 0 auto; counter-reset: flow; }
.flow > li { position: relative; display: grid; grid-template-columns: 64px minmax(0, 1fr); column-gap: 32px; padding-bottom: 44px; counter-increment: flow; }
.flow > li:last-child { padding-bottom: 0; }
.flow > li::before {
  content: counter(flow, decimal-leading-zero); content: counter(flow, decimal-leading-zero) / "";
  grid-row: 1 / span 3; position: relative; z-index: 1;
  display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; border: 1.5px solid var(--c-green); border-radius: 50%;
  background: var(--c-white); color: var(--c-green); font-family: var(--f-num); font-size: 22px; font-weight: 600; letter-spacing: .02em;
}
.flow > li:not(:last-child)::after { content: ""; position: absolute; left: 31px; top: 64px; bottom: 0; width: 2px; background: var(--c-green-100); }
.flow h3 { padding-top: 16px; font-size: 20px; color: var(--c-ink); }
.flow h3 + p { margin-top: 4px; }
.flow .ask { margin-top: 16px; padding: 14px 20px; border-radius: 16px 16px 16px 0; background: var(--c-band); font-size: 14px; }
.flow .ask b { display: block; margin-bottom: 2px; font-size: 12px; letter-spacing: .08em; color: var(--c-green); }
@media (max-width: 600px) {
  .flow > li { grid-template-columns: 44px minmax(0, 1fr); column-gap: 16px; padding-bottom: 32px; }
  .flow > li::before { width: 44px; height: 44px; font-size: 16px; }
  .flow > li:not(:last-child)::after { left: 21px; top: 44px; }
  .flow h3 { padding-top: 7px; font-size: 18px; }
  .flow .ask { padding: 12px 16px; }
}
.price-box {
  max-width: 54em; margin: 0 auto; padding: clamp(36px, 4.4vw, 60px) clamp(24px, 4vw, 52px); border-top: 4px solid var(--c-green); border-radius: var(--radius); text-align: center;
  background:
    radial-gradient(circle at 100% 0, rgba(255, 255, 255, 0), var(--c-white) min(300px, 70%)),
    radial-gradient(circle, rgba(46, 100, 23, .3) 1.2px, transparent 1.7px) 0 0 / 14px 14px,
    var(--c-white);
  box-shadow: 0 24px 48px -32px rgba(32, 40, 29, .35);
}
.price-box > p { font-size: clamp(16px, 1.6vw, 18px); }
.price-box .cta-buttons { justify-content: center; margin-top: 32px; }
@media (max-width: 600px) { .price-box > p { text-align: left; } }
.refuse { max-width: 54em; margin: 0 auto; border-top: 1px solid var(--c-line); }
.refuse li { display: grid; grid-template-columns: minmax(0, 17em) minmax(0, 1fr); gap: 6px 40px; align-items: baseline; padding: 26px 8px; border-bottom: 1px solid var(--c-line); }
.refuse b { position: relative; padding-left: 36px; font-size: 17px; line-height: 1.7; color: var(--c-ink); }
.refuse b::before {
  content: ""; position: absolute; left: 0; top: calc(.85em - 11px); width: 22px; height: 22px; box-sizing: border-box; border: 1.5px solid var(--c-green); border-radius: 50%;
  background: linear-gradient(var(--c-green), var(--c-green)) center / 10px 1.5px no-repeat;
}
.refuse span { color: var(--c-ink-sub); }
@media (max-width: 768px) {
  .refuse li { grid-template-columns: minmax(0, 1fr); padding: 22px 0; }
  .refuse span { padding-left: 36px; }
}
.faq { display: grid; gap: 14px; max-width: 54em; margin: 0 auto; }
.faq-item { background: var(--c-white); border-radius: var(--radius); }
.faq-item summary { display: grid; grid-template-columns: 40px minmax(0, 1fr) 24px; gap: 16px; align-items: center; padding: 20px 24px; cursor: pointer; list-style: none; font-size: 16px; font-weight: 700; line-height: 1.7; color: var(--c-ink); }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: ""; width: 9px; height: 9px; margin: -4px auto 0; border-right: 2px solid var(--c-green); border-bottom: 2px solid var(--c-green); transform: rotate(45deg); transition: transform .2s; }
.faq-item[open] summary::after { margin-top: 4px; transform: rotate(225deg); }
.faq-body { display: grid; grid-template-columns: 40px minmax(0, 1fr) 24px; gap: 16px; padding: 0 24px 24px; }
.faq-label { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--c-green); color: var(--c-white); font-family: var(--f-num); font-size: 18px; font-weight: 600; }
.faq-body .faq-label { background: var(--c-green-50); color: var(--c-green); }
.faq-a { padding-top: 5px; }
@media (max-width: 600px) {
  .faq-item summary, .faq-body { grid-template-columns: 34px minmax(0, 1fr) 18px; gap: 12px; padding-left: 18px; padding-right: 18px; }
  .faq-label { width: 34px; height: 34px; font-size: 14px; }
  .faq-a { padding-top: 2px; }
}
.closing { position: relative; overflow: hidden; background: var(--c-gray); text-align: center; }
.closing > .container { position: relative; }
.closing::before, .closing::after { content: ""; position: absolute; pointer-events: none; }
.closing::before { left: -150px; bottom: calc(var(--footer-r) - 250px); width: 520px; height: 520px; background: url("/assets/img/globe.svg") center / contain no-repeat; opacity: .55; }
.closing::after { right: -240px; top: -300px; width: 480px; height: 480px; border: 1.5px solid rgba(255, 255, 255, .9); border-radius: 50%; }
@media (max-width: 768px) {
  .closing::before { left: -170px; width: 360px; height: 360px; bottom: calc(var(--footer-r) - 170px); }
  .closing::after { right: -190px; top: -250px; width: 360px; height: 360px; }
}
.closing p { max-width: var(--w-text); margin: 24px auto 0; }
.closing .cta-buttons { justify-content: center; margin-top: 40px; }
.message { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.message h2 { font-size: clamp(26px, 3.2vw, 38px); line-height: 1.7; color: var(--c-green); }
.message h2::after { content: ""; display: block; width: 48px; height: 4px; margin-top: 24px; border-radius: 4px; background: var(--c-green); }
.message-body { font-size: clamp(16px, 1.5vw, 17px); line-height: 2.2; }
.message-body p + p { margin-top: 1.4em; }
.message-body .message-motto { margin-top: 2.2em; font-family: Georgia, "Times New Roman", serif; font-size: clamp(17px, 1.6vw, 19px); line-height: 1.6; letter-spacing: .04em; color: var(--c-green); }
.message-body .message-lead { margin-top: .5em; font-size: clamp(18px, 1.8vw, 21px); font-weight: 700; line-height: 1.7; letter-spacing: .04em; color: var(--c-green); }
.message-sign { display: flex; justify-content: flex-end; align-items: center; gap: 16px; margin-top: 40px; font-size: 15px; font-weight: 700; }
.message-sign::before { content: ""; flex: none; width: 40px; height: 1px; background: var(--c-ink-sub); }
@media (max-width: 900px) { .message { grid-template-columns: minmax(0, 1fr); } }
.info-card { max-width: 54em; margin: 0 auto; padding: 8px clamp(20px, 4vw, 44px); background: var(--c-white); border-radius: var(--radius); }
.info-table { width: 100%; border-collapse: collapse; }
.info-table th, .info-table td { padding: 22px 0; border-bottom: 1px solid var(--c-line); text-align: left; vertical-align: top; }
.info-table tr:last-child th, .info-table tr:last-child td { border-bottom: 0; }
.info-table th { width: 9em; padding-right: 24px; font-weight: 700; color: var(--c-green); white-space: nowrap; }
@media (max-width: 600px) {
  .info-table th, .info-table td { display: block; width: auto; }
  .info-table th { padding-bottom: 0; border-bottom: 0; }
  .info-table td { padding-top: 4px; }
}
.form-card { max-width: 760px; margin: 0 auto; padding: clamp(24px, 5vw, 56px); background: var(--c-white); border-radius: var(--radius); }
.form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 26px; }
.field label, .field legend { display: block; margin-bottom: 8px; padding: 0; font-size: 15px; font-weight: 700; }
.req, .opt { display: inline-block; margin-left: 8px; padding: 0 8px; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 1.9; vertical-align: 1px; }
.req { background: var(--c-green); color: var(--c-white); }
.opt { background: var(--c-gray); color: var(--c-ink-sub); }
.field input:not([type="radio"]), .field textarea {
  width: 100%; min-height: 56px; padding: 12px 16px; border: 2px solid var(--c-line); border-radius: var(--radius-sm);
  background: #FAFAF8; color: var(--c-ink); font: inherit; font-size: 16px;
  transition: border-color .2s, background-color .2s, box-shadow .2s;
}
.field input:not([type="radio"]):focus, .field textarea:focus { border-color: var(--c-green); background-color: var(--c-white); box-shadow: 0 0 0 4px rgba(46, 100, 23, .14); outline: none; }
.field textarea { min-height: 180px; resize: vertical; }
.choice { min-width: 0; margin: 0; padding: 0; border: 0; }
.field .choice-item {
  display: flex; align-items: center; gap: 10px; min-height: 56px; margin: 0 0 10px; padding: 12px 16px;
  border: 2px solid var(--c-line); border-radius: var(--radius-sm); background: #FAFAF8;
  font-size: 16px; font-weight: 400; line-height: 1.6; letter-spacing: normal; cursor: pointer; transition: border-color .2s, background-color .2s;
}
.field .choice-item:last-child { margin-bottom: 0; }
.choice-item input { flex: none; width: 20px; height: 20px; margin: 0; accent-color: var(--c-green); }
.choice-item:hover { border-color: var(--c-green); }
.choice-item:has(input:checked) { border-color: var(--c-green); background: var(--c-green-50); }
.checkline { display: flex; align-items: flex-start; gap: 12px; font-size: 15px; }
.checkline input { flex: none; width: 22px; height: 22px; margin-top: 4px; accent-color: var(--c-green); }
.form .btn { min-height: 64px; font-size: 16px; }
.formnote { font-size: 13px; color: var(--c-ink-sub); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
@media (max-width: 600px) { .form .btn { width: 100%; min-width: 0; } }
.simple { padding: clamp(80px, 12vw, 160px) 0 calc(clamp(80px, 12vw, 160px) + var(--footer-r)); background: var(--c-band); text-align: center; }
.simple-mark { display: inline-flex; align-items: center; justify-content: center; width: 80px; height: 80px; border-radius: 50%; background: var(--c-green); color: var(--c-white); }
.simple-mark .icon { font-size: 36px; stroke-width: 2; }
.simple-code { font-family: var(--f-num); font-size: clamp(44px, 6vw, 64px); font-weight: 600; line-height: 1.1; letter-spacing: .08em; color: var(--c-green); }
.simple h1 { margin-top: 24px; font-size: clamp(26px, 4.2vw, 40px); color: var(--c-green); }
.simple p:not(.simple-code) { max-width: var(--w-text); margin: 20px auto 0; }
.simple .cta-buttons { justify-content: center; margin-top: 40px; }
.policy { max-width: 48em; margin: 0 auto; counter-reset: policy; padding: clamp(24px, 5vw, 64px); background: var(--c-white); border-radius: var(--radius); }
.policy h2 { counter-increment: policy; position: relative; margin-top: 48px; padding-bottom: 10px; border-bottom: 2px solid var(--c-green-100); font-size: 19px; line-height: 1.6; color: var(--c-ink); }
.policy h2::before { content: counter(policy) ". "; color: var(--c-green); }
.policy h2::after { content: ""; position: absolute; left: 0; bottom: -4px; width: 33%; height: 6px; border-radius: 3px; background: var(--c-green); }
.policy p, .policy ul, .policy dl { margin-top: 14px; }
.policy ul li { position: relative; padding-left: 1.2em; }
.policy ul li::before { content: ""; position: absolute; left: 2px; top: .85em; width: 6px; height: 6px; border-radius: 50%; background: var(--c-green); }
.policy dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 24px; }
.policy dt { font-weight: 700; color: var(--c-ink-sub); }
.policy-date { margin-top: 44px; text-align: right; font-size: 14px; color: var(--c-ink-sub); }
@media (max-width: 600px) { .policy dl { grid-template-columns: minmax(0, 1fr); gap: 0; } .policy dd + dt { margin-top: 10px; } }
main > .section:last-child { padding-bottom: calc(var(--sec) + var(--footer-r)); }
.site-footer { position: relative; z-index: 1; overflow: hidden; margin-top: calc(var(--footer-r) * -1); padding: 80px 0 24px; border-radius: var(--footer-r) var(--footer-r) 0 0; background: var(--c-green); color: var(--c-white); font-size: 14px; }
.footer-mark { display: block; width: 100%; height: auto; margin-top: 64px; fill: rgba(255, 255, 255, .08); }
.site-footer a { color: var(--c-white); text-decoration: none; }
.footer-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 40px 64px; align-items: start; }
.footer-logo { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.footer-logo .logo { height: 24px; }
.footer-name { font-size: 13px; line-height: 1.6; letter-spacing: .26em; }
.footer-info { margin-top: 26px; line-height: 2; color: rgba(255, 255, 255, .86); }
.footer-nav ul { display: grid; gap: 14px; }
.footer-nav a { position: relative; display: inline-flex; align-items: center; gap: 10px; }
.footer-nav a::before { content: ""; width: 6px; height: 6px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: rotate(45deg); }
.footer-nav a::after { content: ""; position: absolute; left: 16px; right: 0; bottom: -2px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left center; transition: transform .3s ease; }
.footer-nav a:hover::after { transform: scaleX(1); }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 28px; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, .28); font-size: 12px; color: rgba(255, 255, 255, .86); }
.to-top { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; }
.to-top .icon { font-size: 16px; }
@media (max-width: 768px) { .site-footer { padding-top: 56px; } .footer-mark { margin-top: 44px; } }
@media (max-width: 760px) { .footer-grid { grid-template-columns: minmax(0, 1fr); } }
@media (prefers-reduced-motion: no-preference) {
  .rv .rv-item:not(.in) { opacity: 0; }
  .rv .rv-item.in { animation: rv-in .9s cubic-bezier(.2, .7, .2, 1) var(--rv-d, 0s) backwards; }
}
@keyframes rv-in { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
@media print { .rv .rv-item { opacity: 1 !important; animation: none !important; } }
