/* =========================================================
   LET'S DRAW TECH — NARZĘDZIA SIECIOWE
   Kolorystyka oparta wyłącznie o zmienne LDT, dzięki czemu
   narzędzia automatycznie działają w motywie jasnym i ciemnym.
   ========================================================= */
.ldt-net{display:grid;gap:16px;min-width:0;color:var(--ink-strong)}
.ldt-net *{box-sizing:border-box}
.ldt-net-card{border:1px solid var(--line);border-radius:14px;background:var(--paper);padding:16px;min-width:0}
.ldt-net-card.soft{background:var(--canvas)}
.ldt-net-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.ldt-net-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.ldt-net-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,.28fr) auto;gap:10px;align-items:end}
.ldt-net-form.ldt-net-form-single{grid-template-columns:minmax(0,1fr) auto}
.ldt-net-field{display:grid;gap:6px;min-width:0;color:var(--ink-strong);font-size:.84rem;font-weight:750}
.ldt-net-field input,.ldt-net-field select{width:100%;min-width:0;min-height:44px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink-strong);font:inherit}
.ldt-net-field input:focus,.ldt-net-field select:focus{outline:2px solid color-mix(in srgb,var(--ink) 22%,transparent);border-color:var(--ink)}
.ldt-net-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ldt-net-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:9px 15px;border:1px solid var(--ldt-tool-btn-primary-border,var(--ink));border-radius:10px;background:var(--ldt-tool-btn-primary-bg,var(--ink));color:var(--ldt-tool-btn-primary-text,#fff);font:inherit;font-weight:800;line-height:1.2;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}
.ldt-net-button:hover,.ldt-net-button:focus-visible{transform:translateY(-1px);box-shadow:var(--shadow-soft);outline:none}
.ldt-net-button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.ldt-net-button.secondary{background:var(--ldt-tool-btn-secondary-bg,var(--paper));border-color:var(--ldt-tool-btn-secondary-border,var(--line));color:var(--ldt-tool-btn-secondary-text,var(--ink-strong))}
.ldt-net-note{margin:0;color:var(--muted);font-size:.78rem;line-height:1.55}
.ldt-net-status{min-height:44px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--canvas);color:var(--muted);font-size:.84rem;line-height:1.45}
.ldt-net-status.is-ok{border-left:4px solid var(--ok);color:var(--ink-strong)}
.ldt-net-status.is-error{border-left:4px solid var(--danger);color:var(--danger)}
.ldt-net-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ldt-net-result{border:1px solid var(--line);border-radius:12px;background:var(--canvas);padding:13px;min-width:0}
.ldt-net-result small{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}
.ldt-net-result strong{display:block;margin-top:4px;color:var(--ink-strong);font-size:1.2rem;line-height:1.25;overflow-wrap:anywhere}
.ldt-net-result span{display:block;margin-top:4px;color:var(--muted);font-size:.76rem;line-height:1.4}
.ldt-net-speed{display:grid;grid-template-columns:minmax(280px,.82fr) minmax(0,1.18fr);gap:18px;align-items:stretch}
.ldt-net-gauge-card{display:grid;align-content:start;gap:14px;border:1px solid var(--line);border-radius:15px;background:var(--canvas);padding:18px}
.ldt-net-gauge{--ldt-net-progress:0deg;width:min(290px,100%);aspect-ratio:1;margin-inline:auto;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at center,var(--paper) 0 57%,transparent 58%),conic-gradient(var(--ink) var(--ldt-net-progress),var(--soft) 0);border:1px solid var(--line)}
.ldt-net-gauge-inner{text-align:center;padding:18px;min-width:0}
.ldt-net-gauge-value{display:block;color:var(--ink-strong);font-size:clamp(2.6rem,6vw,4rem);font-weight:750;line-height:1;letter-spacing:-.045em;overflow-wrap:anywhere}
.ldt-net-gauge-unit{display:block;margin-top:5px;color:var(--muted);font-size:.82rem;font-weight:800}
.ldt-net-gauge-label{display:block;margin-top:9px;color:var(--accent);font-size:.72rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.ldt-net-progress{height:8px;border-radius:999px;background:var(--soft);overflow:hidden}
.ldt-net-progress>span{display:block;width:0;height:100%;border-radius:inherit;background:var(--ink);transition:width .2s ease}
.ldt-net-speed-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-content:start}
.ldt-net-speed-result{border:1px solid var(--line);border-radius:13px;background:var(--paper);padding:15px;min-width:0}
.ldt-net-speed-result small{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:850}
.ldt-net-speed-number{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin-top:5px}
.ldt-net-speed-number strong{font-size:1.8rem;line-height:1;color:var(--ink-strong)}
.ldt-net-speed-number span{font-size:.76rem;color:var(--muted);font-weight:750}
.ldt-net-summary{grid-column:1/-1;border:1px solid var(--line);border-radius:13px;background:var(--canvas);padding:14px}
.ldt-net-summary strong{display:block;color:var(--ink-strong)}
.ldt-net-summary p{margin:5px 0 0;color:var(--muted);font-size:.82rem;line-height:1.5}
.ldt-net-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:2px}
.ldt-net-links>span{color:var(--muted);font-size:.78rem}
.ldt-net-chip{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);font-size:.78rem;font-weight:750;text-decoration:none;cursor:pointer}
.ldt-net-chip:hover,.ldt-net-chip:focus-visible{border-color:var(--ink);outline:none}
.ldt-net-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.ldt-net-table{width:100%;min-width:520px;border-collapse:collapse;font-size:.82rem}
.ldt-net-table th,.ldt-net-table td{padding:9px 11px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.ldt-net-table tr:last-child td{border-bottom:0}
.ldt-net-table th{background:var(--canvas);color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.07em}
.ldt-net-table td{color:var(--ink-strong);overflow-wrap:anywhere;word-break:break-word}
.ldt-net-port-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.ldt-net-port{border:1px solid var(--line);border-radius:11px;background:var(--canvas);padding:11px;text-align:center}
.ldt-net-port strong{display:block;color:var(--ink-strong);font-size:1.05rem}
.ldt-net-port span{display:block;margin-top:3px;color:var(--muted);font-size:.74rem}
.ldt-net-port.is-open{border-color:color-mix(in srgb,var(--ok) 65%,var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ok) 18%,transparent)}
.ldt-net-port.is-open span{color:var(--ok);font-weight:800}
.ldt-net-port.is-closed span{color:var(--muted)}
.ldt-net-ip-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;background:var(--canvas);padding:16px}
.ldt-net-ip-main small{display:block;color:var(--muted);font-weight:750}
.ldt-net-ip-main strong{display:block;margin-top:4px;color:var(--ink-strong);font-size:clamp(1.35rem,4vw,2rem);overflow-wrap:anywhere}
@media(max-width:900px){.ldt-net-speed{grid-template-columns:1fr}.ldt-net-gauge{width:min(250px,100%)}.ldt-net-port-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.ldt-net-grid,.ldt-net-grid-3,.ldt-net-form,.ldt-net-form.ldt-net-form-single,.ldt-net-results,.ldt-net-speed-results,.ldt-net-ip-main{grid-template-columns:1fr}.ldt-net-summary{grid-column:auto}.ldt-net-button{width:100%}.ldt-net-actions .ldt-net-button{width:auto}.ldt-net-gauge-card{padding:14px}.ldt-net-card{padding:14px}}
@media(max-width:430px){.ldt-net-port-grid{grid-template-columns:1fr}.ldt-net-actions .ldt-net-button{width:100%}}
