/* ---------- Cookie consent banner: dark full-width bar ---------- */
.nn-cookie-banner{
  position:fixed;z-index:1200;left:0;right:0;bottom:0;
  background:#0b0d0c;color:#f5f5f5;
  border-top:1px solid rgba(255,255,255,.14);
  font-family:inherit;
  transform:translateY(102%);
  transition:transform .35s ease;
}
.nn-cookie-banner.nn-open{transform:none}
.nn-cookie-inner{max-width:1200px;margin:0 auto;padding:22px 24px 18px}
.nn-cookie-head{display:flex;align-items:center;gap:10px;margin:0 0 8px}
.nn-cookie-head svg{flex:none;display:block}
.nn-cookie-title{font-size:17px;font-weight:600;margin:0}
.nn-cookie-text{font-size:14px;line-height:1.55;margin:0 0 4px;color:rgba(245,245,245,.82);max-width:72ch}
.nn-cookie-rows{margin:10px 0 2px}
.nn-cookie-rows[hidden]{display:none}
.nn-cookie-row{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:13px 0;border-top:1px solid rgba(255,255,255,.13);
}
.nn-cookie-row h4{font-size:15px;margin:0 0 3px;font-weight:600}
.nn-cookie-row p{font-size:13px;margin:0;color:rgba(245,245,245,.68);line-height:1.45}
.nn-cookie-always{font-size:13px;font-weight:600;color:#2fbf82;white-space:nowrap}
/* toggle switch */
.nn-switch{position:relative;flex:none;width:46px;height:26px}
.nn-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.nn-track{
  position:absolute;inset:0;border-radius:999px;background:rgba(255,255,255,.28);
  transition:background .2s ease;pointer-events:none;
}
.nn-track::after{
  content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4);transition:left .2s ease;
}
.nn-switch input:checked + .nn-track{background:#12a585}
.nn-switch input:checked + .nn-track::after{left:23px}
.nn-switch input:focus-visible + .nn-track{outline:2px solid #2fbf82;outline-offset:2px}
/* actions */
.nn-cookie-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
/* Banner buttons reuse the site's own primary-button / secondary-button classes,
   so they match the main page exactly (sharp corners, jade primary, hover lift,
   sketch decorations). .nn-btn is only a hook for banner layout. */
@media (max-width:560px){
  .nn-cookie-inner{padding:18px 16px 14px}
  .nn-cookie-actions .nn-btn{flex:1 1 auto}
}
@media (prefers-reduced-motion:reduce){
  .nn-cookie-banner{transition:none}
}

/* ---------- Floating cookie settings button (bottom-left, all pages) ---------- */
.nn-cookie-fab-wrap{
  margin:0 0 14px;padding:0 var(--page-padding,24px);
  display:flex;justify-content:flex-start;
}
.nn-cookie-fab{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  margin-left:-6px;padding:2px 4px;
  background:transparent;border:0;cursor:pointer;
  transition:transform .25s ease;
}
.nn-cookie-fab:hover{transform:translateY(-2px)}
.nn-cookie-fab:focus-visible{outline:2px solid #0e8f78;outline-offset:3px;border-radius:8px}
.nn-cookie-fab .cookie-wrap{--size:48px;filter:drop-shadow(0 3px 8px rgba(23,33,30,.28))}
.nn-cookie-fab-label{font-size:9px;font-weight:600;letter-spacing:.3px;line-height:1;color:var(--color-text-secondary,#5c6f68)}

/* ---------- Animated cookie icon (reused as the fab graphic) ---------- */
.cookie-wrap{
    --size:120px;
    width:var(--size);height:var(--size);
    cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;
  }
  .cookie-svg{display:block;width:100%;height:100%;overflow:visible}

  /* ---- entrance (runs once) ---- */
  .cookie-draw{
    stroke-dasharray:var(--len);stroke-dashoffset:0;
    animation:ck-draw .8s ease-out var(--ed,.1s) backwards;
  }
  .cookie-fade{opacity:var(--fo,1);animation:ck-fade .55s ease var(--ed,.35s) backwards}
  .cookie-pop{
    opacity:1;transform:scale(1);transform-box:fill-box;transform-origin:center;
    animation:ck-pop .38s cubic-bezier(.34,1.56,.64,1) var(--ed,.7s) backwards;
  }
  /* crumbs need entrance pop AND idle drift on one element */
  .cookie-crumb.cookie-pop{
    animation:ck-pop .38s cubic-bezier(.34,1.56,.64,1) var(--ed,1.25s) backwards,
               ck-crumb-drift 5.5s ease-in-out var(--cd,2s) infinite;
  }
  @keyframes ck-draw{from{stroke-dashoffset:var(--len)}to{stroke-dashoffset:0}}
  @keyframes ck-fade{from{opacity:0}}
  @keyframes ck-pop{
    0%{opacity:0;transform:scale(0)}
    60%{opacity:1;transform:scale(1.15)}
    100%{opacity:1;transform:scale(1)}
  }

  /* ---- idle (infinite, slow) — one transform per nested group ---- */
  .cookie-float{animation:ck-float 5s ease-in-out 1.6s infinite}
  .cookie-rock{transform-box:fill-box;transform-origin:center;animation:ck-rock 6.5s ease-in-out 1.6s infinite}
  .cookie-breathe{transform-box:fill-box;transform-origin:center;animation:ck-breathe 4.2s ease-in-out 1.6s infinite}
  @keyframes ck-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
  @keyframes ck-rock{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
  @keyframes ck-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.015)}}

  /* crumbs drift idly */
  .cookie-crumb{
    transform-box:fill-box;transform-origin:center;
    animation:ck-crumb-drift 5.5s ease-in-out var(--cd,2s) infinite;
  }
  @keyframes ck-crumb-drift{
    0%,100%{transform:translate(0,0);opacity:.55}
    50%{transform:translate(2px,-3px);opacity:1}
  }

  /* ---- hover ---- */
  .cookie-hover{transition:transform .35s ease}
  .cookie-wrap:hover .cookie-hover{transform:translateY(-4px) scale(1.05)}
  .cookie-wrap:hover .cookie-rock{animation:ck-wobble .7s ease}
  .cookie-wrap:hover .cookie-crumb{animation:ck-crumb-pop .55s ease}
  @keyframes ck-wobble{
    0%{transform:rotate(0)}25%{transform:rotate(-7deg)}50%{transform:rotate(5deg)}
    75%{transform:rotate(-2.5deg)}100%{transform:rotate(0)}
  }
  @keyframes ck-crumb-pop{
    0%{transform:translate(0,0) scale(1)}
    45%{transform:translate(var(--px,0px),var(--py,-6px)) scale(1.4)}
    100%{transform:translate(0,0) scale(1)}
  }

  
  /* ---- reduced motion: show final state, no animation ---- */
  @media (prefers-reduced-motion:reduce){
    .cookie-wrap *,.cookie-wrap{animation:none!important;transition:none!important}
  }
