/* Shared animated product presentation: local assets, CSS motion only. */
:root {
  --accent: #7aaaff;
  --accent-dark: #a6c8ff;
  --tint: #111e35;
  --muted: #a7afc3;
  --line: #ffffff17;
  --glow: 64 125 255;
  --deep: #0c1933;
  background: #080c17;
  color: #eff3ff;
  color-scheme: dark;
}
body.swift {
  --accent: #b595ff;
  --accent-dark: #d3bfff;
  --tint: #211632;
  --glow: 145 83 249;
  --deep: #1b102f;
}
body {
  position: relative;
  overflow-x: clip;
  background:
    radial-gradient(
      ellipse at 50% 9%,
      rgb(var(--glow) / 0.09),
      transparent 42%
    ),
    #080c17;
}
body::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: radial-gradient(#ffffff30 0.65px, transparent 0.65px);
  background-size: 72px 72px;
  mask-image: linear-gradient(#000, transparent 46%);
  opacity: 0.4;
  z-index: 0;
}
.wrap {
  position: relative;
}
.header {
  height: 70px;
  margin-top: 22px;
  padding: 0 26px;
  border: 1px solid #ffffff18;
  border-radius: 999px;
  background: #101320c9;
  backdrop-filter: blur(18px);
  z-index: 10;
}
.brand {
  color: #f3f5ff;
  font-size: 23px;
  letter-spacing: -0.7px;
}
.brand-dot {
  border-radius: 50%;
  width: 6px;
  height: 6px;
  box-shadow: 0 0 16px rgb(var(--glow) / 0.8);
  background: var(--accent);
}
.nav a {
  color: #aeb4c5;
  font-size: 12px;
  border-radius: 999px;
  padding: 10px 15px;
  transition:
    color 0.2s,
    background 0.2s;
}
.nav a[aria-current="page"] {
  color: #fff;
  border: 0;
  background: #ffffff0b;
}
.nav a:hover {
  color: #fff;
  background: #ffffff08;
}
.nav .github {
  border: 1px solid #ffffff24;
  margin-left: 16px;
  padding: 10px 18px;
  color: #eef0ff;
}
.hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  padding: 95px 0 55px;
  text-align: center;
  isolation: isolate;
}
.hero::before {
  content: "";
  position: absolute;
  top: 430px;
  left: 50%;
  width: 1450px;
  height: 900px;
  transform: translateX(-50%);
  border-radius: 50%;
  border: 1px solid rgb(var(--glow) / 0.6);
  background: radial-gradient(
    ellipse at 50% 0%,
    rgb(var(--glow) / 0.18),
    transparent 48%
  );
  box-shadow:
    0 -13px 55px -25px rgb(var(--glow) / 0.8),
    inset 0 12px 40px -24px rgb(var(--glow) / 0.55);
  z-index: -2;
  pointer-events: none;
  animation: halo-breathe 12s ease-in-out infinite;
}
.hero::after {
  content: "";
  position: absolute;
  top: 320px;
  left: 15%;
  right: 15%;
  height: 500px;
  background: radial-gradient(
    ellipse,
    rgb(var(--glow) / 0.17),
    transparent 65%
  );
  filter: blur(28px);
  z-index: -3;
  pointer-events: none;
  animation: glow-drift 18s ease-in-out infinite alternate;
}
.hero-copy {
  max-width: 1050px;
}
.hero-copy .eyebrow {
  display: inline-flex;
  justify-content: center;
  text-transform: none;
  letter-spacing: 0.02em;
  font-size: 11px;
  color: #cbd5ef;
  margin: 0 0 29px;
  border: 1px solid rgb(var(--glow) / 0.23);
  background: rgb(var(--glow) / 0.08);
  padding: 9px 15px;
  border-radius: 999px;
}
.hero-copy .eyebrow::before {
  display: block;
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 11px var(--accent);
}
h1 {
  font-size: clamp(45px, 6.1vw, 83px);
  line-height: 1.08;
  letter-spacing: -3.9px;
  font-weight: 600;
  color: #f1f3fc;
  text-wrap: balance;
  background: linear-gradient(
    155deg,
    #fff 25%,
    #d6def2 68%,
    var(--accent) 100%
  );
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.hero-summary {
  padding-top: 28px;
  max-width: 660px;
}
.hero-summary .intro {
  margin: 0;
  max-width: 650px;
  font-size: 16px;
  line-height: 1.8;
  color: #aeb7cd;
  text-wrap: balance;
}
.actions {
  justify-content: center;
  gap: 14px;
  margin-top: 30px;
}
.button {
  background: linear-gradient(130deg, #b2d0ff, #659aff);
  color: #0b1730;
  border: 1px solid #c2d9ff55;
  min-height: 50px;
  padding: 15px 21px;
  border-radius: 999px;
  font-size: 12px;
  box-shadow: 0 6px 35px -15px rgb(var(--glow) / 0.85);
  transition:
    transform 0.25s,
    box-shadow 0.25s;
}
.swift .button {
  background: linear-gradient(130deg, #ceb5ff, #9867f5);
  color: #1b1033;
  border-color: #d4bbff66;
}
.button:hover {
  background: linear-gradient(130deg, #c3dbff, #7daaff);
  transform: translateY(-2px);
  box-shadow: 0 10px 40px -13px rgb(var(--glow) / 0.95);
}
.swift .button:hover {
  background: linear-gradient(130deg, #e0ccff, #b38bf8);
}
.hero .text-link {
  border: 1px solid #ffffff21;
  border-radius: 999px;
  min-height: 50px;
  padding: 13px 21px;
  color: #e4e9f6;
  background: #ffffff04;
  transition:
    background 0.2s,
    border-color 0.2s;
}
.hero .text-link:hover {
  background: #ffffff0a;
  border-color: #ffffff40;
}
.release {
  color: #828da7;
  font-size: 10px;
  line-height: 1.8;
  margin-top: 20px;
}
.release a {
  color: #b0b9cb;
}
.visual {
  margin: 76px 0 0;
  width: 100%;
  padding: 0;
  position: relative;
  animation: arrive 1s 0.15s both ease-out;
}
.browser,
.swift .browser {
  border: 1px solid rgb(var(--glow) / 0.3);
  border-radius: 18px;
  padding: 8px;
  background: linear-gradient(155deg, #27304588, #111726cc);
  box-shadow:
    0 0 0 1px #ffffff05,
    0 30px 100px -35px #000,
    0 -15px 90px -50px rgb(var(--glow) / 0.7);
  transform: none;
  overflow: hidden;
}
.browser-top {
  background: transparent;
  height: 31px;
  border: 0;
  padding: 0 12px;
}
.browser-top span {
  color: #a5b2ce;
  font-size: 10px;
}
.browser img {
  border-radius: 10px;
  aspect-ratio: 1.8;
  width: 100%;
  height: auto;
  object-fit: cover;
  object-position: top;
  border: 1px solid #ffffff0b;
}
.caption {
  color: #7b879f;
  font-size: 10px;
  text-align: center;
  margin-top: 17px;
}
.principles {
  border-top: 0;
  border-bottom: 1px solid var(--line);
  justify-content: center;
  gap: 50px;
  padding: 26px 0 36px;
  color: #919db6;
  font-size: 11px;
}
.principles span + span {
  border-color: #ffffff16;
}
.features {
  padding: 95px 0 90px;
}
.section-title {
  align-items: center;
  margin-bottom: 36px;
}
.section-title h2 {
  font-size: 39px;
  line-height: 1.18;
  letter-spacing: -1.4px;
  color: #ecf0fc;
}
.section-title p {
  color: var(--muted);
  font-size: 14px;
}
.feature-grid {
  gap: 18px;
}
.feature {
  position: relative;
  border: 1px solid #ffffff16;
  border-radius: 18px;
  padding: 30px;
  background: linear-gradient(150deg, #ffffff05, #ffffff01);
  transition:
    transform 0.3s,
    border-color 0.3s,
    background 0.3s;
  overflow: hidden;
}
.feature::after {
  content: "";
  position: absolute;
  top: -120px;
  right: -120px;
  width: 240px;
  height: 240px;
  background: radial-gradient(rgb(var(--glow) / 0.1), transparent 65%);
  pointer-events: none;
}
.feature:hover {
  transform: translateY(-5px);
  border-color: rgb(var(--glow) / 0.45);
  background: linear-gradient(150deg, rgb(var(--glow) / 0.07), #ffffff01);
}
.feature-number {
  color: var(--accent);
  font-size: 11px;
  margin-bottom: 36px;
  font-variant-numeric: tabular-nums;
}
.feature h3 {
  color: #e8edf9;
  font-size: 17px;
}
.feature p {
  font-size: 13px;
  line-height: 1.9;
  color: #98a5bf;
}
.installation {
  border: 1px solid rgb(var(--glow) / 0.21);
  background:
    radial-gradient(ellipse at 0 0, rgb(var(--glow) / 0.08), transparent 60%),
    #0e1422;
  border-radius: 20px;
  padding: 48px;
  gap: 70px;
}
.installation h2 {
  color: #f1f3fc;
  font-size: 37px;
}
.installation .eyebrow {
  color: var(--accent);
  font-size: 10px;
  letter-spacing: 0.12em;
}
.installation .intro {
  color: #929fb8;
  font-size: 13px;
}
.installation .text-link {
  color: var(--accent);
}
.steps h3 {
  color: #e1e7f5;
}
.steps p {
  color: #939fb6;
  line-height: 1.8;
}
.step-index {
  color: var(--accent);
  font-size: 12px;
  border-radius: 50%;
  border: 1px solid rgb(var(--glow) / 0.3);
  justify-items: center;
  width: 28px;
  height: 28px;
  background: rgb(var(--glow) / 0.07);
}
code {
  color: #c0cbe0;
  background: #ffffff06;
  padding: 2px 4px;
  border-radius: 4px;
}
.questions {
  padding: 80px 0;
}
.questions h2 {
  color: #ecf0fc;
  font-size: 29px;
}
.faq summary {
  color: #d9e1f3;
  padding: 23px 0;
  font-size: 13px;
}
.faq p {
  color: #9cabc3;
  font-size: 13px;
}
.other-product {
  padding: 34px 0;
}
.other-product strong {
  color: #e7ecf7;
}
.other-product p {
  color: #91a0b8;
}
.other-product .text-link {
  color: var(--accent);
}
.footer {
  color: #74839d;
  padding: 30px 0 42px;
}
.footer-links a {
  color: #95a3ba;
}
.footer-links a:hover {
  color: var(--accent);
}
.hero-copy,
.hero-summary {
  animation: arrive 0.8s both ease-out;
}
.hero-summary {
  animation-delay: 0.1s;
}
@keyframes arrive {
  from {
    opacity: 0;
    transform: translateY(18px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes halo-breathe {
  0%,
  100% {
    opacity: 0.45;
  }
  50% {
    opacity: 0.85;
  }
}
@keyframes glow-drift {
  from {
    transform: translate(-4%, 0);
    opacity: 0.5;
  }
  to {
    transform: translate(4%, 25px);
    opacity: 0.85;
  }
}
@supports (animation-timeline: view()) {
  .feature,
  .installation,
  .questions {
    animation: arrive both;
    animation-timeline: view();
    animation-range: entry 0% entry 22%;
  }
}
@media (min-width: 1440px) {
  .hero {
    padding: 100px 0 55px;
  }
  .visual {
    margin: 80px 0 0;
  }
  .browser img {
    aspect-ratio: 1.8;
  }
}
@media (max-width: 1000px) {
  .hero {
    padding: 75px 0 45px;
  }
  .hero::before {
    top: 390px;
    width: 1100px;
  }
  .hero-summary {
    padding-top: 25px;
  }
  .installation {
    gap: 40px;
    padding: 35px;
  }
  h1 {
    font-size: 64px;
  }
  .feature {
    padding: 23px;
  }
}
@media (max-width: 760px) {
  .header {
    height: 65px;
    margin-top: 14px;
    padding: 0 17px;
  }
  .brand {
    font-size: 22px;
  }
  .nav a {
    padding: 9px 10px;
    font-size: 10px;
  }
  .hero {
    padding: 59px 0 35px;
  }
  .hero-copy .eyebrow {
    font-size: 9px;
    margin-bottom: 24px;
    padding: 8px 12px;
  }
  h1 {
    font-size: clamp(38px, 8.8vw, 55px);
    letter-spacing: -1.8px;
    line-height: 1.13;
  }
  .hero-summary {
    padding-top: 23px;
  }
  .hero-summary .intro {
    font-size: 14px;
    line-height: 1.85;
  }
  .actions {
    gap: 10px;
    margin-top: 25px;
  }
  .button,
  .hero .text-link {
    font-size: 11px;
    min-height: 46px;
    padding: 13px 17px;
  }
  .release {
    margin-top: 17px;
  }
  .hero::before {
    top: 340px;
    width: 800px;
    height: 700px;
  }
  .hero::after {
    left: -20%;
    right: -20%;
    top: 290px;
    height: 350px;
  }
  .visual {
    margin: 49px 0 0;
  }
  .browser {
    padding: 5px;
    border-radius: 12px;
  }
  .browser-top {
    height: 25px;
    padding: 0 7px;
  }
  .browser-top span {
    font-size: 8px;
  }
  .browser img {
    border-radius: 7px;
    aspect-ratio: 1.4;
  }
  .caption {
    font-size: 9px;
    line-height: 1.7;
  }
  .principles {
    gap: 11px;
    padding: 17px 0 27px;
    font-size: 9px;
  }
  .principles span + span {
    border: 0;
    padding-left: 0;
  }
  .features {
    padding: 60px 0;
  }
  .section-title h2 {
    font-size: 30px;
  }
  .section-title p {
    font-size: 13px;
  }
  .feature-grid {
    gap: 13px;
  }
  .feature {
    padding: 26px;
  }
  .feature-number {
    margin-bottom: 22px;
  }
  .installation {
    padding: 30px 24px;
    border-radius: 16px;
    gap: 33px;
  }
  .installation h2 {
    font-size: 30px;
  }
  .questions {
    padding: 57px 0;
    gap: 28px;
  }
  .questions h2 {
    font-size: 27px;
  }
  .footer {
    padding-bottom: 32px;
  }
}
.hero::before {
  width: min(1450px, calc(100vw - 36px));
}
@media (max-width: 760px) {
  .hero::after {
    left: 0;
    right: 0;
  }
}
.browser {
  animation: product-float 9s ease-in-out infinite;
}
.browser:hover {
  animation-play-state: paused;
}
.hero h1 {
  background-size: 180% 180%;
  animation: title-light 16s ease-in-out infinite;
}
.button {
  position: relative;
  overflow: hidden;
}
.button::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 20%, #ffffff36 48%, transparent 75%);
  transform: translateX(-130%);
  pointer-events: none;
  transition: transform .65s ease;
}
.button:hover::after {
  transform: translateX(130%);
}
.button .arrow,.text-link .arrow {
  transition: transform .25s ease;
}
.button:hover .arrow {
  transform: translateY(3px);
}
.text-link:hover .arrow {
  transform: translate(2px,-2px);
}
@keyframes product-float {
  0%,100% {transform:translateY(0)}
  50% {transform:translateY(-8px)}
}
@keyframes title-light {
  0%,100% {background-position:0% 50%}
  50% {background-position:100% 50%}
}
@supports(animation-timeline:view()) {
  .feature:nth-child(2) {animation-range:entry 7% entry 29%}
  .feature:nth-child(3) {animation-range:entry 14% entry 36%}
  .section-title {animation:arrive both;animation-timeline:view();animation-range:entry 0% entry 25%}
}
@media(max-width:760px) {
  @keyframes product-float {
    0%,100% {transform:translateY(0)}
    50% {transform:translateY(-4px)}
  }
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  .feature:hover,
  .button:hover {
    transform: none;
  }
  .hero-copy,
  .hero-summary,
  .visual {
    opacity: 1;
    transform: none;
  }
}

body.adblocker{--accent:#ff7887;--accent-dark:#ffb4bd;--tint:#31151d;--glow:235 49 76;--deep:#291018}

.adblocker .button{background:linear-gradient(130deg,#ffbbc2,#f26778);color:#37101a}.adblocker .button:hover{background:linear-gradient(130deg,#ffd0d5,#ff8492)}
.adblocker .browser{border-color:rgb(var(--glow)/.3)}

/* Transparent brand mark in the navigation; text-only product label. */
.brand{display:inline-flex;align-items:center;gap:10px;min-width:0;flex-shrink:0}
.brand-icon{display:block;width:40px;height:40px;object-fit:contain;background:none;flex-shrink:0}
.product-name{color:#f0f3fc;font-weight:650;font-size:24px;letter-spacing:-.055em;line-height:1.2;white-space:nowrap}
.product-accent{background:linear-gradient(90deg,#1668eb,#46b1ff);background-clip:text;-webkit-background-clip:text;color:transparent}
.swift .product-accent{background-image:linear-gradient(90deg,#8834ed,#bd85ff)}
.adblocker .product-accent{background-image:linear-gradient(90deg,#bf081c,#ff515b)}
.hero-copy .eyebrow.product-label{border:0;background:none;padding:0;border-radius:0;margin-bottom:24px}
.hero-copy .eyebrow.product-label::before{display:none}
.hero-copy .product-name{font-size:20px}
@media(max-width:640px){.brand-icon{width:32px;height:32px}.brand .product-name{font-size:21px}.brand{gap:7px}}
