*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#0f1117;color:#e8eaed;min-height:100vh}.page{min-height:100vh}.login-page{display:flex;align-items:center;justify-content:center;padding:2rem}.card{background:#1a1d27;border:1px solid #2d3148;border-radius:12px;padding:2.5rem;width:100%;max-width:400px}.card h1{font-size:1.75rem;margin-bottom:0}.brand{display:flex;flex-direction:column;align-items:center;margin-bottom:.5rem}.brand-logo{width:80px;height:80px;margin-bottom:.75rem;border-radius:12px}.toolbar-logo{width:32px;height:32px;border-radius:6px}.subtitle{color:#9aa0b4;margin-bottom:2rem;font-size:.95rem}label{display:block;font-size:.85rem;color:#9aa0b4;margin-bottom:.5rem}input{width:100%;padding:.75rem 1rem;font-size:1rem;letter-spacing:normal;text-align:left;background:#0f1117;border:1px solid #2d3148;border-radius:8px;color:#e8eaed;margin-bottom:1rem}input[type=text]#code{font-size:1.5rem;letter-spacing:.3em;text-align:center}.hint-text{margin-top:1rem;font-size:.75rem;color:#666;text-align:center}.download-box{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid #2d3148;text-align:center}.platforms-label{color:#9aa0b4;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;margin:0 0 1rem}.platforms-badges{display:flex;justify-content:center;align-items:center;gap:.75rem;flex-wrap:wrap}.store-badge-img{height:44px;width:auto;display:block;transition:transform .2s,opacity .2s}.platforms-badges a:hover .store-badge-img{transform:translateY(-3px);opacity:.88}.download-hint{margin:.85rem 0 0;font-size:.72rem;color:#666;text-align:center;line-height:1.4}.btn-secondary{background:#2d3148!important;margin-top:.5rem}.toolbar-right{display:flex;gap:.75rem;align-items:center}.btn-file{width:auto;padding:.5rem 1rem;font-size:.85rem;background:#22c55e;color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer}.btn-file:disabled{opacity:.4;cursor:not-allowed}.file-bar{background:#1a1d27;border-bottom:1px solid #2d3148;padding:.5rem 1.25rem;font-size:.85rem;color:#86efac}input:focus{outline:none;border-color:#4f8cff}button{width:100%;padding:.75rem;background:#4f8cff;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer}button:hover:not(:disabled){background:#3a7aef}button:disabled{opacity:.5;cursor:not-allowed}.status{margin-top:1rem;font-size:.85rem;color:#9aa0b4;text-align:center}.session-page{display:flex;flex-direction:column;height:100vh}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;background:#1a1d27;border-bottom:1px solid #2d3148}.toolbar-left{display:flex;align-items:center;gap:1rem}.badge{background:#2d3148;padding:.25rem .75rem;border-radius:999px;font-size:.85rem;font-family:monospace}.status-dot{width:8px;height:8px;border-radius:50%;background:#666}.status-dot.online{background:#34d399}.status-text{font-size:.85rem;color:#9aa0b4}.btn-danger{width:auto;background:#ef4444;padding:.5rem 1rem;font-size:.85rem}.btn-danger:hover{background:#dc2626}.remote-viewport{flex:1;position:relative;background:#000;overflow:hidden;cursor:crosshair;outline:none}.remote-viewport video{width:100%;height:100%;object-fit:contain}.remote-viewport:focus{outline:2px solid #4f8cff;outline-offset:-2px}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#000000b3;color:#9aa0b4;font-size:1.1rem}.dashboard-page{display:grid;grid-template-columns:320px 1fr;min-height:100vh}.sessions-sidebar{background:#1a1d27;border-right:1px solid #2d3148;padding:1.25rem;display:flex;flex-direction:column;gap:.65rem;overflow-y:auto}.sidebar-brand{display:flex;gap:.75rem;align-items:center;margin-bottom:.5rem}.brand-logo-sm{width:44px;height:44px;border-radius:10px}.sidebar-user{font-size:.8rem;color:#9aa0b4;margin-top:.15rem}.sidebar-sessions{margin-top:.75rem;flex:1;min-height:0}.sessions-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.sessions-header h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:#9aa0b4}.sessions-count{font-size:.75rem;background:#2d3148;padding:.1rem .45rem;border-radius:999px}.sessions-empty{font-size:.78rem;color:#666;line-height:1.45}.sessions-list{list-style:none;display:flex;flex-direction:column;gap:.45rem;max-height:calc(100vh - 340px);overflow-y:auto}.sessions-list li{display:flex;gap:.35rem;align-items:stretch}.session-card{flex:1;text-align:left;background:#0f1117;border:1px solid #2d3148;border-radius:10px;padding:.6rem .7rem;color:inherit;cursor:pointer}.session-card.active{border-color:#4f8cff;background:#141927}.session-code{display:block;font-family:monospace;font-size:1rem;font-weight:700;color:#4f8cff;letter-spacing:.12em}.session-badge{display:inline-block;margin-top:.25rem;font-size:.62rem;font-weight:700;text-transform:uppercase;padding:.12rem .4rem;border-radius:999px}.session-badge.status-connected{background:#14532d;color:#86efac}.session-badge.status-waiting_client{background:#78350f;color:#fcd34d}.session-badge.status-connecting{background:#1e3a5f;color:#93c5fd}.session-badge.status-rejected,.session-badge.status-error{background:#3b1f1f;color:#fca5a5}.session-badge.status-closed{background:#2d3148;color:#9aa0b4}.session-detail{display:block;margin-top:.35rem;font-size:.68rem;color:#9aa0b4;line-height:1.3}.session-close{width:2rem;flex-shrink:0;background:#2d3148;border:none;border-radius:8px;color:#e8eaed;font-size:1.1rem;cursor:pointer}.dashboard-main{display:flex;flex-direction:column;min-height:100vh;min-width:0}.dashboard-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;color:#9aa0b4}.dashboard-placeholder h2{color:#e8eaed;margin-bottom:.75rem}@media(max-width:900px){.dashboard-page{grid-template-columns:1fr;grid-template-rows:auto 1fr}.sessions-sidebar{border-right:none;border-bottom:1px solid #2d3148;max-height:42vh}}.btn-admin{background:#6366f1!important;margin-top:.35rem}.admin-page{max-width:1200px;margin:0 auto;padding:1.5rem}.admin-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.admin-header h1{font-size:1.5rem}.admin-subtitle{color:#9aa0b4;font-size:.9rem;margin-top:.25rem}.admin-tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.admin-tabs button{width:auto;padding:.5rem 1rem;font-size:.85rem;background:#2d3148}.admin-tabs button.active{background:#4f8cff}.btn-refresh{margin-left:auto;background:#1a1d27!important;border:1px solid #2d3148}.btn-inline{width:auto;padding:.55rem 1rem;font-size:.85rem}.admin-status{color:#9aa0b4;font-size:.85rem;margin-bottom:1rem}.admin-content{display:flex;flex-direction:column;gap:1.25rem}.admin-card{background:#1a1d27;border:1px solid #2d3148;border-radius:12px;padding:1.25rem}.admin-card h2{font-size:1rem;margin-bottom:1rem}.admin-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;margin-bottom:1rem}.admin-form-grid select{width:100%;padding:.75rem 1rem;font-size:1rem;background:#0f1117;border:1px solid #2d3148;border-radius:8px;color:#e8eaed;margin-bottom:1rem}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}.admin-table th,.admin-table td{text-align:left;padding:.65rem .75rem;border-bottom:1px solid #2d3148;vertical-align:top}.admin-table th{color:#9aa0b4;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.admin-table .mono{font-family:monospace;color:#4f8cff;letter-spacing:.08em}.agent-name{display:block;font-weight:600}.agent-email{display:block;font-size:.75rem;color:#9aa0b4}.role-badge{display:inline-block;padding:.15rem .45rem;border-radius:999px;font-size:.7rem;font-weight:700}.role-badge.role-admin{background:#312e81;color:#c4b5fd}.role-badge.role-technician{background:#1e3a5f;color:#93c5fd}.text-active{color:#86efac}.text-inactive{color:#fca5a5}.btn-table{width:auto;padding:.35rem .65rem;font-size:.75rem;background:#2d3148}.log-status{display:inline-block;padding:.15rem .45rem;border-radius:999px;font-size:.68rem;font-weight:700}.log-status.status-pending_approval{background:#78350f;color:#fcd34d}.log-status.status-connected{background:#14532d;color:#86efac}.log-status.status-rejected{background:#3b1f1f;color:#fca5a5}.log-status.status-closed{background:#2d3148;color:#9aa0b4}.empty-row{text-align:center;color:#666;padding:2rem!important}
