:root{--bg: #0e1116;--bg-elev: #161b22;--bg-elev-2: #1f2630;--border: #2a3340;--text: #e6edf3;--text-muted: #8b949e;--accent: #4f8cff;--accent-hover: #2f6dff;--danger: #ff5c5c;--success: #4ade80;--radius: 10px;--shadow: 0 8px 32px rgba(0, 0, 0, .45);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Ubuntu,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.brand{display:flex;align-items:center;gap:10px}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;background:var(--accent);color:#fff;font-weight:700;border-radius:8px}.brand-name{font-size:1.05rem;font-weight:600}.brand-link{color:var(--text-muted);text-decoration:none;font-size:.9rem}.brand-link:hover{color:var(--text)}.page{flex:1 1 auto;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px}.card{width:100%;max-width:520px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px 28px 24px}.card-title{margin:0 0 4px;font-size:1.35rem;font-weight:600}.card-sub{margin:0 0 20px;color:var(--text-muted);font-size:.95rem}.connect-form{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.82rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.field-input{background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:12px 14px;font-size:1rem;outline:none;transition:border-color .15s,box-shadow .15s;width:100%}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4f8cff2e}.field-input.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:.85rem}.id-input{font-size:1.5rem;letter-spacing:.05em;text-align:center;padding:16px 14px}.primary-btn,.secondary-btn{border:0;border-radius:8px;padding:12px 18px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s}.primary-btn{background:var(--accent);color:#fff}.primary-btn:hover{background:var(--accent-hover)}.primary-btn:active{transform:scale(.98)}.secondary-btn{background:var(--bg-elev-2);color:var(--text);border:1px solid var(--border)}.secondary-btn:hover{background:#2a3340}.advanced{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;padding:0 14px}.advanced[open]{padding:14px 14px 18px}.advanced summary{list-style:none;cursor:pointer;color:var(--text-muted);font-size:.9rem;padding:12px 0;user-select:none}.advanced summary::-webkit-details-marker{display:none}.advanced summary:before{content:"\25b8  ";display:inline-block}.advanced[open] summary:before{content:"\25be  "}.advanced .field{margin-top:12px}.hint{font-size:.8rem;color:var(--text-muted);margin:8px 0 0}#recent{margin-top:24px}.section-label{font-size:.82rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.peer-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.peer-card{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:8px;cursor:pointer;transition:border-color .15s}.peer-card:hover,.peer-card:focus{border-color:var(--accent);outline:none}.peer-id{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:.95rem}.peer-connect{background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:6px 10px;font-size:.85rem;cursor:pointer}.peer-connect:hover{background:rgba(79,140,255,.1)}.modal{position:fixed;inset:0;background:rgba(8,11,16,.72);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:100}.modal-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px;width:100%;max-width:420px;display:flex;flex-direction:column;gap:14px}.modal-card h2{margin:0;font-size:1.2rem;font-weight:600}.modal-actions{display:flex;gap:8px;justify-content:flex-end}.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.status-text{text-align:center;color:var(--text);line-height:1.5}.status-error strong{color:var(--danger)}.canvas-frame{position:fixed;inset:0;background:#000;z-index:50;display:flex;flex-direction:column}.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--bg-elev);border-bottom:1px solid var(--border)}.canvas-title{color:var(--text);font-size:.95rem}#player{flex:1 1 auto;max-width:100%;max-height:100%;object-fit:contain;background:#000}.footer{border-top:1px solid var(--border);padding:14px 24px;text-align:center;color:var(--text-muted);font-size:.85rem;background:var(--bg-elev)}.footer a{color:var(--text-muted)}.footer a:hover{color:var(--text)}@media (max-width: 600px){.topbar{padding:12px 16px}.page{padding:24px 12px}.card{padding:20px 18px}.id-input{font-size:1.25rem}}
