/* Konferencje Naukowe 2.3 — automatyczny spis treści i powrót do góry. */

.kn-page-tools {
  --tool-bg:rgba(4,17,38,.92);
  --tool-panel:#07152d;
  --tool-text:#f8fbff;
  --tool-copy:#aebdd1;
  --tool-line:rgba(198,216,240,.18);
  position:fixed;
  z-index:940;
  right:22px;
  bottom:86px;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  pointer-events:none;
}
.kn-site[data-theme="light"] .kn-page-tools {
  --tool-bg:rgba(255,255,255,.94);
  --tool-panel:#fff;
  --tool-text:#071a36;
  --tool-copy:#405772;
  --tool-line:rgba(7,26,54,.16);
}
.kn-page-tool-buttons {
  display:flex;
  align-items:center;
  gap:10px;
  pointer-events:auto;
}
.kn-page-toc-toggle,
.kn-back-top,
.kn-page-toc-close {
  appearance:none;
  border:0;
  font:inherit;
  cursor:pointer;
}
.kn-page-toc-toggle[hidden] { display:none !important; }
.kn-page-toc-toggle {
  position:relative;
  isolation:isolate;
  display:flex;
  align-items:center;
  gap:10px;
  min-height:52px;
  padding:0 14px;
  overflow:hidden;
  border:1px solid var(--tool-line);
  border-radius:999px;
  background:var(--tool-bg);
  color:var(--tool-text);
  box-shadow:0 18px 50px rgba(2,8,21,.28),inset 0 1px rgba(255,255,255,.08);
  backdrop-filter:blur(22px);
  transition:transform .25s,border-color .25s,box-shadow .25s;
}
.kn-page-toc-toggle::before {
  content:"";
  position:absolute;
  z-index:-1;
  top:-80%;
  left:-45%;
  width:28%;
  height:260%;
  transform:rotate(18deg) translateX(-260%);
  background:rgba(255,255,255,.55);
  filter:blur(8px);
  transition:transform .75s;
}
.kn-page-toc-toggle:hover,
.kn-page-toc-toggle[aria-expanded="true"] {
  transform:translateY(-3px);
  border-color:rgba(255,41,72,.72);
  box-shadow:0 22px 58px rgba(2,8,21,.34),0 0 28px rgba(255,41,72,.12);
}
.kn-page-toc-toggle:hover::before { transform:rotate(18deg) translateX(760%); }
.kn-page-toc-toggle > svg { flex:0 0 auto; width:20px !important; height:20px !important; color:#ff4962; }
.kn-page-toc-toggle > span { font-size:10px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.kn-page-toc-toggle > b {
  display:grid;
  place-items:center;
  min-width:23px;
  height:23px;
  border:1px solid var(--tool-line);
  border-radius:50%;
  color:var(--tool-copy);
  font-size:9px;
}
.kn-back-top {
  position:relative;
  display:grid;
  place-items:center;
  width:54px;
  height:54px;
  padding:0;
  visibility:hidden;
  opacity:0;
  transform:translateY(14px) scale(.86);
  border-radius:50%;
  background:var(--tool-bg);
  color:var(--tool-text);
  box-shadow:0 18px 50px rgba(2,8,21,.3),0 0 0 1px var(--tool-line);
  backdrop-filter:blur(22px);
  pointer-events:none;
  transition:opacity .28s,transform .28s,visibility .28s,box-shadow .25s;
}
.kn-back-top.is-visible {
  visibility:visible;
  opacity:1;
  transform:none;
  pointer-events:auto;
}
.kn-back-top:hover { transform:translateY(-4px); box-shadow:0 24px 58px rgba(2,8,21,.34),0 0 28px rgba(54,124,255,.18); }
.kn-back-top::after {
  content:"Do góry";
  position:absolute;
  right:calc(100% + 11px);
  padding:7px 9px;
  visibility:hidden;
  opacity:0;
  transform:translateX(5px);
  border:1px solid var(--tool-line);
  border-radius:6px;
  background:var(--tool-bg);
  color:var(--tool-text);
  font-size:8px;
  font-weight:800;
  letter-spacing:.1em;
  white-space:nowrap;
  text-transform:uppercase;
  transition:opacity .2s,transform .2s,visibility .2s;
}
.kn-back-top:hover::after { visibility:visible; opacity:1; transform:none; }
.kn-back-top-ring { position:absolute; inset:0; width:100% !important; height:100% !important; transform:rotate(-90deg); }
.kn-back-top-ring circle { fill:none; stroke-width:1.5; }
.kn-back-top-ring .track { stroke:var(--tool-line); }
.kn-back-top-ring .progress {
  stroke:#ff2948;
  stroke-linecap:round;
  stroke-dasharray:100;
  stroke-dashoffset:100;
  transition:stroke-dashoffset .12s linear;
  filter:drop-shadow(0 0 4px rgba(255,41,72,.55));
}
.kn-site .kn-toc-target { scroll-margin-top:130px; }
.kn-back-top > span { position:relative; z-index:2; display:grid; place-items:center; width:21px; height:21px; }
.kn-back-top > span svg { width:21px !important; height:21px !important; }

.kn-page-toc {
  position:absolute;
  right:0;
  bottom:68px;
  width:min(370px,calc(100vw - 44px));
  max-height:min(68vh,650px);
  overflow:hidden;
  visibility:hidden;
  opacity:0;
  transform:translateY(18px) scale(.96);
  transform-origin:right bottom;
  border:1px solid var(--tool-line);
  border-radius:18px;
  background:var(--tool-panel);
  color:var(--tool-text);
  box-shadow:0 38px 110px rgba(2,8,21,.46),inset 0 1px rgba(255,255,255,.07);
  backdrop-filter:blur(28px);
  pointer-events:none;
  transition:opacity .28s,transform .28s,visibility .28s;
}
.kn-page-toc.is-open { visibility:visible; opacity:1; transform:none; pointer-events:auto; }
.kn-page-toc::before {
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at 88% 5%,rgba(54,124,255,.16),transparent 27%),radial-gradient(circle at 8% 96%,rgba(220,24,51,.1),transparent 30%);
}
.kn-page-toc > header {
  position:relative;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:22px 22px 18px;
}
.kn-page-toc > header > div { display:grid; gap:4px; }
.kn-page-toc > header span { color:#ef4c63; font-size:8px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.kn-page-toc > header strong { color:var(--tool-text) !important; font-size:19px; font-weight:650; }
.kn-page-toc-close {
  display:grid;
  place-items:center;
  width:35px;
  height:35px;
  border:1px solid var(--tool-line);
  border-radius:50%;
  background:transparent;
  color:var(--tool-copy);
  font-size:24px;
  font-weight:300;
  line-height:1;
  transition:color .2s,border-color .2s,transform .2s;
}
.kn-page-toc-close:hover { color:var(--tool-text); border-color:#ff2948; transform:rotate(8deg); }
.kn-page-toc-progress { position:relative; z-index:2; height:1px; margin:0 22px; overflow:hidden; background:var(--tool-line); }
.kn-page-toc-progress i { display:block; width:0; height:100%; background:linear-gradient(90deg,#dc1833,#ff2948,#367cff); box-shadow:0 0 12px rgba(255,41,72,.6); transition:width .12s linear; }
.kn-page-toc ol {
  position:relative;
  z-index:2;
  display:grid;
  max-height:calc(min(68vh,650px) - 96px);
  margin:0 !important;
  padding:10px 12px 16px !important;
  overflow:auto;
  list-style:none !important;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,41,72,.55) transparent;
}
.kn-page-toc li { margin:0 !important; padding:0 !important; border-bottom:1px solid var(--tool-line); }
.kn-page-toc li:last-child { border-bottom:0; }
.kn-page-toc a {
  position:relative;
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  align-items:center;
  gap:12px;
  min-height:58px;
  padding:9px 10px;
  color:var(--tool-copy) !important;
  transition:color .2s,background .2s,transform .2s;
}
.kn-page-toc a::after {
  content:"";
  position:absolute;
  top:12px;
  right:0;
  bottom:12px;
  width:2px;
  opacity:0;
  background:linear-gradient(#ff2948,#367cff);
  box-shadow:0 0 10px rgba(255,41,72,.55);
  transition:opacity .2s;
}
.kn-page-toc a:hover,
.kn-page-toc a.is-active { color:var(--tool-text) !important; background:rgba(54,124,255,.08); transform:translateX(2px); }
.kn-page-toc a.is-active::after { opacity:1; }
.kn-page-toc a b {
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  border:1px solid var(--tool-line);
  border-radius:50%;
  color:#ef4c63;
  font-size:8px;
  letter-spacing:.06em;
}
.kn-page-toc a span { font-size:13px; font-weight:650; line-height:1.42; }
.kn-page-toc a.is-active b { border-color:rgba(255,41,72,.62); background:rgba(220,24,51,.09); }

.kn-site[data-theme="light"] .kn-page-toc-toggle,
.kn-site[data-theme="light"] .kn-back-top,
.kn-site[data-theme="light"] .kn-page-toc {
  box-shadow:0 22px 60px rgba(25,55,92,.17),inset 0 1px #fff;
}
.kn-site[data-theme="light"] .kn-page-toc a:hover,
.kn-site[data-theme="light"] .kn-page-toc a.is-active { background:#eef4fc; }

@media (max-width:680px) {
  .kn-page-tools { right:14px; bottom:84px; }
  .kn-page-tool-buttons { gap:8px; }
  .kn-page-toc-toggle { width:50px; min-height:50px; justify-content:center; padding:0; }
  .kn-page-toc-toggle > span { display:none; }
  .kn-page-toc-toggle > b { position:absolute; top:-3px; right:-3px; min-width:20px; height:20px; background:#dc1833; color:#fff; border-color:#ff7386; }
  .kn-back-top { width:50px; height:50px; }
  .kn-back-top::after { display:none; }
  .kn-page-toc {
    position:fixed;
    right:12px;
    bottom:148px;
    left:12px;
    width:auto;
    max-height:min(66vh,590px);
    border-radius:18px;
    transform-origin:right bottom;
  }
  .kn-page-toc ol { max-height:calc(min(66vh,590px) - 96px); }
  .kn-page-toc a { min-height:56px; }
}

@media (prefers-reduced-motion:reduce) {
  .kn-page-toc-toggle,
  .kn-back-top,
  .kn-page-toc,
  .kn-page-toc a { transition-duration:.01ms !important; }
}
