html, body { margin: 0; min-height: 100%; }
body { background: #FBF6EE; }
.gc { --ink: #3B2A2F; --ruby: #A3243F; --teal: #1F7F7A; --line: #E6DACA; --tint: #F3E8D6; --bg: #FBF6EE; font-family: 'Manrope', system-ui, sans-serif; color: var(--ink); background: var(--bg); }
.gc * { box-sizing: border-box; }
.gc a { color: inherit; text-decoration: none; }
.gc h1, .gc h2, .gc h3 { font-family: 'Fraunces', Georgia, serif; margin: 0; font-weight: 500; line-height: 1.18; letter-spacing: -.01em; }
.gc-head { position: sticky; top: 0; z-index: 20; background: var(--bg); border-bottom: 1px solid var(--line); }
.gc-bar { white-space: nowrap; gap: 12px; display: flex; justify-content: space-between; align-items: center; padding: 8px max(20px, calc((100vw - 1180px) / 2)); background: var(--tint); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; font-weight: 600; }
.gc-bar a { display: inline-flex; align-items: center; gap: 6px; color: #1E8F55; font-weight: 700; }
.gc-bar a i { font-style: normal; }
.gc-nav { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; max-width: 1180px; margin: 0 auto; position: relative; }
.gc-logo { font-family: 'Fraunces', Georgia, serif; font-size: 22px; letter-spacing: .14em; color: var(--ruby); }
.gc-logo b { color: var(--teal); font-weight: 600; }
.gc-links { display: flex; align-items: center; gap: 30px; font-weight: 600; font-size: 14px; }
.gc-links a:not(.gc-btn) { position: relative; padding: 6px 0; transition: color .25s; }
.gc-links a:not(.gc-btn)::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--ruby); transform: scaleX(0); transform-origin: left; transition: transform .3s ease; }
.gc-links a:not(.gc-btn):hover { color: var(--ruby); }
.gc-links a:not(.gc-btn):hover::after, .gc-links a[aria-current="page"]::after { transform: scaleX(1); }
.gc-links a[aria-current="page"] { color: var(--ruby); }
.gc-burger { display: none; border: 1px solid var(--line); background: #fff; border-radius: 4px; padding: 0 16px; font: 600 14px inherit; color: var(--ink); min-height: 44px; }
.gc-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 26px; border-radius: 4px; background: var(--ruby); color: #fff !important; font-weight: 600; font-size: 14px; letter-spacing: .02em; border: 1px solid var(--ruby); cursor: pointer; transition: background .25s, color .25s, transform .25s, box-shadow .25s; }
.gc-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(60,30,40,.15); }
.gc-btn.sm { min-height: 38px; padding: 0 18px; }
.gc-btn.ghost { background: transparent; color: var(--ruby) !important; }
.gc-btn.ghost:hover { background: var(--ruby); color: #fff !important; }
.gc-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
.gc-eye { font-size: 12px; letter-spacing: .18em; text-transform: uppercase; font-weight: 700; color: var(--teal); margin: 0 0 12px; }
.gc-hero { display: grid; grid-template-columns: 1fr 1fr; min-height: 540px; background: var(--tint); }
.gc-hero-text { padding: 64px 56px 64px max(20px, calc((100vw - 1180px) / 2)); display: flex; flex-direction: column; justify-content: center; animation: gcrise .7s ease both; }
.gc-hero h1 { font-size: clamp(30px, 3.6vw, 46px); max-width: 520px; }
.gc-hero p:not(.gc-eye) { font-size: 16px; line-height: 1.65; margin: 18px 0 0; max-width: 440px; }
.gc-hero-img { position: relative; display: block; overflow: hidden; min-height: 340px; }
.gc-hero-img img { width: 100%; height: 100%; object-fit: cover; display: block; position: absolute; inset: 0; }
.gc-hero-img span { position: absolute; left: 20px; bottom: 20px; background: var(--bg); padding: 10px 16px; font-weight: 700; font-size: 13px; border-radius: 4px; }
.gc-dots { display: flex; gap: 8px; margin-top: 32px; }
.gc-dots button { width: 8px; height: 8px; padding: 0; border-radius: 99px; border: 0; background: #CDBBA0; cursor: pointer; transition: width .3s, background .3s; }
.gc-dots button.on { background: var(--ruby); width: 26px; }
.gc-sec { padding: 80px 20px; max-width: 1180px; margin: 0 auto; }
.gc-sec.tint { max-width: none; background: var(--tint); padding-left: max(20px, calc((100vw - 1180px) / 2)); padding-right: max(20px, calc((100vw - 1180px) / 2)); }
.gc-sec h2 { font-size: clamp(26px, 3vw, 36px); margin-bottom: 32px; }
.gc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 36px 28px; }
.gc-cat { display: block; }
.gc-cat .im { overflow: hidden; border-radius: 4px; aspect-ratio: 4/3; background: var(--tint); }
.gc-cat img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.gc-cat:hover img { transform: scale(1.05); }
.gc-cat .tx { padding: 16px 2px 0; border-top: 0; }
.gc-cat span { color: var(--teal); font-weight: 700; font-size: 12px; letter-spacing: .1em; }
.gc-cat h3 { font-size: 24px; margin: 4px 0 6px; }
.gc-cat p { margin: 0 0 10px; font-size: 14px; line-height: 1.55; opacity: .85; }
.gc-cat em { font-style: normal; font-weight: 700; font-size: 13px; color: var(--ruby); border-bottom: 1px solid transparent; transition: border-color .25s; }
.gc-cat:hover em { border-color: var(--ruby); }
.gc-split { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.gc-split p { line-height: 1.7; font-size: 16px; margin: 0 0 16px; }
.gc-three { display: grid; }
.gc-three div { padding: 20px 0; border-bottom: 1px solid #DCCBB0; display: grid; gap: 4px; }
.gc-three div:first-child { border-top: 1px solid #DCCBB0; }
.gc-three b { font-family: 'Fraunces', Georgia, serif; font-weight: 500; font-size: 19px; }
.gc-three span { font-size: 14px; }
.gc-cta { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 40px 44px; border-radius: 4px; background: #DDEEE9; }
.gc-cta.col { flex-direction: column; align-items: flex-start; }
.gc-cta h2 { margin: 0 0 8px; font-size: 28px; }
.gc-cta p { margin: 0; }
.gc-cta .gc-btn { background: #1E8F55; border-color: #1E8F55; white-space: nowrap; }
.gc-pagehead { background: var(--tint); border-bottom: 1px solid var(--line); }
.gc-pagehead > div { max-width: 1180px; margin: 0 auto; padding: 52px 20px; }
.gc-pagehead h1 { font-size: clamp(30px, 4vw, 44px); animation: gcrise .7s ease both; }
.gc-pagehead p { margin: 10px 0 0; animation: gcrise .7s ease .1s both; }
.gc-crumb { font-size: 13px; margin-bottom: 12px; }
.gc-crumb a { color: var(--ruby); font-weight: 700; }
.gc-pic { width: 100%; border-radius: 4px; display: block; aspect-ratio: 4/3; object-fit: cover; }
.gc-person { display: flex; align-items: center; gap: 16px; }
.gc-person .av { width: 60px; height: 60px; border-radius: 50%; background: var(--teal); color: #fff; display: grid; place-items: center; font-weight: 700; }
.gc-person b, .gc-person span { display: block; }
.gc-person span { font-size: 14px; }
.gc-hint { display: flex; align-items: center; gap: 8px; margin: 0 0 24px; font-size: 14px; color: #1E8F55; font-weight: 600; }
.gc-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 24px; }
.gc-prod { display: block; }
.gc-prod .im { position: relative; overflow: hidden; border-radius: 4px; aspect-ratio: 4/3; background: var(--tint); }
.gc-prod img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.gc-prod:hover img { transform: scale(1.05); }
.gc-prod .tag { position: absolute; left: 12px; bottom: 12px; display: inline-flex; align-items: center; gap: 6px; background: #1E8F55; color: #fff; font-size: 12px; font-weight: 700; padding: 8px 12px; border-radius: 4px; opacity: 0; transform: translateY(8px); transition: opacity .25s, transform .25s; }
.gc-prod:hover .tag, .gc-prod:focus-visible .tag { opacity: 1; transform: none; }
.gc-prod b { display: block; margin-top: 12px; font-weight: 600; font-size: 15px; }
.gc-note { font-size: 13px; margin: 28px 0 0; opacity: .7; }
.gc-others { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.gc-others a { padding: 10px 18px; border-radius: 4px; border: 1px solid var(--line); font-weight: 600; font-size: 14px; transition: background .25s, color .25s, border-color .25s; }
.gc-others a:hover { background: var(--ruby); color: #fff; border-color: var(--ruby); }
.gc-info { display: grid; }
.gc-info div { padding: 16px 0; border-bottom: 1px solid var(--line); }
.gc-info div:first-child { border-top: 1px solid var(--line); }
.gc-info span { display: block; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--teal); font-weight: 700; margin-bottom: 4px; }
.gc-info b { font-weight: 600; }
.gc-info a { color: var(--ruby); }
.gc-float { position: fixed; right: 18px; bottom: 18px; z-index: 30; width: 56px; height: 56px; border-radius: 50%; background: #1E8F55; color: #fff; display: grid; place-items: center; box-shadow: 0 8px 22px rgba(30,100,60,.35); transition: transform .25s, box-shadow .25s; }
.gc-float:hover { transform: translateY(-3px) scale(1.05); }
.gc-foot { background: var(--tint); color: var(--ink); padding: 60px 20px 24px; border-top: 1px solid var(--line); }
.gc-foot-grid { max-width: 1180px; margin: 0 auto; display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.4fr; gap: 40px; }
.gc-foot h4 { margin: 0 0 14px; font: 700 12px 'Manrope', sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--teal); }
.gc-foot-grid > div { display: flex; flex-direction: column; gap: 10px; font-size: 15px; line-height: 1.55; }
.gc-foot-grid a, .gc-foot-grid span { width: fit-content; }
.gc-foot-grid > div > a:not(.wa):not(.ig) { transition: color .2s, transform .2s; }
.gc-foot-grid > div > a:not(.wa):not(.ig):hover { color: var(--ruby); transform: translateX(4px); }
.gc-foot-brand p { margin: 6px 0 4px; max-width: 320px; }
.gc-foot .gc-logo { font-size: 26px; }
.gc-social { display: flex; gap: 12px; margin-top: 8px; }
.gc-social a { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; color: #fff; transition: transform .25s ease, box-shadow .25s ease; }
.gc-social .wa { background: #1E8F55; }
.gc-social .ig { background: #C2366B; }
.gc-social a:hover { transform: translateY(-3px); box-shadow: 0 8px 18px rgba(60,30,40,.2); }
.gc-copy { max-width: 1180px; margin: 40px auto 0; padding-top: 20px; border-top: 1px solid #DCCBB0; text-align: center; font-size: 13px; }
.gc-fade { animation: gcfade .9s ease both; }
.rv { opacity: 0; transform: translateY(20px); transition: opacity .7s ease var(--d, 0ms), transform .7s cubic-bezier(.2,.7,.2,1) var(--d, 0ms); }
.rv.in { opacity: 1; transform: none; }
@keyframes gcfade { from { opacity: 0; } to { opacity: 1; } }
@keyframes gcrise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@media (max-width: 860px) {
  .gc-burger { display: inline-flex; align-items: center; }
  .gc-links { display: none; position: absolute; top: 100%; left: 0; right: 0; background: var(--bg); flex-direction: column; align-items: stretch; gap: 0; padding: 8px 20px 18px; border-bottom: 1px solid var(--line); }
  .gc-links.is-open { display: flex; }
  .gc-links a:not(.gc-btn) { padding: 14px 0; border-bottom: 1px solid var(--line); }
  .gc-links a.gc-btn { margin-top: 14px; }
  .gc-hero { grid-template-columns: 1fr; min-height: 0; }
  .gc-hero-text { padding: 36px 20px 40px; }
  .gc-hero-img { height: 280px; min-height: 0; order: -1; }
  .gc-grid, .gc-gallery { grid-template-columns: 1fr; }
  .gc-split { grid-template-columns: 1fr; gap: 28px; }
  .gc-sec { padding: 52px 20px; }
  .gc-cta { flex-direction: column; align-items: flex-start; padding: 28px 22px; }
  .gc-prod .tag { opacity: 1; transform: none; }
  .gc-foot { padding-top: 40px; }
  .gc-foot-grid { grid-template-columns: 1fr 1fr; gap: 28px 20px; }
  .gc-foot-brand, .gc-foot-grid > div:last-child { grid-column: 1 / -1; }
  .gc-bar { padding: 8px 20px; font-size: 11px; letter-spacing: .03em; }
}
@media (prefers-reduced-motion: reduce) {
  .gc *, .gc *::before, .gc *::after { animation: none !important; transition: none !important; }
  .rv { opacity: 1 !important; transform: none !important; }
}

/* more motion */
.gc-page { animation: gcpage .55s ease both; }
.gc-hero-text > * { animation: gcrise .8s cubic-bezier(.2,.7,.2,1) both; }
.gc-hero-text > *:nth-child(2) { animation-delay: .08s; }
.gc-hero-text > *:nth-child(3) { animation-delay: .16s; }
.gc-hero-text > *:nth-child(4) { animation-delay: .24s; }
.gc-hero-text > *:nth-child(5) { animation-delay: .32s; }
.gc-hero-img img { animation: gcfade .9s ease both; }
.gc-hero-img span { transition: transform .3s, background .3s, color .3s; }
.gc-hero-img:hover span { transform: translateX(6px); background: var(--ruby); color: #fff; }
.gc-sec h2 { position: relative; padding-bottom: 14px; }
.gc-sec h2::after { content: ''; position: absolute; left: 0; bottom: 0; width: 44px; height: 2px; background: var(--ruby); transform: scaleX(0); transform-origin: left; transition: transform .8s ease .25s; }
.gc-sec h2.rv.in::after, .gc-sec h2:not(.rv)::after { transform: scaleX(1); }
.gc-cta.col h2::after, .gc-cta h2::after { display: none; }
.gc-logo { transition: letter-spacing .4s ease; }
.gc-logo:hover { letter-spacing: .2em; }
.gc-social a, .gc-bar a svg { transition: transform .3s ease, box-shadow .3s ease; }
.gc-social a:hover svg { transform: rotate(-8deg) scale(1.1); }
.gc-social a svg { transition: transform .3s ease; }
.gc-bar a:hover svg { transform: scale(1.25); }
.gc-float { animation: gcpop .6s cubic-bezier(.2,.7,.2,1) .8s both; }
.gc-float::after { content: ''; position: absolute; inset: 0; border-radius: 50%; border: 2px solid #1E8F55; animation: gcring 2.8s ease-out 1.6s infinite; pointer-events: none; }
.gc-prod b { transition: color .25s; }
.gc-prod:hover b { color: var(--ruby); }
.gc-prod .im { transition: box-shadow .35s ease, transform .35s ease; }
.gc-prod:hover .im { box-shadow: 0 14px 28px rgba(60,30,40,.16); transform: translateY(-4px); }
.gc-cat .im { transition: box-shadow .35s ease, transform .35s ease; }
.gc-cat:hover .im { box-shadow: 0 14px 28px rgba(60,30,40,.16); transform: translateY(-4px); }
.gc-cta .gc-btn svg { transition: transform .3s; }
.gc-cta .gc-btn:hover svg { transform: scale(1.2) rotate(-8deg); }
.gc-three div { transition: padding-left .3s ease, background .3s; }
.gc-three div:hover { padding-left: 12px; }
@keyframes gcpage { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes gczoom { from { transform: scale(1.08); } to { transform: scale(1); } }
@keyframes gcpop { from { opacity: 0; transform: scale(.6); } to { opacity: 1; transform: none; } }
@keyframes gcring { 0% { transform: scale(1); opacity: .6; } 100% { transform: scale(1.6); opacity: 0; } }
.gc a, .gc button { font-family: inherit; }

/* reveals */
.rvi { clip-path: inset(0 0 100% 0); transition: clip-path 1.1s cubic-bezier(.77,0,.18,1) var(--d, 0ms); }
.rvi img { transform: scale(1.18); transition: transform 1.6s cubic-bezier(.2,.7,.2,1) var(--d, 0ms); }
.rvi.in { clip-path: inset(0 0 0 0); }
.rvi.in img { transform: scale(1); }
.gc-cat:hover .rvi.in img, .gc-prod:hover .rvi.in img { transform: scale(1.05); transition-duration: .8s; transition-delay: 0ms; }
.gc [data-split] .w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .12em; margin-bottom: -.12em; }
.gc [data-split] .w > span { display: inline-block; transform: translateY(110%); transition: transform .9s cubic-bezier(.2,.7,.2,1) calc(var(--k, 0) * 70ms); }
.gc [data-split].in .w > span, .gc-hero [data-split] .w > span { transform: none; }
.gc-hero h1 { animation: none !important; }
.gc-hero [data-split] .w > span { animation: gcword .9s cubic-bezier(.2,.7,.2,1) calc(var(--k, 0) * 70ms + .15s) both; }
.gc [data-split].rv { opacity: 1; transform: none; }
@keyframes gcword { from { transform: translateY(110%); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) { .rvi { clip-path: none !important; } .rvi img { transform: none !important; } .gc [data-split] .w > span { transform: none !important; } }

.gc-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; counter-reset: s; border-top: 1px solid var(--line); }
.gc-steps li { padding: 24px 20px 8px 0; position: relative; }
.gc-steps li + li { padding-left: 20px; border-left: 1px solid var(--line); }
.gc-steps span { color: var(--teal); font-weight: 800; font-size: 13px; letter-spacing: .1em; }
.gc-steps b { display: block; font-family: 'Fraunces', Georgia, serif; font-weight: 500; font-size: 19px; margin: 6px 0 8px; line-height: 1.25; }
.gc-steps p { margin: 0; font-size: 14px; line-height: 1.6; opacity: .85; }
.gc-list { margin: 0 0 16px; padding-left: 18px; line-height: 1.8; }
@media (max-width: 860px) { .gc-steps { grid-template-columns: 1fr; } .gc-steps li, .gc-steps li + li { padding: 18px 0; border-left: 0; border-bottom: 1px solid var(--line); } }

.gc-map { border-radius: 4px; overflow: hidden; border: 1px solid var(--line); margin-bottom: 20px; }
.gc-map iframe { width: 100%; height: 380px; border: 0; display: block; }
.gc-links.is-open { display: flex; } html { scroll-behavior: smooth; }

.gc-gallery.sq .gc-prod .im { aspect-ratio: 1/1; }
@media (min-width: 1000px) { .gc-gallery.sq { grid-template-columns: repeat(5, 1fr); gap: 28px 18px; } .gc-gallery.sq .gc-prod b { font-size: 14px; } }
@media (min-width: 640px) and (max-width: 999px) { .gc-gallery.sq { grid-template-columns: repeat(2, 1fr); } }
.gc-filter { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 26px; }
.gc-filter button { padding: 10px 18px; border-radius: 4px; border: 1px solid var(--line); background: transparent; font: inherit; font-weight: 600; font-size: 14px; cursor: pointer; color: inherit; transition: background .25s, color .25s, border-color .25s; }
.gc-filter button:hover, .gc-filter button.on { background: var(--ruby); color: #fff; border-color: var(--ruby); }
.gc-prod[hidden] { display: none; }

