body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.notification-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;opacity:0;position:fixed;right:0;top:0;transform:scale(.9);transition:all .3s ease;z-index:10000}.notification-overlay.visible{opacity:1;transform:scale(1)}.notification-overlay.closing{opacity:0;transform:scale(.9)}.notification-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-height:80vh;max-width:500px;min-width:320px;overflow:hidden;transform:translateY(-20px);transition:transform .3s ease;width:90%}.notification-overlay.visible .notification-modal{transform:translateY(0)}.notification-overlay.closing .notification-modal{transform:translateY(-20px)}.notification-header{align-items:center;display:flex;gap:12px;padding:20px 20px 0}.notification-icon{align-items:center;border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:16px;font-weight:700;height:32px;justify-content:center;width:32px}.notification-title{color:#333;flex:1 1;font-size:18px;font-weight:600;margin:0}.notification-close{background:none;border:none;border-radius:4px;color:#999;cursor:pointer;flex-shrink:0;font-size:24px;line-height:1;padding:4px;transition:all .2s ease}.notification-close:hover{background-color:#f5f5f5;color:#666}.notification-content{padding:16px 20px}.notification-message{color:#555;font-size:16px;line-height:1.4;margin:0}.notification-details{background-color:#f8f9fa;border-left:4px solid #e9ecef;border-radius:6px;color:#666;font-size:14px;margin-top:12px;padding:12px}.notification-actions{display:flex;gap:12px;justify-content:flex-end;padding:0 20px 20px}.notification-btn{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;min-width:80px;padding:10px 20px;transition:all .2s ease}.notification-btn-primary{background-color:#2196f3;color:#fff}.notification-btn-primary:hover{background-color:#1976d2;box-shadow:0 4px 12px #2196f366;transform:translateY(-1px)}.notification-btn-confirm{background-color:#4caf50;color:#fff}.notification-btn-confirm:hover{background-color:#45a049;box-shadow:0 4px 12px #4caf5066;transform:translateY(-1px)}.notification-btn-cancel{background-color:#f5f5f5;border:1px solid #ddd;color:#666}.notification-btn-cancel:hover{background-color:#e9ecef;border-color:#adb5bd;transform:translateY(-1px)}.notification-modal.success .notification-details{background-color:#f1f8e9;border-left-color:#4caf50}.notification-modal.error .notification-details{background-color:#ffebee;border-left-color:#f44336}.notification-modal.warning .notification-details{background-color:#fff3e0;border-left-color:#ff9800}.notification-modal.confirm .notification-details{background-color:#e3f2fd;border-left-color:#2196f3}@media (max-width:480px){.notification-modal{min-width:auto;width:95%}.notification-header{padding:16px 16px 0}.notification-content{padding:12px 16px}.notification-actions{flex-direction:column;padding:0 16px 16px}.notification-btn{width:100%}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-3px)}60%{transform:translateY(-1px)}}.notification-icon{animation:bounce .6s ease-in-out}.react-dadata__container{position:relative}.react-dadata__input{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;display:block;font-size:16px;height:38px;outline:none;padding:0 10px;width:100%}.react-dadata__input:focus{border-color:#007cd6;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 0 3px #007cd64d}.react-dadata__suggestions{background-color:#fff;border-radius:4px;box-shadow:0 1px 6px 3px #0000001a;left:0;list-style:none;margin:0;overflow:hidden;padding:0;position:absolute;right:0;text-align:left;top:calc(100% + 8px);z-index:10}.react-dadata__suggestion-note{color:#828282;font-size:14px;padding:10px 10px 5px}.react-dadata__suggestion{background:0 0;border:none;box-sizing:border-box;cursor:pointer;display:block;font-size:15px;padding:7px 10px;text-align:left;width:100%}.react-dadata__suggestion--line-through{text-decoration:line-through}.react-dadata__suggestion-subtitle{color:#777;font-size:14px;margin-top:4px}.react-dadata__suggestion-subtitle-item{display:inline-block;margin-bottom:4px;margin-right:16px}.react-dadata__suggestion-subtitle-item:last-child{margin-right:0}.react-dadata__suggestion--current{background-color:#007cd626}.react-dadata__suggestion:hover{background-color:#007cd61a}.react-dadata mark{background:0 0}.react-dadata--highlighted{color:#0094ff}.licenses-by-inn{margin:0 auto;max-width:1200px;padding:20px}.licenses-header{align-items:flex-start;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:15px}.licenses-summary h3{color:#333;font-size:1.4rem;margin:0 0 10px}.company-summary{margin-bottom:10px}.company-name{color:#2c3e50;display:block;font-size:1.1rem;font-weight:600;margin-bottom:4px}.company-details{color:#666;font-size:.9rem}.licenses-stats{display:flex;gap:20px}.stat-item{background:#f8f9fa;border-radius:6px;color:#495057;font-size:.9rem;font-weight:500;padding:6px 12px}.refresh-button{background:#007bff;border-radius:6px;font-size:1.2rem;height:40px;min-width:40px;padding:8px 12px;transition:background-color .2s}.refresh-button:hover{background:#0056b3}.licenses-empty,.licenses-error,.licenses-loading{padding:40px 20px;text-align:center}.loading-spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#007bff;height:40px;margin:0 auto 20px;width:40px}.licenses-empty h3,.licenses-error h3{color:#dc3545;margin-bottom:10px}.retry-button{background:#dc3545;border-radius:6px;margin-top:15px;padding:10px 20px}.retry-button:hover{background:#c82333}.accounts-list{display:flex;flex-direction:column;gap:15px}.account-card{background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.account-header{align-items:center;background:#f8f9fa;cursor:pointer;display:flex;justify-content:space-between;padding:15px 20px;transition:background-color .2s}.account-header:hover{background:#e9ecef}.account-info h4{color:#495057;font-size:1.1rem;margin:0 0 5px}.account-id{color:#6c757d;font-size:.85rem}.account-summary{align-items:center;display:flex;gap:15px}.licenses-count{background:#007bff;border-radius:12px;color:#fff;font-size:.8rem;font-weight:500;padding:4px 8px}.expand-icon{color:#6c757d;font-size:.8rem;transition:transform .2s}.expand-icon.expanded{transform:rotate(180deg)}.account-licenses{padding:0 20px 20px}.license-error{background:#f8d7da;border-radius:6px;color:#721c24;font-size:.9rem;margin-bottom:10px;padding:10px}.no-licenses{color:#6c757d;font-style:italic;padding:20px;text-align:center}.license-item{background:#fdfdfe;border:1px solid #e9ecef;border-radius:6px;margin-bottom:10px;padding:15px}.license-main-info{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:10px}.license-name{color:#2c3e50;flex:1 1;font-size:1rem;font-weight:600;margin-right:15px}.license-status{border-radius:4px;font-size:.8rem;font-weight:500;padding:4px 8px;white-space:nowrap}.license-status-active{background:#d4edda;color:#155724}.license-status-attention{background:#fff3cd;color:#856404}.license-status-warning{background:#f8d7da;color:#721c24}.license-status-expired{background:#f5c6cb;color:#721c24}.license-status-unknown{background:#e2e3e5;color:#383d41}.license-details{display:flex;flex-direction:column;font-size:.9rem;gap:8px}.license-dates{color:#6c757d;display:flex;gap:20px}.license-region{color:#495057}.license-services{display:flex;flex-direction:column;gap:8px}.license-services>span{color:#495057;font-weight:500}.services-list{display:flex;flex-wrap:wrap;gap:6px}.service-tag{background:#e7f3ff;border-radius:12px;color:#0056b3;font-size:.8rem;font-weight:500;padding:3px 8px}.service-tag.extension{background:#f3e5f5;color:#7b1fa2}@media (max-width:768px){.licenses-by-inn{padding:15px}.licenses-header{align-items:stretch;flex-direction:column;gap:15px}.licenses-stats{flex-direction:column;gap:8px}.account-header{align-items:stretch;flex-direction:column;gap:10px}.account-summary{justify-content:space-between}.license-main-info{flex-direction:column;gap:8px}.license-dates{flex-direction:column;gap:5px}}@media (max-width:480px){.licenses-by-inn{padding:10px}.account-card{margin:0 -5px}.account-header,.account-licenses{padding:12px 15px}.license-item{padding:12px}}.licenses-table-container{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.licenses-table{border-collapse:collapse;font-size:.9rem;width:100%}.licenses-table thead{background:#f8fafc}.licenses-table th{border-bottom:2px solid #e5e7eb;color:#374151;font-size:.85rem;font-weight:600;letter-spacing:.5px;padding:16px 12px;text-align:left;text-transform:uppercase}.licenses-table tbody tr{border-bottom:1px solid #f3f4f6;transition:background-color .2s ease}.licenses-table tbody tr:hover{background:#f9fafb}.licenses-table tbody tr:last-child{border-bottom:none}.licenses-table td{padding:16px 12px;vertical-align:top}.account-column{min-width:200px;width:20%}.license-name-column{min-width:250px;width:25%}.license-period-column{min-width:220px;width:25%}.status-column{min-width:120px;width:15%}.services-column{min-width:150px;width:15%}.account-cell{background:#f8fafc;padding:8px 12px;vertical-align:middle}.account-cell a{color:#0078d7;font-weight:500;text-decoration:none}.account-cell a:hover{text-decoration:underline}.account-info .account-name{color:#1f2937;font-size:.95rem;font-weight:600}.account-info .account-id{color:#6b7280;font-size:.8rem}.license-name-cell{color:#374151;font-weight:500;line-height:1.4}.license-period-cell{font-size:.85rem}.period-range{display:flex;flex-direction:column;gap:4px}.period-end,.period-start{color:#6b7280}.period-end strong,.period-start strong{color:#374151;font-weight:500}.status-cell{text-align:center}.status-badge{border-radius:20px;display:inline-block;font-size:.75rem;font-weight:600;letter-spacing:.5px;padding:6px 12px;text-transform:uppercase}.license-status-active .status-badge{background:#d1fae5;color:#065f46}.license-status-attention .status-badge{background:#fef3c7;color:#92400e}.license-status-warning .status-badge{background:#fed7aa;color:#c2410c}.license-status-expired .status-badge{background:#fecaca;color:#dc2626}.license-status-unknown .status-badge{background:#f3f4f6;color:#6b7280}.services-cell{font-size:.85rem}.services-cell .services-list{display:flex;flex-direction:column;gap:4px}.services-cell .service-tag{background:#e0e7ff;border-radius:12px;color:#3730a3;display:inline-block;font-size:.75rem;font-weight:500;line-height:1.2;padding:4px 8px}.no-services{color:#9ca3af;font-size:.8rem;font-style:italic}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.router-editor-content::-webkit-scrollbar{width:6px}.router-editor-content::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.router-editor-content::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.router-editor-content::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.router-input:focus,.router-select:focus,.router-textarea:focus{border-color:#007bff!important;box-shadow:0 0 0 3px #007bff1a;outline:none}.router-input[type=textarea],textarea.router-input{font-family:Monaco,Menlo,Ubuntu Mono,monospace;line-height:1.4;min-height:80px;resize:vertical}.router-button:hover{box-shadow:0 4px 8px #0000001a;transform:translateY(-1px)}.router-button:active{box-shadow:0 2px 4px #0000001a;transform:translateY(0)}.router-close-button:hover{background-color:#e9ecef!important;transform:rotate(90deg)}.router-checkbox{accent-color:#007bff}@media (max-width:768px){.router-modal{margin:16px;max-height:calc(100vh - 32px)!important;width:calc(100% - 32px)!important}.router-grid{gap:8px!important;grid-template-columns:1fr!important}.router-content,.router-header{padding:16px!important}.router-footer{flex-direction:column-reverse;padding:12px 16px!important}.router-button{font-size:13px!important;margin-bottom:8px;padding:8px 16px!important;width:100%}}.wireguard-compact .router-grid{gap:10px!important;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important}.wireguard-compact .router-input,.wireguard-compact .router-select{font-size:12px!important;padding:6px 8px!important}.wireguard-compact label{font-size:11px!important;margin-bottom:2px!important}.router-field-error{border-color:#dc3545!important;box-shadow:0 0 0 3px #dc35451a!important}.router-field-success{border-color:#28a745!important;box-shadow:0 0 0 3px #28a7451a!important}.router-loading-spinner{animation:spin 1s ease-in-out infinite;border:2px solid #fff;border-radius:50%;border-top-color:#0000;display:inline-block;height:16px;width:16px}@keyframes spin{to{transform:rotate(1turn)}}.router-tooltip{position:relative}.router-tooltip:hover:after{animation:tooltipFadeIn .2s ease forwards;background-color:#333;border-radius:4px;bottom:100%;color:#fff;content:attr(data-tooltip);font-size:12px;left:50%;opacity:0;padding:6px 8px;position:absolute;transform:translateX(-50%);white-space:nowrap;z-index:1001}@keyframes tooltipFadeIn{to{opacity:1}}.admin-routers-page{background:#f5f5f5;min-height:100vh;padding:20px}.admin-routers-page h1{color:#333;font-size:24px;margin-bottom:20px}.loading{color:#666;font-size:18px;padding:40px;text-align:center}.error-message{align-items:center;background:#fee;border:1px solid #fcc;border-radius:4px;color:#c00;display:flex;justify-content:space-between;margin-bottom:20px;padding:15px}.retry-button{background:#007cba;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:8px 15px}.retry-button:hover{background:#005a87}.routers-controls{align-items:center;background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:flex;gap:15px;margin-bottom:20px;padding:15px}.add-router-button{background:#28a745;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px}.add-router-button:hover{background:#218838}.refresh-button{background:#007cba;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px}.refresh-button:hover{background:#005a87}.routers-count{color:#666;font-weight:500;margin-left:auto}.add-router-form{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.add-router-form h3{color:#333;margin:0 0 20px}.form-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:20px}.form-group{display:flex;flex-direction:column}.form-group label{color:#333;font-size:14px;font-weight:500;margin-bottom:5px}.form-group input,.form-group select{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px 12px}.form-group input:focus,.form-group select:focus{border-color:#007cba;box-shadow:0 0 0 2px #007cba33;outline:none}.form-actions{display:flex;gap:10px}.save-button{background:#28a745;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px}.save-button:hover{background:#218838}.cancel-button{background:#6c757d;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px}.cancel-button:hover{background:#5a6268}.routers-table{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}.routers-table table{border-collapse:collapse;width:100%}.routers-table th{background:#f8f9fa;color:#333;font-weight:600;text-align:left}.routers-table td,.routers-table th{border-bottom:1px solid #dee2e6;padding:12px 15px}.routers-table td{vertical-align:middle}.routers-table tr:hover{background:#f8f9fa}.region-badge{border-radius:12px;display:inline-block;font-size:12px;font-weight:500;padding:4px 8px;text-transform:uppercase}.region-badge.russia{background:#e3f2fd;color:#1976d2}.region-badge.georgia{background:#f3e5f5;color:#7b1fa2}.actions{text-align:center}.delete-button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:16px;padding:5px;transition:background-color .2s}.delete-button:hover{background:#fee}.no-routers{color:#666;font-style:italic;padding:40px;text-align:center}@media (max-width:768px){.routers-controls{align-items:stretch;flex-direction:column}.routers-count{margin-left:0;text-align:center}.form-grid{grid-template-columns:1fr}.routers-table{overflow-x:auto}.routers-table table{min-width:600px}}