/* Full-Stack lane: styles for page sections and the real tools */
section{padding:var(--section) clamp(1.25rem,5vw,4rem)}
h2{font-size:var(--h2);font-family:var(--font-display);letter-spacing:-.03em;line-height:1.05;margin:0 0 1rem}
.kinetic{font-size:clamp(1.25rem,3vw,2rem);margin:1.5rem 0 0}
.kinetic-word{display:inline-block;color:var(--accent-strong);font-weight:700}
.band{background:var(--dark);color:var(--on-dark);overflow:hidden;padding:2rem 0;white-space:nowrap}
.band-track{display:inline-flex;gap:3rem;animation:marq 40s linear infinite;font-size:var(--giant);font-weight:800;letter-spacing:-.04em}
@keyframes marq{to{transform:translateX(-50%)}}
.statement .fill{font-size:clamp(1.6rem,4.5vw,3.4rem);line-height:1.2;letter-spacing:-.02em;max-width:24em;margin:0}
.fw{opacity:.25;transition:opacity .4s}.fw.on{opacity:1}
.cards{list-style:none;margin:2rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.25rem}
.card{background:#fff;border-radius:1.25rem;padding:1.75rem;box-shadow:0 8px 30px rgba(29,23,18,.08)}
.card h3{margin:0 0 .5rem;font-size:1.35rem}.card p{margin:0;color:var(--muted)}
.story{background:var(--dark);color:var(--on-dark);padding:0}
.story-sticky{padding:var(--section) clamp(1.25rem,5vw,4rem)}
.story-word{font-size:var(--giant);font-family:var(--font-display);font-weight:800;letter-spacing:-.05em;line-height:1;margin:0 0 2rem;color:var(--accent-on-dark)}
.story-steps{list-style:none;padding:0;margin:0}
.story-steps p{font-size:clamp(1.5rem,3.5vw,2.5rem);line-height:1.25;max-width:30ch;margin:0 0 2rem}
.story.is-live{height:350vh}
.story.is-live .story-sticky{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:0;padding-bottom:0}
.story.is-live .story-steps{display:grid}
.story.is-live .story-steps li{grid-area:1/1;opacity:0;transform:translateY(1rem);transition:opacity .5s,transform .5s var(--ease)}
.story.is-live .story-steps li.on{opacity:1;transform:none}
.story.is-live .story-steps p{margin:0}
.numbers{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:2rem;padding:var(--section) clamp(1.25rem,5vw,4rem)}
.numbers strong{display:block;font-size:clamp(3rem,8vw,6rem);letter-spacing:-.04em;line-height:1;color:var(--accent-strong)}
.numbers span{color:var(--muted)}
.tool-section.dark{background:var(--dark);color:var(--on-dark)}
.tool{max-width:42rem;margin-top:2rem}
.dark .tool{background:rgba(255,255,255,.05);border-radius:1.25rem;padding:1.5rem}
#cake-form{background:#fff;border-radius:1.25rem;padding:1.5rem;box-shadow:0 8px 30px rgba(29,23,18,.08)}
.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}
label{font-weight:600}.hint{font-weight:400;color:var(--muted);font-size:.9rem}
.dark .hint{color:#c9bba8}
input,select,textarea{font:inherit;padding:.75rem .9rem;border:1.5px solid #cdbfae;border-radius:.75rem;background:#fff;color:#1d1712;width:100%}
input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible,.day:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.btn{font:inherit;font-weight:700;padding:.8rem 1.5rem;border-radius:999px;border:0;background:var(--accent);color:#fff;cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s}
.btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(180,83,31,.35)}
.btn.ghost{background:transparent;border:1.5px solid currentColor;color:inherit;padding:.5rem 1rem}
.error{color:#b3261e;min-height:1.4em;margin:.25rem 0}
.dark .error{color:#ffb4a8}
.confirm{margin-top:1rem;padding:1rem 1.25rem;border-radius:1rem;background:#e8f3e5;color:#1c3a17}
.dark .confirm{background:#24331f;color:#d9f0d2}
.confirm a{color:inherit;font-weight:700}
.events-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1.5rem;align-items:start}
.events-grid .tool{margin-top:2rem;max-width:none}
.cal-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.cal-head h3{margin:0;font-size:1.25rem}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;margin:1rem 0}
.dow{text-align:center;font-size:.8rem;color:#c9bba8;padding:.25rem 0}
.day{font:inherit;aspect-ratio:1;border:0;border-radius:.6rem;background:transparent;color:inherit;cursor:default;position:relative}
.day.event{background:rgba(255,255,255,.12);cursor:pointer;font-weight:700}
.day.event::after{content:"";position:absolute;bottom:.3rem;left:50%;width:.4rem;height:.4rem;margin-left:-.2rem;border-radius:50%;background:#7bd88f}
.day.event.full::after{background:#ff8a7a}
.day.today{box-shadow:inset 0 0 0 2px var(--accent)}
.day.sel{background:var(--accent);color:#fff}
.day.past{opacity:.4}
.slot-list{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.5rem}
.slot-list li{display:flex;justify-content:space-between;gap:1rem;padding:.6rem .9rem;border-radius:.7rem;background:rgba(255,255,255,.08)}
.slot-list .free{color:#7bd88f}.slot-list .booked{color:#ff8a7a}
.sub{font-size:1.75rem;margin:3rem 0 0}
.visit .hours{border-collapse:collapse;margin:2rem 0;font-size:1.15rem;max-width:32rem;width:100%}
.hours caption{text-align:left;font-weight:700;padding-bottom:.5rem}
.hours th,.hours td{text-align:left;padding:.6rem 0;border-bottom:1px solid #dccfbd}
@media (prefers-reduced-motion:reduce){.band-track{animation:none}.fw{opacity:1}*{transition:none!important}}
