/* ============================================================
   Design system — "Iris" theme
   Fresh white dashboard, indigo-violet primary, warm coral for
   attention states, tied together by an aperture/iris motif that
   nods to photography without leaning on cliché serif+cream styling.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Sora:wght@600;700;800&family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  --white:#FFFFFF;
  --surface:#F6F7FB;
  --surface-alt:#EEF0F8;
  --ink:#14151F;
  --ink-soft:#6B6E80;
  --ink-faint:#A2A5B5;

  --iris:#5B4FE9;
  --iris-deep:#4638C2;
  --iris-tint:#EDEBFC;
  --iris-shadow: rgba(91,79,233,0.16);

  --coral:#FF6B4A;
  --coral-tint:#FFE9E2;

  --teal:#0EA894;
  --teal-tint:#DFF7F3;

  --sky:#2F80ED;
  --sky-tint:#E5EFFD;

  --danger:#E1483C;
  --danger-tint:#FDE8E6;

  --line:#E7E8F0;
  --radius-lg:20px;
  --radius-md:14px;
  --radius-sm:10px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0; background:var(--surface); color:var(--ink);
  font-family:'Inter','Liberation Sans',Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.display{ font-family:'Sora','Liberation Sans',Arial,sans-serif; letter-spacing:-0.01em; }
a{ color:var(--iris-deep); text-decoration:none; }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; }
}

/* ---------- Signature: the Iris mark ---------- */
.iris-mark{ width:34px; height:34px; display:block; }
.iris-mark .blade{ transform-origin:17px 17px; transition:transform .5s cubic-bezier(.16,1,.3,1); }
.iris-mark.open .blade{ transform:scale(0.55) rotate(24deg); }
@keyframes iris-reveal{
  from{ opacity:0; transform:scale(0.7) rotate(-20deg); }
  to{ opacity:1; transform:scale(1) rotate(0); }
}
.iris-reveal-anim{ animation:iris-reveal .6s cubic-bezier(.16,1,.3,1) both; }

/* ---------- Layout shell ---------- */
.app-shell{ display:flex; min-height:100vh; }
.sidebar{
  width:224px; flex-shrink:0; background:var(--white); border-right:1px solid var(--line);
  display:flex; flex-direction:column; padding:22px 14px; position:sticky; top:0; height:100vh;
}
.sidebar .brand{ display:flex; align-items:center; gap:10px; padding:6px 8px 26px; }
.sidebar .brand b{ font-family:'Sora'; font-size:14.5px; letter-spacing:-0.01em; }
.sidebar .brand small{ display:block; font-size:10px; color:var(--ink-faint); font-weight:600; }
.navlink{
  display:flex; align-items:center; gap:11px; padding:11px 14px; border-radius:12px;
  font-size:13.5px; font-weight:600; color:var(--ink-soft); margin-bottom:3px; cursor:pointer;
  transition:background .18s ease, color .18s ease; position:relative;
}
.navlink svg{ width:17px; height:17px; stroke:currentColor; flex-shrink:0; }
.navlink:hover{ background:var(--surface-alt); color:var(--ink); }
.navlink.active{ background:var(--iris-tint); color:var(--iris-deep); }
.navlink .soon{ margin-left:auto; font-size:8.5px; font-weight:800; color:var(--ink-faint); background:var(--surface-alt); padding:2px 6px; border-radius:6px; }
.sidebar-foot{ margin-top:auto; padding-top:14px; border-top:1px solid var(--line); }

.main{ flex:1; min-width:0; }
.topbar{
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 32px; background:var(--white); border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:20;
}
.topbar h1{ font-size:17px; margin:0; }
.topbar .sub{ font-size:12px; color:var(--ink-soft); font-weight:500; margin-top:2px; }
.content{ padding:26px 32px 60px; max-width:1200px; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  border:none; border-radius:12px; padding:11px 18px; font-size:13px; font-weight:700;
  cursor:pointer; background:var(--ink); color:#fff; font-family:'Inter';
  transition:transform .12s ease, box-shadow .18s ease, opacity .18s ease;
}
.btn:hover{ box-shadow:0 8px 20px -8px rgba(20,21,31,0.35); }
.btn:active{ transform:scale(0.97); }
.btn.secondary{ background:var(--white); color:var(--ink); border:1px solid var(--line); }
.btn.secondary:hover{ box-shadow:0 6px 16px -8px rgba(20,21,31,0.16); }
.btn.danger{ background:var(--danger); color:#fff; }
.btn.danger:hover{ box-shadow:0 8px 20px -8px rgba(225,72,60,0.45); }
.btn.iris{ background:var(--iris); color:#fff; }
.btn.iris:hover{ box-shadow:0 8px 22px -6px var(--iris-shadow); }
.btn:disabled{ opacity:.45; cursor:not-allowed; transform:none; box-shadow:none; }

/* ---------- Cards ---------- */
.card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg);
  padding:22px; transition:box-shadow .2s ease, transform .2s ease;
}
.card.flush{ padding:0; overflow:hidden; }
.stat-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; margin-bottom:20px; }
.stat-card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-md);
  padding:18px 20px; opacity:0; animation:rise .5s ease forwards;
}
.stat-card .n{ font-family:'Sora'; font-size:26px; font-weight:700; }
.stat-card .l{ font-size:11.5px; color:var(--ink-soft); font-weight:600; margin-top:4px; }
.stat-card .tone-iris{ color:var(--iris-deep); }
.stat-card .tone-coral{ color:var(--coral); }
.stat-card .tone-teal{ color:var(--teal); }

@keyframes rise{ from{ opacity:0; transform:translateY(10px);} to{ opacity:1; transform:translateY(0);} }
.stat-card:nth-child(1){ animation-delay:.02s; } .stat-card:nth-child(2){ animation-delay:.08s; }
.stat-card:nth-child(3){ animation-delay:.14s; } .stat-card:nth-child(4){ animation-delay:.2s; }

/* ---------- Form fields ---------- */
.field{ margin-bottom:15px; }
.field label{ display:block; font-size:12px; font-weight:700; color:var(--ink-soft); margin-bottom:6px; }
.field input, .field select, .field textarea{
  width:100%; padding:12px 14px; border:1.5px solid var(--line); border-radius:var(--radius-sm);
  font-size:13.5px; background:var(--surface); color:var(--ink); font-family:'Inter';
  transition:border-color .15s ease, background .15s ease;
}
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--iris); background:var(--white);
}
.field textarea{ min-height:84px; resize:vertical; }
.row{ display:flex; gap:14px; flex-wrap:wrap; }
.row > *{ flex:1; min-width:200px; }

/* ---------- Tabs ---------- */
.tabs{ display:flex; gap:4px; margin-bottom:18px; position:relative; border-bottom:1px solid var(--line); }
.tab{
  padding:11px 20px; font-size:13.5px; font-weight:700; color:var(--ink-faint);
  cursor:pointer; display:flex; align-items:center; gap:7px; position:relative;
  transition:color .15s ease;
}
.tab.active{ color:var(--ink); }
.tab .count{ background:var(--surface-alt); color:var(--ink-soft); font-size:10.5px; font-weight:800; padding:2px 8px; border-radius:999px; transition:background .2s ease, color .2s ease; }
.tab.active .count{ background:var(--iris); color:#fff; }
.tab-underline{ position:absolute; bottom:-1px; height:2.5px; background:var(--iris); border-radius:3px; transition:left .28s cubic-bezier(.16,1,.3,1), width .28s cubic-bezier(.16,1,.3,1); }

/* ---------- Table & rows ---------- */
table{ width:100%; border-collapse:collapse; }
th{ text-align:left; font-size:10.5px; font-weight:800; letter-spacing:.03em; text-transform:uppercase; color:var(--ink-faint); padding:13px 18px; border-bottom:1px solid var(--line); }
td{ padding:14px 18px; border-bottom:1px solid var(--line); font-size:13px; vertical-align:middle; }
tbody tr{ opacity:0; animation:rowIn .35s ease forwards; cursor:pointer; transition:background .15s ease; }
tbody tr:hover{ background:var(--surface); }
@keyframes rowIn{ from{ opacity:0; transform:translateY(6px);} to{ opacity:1; transform:translateY(0);} }

/* ---------- Status pills ---------- */
.pill{
  display:inline-flex; align-items:center; gap:5px; font-size:10.5px; font-weight:800;
  padding:4px 11px; border-radius:999px; text-transform:capitalize;
}
.pill.new{ background:var(--coral-tint); color:var(--coral); }
.pill.contacted{ background:var(--sky-tint); color:var(--sky); }
.pill.completed{ background:var(--teal-tint); color:var(--teal); }
.pill.trial{ background:var(--sky-tint); color:var(--sky); }
.pill.active{ background:var(--teal-tint); color:var(--teal); }
.pill.payment_due{ background:var(--coral-tint); color:var(--coral); }
.pill.stopped{ background:var(--danger-tint); color:var(--danger); }
.pill-dot{ width:6px; height:6px; border-radius:50%; background:currentColor; }
.pill.new .pill-dot{ animation:pulse 1.8s ease-in-out infinite; }
@keyframes pulse{ 0%,100%{ opacity:1; transform:scale(1); } 50%{ opacity:.4; transform:scale(1.5); } }

/* ---------- Skeleton loaders ---------- */
.skeleton{ background:linear-gradient(90deg, var(--surface-alt) 25%, var(--surface) 37%, var(--surface-alt) 63%); background-size:400% 100%; animation:shimmer 1.4s ease infinite; border-radius:8px; }
@keyframes shimmer{ 0%{ background-position:100% 0; } 100%{ background-position:0 0; } }

/* ---------- Modal ---------- */
.modal-overlay{
  position:fixed; inset:0; background:rgba(20,21,31,.45); backdrop-filter:blur(2px);
  display:none; align-items:center; justify-content:center; z-index:100; padding:20px;
}
.modal-overlay.open{ display:flex; animation:fadeBg .2s ease; }
@keyframes fadeBg{ from{ opacity:0; } to{ opacity:1; } }
.modal{
  background:var(--white); border-radius:var(--radius-lg); padding:26px; max-width:480px; width:100%;
  max-height:88vh; overflow-y:auto; animation:modalIn .28s cubic-bezier(.16,1,.3,1);
  box-shadow:0 30px 70px -20px rgba(20,21,31,0.35);
}
@keyframes modalIn{ from{ opacity:0; transform:translateY(14px) scale(.98); } to{ opacity:1; transform:translateY(0) scale(1); } }
.modal h3{ margin-top:0; font-size:17px; }
.actions-row{ display:flex; gap:10px; margin-top:18px; flex-wrap:wrap; }
.muted{ color:var(--ink-soft); font-size:12.5px; }

/* ---------- Auth pages ---------- */
.center-page{
  min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px;
  position:relative; overflow:hidden; background:var(--white);
}
.center-page::before, .center-page::after{
  content:""; position:absolute; border-radius:50%; filter:blur(60px); opacity:.35; z-index:0;
}
.center-page::before{ width:360px; height:360px; background:var(--iris-tint); top:-100px; left:-80px; }
.center-page::after{ width:300px; height:300px; background:var(--coral-tint); bottom:-90px; right:-60px; }
.auth-card{ width:100%; max-width:390px; text-align:center; position:relative; z-index:1; box-shadow:0 24px 60px -24px rgba(20,21,31,0.2); }
.auth-card .iris-mark{ margin:0 auto 14px; }
.auth-card h2{ margin-bottom:4px; font-size:20px; }
.auth-card p{ color:var(--ink-soft); font-size:13px; margin-bottom:24px; }

.error-msg{ color:var(--danger); font-size:12.5px; margin-top:10px; display:none; background:var(--danger-tint); padding:9px 12px; border-radius:10px; text-align:left; }
.success-msg{ color:var(--teal); font-size:12.5px; margin-top:10px; display:none; background:var(--teal-tint); padding:9px 12px; border-radius:10px; text-align:left; }

/* ---------- Toasts ---------- */
#toastStack{ position:fixed; bottom:22px; right:22px; z-index:200; display:flex; flex-direction:column; gap:10px; }
.toast{
  background:var(--ink); color:#fff; padding:13px 18px; border-radius:12px; font-size:13px; font-weight:600;
  box-shadow:0 14px 30px -10px rgba(20,21,31,0.4); animation:toastIn .25s cubic-bezier(.16,1,.3,1);
  display:flex; align-items:center; gap:10px; max-width:320px;
}
.toast.success{ background:var(--teal); }
.toast.error{ background:var(--danger); }
@keyframes toastIn{ from{ opacity:0; transform:translateY(10px) scale(.96); } to{ opacity:1; transform:translateY(0) scale(1); } }
.toast.leaving{ animation:toastOut .2s ease forwards; }
@keyframes toastOut{ to{ opacity:0; transform:translateY(6px) scale(.96); } }

/* ---------- Empty states ---------- */
.empty-state{ text-align:center; padding:48px 20px; color:var(--ink-soft); }
.empty-state .iris-mark{ margin:0 auto 14px; opacity:.5; }
.empty-state b{ display:block; color:var(--ink); font-size:14px; margin-bottom:4px; }

/* ---------- Responsive ---------- */

/* Tables: scroll horizontally on narrow screens instead of squashing */
.card.flush{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
@media (max-width:700px){
  .card.flush table{ min-width:640px; }
}

/* Sidebar → bottom nav bar on tablets/phones */
@media (max-width:860px){
  .app-shell{ flex-direction:column; }
  .sidebar{ position:fixed; left:0; bottom:0; top:auto; width:100%; height:auto; flex-direction:row;
    justify-content:space-around; padding:8px; border-right:none; border-top:1px solid var(--line); z-index:30; }
  .sidebar .brand{ display:none; }
  .sidebar-foot{ display:contents; }
  .navlink{ flex-direction:column; gap:3px; font-size:9.5px; padding:8px 6px; margin-bottom:0; }
  .navlink .soon{ display:none; }
  .navlink .badge{ position:absolute; top:2px; right:10px; margin-left:0; }
  .content{ padding:18px 14px 90px; }
  .topbar{ padding:14px 16px; flex-wrap:wrap; gap:10px; }
  .topbar h1{ font-size:16px; }
  .stat-grid{ grid-template-columns:repeat(2,1fr); gap:10px; }
  .modal{ padding:20px; max-height:92vh; }
}

@media (max-width:480px){
  .stat-grid{ grid-template-columns:1fr; }
  .row{ flex-direction:column; }
  .row > *{ min-width:0; }
  .actions-row{ flex-direction:column; }
  .actions-row .btn{ width:100%; }
  .topbar .btn{ width:100%; }
}

/* Landing page responsiveness */
@media (max-width:900px){
  .landing-nav{ padding:14px 20px; }
  .hero-wrap{ padding:56px 20px 70px; }
  .section{ padding:44px 20px; }
  .footer-strip{ padding:20px; flex-direction:column; gap:10px; text-align:center; }
}
@media (max-width:600px){
  .hero-wrap h1{ font-size:clamp(26px,7vw,36px); }
  .hero-wrap p.lead{ font-size:14.5px; padding:0 6px; }
  .hero-ctas{ flex-direction:column; width:100%; }
  .hero-ctas .btn{ width:100%; }
  .entry-pill{ font-size:12px; padding:8px 14px; }
  .split-card{ padding:24px 20px; }
  .feature-card{ padding:20px; }
  .blob{ opacity:.25; }
}

/* Auth / form pages on small screens */
@media (max-width:480px){
  .auth-card{ max-width:100%; }
  .center-page{ padding:16px; }
  .card{ padding:18px; }
}

/* QR modal on small screens */
@media (max-width:400px){
  .qr-box canvas{ width:160px !important; height:160px !important; }
}

/* ============================================================
   Calendar view
   ============================================================ */
.cal-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.cal-head h2{ font-size:16px; }
.cal-nav-btn{ width:32px; height:32px; border-radius:9px; border:1px solid var(--line); background:var(--white); display:flex; align-items:center; justify-content:center; cursor:pointer; }
.cal-nav-btn svg{ width:14px; height:14px; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.cal-dow{ text-align:center; font-size:10px; font-weight:800; color:var(--ink-faint); padding-bottom:4px; }
.cal-cell{
  aspect-ratio:1; border-radius:12px; border:1px solid var(--line); background:var(--white);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  font-size:12px; font-weight:600; cursor:pointer; transition:background .15s ease, border-color .15s ease;
  position:relative;
}
.cal-cell:hover{ background:var(--surface); }
.cal-cell.empty{ visibility:hidden; }
.cal-cell.today{ border-color:var(--iris); color:var(--iris-deep); font-weight:800; }
.cal-cell.selected{ background:var(--iris); color:#fff; border-color:var(--iris); }
.cal-cell .dot{ width:5px; height:5px; border-radius:50%; background:var(--coral); }
.cal-cell.selected .dot{ background:#fff; }
.cal-day-list{ margin-top:20px; }
.cal-day-list h4{ font-size:12.5px; color:var(--ink-soft); margin-bottom:10px; }

/* ============================================================
   Charts (insights view)
   ============================================================ */
.bars{ display:flex; align-items:flex-end; gap:10px; height:120px; }
.bar-col{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:8px; height:100%; }
.bar{ width:100%; border-radius:8px 8px 3px 3px; background:var(--surface-alt); min-height:4px; transition:height .5s cubic-bezier(.16,1,.3,1); }
.bar.hi{ background:var(--iris); }
.bar-col span{ font-size:9.5px; color:var(--ink-faint); font-weight:700; }
.donut-wrap{ display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.donut{ width:96px; height:96px; border-radius:50%; flex-shrink:0; position:relative; }
.donut::after{ content:""; position:absolute; inset:18px; border-radius:50%; background:var(--white); }
.legend-list{ display:flex; flex-direction:column; gap:8px; }
.legend-list .li{ display:flex; align-items:center; gap:8px; font-size:11.5px; color:var(--ink-soft); font-weight:600; }
.legend-sw{ width:9px; height:9px; border-radius:3px; flex-shrink:0; }

/* ============================================================
   Alert banner (overdue enquiries)
   ============================================================ */
.alert-banner{
  display:flex; align-items:center; gap:12px; background:var(--coral-tint); border:1px solid var(--coral);
  border-radius:14px; padding:13px 18px; margin-bottom:18px; opacity:0; animation:rise .4s ease forwards;
}
.alert-banner svg{ width:18px; height:18px; stroke:var(--coral); flex-shrink:0; }
.alert-banner b{ color:var(--coral); font-size:13px; }
.alert-banner span{ font-size:12px; color:var(--ink-soft); }
.pill.overdue{ background:var(--danger-tint); color:var(--danger); }
.pill.overdue .pill-dot{ animation:pulse 1s ease-in-out infinite; }

/* ============================================================
   Install app button + iOS instructions modal
   ============================================================ */
.install-modal-steps{ text-align:left; margin:16px 0; }
.install-modal-steps li{ font-size:12.5px; color:var(--ink-soft); margin-bottom:8px; line-height:1.5; }



/* ============================================================
   Landing page components
   ============================================================ */
.hover-lift{ transition:transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s ease; }
.hover-lift:hover{ transform:translateY(-5px); box-shadow:0 20px 40px -18px rgba(20,21,31,0.22); }

.landing-nav{
  position:sticky; top:0; z-index:50; display:flex; align-items:center; justify-content:space-between;
  padding:16px 40px; background:rgba(255,255,255,0.85); backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.landing-nav .brand{ display:flex; align-items:center; gap:10px; font-family:'Sora'; font-weight:700; font-size:15px; }
.landing-nav .nav-actions{ display:flex; align-items:center; gap:10px; }

.hero-wrap{
  position:relative; overflow:hidden; padding:80px 40px 100px; text-align:center;
}
.blob{ position:absolute; border-radius:50%; filter:blur(70px); opacity:.4; z-index:0; animation:float 10s ease-in-out infinite; }
.blob.b1{ width:420px; height:420px; background:var(--iris-tint); top:-160px; left:-120px; }
.blob.b2{ width:340px; height:340px; background:var(--coral-tint); bottom:-140px; right:-90px; animation-delay:2s; }
.blob.b3{ width:260px; height:260px; background:var(--teal-tint); top:40%; right:10%; animation-delay:4s; }
@keyframes float{ 0%,100%{ transform:translate(0,0) scale(1); } 50%{ transform:translate(20px,-24px) scale(1.06); } }

.hero-wrap .eyebrow{
  display:inline-flex; align-items:center; gap:7px; font-size:11.5px; font-weight:800; letter-spacing:.04em;
  text-transform:uppercase; color:var(--iris-deep); background:var(--iris-tint); padding:7px 16px; border-radius:999px;
  position:relative; z-index:1; margin-bottom:22px; opacity:0; animation:rise .6s ease forwards;
}
.hero-wrap h1{
  font-size:clamp(32px,5vw,54px); line-height:1.06; max-width:820px; margin:0 auto 18px; position:relative; z-index:1;
  opacity:0; animation:rise .6s ease .08s forwards;
}
.hero-wrap h1 .accent{ color:var(--iris); }
.hero-wrap p.lead{
  font-size:16px; color:var(--ink-soft); max-width:560px; margin:0 auto 34px; line-height:1.65;
  position:relative; z-index:1; opacity:0; animation:rise .6s ease .16s forwards;
}
.hero-ctas{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; position:relative; z-index:1; opacity:0; animation:rise .6s ease .24s forwards; }
.btn.lg{ padding:15px 26px; font-size:14.5px; border-radius:14px; }

.section{ padding:60px 40px; max-width:1080px; margin:0 auto; }
.section-head{ text-align:center; max-width:560px; margin:0 auto 40px; }
.section-head .eyebrow-sm{ font-size:11px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--iris-deep); margin-bottom:10px; display:block; }
.section-head h2{ font-size:clamp(24px,3vw,32px); margin-bottom:10px; }
.section-head p{ color:var(--ink-soft); font-size:14px; line-height:1.6; }

.feature-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:18px; }
.feature-card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg); padding:24px;
  opacity:0; animation:rise .5s ease forwards;
}
.feature-card .icon-wrap{
  width:42px; height:42px; border-radius:12px; background:var(--iris-tint); color:var(--iris-deep);
  display:flex; align-items:center; justify-content:center; margin-bottom:14px;
}
.feature-card .icon-wrap svg{ width:20px; height:20px; }
.feature-card h3{ font-size:15px; margin-bottom:6px; }
.feature-card p{ font-size:12.5px; color:var(--ink-soft); line-height:1.55; }

.split-cta{
  display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:10px;
}
@media (max-width:700px){ .split-cta{ grid-template-columns:1fr; } }
.split-card{
  border-radius:var(--radius-lg); padding:30px 26px; position:relative; overflow:hidden;
}
.split-card.primary{ background:var(--ink); color:#fff; }
.split-card.primary h3{ color:#fff; }
.split-card.primary p{ color:rgba(255,255,255,0.7); }
.split-card.outline{ background:var(--white); border:1.5px dashed var(--line); }
.split-card h3{ font-size:17px; margin-bottom:8px; }
.split-card p{ font-size:13px; color:var(--ink-soft); line-height:1.6; margin-bottom:18px; }

.footer-strip{
  border-top:1px solid var(--line); padding:26px 40px; display:flex; align-items:center; justify-content:space-between;
  font-size:12px; color:var(--ink-faint);
}
.footer-strip .admin-link{ font-size:10.5px; color:var(--ink-faint); opacity:.55; transition:opacity .2s ease; }
.footer-strip .admin-link:hover{ opacity:1; }

/* Reveal-on-scroll utility */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:translateY(0); }

/* Multiple visible client-login entry points share this pill style */
.entry-pill{
  display:inline-flex; align-items:center; gap:8px; padding:9px 18px; border-radius:999px;
  font-size:13px; font-weight:700; background:var(--iris-tint); color:var(--iris-deep);
  transition:background .18s ease, transform .15s ease;
}
.entry-pill:hover{ background:var(--iris); color:#fff; transform:translateY(-1px); }

/* QR modal */
.qr-box{ display:flex; flex-direction:column; align-items:center; gap:14px; padding:10px 0; }
.qr-box canvas{ border-radius:14px; border:1px solid var(--line); padding:12px; background:#fff; }
.qr-link-box{
  width:100%; background:var(--surface); border:1px solid var(--line); border-radius:10px;
  padding:10px 12px; font-size:11.5px; color:var(--ink-soft); word-break:break-all; text-align:center;
}

/* Badge counter on sidebar nav */
.navlink .badge{ margin-left:auto; background:var(--coral); color:#fff; font-size:9.5px; font-weight:800; padding:2px 7px; border-radius:999px; }


/* ---------- Quick reply chips ---------- */
.quick-reply-row{ display:flex; flex-wrap:wrap; gap:8px; }
.qr-chip{
  border:1.5px solid var(--iris-tint); background:var(--iris-tint); color:var(--iris-deep);
  font-family:'Inter'; font-size:12px; font-weight:700; padding:9px 14px; border-radius:999px;
  cursor:pointer; transition:transform .12s ease, background .15s ease;
}
.qr-chip:hover{ background:var(--iris); color:#fff; }
.qr-chip:active{ transform:scale(0.96); }

/* ---------- Success burst (shown briefly when an enquiry is completed) ---------- */
#successBurst{
  position:fixed; inset:0; display:none; align-items:center; justify-content:center; z-index:300;
  pointer-events:none;
}
#successBurst.show{ display:flex; }
.burst-circle{
  width:84px; height:84px; border-radius:50%; background:var(--teal); display:flex; align-items:center;
  justify-content:center; animation:burstPop .7s cubic-bezier(.16,1,.3,1) forwards;
}
.burst-circle svg{ width:38px; height:38px; stroke:#fff; }
@keyframes burstPop{
  0%{ opacity:0; transform:scale(0.4); }
  40%{ opacity:1; transform:scale(1.15); }
  70%{ transform:scale(0.97); }
  100%{ opacity:0; transform:scale(1); }
}
.burst-dot{
  position:absolute; width:8px; height:8px; border-radius:50%; opacity:0;
  animation:burstDot .8s ease forwards;
}
@keyframes burstDot{
  0%{ opacity:1; transform:translate(0,0) scale(1); }
  100%{ opacity:0; transform:translate(var(--dx), var(--dy)) scale(0.4); }
}

/* ============================================================
   Landing page — extended sections
   ============================================================ */
.trust-row{
  display:flex; gap:22px; justify-content:center; flex-wrap:wrap; margin-top:22px;
  position:relative; z-index:1; opacity:0; animation:rise .6s ease .3s forwards;
}
.trust-badge{ display:flex; align-items:center; gap:7px; font-size:12px; font-weight:700; color:var(--ink-soft); }
.trust-badge svg{ width:15px; height:15px; stroke:var(--teal); flex-shrink:0; }

.preview-panel{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg);
  padding:22px; box-shadow:0 30px 70px -30px rgba(20,21,31,0.25); max-width:640px; margin:0 auto;
}
.preview-panel .stat-grid{ margin-bottom:16px; }
.preview-panel .stat-card{ padding:14px 16px; animation:none; opacity:1; }
.preview-panel .stat-card .n{ font-size:20px; }
.preview-panel table{ font-size:12px; }
.preview-panel td, .preview-panel th{ padding:9px 10px; }
.preview-badge-live{
  display:inline-flex; align-items:center; gap:6px; font-size:10.5px; font-weight:800; color:var(--teal);
  background:var(--teal-tint); padding:4px 10px; border-radius:999px; margin-bottom:14px;
}
.preview-badge-live .dot{ width:6px; height:6px; border-radius:50%; background:var(--teal); animation:pulse 1.6s ease-in-out infinite; }

.steps-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:10px; }
@media (max-width:700px){ .steps-grid{ grid-template-columns:1fr; } }
.step-item{ text-align:center; opacity:0; animation:rise .5s ease forwards; }
.step-number{
  width:44px; height:44px; border-radius:50%; background:var(--iris); color:#fff; font-family:'Sora';
  font-weight:700; font-size:16px; display:flex; align-items:center; justify-content:center; margin:0 auto 14px;
}
.step-item h3{ font-size:15px; margin-bottom:6px; }
.step-item p{ font-size:12.5px; color:var(--ink-soft); line-height:1.6; padding:0 6px; }
.step-connector{ display:none; }
@media (min-width:701px){
  .steps-grid{ position:relative; }
}

.pricing-teaser{
  background:var(--ink); border-radius:var(--radius-lg); padding:36px 32px; text-align:center;
  max-width:640px; margin:0 auto;
}
.pricing-teaser .tag{ font-size:11px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:#C9C6F7; margin-bottom:10px; display:block; }
.pricing-teaser h2{ color:#fff; font-size:26px; margin-bottom:6px; }
.pricing-teaser .price-line{ color:#fff; font-family:'Sora'; font-size:15px; margin-bottom:4px; }
.pricing-teaser .price-line b{ font-size:22px; }
.pricing-teaser p.desc{ color:rgba(255,255,255,0.65); font-size:13px; margin:12px 0 22px; }

.faq-list{ max-width:720px; margin:0 auto; }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-question{
  display:flex; align-items:center; justify-content:space-between; padding:18px 4px; cursor:pointer;
  font-size:14px; font-weight:700; color:var(--ink);
}
.faq-question svg{ width:16px; height:16px; stroke:var(--ink-soft); transition:transform .25s ease; flex-shrink:0; }
.faq-item.open .faq-question svg{ transform:rotate(45deg); }
.faq-answer{
  max-height:0; overflow:hidden; transition:max-height .3s ease, padding .3s ease;
  font-size:13px; color:var(--ink-soft); line-height:1.65; padding:0 4px;
}
.faq-item.open .faq-answer{ max-height:200px; padding-bottom:18px; }
