#location-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgb(0 0 0 / .7);z-index:9998;opacity:0;visibility:hidden;transition:all 0.3s ease}#location-modal-overlay.active{opacity:1;visibility:visible}#location-modal{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%) scale(.9)!important;z-index:9999!important;opacity:0;visibility:hidden;transition:all 0.3s ease;width:600px!important;max-width:90vw!important;max-height:90vh!important;background:var(--bg-secondary,#ffffff)!important;border-radius:16px!important;box-shadow:0 20px 60px rgb(0 0 0 / .3)!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}#location-modal.active{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)!important}#location-modal>.location-modal-content{display:flex;flex-direction:column;flex:1;width:100%}#location-modal .modal-header{padding:1.5rem;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}#location-modal .modal-header h2{margin:0;font-size:1.5rem;color:var(--text-primary);display:flex;align-items:center;gap:.75rem}#location-modal .modal-header h2 i{color:var(--primary-color)}#location-modal .modal-close-btn{background:none;border:none;font-size:1.5rem;color:var(--text-secondary);cursor:pointer;padding:.5rem;border-radius:8px;transition:all 0.2s ease}#location-modal .modal-close-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}#location-modal .modal-body{padding:1.5rem;overflow-y:auto;flex:1}#location-modal .location-modal-description{margin-bottom:1.5rem}#location-modal .location-modal-description p{margin:0;color:var(--text-secondary);font-size:.9375rem}#location-modal .toolbar{margin-bottom:1.5rem;display:flex;gap:.75rem;align-items:center}#location-modal .search-input{flex:1;padding:.75rem 1rem;border:1px solid var(--border-color);border-radius:8px;font-size:.9375rem;background:var(--bg-secondary);color:var(--text-primary);transition:all 0.2s ease}#location-modal .search-input:focus{outline:none;border-color:var(--primary-color);background:var(--card-bg)}#location-modal .btn-select-all{padding:.75rem 1rem;border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;font-weight:500;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;gap:.5rem;white-space:nowrap}#location-modal .btn-select-all:hover{background:var(--bg-hover,#e5e7eb);border-color:var(--primary-color)}#location-modal .btn-select-all.active{background:rgb(99 102 241 / .15);border-color:var(--primary-color);color:var(--primary-color)}#location-modal .locations-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;max-height:400px;overflow-y:auto}#location-modal .location-card{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:var(--bg-tertiary,#f3f4f6);border:2px solid #fff0;border-radius:12px;cursor:pointer;transition:all 0.2s ease}#location-modal .location-card:hover{background:var(--bg-hover,#e5e7eb);border-color:var(--border-color)}#location-modal .location-card.selected{background:rgb(99 102 241 / .15);border-color:var(--primary-color)}#location-modal .location-checkbox{position:static!important;display:flex;align-items:center;width:auto!important;height:auto!important;border:none!important;background:transparent!important;top:auto!important;right:auto!important}#location-modal .location-checkbox input[type="checkbox"]{width:18px;height:18px;cursor:pointer;accent-color:var(--primary-color);margin:0}#location-modal .location-flag{font-size:1.5rem;line-height:1}#location-modal .location-info{flex:1;min-width:0}#location-modal .location-name{font-size:.9375rem;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#location-modal .modal-footer{padding:1.5rem;border-top:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;gap:1rem}#location-modal .selected-info{display:flex;align-items:center;gap:.5rem;color:var(--text-secondary);font-size:.9375rem}#location-modal .selected-info i{color:var(--success-color)}#location-modal .modal-footer .btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;gap:.5rem}#location-modal .modal-footer .btn-primary{background:var(--primary-color);color:#fff}#location-modal .modal-footer .btn-primary:hover:not(:disabled){background:var(--primary-dark)}#location-modal .modal-footer .btn:disabled{opacity:.5;cursor:not-allowed}#location-modal .empty-state,#location-modal .loading-state{text-align:center;padding:3rem 1rem;color:var(--text-secondary);grid-column:1 / -1}#location-modal .empty-state i,#location-modal .loading-state i{font-size:2rem;margin-right:.5rem;opacity:.7}#location-modal .empty-state p{margin:0;font-size:1rem}@media (max-width:768px){#location-modal{width:95vw;max-width:95vw}#location-modal .location-modal-content{width:100%}#location-modal .modal-header{padding:1rem}#location-modal .modal-header h2{font-size:1.25rem}#location-modal .modal-body{padding:1rem}#location-modal .locations-list{grid-template-columns:1fr}#location-modal .modal-footer{padding:1rem;flex-direction:column;align-items:stretch}#location-modal .modal-footer .btn{width:100%;justify-content:center}}#key-protocol-modal-overlay,#key-location-modal-overlay,#add-key-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgb(0 0 0 / .7);z-index:9998;opacity:0;visibility:hidden;transition:all 0.3s ease}#key-protocol-modal-overlay.active,#key-location-modal-overlay.active,#add-key-modal-overlay.active{opacity:1;visibility:visible}#key-protocol-modal,#key-location-modal,#add-key-modal{position:fixed!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%) scale(.9)!important;z-index:9999!important;opacity:0;visibility:hidden;transition:all 0.3s ease;width:600px!important;max-width:90vw!important;max-height:90vh!important;background:var(--bg-secondary,#ffffff);border-radius:16px;box-shadow:0 20px 60px rgb(0 0 0 / .15);overflow:hidden;border:1px solid var(--border-color)}#key-protocol-modal.active,#key-location-modal.active,#add-key-modal.active{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)!important}#key-protocol-modal>.protocol-modal-content,#key-location-modal>.location-modal-content,#add-key-modal>.location-modal-content{display:flex;flex-direction:column;flex:1;width:100%}#key-protocol-modal .modal-header,#key-location-modal .modal-header,#add-key-modal .modal-header{padding:1.5rem;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}#key-protocol-modal .modal-header h2,#key-location-modal .modal-header h2,#add-key-modal .modal-header h2{margin:0;font-size:1.5rem;color:var(--text-primary);display:flex;align-items:center;gap:.75rem}#key-protocol-modal .modal-header h2 i,#key-location-modal .modal-header h2 i,#add-key-modal .modal-header h2 i{color:var(--primary-color)}#key-protocol-modal .modal-close-btn,#key-location-modal .modal-close-btn,#add-key-modal .modal-close-btn{background:none;border:none;font-size:1.5rem;color:var(--text-secondary);cursor:pointer;padding:.5rem;border-radius:8px;transition:all 0.2s ease}#key-protocol-modal .modal-close-btn:hover,#key-location-modal .modal-close-btn:hover,#add-key-modal .modal-close-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}#key-protocol-modal .modal-body,#key-location-modal .modal-body,#add-key-modal .modal-body{padding:1.5rem;overflow-y:auto;flex:1;max-height:60vh}#key-protocol-modal .protocol-modal-description,#key-location-modal .location-modal-description,#add-key-modal .location-modal-description{margin-bottom:1.5rem}#key-protocol-modal .protocol-modal-description p,#key-location-modal .location-modal-description p,#add-key-modal .location-modal-description p{margin:0;color:var(--text-secondary);font-size:.9375rem}.protocols-container{display:flex;flex-direction:column;gap:1rem}.protocol-server-group{background:var(--bg-tertiary,#f3f4f6);border-radius:12px;overflow:hidden;border:1px solid var(--border-color)}.protocol-server-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-hover,#e5e7eb);border-bottom:1px solid var(--border-color)}.protocol-server-header .server-location{font-weight:600;color:var(--text-primary)}.protocol-server-header .server-name{color:var(--text-secondary);font-size:.85rem}.protocol-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem;padding:.75rem}.protocol-card{display:flex;flex-direction:column;gap:.25rem;padding:.75rem 1rem;background:var(--bg-secondary,#ffffff);border:2px solid var(--border-color);border-radius:10px;cursor:pointer;transition:all 0.2s ease;position:relative}.protocol-card:hover{background:var(--bg-hover,#e5e7eb);border-color:var(--primary-color)}.protocol-card.selected{background:rgb(99 102 241 / .15);border-color:var(--primary-color);cursor:default}.protocol-card .protocol-name{font-weight:700;font-size:.9rem;color:var(--primary-color)}.protocol-card .protocol-details{font-size:.75rem;color:var(--text-secondary)}.protocol-card .protocol-check{position:absolute;top:.5rem;right:.5rem;color:var(--success-color);font-size:.85rem}#key-location-modal .locations-list,#add-key-modal .locations-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;max-height:400px;overflow-y:auto}#key-location-modal .location-card,#add-key-modal .location-card{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:var(--bg-tertiary,#f3f4f6);border:2px solid #fff0;border-radius:12px;cursor:pointer;transition:all 0.2s ease;position:relative}#key-location-modal .location-card:hover,#add-key-modal .location-card:hover{background:var(--bg-hover,#e5e7eb);border-color:var(--border-color)}#key-location-modal .location-card.selected,#add-key-modal .location-card.selected{background:rgb(99 102 241 / .15);border-color:var(--primary-color);cursor:default}#key-location-modal .location-flag,#add-key-modal .location-flag{font-size:1.5rem;line-height:1}#key-location-modal .location-name,#add-key-modal .location-name{font-size:.9375rem;font-weight:500;color:var(--text-primary)}#key-location-modal .location-check{position:absolute;top:.5rem;right:.5rem;color:var(--success-color);font-size:.85rem}@media (max-width:768px){#key-protocol-modal,#key-location-modal,#add-key-modal{width:95vw!important;max-width:95vw!important}#key-protocol-modal .modal-header,#key-location-modal .modal-header,#add-key-modal .modal-header{padding:1rem}#key-protocol-modal .modal-header h2,#key-location-modal .modal-header h2,#add-key-modal .modal-header h2{font-size:1.25rem}#key-protocol-modal .modal-body,#key-location-modal .modal-body,#add-key-modal .modal-body{padding:1rem}.protocol-list{grid-template-columns:1fr 1fr}#key-location-modal .locations-list,#add-key-modal .locations-list{grid-template-columns:1fr}}