*{box-sizing:border-box}body{margin:0;background:#111827;color:#f9fafb;font:17px system-ui,sans-serif}main{max-width:520px;margin:auto;padding:20px 16px 36px}h1{font-size:1.55rem;font-weight:800;margin:8px 0 14px;text-align:center;line-height:1.18}h1 span{display:block}h1 span:first-child{font-weight:900}.card,header,.stream-card{background:#1f2937;border-radius:16px;padding:18px;margin-bottom:16px}.login{margin-top:8vh}.login label{display:block;margin-bottom:9px}.login-input{display:block;width:100%;min-height:58px;font-size:18px;color:#111827;background:#fff;padding:14px;border:3px solid #93c5fd;border-radius:10px;appearance:auto;-webkit-appearance:auto;touch-action:manipulation}.login-input:focus{outline:4px solid #2563eb;outline-offset:2px}input{font:inherit;padding:13px;border-radius:9px;border:1px solid #64748b}button{width:100%;min-height:64px;border:0;border-radius:14px;font:bold 1.15rem system-ui;color:white;background:#374151;margin-top:14px;touch-action:manipulation}.control{padding:18px;margin:14px 0;background:#1f2937;border:3px solid #64748b}.control.on{background:#166534;border-color:#4ade80}.control.off{background:#7f1d1d;border-color:#f87171}.control.unknown,.control:disabled{background:#374151;border-color:#6b7280;color:#d1d5db}.control:disabled{opacity:.72}.sub{display:block;font-size:.8rem;font-weight:normal;margin-top:5px}.conn{font-weight:700}.conn.ok{color:#4ade80}.conn.bad{color:#f87171}.conn.unknown,small{color:#cbd5e1}.stream-card h2{margin:0 0 4px;font-size:1.2rem}.stream-card p{margin:0 0 12px;color:#cbd5e1;font-size:.9rem}.stream-card iframe{display:block;width:100%;height:190px;border:0;border-radius:10px;background:#0b1020}.logout{min-height:45px;background:#4b5563;font-size:.95rem}.error{color:#fca5a5;min-height:1.3em}@media(max-width:360px){main{padding:12px}h1{font-size:1.3rem}.stream-card iframe{height:170px}}#controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:14px 0}.control{min-width:0;min-height:82px;margin:0;padding:12px 5px;font-size:1rem}.control .sub{font-size:.72rem;overflow-wrap:anywhere}#spare{grid-column:1/-1;min-height:62px;margin-top:1px}@media(max-width:360px){#controls{gap:6px}.control{padding:10px 3px;font-size:.9rem}.control .sub{font-size:.66rem}}