/* ── TETHYS UX layer (Wave 1, 2026-07-21) ───────────────────── */
/* Contrast fix: --muted 4.0:1 -> 5.6:1 on #06060D (WCAG AA) */
:root{--muted:#83869F}
/* Skip link */
.skip-link{position:absolute;left:-9999px;top:0;z-index:10000;background:#00D4FF;color:#06060D;padding:10px 18px;font-size:13px;font-weight:600;text-decoration:none;letter-spacing:.06em}
.skip-link:focus{left:12px;top:12px}
/* Native cursor on touch / coarse pointers / small screens + text fields */
@media (hover:none),(pointer:coarse),(max-width:768px){body,body *{cursor:auto!important}#cur,#cur-ring{display:none!important}}
input,textarea,select{cursor:text!important}
/* Failure mode (JS or CDN blocked): reveal everything */
html.no-anim #loader{display:none!important}
html.no-anim body *{opacity:1!important;transform:none!important;visibility:visible!important}
html.no-anim #cur,html.no-anim #cur-ring{display:none!important}
/* mode degrade : les loupes/overlays restent caches, le marquee reste statique mais lisible */
html.no-anim .pm-lens,html.no-anim .pmf-lens,html.no-anim .tg-zoom-hint{opacity:0!important}
html.no-anim .marquee-track{animation:none!important}
html.no-anim body{cursor:auto!important;overflow:auto!important}
/* Returning visitor: loader hidden instantly */
html.t-seen #loader{display:none!important}
/* Reduced motion */
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* Accessible consent checkbox (keyboard + AT) */
.f-check{position:relative}
.f-check input{display:block!important;position:absolute;opacity:0;width:18px;height:18px;margin:0;z-index:1}
.f-check input:focus-visible ~ .f-check-box{outline:2px solid #00D4FF;outline-offset:2px}
.f-check input:checked ~ .f-check-box{border-color:#00D4FF;background:rgba(0,212,255,.1)}
.f-check input:checked ~ .f-check-box::after{content:'✓';font-size:11px;color:#00D4FF}
/* Commander hero CTA */
.hero-cta-btn{display:inline-block;margin-top:36px;background:#00D4FF;color:#06060D;font-weight:700;font-size:12px;letter-spacing:.2em;text-transform:uppercase;padding:16px 32px;text-decoration:none;transition:background .3s}
.hero-cta-btn:hover{background:#00b8d4}
/* Proof strip (order page) */
.proof-strip{max-width:1400px;margin:0 auto 8px;padding:28px 56px;border-top:1px solid rgba(255,255,255,.05);display:flex;flex-direction:column;gap:10px;font-size:13px;color:var(--sub,#8890B0)}
.proof-strip strong{color:#F0F2FF;font-weight:600;letter-spacing:.04em}
.proof-strip .ps-stats{color:#00D4FF;font-weight:500}
.proof-strip a{color:#00D4FF;text-decoration:none}
.proof-strip a:hover{text-decoration:underline}
@media(max-width:768px){.proof-strip{padding:24px 24px}}
/* ── Wave 2 additions (2026-07-21) ─────────────────────────── */
/* Language switcher + plain nav links: consistent with nav design */
a.n-lang, a.n-plain{color:#8a90ad!important;text-decoration:none!important;font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;transition:color .3s}
a.n-lang:hover, a.n-plain:hover{color:#F0F2FF!important}
/* Decree banner */
.decree-strip{max-width:1400px;margin:0 auto;padding:20px 56px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;border-top:1px solid rgba(255,69,0,.18);border-bottom:1px solid rgba(255,69,0,.18);background:rgba(255,69,0,.04)}
.decree-strip .ds-tag{font-size:9px;letter-spacing:.3em;text-transform:uppercase;color:#FF4500;font-weight:700;white-space:nowrap}
.decree-strip .ds-text{font-size:13px;color:var(--sub,#8890B0);font-weight:300}
.decree-strip .ds-text strong{color:#F0F2FF;font-weight:600}
.decree-strip .ds-link{font-size:12px;color:#00D4FF;text-decoration:none;font-weight:600;letter-spacing:.06em;white-space:nowrap}
.decree-strip .ds-link:hover{text-decoration:underline}
@media(max-width:768px){.decree-strip{padding:18px 24px}}
/* Sales note under acquisition cards */
.sales-note{max-width:1400px;margin:28px auto 0;padding:22px 28px;border-left:2px solid rgba(0,212,255,.35);background:rgba(0,212,255,.04);font-size:13.5px;line-height:1.7;color:var(--sub,#8890B0);font-weight:300}
/* Mobile timeline fix (a-propos/about): the page's own media query used
   flex-direction on a grid element, so the intended stacking never applied. */
@media(max-width:900px){
  .milestone{grid-template-columns:1fr!important}
  .milestone:nth-child(odd) .milestone-card,
  .milestone:nth-child(even) .milestone-card{grid-column:1!important}
  .milestone-card{min-width:0;width:auto!important}
}
/* Mobile: entrance animations pre-translate elements sideways (GSAP x offsets),
   widening the page before they play. Clip horizontal overflow on small screens. */
@media(max-width:900px){
  html,body{overflow-x:hidden}
  body{overflow-x:clip}
}
/* ── Design pass (2026-07-21): readability, symmetry, justified text ── */
/* 1/2. Hero readability: dark panel behind text that sits on photos */
.h-right{background:linear-gradient(180deg,rgba(6,6,13,0) 0%,rgba(6,6,13,.60) 16%,rgba(6,6,13,.60) 100%);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:26px;border:1px solid rgba(255,255,255,.05)}
.h-right .h-desc,.h-desc{color:#C9CEE4}
.h-stats{background:rgba(6,6,13,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.h-right-cta{background:rgba(6,6,13,.58);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:24px;border:1px solid rgba(255,255,255,.05)}
.h-right-cta p{color:#C9CEE4}
/* 3-6 + global: justified body text with language-aware hyphenation */
.h-desc,.fc-body,.tp-desc,.micro-text p,.mnt-body,.mc-desc,.phase-desc,.ps-body,.milestone-body,.rse-body,.award-desc,.art-content p,.founder-bio,.tc p,.case-body,.h-subtitle,.h-right-cta p,.bi-desc,.sales-note,.art-lead,.cs-desc,.mission-text p{
  text-align:justify;hyphens:auto;-webkit-hyphens:auto}
/* Symmetric cards: descriptions stretch, footer elements share the same baseline */
.tp-card{display:flex;flex-direction:column}
.tp-desc{flex:1 1 auto}
.tp-spec{margin-top:auto!important;padding-top:24px}
.phase-card{display:flex;flex-direction:column}
.phase-duration{margin-top:auto!important;padding-top:18px}
.mc{display:flex;flex-direction:column}
.award-badge{display:flex;flex-direction:column}
.award-year{margin-top:auto!important;padding-top:12px}
.fc{display:flex;flex-direction:column}
.fc-body{flex:1 1 auto}
/* 6. Annotated media must never be cropped mid-word */
.mnt-img-wrap{background:#0B0C18}
.mnt-img-wrap img{object-fit:contain!important}
/* 5. Real gallery zoom */
.gallery-main img{transition:transform .35s ease;will-change:transform}
/* ── Symmetry refinements (2026-07-21, round 2) ── */
/* 1. Gallery: 4 thumbnails share exactly the height of the main image (desktop) */
@media(min-width:1025px){
  .gallery-thumbs{height:100%}
  .gallery-thumb{flex:1 1 0;min-height:0}
  .gallery-thumb img{width:100%;height:100%;object-fit:cover}
}
/* 2. Use-case sector cards: download buttons pinned to the same bottom line */
.bento-card{display:flex;flex-direction:column}
.bc-pdf{margin-top:auto!important}
/* 3. Mission pillars: highlight stats share the same baseline */
.pillar{display:flex;flex-direction:column}
.pillar-stat{margin-top:auto!important;padding-top:18px}
/* 4. News grid: featured and secondary cards share the same height */
.articles-grid{align-items:stretch!important}
.article-card.secondary{display:flex;flex-direction:column}
.article-card.secondary .card-img{flex:1 1 auto;min-height:0}
.article-card.secondary .card-img img{width:100%;height:100%;object-fit:cover}
/* 5. Hero glass panel: more discreet (more translucent, softer border) */
.h-right{background:rgba(6,6,13,.34)!important;border-color:rgba(255,255,255,.03)!important}
.h-right-cta{background:rgba(6,6,13,.34)!important;border-color:rgba(255,255,255,.03)!important}
.h-stats{background:rgba(6,6,13,.42)!important}

/* ── SEO/A11y pass 2026-07-22 ───────────────────────── */
p.h1-kw{display:block!important;font-family:var(--B,inherit)!important;font-size:clamp(12px,1.2vw,16px)!important;line-height:1.5!important;letter-spacing:.32em!important;text-transform:uppercase!important;color:var(--cold,#00d4ff)!important;margin:14px 0 0!important;font-weight:600!important;opacity:.92!important;transform:none!important}
.marquee-item{color:#5d6180 !important}
.nav-cta, a.nav-cta{background:transparent!important;color:var(--cold,#00d4ff)!important;border:1px solid var(--cold,#00d4ff)!important}
.nav-cta:hover, a.nav-cta:hover{background:var(--cold,#00d4ff)!important;color:#04121f!important}
.n-lang{color:#8a90ad !important}
.awards-row:focus-visible{outline:2px solid var(--cold,#00d4ff);outline-offset:4px}

.marquee-item::before,.bi-num::before,.case-ghost::before,.bc-ghost::before{content:attr(data-t)}
