:root{--ink: #0f1b2d;--ink-2: #334155;--muted: #556274;--line: #d5dce4;--bg: #f3f5f8;--surface: #ffffff;--primary: #0a56a0;--primary-weak: #e6f0fa;--accept: #0e6b43;--accept-weak: #e3f4ea;--danger: #b3261e;--danger-weak: #fdecea;--warning: #7a4100;--warning-weak: #fff3dc;--focus: #0a56a0;--font: "Be Vietnam Pro", system-ui, sans-serif;--fs-display: 32px;--fs-h1: 24px;--fs-h2: 18px;--fs-body: 15px;--fs-small: 13px;--lh: 1.45;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--r-input: 8px;--r-card: 12px;--shadow: 0 4px 16px rgba(15, 27, 45, .12);--content-max: 1200px;--sidebar-w: 240px}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font);font-size:var(--fs-body);line-height:var(--lh);color:var(--ink);background:var(--bg)}h1{font-size:var(--fs-h1);font-weight:700;margin:0 0 var(--sp-4)}h2{font-size:var(--fs-h2);font-weight:600;margin:0 0 var(--sp-3)}a{color:var(--primary)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.layout{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:var(--sp-5) var(--sp-4)}.sidebar .brand{font-size:var(--fs-h2);font-weight:700;color:var(--primary);margin-bottom:var(--sp-5)}.sidebar nav{display:flex;flex-direction:column;gap:var(--sp-1)}.sidebar nav a{display:block;min-height:44px;padding:var(--sp-3);border-radius:var(--r-input);color:var(--ink-2);text-decoration:none;font-weight:500}.sidebar nav a.active{background:var(--primary-weak);color:var(--primary)}.content{padding:var(--sp-5);max-width:var(--content-max);width:100%}.card{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--shadow);padding:var(--sp-5)}.table{width:100%;border-collapse:collapse;background:var(--surface)}.table th,.table td{text-align:left;padding:var(--sp-3);border-bottom:1px solid var(--line)}.table th{font-size:var(--fs-small);color:var(--muted);font-weight:500}.table-state{padding:var(--sp-5);text-align:center;color:var(--muted)}.table-state.error{color:var(--danger);background:var(--danger-weak)}.field{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-4)}.field label{font-size:var(--fs-small);font-weight:500;color:var(--ink-2)}.field input,.field select{min-height:44px;padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-input);font:inherit;background:var(--surface)}.field .error-text{color:var(--danger);font-size:var(--fs-small)}.btn{min-height:44px;padding:0 var(--sp-4);border:0;border-radius:var(--r-card);background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.danger{background:var(--danger)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--sp-7) var(--sp-4)}.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:40px var(--sp-6);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:var(--sp-5)}.login-card h1{margin:0;font-size:24px}.login-brand{display:flex;align-items:center;gap:var(--sp-3)}.login-logo{width:44px;height:44px;border-radius:var(--r-card);background:var(--primary)}.login-name{font-size:20px;font-weight:700}.login-sub{font-size:13px;color:var(--muted)}.login-alert{padding:10px var(--sp-3);border-radius:var(--r-input);background:var(--danger-weak);color:var(--danger);font-size:14px;font-weight:500;margin-bottom:var(--sp-4)}.login-submit{width:100%}.login-note{margin:0;font-size:13px;color:var(--muted)}.logout-btn{margin-top:var(--sp-5);width:100%;background:transparent;color:var(--primary);border:1px solid var(--primary)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.page-header{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4)}.page-header h1{flex:1;margin:0}.search-box{display:flex;align-items:center;height:44px;padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-input);background:var(--surface)}.search-box input{border:0;font:inherit;width:220px;background:transparent}.row-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.btn.small{min-height:36px;padding:0 var(--sp-3);font-size:var(--fs-small)}.btn.secondary{background:transparent;color:var(--primary);border:1px solid var(--primary)}.bd{display:inline-block;padding:3px 10px;border-radius:999px;font-size:var(--fs-small);font-weight:600}.bd.success{background:var(--accept-weak);color:var(--accept)}.bd.danger{background:var(--danger-weak);color:var(--danger)}.bd.info{background:var(--primary-weak);color:var(--primary)}.bd.warning{background:var(--warning-weak);color:var(--warning)}.bd.neutral{background:var(--line);color:var(--ink-2)}.text-warning{color:var(--warning);font-weight:600}.text-success{color:var(--accept);font-weight:600}.text-danger{color:var(--danger);font-weight:600}.audit-page>.error-text{color:var(--danger);font-size:var(--fs-small)}.hint-note{margin:var(--sp-3) 0 0;font-size:var(--fs-small);color:var(--muted)}.form-alert{padding:10px var(--sp-3);border-radius:var(--r-input);background:var(--danger-weak);color:var(--danger);font-size:14px;font-weight:500;margin-bottom:var(--sp-4)}.form-actions{display:flex;gap:var(--sp-3)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1b2d80;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);z-index:10}.modal-card{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--shadow);padding:var(--sp-5);max-width:420px;width:100%;display:flex;flex-direction:column;gap:var(--sp-3)}.temp-password-row{display:flex;align-items:center;gap:var(--sp-3)}.tv-detail-header{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-4)}.tv-detail-title{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.success-note{color:var(--accept);font-size:var(--fs-small);font-weight:600}.row-link{font-weight:600}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1b2d80;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);z-index:10}.dialog{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--shadow);padding:var(--sp-5);max-width:420px;width:100%}.dialog h2{margin:0 0 var(--sp-3)}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--sp-3);margin-top:var(--sp-4)}.temp-password-value{font-size:22px;font-weight:700;letter-spacing:1px;padding:var(--sp-3);background:var(--primary-weak);color:var(--primary);border-radius:var(--r-input);text-align:center}.activation-code-input{font-size:20px;font-weight:600;letter-spacing:6px}.card-header-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4)}.card-header-row h2{flex:1;margin:0}.tv-contacts-add{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.tv-contacts-add label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-small);font-weight:600;color:var(--ink-2)}.tv-contacts-add select{min-height:44px;min-width:220px;padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-input);font:inherit;background:var(--surface)}.tv-qr-active-note{margin:0 0 var(--sp-3);padding:10px var(--sp-3);border-radius:var(--r-input);background:var(--primary-weak);color:var(--primary);font-size:var(--fs-small);font-weight:600}.tv-qr-payload{margin:0 0 var(--sp-2);padding:var(--sp-3);background:var(--primary-weak);color:var(--primary);border-radius:var(--r-input);word-break:break-all;font-weight:600}
