/* ============ DUOAPP SHARED STYLES ============ */
:root{
  --blue:#1E88E5; --blue-2:#5BA8EE; --blue-deep:#066AAB;
  --navy:#0A1A2E; --navy-2:#0F2440; --navy-3:#13304F;
  --line:rgba(255,255,255,.08); --line-2:rgba(255,255,255,.14);
  --ink-bright:#FFFFFF; --ink-soft:rgba(255,255,255,.86);
  --ink-mute:rgba(255,255,255,.62); --ink-dim:rgba(255,255,255,.42);
  --green:#5DD39E; --amber:#F5B452; --red:#F56565;
  --t-meeting:#5DD39E; --t-ooo:#F4B43E; --t-sick:#F56565; --t-annual:#5BA8EE;
  --maxw:1280px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth; background:var(--navy)}
body{margin:0; font-family:'Inter',ui-sans-serif,system-ui,sans-serif; color:var(--ink-soft); background:var(--navy); font-size:16.5px; line-height:1.55; -webkit-font-smoothing:antialiased; overflow-x:hidden}
img{max-width:100%; display:block}
a{color:inherit; text-decoration:none}
h1,h2,h3,h4{margin:0; color:var(--ink-bright); font-weight:600; letter-spacing:-.025em; text-wrap:balance}
h1{font-size:clamp(44px, 6vw, 84px); line-height:1.02; letter-spacing:-.035em}
h2{font-size:clamp(28px, 3.4vw, 44px); line-height:1.08; letter-spacing:-.025em}
h3{font-size:20px; line-height:1.25; letter-spacing:-.015em}
p{margin:0; text-wrap:pretty}
.container{max-width:var(--maxw); margin:0 auto; padding:0 32px}
.eyebrow{display:inline-flex; align-items:center; gap:10px; font-family:'JetBrains Mono',monospace; font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-mute)}
.eyebrow::before{content:""; width:18px; height:1px; background:var(--blue)}
.accent{color:var(--blue-2)}
hr{border:none; border-top:1px solid var(--line); margin:48px 0}

/* AMBIENT */
.ambient{position:fixed; inset:0; pointer-events:none; z-index:0; overflow:hidden}
.ambient::before, .ambient::after{content:""; position:absolute; border-radius:50%; filter:blur(120px); opacity:.4}
.ambient::before{width:900px; height:900px; left:-200px; top:-300px; background:radial-gradient(circle, var(--blue) 0%, transparent 60%); animation:fa 18s ease-in-out infinite}
.ambient::after{width:700px; height:700px; right:-150px; top:30%; background:radial-gradient(circle, var(--blue-deep) 0%, transparent 60%); opacity:.35; animation:fb 22s ease-in-out infinite}
@keyframes fa{0%,100%{transform:translate(0,0) scale(1); opacity:.4} 50%{transform:translate(60px,40px) scale(1.08); opacity:.55}}
@keyframes fb{0%,100%{transform:translate(0,0) scale(1); opacity:.35} 50%{transform:translate(-50px,-30px) scale(.92); opacity:.5}}
.grain{position:fixed; inset:0; pointer-events:none; z-index:1; opacity:.025; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
main, header, footer{position:relative; z-index:2}

/* NAV */
.nav-wrap{position:sticky; top:0; z-index:50; transition:background .25s, border-color .25s}
.nav-wrap.scrolled{background:rgba(10,26,46,.72); backdrop-filter:saturate(180%) blur(20px); -webkit-backdrop-filter:saturate(180%) blur(20px); border-bottom:1px solid var(--line)}
/* While the mobile menu is open, drop the header's backdrop-filter so the menu's
   position:fixed resolves to the viewport (not the filtered header). */
.nav-wrap:has(.mobile-menu.open){backdrop-filter:none; -webkit-backdrop-filter:none}
.nav{display:flex; align-items:center; justify-content:space-between; height:76px}
.brand{display:inline-flex; align-items:center; height:36px}
.brand-logo{height:22px; width:auto; display:block}
.nav-center{display:flex; align-items:center; gap:2px}
.nav-center a, .nav-dd-trigger{display:inline-flex; align-items:center; gap:5px; padding:8px 14px; font-size:14px; font-weight:400; color:var(--ink-soft); border-radius:999px; cursor:pointer; transition:background .15s, color .15s; background:none; border:none; font-family:inherit}
.nav-center a:hover, .nav-dd-trigger:hover{background:rgba(255,255,255,.06); color:var(--ink-bright)}
.nav-center a.active{color:var(--ink-bright); background:rgba(30,136,229,.12)}
.nav-dd{position:relative}
.nav-dd-menu{position:absolute; top:calc(100% + 12px); left:50%; transform:translateX(-50%) translateY(-4px); min-width:560px; background:var(--navy-2); border:1px solid var(--line-2); border-radius:18px; padding:14px; box-shadow:0 30px 80px -20px rgba(0,0,0,.6); opacity:0; pointer-events:none; transition:all .2s ease; display:grid; grid-template-columns:1fr 1fr; gap:4px; z-index:50}
.nav-dd.is-open .nav-dd-menu{opacity:1; pointer-events:auto; transform:translateX(-50%) translateY(0)}
.nav-dd-item{display:flex; gap:14px; padding:12px 14px; border-radius:12px; transition:background .15s}
.nav-dd-item:hover{background:rgba(255,255,255,.05)}
.nav-dd-icon{width:34px; height:34px; flex:none; border-radius:9px; background:rgba(30,136,229,.14); display:grid; place-items:center; color:var(--blue-2)}
.nav-dd-text strong{display:block; font-size:14px; font-weight:500; color:var(--ink-bright); margin-bottom:2px}
.nav-dd-text small{font-size:12.5px; color:var(--ink-mute); line-height:1.4}

/* Hero "works offline" badge — used on QC and Aftercare pages */
.offline-pill{display:inline-flex; align-items:center; gap:10px; padding:8px 16px 8px 12px; border-radius:999px; background:linear-gradient(135deg, rgba(93,211,158,.16), rgba(91,168,238,.12)); border:1px solid rgba(93,211,158,.32); color:#cdf3df; font-size:13px; font-weight:500; letter-spacing:-.005em; box-shadow:0 4px 18px -8px rgba(93,211,158,.45); margin:0 0 16px}
.offline-pill svg{flex:none; color:#84e1b3}
.offline-pill .sep{width:1px; height:14px; background:rgba(255,255,255,.15)}
.offline-pill .lbl-mute{color:var(--ink-mute); font-weight:400; font-family:'JetBrains Mono',monospace; font-size:11.5px; letter-spacing:.04em}
.offline-pill .dot{width:7px; height:7px; border-radius:50%; background:#5dd39e; box-shadow:0 0 0 3px rgba(93,211,158,.22); animation:offlinePulse 2.4s ease-in-out infinite}
@keyframes offlinePulse{0%,100%{opacity:1}50%{opacity:.55}}
.nav-right{display:flex; align-items:center; gap:8px}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; height:42px; padding:0 18px; border-radius:999px; font-size:14px; font-weight:500; font-family:inherit; cursor:pointer; transition:all .2s; border:1px solid transparent; white-space:nowrap}
.btn-primary{background:var(--blue); color:#fff; box-shadow:0 1px 0 rgba(255,255,255,.12) inset, 0 8px 24px -8px rgba(30,136,229,.6); position:relative; overflow:hidden}
.btn-primary:hover{background:#2a93ee; transform:translateY(-1px); box-shadow:0 1px 0 rgba(255,255,255,.18) inset, 0 14px 32px -8px rgba(30,136,229,.7)}
.btn-primary::after{content:""; position:absolute; inset:0; background:linear-gradient(110deg, transparent 30%, rgba(255,255,255,.35) 50%, transparent 70%); transform:translateX(-100%); transition:transform .7s ease; pointer-events:none}
.btn-primary:hover::after{transform:translateX(100%)}
.btn-ghost{color:var(--ink-bright); border-color:var(--line-2); background:rgba(255,255,255,.02)}
.btn-ghost:hover{background:rgba(255,255,255,.06); border-color:var(--line-2)}
.btn-link{color:var(--ink-soft); padding:0 12px; height:auto}
.btn-link:hover{color:var(--ink-bright)}
.btn-light{background:#fff; color:var(--navy)}
.btn-light:hover{background:#f3f3f3}
.btn-lg{height:54px; padding:0 26px; font-size:15px}
.nav-mobile-toggle{display:none; background:transparent; border:1px solid var(--line-2); width:40px; height:40px; border-radius:999px; cursor:pointer; padding:0; color:var(--ink-bright)}
.nav-mobile-toggle svg{width:18px; height:18px}
.mobile-menu{display:none; position:fixed; inset:76px 0 0 0; background:var(--navy); z-index:40; padding:24px; overflow:auto; border-top:1px solid var(--line)}
.mobile-menu.open{display:block}
.mobile-menu a:not(.btn){display:block; padding:18px 0; font-size:18px; font-weight:500; color:var(--ink-bright); border-bottom:1px solid var(--line)}
.mobile-menu .btn{width:100%; justify-content:center; margin-top:14px}

/* PAGE HERO */
.page-hero{padding:80px 0 56px}
.page-hero .eyebrow{margin-bottom:20px}
.page-hero h1{margin-bottom:24px}
.page-hero .lede{color:var(--ink-mute); font-size:18px; max-width:640px; line-height:1.6}
.crumbs{font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:.08em; color:var(--ink-dim); margin-bottom:32px; text-transform:uppercase}
.crumbs a{color:var(--ink-mute)}
.crumbs a:hover{color:var(--blue-2)}
.crumbs .sep{margin:0 8px; color:var(--line-2)}

/* CTA STRIP */
.cta-strip{padding:48px 0 96px}
.cta-card{
  background:linear-gradient(120deg, var(--blue-deep) 0%, var(--blue) 60%, #2a93ee 100%);
  background-size:120% 120%; animation:cta-breathe 14s ease-in-out infinite;
  border-radius:32px; padding:64px; position:relative; overflow:hidden;
  display:grid; grid-template-columns:1.4fr 1fr; gap:48px; align-items:center;
}
.cta-card::before{content:""; position:absolute; top:-100px; right:-100px; width:400px; height:400px; background:radial-gradient(circle, rgba(255,255,255,.18), transparent 60%); pointer-events:none}
@keyframes cta-breathe{0%,100%{background-position:0% 0%} 50%{background-position:100% 100%}}
.cta-card h2{color:#fff; line-height:1.05}
.cta-card p{color:rgba(255,255,255,.85); margin-top:14px; max-width:480px}
.cta-actions{display:flex; flex-direction:column; gap:12px}
.cta-actions .btn-ghost{color:#fff; border-color:rgba(255,255,255,.3); background:transparent}
.cta-actions .btn-ghost:hover{background:rgba(255,255,255,.1)}
.cta-actions .btn{width:100%; justify-content:center}

/* FOOTER */
footer{padding:80px 0 40px; border-top:1px solid var(--line); background:linear-gradient(180deg, transparent, rgba(0,0,0,.3))}
.footer-grid{display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:64px; padding-bottom:56px; border-bottom:1px solid var(--line)}
.footer-brand p{font-size:14px; color:var(--ink-mute); margin:24px 0; max-width:320px; line-height:1.55}
.footer-contact{display:flex; flex-direction:column; gap:8px; font-size:13.5px; color:var(--ink-mute)}
.footer-contact a:hover{color:#fff}
.footer-col h4{color:#fff; font-size:12px; text-transform:uppercase; letter-spacing:.12em; font-weight:500; margin-bottom:22px; font-family:'JetBrains Mono', monospace}
.footer-col ul{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:12px}
.footer-col a{color:var(--ink-mute); font-size:14px; transition:color .15s}
.footer-col a:hover{color:#fff}
.footer-bottom{display:flex; justify-content:space-between; align-items:center; padding-top:32px; gap:24px; flex-wrap:wrap; margin-top:40px}
.footer-meta{font-size:12.5px; color:var(--ink-dim); display:flex; gap:18px; flex-wrap:wrap; align-items:center}
.footer-meta a:hover{color:#fff}
.uk-badge{display:inline-flex; align-items:center; gap:8px; padding:6px 12px; background:rgba(255,255,255,.04); border:1px solid var(--line); border-radius:999px; font-size:12px; color:var(--ink-soft); font-family:'JetBrains Mono',monospace; letter-spacing:.06em}
.uk-flag{width:18px; height:auto; border-radius:2px; flex:none; display:block; background:transparent}
.socials{display:flex; gap:8px}
.socials a{display:grid; place-items:center; width:36px; height:36px; border-radius:999px; background:rgba(255,255,255,.04); border:1px solid var(--line); transition:all .2s; color:var(--ink-mute)}
.socials a:hover{color:#fff; background:rgba(255,255,255,.08); border-color:var(--line-2)}
.socials svg{width:14px; height:14px}

/* PROSE for legal pages */
.prose{max-width:760px; margin:0 auto; padding:32px 0 96px}
.prose h2{font-size:28px; margin:48px 0 16px}
.prose h3{font-size:18px; margin:32px 0 12px; color:#fff}
.prose p, .prose ul{color:var(--ink-soft); font-size:15.5px; line-height:1.7; margin-bottom:16px}
.prose ul{padding-left:22px}
.prose ul li{margin-bottom:8px}
.prose strong{color:#fff; font-weight:600}
.prose a{color:var(--blue-2); border-bottom:1px solid rgba(91,168,238,.3); padding-bottom:1px}
.prose a:hover{color:#fff; border-color:#fff}
.prose-meta{font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--ink-dim); letter-spacing:.08em; text-transform:uppercase; padding:14px 0 28px; border-bottom:1px solid var(--line); margin-bottom:32px}

/* CARDS / GRIDS */
.card{background:linear-gradient(165deg, var(--navy-2), rgba(15,36,64,.55)); border:1px solid var(--line-2); border-radius:24px; padding:40px}
.card-soft{background:rgba(255,255,255,.03); border:1px solid var(--line); border-radius:18px; padding:28px; transition:border-color .2s, background .2s}
.card-soft:hover{border-color:var(--line-2); background:rgba(255,255,255,.05)}
.grid-2{display:grid; grid-template-columns:repeat(2,1fr); gap:20px}
.grid-3{display:grid; grid-template-columns:repeat(3,1fr); gap:20px}
.grid-4{display:grid; grid-template-columns:repeat(4,1fr); gap:20px}

/* FORMS */
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:18px}
.field{display:flex; flex-direction:column; gap:8px; margin-bottom:18px}
.field label{font-size:13px; color:var(--ink-mute); font-family:'JetBrains Mono',monospace; letter-spacing:.06em; text-transform:uppercase}
.field input, .field textarea, .field select{
  width:100%; padding:14px 16px; background:rgba(0,0,0,.25); border:1px solid var(--line);
  border-radius:12px; color:#fff; font-family:inherit; font-size:15px; transition:border-color .2s, background .2s;
}
.field input:focus, .field textarea:focus, .field select:focus{outline:none; border-color:var(--blue); background:rgba(0,0,0,.35); box-shadow:0 0 0 4px rgba(30,136,229,.12)}
.field textarea{min-height:120px; resize:vertical; font-family:inherit}
.field-help{font-size:12.5px; color:var(--ink-dim); margin-top:-4px}

/* BADGES */
.badge{display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:999px; font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase}
.badge-green{background:rgba(93,211,158,.12); color:var(--green)}
.badge-amber{background:rgba(245,180,82,.12); color:var(--amber)}
.badge-red{background:rgba(245,101,101,.14); color:var(--red)}
.badge-blue{background:rgba(30,136,229,.14); color:var(--blue-2)}
.dot{width:8px; height:8px; border-radius:50%}
.dot-green{background:var(--green); box-shadow:0 0 0 3px rgba(93,211,158,.18)}
.dot-amber{background:var(--amber); box-shadow:0 0 0 3px rgba(245,180,82,.18)}
.dot-red{background:var(--red); box-shadow:0 0 0 3px rgba(245,101,101,.18)}

/* REVEAL */
.reveal{opacity:0; transform:translateY(20px); transition:opacity .7s ease, transform .7s ease}
.reveal.in{opacity:1; transform:none}

@media (max-width:1080px){
  .nav-center{display:none}
  .nav-mobile-toggle{display:grid; place-items:center}
  .nav-right .btn-link, .nav-right .btn-ghost{display:none}
  .grid-3, .grid-4{grid-template-columns:repeat(2,1fr)}
  .cta-card{grid-template-columns:1fr; padding:48px 32px; gap:32px}
  .footer-grid{grid-template-columns:1fr 1fr; gap:40px}
}
@media (max-width:600px){
  .container{padding:0 20px}
  .grid-2, .grid-3, .grid-4, .form-row{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr}
  .card{padding:28px 22px}
}
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{animation:none !important; transition:none !important}
}


/* ============ ANTI-BOT / CAPTCHA ============ */
.hp-field{
  position:absolute !important; left:-9999px !important; top:auto !important;
  width:1px !important; height:1px !important; overflow:hidden !important;
  opacity:0 !important; pointer-events:none !important;
}
.captcha{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  padding:14px 18px; margin-bottom:18px;
  background:rgba(0,0,0,.22);
  border:1px solid var(--line-2); border-radius:12px;
  transition:border-color .2s, background .2s;
  cursor:pointer; user-select:none;
}
.captcha:hover{border-color:var(--ink-mute)}
.captcha:focus-visible{outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(30,136,229,.18)}
.captcha.is-checking{cursor:progress}
.captcha.is-verified{border-color:rgba(93,211,158,.45); background:rgba(93,211,158,.06); cursor:default}
.captcha.is-error{border-color:rgba(245,180,82,.55); background:rgba(245,180,82,.06)}
.captcha-main{display:flex; align-items:center; gap:14px; min-width:0}
.captcha-box{
  width:26px; height:26px; flex:none; border-radius:6px;
  background:rgba(255,255,255,.04); border:1.5px solid var(--line-2);
  display:grid; place-items:center; position:relative;
  transition:all .2s ease;
}
.captcha.is-checking .captcha-box{border-color:var(--blue-2)}
.captcha.is-verified .captcha-box{background:var(--green); border-color:var(--green)}
.captcha-box svg{width:14px; height:14px; color:#0a1a2e; opacity:0; transform:scale(.4); transition:opacity .2s, transform .25s cubic-bezier(.2,1.8,.4,1)}
.captcha.is-verified .captcha-box svg{opacity:1; transform:scale(1)}
.captcha-spinner{
  position:absolute; inset:-1px; border-radius:6px;
  border:1.5px solid transparent; border-top-color:var(--blue-2);
  animation:captcha-spin .8s linear infinite; opacity:0; transition:opacity .15s;
}
.captcha.is-checking .captcha-spinner{opacity:1}
@keyframes captcha-spin{to{transform:rotate(360deg)}}
.captcha-label{display:flex; flex-direction:column; gap:2px; min-width:0}
.captcha-label strong{font-size:14px; color:#fff; font-weight:500}
.captcha-label small{font-size:11.5px; color:var(--ink-mute); font-family:'JetBrains Mono',monospace; letter-spacing:.04em}
.captcha.is-verified .captcha-label small{color:var(--green)}
.captcha.is-error .captcha-label small{color:var(--amber)}
.captcha-brand{
  display:flex; flex-direction:column; align-items:flex-end; gap:2px;
  font-family:'JetBrains Mono',monospace; font-size:9.5px;
  letter-spacing:.12em; text-transform:uppercase; color:var(--ink-dim);
  line-height:1.3; text-align:right;
}
.captcha-brand strong{color:var(--ink-soft); font-weight:500; font-size:10px}
.captcha-brand svg{width:18px; height:18px; color:var(--blue-2); margin-bottom:4px}
@media (max-width:560px){
  .captcha{padding:12px 14px}
  .captcha-brand{display:none}
}


/* ============ APP STORE BADGES ============ */
.store-badges{display:flex; gap:10px; margin-top:24px; flex-wrap:wrap}
.store-badge{
  display:inline-flex; align-items:center; gap:10px;
  height:46px; padding:0 14px;
  background:#000;
  border:1px solid rgba(255,255,255,.22);
  border-radius:8px;
  color:#fff; text-decoration:none;
  transition:transform .18s ease, border-color .18s ease, background .18s ease;
  line-height:1;
}
.store-badge:hover{transform:translateY(-1px); border-color:rgba(255,255,255,.5); background:#0a0a0a}
.store-badge .ic{flex:none; display:block}
.store-badge .txt{display:flex; flex-direction:column; gap:1px}
.store-badge .txt small{font-size:9px; line-height:1; letter-spacing:.04em; color:#fff; opacity:.95}
.store-badge .txt strong{font-size:16px; line-height:1.1; font-weight:600; letter-spacing:-.01em; color:#fff; font-family:'Inter','-apple-system',sans-serif}
.store-badge.apple .txt small{letter-spacing:.02em}
.store-badge.google .txt small{letter-spacing:.14em; text-transform:uppercase; font-size:8.5px}


/* Windows badge — uppercase mono label like Google Play */
.store-badge.windows .txt small{letter-spacing:.02em; text-transform:none; font-size:9px}
