/* TDS Synthwave — shared tokens, animation hosts, header/footer, FAQ.
   Tokens come from the Nocturne design system. */
:root {
  --color-bg: #161826;
  --color-surface: #232532;
  --color-text: #e9e9ed;
  --color-accent: #9184d9; /* review round 7 (Barron): the accent moves to
     the product's blurple — OKLCH hue 289.2, the hue of the app's own Pro
     accent (#9a8fe0, --om-accent-pro) — at the same lightness the steel
     accent held (L 0.660, so the documented ratios survive) and chroma
     in the product blurple's own range (its token sits at C 0.118; the
     accent takes 0.125, from the old steel's 0.030):
     the accent now reads as an accent rather than another neutral. */
  --color-accent-2: #a7a1db; /* the machine-derived stand-in follows: same
     hue, same L 0.734, chroma at the same 2:3 proportion it held */
  --color-divider: color-mix(in srgb, #e9e9ed 16%, transparent);

  /* Tonal ramps — generated in OKLCH on one shared lightness scale, so the
     same step of any role matches the others in visual value. */
  --color-neutral-100: #f3f5fe;
  --color-neutral-200: #e4e7f5;
  --color-neutral-300: #cfd3e5;
  --color-neutral-400: #b2b6ca;
  --color-neutral-500: #9397ab;
  --color-neutral-600: #75798c;
  --color-neutral-700: #595d6c;
  --color-neutral-800: #3f424d;
  --color-neutral-900: #292b31;

  --color-accent-100: #f5f4ff;
  --color-accent-200: #e7e5fe;
  --color-accent-300: #d2cefd;
  --color-accent-400: #b5abfc;
  --color-accent-500: #968ae0;
  --color-accent-600: #796cbf;
  --color-accent-700: #5d5294;
  --color-accent-800: #423a6a;
  --color-accent-900: #2b2741;

  --color-accent-2-100: #f5f4ff;
  --color-accent-2-200: #e7e5fe;
  --color-accent-2-300: #d2cefd;
  --color-accent-2-400: #b5afe8;
  --color-accent-2-500: #9690c9;
  --color-accent-2-600: #7972a9;
  --color-accent-2-700: #5c5783;
  --color-accent-2-800: #423e5d;
  --color-accent-2-900: #2b293a;

  /* Deck section-divider ground — review round 3: saturation as presence.
     Dividers take a saturated deep indigo (hue 277, the neutral ramp's own
     family; C 0.094 — written when the accent held C 0.030, before the
     round-7 blurple raised it past the ground's) with a lighter bloom and
     a ghost tint of the same hue, while the slide grounds stay
     desaturated. Deck-scale fills only — not interface colors. */
  --color-section: #262a60;
  --color-section-glow: #353b80;
  --color-section-ghost: #4c5397;

  --font-heading: "Inter", system-ui, sans-serif;
  --font-heading-weight: 500;
  --font-body: "Inter", system-ui, sans-serif;

  --space-1: 2.8px;
  --space-2: 5.6px;
  --space-3: 8.4px;
  --space-4: 11.2px;
  --space-6: 16.8px;
  --space-8: 22.4px;

  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;

  /* Elevation — derived from the ground: soft ink-tinted shadows on a
     light theme, a hairline edge + ambient darkness on a dark one. */
  --shadow-sm: 0 0 0 1px #3f424d;
  --shadow-md: 0 0 0 1px #595d6c, 0 6px 18px rgba(0,0,0,0.55);
  --shadow-lg: 0 0 0 1px #9397ab, 0 16px 40px rgba(0,0,0,0.65);
}

.tds-root-scope, body{font-family:var(--font-body)}
@keyframes tdsBlink{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes tdsPulse{0%,100%{opacity:.55}50%{opacity:1}}

/* animation hosts */
.tds-anim{position:absolute;inset:0;display:block;width:100%;height:100%;z-index:1}
.tds-anim--flow{position:relative;inset:auto;height:300px}
.tds-anim--flow.tds-terminal{display:flex}
span.tds-anim-wrap{display:block;position:absolute;inset:0}
span.tds-anim-wrap.is-flow{position:relative;inset:auto}

/* scanlines toggle target */
.tds-scan{position:absolute;inset:0;z-index:3;pointer-events:none;background:repeating-linear-gradient(to bottom,rgba(0,0,0,.2) 0,rgba(0,0,0,.2) 2px,transparent 2px,transparent 4px)}

/* header */
.tds-header{position:sticky;top:0;z-index:50;background:rgba(22,24,38,.82);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-family:var(--font-body)}
.tds-header *{box-sizing:border-box}
.tds-header nav{max-width:1240px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;gap:32px;flex-wrap:wrap}
.tds-header a{text-decoration:none}
.tds-brand{display:flex;align-items:center;filter:drop-shadow(0 0 6px rgba(181,171,252,.55))}
.tds-brand .tds-logo-svg{height:34px;width:auto;display:block}
.tds-links{display:flex;gap:24px;font-size:14px;font-weight:500;flex:1;flex-wrap:wrap;align-items:center}
.tds-links>a,.tds-drop>button{color:var(--color-neutral-400);background:none;border:0;padding:0;font:inherit;cursor:pointer;display:flex;align-items:center;gap:6px}
.tds-links>a:hover,.tds-drop>button:hover,.tds-links>a.is-current{color:#9fe0f5}
.tds-links>a.is-current{color:var(--color-text)}
.tds-drop{position:relative}
.tds-drop .tds-caret{font-family:'JetBrains Mono',monospace;font-size:11px;color:#9fe0f5}
.tds-menu{display:none;position:absolute;top:calc(100% + 16px);left:-14px;min-width:260px;flex-direction:column;gap:2px;padding:8px;background:rgba(22,24,38,.97);border-radius:var(--radius-md);box-shadow:0 0 0 1px #423a6a,0 0 28px rgba(150,138,224,.3)}
.tds-drop.is-open .tds-menu,.tds-drop:hover .tds-menu,.tds-drop:focus-within .tds-menu{display:flex}
.tds-menu a{padding:9px 12px;border-radius:6px;color:var(--color-neutral-200)}
.tds-menu a:hover{background:rgba(150,138,224,.14);color:#9fe0f5}
.tds-cta-row{display:flex;align-items:center;gap:18px;flex-shrink:0}
.tds-phone{font-family:'JetBrains Mono',monospace;font-size:13px;color:#9fe0f5}
.tds-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;flex-shrink:0;font-family:var(--font-heading);font-weight:500;font-size:14px;line-height:1.2;color:var(--color-accent);border:1px solid var(--color-accent);background:transparent;padding:6px 10px;border-radius:var(--radius-md);box-shadow:0 0 14px rgba(150,138,224,.45);transition:background .2s}
.tds-btn:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}
.tds-header-rule{height:1px;background:linear-gradient(90deg,transparent,#968ae0 20%,#9fe0f5 50%,#968ae0 80%,transparent)}

/* footer bar */
.tds-footbar{background:linear-gradient(180deg,#161826 0%,#1d1b33 100%);font-family:var(--font-body)}
.tds-footbar .tds-footrule{height:1px;background:linear-gradient(90deg,transparent,#ff6ec7 25%,#b5abfc 50%,#9fe0f5 75%,transparent);box-shadow:0 0 12px rgba(255,110,199,.5)}
.tds-footbar .tds-footin{max-width:1240px;margin:0 auto;padding:28px 28px 40px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;font-size:13px;color:var(--color-neutral-500)}
.tds-footbar .tds-mark-svg{height:22px;width:auto;opacity:.8;display:block}

/* FAQ */
.tds-faq{display:flex;flex-direction:column;gap:10px;font-family:var(--font-body)}
.tds-faq details{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}
.tds-faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 22px;font-size:17px;font-weight:500;color:var(--color-neutral-100)}
.tds-faq summary::-webkit-details-marker{display:none}
.tds-faq summary span{font-family:'JetBrains Mono',monospace;color:#9fe0f5;text-shadow:0 0 8px rgba(159,224,245,.6)}
.tds-faq details[open] summary span:before{content:'−'}
.tds-faq details:not([open]) summary span:before{content:'+'}
.tds-faq details p{margin:0;padding:0 22px 22px;font-size:15px;line-height:1.65;color:var(--color-neutral-300);max-width:68ch}

/* contact form */
.tds-cf{display:grid;grid-template-columns:1fr 1fr;gap:14px;font-family:var(--font-body);position:relative;z-index:2}
.tds-cf-f{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--color-neutral-300,#b9bbd0)}
.tds-cf-wide,.tds-cf-msg,.tds-cf-foot{grid-column:1/-1}
.tds-cf input[type=text],.tds-cf input[type=email],.tds-cf input[type=tel],.tds-cf textarea{width:100%;background:var(--color-bg);color:var(--color-neutral-100);border:1px solid rgba(145,132,217,.35);border-radius:var(--radius-md);padding:10px 12px;font:inherit;font-size:15px}
.tds-cf input:focus,.tds-cf textarea:focus{outline:none;border-color:var(--color-accent-400);box-shadow:0 0 12px rgba(145,132,217,.45)}
.tds-cf-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--color-neutral-400,#8e90a8)}
.tds-cf-btn{cursor:pointer;font-family:var(--font-heading);font-weight:500;font-size:14px;color:var(--color-accent);background:transparent;border:1px solid var(--color-accent);border-radius:var(--radius-md);padding:8px 16px;box-shadow:0 0 14px rgba(150,138,224,.45)}
.tds-cf-btn:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)}
.tds-cf-ok{color:var(--color-cyan,#9fe0f5)}.tds-cf-err{color:var(--color-pink,#ff6ec7)}
@media(max-width:640px){.tds-cf{grid-template-columns:1fr}}

/* v1.0.2 fixes */
.elementor-location-header{position:sticky;top:0;z-index:100;background:rgba(22,24,38,.82);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.elementor-location-header .tds-header{position:static;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.tds-header .tds-drop>button,.tds-header .tds-drop>button:hover,.tds-header .tds-drop>button:focus,.tds-header .tds-drop>button:active{background:none!important;box-shadow:none!important;border:0!important;outline:0;text-decoration:none;text-transform:none;letter-spacing:normal;color:var(--color-neutral-400)}
.tds-header .tds-drop>button:hover,.tds-header .tds-drop>button:focus-visible,.tds-header .tds-drop:focus-within>button{color:#9fe0f5!important}
.tds-header .tds-links>a{color:var(--color-neutral-400)}
.tds-header .tds-links>a:hover{color:#9fe0f5}
.tds-header .tds-links>a.is-current{color:var(--color-text)}
.tds-header .tds-menu a{color:var(--color-neutral-200);background:none}
.tds-header .tds-menu a:hover{background:rgba(150,138,224,.14);color:#9fe0f5}
.tds-header .tds-btn:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)!important;color:var(--color-accent)}
body:has(.tds-root){background:#161826}
.elementor .tds-cta-footer .tds-wrap>.e-div-block-base:first-child{flex:1 1 420px;width:auto}
.elementor .tds-cta-footer .tds-wrap>.e-button-base{flex:0 0 auto;width:auto}
.elementor .tds-card:hover{box-shadow:0 0 0 1px #968ae0,0 0 28px rgba(150,138,224,.35);transform:translateY(-3px)}
a:hover>.tds-more,.tds-more:hover{color:#9fe0f5}

.elementor .tds-hexbg{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2256%22 height=%22100%22%3E%3Cpath d=%22M28 66L0 50L0 16L28 0L56 16L56 50L28 66L28 100M28 0L28 34L0 50L0 84L28 100L56 84L56 50L28 34%22 fill=%22none%22 stroke=%22%23b5abfc%22 stroke-opacity=%220.12%22/%3E%3C/svg%3E")}
.elementor .tds-hexbg-cy{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2256%22 height=%22100%22%3E%3Cpath d=%22M28 66L0 50L0 16L28 0L56 16L56 50L28 66L28 100M28 0L28 34L0 50L0 84L28 100L56 84L56 50L28 34%22 fill=%22none%22 stroke=%22%239fe0f5%22 stroke-opacity=%220.08%22/%3E%3C/svg%3E")}

/* v1.0.3 */
.tds-header .tds-cta-row a.tds-phone{color:#9fe0f5;font-family:'JetBrains Mono',monospace;font-size:13px}
form.tds-cf .tds-cf-f input,form.tds-cf .tds-cf-f textarea{background:#161826!important;color:var(--color-neutral-100)!important;border:1px solid rgba(145,132,217,.35)!important;border-radius:var(--radius-md);box-shadow:none}
form.tds-cf .tds-cf-f input:focus,form.tds-cf .tds-cf-f textarea:focus{border-color:var(--color-accent-400)!important;box-shadow:0 0 12px rgba(145,132,217,.45)}
form.tds-cf button.tds-cf-btn,form.tds-cf button.tds-cf-btn:focus{background:transparent!important;color:var(--color-accent)!important;border:1px solid var(--color-accent)!important;box-shadow:0 0 14px rgba(150,138,224,.45)!important;padding:10px 18px;border-radius:var(--radius-md)}
form.tds-cf button.tds-cf-btn:hover{background:color-mix(in srgb,var(--color-accent) 12%,transparent)!important}
.elementor .tds-header a.tds-btn{padding:6px 10px;font-size:14px;line-height:1.2;box-shadow:0 0 14px rgba(150,138,224,.45)}
.tds-header .tds-links{gap:24px}

/* v1.0.4 hamburger */
.tds-panel{display:contents}
.tds-header .tds-burger{display:none!important;margin-left:auto;width:42px;height:42px;padding:0;align-items:center;justify-content:center;flex-direction:column;gap:5px;cursor:pointer;background:transparent!important;border:1px solid rgba(145,132,217,.45)!important;border-radius:var(--radius-md);box-shadow:0 0 12px rgba(150,138,224,.3)!important}
.tds-burger span{display:block;flex:none;width:20px;min-height:2px;height:2px;margin:0;background:var(--color-accent-400);border-radius:2px;transition:transform .2s,opacity .2s}
.tds-header.is-open .tds-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.tds-header.is-open .tds-burger span:nth-child(2){opacity:0}
.tds-header.is-open .tds-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media(max-width:860px){
  .elementor-location-header .tds-header{position:relative}
  .tds-header nav{flex-wrap:nowrap;gap:16px}
  .tds-header .tds-burger{display:flex!important;align-items:center;justify-content:center;flex-direction:column;gap:5px}
  .tds-panel{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:18px;padding:18px 28px 26px;background:#161826;border-bottom:1px solid #423a6a;box-shadow:0 18px 40px rgba(0,0,0,.5);max-height:calc(100vh - 80px);overflow-y:auto}
  .tds-header.is-open .tds-panel{display:flex}
  .tds-header .tds-links{flex-direction:column;align-items:stretch;gap:2px;flex:none;font-size:16px}
  .tds-header .tds-links>a,.tds-header .tds-drop>button{padding:12px 4px;justify-content:space-between;width:100%;border-bottom:1px solid rgba(145,132,217,.14)}
  .tds-drop{position:static}
  .tds-drop:hover .tds-menu,.tds-drop:focus-within .tds-menu{display:none}
  .tds-drop.is-open .tds-menu{display:flex}
  .tds-menu{position:static;min-width:0;margin:6px 0 6px 10px;box-shadow:none;background:transparent;border-left:1px solid #423a6a;border-radius:0;padding:4px 0 4px 8px}
  .tds-header .tds-cta-row{flex-direction:column;align-items:stretch;gap:14px;text-align:center}
  .elementor .tds-header a.tds-btn{padding:12px 16px;font-size:15px}
}

/* v1.0.6 dropdown */
.tds-header .tds-menu{min-width:290px;gap:6px;padding:12px;z-index:200}
.tds-header .tds-menu::before{content:"";position:absolute;left:0;right:0;top:-20px;height:20px}
.tds-header .tds-menu a{position:relative;display:block;padding:13px 16px;line-height:1.3;white-space:nowrap}
.tds-header .tds-menu a+a::before{content:"";position:absolute;left:14px;right:14px;top:-4px;height:1px;background:linear-gradient(90deg,transparent,#968ae0 25%,#9fe0f5 55%,#968ae0 80%,transparent);opacity:.55;box-shadow:0 0 6px rgba(150,138,224,.5)}
.elementor-location-header,.elementor-location-header .e-con,.elementor-location-header .tds-header{overflow:visible}
@media(max-width:860px){
  .tds-header .tds-menu{min-width:0;gap:6px;padding:6px 0 6px 8px}
  .tds-header .tds-menu::before{display:none}
  .tds-header .tds-menu a{padding:12px 12px;white-space:normal}
  .tds-header .tds-menu a+a::before{left:12px;right:0}
}

/* v1.0.7 page-transition loader: logo mark instead of rings */
e-page-transition{background:#161826!important}
e-page-transition e-preloader[type]{display:block;position:relative;width:112px;height:63px;font-size:16px;opacity:1;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2249 -1 82 46%22 fill=%22%23b5abfc%22%3E%3Cpath d=%22m79.76,39.7l-1.63,2.82h23.73l-1.63-2.82h-20.48M101.87,1.41h-23.73l1.63,2.82h20.48l1.63-2.82m-20.48,5.64l-8.61,14.92,8.61,14.92h17.22l8.61-14.92-8.61-14.92h-17.22m-4.07,36.88l-12.68-21.96L77.32,0h25.36l12.68,21.96-12.68,21.96h-25.36%22/%3E%3C/svg%3E") center/contain no-repeat;filter:drop-shadow(0 0 8px rgba(181,171,252,.85)) drop-shadow(0 0 22px rgba(150,138,224,.55));animation:tdsMarkPulse 1.5s ease-in-out infinite!important}
e-page-transition e-preloader[type]::before,e-page-transition e-preloader[type]::after{content:""!important;display:block!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;border:0!important;border-radius:0!important;background-repeat:no-repeat!important;background-position:center!important;background-size:contain!important}
e-page-transition e-preloader[type]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2249 -1 82 46%22 fill=%22%23b5abfc%22%3E%3Cpolyline points=%2261.39 41.69 50 21.96 61.39 2.24 65.45 9.28 58.13 21.96 65.45 34.64 61.39 41.69%22/%3E%3C/svg%3E")!important;animation:tdsWingL 1.5s ease-in-out infinite!important}
e-page-transition e-preloader[type]::after{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2249 -1 82 46%22 fill=%22%23b5abfc%22%3E%3Cpolyline points=%22114.55 9.28 118.61 2.24 130 21.96 118.61 41.69 114.55 34.64 121.87 21.96 114.55 9.28%22/%3E%3C/svg%3E")!important;animation:tdsWingR 1.5s ease-in-out infinite!important}
@keyframes tdsMarkPulse{0%,100%{opacity:.75;transform:scale(.96)}50%{opacity:1;transform:scale(1.04)}}
@keyframes tdsWingL{0%,100%{transform:translateX(0);opacity:.5}50%{transform:translateX(-12px);opacity:1}}
@keyframes tdsWingR{0%,100%{transform:translateX(0);opacity:.5}50%{transform:translateX(12px);opacity:1}}
@media (prefers-reduced-motion:reduce){e-page-transition e-preloader[type],e-page-transition e-preloader[type]::before,e-page-transition e-preloader[type]::after{animation:none!important}}

/* v1.0.9 contact form */
.elementor .tds-vis:has(.tds-cf){aspect-ratio:auto;overflow:visible}
.tds-cf .tds-cf-status{grid-column:1/-1;margin:0;font-size:14px;line-height:1.5;min-height:0}
.tds-cf .tds-cf-status:empty{display:none}
.tds-cf-foot{flex-wrap:wrap}
.tds-cf-btn[disabled]{opacity:.6;cursor:wait}
