:root{
--ink:#1C3D3A;
--ink-soft:#4A5C53;
--paper:#F4EFE3;
--paper-raised:#ECE3D1;
--accent:#D9684B;
--sage:#6B8F71;
--line: rgba(28,61,58,0.15);
--glass-bg: rgba(255,255,255,0.4);
--glass-bg-strong: rgba(255,255,255,0.55);
--glass-border: rgba(255,255,255,0.65);
--glass-shadow: 0 8px 32px rgba(28,61,58,0.10);
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
background:var(--paper);
color:var(--ink);
font-family:'Source Serif 4', Georgia, serif;
font-size:18px;
line-height:1.6;
position:relative;
overflow-x:hidden;
}

/* ---- ambient glass background ---- */
.blob-field{
position:fixed; inset:0; z-index:-1; overflow:hidden; pointer-events:none;
}
.blob{
position:absolute; border-radius:50%; filter:blur(60px);
opacity:0.5;
}
.blob-1{
width:480px; height:480px; background:var(--accent); opacity:0.18;
top:-120px; left:-100px;
animation:drift1 38s ease-in-out infinite;
}
.blob-2{
width:560px; height:560px; background:var(--sage); opacity:0.16;
top:280px; right:-180px;
animation:drift2 46s ease-in-out infinite;
}
.blob-3{
width:420px; height:420px; background:var(--paper-raised); opacity:0.4;
bottom:-140px; left:30%;
animation:drift3 42s ease-in-out infinite;
}
@keyframes drift1{
0%,100%{ transform:translate(0,0) scale(1); }
50%{ transform:translate(60px,40px) scale(1.08); }
}
@keyframes drift2{
0%,100%{ transform:translate(0,0) scale(1); }
50%{ transform:translate(-50px,-30px) scale(1.05); }
}
@keyframes drift3{
0%,100%{ transform:translate(0,0) scale(1); }
50%{ transform:translate(40px,-50px) scale(1.1); }
}
@media (prefers-reduced-motion: reduce){
.blob{ animation:none !important; }
}

/* ---- glass card base ---- */
.glass{
background:var(--glass-bg);
backdrop-filter:blur(16px) saturate(160%);
-webkit-backdrop-filter:blur(16px) saturate(160%);
border:1px solid var(--glass-border);
box-shadow:var(--glass-shadow);
}
/* ---- noise grain overlay ---- */
.noise-layer{
position:fixed; inset:0; width:100%; height:100%;
z-index:30; pointer-events:none; mix-blend-mode:overlay; opacity:0.6;
}

/* ---- floating glass panes ---- */
.pane{
position:absolute; border-radius:18px;
border:1px solid rgba(255,255,255,0.4);
mix-blend-mode:overlay;
}
.pane-1{
width:210px; height:210px; top:8%; left:6%;
border:none; mix-blend-mode:normal;
animation:float1 30s ease-in-out infinite;
}
.pane-2{
width:220px; height:220px; top:35%; right:8%;
border:none; mix-blend-mode:normal;
animation:float2 36s ease-in-out infinite;
}
.pane-1, .pane-2, .pane-3{ overflow:visible; }
.pane-3{
width:220px; height:235px; bottom:10%; left:18%;
border:none; mix-blend-mode:normal;
animation:float3 33s ease-in-out infinite;
}
.pane-4{
width:160px; height:160px; top:55%; left:48%;
background:linear-gradient(135deg, rgba(28,61,58,0.10), rgba(28,61,58,0.01));
animation:float1 40s ease-in-out infinite reverse;
}
@keyframes float1{ 0%,100%{transform:translate(0,0) rotate(-12deg);} 50%{transform:translate(30px,40px) rotate(-6deg);} }
@keyframes float2{ 0%,100%{transform:translate(0,0) rotate(18deg);} 50%{transform:translate(-40px,-25px) rotate(24deg);} }
@keyframes float3{ 0%,100%{transform:translate(0,0) rotate(8deg);} 50%{transform:translate(25px,-35px) rotate(14deg);} }
@media (prefers-reduced-motion: reduce){
.pane{ animation:none !important; }
}

/* ---- etched-glass wave lines ---- */
.glass{ position:relative; overflow:hidden; }
.glass > *{ position:relative; z-index:1; }
.glass::before{
content:""; position:absolute; inset:0; z-index:0;
background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='400' height='120' viewBox='0 0 400 120'><path d='M0,15 Q50,5 100,15 T200,15 T300,15 T400,15' fill='none' stroke='%231C3D3A' stroke-width='1.4' stroke-opacity='0.35'/><path d='M0,38 Q50,28 100,38 T200,38 T300,38 T400,38' fill='none' stroke='%231C3D3A' stroke-width='1.4' stroke-opacity='0.26'/><path d='M0,61 Q50,51 100,61 T200,61 T300,61 T400,61' fill='none' stroke='%231C3D3A' stroke-width='1.4' stroke-opacity='0.18'/><path d='M0,84 Q50,74 100,84 T200,84 T300,84 T400,84' fill='none' stroke='%231C3D3A' stroke-width='1.4' stroke-opacity='0.1'/><path d='M0,107 Q50,97 100,107 T200,107 T300,107 T400,107' fill='none' stroke='%231C3D3A' stroke-width='1.4' stroke-opacity='0.04'/></svg>");
background-repeat:repeat;
background-size:400px 120px;
animation:wave-drift 18s linear infinite;
}
@keyframes wave-drift{
from{ background-position-x:0; }
to{ background-position-x:400px; }
}
@media (prefers-reduced-motion: reduce){
.glass::before{ animation:none; }
}
/* ---- scroll reveal ---- */
body.js-reveal-enabled .reveal{
opacity:0; transform:translateY(18px);
transition:opacity 0.7s ease, transform 0.7s ease;
}
body.js-reveal-enabled .reveal.in-view{
opacity:1; transform:none;
}
h1,h2,h3, .label{
font-family:'Space Grotesk', sans-serif;
letter-spacing:-0.01em;
}
.mono{
font-family:'JetBrains Mono', monospace;
letter-spacing:0.02em;
font-size:0.78rem;
text-transform:uppercase;
}
/* ---- scroll progress bar ---- */
.scroll-progress{
  position:fixed; top:0; left:0; height:2px; width:0%;
  background:var(--accent); z-index:1000; pointer-events:none;
  transition:width 0.08s linear;
}

/* ---- scroll-spy nav ---- */
.navlinks a.active{ color:var(--accent); }

/* ---- stat count-up ---- */
.stat-item .num{ font-variant-numeric:tabular-nums; }

/* ---- pricing accordion (mobile) ---- */
.price-toggle{ display:none; }

a{color:inherit; text-decoration:none;}
.wrap{max-width:980px; margin:0 auto; padding:0 28px;}

/* ---- ledger strip ---- */
.ledger{
background:var(--ink);
color:var(--paper);
font-family:'JetBrains Mono', monospace;
font-size:0.74rem;
letter-spacing:0.03em;
}
.ledger .wrap{
display:flex; justify-content:space-between; align-items:center;
padding:9px 28px; flex-wrap:wrap; gap:6px;
}
.ledger span{opacity:0.85;}
.ledger .dot{color:var(--sage); margin:0 4px;}

/* ---- header ---- */
header{
padding:18px 0;
position:sticky; top:0; z-index:50;
background:rgba(244,239,227,0.65);
backdrop-filter:blur(14px) saturate(160%);
-webkit-backdrop-filter:blur(14px) saturate(160%);
border-bottom:1px solid var(--line);
}
nav.wrap{display:flex; justify-content:space-between; align-items:center;}
.wordmark{font-size:1.3rem; font-weight:700; color:var(--ink);}
.wordmark span{color:var(--accent);}
.navlinks{display:flex; gap:28px; font-size:0.92rem; font-weight:500;}
.navlinks a:hover{color:var(--accent);}
.nav-toggle{display:none;}

/* ---- hero ---- */
.hero{padding:56px 0 70px; border-bottom:1px solid var(--line);}
.hero .wrap{display:grid; grid-template-columns:1.3fr 1fr; gap:50px; align-items:end;}
.eyebrow{
display:inline-block; font-family:'JetBrains Mono', monospace; font-size:0.72rem;
text-transform:uppercase; letter-spacing:0.08em; color:var(--sage);
border:1px solid var(--sage); border-radius:100px; padding:5px 14px; margin-bottom:22px;
}
h1{font-size:3.1rem; line-height:1.04; font-weight:700; color:var(--ink);}
h1 em{font-style:normal; color:var(--accent);}
.hero p.lede{margin-top:18px; font-size:1.18rem; color:var(--ink-soft); max-width:46ch;}
.cta-row{display:flex; gap:14px; margin-top:30px; flex-wrap:wrap;}
.btn{
font-family:'Space Grotesk', sans-serif; font-weight:700; font-size:0.95rem;
padding:14px 26px; border-radius:6px; display:inline-block; transition:transform 0.15s ease;
}
.btn:hover{transform:translateY(-2px);}
.btn-primary{background:var(--accent); color:var(--paper);}
.btn-ghost{border:1.5px solid var(--ink); color:var(--ink);}
.btn-call{border:1.5px solid var(--sage); color:var(--ink);}

/* call popup */
.call-wrap{ position:relative; display:inline-block; }
.call-popup{
  position:absolute;
  bottom:calc(100% + 10px);
  left:50%; transform:translateX(-50%);
  background:var(--ink); color:var(--paper);
  padding:11px 22px; border-radius:8px;
  font-family:'JetBrains Mono',monospace; font-size:1.05rem;
  white-space:nowrap; letter-spacing:0.03em;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity 0.18s ease, visibility 0.18s ease;
  z-index:60;
}
.call-popup a{ color:var(--paper); text-decoration:none; }
.call-popup a:hover{ color:var(--sage); }
.call-popup::after{
  content:''; position:absolute;
  top:100%; left:50%; transform:translateX(-50%);
  border:6px solid transparent;
  border-top-color:var(--ink);
}
.call-popup.open{ opacity:1; visibility:visible; pointer-events:auto; }

/* one-chair */
.one-chair{
border-radius:14px;
padding:22px 24px;
}
.one-chair .label{font-size:0.78rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--ink-soft); margin-bottom:14px;}
.chair-row{display:flex; align-items:center; gap:10px;}
.chair{
width:34px; height:34px; border-radius:50%; border:2px solid var(--ink);
display:flex; align-items:center; justify-content:center; flex:none;
}
.chair.filled{background:var(--sage); border-color:var(--sage); animation:pulse 2.6s ease-in-out infinite;}
@keyframes pulse{
0%,100%{ box-shadow:0 0 0 0 rgba(107,143,113,0.5); }
50%{ box-shadow:0 0 0 8px rgba(107,143,113,0); }
}
@media (prefers-reduced-motion: reduce){
.chair.filled{ animation:none; }
}
.chair-track{flex:1; height:2px; background:var(--line);}
.one-chair p{font-family:'JetBrains Mono', monospace; font-size:0.78rem; color:var(--ink-soft); margin-top:14px; line-height:1.5;}

/* ---- sections ---- */
section{padding:64px 0; border-bottom:1px solid var(--line);}
.kicker{font-family:'JetBrains Mono', monospace; font-size:0.74rem; text-transform:uppercase; letter-spacing:0.07em; color:var(--accent); margin-bottom:10px;}
h2{font-size:2rem; font-weight:700; margin-bottom:18px;}

/* about */
.about .wrap{display:grid; grid-template-columns:0.9fr 1.1fr; gap:50px;}
.about p{color:var(--ink-soft); margin-bottom:14px;}
.about .stat{display:flex; gap:18px; margin-top:20px;}
.stat-item{font-family:'Space Grotesk', sans-serif;}
.stat-item .num{font-size:1.8rem; font-weight:700; color:var(--ink);}
.stat-item .cap{font-size:0.74rem; text-transform:uppercase; letter-spacing:0.05em; color:var(--ink-soft);}

/* services */
.services-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:10px;}
.service{
border-radius:14px; padding:24px;
transition:transform 0.25s ease, box-shadow 0.25s ease;
}
.service:hover{ transform:translateY(-4px); }
.service h3{font-size:1.1rem; margin-bottom:8px;}
.service p{font-size:0.95rem; color:var(--ink-soft);}

/* pricing */
.price-grid{display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:10px;}
.price-category{border-radius:14px; padding:26px;}
.price-category h3{
font-family:'JetBrains Mono', monospace; font-size:0.82rem; text-transform:uppercase;
letter-spacing:0.05em; color:var(--accent); margin-bottom:6px; font-weight:500;
}
.price-row{padding:14px 0; border-bottom:1px solid var(--line);}
.price-row:last-child{border-bottom:none;}
.price-row-top{display:flex; justify-content:space-between; align-items:baseline; gap:12px;}
.price-row-top .name{font-family:'Space Grotesk', sans-serif; font-weight:700; font-size:0.98rem;}
.price-row-top .price{font-family:'JetBrains Mono', monospace; font-size:0.88rem; color:var(--accent); white-space:nowrap;}
.price-row p{font-size:0.88rem; color:var(--ink-soft); margin-top:4px;}
.price-note{font-family:'JetBrains Mono', monospace; font-size:0.8rem; color:var(--ink-soft); margin-top:22px; text-align:center;}

/* hours */
.hours-card{
margin-top:18px; border-radius:14px; padding:8px 24px;
}
.hours-row{display:flex; justify-content:space-between; padding:11px 0; border-bottom:1px solid var(--line); font-family:'JetBrains Mono', monospace; font-size:0.92rem;}
.hours-row:last-child{border-bottom:none;}
.hours-row.closed{color:var(--ink-soft); opacity:0.6;}
.hours-row .day{font-weight:500;}

/* contact / footer */
.contact .wrap{display:grid; grid-template-columns:1fr 1fr; gap:50px;}
.contact-card{border-radius:14px; padding:28px;}
.contact-block{margin-bottom:20px;}
.contact-block:last-child{margin-bottom:0;}
.contact-block .label{font-family:'JetBrains Mono', monospace; font-size:0.72rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--ink-soft); margin-bottom:6px;}
.contact-block a, .contact-block span{font-size:1.05rem;}
.contact-block a:hover{color:var(--accent);}

footer{padding:30px 0; font-family:'JetBrains Mono', monospace; font-size:0.74rem; color:var(--ink-soft);}
footer .wrap{display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;}

@media (max-width: 760px){

/* ---- layout ---- */
h1{font-size:2.2rem;}
.hero .wrap, .about .wrap, .contact .wrap{grid-template-columns:1fr;}
.services-grid{grid-template-columns:1fr;}
.price-grid{grid-template-columns:1fr;}
.ledger .wrap{font-size:0.68rem;}

/* ---- pricing accordion ---- */
.price-toggle{
  display:flex; width:100%; justify-content:space-between; align-items:center;
  background:none; border:none; cursor:pointer; padding:0 0 12px;
  font-family:'JetBrains Mono',monospace; font-size:0.82rem;
  text-transform:uppercase; letter-spacing:0.05em; color:var(--accent);
  font-weight:500;
}
.price-toggle .chevron{
  font-style:normal; font-size:1rem; transition:transform 0.25s ease;
}
.price-category.collapsed .price-rows{ display:none; }
.price-category.collapsed .chevron{ transform:rotate(-90deg); }

/* ---- hamburger button ---- */
.nav-toggle{
  display:flex; flex-direction:column; justify-content:center; gap:5px;
  background:none; border:none; cursor:pointer; padding:8px;
  position:relative; z-index:300;
}
.nav-toggle span{
  display:block; width:22px; height:2px; background:var(--ink);
  transition:transform 0.25s ease, opacity 0.25s ease;
}
.nav-toggle.open span:nth-child(1){transform:rotate(45deg) translate(5px,5px);}
.nav-toggle.open span:nth-child(2){opacity:0;}
.nav-toggle.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px);}

/* ---- mobile nav overlay ---- */
.navlinks{
  display:none;
  position:fixed; inset:0; z-index:200;
  background:rgba(244,239,227,0.97);
  flex-direction:column; align-items:center; justify-content:center;
  gap:36px; font-size:1.5rem; font-weight:500;
}
.navlinks.open{display:flex;}
.navlinks a:hover{color:var(--accent);}

/* ---- pane card scaling ---- */
.pane-1{width:min(130px,36vw); height:min(130px,36vw);}
.pane-2{width:min(140px,38vw); height:min(140px,38vw);}
.pane-3{width:min(130px,36vw); height:min(140px,38vw);}

/* ---- performance ---- */
.glass{
  background:rgba(255,255,255,0.78);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}
header{
  background:rgba(244,239,227,0.96);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}
.blob{filter:blur(30px);}

}
