:root{
  --ink:#2d2d2d;
  --heading:#282828;
  --dark-accent:#190e04;
  --teal:#12876f;
  --teal-deep:#297373;
  --header-bg:#b7caca;
  --panel:#eeeeee;
  --panel-soft:#f5f5f5;
  --max:1080px;
  --display:'Happy Monkey', cursive;
  --body:'Raleway', Helvetica, Arial, sans-serif;
  --utility:'Abel', Helvetica, Arial, sans-serif;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--body);
  color:var(--ink);
  line-height:1.7;
  background:#fff;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
h1,h2,h3,h4{
  font-family:var(--display);
  color:var(--heading);
  margin:0 0 .5em;
  line-height:1.25;
}
.wrap{
  width:88%;
  max-width:var(--max);
  margin:0 auto;
}
.visually-hidden{
  position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);
}

/* ---------- header ---------- */
header{
  background:var(--header-bg);
  position:sticky;
  top:0;
  z-index:50;
  box-shadow:0 1px 0 rgba(0,0,0,.1);
}
.header-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:10px 0;
}
.logo img{height:54px;width:auto;}
nav ul{
  display:flex;
  gap:26px;
  list-style:none;
  margin:0;
  padding:0;
}
nav a{
  font-family:var(--display);
  font-size:15px;
  letter-spacing:1.5px;
  text-transform:uppercase;
  color:rgba(10,10,10,.87);
  padding:6px 0;
  transition:color .25s;
}
nav a:hover,
nav li.current a{
  color:var(--teal);
}
.nav-toggle{
  display:none;
  background:none;
  border:0;
  font-size:28px;
  line-height:1;
  cursor:pointer;
  color:var(--dark-accent);
}

/* ---------- generic hero (inner pages) ---------- */
.page-hero{
  text-align:center;
  padding:60px 20px 24px;
}
.page-hero h1{
  font-size:46px;
  text-transform:uppercase;
  letter-spacing:3px;
  margin-bottom:.3em;
}
.page-hero .subhead{
  display:block;
  font-family:var(--display);
  text-transform:uppercase;
  font-size:18px;
  letter-spacing:2px;
  color:var(--teal);
}
.page-banner{
  min-height:260px;
  background-position:center;
  background-size:cover;
  background-repeat:no-repeat;
  position:fixed;
}
.page-banner::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(120deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,0) 100%);
}

/* ---------- homepage hero ---------- */
.hero-title{text-align:center;padding:70px 20px 30px;}
.hero-title h1{font-size:58px;text-transform:uppercase;letter-spacing:4px;margin-bottom:.3em;}
.hero-title .subhead{display:block;font-family:var(--display);text-transform:uppercase;font-size:22px;letter-spacing:2px;color:var(--teal);}
.hero-image{
  min-height:300px;
  background:
    linear-gradient(120deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,0) 100%),
    url('https://goetreholidaycottages.co.uk/gifs/Wool-willow-handmade-wales-crafts-craftsmidwales.jpg') center/cover no-repeat;
}

/* ---------- section shells ---------- */
section{padding:60px 0;}
.section-alt{background:var(--panel);}
.divider{text-align:center;margin-bottom:40px;}
.divider h2{
  display:inline-block;
  font-size:34px;
  text-transform:uppercase;
  color:#474747;
  position:relative;
  padding:0 20px;
}
.divider hr{
  border:none;
  border-top:2px solid var(--teal);
  width:100%;
  max-width:260px;
  margin:14px auto 0;
}

/* ---------- intro / prose ---------- */
.intro{max-width:750px;margin:0 auto;text-align:center;font-size:18px;}
.prose{max-width:750px;margin:0 auto;font-size:17px;}
.prose p{margin:0 0 1.2em;}

/* ---------- material / content cards ---------- */
.materials{display:grid;grid-template-columns:repeat(3, 1fr);gap:36px;margin-top:10px;}
.material-card{text-align:center;box-shadow:0 12px 18px -6px rgba(0,0,0,.3);background:#fff;}
.material-card img{aspect-ratio:3/2;object-fit:cover;width:100%;}
.material-card .card-body{padding:22px 24px 28px;}
.material-card h3{text-transform:uppercase;font-size:30px;color:var(--teal);}
.material-card p{margin:0 0 14px;}
.material-card .view-link{
  display:inline-block;font-family:var(--display);text-transform:uppercase;
  font-size:18px;color:var(--dark-accent);border-bottom:2px solid var(--teal);padding-bottom:2px;
}

/* ---------- two-column feature (image + text) ---------- */
.feature{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
  align-items:center;
  margin-bottom:60px;
}
.feature.reverse .feature-media{order:2;}
.feature-media img{box-shadow:0 12px 18px -6px rgba(0,0,0,.25);}
.feature h2{
  font-size:30px;
  text-transform:uppercase;
  color:var(--teal);
}

/* ---------- CTA strip ---------- */
.cta-strip{
  background:url('https://goetreholidaycottages.co.uk/gifs/P1010219.jpg') center/cover no-repeat;
  padding:70px 0;
}
.cta-grid{display:grid;grid-template-columns:repeat(2, minmax(0,1fr)) minmax(0,1fr);gap:30px;}
.cta-grid .spacer{display:none;}
.cta-box{
  background:rgba(238,238,238,.85);
  border-radius:2px;
  padding:34px 28px;
  text-align:center;
  min-height:200px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.cta-box h2{font-size:26px;color:var(--teal);}
.cta-box p{margin-bottom:18px;}
.btn{
  font-family:var(--utility);
  font-size:21px;
  color:var(--teal);
  background:transparent;
  border:2px solid var(--teal);
  border-radius:3px;
  padding:.45em 1.3em;
  display:inline-block;
  transition:all .2s ease;
  cursor:pointer;
}
.btn:hover{background:rgba(0,0,0,.06);}
.btn-row{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;}

/* ---------- testimonials ---------- */
.testimonials-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-bottom:40px;}
.testimonial{background:var(--panel-soft);padding:30px;display:flex;gap:24px;align-items:flex-start;}
.testimonial .portrait{
  width:90px;height:90px;border-radius:50%;background-size:cover;background-position:center;
  flex:0 0 90px;box-shadow:inset 0 0 3px rgba(0,0,0,.3);
}
.testimonial blockquote{margin:0 0 16px;font-style:italic;}
.testimonial .author{display:block;font-weight:700;}
.testimonial .meta{font-size:14px;color:#555;}
.testimonials-cta{text-align:center;}

/* ---------- simple image grid (gallery / instagram-style) ---------- */
.image-grid{display:grid;grid-template-columns:repeat(4, 1fr);gap:10px;}
.image-grid a{display:block;aspect-ratio:1/1;overflow:hidden;position:relative;}
.image-grid img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease;}
.image-grid a:hover img{transform:scale(1.05);}
.image-grid.cols-3{grid-template-columns:repeat(3, 1fr);}
.grid-follow{text-align:center;margin-top:24px;}
.grid-follow a{
  display:inline-block;background:var(--teal);color:#d9d9d9;padding:10px 24px;
  border-radius:3px;font-family:var(--display);letter-spacing:1px;
}

/* ---------- product / kit cards ---------- */
.product-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:30px;}
.product-card{background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.25);}
.product-card .card-body{padding:18px 20px 24px;}
.product-card h3{font-size:22px;color:var(--teal);margin-bottom:.2em;}
.product-card .price{font-family:var(--utility);font-size:20px;color:var(--dark-accent);margin-bottom:10px;}

/* ---------- workshop list ---------- */
.workshop-list{display:flex;flex-direction:column;gap:24px;}
.workshop-item{
  display:grid;grid-template-columns:200px 1fr;gap:24px;
  background:#fff;box-shadow:0 8px 16px -8px rgba(0,0,0,.2);padding:20px;
}
.workshop-item img{width:100%;height:100%;object-fit:cover;}
.workshop-item h3{color:var(--teal);font-size:24px;}
.workshop-item .tag{
  display:inline-block;font-family:var(--utility);font-size:13px;letter-spacing:1px;
  background:var(--panel);padding:4px 10px;border-radius:3px;margin-bottom:8px;color:var(--dark-accent);
}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px;}
.contact-details h2{font-size:26px;color:var(--teal);}
.contact-details p{margin:0 0 .4em;}
form.contact-form{display:flex;flex-direction:column;gap:16px;}
form.contact-form label{font-weight:600;font-size:14px;display:block;margin-bottom:6px;}
form.contact-form input,
form.contact-form textarea{
  width:100%;padding:12px 14px;border:1px solid #ccc;border-radius:3px;
  font-family:var(--body);font-size:15px;background:#fcfcfc;
}
form.contact-form input:focus,
form.contact-form textarea:focus{
  outline:2px solid var(--teal);outline-offset:1px;border-color:var(--teal);
}
form.contact-form button{align-self:flex-start;}

/* ---------- footer ---------- */
footer{background:#fafafa;border-top:1px solid #e2e2e2;}
.footer-grid{display:grid;grid-template-columns:repeat(4, 1fr);gap:30px;padding:50px 0 30px;}
.footer-grid h2{font-size:20px;color:var(--heading);}
.footer-grid h3{font-size:15px;margin:0 0 10px;}
.footer-grid a:hover{color:var(--teal);}
.social-links{display:flex;gap:14px;list-style:none;padding:0;margin:0;}
.social-links a{
  width:38px;height:38px;border:1px solid #ccc;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:16px;
}
.footer-bottom{border-top:1px solid #e2e2e2;padding:18px 0;font-size:14px;color:#666;}

/* ---------- focus visibility (accessibility) ---------- */
a:focus-visible,
button:focus-visible{
  outline:2px solid var(--teal);
  outline-offset:2px;
}

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

/* ---------- mobile ---------- */
@media (max-width:900px){
  .materials{grid-template-columns:1fr;}
  .cta-grid{grid-template-columns:1fr 1fr;}
  .testimonials-grid{grid-template-columns:1fr;}
  .image-grid{grid-template-columns:repeat(2,1fr);}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .feature{grid-template-columns:1fr;}
  .feature.reverse .feature-media{order:0;}
  .product-grid{grid-template-columns:repeat(2,1fr);}
  .workshop-item{grid-template-columns:1fr;}
  .contact-grid{grid-template-columns:1fr;}
}
@media (max-width:680px){
  nav{
    position:fixed;
    inset:64px 0 0 0;
    background:var(--header-bg);
    padding:20px 6%;
    transform:translateY(-110%);
    transition:transform .3s ease;
    z-index:40;
    overflow-y:auto;
  }
  nav.open{transform:translateY(0);}
  nav ul{flex-direction:column;gap:6px;}
  nav a{display:block;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.07);}
  .nav-toggle{display:block;}
  .hero-title h1{font-size:36px;}
  .page-hero h1{font-size:30px;}
  .cta-grid{grid-template-columns:1fr;}
  .product-grid{grid-template-columns:1fr;}
}