/* VXQN — production polish layer
   Loaded after enterprise.css + pages.css on every public page. */

/* ===== Skip to content (a11y) ===== */
.skip{
  position:fixed;top:8px;left:8px;z-index:200;
  background:var(--accent);color:#fff;
  padding:10px 16px;border-radius:8px;font-weight:500;font-size:14px;
  transform:translateY(-200%);transition:transform .18s ease;
}
.skip:focus{transform:translateY(0);outline:2px solid var(--fg);outline-offset:2px}

:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

/* ===== Cookie banner ===== */
.cookie-banner{
  position:fixed;bottom:20px;left:20px;right:20px;z-index:90;
  max-width:920px;margin:0 auto;
  border:1px solid var(--line-2);background:rgba(13,15,19,0.96);backdrop-filter:blur(14px);
  border-radius:12px;padding:18px 22px;box-shadow:0 24px 60px rgba(0,0,0,0.5);
  opacity:0;transform:translateY(14px);transition:opacity .24s,transform .24s;
}
.cookie-banner.in{opacity:1;transform:translateY(0)}
.cookie-banner.out{opacity:0;transform:translateY(14px)}
.cb-inner{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.cb-text{font-size:13.5px;color:var(--fg-2);line-height:1.5;max-width:580px}
.cb-text strong{color:var(--fg);font-weight:500;margin-right:4px}
.cb-text a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(91,149,248,0.35)}
.cb-actions{display:flex;gap:8px;flex-wrap:wrap}
.cb-actions .btn{padding:9px 14px;font-size:13px}
@media (max-width:600px){
  .cookie-banner{left:12px;right:12px;bottom:12px;padding:14px 16px}
  .cb-inner{flex-direction:column;align-items:stretch;gap:14px}
  .cb-actions{justify-content:stretch}
  .cb-actions .btn{flex:1;justify-content:center}
}

/* ===== Mobile drawer (refined) ===== */
.mob-btn{
  display:none;width:40px;height:40px;border:1px solid var(--line-2);border-radius:8px;
  align-items:center;justify-content:center;background:transparent;
}
.mob-btn span,.mob-btn span::before,.mob-btn span::after{
  content:"";display:block;width:18px;height:1.4px;background:var(--fg);
  transition:transform .22s,top .22s,bottom .22s,background .15s;
}
.mob-btn span{position:relative}
.mob-btn span::before{position:absolute;top:-6px;left:0;right:0}
.mob-btn span::after{position:absolute;top:6px;left:0;right:0}
.mob-btn.open span{background:transparent}
.mob-btn.open span::before{top:0;transform:rotate(45deg)}
.mob-btn.open span::after{top:0;transform:rotate(-45deg)}

.mob-drawer{
  position:fixed;inset:0;z-index:90;
  background:rgba(13,15,19,0.96);backdrop-filter:blur(18px);
  display:flex;flex-direction:column;padding:80px 28px 28px;
  opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s;
  overflow-y:auto;
}
.mob-drawer.open{opacity:1;visibility:visible}
.mob-drawer .group{margin-bottom:14px}
.mob-drawer .group .lbl{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.2em;color:var(--fg-4);
  text-transform:uppercase;padding:14px 0 6px;border-bottom:1px solid var(--line);margin-bottom:6px;
}
.mob-drawer a{
  display:block;font-family:var(--display);font-size:24px;font-weight:500;letter-spacing:-0.018em;
  color:var(--fg);padding:14px 0;border-bottom:1px solid var(--line);
}
.mob-drawer a:last-child{border-bottom:none}
.mob-drawer .cta{margin-top:32px;display:flex;flex-direction:column;gap:10px}
.mob-drawer .cta .btn{justify-content:center;padding:14px 22px}

@media (max-width:880px){
  .mob-btn{display:flex}
  .tnav .links{display:none}
  .nav-mid{display:none}
}

/* ===== Footer (refined columns) ===== */
.site-foot{
  border-top:1px solid var(--line);background:var(--bg-1);
  padding:64px 0 32px;margin-top:0;
}
.site-foot-inner{max-width:1280px;margin:0 auto;padding:0 32px}
.site-foot-cols{
  display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:48px;padding-bottom:48px;
}
.site-foot-brand .brand{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:600;font-size:20px;letter-spacing:-0.018em;color:var(--fg)}
.site-foot-brand .desc{margin-top:18px;font-size:13.5px;line-height:1.6;color:var(--fg-3);max-width:300px}
.site-foot-brand .badges{margin-top:24px;display:flex;gap:10px;flex-wrap:wrap}
.site-foot-brand .badge{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--fg-3);padding:5px 10px;border:1px solid var(--line-2);border-radius:99px;
}
.site-foot-col h6{font-family:var(--mono);font-size:10.5px;letter-spacing:0.18em;color:var(--fg-4);text-transform:uppercase;font-weight:500;margin-bottom:14px}
.site-foot-col a{display:block;font-size:13.5px;color:var(--fg-2);padding:5px 0;transition:color .15s}
.site-foot-col a:hover{color:var(--accent)}
.site-foot-bottom{
  padding-top:28px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;
  font-family:var(--mono);font-size:11.5px;color:var(--fg-4);letter-spacing:0.06em;
}
.site-foot-bottom .links{display:flex;gap:20px;flex-wrap:wrap}
.site-foot-bottom .links a:hover{color:var(--fg-2)}
.site-foot-bottom .status-link{display:flex;align-items:center;gap:8px;color:var(--moss)}
.site-foot-bottom .status-link::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--moss);box-shadow:0 0 8px var(--moss)}

@media (max-width:980px){
  .site-foot-cols{grid-template-columns:1fr 1fr;gap:32px}
}
@media (max-width:560px){
  .site-foot-cols{grid-template-columns:1fr;gap:24px}
}

/* ===== Print (legal pages) ===== */
@media print{
  .tnav,.site-foot,.tfoot,.cookie-banner,.mob-btn,.mob-drawer,.skip{display:none !important}
  body{background:#fff;color:#000}
  .doc-body{color:#222;max-width:none}
  .doc-body h2,.doc-body h3{color:#000;page-break-after:avoid}
  .doc-body a{color:#000;text-decoration:underline}
  .doc-aside{display:none}
  .doc{display:block;padding:0;max-width:none}
  .phead{padding:0 0 24px;border-color:#ccc}
  .phead h1{color:#000;font-size:32px}
  .phead .lede{color:#444}
  table{page-break-inside:avoid}
  hr{border-color:#ccc}
}

/* ===== Motion reduction ===== */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}
}

/* =====================================================================
   Responsive — mobile/tablet refinements (additive, desktop untouched)
   Owns: cookie banner, mobile drawer, site footer.
   Breakpoints already present above: 600 / 880 / 980 / 560.
   ===================================================================== */

/* --- Footer: reduce oversized padding on tablet/phone --- */
@media (max-width:820px){
  .site-foot{padding:48px 0 28px}
  .site-foot-inner{padding:0 24px}
}
@media (max-width:560px){
  /* When the 5-column grid collapses to one column the brand "desc" max-width
     of 300px can leave an awkward narrow paragraph — let it use full width.
     Lift the column links to a comfortable >=44px tap target and readable
     14px type, and let long links/emails wrap rather than overflow. */
  .site-foot-brand .desc{max-width:none}
  .site-foot-col h6{margin-bottom:8px}
  .site-foot-col a{
    font-size:14px;padding:13px 0;line-height:1.3;min-height:44px;
    display:flex;align-items:center;
    overflow-wrap:anywhere;
  }
}
@media (max-width:480px){
  .site-foot{padding:40px 0 24px}
  .site-foot-inner{padding:0 20px}
  .site-foot-cols{padding-bottom:36px}
  /* Footer meta row stacks cleanly so the legal links don't crowd the copyright */
  .site-foot-bottom{flex-direction:column;align-items:flex-start;gap:6px}
  /* Legal links get real tap targets and breathing room once stacked */
  .site-foot-bottom .links{gap:0 18px;width:100%}
  .site-foot-bottom .links a{padding:12px 0;min-height:44px;display:inline-flex;align-items:center}
  .site-foot-bottom .status-link{padding:12px 0;min-height:44px}
  .site-foot-brand .brand{font-size:19px}
}

/* --- Cookie banner --- */
/* The <=600 rule already columns the banner and stretches the buttons
   (flex:1, side-by-side). Keep the explanatory text readable (>=14px) and
   make sure the side-by-side buttons clear the 44px tap-target floor. */
@media (max-width:600px){
  .cb-text{font-size:14px}
  .cb-actions .btn{padding:13px 14px;min-height:44px;align-items:center}
}
/* Below ~400px the usable width is too tight for two buttons in a row,
   so stack them full-width for comfortable tapping. */
@media (max-width:400px){
  .cookie-banner{left:10px;right:10px;bottom:10px;padding:14px 14px}
  .cb-actions{flex-direction:column}
  .cb-actions .btn{width:100%;flex:none}
}

/* --- Mobile drawer --- */
@media (max-width:880px){
  /* The hamburger toggle is the only way to open/close the drawer on phones,
     so it must clear the 44px tap-target floor (desktop stays 40px). */
  .mob-btn{width:44px;height:44px}
}
@media (max-width:480px){
  /* Tighten side padding on small phones; drop the heading slightly so the
     close button (top-right .mob-btn) sits comfortably above the links.
     Links stay 24px with >=44px tap height via the 14px vertical padding. */
  .mob-drawer{padding:72px 20px max(24px,env(safe-area-inset-bottom))}
  /* Long nav labels never push the drawer wider than the viewport */
  .mob-drawer a{overflow-wrap:anywhere}
  .mob-drawer .cta{margin-top:24px}
}
