/* assets/css/styles.css */
/* Общие стили */
* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {

  utf8,%3Csvg%20xmlns%3D%22http://www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2246%22%20viewBox%3D%220%200%2040%2046%22%3E%0A%20%20%3Cdefs%3E%0A%20%20%20%20%3Cpattern%20id%3D%22hex%22%20width%3D%2240%22%20height%3D%2246%22%20patternUnits%3D%22userSpaceOnUse%22%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M10%203.464L20%200l10%203.464%2010%206.928v13.856L30%2034.614%2020%2038.078%2010%2034.614%200%2024.248V10.392z%22%20fill%3D%22none%22%20stroke%3D%22#9aa5b1%22%20stroke-width%3D%220.5%22%20opacity%3D%220.15%22/%3E%0A%20%20%20%20%3C/pattern%3E%0A%20%20%3C/defs%3E%0A%20%20%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22url%28#hex%29%22%20/%3E%0A%3C/svg%3E');



  margin: 0;
  padding: 0;
  font-family: 'Inter', sans-serif;
  line-height: 1.7;
  color: #1f2937;

}

/* Заголовок */
header {
  padding: 1.5rem;
  background: rgba(245,245,220,.9);
  backdrop-filter: blur(8px);
  text-align: center;
  border-bottom: 1px solid #0000000d;
}

header h1 {
  font-size: 2.6rem;
  font-weight: 700;
  margin-bottom: 0.4rem;
}

header p {
  font-size: 1.1rem;
  color: #334155;
}

/* Основное содержимое */
main {
  background: #ffffffd9;
  border-radius: 12px;
  padding: 2.5rem;
  margin: 2rem auto;
  box-shadow: 0 8px 24px #0000001a;
  max-width: 1200px;
}

section {
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid #e5e7eb;
}

section h2 {
  font-size: 2.1rem;
  font-weight: 600;
  margin-bottom: 1rem;
  color: #1f2937;
  transition: color 0.3s ease-in-out;
}

section h2:hover {
  color: #1d4ed8;
}

ul {
  list-style: disc;
  margin-left: 1.5rem;
  font-size: 1.15rem;
  color: #374151;
  line-height: 1.6;
}

ul li {
  margin-bottom: 0.6rem;
}

/* Блог-посты */
.blog-entry {
  margin-bottom: 1.5rem;
}

.blog-entry h3 {
  font-size: 1.5rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}

.blog-entry p {
  font-size: 1.05rem;
  color: #475569;
}

/* Контактная форма */
#contact-form {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  max-width: 400px;
  margin: 2rem auto;
}

#contact-form input,
#contact-form textarea {
  padding: 0.5rem;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 1rem;
  background: #ffffffe6;
}

#contact-form textarea {
  min-height: 100px;
  resize: vertical;
}

#contact-form button {
  background: #000;
  color: #fff;
  border: 1px solid #000;
  padding: 0.5rem 1.2rem;
  font-size: 1rem;
  border-radius: 999px;
  font-weight: 500;
  cursor: pointer;
  transition: background-color 0.3s ease, color 0.3s ease;
}

#contact-form button:hover {
  background: #fff;
  color: #000;
}

/* Футер */
footer {
  padding: 1rem;
  text-align: center;
  background: #ffffffd9;
  backdrop-filter: blur(6px);
  font-size: 0.9rem;
  color: #4b5563;
  margin-top: 2rem;
}

footer a {
  color: #2563eb;
  text-decoration: none;
}

footer a:hover {
  text-decoration: underline;
}

/* Security Footer */
.security-footer {
  margin-top: 1rem;
  padding: 0.5rem 1rem;
  background: #f0f2f5;
  text-align: center;
  font-size: 0.9rem;
  color: #333;
  border-top: 1px solid #ddd;
}

.security-footer a {
  color: #005da0;
  text-decoration: none;
  margin: 0 0.25rem;
}

.security-footer a:hover {
  text-decoration: underline;
}

/* (old .lang-switcher styles removed in favor of /assets/lang-switcher.css) */
/* Анимации */
.fade-in {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.fade-in.visible {
  opacity: 1;
  transform: none;
}

/* Стили для страниц видеореzюme */
.video-page {
  background: #000;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0;
}

.video-page video {
  width: 100%;
  height: auto;
  max-height: 100vh;
}

.video-page .Back-button {
  position: absolute;
  top: 1rem;
  left: 1rem;
}

.video-page .Back-button a {
  color: #fff;
  background: #00000099;
  padding: 0.5rem 1rem;
  border-radius: 5px;
  text-decoration: none;
}

/* Адаптивные стили */
@media (max-width: 768px) {
  body {
    padding: 1rem;
    background-size: auto;
    font-size: 1rem;
  }

  header h1 {
    font-size: 1.8rem;
    word-break: break-word;
    line-height: 1.3;
  }

  header p {
    font-size: 1rem;
    line-height: 1.5;
  }

  main {
    padding: 1rem;
    margin: 1rem auto;
    width: 95%;
    max-width: 95%;
  }

  section h2 {
    font-size: 1.4rem;
    line-height: 1.4;
  }

  ul {
    font-size: 1rem;
    margin-left: 1rem;
    padding-left: 1.2rem;
    line-height: 1.5;
  }

  .blog-entry h3 {
    font-size: 1.2rem;
  }

  .blog-entry p {
    font-size: 1rem;
  }
}

@media (max-width: 600px) {
.lang-switcher a {
    font-size: 0.85rem;
  }
}

@media (max-width: 480px) {
}
/* Contact card styling added */
.contact-card {
  border:1px solid #e5e7eb;
  padding:2rem;
  border-radius:1rem;
  background:#fff;
  max-width:600px;
  margin:2rem auto;
}
.contact-card form{
  display:flex;
  flex-direction:column;
  gap:1rem;
}
.contact-card input,
.contact-card textarea{
  width:100%;
  padding:0.75rem 1rem;
  border:1px solid #d1d5db;
  border-radius:0.5rem;
  font-size:1rem;
  box-sizing:border-box;
}
.contact-card button{
  width:100%;
  background:#000;
  color:#fff;
  border:none;
  padding:0.75rem 1rem;
  border-radius:999px;
  font-size:1rem;
  cursor:pointer;
}
.contact-card button:hover{
  background:#fff;
  color:#000;
  border:1px solid #000;
}


/* ---- Reusable components for CTA (minimal) ---- */
.card{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.06)}
.btn{background:#000;color:#fff;border:1px solid #000;padding:.6rem 1rem;border-radius:999px;cursor:pointer;text-decoration:none;display:inline-block}
.btn:hover{background:#fff;color:#000}
.muted{color:#6b7280}
.floating-cta{position:fixed;right:1rem;bottom:1rem;z-index:50}
.floating-cta .cta-inner{display:flex;gap:.75rem;align-items:center;padding:.75rem}
.floating-cta .cta-icon{width:32px;height:32px;border-radius:8px;background:#000;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800}
.floating-cta .close{border:none;background:transparent;cursor:pointer;font-size:1rem;opacity:.6;line-height:1}
.floating-cta .close:hover{opacity:1}
@media (max-width:640px){.floating-cta{left:.75rem;right:.75rem}}

/* --- PATCH: better mobile scaling for floating CTA (DE/EN) --- */
.floating-cta .cta-inner{flex-wrap:wrap;}
@media (max-width:640px){
  .floating-cta{left:.75rem;right:.75rem;} /* keep full width on mobile */
  .floating-cta .cta-inner{align-items:flex-start;}
  .floating-cta .btn{flex:1 1 100%;text-align:center;}
}
/* --- END PATCH --- */

/* === Fix: responsive KPI cards === */
.kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 0.75rem;
  align-items: start;
}

.kpi {
  display: flex;
  flex-direction: column;
  height: auto !important;
  min-height: 0;
  overflow: visible !important;
  box-sizing: border-box;
}

.kpi ul { margin: 0.25rem 0 0; padding-left: 1.25rem; }
.kpi li { margin: 0.35rem 0; }

.kpi, .kpi a {
  overflow-wrap: anywhere;
  word-break: break-word;
}

@media (max-width: 640px) {
  .kpis { grid-template-columns: 1fr; }
}

/* === Security Check responsive card fixes === */
.kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 0.75rem;
  align-items: start;
}
.kpi {
  display: flex;
  flex-direction: column;
  height: auto !important;
  min-height: 0;
  overflow: visible !important;
  box-sizing: border-box;
}
.kpi ul { margin: 0.25rem 0 0; padding-left: 1.25rem; }
.kpi li { margin: 0.35rem 0; }
.kpi, .kpi a { overflow-wrap: anywhere; word-break: break-word; }
@media (max-width: 640px) { .kpis { grid-template-columns: 1fr; } }


/* Improve tap targets for mobile (SEO) */
@media (prefers-reduced-motion: reduce) {
  .fade-in { animation: none !important; opacity: 1 !important; }
}


/* Visually hidden (for accessible labels) */
.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0, 0, 1px, 1px); white-space: nowrap; border: 0;
}


/* Lightweight honeycomb background (tileable SVG) */
body{
  background-color:#f8fafc;
  background-image:url(/assets/honeycomb.svg);
  background-repeat:repeat;
  background-size:48px 56px;
  background-attachment:scroll;
}

/* Optional: enable parallax-like fixed background on large screens only */
@media (min-width:1024px) and (prefers-reduced-motion:no-preference){
  body{ background-attachment: fixed; }
}


/* Honeycomb background with absolute path + inline fallback */
body{
  background-color:#F1EEEB;
  background-image:url('/assets/honeycomb.svg'), url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http://www.w3.org/2000/svg%22%20width%3D%2248%22%20height%3D%2256%22%20viewBox%3D%220%200%2048%2056%22%3E%0A%20%20%3Cdefs%3E%3Cpattern%20id%3D%22h%22%20width%3D%2248%22%20height%3D%2256%22%20patternUnits%3D%22userSpaceOnUse%22%3E%0A%20%20%20%20%3Cpolygon%20points%3D%2212,0%2036,0%2048,14%2036,28%2012,28%200,14%22%20fill%3D%22none%22%20stroke%3D%22#0f172a%22%20stroke-width%3D%221%22%20opacity%3D%220.08%22/%3E%0A%20%20%3C/pattern%3E%3C/defs%3E%0A%20%20%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22url%28#h%29%22/%3E%0A%3C/svg%3E');
  background-repeat:repeat;
  background-size:48px 56px, 48px 56px;
  background-attachment:scroll;
}
@media (min-width:1024px) and (prefers-reduced-motion:no-preference){
  body{ background-attachment: fixed; }
}

/* Accessibility & focus improvements */
:focus-visible {
  outline: 3px solid #1d4ed8;
  outline-offset: 3px;
  border-radius: 6px;
}

/* Ensure links are distinguishable */
a {
  text-underline-offset: 2px;
}
a:hover {
  text-decoration-thickness: 2px;
}


/* Navigation block for Blog link */
.site-nav {
  display: inline-block;
  margin-left: 1rem;
}
.site-nav a {
  font-size: 0.95rem;
  color: #333;
  text-decoration: none;
  padding: 0.2rem 0.4rem;
  border-radius: 6px;
  transition: background-color 0.2s ease;
}
.site-nav a:hover {
  background-color: rgba(0,0,0,0.05);
}

/* --- Blog topbar & Allschwil badge polish --- */
.topbar .home-link { text-decoration:none; color:#1f2937; padding:.25rem .5rem; border-radius:8px; }
.allschwil-badge {
  display:inline-flex; align-items:center; gap:.5rem;
  background:#0f172a; color:#fff; border:2px solid #2563eb;
  border-radius:12px; padding:.25rem .5rem; text-decoration:none;
}
.allschwil-badge:hover { filter:brightness(1.05); }
.allschwil-badge img, .allschwil-badge svg { height:18px; width:18px; display:block; }
.badge-row { display:flex; align-items:center; gap:.6rem; margin-top: .75rem; }

/* Allschwil shield sizing */
.allschwil-badge img[src$="allschwil-shield.svg"],
.allschwil-badge img[src$="allschwil-shield-compact.svg"] {
  height: 20px;
  width: auto;
}

/* Footer badges layout */
.footer-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
  align-items: center;
  margin-top: 1rem;
}
.footer-badges .badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  background: #0f172a;
  padding: 0.2rem 0.6rem;
  border-radius: 0.6rem;
  color: #f8fafc;
  font-size: 0.9rem;
  font-weight: 600;
  text-decoration: none;
}
.footer-badges .badge img {
  height: 16px;
  width: auto;
}
.footer-badges .badge:hover {
  background: #1e293b;
}

/* --- Allschwil COA mini + centered layout --- */
.badge-row {
  display:flex;
  align-items:center;
  justify-content:center;   /* center the row */
  gap:.6rem;
  margin-top:.75rem;
  flex-wrap:wrap;
  text-align:center;
}
.allschwil-badge {
  display:inline-flex; align-items:center; gap:.4rem;
  background:#0f172a; color:#fff; border:2px solid #2563eb;
  border-radius:12px; padding:.2rem .5rem; text-decoration:none;
  font-weight:600;
}
.allschwil-badge img { height:16px; width:auto; display:block; }
.badge-row .badge-caption { opacity:.75; }

/* --- Allschwil directory link (single, compact) --- */
.allschwil-link {
  display:inline-flex;align-items:center;gap:.45rem;
  padding:.25rem .6rem;border-radius:999px;
  background:#0f172a;color:#fff;border:2px solid #2563eb;
  text-decoration:none;font-weight:600;line-height:1;
}
.allschwil-link img{height:18px;width:auto;display:block}
.footer-badges{display:flex;justify-content:center;gap:1rem;align-items:center;flex-wrap:wrap;margin:.75rem 0}

/* --- Partner badges row (Allschwil + AGV) --- */
.partner-badges{display:flex;justify-content:center;align-items:center;gap:.75rem;flex-wrap:wrap;margin:.75rem 0}
.partner-badges a{display:inline-flex;align-items:center;gap:.45rem;background:#0f172a;color:#fff;border:2px solid #2563eb;border-radius:12px;padding:.25rem .6rem;text-decoration:none;font-weight:600;line-height:1}
.partner-badges a img{height:18px;width:auto;display:block}

/* --- Partner badges (light style) --- */
.partner-badges{
  display:flex;justify-content:center;align-items:center;gap:.75rem;flex-wrap:wrap;margin:.75rem 0
}
.partner-badges a{
  display:inline-flex;align-items:center;gap:.5rem;
  background:#ffffff;border:1px solid rgba(0,0,0,.12);
  color:#111827;border-radius:999px;padding:.35rem .7rem;
  text-decoration:none;font-weight:600;line-height:1
}
.partner-badges a:hover{box-shadow:0 1px 4px rgba(0,0,0,.08)}
.partner-badges a img{height:20px;width:auto;display:block}

/* Official partner icons sizing */
.partner-badges a img.badge-flag { height:16px; width:auto; border-radius:3px; display:block }
.partner-badges a img.badge-round { height:20px; width:auto; display:block }

.partner-badges a img.badge-flag{height:20px;width:auto;display:block;border-radius:3px}
.partner-badges a img.badge-round{height:20px;width:auto;display:block}


/* --- Blog polish: lang switch & dates --- */
.post-list { list-style: none; padding-left: 0; }
.post-list li { margin: .5rem 0; }
.post-list .meta { margin-left: .5rem; color: #6b7280; white-space: nowrap; }
/* --- Site header simple nav --- */
.main-nav {
  display:flex; gap:1rem; align-items:center; justify-content:center;
  margin: .75rem auto; padding: 0 .5rem;
}
.main-nav a { text-decoration: none; color: #1f2937; padding: .25rem .5rem; border-radius: 8px; }
.main-nav a:hover { background: rgba(0,0,0,.05); }



/* Blog polish */
/* Post list: keep date off the title */
.post-list { list-style:none; padding-left:0; }
.post-list li { margin:.5rem 0; }
.post-list .meta { margin-left:.5rem; color:#6b7280; white-space:nowrap; }



/* --- Responsive header nav --- */
.main-nav.responsive { display:flex; justify-content:center; margin:.5rem auto; }
.nav-toggle {
  appearance:none; border:1px solid rgba(0,0,0,.15); background:#fff; color:#111827;
  padding:.4rem .75rem; border-radius:10px; font-weight:600; cursor:pointer;
  box-shadow:0 1px 4px rgba(0,0,0,.06);
}
.nav-panel { display:flex; gap:.75rem; flex-wrap:wrap; justify-content:center; margin-top:.5rem; }
.nav-panel a { text-decoration:none; color:#1f2937; padding:.25rem .5rem; border-radius:8px; }
.nav-panel a:hover { background:rgba(0,0,0,.05); }

/* Desktop: show links inline, hide button */
@media (min-width: 900px){
  .nav-toggle { display:none; }
  .nav-panel { display:flex !important; }
  .nav-panel[hidden] { display:flex !important; } /* ensure visible on desktop */
}

/* Mobile: panel collapses under the button */
@media (max-width: 899px){
  .nav-panel[hidden]{ display:none; }
}

/* Ensure lang-switch doesn't overlap content on small screens */
/* --- Readable responsive menu polish --- */
.main-nav.responsive{position:relative; z-index:5; margin-top:.5rem}
.nav-panel{background:#fff; border:1px solid rgba(0,0,0,.12); border-radius:12px; padding:.5rem .75rem;
  box-shadow:0 6px 20px rgba(0,0,0,.08); gap:1rem}
.nav-panel a{font-weight:600}
@media (max-width:899px){
  .nav-panel{flex-direction:column; align-items:stretch; margin-top:.5rem}
  .nav-panel a{padding:.5rem .75rem}
}



/* Page container */
.container{
  max-width: 1100px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1rem;
  padding-right: 1rem;
  width: 100%;
}

/* Blog list layout */
.post-list li{ display:flex; align-items: baseline; gap:.4rem; flex-wrap:wrap; }
.post-list li a{ flex: 1 1 auto; }
.post-list li .meta{ flex: 0 0 auto; }


/* --- Mobile polish --- */
@media (max-width: 720px){
  .floating-cta{ display: none; } /* avoid overlay and layout shift on mobile */
  .contact-card{ padding: 1.25rem; }
  .contact-card .btn{ width: 100%; text-align:center; }
}
.small-note{ color:#6b7280; margin: .5rem 0 0; }
.small-note a{ text-decoration: underline; }



/* Blog index: switcher identical to Security-Check */
.blog-index .lang-switcher a,
.blog-index .lang-switcher a.active { text-decoration: underline; }
.blog-index .Back { margin: 0.5rem 0 0.5rem; }
.blog-index .Back a,
.blog-index .Back a:visited { color:#000; text-decoration:none; }

/* Blog posts: ensure Back link is clean */
.blog .Back { margin: 0.5rem 0 0.5rem; }
.blog .Back a, .blog .Back a:visited { color:#000; text-decoration:none; }


/* Accessibility helpers */
.hidden { display: none !important; }
.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 1px, 1px);
  white-space: nowrap; border: 0;
}
.thank-message { font-weight: 600; }
.thank-message:focus { outline: none; }

/* Form validation */
.field-error { font-size: 0.95rem; margin-top: 6px; }
.input-error { border: 2px solid; }

/* Required field marker (if labels are visible) */
label[for="name"]:after,
label[for="email"]:after,
label[for="message"]:after { content: ""; }
label.required:after { content: " *"; }

/* Language switcher: CSS-only active highlighting (Cloudflare CSP-safe) */
.lang-switcher a.active { text-decoration: underline; font-weight: 700; }

/* Auto-activate by filename suffix + <html lang> */
/* Current route highlighting */
nav a.current, .nav a.current, header a.current, .menu a.current {
  text-decoration: underline;
  font-weight: 700;
}


/* Ensure skip-link is only visible on focus */
.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.skip-link:focus{left:16px;top:16px;width:auto;height:auto;padding:8px 12px;background:#fff;border:2px solid #111;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.2);z-index:10000}


/* --- Outdoor gallery protections --- */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;list-style:none;padding:0;margin:0 0 1.5rem}


/* Ensure caption always visible above the shield link */
.card .shield{z-index:1}
.card .caption{z-index:2; pointer-events:none}

.card{position:relative;border:1px solid rgba(2,6,23,.08);border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 1px 2px rgba(2,6,23,.04)}
.card picture,.card img{display:block;width:100%;height:100%;object-fit:cover;aspect-ratio:4/3}
.card img{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;pointer-events:none}
.card .shield{position:absolute;inset:0;display:block;background:transparent;text-indent:-9999px;cursor:zoom-in}
.caption{position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.45);color:#fff;padding:.25rem .5rem;border-radius:8px;font-size:.85rem}
@media print{.card img{filter:blur(12px) contrast(.6)}}

/* --- Outdoor CTA buttons --- */
.cta-row{display:flex;flex-wrap:wrap;gap:.6rem;margin:.5rem 0 1rem;align-items:center}
.btn.with-icon{display:inline-flex;align-items:center;gap:.5rem}
.btn-ghost{background:#fff;color:#111;border:1px solid #e5e7eb}
.btn-ghost:hover{background:#111;color:#fff;border-color:#111}
@media (max-width:640px){ .hide-sm{display:none} }


/* --- NFT badge (cards) --- */
.card.nft{position:relative}
.card.nft .badge-nft{
  position:absolute;left:8px;top:8px;
  padding:4px 8px;border-radius:10px;font-size:.8rem;
  background:#000;color:#fff;opacity:.9;text-decoration:none
}
.card.nft .badge-nft:focus{outline:2px solid #0ea5e9;outline-offset:2px}
.small{font-size:.9rem}



/* === Security Practice block (mobile -> stacked, desktop -> inline with separators) === */
.security-practice {
  text-align: center;
  margin: 1.5rem 0;
  font-size: 0.95rem;
  line-height: 1.4;
}
.security-practice .title { font-weight: normal; margin-left: 0; }
.security-practice .rating-tech { font-weight: 500; color: #111; }
.security-practice .links { font-size: 0.85rem; }

/* Mobile: stack lines */
.security-practice > span { display: block; margin-bottom: 0.3rem; }

/* Desktop: single line with center dots between groups */
@media (min-width: 768px) {
  .security-practice > span { display: inline; margin: 0 0.4rem; }
  .security-practice > span:not(:last-child)::after { content: "·"; margin-left: 0.4rem; }
}

/* Adjustments for security-practice */
.security-practice .title { font-weight: normal; margin-left: 0; }
.security-practice svg {
  vertical-align: middle;
  margin-right: 0.3rem;
}

.security-practice .title svg { vertical-align: middle; margin-right: 0.35rem; }
.security-practice .title .title-text { vertical-align: middle; }

/* Mobile: stack lines */
.security-practice > span { display: block; margin-bottom: 0.3rem; }

/* Desktop: single line with center dots between groups (title, rating-tech, links) */
@media (min-width: 768px) {
  .security-practice > span { display: inline; margin: 0 0.4rem; }
  .security-practice > span:not(:last-child)::after { content: "·"; margin-left: 0.4rem; }
}


/* === Unified skip link across the site (including Blog) === */
.skip-link{ position:absolute; left:-999px; top:auto; width:1px; height:1px; overflow:hidden; }

/* Displayed on focus/keyboard navigation */
.skip-link:focus,
.skip-link:focus-visible,
.blog a[href*="#main"]:focus,
.blog a[href*="#main"]:focus-visible,
.blog a[href*="#content"]:focus,
.blog a[href*="#content"]:focus-visible{
  position: fixed;
  left: 1rem;
  top: 1rem;
  display: inline-block;
  padding: .6rem 1rem;
  background: #fff;
  color: #111;
  text-decoration: none;
  border: 2px solid var(--ring-fallback, #1a73e8);
  border-radius: var(--radius, 12px);
  box-shadow: 0 2px 8px rgba(0,0,0,.2);
  z-index: 10000;
  font-size: 1rem;
  font-weight: 600;
}



/* === Service page responsive overflow fixes === */
.service-page, .service-page body, .service-page html { overflow-x: hidden; }
.service-page table:not(.stack-on-mobile){ display:block; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling: touch; }
.service-page pre, .service-page code{ white-space:normal; word-break:break-word; overflow-wrap:anywhere; }
.service-page .card, .service-page .content, .service-page main{ max-width:100%; overflow-x:hidden; }



/* === Stacked table on mobile === */
@media (max-width: 720px){
  table.stack-on-mobile{
    width: 100%;
    border: 0;
  }
  table.stack-on-mobile thead{
    display: none;
  }
  table.stack-on-mobile tbody tr{
    display: block;
    background: var(--card-bg,#fff);
    margin: 0 0 14px 0;
    padding: 12px 14px;
    border-radius: 16px;
    box-shadow: 0 1px 3px rgba(0,0,0,.06);
  }
  table.stack-on-mobile tbody tr td{
    display: grid;
    grid-template-columns: 38% 1fr;
    gap: 8px 12px;
    padding: 6px 0;
    border: none;
    vertical-align: top;
    word-break: break-word;
  }
  table.stack-on-mobile tbody tr td::before{
    content: attr(data-label);
    font-weight: 600;
    opacity: .72;
  }
  /* Make code blocks readable */
  table.stack-on-mobile code,
  table.stack-on-mobile pre{
    white-space: normal;
    word-break: break-word;
    overflow-wrap: anywhere;
  }
}


/* === Stacked table mobile polish === */
@media (max-width: 720px){
  table.stack-on-mobile tbody tr{
    background: var(--panel-bg, #eef5ff);
    border: 1px solid rgba(0,0,0,.06);
    padding: 10px 12px;
  }
  table.stack-on-mobile tbody tr td{
    grid-template-columns: 32% 1fr; /* slightly less label width to reduce left whitespace */
  }
  table.stack-on-mobile tbody tr td.empty{ display: none; }
}



/* Hide rows that are only placeholders */
table.stack-on-mobile tbody tr.row-empty{ display:none; }


/* === Stacked table mobile: compact (labels above values) === */
@media (max-width: 720px){
  table.stack-on-mobile tbody tr td{
    display: block;
    padding: 6px 0;
    border: none;
  }
  table.stack-on-mobile tbody tr td::before{
    display: block;
    margin: 0 0 4px 0;
    line-height: 1.2;
  }
  /* first/last spacing inside a card */
  table.stack-on-mobile tbody tr td:first-child{ padding-top: 4px; }
  table.stack-on-mobile tbody tr td:last-child{ padding-bottom: 2px; }
}



/* --- v64-dark-locale-cssonly-v4: dark native <select> only --- */
@media (prefers-color-scheme: dark){
  .drawer .lang-select,
  select.lang-select {
    color-scheme: dark;
    color: #e6e6e6 !important;
    background-color: #111318 !important;
    border-color: #2a2f36 !important;
  }
}


/* --- v65.1-dark-inputs-fix (20251016-132915) --- */
/* Force readable text in inputs/textarea on dark OS scheme (Android/Chrome quirks) */
@media (prefers-color-scheme: dark){
  .contact-form input[type="text"],
  .contact-form input[type="email"],
  .contact-form input[type="tel"],
  .contact-form input[type="url"],
  .contact-form textarea,
  form.contact input[type="text"],
  form.contact input[type="email"],
  form.contact textarea,
  form input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=button]):not([type=submit]),
  form textarea {
    color: #e6e6e6 !important;
    -webkit-text-fill-color: #e6e6e6 !important; /* fixes Samsung/Chrome text invisibility */
    caret-color: #e6e6e6;
    background-color: #111318 !important;
    border-color: #2a2f36 !important;
    appearance: none;
    -webkit-appearance: none;
  }
  form input::placeholder,
  form textarea::placeholder {
    color: #9aa4b2 !important;
    opacity: .9;
  }
  form input:focus,
  form textarea:focus {
    outline-color: #94a3b8;
    box-shadow: 0 0 0 2px rgba(148,163,184,.35) inset;
  }
  /* ensure UA picks dark palette for native widgets */
  form, .contact-form, .contact {
    color-scheme: dark;
  }
}


/* LinkedIn follow button (hub-de) */
.libutton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 6px 12px;
  text-decoration: none !important;
  color: #ffffff !important;
  border-radius: 14px;
  background-color: #0A66C2;
  font-family: "SF Pro Text", Helvetica, sans-serif;
  font-size: 14px;
  line-height: 1;
  height: 32px;
  transition: transform .12s ease, box-shadow .12s ease, opacity .12s ease;
  box-shadow: 0 1px 2px rgba(0,0,0,.06);
  opacity: 0.92;
}
.libutton:hover { transform: translateY(-1px); box-shadow: 0 2px 6px rgba(0,0,0,.12); opacity: 1; }
.libutton svg { width: 16px; height: 16px; }
.libutton-wrap { margin-top: 12px; }
@media (prefers-reduced-motion: reduce) {
  .libutton { transition: none; }
}


/* ===== 2025‑11‑09 Hotfix: LinkedIn hero SVG blowing up on hub-de ===== */
/* Guard against runaway SVG sizing inside hub header */
.hub-de .post>header svg { max-width: 64px; max-height: 64px; height: auto; }
/* Ensure button icon stays compact */
.hub-de .libutton svg { width: 16px; height: 16px; }


/* v61: contain LinkedIn icon so it never overgrows */
.li-icon { display:inline-flex; width: 16px; height: 16px; align-items:center; justify-content:center; line-height:0; flex:0 0 auto; overflow:hidden; }
.li-icon svg { width: 100%; height: 100%; }

@media (min-width: 768px) {
  .li-icon { width: clamp(16px, 1.5vw, 20px); height: clamp(16px, 1.5vw, 20px); }
}



/* assets/css/lang-pills.css */
.lang-pills{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.lang-pills a{display:inline-block;padding:.15rem .5rem;border-radius:.4rem;border:1px solid currentColor;text-decoration:none}.lang-pills a[aria-current="true"],.lang-pills a.active{font-weight:600}

/* assets/css/ui-enhancements.css */

/* ui-enhancements.css - subtle, performant micro-interactions */
:root {
  --ease-out: cubic-bezier(.22,.61,.36,1);
  --ring: 0 0 0 3px rgba(37,99,235,.25);
}

/* Buttons and primary CTAs */
a.button, button, .btn, .cta {
  transition: transform .18s var(--ease-out), box-shadow .18s var(--ease-out), background-color .18s var(--ease-out), color .18s var(--ease-out);
}
a.button:hover, button:hover, .btn:hover, .cta:hover { transform: translateY(-1px); box-shadow: 0 8px 16px rgba(0,0,0,.08); }
a.button:active, button:active, .btn:active, .cta:active { transform: translateY(0); box-shadow: 0 4px 10px rgba(0,0,0,.06); }
a.button:focus-visible, button:focus-visible, .btn:focus-visible, .cta:focus-visible { outline: none; box-shadow: var(--ring); }

/* Links underline animation */
a:not(.button):not(.btn):not(.cta) {
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 100%;
  background-repeat: no-repeat;
  background-size: 0% 1px;
  transition: background-size .2s var(--ease-out);
}
a:not(.button):not(.btn):not(.cta):hover { background-size: 100% 1px; }
a:not(.button):not(.btn):not(.cta):focus-visible { box-shadow: var(--ring); border-radius: 4px; }

/* Lang switcher lighter hover */
.lang-switcher.segmented a {
  transition: color .15s var(--ease-out);
}
.lang-switcher.segmented a:hover { color: #0b61d8; }

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}


/* inline language links under H1 */
.lang-inline {
  margin: .25rem 0 1rem;
  font-size: .95rem;
  color: #475569;
}
.lang-inline a { color: inherit; text-decoration: none; }
.lang-inline a:hover { text-decoration: underline; }
.lang-inline a.cur { font-weight: 600; color: #0b61d8; }

/* partner badges layout spacing */
.partner-badges { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.partner-badges a { display: inline-flex; align-items: center; gap: 0.5rem; }


/* Ensure skip-link is only visible on focus */
.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.skip-link:focus{left:16px;top:16px;width:auto;height:auto;padding:8px 12px;background:#fff;border:2px solid #111;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.2);z-index:10000}



/* --- Outdoor embed: responsive map --- */
.embed-map{border-radius:14px;overflow:hidden;background:#f3f4f6}
.embed-map iframe{width:100%;height:100%;border:0}

@supports (aspect-ratio: 1 / 1){
  .embed-map{aspect-ratio:16 / 9}
  @media (max-width: 640px){
    /* Taller map on phones so UI не "срезается" */
    .embed-map{aspect-ratio:4 / 5; min-height:380px}
  }
  @media (max-width: 480px){
    .embed-map{min-height:420px} /* extra safety for very small screens */
  }
}

/* Fallback for old browsers without aspect-ratio */
@supports not (aspect-ratio: 1 / 1){
  .embed-map{position:relative}
  .embed-map::before{content:"";display:block;padding-top:56.25%} /* 16:9 */
  .embed-map iframe{position:absolute;inset:0;width:100%;height:100%}
  @media (max-width: 640px){
    .embed-map::before{padding-top:125%} /* 4:5 on phones */
    .embed-map{min-height:380px}
  }
}


/* Outdoor CTA pill */
.outdoor-cta{display:inline-block;margin-left:8px;padding:6px 10px;border:1px solid #111;border-radius:999px;text-decoration:none;color:#111;font-size:14px;line-height:1}
.outdoor-cta:hover{background:#f6f7f9}
@media (max-width:640px){
  .outdoor-cta{margin-left:0;display:inline-block;margin-top:8px}
}


/* --- Outdoor page fit & overflow guard --- */
.outdoor-page main{overflow-x:hidden}
.outdoor-page .embed-map{max-width:100%;border-radius:16px;overflow:hidden;box-sizing:border-box}
.outdoor-page .embed-map iframe{display:block;width:100%;height:100%;border:0;border-radius:16px}

/* Safe paddings on very small screens to avoid visual spillover */
@media (max-width:420px){
  .outdoor-page .embed-map{margin-left:0;margin-right:0;min-height:440px}
}

/* In case some global styles set negative margins, clamp all iframes in this page */
.outdoor-page iframe{max-width:100%}




  /* remove rounding when stretching to the edges */
  .outdoor-page .embed-bleed .embed-map{ border-radius: 0 }
.nobr{white-space:nowrap}

/* Legal note icon as background (immune to global <img> rules) */
footer .legal-note .icon-scale{
  display:inline-block;
  width:1em;
  height:1em;
  vertical-align:text-bottom;
  margin-right:.35em;
  background-repeat:no-repeat;
  background-position:center;
  background-size:contain;
  background-image:url("../icons/scale.webp");
}
@supports (background-image: image-set(url("/assets/icons/scale.webp") 1x, url("../icons/scale@2x.webp") 2x)){
  footer .legal-note .icon-scale{
    background-image:image-set(url("/assets/icons/scale.webp") 1x, url("../icons/scale@2x.webp") 2x);
  }
}

.legal-note a{pointer-events:auto; position:relative; z-index:1}

/* Floating CTA: keep close chip outside bubble, don't overlap the action button */
.floating-cta .cta-inner{position:relative; padding-right:6.25rem;}
.floating-cta .btn{position:relative; z-index:2;}
.floating-cta .close{
  position:absolute; top:-8px; right:-8px;
  width:28px; height:28px;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid rgba(0,0,0,.2); border-radius:50%;
  background:#fff; box-shadow:0 2px 6px rgba(0,0,0,.15);
  z-index:3;
}
.floating-cta .close::before, .floating-cta .close::after{content:none}
@media (max-width:480px){
  .floating-cta .cta-inner{padding-right:5rem;}
  .floating-cta .close{top:-6px; right:-6px; width:24px; height:24px}
}



/* Floating CTA close button: visible X, no white square */
.floating-cta .close{
  position:absolute; top:-8px; right:-8px;
  width:28px; height:28px;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid rgba(0,0,0,.25);
  border-radius:50%;
  background:#fff; box-shadow:0 2px 6px rgba(0,0,0,.15);
  padding:0; line-height:1; cursor:pointer; z-index:3;
}
.floating-cta .close svg{width:14px; height:14px; display:block}
.floating-cta .close:hover{box-shadow:0 3px 10px rgba(0,0,0,.2)}
@media (max-width:480px){
  .floating-cta .close{top:-6px; right:-6px; width:24px; height:24px}
  .floating-cta .close svg{width:12px; height:12px}
}


/* Prevent transform from breaking fixed positioning */
.floating-cta{transform:none}


/* assets/css/lang-switcher.css */
.lang-switcher.segmented{--seg-bg:#fff;--seg-br:12px;--seg-border:1px solid rgba(0,0,0,.12);--seg-shadow:0 1px 2px rgba(0,0,0,.06);--seg-gap:2px;--seg-pad:4px;--seg-font:clamp(0.9rem,2.2vw,1rem);--seg-height:42px;position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--seg-gap);background:var(--seg-bg);border:var(--seg-border);border-radius:var(--seg-br);padding:var(--seg-pad);box-shadow:var(--seg-shadow);width:min(280px,90vw);user-select:none;-webkit-user-select:none;}.lang-switcher.segmented a{position:relative;display:grid;place-items:center;height:var(--seg-height);border-radius:calc(var(--seg-br) - var(--seg-pad));text-decoration:none;font-weight:600;font-size:var(--seg-font);color:#0f172a;z-index:1;}.lang-switcher.segmented::before{content:"";position:absolute;inset:var(--seg-pad);width:calc((100% - (var(--seg-gap) * 2) - var(--seg-pad)*2) / 3);height:calc(100% - var(--seg-pad)*2);border-radius:calc(var(--seg-br) - var(--seg-pad));background:rgba(15,23,42,.06);transition:transform 220ms ease;z-index:0;}.lang-switcher.segmented[data-active="de"]::before{transform:translateX(0%);}.lang-switcher.segmented[data-active="en"]::before{transform:translateX(100%);}.lang-switcher.segmented[data-active="fr"]::before{transform:translateX(200%);}.lang-switcher.segmented a[aria-selected="true"]{color:#0b61d8;}.lang-switcher.segmented a:focus-visible{outline:2px solid #0b61d8;outline-offset:2px;}.lang-switcher.segmented{margin:.5rem auto 1rem;}@media (prefers-color-scheme:dark){.lang-switcher.segmented{--seg-bg:rgba(255,255,255,.06);--seg-border:1px solid rgba(255,255,255,.16);--seg-shadow:none;}.lang-switcher.segmented a{color:#e5e7eb;}.lang-switcher.segmented::before{background:rgba(255,255,255,.12);}.lang-switcher.segmented a[aria-selected="true"]{color:#93c5fd;}}@media (max-width:640px){.lang-switcher.segmented{--seg-height:40px;--seg-font:clamp(0.9rem,3.2vw,1rem);width:min(300px,92vw);}}.page-vcv .lang-switcher.segmented{position:fixed;bottom:1rem;right:1rem;margin:0;z-index:30;}@media (max-width:640px){.page-vcv .lang-switcher.segmented{--seg-height:48px;--seg-font:clamp(1rem,4vw,1.1rem);width:min(320px,94vw);bottom:.75rem;right:.75rem;}}\n .lang-switcher.segmented a{box-shadow:none !important;transition:background .2s ease,box-shadow .2s ease;}.lang-switcher.segmented a.active{box-shadow:0 8px 24px rgba(0,0,0,.12) !important;}.lang-switcher.segmented a{background:transparent !important;box-shadow:none !important;transition:background .2s ease,box-shadow .2s ease,color .2s ease;}.lang-switcher.segmented a.active{background:#eef0f3 !important;box-shadow:0 8px 24px rgba(0,0,0,.12) !important;}.lang-switcher.segmented a:not(.active){color:#111 !important;}.lang-switcher.segmented{display:inline-flex !important;gap:12px !important;padding:6px !important;background:#fff !important;border:2px solid #ECEFF1 !important;border-radius:16px !important;box-shadow:0 8px 24px rgba(0,0,0,.08) !important;overflow:hidden;}.lang-switcher.segmented a{display:inline-flex !important;align-items:center !important;justify-content:center !important;min-width:72px !important;padding:10px 18px !important;border-radius:12px !important;font-weight:700 !important;text-decoration:none !important;color:#111 !important;background:transparent !important;box-shadow:none !important;transition:background .2s ease,box-shadow .2s ease,color .2s ease;}.lang-switcher.segmented a.active{background:#EEF0F3 !important;box-shadow:0 8px 24px rgba(0,0,0,.14) !important;color:#0A58CA !important;}.lang-switcher.segmented::before,.lang-switcher.segmented::after{content:none !important;}

/* assets/css/form-validate.css */
.field-error{outline:2px solid #c00;box-shadow:0 0 0 2px rgba(204,0,0,.15);}.form-error-summary{color:#c00;}

/* assets/css/cta-hotfix-20251020.css */
#sec-cta .cta-inner{position:relative !important;}#sec-cta .close{position:absolute !important;top:-8px !important;right:-8px !important;width:28px !important;height:28px !important;z-index:3 !important;}@media (max-width:480px){#sec-cta .close{top:-6px !important;right:-6px !important;width:24px !important;height:24px !important;}}

/* assets/css/cta-fix-20251020.css */
#sec-cta .close,button.close{color:#111 !important;}#sec-cta .close .icon-close,button.close .icon-close{width:20px;height:20px;display:inline-block;}

/* assets/css/fab-indicator.css */
.fab-indicator{position:absolute;right:10px;top:10px;width:7px;height:7px;border-radius:50%;background:#111;opacity:.9;pointer-events:none}.fab-indicator.sec{background:#0ea5e9;}.fab-indicator.blog{background:#8b5cf6;}.fab-indicator.lab{background:#10b981;}.fab-indicator.about{background:#f59e0b;}.fab-indicator.contact{background:#ef4444;}

/* assets/css/footer-order-v9.6.css */
.site-footer{display:grid;gap:12px;padding:16px 0;}.site-footer .footer-more-info{text-decoration:underline;}@media (min-width:768px){.site-footer{gap:14px;}}.floating-cta .close{width:28px;height:28px;padding:4px;border:none;background:#fff;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;}.floating-cta .close .icon-close{width:20px;height:20px;display:block;}

/* assets/css/install-hub.css */

/* === Install Hub — Off-white fallback (no color-mix) === */
.install-hub-item{
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid #e5e7eb; /* neutral divider */
}

.install-hub-btn{
  appearance: none;
  border-radius: 12px;
  min-height: 48px;
  width: 100%;
  padding: 12px 16px;
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font: 600 15px/1.2 system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol",sans-serif;
  color: #1f2937;                 /* text-slate-800 */
  background: #f7f7f7;            /* near-panel off-white */
  border: 1px solid #e5e7eb;      /* slate-200 */
  box-shadow: 0 1px 0 rgba(0,0,0,.02);
  transition: background-color .12s ease, border-color .12s ease, transform .04s ease;
}
.install-hub-btn:hover{
  background: #efefef;            /* slightly darker on hover */
  border-color: #d6d9df;
}
.install-hub-btn:active{ transform: translateY(1px); }
.install-hub-btn:focus-visible{ outline: 2px solid #0ea5e9; outline-offset: 2px; }

/* Icon inherits text color */
.install-hub-btn .icon{
  inline-size: 1.1em;
  block-size: 1.1em;
  flex: 0 0 auto;
  background: currentColor;
  -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="%23000" viewBox="0 0 24 24"><path d="M12 3a1 1 0 0 1 1 1v7.586l2.293-2.293a1 1 0 1 1 1.414 1.414l-4.007 4.007a1 1 0 0 1-1.414 0L7.279 10.707a1 1 0 0 1 1.414-1.414L11 11.586V4a1 1 0 0 1 1-1Zm-7 13a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3v-2Z"/></svg>');
  mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="%23000" viewBox="0 0 24 24"><path d="M12 3a1 1 0 0 1 1 1v7.586l2.293-2.293a1 1 0 1 1 1.414 1.414l-4.007 4.007a1 1 0 0 1-1.414 0L7.279 10.707a1 1 0 0 1 1.414-1.414L11 11.586V4a1 1 0 0 1 1-1Zm-7 13a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2a3 3 0 0 1-3 3H8a3 3 0 0 1-3-3v-2Z"/></svg>');
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

/* Dark mode fallback */
@media (prefers-color-scheme: dark){
  .install-hub-item{ border-top-color: #374151; } /* slate-700 */
  .install-hub-btn{
    color: #f3f4f6;           /* slate-100 */
    background: #111827;      /* slate-900-ish */
    border-color: #374151;    /* slate-700 */
    box-shadow: 0 1px 0 rgba(255,255,255,.04);
  }
  .install-hub-btn:hover{
    background: #0f172a;      /* slightly lighter than bg */
    border-color: #4b5563;    /* slate-600 */
  }
}
