:root{--display:"Share Tech Mono", monospace;--ui:"Chakra Petch", sans-serif;--bg:#0c0e12;--bg-raised:#12151b;--bg-panel:#161a22;--bg-inset:#0a0c10;--border:#1e2330;--border-bright:#2a3040;--text:#7a8394;--text-bright:#c4ccda;--text-heading:#e2e7f0;--amber:#e8a832;--amber-dim:#b8862a;--amber-glow:#e8a83226;--amber-glow-strong:#e8a8324d;--red:#f87171;--red-dim:#dc2626;--red-glow:#f8717126;--radius:4px;--radius-lg:8px;font-family:var(--ui);color:var(--text);background:var(--bg);font-size:14px;line-height:1.5}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);min-height:100vh;margin:0}body:before{content:"";pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");position:fixed;inset:0}#root{z-index:1;position:relative}.container{max-width:780px;margin:0 auto;padding:0 20px 60px}header{border-bottom:1px solid var(--border);align-items:center;gap:12px;margin-bottom:32px;padding:24px 0 20px;display:flex}.logo{font-family:var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--text-heading);flex:1;font-size:16px;font-weight:600;text-decoration:none}.logo:hover{color:var(--amber);text-decoration:none}.btn-lock{color:var(--text);border-color:var(--border);background:0 0;flex-shrink:0;padding:4px 10px;font-size:11px}.btn-lock:hover{color:var(--red);border-color:var(--red-dim);background:var(--red-glow)}.gate{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.gate-box{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;width:100%;max-width:340px;padding:32px}.gate-box h2{margin-bottom:6px;font-size:16px}.gate-box p{color:var(--text);margin-bottom:20px;font-size:12px}.gate-box form{flex-direction:column;gap:10px;display:flex}.gate-box input{font-family:var(--display);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);color:var(--amber);text-align:center;letter-spacing:.1em;padding:10px 14px;font-size:14px}.gate-box input::placeholder{color:var(--text);font-family:var(--ui);text-transform:uppercase;letter-spacing:.04em;opacity:.5;font-size:12px}.gate-box input:focus{border-color:var(--amber-dim);box-shadow:0 0 0 2px var(--amber-glow);outline:none}.gate-box button{border-color:var(--amber-dim);color:var(--amber);background:linear-gradient(#e8a83226,#e8a8320d);padding:10px}.gate-box button:hover{border-color:var(--amber);box-shadow:0 0 12px var(--amber-glow);background:linear-gradient(#e8a83240,#e8a8321a)}.gate-box .error{margin-bottom:4px}h2{font-family:var(--ui);letter-spacing:.04em;text-transform:uppercase;color:var(--text-heading);margin:0;font-size:18px;font-weight:600}h3{font-family:var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--text);margin:0;font-size:13px;font-weight:600}a{color:var(--amber);text-decoration:none;transition:color .15s}a:hover{color:var(--amber-dim);text-decoration:none}.toolbar{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;margin-bottom:16px;padding:10px 16px;display:flex}.channel-header{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);justify-content:space-between;align-items:flex-start;margin-bottom:28px;padding:20px;display:flex;position:relative;overflow:hidden}.channel-header:before,.channel-header:after{content:"";border-color:var(--border-bright);border-style:solid;width:16px;height:16px;position:absolute}.channel-header:before{border-width:1px 0 0 1px;top:6px;left:6px}.channel-header:after{border-width:0 1px 1px 0;bottom:6px;right:6px}.frequency{font-family:var(--display);color:var(--amber);text-shadow:0 0 8px var(--amber-glow-strong);letter-spacing:.02em;margin-top:6px;font-size:22px}.frequency:after{content:" MHz";color:var(--amber-dim);text-shadow:none;letter-spacing:.05em;text-transform:uppercase;font-size:11px}table{border-collapse:separate;border-spacing:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;overflow:hidden}thead{background:var(--bg-raised)}th{text-align:left;font-family:var(--ui);text-transform:uppercase;letter-spacing:.1em;color:var(--text);border-bottom:1px solid var(--border-bright);padding:10px 16px;font-size:10px;font-weight:600}td{border-bottom:1px solid var(--border);padding:12px 16px;font-size:13px;transition:background .1s}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover{background:var(--amber-glow)}td:first-child{font-family:var(--display);color:var(--text-bright)}td a{color:var(--text-bright);font-weight:500;transition:color .15s}td a:hover{color:var(--amber)}.freq-cell{font-family:var(--display);color:var(--amber);text-shadow:0 0 6px var(--amber-glow);font-size:13px}.actions{text-align:right;white-space:nowrap}.actions button{margin-left:6px}button{font-family:var(--ui);letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--border-bright);border-radius:var(--radius);background:var(--bg-raised);color:var(--text-bright);cursor:pointer;padding:7px 14px;font-size:12px;font-weight:500;transition:all .15s}button:hover{border-color:var(--amber-dim);color:var(--amber);background:var(--amber-glow)}button:active{transform:scale(.97)}button:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-danger{color:var(--red);border-color:#f8717140}.btn-danger:hover{background:var(--red-glow);border-color:var(--red-dim);color:var(--red)}.toolbar>button,.btn-primary{border-color:var(--amber-dim);color:var(--amber);background:linear-gradient(#e8a83226,#e8a8320d)}.toolbar>button:hover,.btn-primary:hover{border-color:var(--amber);color:var(--amber);box-shadow:0 0 12px var(--amber-glow);background:linear-gradient(#e8a83240,#e8a8321a)}.inline-form{background:var(--bg-panel);border:1px solid var(--border-bright);border-left:3px solid var(--amber-dim);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;padding:14px 16px;animation:.2s ease-out fadeIn;display:flex}.inline-form input{font-family:var(--display);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);color:var(--amber);padding:8px 12px;font-size:13px;transition:border-color .15s,box-shadow .15s}.inline-form input::placeholder{color:var(--text);font-family:var(--ui);text-transform:uppercase;letter-spacing:.04em;opacity:.6;font-size:12px}.inline-form input:focus{border-color:var(--amber-dim);box-shadow:0 0 0 2px var(--amber-glow), inset 0 1px 4px #0000004d;outline:none}.inline-form input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.inline-form input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.inline-form input[type=number]{-moz-appearance:textfield}.channel-grid{background:var(--border);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:2px;display:flex;overflow:hidden}.channel-card{background:var(--bg-panel);align-items:center;gap:16px;padding:14px 16px;text-decoration:none;transition:background .15s;animation:.25s ease-out both fadeIn;display:flex}.channel-card:hover{background:var(--amber-glow)}.channel-card .card-freq{font-family:var(--display);color:var(--amber);text-shadow:0 0 8px var(--amber-glow);flex-shrink:0;min-width:100px;font-size:15px}.channel-card .card-name{font-family:var(--ui);color:var(--text-bright);flex:1;font-size:14px;font-weight:500}.channel-card .card-name a{color:var(--text-bright);text-decoration:none}.channel-card .card-name a:hover{color:var(--amber)}.channel-card .actions{flex-shrink:0}.error{color:var(--red);font-family:var(--display);background:var(--red-glow);border-radius:var(--radius);border:1px solid #f8717133;width:100%;padding:8px 12px;font-size:12px}.empty{color:var(--text);text-align:center;letter-spacing:.02em;padding:32px 0;font-size:13px}.loading{color:var(--amber);font-family:var(--display);text-align:center;padding:32px 0;font-size:13px;animation:.3s ease-out fadeIn}.mapping-id{font-family:var(--display);color:var(--amber);text-shadow:0 0 6px var(--amber-glow);font-size:14px}.mapping-name{color:var(--text-bright);font-weight:400}tr.pinned{background:var(--amber-glow);box-shadow:inset 3px 0 0 var(--amber-dim)}tr.pinned:hover{background:var(--amber-glow-strong)}.btn-pin{color:var(--text);border-color:var(--border)}.btn-pin:hover,.btn-pin.active{color:var(--amber);border-color:var(--amber-dim);background:var(--amber-glow)}.search-bar{width:100%;font-family:var(--display);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);color:var(--amber);margin-bottom:16px;padding:9px 14px;font-size:13px;transition:border-color .15s,box-shadow .15s}.search-bar::placeholder{color:var(--text);font-family:var(--ui);text-transform:uppercase;letter-spacing:.04em;opacity:.5;font-size:12px}.search-bar:focus{border-color:var(--amber-dim);box-shadow:0 0 0 2px var(--amber-glow), inset 0 1px 4px #0000004d;outline:none}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}th.sortable:hover,th.sortable.active{color:var(--amber)}.sort-arrow{vertical-align:middle;opacity:.4;margin-left:4px;font-size:8px;display:inline-block}th.sortable.active .sort-arrow{opacity:1;color:var(--amber)}.result-count{font-family:var(--display);color:var(--text);margin-bottom:12px;font-size:11px}.channel-grid-header{background:var(--bg-raised);font-family:var(--ui);text-transform:uppercase;letter-spacing:.1em;color:var(--text);border-bottom:1px solid var(--border-bright);align-items:center;gap:16px;padding:8px 16px;font-size:10px;font-weight:600;display:flex}.channel-grid-header span{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}.channel-grid-header span:hover,.channel-grid-header span.active{color:var(--amber)}.channel-grid-header .col-freq{flex-shrink:0;min-width:100px}.channel-grid-header .col-name{flex:1}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border-bright);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text)}
