*{box-sizing:border-box}
:root{
  --sidebar-width:242px;
  --sidebar:#1f2937;
  --sidebar-deep:#111827;
  --sidebar-soft:#263244;
  --sidebar-hover:#334155;
  --accent:#2563eb;
  --accent-dark:#1d4ed8;
  --accent-soft:#eff6ff;
  --accent-border:#bfdbfe;
  --bg:#f4f6f9;
  --card:#ffffff;
  --text:#111827;
  --text-soft:#374151;
  --muted:#6b7280;
  --border:#e5e7eb;
  --border-strong:#d1d5db;
  --success:#15803d;
  --danger:#b91c1c;
  --warning:#b45309;
  --info:#1d4ed8;
  --shadow-sm:0 1px 2px rgba(15,23,42,.04);
  --shadow:0 10px 28px rgba(15,23,42,.07);
  --shadow-lg:0 22px 55px rgba(15,23,42,.14);
  --radius:14px;
  --radius-sm:10px;
}
html{min-height:100%;background:var(--bg);scroll-behavior:smooth}
body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:var(--text);background:var(--bg);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
button,input,select,textarea{font:inherit}
button{appearance:none}
::selection{background:#dbeafe;color:#1e3a8a}

/* APPLICATION SHELL */
.app-body{min-height:100vh;overflow-x:hidden}
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:linear-gradient(180deg,var(--sidebar-deep) 0%,var(--sidebar) 42%,#172033 100%);color:#fff;display:flex;flex-direction:column;z-index:40;border-right:1px solid rgba(255,255,255,.04);box-shadow:8px 0 30px rgba(15,23,42,.08)}
.sidebar-brand{height:94px;padding:18px 18px 18px 20px;display:flex;gap:12px;align-items:center;border-bottom:1px solid rgba(255,255,255,.08);position:relative}
.brand-copy{min-width:0}
.brand-mark{width:46px;height:46px;border-radius:13px;background:linear-gradient(145deg,#3b82f6,#1d4ed8);display:grid;place-items:center;color:#fff;flex:0 0 auto;box-shadow:0 10px 24px rgba(37,99,235,.28),inset 0 1px 0 rgba(255,255,255,.22)}
.brand-mark svg{width:26px;height:26px;stroke-width:1.9}
.sidebar-brand strong,.auth-logo strong{display:block;font-size:22px;line-height:1;letter-spacing:.12em;color:#fff}
.sidebar-brand span,.auth-logo span{display:block;font-size:11px;color:#cbd5e1;margin-top:5px;letter-spacing:.025em;white-space:nowrap}
.sidebar-close{display:none;margin-left:auto;width:36px;height:36px;border:0;border-radius:9px;background:rgba(255,255,255,.08);color:#fff;cursor:pointer;place-items:center}
.sidebar-close svg{width:19px;height:19px}
.panel-badge{margin:16px 14px 9px;padding:13px 14px;border-radius:11px;background:rgba(255,255,255,.065);border:1px solid rgba(255,255,255,.09);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.panel-badge small{display:block;color:#94a3b8;font-size:10px;text-transform:uppercase;letter-spacing:.12em;margin-bottom:5px;font-weight:700}
.panel-badge strong{font-size:13px;line-height:1.35;display:block;color:#f8fafc;overflow:hidden;text-overflow:ellipsis}
.nav-section-title{padding:13px 23px 7px;color:#718096;font-size:9px;text-transform:uppercase;letter-spacing:.16em;font-weight:800}
.sidebar-scroll{min-height:0;flex:1;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.42) transparent}.sidebar-scroll::-webkit-scrollbar{width:7px}.sidebar-scroll::-webkit-scrollbar-track{background:transparent}.sidebar-scroll::-webkit-scrollbar-thumb{background:rgba(148,163,184,.32);border-radius:999px}.sidebar-scroll::-webkit-scrollbar-thumb:hover{background:rgba(148,163,184,.52)}.sidebar-nav{padding:0 10px 16px;display:flex;flex-direction:column;gap:4px}
.nav-link{position:relative;display:flex;align-items:center;gap:12px;min-height:43px;padding:10px 12px;border-radius:9px;text-decoration:none;color:#cbd5e1;font-size:13px;font-weight:600;transition:background .16s ease,color .16s ease,transform .16s ease}
.nav-icon{width:23px;height:23px;display:grid;place-items:center;flex:0 0 23px}
.nav-link svg{width:20px;height:20px}
.nav-link:hover{background:rgba(255,255,255,.075);color:#fff;transform:translateX(2px)}
.nav-link.active{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;box-shadow:0 8px 20px rgba(37,99,235,.24);font-weight:750}
.nav-link.active::before{content:"";position:absolute;left:-10px;top:11px;bottom:11px;width:3px;border-radius:0 4px 4px 0;background:#93c5fd}
.sidebar-bottom{flex:0 0 auto;margin-top:0;padding:10px;border-top:1px solid rgba(255,255,255,.08);background:rgba(2,6,23,.12)}
.sidebar-user{display:flex;align-items:center;gap:10px;padding:10px 8px 12px;margin-bottom:4px;border-bottom:1px solid rgba(255,255,255,.07)}
.sidebar-avatar{width:34px;height:34px;border-radius:10px;background:rgba(59,130,246,.18);border:1px solid rgba(147,197,253,.18);display:grid;place-items:center;font-size:11px;font-weight:800;color:#dbeafe;flex:0 0 34px}
.sidebar-user>div:last-child{min-width:0}
.sidebar-user strong,.sidebar-user span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-user strong{font-size:11px;color:#f8fafc}
.sidebar-user span{font-size:10px;color:#94a3b8;margin-top:2px}
.logout-link{color:#fecaca}
.logout-link:hover{background:rgba(239,68,68,.11);color:#fff}
.platform-signature{padding:11px 10px 3px;color:#64748b;font-size:10px;display:flex;justify-content:space-between;gap:8px}
.platform-signature strong{color:#94a3b8;font-weight:700}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(2px);z-index:35}

.main{margin-left:var(--sidebar-width);min-height:100vh;display:flex;flex-direction:column;min-width:0}
.topbar{height:94px;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:15px 30px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:25;box-shadow:var(--shadow-sm)}
.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}
.topbar-title{min-width:0}
.topbar small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:750}
.topbar h1{margin:4px 0 0;font-size:23px;line-height:1.2;letter-spacing:-.025em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-menu-button{display:none;width:42px;height:42px;border:1px solid var(--border);border-radius:11px;background:#fff;color:var(--text-soft);cursor:pointer;place-items:center;box-shadow:var(--shadow-sm)}
.mobile-menu-button svg{width:21px;height:21px}
.identity{display:flex;gap:12px;align-items:center;padding:6px 7px 6px 12px;border:1px solid transparent;border-radius:13px}
.identity-text{text-align:right;min-width:0}
.identity-text strong,.identity-text span{display:block;white-space:nowrap}
.identity-text strong{font-size:13px}
.identity-text span{font-size:11px;color:var(--muted);margin-top:2px}
.avatar{position:relative;width:43px;height:43px;border-radius:12px;background:linear-gradient(145deg,#dbeafe,#bfdbfe);color:var(--accent-dark);font-weight:850;font-size:12px;display:grid;place-items:center;border:1px solid #bfdbfe;box-shadow:0 6px 14px rgba(37,99,235,.12)}
.online-dot{position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:#22c55e;border:2px solid #fff}
.content{padding:28px 30px 36px;flex:1;width:100%;max-width:1680px;margin:0 auto}
.footer{padding:16px 30px;background:#fff;border-top:1px solid var(--border);font-size:11px;color:var(--muted);display:flex;justify-content:space-between;gap:18px}
.footer strong{color:#4b5563}

/* HEADINGS, HERO, LAYOUT */
.hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#ffffff 0%,#f8fbff 55%,#eef5ff 100%);border:1px solid #dbeafe;border-radius:16px;padding:26px 28px;margin-bottom:22px;box-shadow:var(--shadow)}
.hero::after{content:"";position:absolute;width:240px;height:240px;border-radius:50%;right:-90px;top:-120px;background:radial-gradient(circle,rgba(59,130,246,.15),rgba(59,130,246,0) 70%);pointer-events:none}
.hero h2{margin:0 0 8px;font-size:25px;letter-spacing:-.025em}
.hero p{margin:0;color:var(--muted);line-height:1.65;max-width:850px}
.hero-admin{display:flex;align-items:center;justify-content:space-between;gap:24px}
.hero-kicker{display:block;color:var(--accent);font-size:10px;text-transform:uppercase;letter-spacing:.13em;font-weight:850;margin-bottom:7px}
.hero-version{position:relative;z-index:1;background:#fff;border:1px solid var(--accent-border);color:var(--accent-dark);font-weight:800;border-radius:999px;padding:9px 14px;white-space:nowrap;box-shadow:0 6px 16px rgba(37,99,235,.08)}
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}
.page-heading h2{font-size:26px;letter-spacing:-.025em;margin:7px 0 4px}
.page-heading p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}
.heading-actions{display:flex;gap:10px;align-items:center}
.back-link{display:inline-flex;align-items:center;gap:5px;color:var(--accent);font-size:12px;font-weight:750;text-decoration:none;margin-bottom:5px}
.back-link:hover{text-decoration:underline}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:29px 0 13px}
.section-title h2{font-size:18px;margin:0;letter-spacing:-.015em}
.section-title p{margin:4px 0 0;color:var(--muted);font-size:12px}
.section-title-top{margin-top:0}
.grid{display:grid;gap:18px}
.grid-1{grid-template-columns:1fr}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.dashboard-columns{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,1fr);gap:22px;align-items:start}
.dashboard-columns-spaced{margin-top:22px}
.detail-grid{align-items:start}
.org-metrics{margin-bottom:20px}

/* CARDS AND METRICS */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:border-color .16s ease,box-shadow .16s ease}
.card:hover{border-color:#dbe3ee}
.card-body{padding:21px}
.card-header{padding:18px 21px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(180deg,#fff,#fcfdff);border-radius:var(--radius) var(--radius) 0 0}
.card-header h3{margin:0;font-size:15px;letter-spacing:-.01em}
.card-header p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.5}
.card-link{display:block;text-decoration:none;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.card-link:hover{transform:translateY(-3px);border-color:var(--accent-border);box-shadow:0 16px 36px rgba(15,23,42,.1)}
.stat{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;min-height:104px}
.stat-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.055em;font-weight:750}
.stat-value{font-size:30px;font-weight:850;margin-top:7px;letter-spacing:-.04em}
.stat-value-text{font-size:21px;line-height:1.15;margin-top:9px}
.stat-note{font-size:10px;color:var(--muted);margin-top:5px}
.stat-icon,.action-icon{width:46px;height:46px;border-radius:12px;background:linear-gradient(145deg,#eff6ff,#dbeafe);color:var(--accent);display:grid;place-items:center;flex:0 0 46px;border:1px solid #dbeafe}
.stat-icon svg,.action-icon svg{width:23px;height:23px}
.metric-text{font-size:22px;font-weight:850;margin-top:8px;letter-spacing:-.025em}
.metric-date{font-size:18px}
.action-card{display:flex;align-items:flex-start;gap:15px;min-height:132px}
.action-card h3{margin:2px 0 7px;font-size:15px}
.action-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}
.mini-stat{background:#fff;border:1px solid var(--border);border-radius:11px;padding:15px 18px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-sm)}
.mini-stat span{font-size:12px;color:var(--muted)}
.mini-stat strong{font-size:21px}
.success-soft{background:#ecfdf5;color:#15803d}
.warning-soft{background:#fffbeb;color:#b45309}
.sticky-card{position:sticky;top:114px}

/* TABLES */
.table-wrap{overflow-x:auto}
.table-wrap table{min-width:900px}
table{width:100%;border-collapse:separate;border-spacing:0;background:#fff}
th,td{padding:13px 15px;border-bottom:1px solid var(--border);text-align:left;font-size:12px;vertical-align:middle}
th{background:#f8fafc;color:#64748b;font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:800;white-space:nowrap}
tbody tr{transition:background .12s ease}
tbody tr:hover{background:#fafcff}
tr:last-child td{border-bottom:0}
.table-subtext{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.table-link{color:var(--accent-dark);font-weight:750;text-decoration:none}
.table-link:hover{text-decoration:underline}
.table-actions{text-align:right;white-space:nowrap}
.icon-action{width:35px;height:35px;display:inline-grid;place-items:center;border:1px solid var(--border);border-radius:9px;color:var(--accent);background:#fff;text-decoration:none;transition:.15s ease}
.icon-action:hover{background:var(--accent-soft);border-color:var(--accent-border);transform:translateY(-1px)}
.icon-action svg{width:17px;height:17px}
.empty{padding:34px;text-align:center;color:var(--muted);font-size:12px}
.code-pill{display:inline-block;background:#f3f4f6;border:1px solid var(--border);border-radius:7px;padding:4px 7px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:#374151}

/* FORMS */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}
.form-group{display:flex;flex-direction:column;gap:7px;min-width:0}
.form-group.full{grid-column:1/-1}
label{font-size:12px;font-weight:750;color:#374151}
.field-hint{font-size:10px;line-height:1.5;color:var(--muted)}
input,select,textarea{width:100%;border:1px solid var(--border-strong);border-radius:9px;padding:11px 12px;background:#fff;color:#111827;outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
input:hover,select:hover,textarea:hover{border-color:#b8c1cc}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.11)}
textarea{resize:vertical;min-height:110px}
input:disabled,select:disabled,textarea:disabled{background:#f3f4f6;color:#6b7280;cursor:not-allowed;border-color:#e5e7eb}
.form-actions{display:flex;gap:10px;align-items:center;margin-top:21px;flex-wrap:wrap}
.check-row{display:flex;align-items:center;gap:9px;margin-top:15px;cursor:pointer}
.check-row input{width:auto;accent-color:var(--accent)}
.check-row span{font-size:12px;color:#374151}
.locked-field{display:flex;align-items:center;gap:12px;min-height:57px;padding:11px 13px;border:1px solid #dbe3ee;border-radius:10px;background:linear-gradient(180deg,#f8fafc,#f3f6fa)}
.locked-field-icon{width:35px;height:35px;border-radius:9px;display:grid;place-items:center;background:#e5e7eb;color:#475569;flex:0 0 35px}
.locked-field-icon svg{width:18px;height:18px}
.locked-field strong,.locked-field small{display:block}
.locked-field strong{font-size:13px;overflow-wrap:anywhere}
.locked-field small{color:var(--muted);font-size:10px;margin-top:3px}
.security-card .card-body{padding:24px}
.security-intro{display:flex;gap:13px;align-items:center;padding-bottom:18px;margin-bottom:19px;border-bottom:1px solid var(--border)}
.security-icon{width:44px;height:44px;border-radius:12px;background:#eff6ff;color:var(--accent);display:grid;place-items:center;flex:0 0 44px}
.security-icon svg{width:21px;height:21px}
.security-intro h3{margin:0;font-size:15px}
.security-intro p{margin:4px 0 0;color:var(--muted);font-size:11px}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:41px;border:1px solid transparent;border-radius:9px;padding:10px 15px;font-size:12px;font-weight:780;text-decoration:none;cursor:pointer;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.btn svg{width:18px;height:18px}
.btn:hover{transform:translateY(-1px)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-dark));color:#fff;box-shadow:0 8px 18px rgba(37,99,235,.19)}
.btn-primary:hover{box-shadow:0 10px 22px rgba(37,99,235,.25)}
.btn-secondary{background:#fff;color:#374151;border-color:var(--border-strong)}
.btn-secondary:hover{background:#f8fafc;border-color:#b8c1cc}
.btn-danger{background:#dc2626;color:#fff}
.btn-danger:hover{background:#b91c1c}
.btn-success{background:#15803d;color:#fff}
.btn-success:hover{background:#166534}
.btn-small{min-height:34px;padding:7px 10px;font-size:11px}
.btn-block{width:100%}

/* BADGES, ALERTS, DETAILS */
.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800;line-height:1.2}
.badge-large{padding:8px 12px;font-size:11px}
.badge-success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}
.badge-danger{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}
.badge-warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.badge-info{background:#dbeafe;color:#1e40af;border:1px solid #bfdbfe}
.alert{position:relative;padding:13px 15px;border-radius:10px;margin:0 0 16px;font-size:12px;line-height:1.55;border:1px solid}
.alert-success{background:#ecfdf5;color:#166534;border-color:#bbf7d0}
.alert-error{background:#fef2f2;color:#991b1b;border-color:#fecaca}
.alert-warning{background:#fffbeb;color:#92400e;border-color:#fde68a}
.alert-info{background:#eff6ff;color:#1e40af;border-color:#bfdbfe}
.detail-list{display:grid;grid-template-columns:180px 1fr}
.compact-detail{grid-template-columns:160px 1fr}
.detail-list div{padding:12px 0;border-bottom:1px solid var(--border);min-width:0;overflow-wrap:anywhere}
.detail-list div:nth-last-child(-n+2){border-bottom:0}
.detail-list .key{color:var(--muted);font-size:11px}

/* DASHBOARD LISTS */
.setup-list{display:grid;gap:2px}
.setup-item{display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid var(--border)}
.setup-item:last-child{border-bottom:0}
.setup-item>span{width:38px;height:38px;display:grid;place-items:center;border-radius:10px}
.setup-item>span svg{width:19px;height:19px}
.setup-item.complete>span{background:#ecfdf5;color:#15803d;border:1px solid #d1fae5}
.setup-item.pending>span{background:#f3f4f6;color:#64748b;border:1px solid #e5e7eb}
.setup-item strong{display:block;font-size:12px}
.setup-item small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.activity-list{padding:7px 18px}
.activity-item{display:grid;grid-template-columns:12px 1fr;gap:10px;padding:13px 0;border-bottom:1px solid var(--border)}
.activity-item:last-of-type{border-bottom:0}
.activity-dot{width:8px;height:8px;background:var(--accent);border-radius:50%;margin-top:5px;box-shadow:0 0 0 4px #eff6ff}
.activity-item strong{font-size:11px}
.activity-item p{margin:4px 0;color:#4b5563;font-size:11px;line-height:1.5}
.activity-item small{color:var(--muted);font-size:9px}
.activity-more{display:block;padding:13px 0;color:var(--accent);font-size:11px;font-weight:750;text-decoration:none}

/* FILTERS AND PAGINATION */
.result-counter{font-size:12px;color:var(--muted);background:#fff;border:1px solid var(--border);padding:9px 12px;border-radius:9px}
.filter-bar{display:grid;grid-template-columns:minmax(260px,2fr) repeat(3,minmax(150px,1fr)) auto;gap:12px;align-items:end;background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:18px;box-shadow:var(--shadow-sm)}
.filter-bar label{display:block;margin-bottom:7px}
.filter-search{min-width:0}
.filter-actions{display:flex;gap:8px;align-items:center}
.filter-bar .btn{height:42px}
.pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:18px;font-size:12px}
.pagination a{background:#fff;border:1px solid var(--border);border-radius:9px;padding:9px 12px;text-decoration:none;color:var(--accent);font-weight:750}
.pagination a:hover{border-color:var(--accent-border);background:var(--accent-soft)}
.pagination span{color:var(--muted)}

/* AUTHENTICATION */
.auth-body{background:#eef1f5}
.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(400px,45%) 1fr}
.auth-brand{position:relative;overflow:hidden;background:linear-gradient(145deg,#0f172a,#1f2937 58%,#1e3a8a);color:#fff;min-height:100vh}
.auth-brand::before,.auth-brand::after{content:"";position:absolute;border-radius:50%;pointer-events:none}
.auth-brand::before{width:420px;height:420px;right:-190px;top:-150px;background:radial-gradient(circle,rgba(59,130,246,.24),rgba(59,130,246,0) 70%)}
.auth-brand::after{width:350px;height:350px;left:-180px;bottom:-190px;background:radial-gradient(circle,rgba(37,99,235,.18),rgba(37,99,235,0) 72%)}
.auth-brand-inner{position:relative;z-index:1;height:100%;padding:42px 54px;display:flex;flex-direction:column}
.auth-logo{display:flex;align-items:center;gap:12px}
.auth-copy{margin:auto 0;max-width:590px}
.auth-copy .eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:#93c5fd;font-weight:850}
.auth-copy h1{font-size:44px;line-height:1.08;letter-spacing:-.035em;margin:18px 0}
.auth-copy p{font-size:16px;line-height:1.7;color:#cbd5e1;max-width:520px}
.auth-feature-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}
.auth-feature-row span{display:inline-flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid rgba(255,255,255,.12);border-radius:9px;background:rgba(255,255,255,.06);font-size:10px;color:#e2e8f0}
.auth-feature-row svg{width:16px;height:16px;color:#93c5fd}
.auth-brand-footer{color:#94a3b8;font-size:11px}
.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:38px;background:radial-gradient(circle at 80% 10%,#f8fbff,#eef1f5 48%)}
.auth-card{position:relative;width:min(100%,470px);background:#fff;border:1px solid rgba(226,232,240,.9);border-radius:17px;box-shadow:var(--shadow-lg);padding:34px}
.auth-card.wide{width:min(100%,760px)}
.auth-card-mark{width:43px;height:43px;border-radius:12px;display:grid;place-items:center;background:#eff6ff;color:var(--accent);margin-bottom:18px;border:1px solid #dbeafe}
.auth-card-mark svg{width:22px;height:22px}
.auth-card h2{margin:0;font-size:27px;letter-spacing:-.025em}
.auth-card .subtitle{color:var(--muted);margin:8px 0 24px;line-height:1.55;font-size:12px}
.auth-links{display:flex;justify-content:space-between;gap:12px;margin-top:18px;font-size:11px}
.auth-links a{color:var(--accent);text-decoration:none;font-weight:750}
.auth-links a:hover{text-decoration:underline}
.auth-copyright{font-size:10px;color:var(--muted);margin-top:18px}

/* INSTALLER */
.installer-body{background:#eef1f5;padding:30px}
.installer-shell{max-width:1040px;margin:0 auto}
.installer-head{background:linear-gradient(135deg,var(--sidebar-deep),var(--sidebar));color:#fff;border-radius:16px 16px 0 0;padding:25px 30px;display:flex;justify-content:space-between;align-items:center}
.installer-head h1{margin:0;font-size:24px}
.installer-head span{font-size:11px;color:#cbd5e1}
.installer-card{background:#fff;padding:28px 30px;border-radius:0 0 16px 16px;box-shadow:var(--shadow-lg)}
.installer-section{border:1px solid var(--border);border-radius:11px;padding:20px;margin-bottom:18px}
.installer-section h2{font-size:16px;margin:0 0 16px}
.check-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}
.check{padding:10px 12px;border-radius:9px;background:#f9fafb;border:1px solid var(--border);font-size:11px}
.check.ok{color:#166534;background:#f0fdf4;border-color:#bbf7d0}
.check.bad{color:#991b1b;background:#fef2f2;border-color:#fecaca}

/* RESPONSIVE */
@media(max-width:1250px){
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filter-search,.filter-actions{grid-column:1/-1}
  .dashboard-columns{grid-template-columns:1fr}
}
@media(max-width:1050px){
  .auth-copy h1{font-size:37px}
  .content{padding-left:24px;padding-right:24px}
}
@media(max-width:860px){
  .sidebar{transform:translateX(-102%);transition:transform .2s ease}
  .sidebar-close{display:grid}
  .sidebar-open .sidebar{transform:translateX(0)}
  .sidebar-open .sidebar-overlay{display:block}
  .main{margin-left:0}
  .mobile-menu-button{display:grid}
  .topbar{height:78px;padding:13px 18px}
  .topbar h1{font-size:20px}
  .content{padding:20px 18px 30px}
  .footer{padding:15px 18px}
  .auth-shell{grid-template-columns:1fr}
  .auth-brand{display:none}
  .auth-main{min-height:100vh;padding:20px}
  .hero-admin,.page-heading{align-items:flex-start;flex-direction:column}
  .heading-actions{align-items:flex-start;flex-wrap:wrap}
  .sticky-card{position:static}
}
@media(max-width:680px){
  .grid-4,.grid-3,.grid-2,.form-grid{grid-template-columns:1fr}
  .form-group.full{grid-column:auto}
  .filter-bar{grid-template-columns:1fr}
  .filter-search,.filter-actions{grid-column:auto}
  .filter-actions{flex-wrap:wrap}
  .detail-list,.compact-detail{grid-template-columns:1fr}
  .detail-list .key{padding-bottom:2px;border-bottom:0;font-weight:700}
  .detail-list div:nth-last-child(-n+2){border-bottom:1px solid var(--border)}
  .detail-list div:last-child{border-bottom:0}
  .identity-text{display:none}
  .hero{padding:22px}
  .hero h2{font-size:22px}
  .page-heading h2{font-size:23px}
  .auth-card{padding:27px 22px}
  .auth-links{flex-direction:column}
  .check-list{grid-template-columns:1fr}
  .footer{flex-direction:column;gap:3px}
}
@media(max-width:420px){
  .topbar{padding-left:13px;padding-right:13px}
  .content{padding-left:13px;padding-right:13px}
  .topbar h1{max-width:190px}
  .avatar{width:39px;height:39px}
  .card-body{padding:18px}
  .card-header{padding:16px 18px}
  .form-actions .btn{width:100%}
}

/* MODULE: CLIENTS */
.client-metrics{margin-bottom:18px}
.client-filter{grid-template-columns:minmax(300px,2fr) repeat(3,minmax(150px,1fr)) auto}
.list-toolbar{display:flex;justify-content:flex-end;align-items:center;margin:-4px 0 10px}
.mono-number{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;font-size:11px;letter-spacing:.02em}
.contact-line{display:flex;align-items:center;gap:6px;font-size:11px;line-height:1.5;color:var(--text-soft);white-space:nowrap}
.contact-line+ .contact-line{margin-top:4px}
.contact-line svg{width:14px;height:14px;color:var(--muted)}
.contact-count{display:inline-grid;place-items:center;min-width:30px;height:27px;padding:0 8px;border-radius:999px;background:#f1f5f9;border:1px solid var(--border);font-weight:800;color:#475569}
.empty-state{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--muted)}
.empty-state>span{width:50px;height:50px;border-radius:14px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border);margin-bottom:12px}
.empty-state>span svg{width:25px;height:25px}
.empty-state strong{font-size:14px;color:var(--text)}
.empty-state p{margin:6px 0 0;font-size:11px}
.form-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:20px;align-items:start}
.form-main{display:grid;gap:18px}
.form-aside{min-width:0}
.form-section-card{overflow:visible}
.form-hint{font-size:10px;line-height:1.55;color:var(--muted);padding:11px 12px;background:#f8fafc;border:1px solid var(--border);border-radius:9px;margin-top:13px}
.vertical-actions{display:grid;gap:9px;margin-top:18px}
.client-summary-bar{display:grid;grid-template-columns:58px repeat(4,minmax(0,1fr));gap:0;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:20px;overflow:hidden}
.client-summary-bar>div{padding:16px 18px;border-right:1px solid var(--border);display:flex;flex-direction:column;justify-content:center;min-width:0}
.client-summary-bar>div:last-child{border-right:0}
.client-summary-icon{background:linear-gradient(145deg,var(--accent),var(--accent-dark));color:#fff;align-items:center!important;padding:0!important}
.client-summary-icon svg{width:25px;height:25px}
.client-summary-bar small{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;margin-bottom:4px}
.client-summary-bar strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.client-card-columns{grid-template-columns:minmax(0,1.65fr) minmax(300px,.75fr)}
.client-card-columns>section{display:grid;gap:18px}
.client-card-columns>aside{display:grid;gap:18px;align-content:start}
.client-details .detail-link,.detail-link{display:inline-flex;align-items:center;gap:7px;color:var(--accent);text-decoration:none;font-weight:650}
.detail-link svg{width:15px;height:15px}
.detail-link:hover{text-decoration:underline}
.client-contacts-card{overflow:hidden}
.contacts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:18px}
.contacts-grid>.empty-state{grid-column:1/-1}
.contact-card{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:start;padding:15px;border:1px solid var(--border);border-radius:12px;background:#fff;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.contact-card:hover{border-color:var(--accent-border);box-shadow:0 8px 20px rgba(15,23,42,.06);transform:translateY(-1px)}
.contact-card-inactive{background:#f8fafc;opacity:.78}
.contact-avatar{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#e0e7ff,#dbeafe);color:#1e40af;font-weight:850;font-size:12px;border:1px solid #c7d2fe}
.contact-card-main{min-width:0}
.contact-card-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.contact-card-title strong{font-size:12px}
.contact-position{display:block;color:var(--muted);font-size:10px;margin-top:3px}
.contact-card-lines{display:grid;gap:5px;margin-top:10px}
.contact-card-lines a{display:flex;align-items:center;gap:6px;color:var(--text-soft);text-decoration:none;font-size:10px;overflow-wrap:anywhere}
.contact-card-lines a:hover{color:var(--accent)}
.contact-card-lines svg{width:14px;height:14px;color:var(--muted);flex:0 0 auto}
.contact-card-actions{display:flex;align-items:flex-start}
.action-stack{display:grid;gap:9px}
.action-stack form{margin:0}
.notes-box{color:var(--text-soft);line-height:1.7;white-space:normal}
.contact-form-layout{grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr)}
.contact-options{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}

@media(max-width:1250px){
  .client-filter{grid-template-columns:repeat(2,minmax(0,1fr))}
  .client-filter .filter-search,.client-filter .filter-actions{grid-column:1/-1}
  .client-card-columns{grid-template-columns:1fr}
  .client-card-columns .sticky-card{position:static}
}
@media(max-width:980px){
  .form-layout{grid-template-columns:1fr}
  .form-aside .sticky-card{position:static}
  .client-summary-bar{grid-template-columns:50px repeat(2,minmax(0,1fr))}
  .client-summary-bar>div:nth-child(4),.client-summary-bar>div:nth-child(5){border-top:1px solid var(--border)}
  .client-summary-bar>div:nth-child(3){border-right:0}
}
@media(max-width:680px){
  .client-filter{grid-template-columns:1fr}
  .client-filter .filter-search,.client-filter .filter-actions{grid-column:auto}
  .contacts-grid{grid-template-columns:1fr;padding:13px}
  .client-summary-bar{grid-template-columns:44px 1fr}
  .client-summary-bar>div{border-right:0;border-bottom:1px solid var(--border)}
  .client-summary-bar>div:last-child{border-bottom:0}
  .client-summary-icon{grid-row:1/5}
  .contact-card{grid-template-columns:40px minmax(0,1fr)}
  .contact-card-actions{grid-column:2}
  .contact-form-layout{grid-template-columns:1fr}
}

/* ASK WiFi Designer V0.5.0 — Obiekty i kondygnacje */
.object-filter{grid-template-columns:minmax(250px,2fr) repeat(4,minmax(135px,1fr)) auto}
.table-primary-link{color:var(--text);font-weight:750;text-decoration:none}.table-primary-link:hover{color:var(--accent)}
.object-form-layout>section,.object-card-columns>section{display:grid;gap:18px;align-content:start}.single-column{grid-template-columns:1fr}
.object-levels-card{margin-top:18px}.level-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.level-card{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:12px;align-items:center;padding:15px;border:1px solid var(--border);border-radius:12px;background:#fff;transition:.18s ease}
.level-card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-sm)}.level-card-inactive{opacity:.62;background:#f8fafc}
.level-card-icon{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-border)}.level-card-icon svg{width:23px;height:23px}
.level-card-main{min-width:0}.level-card-title{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-bottom:5px}.level-card-main>span{font-size:11px;color:var(--muted)}.level-card-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:7px}.level-card-meta small{font-size:10px;color:var(--muted)}
.level-card-actions{align-self:start}.object-notes-grid{margin-top:18px}.object-mini-grid{padding:14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.object-mini-grid>.empty-state{grid-column:1/-1}.object-mini-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:11px;align-items:center;padding:13px;border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text);background:#fff;transition:.18s ease}.object-mini-card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.object-mini-card-inactive{opacity:.6}
.object-mini-icon{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border)}.object-mini-icon svg{width:22px;height:22px}.object-mini-main{display:flex;flex-direction:column;min-width:0}.object-mini-main strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-mini-main small{font-size:10px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-mini-levels{text-align:center;padding-left:10px;border-left:1px solid var(--border)}.object-mini-levels strong{display:block;font-size:16px}.object-mini-levels small{display:block;font-size:8px;text-transform:uppercase;color:var(--muted);letter-spacing:.06em}
@media(max-width:1250px){.object-filter{grid-template-columns:repeat(3,minmax(0,1fr))}.object-filter .filter-search{grid-column:span 2}.level-grid,.object-mini-grid{grid-template-columns:1fr}}
@media(max-width:760px){.object-filter{grid-template-columns:1fr}.object-filter .filter-search{grid-column:auto}.level-card,.object-mini-card{grid-template-columns:42px minmax(0,1fr)}.level-card-actions,.object-mini-levels{grid-column:2;border-left:0;padding-left:0;text-align:left}.object-notes-grid{grid-template-columns:1fr}}


/* ASK WiFi Designer V0.6.0 — Projekty i wersjonowanie */
.project-filter{grid-template-columns:minmax(250px,2fr) repeat(5,minmax(130px,1fr)) auto}.table-link-sub{display:block;text-decoration:none}.text-danger-strong{color:#b91c1c!important;font-weight:750}.input-suffix{display:flex;align-items:stretch}.input-suffix input{border-radius:9px 0 0 9px}.input-suffix span{display:flex;align-items:center;padding:0 12px;background:#f8fafc;border:1px solid var(--border);border-left:0;border-radius:0 9px 9px 0;color:var(--muted);font-size:10px;font-weight:800}.form-help{display:block;margin-top:8px;color:var(--muted);font-size:10px;line-height:1.5}
.level-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.level-choice{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--border);border-radius:10px;background:#fff;cursor:pointer;transition:.15s ease}.level-choice:hover{border-color:var(--accent-border);background:var(--accent-soft)}.level-choice[hidden]{display:none}.level-choice input{margin-top:3px}.level-choice span{display:flex;flex-direction:column}.level-choice strong{font-size:11px}.level-choice small{font-size:9px;color:var(--muted);margin-top:3px}
.project-card-columns>section{display:grid;gap:18px;align-content:start}.project-card-columns>aside{display:grid;gap:18px;align-content:start}.project-notes-grid{margin:0}.project-levels-card,.project-versions-card{overflow:hidden}.level-map-state{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted);font-size:8px;text-transform:uppercase;letter-spacing:.05em}.level-map-state svg{width:18px;height:18px;color:var(--accent)}
.version-list{display:grid;gap:10px}.version-card{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:13px;align-items:start;padding:14px;border:1px solid var(--border);border-radius:12px;background:#fff}.version-current{border-color:#bfdbfe;background:linear-gradient(90deg,#eff6ff,#fff 42%)}.version-code{width:52px;height:42px;border-radius:10px;background:#eef2ff;border:1px solid #c7d2fe;color:#3730a3;display:grid;place-items:center;font-weight:900;font-size:12px}.version-main{min-width:0}.version-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.version-title strong{font-size:12px}.version-main>span{display:block;margin-top:4px;color:var(--muted);font-size:10px}.version-main p{margin:7px 0 5px;color:var(--text-soft);font-size:10px;line-height:1.5}.version-main small{color:var(--muted);font-size:9px}.coming-soon-action,.version-help-box{display:flex;gap:11px;align-items:center;padding:12px;border:1px dashed var(--accent-border);border-radius:10px;background:var(--accent-soft);color:var(--accent)}.coming-soon-action>span,.version-help-box>span{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:#fff;border:1px solid var(--accent-border)}.coming-soon-action svg,.version-help-box svg{width:18px;height:18px}.coming-soon-action div,.version-help-box div{display:flex;flex-direction:column}.coming-soon-action strong,.version-help-box strong{font-size:10px}.coming-soon-action small,.version-help-box small{font-size:9px;color:var(--muted);margin-top:2px;line-height:1.45}.compact-activity{padding-top:0;padding-bottom:5px}
.project-mini-list{display:grid;gap:9px;padding:14px}.project-mini-list>.empty-state{min-height:150px}.project-mini-card{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:11px;align-items:center;padding:12px;border:1px solid var(--border);border-radius:11px;background:#fff;color:var(--text);text-decoration:none;transition:.15s ease}.project-mini-card:hover{border-color:var(--accent-border);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.project-mini-card-inactive{opacity:.62;background:#f8fafc}.project-mini-icon{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:#eef2ff;color:#4338ca;border:1px solid #c7d2fe}.project-mini-icon svg{width:21px;height:21px}.project-mini-main{display:flex;flex-direction:column;min-width:0}.project-mini-main strong{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-mini-main small{font-size:9px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:1350px){.project-filter{grid-template-columns:repeat(3,minmax(0,1fr))}.project-filter .filter-search{grid-column:span 2}.project-filter .filter-actions{grid-column:1/-1}}
@media(max-width:760px){.project-filter{grid-template-columns:1fr}.project-filter .filter-search,.project-filter .filter-actions{grid-column:auto}.level-picker{grid-template-columns:1fr}.version-card{grid-template-columns:46px minmax(0,1fr)}.version-card>.icon-action{grid-column:2}.project-mini-card{grid-template-columns:40px minmax(0,1fr)}.project-mini-card>.badge{grid-column:2;justify-self:start}}

/* ASK WiFi Designer V0.7.0 — Mapy, rzuty i kalibracja skali */
.map-stat-grid{margin-bottom:18px}.map-filter-card{margin-bottom:18px}.map-filter-bar{display:grid;grid-template-columns:minmax(280px,2fr) minmax(220px,1.4fr) minmax(150px,.8fr) auto;gap:13px;align-items:end}.filter-grow{min-width:0}.filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.map-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.map-card{overflow:hidden;display:flex;flex-direction:column}.map-card-archived{opacity:.65}.map-preview{position:relative;display:block;height:220px;background:#e5e7eb;overflow:hidden;border-bottom:1px solid var(--border)}.map-preview img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}.map-preview:hover img{transform:scale(1.025)}.map-preview-status{position:absolute;left:12px;bottom:12px;box-shadow:0 5px 14px rgba(15,23,42,.12)}.map-preview-placeholder{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;color:var(--muted);background:linear-gradient(135deg,#f8fafc,#eef2f7)}.map-preview-placeholder svg{width:38px;height:38px;color:var(--accent)}.map-preview-placeholder strong{font-size:16px;color:var(--text)}.map-preview-placeholder span{font-size:10px}.map-preview-pdf{background:linear-gradient(135deg,#fff7ed,#ffedd5)}.map-preview-pdf svg{color:#c2410c}.map-preview-blank{background-color:var(--map-bg,#fff);background-image:linear-gradient(rgba(37,99,235,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,.08) 1px,transparent 1px);background-size:24px 24px}
.map-card-body{display:flex;flex-direction:column;gap:13px;flex:1}.map-card-title{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.map-card-title h3{font-size:15px;margin:3px 0 0}.map-code{display:block;color:var(--accent);font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.map-meta-list{display:grid;gap:7px;color:var(--text-soft)}.map-meta-list span{display:flex;align-items:center;gap:7px;font-size:10px}.map-meta-list svg{width:15px;height:15px;color:var(--muted)}.map-card-footer{margin-top:auto;padding-top:11px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:10px}.map-card-footer small{font-size:9px;color:var(--muted)}
.current-file-box{display:flex;align-items:center;gap:10px;margin-top:10px;padding:11px;border:1px solid var(--border);border-radius:10px;background:#f8fafc}.current-file-box>svg{color:var(--accent)}.current-file-box div{display:flex;flex-direction:column;min-width:0}.current-file-box strong{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.current-file-box small{font-size:9px;color:var(--muted)}
.level-map-ready{min-width:110px;flex-direction:row;justify-content:flex-end}.level-map-ready>a:first-child{display:flex;flex-direction:column;align-items:center;gap:3px;text-decoration:none;color:var(--muted)}.level-map-ready>a:first-child:hover{color:var(--accent)}.version-actions{display:flex;gap:5px}
.map-editor-shell{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}.map-editor-main{overflow:hidden}.map-editor-sidebar{display:grid;gap:18px;position:sticky;top:112px}.map-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-bottom:1px solid var(--border);background:#fff}.map-toolbar-group{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.map-toolbar-group label{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:750;color:var(--text-soft)}.map-toolbar-group label svg{width:16px;height:16px}.map-toolbar-group input[type=range]{width:150px}.map-toolbar-group .btn{min-width:34px;padding-left:8px;padding-right:8px}.map-dimensions{font-size:9px;color:var(--muted)}
.map-workspace{height:calc(100vh - 240px);min-height:560px;overflow:auto;background:#cbd5e1;padding:24px;overscroll-behavior:contain}.map-canvas-frame{position:relative;flex:0 0 auto;background:#fff;box-shadow:0 18px 45px rgba(15,23,42,.28);user-select:none}.map-canvas-frame>img{display:block;width:100%;height:100%;object-fit:fill;pointer-events:none}.map-canvas-frame>svg{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;overflow:visible}.map-blank-canvas{background-color:var(--blank-bg,#fff);background-image:linear-gradient(rgba(37,99,235,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,.09) 1px,transparent 1px);background-size:40px 40px}.blank-canvas-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);pointer-events:none}.blank-canvas-label svg{width:50px;height:50px;color:#94a3b8}.blank-canvas-label strong{font-size:18px;margin-top:8px;color:var(--text-soft)}.blank-canvas-label small{margin-top:4px}.map-pdf-frame{height:100%;min-height:560px;background:#fff;box-shadow:0 18px 45px rgba(15,23,42,.2)}.map-pdf-frame iframe{border:0;width:100%;height:100%;min-height:660px;display:block}
.scale-line{stroke:#ef4444;stroke-width:4;stroke-dasharray:12 8;vector-effect:non-scaling-stroke}.scale-point{fill:#fff;stroke:#ef4444;stroke-width:4;vector-effect:non-scaling-stroke}.scale-line-label{font-size:22px;font-weight:800;fill:#991b1b;paint-order:stroke;stroke:#fff;stroke-width:5;stroke-linejoin:round;text-anchor:middle}.scale-instruction{display:grid;grid-template-columns:26px 1fr;gap:9px;align-items:center;margin-bottom:9px}.scale-instruction>span{width:26px;height:26px;border-radius:8px;background:var(--accent-soft);border:1px solid var(--accent-border);color:var(--accent);display:grid;place-items:center;font-size:10px;font-weight:900}.scale-instruction p{margin:0;font-size:10px;color:var(--text-soft)}.scale-point-readout{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:13px 0}.scale-point-readout>div{padding:9px;border:1px solid var(--border);border-radius:9px;background:#f8fafc}.scale-point-readout small,.scale-point-readout strong{display:block}.scale-point-readout small{font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.scale-point-readout strong{font-size:10px;margin-top:4px}.button-row{display:flex;justify-content:space-between;gap:8px;margin-top:12px}.separator{display:flex;align-items:center;gap:9px;margin:18px 0;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.08em}.separator::before,.separator::after{content:"";height:1px;background:var(--border);flex:1}.top-gap{margin-top:10px}.compact-setup-list{margin-bottom:14px}
@media(max-width:1350px){.map-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.map-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.map-filter-bar .filter-grow,.map-filter-bar .filter-actions{grid-column:1/-1}.map-editor-shell{grid-template-columns:1fr}.map-editor-sidebar{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.map-editor-sidebar>.card:first-child{grid-row:span 2}}
@media(max-width:820px){.map-card-grid{grid-template-columns:1fr}.map-editor-toolbar{align-items:flex-start;flex-direction:column}.map-workspace{min-height:440px;height:62vh;padding:12px}.map-editor-sidebar{grid-template-columns:1fr}.map-editor-sidebar>.card:first-child{grid-row:auto}.map-filter-bar{grid-template-columns:1fr}.map-filter-bar .filter-grow,.map-filter-bar .filter-actions{grid-column:auto}.map-toolbar-group input[type=range]{width:120px}.map-preview{height:200px}}

/* ASK WiFi Designer V0.8.0 — Katalog Wi-Fi i zasięgi radiowe */
.wifi-editor-shell{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}.wifi-editor-main{overflow:hidden}.wifi-editor-sidebar{display:grid;gap:18px;position:sticky;top:112px}.wifi-editor-sidebar .card{overflow:hidden}.wifi-editor-main .map-workspace{height:calc(100vh - 240px)}
.wifi-node-shape{cursor:pointer}.wifi-node-shape .coverage-sector{stroke-width:2;vector-effect:non-scaling-stroke}.wifi-node-shape .wifi-direction{stroke-width:4;stroke-linecap:round;vector-effect:non-scaling-stroke}.wifi-node-shape .wifi-marker{stroke:#fff;stroke-width:4;vector-effect:non-scaling-stroke}.wifi-node-shape .wifi-marker-core{fill:#fff;pointer-events:none}.wifi-node-shape .wifi-label{font-size:15px;font-weight:850;fill:#0f172a;paint-order:stroke;stroke:#fff;stroke-width:4;stroke-linejoin:round}.wifi-node-shape.selected .wifi-marker{stroke:#f59e0b;stroke-width:6}.wifi-node-shape.preview{pointer-events:none}.wifi-node-shape.preview .coverage-sector{stroke-dasharray:8 6}.wifi-node-shape.preview .wifi-marker{stroke:#0f172a}
.position-readout{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px dashed var(--accent-border);background:var(--accent-soft);border-radius:10px;margin:12px 0}.position-readout>span{width:35px;height:35px;border-radius:9px;display:grid;place-items:center;color:var(--accent);background:#fff;border:1px solid var(--accent-border)}.position-readout svg{width:18px;height:18px}.position-readout div{display:flex;flex-direction:column}.position-readout small{font-size:8px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.position-readout strong{font-size:11px;margin-top:3px}
.wifi-map-list{display:grid;max-height:360px;overflow:auto}.wifi-list-item{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 14px;border-top:1px solid var(--border);text-decoration:none;color:var(--text);transition:.15s ease}.wifi-list-item:first-child{border-top:0}.wifi-list-item:hover,.wifi-list-item.active{background:var(--accent-soft)}.wifi-list-item.archived{opacity:.58}.wifi-list-icon{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,white);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 28%,white)}.wifi-list-icon svg{width:20px;height:20px}.wifi-list-item>span:nth-child(2){display:flex;flex-direction:column;min-width:0}.wifi-list-item strong{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wifi-list-item small{font-size:8px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wifi-list-item em{font-size:8px;color:#b45309;font-style:normal;font-weight:800}.empty-state.compact{min-height:120px}.status-form-under-grid{display:flex;justify-content:flex-end;margin-top:14px}.table-subline{display:block;font-size:9px;color:var(--muted);margin-top:4px}.checkbox-line label{display:flex;align-items:center;gap:8px;font-weight:650}.checkbox-line input{width:auto}.filter-card{margin-bottom:18px}.filter-grid{display:grid;grid-template-columns:minmax(260px,2fr) minmax(180px,1fr) minmax(150px,.8fr) auto;gap:13px;align-items:end;padding:16px}
@media(max-width:1350px){.wifi-editor-shell{grid-template-columns:1fr}.wifi-editor-sidebar{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.wifi-editor-sidebar>.card:first-child{grid-row:span 2}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-grid .filter-actions{grid-column:1/-1}}
@media(max-width:820px){.wifi-editor-sidebar{grid-template-columns:1fr}.wifi-editor-sidebar>.card:first-child{grid-row:auto}.filter-grid{grid-template-columns:1fr}.filter-grid .filter-actions{grid-column:auto}.wifi-editor-main .map-workspace{height:62vh}}
.wifi-editor-main .map-canvas-frame>svg{overflow:hidden}

/* ASK WiFi Designer V0.9.0 — strefy zasięgu i martwe strefy */
.protection-editor-shell{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:18px;align-items:start}.protection-editor-main{overflow:hidden}.protection-editor-sidebar{display:grid;gap:18px;position:sticky;top:112px}.protection-editor-main .map-workspace{height:calc(100vh - 270px)}
#protection-overlay{cursor:crosshair}.coverage-wifi{pointer-events:none}.coverage-wifi .coverage-sector{stroke-width:1.5;vector-effect:non-scaling-stroke}.coverage-wifi-marker{stroke:#fff;stroke-width:3;vector-effect:non-scaling-stroke}.saved-zone{cursor:pointer;stroke-width:5;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}.saved-zone:hover{stroke-width:8}.saved-zone.archived{opacity:.28;stroke-dasharray:12 8}.dead-point{fill:#dc2626;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 3px rgba(127,29,29,.45));pointer-events:auto}.dead-point-layer{pointer-events:none}
#draft-line,#draft-polygon{stroke:#f59e0b;stroke-width:5;stroke-dasharray:12 8;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}#draft-polygon{fill:#f59e0b;fill-opacity:.14}.draft-point{fill:#f59e0b;stroke:#fff;stroke-width:3;vector-effect:non-scaling-stroke}.draft-point-label{font-size:15px;font-weight:900;fill:#92400e;paint-order:stroke;stroke:#fff;stroke-width:4;stroke-linejoin:round;pointer-events:none}
.drawing-tools{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.zone-list{display:grid}.zone-list-item{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 16px;border-top:1px solid var(--border);color:var(--text);text-decoration:none}.zone-list-item:first-child{border-top:0}.zone-list-item:hover,.zone-list-item.active{background:#f8fafc}.zone-list-item.active{box-shadow:inset 4px 0 0 var(--primary)}.zone-list-item.archived{opacity:.55}.zone-list-item strong,.zone-list-item small{display:block}.zone-list-item small{color:var(--muted);margin-top:3px}.zone-list-item em{font-style:normal;font-size:11px;color:var(--muted)}.zone-list-color{width:10px;height:42px;border-radius:999px;background:var(--zone-color)}
.coverage-score{display:grid;place-items:center;text-align:center;padding:20px;border-radius:18px;background:#eff6ff;color:#1d4ed8;margin-bottom:14px}.coverage-score strong{font-size:38px;line-height:1}.coverage-score span{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin-top:7px}.coverage-score.good{background:#ecfdf5;color:#047857}.coverage-score.warning{background:#fffbeb;color:#b45309}.coverage-score.bad{background:#fef2f2;color:#b91c1c}.analysis-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.analysis-metrics>div{padding:10px;border:1px solid var(--border);border-radius:12px;text-align:center}.analysis-metrics small,.analysis-metrics strong{display:block}.analysis-metrics small{color:var(--muted);font-size:11px}.analysis-metrics strong{margin-top:4px}.analysis-zone-list{display:grid;gap:7px;margin:14px 0}.analysis-zone-list>div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-top:1px solid var(--border)}.analysis-zone-list span strong,.analysis-zone-list span small{display:block}.analysis-zone-list span small{color:var(--muted)}.analysis-form{border-top:1px solid var(--border);padding-top:15px;margin-top:15px}
.map-editor-legend{display:flex;gap:18px;flex-wrap:wrap;padding:12px 18px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.map-editor-legend span{display:flex;align-items:center;gap:7px}.legend-dot{width:11px;height:11px;border-radius:50%;display:inline-block}.legend-dot.wifi{background:#2563eb}.legend-dot.dead{background:#dc2626}.legend-line{width:24px;height:0;border-top:4px solid;display:inline-block}.legend-line.zone{border-color:#dc2626}
@media(max-width:1380px){.protection-editor-shell{grid-template-columns:1fr}.protection-editor-sidebar{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.protection-editor-sidebar .analysis-card{grid-column:1/-1}}@media(max-width:820px){.protection-editor-sidebar{grid-template-columns:1fr}.protection-editor-sidebar .analysis-card{grid-column:auto}.protection-editor-main .map-workspace{height:60vh}.analysis-metrics{grid-template-columns:1fr}}
#draft-zone-layer{pointer-events:none}.draft-point{pointer-events:none}

/* ASK WiFi Designer V0.10 — mapy internetowe i przeszkody */
.source-choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.source-choice{position:relative;display:flex;align-items:flex-start;gap:12px;padding:16px;border:1px solid var(--border,#dbe2ea);border-radius:14px;background:#fff;cursor:pointer;transition:.18s ease}.source-choice:hover{border-color:#93c5fd;box-shadow:0 8px 22px rgba(15,23,42,.07)}.source-choice:has(input:checked){border-color:#2563eb;background:#eff6ff;box-shadow:0 0 0 3px rgba(37,99,235,.1)}.source-choice input{position:absolute;opacity:0;pointer-events:none}.source-choice-icon{width:42px;height:42px;border-radius:12px;background:#eef2ff;color:#1d4ed8;display:grid;place-items:center;flex:none}.source-choice strong{display:block;color:#0f172a;font-size:14px}.source-choice small{display:block;color:#64748b;margin-top:4px;line-height:1.45}.internet-map-picker{position:relative;width:100%;height:520px;border:1px solid #cbd5e1;border-radius:16px;overflow:hidden;background:#e2e8f0}.internet-map-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.internet-map-toolbar .form-control,.internet-map-toolbar input{flex:1;min-width:220px}.internet-map-search-results{display:grid;gap:8px;margin-top:10px}.internet-search-result{display:flex;gap:10px;align-items:flex-start;width:100%;padding:10px 12px;border:1px solid #dbe2ea;border-radius:10px;background:#fff;text-align:left;cursor:pointer}.internet-search-result:hover{border-color:#60a5fa;background:#f8fbff}.internet-search-result strong{display:block;font-size:13px;color:#0f172a}.internet-search-result small{display:block;color:#64748b;margin-top:2px}.internet-map-status{display:flex;gap:14px;flex-wrap:wrap;padding:10px 12px;margin-top:10px;border-radius:10px;background:#f8fafc;border:1px solid #e2e8f0;font-size:12px;color:#475569}.ask-internet-map{position:relative;width:100%;height:100%;overflow:hidden;background:#dbeafe;touch-action:none;user-select:none}.ask-internet-map.is-interactive{cursor:grab}.ask-internet-map.is-dragging{cursor:grabbing}.ask-internet-map-tiles{position:absolute;inset:0;overflow:hidden}.ask-internet-map-tile{position:absolute;width:256px;height:256px;max-width:none!important;pointer-events:none;user-select:none}.ask-internet-map-shade{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(15,23,42,.08)}.ask-internet-map-center{position:absolute;left:50%;top:50%;width:28px;height:28px;transform:translate(-50%,-50%);pointer-events:none}.ask-internet-map-center:before,.ask-internet-map-center:after{content:"";position:absolute;background:#dc2626;border-radius:2px;box-shadow:0 0 0 1px rgba(255,255,255,.9)}.ask-internet-map-center:before{left:13px;top:0;width:2px;height:28px}.ask-internet-map-center:after{left:0;top:13px;width:28px;height:2px}.ask-internet-map-center span{position:absolute;left:10px;top:10px;width:8px;height:8px;border:2px solid #dc2626;border-radius:50%;background:#fff}.ask-internet-map-attribution{position:absolute;right:4px;bottom:4px;z-index:3;padding:2px 5px;background:rgba(255,255,255,.88);border-radius:4px;font-size:10px;line-height:1.2;color:#334155;pointer-events:auto}.ask-internet-map-attribution a{color:#1d4ed8;text-decoration:underline}.internet-map-canvas{position:absolute!important;inset:0;z-index:0}.map-canvas-frame.has-internet-map{background:#dbeafe}.map-canvas-frame.has-internet-map>svg{position:absolute;inset:0;z-index:4}.map-canvas-frame.has-internet-map .ask-internet-map{position:absolute;inset:0;z-index:0}.internet-map-fixed-notice{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border-radius:10px;background:#eff6ff;color:#1e3a8a;font-size:12px;line-height:1.5}.obstacle-editor-shell{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:20px;align-items:start}.obstacle-list{display:grid;gap:8px}.obstacle-list-item{display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid #e2e8f0;border-radius:11px;color:inherit;text-decoration:none}.obstacle-list-item:hover,.obstacle-list-item.active{border-color:#60a5fa;background:#eff6ff}.obstacle-list-item.archived{opacity:.58}.obstacle-swatch{width:34px;height:34px;border-radius:9px;background:var(--obstacle-color,#7c3aed);display:grid;place-items:center;color:#fff}.obstacle-swatch svg{width:18px;height:18px}.obstacle-draw-help{padding:12px;border:1px dashed #94a3b8;border-radius:12px;background:#f8fafc;font-size:12px;color:#475569;line-height:1.55}.obstacle-draw-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.obstacle-legend{display:flex;gap:12px;flex-wrap:wrap}.obstacle-legend span{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#475569}.obstacle-legend i{width:12px;height:12px;border-radius:3px;background:var(--legend-color)}
@media(max-width:1050px){.source-choice-grid{grid-template-columns:1fr}.obstacle-editor-shell{grid-template-columns:1fr}.internet-map-picker{height:430px}}
@media(max-width:640px){.internet-map-picker{height:360px}.internet-map-toolbar{align-items:stretch}.internet-map-toolbar input,.internet-map-toolbar .btn{width:100%}}
.map-preview-internet{background:linear-gradient(135deg,#dbeafe 0%,#ecfccb 45%,#e0f2fe 100%);position:relative;overflow:hidden}.map-preview-internet:before,.map-preview-internet:after{content:"";position:absolute;inset:auto;background:rgba(255,255,255,.65);border:2px solid rgba(37,99,235,.18);transform:rotate(-14deg)}.map-preview-internet:before{width:140%;height:36px;left:-20%;top:32%}.map-preview-internet:after{width:130%;height:24px;left:-15%;top:61%;transform:rotate(18deg)}.map-preview-internet>*{position:relative;z-index:1}

/* V0.11.0 — trasy kablowe i pomiary */
.cable-summary-card{margin-bottom:20px}.cable-editor-shell{align-items:start}.saved-cable-route{cursor:pointer;pointer-events:stroke;transition:opacity .15s,stroke-width .15s;filter:drop-shadow(0 1px 1px rgba(15,23,42,.35))}.saved-cable-route:hover{opacity:1;stroke-width:9}.saved-cable-route.archived{opacity:.28;stroke-dasharray:14 10}.cable-draw-actions{display:flex;gap:8px;margin:10px 0}.cable-measure-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}.cable-measure-grid>div{padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft)}.cable-measure-grid small{display:block;color:var(--muted);font-size:11px}.cable-measure-grid strong{display:block;margin-top:4px;font-size:14px}.draft-cable-point{fill:#fff;stroke:#f59e0b;stroke-width:4}.cable-route-list{display:grid;gap:8px}.cable-route-item{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text);background:var(--surface)}.cable-route-item:hover,.cable-route-item.active{border-color:#f59e0b;background:#fffbeb}.cable-route-item.archived{opacity:.55}.cable-route-item span:nth-child(2){min-width:0}.cable-route-item strong,.cable-route-item small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cable-route-item small{margin-top:3px;color:var(--muted)}.cable-route-item em{font-size:11px;color:var(--muted);font-style:normal}.cable-route-item .route-warning{color:#b45309;font-weight:700}.cable-route-swatch{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--cable-color) 16%,white);color:var(--cable-color)}.cable-route-swatch svg{width:20px;height:20px}.cable-route-swatch svg *{stroke:currentColor}.map-card .map-meta-list svg{flex:0 0 auto}@media(max-width:760px){.cable-measure-grid{grid-template-columns:1fr}.cable-summary-card .table-wrap{overflow:auto}}
.cable-wifi-marker circle{fill:#2563eb;stroke:#fff;stroke-width:3;pointer-events:none}.cable-wifi-marker .core{fill:#fff;stroke:none}.cable-wifi-marker text{font-size:13px;font-weight:800;fill:#1e3a8a;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;pointer-events:none}

/* V0.12.0 — katalog urządzeń, BOM i wyceny */
.bom-metric-grid,.estimate-metric-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:20px}.estimate-metric-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px;box-shadow:var(--shadow-sm)}.metric-card span,.metric-card small{display:block;color:var(--muted)}.metric-card strong{display:block;margin:7px 0 4px;font-size:21px;letter-spacing:-.03em}.optional-row{background:#fffbeb}.optional-row td{opacity:.78}.archived-row{opacity:.55}.estimate-links-card{margin-bottom:18px}.chip-list{display:flex;flex-wrap:wrap;gap:10px}.summary-chip{display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text);background:var(--surface-soft)}.summary-chip:hover{border-color:var(--primary)}.summary-chip small{color:var(--muted)}.wifi-pricing-grid{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.section-divider{border-top:1px solid var(--border);border-radius:0}.filter-grow{grid-column:span 2}.text-danger-strong{color:#b91c1c!important;font-weight:800}.estimate-metric-grid .metric-card:nth-child(5){background:linear-gradient(135deg,#eff6ff,#fff)}.estimate-metric-grid .metric-card:nth-child(6){background:linear-gradient(135deg,#ecfdf5,#fff)}@media(max-width:1180px){.bom-metric-grid,.estimate-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:720px){.bom-metric-grid,.estimate-metric-grid{grid-template-columns:1fr}.filter-grow{grid-column:auto}.chip-list{display:grid}.summary-chip{display:grid;grid-template-columns:auto 1fr}.summary-chip small{grid-column:2}}



/* V0.13.0 — dokumenty, oferta i arkusz mapy */
.document-body{margin:0;background:#e8edf4;color:#111827;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.document-toolbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;padding:12px max(16px,calc((100vw - 1180px)/2));background:rgba(17,24,39,.96);box-shadow:0 8px 30px rgba(15,23,42,.18)}.document-toolbar form{margin-left:auto}.document-toolbar .toolbar-note{color:#cbd5e1;font-size:12px}.document-page{width:min(1120px,calc(100% - 32px));margin:24px auto;background:#fff;box-shadow:0 24px 70px rgba(15,23,42,.18);border-radius:10px;overflow:hidden}.offer-document{padding:42px 48px}.document-header,.map-sheet-header{display:flex;justify-content:space-between;gap:32px;padding-bottom:24px;border-bottom:3px solid #111827}.document-brand{display:flex;align-items:center;gap:14px}.document-logo{display:grid;place-items:center;width:64px;height:64px;border-radius:14px;background:#111827;color:#fff;font-size:24px;font-weight:900;letter-spacing:-1px}.document-brand strong,.map-sheet-header strong{display:block;font-size:18px}.document-brand span,.map-sheet-header span{display:block;color:#64748b;font-size:12px;text-transform:uppercase;letter-spacing:.1em}.document-title{text-align:right}.document-title small,.map-sheet-header small{font-size:11px;font-weight:800;color:#2563eb;letter-spacing:.15em}.document-title h1,.map-sheet-header h1{margin:4px 0 0;font-size:28px;line-height:1.1}.document-title p,.map-sheet-header p{margin:6px 0 0;color:#64748b}.document-parties{display:grid;grid-template-columns:1fr 1fr;gap:56px;margin:30px 0}.document-parties>div{padding:20px;border:1px solid #dbe3ed;border-radius:12px}.document-parties small{font-size:10px;font-weight:800;letter-spacing:.14em;color:#64748b}.document-parties h3{margin:8px 0;font-size:17px}.document-parties p{margin:6px 0;color:#475569;font-size:13px;line-height:1.5}.document-meta,.map-sheet-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#cbd5e1;border:1px solid #cbd5e1;border-radius:10px;overflow:hidden}.document-meta>div,.map-sheet-meta>div{background:#f8fafc;padding:12px 14px}.document-meta span,.map-sheet-meta span{display:block;color:#64748b;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.document-meta strong,.map-sheet-meta strong{display:block;margin-top:4px;font-size:13px}.document-intro{margin:26px 0;padding:18px 20px;border-left:4px solid #2563eb;background:#eff6ff;color:#334155;line-height:1.6}.document-section{margin-top:30px}.document-section h2,.offer-terms h2,.map-sheet-legend h2{margin:0 0 12px;font-size:15px;text-transform:uppercase;letter-spacing:.06em}.document-table{width:100%;border-collapse:collapse;font-size:12px}.document-table th{padding:10px 9px;background:#111827;color:#fff;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.05em}.document-table td{padding:10px 9px;border-bottom:1px solid #e2e8f0;vertical-align:top}.document-table td small{display:block;color:#64748b;margin-top:3px}.document-table .numeric{text-align:right;white-space:nowrap}.optional-section{break-inside:avoid}.document-note{color:#64748b;font-size:11px}.offer-summary{display:grid;grid-template-columns:1fr 360px;gap:40px;margin-top:32px;break-inside:avoid}.offer-terms{padding:18px;border:1px solid #e2e8f0;border-radius:12px}.offer-terms dl{display:grid;grid-template-columns:90px 1fr;gap:8px 12px;margin:0;font-size:12px}.offer-terms dt{color:#64748b}.offer-terms dd{margin:0;font-weight:600}.offer-totals{padding:18px;border-radius:12px;background:#f8fafc}.offer-totals>div{display:flex;justify-content:space-between;gap:18px;padding:7px 0;border-bottom:1px solid #e2e8f0;font-size:12px}.offer-totals .grand-total{margin-top:8px;padding-top:14px;border-top:2px solid #111827;border-bottom:0;font-size:17px}.offer-totals .internal-total{color:#7c3aed;border-bottom:0}.document-signatures{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin-top:60px;break-inside:avoid}.document-signatures>div{padding-top:36px;border-top:1px solid #94a3b8;text-align:center}.document-signatures span,.document-signatures i{display:block;color:#64748b;font-size:10px}.document-signatures strong{display:block;min-height:18px;font-size:12px}.document-footer{display:flex;justify-content:space-between;gap:20px;margin-top:32px;padding-top:14px;border-top:1px solid #e2e8f0;color:#64748b;font-size:10px}.document-list{padding:0 20px 20px}.document-list-item{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid #e5e7eb}.document-list-item:last-child{border-bottom:0}.document-list-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#eff6ff;color:#2563eb}.document-list-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8}.document-list-item strong,.document-list-item small{display:block}.document-list-item small{margin-top:3px;color:#64748b}.document-list-actions{display:flex;gap:6px}.map-sheet{padding:28px}.map-sheet-header{align-items:flex-end}.map-sheet-header>div:last-child{text-align:right}.map-sheet-meta{margin:18px 0}.map-sheet-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:18px}.map-sheet-canvas-wrap{min-width:0;border:1px solid #cbd5e1;border-radius:8px;overflow:hidden;background:#f8fafc}.map-export-canvas{position:relative;width:100%;overflow:hidden;background:var(--blank-bg,#fff)}.map-export-canvas>img,.map-export-canvas>.internet-map-canvas,.map-export-canvas>.blank-map-grid,.map-export-canvas>.pdf-map-placeholder{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.map-export-canvas>svg{position:absolute;inset:0;width:100%;height:100%;z-index:4}.blank-map-grid{background-color:var(--blank-bg,#fff);background-image:linear-gradient(rgba(148,163,184,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.16) 1px,transparent 1px);background-size:30px 30px}.pdf-map-placeholder{display:grid;place-content:center;text-align:center;color:#64748b}.pdf-map-placeholder strong,.pdf-map-placeholder span{display:block}.map-export-label{font-size:17px;font-weight:800;fill:#111827;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}.map-sheet-legend{padding:16px;border:1px solid #dbe3ed;border-radius:8px;background:#fff}.legend-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #edf2f7}.legend-item strong,.legend-item small{display:block}.legend-item small{color:#64748b}.legend-swatch,.legend-black{display:block;width:28px;height:12px;border-radius:4px}.legend-swatch.zone{background:rgba(239,68,68,.22);border:2px solid #dc2626}.legend-swatch.obstacle{background:rgba(71,85,105,.3);border:2px solid #475569}.legend-swatch.cable{height:5px;background:#f59e0b}.legend-black{width:14px;height:14px;border-radius:50%;background:#dc2626;border:2px solid #fff;box-shadow:0 0 0 1px #dc2626}.legend-wifi{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#2563eb;color:#fff}.legend-wifi svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}.wifi-legend-list{margin:0;padding-left:22px;font-size:11px}.wifi-legend-list li{padding:6px 0;border-bottom:1px solid #edf2f7}.wifi-legend-list strong,.wifi-legend-list span,.wifi-legend-list small{display:block}.wifi-legend-list small{color:#64748b}.map-document-body .ask-internet-map-center,.map-document-body .ask-internet-map-shade{display:none}
@media(max-width:800px){.document-page{width:calc(100% - 16px);margin:8px}.offer-document,.map-sheet{padding:20px}.document-header,.document-parties,.offer-summary,.map-sheet-layout{grid-template-columns:1fr;display:grid}.document-title{text-align:left}.document-meta,.map-sheet-meta{grid-template-columns:1fr 1fr}.document-toolbar{flex-wrap:wrap}.document-toolbar form{margin-left:0}.document-list-item{grid-template-columns:42px 1fr}.document-list-actions{grid-column:2;flex-wrap:wrap}}
@media print{@page{size:A4;margin:9mm}.no-print,.sidebar,.topbar,.footer{display:none!important}.document-body{background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}.document-page{width:100%;margin:0;box-shadow:none;border-radius:0}.offer-document{padding:0}.document-table{font-size:9px}.document-table th,.document-table td{padding:6px}.document-header{padding-bottom:14px}.document-parties{margin:18px 0;gap:28px}.document-parties>div{padding:12px}.document-section{margin-top:18px}.offer-summary{margin-top:20px;grid-template-columns:1fr 300px}.document-signatures{margin-top:40px}.map-sheet{padding:0}.map-sheet-layout{grid-template-columns:minmax(0,1fr) 190px}.map-sheet-header{padding-bottom:12px}.map-sheet-meta{margin:10px 0}.map-sheet-canvas-wrap{break-inside:avoid}.map-sheet-legend{font-size:9px;padding:10px}.map-sheet-legend h2{font-size:11px}.legend-item{padding:5px 0}.wifi-legend-list{font-size:8px}.document-footer{margin-top:12px}.document-table tr,.offer-summary,.document-signatures{break-inside:avoid}}


/* V0.14.0 — panel klienta i elektroniczne akceptacje */
.client-access-body{min-height:100vh;margin:0;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 15% 15%,rgba(37,99,235,.18),transparent 35%),linear-gradient(145deg,#0b1020,#111827 55%,#172554);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#111827}.client-access-card{width:min(560px,100%);background:#fff;border:1px solid rgba(255,255,255,.2);border-radius:28px;padding:42px;box-shadow:0 28px 80px rgba(0,0,0,.35);text-align:center}.client-access-mark{width:72px;height:72px;margin:0 auto 20px;display:grid;place-items:center;border-radius:22px;background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff}.client-access-mark svg{width:34px}.client-access-card h1{font-size:32px;margin:8px 0 12px}.client-access-card p{color:#64748b;line-height:1.7}.client-access-note{display:flex;gap:12px;align-items:center;text-align:left;margin:24px 0;padding:16px;border-radius:16px;background:#eff6ff;color:#1e40af}.client-access-note svg{width:24px;flex:0 0 24px}.client-access-card footer{margin-top:24px;font-size:12px;color:#94a3b8}
.client-portal-body{margin:0;background:#f1f5f9;color:#0f172a;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.client-portal-header{position:sticky;top:0;z-index:40;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:14px max(22px,calc((100vw - 1240px)/2));background:rgba(15,23,42,.96);backdrop-filter:blur(14px);color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}.client-portal-brand,.client-portal-org{display:flex;align-items:center;gap:12px}.client-portal-brand .brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(135deg,#2563eb,#7c3aed)}.client-portal-brand svg{width:23px}.client-portal-brand div,.client-portal-org{display:flex;flex-direction:column}.client-portal-brand small,.client-portal-org span{color:#94a3b8;font-size:12px}.client-portal-org{text-align:right;position:relative;padding-right:94px}.client-portal-org a{position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:12px;color:#cbd5e1;text-decoration:none}.client-portal-main{width:min(1240px,calc(100% - 36px));margin:28px auto 60px}.client-portal-footer{display:flex;justify-content:space-between;padding:22px max(22px,calc((100vw - 1240px)/2));background:#0f172a;color:#94a3b8;font-size:12px}.client-portal-footer strong{color:#e2e8f0}.client-hero{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;padding:34px;border-radius:26px;background:linear-gradient(135deg,#0f172a 0%,#172554 58%,#312e81 100%);color:#fff;box-shadow:0 22px 60px rgba(15,23,42,.24)}.client-hero h1{margin:6px 0;font-size:clamp(28px,4vw,48px);letter-spacing:-.035em}.client-hero p{margin:0;color:#cbd5e1}.client-hero-status{min-width:190px;padding:16px 20px;border:1px solid rgba(255,255,255,.16);border-radius:17px;background:rgba(255,255,255,.08)}.client-hero-status span{display:block;font-size:12px;color:#cbd5e1}.client-hero-status strong{display:block;margin-top:5px}.client-portal-nav{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0 30px;padding:8px;border-radius:16px;background:#fff;border:1px solid #e2e8f0;box-shadow:0 8px 24px rgba(15,23,42,.06)}.client-portal-nav a{padding:10px 15px;border-radius:11px;color:#475569;text-decoration:none;font-weight:700;font-size:13px}.client-portal-nav a:hover{background:#eff6ff;color:#1d4ed8}.client-section{scroll-margin-top:90px;margin:0 0 26px;padding:28px;background:#fff;border:1px solid #e2e8f0;border-radius:24px;box-shadow:0 10px 35px rgba(15,23,42,.06)}.client-section-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px}.client-section-heading>div{display:flex;align-items:center;gap:12px}.client-section-heading>div>span{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#eff6ff;color:#2563eb;font-weight:900;font-size:12px}.client-section-heading h2{margin:0;font-size:22px}.client-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.client-summary-grid article{padding:20px;border-radius:18px;background:#f8fafc;border:1px solid #e2e8f0}.client-summary-grid article.wide{grid-column:1/-1}.client-summary-grid small{display:block;color:#64748b;margin-bottom:8px}.client-summary-grid strong{font-size:18px}.client-summary-grid p{color:#475569;line-height:1.65}.client-map-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.client-map-card{display:grid;grid-template-columns:48px 1fr 24px;align-items:center;gap:14px;padding:17px;border-radius:17px;background:#f8fafc;border:1px solid #e2e8f0;color:#0f172a;text-decoration:none;transition:.2s}.client-map-card:hover{transform:translateY(-2px);border-color:#93c5fd;box-shadow:0 12px 28px rgba(37,99,235,.1)}.client-map-card>span{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:#dbeafe;color:#2563eb}.client-map-card svg{width:24px}.client-map-card div{display:flex;flex-direction:column;gap:4px}.client-map-card small{color:#64748b}.client-offer-card{border:1px solid #dbeafe;border-radius:20px;overflow:hidden}.client-offer-total{display:grid;grid-template-columns:1fr auto;gap:3px 20px;align-items:end;padding:22px;background:linear-gradient(135deg,#eff6ff,#eef2ff)}.client-offer-total small,.client-offer-total span{color:#64748b}.client-offer-total strong{grid-row:1/3;grid-column:2;font-size:28px;color:#1d4ed8}.client-conversation-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr);gap:20px}.portal-conversation{display:flex;flex-direction:column;gap:12px}.portal-message{max-width:84%;padding:14px 16px;border-radius:16px;border:1px solid #e2e8f0;background:#f8fafc}.portal-message.from-user{align-self:flex-end;background:#eff6ff;border-color:#bfdbfe}.portal-message.from-client{align-self:flex-start}.portal-message>div{display:flex;justify-content:space-between;gap:14px}.portal-message>div span,.portal-message small{font-size:11px;color:#64748b}.portal-message p{margin:8px 0;line-height:1.55}.client-comment-form,.portal-reply-form{padding:20px;border-radius:18px;background:#f8fafc;border:1px solid #e2e8f0}.client-decision-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.client-decision-card{padding:22px;border:1px solid #e2e8f0;border-radius:20px;background:#f8fafc}.client-decision-card.is-accepted{background:#f0fdf4;border-color:#86efac}.client-decision-title{display:flex;align-items:center;gap:14px;margin-bottom:18px}.client-decision-title>span{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:#dbeafe;color:#2563eb}.client-decision-card.is-accepted .client-decision-title>span{background:#dcfce7;color:#15803d}.client-decision-title svg{width:25px}.client-decision-title h3{margin:0 0 5px}.decision-record{padding:15px;border-radius:14px;background:rgba(255,255,255,.7)}.decision-record span{display:block;color:#64748b;font-size:12px}.decision-consent{display:flex;gap:10px;margin:16px 0;color:#475569;font-size:13px;line-height:1.5}.decision-buttons{display:flex;gap:9px;flex-wrap:wrap}.portal-link-reveal{border-color:#86efac;background:#f0fdf4}.copy-link-row{display:grid;grid-template-columns:1fr auto;gap:10px}.copy-link-row input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.portal-permissions{display:flex;flex-direction:column;gap:8px}.decision-timeline{display:flex;flex-direction:column;gap:18px}.decision-timeline article{display:grid;grid-template-columns:14px 1fr;gap:14px}.decision-dot{width:12px;height:12px;border-radius:50%;margin-top:6px}.decision-dot.badge-success{background:#22c55e}.decision-dot.badge-warning{background:#f59e0b}.decision-dot.badge-danger{background:#ef4444}.decision-timeline article>div>div{display:flex;align-items:center;gap:10px}.decision-timeline p{color:#475569}.soft-rule{border:0;border-top:1px solid #e2e8f0;margin:20px 0}
@media(max-width:780px){.client-portal-header{align-items:flex-start}.client-portal-org{display:none}.client-portal-main{width:min(100% - 20px,1240px);margin-top:12px}.client-hero{align-items:flex-start;flex-direction:column;padding:24px}.client-hero-status{width:100%;box-sizing:border-box}.client-section{padding:20px;border-radius:19px}.client-summary-grid,.client-map-grid,.client-decision-grid,.client-conversation-layout{grid-template-columns:1fr}.client-offer-total{grid-template-columns:1fr}.client-offer-total strong{grid-column:1;grid-row:auto}.client-portal-footer{flex-direction:column;gap:6px}.copy-link-row{grid-template-columns:1fr}.portal-message{max-width:94%}}
@media print{.client-portal-header,.client-portal-footer,.client-portal-nav{display:none!important}.client-portal-main{width:100%;margin:0}.client-section{box-shadow:none;break-inside:avoid}}


/* V0.14.1 — czytelne zasięgi radiowe i aktualność analizy */
.map-wifi-sector{vector-effect:non-scaling-stroke;mix-blend-mode:multiply}
.map-dead-point{vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(127,29,29,.35))}
.analysis-stale-note{display:flex;flex-direction:column;gap:3px;margin:0 0 12px;padding:11px 12px;border:1px solid #f59e0b;border-radius:9px;background:#fffbeb;color:#92400e;font-size:12px;line-height:1.4}
.analysis-stale-note strong{font-size:12px}.analysis-stale-note span{color:#a16207}
.map-sheet-stale{margin-top:12px}.legend-item-warning small{color:#b91c1c;font-weight:650}
@media print{.map-wifi-sector{fill-opacity:.18!important}.map-dead-point{fill-opacity:.68!important}.analysis-stale-note{break-inside:avoid}}


/* V0.15.0 — realizacja, dokumentacja powykonawcza i widoczne wylogowanie */
.topbar-actions{display:flex;align-items:center;gap:12px}.topbar-logout{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid #e2e8f0;border-radius:11px;background:#fff;color:#475569;text-decoration:none;font-size:13px;font-weight:800;transition:.18s}.topbar-logout:hover{color:#b91c1c;border-color:#fecaca;background:#fef2f2}.topbar-logout svg{width:18px;height:18px}.page-section-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:18px 0}.page-section-actions span{color:#64748b;font-size:13px}.asbuilt-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-bottom:20px}.asbuilt-photo{display:flex;flex-direction:column;gap:5px;padding:8px;border:1px solid #e2e8f0;border-radius:15px;background:#f8fafc;color:#0f172a;text-decoration:none}.asbuilt-photo img{width:100%;height:140px;object-fit:cover;border-radius:10px;background:#e2e8f0}.asbuilt-photo span{font-weight:750;font-size:13px}.asbuilt-photo small{color:#64748b}.photo-upload-form{padding-top:18px;border-top:1px solid #e2e8f0}.document-summary-row{display:flex;gap:20px;flex-wrap:wrap;margin-top:14px;padding:14px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}.document-summary-row span{font-size:13px}.document-actions{display:flex;justify-content:flex-end;margin-top:24px}
@media(max-width:860px){.identity-text{display:none}.topbar-logout span{display:none}.topbar-logout{padding:9px}.asbuilt-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.asbuilt-photo-grid{grid-template-columns:1fr}}
@media print{.topbar-logout,.document-toolbar,.no-print{display:none!important}.document-page input,.document-page textarea,.document-page select{border:0!important;background:transparent!important;padding:0!important;color:#111!important;appearance:none}.document-actions{display:none!important}}


/* V0.16.0 — kontrola techniczna */
.validation-hero{display:flex;align-items:center;gap:18px;padding:24px;border-radius:20px;margin-bottom:20px;border:1px solid var(--border);background:var(--surface)}
.validation-hero-icon{width:58px;height:58px;display:grid;place-items:center;border-radius:18px;background:rgba(37,99,235,.1)}
.validation-hero-icon svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8}
.validation-hero h3{margin:4px 0;font-size:24px}.validation-hero p,.validation-hero small{margin:0;color:var(--muted)}
.validation-hero-success{border-color:rgba(22,163,74,.28);background:rgba(22,163,74,.05)}.validation-hero-warning{border-color:rgba(245,158,11,.32);background:rgba(245,158,11,.06)}.validation-hero-danger{border-color:rgba(220,38,38,.3);background:rgba(220,38,38,.05)}
.validation-metrics{margin-bottom:20px}.validation-report{margin-bottom:20px}.validation-issues{display:flex;flex-direction:column;gap:12px}
.validation-issue{display:grid;grid-template-columns:42px 1fr;gap:14px;padding:16px;border:1px solid var(--border);border-radius:16px;background:var(--surface-soft)}
.validation-issue-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:12px}.validation-issue-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2}
.validation-issue-danger{border-left:4px solid #dc2626}.validation-issue-danger .validation-issue-icon{background:rgba(220,38,38,.1);color:#dc2626}.validation-issue-warning{border-left:4px solid #f59e0b}.validation-issue-warning .validation-issue-icon{background:rgba(245,158,11,.12);color:#b45309}.validation-issue-info{border-left:4px solid #2563eb}.validation-issue-info .validation-issue-icon{background:rgba(37,99,235,.1);color:#2563eb}
.validation-issue-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.validation-issue-title strong{width:100%;font-size:16px}.validation-issue-title small{color:var(--muted)}.validation-issue p{margin:7px 0;color:var(--text)}
.validation-recommendation{padding:10px 12px;border-radius:10px;background:var(--surface);color:var(--muted);font-size:13px}.validation-history{display:flex;flex-direction:column;gap:9px}.validation-history-item{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:center;padding:11px;border:1px solid var(--border);border-radius:12px;text-decoration:none;color:inherit}.validation-history-item small{grid-column:2;color:var(--muted)}
@media(max-width:760px){.validation-hero{align-items:flex-start}.validation-issue{grid-template-columns:1fr}.validation-issue-icon{display:none}}
@media print{.validation-hero,.validation-report,.validation-metrics{break-inside:avoid}.validation-issue{break-inside:avoid}}


/* V0.17.0 — trwałe usuwanie i porządkowanie elementów mapy */
.destructive-action{margin-top:18px;padding-top:16px;border-top:1px dashed #fecaca}.destructive-action>small{display:block;margin-bottom:9px;color:#991b1b;font-weight:700}.map-elements-grid{align-items:start}.map-element-list{display:grid;gap:10px}.map-element-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px;border:1px solid #e5e7eb;border-radius:12px;background:#fff}.map-element-row.archived{background:#f8fafc;opacity:.78}.map-element-copy{min-width:0}.map-element-copy strong,.map-element-copy small{display:block}.map-element-copy strong{color:#111827;overflow-wrap:anywhere}.map-element-copy small{margin-top:4px;color:#64748b}.map-element-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.map-element-actions form{margin:0}.card-header h3 svg{width:20px;height:20px;vertical-align:-4px;margin-right:6px;fill:none;stroke:currentColor;stroke-width:1.8}.btn svg{pointer-events:none}@media(max-width:720px){.map-element-row{align-items:flex-start;flex-direction:column}.map-element-actions{width:100%}.map-element-actions .btn,.map-element-actions form{flex:1}.map-element-actions form .btn{width:100%}}

/* VERSION COPYING AND COMPARISON — V0.18.0 */
.version-copy-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px}.version-copy-summary>div{padding:12px;border:1px solid var(--border);border-radius:11px;background:#f8fafc}.version-copy-summary small,.comparison-metric small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:750}.version-copy-summary strong{display:block;margin-top:5px;font-size:18px;color:var(--text)}.copy-option-list{display:grid;gap:10px}.copy-option{display:flex;align-items:flex-start;gap:11px;padding:13px;border:1px solid var(--border);border-radius:11px;background:#fff}.copy-option input{margin-top:3px}.copy-option strong,.copy-option small{display:block}.copy-option small{color:var(--muted);margin-top:3px;line-height:1.45}.comparison-head{display:grid;grid-template-columns:minmax(0,1fr) 56px minmax(0,1fr);gap:12px;align-items:center}.comparison-version{padding:16px;border:1px solid var(--border);border-radius:13px;background:#fff}.comparison-version.current{border-color:#93c5fd;box-shadow:0 0 0 3px rgba(59,130,246,.08)}.comparison-version small,.comparison-version strong,.comparison-version span{display:block}.comparison-version strong{font-size:17px;margin:4px 0}.comparison-version span{color:var(--muted);font-size:12px}.comparison-arrow{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#eff6ff;color:#2563eb;margin:auto}.comparison-arrow svg{width:22px;height:22px}.comparison-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.comparison-metric{padding:15px;border:1px solid var(--border);border-radius:12px;background:#fff}.comparison-metric strong{display:block;font-size:20px;margin-top:6px}.comparison-metric .metric-delta{font-size:11px;margin-top:5px;font-weight:750}.delta-positive{color:#15803d}.delta-negative{color:#b91c1c}.delta-neutral{color:var(--muted)}.version-origin{display:inline-flex;align-items:center;gap:5px;color:#64748b}.version-origin svg{width:13px;height:13px}.sidebar-short-screen-note{display:none}@media(max-height:720px) and (min-width:861px){.sidebar-brand{height:76px;padding-top:12px;padding-bottom:12px}.brand-mark{width:40px;height:40px}.panel-badge{margin-top:10px;margin-bottom:5px;padding:10px 12px}.nav-section-title{padding-top:8px}.nav-link{min-height:39px;padding-top:8px;padding-bottom:8px}.sidebar-user{padding-top:7px;padding-bottom:8px}.platform-signature{display:none}}@media(max-width:980px){.version-copy-summary,.comparison-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.version-copy-summary,.comparison-metrics{grid-template-columns:1fr}.comparison-head{grid-template-columns:1fr}.comparison-arrow{transform:rotate(90deg)}}


/* V0.19.0 — dostęp, pakiety i macierz uprawnień */
.access-banner{display:flex;align-items:center;gap:14px;padding:13px 16px;border-radius:12px;margin-bottom:18px;border:1px solid}.access-banner strong{white-space:nowrap}.access-banner span{flex:1}.access-banner a{font-weight:700}.access-banner-warning{background:#fffbeb;border-color:#fcd34d;color:#92400e}.access-banner-danger{background:#fef2f2;border-color:#fca5a5;color:#991b1b}.permission-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.permission-list{display:flex;flex-direction:column;gap:8px}.permission-list.compact-list{max-height:640px;overflow:auto;padding-right:4px}.permission-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--border,#e5e7eb);border-radius:10px;background:#fff;cursor:pointer}.permission-row:hover{border-color:#93c5fd;background:#f8fbff}.permission-row input{width:18px;height:18px}.permission-row span{display:flex;flex-direction:column;gap:3px}.permission-row small{color:var(--muted,#64748b);line-height:1.35}.permission-row code{font-size:10px;color:#64748b}.sticky-actions{position:sticky;bottom:0;background:rgba(248,250,252,.96);padding:14px;border:1px solid #e2e8f0;border-radius:12px;z-index:5}.usage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.usage-card{border:1px solid #e2e8f0;border-radius:12px;padding:14px}.usage-card>div:first-child{display:flex;justify-content:space-between;gap:10px}.usage-card span{color:#64748b}.usage-bar{height:7px;background:#e2e8f0;border-radius:999px;margin-top:12px;overflow:hidden}.usage-bar i{display:block;height:100%;background:#2563eb;border-radius:999px}.feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.feature-card{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;padding:14px;border:1px solid #e2e8f0;border-radius:12px}.feature-card>span{width:34px;height:34px;border-radius:9px;display:grid;place-items:center}.feature-card>span svg{width:18px}.feature-card div{display:flex;flex-direction:column;gap:3px}.feature-card small{color:#64748b}.feature-card em{font-style:normal;font-size:12px;font-weight:700}.feature-card.enabled{background:#f0fdf4;border-color:#bbf7d0}.feature-card.enabled>span{background:#dcfce7;color:#15803d}.feature-card.disabled{background:#f8fafc;color:#64748b}.feature-card.disabled>span{background:#e2e8f0}.button-tabs{display:flex;flex-wrap:wrap;gap:8px}.source-choice-disabled{opacity:.65;cursor:not-allowed;background:#f8fafc}.source-choice-disabled .source-choice-icon{color:#64748b}@media(max-width:1000px){.permission-groups,.feature-grid{grid-template-columns:1fr}.usage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.usage-grid{grid-template-columns:1fr}.permission-row{grid-template-columns:auto 1fr}.permission-row code{display:none}.access-banner{align-items:flex-start;flex-direction:column}}

/* ASK WiFi Designer V0.20.0 DEV — Edytor mapy PRO */
.pro-editor-page .content{padding-bottom:18px}.pro-editor-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:14px}.pro-editor-heading h2{margin:5px 0 2px;font-size:24px}.pro-editor-heading p{margin:0;color:var(--muted)}.pro-editor-heading .heading-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.pro-editor-notice{display:flex;align-items:center;gap:12px;padding:10px 14px;margin-bottom:12px;border:1px solid #fde68a;border-radius:12px;background:#fffbeb;color:#92400e}.pro-editor-notice>span{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#fef3c7}.pro-editor-notice svg{width:18px;height:18px}.pro-editor-notice div{min-width:0;flex:1}.pro-editor-notice strong,.pro-editor-notice small{display:block}.pro-editor-notice small{margin-top:2px;color:#a16207}.pro-editor-notice a{font-size:12px;font-weight:750;color:#92400e}
.pro-editor{overflow:hidden;border:1px solid #d8e0eb;border-radius:16px;background:#fff;box-shadow:0 14px 38px rgba(15,23,42,.08)}.pro-toolbar{display:flex;align-items:center;gap:10px;min-height:58px;padding:8px 10px;border-bottom:1px solid #dfe6ef;background:#f8fafc}.pro-toolbar-group{display:flex;align-items:center;gap:5px;padding-right:9px;border-right:1px solid #dfe6ef}.pro-toolbar-group:last-of-type{border-right:0}.pro-tool,.pro-icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;border:1px solid transparent;border-radius:9px;background:transparent;color:#475569;cursor:pointer;font:inherit;font-size:11px;font-weight:750;transition:.15s ease}.pro-tool{padding:0 10px}.pro-icon-btn{width:38px;padding:0}.pro-tool svg,.pro-icon-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8}.pro-tool:hover,.pro-icon-btn:hover{border-color:#cbd5e1;background:#fff;color:#0f172a}.pro-tool.active{border-color:#93c5fd;background:#dbeafe;color:#1d4ed8}.pro-icon-btn.danger:hover{border-color:#fecaca;background:#fef2f2;color:#dc2626}.pro-icon-btn:disabled,.pro-tool:disabled{opacity:.35;cursor:not-allowed}.pro-toolbar input[type=range]{width:110px}.pro-toolbar-status{display:flex;align-items:center;gap:8px;min-width:190px;margin-left:auto;font-size:11px;color:#64748b}.pro-toolbar-status span{width:8px;height:8px;border-radius:50%;background:#22c55e}.pro-toolbar-status span.is-saving{background:#f59e0b;animation:proPulse 1s infinite}.pro-toolbar-status span.is-error{background:#ef4444}.pro-toolbar-status strong{font-weight:650}@keyframes proPulse{50%{opacity:.35}}
.pro-layout{display:grid;grid-template-columns:220px minmax(0,1fr) 286px;height:calc(100vh - 242px);min-height:580px}.pro-left-panel,.pro-right-panel{overflow:auto;background:#fff}.pro-left-panel{border-right:1px solid #dfe6ef}.pro-right-panel{border-left:1px solid #dfe6ef}.pro-panel-section{padding:14px;border-bottom:1px solid #e8edf4}.pro-panel-section h3{display:flex;align-items:center;gap:7px;margin:0 0 11px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.pro-panel-section h3 svg{width:15px;height:15px}.pro-add-link{display:flex;align-items:center;gap:10px;padding:9px 8px;margin:2px 0;border-radius:9px;color:#334155;text-decoration:none}.pro-add-link:hover{background:#eff6ff;color:#1d4ed8}.pro-add-link>svg{width:19px;height:19px;flex:0 0 auto}.pro-add-link strong,.pro-add-link small{display:block}.pro-add-link strong{font-size:12px}.pro-add-link small{margin-top:1px;font-size:10px;color:#94a3b8}.pro-toggle{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12px;color:#475569}.pro-field{position:relative;display:grid;grid-template-columns:1fr 72px auto;align-items:center;gap:7px;margin:8px 0;font-size:11px;color:#64748b}.pro-field input{width:100%;min-width:0;padding:7px 8px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:#0f172a}.pro-field em{font-style:normal}.pro-shortcuts>div{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:7px;padding:4px 0;font-size:10px;color:#64748b}.pro-shortcuts kbd{display:inline-block;padding:3px 5px;border:1px solid #cbd5e1;border-bottom-width:2px;border-radius:5px;background:#f8fafc;color:#334155;text-align:center;font:600 9px ui-monospace,monospace}
.pro-stage-viewport{position:relative;overflow:hidden;background:#dbe3ec;touch-action:none;cursor:default}.pro-stage-viewport.is-pan-tool{cursor:grab}.pro-stage-viewport.is-pan-tool:active{cursor:grabbing}.pro-stage-viewport.is-measure-tool{cursor:crosshair}.pro-stage{position:absolute;left:0;top:0;overflow:hidden;background:#fff;box-shadow:0 10px 34px rgba(15,23,42,.22);will-change:transform}.pro-stage-background,.pro-stage-background>img,.pro-stage-background>.internet-map-canvas,.pro-blank-background,.pro-pdf-placeholder{position:absolute;inset:0;width:100%;height:100%}.pro-stage-background>img{object-fit:fill;user-select:none;pointer-events:none}.pro-blank-background{background-color:var(--blank-bg,#fff)}.pro-pdf-placeholder{display:grid;place-content:center;text-align:center;background:#f8fafc;color:#64748b}.pro-pdf-placeholder svg{width:44px;height:44px;margin:0 auto 8px}.pro-pdf-placeholder strong,.pro-pdf-placeholder small{display:block}.pro-grid-layer{position:absolute;inset:0;z-index:2;display:none;pointer-events:none;background-image:linear-gradient(rgba(37,99,235,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(37,99,235,.16) 1px,transparent 1px);background-size:10px 10px}.pro-grid-layer.visible{display:block}.pro-stage>svg{position:absolute;inset:0;z-index:4;width:100%;height:100%;overflow:visible;touch-action:none}.pro-coordinate-bar{position:absolute;left:10px;right:10px;bottom:9px;z-index:10;display:flex;justify-content:space-between;gap:10px;padding:6px 10px;border-radius:8px;background:rgba(15,23,42,.82);color:#e2e8f0;font-size:10px;pointer-events:none;backdrop-filter:blur(6px)}
.pro-element{cursor:move}.pro-element.locked{cursor:not-allowed}.pro-element.selected>*{filter:drop-shadow(0 0 3px rgba(14,165,233,.95))}.pro-wifi-sector{stroke-width:2}.pro-wifi-direction{stroke-width:4;stroke-linecap:round}.pro-wifi-marker{stroke:#fff;stroke-width:3}.pro-wifi-core{fill:#fff}.pro-geometry-polygon{stroke-width:3}.pro-geometry-line{stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.pro-cable-line{stroke-linecap:round;stroke-linejoin:round}.pro-element-label{font-size:14px;font-weight:800;fill:#111827;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;pointer-events:none}.pro-lock-label{font-size:9px;font-weight:900;fill:#fff;pointer-events:none}.pro-dead-point{fill:#dc2626;stroke:#fff;stroke-width:1.5;pointer-events:none}.pro-handle-guide{stroke:#0ea5e9;stroke-width:2;stroke-dasharray:6 5;pointer-events:none}.pro-handle{fill:#fff;stroke:#0284c7;stroke-width:3;cursor:pointer}.pro-handle-range{fill:#fef3c7;stroke:#d97706}.pro-handle-fov{fill:#f3e8ff;stroke:#7c3aed}.pro-vertex-handle{fill:#fff;stroke:#2563eb}.pro-selection-rect{fill:rgba(14,165,233,.1);stroke:#0284c7;stroke-width:2;stroke-dasharray:8 5;pointer-events:none}.pro-measure-line{stroke:#db2777;stroke-width:3;stroke-dasharray:8 5;pointer-events:none}.pro-measure-point{fill:#fff;stroke:#db2777;stroke-width:3;pointer-events:none}
.pro-panel-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid #dfe6ef}.pro-panel-tabs button{padding:12px 8px;border:0;border-bottom:2px solid transparent;background:#f8fafc;color:#64748b;font:inherit;font-size:11px;font-weight:750;cursor:pointer}.pro-panel-tabs button.active{border-bottom-color:#2563eb;background:#fff;color:#1d4ed8}.pro-panel-content{display:none;padding:14px}.pro-panel-content.active{display:block}.pro-empty-selection{display:grid;place-items:center;min-height:260px;text-align:center;color:#94a3b8}.pro-empty-selection svg{width:42px;height:42px;margin-bottom:10px}.pro-empty-selection strong,.pro-empty-selection small{display:block}.pro-empty-selection strong{color:#475569}.pro-empty-selection small{max-width:220px;margin-top:4px;line-height:1.5}.pro-selection-head{display:flex;justify-content:space-between;gap:10px;align-items:center;padding-bottom:12px;border-bottom:1px solid #e2e8f0}.pro-selection-head small,.pro-selection-head strong{display:block}.pro-selection-head small{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:#94a3b8}.pro-selection-head strong{margin-top:3px;font-size:13px}.pro-selection-actions{display:grid;gap:7px;margin:13px 0}.pro-z-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.pro-selection-details{border-top:1px solid #e2e8f0}.pro-selection-details>div{display:grid;grid-template-columns:60px minmax(0,1fr);gap:3px 8px;padding:9px 0;border-bottom:1px solid #edf2f7}.pro-selection-details span{font-size:9px;text-transform:uppercase;color:#94a3b8}.pro-selection-details strong{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pro-selection-details em{grid-column:2;font-size:9px;font-style:normal;color:#64748b}.pro-layer-list label{display:grid;grid-template-columns:auto 20px minmax(0,1fr) auto;align-items:center;gap:8px;padding:9px 2px;border-bottom:1px solid #edf2f7;font-size:11px}.pro-layer-list strong{font-weight:650}.pro-layer-list em{font-style:normal;color:#94a3b8}.layer-symbol{display:block;width:16px;height:10px;border-radius:3px}.layer-symbol.wifi{height:16px;border-radius:50%;background:#2563eb}.layer-symbol.coverage{border:2px solid #60a5fa;background:rgba(96,165,250,.2)}.layer-symbol.zone{border:2px solid #dc2626;background:rgba(239,68,68,.18)}.layer-symbol.obstacle{border:2px solid #7c3aed;background:rgba(139,92,246,.22)}.layer-symbol.cable{height:4px;background:#f59e0b}.layer-symbol.black{height:12px;width:12px;border-radius:50%;background:#dc2626}.layer-symbol.label{height:16px;background:#e2e8f0;text-align:center;font-size:10px;font-weight:900}.pro-layer-help{margin-top:18px;padding:11px;border-radius:10px;background:#f8fafc;color:#64748b;font-size:10px}.pro-layer-help strong,.pro-layer-help p{display:block;margin:0}.pro-layer-help p{margin-top:4px;line-height:1.45}.pro-editor.is-readonly .pro-element{cursor:default}.pro-editor.is-readonly .pro-tools button:not([data-tool=pan]):not([data-tool=measure]){opacity:.55}
.pro-editor-fullscreen{overflow:hidden}.pro-editor-fullscreen .sidebar,.pro-editor-fullscreen .topbar,.pro-editor-fullscreen .footer,.pro-editor-fullscreen .pro-editor-heading,.pro-editor-fullscreen .access-banner,.pro-editor-fullscreen .pro-editor-notice{display:none!important}.pro-editor-fullscreen .main{margin-left:0!important}.pro-editor-fullscreen .content{padding:0!important}.pro-editor-fullscreen .pro-editor{position:fixed;inset:0;z-index:9999;border:0;border-radius:0}.pro-editor-fullscreen .pro-layout{height:calc(100vh - 58px)}
@media(max-width:1280px){.pro-layout{grid-template-columns:190px minmax(0,1fr) 255px}.pro-tool span{display:none}.pro-toolbar-status{min-width:130px}.pro-editor-heading{align-items:flex-start;flex-direction:column}.pro-editor-heading .heading-actions{justify-content:flex-start}}
@media(max-width:900px){.pro-layout{grid-template-columns:1fr;height:72vh}.pro-left-panel,.pro-right-panel{display:none}.pro-toolbar{overflow-x:auto}.pro-toolbar-status{display:none}.pro-stage-viewport{min-height:520px}.pro-editor-fullscreen .pro-layout{height:calc(100vh - 58px)}}

/* V0.21.0 — branding organizacji i profesjonalne dokumenty */
.branding-preview-card{position:sticky;top:92px;align-self:start;padding:24px;border-radius:18px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:hidden}.branding-preview-card:before{content:"";position:absolute;inset:0 0 auto;height:6px;background:var(--document-primary,#1d4ed8)}.branding-preview-top{display:flex;align-items:center;gap:14px;margin-bottom:22px}.branding-preview-top img{width:72px;height:54px;object-fit:contain}.branding-preview-mark{width:58px;height:54px;display:grid;place-items:center;border-radius:12px;background:var(--document-accent,#0f172a);color:#fff;font-weight:900;font-size:20px}.branding-preview-top strong,.branding-preview-top span{display:block}.branding-preview-top span{margin-top:4px;color:var(--muted);font-size:12px}.branding-preview-line{height:3px;margin-bottom:20px;border-radius:999px;background:var(--document-primary,#1d4ed8)}.branding-preview-card>small,.branding-preview-card>strong{display:block}.branding-preview-card>small{margin-top:10px;color:var(--muted);font-size:11px}.branding-preview-card>strong{margin-top:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.branding-switch-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.branding-switch-grid label{display:flex;align-items:center;gap:9px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft);font-size:13px;font-weight:700}.branding-assets-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.branding-asset-card{display:flex;flex-direction:column;gap:14px;padding:18px;border:1px solid var(--border);border-radius:16px;background:#fff}.branding-asset-preview{height:130px;display:grid;place-items:center;border:1px dashed #cbd5e1;border-radius:13px;background:#f8fafc;overflow:hidden}.branding-asset-preview img{max-width:90%;max-height:110px;object-fit:contain}.branding-asset-preview>span{width:52px;height:52px;display:grid;place-items:center;border-radius:15px;background:#eff6ff;color:#2563eb}.branding-asset-preview svg{width:26px;height:26px}.branding-asset-card h4{margin:0}.branding-asset-card p{margin:5px 0;color:var(--muted);font-size:12px;line-height:1.45}.branding-asset-card small{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.branding-upload-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.branding-upload-form input[type=file]{min-width:0;font-size:11px}
.document-body{--document-primary:#1d4ed8;--document-accent:#0f172a}.branded-document{position:relative}.branded-document-header{border-bottom-color:var(--document-accent)!important}.branded-document .document-logo{background:var(--document-accent)}.document-logo-image{display:block;width:92px;height:64px;object-fit:contain;object-position:left center}.branded-document .document-title small,.branded-document .map-sheet-header small{color:var(--document-primary)}.branded-document .document-table th{background:var(--document-accent)}.branded-document .document-intro{border-left-color:var(--document-primary);background:#f8fafc}.branded-document .grand-total{color:var(--document-primary)}.branded-document .offer-totals{border-top:4px solid var(--document-primary)}.branded-document .document-section h2,.branded-document .offer-terms h2,.branded-document .map-sheet-legend h2{color:var(--document-accent)}.branded-document .document-meta>div:first-child,.branded-document .map-sheet-meta>div:first-child{box-shadow:inset 0 3px 0 var(--document-primary)}.branded-signatures>div{position:relative;min-height:105px}.signature-media{height:64px;display:flex;justify-content:center;align-items:flex-end;gap:8px;margin:-30px auto 8px}.signature-media img{max-width:145px;max-height:62px;object-fit:contain}.signature-media img+img{max-width:95px}.internal-document-watermark{position:absolute;top:44%;left:50%;z-index:0;transform:translate(-50%,-50%) rotate(-28deg);font-size:58px;font-weight:900;letter-spacing:.08em;color:rgba(185,28,28,.06);white-space:nowrap;pointer-events:none}.internal-document>*:not(.internal-document-watermark){position:relative;z-index:1}.document-company{display:flex;flex-direction:column;align-items:flex-end;gap:4px;text-align:right}.document-meta-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#cbd5e1;border:1px solid #cbd5e1;border-radius:10px;overflow:hidden}.document-meta-grid>div{background:#f8fafc;padding:12px 14px}.document-meta-grid small{display:block;color:#64748b;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.document-meta-grid strong{display:block;margin-top:4px;font-size:13px}
@media(max-width:1050px){.branding-assets-grid{grid-template-columns:1fr}.branding-preview-card{position:static}.branding-switch-grid{grid-template-columns:1fr}}
@media(max-width:720px){.branding-upload-form{grid-template-columns:1fr}.document-logo-image{width:74px;height:54px}.document-meta-grid{grid-template-columns:1fr 1fr}}
@media print{.branded-document .document-table th{background:var(--document-accent)!important}.document-logo-image{max-width:88px;max-height:58px}.signature-media{height:50px}.signature-media img{max-height:50px}.internal-document-watermark{color:rgba(185,28,28,.045)}}
.branded-client-header{border-bottom:4px solid var(--document-primary,#1d4ed8)}.client-portal-logo{width:76px;height:48px;object-fit:contain;object-position:left center}.branded-client-header .client-portal-org a{border-color:var(--document-primary,#1d4ed8);color:var(--document-primary,#1d4ed8)}

/* ASK WiFi Designer V0.22.0 — kopie zapasowe i diagnostyka */
.stat-value-small{font-size:1.12rem;line-height:1.25;max-width:220px;overflow-wrap:anywhere}
.diagnostic-table td{vertical-align:top}
.diagnostic-table td:nth-child(3),.diagnostic-table td:nth-child(4){max-width:260px;overflow-wrap:anywhere}
.error-text{color:#b91c1c!important;max-width:260px;white-space:normal}
.section-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.btn-danger{background:#b91c1c;color:#fff;border-color:#b91c1c}.btn-danger:hover{background:#991b1b;border-color:#991b1b}
button.icon-action{border:0;background:transparent;cursor:pointer}
button.icon-action.danger{color:#b91c1c}
.empty-state{text-align:center}.empty-icon{width:56px;height:56px;margin:0 auto 14px;display:grid;place-items:center;border-radius:16px;background:#eef2ff;color:#1d4ed8}.empty-icon svg{width:28px;height:28px}
@media(max-width:760px){.diagnostic-table table{min-width:980px}.section-actions{width:100%}}


/* V0.23.0 DEV — subskrypcje i płatności */
.subscription-plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}.subscription-plan-card{position:relative;display:flex;flex-direction:column;min-height:100%;padding:22px;border:1px solid var(--border);border-radius:18px;background:#fff;box-shadow:var(--shadow-sm);overflow:hidden}.subscription-plan-card.recommended{border-color:#2563eb;box-shadow:0 14px 34px rgba(37,99,235,.13)}.plan-ribbon{position:absolute;top:14px;right:-34px;width:140px;padding:6px;text-align:center;transform:rotate(35deg);background:#2563eb;color:#fff;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.plan-head small{font-size:10px;font-weight:900;letter-spacing:.12em;color:#2563eb}.plan-head h3{margin:5px 0 0;font-size:22px}.plan-head p{min-height:52px;margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.55}.plan-price{margin:20px -22px 0;padding:18px 22px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:#f8fafc}.plan-price strong,.plan-price span{display:block}.plan-price strong{font-size:22px;color:#0f172a}.plan-price span{margin-top:3px;color:var(--muted);font-size:11px}.plan-limits{display:grid;gap:7px;padding:16px 0;color:#475569;font-size:12px}.plan-limits span{display:flex;justify-content:space-between;gap:10px}.plan-order-form{display:grid;gap:10px;margin-top:auto}.plan-order-form label{display:grid;gap:5px;color:#475569;font-size:11px;font-weight:750}.plan-order-form select,.plan-order-form textarea{width:100%}.plan-admin-note{margin-top:auto;padding:12px;border-radius:10px;background:#f8fafc;color:#64748b;font-size:12px;text-align:center}.feature-grid.compact .feature-card{padding:10px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.page-actions{display:flex;gap:8px;flex-wrap:wrap}.empty-table{padding:30px;text-align:center;color:var(--muted)}
@media(max-width:700px){.subscription-plan-grid{grid-template-columns:1fr}.page-actions{width:100%}.page-actions .btn{flex:1}}

/* V0.24.0 DEV — centrum zgłoszeń i onboarding */
.topbar-support{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid #bfdbfe;border-radius:11px;background:#eff6ff;color:#1d4ed8;text-decoration:none;font-size:13px;font-weight:800;transition:.18s}.topbar-support:hover{background:#dbeafe;border-color:#93c5fd}.topbar-support svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8}.support-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;align-items:start}.support-ticket-main{margin-bottom:16px}.support-description{font-size:14px;line-height:1.7;color:#1f2937;white-space:normal}.support-thread{display:flex;flex-direction:column;gap:12px;margin:16px 0}.support-message{padding:16px;border:1px solid var(--border);border-radius:16px;background:#fff}.support-message header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.support-message header span{color:var(--muted);font-size:11px}.support-message>div{line-height:1.65;font-size:14px}.support-message-admin{margin-left:5%;border-color:#bfdbfe;background:#eff6ff}.support-message-user{margin-right:5%}.support-message-internal{border-color:#fcd34d;background:#fffbeb}.attachment-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.attachment-item{display:flex;align-items:center;gap:10px;min-width:190px;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:#fff;color:inherit;text-decoration:none}.attachment-item:hover{border-color:#93c5fd}.attachment-item svg{width:20px;height:20px;color:#2563eb}.attachment-item strong,.attachment-item small{display:block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-item small{margin-top:2px;color:var(--muted);font-size:10px}.support-meta{display:grid;gap:12px}.support-meta>div{padding-bottom:11px;border-bottom:1px solid var(--border)}.support-meta>div:last-child{border-bottom:0}.support-meta span,.support-meta strong{display:block}.support-meta span{color:var(--muted);font-size:11px}.support-meta strong{margin-top:4px}.support-url,.support-page-url{overflow-wrap:anywhere}.support-page-url{margin-top:15px;padding:11px;border-radius:10px;background:#f8fafc;font-size:12px}.support-filter{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(150px,1fr)) auto}.support-critical-row{box-shadow:inset 4px 0 0 #dc2626}.checkbox-row{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#f8fafc}.checkbox-row input{margin-top:3px}.checkbox-row strong,.checkbox-row small{display:block}.checkbox-row small{margin-top:3px;color:var(--muted)}
.onboarding-dashboard{margin-bottom:20px;border-color:#bfdbfe;background:linear-gradient(135deg,#eff6ff,#fff)}.onboarding-dashboard .card-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,280px) auto;align-items:center;gap:22px}.onboarding-dashboard-copy h3{margin:5px 0}.onboarding-dashboard-copy p{margin:0;color:var(--muted)}.onboarding-dashboard-progress{display:flex;align-items:center;gap:10px}.onboarding-progress{height:10px;flex:1;border-radius:999px;background:#dbeafe;overflow:hidden}.onboarding-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#38bdf8)}.onboarding-hero{margin-bottom:20px}.onboarding-hero .card-body{display:grid;gap:14px}.onboarding-hero h3,.onboarding-hero p{margin:0}.onboarding-hero p{margin-top:5px;color:var(--muted)}.onboarding-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px}.onboarding-step{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:14px;padding:16px;border:1px solid var(--border);border-radius:16px;background:#fff;color:inherit;text-decoration:none;transition:.18s}.onboarding-step:hover{transform:translateY(-1px);border-color:#93c5fd;box-shadow:var(--shadow-sm)}.onboarding-step.complete{background:#f0fdf4;border-color:#bbf7d0}.onboarding-number{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#eff6ff;color:#2563eb;font-weight:900}.onboarding-step.complete .onboarding-number{background:#dcfce7;color:#15803d}.onboarding-number svg{width:22px;height:22px}.onboarding-step strong,.onboarding-step p{display:block;margin:0}.onboarding-step p{margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45}.onboarding-action{display:flex;align-items:center;gap:4px;color:#2563eb;font-size:11px;font-weight:800}.onboarding-action svg{width:15px;height:15px}.workflow-list{display:grid;gap:8px;margin:0;padding-left:22px}.workflow-list li{padding:6px 0;color:#334155}.btn-ghost{background:transparent;border-color:transparent;color:#64748b}.btn-ghost:hover{background:#f8fafc;border-color:var(--border)}
@media(max-width:1100px){.support-layout{grid-template-columns:1fr}.support-layout .sticky-card{position:static}.support-filter{grid-template-columns:1fr 1fr 1fr}.onboarding-dashboard .card-body{grid-template-columns:1fr}.onboarding-grid{grid-template-columns:1fr}}
@media(max-width:760px){.topbar-support span{display:none}.topbar-support{padding:9px}.support-filter{grid-template-columns:1fr}.support-message-admin,.support-message-user{margin-left:0;margin-right:0}.onboarding-step{grid-template-columns:42px 1fr}.onboarding-action{grid-column:2}.attachment-item{width:100%}}
.support-tech-card{margin-top:16px}.support-tech-card .support-url{font-size:11px;font-weight:650;line-height:1.45}

/* V0.25.0 DEV — dokumenty prawne, zgody i kontrolowana rejestracja */
.footer-legal-links,.auth-legal-links{display:inline-flex;align-items:center;gap:12px}.footer-legal-links a,.auth-legal-links a{color:inherit;text-decoration:none;opacity:.78}.footer-legal-links a:hover,.auth-legal-links a:hover{text-decoration:underline;opacity:1}.auth-legal-links{margin-left:12px}.legal-public-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 18px}.legal-public-meta small{color:var(--muted)}.legal-document-content{padding:22px;border:1px solid var(--border);border-radius:14px;background:#fff;color:#334155;line-height:1.72;white-space:normal;max-height:58vh;overflow:auto}.legal-document-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.legal-status-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:14px}.legal-status-icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center}.legal-status-icon svg{width:22px}.legal-status-icon.ok{background:#dcfce7;color:#15803d}.legal-status-icon.missing{background:#fef3c7;color:#b45309}.legal-status-card strong,.legal-status-card small{display:block}.legal-status-card small{margin-top:4px;color:var(--muted)}.legal-acceptance-list{display:grid;gap:14px}.legal-acceptance-card .card-header{align-items:center}.legal-consent{padding:14px;border:1px solid var(--border);border-radius:11px;background:#f8fafc;line-height:1.5}.legal-consent a{font-weight:750}.registration-consents{display:grid;gap:10px;margin:18px 0}.registration-closed{text-align:center;padding:30px 18px;border:1px solid var(--border);border-radius:16px;background:#f8fafc}.registration-closed>span{width:58px;height:58px;margin:0 auto 14px;border-radius:18px;display:grid;place-items:center;background:#e2e8f0;color:#475569}.registration-closed>span svg{width:28px}.registration-closed h3{margin:0 0 8px}.registration-closed p{color:var(--muted);margin:0 0 18px}.cookie-notice{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:5000;width:min(920px,calc(100% - 28px));display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 16px;border:1px solid #cbd5e1;border-radius:14px;background:rgba(15,23,42,.97);color:#f8fafc;box-shadow:0 20px 60px rgba(15,23,42,.35)}.cookie-notice[hidden]{display:none}.cookie-notice>div:first-child{display:flex;flex-direction:column;gap:3px}.cookie-notice>div:first-child span{font-size:12px;color:#cbd5e1}.cookie-notice>div:last-child{display:flex;align-items:center;gap:12px;white-space:nowrap}.cookie-notice a{color:#93c5fd}.inline-form{display:inline-flex;margin:0}.badge-light{background:rgba(255,255,255,.22);color:inherit;margin-left:5px}.table-subline{display:block;margin-top:3px;color:var(--muted);font-size:11px}@media(max-width:720px){.legal-status-card{grid-template-columns:44px 1fr}.legal-status-card>a{grid-column:1/-1}.cookie-notice{align-items:flex-start;flex-direction:column}.cookie-notice>div:last-child{width:100%;justify-content:space-between}.auth-legal-links{display:flex;margin:7px 0 0;justify-content:center}.footer{flex-wrap:wrap;gap:8px}.footer-legal-links{order:3;width:100%}}


/* V0.26.0 DEV — SMTP, powiadomienia i reset hasła */
.topbar-notifications{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;border:1px solid #e2e8f0;border-radius:11px;background:#fff;color:#475569;text-decoration:none}.topbar-notifications:hover{background:#f8fafc;color:#2563eb;border-color:#bfdbfe}.topbar-notifications svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8}.topbar-notifications span{position:absolute;right:-5px;top:-6px;min-width:19px;height:19px;padding:0 5px;display:grid;place-items:center;border:2px solid #fff;border-radius:999px;background:#dc2626;color:#fff;font-size:10px;font-weight:900}.notification-list{display:grid;gap:12px}.notification-card{display:grid;grid-template-columns:46px minmax(0,1fr);gap:14px;padding:17px}.notification-card.is-unread{border-color:#93c5fd;background:#f8fbff;box-shadow:inset 4px 0 0 #2563eb}.notification-card.is-read{opacity:.78}.notification-level{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#eff6ff;color:#2563eb}.notification-level svg{width:22px}.notification-level-success{background:#dcfce7;color:#15803d}.notification-level-warning{background:#fef3c7;color:#b45309}.notification-level-error{background:#fee2e2;color:#b91c1c}.notification-content>div:first-child{display:flex;justify-content:space-between;gap:14px}.notification-content>div:first-child span{color:var(--muted);font-size:11px}.notification-content p{margin:7px 0 0;color:#475569;line-height:1.55}.notification-content .form-actions{margin-top:10px}.text-danger{color:#b91c1c!important}.narrow-card{max-width:620px}.top-gap{margin-top:14px}
@media(max-width:760px){.topbar-notifications{width:38px;height:38px}.notification-card{grid-template-columns:38px 1fr}.notification-level{width:36px;height:36px}.notification-content>div:first-child{flex-direction:column;gap:3px}}

/* V0.27.0 DEV — eksport danych organizacji i bezpieczne usuwanie */
.table-actions-wrap{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.compact-action-form{display:flex;align-items:center;gap:6px;margin:0}.compact-action-form input[type=number]{width:72px;min-height:34px;padding:6px 8px}.filter-inline{display:flex;align-items:center;gap:8px}.filter-inline select{min-width:190px}.success-text{color:#15803d!important;font-weight:700}.error-text{color:#b91c1c!important}.btn-block{width:100%;justify-content:center}@media(max-width:760px){.filter-inline{width:100%}.filter-inline select{width:100%}.table-actions-wrap{min-width:210px}}

/* V0.28.0 DEV — raport gotowości do BETA */
.beta-score-grid{margin-bottom:22px}
.beta-score-card .card-body{display:flex;align-items:center;gap:18px}
.beta-score-ring{width:104px;height:104px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:10px solid rgba(148,163,184,.2);background:#fff;box-shadow:inset 0 0 0 1px rgba(15,23,42,.05)}
.beta-score-ring strong{font-size:27px;line-height:1;color:#0f172a}
.beta-score-ring span{font-size:11px;color:#64748b;margin-top:6px;text-transform:uppercase;letter-spacing:.07em}
.beta-score-success{border-color:rgba(22,163,74,.36)}
.beta-score-warning{border-color:rgba(245,158,11,.42)}
.beta-score-danger{border-color:rgba(220,38,38,.38)}
.beta-report-actions{justify-content:flex-end;margin:0 0 20px}
.beta-readiness-table td{vertical-align:top}
.table-subline{display:block;margin-top:5px;color:#94a3b8;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}
@media print{.sidebar,.topbar,.footer,.page-heading form,.beta-report-actions,.history-only{display:none!important}.main{margin-left:0!important}.content{padding:0!important}.card{break-inside:avoid}.beta-readiness-table{overflow:visible}.beta-readiness-table table{font-size:10px}}
@media(max-width:760px){.beta-score-card .card-body{align-items:flex-start}.beta-score-ring{width:88px;height:88px;min-width:88px}.beta-score-ring strong{font-size:23px}.beta-report-actions{justify-content:stretch}.beta-report-actions .btn{flex:1}}
.alert-danger{background:#fef2f2;color:#991b1b;border-color:#fecaca}


/* V0.4.0 BETA — szablony projektów i ankieta wymagań */
.template-grid .card{display:flex;flex-direction:column;min-height:100%}.template-grid .card-body{flex:1}.template-grid .card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}.template-grid .tag-list{display:flex;gap:6px;flex-wrap:wrap}.requirements-score{display:flex;align-items:center;gap:10px}.viz-stat-value{font-size:28px;line-height:1.1;font-weight:850;color:var(--text)}.metric-card{padding:16px;border:1px solid var(--border);border-radius:14px;background:#f8fafc}.metric-card>span,.metric-card>small{display:block;color:var(--muted)}.metric-card>strong{display:block;margin:7px 0}.compact-detail{grid-template-columns:minmax(95px,.65fr) minmax(0,1.35fr)}.form-layout .sticky-card{top:112px}.template-intro{padding:16px;border:1px solid #bfdbfe;border-radius:14px;background:#eff6ff}.template-intro strong,.template-intro span{display:block}.template-intro span{margin-top:4px;color:#475569}.requirements-status-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:820px){.template-grid{grid-template-columns:1fr}.form-layout .sticky-card{position:static}.compact-detail{grid-template-columns:1fr}.compact-detail .key{padding-top:8px}}

/* V0.5.0 BETA — cennik i ceny promocyjne */
.subscription-plan-card .plan-price del{display:block;color:#94a3b8;font-size:.9rem;margin-bottom:2px}.subscription-plan-card .plan-ribbon.beta{background:#7c3aed}.subscription-plan-card .plan-limits{display:grid;gap:7px}.subscription-plan-card .plan-limits span{display:flex;justify-content:space-between;gap:12px}.usage-card.warning .usage-bar i{background:#f59e0b}.usage-card.danger .usage-bar i{background:#dc2626}

/* ASK WiFi Designer V0.6.0 BETA — rekomendacje rozmieszczenia AP */
.rec-map-viewport{overflow:auto;max-width:100%;border:1px solid #dbe4ef;border-radius:14px;background:#e8eef5;padding:12px}.rec-map-stage{position:relative;flex:none;overflow:hidden;background:#fff;transform-origin:top left}.rec-map-stage>img,.rec-map-stage>.rec-map-blank,.rec-map-stage>.internet-map-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.rec-map-stage>svg{position:absolute;inset:0;width:100%;height:100%;z-index:4}.rec-dead{fill:#dc2626;stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke;opacity:.8}.rec-existing-range{fill:#2563eb;fill-opacity:.045;stroke:#2563eb;stroke-opacity:.35;stroke-width:2;vector-effect:non-scaling-stroke}.rec-existing-marker{fill:#2563eb;stroke:#fff;stroke-width:3;vector-effect:non-scaling-stroke}.rec-suggested-range{fill:#7c3aed;fill-opacity:.1;stroke:#7c3aed;stroke-width:3;stroke-dasharray:10 7;vector-effect:non-scaling-stroke}.rec-suggested-marker{fill:#7c3aed;stroke:#fff;stroke-width:4;vector-effect:non-scaling-stroke}.rec-suggestion text{font-size:15px;font-weight:850;fill:#4c1d95;paint-order:stroke;stroke:#fff;stroke-width:4;stroke-linejoin:round}.rec-suggestion.is-created .rec-suggested-range{fill:#16a34a;stroke:#16a34a}.rec-suggestion.is-created .rec-suggested-marker{fill:#16a34a}.rec-create-form{display:grid;grid-template-columns:minmax(150px,1fr) auto;gap:8px;align-items:center;min-width:270px}.rec-create-form select{min-width:0}.row-highlight{background:#eff6ff}.muted{color:#64748b}.badge-danger{background:#fee2e2;color:#991b1b}.badge-warning{background:#fef3c7;color:#92400e}.badge-success{background:#dcfce7;color:#166534}.badge-info{background:#dbeafe;color:#1e40af}@media(max-width:780px){.rec-create-form{grid-template-columns:1fr;min-width:190px}.rec-map-viewport{padding:6px}}

/* V0.7.0 BETA — projekt demonstracyjny i decyzja publikacyjna */
.onboarding-demo-callout,.launch-decision{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.onboarding-demo-callout p,.launch-decision p{margin:6px 0 0}.launch-decision-success{border-left:5px solid #16a34a}.launch-decision-warning{border-left:5px solid #d97706}.launch-decision-danger{border-left:5px solid #dc2626}.launch-decision .card-body{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px}.launch-decision-actions{display:flex;gap:10px;flex-wrap:wrap}.danger-zone{border-color:#fecaca}.metric-card{border:1px solid var(--border,#dbe2ea);border-radius:14px;padding:18px;background:#fff}.metric-card span,.metric-card small{display:block;color:#64748b}.metric-card strong{display:block;font-size:20px;margin:6px 0}@media(max-width:760px){.onboarding-demo-callout,.launch-decision .card-body{align-items:stretch;flex-direction:column}.launch-decision-actions{flex-direction:column}}

/* Uproszczone dodawanie AP bezpośrednio na mapie */
.pro-tool.pro-tool-add{border-color:#bfdbfe;background:#eff6ff;color:#1d4ed8}.pro-tool.pro-tool-add:hover,.pro-tool.pro-tool-add.active{border-color:#60a5fa;background:#dbeafe;color:#1d4ed8}.pro-ap-quick-add{display:grid;gap:8px;padding:10px;margin-bottom:7px;border:1px solid #bfdbfe;border-radius:11px;background:#eff6ff}.pro-ap-quick-add>label{font-size:10px;font-weight:800;color:#1e3a8a}.pro-ap-quick-add select{width:100%;min-width:0;padding:8px;border:1px solid #93c5fd;border-radius:8px;background:#fff;color:#0f172a;font:inherit;font-size:11px}.pro-ap-help{display:block;line-height:1.45;color:#64748b;font-size:9px}.pro-ap-empty{padding:9px;border-radius:8px;background:#fff;color:#64748b}.pro-ap-empty strong,.pro-ap-empty small{display:block}.pro-ap-empty strong{font-size:11px;color:#334155}.pro-ap-empty small{margin-top:3px;font-size:9px;line-height:1.4}.pro-add-link-advanced{border-top:1px dashed #dbe3ec;border-radius:0;margin-top:7px;padding-top:11px}.pro-stage-viewport.is-add-wifi-tool{cursor:crosshair}.pro-placement-hint{position:absolute;top:12px;left:50%;z-index:20;display:flex;align-items:center;gap:12px;transform:translateX(-50%);padding:8px 12px;border:1px solid #93c5fd;border-radius:10px;background:rgba(239,246,255,.96);color:#1e3a8a;box-shadow:0 8px 24px rgba(15,23,42,.16);pointer-events:none}.pro-placement-hint[hidden]{display:none}.pro-placement-hint strong{font-size:11px}.pro-placement-hint span{font-size:9px;color:#64748b}.pro-placement-preview{pointer-events:none}.pro-placement-sector{fill:rgba(34,197,94,.14);stroke:#16a34a;stroke-width:2.5;stroke-dasharray:9 6}.pro-placement-marker{fill:#16a34a;stroke:#fff;stroke-width:3}.pro-placement-cross{stroke:#fff;stroke-width:2.5;stroke-linecap:round}.pro-editor.is-readonly .pro-ap-quick-add{opacity:.55}
.pro-tool.pro-tool-bridge{border-color:#bae6fd;background:#f0f9ff;color:#0369a1}.pro-tool.pro-tool-bridge:hover,.pro-tool.pro-tool-bridge.active{border-color:#38bdf8;background:#e0f2fe;color:#075985}.pro-bridge-quick-add{display:grid;gap:8px;padding:10px;margin:9px 0 7px;border:1px solid #bae6fd;border-radius:11px;background:#f0f9ff}.pro-bridge-quick-add>label{font-size:10px;font-weight:800;color:#075985}.pro-bridge-quick-add select,.pro-bridge-quick-add input[type=number]{width:100%;min-width:0;padding:8px;border:1px solid #7dd3fc;border-radius:8px;background:#fff;color:#0f172a;font:inherit;font-size:11px}.pro-bridge-speed{display:grid;gap:5px}.pro-bridge-speed>div{display:grid;grid-template-columns:1fr auto;align-items:center;gap:7px}.pro-bridge-speed em{font-size:9px;color:#64748b;font-style:normal}.pro-bridge-help,.pro-bridge-warning{display:block;line-height:1.45;font-size:9px}.pro-bridge-help{color:#64748b}.pro-bridge-warning{padding:6px 8px;border-radius:7px;background:#fff7ed;color:#9a3412}.pro-quick-advanced{border-top:1px dashed #bae6fd;padding-top:7px}.pro-quick-advanced summary{cursor:pointer;font-size:9px;font-weight:800;color:#0369a1}.pro-quick-advanced-grid{display:grid;gap:7px;margin-top:8px}.pro-quick-advanced-grid label{display:grid;gap:4px;font-size:9px;font-weight:700;color:#475569}.pro-quick-advanced-grid .pro-check{display:flex;align-items:center;gap:7px}.pro-quick-advanced-grid .pro-check input{width:auto}.pro-stage-viewport.is-add-bridge-tool{cursor:crosshair}.pro-bridge-placement-preview{pointer-events:none}.pro-bridge-placement-line{stroke:#0284c7;stroke-width:4;stroke-dasharray:12 7}.pro-bridge-placement-marker{stroke:#fff;stroke-width:3}.pro-bridge-placement-a{fill:#0ea5e9}.pro-bridge-placement-b{fill:#0369a1}.pro-bridge-placement-label{fill:#075985;font-size:13px;font-weight:900;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}.pro-bridge-group{cursor:pointer}.pro-bridge-hit{stroke:transparent;stroke-width:18;pointer-events:stroke}.pro-bridge-group:hover .pro-bridge-line{filter:drop-shadow(0 0 3px rgba(2,132,199,.45));stroke-width:6}.pro-editor.is-readonly .pro-bridge-quick-add{opacity:.55}

/* V0.7.0 BETA hotfix: prosty wybór urządzenie + opcjonalna antena */
.pro-device-picker-card{gap:9px}.pro-picker-title{display:grid;gap:2px;padding-bottom:7px;border-bottom:1px solid rgba(148,163,184,.28)}.pro-picker-title strong{font-size:12px;color:#0f172a}.pro-picker-title small{font-size:9px;line-height:1.4;color:#64748b}.pro-device-line,.pro-antenna-line{display:grid!important;grid-template-columns:68px minmax(0,1fr);align-items:center;gap:8px}.pro-device-line>span,.pro-antenna-line>span{font-size:10px;font-weight:900;color:#334155}.pro-antenna-line small{grid-column:2;font-size:8px;line-height:1.35;color:#64748b}.pro-antenna-line[hidden],.pro-integrated-antenna-note[hidden]{display:none!important}.pro-integrated-antenna-note{display:flex;align-items:center;gap:8px;padding:7px 8px;border:1px solid #bbf7d0;border-radius:8px;background:#f0fdf4;color:#166534}.pro-integrated-antenna-note>svg{width:15px;height:15px;flex:0 0 auto}.pro-integrated-antenna-note span{display:grid;gap:1px}.pro-integrated-antenna-note strong{font-size:9px}.pro-integrated-antenna-note small{font-size:8px;color:#4d7c5c}.pro-device-picker-card select{font-size:10px}.pro-device-picker-card .btn{margin-top:2px}@media(max-width:680px){.pro-device-line,.pro-antenna-line{grid-template-columns:1fr}.pro-antenna-line small{grid-column:1}}


/* ASK WiFi Designer — wyraźny podział Mapa zwykła / Mapa PRO */
.map-editor-mode-bar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 18px;padding:12px 14px;border:1px solid var(--border,#dbe3ee);border-radius:14px;background:var(--surface,#fff)}
.map-editor-mode-label{font-weight:800;color:var(--text,#172033);white-space:nowrap}
.map-editor-mode-switch{display:grid;grid-template-columns:repeat(2,minmax(190px,1fr));gap:6px;max-width:560px;width:100%;padding:4px;border-radius:12px;background:#eef3f8}
.map-editor-mode-switch a{display:flex;flex-direction:column;gap:2px;padding:9px 14px;border-radius:9px;color:#526174;text-decoration:none;border:1px solid transparent}
.map-editor-mode-switch a strong{font-size:13px;letter-spacing:.05em}
.map-editor-mode-switch a small{font-size:11px;color:#748197}
.map-editor-mode-switch a.active{background:#fff;color:#172033;border-color:#cfd9e6;box-shadow:0 2px 8px rgba(15,23,42,.08)}
.map-editor-mode-switch a.active:first-child{border-color:#9fc8ff}
.map-editor-mode-switch a.active:last-child{border-color:#7c8cff}
.pro-editor.is-simple-mode .pro-only{display:none!important}
.pro-editor.is-simple-mode .pro-layout{grid-template-columns:minmax(270px,330px) minmax(0,1fr) minmax(230px,285px)}
.pro-editor.is-simple-mode .pro-right-panel{padding-top:16px}
.pro-editor.is-simple-mode .pro-panel-content[data-panel-content="inspector"]{display:block!important}
.pro-editor.is-simple-mode .pro-selection-details{margin-top:10px}
.pro-editor.is-simple-mode .pro-left-panel .pro-panel-section:first-child>h3{margin-bottom:10px}
.pro-editor.is-simple-mode .pro-coordinate-bar #pro-measure-result{display:none}
.simple-editor-help{margin:16px;padding:14px;border-radius:12px;background:#eef7ff;border:1px solid #c8e1ff;color:#29455f}
.simple-editor-help strong{display:block;margin-bottom:5px}
.simple-editor-help p{margin:0;font-size:13px;line-height:1.45}
.map-editor-card-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.map-editor-card-actions .btn{white-space:nowrap}
@media(max-width:900px){.map-editor-mode-bar{align-items:stretch;flex-direction:column}.map-editor-mode-switch{max-width:none}.pro-editor.is-simple-mode .pro-layout{grid-template-columns:1fr}.pro-editor.is-simple-mode .pro-right-panel{display:none}}
@media(max-width:560px){.map-editor-mode-switch{grid-template-columns:1fr}.map-editor-mode-label{display:none}}

/* ASK WiFi Designer: prosty wybór urządzenia, mocy i anteny */
.power-input-row{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:8px}.auto-range-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 12px;padding:12px 14px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff}.auto-range-card>span{font-size:12px;font-weight:800;color:#1e3a8a}.auto-range-card>strong{font-size:18px;color:#1d4ed8}.auto-range-card>small{grid-column:1/-1;color:#475569;line-height:1.45}
.pro-power-line{display:grid;grid-template-columns:68px minmax(0,1fr);align-items:center;gap:8px}.pro-power-line>span{font-size:10px;font-weight:900;color:#334155}.pro-power-line>div{display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:6px}.pro-power-line input,.pro-power-line select{min-width:0;font-size:10px}.pro-power-line small{grid-column:2;font-size:8px;line-height:1.35;color:#64748b}.pro-radio-result{display:grid;grid-template-columns:65px minmax(0,1fr);gap:2px 8px;padding:8px 9px;border:1px solid #bfdbfe;border-radius:9px;background:#eff6ff}.pro-radio-result>span{grid-row:1/3;font-size:9px;font-weight:900;color:#1e40af}.pro-radio-result>strong{font-size:10px;color:#0f172a}.pro-radio-result>small{font-size:8px;line-height:1.35;color:#475569}.pro-catalog-links{display:flex;flex-wrap:wrap;gap:5px 9px;align-items:center}.pro-catalog-links a{font-size:8px;font-weight:800;color:#1d4ed8;text-decoration:none}.pro-catalog-links a:hover{text-decoration:underline}.pro-catalog-links span{flex-basis:100%;font-size:8px;color:#64748b}.pro-device-line>small{grid-column:2;font-size:8px;line-height:1.35;color:#64748b}.pro-ap-empty .btn{margin-top:8px}
@media(max-width:680px){.power-input-row{grid-template-columns:1fr 90px}.pro-power-line{grid-template-columns:1fr}.pro-power-line small{grid-column:1}.pro-radio-result{grid-template-columns:1fr}.pro-radio-result>span{grid-row:auto}}

/* ASK WiFi Designer V0.7.0 BETA — prosty katalog urządzenia i anteny */
.form-grid-subsection {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.form-grid-subsection[hidden],
.compact-alert[hidden] {
    display: none !important;
}
.compact-alert {
    grid-column: 1 / -1;
    margin: 0;
}
@media (max-width: 760px) {
    .form-grid-subsection { grid-template-columns: 1fr; }
}

/* HOTFIX: prosty pasek mapy — AP i przeszkoda, bez dodawania mostów */
.pro-tool.pro-tool-obstacle{border-color:#ddd6fe;background:#f5f3ff;color:#6d28d9;text-decoration:none}.pro-tool.pro-tool-obstacle:hover{border-color:#a78bfa;background:#ede9fe;color:#5b21b6}.pro-tool.pro-tool-obstacle.is-disabled{opacity:.35;pointer-events:none;cursor:not-allowed}

/* ASK WiFi Designer — jedna dopracowana mapa */
.unified-map-heading{margin-bottom:12px}
.unified-map-primary-toolbar{display:flex;align-items:stretch;gap:7px;overflow-x:auto;padding:9px 10px;border-bottom:1px solid #dfe6ef;background:#fff;scrollbar-width:thin}
.unified-map-action{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;padding:8px 12px;border:1px solid #d8e0eb;border-radius:10px;background:#f8fafc;color:#334155;text-decoration:none;font:inherit;font-size:11px;font-weight:800;white-space:nowrap;cursor:pointer;transition:.15s ease}
.unified-map-action svg{width:18px;height:18px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8}
.unified-map-action:hover{border-color:#93c5fd;background:#eff6ff;color:#1d4ed8}
.unified-map-action.active{border-color:#60a5fa;background:#dbeafe;color:#1d4ed8;box-shadow:inset 0 0 0 1px rgba(37,99,235,.08)}
.unified-map-action-primary{border-color:#2563eb;background:#2563eb;color:#fff}
.unified-map-action-primary:hover,.unified-map-action-primary.active{border-color:#1d4ed8;background:#1d4ed8;color:#fff}
.unified-map-action:disabled,.unified-map-action.is-disabled{opacity:.42;pointer-events:none;cursor:not-allowed}
.unified-ap-picker[hidden]{display:none!important}
.unified-ap-picker{padding:12px 14px;border-bottom:1px solid #bfdbfe;background:#eff6ff}
.unified-ap-picker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:10px}
.unified-ap-picker-head strong,.unified-ap-picker-head small{display:block}
.unified-ap-picker-head strong{font-size:13px;color:#1e3a8a}
.unified-ap-picker-head small{max-width:760px;margin-top:3px;font-size:10px;line-height:1.45;color:#64748b}
.unified-ap-picker-grid{display:grid;grid-template-columns:minmax(280px,1.25fr) minmax(220px,.9fr) minmax(220px,.9fr) auto;align-items:center;gap:10px}
.unified-ap-picker .pro-device-line,.unified-ap-picker .pro-antenna-line{grid-template-columns:1fr;gap:5px}
.unified-ap-picker .pro-device-line>span,.unified-ap-picker .pro-antenna-line>span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#475569}
.unified-ap-picker select{width:100%;min-width:0;padding:9px 10px;border:1px solid #93c5fd;border-radius:8px;background:#fff;color:#0f172a;font:inherit;font-size:11px}
.unified-ap-picker .pro-integrated-antenna-note{min-height:42px}
.unified-ap-picker .pro-radio-result{min-height:42px}
.unified-ap-picker .btn{min-height:42px;white-space:nowrap}
.unified-map-utility-toolbar{border-top:1px solid #eef2f7}
.pro-editor.is-unified-mode .unified-map-layout{grid-template-columns:minmax(0,1fr)!important;height:calc(100vh - 285px);min-height:620px}
.pro-editor.is-unified-mode .pro-stage-viewport{min-width:0}
.pro-editor.is-unified-mode .pro-coordinate-bar{left:12px;right:12px}
.pro-editor-fullscreen .unified-map-heading{display:none!important}
.pro-editor-fullscreen .unified-map-primary-toolbar{padding-top:7px}
.pro-editor-fullscreen .pro-editor.is-unified-mode .unified-map-layout{height:calc(100vh - 109px)}
.pro-editor-fullscreen .unified-ap-picker{position:fixed;top:51px;left:0;right:0;z-index:10001;box-shadow:0 10px 28px rgba(15,23,42,.18)}
@media(max-width:1250px){.unified-ap-picker-grid{grid-template-columns:minmax(250px,1.25fr) minmax(210px,1fr) minmax(210px,1fr)}.unified-ap-picker-grid>.btn{grid-column:1/-1}.pro-editor.is-unified-mode .unified-map-layout{height:calc(100vh - 315px)}}
@media(max-width:900px){.unified-map-heading .heading-actions{overflow-x:auto;flex-wrap:nowrap;width:100%;padding-bottom:3px}.unified-map-primary-toolbar{padding:7px}.unified-map-action{min-height:40px;padding:7px 10px}.unified-ap-picker-grid{grid-template-columns:1fr}.unified-ap-picker-grid>.btn{grid-column:auto}.pro-editor.is-unified-mode .unified-map-layout{height:72vh;min-height:520px}.unified-map-utility-toolbar{overflow-x:auto}}


/* ASK WiFi Designer — warstwy pod jedną mapą */
.unified-map-layers{border-top:1px solid #dfe6ef;border-bottom:1px solid #dfe6ef;background:#fff;padding:9px 12px}
.unified-map-layers details{margin:0}
.unified-map-layers summary{display:flex;align-items:center;gap:8px;min-height:30px;cursor:pointer;list-style:none;color:#334155}
.unified-map-layers summary::-webkit-details-marker{display:none}
.unified-map-layers summary>span{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:#eff6ff;color:#2563eb}
.unified-map-layers summary svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
.unified-map-layers summary strong{font-size:12px}
.unified-map-layers summary small{font-size:10px;color:#64748b}
.unified-map-layers summary:after{content:'▾';margin-left:auto;color:#64748b;transition:transform .15s ease}
.unified-map-layers details:not([open]) summary:after{transform:rotate(-90deg)}
.unified-layer-options{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:9px;padding-top:9px;border-top:1px solid #eef2f7}
.unified-layer-option{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:6px 9px;border:1px solid #dbe3ee;border-radius:9px;background:#f8fafc;color:#334155;cursor:pointer;user-select:none}
.unified-layer-option:hover{border-color:#93c5fd;background:#eff6ff}
.unified-layer-option input{width:15px;height:15px;margin:0;accent-color:#2563eb}
.unified-layer-option .layer-symbol{flex:0 0 auto}
.unified-layer-option strong{font-size:10px;white-space:nowrap}
.unified-layer-option em{min-width:20px;padding:2px 5px;border-radius:999px;background:#e2e8f0;color:#475569;font-size:9px;font-style:normal;text-align:center}
.pro-editor-fullscreen .pro-editor.is-unified-mode .unified-map-layout{height:calc(100vh - 178px)}
.pro-editor-fullscreen .unified-map-layers{position:relative;z-index:20}
@media(max-width:760px){.unified-map-layers summary small{display:none}.unified-layer-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.unified-layer-option{min-width:0}.unified-layer-option strong{overflow:hidden;text-overflow:ellipsis}}
@media(max-width:460px){.unified-layer-options{grid-template-columns:1fr}}

/* V0.7.0 BETA hotfix: urządzenia infrastruktury na mapie */
.pro-stage-viewport.is-add-device-tool{cursor:crosshair}
.pro-device-marker{stroke:#fff;stroke-width:2.5}
.pro-device-marker-text{font-size:8px;font-weight:900;fill:#fff;pointer-events:none}
.pro-device-preview-marker{fill:#475569;stroke:#fff;stroke-width:2.5}
.pro-element-device.selected .pro-device-marker{stroke:#0ea5e9;stroke-width:4}
.unified-device-picker{background:#f8fafc;border-bottom-color:#cbd5e1}
.unified-device-picker .unified-ap-picker-head strong{color:#334155}
.unified-device-picker .unified-ap-picker-grid{grid-template-columns:minmax(320px,1.5fr) minmax(260px,1fr) auto}
.layer-symbol.device{width:15px;height:12px;border-radius:3px;background:#475569;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #64748b}
@media(max-width:900px){.unified-device-picker .unified-ap-picker-grid{grid-template-columns:1fr}}

/* V0.7.0 BETA hotfix: endpoints infrastruktury w edytorze tras kablowych */
.cable-camera-marker,.cable-network-device-marker{cursor:pointer;pointer-events:all}.cable-camera-marker circle:first-child{fill:#dbeafe;stroke:#2563eb;stroke-width:3}.cable-camera-marker .core{fill:#2563eb}.cable-network-device-marker rect{fill:#ccfbf1;stroke:#0f766e;stroke-width:3}.cable-network-device-marker .core{fill:#0f766e}.cable-camera-marker text,.cable-network-device-marker text{fill:#0f172a;font-size:15px;font-weight:800;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;pointer-events:none}.cable-endpoint-marker:hover>*:first-child,.cable-endpoint-marker:focus>*:first-child{stroke-width:5;filter:drop-shadow(0 2px 4px rgba(15,23,42,.25))}.cable-endpoint-marker:focus{outline:none}.cable-endpoint-hint{margin-left:auto;color:var(--muted);font-size:12px}@media(max-width:760px){.cable-endpoint-hint{width:100%;margin-left:0}}
