/* chartiercatering.com home page. Shared header, buttons and footer live in site.css.
   One ember color belongs to the fire, the oranges and the main button; nothing else uses it. */
:root { --ember: #e8742a; --ember-hot: #ffb347; --ember-dark: #b4501a; --candle: #ffd9a0; }

/* Primary button: solid gold, square (the ember color stays in the fire, the oranges and the pilot light). */
.btn-ember { background: var(--gold); color: var(--forest); }
.btn-ember:hover { background: #e6c98a; }
.btn-ghost { background: transparent; color: var(--paper); box-shadow: inset 0 0 0 1px rgba(245, 239, 228, .7); }
.btn-ghost:hover { background: rgba(245, 239, 228, .1); }
.text-link.light { color: var(--gold); }

/* ---------------- Hero: candlelit table, fire light, embers ---------------- */
.home-hero { position: relative; min-height: min(100svh, 920px); display: flex; align-items: flex-end; overflow: hidden; background: var(--deep); color: var(--paper); isolation: isolate; }
.home-hero picture, .hero-photo { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-photo { object-fit: cover; object-position: 60% 50%; z-index: -3; }
.home-hero::before { content: ""; position: absolute; inset: 0; z-index: -2; background:
  linear-gradient(90deg, rgba(9, 15, 12, .86) 0%, rgba(9, 15, 12, .55) 42%, rgba(9, 15, 12, .08) 75%),
  linear-gradient(0deg, rgba(9, 15, 12, .9) 0%, rgba(9, 15, 12, 0) 45%); }
.hero-glow { position: absolute; left: -10%; right: -10%; bottom: -30%; height: 75%; z-index: -1; pointer-events: none;
  background: radial-gradient(ellipse 60% 70% at 30% 100%, rgba(255, 160, 70, .75), rgba(232, 116, 42, .32) 40%, rgba(232, 116, 42, 0) 72%), radial-gradient(ellipse 50% 60% at 80% 100%, rgba(255, 140, 50, .5), rgba(232, 116, 42, 0) 70%);
  mix-blend-mode: screen; opacity: .75; transform-origin: 50% 100%; }
.embers { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
.hero-copy { position: relative; z-index: 1; width: 100%; max-width: 1120px; margin: 0 auto; padding: 120px 16px clamp(44px, 8vh, 88px); }
.home-hero h1 { margin: 0 0 18px; font: 500 clamp(44px, 7.4vw, 100px)/.95 var(--display); letter-spacing: -.012em; text-wrap: balance; }
.home-hero h1 span { display: block; }
.home-hero .h1-b { color: var(--candle); font-style: italic; font-size: .72em; margin-top: .14em; letter-spacing: 0; }
.hero-lede { max-width: 33rem; font-size: clamp(17px, 1.6vw, 19px); color: #e8e1d2; margin-bottom: 26px; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.hero-fine { margin: 16px 0 0; font-size: 14px; color: #cfc6b4; }
@media (max-width: 700px) {
  .home-hero { min-height: 92svh; }
  .hero-photo { object-position: 50% 30%; }
  .home-hero::before { background: linear-gradient(0deg, rgba(9, 15, 12, .95) 0%, rgba(9, 15, 12, .7) 45%, rgba(9, 15, 12, .15) 78%); }
  .hero-actions .btn { width: 100%; }
}

/* ---------------- Photos: warm up and lift a little on hover / tap ---------------- */
.photo { margin: 0; border-radius: 0; overflow: hidden; background: #e6dccb; }
.photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s cubic-bezier(.2, .7, .2, 1), filter .5s; }
.photo:hover img, .photo.warm img { transform: scale(1.025); filter: saturate(1.12) sepia(.08) brightness(1.04); }

/* ---------------- Savor ---------------- */
.savor { display: grid; grid-template-columns: 1fr; gap: 28px; padding-top: 72px; padding-bottom: 72px; align-items: center; }
.savor h2, .table-head h2, .steps h2, .faq h2 { font: 500 clamp(34px, 4.6vw, 54px)/1.02 var(--display); color: var(--forest); margin: 0 0 18px; letter-spacing: -.01em; }
.savor-text p { max-width: 34rem; color: var(--ink); font-size: 17px; }
.savor-photo { aspect-ratio: 4 / 5; max-width: 440px; justify-self: center; width: 100%; }
@media (min-width: 900px) { .savor { grid-template-columns: 1.1fr .9fr; gap: 64px; } .savor-photo { transform: rotate(1.2deg); } }

/* ---------------- Fire: grill photos + embers drifting up ---------------- */
.fire { position: relative; background: radial-gradient(ellipse at 30% 110%, #3a2414 0%, var(--deep) 55%); color: var(--paper); padding: 84px 0; overflow: hidden; isolation: isolate; }
.fire .embers { z-index: 2; }
.fire-inner { display: grid; gap: 34px; align-items: center; }
.fire-photos { position: relative; }
.fire-main { aspect-ratio: 4 / 3; box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .7); }
.fire-side { position: absolute; width: 38%; aspect-ratio: 2 / 3; right: -4%; bottom: -14%; border: 5px solid var(--deep); box-shadow: 0 20px 40px -12px rgba(0, 0, 0, .8); }
.fire-text h2 { font: 500 clamp(32px, 4.2vw, 50px)/1.04 var(--display); margin: 0 0 18px; color: var(--paper); }
.fire-text p { color: #ddd5c4; max-width: 31rem; font-size: 17px; }
.fire-text .btn { margin-top: 10px; }
@media (min-width: 900px) { .fire-inner { grid-template-columns: 1.15fr .85fr; gap: 72px; } }
@media (max-width: 899px) { .fire-photos { margin-bottom: 30px; } .fire-side { width: 34%; right: 4px; } }

/* ---------------- The table: oranges land here ---------------- */
.table-section { position: relative; padding: 92px 0 140px; overflow: hidden; }
@media (min-width: 701px) { .table-section { padding-bottom: 84px; } .o1 { bottom: 76px; } .o2 { bottom: 72px; } .o3 { bottom: 78px; } .o4 { bottom: 70px; } }
.table-head { max-width: 40rem; margin-bottom: 30px; }
.table-head p { font-size: 17px; }
.table-grid { display: grid; grid-template-columns: 1fr 1fr; grid-template-areas: "a a" "b c"; gap: 12px; margin-bottom: 40px; }
.tg-a { grid-area: a; aspect-ratio: 16 / 10; } .tg-b { grid-area: b; aspect-ratio: 1; } .tg-c { grid-area: c; aspect-ratio: 1; }
@media (min-width: 900px) {
  .table-grid { grid-template-columns: 1.6fr 1fr; grid-template-areas: "a b" "a c"; gap: 16px; }
  .tg-a { aspect-ratio: auto; min-height: 520px; } .tg-b, .tg-c { aspect-ratio: 4 / 3; }
}
.oranges { position: absolute; inset: 0; pointer-events: none; z-index: 3; }
.orange { position: absolute; will-change: transform; filter: drop-shadow(0 10px 10px rgba(60, 30, 5, .25)); }
/* Resting spots (also where they sit with reduced motion): a little pile beside the menus button, below the text. */
.o1 { right: 5%; bottom: 34px; } .o2 { right: calc(5% + 74px); bottom: 30px; transform: rotate(-24deg); }
.o3 { right: calc(5% + 134px); bottom: 36px; transform: rotate(18deg); } .o4 { right: calc(5% + 196px); bottom: 28px; transform: rotate(40deg); }
@media (max-width: 700px) { .orange { width: 50px; height: 50px; } .o1 { right: 16px; bottom: 26px; } .o2 { right: 66px; bottom: 22px; } .o3 { right: 112px; bottom: 26px; } .o4 { display: none; } }

.menu-rows { border-top: 1px solid var(--rule); margin-bottom: 30px; }
.menu-row { display: grid; grid-template-columns: 88px 1fr auto; gap: 18px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--rule); text-decoration: none; color: inherit; }
.menu-row img { width: 88px; height: 88px; object-fit: cover; border-radius: 0; }
.menu-row h3 { font: 600 24px/1.1 var(--display); color: var(--forest); margin: 0 0 4px; }
.menu-row p { margin: 0; color: var(--muted); font-size: 15px; }
.menu-row .price { text-align: right; font: 600 22px/1 var(--display); color: var(--forest); font-variant-numeric: lining-nums; white-space: nowrap; }
.menu-row .price small { display: block; font: 500 12px/1.4 var(--body); color: var(--muted); }
.menu-row:hover h3 { color: var(--ember-dark); }
@media (max-width: 560px) { .menu-row { grid-template-columns: 64px 1fr; } .menu-row img { width: 64px; height: 64px; } .menu-row .price { grid-column: 2; text-align: left; } }
.table-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 26px; position: relative; z-index: 4; }

/* ---------------- Steps (a real sequence, so they're numbered) ---------------- */
.steps { padding-top: 40px; padding-bottom: 80px; }
.step-list { list-style: none; counter-reset: step; padding: 0; margin: 10px 0 36px; display: grid; gap: 28px; }
.step-list li { counter-increment: step; position: relative; padding-left: 64px; max-width: 36rem; }
.step-list li::before { content: counter(step); position: absolute; left: 0; top: -6px; font: italic 500 52px/1 var(--display); font-variant-numeric: lining-nums; color: var(--gold-dark); }
.step-list h3 { font: 600 25px/1.15 var(--display); color: var(--forest); margin: 0 0 6px; }
.step-list p { margin: 0; color: var(--ink); }
@media (min-width: 900px) { .step-list { grid-template-columns: repeat(3, 1fr); gap: 40px; } .step-list li { padding-left: 0; padding-top: 62px; } }

/* ---------------- Colorado ---------------- */
.colorado { position: relative; min-height: 520px; display: flex; align-items: flex-end; color: var(--paper); overflow: hidden; }
.colorado img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%; }
.colorado::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(0deg, rgba(9, 15, 12, .85), rgba(9, 15, 12, .1) 60%); }
.co-copy { position: relative; z-index: 2; max-width: 1120px; width: 100%; margin: 0 auto; padding: 0 16px 56px; }
.co-copy h2 { font: 500 clamp(32px, 4.4vw, 52px)/1.04 var(--display); margin: 0 0 12px; max-width: 16ch; }
.co-copy p { max-width: 30rem; color: #e6dfd0; font-size: 17px; }

/* ---------------- Questions ---------------- */
.faq { padding-top: 80px; padding-bottom: 80px; max-width: 820px; }
.faq details { border-bottom: 1px solid var(--rule); }
.faq summary { cursor: pointer; list-style: none; padding: 20px 40px 20px 0; position: relative; font: 600 22px/1.25 var(--display); color: var(--forest); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: ""; position: absolute; right: 6px; top: 50%; width: 12px; height: 12px; margin-top: -8px; border-right: 2px solid var(--gold-dark); border-bottom: 2px solid var(--gold-dark); transform: rotate(45deg); transition: transform .2s; }
.faq details[open] summary::after { transform: rotate(225deg); margin-top: -2px; }
.faq details p { padding: 0 0 20px; margin: 0; max-width: 40rem; }

/* ---------------- Final invitation ---------------- */
.invitation { position: relative; background: radial-gradient(ellipse at 50% 120%, #4a2a12 0%, var(--forest) 60%); color: var(--paper); text-align: center; padding: 96px 16px; overflow: hidden; isolation: isolate; }
.inv-inner { position: relative; z-index: 1; max-width: 46rem; margin: 0 auto; }
.invitation h2 { font: 500 clamp(36px, 5.4vw, 64px)/1.02 var(--display); margin: 0 0 16px; }
.invitation p { color: #ddd5c4; font-size: 17px; }
.invitation .hero-actions { justify-content: center; margin: 26px 0 22px; }
.inv-contact a { color: var(--gold); }

/* ---------------- Sticky phone button with a pilot light ---------------- */
.sticky-cta .btn-ember { width: 100%; }
.sticky-cta.pilot .btn-ember { animation: pilot 2.4s ease-in-out 2; }
@keyframes pilot { 50% { box-shadow: 0 0 0 1px rgba(255, 179, 71, .7), 0 0 26px 4px rgba(255, 140, 50, .75); } }

/* ---------------- Planner dialog: an orange slice fills as you go ---------------- */
.planner { width: min(560px, calc(100vw - 24px)); max-height: calc(100svh - 24px); border: 0; border-radius: 0; border-top: 3px solid var(--gold); padding: 0; background: var(--white); color: var(--ink); box-shadow: 0 40px 80px -20px rgba(0, 0, 0, .55); }
.planner::backdrop { background: rgba(9, 15, 12, .72); backdrop-filter: blur(3px); }
.planner form { padding: 22px 22px 18px; }
.planner-top { display: flex; align-items: center; gap: 12px; }
.slice { width: 54px; height: 54px; flex: none; transition: transform .3s; }
.slice .seg { fill: #fde9c4; transition: fill .45s ease; }
.slice .seg.on { fill: #f7931e; }
.slice.pop { animation: pop .6s cubic-bezier(.3, 1.6, .5, 1); }
@keyframes pop { 40% { transform: scale(1.25) rotate(-8deg); } }
.planner-step { margin: 0; font-size: 14px; color: var(--muted); font-weight: 500; }
.planner-close { margin-left: auto; width: 40px; height: 40px; border: 0; background: none; font-size: 30px; line-height: 1; color: var(--muted); cursor: pointer; border-radius: 0; }
.planner-close:hover { background: #efe8da; }
.planner h2 { font: 500 32px/1.08 var(--display); color: var(--forest); margin: 12px 0 14px; }
.pstep { border: 0; padding: 0; margin: 0; }
.pstep legend { font: 600 21px/1.2 var(--display); color: var(--forest); padding: 0; margin-bottom: 6px; }
.planner label { display: block; font-size: 14px; font-weight: 600; margin: 12px 0 5px; }
.planner label span { font-weight: 400; color: var(--muted); }
.planner input:not([type=checkbox]), .planner select, .planner textarea { width: 100%; font: inherit; font-size: 16px; padding: 11px 12px; border: 1px solid #cfc6b2; border-radius: 0; background: #fff; color: var(--ink); }
.planner input:focus, .planner select:focus, .planner textarea:focus { outline: 2px solid var(--ember); outline-offset: 1px; border-color: var(--ember); }
.planner .pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.planner .hp { position: absolute; left: -9999px; width: 1px; height: 1px; }
.phint { color: var(--muted); font-size: 14px; margin: 0 0 4px; }
.group-label { font-size: 14px; font-weight: 600; margin: 12px 0 6px; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips label { margin: 0; font-weight: 500; }
.chips input { position: absolute; opacity: 0; }
.chips span { display: inline-block; padding: 8px 14px; border-radius: 0; border: 1px solid #cfc6b2; background: #fff; cursor: pointer; font-size: 14px; }
.chips input:checked + span { background: #fde2bd; border-color: var(--ember); color: #5a2a08; }
.chips input:focus-visible + span { outline: 3px solid var(--gold); outline-offset: 2px; }
.planner .consent { display: flex; gap: 10px; align-items: flex-start; font-weight: 400; font-size: 13px; line-height: 1.45; color: var(--muted); margin-top: 16px; }
.planner .consent input { margin-top: 3px; width: 18px; height: 18px; flex: none; }
.perror { color: #9b2c1f; background: #fbe9e5; border-radius: 0; padding: 10px 12px; font-size: 14px; margin: 14px 0 0; }
.planner-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 18px; }
.planner-actions .text-link { background: none; border: 0; cursor: pointer; padding: 8px 0; }
.planner-actions .btn { margin-left: auto; }
.pfine { font-size: 12.5px; color: var(--muted); margin: 14px 0 0; }
#p-turnstile { margin-top: 14px; }

/* Reduced motion: no fire, no tumbling, nothing that moves on its own. */
@media (prefers-reduced-motion: reduce) {
  .embers { display: none; }
  .photo img, .slice, .slice .seg { transition: none; }
  .sticky-cta.pilot .btn-ember, .slice.pop { animation: none; }
}

/* Editorial rules (CRM style): a thin forest rule opens each content section. */
.table-head, .steps h2, .faq h2 { border-top: 1px solid var(--forest); padding-top: 20px; }
.savor h2, .table-head h2, .steps h2, .faq h2, .fire-text h2, .co-copy h2, .invitation h2 { letter-spacing: -.02em; }
.menu-rows { border-top-color: var(--forest); }
.faq summary { font-size: 23px; letter-spacing: -.005em; }
.invitation .hero-actions { justify-content: center; }
