/* =========================================================
   Lively layer: icons, bands, visuals, plans, reveal motion
   ========================================================= */
.icon{width:1.25em;height:1.25em;flex:none;vertical-align:-.2em}
.icon-lg{width:30px;height:30px}
.icon-xl{width:44px;height:44px}

/* Section bands */
.band{padding:88px 0}
.band-soft{background:var(--bg-2)}
.h3{font-size:clamp(1.4rem,2.4vw,1.8rem);letter-spacing:-.02em}

/* Split hero with a visual */
.page-hero-split .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.page-hero-split .h1{max-width:18ch}
@media (max-width:980px){.page-hero-split .wrap{grid-template-columns:1fr;gap:40px}}

/* Guarantees band */
.guarantees{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:30px 0;background:#fff}
.guarantees ul{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.guarantees li{display:flex;gap:14px;align-items:flex-start}
.guarantees .icon{color:var(--mint);background:var(--mint-pale);padding:9px;width:48px;height:48px;border-radius:14px}
.guarantees span{color:var(--ink-2);font-size:.98rem;line-height:1.35}
.guarantees strong{display:block;font-size:1.08rem;color:var(--ink)}
@media (max-width:900px){.guarantees ul{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.guarantees ul{grid-template-columns:1fr}}

/* Maintenance report visual */
.visual{margin:0}
.report{background:var(--ink);color:#fff;border-radius:var(--r-xl);padding:26px;box-shadow:0 30px 60px -30px rgba(53,27,93,.45)}
.report-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}
.report-title{font-weight:700;font-size:1.1rem;display:inline-flex;gap:8px;align-items:center}
.report-badge{display:inline-flex;align-items:center;gap:8px;padding:.25em .8em;border-radius:999px;background:rgba(255,255,255,.1);font-weight:600;font-size:.9rem}
.report-badge .dot{width:8px;height:8px;border-radius:50%;background:#6EE7B7;animation:pulse 2s infinite}
.report-uptime p{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 10px;font-weight:700;font-size:1.3rem}
.report-uptime .big{font-size:3rem;font-weight:800;letter-spacing:-.03em;color:var(--coral);line-height:1}
.report-uptime .small{flex-basis:100%;font-weight:500;font-size:.95rem;color:#D3C8E6}
.bars{display:flex;align-items:flex-end;gap:3px;height:52px;margin:16px 0 20px}
.bars span{flex:1;height:var(--h);background:linear-gradient(to top,var(--mint),#A98BE8);border-radius:3px 3px 1px 1px;transform-origin:bottom}
.report-log{list-style:none;display:grid;gap:8px}
.report-log li{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 14px;border-radius:12px;background:rgba(255,255,255,.06)}
.report-log .icon{color:var(--coral)}
.report-log b{font-weight:700}
.report figcaption{margin-top:14px;font-size:.88rem;color:#B9AECD}

/* Plans */
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:48px;align-items:stretch}
.plan{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r-xl);padding:32px 28px;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}
.plan:hover{transform:translateY(-4px);box-shadow:0 24px 40px -28px rgba(53,27,93,.45)}
.plan h3{font-size:1.7rem}
.plan-for{color:var(--ink-2);margin-top:6px;min-height:3em}
.plan-price{margin:18px 0 22px;display:flex;align-items:baseline;gap:8px}
.plan-price .amount{font-size:2.8rem;font-weight:800;letter-spacing:-.03em;line-height:1}
.plan-price .per{color:var(--ink-2);font-weight:600}
.checks{list-style:none;display:grid;gap:10px;margin-bottom:28px}
.checks li{display:flex;gap:10px;align-items:flex-start}
.checks .icon{color:var(--mint);margin-top:.15em}
.plan .btn{margin-top:auto}
.plan-note{margin:-12px 0 24px;padding:10px 12px;border-radius:12px;background:var(--bg-2);color:var(--ink-2);font-size:.92rem;line-height:1.4}
.plan-featured{background:var(--ink);color:#fff;border-color:var(--ink)}
.plan-featured .plan-for,.plan-featured .plan-price .per{color:#D3C8E6}
.plan-featured .checks .icon{color:var(--coral)}
.plan-featured .plan-price .amount{color:var(--coral)}
.plan-featured .btn-primary{background:var(--coral);border-color:var(--coral);color:var(--ink)}
.plan-featured .btn-primary:hover{background:#fff;border-color:#fff}
.plan-flag{position:absolute;top:-13px;left:28px;padding:.2em .8em;border-radius:999px;background:var(--coral);color:var(--ink);font-weight:700;font-size:.85rem}
@media (max-width:900px){.plans{grid-template-columns:1fr}.plan-for{min-height:0}}

/* Split callout */
.split{display:grid;grid-template-columns:auto 1fr auto;gap:28px;align-items:center;background:var(--bg-2);border-radius:var(--r-xl);padding:32px}
.split p{color:var(--ink-2);margin-top:8px;max-width:62ch}
.split-icon .icon{color:var(--mint)}
@media (max-width:760px){.split{grid-template-columns:1fr}}

/* Prose lists with check marks */
.prose ul{list-style:none;padding-left:0}
.prose ul li{position:relative;padding-left:30px}
.prose ul li::before{content:"";position:absolute;left:0;top:.35em;width:18px;height:18px;border-radius:50%;background:var(--mint-pale) center/11px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237B4FC9' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")}

/* Case cards with screenshots */
.case-visual{padding:0;overflow:hidden}
.case-visual .case-body{padding:26px 30px 30px;display:flex;flex-direction:column;flex:1}
.case-visual .case-body a{margin-top:auto;padding-top:18px}
.browser{background:var(--bg-2);border-bottom:1px solid var(--line);padding:12px 14px 0}
.browser-bar{display:flex;gap:6px;margin-bottom:10px}
.browser-bar span{width:10px;height:10px;border-radius:50%;background:var(--line)}
.browser img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;object-position:top;border-radius:10px 10px 0 0;transition:transform .5s}
.case-visual:hover .browser img{transform:scale(1.03)}

/* ---- Motion: only with JS on and when the user accepts motion ---- */
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(110,231,183,.6)}70%{box-shadow:0 0 0 10px rgba(110,231,183,0)}100%{box-shadow:0 0 0 0 rgba(110,231,183,0)}}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes slide-in{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
  .js [data-reveal]{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease;transition-delay:calc(var(--i,0) * 90ms)}
  .js [data-reveal].is-visible{opacity:1;transform:none}
  .bars span{animation:grow .7s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i) * 25ms + .2s)}
  .report-log li{animation:slide-in .5s ease both;animation-delay:calc(var(--i) * 180ms + .9s)}
}
@media (prefers-reduced-motion:reduce){.report-badge .dot{animation:none}.plan:hover{transform:none}.case-visual:hover .browser img{transform:none}}
