:root{color-scheme:dark;font-family:IBM Plex Sans,Segoe UI,sans-serif;background:radial-gradient(circle at top,rgba(61,89,183,.24),transparent 35%),linear-gradient(180deg,#0a0d14,#0d111a);color:#f4f7fb;line-height:1.5;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:transparent;color:#f4f7fb}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}#root{min-height:100vh}.shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;align-self:start;height:100vh;padding:32px 24px 96px;border-right:1px solid rgba(164,180,219,.12);background:#070a10b8;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);display:flex;flex-direction:column;gap:32px;overflow-y:auto}.sidebar__eyebrow,.panel__eyebrow,.hero__eyebrow,.modal__eyebrow{margin:0 0 10px;color:#7fd1c8;letter-spacing:.14em;text-transform:uppercase;font-size:12px}.sidebar__title{margin:0;font-size:32px;line-height:.95}.sidebar__brand{display:flex;align-items:center;gap:12px}.sidebar__brand-icon{width:44px;height:44px;flex:0 0 44px;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(0,220,255,.18))}.sidebar__text,.muted-text,.cell-stack span,.stat-card__hint{color:#96a0b5}.nav{display:flex;flex-direction:column;gap:10px}.nav__item{padding:14px 16px;border-radius:16px;background:transparent;color:#b8c0d4;transition:.16s ease}.nav__item:hover,.nav__item--active{background:#7fd1c81a;color:#f4f7fb}.content{padding:32px}.stack{display:flex;flex-direction:column;gap:20px}.grid{display:grid;grid-template-columns:1.25fr .9fr;gap:20px}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.panel,.stat-card,.hero{border:1px solid rgba(164,180,219,.12);background:#11151fd6;border-radius:24px;box-shadow:0 24px 50px #0000002e}.panel,.hero{padding:24px}.panel__header,.hero,.modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px}.logs-toolbar__controls{margin-top:20px}.sidebar__restart{position:fixed;left:24px;bottom:24px;z-index:30;width:232px;margin:0;box-shadow:0 12px 32px #00000059}.sidebar__logout{position:fixed;left:24px;bottom:80px;width:232px}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(100%,420px);display:flex;flex-direction:column;gap:18px;padding:32px;border:1px solid rgba(164,180,219,.12);border-radius:24px;background:#11151fe6;box-shadow:0 24px 50px #0000003d}.login-card h1{margin:0}.login-error{margin:0;color:#ff9b9b}.toolbar__actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px;margin-left:auto}.hero h2,.panel h2,.panel h3,.modal h3{margin:0}.stat-card{padding:22px;display:flex;flex-direction:column;gap:8px}.stat-card__label{color:#8f98ab;font-size:14px}.stat-card__value{font-size:clamp(28px,4vw,42px);line-height:1}.traffic-split{display:grid;gap:10px;width:100%}.traffic-split--compact{display:flex;flex-direction:row;gap:8px;min-width:280px}.traffic-chip{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;border:1px solid rgba(164,180,219,.12);background:#080c13b8}.traffic-chip--down{background:linear-gradient(135deg,#4f8cff2e,#232e4f61)}.traffic-chip--up{background:linear-gradient(135deg,#7fd1c829,#132e2b66)}.traffic-chip__icon{width:36px;height:36px;display:inline-grid;place-items:center;border-radius:50%;font-size:18px;font-weight:700;background:#ffffff14}.traffic-chip__content{display:flex;flex-direction:column;gap:2px;min-width:0}.traffic-chip__label{color:#aab3c6;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.traffic-chip__value{font-size:18px;line-height:1.15}.traffic-split--compact .traffic-chip{flex:1;min-width:0;padding:8px 10px;border-radius:14px}.traffic-split--compact .traffic-chip__icon{width:26px;height:26px;font-size:13px}.traffic-split--compact .traffic-chip__value{font-size:14px}.traffic-split--compact .traffic-chip__label{font-size:10px}.form,.field{display:flex;flex-direction:column;gap:12px}.field input,.field select,.link-box{width:100%;border:1px solid rgba(164,180,219,.16);background:#0f1420;color:#f4f7fb;border-radius:16px;padding:14px 16px;outline:none}.toolbar__filter{width:min(100%,320px);flex:0 1 320px;border:1px solid rgba(164,180,219,.16);background:#0f1420;color:#f4f7fb;border-radius:16px;padding:14px 16px;outline:none}.field input:focus,.field select:focus,.toolbar__filter:focus,.link-box:focus{border-color:#7fd1c8}.primary-button,.ghost-button{border:1px solid transparent;border-radius:14px;padding:12px 16px;transition:.16s ease}.primary-button{background:linear-gradient(135deg,#7fd1c8,#4f8cff);color:#06111b;font-weight:700}.primary-button:hover{filter:brightness(1.05)}.primary-button:disabled{opacity:.65;cursor:not-allowed}.ghost-button{background:transparent;color:#d8deec;border-color:#a4b4db29}.ghost-button:hover{background:#7fd1c814}.ghost-button:disabled{opacity:.45;cursor:not-allowed}.ghost-button--danger{border-color:#ff6b6b3d;color:#ffb5b5}.ghost-button--danger:hover{background:#ff6b6b1a}.ghost-button--success{border-color:#7fd1c838;color:#9be0d9}.ghost-button--success:hover{background:#7fd1c81a}.ghost-button--compact{padding:8px 12px;white-space:nowrap}.icon-button{display:inline-grid;place-items:center;width:32px;height:32px;padding:0;border:1px solid rgba(164,180,219,.16);border-radius:10px;background:transparent;color:#d8deec;transition:.16s ease;flex-shrink:0}.icon-button:hover{background:#7fd1c814}.icon-button:disabled{opacity:.45;cursor:not-allowed}.icon-button--danger{border-color:#ff6b6b3d;color:#ffb5b5}.icon-button--danger:hover{background:#ff6b6b1a}.info-list{margin:0;padding-left:18px;color:#cdd5e5}.table-wrap{overflow-x:auto}.clients-table{width:100%;border-collapse:collapse}.clients-table th,.clients-table td{padding:16px 12px;border-bottom:1px solid rgba(164,180,219,.08);text-align:left;vertical-align:top}.clients-table th{color:#8f98ab;font-weight:600}.clients-table__row--inactive{background:#ffffff05}.clients-table th:nth-child(2),.clients-table td:nth-child(2){min-width:280px}.clients-table td:last-child{width:1%;white-space:nowrap}.mono,.logs-block,.link-box{font-family:IBM Plex Mono,SFMono-Regular,monospace}.cell-stack{display:flex;flex-direction:column;gap:4px}.client-name-line{display:flex;align-items:center;gap:8px}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions--row{flex-wrap:nowrap;align-items:center}.status-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:#7fd1c81f;color:#9be0d9}.status-badge--inactive{background:#ffb84d1f;color:#ffd18a}.loading-block,.empty-state{min-height:240px;display:grid;place-items:center;text-align:center;gap:10px}.loading-block__spinner{width:36px;height:36px;border-radius:50%;border:3px solid rgba(127,209,200,.16);border-top-color:#7fd1c8;animation:spin .9s linear infinite}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#04060ac7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:grid;place-items:center;padding:24px}.modal{width:min(860px,100%);border-radius:28px;border:1px solid rgba(164,180,219,.12);background:#0d121a;padding:24px}.modal__body{display:grid;grid-template-columns:240px 1fr;gap:20px;margin-top:20px}.qr-card{min-height:240px;display:grid;place-items:center;border-radius:20px;background:#10141c;border:1px solid rgba(164,180,219,.12)}.logs-wrap{display:flex;flex-direction:column;gap:14px}.logs-panel{min-height:480px}.logs-meta{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.logs-meta__right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.logs-refresh-badge{color:#9be0d9;font-size:12px;letter-spacing:.06em;text-transform:uppercase}.logs-block{margin:0;padding:20px;border-radius:20px;border:1px solid rgba(164,180,219,.08);background:#0a0e14;color:#cfd7e6;overflow:auto;min-height:420px;max-height:min(70vh,720px)}.logs-block--structured{display:flex;flex-direction:column;gap:8px;font-family:IBM Plex Mono,SFMono-Regular,monospace;font-size:13px;line-height:1.45;overflow-x:auto}.log-row{display:grid;grid-template-columns:minmax(120px,max-content) minmax(120px,max-content) 16px minmax(180px,1fr) minmax(0,max-content) minmax(0,max-content) 40px;gap:10px 12px;align-items:center;padding:8px 10px;border-radius:12px;background:#ffffff05;min-width:860px}.log-row--raw{grid-template-columns:96px 1fr;min-width:0}.log-row--api{opacity:.72}.log-row__time{color:#8f98ab;white-space:nowrap;min-width:0}.log-row__count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font-size:11px;font-weight:600;line-height:1;color:#7a8499;background:#a4b4db14;border:1px solid rgba(164,180,219,.1);white-space:nowrap;justify-self:end}.log-row__source{color:#b8c0d4;white-space:nowrap;min-width:0}.log-row__arrow{color:#6b7385}.log-row__dest{word-break:break-all}.log-row__dest-proto,.log-row__dest-port{color:#6b7385}.log-row__dest-ip{color:#d9b36c}.log-row__dest-domain{color:#4f8cff}.log-row__dest-ip--unknown,.log-row__dest-domain--unknown{color:#ff6b7a}.log-row__dest-label,.log-row__route{color:#96a0b5;white-space:nowrap}.log-row__email{color:#7fd1c8;font-weight:600;white-space:nowrap}.log-row__raw{color:#cfd7e6;white-space:pre-wrap;word-break:break-word}.rules-editor{width:100%;min-height:360px;resize:vertical;border:1px solid rgba(164,180,219,.16);border-radius:18px;background:#080c13b8;color:#f4f7fb;padding:16px;outline:none;font-family:IBM Plex Mono,SFMono-Regular,monospace;font-size:13px;line-height:1.5}.rules-editor:focus{border-color:#7fd1c8}.settings-hero__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.settings-field{display:flex;flex-direction:column;gap:10px;margin-top:16px}.settings-field__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-field__label{color:#aab3c6;font-size:13px;letter-spacing:.06em;text-transform:uppercase}.settings-field__body{display:grid;gap:12px}.settings-field__body--qr{grid-template-columns:180px 1fr;align-items:start}.settings-field__input{padding:12px 14px}.qr-card--compact{min-height:180px}.system-rules{display:grid;gap:12px;margin-top:16px}.system-rules-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.system-rule{border:1px solid rgba(164,180,219,.12);border-radius:18px;padding:16px;background:#080c13b8}.system-rule--editable{display:flex;flex-direction:column;gap:10px}.system-rule__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.system-rule__outbound{color:#9be0d9;font-size:13px}.system-rule__targets{margin:0;padding-left:18px;color:#cfd7e6;display:grid;gap:4px}.system-rule__count{color:#8f98ab;font-size:12px}.rules-editor--compact{min-height:140px}.routing-save-bar{display:flex;justify-content:flex-end}.setup-shell{min-height:100vh;max-width:720px;margin:0 auto;padding:24px 20px 48px}.setup-header h1{margin:0;font-size:clamp(28px,5vw,40px);line-height:1.05}.setup-header__eyebrow{margin:0 0 8px;color:#7fd1c8;letter-spacing:.12em;text-transform:uppercase;font-size:12px}.setup-steps{display:flex;flex-direction:column;gap:16px;margin-top:16px}.setup-step__head{display:flex;align-items:center;gap:14px}.setup-step__head h3{margin:0;font-size:20px}.setup-step__number{width:36px;height:36px;display:inline-grid;place-items:center;border-radius:50%;background:#7fd1c824;color:#9be0d9;font-weight:700;flex-shrink:0}.setup-step__body{margin-top:14px;display:flex;flex-direction:column;gap:14px}.setup-step__text{margin:0;color:#b8c0d4}.setup-step__emphasis-negative{color:#ff6b6b;font-weight:700}.setup-actions,.setup-check-links{display:flex;flex-wrap:wrap;gap:10px}.setup-action{text-align:center;text-decoration:none}.setup-config{display:flex;flex-direction:column;gap:14px}.setup-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.setup-config-card{display:flex;flex-direction:column;gap:14px;padding:18px;border-radius:20px;border:1px solid rgba(164,180,219,.12);background:#080c13b8}.setup-config-card h4{margin:0;font-size:18px}.setup-config-card__eyebrow{margin:0 0 8px;color:#7fd1c8;letter-spacing:.08em;text-transform:uppercase;font-size:12px}.setup-instruction-list{margin:0;padding-left:18px;color:#cdd5e5;display:grid;gap:8px}.setup-subscription{display:grid;grid-template-columns:180px 1fr;gap:14px;align-items:start}.setup-step__input{padding:12px 14px;font-size:13px}.setup-vps-ip{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap}.setup-vps-ip__label{color:#9aa6bf;font-size:14px}.setup-vps-ip__value{font-size:16px;color:#f4f7fb}.setup-vps-ip__copy{margin-left:auto}.client-app-switcher{display:flex;flex-wrap:wrap;gap:10px}.client-app-switcher__button{display:inline-flex;align-items:center;gap:12px;padding:10px 14px;border-radius:16px;border:1px solid rgba(164,180,219,.18);background:#121722;color:#d8deec}.client-app-switcher__button:hover{border-color:#7fd1c873;background:#7fd1c814}.client-app-switcher__button--active{border-color:#7fd1c899;background:#7fd1c81f;color:#f4f7fb}.client-app-switcher__icon{width:40px;height:40px;object-fit:cover;border-radius:10px;display:block}.client-app-switcher__label{font-weight:600}.checkbox{display:inline-flex;align-items:center;gap:10px;color:#cfd7e6;min-height:48px;flex-shrink:0}.toolbar .ghost-button,.toolbar__actions .ghost-button{flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1024px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding-bottom:32px;border-right:0;border-bottom:1px solid rgba(164,180,219,.12)}.sidebar__restart{left:16px;right:16px;bottom:16px;width:auto}.stats-grid,.grid,.modal__body,.settings-field__body--qr,.setup-subscription,.system-rules-grid,.setup-config-grid{grid-template-columns:1fr}}@media(max-width:720px){.content{padding:20px}.panel,.hero,.stat-card,.modal{padding:18px;border-radius:20px}.panel__header,.hero,.toolbar{flex-direction:column;align-items:stretch}.toolbar__actions{margin-left:0;justify-content:flex-end}.clients-table th:nth-child(2),.clients-table td:nth-child(2){min-width:220px}.traffic-split--compact{min-width:220px}.log-row{grid-template-columns:1fr;gap:4px;min-width:0}.log-row--raw{grid-template-columns:1fr}.log-row__count{text-align:right;justify-self:end}}
