/* ============================================================================
   Services pages — shared stylesheet for services.html + the four service
   pages (event / production / corporate / school).

   Shared rather than inlined per page (the pattern upcoming-menus.html uses)
   because five pages would otherwise carry five copies of the same ~250 lines
   and drift apart. legal.css sets this precedent; deploy.sh cache-busts every
   assets/*.css reference automatically.

   COLORS: every value here resolves from --brand-bg / --brand-dark /
   --brand-accent / --brand-secondary. Never hardcode a brand hex — assets/theme.js
   overrides those four at runtime from the owner's Brand Colors admin tab, and a
   literal hex would silently stop following the palette.
   ============================================================================ */

:root{
  --brand-bg:#F9F6F1; --brand-dark:#181B17; --brand-accent:#D07E42; --brand-secondary:#B7AD76;
  --brand-bg-rgb:249,246,241; --brand-dark-rgb:24,27,23; --brand-accent-rgb:208,126,66; --brand-secondary-rgb:183,173,118;
  --brown:var(--brand-dark); --cream:var(--brand-bg); --white:#FFFFFF;
  --gray-400:#9B7B6B; --gray-600:#6B6560; --gray-100:#F0F0F0;
  --nav-h:68px; --r:12px; --r-lg:20px; --r-xl:28px;
  --shadow:0 2px 12px rgba(0,0,0,.08); --shadow-lg:0 8px 32px rgba(0,0,0,.12);
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-padding-top:78px;}
body{font-family:'Inter',sans-serif;color:var(--brown);background:var(--cream);-webkit-font-smoothing:antialiased;line-height:1.5;}
a{text-decoration:none;color:inherit;}
.serif{font-family:'Recoleta',Georgia,serif;}
.container{max-width:1180px;margin:0 auto;padding:0 24px;}
section[id]{scroll-margin-top:78px;}

/* Buttons — pill, matching index.html/upcoming-menus.html */
.btn{display:inline-block;font-family:'Inter',sans-serif;font-weight:600;font-size:15px;padding:12px 26px;border-radius:100px;transition:all .2s;cursor:pointer;border:none;}
.btn-lg{font-size:16px;padding:15px 34px;}
.btn-accent{background:var(--brand-accent);color:#fff;}
.btn-accent:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg);}
.btn-ghost{background:transparent;color:var(--brown);border:1.5px solid rgba(var(--brand-dark-rgb),.18);}
.btn-ghost:hover{background:#fff;}
.btn-white{background:#fff;color:var(--brown);}
.btn-white:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg);}

/* Nav — sticky blurred subpage chrome */
.nav{position:sticky;top:0;z-index:100;background:rgba(var(--brand-bg-rgb),.92);backdrop-filter:blur(10px);border-bottom:1px solid rgba(var(--brand-dark-rgb),.07);}
.nav-inner{height:var(--nav-h);display:flex;align-items:center;justify-content:space-between;}
.nav-logo{display:flex;align-items:center;gap:9px;}
.nav-logo-text{font-family:'Recoleta',serif;font-size:19px;color:var(--brown);}
.nav-right{display:flex;align-items:center;gap:8px;}
.nav-link{font-size:14px;font-weight:500;color:var(--gray-600);padding:9px 14px;border-radius:8px;transition:all .2s;}
.nav-link:hover{background:var(--gray-100);color:var(--brown);}
.nav-cta{background:var(--brand-accent);color:#fff;font-size:14px;font-weight:700;padding:10px 20px;border-radius:100px;transition:all .2s;}
.nav-cta:hover{transform:translateY(-1px);box-shadow:var(--shadow);}

/* Hero */
.hero{padding:72px 0 56px;text-align:center;}
.hero-eyebrow{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--brand-accent);margin-bottom:14px;}
.hero-title{font-size:clamp(34px,5vw,56px);line-height:1.08;color:var(--brown);margin-bottom:18px;}
.hero-sub{font-size:17.5px;color:var(--gray-600);line-height:1.65;max-width:640px;margin:0 auto 30px;}
.hero-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}
.hero-note{margin-top:18px;font-size:13.5px;color:var(--gray-400);}

/* Section furniture */
.sec{padding:64px 0;}
.sec-alt{background:#fff;border-top:1px solid rgba(var(--brand-dark-rgb),.06);border-bottom:1px solid rgba(var(--brand-dark-rgb),.06);}
.sec-head{text-align:center;max-width:640px;margin:0 auto 40px;}
.sec-eyebrow{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--brand-accent);margin-bottom:12px;}
.sec-title{font-family:'Recoleta',serif;font-size:clamp(28px,3.4vw,42px);line-height:1.14;color:var(--brown);margin-bottom:14px;}
.sec-sub{font-size:16.5px;color:var(--gray-600);line-height:1.65;}

/* Card grids */
.grid{display:grid;gap:22px;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
.card{background:#fff;border-radius:var(--r-xl);padding:30px 26px;box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s;}
.card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);}
.card-ico{font-size:30px;line-height:1;margin-bottom:14px;}
.card h3{font-family:'Recoleta',serif;font-size:20px;color:var(--brown);margin-bottom:9px;line-height:1.28;}
.card p{font-size:14.5px;color:var(--gray-600);line-height:1.62;}
.sec-alt .card{box-shadow:none;border:1px solid rgba(var(--brand-dark-rgb),.09);}
.sec-alt .card:hover{box-shadow:var(--shadow);}

/* Service tiles on the hub */
.svc-tile{background:#fff;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow);transition:all .25s;display:flex;flex-direction:column;}
.svc-tile:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);}
.svc-tile-top{padding:30px 26px 0;}
.svc-tile .card-ico{font-size:34px;}
.svc-tile h3{font-family:'Recoleta',serif;font-size:22px;color:var(--brown);margin-bottom:10px;}
.svc-tile p{font-size:14.5px;color:var(--gray-600);line-height:1.62;}
.svc-tile-foot{margin-top:auto;padding:20px 26px 26px;}
.svc-more{font-size:14px;font-weight:700;color:var(--brand-accent);}
.svc-tile:hover .svc-more{text-decoration:underline;}

/* Numbered steps */
.steps{counter-reset:step;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.step{position:relative;padding-top:8px;}
.step::before{counter-increment:step;content:counter(step);display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:100px;background:color-mix(in srgb, var(--brand-accent) 14%, var(--brand-bg));color:var(--brand-accent);font-weight:800;font-size:16px;margin-bottom:14px;}
.step h3{font-family:'Recoleta',serif;font-size:19px;color:var(--brown);margin-bottom:8px;}
.step p{font-size:14.5px;color:var(--gray-600);line-height:1.62;}

/* Client showcase — logo wall. Falls back to a styled name chip when a client
   has no logo yet, which is the normal state until the owner uploads one. */
.clients{display:flex;flex-wrap:wrap;gap:18px;justify-content:center;align-items:center;}
/* Transparent by default: a white card hides a white logo entirely, and these
   are real brand marks people should actually be able to read. Logos show in
   full colour rather than greyscale for the same reason. */
.client{display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid rgba(var(--brand-dark-rgb),.10);border-radius:var(--r-lg);padding:20px 26px;min-height:104px;min-width:190px;transition:all .2s;}
.client:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:rgba(var(--brand-dark-rgb),.18);}
/* Fill the tile rather than cap at natural size. max-height alone only ever
   shrinks — a low-resolution source (Meta's mark arrived 50x11) then renders
   postage-stamp sized next to a 3300px crest. Fixed height + contain scales
   every logo to the same optical weight regardless of source resolution. */
.client img{height:68px;width:auto;max-width:190px;object-fit:contain;transition:transform .25s;}
.client:hover img{transform:scale(1.04);}
/* A light or white logo is invisible on a light page, so its tile — and ONLY
   its tile — gets a dark backing. Set per client in admin ("Light logo"),
   because no single background can show both a black mark and a white one. */
.client.light{background:var(--brand-dark);border-color:var(--brand-dark);}
.client.light:hover{box-shadow:0 8px 26px rgba(var(--brand-dark-rgb),.30);}
.client.light .client-name{color:#fff;}
.client-name{font-family:'Recoleta',serif;font-size:16.5px;color:var(--brown);text-align:center;line-height:1.3;}
.clients-note{text-align:center;font-size:13.5px;color:var(--gray-400);margin-top:22px;}
.clients-empty{text-align:center;color:var(--gray-400);font-size:15px;padding:26px 0;}

/* Menu / inclusion lists */
.tick{list-style:none;display:grid;gap:11px;}
.tick li{position:relative;padding-left:30px;font-size:15.5px;color:var(--gray-600);line-height:1.6;}
.tick li::before{content:"✓";position:absolute;left:0;top:0;color:var(--brand-accent);font-weight:800;}
.tick li strong{color:var(--brown);font-weight:650;}

/* Split panel */
.split{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;}
.split h2{font-family:'Recoleta',serif;font-size:clamp(26px,3vw,36px);color:var(--brown);margin-bottom:16px;line-height:1.18;}
.split p{font-size:16px;color:var(--gray-600);line-height:1.68;margin-bottom:16px;}
.panel{background:color-mix(in srgb, var(--brand-secondary) 12%, var(--brand-bg));border:1px solid rgba(var(--brand-secondary-rgb),.3);border-radius:var(--r-xl);padding:32px 30px;}
.panel h3{font-family:'Recoleta',serif;font-size:21px;color:var(--brown);margin-bottom:16px;}

/* Pricing rows */
.rate{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:13px 0;border-bottom:1px dashed rgba(var(--brand-dark-rgb),.14);}
.rate:last-child{border-bottom:none;}
.rate-name{font-size:15.5px;color:var(--brown);font-weight:600;}
.rate-desc{display:block;font-size:13px;color:var(--gray-400);font-weight:400;margin-top:2px;}
.rate-price{font-family:'Recoleta',serif;font-size:19px;color:var(--brand-accent);white-space:nowrap;}
.rate-note{font-size:13px;color:var(--gray-400);margin-top:18px;line-height:1.6;}

/* FAQ — plain <details>, no JS, and the text stays in the DOM for crawlers */
.faq{max-width:760px;margin:0 auto;}
.faq details{background:#fff;border:1px solid rgba(var(--brand-dark-rgb),.09);border-radius:var(--r);margin-bottom:12px;overflow:hidden;}
.faq summary{cursor:pointer;padding:18px 22px;font-weight:650;font-size:16px;color:var(--brown);list-style:none;display:flex;justify-content:space-between;gap:16px;align-items:center;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";font-size:22px;color:var(--brand-accent);font-weight:400;line-height:1;flex-shrink:0;}
.faq details[open] summary::after{content:"−";}
.faq details p{padding:0 22px 20px;font-size:15px;color:var(--gray-600);line-height:1.68;}

/* Closing CTA band */
.cta-band{background:#fff;border-top:1px solid rgba(var(--brand-dark-rgb),.07);padding:60px 0;text-align:center;}
.cta-band h2{font-family:'Recoleta',serif;font-size:clamp(26px,3vw,38px);color:var(--brown);margin-bottom:12px;}
.cta-band p{color:var(--gray-600);font-size:16.5px;margin-bottom:26px;max-width:560px;margin-left:auto;margin-right:auto;line-height:1.6;}
.cta-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}

/* Footer */
footer{background:var(--brown);padding:48px 0 32px;color:rgba(255,255,255,.55);}
.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;}
.footer-logo-text{font-family:'Recoleta',serif;font-size:18px;color:#fff;}
.footer-links{display:flex;gap:20px;flex-wrap:wrap;}
.footer-links a{font-size:14px;color:rgba(255,255,255,.6);}
.footer-links a:hover{color:#fff;}

/* Preview-only ribbon — visible proof the page is NOT public yet. Removed at
   launch along with the noindex tags. */
.preview-flag{background:var(--brown);color:#fff;text-align:center;font-size:13px;font-weight:600;padding:9px 16px;letter-spacing:.02em;}
.preview-flag b{color:var(--brand-secondary);}

/* Scroll reveal */
.fade-in{opacity:0;transform:translateY(26px);transition:opacity .6s ease,transform .6s ease;}
.fade-in.visible{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  .fade-in{opacity:1;transform:none;transition:none;}
  .card:hover,.svc-tile:hover,.client:hover,.btn-accent:hover{transform:none;}
}

/* Responsive — wide content must scroll inside itself, never the body */
@media(max-width:960px){
  .grid-4{grid-template-columns:repeat(2,1fr);}
  .grid-3{grid-template-columns:repeat(2,1fr);}
  .split{grid-template-columns:1fr;gap:32px;}
  .steps{grid-template-columns:1fr;gap:28px;}
}
@media(max-width:640px){
  .grid-4,.grid-3,.grid-2{grid-template-columns:1fr;}
  .hero{padding:48px 0 40px;}
  .sec{padding:48px 0;}
  .nav-right .nav-link{display:none;}
  .client{min-width:calc(50% - 7px);}
}

/* Instagram gallery — the 3×3 of latest posts. Square tiles regardless of the
   source aspect ratio, so a mixed feed still reads as a tidy grid. */
.ig-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:760px;margin:0 auto;}
.ig-item{display:block;position:relative;aspect-ratio:1/1;border-radius:var(--r);overflow:hidden;background:var(--gray-100);}
.ig-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease;}
.ig-item:hover img{transform:scale(1.06);}
.ig-item::after{content:"";position:absolute;inset:0;background:rgba(var(--brand-dark-rgb),0);transition:background .25s;}
.ig-item:hover::after{background:rgba(var(--brand-dark-rgb),.14);}
.ig-follow{text-align:center;margin-top:22px;font-size:15px;color:var(--gray-600);}
.ig-follow a{font-weight:700;color:var(--brand-accent);}
.ig-follow a:hover{text-decoration:underline;}
@media(max-width:640px){.ig-grid{gap:6px;}}

/* Service links in the header. All four are always reachable — bouncing back to
   the hub to switch category was an extra click for no reason. On narrow
   screens the row scrolls horizontally rather than hiding, so a phone user can
   still reach every service (the old rule hid .nav-link entirely under 640px). */
.nav-services{display:flex;align-items:center;gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.nav-services::-webkit-scrollbar{display:none;}
.nav-services .nav-link{white-space:nowrap;font-size:13.5px;padding:8px 11px;}
.nav-services .nav-link.current{color:var(--brand-accent);font-weight:700;background:color-mix(in srgb, var(--brand-accent) 10%, transparent);}
.nav-sep{width:1px;height:18px;background:rgba(var(--brand-dark-rgb),.14);margin:0 6px;flex-shrink:0;}
@media(max-width:900px){
  .nav-inner{gap:10px;}
  .nav-services{flex:1;min-width:0;}
}
@media(max-width:640px){
  /* Override the blanket hide so service links survive on mobile. */
  .nav-right .nav-services .nav-link{display:inline-block;}
  .nav-services .nav-link{font-size:13px;padding:7px 9px;}
  .nav-hide-sm{display:none;}
}
