@font-face{font-family:"Fraunces";src:url(/assets/fonts/fraunces.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Nunito";src:url(/assets/fonts/nunito.woff2) format("woff2");font-weight:200 1000;font-display:swap}

:root{
  --green:#183c1c;--green-mid:#2d5a33;--ink:#23301f;--muted:#51604c;
  --cream:#fdf8ed;--cream-deep:#f6eedb;--line:#e3d9c0;
  --gold:#cc9014;--gold-action:#e0a82e;--gold-action-hover:#ecb94a;--gold-text:#845a06;
  --serif:"Fraunces",Georgia,serif;--sans:"Nunito",system-ui,-apple-system,"Segoe UI",sans-serif;
  --radius:16px;--gutter:clamp(16px,5vw,40px);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:110px}
body{margin:0;background:var(--cream);color:var(--ink);font:400 1.0625rem/1.65 var(--sans);overflow-x:hidden}
img,svg{display:block;max-width:100%}
img{height:auto}
a{color:var(--green);text-underline-offset:3px}
a:hover{color:var(--green-mid)}
:focus-visible{outline:3px solid var(--green);outline-offset:3px;border-radius:4px}
.band-green :focus-visible,.site-footer :focus-visible{outline-color:var(--gold-action)}
h1,h2,h3{font-family:var(--serif);color:var(--green);font-weight:700;line-height:1.1;margin:0 0 .5em;letter-spacing:-.012em;text-wrap:balance}
h1{font-size:clamp(2.5rem,7vw,4.25rem);font-weight:800}
h2{font-size:clamp(1.9rem,4.4vw,2.85rem)}
h3{font-size:1.3rem;line-height:1.2;letter-spacing:0}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0;list-style:none}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.skip{position:absolute;left:16px;top:-60px;z-index:50;background:var(--green);color:var(--cream);padding:10px 16px;border-radius:8px}
.skip:focus{top:10px;color:var(--cream)}
.wrap{width:min(100%,1180px);margin-inline:auto;padding-inline:var(--gutter)}
.narrow{max-width:800px}
.narrow-art{max-width:860px}
.centre{text-align:center}
.centre .sun,.cta .sun{margin-inline:auto}
.eyebrow{font-weight:800;font-size:.875rem;letter-spacing:.09em;text-transform:uppercase;color:var(--gold-text);margin-bottom:.8em}
.lede{font-size:clamp(1.15rem,2.2vw,1.3rem);line-height:1.55;color:var(--muted)}
.more a{font-weight:800}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:12px 24px;border:2px solid transparent;border-radius:999px;font:800 1.0625rem/1.2 var(--sans);text-decoration:none;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.btn-main{background:var(--gold-action);color:var(--green)}
.btn-main:hover{background:var(--gold-action-hover);color:var(--green)}
.btn-line{border-color:var(--green);color:var(--green)}
.btn-line:hover{background:var(--green);color:var(--cream)}
.btn-line-light{border-color:var(--cream);color:var(--cream)}
.btn-line-light:hover{background:var(--cream);color:var(--green)}
.btn-small{min-height:44px;padding:8px 20px;font-size:1rem}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}

/* Header */
.site-header{position:sticky;top:0;z-index:20;background:var(--cream);border-bottom:1px solid var(--line)}
.head-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:80px;padding-block:8px}
.brand img{width:126px}
.menu-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;background:none;border:2px solid var(--green);border-radius:999px;color:var(--green);font:800 1rem var(--sans);cursor:pointer}
.menu-btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.site-nav{display:none;position:absolute;inset:100% 0 auto;flex-direction:column;gap:4px;padding:12px var(--gutter) 20px;background:var(--cream);border-bottom:1px solid var(--line)}
.site-nav.open{display:flex}
.site-nav a:not(.btn){padding:10px 0;font-weight:700;text-decoration:none}
.site-nav a[aria-current]{text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:3px;text-underline-offset:6px}
.site-nav .btn{margin-top:8px}

/* Sun signature */
.sun{width:150px;height:auto;margin-bottom:12px;overflow:visible}
.sun-rays path{fill:none;stroke:var(--gold);stroke-width:10;stroke-linecap:round}
.sun-disc{fill:var(--gold)}
.sun-smile{fill:none;stroke:var(--green);stroke-width:7;stroke-linecap:round}
.sun-light .sun-smile{stroke:var(--cream)}

/* Hero */
.hero{overflow:hidden;padding-block:40px 56px}
.hero-grid{display:grid;gap:40px}
.hero-art{position:relative;padding-top:clamp(64px,19%,108px)}
.sun-hero{position:absolute;top:0;left:45%;width:min(64%,340px);margin:0;transform:translateX(-50%);z-index:0}
.sun-hero .sun-smile{display:none}

/* Device mock-ups */
.devices{position:relative;z-index:1;margin:0;padding-bottom:0}
.laptop{width:90%}
.screen{overflow:hidden;background:#fff;border:7px solid var(--green);border-bottom-width:9px;border-radius:12px 12px 0 0;font-size:clamp(.55rem,1.3vw,.75rem);line-height:1.2}
.base{height:12px;width:108%;margin-left:-4%;background:var(--green);border-radius:0 0 12px 12px}
.m-bar{display:flex;align-items:center;gap:8px;padding:.7em 1em;font-family:var(--serif);font-weight:700;color:var(--green)}
.m-bar span{margin-right:auto}
.m-bar i{width:2.8em;height:.45em;border-radius:9px;background:var(--line)}
.m-bar b,.m-search b,.m-body b{padding:.45em .9em;border-radius:99px;background:var(--gold-action);color:var(--green);font-family:var(--sans);font-weight:800}
.m-hero{position:relative;aspect-ratio:16/8}
.scene{position:absolute;inset:0;width:100%;height:100%}
.m-title{position:absolute;left:1.2em;top:1em;color:var(--green);font:800 2em/1.05 var(--serif)}
.m-title small{display:block;margin-top:.3em;font:700 .42em var(--sans)}
.m-search{display:flex;align-items:center;gap:.6em;padding:.75em 1em;background:var(--cream)}
.m-search span{flex:1;padding:.5em .7em;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--muted)}
.phone{position:absolute;right:0;bottom:-14px;width:27%;overflow:hidden;background:#fff;border:5px solid var(--green);border-radius:20px;box-shadow:0 12px 26px rgba(24,60,28,.2);font-size:clamp(.5rem,1.1vw,.68rem);line-height:1.25}
.phone .m-hero{aspect-ratio:1/1}
.m-body{display:grid;gap:.5em;padding:.8em}
.m-body strong{font:800 1.3em/1.1 var(--serif);color:var(--green)}
.m-body small{color:var(--muted)}
.m-body i{height:.45em;border-radius:9px;background:var(--line)}
.m-body i+i{width:70%}
.m-body b{margin-top:.2em;text-align:center}
figcaption{max-width:66%;margin-top:30px;font-size:.875rem;color:var(--muted)}

/* Sections */
.band{padding-block:clamp(56px,8vw,96px)}
.band-soft{background:var(--cream-deep)}
.band-green{background:var(--green);color:var(--cream)}
.band-green h2{color:var(--cream)}
.section-head{max-width:760px;margin-bottom:36px}
.section-head.centre{margin-inline:auto}
.section-head p:last-child{margin-bottom:0}
.page-head{padding-block:clamp(48px,7vw,84px)}
.notice{padding:14px 18px;border-left:5px solid var(--gold);border-radius:0 10px 10px 0;background:var(--cream-deep);font-weight:700}
.split{display:grid;gap:32px;align-items:center}
.hosts{text-align:center}
.hosts p:not(.more){font-size:clamp(1.15rem,2.2vw,1.3rem);color:var(--muted)}

/* Pricing */
.price-teaser{margin:18px 0 0;font-weight:700;color:var(--green)}
.price-teaser a{font-weight:800}
.plans{display:grid;gap:20px}
.plans>li{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:clamp(24px,4vw,36px);background:#fffdf7;border:1px solid var(--line);border-radius:var(--radius)}
.plans>li:first-child{border:2px solid var(--gold)}
.plans h2{font-size:1.5rem;margin:0}
.plans .price{margin:8px 0 4px;font:800 clamp(2.6rem,6vw,3.4rem)/1 var(--serif);color:var(--green)}
.plans .price span{font:800 1rem var(--sans);color:var(--gold-text);vertical-align:middle}
.plans p{color:var(--muted)}
.plans .btn{margin-top:auto}
.caveat{margin:24px 0 0}
.tiers>li{background:var(--cream-deep);border-color:transparent}
.tiers>li:first-child{border:1px solid transparent}
.tiers h3{font-size:1.5rem;margin:0}
.tier-list{display:grid;gap:10px;margin:14px 0 22px}
.tier-list li{display:flex;gap:10px;align-items:flex-start;padding:0;background:none;border:0;color:var(--ink);font-size:1rem;line-height:1.45}
.tier-list svg{flex:none;width:24px;height:24px;margin-top:1px;padding:4px;background:var(--gold-action);border-radius:50%;fill:none;stroke:var(--green);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.care-note{margin:20px 0 0;color:var(--muted);font-size:.95rem}
.plans .offer{margin:0 0 6px;font-weight:800;color:var(--gold-text)}

/* Cards */
.cards{display:grid;gap:16px}
.cards li{padding:24px;background:#fffdf7;border:1px solid var(--line);border-radius:var(--radius)}
.band:not(.band-soft) .cards li{background:var(--cream-deep);border-color:transparent}
.cards p{margin:0;color:var(--muted)}
.ticks{display:grid;gap:12px}
.ticks li{display:flex;align-items:center;gap:12px;font:700 1.25rem/1.25 var(--serif);color:var(--green)}
.ticks svg{flex:none;width:34px;height:34px;padding:6px;background:var(--gold-action);border-radius:50%;fill:none;stroke:var(--green);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}

/* Table */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}
table{width:100%;min-width:620px;border-collapse:collapse;background:#fffdf7}
th,td{padding:15px 18px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
tbody tr:last-child>*{border-bottom:0}
thead th{font-family:var(--serif);font-size:1.1rem;color:var(--green);background:var(--cream-deep)}
thead th:last-child{background:var(--green);color:var(--cream)}
tbody th{font-weight:800;color:var(--green)}
td{color:var(--muted)}
td:last-child{color:var(--ink);font-weight:600}

/* Steps on the logo's smile */
.arc-line{display:none}
.arc-steps ol{display:grid;gap:24px;counter-reset:step}
.arc-steps li{position:relative;padding-left:66px;counter-increment:step}
.arc-steps li::before{content:counter(step);position:absolute;left:0;top:0;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--gold-action);color:var(--green);font:800 1.3rem var(--serif)}
.arc-steps p{margin:0;color:var(--muted)}

/* FAQ */
.faqs{margin-top:20px;border-top:1px solid var(--line)}
details{border-bottom:1px solid var(--line)}
summary{position:relative;padding:18px 40px 18px 0;font:700 1.15rem/1.3 var(--serif);color:var(--green);cursor:pointer;list-style:none}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";position:absolute;right:6px;top:12px;font:700 1.6rem var(--sans);color:var(--gold-text)}
details[open] summary::after{content:"–"}
details p{color:var(--muted);padding-right:32px}

/* Call to action */
.cta{text-align:center}
.cta p{font-size:1.15rem}
.cta .actions{justify-content:center}

/* Forms */
.contact-grid{display:grid;gap:32px}
.enquiry{display:grid;gap:16px;padding:clamp(20px,4vw,32px);background:#fffdf7;border:1px solid var(--line);border-radius:var(--radius)}
.field{display:grid;gap:6px}
.field label{font-weight:800;color:var(--green)}
.field label span{font-weight:400;color:var(--muted)}
input,select,textarea{width:100%;min-height:50px;padding:11px 14px;background:#fff;border:1.5px solid #8b917f;border-radius:10px;color:var(--ink);font:400 1.0625rem/1.4 var(--sans)}
textarea{resize:vertical}
.hp{position:absolute;left:-9999px}
.form-note{margin:0;font-size:.9375rem;color:var(--muted)}
.form-status{margin:0;font-weight:700;color:var(--green)}
.form-status:empty{display:none}
.contact-side{display:grid;gap:24px;align-content:start}
.contact-side h2{font-size:1.5rem}
.contact-side a:not(.btn){overflow-wrap:anywhere}

/* Legal */
.legal h2{margin-top:1.5em;font-size:1.5rem}
.legal ul{padding-left:1.2em;list-style:disc;margin-bottom:1em}

/* Footer */
.site-footer{padding-block:48px 24px;background:#122f16;color:var(--cream)}
.site-footer a{color:var(--cream)}
.foot-row{display:grid;gap:28px}
.foot-row img{width:190px;margin-bottom:12px}
.foot-row nav{display:grid;gap:8px;align-content:start}
.foot-row nav a{overflow-wrap:anywhere}
.foot-note{margin-top:28px;font-size:.875rem}
.foot-note p{margin:0;padding-top:16px;border-top:1px solid rgba(253,248,237,.25)}

/* Mock-up search fields: the example dates only appear with the animation */
.m-search span{display:grid}
.m-search em{grid-area:1/1;font-style:normal}
.m-search em+em{visibility:hidden;color:var(--ink)}

/* Animations. All of them are skipped when a visitor asks for reduced motion.
   Anything that loops stops after a few rounds, so nothing moves for long. */
@media (prefers-reduced-motion:no-preference){
  /* Sunrise and page intro on load (pure CSS, so nothing flashes) */
  .sun-hero{animation:rise .9s ease-out both}
  @keyframes rise{from{opacity:0;transform:translate(-50%,28px)}to{opacity:1;transform:translate(-50%,0)}}
  .hero-copy>*,.page-head .wrap>*{animation:fade-up .7s cubic-bezier(.2,.7,.2,1) both}
  .hero-copy>:nth-child(2),.page-head .wrap>:nth-child(2){animation-delay:.08s}
  .hero-copy>:nth-child(3),.page-head .wrap>:nth-child(3){animation-delay:.16s}
  .hero-copy>:nth-child(n+4),.page-head .wrap>:nth-child(n+4){animation-delay:.24s}
  .devices{animation:fade-up .8s .2s cubic-bezier(.2,.7,.2,1) both}
  @keyframes fade-up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

  /* Fade in on scroll (site.js adds .reveal, then .in when it comes into view) */
  .motion .reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
  .motion .reveal.in{opacity:1;transform:none}
  .motion .reveal.d1{transition-delay:.08s}
  .motion .reveal.d2{transition-delay:.16s}
  .motion .reveal.d3{transition-delay:.24s}
  .motion .reveal.d4{transition-delay:.32s}

  /* Living sun: rays glow in turn, and the smile draws itself */
  .sun-rays path{transform-box:fill-box;transform-origin:center}
  .sun-hero .sun-rays path{animation:glow 2.6s ease-in-out .9s 3 both}
  .sun-hero .sun-rays path:nth-child(2),.sun-hero .sun-rays path:nth-child(4){animation-delay:1.15s}
  .sun-hero .sun-rays path:nth-child(3){animation-delay:1.4s}
  @keyframes glow{0%,100%{opacity:1;transform:none}50%{opacity:.55;transform:scale(1.18)}}
  .motion .sun:not(.sun-hero) .sun-smile{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.1s ease-out .2s}
  .motion .sun.in .sun-smile{stroke-dashoffset:0}
  .motion .sun:not(.sun-hero) .sun-rays path{opacity:0;transform:scale(.4);transition:opacity .4s ease,transform .5s cubic-bezier(.3,1.6,.5,1)}
  .motion .sun.in .sun-rays path{opacity:1;transform:none}
  .motion .sun.in .sun-rays path:nth-child(1),.motion .sun.in .sun-rays path:nth-child(5){transition-delay:.9s}
  .motion .sun.in .sun-rays path:nth-child(2),.motion .sun.in .sun-rays path:nth-child(4){transition-delay:1s}
  .motion .sun.in .sun-rays path:nth-child(3){transition-delay:1.1s}

  /* "How it works": the curve draws, then the numbers pop in */
  .motion .arc-line path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.4s ease-in-out .2s}
  .motion .arc-steps.in .arc-line path{stroke-dashoffset:0}
  .motion .arc-steps li::before{transform:scale(0);transition:transform .45s cubic-bezier(.3,1.6,.5,1)}
  .motion .arc-steps.in li::before{transform:none}
  .motion .arc-steps.in li:nth-child(2)::before{transition-delay:.35s}
  .motion .arc-steps.in li:nth-child(3)::before{transition-delay:.7s}
  .motion .arc-steps.in li:nth-child(4)::before{transition-delay:1.05s}

  /* Mock-up comes alive: dates fill in, buttons pulse */
  .motion .devices.in .m-search em:first-child{animation:swap-out .3s both}
  .motion .devices.in .m-search em+em{animation:swap-in .4s both}
  .motion .devices.in .m-search span:nth-child(1) em{animation-delay:1s}
  .motion .devices.in .m-search span:nth-child(2) em{animation-delay:1.5s}
  .motion .devices.in .m-search span:nth-child(3) em{animation-delay:2s}
  @keyframes swap-out{to{opacity:0;transform:translateY(-6px)}}
  @keyframes swap-in{from{visibility:visible;opacity:0;transform:translateY(6px)}to{visibility:visible;opacity:1;transform:none}}
  .motion .devices.in .m-search b{animation:pulse 1.2s ease-in-out 2.5s 2}
  .motion .devices.in .m-body b{animation:pulse 1.2s ease-in-out 4.2s 2}
  @keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(224,168,46,.7);transform:none}50%{box-shadow:0 0 0 .7em rgba(224,168,46,0);transform:scale(1.06)}}

  /* Hovers */
  @media (hover:hover){
    .btn{transition:background-color .15s,color .15s,border-color .15s,transform .2s,box-shadow .2s}
    .btn:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(24,60,28,.18)}
    .btn:active{transform:none;box-shadow:none}
    .cards li{transition:transform .25s ease,box-shadow .25s ease}
    .cards li:hover{transform:translateY(-4px);box-shadow:0 14px 28px rgba(24,60,28,.12)}
    .motion .cards li.reveal.in{transition:opacity .7s ease,transform .25s ease,box-shadow .25s ease}
  }
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .btn{transition:none}
}

@media (min-width:640px){
  .cards-3,.cards-4{grid-template-columns:repeat(2,1fr)}
  .foot-row{grid-template-columns:1.5fr 1fr 1fr}
}
@media (min-width:900px){
  .brand img{width:138px}
  .menu-btn{display:none}
  .site-nav{display:flex;position:static;flex-direction:row;align-items:center;gap:26px;padding:0;background:none;border:0}
  .site-nav .btn{margin:0}
  .hero{padding-block:64px 80px}
  .hero-grid{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);align-items:center;gap:56px}
  .cards-3{grid-template-columns:repeat(3,1fr)}
  .plans{grid-template-columns:repeat(3,1fr)}
  .cards-4{grid-template-columns:repeat(4,1fr)}
  .split{grid-template-columns:1.2fr 1fr;gap:64px}
  .contact-grid{grid-template-columns:1.5fr 1fr;gap:56px}
  .arc-steps{position:relative;padding-top:8px}
  .arc-line{display:block;position:absolute;left:11.5%;top:32px;width:77%;height:80px;overflow:visible}
  .arc-line path{fill:none;stroke:var(--green);stroke-width:4;stroke-linecap:round;vector-effect:non-scaling-stroke}
  .arc-steps ol{position:relative;grid-template-columns:repeat(4,1fr);gap:28px;text-align:center}
  .arc-steps li{padding:68px 0 0}
  .arc-steps li::before{left:50%;margin-left:-24px;box-shadow:0 0 0 6px var(--cream)}
  .arc-steps li:nth-child(2),.arc-steps li:nth-child(3){margin-top:66px}
}
