:root {
  --ink: #18332c;
  --ink-soft: #415b53;
  --cream: #f8f5ef;
  --paper: #fffdf8;
  --sage: #dce9df;
  --sage-deep: #8eab9c;
  --clay: #d57b5b;
  --yellow: #efc867;
  --line: rgba(24, 51, 44, 0.16);
  --shadow: 0 24px 70px rgba(39, 54, 47, 0.13);
  --serif: Iowan Old Style, Baskerville, "Times New Roman", serif;
  --sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  overflow-x: hidden;
  color: var(--ink);
  background: var(--cream);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; }
a:focus-visible, button:focus-visible { outline: 3px solid var(--clay); outline-offset: 4px; }
.skip-link { position: fixed; z-index: 20; top: 10px; left: 10px; transform: translateY(-180%); background: var(--ink); color: white; padding: 10px 16px; border-radius: 4px; }
.skip-link:focus { transform: translateY(0); }

.site-header {
  width: min(1240px, calc(100% - 48px));
  min-height: 92px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--line);
}
.brand { display: inline-flex; gap: 12px; align-items: center; font-weight: 760; letter-spacing: -0.025em; text-decoration: none; }
.brand-mark { width: 32px; height: 32px; display: grid; place-items: center; background: var(--ink); border-radius: 3px 10px 3px 3px; transform: rotate(-2deg); }
.brand-mark span { width: 15px; height: 12px; display: block; border: 2px solid var(--cream); border-radius: 1px 5px 1px 1px; }
.site-header nav, .site-footer nav { display: flex; gap: 28px; }
.site-header nav a, .site-footer nav a { font-size: .79rem; font-weight: 720; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; }
.site-header nav a:hover, .site-footer nav a:hover, .site-header nav a[aria-current], .site-footer nav a[aria-current] { color: var(--clay); }

.hero {
  width: min(1240px, calc(100% - 48px));
  min-height: 680px;
  margin: 0 auto;
  padding: 84px 0 96px;
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(460px, .98fr);
  align-items: center;
  gap: 72px;
}
.eyebrow { margin: 0 0 18px; color: var(--clay); font-size: .76rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
h1, h2, h3, p { text-wrap: pretty; }
h1, h2 { font-family: var(--serif); font-weight: 500; letter-spacing: -0.045em; line-height: .98; }
.hero h1 { max-width: 720px; margin: 0; font-size: clamp(4rem, 7.4vw, 7.1rem); }
.hero h1 em, .closing h2 em { color: var(--clay); font-weight: inherit; }
.lede { max-width: 600px; margin: 34px 0 0; color: var(--ink-soft); font-size: clamp(1.07rem, 1.5vw, 1.28rem); line-height: 1.65; }
.hero-actions { margin-top: 38px; display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 50px; padding: 0 24px; border-radius: 2px 14px 2px 2px; background: var(--ink); color: white; font-size: .82rem; font-weight: 760; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; box-shadow: 0 12px 30px rgba(24, 51, 44, .18); transition: transform .2s ease, box-shadow .2s ease; }
.button:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(24, 51, 44, .24); }
.availability { display: inline-flex; align-items: center; gap: 9px; color: var(--ink-soft); font-size: .8rem; font-weight: 650; }
.availability span { width: 8px; height: 8px; border-radius: 50%; background: var(--clay); box-shadow: 0 0 0 5px rgba(213, 123, 91, .14); }

.frame-scene { position: relative; min-height: 510px; isolation: isolate; }
.frame-scene::before { content: ""; position: absolute; z-index: -3; inset: 16px 0 38px 70px; border-radius: 50% 48% 45% 48%; background: var(--sage); transform: rotate(-7deg); }
.sun { position: absolute; z-index: -2; top: 46px; right: 42px; width: 118px; height: 118px; border-radius: 50%; background: var(--yellow); opacity: .85; }
.photo-frame { position: absolute; background: #e8ddcc; padding: 17px; box-shadow: var(--shadow); }
.photo { position: relative; width: 100%; height: 100%; overflow: hidden; }
.frame-back { top: 5px; right: 5%; width: 270px; height: 345px; transform: rotate(8deg); }
.frame-front { left: 7%; bottom: 38px; width: 330px; height: 406px; transform: rotate(-7deg); background: #fffaf0; }
.photo-lake { background: linear-gradient(#afcbd0 0 48%, #799d99 48% 65%, #405f55 65%); }
.ridge { position: absolute; left: -15%; width: 130%; height: 48%; bottom: 25%; background: #5e8175; clip-path: polygon(0 100%, 15% 45%, 29% 73%, 44% 28%, 60% 70%, 77% 36%, 100% 100%); }
.ridge-two { bottom: 14%; background: #315a4d; transform: scaleX(-1); }
.photo-sunset { background: linear-gradient(175deg, #e6bf83 0 48%, #d98062 48% 70%, #80554a 70%); }
.photo-sunset::before { content: ""; position: absolute; width: 92px; height: 92px; top: 48px; right: 42px; border-radius: 50%; background: #f8d975; }
.person { position: absolute; bottom: 0; width: 66px; height: 140px; border-radius: 35px 35px 0 0; background: #29483f; }
.person::before { content: ""; position: absolute; top: -32px; left: 10px; width: 46px; height: 46px; border-radius: 50%; background: #29483f; }
.person-one { left: 30px; height: 125px; }
.person-two { left: 108px; width: 74px; height: 165px; background: #355e51; }
.person-two::before { background: #355e51; }
.person-three { left: 196px; height: 110px; }
.scene-note { position: absolute; right: 8px; bottom: 16px; margin: 0; color: var(--ink-soft); font-family: var(--serif); font-size: 1.02rem; font-style: italic; line-height: 1.35; transform: rotate(2deg); }

.intro { padding: 110px max(24px, calc((100% - 1240px) / 2)); display: grid; grid-template-columns: 90px 1.5fr 1fr; gap: 52px; align-items: start; background: var(--paper); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.section-number { margin: 4px 0 0; color: var(--sage-deep); font-family: var(--serif); font-size: 1.15rem; }
.intro h2, .section-heading h2, .privacy-callout h2, .closing h2 { margin: 0; font-size: clamp(2.8rem, 5vw, 5rem); }
.intro > p:last-child { max-width: 400px; margin: 38px 0 0; color: var(--ink-soft); font-size: 1.05rem; }

.steps { width: min(1240px, calc(100% - 48px)); margin: 0 auto; padding: 120px 0 135px; }
.section-heading { display: flex; align-items: end; justify-content: space-between; margin-bottom: 70px; }
.section-heading .eyebrow { align-self: start; }
.step-list { counter-reset: step; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin: 0; padding: 0; list-style: none; background: var(--line); border: 1px solid var(--line); }
.step-list li { min-height: 360px; padding: 42px 38px; background: var(--cream); }
.step-list li:nth-child(2) { background: var(--paper); }
.step-number { margin: 36px 0 8px; color: var(--clay); font-size: .7rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.step-list h3 { margin: 0; font-family: var(--serif); font-size: 2rem; font-weight: 500; letter-spacing: -.03em; }
.step-list li > p:last-child { color: var(--ink-soft); }
.step-icon { position: relative; display: block; width: 66px; height: 66px; border-radius: 50%; background: var(--sage); }
.share-icon::before { content: "↑"; position: absolute; inset: 8px; display: grid; place-items: center; border: 2px solid var(--ink); border-radius: 50%; font-size: 1.5rem; font-weight: 500; }
.people-icon::before, .people-icon::after { content: ""; position: absolute; width: 19px; height: 25px; top: 17px; border: 2px solid var(--ink); border-radius: 50% 50% 45% 45%; }
.people-icon::before { left: 14px; }
.people-icon::after { right: 14px; }
.frame-icon::before { content: ""; position: absolute; inset: 13px; border: 3px solid var(--ink); border-radius: 1px 7px 1px 1px; transform: rotate(-4deg); }

.privacy-callout { padding: 105px max(24px, calc((100% - 1240px) / 2)); display: grid; grid-template-columns: 220px minmax(0, 1fr) 340px; gap: 60px; align-items: center; background: var(--ink); color: white; }
.privacy-callout .eyebrow { color: #efad93; }
.privacy-callout > div:nth-child(2) > p:not(.eyebrow) { max-width: 620px; color: #d5e0dc; font-size: 1.08rem; }
.lock-art { position: relative; width: 180px; height: 180px; border-radius: 50%; background: #294940; }
.lock-art::before { content: ""; position: absolute; width: 52px; height: 48px; left: 62px; top: 43px; border: 6px solid #f0c76b; border-bottom: 0; border-radius: 30px 30px 0 0; }
.lock-art span { position: absolute; width: 82px; height: 68px; left: 49px; top: 83px; border-radius: 4px 14px 4px 4px; background: var(--yellow); }
.lock-art span::before { content: ""; position: absolute; width: 8px; height: 22px; top: 21px; left: 37px; border-radius: 8px; background: var(--ink); }
.text-link { display: inline-block; margin-top: 17px; color: white; font-size: .8rem; font-weight: 760; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; border-bottom: 1px solid rgba(255,255,255,.45); }
.text-link span { margin-left: 8px; }
.privacy-points { margin: 0; padding: 0; list-style: none; border-top: 1px solid rgba(255,255,255,.2); }
.privacy-points li { padding: 18px 0; display: flex; gap: 16px; border-bottom: 1px solid rgba(255,255,255,.2); }
.privacy-points span { color: #efad93; font-size: .72rem; font-weight: 800; }

.closing { padding: 130px 24px 145px; text-align: center; background: var(--paper); }
.closing h2 { font-size: clamp(4rem, 8vw, 7.5rem); }
.closing > p:last-child { color: var(--ink-soft); }

.site-footer { min-height: 180px; padding: 50px max(24px, calc((100% - 1240px) / 2)); display: grid; grid-template-columns: 1fr 1.5fr auto; grid-template-rows: auto auto; gap: 16px 32px; align-items: center; background: #efeae0; border-top: 1px solid var(--line); }
.footer-brand { align-self: end; }
.site-footer > p { margin: 0; color: var(--ink-soft); font-size: .86rem; }
.site-footer nav { justify-content: flex-end; }
.copyright { grid-column: 3; text-align: right; }

.policy-layout { width: min(1160px, calc(100% - 48px)); margin: 0 auto; padding: 82px 0 130px; display: grid; grid-template-columns: 270px minmax(0, 720px); gap: 110px; align-items: start; }
.policy-aside { position: sticky; top: 32px; }
.policy-aside h1 { margin: 0; font-size: 3.2rem; }
.policy-aside > p:not(.eyebrow) { margin-top: 18px; color: var(--ink-soft); font-size: .85rem; }
.policy-aside nav { margin-top: 38px; padding-top: 24px; display: grid; gap: 8px; border-top: 1px solid var(--line); }
.policy-aside nav a { color: var(--ink-soft); font-size: .82rem; text-decoration: none; }
.policy-aside nav a:hover { color: var(--clay); }
.policy-content section { padding: 0 0 38px; margin: 0 0 42px; border-bottom: 1px solid var(--line); scroll-margin-top: 30px; }
.policy-content section:last-child { border-bottom: 0; }
.policy-content h2 { margin: 0 0 24px; font-size: 2.35rem; line-height: 1.08; }
.policy-content h3 { margin: 28px 0 8px; font-size: 1.02rem; letter-spacing: -.01em; }
.policy-content p, .policy-content li { color: var(--ink-soft); }
.policy-content a { color: var(--ink); text-decoration-color: var(--clay); text-underline-offset: 3px; }
.policy-lede { margin: 0 0 26px; color: var(--ink) !important; font-family: var(--serif); font-size: 2rem; line-height: 1.3; }
.notice-box { margin: 32px 0 5px; padding: 24px 26px; border-left: 4px solid var(--clay); background: var(--paper); box-shadow: 0 8px 26px rgba(39,54,47,.06); }
.notice-box strong { font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; }
.notice-box p { margin: 7px 0 0; }
.policy-content ul { padding-left: 1.2em; }
.policy-content li { margin-bottom: 10px; padding-left: 5px; }
.policy-footer { margin-top: 0; }

@media (max-width: 960px) {
  .hero { grid-template-columns: 1fr; gap: 40px; }
  .hero-copy { max-width: 740px; }
  .frame-scene { width: min(600px, 100%); margin: 0 auto; }
  .intro { grid-template-columns: 60px 1fr; }
  .intro > p:last-child { grid-column: 2; margin-top: 0; }
  .privacy-callout { grid-template-columns: 160px 1fr; }
  .lock-art { width: 150px; height: 150px; transform: scale(.82); transform-origin: left center; }
  .privacy-points { grid-column: 2; }
  .policy-layout { grid-template-columns: 210px minmax(0, 1fr); gap: 55px; }
}

@media (max-width: 720px) {
  .site-header { width: min(100% - 32px, 1240px); min-height: 76px; }
  .site-header nav { gap: 16px; }
  .site-header nav a { min-height: 44px; display: inline-flex; align-items: center; font-size: .68rem; }
  .brand { min-height: 44px; font-size: .9rem; }
  .brand-mark { width: 28px; height: 28px; }
  .hero { width: min(100% - 32px, 1240px); padding: 64px 0 78px; grid-template-columns: minmax(0, 1fr); }
  .hero h1 { font-size: clamp(3.55rem, 18vw, 5rem); }
  .frame-scene { min-height: 430px; }
  .frame-back { width: 210px; height: 275px; }
  .frame-front { width: 250px; height: 320px; }
  .person { transform: scale(.8); transform-origin: bottom left; }
  .person-three { left: 170px; }
  .scene-note { display: none; }
  .intro { padding-top: 80px; padding-bottom: 80px; grid-template-columns: 1fr; gap: 15px; }
  .section-number { display: none; }
  .intro > p:last-child { grid-column: 1; }
  .steps { width: min(100% - 32px, 1240px); padding: 90px 0; }
  .section-heading { display: block; }
  .step-list { grid-template-columns: 1fr; }
  .step-list li { min-height: 0; }
  .privacy-callout { grid-template-columns: 1fr; padding-top: 80px; padding-bottom: 80px; }
  .lock-art { transform: scale(.72); height: 130px; }
  .privacy-points { grid-column: 1; }
  .closing { padding-top: 100px; padding-bottom: 110px; }
  .site-footer { grid-template-columns: 1fr; text-align: left; }
  .site-footer nav { justify-content: flex-start; }
  .site-footer nav a { min-height: 44px; display: inline-flex; align-items: center; }
  .copyright { grid-column: 1; text-align: left; }
  .policy-layout { width: min(100% - 32px, 1160px); grid-template-columns: 1fr; gap: 50px; padding-top: 56px; }
  .policy-aside { position: static; }
  .policy-aside nav { display: none; }
  .policy-aside h1 { font-size: 3rem; }
  .policy-lede { font-size: 1.65rem; }
  .policy-content h2 { font-size: 2.05rem; }
}

@media (max-width: 359px) {
  .site-header {
    min-height: 0;
    padding: 10px 0 8px;
    flex-wrap: wrap;
  }
  .site-header .brand { width: 100%; }
  .site-header nav { width: 100%; gap: 26px; border-top: 1px solid var(--line); }
  .hero { padding-top: 50px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
