/*
Theme Name: KOSMOLAB SPACE
Theme URI: https://kosmolab.space
Author: KosmoLab Team
Description: Тема глобального агрегатора пусковых услуг KOSMOLAB SPACE. EN/RU. Built mobile-first.
Version: 0.4.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 8.0
License: GPL v2 or later
Text Domain: kosmolab-space
*/

/* ── Design Tokens ────────────────────────────── */
:root{
  --kls-bg:#080c14;--kls-bg-card:#0c121d;--kls-bg-card2:#0a0f18;
  --kls-border:rgba(127,170,200,.13);--kls-border-hi:rgba(127,170,200,.24);
  --kls-accent:#7fd4ff;--kls-accent2:#7fd4ff;--kls-accent-dim:rgba(127,212,255,.12);
  --kls-text:#e8eef6;--kls-text-muted:#8294a8;--kls-text-dim:#566173;
  --kls-success:#2fe592;--kls-warning:#f5a524;--kls-danger:#ef4444;
  --kls-radius-sm:3px;--kls-radius:4px;--kls-radius-lg:4px;
  --kls-shadow:0 4px 24px rgba(0,0,0,.5);--kls-shadow-hi:0 0 0 1px rgba(127,212,255,.25),0 10px 40px rgba(0,0,0,.55);
  --kls-transition:150ms ease;
  --kls-amber:#f5a524;--kls-green:#2fe592;--kls-mono:ui-monospace,"SF Mono","Roboto Mono",Menlo,Consolas,monospace;
  --kls-font:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",emoji;
}

/* ── Reset + Base ─────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-y:scroll}
body{font-family:var(--kls-font);background:var(--kls-bg);color:var(--kls-text);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--kls-accent);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%;height:auto;display:block}
button,select,input{font-family:inherit}
:focus-visible{outline:2px solid var(--kls-accent);outline-offset:2px}

/* ── Layout ───────────────────────────────────── */
.kls-container{max-width:1200px;margin:0 auto;padding:0 1rem}
@media(min-width:768px){.kls-container{padding:0 2rem}}
.kls-shell{max-width:1200px;margin:0 auto;padding:2rem 1rem}

/* ── Header ───────────────────────────────────── */
.kls-header{position:sticky;top:0;z-index:100;background:rgba(11,16,32,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--kls-border)}
.kls-header-inner{display:flex;align-items:center;justify-content:space-between;padding:.875rem 2rem;max-width:1200px;margin:0 auto}
.kls-logo{font-size:1.2rem;font-weight:800;color:#fff;letter-spacing:-.02em;text-decoration:none}
.kls-logo span{color:var(--kls-accent)}
.kls-logo:hover{text-decoration:none}
.kls-nav{display:flex;gap:1.5rem;align-items:center}
.kls-nav a{color:var(--kls-text-muted);font-size:.875rem;transition:color var(--kls-transition)}
.kls-nav a:hover{color:var(--kls-text);text-decoration:none}
.kls-nav-cta{background:var(--kls-accent);color:#080c14!important;font-weight:700;padding:.45rem 1.1rem;border-radius:var(--kls-radius-sm);transition:background var(--kls-transition),transform var(--kls-transition)}
.kls-nav-cta:hover{background:#8adbff;transform:translateY(-1px);text-decoration:none!important}
@media(max-width:640px){
  .kls-nav-cta{display:none}
  .kls-nav-login{display:none}
  /* KSD-251: !important forces the mobile hide to win over the line ~374 base rule
     (.kls-nav-signout{display:inline-flex}) which has equal specificity + later source order. */
  .kls-nav-signout{display:none !important}
  .kls-nav{gap:.75rem;position:relative}
  .kls-nav-links{display:none;position:fixed;top:56px;left:0;right:0;background:rgba(11,16,32,.97);border-bottom:1px solid var(--kls-border);padding:.75rem 1rem;flex-direction:column;gap:.15rem;z-index:9999}
  .kls-nav-links.open{display:flex}
  .kls-nav-links a{padding:.6rem 1rem;border-radius:var(--kls-radius-sm);color:var(--kls-text-muted);font-size:.9rem}
  .kls-hamburger{display:flex;flex-direction:column;gap:5px;cursor:pointer;padding:6px;background:none;border:none;color:var(--kls-text-muted)}
  .kls-hamburger span{width:20px;height:2px;background:currentColor;border-radius:2px;transition:all var(--kls-transition)}
  .kls-hamburger.open span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}
  .kls-hamburger.open span:nth-child(2){opacity:0}
  .kls-hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}
  .kls-header-inner{padding:.75rem 1rem}
}
@media(min-width:641px){
  .kls-hamburger{display:none}
  .kls-nav-links{display:flex!important;position:static;background:none;border:none;padding:0;flex-direction:row;gap:1.5rem}
}

/* ── Hero ─────────────────────────────────────── */
.kls-hero{position:relative;padding:5rem 1rem 4rem;text-align:center;background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(107,205,255,.12) 0%,transparent 70%),linear-gradient(180deg,#0d1428 0%,var(--kls-bg) 100%);overflow:hidden}
.kls-hero::before{content:'';position:absolute;inset:0;background-image:radial-gradient(rgba(107,205,255,.04) 1px,transparent 1px);background-size:32px 32px;pointer-events:none}
.kls-hero-eyebrow{display:inline-flex;align-items:center;gap:.5rem;background:var(--kls-accent-dim);border:1px solid rgba(107,205,255,.25);border-radius:999px;padding:.35rem 1rem;font-size:.8rem;font-weight:600;color:var(--kls-accent);letter-spacing:.04em;text-transform:uppercase;margin-bottom:1.5rem}
.kls-hero-eyebrow::before{content:'';width:6px;height:6px;background:var(--kls-success);border-radius:50%;animation:kls-pulse 2s infinite}
@keyframes kls-pulse{0%,100%{opacity:1}50%{opacity:.3}}
.kls-hero h1{font-size:clamp(2rem,5vw,3.75rem);font-weight:900;line-height:1.1;letter-spacing:-.03em;color:#fff;margin-bottom:1.25rem}
.kls-hero h1 span{color:var(--kls-accent)}
.kls-hero-sub{font-size:clamp(1rem,2vw,1.2rem);color:var(--kls-text-muted);max-width:640px;margin:0 auto 2.5rem;line-height:1.7}

/* ── Matchmaker ───────────────────────────────── */
.kls-matchmaker{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius-lg);padding:1.75rem;max-width:820px;margin:0 auto;box-shadow:var(--kls-shadow);text-align:left}
.kls-mm-title{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--kls-text-dim);margin-bottom:1rem}
.kls-mm-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.75rem}
@media(max-width:640px){.kls-mm-fields{grid-template-columns:1fr}}
.kls-mm-field label{display:block;font-size:.8rem;font-weight:600;color:var(--kls-text-muted);margin-bottom:.35rem}
.kls-mm-field input,.kls-mm-field select{width:100%;padding:.7rem .9rem;background:var(--kls-bg);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text);font-size:.9rem;transition:border-color var(--kls-transition),box-shadow var(--kls-transition);appearance:none;-webkit-appearance:none}
.kls-mm-field input:focus,.kls-mm-field select:focus{outline:none;border-color:var(--kls-accent2);box-shadow:0 0 0 3px rgba(75,150,255,.15)}
.kls-mm-field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center;padding-right:2.5rem}
.kls-mm-footer{display:flex;align-items:center;justify-content:space-between;margin-top:1rem;gap:1rem;flex-wrap:wrap}
.kls-mm-count{font-size:.875rem;color:var(--kls-text-muted);min-height:1.4em}
.kls-mm-count strong{color:var(--kls-accent)}
.kls-mm-btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--kls-accent);color:#080c14;font-weight:700;font-size:.9rem;padding:.7rem 1.75rem;border-radius:var(--kls-radius-sm);border:none;cursor:pointer;transition:background var(--kls-transition),transform var(--kls-transition)}
.kls-mm-btn:hover{background:#8adbff;transform:translateY(-1px)}
.kls-mm-examples{margin-top:.85rem;font-size:.78rem;color:var(--kls-text-dim);display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:center}
.kls-mm-example-tag{background:var(--kls-bg);border:1px solid var(--kls-border);border-radius:4px;padding:2px 8px;cursor:pointer;color:var(--kls-text-muted);transition:border-color var(--kls-transition),color var(--kls-transition);user-select:none;font-size:.78rem}
.kls-mm-example-tag:hover{border-color:var(--kls-accent);color:var(--kls-accent)}
.kls-mm-results{margin-top:1.25rem;display:none}
.kls-mm-results.visible{display:block}
.kls-mm-results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.85rem}
.kls-mm-result-card{background:var(--kls-bg);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);padding:.9rem;font-size:.85rem;transition:border-color var(--kls-transition);animation:kls-fadeup .3s ease both}
.kls-mm-result-card:hover{border-color:var(--kls-accent2)}
.kls-mm-empty{text-align:center;padding:2rem;color:var(--kls-text-dim);grid-column:1/-1}
.kls-mm-empty h3{font-size:1rem;color:var(--kls-text-muted);margin-bottom:.5rem}
.kls-mm-empty p{font-size:.85rem}

/* ── Sections ─────────────────────────────────── */
.kls-section{padding:4rem 0}
.kls-section-title{font-size:clamp(1.4rem,3vw,2rem);font-weight:800;color:#fff;letter-spacing:-.02em;margin-bottom:.5rem}
.kls-section-sub{color:var(--kls-text-muted);font-size:1rem;margin-bottom:2.5rem;max-width:560px}

/* ── How it works ─────────────────────────────── */
.kls-how{background:linear-gradient(180deg,transparent 0%,rgba(27,36,86,.3) 50%,transparent 100%)}
.kls-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem}
.kls-step{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);padding:1.75rem;transition:border-color var(--kls-transition),transform var(--kls-transition)}
.kls-step:hover{border-color:var(--kls-accent);transform:translateY(-2px)}
.kls-step-num{font-size:3rem;font-weight:900;color:var(--kls-accent-dim);line-height:1;margin-bottom:.75rem}
.kls-step-icon{width:44px;height:44px;background:var(--kls-accent-dim);border:1px solid rgba(107,205,255,.2);border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;font-size:1.3rem}
.kls-step h3{font-size:1rem;font-weight:700;color:#fff;margin-bottom:.4rem}
.kls-step p{font-size:.875rem;color:var(--kls-text-muted)}

/* ── Launch cards ─────────────────────────────── */
.kls-launches-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}
.kls-launches-filter{display:flex;gap:.5rem;flex-wrap:wrap}
.kls-filter-btn{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);padding:.35rem .85rem;font-size:.8rem;font-weight:600;color:var(--kls-text-muted);cursor:pointer;transition:all var(--kls-transition)}
.kls-filter-btn:hover,.kls-filter-btn.active{border-color:var(--kls-accent);color:var(--kls-accent);background:var(--kls-accent-dim)}
.kls-launches-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem}
.kls-launch-card{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);overflow:hidden;display:flex;flex-direction:column;transition:border-color var(--kls-transition),transform var(--kls-transition),box-shadow var(--kls-transition);animation:kls-fadeup .4s ease both}
.kls-launch-card:hover{border-color:var(--kls-accent);transform:translateY(-3px);box-shadow:var(--kls-shadow-hi)}
@keyframes kls-fadeup{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.kls-launch-card{animation:none}.kls-launch-card:hover{transform:none}}
.kls-launch-img{width:100%;height:140px;object-fit:cover;background:var(--kls-bg-card2)}
.kls-launch-img-placeholder{width:100%;height:140px;background:linear-gradient(135deg,var(--kls-bg-card2),var(--kls-border));display:flex;align-items:center;justify-content:center;font-size:2.5rem;opacity:.5}
.kls-launch-body{padding:1.1rem;flex:1;display:flex;flex-direction:column}
.kls-launch-meta{display:flex;align-items:center;gap:.4rem;margin-bottom:.6rem;flex-wrap:wrap}
.kls-badge{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:4px;text-transform:uppercase}
.kls-badge-orbit{background:rgba(107,205,255,.12);color:var(--kls-accent);border:1px solid rgba(107,205,255,.25)}
.kls-badge-status-go{background:rgba(34,197,94,.12);color:var(--kls-success);border:1px solid rgba(34,197,94,.25)}
.kls-badge-status-tbc{background:rgba(245,158,11,.12);color:var(--kls-warning);border:1px solid rgba(245,158,11,.25)}
.kls-badge-status-other{background:var(--kls-bg-card2);color:var(--kls-text-dim);border:1px solid var(--kls-border)}
.kls-badge-status-success{background:rgba(34,197,94,.12);color:var(--kls-success);border:1px solid rgba(34,197,94,.25)}
.kls-launch-rocket{font-size:.95rem;font-weight:700;color:#fff;margin-bottom:.2rem}
.kls-launch-mission{font-size:.82rem;color:var(--kls-text-muted);margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kls-launch-footer{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--kls-border);display:flex;align-items:center;justify-content:space-between;font-size:.8rem;color:var(--kls-text-dim)}
.kls-launch-lsp{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}

/* ── Skeleton ─────────────────────────────────── */
.kls-skeleton{background:linear-gradient(90deg,var(--kls-bg-card2) 25%,var(--kls-border) 50%,var(--kls-bg-card2) 75%);background-size:200% 100%;animation:kls-shimmer 1.5s infinite;border-radius:4px}
@keyframes kls-shimmer{to{background-position:-200% 0}}
.kls-skeleton-card{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);overflow:hidden}
.kls-skeleton-img{height:140px}
.kls-skeleton-body{padding:1.1rem}
.kls-skeleton-line{height:.75rem;margin-bottom:.5rem}

/* ── Providers ────────────────────────────────── */
.kls-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin:2rem 0}
.kls-providers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}
.kls-provider-card{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);padding:1.5rem 1rem;text-align:center;transition:border-color var(--kls-transition),transform var(--kls-transition);display:block;text-decoration:none!important;position:relative;overflow:hidden}
.kls-provider-card:hover{border-color:var(--kls-accent2);transform:translateY(-2px)}
.kls-provider-logo{width:64px;height:64px;border-radius:12px;background:var(--kls-bg);border:1px solid var(--kls-border);display:flex;align-items:center;justify-content:center;margin:0 auto .75rem;font-size:1.5rem;overflow:hidden}
.kls-provider-logo img{width:100%;height:100%;object-fit:contain}
.kls-provider-name{font-size:.85rem;font-weight:700;color:var(--kls-text)}
.kls-provider-type{font-size:.75rem;color:var(--kls-text-dim);margin-top:.2rem}
.kls-provider-hover{position:absolute;inset:0;background:rgba(11,16,32,.88);backdrop-filter:blur(4px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;opacity:0;transition:opacity var(--kls-transition);border-radius:var(--kls-radius);padding:.5rem}
.kls-provider-card:hover .kls-provider-hover,.kls-provider-card:focus-visible .kls-provider-hover{opacity:1}
.kls-provider-hover-name{font-size:.85rem;font-weight:700;color:#fff}
.kls-provider-hover-count{font-size:.78rem;color:var(--kls-accent)}
.kls-refresh-btn{background:none;border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text-muted);font-size:.8rem;padding:.3rem .7rem;cursor:pointer;transition:all var(--kls-transition);display:inline-flex;align-items:center;gap:.3rem;line-height:1}
.kls-refresh-btn:hover{border-color:var(--kls-accent);color:var(--kls-accent)}

/* ── Stats ────────────────────────────────────── */
.kls-stats-bg{background:linear-gradient(135deg,rgba(27,36,86,.4) 0%,rgba(11,16,32,0) 100%);border-top:1px solid var(--kls-border);border-bottom:1px solid var(--kls-border)}
.kls-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;text-align:center;padding:3rem 0}
.kls-stat-num{font-size:clamp(2rem,4vw,3rem);font-weight:900;color:var(--kls-accent);line-height:1.1;letter-spacing:-.04em}
.kls-stat-label{font-size:.875rem;color:var(--kls-text-muted);margin-top:.35rem}

/* ── CTA ──────────────────────────────────────── */
.kls-cta-section{background:linear-gradient(135deg,#0d1428 0%,#1a2456 100%);border-radius:var(--kls-radius-lg);padding:3.5rem 2rem;text-align:center;border:1px solid var(--kls-border);position:relative;overflow:hidden}
.kls-cta-section::before{content:'';position:absolute;top:-60px;right:-60px;width:280px;height:280px;background:radial-gradient(circle,rgba(107,205,255,.08) 0%,transparent 70%);pointer-events:none}
.kls-cta-section h2{font-size:clamp(1.4rem,3vw,2rem);font-weight:800;color:#fff;margin-bottom:.75rem}
.kls-cta-section p{color:var(--kls-text-muted);max-width:560px;margin:0 auto 2rem;font-size:1rem}
.kls-cta-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}

/* ── Buttons ──────────────────────────────────── */
.kls-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.2rem;border-radius:6px;border:1px solid var(--kls-border);background:var(--kls-bg-card);color:var(--kls-text);cursor:pointer;font-size:.9rem;font-family:inherit;transition:border-color .15s,background .15s}
.kls-btn:hover{border-color:var(--kls-accent);color:var(--kls-accent)}
.kls-btn:disabled{opacity:.5;cursor:not-allowed}
.kls-btn-primary{display:inline-flex;align-items:center;gap:.5rem;background:var(--kls-accent);color:#080c14;font-weight:700;font-size:.95rem;padding:.8rem 2rem;border-radius:var(--kls-radius-sm);border:none;cursor:pointer;text-decoration:none;transition:background var(--kls-transition),transform var(--kls-transition)}
.kls-btn-primary:hover{background:#8adbff;transform:translateY(-1px);text-decoration:none}
.kls-btn-secondary{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:1px solid rgba(107,205,255,.4);color:var(--kls-accent);font-weight:600;font-size:.95rem;padding:.8rem 2rem;border-radius:var(--kls-radius-sm);cursor:pointer;text-decoration:none;transition:all var(--kls-transition)}
.kls-btn-secondary:hover{background:var(--kls-accent-dim);text-decoration:none}
.kls-btn-outline{display:inline-flex;align-items:center;gap:.5rem;background:transparent;border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text-muted);font-size:.9rem;font-weight:600;padding:.65rem 1.5rem;cursor:pointer;transition:border-color var(--kls-transition),color var(--kls-transition)}
.kls-btn-outline:hover{border-color:var(--kls-accent);color:var(--kls-accent)}
.kls-load-more-wrap{text-align:center;margin-top:2rem}

/* ── Footer ───────────────────────────────────── */
.kls-footer{border-top:1px solid var(--kls-border);padding:3rem 0;margin-top:2rem}
.kls-footer-inner{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2rem}
@media(max-width:768px){.kls-footer-inner{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.kls-footer-inner{grid-template-columns:1fr}}
.kls-footer-logo{font-size:1.1rem;font-weight:800;color:#fff;margin-bottom:.75rem}
.kls-footer-logo span{color:var(--kls-accent)}
.kls-footer-desc{font-size:.85rem;color:var(--kls-text-dim);line-height:1.6}
.kls-footer-col h4{font-size:.8rem;font-weight:700;color:var(--kls-text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:1rem}
.kls-footer-col ul{list-style:none}
.kls-footer-col li{margin-bottom:.5rem}
.kls-footer-col a{font-size:.875rem;color:var(--kls-text-dim);transition:color var(--kls-transition)}
.kls-footer-col a:hover{color:var(--kls-text);text-decoration:none}
.kls-footer-bottom{border-top:1px solid var(--kls-border);padding-top:1.5rem;margin-top:2rem;display:flex;align-items:center;justify-content:space-between;font-size:.8rem;color:var(--kls-text-dim);flex-wrap:wrap;gap:.5rem}

/* ── Archive/Single: Status badges ───────────── */
.kls-status{display:inline-block;padding:2px 7px;border-radius:4px;font-weight:500;font-size:.78rem}
.kls-status-success{background:#064e3b;color:#6ee7b7}
.kls-status-failure{background:#7f1d1d;color:#fca5a5}
.kls-status-upcoming{background:#1e3a5f;color:#93c5fd}

/* ── Archive: Orbit filter chips ─────────────── */
.kls-orbit{display:inline-block;background:#1a2456;color:#7fd4ff;border:1px solid #243278;border-radius:4px;padding:2px 8px;font-size:.78rem;font-weight:600;letter-spacing:.03em}
.kls-orbit-filters{display:flex;flex-wrap:wrap;gap:.4rem;margin:.75rem 0 1.5rem}
.kls-orbit-filters a{display:inline-block;padding:.3rem .8rem;background:#0c121d;border:1px solid #1c3147;border-radius:20px;font-size:.82rem;text-decoration:none;color:#8294a8;transition:border-color .1s,color .1s}
.kls-orbit-filters a:hover,.kls-orbit-filters a.active{border-color:#7fd4ff;color:#7fd4ff;background:#0e1a3d}

/* ── Pagination ───────────────────────────────── */
.kls-pagination{margin:2rem 0;display:flex;flex-wrap:wrap;gap:.4rem}
.kls-pagination a,.kls-pagination span{padding:.35rem .75rem;background:#0c121d;border:1px solid #1c3147;border-radius:4px;text-decoration:none;font-size:.875rem;color:#8294a8;transition:border-color .1s,color .1s}
.kls-pagination a:hover{border-color:#7fd4ff;color:#7fd4ff}
.kls-pagination .current{border-color:#7fd4ff;color:#7fd4ff;background:#0e1a3d}

/* ── Single launch detail ─────────────────────── */
.kls-launch-detail{background:#0c121d;border:1px solid #1c3147;border-radius:10px;padding:2rem}
.kls-launch-dl{display:grid;grid-template-columns:max-content 1fr;gap:.6rem 1.5rem;margin:1.5rem 0 0;align-items:baseline}
.kls-launch-dl dt{color:#8294a8;font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.kls-launch-dl dd{margin:0;color:#e6e8ef}

/* ── Generic card ─────────────────────────────── */
.kls-card{background:#0c121d;border:1px solid #1c3147;border-radius:8px;padding:1.5rem;margin-bottom:1.25rem}
.kls-card h3{margin:0 0 .5rem}

/* ── Rocket label (archive cards) ───────────── */
.kls-rocket{font-size:1.05rem;font-weight:700;color:#fff;line-height:1.3}
.kls-date{color:#8294a8;font-size:.85rem;margin-top:auto}

/* ── Page content ─────────────────────────────── */
.kls-page-content h2{color:#7fd4ff;margin-top:2rem;margin-bottom:.5rem;font-size:1.2rem;border-bottom:1px solid #1c3147;padding-bottom:.3rem}
.kls-page-content table{width:100%;border-collapse:collapse;margin:1rem 0}
.kls-page-content th{background:#1c3147;color:#7fd4ff;padding:.5rem;text-align:left;font-size:.9rem}
.kls-page-content td{padding:.5rem;border-bottom:1px solid #1c3147;font-size:.9rem}
.kls-page-content ul{padding-left:1.5rem}
.kls-page-content li{margin:.4rem 0}
.kls-page-content a{color:#7fd4ff}
.kls-page-content code{background:#1c3147;padding:.1rem .3rem;border-radius:3px;font-size:.85em}

/* ── Responsive ───────────────────────────────── */
@media(max-width:600px){
  .kls-launches-grid{grid-template-columns:1fr}
  .kls-launch-dl{grid-template-columns:1fr;gap:.35rem}
  .kls-launch-dl dt{margin-top:.75rem}
  .kls-shell{padding:1.25rem .75rem}
}

/* ── Breadcrumb ───────────────────────────────── */
/* KSD-234 W25: unified horizontal breadcrumb across all templates */
.kls-breadcrumb{font-size:.85rem;color:#8294a8;margin-bottom:1.5rem}
.kls-breadcrumb ol,.kls-breadcrumb ul{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:0}
.kls-breadcrumb li{display:inline-flex;align-items:center;color:rgba(255,255,255,.5)}
.kls-breadcrumb li:not(:last-child)::after{content:"›";margin-left:.4rem;color:rgba(255,255,255,.3)}
.kls-breadcrumb li[aria-current="page"]{color:#e6e8ef}
.kls-breadcrumb a{color:#8294a8;text-decoration:none}
.kls-breadcrumb a:hover{color:#e5e7eb}

/* ════════════════════════════════════════════════
   KSD-86: Enhanced Card Designs
   Provider · Launch Window · Service Offer
   ════════════════════════════════════════════════ */

/* ── Enhanced Provider Cards (archive) ─────────── */
.kls-prov-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem;margin-top:1.5rem}
.kls-prov-card{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:border-color var(--kls-transition),transform var(--kls-transition),box-shadow var(--kls-transition);position:relative}
.kls-prov-card:hover{border-color:var(--kls-accent2);transform:translateY(-3px);box-shadow:0 8px 40px rgba(75,150,255,.15);text-decoration:none}
.kls-prov-card-head{height:6px;background:linear-gradient(90deg,var(--kls-accent2),var(--kls-accent))}
.kls-prov-card-body{padding:1.4rem;flex:1;display:flex;flex-direction:column;gap:.75rem}
.kls-prov-card-top{display:flex;gap:1rem;align-items:flex-start}
.kls-prov-card-logo{width:56px;height:56px;border-radius:10px;background:var(--kls-bg);border:1px solid var(--kls-border);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;font-size:1.4rem}
.kls-prov-card-logo img{width:100%;height:100%;object-fit:contain}
.kls-prov-card-id{flex:1;min-width:0}
.kls-prov-card-name{font-size:1.05rem;font-weight:800;color:#fff;line-height:1.2;margin-bottom:.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kls-prov-card-meta{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.kls-prov-card-desc{color:var(--kls-text-muted);font-size:.84rem;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kls-prov-card-stats{display:flex;gap:1.25rem;padding:.7rem 0;border-top:1px solid var(--kls-border);border-bottom:1px solid var(--kls-border)}
.kls-prov-stat{display:flex;flex-direction:column;gap:.15rem}
.kls-prov-stat-val{font-size:1.1rem;font-weight:800;color:var(--kls-accent);line-height:1}
.kls-prov-stat-lbl{font-size:.72rem;color:var(--kls-text-dim);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.kls-prov-card-foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:auto}
.kls-prov-card-link{display:inline-flex;align-items:center;gap:.3rem;font-size:.85rem;font-weight:700;color:var(--kls-accent2);text-decoration:none;transition:color var(--kls-transition)}
.kls-prov-card-link:hover{color:var(--kls-accent);text-decoration:none}
.kls-prov-card-web{font-size:.8rem;color:var(--kls-text-dim);text-decoration:none;transition:color var(--kls-transition)}
.kls-prov-card-web:hover{color:var(--kls-text-muted);text-decoration:none}
.kls-badge-verified{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:700;background:#064e3b;color:#6ee7b7;padding:.2rem .55rem;border-radius:999px;border:1px solid rgba(110,231,183,.2);letter-spacing:.03em}
.kls-badge-verified::before{content:'✓'}
.kls-stars{color:#f5a524;font-size:.88rem;letter-spacing:.04em;line-height:1}
.kls-stars-val{color:var(--kls-text-dim);font-size:.78rem;margin-left:.2rem}

/* ── Enhanced Launch Window Cards (archive) ─────── */
.kls-lw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;margin-top:1.5rem}
.kls-lw-card{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);overflow:hidden;display:flex;flex-direction:column;transition:border-color var(--kls-transition),transform var(--kls-transition),box-shadow var(--kls-transition);animation:kls-fadeup .35s ease both;text-decoration:none;color:inherit}
.kls-lw-card:hover{border-color:var(--kls-accent);transform:translateY(-3px);box-shadow:var(--kls-shadow-hi);text-decoration:none}
.kls-lw-thumb{position:relative;height:148px;overflow:hidden;background:linear-gradient(135deg,var(--kls-bg-card2) 0%,#0d1a3a 100%)}
.kls-lw-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.kls-lw-card:hover .kls-lw-thumb img{transform:scale(1.04)}
.kls-lw-thumb-icon{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:3rem;opacity:.3}
.kls-lw-thumb-overlay{position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(0deg,var(--kls-bg-card) 0%,transparent 100%)}
.kls-lw-thumb-badges{position:absolute;top:.6rem;left:.6rem;display:flex;gap:.3rem;flex-wrap:wrap}
.kls-lw-thumb-price{position:absolute;top:.6rem;right:.6rem;background:rgba(11,16,32,.85);border:1px solid var(--kls-accent2);border-radius:var(--kls-radius-sm);padding:.2rem .55rem;font-size:.78rem;font-weight:700;color:var(--kls-accent);backdrop-filter:blur(4px)}
.kls-lw-body{padding:1rem 1.1rem;flex:1;display:flex;flex-direction:column;gap:.5rem}
.kls-lw-title{font-size:.98rem;font-weight:800;color:#fff;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kls-lw-mission{font-size:.8rem;color:var(--kls-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kls-lw-facts{display:grid;grid-template-columns:1fr 1fr;gap:.35rem .75rem;margin:.1rem 0}
.kls-lw-fact{display:flex;align-items:center;gap:.3rem;font-size:.78rem;color:var(--kls-text-dim)}
.kls-lw-fact-icon{font-size:.9rem;flex-shrink:0}
.kls-lw-fact strong{color:var(--kls-text-muted);font-weight:500}
.kls-lw-foot{margin-top:auto;padding-top:.75rem;border-top:1px solid var(--kls-border);display:flex;align-items:center;justify-content:space-between}
.kls-lw-lsp{font-size:.78rem;color:var(--kls-text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}
.kls-lw-cta{font-size:.8rem;font-weight:700;color:var(--kls-accent2);text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;gap:.2rem}
.kls-lw-cta:hover{color:var(--kls-accent);text-decoration:none}

/* ── Enhanced Service Offer Cards ──────────────── */
.kls-svc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.1rem}
.kls-svc-card{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);overflow:hidden;display:flex;flex-direction:column;transition:border-color var(--kls-transition),transform var(--kls-transition),box-shadow var(--kls-transition)}
.kls-svc-card:hover{border-color:var(--kls-accent2);transform:translateY(-2px);box-shadow:0 6px 24px rgba(75,150,255,.12)}
.kls-svc-card-accent{height:3px;background:linear-gradient(90deg,var(--kls-accent2),var(--kls-accent))}
.kls-svc-card-body{padding:1.1rem 1.15rem;flex:1;display:flex;flex-direction:column;gap:.6rem}
.kls-svc-card-type{display:inline-flex;align-items:center;gap:.3rem;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--kls-text-dim)}
.kls-svc-card-name{font-size:.97rem;font-weight:800;color:#fff;line-height:1.25}
.kls-svc-card-desc{font-size:.8rem;color:var(--kls-text-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1}
.kls-svc-specs{display:grid;grid-template-columns:1fr 1fr;gap:.3rem .75rem;padding:.6rem 0;border-top:1px solid var(--kls-border)}
.kls-svc-spec{display:flex;flex-direction:column;gap:.05rem}
.kls-svc-spec-lbl{font-size:.68rem;color:var(--kls-text-dim);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.kls-svc-spec-val{font-size:.85rem;color:var(--kls-text);font-weight:600}
.kls-svc-card-price{display:flex;align-items:baseline;gap:.3rem}
.kls-svc-price-val{font-size:1.1rem;font-weight:900;color:var(--kls-accent)}
.kls-svc-price-lbl{font-size:.75rem;color:var(--kls-text-dim)}
.kls-svc-card-foot{padding:.75rem 1.15rem;border-top:1px solid var(--kls-border);background:rgba(255,255,255,.015)}
.kls-svc-cta{display:inline-flex;align-items:center;gap:.35rem;font-size:.82rem;font-weight:700;color:var(--kls-accent2);cursor:pointer;background:none;border:none;padding:0;font-family:inherit;transition:color var(--kls-transition);text-decoration:none}
.kls-svc-cta:hover{color:var(--kls-accent);text-decoration:none}

/* ── Enhanced Slot Rows (single-provider) ───────── */
.kls-slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-top:.5rem}
.kls-slot-card{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.5rem;transition:border-color var(--kls-transition)}
.kls-slot-card:hover{border-color:var(--kls-border-hi)}
.kls-slot-card.is-available{border-left:3px solid var(--kls-success)}
.kls-slot-card.is-claimed{opacity:.7}
.kls-slot-rocket{font-size:.92rem;font-weight:700;color:#fff}
.kls-slot-rocket a{color:inherit;text-decoration:none}
.kls-slot-rocket a:hover{color:var(--kls-accent2)}
.kls-slot-meta-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.kls-slot-facts{display:grid;grid-template-columns:1fr 1fr;gap:.25rem .75rem}
.kls-slot-fact-lbl{font-size:.7rem;color:var(--kls-text-dim);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.kls-slot-fact-val{font-size:.84rem;color:var(--kls-text-muted);font-weight:500}
.kls-slot-price-pill{display:inline-flex;align-items:center;gap:.25rem;background:rgba(107,205,255,.08);border:1px solid rgba(107,205,255,.2);border-radius:var(--kls-radius-sm);padding:.2rem .6rem;font-size:.8rem;font-weight:700;color:var(--kls-accent)}
.kls-slot-status-pill{display:inline-flex;align-items:center;gap:.2rem;font-size:.72rem;font-weight:700;padding:.2rem .5rem;border-radius:999px;letter-spacing:.03em}
.kls-slot-status-pill.available{background:rgba(34,197,94,.1);color:var(--kls-success);border:1px solid rgba(34,197,94,.2)}
.kls-slot-status-pill.claimed{background:rgba(255,255,255,.04);color:var(--kls-text-dim);border:1px solid var(--kls-border)}

/* ── Misc enhancements ─────────────────────────── */
.kls-section-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:2rem 0 1rem;padding-bottom:.6rem;border-bottom:1px solid var(--kls-border)}
.kls-section-heading h2{font-size:1.1rem;font-weight:700;color:#fff;margin:0}
.kls-section-heading-count{font-size:.8rem;color:var(--kls-text-dim);font-weight:400}

/* ── KSD-85: Login / Dashboard header buttons ───── */
.kls-nav-login{font-size:.8rem;font-weight:600;color:var(--kls-text-muted)!important;border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);padding:.38rem .85rem;transition:color var(--kls-transition),border-color var(--kls-transition);white-space:nowrap;text-decoration:none}
.kls-nav-login:hover{color:var(--kls-text)!important;border-color:var(--kls-border-hi);text-decoration:none!important}
/* KSD-332: bordered sign-out box — matches the homepage header + the adjacent
   "My Cabinet" button (header was inconsistent between front-page and the rest). */
.kls-nav-signout{display:inline-flex;align-items:center;color:var(--kls-text-dim);padding:.38rem .6rem;border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);transition:color var(--kls-transition),border-color var(--kls-transition);text-decoration:none}
.kls-nav-signout:hover{color:var(--kls-text-muted);border-color:var(--kls-border-hi);text-decoration:none}
/* KSD-332: active nav highlight — current section (Launches / Marketplace / Companies / My Cabinet). */
.kls-nav-links a.is-active,.kls-nav-links a[aria-current="page"]{color:var(--kls-accent)!important;font-weight:700}
.kls-nav-login.is-active,.kls-nav-login[aria-current="page"]{color:var(--kls-text)!important;border-color:var(--kls-accent)!important;background:rgba(107,205,255,.10)}


/* KSD-98: Mobile nav login + CTA fix */
.kls-nav-login {
  color: var(--kls-text-muted);
  font-size: .875rem;
  transition: color var(--kls-transition);
  font-weight: 500;
}
.kls-nav-login:hover { color: var(--kls-text); text-decoration: none; }
@media (min-width: 641px) {
  .kls-nav-login--mobile { display: none !important; }
  .kls-nav-cta--mobile { display: none !important; }
}
@media (max-width: 640px) {
  .kls-nav-login--desktop { display: none !important; }
  .kls-nav-cta:not(.kls-nav-cta--mobile) { display: none !important; }
  /* restore --mobile variants that were hidden by the global display:none */
  .kls-nav-login--mobile { display: block !important; }
  .kls-nav-cta--mobile { display: block !important; }
}
/* ================================================================
   KSD-138: Reviews block — provider page & catalog
   ================================================================ */

/* SVG stars */
.kls-svg-stars{display:inline-flex;align-items:center;gap:2px;color:#f5a524;line-height:1}
.kls-svg-stars--lg{gap:4px}
.kls-svg-star{width:14px;height:14px;flex-shrink:0}
.kls-svg-stars--lg .kls-svg-star{width:22px;height:22px}
.kls-svg-star--empty{color:#374151}

/* ---- Reviews section wrapper ---- */
#kls-reviews-section{margin-top:3rem;border-top:1px solid var(--kls-border);padding-top:2rem}
.kls-reviews-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}
.kls-reviews-header h2{font-size:1.25rem;font-weight:700;margin:0;color:var(--kls-text)}

/* Rating summary */
.kls-rating-summary{display:flex;align-items:center;gap:1.25rem;padding:1.25rem 1.5rem;background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);margin-bottom:1.5rem;flex-wrap:wrap}
.kls-rating-big{display:flex;align-items:center;gap:.75rem}
.kls-rating-big-num{font-size:2.5rem;font-weight:900;color:var(--kls-accent);line-height:1}
.kls-rating-big-stars{display:flex;flex-direction:column;gap:.25rem}
.kls-rating-big-count{font-size:.8rem;color:var(--kls-text-dim)}

/* Write Review button */
#kls-write-review-btn{background:transparent;border:1px solid rgba(107,205,255,.4);color:var(--kls-accent);font-weight:600;font-size:.9rem;padding:.6rem 1.25rem;border-radius:var(--kls-radius-sm);cursor:pointer;transition:background var(--kls-transition),border-color var(--kls-transition)}
#kls-write-review-btn:hover{background:var(--kls-accent-dim);border-color:var(--kls-accent)}

/* Info message */
#kls-review-message{display:none;padding:.85rem 1rem;background:rgba(107,205,255,.08);border:1px solid rgba(107,205,255,.2);border-radius:var(--kls-radius-sm);color:var(--kls-text-muted);font-size:.9rem;margin-bottom:1rem}

/* Review rows */
#kls-reviews-list{display:flex;flex-direction:column;gap:1rem}
.kls-review-row{display:flex;gap:1rem;padding:1rem 1.25rem;background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);animation:kls-fadeup .3s ease both}
.kls-review-avatar{width:38px;height:38px;min-width:38px;border-radius:50%;background:var(--kls-accent-dim);border:1px solid rgba(107,205,255,.25);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:var(--kls-accent);text-transform:uppercase;line-height:1}
.kls-review-body{flex:1;min-width:0}
.kls-review-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem .75rem;margin-bottom:.35rem}
/* KSD-234 wake3: reviewer name + company stacked together */
.kls-review-author-block{display:inline-flex;flex-direction:column;line-height:1.2;gap:.1rem}
.kls-review-author{font-weight:600;color:var(--kls-text);font-size:.9rem}
.kls-review-company{font-size:.76rem;color:var(--kls-text-dim);font-weight:500;letter-spacing:.01em}
.kls-review-own-tag{font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:3px;background:rgba(107,205,255,.12);border:1px solid rgba(107,205,255,.2);color:var(--kls-accent)}
.kls-review-date{font-size:.78rem;color:var(--kls-text-dim);margin-left:auto}
.kls-review-stars{margin-bottom:.4rem}
.kls-review-text{font-size:.88rem;color:var(--kls-text-muted);line-height:1.6;margin:0 0 .5rem;white-space:pre-wrap;word-break:break-word}
.kls-review-actions{margin-top:.25rem}
.kls-review-edit-btn{font-size:.78rem;padding:.3rem .7rem;background:transparent;border:1px solid var(--kls-border);color:var(--kls-text-muted);border-radius:4px;cursor:pointer;transition:border-color .15s,color .15s}
.kls-review-edit-btn:hover{border-color:var(--kls-accent);color:var(--kls-accent)}
.kls-review-empty{color:var(--kls-text-dim);font-size:.9rem;text-align:center;padding:2rem 0;margin:0}

/* Load More */
#kls-load-more-reviews{display:none;width:100%;margin-top:1rem;padding:.75rem;background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text-muted);font-size:.88rem;cursor:pointer;transition:border-color var(--kls-transition),color var(--kls-transition)}
#kls-load-more-reviews:hover:not(:disabled){border-color:var(--kls-accent2);color:var(--kls-text)}
#kls-load-more-reviews:disabled{opacity:.5;cursor:default}

/* ---- Review form ---- */
#kls-review-form-wrap{display:none;margin-top:1.5rem;padding:1.5rem;background:var(--kls-bg-card);border:1px solid var(--kls-border-hi);border-radius:var(--kls-radius)}
.kls-review-form-title{font-size:1.05rem;font-weight:700;margin:0 0 1.25rem;color:var(--kls-text)}
.kls-form-stars-row{display:flex;align-items:center;gap:.5rem;margin-bottom:1.25rem}
.kls-form-stars-row label{font-size:.85rem;color:var(--kls-text-muted);font-weight:600;margin-right:.25rem}
.kls-form-star{cursor:pointer;width:28px;height:28px;color:#374151;transition:color .1s;display:inline-flex;align-items:center;justify-content:center}
.kls-form-star svg{width:24px;height:24px}
.kls-form-star.active,.kls-form-star.hover{color:#f5a524}
.kls-form-field{margin-bottom:1rem}
.kls-form-field label{display:block;font-size:.82rem;font-weight:600;color:var(--kls-text-muted);margin-bottom:.35rem}
.kls-form-field textarea{width:100%;padding:.75rem .9rem;background:var(--kls-bg);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text);font-size:.9rem;font-family:inherit;line-height:1.55;resize:vertical;min-height:100px;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}
.kls-form-field textarea:focus{outline:none;border-color:var(--kls-accent2);box-shadow:0 0 0 3px rgba(75,150,255,.12)}
.kls-form-error{font-size:.82rem;color:var(--kls-danger);margin-top:.5rem;min-height:1.2em}
.kls-form-actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}
.kls-form-submit{background:var(--kls-accent);color:#080c14;font-weight:700;font-size:.9rem;padding:.65rem 1.5rem;border:none;border-radius:var(--kls-radius-sm);cursor:pointer;transition:background var(--kls-transition)}
.kls-form-submit:hover:not(:disabled){background:#8adbff}
.kls-form-submit:disabled{opacity:.55;cursor:default}
.kls-form-cancel{background:transparent;border:1px solid var(--kls-border);color:var(--kls-text-muted);font-size:.88rem;padding:.6rem 1.1rem;border-radius:var(--kls-radius-sm);cursor:pointer;transition:border-color .15s,color .15s}
.kls-form-cancel:hover{border-color:var(--kls-text-muted);color:var(--kls-text)}
.kls-char-counter{font-size:.75rem;color:var(--kls-text-dim);margin-top:.3rem;text-align:right}

/* ---- Catalog card inline rating ---- */
.kls-prov-card-rating-inline{display:flex;align-items:center;gap:.35rem;margin-top:.25rem;flex-wrap:wrap}
.kls-review-count-label{font-size:.75rem;color:var(--kls-text-dim)}

/* ─── KSD-193: Unified provider card (.kls-pc) ───────────────────────────── */
.kls-pc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
@media(max-width:900px){.kls-pc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.kls-pc-grid{grid-template-columns:1fr}}
.kls-pc{background:var(--kls-bg-card);border:1px solid rgba(255,255,255,.06);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;transition:border-color 200ms ease,transform 200ms ease,box-shadow 200ms ease}
.kls-pc:hover{border-color:rgba(75,150,255,.3);transform:translateY(-2px);box-shadow:0 6px 24px rgba(75,150,255,.1)}
.kls-pc-body{padding:1.25rem 1.35rem;flex:1;display:flex;flex-direction:column;gap:.7rem}
.kls-pc-top{display:flex;gap:.9rem;align-items:flex-start}
.kls-pc-logo{width:48px;height:48px;border-radius:10px;border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.kls-pc-logo img{width:100%;height:100%;object-fit:contain}
.kls-pc-initials{font-size:.9rem;font-weight:800;color:#fff;letter-spacing:-.01em}
.kls-pc-id{flex:1;min-width:0}
.kls-pc-name{font-size:1rem;font-weight:700;color:#fff;line-height:1.25;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kls-pc-name a{color:inherit;text-decoration:none}
.kls-pc-name a:hover{color:var(--kls-accent);text-decoration:none}
.kls-pc-meta{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}
.kls-pc-rating{display:flex;align-items:center;gap:.35rem;font-size:.82rem}
.kls-pc-rating-val{font-weight:700;color:#fff}
.kls-pc-rating-count{color:var(--kls-text-dim)}
.kls-pc-new-badge{font-size:.68rem;font-weight:700;padding:.18rem .55rem;border-radius:4px;background:rgba(245,158,11,.1);color:#f5a524;border:1px solid rgba(245,158,11,.2);text-transform:uppercase;letter-spacing:.05em}
.kls-pc-desc{color:var(--kls-text-muted);font-size:.83rem;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kls-pc-tags{display:flex;flex-wrap:wrap;gap:.35rem}
.kls-pc-tag{font-size:.68rem;font-weight:600;padding:.18rem .5rem;border-radius:4px;background:rgba(255,255,255,.05);color:var(--kls-text-muted);border:1px solid rgba(255,255,255,.08);text-transform:uppercase;letter-spacing:.04em}
.kls-pc-metrics{display:flex;gap:1.5rem;padding:.6rem 0;border-top:1px solid rgba(255,255,255,.06)}
.kls-pc-metric{display:flex;flex-direction:column;gap:.1rem}
.kls-pc-metric-val{font-size:1.1rem;font-weight:800;color:var(--kls-accent);line-height:1}
.kls-pc-metric-lbl{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--kls-text-dim)}
.kls-pc-foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:auto}
.kls-btn-view{display:inline-flex;align-items:center;gap:.25rem;font-size:.82rem;font-weight:700;color:var(--kls-accent2);text-decoration:none;transition:color 180ms}
.kls-btn-view:hover{color:var(--kls-accent);text-decoration:none}
.kls-pc-web{font-size:.78rem;color:var(--kls-text-dim);text-decoration:none;transition:color 180ms}
.kls-pc-web:hover{color:var(--kls-text-muted);text-decoration:none}

/* ── KSD-234 wake47: mobile auth chip (avatar / login icon) ──────────────────
   Replaces the tiny KSD-230 v6 text-link approach. The avatar chip is the
   primary mobile auth indicator (visible without opening hamburger). Full
   "My Cabinet" + "Sign out" items also live inside the hamburger menu now. */
.kls-nav-avatar{
  display:none; /* desktop hides it; --desktop "My Cabinet" text link is used instead */
  align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;
  background:linear-gradient(135deg,var(--kls-accent,#7eb6ff) 0%,var(--kls-accent2,#7fd4ff) 100%);
  color:#080c14;font-weight:800;font-size:.85rem;line-height:1;
  text-decoration:none;position:relative;
  border:1.5px solid rgba(255,255,255,.18);
  box-shadow:0 2px 8px rgba(75,150,255,.28);
  transition:transform .15s,box-shadow .15s,filter .15s;
  flex-shrink:0;
}
.kls-nav-avatar:hover{transform:translateY(-1px);filter:brightness(1.08);text-decoration:none;color:#080c14;box-shadow:0 4px 12px rgba(75,150,255,.42)}
.kls-nav-avatar .kls-nav-avatar-initial{display:block}
.kls-nav-avatar .kls-nav-avatar-dot{
  position:absolute;bottom:-1px;right:-1px;
  width:10px;height:10px;border-radius:50%;
  background:var(--kls-success,#2fe592);
  border:2px solid rgba(11,16,32,.95);
}
/* Login variant: outline style with arrow icon (unauthenticated) */
.kls-nav-avatar--login{
  background:transparent;color:var(--kls-accent,#7eb6ff);
  border-color:rgba(126,182,255,.45);box-shadow:none;
}
.kls-nav-avatar--login:hover{color:var(--kls-accent,#7eb6ff);background:rgba(126,182,255,.08);box-shadow:none}
.kls-nav-avatar--login .kls-nav-avatar-dot{display:none}

@media (max-width: 640px) {
  /* Show the avatar chip on mobile (primary auth indicator) */
  .kls-nav-avatar{display:inline-flex}
  /* The narrow text "My Cabinet" / signout outside the menu are redundant on
     mobile (avatar chip + hamburger-menu items cover both surfaces). Hide
     anything except --mobile (inside dropdown) and --desktop (handled by base
     rule for those modifiers). */
  .kls-nav-login:not(.kls-nav-login--mobile):not(.kls-nav-login--desktop){display:none !important}
  /* Tighten gap so chip + burger fit comfortably */
  .kls-nav{gap:.5rem}
}

/* ── KSD-234 wake4 — standalone product/rocket detail pages ─────────────── */
.kls-prod-single,.kls-rocket-single{padding:1.25rem 0 3rem}
.kls-prod-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:2rem;align-items:start}
@media(max-width:900px){.kls-prod-grid{grid-template-columns:1fr}}
.kls-prod-head{margin-bottom:1rem}
.kls-prod-eyebrow{display:block;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--kls-accent,#7fd4ff);font-weight:700;margin-bottom:.4rem}
.kls-prod-eyebrow span+span{opacity:.7}
.kls-prod-title{font-size:clamp(1.6rem,3.2vw,2.4rem);font-weight:800;line-height:1.15;margin:0 0 .55rem}
.kls-prod-prov{display:inline-flex;align-items:center;gap:.55rem;color:rgba(255,255,255,.85);text-decoration:none;font-size:.95rem;padding:.32rem .65rem .32rem .35rem;border:1px solid rgba(255,255,255,.1);border-radius:999px;background:rgba(255,255,255,.04);transition:background .15s,border-color .15s}
.kls-prod-prov:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);text-decoration:none}
.kls-prod-prov img{border-radius:50%;background:#fff;object-fit:cover}
.kls-prod-hero{margin:1.25rem 0;border-radius:14px;overflow:hidden;background:linear-gradient(180deg,#0b1220,#0e1726);border:1px solid rgba(255,255,255,.06);aspect-ratio:16/9}
.kls-prod-hero img{width:100%;height:100%;object-fit:contain;display:block;padding:1rem}
.kls-prod-gallery{list-style:none;padding:0;margin:0 0 1.5rem;display:flex;gap:.5rem;flex-wrap:wrap}
.kls-prod-gallery-thumb{width:78px;height:60px;padding:0;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.03);border-radius:8px;overflow:hidden;cursor:pointer;transition:transform .12s,border-color .15s}
.kls-prod-gallery-thumb:hover{border-color:var(--kls-accent,#7fd4ff);transform:translateY(-1px)}
.kls-prod-gallery-thumb.is-active{border-color:var(--kls-accent,#7fd4ff);box-shadow:0 0 0 2px rgba(75,150,255,.25)}
.kls-prod-gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.kls-prod-lead{font-size:1.05rem;line-height:1.55;color:rgba(255,255,255,.85);margin:0 0 1.5rem}
.kls-prod-section{margin:2rem 0;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.06)}
.kls-prod-section:first-of-type{border-top:none;padding-top:0;margin-top:1.5rem}
.kls-prod-h2{font-size:1.25rem;font-weight:700;margin:0 0 1rem;color:#fff}
.kls-prod-specs{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem;margin:0;padding:0;align-items:start}
.kls-prod-spec{display:flex;flex-direction:column;gap:.18rem;padding:.7rem .9rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:10px;text-align:left}
.kls-prod-spec dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:rgba(255,255,255,.5);margin:0}
.kls-prod-spec dd{margin:0;font-size:1rem;color:#fff;font-weight:600}
.kls-prod-prose{color:rgba(255,255,255,.85);line-height:1.65;font-size:1rem}
.kls-prod-prose p{margin:0 0 1rem}
.kls-prod-pdfs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.kls-prod-pdf{display:inline-flex;align-items:center;gap:.6rem;padding:.65rem .9rem;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:10px;text-decoration:none;color:#fff;transition:background .15s,border-color .15s}
.kls-prod-pdf:hover{background:rgba(255,255,255,.07);border-color:var(--kls-accent,#7fd4ff);text-decoration:none}
.kls-prod-pdf-icon{font-size:1.1rem;flex-shrink:0}
.kls-prod-pdf-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kls-prod-pdf-size{font-size:.8rem;color:rgba(255,255,255,.55)}
.kls-prod-source{margin:1.5rem 0 0;font-size:.85rem;color:rgba(255,255,255,.55)}
.kls-prod-source a{color:rgba(255,255,255,.7)}
.kls-prod-source a:hover{color:var(--kls-accent,#7fd4ff)}
.kls-prod-aside{position:sticky;top:90px}
@media(max-width:900px){.kls-prod-aside{position:static}}
.kls-prod-cta{background:linear-gradient(180deg,rgba(75,150,255,.08),rgba(75,150,255,.02));border:1px solid rgba(75,150,255,.22);border-radius:14px;padding:1.4rem 1.25rem}
.kls-prod-cta-head{margin-bottom:1rem}
.kls-prod-cta-eyebrow{display:block;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--kls-accent,#7fd4ff);font-weight:700;margin-bottom:.3rem}
.kls-prod-cta-title{font-size:1.05rem;font-weight:700;margin:0;line-height:1.3;color:#fff}
.kls-prod-cta-btn{display:flex;align-items:center;justify-content:center;width:100%;padding:.9rem 1rem;border:0;border-radius:10px;background:linear-gradient(135deg,#7fd4ff,#3b82f6);color:#fff;font-size:1rem;font-weight:700;cursor:pointer;text-decoration:none;transition:transform .12s,box-shadow .15s;letter-spacing:.01em}
.kls-prod-cta-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px -4px rgba(75,150,255,.5);text-decoration:none;color:#fff}
.kls-prod-cta-btn-disabled{background:rgba(255,255,255,.05);color:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.08)}/* KSD-252 w46: dropped cursor:not-allowed — label + tooltip already convey gated state */
.kls-prod-cta-btn-disabled:hover{transform:none;box-shadow:none}
.kls-prod-cta-price{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;margin:.9rem 0 .2rem}
.kls-prod-cta-price-val .kls-mp-price,.kls-prod-cta-price-val{font-size:1.4rem;font-weight:800;color:#fff;letter-spacing:.01em}
.kls-prod-cta-price-req{font-size:.95rem;font-weight:600;color:rgba(255,255,255,.7)}
.kls-prod-cta-avail{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.2rem .55rem;border-radius:999px;border:1px solid transparent}
.kls-prod-cta-avail.is-ok{color:#7ee2b8;background:rgba(46,160,110,.14);border-color:rgba(46,160,110,.4)}
.kls-prod-cta-avail.is-mto{color:#ffd27a;background:rgba(200,150,40,.14);border-color:rgba(200,150,40,.4)}
.kls-prod-cta-avail.is-no{color:#ff9c9c;background:rgba(200,60,60,.14);border-color:rgba(200,60,60,.4)}
.kls-prod-cta-fav{margin-top:.75rem;display:flex;align-items:center;gap:.55rem;color:rgba(255,255,255,.7);font-size:.85rem}
.kls-prod-cta-meta{list-style:none;padding:1rem 0 0;margin:1rem 0 0;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:.45rem}
.kls-prod-cta-meta li{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.85rem}
.kls-prod-cta-meta li span{color:rgba(255,255,255,.5);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}
.kls-prod-cta-meta li strong,.kls-prod-cta-meta li a{color:#fff;font-weight:600;text-align:right}
.kls-prod-cta-meta li a{text-decoration:none}
.kls-prod-cta-meta li a:hover{color:var(--kls-accent,#7fd4ff);text-decoration:underline}
.kls-prod-related{margin:3rem 0 0;padding-top:2rem;border-top:1px solid rgba(255,255,255,.06)}
.kls-prod-related-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
.kls-prod-related-card{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:12px;overflow:hidden;transition:transform .15s,border-color .15s}
.kls-prod-related-card:hover{transform:translateY(-2px);border-color:rgba(75,150,255,.3)}
.kls-prod-related-card a{display:flex;flex-direction:column;text-decoration:none;color:inherit;height:100%}
.kls-prod-related-card img{width:100%;aspect-ratio:4/3;object-fit:cover;background:#0e1726;display:block}
.kls-prod-related-ph{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:4/3;background:#0e1726 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 150'><defs><radialGradient id='g' cx='50%25' cy='40%25' r='60%25'><stop offset='0%25' stop-color='%231a2540'/><stop offset='100%25' stop-color='%230e1726'/></radialGradient></defs><rect width='200' height='150' fill='url(%23g)'/><circle cx='30' cy='25' r='.8' fill='%23fff' opacity='.6'/><circle cx='170' cy='35' r='.6' fill='%23fff' opacity='.5'/><circle cx='55' cy='110' r='.7' fill='%23fff' opacity='.5'/><circle cx='160' cy='115' r='.5' fill='%23fff' opacity='.4'/><circle cx='100' cy='20' r='.4' fill='%23fff' opacity='.4'/><ellipse cx='100' cy='75' rx='80' ry='18' fill='none' stroke='%234b96ff' stroke-width='.6' stroke-dasharray='3 3' opacity='.35'/><rect x='80' y='62' width='40' height='26' rx='3' fill='%23253657' stroke='%234b96ff' stroke-width='1'/><rect x='86' y='68' width='28' height='3' fill='%234b96ff' opacity='.7'/><rect x='86' y='74' width='20' height='2' fill='%234b96ff' opacity='.5'/><rect x='50' y='68' width='28' height='14' fill='%231a3a6b' stroke='%234b96ff' stroke-width='.6'/><rect x='122' y='68' width='28' height='14' fill='%231a3a6b' stroke='%234b96ff' stroke-width='.6'/><line x1='56' y1='68' x2='56' y2='82' stroke='%234b96ff' stroke-width='.4' opacity='.6'/><line x1='64' y1='68' x2='64' y2='82' stroke='%234b96ff' stroke-width='.4' opacity='.6'/><line x1='72' y1='68' x2='72' y2='82' stroke='%234b96ff' stroke-width='.4' opacity='.6'/><line x1='128' y1='68' x2='128' y2='82' stroke='%234b96ff' stroke-width='.4' opacity='.6'/><line x1='136' y1='68' x2='136' y2='82' stroke='%234b96ff' stroke-width='.4' opacity='.6'/><line x1='144' y1='68' x2='144' y2='82' stroke='%234b96ff' stroke-width='.4' opacity='.6'/></svg>") center/cover no-repeat;font-size:0}
.kls-prod-related-title{display:block;padding:.7rem .85rem .25rem;font-weight:700;font-size:.95rem;color:#fff}
.kls-prod-related-exc{display:block;padding:0 .85rem .85rem;font-size:.8rem;color:rgba(255,255,255,.55);line-height:1.4}
/* KSD-252 wake43 — mobile fixes for product detail per Boris audit */
@media(max-width:560px){
.kls-prod-single,.kls-rocket-single{padding:.5rem 0 2rem}
.kls-prod-hero img{padding:.35rem}
.kls-prod-specs{grid-template-columns:1fr;gap:.45rem}
.kls-prod-spec{padding:.55rem .7rem}
.kls-prod-spec dd{font-size:.95rem;word-break:break-word}
.kls-prod-related-grid{grid-template-columns:repeat(2,1fr);gap:.6rem}
.kls-prod-related-title{font-size:.85rem;padding:.55rem .65rem .2rem}
.kls-prod-related-exc{font-size:.72rem;padding:0 .65rem .65rem}
.kls-prod-cta{padding:1.1rem 1rem}
}
/* ── KSD-284 — deeper mobile polish for product detail (Boris audit 2026-06-13) */
@media(max-width:720px){
  /* Tighter overall rhythm: sections were 2rem + 1.5rem padding-top — too much on phones */
  .kls-prod-section{margin:1.5rem 0;padding-top:1.1rem}
  .kls-prod-section:first-of-type{margin-top:1.25rem}
  .kls-prod-h2{font-size:1.1rem;margin:0 0 .75rem}.kls-prod-specs{display:block;gap:0;border:1px solid rgba(255,255,255,.09);border-radius:12px;overflow:hidden;background:rgba(255,255,255,.02)}.kls-prod-specs .kls-prod-spec{display:flex;flex-direction:column;align-items:flex-start;gap:.12rem;padding:.6rem .85rem;background:transparent;border:0;border-radius:0;border-bottom:1px solid rgba(255,255,255,.06)}.kls-prod-specs .kls-prod-spec:last-child{border-bottom:0}.kls-prod-specs .kls-prod-spec dt{font-size:.67rem;letter-spacing:.02em;text-transform:uppercase;color:rgba(255,255,255,.45);text-align:left!important;margin:0;line-height:1.2}.kls-prod-specs .kls-prod-spec dd{font-size:.9rem;font-weight:600;color:#fff;text-align:left!important;width:100%;margin:0;line-height:1.35;word-break:break-word}
  .kls-prod-lead{font-size:.98rem;line-height:1.5;margin:0 0 1.1rem}
  /* Hero: 16/9 + contain on a portrait product photo wastes half the box. Drop fixed aspect; size to image with bounded max-height. */
  /* KSD-321: column direction so the figcaption credit stacks BELOW the image. With the default flex row the caption was squeezed into a narrow column beside the photo ("текст съехал" on phones). */
  .kls-prod-hero{aspect-ratio:auto;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
  .kls-prod-hero img{padding:.5rem;height:auto;max-height:46vh;width:auto;max-width:100%;margin:0 auto}
  .kls-prod-hero .kls-prod-credit{width:100%;text-align:right;padding:0 .6rem .45rem;box-sizing:border-box}
  /* CTA quick-facts list: stack label above value so long values ("On-board UHF transceiver") aren't crushed against the right edge */
  .kls-prod-cta-meta{gap:0}
  .kls-prod-cta-meta li{flex-direction:column;align-items:flex-start;gap:.15rem;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.05)}
  .kls-prod-cta-meta li:last-child{border-bottom:0}
  .kls-prod-cta-meta li strong,.kls-prod-cta-meta li a{text-align:left;word-break:break-word;font-size:.92rem}
  .kls-prod-cta-meta li span{font-size:.66rem}
  /* Breadcrumb: keep on one row but allow soft-wrap; smaller type so 4-level path doesn't push title off-screen */
  .kls-breadcrumb,.kls-breadcrumb ol{font-size:.78rem}
  .kls-breadcrumb ol{flex-wrap:wrap;row-gap:.15rem}
  /* CTA card title scale */
  .kls-prod-cta-title{font-size:1rem;line-height:1.25}
  .kls-prod-cta-eyebrow{margin-bottom:.2rem}
  /* Gallery thumbs slightly smaller */
  .kls-prod-gallery-thumb{width:64px;height:50px}
}
@media(max-width:420px){
  .kls-prod-title{font-size:1.45rem;line-height:1.2;margin:0 0 .45rem}
  .kls-prod-cta{padding:1rem .9rem}
  .kls-prod-hero img{max-height:42vh}
  .kls-prod-related-grid{gap:.5rem}
  .kls-prod-related-card img{aspect-ratio:1/1}
  /* Provider chip on the header row: shrink padding so it doesn't crowd */
  .kls-prod-prov{font-size:.88rem;padding:.28rem .6rem .28rem .32rem}
}

/* ── KSD-234 wake4 — rocket taxonomy detail page (mirrors product structure) */
.kls-rocket-hero-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.55rem}
.kls-rocket-hero-meta .kls-chip{font-size:.78rem;padding:.28rem .65rem;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.8)}
.kls-rocket-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.65rem;margin:1rem 0 1.5rem}
.kls-rocket-stat{padding:.85rem 1rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:12px}
.kls-rocket-stat-label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.5);margin-bottom:.2rem}
.kls-rocket-stat-val{display:block;font-size:1.2rem;font-weight:700;color:#fff}
.kls-rocket-launches{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.65rem}
.kls-rocket-launch{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:10px;text-decoration:none;color:inherit;transition:border-color .15s,background .15s}
.kls-rocket-launch:hover{background:rgba(255,255,255,.06);border-color:rgba(75,150,255,.3);text-decoration:none}
.kls-rocket-launch-name{flex:1;font-weight:600;color:#fff}
.kls-rocket-launch-date{font-size:.85rem;color:rgba(255,255,255,.65);white-space:nowrap}
.kls-rocket-launch-prov{font-size:.78rem;color:rgba(255,255,255,.5)}
.kls-rocket-empty{padding:1.25rem;text-align:center;color:rgba(255,255,255,.5);background:rgba(255,255,255,.02);border:1px dashed rgba(255,255,255,.1);border-radius:10px;font-size:.9rem}

/* === KSD-234 wake5: provider archive card refresh ======================== */
/* Make the grid card a uniform tile with a full-bleed banner image. */
.kls-pc--grid{height:100%;display:flex;flex-direction:column}
.kls-pc-banner--full{position:relative;display:block;width:100%;aspect-ratio:16/10;overflow:hidden;background:#0e1422;border-bottom:1px solid rgba(255,255,255,.06)}
.kls-pc-banner--full .kls-pc-banner-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform 350ms ease}
.kls-pc--grid:hover .kls-pc-banner--full .kls-pc-banner-bg{transform:scale(1.04)}
/* KSD-234 wake9: fallback sits on top of the per-provider gradient set inline on .kls-pc-banner; just centered initials, no own background. */
.kls-pc-banner-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:3.4rem;font-weight:800;letter-spacing:.08em;color:rgba(255,255,255,.32);text-shadow:0 2px 12px rgba(0,0,0,.35);font-family:Inter,system-ui,sans-serif}
.kls-pc-banner-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 35%,rgba(0,0,0,.55) 100%);pointer-events:none}
.kls-pc-banner-logochip{position:absolute;left:.75rem;bottom:.75rem;width:42px;height:42px;border-radius:10px;background:rgba(0,0,0,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;overflow:hidden;padding:4px;box-shadow:0 2px 8px rgba(0,0,0,.4)}
.kls-pc-banner-logochip img{width:100%;height:100%;object-fit:contain}
/* KSD-234 wake12: when no banner image is set, the provider logo is rendered
   as a LARGE centered hero on top of the gradient (replaces plain initials).
   max-width/height + object-fit:contain prevents stretching of low-res logos. */
.kls-pc-banner-logohero{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:60%;max-height:62%;width:auto;height:auto;object-fit:contain;filter:drop-shadow(0 4px 14px rgba(0,0,0,.45));transition:transform 350ms ease}
.kls-pc--grid:hover .kls-pc-banner--logohero .kls-pc-banner-logohero{transform:translate(-50%,-50%) scale(1.06)}
/* KSD-234 wake8: pills moved to top-left so they don't overlap the heart (top-right). Logo chip lives at bottom-left, so top-left is clear. */
.kls-pc-banner-corner{position:absolute;left:.65rem;top:.65rem;display:flex;flex-wrap:wrap;gap:.35rem;justify-content:flex-start;max-width:calc(100% - 1.3rem - 42px)}
.kls-chip--ondark{background:rgba(0,0,0,.75)!important;color:#fff!important;border:1px solid rgba(255,255,255,.22)!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.kls-chip--ondark.kls-chip--verified{color:#7eebac!important}
/* tighter body & taller card for visual presence */
.kls-pc--grid .kls-pc-body{padding:.95rem 1.1rem 1.1rem;gap:.55rem}
.kls-pc--grid .kls-pc-name{font-size:1.02rem;white-space:normal;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.kls-pc--grid .kls-pc-rating-count{font-size:.72rem;color:rgba(255,255,255,.45);margin-left:.15rem}
/* Footer with Request CTA */
.kls-pc--grid .kls-pc-foot{margin-top:auto;padding-top:.5rem;border-top:1px solid rgba(255,255,255,.05)}
.kls-pc-req{font-size:.78rem;font-weight:700;color:#fff;background:linear-gradient(135deg,#ff8b6b,#ffb86b);text-decoration:none;padding:.4rem .75rem;border-radius:7px;transition:filter .15s ease,transform .1s ease;white-space:nowrap}
.kls-pc-req:hover{filter:brightness(1.08);color:#fff;text-decoration:none;transform:translateY(-1px)}
.kls-pc-req:active{transform:translateY(0)}
.kls-btn-view{font-size:.82rem;font-weight:600;color:var(--kls-accent,#7eb6ff);text-decoration:none;transition:color .15s}
.kls-btn-view:hover{color:#a8d0ff;text-decoration:none}
/* Hide old "muted backdrop + centered logo" sub-elements when full mode wins (defensive) */
.kls-pc-banner--full .kls-pc-banner-logo{display:none!important}
@media(max-width:560px){
  .kls-pc-banner--full{aspect-ratio:16/9}
  .kls-pc-banner-logochip{width:36px;height:36px}
}

/* ── KSD-234 wake10: site-wide mobile polish ──────────────────────────── */
/* Bump tiny labels & badges so they don't fall under 11.5px on phones. */
@media(max-width:720px){
  .kls-badge,.kls-pcard-verified,.kls-pcard-country,
  .kls-prov196-stat-lbl,.kls-pc-tag,.kls-pc-new-badge,
  .kls-chip,.kls-orbit,.kls-badge-verified{
    font-size:.78rem;line-height:1.15
  }
  /* Friendlier tap targets for breadcrumb / footer / list-CTA links. */
  .kls-breadcrumb a,.kls-breadcrumb-item a,
  .kls-footer a,.kls-fp-footer a,
  .kls-lw-cta,.kls-pc-foot a,.kls-btn-view{
    min-height:32px;display:inline-flex;align-items:center
  }
  /* Hamburger button tap area */
  .kls-fp-hamburger,.kls-hamburger{min-height:34px} /* KSD-305 wake: dropped min-width:40px — it only applied to interior .kls-hamburger (front-page.php has no style.css), inflating it to 40px vs the home 32px and shifting the login icon+hamburger ~8px left on every non-home page (Boris horizontal-jump). 32px now matches home. */ /* KSD-305: was 40px which made the shared header.php hamburger taller than the 34px avatar, inflating every non-home header to 65px vs the home (front-page.php, no style.css) 59px. 34px matches the avatar so header height is uniform across all pages. */
  /* Matchmaker example tag chips: 21px tall → 28px */
  .kls-mm-example-tag{min-height:28px;padding:.3rem .65rem}
}

/* KSD-252 wake18a: hide "Listed" badge globally (temp, per Boris).
   Markup preserved on provider cards (archive + single + home grid) so it
   can be un-hidden by deleting this rule. Covers .kls-chip--verified
   (cards in archive/home) and .kls-badge-verified (single-provider page). */
.kls-chip--verified,
.kls-badge-verified {
  display: none !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   KSD-256: unified .kls-arch-filters* block.
   Single source of truth for the archive filter UI used by /providers/
   (KSD-254), /launches/ (KSD-255), and intended for /services/ once it is
   migrated off the legacy .kls-svcmkt-* namespace.

   Rules below match the inline <style> blocks in archive-provider.php and
   archive-launch_window.php (so removing those duplicates later is a no-op
   visual change). New classes (__sticky, __advanced-*, __empty, drawer)
   define the contract for future archive markup refactors.
   ────────────────────────────────────────────────────────────────────────── */

/* Container — default (non-sticky) variant */
.kls-arch-filters{
  background:rgba(14,20,38,.7);
  border:1px solid rgba(255,255,255,.08);
  border-radius:14px;
  padding:.9rem 1rem;
  margin-bottom:1.25rem;
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}

/* Sticky variant — opt-in via .kls-arch-filters--sticky.
   Pinned to top of viewport so it stays visible while user scrolls a long
   archive. Background opaque enough to occlude content scrolling beneath. */
.kls-arch-filters--sticky{
  position:sticky;
  top:0;
  z-index:20;
  border-radius:0;
  border-left:0;
  border-right:0;
  border-top:0;
  border-bottom:1px solid rgba(255,255,255,.12);
  background:rgba(10,15,30,.92);
  margin-left:calc(-1 * env(safe-area-inset-left, 0px));
  margin-right:calc(-1 * env(safe-area-inset-right, 0px));
}

/* Form layout — flex row of search + selects + reset button */
.kls-arch-filters__form{
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
  align-items:center;
  margin-top:.9rem;
}
.kls-arch-filters__form select,
.kls-arch-filters__form input[type="search"]{
  padding:.55rem .7rem;
  border-radius:8px;
  background:#080c14;
  border:1px solid rgba(255,255,255,.15);
  color:#fff;
  font-size:.9rem;
  outline:none;
  transition:border-color .15s ease, background .15s ease;
}
.kls-arch-filters__form input[type="search"]{
  flex:1 1 200px;
  min-width:180px;
  padding:.55rem .8rem;
}
.kls-arch-filters__form select:focus,
.kls-arch-filters__form input[type="search"]:focus{
  border-color:#3b82f6;
  background:#0f172a;
}
/* When JS hijacks live-fire on change, the Apply button is redundant. */
.kls-arch-filters__form.kls-js-on .kls-pf-apply{ display:none; }

/* Chip row — horizontal scrollable when overflows */
.kls-arch-filters__chips{
  display:flex;
  flex-wrap:wrap;
  gap:.4rem;
  align-items:center;
  margin-bottom:.25rem;
}

/* Individual chip-button (default/hover/active states).
   Covers both the explicit .kls-arch-filters__chip class and the legacy
   .kls-cc-chip used inside .kls-orbit-filters / .kls-lsp-filters scopes. */
/* KSD-252 wake35: chip-row polish. Inline style blocks in archive-*.php repeat
   `.kls-orbit-filters .kls-cc-chip{...}` with the OLD muted look, so we override
   from style.css using `!important` on the few hot props (no specificity arms-race). */
.kls-arch-filters__chip,
.kls-arch-filters__chips .kls-cc-chip{
  display:inline-flex !important;
  align-items:center;
  gap:.35rem;
  white-space:nowrap !important;
  min-height:32px;
  padding:.35rem .85rem !important;
  background:#0c121d !important;
  border:1px solid #2a3454 !important;
  border-radius:20px;
  font-size:.82rem;
  font-weight:500;
  text-decoration:none;
  color:#cbd5e1 !important;
  cursor:pointer;
  font-family:inherit;
  line-height:1.2 !important;
  transition:border-color .12s, color .12s, background .12s;
  flex:0 0 auto;
}
.kls-arch-filters__chip:hover,
.kls-arch-filters__chips .kls-cc-chip:hover{
  border-color:#7fd4ff !important;
  color:#e6f5ff !important;
  background:#152348 !important;
}
.kls-arch-filters__chip.is-active,
.kls-arch-filters__chip.active,
.kls-arch-filters__chips .kls-cc-chip.active{
  border-color:#7fd4ff !important;
  color:#7fd4ff !important;
  background:#0e1a3d !important;
}
/* Count badge inside a chip (used by /providers/ country, /launches/ LSP) — small,
   semi-transparent pill so the name dominates and all chips visually balance. */
.kls-arch-filters__chip > span:last-child,
.kls-arch-filters__chips .kls-cc-chip > span:last-child{
  font-size:.7rem !important;
  font-weight:600;
  opacity:1 !important;
  color:inherit;
  background:rgba(255,255,255,.07);
  padding:.05rem .4rem;
  border-radius:10px;
  min-width:1.4em;
  text-align:center;
}

/* Active-filter chip (rendered above the list to surface what's currently filtering).
   Distinct from regular chip — filled blue tint to show "you applied this". */
.kls-arch-filters__active{
  display:flex;
  flex-wrap:wrap;
  gap:.4rem;
  align-items:center;
  margin-top:.6rem;
}
.kls-arch-filters__active-chip{
  display:inline-flex;
  align-items:center;
  gap:.3rem;
  padding:.3rem .65rem;
  border-radius:20px;
  background:rgba(59,130,246,.14);
  border:1px solid rgba(59,130,246,.42);
  color:#cfe3ff;
  font-size:.7rem;
  font-weight:600;
  cursor:pointer;
  transition:background .12s, color .12s;
}
.kls-arch-filters__active-chip:hover{
  background:rgba(59,130,246,.22);
  color:#fff;
  text-decoration:none;
}

/* Clear-all / reset button — subdued, becomes visible only when filters are dirty.
   Templates control visibility via `hidden` attribute. */
.kls-arch-filters__clear{
  padding:.55rem .9rem;
  border-radius:8px;
  background:transparent;
  color:#8294a8;
  border:1px solid rgba(255,255,255,.12);
  font-size:.85rem;
  cursor:pointer;
  transition:border-color .12s, color .12s;
}
.kls-arch-filters__clear:hover{
  border-color:rgba(255,255,255,.3);
  color:#fff;
}

/* Advanced filters toggle — collapses the advanced facet panel.
   Mirrors a native <details>/<summary> visual without requiring it. */
.kls-arch-filters__advanced-toggle{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  padding:.45rem .8rem;
  border-radius:8px;
  background:transparent;
  border:1px solid rgba(255,255,255,.15);
  color:#cfe3ff;
  font-size:.85rem;
  font-weight:600;
  cursor:pointer;
}
.kls-arch-filters__advanced-toggle[aria-expanded="true"]{
  border-color:rgba(107,205,255,.5);
  color:#7fd4ff;
}

/* Advanced panel — collapsible region for less-common facets. */
.kls-arch-filters__advanced-panel{
  margin-top:.7rem;
  padding:.85rem 1rem;
  background:rgba(10,15,30,.55);
  border:1px solid rgba(255,255,255,.08);
  border-radius:12px;
  display:none;
}
.kls-arch-filters__advanced-panel[data-open="true"]{
  display:block;
}

/* Empty-results state — shown when client-side filter hides everything. */
.kls-arch-filters__empty{
  text-align:center;
  padding:2.5rem 1rem;
  color:#8294a8;
  font-size:.95rem;
}
.kls-arch-filters__empty strong{
  display:block;
  color:#e6e8ef;
  font-size:1.05rem;
  margin-bottom:.4rem;
}

/* Mobile — at ≤768px advanced panel converts to a slide-in drawer pinned to
   the bottom of the viewport. Triggered by the same toggle button. */
@media(max-width:768px){
  .kls-arch-filters__advanced-panel{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:50;
    margin:0;
    padding:1.2rem 1rem 2rem;
    background:#0a0f1e;
    border:0;
    border-top:1px solid rgba(255,255,255,.12);
    border-radius:16px 16px 0 0;
    max-height:75vh;
    overflow-y:auto;
    transform:translateY(100%);
    transition:transform .25s ease;
  }
  .kls-arch-filters__advanced-panel[data-open="true"]{
    display:block;
    transform:translateY(0);
  }
  /* Backdrop dim for drawer */
  .kls-arch-filters__advanced-panel[data-open="true"]::before{
    content:"";
    position:fixed;
    inset:0;
    background:rgba(0,0,0,.5);
    z-index:-1;
    pointer-events:none;
  }
}

/* Existing ≤680px tweaks — form stacks vertically, chip row scrolls.
   KSD-252 wake33: reset `flex:1 1 200px` on search input — in column direction
   flex-basis becomes height, producing a ~200px tall empty box on mobile. */
@media(max-width:680px){
  .kls-arch-filters__form{
    flex-direction:column;
    align-items:stretch !important;
  }
  .kls-arch-filters__form select,
  .kls-arch-filters__form input[type="search"],
  .kls-arch-filters__form button{
    width:100% !important;
    box-sizing:border-box;
    flex:0 0 auto !important;
    min-width:0 !important;
    height:auto !important;
  }
  .kls-arch-filters__chips{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    flex-wrap:nowrap;
  }
}


/* ── Marketplace catalog (Phase 1, 2026-06-12) ─────────────── */
.kls-mp-head{margin:1rem 0 1.5rem}
.kls-mp-title{font-size:2rem;font-weight:800;letter-spacing:-.02em}
.kls-mp-sub{color:var(--kls-text-muted);max-width:640px;margin-top:.4rem}
.kls-mp-filters{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start;justify-content:space-between;margin-bottom:1.25rem}
.kls-mp-chips{display:flex;flex-wrap:wrap;gap:.5rem;flex:1 1 60%}
.kls-mp-chips--sub{margin:-.5rem 0 1.25rem}
.kls-mp-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .8rem;border:1px solid var(--kls-border);border-radius:999px;background:var(--kls-bg-card);color:var(--kls-text);font-size:.85rem;transition:var(--kls-transition)}
.kls-mp-chip:hover{border-color:var(--kls-border-hi);text-decoration:none}
.kls-mp-chip.is-active{border-color:var(--kls-accent);background:var(--kls-accent-dim);color:var(--kls-accent)}
.kls-mp-chip-n{color:var(--kls-text-dim);font-size:.75rem}
.kls-mp-search{display:flex;gap:.5rem;flex:0 1 auto}
.kls-mp-search input[type=search],.kls-mp-search select{background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text);padding:.45rem .7rem;font-size:.9rem;max-width:200px}
.kls-mp-search-btn{background:var(--kls-accent2);border:none;border-radius:var(--kls-radius-sm);color:#fff;padding:.45rem .9rem;font-size:.9rem;cursor:pointer;transition:var(--kls-transition)}
.kls-mp-search-btn:hover{filter:brightness(1.15)}
.kls-mp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.25rem}
.kls-mp-card{display:flex;flex-direction:column;background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);overflow:hidden;transition:var(--kls-transition)}
.kls-mp-card:hover{border-color:var(--kls-border-hi);box-shadow:var(--kls-shadow-hi);transform:translateY(-2px)}
.kls-mp-card-media{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;background:#fff;overflow:hidden}
.kls-mp-card-media img{width:100%;height:100%;object-fit:contain;padding:.75rem}
/* KSD-326: provider-logo fallback on launch cards — dark tile + inset so
   white-on-transparent logos stay visible (default media bg is white). */
.kls-mp-card-media-logo{background:#080c14}
.kls-mp-card-media-logo img{padding:1.6rem}
.kls-mp-card-noimg{font-size:2.5rem;opacity:.35}
.kls-mp-card-body{display:flex;flex-direction:column;gap:.3rem;padding:.9rem 1rem 1.1rem;flex:1}
.kls-mp-card-cat{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--kls-accent)}
.kls-mp-card-title{font-size:1.02rem;font-weight:700;line-height:1.3}
.kls-mp-card-title a{color:var(--kls-text)}
.kls-mp-card-title a:hover{color:var(--kls-accent);text-decoration:none}
.kls-mp-card-org{font-size:.82rem;color:var(--kls-text-muted)}
.kls-mp-card-exc{font-size:.85rem;color:var(--kls-text-dim);line-height:1.45;margin-top:.2rem}
.kls-mp-pagination{margin:2rem 0 1rem}
.kls-mp-pagination ul{display:flex;gap:.4rem;list-style:none;justify-content:center}
.kls-mp-pagination a,.kls-mp-pagination span{display:inline-block;padding:.4rem .75rem;border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text);font-size:.9rem}
.kls-mp-pagination .current{border-color:var(--kls-accent);background:var(--kls-accent-dim);color:var(--kls-accent)}
.kls-mp-empty{text-align:center;padding:3rem 1rem;color:var(--kls-text-muted)}
.kls-mp-cta{text-align:center;margin:3rem 0 1rem;padding:2rem;background:var(--kls-bg-card2);border:1px solid var(--kls-border);border-radius:var(--kls-radius-lg)}
.kls-mp-cta h2{font-size:1.3rem;margin-bottom:.4rem}
.kls-mp-cta p{color:var(--kls-text-muted);margin-bottom:1rem}
@media(max-width:700px){.kls-mp-filters{flex-direction:column}.kls-mp-search{width:100%;flex-wrap:wrap}.kls-mp-search input[type=search],.kls-mp-search select,.kls-mp-search-btn{flex:1 1 100%;max-width:none;min-width:0;box-sizing:border-box}}


/* ── Marketplace Phase 2 (2026-06-12): card actions, fp section, lw promo ── */
/* KSD-326 (Boris c.1): push action buttons to the bottom so they line up
   across cards regardless of title/excerpt length (grid stretches cards). */
.kls-mp-card-actions{display:flex;gap:.5rem;margin-top:auto;padding-top:.7rem}
.kls-mp-card-view{flex:1;text-align:center;padding:.45rem .6rem;border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text);font-size:.85rem;transition:var(--kls-transition)}
.kls-mp-card-view:hover{border-color:var(--kls-border-hi);text-decoration:none}
.kls-mp-card-rfq{flex:1;padding:.45rem .6rem;border:1px solid var(--kls-accent2);border-radius:var(--kls-radius-sm);background:var(--kls-accent2);color:#fff;font-size:.85rem;cursor:pointer;transition:var(--kls-transition)}
.kls-mp-card-rfq:hover{filter:brightness(1.15)}
.kls-mp-cta-row{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin:3rem 0 1rem}
.kls-mp-cta-row .kls-mp-cta{margin:0}
@media(max-width:760px){.kls-mp-cta-row{grid-template-columns:1fr}}

/* front-page marketplace section */
.kls-fp-mp-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;margin-bottom:1.5rem}
.kls-fp-mp-cat{display:flex;align-items:center;gap:.6rem;padding:.8rem 1rem;background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);color:var(--kls-text);transition:var(--kls-transition)}
.kls-fp-mp-cat:hover{border-color:var(--kls-accent);text-decoration:none;transform:translateY(-2px);box-shadow:var(--kls-shadow-hi)}
.kls-fp-mp-cat-ico{font-size:1.3rem}
.kls-fp-mp-cat-name{flex:1;font-size:.9rem;font-weight:600;line-height:1.25}
.kls-fp-mp-cat-n{font-size:.78rem;color:var(--kls-accent);background:var(--kls-accent-dim);border-radius:999px;padding:.1rem .55rem}
.kls-fp-mp-prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}
.kls-fp-mp-prod{display:flex;flex-direction:column;gap:.35rem;padding:.6rem;background:var(--kls-bg-card);border:1px solid var(--kls-border);border-radius:var(--kls-radius);color:var(--kls-text);transition:var(--kls-transition)}
.kls-fp-mp-prod:hover{border-color:var(--kls-border-hi);text-decoration:none;transform:translateY(-2px)}
.kls-fp-mp-prod-img{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;background:#fff;border-radius:var(--kls-radius-sm);overflow:hidden}
.kls-fp-mp-prod-img img{width:100%;height:100%;object-fit:contain;padding:.4rem}
.kls-fp-mp-prod-title{font-size:.85rem;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kls-fp-mp-prod-org{font-size:.75rem;color:var(--kls-text-muted)}
@media(max-width:700px){.kls-fp-mp-prods{grid-template-columns:repeat(2,1fr)}}

/* launch page marketplace promo */
.kls-mp-promo{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;max-width:1200px;margin:2.5rem auto;padding:1.6rem 2rem;background:linear-gradient(135deg,var(--kls-bg-card2),var(--kls-bg-card));border:1px solid var(--kls-border);border-radius:var(--kls-radius-lg)}
.kls-mp-promo-txt h2{font-size:1.25rem;margin-bottom:.3rem}
.kls-mp-promo-txt p{color:var(--kls-text-muted);max-width:560px}
@media(max-width:700px){.kls-mp-promo{padding:1.25rem}.kls-mp-promo .kls-nav-cta{width:100%;text-align:center}}

/* cabinet category select */
#prod-category{width:100%;background:var(--kls-bg-card2);border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);color:var(--kls-text);padding:.5rem .7rem;font-size:.9rem}

/* KSD-276 R3: marketplace card price + availability */
.kls-mp-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem}
.kls-mp-price{font-size:1rem;font-weight:700;color:var(--kls-text)}
.kls-mp-avail{font-size:.72rem;font-weight:600;padding:.12rem .5rem;border-radius:999px;border:1px solid var(--kls-border);color:var(--kls-text-dim)}
.kls-mp-avail.is-ok{background:rgba(52,199,89,.12);border-color:rgba(52,199,89,.4);color:#1c7a35}
.kls-mp-avail.is-mto{background:rgba(0,122,255,.1);border-color:rgba(0,122,255,.35);color:#0a59c2}
.kls-mp-avail.is-no{background:rgba(142,142,147,.12);color:#6b6b70}


/* ── Product quick-view modal (Phase 6, 2026-06-12) ───────── */
.kls-qv-overlay[hidden]{display:none!important}
.kls-qv-overlay{position:fixed;inset:0;z-index:9000;background:rgba(5,8,20,.82);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
.kls-qv-dialog{position:relative;width:min(1000px,96vw);max-height:88vh;background:var(--kls-bg-card);border:1px solid var(--kls-border-hi);border-radius:var(--kls-radius-lg);box-shadow:var(--kls-shadow);overflow:hidden;display:flex}
.kls-qv-close{position:absolute;top:.6rem;right:.6rem;z-index:2;width:34px;height:34px;border:1px solid var(--kls-border);border-radius:50%;background:var(--kls-bg-card2);color:var(--kls-text);font-size:1.2rem;line-height:1;cursor:pointer;transition:var(--kls-transition)}
.kls-qv-close:hover{border-color:var(--kls-accent);color:var(--kls-accent)}
.kls-qv-body{width:100%;overflow-y:auto}
.kls-qv-loading{padding:4rem;text-align:center;color:var(--kls-text-muted)}
.kls-qv-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:1.5rem;padding:1.5rem}
.kls-qv-media{min-width:0}
.kls-qv-main{display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;background:#fff;border-radius:var(--kls-radius);overflow:hidden}
.kls-qv-main img{width:100%;height:100%;object-fit:contain;padding:1rem}
.kls-qv-noimg{font-size:4rem;opacity:.3;background:var(--kls-bg-card2)}
.kls-qv-thumbs{display:flex;gap:.5rem;margin-top:.6rem;flex-wrap:wrap}
.kls-qv-thumb{width:58px;height:58px;border:1px solid var(--kls-border);border-radius:var(--kls-radius-sm);background:#fff;padding:0;cursor:pointer;overflow:hidden;transition:var(--kls-transition)}
.kls-qv-thumb img{width:100%;height:100%;object-fit:contain;padding:.2rem}
.kls-qv-thumb.is-on,.kls-qv-thumb:hover{border-color:var(--kls-accent)}
.kls-qv-info{min-width:0;display:flex;flex-direction:column;gap:.55rem}
.kls-qv-cat{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--kls-accent)}
.kls-qv-title{font-size:1.45rem;font-weight:800;line-height:1.2;margin:0}
.kls-qv-org{font-size:.88rem;color:var(--kls-text-muted)}
.kls-qv-org:hover{color:var(--kls-accent);text-decoration:none}
.kls-qv-exc{font-size:.92rem;color:var(--kls-text-muted);line-height:1.55}
.kls-qv-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin:.4rem 0 .6rem}
.kls-qv-rfq{padding:.6rem 1.2rem;border:none;border-radius:var(--kls-radius-sm);background:var(--kls-accent2);color:#fff;font-size:.92rem;font-weight:600;cursor:pointer;transition:var(--kls-transition)}
.kls-qv-rfq:hover{filter:brightness(1.15)}
.kls-qv-full{display:inline-flex;align-items:center;padding:.6rem 1.1rem;border:1px solid var(--kls-border-hi);border-radius:var(--kls-radius-sm);color:var(--kls-text);font-size:.92rem;transition:var(--kls-transition)}
.kls-qv-full:hover{border-color:var(--kls-accent);color:var(--kls-accent);text-decoration:none}
.kls-qv-specs{width:100%;border-collapse:collapse;font-size:.85rem}
.kls-qv-specs td{padding:.4rem .6rem;border-bottom:1px solid var(--kls-border)}
.kls-qv-specs td:first-child{color:var(--kls-text-muted);width:45%}
.kls-qv-pdfs{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;margin-top:.3rem}
.kls-qv-content{font-size:.88rem;color:var(--kls-text-muted);line-height:1.6;border-top:1px solid var(--kls-border);padding-top:.8rem;margin-top:.4rem}
.kls-qv-content p{margin:0 0 .7rem}
@media(max-width:760px){.kls-qv-grid{grid-template-columns:1fr;padding:1rem}.kls-qv-main{aspect-ratio:4/3}.kls-qv-overlay{padding:0}.kls-qv-dialog{width:100vw;max-height:100vh;border-radius:0}}


/* ── Provider hero capability chips (Phase 8) ─────────────── */
.kls-prov196-cap{display:inline-flex;align-items:center;gap:.35rem;padding:.22rem .65rem;border:1px solid rgba(107,205,255,.35);border-radius:999px;background:rgba(107,205,255,.10);color:var(--kls-accent);font-size:.74rem;font-weight:600;letter-spacing:.02em}


/* ── Company page: slot/product card polish (Phase 10) ────── */
.kls-prov-slot-card{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;border:1px solid var(--kls-border);border-radius:var(--kls-radius);overflow:hidden}
.kls-prov-slot-card:hover{transform:translateY(-3px);border-color:var(--kls-border-hi);box-shadow:var(--kls-shadow-hi);cursor:pointer}
.kls-prov-slot-thumb .kls-lw-thumb-overlay{background:linear-gradient(180deg,rgba(5,8,18,.10) 0%,rgba(5,8,18,.45) 55%,rgba(5,8,18,.82) 100%)}
.kls-lw-thumb-badges .kls-badge{backdrop-filter:blur(6px);background:rgba(7,12,26,.6);border:1px solid rgba(255,255,255,.18);color:#dbeafe;font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:.66rem;border-radius:6px;padding:.18rem .5rem}
.kls-lw-thumb-badges .kls-badge-status-go{background:rgba(34,197,94,.25);border-color:rgba(34,197,94,.55);color:#86efac}
.kls-lw-thumb-badges .kls-badge-orbit{background:rgba(75,150,255,.3);border-color:rgba(107,205,255,.5);color:#cfeaff}
.kls-lw-thumb-price{background:linear-gradient(135deg,#7fd4ff,#7fd4ff);color:#fff;font-weight:700;border-radius:8px;padding:.28rem .6rem;box-shadow:0 2px 12px rgba(0,0,0,.4);font-size:.82rem}
.kls-lw-fact-icon{display:inline-flex;align-items:center;color:var(--kls-accent);opacity:.9}
.kls-prov-product-cover{cursor:pointer}
.kls-prov-product{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.kls-prov-product:hover{transform:translateY(-2px);box-shadow:var(--kls-shadow-hi)}
.kls-prov-product-ph{display:flex;align-items:center;justify-content:center;color:var(--kls-text-dim)}


/* ─────────────────────────────────────────────────────────── */
/* KSD-305 mobile audit batch 2 (2026-06-13) — CTO              */
/* 1. tab-strip right-edge fade hint (cabinet tabs scroll horiz) */
/* 2. provider dashboard KPIs: 2-up on mobile instead of stack   */
/* 3. RFQ modal hero image cap (faster path to form on phone)   */
/* ─────────────────────────────────────────────────────────── */
@media (max-width: 640px) {
  .kls-cli-tabs,
  .kls-cab-tabs {
    -webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 28px), transparent 100%);
            mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 28px), transparent 100%);
    scroll-snap-type: x proximity;
  }
  .kls-cli-tab, .kls-cab-tab { scroll-snap-align: start; }
}
@media (max-width: 480px) {
  .kls-cab-stats { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: .6rem; }
  .kls-cab-stats .kls-cab-stat,
  .kls-cab-stats > * { padding: .9rem .6rem; }
  /* shrink the universal request-modal hero image so the form is closer to the fold */
  .kls-univ-req-overlay .kls-launch-info-card__img,
  .kls-univ-req-overlay .kls-launch-info-card__img img {
    min-height: 110px !important;
    max-height: 140px !important;
  }
}


/* ─────────────────────────────────────────────────────────── */
/* KSD-305 mobile audit batch 3 (2026-06-13) — CTO              */
/* провайдер-кабинет .kls-cab-modal — Add Service/Product/Slot  */
/* 1. sticky-bottom actions row — Save/Cancel всегда видны     */
/* 2. больший viewport-use на мобиле (меньше padding)           */
/* 3. close × button (через JS-инжект, см. functions.php)       */
/* ─────────────────────────────────────────────────────────── */
.kls-cab-modal-inner{position:relative}
.kls-cab-modal-actions{position:sticky;bottom:0;background:var(--kls-bg-card);padding-top:1rem;padding-bottom:.25rem;margin-top:1.25rem;border-top:1px solid var(--kls-border);z-index:2}
.kls-cab-modal-x{position:absolute;top:.6rem;right:.6rem;width:36px;height:36px;border-radius:10px;border:1px solid var(--kls-border);background:rgba(255,255,255,.04);color:#cfd7e6;font-size:1.2rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:3;transition:background .15s ease,border-color .15s ease}
.kls-cab-modal-x:hover{background:rgba(255,255,255,.08);border-color:var(--kls-border-hi);color:#fff}
.kls-cab-modal-x:focus-visible{outline:2px solid var(--kls-accent);outline-offset:1px}
.kls-cab-modal-inner h3{padding-right:48px}
@media (max-width: 480px) {
  .kls-cab-modal{padding:.4rem}
  .kls-cab-modal-inner{padding:1.1rem .9rem .25rem;max-height:calc(100vh - .8rem);border-radius:14px}
  .kls-cab-modal-inner h3{font-size:1.05rem;margin:0 48px 1rem 0}
  .kls-cab-modal-actions{flex-direction:row;flex-wrap:wrap;gap:.5rem;padding-left:0;padding-right:0;margin-left:-.9rem;margin-right:-.9rem;padding-bottom:.4rem;padding-top:.7rem;padding-inline:.9rem}
  .kls-cab-modal-actions > button, .kls-cab-modal-actions > a{flex:1 1 auto;min-height:44px}
}


/* ===== FUSION GLOBAL LAYER (2026-06-20) =====
   Re-skins every shared page to the "A×E Fusion" design language used by the
   homepage (front-page.php). Uses EXISTING class names only — borders, colors,
   radii and label-casing change; no layout/grid/structure is touched.
   Tokens already remapped in :root above (cyan accent / amber CTA / green live).
   Palette: bg #080c14 · cyan #7fd4ff · amber #f5a524 · green #2fe592.
   ============================================================================ */

/* — Canvas: faint blueprint grid (matches .hvfu-root in sec-fusion.html) — */
body{
  background-color:var(--kls-bg);
  background-image:
    linear-gradient(rgba(127,170,200,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(127,170,200,.045) 1px,transparent 1px);
  background-size:52px 52px;
  background-position:center top;
  background-attachment:fixed;
  color:var(--kls-text);
}

/* — Default links: cyan, no underline until hover (engineering-grade) — */
a{color:var(--kls-accent)}

/* ── Header ─────────────────────────────────────────────────────────────── */
.kls-header{
  background:rgba(8,12,20,.66);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--kls-border);
}
.kls-header-inner{height:64px;padding:0 2rem}
/* Unified with the homepage Fusion header: mono, small, uppercase brand mark */
.kls-logo{font-family:var(--kls-mono);font-size:12px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:#fff}
.kls-logo span{color:var(--kls-accent)}
/* New brand tag added in header-FUSION.php markup — matches homepage .kls-logo-tag */
.kls-brand-tag{
  font-family:var(--kls-mono);
  text-transform:uppercase;
  letter-spacing:.18em;
  font-size:10px;
  color:var(--kls-text-dim);
  white-space:nowrap;
  margin-left:.55rem;
  margin-right:auto;
}
@media(max-width:640px){.kls-brand-tag{display:none}}

/* — Nav links: mono, uppercase, muted → cyan, cyan active underline — */
.kls-nav-links a{
  font-family:var(--kls-mono);
  text-transform:uppercase;
  font-size:11px;
  letter-spacing:.12em;
  color:var(--kls-text-muted);
  border-bottom:1px solid transparent;
  transition:color var(--kls-transition),border-color var(--kls-transition);
}
.kls-nav-links a:hover{color:var(--kls-accent);border-bottom-color:var(--kls-accent);text-decoration:none}
.kls-nav-links a.is-active,.kls-nav-links a[aria-current="page"]{color:var(--kls-accent)!important;border-bottom-color:var(--kls-accent)}

/* — Primary CTA: amber, dark ink, mono uppercase — */
.kls-nav-cta{
  background:var(--kls-amber);
  color:#1a1102!important;
  font-family:var(--kls-mono);
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:11px;
  font-weight:400;
  padding:.5rem 1rem;
  border-radius:var(--kls-radius-sm);
}
.kls-nav-cta:hover{background:#ffba3d;color:#1a1102!important;box-shadow:0 0 0 3px rgba(245,165,36,.2)}

/* — Login / cabinet / sign-out: hairline boxes, cyan on hover — */
.kls-nav-login,.kls-nav-signout{
  border:1px solid var(--kls-border);
  border-radius:var(--kls-radius-sm);
  font-family:var(--kls-mono);
  text-transform:uppercase;
  letter-spacing:.1em;
  font-size:11px;
  font-weight:400;
  transition:color var(--kls-transition),border-color var(--kls-transition);
}
.kls-nav-login:hover,.kls-nav-signout:hover{color:var(--kls-accent)!important;border-color:var(--kls-border-hi)}
.kls-nav-avatar--login{
  color:var(--kls-accent);
  border-color:rgba(127,212,255,.45);
  border-radius:var(--kls-radius-sm);
  background:transparent;
}
.kls-nav-avatar--login:hover{color:var(--kls-accent);background:rgba(127,212,255,.08)}

/* ── Buttons site-wide ──────────────────────────────────────────────────── */
/* Primary actions → amber; keep padding/size from base rules. */
.kls-btn-primary,.kls-mm-btn,.kls-form-submit{
  background:var(--kls-amber);
  color:#1a1102;
  border-radius:var(--kls-radius-sm);
}
.kls-btn-primary:hover,.kls-mm-btn:hover,.kls-form-submit:hover:not(:disabled){
  background:#ffba3d;color:#1a1102;box-shadow:0 0 0 3px rgba(245,165,36,.2)
}
/* Secondary / ghost / outline → transparent + hairline, cyan on hover. */
.kls-btn-secondary,.kls-btn-outline,#kls-write-review-btn{
  background:transparent;
  border:1px solid var(--kls-border-hi);
  color:var(--kls-accent);
  border-radius:var(--kls-radius-sm);
}
.kls-btn-secondary:hover,.kls-btn-outline:hover,#kls-write-review-btn:hover{
  background:var(--kls-accent-dim);border-color:var(--kls-accent);color:var(--kls-accent)
}
.kls-btn{border-radius:var(--kls-radius-sm)}
.kls-btn:hover{border-color:var(--kls-accent);color:var(--kls-accent)}

/* ── Kicker / eyebrow labels → mono uppercase letter-spaced (amber/cyan) ──
   NOTE: only TRUE kicker/eyebrow labels. Body subs (.kls-section-sub) stay
   normal prose — intentionally not touched here. */
.kls-hero-eyebrow,.kls-prod-eyebrow,.kls-prod-cta-eyebrow{
  font-family:var(--kls-mono);
  text-transform:uppercase;
  letter-spacing:.16em;
  color:var(--kls-amber);
}
.kls-hero-eyebrow{background:var(--kls-accent-dim);border-color:rgba(127,212,255,.25);border-radius:var(--kls-radius-sm)}
/* Small uppercase meta/stat labels read as labels → mono, kept muted. */
.kls-mm-title,.kls-prov-stat-lbl,.kls-pc-metric-lbl,.kls-svc-spec-lbl,
.kls-svc-card-type,.kls-slot-fact-lbl,.kls-prod-spec dt,.kls-rocket-stat-label,
.kls-mp-card-cat,.kls-qv-cat,.kls-launch-dl dt{
  font-family:var(--kls-mono);
  text-transform:uppercase;
  letter-spacing:.1em;
}

/* ── Generic figures: tabular mono for big numeric stats ────────────────── */
.kls-stat-num,.kls-prov-stat-val,.kls-pc-metric-val,.kls-svc-price-val,
.kls-rating-big-num,.kls-rocket-stat-val{
  font-family:var(--kls-mono);
  font-variant-numeric:tabular-nums;
  letter-spacing:.01em;
}

/* ── Cards / panels on archives & detail pages ──────────────────────────── */
/* Hairline borders + small radius + cyan hover. Internal grid untouched. */
.kls-card,.kls-pc,.kls-prov-card,.kls-launch-card,.kls-lw-card,.kls-svc-card,
.kls-mp-card,.kls-step,.kls-slot-card,.kls-launch-detail,.kls-prov-card,
.kls-rating-summary,.kls-review-row,.kls-prov-slot-card{
  border:1px solid var(--kls-border);
  border-radius:var(--kls-radius);
}
.kls-pc:hover,.kls-prov-card:hover,.kls-launch-card:hover,.kls-lw-card:hover,
.kls-svc-card:hover,.kls-mp-card:hover,.kls-step:hover{
  border-color:var(--kls-border-hi)
}
/* Accent stripes/heads on cards → cyan (was blue gradient). */
.kls-prov-card-head,.kls-svc-card-accent{background:var(--kls-accent)}

/* — Filter chips: hairline, small radius, cyan active/hover — */
.kls-cc-chip,.kls-chip,.kls-mp-chip,.kls-filter-btn,.kls-orbit-filters a,
.kls-pc-tag,.kls-catchips span{
  border-radius:var(--kls-radius-sm);
  border:1px solid var(--kls-border);
  transition:border-color var(--kls-transition),color var(--kls-transition),background var(--kls-transition);
}
.kls-mp-chip:hover,.kls-filter-btn:hover,.kls-orbit-filters a:hover{
  border-color:var(--kls-accent);color:var(--kls-accent)
}
.kls-mp-chip.is-active,.kls-filter-btn.active,.kls-orbit-filters a.active{
  border-color:var(--kls-accent);color:var(--kls-accent);background:var(--kls-accent-dim)
}
/* Small uppercase chips/tags as labels → mono. */
.kls-pc-tag,.kls-catchips span,.kls-badge{font-family:var(--kls-mono);letter-spacing:.06em}

/* — Focus rings + inputs: cyan accent — */
:focus-visible{outline-color:var(--kls-accent)}
.kls-mm-field input:focus,.kls-mm-field select:focus,
.kls-arch-filters__form select:focus,.kls-arch-filters__form input[type="search"]:focus{
  border-color:var(--kls-accent);box-shadow:0 0 0 3px rgba(127,212,255,.16)
}

/* ── Footer ─────────────────────────────────────────────────────────────── */
.kls-footer{border-top:1px solid var(--kls-border)}
.kls-footer-logo span{color:var(--kls-accent)}
.kls-footer-col h4{
  font-family:var(--kls-mono);
  text-transform:uppercase;
  letter-spacing:.16em;
  color:var(--kls-text-muted);
}
.kls-footer-col a{color:var(--kls-text-muted)}
.kls-footer-col a:hover{color:var(--kls-accent)}
.kls-footer-bottom{
  border-top:1px solid var(--kls-border);
  font-family:var(--kls-mono);
  letter-spacing:.06em;
  font-size:11px;
  color:var(--kls-text-dim);
}
/* ===== END FUSION GLOBAL LAYER ===== */

/* ===== FUSION QUICK-VIEW + MODAL POLISH (2026-06-20) ===== */
.kls-qv-dialog{background:#0c121d!important;border:1px solid rgba(127,170,200,.2)!important;border-radius:4px!important}
.kls-qv-title{font-family:var(--kls-mono,ui-monospace,"SF Mono",Menlo,Consolas,monospace)!important;letter-spacing:-.01em;color:#fff}
.kls-qv-cat,.kls-qv-org{font-family:var(--kls-mono,ui-monospace,"SF Mono",Menlo,Consolas,monospace)!important;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--kls-text-muted)}
.kls-qv-rfq{background:#f5a524!important;color:#04121d!important;border:0!important;border-radius:4px!important;font-family:var(--kls-mono,ui-monospace,"SF Mono",Menlo,Consolas,monospace)!important;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.kls-qv-rfq:hover{background:#ffba3d!important;color:#04121d!important}
.kls-qv-full{background:transparent!important;border:1px solid rgba(127,170,200,.24)!important;color:#7fd4ff!important;border-radius:4px!important;font-family:var(--kls-mono,ui-monospace,"SF Mono",Menlo,Consolas,monospace)!important;text-transform:uppercase;letter-spacing:.06em}
.kls-qv-full:hover{border-color:#7fd4ff!important;background:rgba(127,212,255,.06)!important}
.kls-qv-thumb.is-active,.kls-qv-thumb:hover{border-color:#7fd4ff!important}
.kls-qv-close:hover{color:#7fd4ff!important}
.kls-qv-overlay[hidden]{display:none!important}

.kls-footer-legal{display:flex;flex-wrap:wrap;gap:.3rem .85rem;align-items:center;font-family:ui-monospace,"SF Mono","Roboto Mono",Menlo,Consolas,monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.kls-footer-legal a{color:#8294a8;text-decoration:none}
.kls-footer-legal a:hover{color:#7fd4ff;text-decoration:none}

/* ===== UNIFIED HEADER NAV GEOMETRY (2026-06-20) — identical header on every page ===== */
@media(min-width:641px){
.kls-nav{display:flex;align-items:center;gap:1.4rem}
.kls-nav-links,.kls-fp-nav-links{display:flex;align-items:center;gap:1.5rem}
.kls-nav-links a,.kls-fp-nav-links a{font-size:11px!important;font-weight:400!important;letter-spacing:.1em!important;padding:0}
.kls-nav-cta,.kls-nav-login,.kls-nav-signout{display:inline-flex;align-items:center;justify-content:center;height:34px;box-sizing:border-box;line-height:1;font-size:11px!important;font-weight:400!important;letter-spacing:.1em!important;padding-top:0;padding-bottom:0}
.kls-nav-cta{padding-left:1.1rem;padding-right:1.1rem}
.kls-nav-login{padding-left:.95rem;padding-right:.95rem}
.kls-nav-signout{padding:0;width:34px}
}
