*{box-sizing:border-box;margin:0;padding:0}body{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;color:#333;background:#f5f5f5}a{color:#00796b;text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1170px;margin:0 auto;padding:0 15px}:focus-visible{outline:2px solid #00796b;outline-offset:2px}button:focus-visible,.btn:focus-visible{outline:2px solid #00796b;outline-offset:2px}.navbar{position:fixed;top:0;left:0;right:0;z-index:100;background:#00796b;color:#fff;height:56px}.navbar-inner{display:flex;align-items:center;height:100%;gap:24px}.navbar-brand{color:#fff!important;font-size:18px;font-weight:700;white-space:nowrap}.navbar-links{display:flex;gap:4px;flex:1}.nav-link{color:#ffffffd9!important;padding:6px 12px;border-radius:6px;font-size:14px;font-weight:500;transition:background .15s}.nav-link:hover,.nav-link.active{color:#fff!important;background:#ffffff2e;text-decoration:none}.navbar-profile{display:flex;align-items:center;gap:8px;color:#fff;font-size:13px}.profile-pic{width:28px;height:28px;border-radius:50%}.logout-link{font-size:12px;opacity:.8}.page-content{padding-top:80px;padding-bottom:24px}.panel{background:#fff;border-radius:8px;margin-bottom:20px;border:1px solid #e0e0e0;overflow:hidden;box-shadow:0 1px 4px #0000000f}.panel-heading{padding:12px 16px;font-weight:600;display:flex;align-items:center;justify-content:space-between}.panel-primary>.panel-heading{background:#00796b;color:#fff}.panel-default>.panel-heading{background:#fafafa;color:#333;border-bottom:1px solid #e0e0e0}.panel-success>.panel-heading{background:#2e7d32;color:#fff}.panel-danger>.panel-heading{background:#c62828;color:#fff}.panel-warning>.panel-heading{background:#ef6c00;color:#fff}.panel-body{padding:0}.panel-title{font-size:16px;font-weight:700}.panel-heading-actions{display:flex;gap:8px;align-items:center}.panel-search{display:flex;gap:4px;align-items:center;position:relative}.panel-search input{background:#fff3;border:none;color:#fff;padding:6px 28px 6px 10px;border-radius:6px;font-size:13px;width:200px;transition:background .15s,width .2s}.panel-search input:focus{background:#ffffff4d;outline:none;width:240px}.panel-search input::placeholder{color:#fff9}.panel-search .search-clear{position:absolute;right:30px;top:50%;transform:translateY(-50%);background:none;border:none;color:#ffffffb3;cursor:pointer;font-size:14px;padding:2px 4px;line-height:1;display:none}.panel-search .search-clear.visible{display:block}.panel-search .search-clear:hover{color:#fff}.panel-search button[type=submit]{background:none;border:none;cursor:pointer;font-size:14px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:10px 16px;text-align:left;border-bottom:1px solid #eee;vertical-align:middle}.table thead th{font-weight:600;color:#666;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.table tbody tr{transition:background .1s}.table tbody tr:hover{background:#f5f9f8}.clickable-row{cursor:pointer}.table td,.table th{white-space:nowrap}.table td:last-child{white-space:normal;width:100%}.table-striped tbody tr:nth-child(2n){background:#fafafa}.table-striped tbody tr:nth-child(2n):hover{background:#f5f9f8}.row-up{background:#e8f5e9!important}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;background:#00796b;color:#fff;transition:background .15s,box-shadow .15s}.btn:hover{background:#00695c}.btn-sm{padding:4px 10px;font-size:12px}.btn-default{background:#fff;color:#333;border:1px solid #ccc}.btn-default:hover{background:#f5f5f5;border-color:#aaa}.btn-primary{background:#00796b;color:#fff}.btn-primary:hover{background:#00695c}.btn-warning{background:#ef6c00;color:#fff}.btn-warning:hover{background:#e65100}.btn-danger{background:#c62828;color:#fff}.btn-danger:hover{background:#b71c1c}.btn-success{background:#2e7d32;color:#fff}.btn-success:hover{background:#1b5e20}.pull-right{float:right}.status-icon{font-size:18px}.status-icon.good{color:#2e7d32}.status-icon.bad{color:#c62828}.status-icon.warn{color:#ef6c00}.alert{padding:12px 16px;margin:0;font-size:13px}.alert-success{background:#e8f5e9;color:#1b5e20}.alert-warning{background:#fff3e0;color:#e65100}.alert-danger{background:#ffebee;color:#b71c1c}.modal-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease}.modal-dialog{background:#fff;border-radius:12px;width:90%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0003;animation:modalIn .2s ease}.modal-header{padding:16px 20px;border-bottom:1px solid #eee;display:flex;align-items:center;justify-content:space-between}.modal-header h3{font-size:18px;margin:0}.modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#666;width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:background .15s}.modal-close:hover{background:#f5f5f5}.modal-body{padding:20px}.modal-actions{margin-top:16px;display:flex;gap:8px;justify-content:flex-end}.input{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:6px;font-size:14px;margin-top:4px;transition:border-color .15s}.input:focus{border-color:#00796b;outline:none;box-shadow:0 0 0 3px #00796b1a}textarea.input{resize:vertical;font-family:inherit}.form-group{margin-bottom:14px}.form-group label{display:block;font-weight:600;margin-bottom:4px;font-size:13px;color:#444}select{padding:8px 12px;border:1px solid #ccc;border-radius:6px;font-size:14px;background:#fff}.dropdown{position:relative}.dropdown-menu{display:none;position:absolute;right:0;top:100%;background:#fff;border:1px solid #e0e0e0;border-radius:8px;min-width:200px;z-index:10;box-shadow:0 4px 16px #0000001f;padding:8px 0 4px;margin-top:0}.dropdown-menu:before{content:"";position:absolute;top:-8px;left:0;right:0;height:8px}.dropdown:hover .dropdown-menu{display:block}.dropdown-menu button{display:block;width:100%;text-align:left;padding:10px 16px;border:none;background:none;cursor:pointer;font-size:13px;transition:background .1s}.dropdown-menu button:hover{background:#f5f9f8}.inline-prop{margin-right:16px}.inline-prop:before{content:""}.station-ip-cell{display:flex;align-items:center;justify-content:space-between;gap:8px}.signal-img{height:1em;vertical-align:middle;margin-right:4px}.airtime-table{width:100%}.airtime-header,.airtime-cells{display:flex}.airtime-label{flex:1;text-align:center;font-size:9px;color:#aaa;overflow:hidden}.airtime-label.in-use{font-weight:700;color:#000}.airtime-cell{flex:1;height:1em;background:#e0e0e0}.airtime-good{background:#c8e6c9}.airtime-ok{background:#fff9c4}.airtime-bad{background:#ffcdd2}.airtime-cell.in-use.airtime-good{background:#2e7d32}.airtime-cell.in-use.airtime-ok{background:#f9a825}.airtime-cell.in-use.airtime-bad{background:#c62828}.wifi-time-table{border-collapse:separate;border-spacing:2px;width:100%;margin:12px 0}.wifi-time-table th,.wifi-time-table td{text-align:center;vertical-align:middle}.wifi-time-table th{user-select:none;font-size:11px;color:#888;padding:4px 2px;font-weight:500}.wifi-time-table tbody th{text-align:right;padding-right:8px;min-width:36px}.wifi-time-table td{background:#f0f0f0;border-radius:3px;transition:background .1s;height:22px;min-width:22px}.wifi-time-table td.active{background:#00796b}.wifi-time-control td{height:28px;cursor:pointer}.wifi-time-control td:hover{filter:brightness(.9)}.config-editor{padding:15px}.config-editor textarea{width:100%;font-family:monospace;font-size:13px;padding:10px;border:1px solid #ccc;border-radius:6px}.config-actions{margin-top:10px;display:flex;gap:8px;justify-content:flex-end}.time-config-actions{margin-bottom:10px;display:flex;gap:8px}.pagination-row{padding:12px 16px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #eee}.pagination-info{color:#888;font-size:13px}.pagination{display:flex;gap:2px}.pagination button{padding:4px 10px;border:1px solid #ddd;background:#fff;cursor:pointer;font-size:13px;border-radius:4px;transition:background .1s;min-width:32px;text-align:center}.pagination button:hover{background:#f0f0f0}.pagination button.active{background:#00796b;color:#fff;border-color:#00796b}.pagination button:disabled{opacity:.4;cursor:default}.pagination .pagination-ellipsis{padding:4px 6px;color:#999;font-size:13px;display:flex;align-items:center}.station-detail,.station-detail:hover{background:#f5f5f5!important}.station-detail-header{font-weight:600;margin-bottom:8px}.station-props{display:flex;flex-wrap:wrap}.station-prop{width:33.33%;display:flex;padding:1px 0;overflow:hidden}.station-prop-key{font-weight:600;min-width:140px;font-size:12px}.station-prop-val{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.raw-json{padding:15px;font-size:12px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}.pad{padding:15px}.logging-in{text-align:center;padding:80px 0;color:#999;font-size:16px}.warning{background:#fff3e0}.navbar-version{display:block;font-size:9px;opacity:.6;line-height:1;margin-top:2px}.navbar-profile span{text-align:right}.profile-orgs{display:block;font-size:11px;opacity:.7}.profile-orgs span{margin-right:6px}.dropdown-menu a{display:block;padding:10px 16px;color:#333!important;font-size:13px;transition:background .1s}.dropdown-menu a:hover{background:#f5f9f8;text-decoration:none}.btn-back{background:none;border:none;cursor:pointer;color:inherit;font-size:20px;margin-right:8px;padding:0;vertical-align:middle;line-height:1;opacity:.85;transition:opacity .15s}.btn-back:hover{opacity:1}.snackbar-container{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:2000}.snackbar{background:#323232;color:#fff;padding:12px 24px;border-radius:8px;font-size:14px;box-shadow:0 4px 16px #0000004d;animation:snackIn .3s ease}@keyframes snackIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.crash-overlay{position:fixed;inset:0;background:#fff;z-index:9999;overflow-y:auto;text-align:center;padding:40px 20px}.crash-hero{margin-bottom:24px}.crash-hero img{max-width:400px;border-radius:12px}.crash-overlay h2{font-size:32px;margin-bottom:8px}.crash-overlay h4{margin-top:24px}.crash-overlay pre{text-align:left;max-width:600px;margin:16px auto}.has-error .input{border-color:#c62828}.has-error label{color:#c62828}.btn-icon{background:none;border:none;cursor:pointer;color:inherit;font-size:14px;padding:2px 4px;opacity:.7;vertical-align:middle;border-radius:4px;transition:opacity .15s,background .15s}.btn-icon:hover{opacity:1;background:#0000000f}.btn:disabled{opacity:.5;cursor:not-allowed}.loading-container{display:flex;align-items:center;justify-content:center;padding:48px 16px;color:#999;font-size:14px;gap:10px}.spinner{width:20px;height:20px;border:2px solid #e0e0e0;border-top-color:#00796b;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:48px 16px;color:#999}.empty-state p{font-size:14px;margin-bottom:4px}.empty-state .empty-hint{font-size:12px;color:#bbb}.breadcrumb{display:flex;align-items:center;gap:6px;margin-bottom:16px;font-size:13px;color:#888}.breadcrumb a{color:#00796b}.breadcrumb .separator{color:#ccc}.confirm-input{margin-top:8px}.confirm-hint{font-size:12px;color:#888;margin-top:4px}.search-page{max-width:800px;margin:0 auto}.search-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 0 40px;transition:padding .3s}.search-hero-compact{padding:0 0 24px}.search-title{font-size:28px;font-weight:300;color:#555;margin-bottom:24px}.search-box{position:relative;width:100%}.search-input{width:100%;padding:14px 40px 14px 16px;font-size:16px;border:1px solid #ddd;border-radius:8px;background:#fff;box-shadow:0 2px 8px #0000000f;transition:border-color .15s,box-shadow .15s}.search-input:focus{outline:none;border-color:#00796b;box-shadow:0 2px 12px #00796b1f}.search-input-clear{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:20px;color:#aaa;cursor:pointer;padding:4px;line-height:1}.search-input-clear:hover{color:#666}.search-section{margin-bottom:20px}.search-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#888;margin-bottom:8px}
