:root{background:#f3f6fa;color:#111827;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.4;--bg: #f3f6fa;--surface: #ffffff;--surface-soft: #f8fafc;--line: #d9e2ef;--line-strong: #c5d2e3;--text: #111827;--muted: #5b6b82;--primary: #1769ff;--primary-strong: #0b5be7;--primary-soft: #eaf1ff;--success: #159947;--success-soft: #e7f8ed;--warning: #d97706;--danger: #d92d20;--sidebar: #17202b;--sidebar-soft: #223044;--shadow: 0 10px 28px rgba(17, 24, 39, .08)}*{box-sizing:border-box}body{background:var(--bg);margin:0;min-width:0}button,input,select,textarea{font:inherit}button{background:var(--primary);border:0;border-radius:6px;color:#fff;cursor:pointer;font-weight:700;min-height:38px;padding:9px 13px;transition:background .15s ease,box-shadow .15s ease,color .15s ease,transform .12s ease}button:hover:not(:disabled){background:var(--primary-strong);box-shadow:0 6px 14px #1769ff2e;transform:translateY(-1px)}button:active:not(:disabled){box-shadow:none;transform:translateY(0)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid rgba(23,105,255,.22);outline-offset:2px}button.ghost{background:#eef4fb;color:#26364f}button.ghost:hover:not(:disabled){background:#dde8f6;box-shadow:0 5px 12px #26364f1f}button.danger{background:var(--danger)}button.danger:hover:not(:disabled){background:#b42318;box-shadow:0 6px 14px #d92d202e}button.copied,button.copied:hover:not(:disabled){background:var(--success-soft);color:#126534;box-shadow:inset 0 0 0 1px #15994738}button.mini{min-height:30px;padding:5px 9px}button.icon-button{min-width:40px;padding:8px}button:disabled{cursor:not-allowed;opacity:.55}input,select,textarea{background:#fff;border:1px solid #cfd8e6;border-radius:6px;min-height:40px;padding:8px 10px;transition:border-color .15s ease,box-shadow .15s ease;width:100%}input:focus,select:focus,textarea:focus{border-color:#8db4ff;box-shadow:0 0 0 3px #1769ff1a;outline:0}textarea{min-height:110px;resize:vertical}code,pre{font-family:JetBrains Mono,Cascadia Code,Consolas,monospace}.center,.login-shell{align-items:center;display:flex;min-height:100vh;justify-content:center}.login{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);display:grid;gap:14px;padding:28px;width:min(380px,calc(100vw - 32px))}.login h1,h1,h2,p{margin:0}label{color:#46566f;display:grid;gap:6px;font-size:13px;font-weight:700}.check{align-items:center;display:flex;gap:8px;min-height:40px}.check input{min-height:auto;width:auto}.error{color:#c02535;font-weight:700}.shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh;min-width:0}.sidebar{background:var(--sidebar);border-right:1px solid rgba(255,255,255,.06);color:#fff;display:flex;flex-direction:column;gap:8px;height:100vh;overflow-y:auto;padding:22px 16px;position:sticky;top:0}.sidebar h1{font-size:22px;line-height:1.15;margin:0 0 18px;overflow-wrap:anywhere}.sidebar button{background:transparent;color:#cbd5e1;min-height:40px;overflow:hidden;padding:10px 12px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.sidebar button.active,.sidebar button:hover{background:var(--sidebar-soft);box-shadow:none;color:#fff;transform:none}.sidebar button.active{box-shadow:inset 3px 0 #56b6ff}.sidebar .logout{margin-top:auto}.sidebar-login{border-top:1px solid #243145;display:grid;gap:10px;margin-top:14px;padding-top:14px}.sidebar-login label{color:#cbd5e1}.sidebar-login input{background:#0f172a;border-color:#334155;color:#fff}.app{margin:0 auto;max-width:1440px;min-width:0;padding:26px;width:100%}header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:20px}header>div,.panel-title>div{min-width:0}header h1,.panel-title h2{overflow-wrap:anywhere}.eyebrow,header p,.panel-title p,.node-list p,small{color:var(--muted)}.warn{color:#c02535;font-weight:800}.eyebrow{font-size:12px;font-weight:800;letter-spacing:0;text-transform:uppercase}.notice{background:var(--success-soft);border:1px solid #a8e7bd;border-radius:6px;color:#166534;font-weight:700;padding:8px 11px}.live-status{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:7px;color:#233454;display:inline-grid;gap:2px 8px;grid-template-columns:auto auto;min-height:42px;padding:7px 11px}.live-status span{background:#16a34a;border-radius:999px;box-shadow:0 0 0 4px #16a34a1f;grid-row:1 / 3;height:9px;width:9px}.live-status.busy span{background:#f59e0b;box-shadow:0 0 0 4px #f59e0b24}.live-status strong{font-size:13px;line-height:1}.live-status small{line-height:1;margin:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px #1118270b;margin-bottom:16px;padding:20px}.panel-title{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.select-label{align-items:center;display:flex;gap:8px;white-space:nowrap}.select-label select{min-width:132px}.inline-control{display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.form-actions{align-self:end;justify-content:flex-start;min-height:40px}.helper-box{background:var(--surface-soft);border:1px solid var(--line);border-radius:7px;display:grid;gap:4px;padding:10px 12px}.node-picker{background:var(--surface-soft);border:1px solid var(--line);border-radius:7px;display:grid;gap:10px;margin:0;padding:12px}.node-picker legend{color:#233454;font-size:13px;font-weight:800;padding:0 4px}.node-picker-grid{display:grid;gap:8px 12px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.node-picker .check{align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:6px;min-width:0;padding:9px 10px}.node-picker .check.muted{opacity:.68}.node-picker .check span{min-width:0;overflow-wrap:anywhere}.metrics,.stats{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:14px}.metrics article,.stats article{background:var(--surface);border:1px solid var(--line);border-radius:7px;min-width:0;padding:12px;box-shadow:0 4px 14px #11182709}.metrics span,.stats span{color:#52637a;display:block;font-size:13px}.metrics strong,.stats strong{display:block;font-size:22px;margin-top:4px;overflow-wrap:anywhere}.chart{height:330px;min-width:0;width:100%}.chart.heatmap{height:380px}.tcp-line-chart{height:300px}.grid-form{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.wide{grid-column:1 / -1}.field-header{align-items:center;display:flex;justify-content:space-between}.tcp-target-editor{display:grid;gap:8px}.tcp-target-head,.tcp-target-row{display:grid;gap:8px;grid-template-columns:minmax(120px,.7fr) minmax(220px,1.4fr) 40px}.tcp-target-head{color:#52637a;font-size:12px;font-weight:800;padding:0 2px;text-transform:uppercase}.tcp-controls{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-left:auto}.segmented{background:#e9eff7;border-radius:8px;display:inline-grid;grid-auto-flow:column;overflow:hidden}.segmented button{background:transparent;border-radius:0;color:#233454;min-height:36px;min-width:58px}.segmented button.active{background:#fff;box-shadow:0 0 0 1px #cfd8e6}.tcp-summary{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:16px}.tcp-summary button{background:#fff;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:7px;color:inherit;display:grid;gap:3px;min-height:74px;padding:12px 14px;text-align:left}.tcp-summary button.active,.tcp-summary button:hover{background:var(--surface-soft);border-color:#b9c7dc;box-shadow:0 0 0 2px #1769ff14}.tcp-summary strong{color:#101828;font-size:18px}.tcp-summary p{color:#233454;display:flex;flex-wrap:wrap;gap:8px}.tcp-summary span{color:#52637a}.tcp-node-grid{display:grid;gap:14px}.tcp-node-panel{background:#fff;border:1px solid var(--line);border-radius:7px;overflow:hidden}.tcp-node-title{align-items:center;background:#fff;border:0;border-radius:0;color:inherit;display:grid;gap:14px;grid-template-columns:minmax(150px,.8fr) minmax(360px,520px) auto auto;min-height:64px;padding:12px 14px;text-align:left;width:100%}.tcp-node-title>div:first-child{min-width:0}.tcp-node-title:hover{background:var(--surface-soft)}.tcp-node-title strong{display:block;font-size:18px}.tcp-node-title small{display:block}.tcp-node-title i,.tcp-node-state{background:#eef2f7;border-radius:999px;color:#233454;font-size:12px;font-weight:800;font-style:normal;padding:5px 9px;white-space:nowrap}.tcp-node-title i,.tcp-node-state{justify-self:end}.tcp-node-panel.open .tcp-node-title{border-bottom:1px solid var(--line)}.tcp-heatmap{display:grid;align-items:center;gap:4px;grid-template-columns:repeat(24,minmax(7px,1fr));justify-self:end;max-width:520px;min-width:0;width:100%}.heat{border-radius:999px;display:block;height:16px;min-width:7px}.heat.empty{background:#e8eef6;opacity:.48}.heat.good{background:#22c55e}.heat.ok{background:#84cc16}.heat.warn{background:#f59e0b}.heat.bad{background:#ef4444}.compact-summary{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin:12px 14px 10px}.compact-summary button{min-height:62px;padding:9px 11px}.compact-summary strong{font-size:14px}.compact-summary p{font-size:13px}.tcp-node-panel .tcp-line-chart{margin:0 14px 14px}.node-list{display:grid;gap:10px}.node-list article{align-items:center;background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid var(--line);border-radius:7px;display:flex;gap:12px;justify-content:space-between;padding:13px 14px;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.node-list article:hover{border-color:var(--line-strong);box-shadow:0 8px 20px #1118270f;transform:translateY(-1px)}.node-list strong{color:var(--text);display:block;font-size:16px;margin-bottom:3px}.node-list article>div:first-child{min-width:0}.node-list p{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.actions button{white-space:nowrap}.config-box{background:var(--surface-soft);border:1px solid var(--line);border-radius:7px;display:grid;gap:10px;margin-top:16px;padding:13px}.config-box>div{align-items:center;display:flex;justify-content:space-between}.config-box code{background:#fff;border:1px solid var(--line);border-radius:6px;color:#1d2b43;display:block;overflow-x:auto;padding:10px 11px;white-space:nowrap}pre{background:#101828;border-radius:7px;color:#f8fbff;margin:0;overflow-x:auto;padding:14px}.table{background:#fff;border:1px solid var(--line);border-radius:7px;overflow:hidden}.thead,.tr{display:grid;gap:12px;grid-template-columns:1.2fr 1.1fr 1fr 1.4fr;padding:12px}.report-table .thead,.report-table .tr{grid-template-columns:1.05fr 1.05fr .85fr 1.25fr 1.45fr}.user-table .tr{grid-template-columns:minmax(130px,.85fr) minmax(140px,1fr) minmax(160px,1.15fr) minmax(170px,1fr) minmax(250px,auto)}.subscription-table .tr{grid-template-columns:minmax(130px,.8fr) minmax(180px,1fr) minmax(220px,1.2fr) minmax(220px,1.2fr)}.gost-table .tr{grid-template-columns:minmax(130px,.85fr) minmax(130px,.8fr) minmax(170px,1fr) minmax(170px,1fr) minmax(220px,auto)}.thead{background:var(--surface-soft);color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.tr{align-items:center;border-top:1px solid var(--line);transition:background .15s ease}.tr:hover{background:#fbfdff}.tr:first-child{border-top:0}.tr>span{min-width:0;overflow-wrap:anywhere}.tr small{display:block;margin-top:3px}.compact .tr{grid-template-columns:1.2fr 1.2fr .5fr 1fr}.cert-table .tr{grid-template-columns:minmax(150px,1fr) minmax(135px,.65fr) minmax(120px,.55fr) minmax(190px,auto)}.cert-actions{gap:6px}.cert-actions button{min-height:34px;padding:7px 9px}.empty{background:var(--surface-soft);border-radius:7px;color:var(--muted);padding:16px}.dot{border-radius:50%;display:inline-block;height:9px;margin-right:6px;width:9px}.dot.up{background:#16a34a}.dot.stale{background:#f59e0b}.dot.waiting{background:#94a3b8}.dot.disabled{background:#64748b}.lamp-row{align-items:center;color:#233454;display:inline-flex;gap:7px;white-space:nowrap}.lamp-row.compact{font-size:12px;font-weight:800}.lamp-row b{font-size:12px}.lamp{border:2px solid white;border-radius:999px;box-shadow:0 0 0 1px #0f172a24,0 0 10px #0f172a1f;display:inline-block;height:13px;width:13px}.lamp.up{background:#16a34a;box-shadow:0 0 0 1px #16a34a4d,0 0 10px #16a34a59}.lamp.stale{background:#f59e0b;box-shadow:0 0 0 1px #f59e0b4d,0 0 10px #f59e0b59}.lamp.waiting{background:#94a3b8}.lamp.disabled{background:#475569}a{color:var(--primary);font-weight:700;text-decoration:none}a:hover{text-decoration:underline}.copy-link-row{align-items:center;display:flex;gap:8px;min-width:0}.copy-link-row a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast{animation:toast-in .18s ease-out;background:#122033;border:1px solid rgba(255,255,255,.1);border-radius:8px;bottom:22px;box-shadow:0 14px 34px #11182742;color:#fff;font-weight:800;left:50%;max-width:min(420px,calc(100vw - 28px));padding:11px 14px;position:fixed;text-align:center;transform:translate(-50%);z-index:30}.toast.success{background:#123524}.toast.error{background:#5b1616}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media(max-width:1180px)and (min-width:941px){.shell{grid-template-columns:184px minmax(0,1fr)}.sidebar{padding:18px 12px}.sidebar h1{font-size:20px}.app{padding:20px}.metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-form{grid-template-columns:repeat(2,minmax(0,1fr))}.report-table .thead,.report-table .tr{grid-template-columns:1fr 1fr .8fr 1.15fr 1.2fr}.user-table .tr{grid-template-columns:minmax(120px,.8fr) minmax(130px,.9fr) minmax(150px,1fr) minmax(150px,.9fr) minmax(210px,auto)}.gost-table .tr{grid-template-columns:minmax(120px,.8fr) minmax(120px,.75fr) minmax(150px,.95fr) minmax(150px,.95fr) minmax(190px,auto)}.tcp-node-title{grid-template-columns:minmax(120px,.8fr) minmax(280px,1fr) auto}.tcp-node-state{display:none}}@media(max-width:940px){.shell{grid-template-columns:1fr}.sidebar{display:grid;gap:8px;grid-template-columns:repeat(4,minmax(0,1fr));height:auto;overflow:visible;padding:14px;position:static}.sidebar h1{grid-column:1 / -1;margin:0 0 4px}.sidebar .logout{grid-column:auto;margin-top:0}.sidebar button{background:#182235;text-align:center}.sidebar-login{grid-column:1 / -1;grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar-login .error,.sidebar-login button{grid-column:1 / -1}.app{padding:18px}header{align-items:stretch;flex-direction:column}.live-status{max-width:100%;width:fit-content}.metrics,.stats,.grid-form{grid-template-columns:repeat(2,minmax(0,1fr))}.panel-title{align-items:stretch;flex-wrap:wrap}.panel-title>div{flex:1 1 100%}.select-label{flex:1 1 160px}.select-label select{min-width:0}.tcp-controls{margin-left:0;width:100%}.tcp-node-title{grid-template-columns:minmax(120px,.8fr) minmax(220px,1fr) auto}.tcp-node-state,.thead{display:none}.table{border:0;display:grid;gap:10px;overflow:visible}.tr,.compact .tr,.cert-table .tr,.report-table .tr,.user-table .tr,.subscription-table .tr,.gost-table .tr{background:#fff;border:1px solid var(--line);border-radius:7px;gap:8px;grid-template-columns:1fr;padding:12px}.tr:first-child{border-top:1px solid var(--line)}.node-list article{align-items:stretch;flex-direction:column}.actions{justify-content:flex-start}.copy-link-row{align-items:flex-start;flex-direction:column}.copy-link-row a{max-width:100%;white-space:normal;overflow-wrap:anywhere}.inline-control{grid-template-columns:1fr}}@media(max-width:700px){button{min-height:40px;padding:9px 11px}.sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar-login{grid-template-columns:1fr}.app{padding:12px}header h1{font-size:28px}.panel{border-radius:7px;margin-bottom:12px;padding:14px}.panel-title{gap:10px}.metrics,.stats,.grid-form{grid-template-columns:1fr}.metrics,.stats{gap:8px}.metrics article,.stats article{padding:10px}.metrics strong,.stats strong{font-size:20px}.chart{height:260px}.tcp-line-chart{height:240px}.segmented{grid-template-columns:repeat(4,minmax(0,1fr));width:100%}.segmented button{min-width:0}.select-label{align-items:stretch;flex-direction:column;width:100%}.tcp-node-title{gap:9px;grid-template-columns:minmax(0,1fr) auto;padding:11px}.tcp-node-title .tcp-heatmap{grid-column:1 / -1;justify-self:stretch;max-width:none;order:3}.tcp-node-title i{align-self:start}.tcp-node-title strong{font-size:16px}.heat{height:12px}.compact-summary{grid-template-columns:1fr;margin:10px 10px 8px}.tcp-node-panel .tcp-line-chart{margin:0 10px 10px}.tcp-target-head{display:none}.tcp-target-row{grid-template-columns:1fr 40px}.tcp-target-row input:first-child{grid-column:1 / -1}.field-header,.config-box>div{align-items:stretch;flex-direction:column;gap:8px}.actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.actions button{width:100%}.inline-control{grid-template-columns:1fr}}
