* { box-sizing: border-box; } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #0f172a; color: #e2e8f0; padding: 16px; } header { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; } header h1 { margin: 0; font-size: 20px; font-weight: 600; } .connection { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } .connection input { flex: 1; min-width: 220px; padding: 8px 10px; background: #1e293b; border: 1px solid #334155; border-radius: 6px; color: #e2e8f0; font-family: monospace; } button { padding: 8px 14px; border: 1px solid #334155; background: #1e293b; color: #e2e8f0; border-radius: 6px; cursor: pointer; font-weight: 500; } button:hover { background: #334155; } button.primary { background: #2563eb; border-color: #2563eb; } button.primary:hover { background: #1d4ed8; } .status { padding: 4px 10px; border-radius: 99px; font-size: 12px; font-weight: 600; text-transform: uppercase; } .status.online { background: #14532d; color: #86efac; } .status.offline { background: #7f1d1d; color: #fca5a5; } .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; } @media (max-width: 720px) { .grid { grid-template-columns: 1fr; } } .lane { background: #1e293b; border: 1px solid #334155; border-radius: 10px; padding: 12px; } .lane h2 { margin: 0 0 10px; font-size: 14px; text-transform: uppercase; letter-spacing: 1px; color: #94a3b8; } .button-card { background: #0f172a; border: 1px solid #334155; border-radius: 8px; padding: 10px; margin-bottom: 10px; } .button-card:last-child { margin-bottom: 0; } .button-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; } .role { font-weight: 700; font-size: 13px; min-width: 60px; } .mac { flex: 1; padding: 6px 8px; font-family: monospace; font-size: 12px; background: #1e293b; border: 1px solid #334155; border-radius: 4px; color: #e2e8f0; } .press { width: 100%; padding: 16px; font-size: 18px; font-weight: 700; letter-spacing: 2px; margin-bottom: 8px; } .press-start { background: #166534; border-color: #166534; } .press-start:hover { background: #15803d; } .press-stop { background: #991b1b; border-color: #991b1b; } .press-stop:hover { background: #b91c1c; } .press:active { transform: scale(0.98); } .battery label { display: block; font-size: 12px; color: #94a3b8; margin-bottom: 4px; } .battery input[type="range"] { width: 100%; } .controls { background: #1e293b; border: 1px solid #334155; border-radius: 10px; padding: 12px; display: flex; gap: 16px; align-items: center; flex-wrap: wrap; margin-bottom: 16px; } .controls label { font-size: 13px; display: flex; align-items: center; gap: 6px; } .controls input[type="number"] { width: 80px; padding: 6px 8px; background: #0f172a; border: 1px solid #334155; border-radius: 4px; color: #e2e8f0; } .log-wrap { background: #1e293b; border: 1px solid #334155; border-radius: 10px; padding: 12px; } .log-wrap h3 { margin: 0 0 8px; font-size: 13px; color: #94a3b8; } #log { margin: 0; max-height: 260px; overflow-y: auto; font-family: monospace; font-size: 11px; white-space: pre-wrap; color: #cbd5e1; }