:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--tg-theme-text-color, #e7f6f3);background:var(--tg-theme-bg-color, #061713);--app-background: radial-gradient(circle at top, #0d3a33 0, #061713 42%, #030b09 100%);--panel-background: linear-gradient(145deg, #102d28dd, #0a201cdd);--panel-shadow: 0 18px 45px #0005;--control-background: #163a33;--input-background: #081d19;--surface-background: #06171366;--secondary-text: #9bbab3;--muted-text: #7fa79e;--link-text: var(--tg-theme-link-color, #99f6e4);--code-text: var(--tg-theme-text-color, #d5f5ee);font-synthesis:none}:root[data-theme=light]{color:var(--tg-theme-text-color, #12332d);background:var(--tg-theme-bg-color, #f3faf8);--app-background: radial-gradient(circle at top, #d9f5ef 0, #f3faf8 46%, #ffffff 100%);--panel-background: linear-gradient(145deg, #ffffffee, #eef9f6ee);--panel-shadow: 0 18px 45px #0f766e1c;--control-background: var(--tg-theme-secondary-bg-color, #e0f2ee);--input-background: var(--tg-theme-secondary-bg-color, #edf7f5);--surface-background: #ffffffa8;--secondary-text: var(--tg-theme-hint-color, #53736c);--muted-text: var(--tg-theme-hint-color, #66847d);--link-text: var(--tg-theme-link-color, #0f766e);--code-text: var(--tg-theme-text-color, #12332d)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--app-background)}button,input,select{font:inherit}.shell{width:min(720px,100%);margin:0 auto;padding:max(22px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(28px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left))}.hero{display:flex;align-items:center;gap:12px;margin-bottom:24px}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border:1px solid #2dd4bf66;border-radius:15px;background:#0f766e;box-shadow:0 10px 28px #0f766e44;font-weight:800}.hero h1,.panel h2,.panel h3{margin:0}.hero h1{font-size:25px;letter-spacing:-.5px}.eyebrow{margin:0 0 5px;color:#5eead4;font-size:10px;font-weight:800;letter-spacing:1.6px}.role-badge{margin-left:auto;padding:7px 10px;border:1px solid #2dd4bf55;border-radius:999px;color:#99f6e4;font-size:10px;font-weight:800}.page-navigation{display:flex;align-items:center;gap:12px;margin-bottom:14px}.page-navigation .back-button{flex:0 0 auto;min-height:40px;padding:8px 12px;color:#99f6e4;font-weight:800;text-align:center}.page-navigation strong{display:block;color:var(--tg-theme-text-color, #e7f6f3);font-size:16px}.panel{border:1px solid #5eead422;border-radius:20px;background:var(--panel-background);box-shadow:var(--panel-shadow);padding:20px}.status-panel{display:flex;align-items:center;justify-content:center;gap:12px;min-height:180px}.spinner{width:20px;height:20px;border:2px solid #5eead433;border-top-color:#5eead4;border-radius:50%;animation:spin .8s linear infinite}.error-panel{border-color:#fb718544}.error-panel h2{margin-bottom:10px}.error-panel small,.metric-card small,.admin-panel small{color:var(--secondary-text);line-height:1.5}.welcome-panel{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.online{color:#99f6e4;font-size:12px}.online span{display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:#34d399;box-shadow:0 0 12px #34d399}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.metric-card p{margin:0 0 10px;color:var(--secondary-text);font-size:12px}.metric-card strong{display:block;margin-bottom:7px;font-size:20px}.actions-panel,.admin-panel{margin-top:14px}.action-list,.admin-grid{display:grid;gap:9px;margin-top:14px}.action-list button{position:relative;padding-right:38px}.action-list button:not(:disabled):after{content:"›";position:absolute;top:50%;right:15px;transform:translateY(-52%);color:#5eead4;font-size:24px;line-height:1}.action-list .admin-entry{border-color:#2dd4bf55;color:#d5f5ee;background:#0f766e33;font-weight:800}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px}button{min-height:44px;padding:10px 13px;border:1px solid #5eead422;border-radius:12px;color:var(--tg-theme-text-color, #bddbd4);background:var(--control-background);text-align:left}button:disabled{cursor:not-allowed;opacity:.58}.admin-dashboard{margin-top:20px;padding-top:18px;border-top:1px solid #5eead422}.dashboard-heading,.dashboard-subheading,.dashboard-recent-operations article{display:flex;align-items:center;justify-content:space-between;gap:12px}.dashboard-heading>span,.dashboard-subheading>span{color:#99f6e4;font-size:11px}.dashboard-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px}.dashboard-metrics article{padding:12px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.dashboard-metrics small,.dashboard-metrics strong{display:block}.dashboard-metrics small{min-height:34px;color:var(--muted-text)}.dashboard-metrics strong{margin-top:7px;font-size:20px}.dashboard-recent-operations{display:grid;gap:8px;margin-top:14px}.dashboard-recent-operations article{padding:11px 12px;border:1px solid #5eead41c;border-radius:12px;background:var(--surface-background)}.dashboard-recent-operations article strong,.dashboard-recent-operations article small{display:block}.dashboard-recent-operations article small{margin-top:4px;color:var(--muted-text)}.dashboard-recent-operations article>span{flex:0 0 auto;color:#99f6e4;font-size:11px;font-weight:800}.dashboard-note{margin:12px 0 0;color:#fcd34d;font-size:11px;line-height:1.5}.vpn-account-panel{margin-top:14px}.vpn-account-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.vpn-account-heading>span{color:#99f6e4;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.vpn-account-valid{display:block;margin-top:15px;color:#6ee7b7;font-size:13px}.vpn-account-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.vpn-account-metrics>div{padding:12px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.vpn-account-metrics small,.vpn-account-metrics strong{display:block}.vpn-account-metrics small{margin-bottom:6px;color:var(--muted-text)}.vpn-account-metrics strong{overflow-wrap:anywhere;font-size:13px}.vpn-account-note{margin:12px 0 0;color:var(--muted-text);font-size:11px;line-height:1.55}.node-panel{margin-top:14px}.node-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.node-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:16px}.node-summary article{padding:13px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.node-summary small,.node-summary strong{display:block}.node-summary small{margin-bottom:6px;color:var(--muted-text)}.node-summary strong{overflow-wrap:anywhere;font-size:14px}.node-note{margin:12px 0 0;color:var(--muted-text);font-size:11px;line-height:1.55}.config-panel{margin-top:14px}.config-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.config-heading>span{color:#99f6e4;font-size:11px}.config-grid{display:grid;gap:9px;margin-top:16px}.config-grid article{padding:13px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.config-grid strong,.config-grid small{display:block}.config-grid strong{font-size:13px}.config-grid small{margin-top:4px;color:var(--link-text)}.config-grid code{display:block;margin-top:10px;padding:9px 10px;overflow-wrap:anywhere;border-radius:9px;color:var(--code-text);background:var(--input-background);font-size:11px}.config-grid p{margin:8px 0 0;color:var(--secondary-text);font-size:12px;line-height:1.55}.config-pending{margin:12px 0 0;color:#fcd34d;font-size:11px;line-height:1.55}.help-panel{margin-top:14px}.help-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.help-heading>span{color:#99f6e4;font-size:11px}.help-steps{display:grid;gap:10px;margin:18px 0 0;padding:0;list-style:none;counter-reset:help-step}.help-steps li{position:relative;padding:13px 13px 13px 48px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background);counter-increment:help-step}.help-steps li:before{content:counter(help-step);position:absolute;top:13px;left:13px;display:grid;place-items:center;width:24px;height:24px;border-radius:8px;color:#05201b;background:#5eead4;font-size:12px;font-weight:900}.help-steps strong,.help-faq strong{color:#d5f5ee;font-size:13px}.help-steps p,.help-faq p{margin:6px 0 0;color:var(--secondary-text);font-size:12px;line-height:1.55}.help-faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}.help-faq article{padding:13px;border:1px solid #5eead41c;border-radius:13px;background:#0f766e12}.help-security{margin:14px 0 10px;color:#fcd34d;font-size:11px;line-height:1.5}.support-link{display:block;padding:12px 14px;border:1px solid #2dd4bf55;border-radius:12px;color:var(--link-text);background:var(--control-background);font-size:13px;font-weight:800;text-align:center;text-decoration:none}.role-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:20px;padding-top:18px;border-top:1px solid #5eead422}.role-form label{display:grid;gap:7px;color:var(--secondary-text);font-size:12px}.role-form input,.role-form select{width:100%;min-height:44px;padding:9px 11px;border:1px solid #5eead433;border-radius:12px;color:var(--tg-theme-text-color, #e7f6f3);background:var(--input-background)}.role-form .primary-button{grid-column:1 / -1;color:#05201b;background:#5eead4;font-weight:800;text-align:center}.role-message{margin:12px 0 0;color:#99f6e4;font-size:12px}.vpn-binding-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid #5eead422}.vpn-binding-form .form-heading,.vpn-binding-form .primary-button{grid-column:1 / -1}.vpn-binding-form .form-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.vpn-binding-form .form-heading>span{color:#99f6e4;font-size:11px}.vpn-binding-form label{display:grid;gap:7px;color:var(--secondary-text);font-size:12px}.vpn-binding-form input{width:100%;min-height:44px;padding:9px 11px;border:1px solid #5eead433;border-radius:12px;color:var(--tg-theme-text-color, #e7f6f3);background:var(--input-background)}.vpn-binding-form .primary-button{color:#05201b;background:#5eead4;font-weight:800;text-align:center}.user-search-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px;padding-top:18px;border-top:1px solid #5eead422}.user-search-heading>span{color:#99f6e4;font-size:12px}.user-search{width:100%;min-height:44px;margin-top:12px;padding:9px 11px;border:1px solid #5eead433;border-radius:12px;color:var(--tg-theme-text-color, #e7f6f3);background:var(--input-background)}.user-list{display:grid;gap:8px;margin-top:18px}.user-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.user-row strong,.user-row small{display:block}.user-row small{margin-top:4px;color:var(--muted-text)}.user-row-actions{display:grid;justify-items:end;gap:7px}.user-row-actions .role-badge{margin-left:0}.audit-section{margin-top:20px;padding-top:18px;border-top:1px solid #5eead422}.audit-heading,.audit-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.audit-heading>span{color:#99f6e4;font-size:12px}.audit-filter{width:100%;min-height:44px;margin-top:14px;padding:9px 11px;border:1px solid #5eead433;border-radius:12px;color:var(--tg-theme-text-color, #e7f6f3);background:var(--input-background)}.audit-list{display:grid;gap:8px;margin-top:10px}.audit-row{padding:12px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.audit-row strong,.audit-row small{display:block}.audit-row small{margin-top:4px;color:var(--muted-text)}.audit-result{text-align:right}.audit-result span{color:#99f6e4;font-size:11px;font-weight:800}.empty-state{margin:8px 0 0;color:var(--muted-text);font-size:12px;text-align:center}.vpn-section{margin-top:20px;padding-top:18px;border-top:1px solid #5eead422}.vpn-heading,.session-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.compact-button{min-height:36px;padding:7px 11px;color:#99f6e4;font-size:12px;text-align:center}.vpn-error{display:grid;gap:5px;margin-top:14px;padding:13px;border:1px solid #fb718544;border-radius:13px;background:#3b111633}.vpn-error strong{color:#fecdd3}.vpn-error small{color:#fda4af}.vpn-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}.vpn-metrics>div{padding:12px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.vpn-metrics small,.vpn-metrics strong{display:block}.vpn-metrics small{margin-bottom:7px;color:var(--muted-text)}.vpn-metrics strong{font-size:18px}.vpn-state.online{color:#6ee7b7}.vpn-state.offline{color:#fda4af}.vpn-up-since{margin:10px 0 0;color:var(--muted-text);font-size:11px}.session-list{display:grid;gap:8px;margin-top:12px}.session-row{padding:12px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.session-row strong,.session-row small,.session-network span{display:block}.session-row small{margin-top:4px;color:var(--muted-text)}.session-network{text-align:right}.session-network span{color:var(--tg-theme-text-color, #bddbd4);font-size:12px}.firewall-section{margin-top:20px;padding-top:18px;border-top:1px solid #5eead422}.firewall-group-heading,.firewall-member,.firewall-form-heading,.firewall-plan-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.firewall-group-heading{margin-top:14px;padding:13px;border:1px solid #2dd4bf33;border-radius:13px;background:#0f766e22}.firewall-group-heading small,.firewall-group-heading strong{display:block}.firewall-group-heading strong{margin-top:5px;overflow-wrap:anywhere;color:#99f6e4;font-size:13px}.firewall-group-heading>span{flex:0 0 auto;color:#5eead4;font-size:12px;font-weight:800}.firewall-capability{display:flex;justify-content:space-between;gap:12px;margin-top:10px;padding:10px 12px;border:1px solid;border-radius:12px}.firewall-capability strong,.firewall-capability small{font-size:11px}.firewall-capability.disabled{border-color:#64748b44;color:#94a3b8;background:#0f172a33}.firewall-capability.enabled{border-color:#fb718566;color:#fecdd3;background:#4c051933}.firewall-members{display:grid;gap:8px;margin-top:10px}.firewall-member{padding:11px 12px;border:1px solid #5eead41c;border-radius:13px;background:var(--surface-background)}.firewall-member strong,.firewall-member small{display:block}.firewall-member small{margin-top:4px;color:var(--muted-text)}.firewall-member>span{color:var(--tg-theme-text-color, #bddbd4);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;text-align:right}.firewall-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid #5eead422}.firewall-form-heading,.firewall-form .full-width{grid-column:1 / -1}.firewall-form-heading>span{color:#fcd34d;font-size:11px;font-weight:800}.firewall-form label{display:grid;gap:7px;color:var(--secondary-text);font-size:12px}.firewall-form input,.firewall-form select{width:100%;min-height:44px;padding:9px 11px;border:1px solid #5eead433;border-radius:12px;color:var(--tg-theme-text-color, #e7f6f3);background:var(--input-background)}.preview-button{color:#05201b;background:#5eead4;font-weight:800;text-align:center}.firewall-plan{margin-top:14px;padding:15px;border:1px solid #fbbf2444;border-radius:15px;background:#42200633}.firewall-plan-heading{align-items:flex-start}.firewall-plan-heading h3{margin-top:8px;font-size:15px}.firewall-plan-heading>strong{flex:0 0 auto;color:#fde68a;font-size:12px}.dry-run-badge{color:#fcd34d;font-size:10px;font-weight:900;letter-spacing:1px}.firewall-plan>small{display:block;margin-top:10px;color:#a8a29e}.firewall-plan ol{margin:12px 0;padding-left:20px;color:#d6d3d1;font-size:12px;line-height:1.7}.firewall-plan p{margin:0;color:#fcd34d;font-size:11px;line-height:1.5}.firewall-plan-list{display:grid;gap:8px;margin-top:18px;padding-top:18px;border-top:1px solid #5eead422}.firewall-plan-list-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.firewall-plan-list-heading>span{color:#99f6e4;font-size:12px}.firewall-plan-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface-background)}.firewall-plan-row span{min-width:0}.firewall-plan-row strong,.firewall-plan-row small{display:block}.firewall-plan-row strong{overflow-wrap:anywhere;color:#d5f5ee;font-size:12px}.firewall-plan-row small{margin-top:4px;color:var(--muted-text);font-size:10px;text-align:right}.firewall-plan-row span small{text-align:left}.plan-status{display:block;margin-top:7px;color:#fde68a;font-size:11px}.confirm-plan-button{width:100%;margin-top:13px;border-color:#fbbf2466;color:#fde68a;background:#713f1233;font-weight:800;text-align:center}.firewall-execute-form{display:grid;gap:9px;margin-top:14px;padding:13px;border:1px solid #fb718566;border-radius:13px;background:#4c051933}.firewall-execute-form strong{color:#fecdd3;font-size:12px}.firewall-execute-form small{color:#fda4af}.firewall-execute-form input{width:100%;min-height:44px;padding:9px 11px;border:1px solid #fb718566;border-radius:12px;color:#fff1f2;background:#1f0710}.firewall-execute-form button{color:#fff1f2;background:#be123c;font-weight:900;text-align:center}:root[data-theme=light] .eyebrow,:root[data-theme=light] .role-badge,:root[data-theme=light] .online,:root[data-theme=light] .dashboard-heading>span,:root[data-theme=light] .dashboard-subheading>span,:root[data-theme=light] .dashboard-recent-operations article>span,:root[data-theme=light] .vpn-account-heading>span,:root[data-theme=light] .config-heading>span,:root[data-theme=light] .help-heading>span,:root[data-theme=light] .role-message,:root[data-theme=light] .vpn-binding-form .form-heading>span,:root[data-theme=light] .user-search-heading>span,:root[data-theme=light] .audit-heading>span,:root[data-theme=light] .audit-result span,:root[data-theme=light] .compact-button,:root[data-theme=light] .firewall-group-heading strong,:root[data-theme=light] .firewall-group-heading>span,:root[data-theme=light] .firewall-plan-list-heading>span{color:var(--tg-theme-link-color, #0f766e)}:root[data-theme=light] .help-steps strong,:root[data-theme=light] .help-faq strong,:root[data-theme=light] .firewall-plan-row strong{color:var(--tg-theme-text-color, #12332d)}:root[data-theme=light] .dashboard-note,:root[data-theme=light] .config-pending,:root[data-theme=light] .help-security,:root[data-theme=light] .firewall-form-heading>span,:root[data-theme=light] .firewall-plan-heading>strong,:root[data-theme=light] .dry-run-badge,:root[data-theme=light] .firewall-plan p,:root[data-theme=light] .plan-status{color:#92400e}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:480px){.grid,.admin-grid,.dashboard-metrics,.role-form,.vpn-binding-form,.vpn-account-metrics,.node-summary,.help-faq,.vpn-metrics,.firewall-form{grid-template-columns:1fr}.welcome-panel{align-items:flex-start;gap:18px}.vpn-heading,.session-row,.firewall-member,.firewall-plan-heading{align-items:flex-start}.dashboard-metrics small{min-height:0}}
