/* ==========================================================================
   Ringl — marketing site styles
   Palette: deep teal · off-white · charcoal
   ========================================================================== */

/* ---------- Tokens ---------- */
:root{
  --teal:#0E6B66;
  --teal-deep:#0A504C;
  --teal-soft:#E9F2F1;
  --bg:#FAFAF8;
  --surface:#FFFFFF;
  --ink:#14171A;
  --muted:#5C646B;
  --line:rgba(20,23,26,.10);
  --line-soft:rgba(20,23,26,.06);

  --r-sm:12px;
  --r-md:18px;
  --r-lg:26px;
  --r-xl:34px;

  --shadow-sm:0 1px 2px rgba(20,23,26,.05), 0 6px 18px rgba(20,23,26,.05);
  --shadow-md:0 2px 4px rgba(20,23,26,.04), 0 18px 44px rgba(20,23,26,.09);
  --shadow-lg:0 30px 80px rgba(10,80,76,.18);

  --wrap:1120px;
  --ease:cubic-bezier(.22,1,.36,1);

  --font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display",
         "Segoe UI", Inter, system-ui, sans-serif;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:90px}
body{
  margin:0;
  font-family:var(--font);
  background:var(--bg);
  color:var(--ink);
  font-size:17px;
  line-height:1.55;
  letter-spacing:-.011em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg{max-width:100%; display:block}
a{color:inherit; text-decoration:none}
button{font:inherit; color:inherit}
h1,h2,h3,h4{margin:0; letter-spacing:-.03em; line-height:1.06; font-weight:640}
h1{font-size:clamp(2.6rem, 7.4vw, 4.6rem); letter-spacing:-.04em}
h2{font-size:clamp(1.9rem, 4.6vw, 3.1rem)}
h3{font-size:1.09rem; line-height:1.3; letter-spacing:-.018em; font-weight:640}
p{margin:0}
ul{margin:0; padding:0; list-style:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- Layout ---------- */
.wrap{width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:22px}
.wrap.narrow{max-width:760px}
.section{padding:clamp(58px,7vw,92px) 0}
.center{text-align:center}
.eyebrow{
  font-size:.79rem; font-weight:660; letter-spacing:.11em; text-transform:uppercase;
  color:var(--teal); margin-bottom:18px;
}
.lede{
  font-size:clamp(1.03rem,1.9vw,1.2rem); color:var(--muted); max-width:640px;
  margin-top:20px; line-height:1.6;
}
.center .lede{margin-inline:auto}
h2.center{max-width:760px; margin-inline:auto}

/* ---------- Buttons ---------- */
.btn{
  --pad:.72rem 1.25rem;
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  padding:var(--pad); border-radius:999px; border:1px solid transparent;
  font-size:.95rem; font-weight:620; letter-spacing:-.01em; cursor:pointer;
  background:none; white-space:nowrap;
  transition:transform .25s var(--ease), box-shadow .25s var(--ease),
             background-color .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease);
}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--teal); color:#fff; box-shadow:0 8px 22px rgba(14,107,102,.28)}
.btn-primary:hover{background:var(--teal-deep); box-shadow:0 12px 30px rgba(14,107,102,.34); transform:translateY(-1px)}
.btn-ghost{color:var(--ink); border-color:var(--line); background:rgba(255,255,255,.6)}
.btn-ghost:hover{background:#fff; border-color:rgba(20,23,26,.2)}
.btn-outline{color:var(--teal); border-color:rgba(14,107,102,.32); background:transparent}
.btn-outline:hover{background:var(--teal-soft); border-color:var(--teal)}
.btn-sm{--pad:.5rem 1rem; font-size:.875rem}
.btn-lg{--pad:.95rem 1.7rem; font-size:1rem}
.btn-block{width:100%}
.hero-actions{display:flex; flex-wrap:wrap; gap:14px; align-items:center; margin-top:34px}
.hero-actions.center{justify-content:center}
:focus-visible{outline:2.5px solid var(--teal); outline-offset:3px; border-radius:6px}

/* ---------- App Store badge ---------- */
.appstore{
  display:inline-flex; align-items:center; justify-content:center;
  background:transparent; color:inherit; padding:0;
  border-radius:10px; transition:transform .25s var(--ease);
}
.appstore:hover{transform:translateY(-2px)}
.appstore img{display:block; width:168px; height:auto; border-radius:10px}
.appstore--block{display:flex; width:100%; justify-content:center; margin-top:26px}
.appstore--block img{width:min(100%, 220px)}
.final-trial{margin-top:14px; color:rgba(255,255,255,.82); font-size:.9rem}

/* ==========================================================================
   NAV
   ========================================================================== */
.nav{
  position:sticky; top:0; z-index:60;
  background:rgba(250,250,248,.72);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease), background-color .3s var(--ease), box-shadow .3s var(--ease);
}
.nav.scrolled{border-bottom-color:var(--line-soft); box-shadow:0 1px 24px rgba(20,23,26,.05)}
.nav-inner{display:flex; align-items:center; gap:26px; height:66px}
.brand{display:flex; align-items:center; gap:.6rem; font-weight:680; letter-spacing:-.03em; font-size:1.16rem}
.brand-mark{
  width:31px; height:31px; border-radius:10px; flex:none; object-fit:cover;
}
.nav-links{display:flex; gap:28px; margin-left:auto}
.nav-links a{font-size:.92rem; font-weight:520; color:var(--muted); position:relative; padding:4px 0; transition:color .2s var(--ease)}
.nav-links a:hover{color:var(--ink)}
.nav-links a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1.5px;
  background:var(--teal); transform:scaleX(0); transform-origin:left; transition:transform .3s var(--ease);
}
.nav-links a:hover::after{transform:scaleX(1)}
.nav-cta{display:flex; gap:10px; align-items:center}
.nav-burger{display:none; width:40px; height:40px; border:1px solid var(--line); border-radius:11px; background:#fff; position:relative}
.nav-burger span{position:absolute; left:11px; right:11px; height:1.6px; background:var(--ink); border-radius:2px; transition:transform .3s var(--ease), opacity .2s var(--ease)}
.nav-burger span:nth-child(1){top:16px}
.nav-burger span:nth-child(2){bottom:16px}
.nav-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(3.5px) rotate(45deg)}
.nav-burger[aria-expanded="true"] span:nth-child(2){transform:translateY(-3.5px) rotate(-45deg)}
.mobile-menu{
  display:none; flex-direction:column; gap:4px; padding:14px 22px 26px;
  border-top:1px solid var(--line-soft); background:rgba(250,250,248,.96);
  backdrop-filter:blur(20px);
}
.mobile-menu a{padding:13px 4px; font-size:1.02rem; font-weight:540; border-bottom:1px solid var(--line-soft)}
.mobile-menu .btn{margin-top:16px}

/* ==========================================================================
   HERO
   ========================================================================== */
.hero{padding-top:clamp(44px,7vw,84px); position:relative}
.hero-grid{
  display:grid; grid-template-columns:1.06fr .94fr; gap:clamp(30px,5vw,70px);
  align-items:center;
}
.hero-copy{max-width:620px}
.hero-facts{display:flex; flex-wrap:wrap; gap:10px 26px; margin-top:34px}
.hero-facts li{
  font-size:.9rem; color:var(--muted); display:flex; align-items:center; gap:.5rem;
}
.hero-facts li::before{
  content:""; width:6px; height:6px; border-radius:50%; background:var(--teal); flex:none;
}

/* --- phone --- */
.hero-visual{position:relative; display:flex; justify-content:center; padding:14px 0}
.glow{
  position:absolute; inset:6% -6% 0 -6%; border-radius:50%;
  background:radial-gradient(circle at 50% 45%, rgba(14,107,102,.16), rgba(14,107,102,0) 68%);
  filter:blur(18px); z-index:0;
}
.app-carousel{position:relative; z-index:1; width:min(100%,390px); height:620px; display:flex; align-items:center; justify-content:center; perspective:1200px}
.app-slide{
  position:absolute; left:50%; top:50%; width:272px; height:552px; overflow:hidden;
  border:7px solid #17191A; border-radius:40px; background:#17191A;
  box-shadow:0 28px 70px rgba(10,80,76,.22),0 0 0 1px rgba(20,23,26,.36);
  opacity:0; pointer-events:none;
  transform:translate(-50%,-49%) translateX(0) scale(.86) rotateY(0deg);
  transition:transform .85s cubic-bezier(.2,.8,.2,1),opacity .7s ease,filter .85s ease;
}
.app-slide img{width:100%;height:100%;object-fit:cover;border-radius:32px}
.app-slide.is-active{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) translateX(0) scale(1) rotateY(0deg);z-index:3;filter:none}
.app-slide.is-prev{opacity:.62;z-index:2;transform:translate(-50%,-48%) translateX(-142px) scale(.88) rotateY(12deg);filter:saturate(.8)}
.app-slide.is-next{opacity:.62;z-index:2;transform:translate(-50%,-48%) translateX(142px) scale(.88) rotateY(-12deg);filter:saturate(.8)}
.carousel-controls{position:absolute;z-index:5;bottom:6px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;padding:8px 10px;border:1px solid var(--line-soft);border-radius:999px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);box-shadow:var(--shadow-sm)}
.carousel-arrow{width:34px;height:34px;border:0;border-radius:50%;display:grid;place-items:center;background:transparent;color:var(--ink);font-size:1.7rem;line-height:1;cursor:pointer;transition:background .2s ease,color .2s ease}
.carousel-arrow:hover{background:var(--teal-soft);color:var(--teal-deep)}
.carousel-dots{display:flex;align-items:center;gap:7px}
.carousel-dot{width:8px;height:8px;border:0;padding:0;border-radius:50%;background:#B9C3C1;cursor:pointer;transition:width .3s var(--ease),background .3s var(--ease)}
.carousel-dot.is-active{width:22px;border-radius:8px;background:var(--teal)}
@media (max-width:680px){
  .app-carousel{height:510px}
  .app-slide{width:220px;height:448px;border-width:6px;border-radius:32px}
  .app-slide img{border-radius:26px}
  .app-slide.is-prev{transform:translate(-50%,-48%) translateX(-108px) scale(.82) rotateY(12deg)}
  .app-slide.is-next{transform:translate(-50%,-48%) translateX(108px) scale(.82) rotateY(-12deg)}
  .carousel-controls{bottom:0}
}
.phone{
  position:relative; z-index:1;
  width:min(292px, 78vw);
  border-radius:46px;
  background:#0F1214;
  padding:11px;
  box-shadow:var(--shadow-lg), 0 0 0 1px rgba(20,23,26,.5);
  animation:floaty 7s ease-in-out infinite;
}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
.phone-notch{
  position:absolute; top:20px; left:50%; transform:translateX(-50%);
  width:88px; height:22px; border-radius:999px; background:#0F1214; z-index:3;
}
.phone-screen{
  border-radius:36px; background:var(--surface); overflow:hidden;
  display:flex; flex-direction:column; height:clamp(430px, 62vw, 540px);
}
.call-top{
  display:flex; align-items:center; gap:11px; padding:44px 16px 14px;
  border-bottom:1px solid var(--line-soft);
}
.avatar{
  width:38px; height:38px; border-radius:50%; flex:none;
  background:var(--teal-soft); color:var(--teal-deep);
  display:grid; place-items:center; font-size:.8rem; font-weight:680;
}
.call-meta{display:flex; flex-direction:column; line-height:1.25; min-width:0}
.call-meta strong{font-size:.87rem; font-weight:640}
.call-meta span{font-size:.73rem; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.live-dot{
  margin-left:auto; display:flex; align-items:center; gap:5px;
  font-size:.66rem; font-weight:660; letter-spacing:.06em; text-transform:uppercase; color:var(--teal);
  background:var(--teal-soft); padding:4px 9px; border-radius:999px; flex:none;
}
.live-dot i{width:5px; height:5px; border-radius:50%; background:var(--teal); animation:pulse 1.7s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1; transform:scale(1)}50%{opacity:.35; transform:scale(.75)}}

.call-body{
  flex:1; padding:16px 14px; display:flex; flex-direction:column; gap:9px;
  overflow:hidden;
}
.bubble{
  font-size:.79rem; line-height:1.4; padding:9px 12px; border-radius:16px;
  max-width:86%; opacity:0;
  animation:bub 17s var(--ease) infinite both;
}
.bubble.us{background:var(--teal); color:#fff; border-bottom-right-radius:5px; margin-left:auto}
.bubble.them{background:#F1F2F0; color:var(--ink); border-bottom-left-radius:5px}
.bubble:nth-child(1){animation-delay:.4s}
.bubble:nth-child(2){animation-delay:2.4s}
.bubble:nth-child(3){animation-delay:4.4s}
.bubble:nth-child(4){animation-delay:6.4s}
.bubble:nth-child(5){animation-delay:8.4s}
@keyframes bub{
  0%{opacity:0; transform:translateY(9px)}
  6%{opacity:1; transform:translateY(0)}
  86%{opacity:1; transform:translateY(0)}
  96%{opacity:0; transform:translateY(-5px)}
  100%{opacity:0}
}
.booked{
  margin-top:auto; display:flex; align-items:center; gap:8px;
  font-size:.78rem; font-weight:640; color:var(--teal-deep);
  background:var(--teal-soft); padding:10px 13px; border-radius:14px;
  opacity:0; animation:bub 17s var(--ease) infinite both; animation-delay:10.6s;
}
.booked svg{width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:2.6; stroke-linecap:round; stroke-linejoin:round; flex:none}
.call-foot{padding:12px 16px 20px; border-top:1px solid var(--line-soft)}
.wave{display:flex; align-items:center; justify-content:center; gap:3px; height:22px}
.wave i{width:3px; border-radius:2px; background:var(--teal); opacity:.55; animation:wave 1.15s ease-in-out infinite}
.wave i:nth-child(1){height:7px; animation-delay:0s}
.wave i:nth-child(2){height:14px; animation-delay:.1s}
.wave i:nth-child(3){height:20px; animation-delay:.2s}
.wave i:nth-child(4){height:11px; animation-delay:.3s}
.wave i:nth-child(5){height:17px; animation-delay:.4s}
.wave i:nth-child(6){height:9px; animation-delay:.5s}
.wave i:nth-child(7){height:6px; animation-delay:.6s}
@keyframes wave{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1)}}

/* --- stats --- */
.stats{
  display:grid; grid-template-columns:repeat(4,1fr); gap:16px;
  margin-top:clamp(52px,7vw,86px); padding:26px 8px;
  border-top:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft);
}
.stats div{display:flex; flex-direction:column; gap:3px; text-align:center}
.stats strong{font-size:clamp(1.25rem,2.6vw,1.7rem); font-weight:660; letter-spacing:-.03em; color:var(--teal)}
.stats span{font-size:.8rem; color:var(--muted)}

/* --- compact calendar integration strip --- */
.calendar-strip{margin-top:34px;padding:18px 22px;display:flex;align-items:center;justify-content:space-between;gap:22px;border:1px solid var(--line-soft);border-radius:18px;background:var(--bg)}
.calendar-strip-copy{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.calendar-strip-copy .eyebrow{margin:0;font-size:.68rem}
.calendar-strip-copy strong{font-size:1rem;font-weight:640}
.calendar-strip-copy>span:last-child{font-size:.84rem;color:var(--muted)}
.calendar-strip-logos{display:flex;align-items:center;gap:10px;flex:none;color:#87908F;font-size:1.1rem}
.calendar-strip-logos img{width:30px;height:30px;object-fit:contain}
.calendar-strip-logos .google-calendar-logo{width:36px}
.final-proof{margin-top:22px;color:rgba(255,255,255,.76);font-size:.92rem}

/* ==========================================================================
   HOW IT WORKS
   ========================================================================== */
.how{background:var(--surface); border-block:1px solid var(--line-soft)}
.steps{display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:52px}
.step{
  position:relative; padding:32px 26px 30px;
  background:var(--bg); border:1px solid var(--line-soft); border-radius:var(--r-lg);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.step:hover{transform:translateY(-4px); box-shadow:var(--shadow-sm)}
.step-num{
  display:grid; place-items:center; width:36px; height:36px; border-radius:12px;
  background:var(--teal); color:#fff; font-size:.92rem; font-weight:680; margin-bottom:18px;
}
.step h3{margin-bottom:10px}
.step p{color:var(--muted); font-size:.94rem}

/* ==========================================================================
   WHO IT'S FOR
   ========================================================================== */
.chips{display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-top:44px}
.chip{
  padding:.6rem 1.05rem; border-radius:999px; font-size:.9rem; font-weight:540;
  background:var(--surface); border:1px solid var(--line); color:var(--ink);
  transition:transform .28s var(--ease), background-color .28s var(--ease),
             color .28s var(--ease), border-color .28s var(--ease);
}
.chip:hover{background:var(--teal); color:#fff; border-color:var(--teal); transform:translateY(-3px)}

/* ==========================================================================
   FEATURES
   ========================================================================== */
.features{background:var(--surface); border-block:1px solid var(--line-soft)}
.feature-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:52px;
}
.feature{
  padding:28px 26px; border-radius:var(--r-lg); background:var(--bg);
  border:1px solid var(--line-soft);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), background-color .35s var(--ease);
}
.feature:hover{transform:translateY(-4px); box-shadow:var(--shadow-md); background:#fff}
.f-icon{
  width:42px; height:42px; border-radius:13px; background:var(--teal-soft);
  display:grid; place-items:center; margin-bottom:18px;
  transition:background-color .35s var(--ease);
}
.feature:hover .f-icon{background:var(--teal)}
.f-icon svg{width:20px; height:20px; fill:none; stroke:var(--teal); stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; transition:stroke .35s var(--ease)}
.feature:hover .f-icon svg{stroke:#fff}
.feature h3{margin-bottom:9px}
.feature p{color:var(--muted); font-size:.92rem}

/* ==========================================================================
   PRICING
   ========================================================================== */
.price-card{
  margin-top:46px; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-xl); padding:clamp(24px,3.2vw,34px); box-shadow:var(--shadow-md);
  text-align:left; max-width:520px; margin-inline:auto;
}
.price-badge{
  display:inline-block; font-size:.72rem; font-weight:660; letter-spacing:.08em; text-transform:uppercase;
  color:var(--teal-deep); background:var(--teal-soft); padding:5px 12px; border-radius:999px;
}
.price-amount{display:flex; align-items:baseline; gap:3px; margin:20px 0 8px}
.price-amount .cur{font-size:1.5rem; font-weight:600; color:var(--teal)}
.price-amount .num{font-size:3rem; font-weight:660; letter-spacing:-.045em; line-height:1}
.price-amount .per{font-size:.95rem; color:var(--muted); margin-left:4px}
.price-sub{color:var(--muted); font-size:.92rem}
.price-list{margin:28px 0 0; display:flex; flex-direction:column; gap:12px}
.price-list li{
  position:relative; padding-left:30px; font-size:.94rem;
}
.price-list li::before{
  content:""; position:absolute; left:0; top:6px; width:17px; height:17px; border-radius:50%;
  background:var(--teal-soft);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230E6B66' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  background-size:11px; background-position:center; background-repeat:no-repeat;
}
.price-fine{margin-top:16px; font-size:.8rem; color:var(--muted); text-align:center}
.price-trial{margin-top:12px; color:var(--teal); font-size:.86rem; font-weight:600; text-align:center}

/* ==========================================================================
   FAQ
   ========================================================================== */
.accordion{margin-top:44px; border-top:1px solid var(--line-soft)}
.accordion details{border-bottom:1px solid var(--line-soft)}
.accordion summary{
  list-style:none; cursor:pointer; padding:22px 40px 22px 0; position:relative;
  font-size:1.04rem; font-weight:600; letter-spacing:-.02em;
  transition:color .2s var(--ease);
}
.accordion summary::-webkit-details-marker{display:none}
.accordion summary:hover{color:var(--teal)}
.accordion summary::after{
  content:""; position:absolute; right:6px; top:50%; width:13px; height:13px;
  transform:translateY(-50%) rotate(45deg);
  border-right:1.8px solid var(--muted); border-bottom:1.8px solid var(--muted);
  transition:transform .3s var(--ease), border-color .2s var(--ease);
}
.accordion details[open] summary::after{transform:translateY(-70%) rotate(-135deg); border-color:var(--teal)}
.accordion details p{
  padding:0 40px 24px 0; color:var(--muted); font-size:.95rem;
  animation:fadeIn .4s var(--ease);
}
@keyframes fadeIn{from{opacity:0; transform:translateY(-4px)}to{opacity:1; transform:none}}

/* ==========================================================================
   FINAL CTA
   ========================================================================== */
.final{
  background:var(--teal); color:#fff; text-align:center;
  border-radius:0;
}
.final h2{max-width:820px; margin-inline:auto; color:#fff}
.final .lede{color:rgba(255,255,255,.8)}
.final .btn-primary{background:#fff; color:var(--teal-deep); box-shadow:0 10px 30px rgba(0,0,0,.16)}
.final .btn-primary:hover{background:#F2F5F4}
.final .btn-outline{color:#fff; border-color:rgba(255,255,255,.4)}
.final .btn-outline:hover{background:rgba(255,255,255,.12); border-color:#fff}

/* ==========================================================================
   FOOTER
   ========================================================================== */
.footer{background:var(--bg); padding:64px 0 34px}
.footer-inner{display:grid; grid-template-columns:1.2fr 2fr; gap:40px; padding-bottom:44px; border-bottom:1px solid var(--line-soft)}
.footer-brand p{margin-top:16px; color:var(--muted); font-size:.9rem; max-width:280px}
.footer-links{display:grid; grid-template-columns:repeat(3,1fr); gap:26px}
.footer-links h4{font-size:.78rem; font-weight:680; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); margin-bottom:14px}
.footer-links a{display:block; padding:6px 0; font-size:.92rem; color:var(--ink); transition:color .2s var(--ease)}
.footer-links a:hover{color:var(--teal)}
.footer-bottom{display:flex; flex-wrap:wrap; gap:10px; justify-content:space-between; padding-top:26px; font-size:.82rem; color:var(--muted)}

/* ==========================================================================
   REVEAL ANIMATIONS
   ========================================================================== */
.js .reveal{
  opacity:0; transform:translateY(26px);
  transition:opacity .8s var(--ease), transform .8s var(--ease);
  will-change:opacity, transform;
}
.js .reveal.in{opacity:1; transform:none}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width:980px){
  .nav-links{display:none}
  .nav-cta{display:none}
  .nav-burger{display:block; margin-left:auto}
  .mobile-menu{display:flex}
  .mobile-menu[hidden]{display:none}
  .hero-grid{grid-template-columns:1fr; text-align:center}
  .hero-copy{max-width:none; margin-inline:auto}
  .hero-actions{justify-content:center}
  .hero-facts{justify-content:center}
  .app-carousel{height:600px}
  .steps,.feature-grid{grid-template-columns:repeat(2,1fr)}
  .footer-inner{grid-template-columns:1fr; gap:34px}
}
@media (max-width:680px){
  body{font-size:16px}
  .wrap{padding-inline:18px}
  .section{padding:52px 0}
  h1{font-size:clamp(2.35rem,11vw,3.1rem);line-height:1.02}
  h2{font-size:clamp(1.85rem,8.5vw,2.35rem);line-height:1.08}
  h3{font-size:1.04rem}
  .lede{font-size:1rem;line-height:1.55}
  .eyebrow{font-size:.71rem;margin-bottom:14px}
  .hero{padding-top:36px}
  .hero-grid{gap:18px}
  .hero-actions{margin-top:26px}
  .hero-facts{gap:9px 16px;margin-top:24px}
  .hero-facts li{font-size:.8rem}
  .stats{grid-template-columns:1fr 1fr;gap:20px 8px;margin-top:42px;padding:22px 4px}
  .stats strong{font-size:1.3rem}
  .stats span{font-size:.74rem}
  .steps,.feature-grid{grid-template-columns:1fr}
  .steps{margin-top:34px;gap:12px}
  .step{padding:24px 20px}
  .feature-grid{margin-top:34px;gap:12px}
  .feature{padding:22px 20px}
  .chips{margin-top:30px;gap:8px}
  .chip{font-size:.82rem;padding:.5rem .84rem}
  .accordion{margin-top:30px}
  .accordion summary{padding:18px 34px 18px 0;font-size:.96rem}
  .accordion details p{padding:0 28px 20px 0;font-size:.9rem}
  .price-card{margin-top:32px;padding:24px 20px;border-radius:24px}
  .price-list{margin-top:22px;gap:10px}
  .price-list li{font-size:.89rem;padding-left:27px}
  .footer{padding:48px 0 28px}
  .footer-inner{gap:28px;padding-bottom:32px}
  .footer-links{gap:18px}
  .footer-links a{font-size:.86rem}
  .footer-bottom{font-size:.75rem;padding-top:20px}
  .footer-links{grid-template-columns:1fr 1fr}
  .app-carousel{height:535px;width:100%;overflow:hidden}
  .app-slide{width:228px;height:465px;border-width:6px;border-radius:34px}
  .app-slide img{border-radius:27px}
  .app-slide.is-prev{transform:translate(-50%,-48%) translateX(-112px) scale(.85) rotateY(12deg)}
  .app-slide.is-next{transform:translate(-50%,-48%) translateX(112px) scale(.85) rotateY(-12deg)}
  .integration-logos{gap:8px}
  .integration-card{padding:10px 12px;gap:8px;font-size:.8rem}
  .integration-card img{width:34px;height:34px}
  .integration-card--google img{width:38px;height:34px}
  .integration-plus{font-size:1.1rem}
  .calendar-strip{align-items:flex-start;flex-direction:column;gap:14px;padding:16px 18px}
  .calendar-strip-copy{display:block}
  .calendar-strip-copy .eyebrow{display:block;margin-bottom:5px}
  .calendar-strip-copy strong{display:block;margin-bottom:3px}
  .hero-actions{gap:12px}
  .hero-actions .btn,.hero-actions .appstore{width:100%}
  .hero-actions .btn{justify-content:center}
  .hero-actions .appstore{justify-content:center}
}

/* ==========================================================================
   REDUCED MOTION
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important}
  .js .reveal{opacity:1; transform:none}
  .bubble,.booked,.t-row{opacity:1 !important}
}
