/* ============================================================
   NorthGuard — tools.css
   Style dla trzech pełnych narzędzi online: kalkulator, symulator, mapa.
   Dołączany TYLKO na stronach /narzedzia/*.html (przez {{EXTRA_HEAD}} w build.py,
   src/narzedzia/*.html -> frontmatter `extra_head`). Używa wyłącznie tokenów
   zdefiniowanych w site.css (--acc, --panel, --line, ...) — zero nowych kolorów,
   żeby jasny/ciemny motyw działał automatycznie.
   ============================================================ */

/* hero mini-nagłówek narzędzia (spójny z resztą podstron) */
.tool-hero{border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--bg2),var(--bg) 70%)}
.tool-hero .wrap{padding-top:56px;padding-bottom:40px;max-width:820px}
.tool-hero .lead{max-width:62ch}
.tool-hero .kicker a{color:var(--acc)}

.tool-wrap{padding-top:0;padding-bottom:64px}

/* layout narzędzia: panel konfiguracji + panel wyniku, obok siebie na desktopie */
.tool-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:28px;align-items:start}
@media(max-width:900px){
  .tool-layout{grid-template-columns:1fr}
  /* konfigurator: podsumowanie NAD formularzem na mobile (kolejność DOM zostaje: form, potem summary) */
  .tool-layout:has(.k-form) > *:first-child{order:2}
  .tool-layout:has(.k-form) > *:nth-child(2){order:1}
}

.tool-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:28px}
.tool-card h2{margin:0 0 6px;font-size:19px;font-weight:600;letter-spacing:-.01em}
.tool-card .sub{font-size:13.5px;color:var(--muted);margin:0 0 20px}
.tool-card + .tool-card{margin-top:20px}

/* ---------- Kalkulator ---------- */
.calc-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:520px){.calc-grid{grid-template-columns:1fr}}
.calc-opts{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.calc-check{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--txt);
  border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--bg);cursor:pointer;
  transition:border-color .15s}
.calc-check:hover{border-color:var(--acc-line)}
.calc-check input{accent-color:var(--acc);width:17px;height:17px;flex:none}
.calc-check .t{font-weight:600}
.calc-check .d{display:block;color:var(--muted);font-weight:400;font-size:12px}

.calc-result{border:1px solid var(--acc-line);background:var(--acc-soft);border-radius:var(--radius);
  padding:22px}
.calc-breakdown{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:8px}
.calc-breakdown li{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--txt);
  border-bottom:1px dashed var(--line2);padding-bottom:8px}
.calc-breakdown li:last-child{border-bottom:none;padding-bottom:0}
.calc-breakdown b{font-variant-numeric:tabular-nums;white-space:nowrap}
.calc-disclaimer{font-size:11.5px;color:var(--dim);line-height:1.6;margin:0}

/* ---------- Konfigurator wyceny (kroki) ---------- */
.k-progress{display:flex;list-style:none;margin:0 0 28px;padding:0;gap:6px}
.k-progress-step{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;
  font-size:11.5px;color:var(--dim);text-align:center}
.k-progress-num{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line2);background:var(--bg);font-weight:700;font-size:12.5px;color:var(--muted)}
.k-progress-step.is-active .k-progress-num{border-color:var(--acc);color:var(--acc);background:var(--acc-soft)}
.k-progress-step.is-done .k-progress-num{border-color:var(--acc);background:var(--acc);color:var(--btn-txt)}
.k-progress-step.is-active .k-progress-label{color:var(--txt);font-weight:600}
@media(max-width:520px){.k-progress-label{display:none}}

.k-step[hidden]{display:none}
.k-step h2{margin:0 0 6px;font-size:17px;font-weight:600}
.k-step .sub{font-size:13px;color:var(--muted);margin:0 0 18px}

.k-nav{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:24px;flex-wrap:wrap}

.k-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:560px){.k-tiles{grid-template-columns:1fr}}
.k-tile{padding:12px 14px}
.k-tile.is-checked{border-color:var(--acc);background:var(--acc-soft)}

.k-rodo{align-items:flex-start}
.k-rodo .t a{color:var(--acc)}

.k-summary-card{position:sticky;top:16px}
@media(max-width:900px){.k-summary-card{position:static}}

/* ---------- Symulator ---------- */
.sim-layout{display:grid;grid-template-columns:1.3fr .7fr;gap:24px;align-items:start}
@media(max-width:900px){.sim-layout{grid-template-columns:1fr}}
.sim-stage{position:relative;border:1px solid var(--line2);border-radius:var(--radius);
  background:var(--bg2);overflow:hidden}
.sim-stage svg{display:block;width:100%;height:auto}
.sim-hotspot{cursor:pointer;pointer-events:bounding-box}
.sim-hotspot:focus-visible circle:first-child{stroke:var(--acc);stroke-width:2}
.sim-hotspot circle.pulse{animation:tool-pulse 1.8s infinite}
.sim-hotspot.is-checked circle.pulse{animation:none;opacity:0}
.sim-hotspot.is-checked circle:first-child{fill:var(--dim) !important}
@keyframes tool-pulse{0%{opacity:.9;r:7}70%{opacity:0;r:16}100%{opacity:0;r:16}}
@media(prefers-reduced-motion:reduce){.sim-hotspot circle.pulse{animation:none}}
.sim-path{fill:none;stroke:var(--risk);stroke-width:2;stroke-dasharray:6 5;
  opacity:0;transition:opacity .3s}
.sim-path.is-visible{opacity:.85}
.sim-fence{fill:none;stroke:var(--line2);stroke-width:2;stroke-dasharray:7 5}
.sim-building{fill:var(--bg);stroke:var(--line2);stroke-width:1.6}
.sim-gate{stroke:var(--acc);stroke-width:4;stroke-linecap:round}
.sim-dock{fill:var(--bg2);stroke:var(--line2);stroke-width:1.4}
.sim-skylight{fill:none;stroke:var(--line2);stroke-width:1.2;stroke-dasharray:3 3}
.sim-label{font:600 10.5px Poppins,sans-serif;fill:var(--dim);letter-spacing:.05em;text-transform:uppercase}
.sim-hitarea{fill:transparent}

.sim-score-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);
  box-shadow:var(--shadow);padding:24px;text-align:center}
.sim-score-card .num{font-size:44px;font-weight:700;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;margin:6px 0 2px;color:var(--risk);transition:color .3s}
.sim-score-card .num.is-ok{color:#2E9E5B}
.sim-score-card .max{font-size:13px;color:var(--dim)}
.sim-score-bar{height:10px;border-radius:999px;background:var(--bg2);border:1px solid var(--line);
  overflow:hidden;margin:14px 0}
.sim-score-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--risk),var(--acc));
  border-radius:999px;transition:width .5s ease}
.sim-checked-count{font-size:12.5px;color:var(--muted);margin:0}

.sim-panel{border:1px solid var(--line);border-radius:12px;background:var(--bg2);padding:16px 18px;
  margin-top:14px;font-size:13.5px;color:var(--txt);min-height:64px}
.sim-panel .risk-pct{display:inline-block;font-weight:700;color:var(--risk);margin-right:6px}
.sim-panel h4{margin:0 0 6px;font-size:14.5px;font-weight:600}
.sim-panel p{margin:0 0 8px;color:var(--muted)}
.sim-panel .fix{color:var(--txt);font-weight:500}
.sim-panel.is-empty{color:var(--dim);display:flex;align-items:center}

.sim-summary{display:none;border:1px solid var(--acc-line);background:var(--acc-soft);
  border-radius:var(--radius);padding:22px;margin-top:20px}
.sim-summary.is-visible{display:block}
.sim-summary h3{margin:0 0 10px;font-size:18px;font-weight:600}
.sim-summary ol{margin:0 0 16px;padding-left:20px;color:var(--txt);font-size:14px;line-height:1.7}
.sim-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.sim-legend span{font-size:11.5px;color:var(--dim);border:1px solid var(--line);border-radius:999px;
  padding:4px 10px}

/* ---------- Mapa zagrożeń ---------- */
.map-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;align-items:start}
@media(max-width:900px){.map-layout{grid-template-columns:1fr}}
.map-controls{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.map-toggle{display:inline-flex;border:1px solid var(--line2);border-radius:999px;overflow:hidden}
.map-toggle button{border:none;background:var(--bg);color:var(--muted);font:12.5px Poppins,sans-serif;
  font-weight:600;padding:9px 14px;cursor:pointer;transition:.15s}
.map-toggle button.is-active{background:var(--btn-bg);color:var(--btn-txt)}
.map-stage{border:1px solid var(--line2);border-radius:var(--radius);background:var(--bg2);
  padding:14px;position:relative}
.map-stage svg{display:block;width:100%;height:auto}
.map-stage path{stroke:var(--bg2);stroke-width:1.5;cursor:pointer;transition:filter .15s,stroke .15s}
.map-stage path:hover,.map-stage path:focus-visible{filter:brightness(1.1);stroke:var(--acc);outline:none}
.map-stage path.is-selected{stroke:var(--txt);stroke-width:2.5}
.map-label{font-size:9.5px;fill:var(--dim);pointer-events:none;font-family:Poppins,sans-serif;font-weight:600}

.map-legend{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:11.5px;color:var(--dim)}
.map-legend .scale{flex:1;height:10px;border-radius:999px;
  background:linear-gradient(90deg,var(--acc-soft),var(--acc),var(--risk));border:1px solid var(--line)}

.map-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);
  box-shadow:var(--shadow);padding:24px}
.map-panel h3{margin:0 0 4px;font-size:19px;font-weight:600}
.map-panel .rank{font-size:12px;color:var(--acc);font-weight:600;text-transform:uppercase;
  letter-spacing:.06em;margin:0 0 16px}
.map-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px}
.map-stat{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--bg2)}
.map-stat b{display:block;font-size:18px;font-variant-numeric:tabular-nums;font-weight:600}
.map-stat span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.map-advice{font-size:13.5px;color:var(--txt);line-height:1.7;margin:0 0 18px;
  border-left:3px solid var(--acc);padding-left:14px}
.map-empty{color:var(--dim);font-size:13.5px}

.map-source-note{font-size:11.5px;color:var(--dim);line-height:1.7;margin-top:18px;
  border:1px dashed var(--line2);border-radius:12px;padding:14px 16px}
.map-source-note b{color:var(--muted)}
.map-krajowe{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:14px 16px;
  background:var(--bg2);font-size:12.5px;color:var(--muted);line-height:1.6}

.map-table-wrap{overflow-x:auto;margin-top:14px}
.map-table{width:100%;border-collapse:collapse;font-size:13px;min-width:520px}
.map-table th,.map-table td{border-bottom:1px solid var(--line);padding:10px 12px;text-align:left}
.map-table th{color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  cursor:pointer;user-select:none;white-space:nowrap}
.map-table th.is-sorted::after{content:" ▾";color:var(--acc)}
.map-table td{color:var(--txt);font-variant-numeric:tabular-nums}
.map-table tr.is-selected td{background:var(--acc-soft)}
.map-table tr:hover td{background:var(--bg2)}
.map-table td.name{font-variant-numeric:normal;font-weight:600}

/* ---------- CTA wspólny na końcu narzędzia ---------- */
.tool-cta{margin-top:36px;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--bg2);padding:32px}
.tool-cta h2{font-size:20px;font-weight:600;margin:0 0 4px}
.tool-cta .sub{color:var(--muted);font-size:13.5px;margin:0 0 20px}
