/* Krivox shared cookie-consent styles. Canonical source: Krivox-Org/landing-site
   assets/consent.css; krivox.io carries a byte-identical vendored copy. Every colour,
   face and layer comes from a --kc-* token with krivox.io's palette as the fallback,
   so a site restyles the banner by setting tokens, never by editing this file. */
.kc-bar,.kc-panel{font-family:var(--kc-sans,"DM Sans","Helvetica Neue",Arial,sans-serif)}
/* hidden = off-screen AND out of the accessibility tree and tab order; visibility
   flips after the slide so the dismiss animation still plays */
.kc-bar{position:fixed;left:0;right:0;bottom:0;z-index:var(--kc-z-bar,140);padding:15px 0;
  background:var(--kc-bg,rgba(12,12,20,.95));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border-top:1px solid var(--kc-line,rgba(255,255,255,.06));
  transform:translateY(110%);visibility:hidden;
  transition:transform .5s var(--kc-e,cubic-bezier(.16,1,.3,1)),visibility 0s linear .5s}
.kc-bar.kc-on{transform:none;visibility:visible;transition:transform .5s var(--kc-e,cubic-bezier(.16,1,.3,1)),visibility 0s}
.kc-in{max-width:var(--kc-w,1160px);margin:0 auto;padding:0 var(--kc-pad,28px);display:flex;flex-wrap:wrap;gap:14px 24px;align-items:center;justify-content:space-between}
.kc-copy{flex:1 1 340px;margin:0;font-size:13.5px;line-height:1.6;color:var(--kc-fg-2,#8a8a9a)}
.kc-copy a{color:var(--kc-accent-2,#38d9c5)}
.kc-acts{display:flex;gap:10px;flex:none;flex-wrap:wrap}
.kc-btn{-webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;
  border:1px solid var(--kc-line,rgba(255,255,255,.06));background:var(--kc-raise,rgba(255,255,255,.06));color:var(--kc-fg-2,#8a8a9a);
  font-family:inherit;font-size:13px;font-weight:600;line-height:1;letter-spacing:.01em;
  padding:11px 20px;border-radius:var(--kc-radius,8px);cursor:pointer;transition:background .25s,color .25s,border-color .25s,opacity .25s}
.kc-btn:hover{background:var(--kc-raise-2,rgba(255,255,255,.1));color:var(--kc-fg,#f0f0f5)}
.kc-btn:focus-visible{outline:2px solid var(--kc-accent,#4a7cff);outline-offset:2px}
.kc-btn-primary{background:var(--kc-grad,linear-gradient(135deg,#4a7cff 0%,#38d9c5 100%));color:var(--kc-on-accent,#06060a);border-color:transparent}
.kc-btn-primary:hover{color:var(--kc-on-accent,#06060a);opacity:.9}
.kc-modal{position:fixed;inset:0;z-index:var(--kc-z-panel,150);display:none;align-items:center;justify-content:center;padding:24px}
.kc-modal.kc-on{display:flex}
.kc-back{position:absolute;inset:0;background:var(--kc-backdrop,rgba(6,6,10,.76));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);opacity:0;transition:opacity .5s var(--kc-e,cubic-bezier(.16,1,.3,1))}
.kc-modal.kc-vis .kc-back{opacity:1}
.kc-panel{position:relative;width:100%;max-width:470px;max-height:calc(100svh - 48px);overflow-y:auto;
  background:var(--kc-panel,#0c0c14);border:1px solid var(--kc-line,rgba(255,255,255,.06));border-radius:var(--kc-radius-lg,24px);padding:44px 42px;
  opacity:0;transform:translateY(18px) scale(.97);transition:opacity .55s var(--kc-e,cubic-bezier(.16,1,.3,1)),transform .55s var(--kc-e,cubic-bezier(.16,1,.3,1));
  box-shadow:var(--kc-shadow,0 60px 140px -30px rgba(0,0,0,.85))}
.kc-modal.kc-vis .kc-panel{opacity:1;transform:none}
.kc-x{position:absolute;top:20px;right:20px;width:36px;height:36px;border:0;border-radius:50%;background:transparent;display:flex;align-items:center;justify-content:center;color:var(--kc-fg-3,#5a5a6a);cursor:pointer;transition:color .3s,background .3s}
.kc-x:hover{color:var(--kc-fg,#f0f0f5);background:var(--kc-raise-2,rgba(255,255,255,.1))}
.kc-x:focus-visible{outline:2px solid var(--kc-accent,#4a7cff);outline-offset:2px}
.kc-eyebrow{font-family:var(--kc-mono,"JetBrains Mono","SF Mono",Consolas,monospace);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--kc-eyebrow,var(--kc-accent-2,#38d9c5));margin:0 0 16px}
.kc-title{font-family:var(--kc-serif,"Cormorant Garamond",Georgia,serif);font-size:2rem;font-weight:500;line-height:1.15;margin:0 0 10px;color:var(--kc-fg,#f0f0f5)}
.kc-sub{font-size:14.5px;line-height:1.55;color:var(--kc-fg-2,#8a8a9a);margin:0 0 30px}
.kc-row{display:flex;gap:18px;align-items:flex-start;padding:17px 0;border-bottom:1px solid var(--kc-line,rgba(255,255,255,.06))}
.kc-row:last-of-type{border-bottom:0}
.kc-row h4{font-size:14px;font-weight:600;line-height:1.3;color:var(--kc-fg,#f0f0f5);margin:0 0 5px}
.kc-row p{font-size:12.5px;line-height:1.55;color:var(--kc-fg-3,#5a5a6a);margin:0}
.kc-keys{font-family:var(--kc-mono,"JetBrains Mono","SF Mono",Consolas,monospace);font-size:11px;color:var(--kc-fg-3,#5a5a6a);margin-top:6px;display:block}
.kc-sw{flex:none;margin:3px 0 0 auto;position:relative}
.kc-sw input{position:absolute;opacity:0;width:0;height:0}
.kc-track{display:block;width:42px;height:24px;border-radius:12px;background:var(--kc-raise-2,rgba(255,255,255,.1));border:1px solid var(--kc-line,rgba(255,255,255,.06));position:relative;cursor:pointer;transition:background .3s,border-color .3s}
.kc-track::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--kc-fg-3,#5a5a6a);transition:transform .3s,background .3s}
.kc-sw input:checked + .kc-track{background:var(--kc-accent-soft,rgba(74,124,255,.28));border-color:var(--kc-accent,#4a7cff)}
.kc-sw input:checked + .kc-track::after{transform:translateX(18px);background:var(--kc-accent-2,#38d9c5)}
.kc-sw input:focus-visible + .kc-track{box-shadow:0 0 0 3px var(--kc-accent-soft,rgba(74,124,255,.3))}
.kc-sw input:disabled + .kc-track{opacity:.45;cursor:default}
.kc-save{margin-top:20px;display:flex;gap:10px;flex-wrap:wrap}
.kc-save .kc-btn{flex:1 1 auto}
.kc-note{font-size:11.5px;line-height:1.55;color:var(--kc-fg-3,#5a5a6a);margin:16px 0 0}
@media (prefers-reduced-motion:reduce){
  .kc-bar,.kc-back,.kc-panel,.kc-track,.kc-track::after,.kc-btn{transition:none}
}
@media (max-width:620px){
  .kc-in{padding:0 var(--kc-pad-sm,22px)}
  /* Three nowrap buttons do not fit one phone row, and flex:1 cannot shrink them
     below their content. So the preferences link takes its own row and the two
     decisions sit side by side beneath it, equal width, neither dominant. */
  .kc-acts{width:100%}
  .kc-acts .kc-btn{flex:1 1 0;min-width:0}
  .kc-acts [data-kc-open]{flex-basis:100%}
  .kc-panel{padding:38px 26px}
}
