*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-card: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--accent: #22c55e;--accent-hover: #16a34a;--danger: #ef4444;--warning: #eab308;--border: #475569;--radius: 8px}html,body,#root{height:100%;width:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased}.login-container{display:flex;align-items:center;justify-content:center;height:100%;padding:16px}.login-form{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:32px 24px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px}.login-form h1{text-align:center;font-size:1.5rem;color:var(--accent)}.login-subtitle{text-align:center;color:var(--text-secondary);font-size:.875rem;margin-bottom:8px}.login-form label{font-size:.875rem;color:var(--text-secondary)}.login-form input{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;color:var(--text-primary);font-size:1rem;outline:none;transition:border-color .2s}.login-form input:focus{border-color:var(--accent)}.login-form button{background:var(--accent);color:var(--bg-primary);border:none;border-radius:var(--radius);padding:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s;margin-top:8px}.login-form button:hover:not(:disabled){background:var(--accent-hover)}.login-form button:disabled{opacity:.6;cursor:not-allowed}.error-message{background:#ef444426;color:var(--danger);border:1px solid var(--danger);border-radius:var(--radius);padding:10px 12px;font-size:.875rem;text-align:center}.dashboard{max-width:480px;margin:0 auto;padding:24px 16px;display:flex;flex-direction:column;gap:20px;min-height:100%}.dashboard-header{display:flex;justify-content:space-between;align-items:center}.dashboard-header h1{font-size:1.25rem;color:var(--accent)}.btn-logout{background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:6px 14px;font-size:.8rem;cursor:pointer;transition:all .2s}.btn-logout:hover{color:var(--danger);border-color:var(--danger)}.status-badge{text-align:center;padding:12px;border-radius:var(--radius);font-size:.9rem;font-weight:500}.status-idle{background:#94a3b826;color:var(--text-secondary)}.status-loading{background:#eab30826;color:var(--warning)}.status-ok{background:#22c55e26;color:var(--accent)}.status-error{background:#ef444426;color:var(--danger)}.status-warning{background:#eab30826;color:var(--warning)}.coords-box{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:4px}.coords-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.coords-value{font-size:1.1rem;font-family:SF Mono,Fira Code,monospace;color:var(--text-primary)}.coords-link{font-size:.85rem;color:var(--accent);text-decoration:none;margin-top:4px}.coords-link:hover{text-decoration:underline}.next-run{text-align:center;font-size:1.5rem;color:var(--text-primary);line-height:1.6}.next-run strong{font-size:2rem;color:var(--accent);font-variant-numeric:tabular-nums}.btn-send-now{background:var(--accent);color:var(--bg-primary);border:none;border-radius:var(--radius);padding:14px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-send-now:hover:not(:disabled){background:var(--accent-hover)}.btn-send-now:disabled{opacity:.6;cursor:not-allowed}.last-sent,.history{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.last-sent h3,.history h3{font-size:.85rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.last-sent p,.history li{font-size:.85rem;color:var(--text-primary);font-family:SF Mono,Fira Code,monospace}.history ul{list-style:none;display:flex;flex-direction:column;gap:6px;max-height:200px;overflow-y:auto}.history li{padding:4px 0;border-bottom:1px solid var(--border)}.history li:last-child{border-bottom:none}
