/* QR landing page (/connect). Standalone so the main site CSS stays untouched;
   tokens mirror main.css. */
:root {
  --bg:#070809;
  --surface:rgba(255,255,255,.045);
  --surface-hover:rgba(255,255,255,.08);
  --text:#f5f4f2;
  --muted:#a9aaad;
  --line:rgba(255,255,255,.11);
  --brand:#bf1922;
  --brand2:#d93b42;
  --deep:#6f0f15;
  --radius:20px
}

* {
  box-sizing:border-box
}

html {
  -webkit-text-size-adjust:100%
}

body {
  margin:0;
  min-height:100vh;
  background:var(--bg);
  color:var(--text);
  font-family:Inter,"Segoe UI",Arial,sans-serif;
  line-height:1.55;
  -webkit-font-smoothing:antialiased
}

a {
  color:inherit
}

img {
  display:block;
  max-width:100%
}

button {
  font:inherit
}

:focus-visible {
  outline:2px solid #fff;
  outline-offset:3px
}

/* Photo + red glow + faint grid, fixed behind the column */
.cx-backdrop {
  position:fixed;
  inset:0;
  z-index:-1;
  background:
    radial-gradient(ellipse 70% 45% at 50% 0,rgba(191,25,34,.34),transparent 70%),
    linear-gradient(to bottom,rgba(7,8,9,.6),rgba(7,8,9,.9) 22%,rgba(7,8,9,.97) 40%,var(--bg) 60%),
    url("../../media/smart-home2.jpg") center top/cover no-repeat
}

.cx-backdrop:after {
  content:"";
  position:absolute;
  inset:0;
  background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:44px 44px;
  mask-image:linear-gradient(to bottom,#000,transparent 60%);
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent 60%)
}

.cx-wrap {
  width:min(100% - 32px,480px);
  margin:0 auto;
  padding:max(14px,env(safe-area-inset-top)) 0 calc(96px + env(safe-area-inset-bottom))
}

/* Language switch */
.cx-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px
}

.cx-brand {
  width:156px;
  height:auto
}

.cx-lang {
  display:inline-flex;
  padding:3px;
  border:1px solid var(--line);
  border-radius:999px;
  background:rgba(0,0,0,.35);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px)
}

.cx-lang button {
  min-width:44px;
  min-height:32px;
  border:0;
  border-radius:999px;
  background:none;
  color:var(--muted);
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.08em;
  cursor:pointer
}

.cx-lang button[aria-pressed=true] {
  background:#fff;
  color:#0b0c0d
}

/* Service reel: edge to edge on phones, rounded card from 512px up */
.cx-reel {
  position:relative;
  margin:14px -16px 0;
  aspect-ratio:5/4;
  overflow:hidden;
  background:#131517;
  isolation:isolate
}

.cx-reel-slides,.cx-slide {
  position:absolute;
  inset:0
}

.cx-slide {
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:0;
  transform:scale(1.02)
}

/* Hard cut, like a video edit: no fade between slides */
.cx-slide.is-active {
  opacity:1;
  animation:cx-push var(--reel-ms,2600ms) linear both
}

.cx-slide.is-active:nth-child(even) {
  animation-name:cx-push-alt
}

/* Clips carry their own motion: no push-in. cx-slide--zoom crops black
   bars that are part of the clip itself. */
video.cx-slide.is-active,video.cx-slide.is-active:nth-child(even) {
  animation:none;
  transform:none
}

video.cx-slide.cx-slide--zoom,video.cx-slide.cx-slide--zoom.is-active {
  transform:scale(1.14)
}

.cx-reel.is-paused .cx-slide.is-active,.cx-reel.is-paused .cx-bar.is-active i {
  animation-play-state:paused
}

@keyframes cx-push {
  from {
    transform:scale(1.02) translate(0,0)
  }
  to {
    transform:scale(1.12) translate(-2%,-1%)
  }
}

@keyframes cx-push-alt {
  from {
    transform:scale(1.12) translate(2%,1%)
  }
  to {
    transform:scale(1.03) translate(0,0)
  }
}

/* Top and bottom shading so the bars and the label stay readable */
.cx-reel:after {
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(to bottom,rgba(0,0,0,.45),transparent 22%,transparent 60%,rgba(0,0,0,.72))
}

/* Story-style progress bars */
.cx-reel-bars {
  position:absolute;
  top:10px;
  left:12px;
  right:12px;
  z-index:2;
  display:flex;
  gap:4px
}

.cx-bar {
  flex:1;
  height:3px;
  overflow:hidden;
  border-radius:3px;
  background:rgba(255,255,255,.3)
}

.cx-bar i {
  display:block;
  height:100%;
  background:#fff;
  transform:scaleX(0);
  transform-origin:left
}

.cx-bar.is-done i {
  transform:scaleX(1)
}

.cx-bar.is-active i {
  animation:cx-fill var(--reel-ms,2600ms) linear both
}

@keyframes cx-fill {
  to {
    transform:scaleX(1)
  }
}

.cx-reel-label {
  position:absolute;
  left:14px;
  bottom:14px;
  z-index:2;
  margin:0;
  padding:6px 12px 6px 10px;
  border-left:3px solid var(--brand2);
  border-radius:4px;
  background:rgba(7,8,9,.55);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  font-size:.82rem;
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase
}

.cx-reel-pause {
  position:absolute;
  right:12px;
  bottom:12px;
  z-index:2;
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  padding:0;
  border:1px solid rgba(255,255,255,.25);
  border-radius:50%;
  background:rgba(7,8,9,.55);
  color:#fff;
  cursor:pointer
}

.cx-reel-pause svg {
  width:12px;
  height:12px;
  fill:currentColor
}

.cx-reel-pause .i-play,.cx-reel.is-paused .cx-reel-pause .i-pause {
  display:none
}

.cx-reel.is-paused .cx-reel-pause .i-play {
  display:block
}

@media (min-width:512px) {
  .cx-reel {
    margin-inline:0;
    border:1px solid var(--line);
    border-radius:var(--radius)
  }
}

/* Hero */
.cx-hero {
  padding:24px 0 26px;
  text-align:center
}

.cx-eyebrow {
  margin:0 0 10px;
  color:#e0787c;
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.17em;
  text-transform:uppercase
}

.cx-hero h1 {
  margin:0 0 14px;
  font-size:clamp(1.9rem,8vw,2.5rem);
  line-height:1.08;
  letter-spacing:-.035em
}

.cx-lead {
  margin:0 auto;
  max-width:26rem;
  color:#cacacc;
  font-size:1rem
}

.cx-tags {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:8px;
  margin:20px 0 0;
  padding:0;
  list-style:none
}

.cx-tags li {
  padding:6px 12px;
  border:1px solid var(--line);
  border-radius:999px;
  background:rgba(255,255,255,.05);
  color:#dcdcdd;
  font-size:.78rem;
  font-weight:600
}

/* Action list */
.cx-actions {
  display:grid;
  gap:10px
}

.cx-action {
  display:flex;
  align-items:center;
  gap:14px;
  min-height:72px;
  padding:12px 14px 12px 12px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--surface);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  text-decoration:none;
  transition:background .2s,transform .2s,border-color .2s
}

.cx-action:hover {
  background:var(--surface-hover);
  border-color:rgba(255,255,255,.2)
}

.cx-action:active {
  transform:scale(.985)
}

.cx-action--primary {
  border-color:transparent;
  background:linear-gradient(135deg,var(--brand2),var(--deep));
  box-shadow:0 16px 40px rgba(191,25,34,.3),inset 0 1px rgba(255,255,255,.18)
}

.cx-action--primary:hover {
  background:linear-gradient(135deg,#e04a51,#7d1118);
  border-color:transparent
}

.cx-icon {
  flex:none;
  display:grid;
  place-items:center;
  width:46px;
  height:46px;
  border-radius:14px;
  background:rgba(255,255,255,.07)
}

.cx-action--primary .cx-icon {
  background:rgba(255,255,255,.16)
}

.cx-icon svg,.cx-chev svg {
  width:22px;
  height:22px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round
}

.cx-action-text {
  flex:1;
  min-width:0;
  display:grid
}

.cx-action-text strong {
  font-size:1.02rem;
  font-weight:700
}

.cx-action-text span {
  overflow:hidden;
  color:var(--muted);
  font-size:.86rem;
  text-overflow:ellipsis;
  white-space:nowrap
}

.cx-action--primary .cx-action-text span {
  color:rgba(255,255,255,.85)
}

.cx-chev {
  flex:none;
  opacity:.55
}

.cx-chev svg {
  width:18px;
  height:18px
}

/* Sections */
.cx-section {
  margin-top:38px
}

.cx-section h2 {
  margin:0 0 14px;
  color:#e0787c;
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.17em;
  text-transform:uppercase
}

/* Service list: information only, not links. One column of icon + name,
   no row buttons, no chevrons, no hover. */
.cx-svcs {
  display:grid;
  grid-template-columns:1fr;
  gap:14px;
  margin:0;
  padding:18px 16px;
  list-style:none;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:rgba(255,255,255,.025)
}

.cx-svc {
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
  cursor:default
}

.cx-svc-icon {
  flex:none;
  display:block;
  width:22px;
  height:22px;
  margin-top:1px;
  color:#e0787c
}

.cx-svc-icon svg {
  display:block;
  width:22px;
  height:22px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.6;
  stroke-linecap:round;
  stroke-linejoin:round
}

.cx-svc-name {
  color:#dcdcdd;
  font-size:.9rem;
  font-weight:600;
  line-height:1.35
}

.cx-info {
  margin:0;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--surface)
}

.cx-info div {
  padding:14px 16px
}

.cx-info div + div {
  border-top:1px solid var(--line)
}

.cx-info dt {
  margin-bottom:2px;
  color:var(--muted);
  font-size:.76rem;
  font-weight:600
}

.cx-info dd {
  margin:0;
  font-size:.94rem
}

/* Social profiles (hidden until a URL is set, see connect.html) */
.cx-social {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px
}

.cx-social-link[hidden] {
  display:none
}

.cx-social-link {
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-width:0;
  min-height:76px;
  padding:10px 4px;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--surface);
  font-size:.92rem;
  font-weight:700;
  text-decoration:none;
  transition:background .2s
}

.cx-social-link:hover {
  background:var(--surface-hover)
}

.cx-social-link svg {
  width:20px;
  height:20px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round
}

.cx-site {
  display:flex;
  justify-content:center;
  gap:6px;
  margin-top:30px;
  padding:14px;
  border:1px solid rgba(255,255,255,.2);
  border-radius:999px;
  font-weight:700;
  text-decoration:none;
  transition:background .2s
}

.cx-site:hover {
  background:var(--surface-hover)
}

.cx-foot {
  margin-top:28px;
  color:#7d7e81;
  font-size:.78rem;
  text-align:center
}

.cx-foot p {
  margin:0
}

/* Bottom dock: shown by connect.js once the action list scrolls away */
.cx-dock {
  position:fixed;
  left:50%;
  bottom:0;
  z-index:10;
  display:grid;
  grid-template-columns:1.3fr 1fr 1fr;
  gap:8px;
  width:min(100% - 24px,480px);
  padding:10px 0 max(10px,env(safe-area-inset-bottom));
  transform:translate(-50%,0);
  transition:transform .25s,opacity .25s
}

.cx-dock[hidden] {
  display:grid;
  opacity:0;
  visibility:hidden;
  transition:transform .25s,opacity .25s,visibility 0s .25s;
  pointer-events:none;
  transform:translate(-50%,110%)
}

.cx-dock-btn {
  display:grid;
  place-items:center;
  min-height:50px;
  border:1px solid rgba(255,255,255,.18);
  border-radius:999px;
  background:rgba(19,21,23,.88);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 12px 30px rgba(0,0,0,.45);
  font-weight:700;
  text-decoration:none
}

.cx-dock-btn--primary {
  border-color:transparent;
  background:linear-gradient(135deg,var(--brand2),var(--deep))
}

/* Entrance: staggered fade-up */
@keyframes cx-rise {
  from {
    opacity:0;
    transform:translateY(14px)
  }
}

.cx-in {
  animation:cx-rise .6s cubic-bezier(.2,.7,.2,1) both
}

.cx-actions.cx-in {
  animation-delay:.08s
}

.cx-section.cx-in {
  animation-delay:.16s
}

.cx-site.cx-in {
  animation-delay:.22s
}

@media (prefers-reduced-motion:reduce) {
  .cx-in {
    animation:none
  }

  .cx-action,.cx-dock {
    transition:none
  }

  /* Still photos, no push-in (connect.js also slows the cuts) */
  .cx-slide,.cx-slide.is-active {
    animation:none;
    transform:none
  }

  video.cx-slide.cx-slide--zoom,video.cx-slide.cx-slide--zoom.is-active {
    transform:scale(1.14)
  }
}

@media (min-width:720px) {
  .cx-wrap {
    padding-top:40px
  }

}

/* Social icons keep each network's own colours */
.cx-social-link svg.brand-icon {
  width:28px;
  height:28px
}
