:root{
  --ivory:#FCFAF7; --cream:#F6F0EA; --sand:#EDE3D9; --blush:#F3E1E1;
  --rose:#C4838D; --rose-deep:#B2707B; --rose-soft:#E3C3C6;
  --ink:#2B2422; --body:#615650; --muted:#8C807A; --line:#E8DED5;
  --serif:'Cormorant Garamond', Georgia, serif;
  --sans:'Jost', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
  --pad:clamp(22px, 6vw, 64px);
  --max:1240px; --radius:4px;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*,*::before,*::after{box-sizing:border-box;}
*{margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{background:var(--ivory); color:var(--body); font-family:var(--sans); font-weight:300;
  font-size:1rem; line-height:1.75; overflow-x:hidden; -webkit-font-smoothing:antialiased;}
img{display:block; max-width:100%;}
a{color:inherit;}
button{font:inherit; color:inherit; background:none; border:0; cursor:pointer;}
[hidden]{display:none !important;}
:focus-visible{outline:2px solid var(--rose); outline-offset:3px; border-radius:2px;}
h1,h2,h3{font-family:var(--serif); font-weight:500; color:var(--ink); line-height:1.05; letter-spacing:-.01em;}

.wrap{width:100%; max-width:var(--max); margin-inline:auto; padding-inline:var(--pad);}
.eyebrow{display:block; font-size:.68rem; letter-spacing:.24em; text-transform:uppercase;
  color:var(--rose); margin-bottom:18px;}

/* header */
.site-header{
  position:sticky; top:0; z-index:40;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:14px var(--pad); min-height:66px;
  background:rgba(252,250,247,.94); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line); color:var(--ink);
}
.brand{display:block; text-decoration:none; line-height:1;}
.brand .b1{font-family:var(--serif); font-size:1.12rem; letter-spacing:.22em; text-transform:uppercase; display:block; white-space:nowrap;}
.brand .b2{font-size:.53rem; letter-spacing:.42em; text-transform:uppercase; display:block; margin-top:6px; opacity:.72;}
.header-right{display:flex; align-items:center; gap:20px;}
.header-right .lnk{font-size:.74rem; letter-spacing:.14em; text-transform:uppercase; text-decoration:none;}
.header-right .lnk:hover{color:var(--rose-deep);}
.btn-book-sm{
  display:inline-flex; align-items:center; justify-content:center; min-height:38px; padding:0 20px;
  border-radius:999px; background:var(--rose); color:#fff; text-decoration:none;
  font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; white-space:nowrap; transition:background .3s var(--ease);
}
.btn-book-sm:hover{background:var(--rose-deep);}

/* page head */
.page-head{padding:clamp(52px,10vw,104px) 0 clamp(28px,5vw,44px);}
.page-head h1{font-size:clamp(2.6rem,11vw,4.6rem);}
.page-head p{max-width:40ch; margin-top:22px; font-size:1.0625rem;}

/* filters */
.filters{
  display:flex; gap:26px; overflow-x:auto; padding:6px var(--pad) 0;
  scrollbar-width:none; -ms-overflow-style:none;
  border-bottom:1px solid var(--line);
  max-width:var(--max); margin-inline:auto;
}
.filters::-webkit-scrollbar{display:none;}
.filter{
  flex:0 0 auto; padding:12px 0 14px; font-size:.76rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--muted); border-bottom:1px solid transparent; margin-bottom:-1px;
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.filter:hover{color:var(--ink);}
.filter[aria-pressed="true"]{color:var(--ink); border-color:var(--rose);}

/* grid */
.grid{
  display:grid; grid-template-columns:repeat(2,1fr);
  gap:clamp(14px,3vw,30px) clamp(10px,2.5vw,26px);
  padding:clamp(28px,6vw,56px) 0 clamp(60px,10vw,120px);
}
@media(min-width:760px){ .grid{grid-template-columns:repeat(3,1fr);} }
@media(min-width:1100px){ .grid{grid-template-columns:repeat(4,1fr);} }
.card{text-align:left; padding:0; width:100%;}
.card .shot{
  display:block; width:100%; aspect-ratio:4/5; overflow:hidden;
  border-radius:var(--radius); background:var(--sand);
}
.card .shot img{width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease);}
.card:hover .shot img{transform:scale(1.035);}
.card .cap{display:block; padding:14px 2px 0;}
.card .cap strong{
  display:block; font-family:var(--serif); font-weight:500; font-size:1.05rem; color:var(--ink);
  letter-spacing:0; line-height:1.3;
}
.card .cap span{display:block; font-size:.85rem; color:var(--muted); line-height:1.6; margin-top:5px;}
.card[hidden]{display:none;}

/* lightbox */
.lightbox{
  position:fixed; inset:0; z-index:90; background:rgba(31,26,24,.94);
  display:flex; align-items:center; justify-content:center; padding:16px;
  opacity:0; visibility:hidden; transition:opacity .35s var(--ease), visibility .35s;
}
.lightbox.is-open{opacity:1; visibility:visible;}
.lightbox img{max-width:100%; max-height:84vh; max-height:84svh; object-fit:contain; border-radius:var(--radius);}
.lb-btn{position:absolute; width:52px; height:52px; border-radius:50%; color:#fff;
  display:grid; place-content:center; background:rgba(255,255,255,.09); transition:background .3s var(--ease);}
.lb-btn:hover{background:rgba(255,255,255,.2);}
.lb-close{top:16px; right:16px;} .lb-prev{left:12px; top:50%; transform:translateY(-50%);}
.lb-next{right:12px; top:50%; transform:translateY(-50%);}
@media(min-width:900px){ .lb-close{top:32px; right:32px;} .lb-prev{left:32px;} .lb-next{right:32px;} }

/* footer */
.site-footer{background:var(--cream); padding:clamp(48px,9vw,80px) 0 40px;}
.foot-inner{display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:34px;}
.foot-nav{display:flex; flex-wrap:wrap; gap:6px 28px;}
.foot-nav a{font-size:.88rem; text-decoration:none; padding-block:6px;}
.foot-nav a:hover{color:var(--rose-deep);}
.foot-legal{font-size:.74rem; color:var(--muted); margin-top:30px; padding-top:26px; border-top:1px solid var(--line);}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms !important; animation-duration:.01ms !important;}
}

/* ------------------------------------------------------------------
   cezdesigns-portfolio-embed
   This build is also framed as a scrollable preview inside the
   CezDesigns portfolio. Containing the overscroll stops a scroll that
   reaches this document's top or bottom edge from chaining out and
   moving the CezDesigns page behind it. Harmless when the site is
   viewed on its own.
   ------------------------------------------------------------------ */
html { overscroll-behavior-y: contain; }
