:root{--bg-primary:#0a100a;--bg-secondary:#111a0e;--bg-card:#1e3a18;--bg-input:#111a0e;--text-primary:#e8e4dc;--text-secondary:#72797a;--text-muted:#486040;--accent:#5ab81e;--accent-hover:#3a7020;--accent-text:#5ab81e;--success:#5ab81e;--danger:#ef4444;--warning:#c8943a;--border:#1e3a18;--radius:8px;--topbar-height:44px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg-primary);height:100%;color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:400}#app{height:100%}button{cursor:pointer;font-family:inherit;font-size:inherit;border:none}a{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 40%, transparent);text-underline-offset:2px;transition:text-decoration-color .15s,color .15s}a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff;border-radius:var(--radius);padding:8px 16px;font-weight:600;transition:background .2s}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--border);color:var(--text-primary);border-radius:var(--radius);padding:8px 16px;transition:background .2s}.btn-secondary:hover{background:var(--bg-card)}.btn-icon{color:var(--text-secondary);border-radius:var(--radius);background:0 0;justify-content:center;align-items:center;padding:6px;transition:color .2s,background .2s;display:inline-flex}.btn-icon:hover:not(:disabled){color:var(--text-primary);background:#ffffff14}.btn-icon.danger:hover:not(:disabled){color:var(--danger)}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-danger{background:var(--danger);color:#fff;border-radius:var(--radius);padding:4px 12px;font-weight:600;transition:opacity .2s}.btn-danger:disabled{opacity:.4;cursor:not-allowed}.btn-add{width:100%;color:var(--accent-text);border:2px dashed var(--border);border-radius:var(--radius);background:0 0;padding:14px;font-size:1rem;font-weight:600;transition:border-color .2s,color .2s}.btn-add:hover:not(:disabled){border-color:var(--accent-text)}.btn-add:disabled{opacity:.4;cursor:not-allowed;color:var(--text-muted)}.instance-list{max-width:640px;min-height:100%;margin:0 auto;padding:24px 16px}.list-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.brand{align-items:center;gap:8px;display:flex}.brand-logo{flex-shrink:0;width:44px;height:44px;display:block}.list-header h1{color:var(--text-primary);letter-spacing:-.02em;font-size:2.2rem;font-weight:700;line-height:1}.app-footer{flex-direction:column;align-items:center;gap:6px;margin-top:16px;font-size:.75rem;display:flex}.docs-link{color:var(--text-secondary);text-decoration:none;transition:color .2s}.docs-link:hover{color:var(--accent-text)}.version-row{align-items:center;display:inline-flex}.app-version{color:var(--text-muted)}.update-badge{color:var(--accent-text);vertical-align:middle;align-items:center;margin-left:6px;text-decoration:none;display:inline-flex}.update-badge:hover{opacity:.7}.warning-banner{background:var(--bg-secondary);border:1px solid var(--warning);border-radius:var(--radius);color:var(--text-primary);align-items:flex-start;gap:12px;margin-bottom:16px;padding:12px 14px;font-size:.875rem;display:flex}.warning-body{flex:1;line-height:1.4}.warning-body strong{margin-bottom:2px;display:block}.warning-body a{color:var(--warning);text-decoration:underline}.empty-state{text-align:center;color:var(--text-muted);padding:48px 16px}.empty-state p{margin-bottom:8px}.card-grid{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.card-column{display:contents}.add-section{margin-top:8px}.instance-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px;transition:border-color .2s}.instance-card.status-online{border-left:3px solid var(--success)}.instance-card.status-offline{border-left:3px solid var(--danger)}.instance-card.status-probing,.instance-card.status-blocked,.instance-card.status-cors{border-left:3px solid var(--warning)}.instance-card.status-unknown{border-left:3px solid var(--text-muted)}.card-header{align-items:center;gap:10px;margin-bottom:6px;display:flex}.card-header h3{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:1.1rem;font-weight:600;overflow:hidden}.power-off{margin-left:auto;flex-shrink:0;align-items:center;margin-block:-6px;display:flex}.power-confirm{align-items:center;gap:4px;display:flex}.status-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.status-online .status-dot{background:var(--success);box-shadow:0 0 6px var(--success)}.status-offline .status-dot{background:var(--danger)}.status-probing .status-dot{background:var(--warning);animation:1s ease-in-out infinite pulse}.status-blocked .status-dot,.status-cors .status-dot{background:var(--warning)}.status-unknown .status-dot{background:var(--text-muted)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.card-info{color:var(--text-secondary);margin-bottom:4px}.card-address{color:var(--text-muted);margin-bottom:12px}.card-address:has(+.card-status-message){margin-bottom:4px}.card-status-message{color:var(--danger);margin-bottom:12px}.card-status-message.warn{color:var(--warning)}.card-status-message a{color:inherit;text-decoration:underline}.card-actions{align-items:center;gap:8px;display:flex}.card-actions .btn-primary{flex:1}.now-playing{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;margin-bottom:14px;padding:10px;display:flex}.np-header{letter-spacing:.04em;color:var(--text-secondary);justify-content:center;align-items:center;gap:6px;font-size:.72rem;font-weight:600;display:flex}.np-eq{align-items:flex-end;gap:2px;height:10px;display:inline-flex}.np-eq span{background:var(--accent);border-radius:1px;width:2px}.np-eq span:first-child{height:6px}.np-eq span:nth-child(2){height:10px}.np-eq span:nth-child(3){height:4px}.np-tabs{justify-content:center;gap:6px;display:flex}.np-tab{min-width:0;min-height:36px;color:var(--text-secondary);border:1px solid var(--border);background:0 0;border-radius:18px;align-items:center;gap:6px;padding:0 12px;font-size:.8rem;transition:background .2s,color .2s;display:inline-flex}.np-tab[aria-selected=true]{background:var(--border);color:var(--text-primary);font-weight:600}.np-tab>svg,.np-dot{flex-shrink:0}.np-dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.np-header{min-width:0}.np-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.np-body{align-items:center;gap:12px;display:flex}.np-cover{object-fit:cover;border-radius:6px;flex-shrink:0;width:64px;height:64px;transition:opacity .2s;display:block}.np-cover.paused{opacity:.6}.np-cover-btn{cursor:zoom-in;background:0 0;border-radius:6px;flex-shrink:0;padding:0}.np-zoom{cursor:zoom-out;background:0 0;border:none;max-width:100vw;max-height:100vh;margin:auto;padding:0}.np-zoom::backdrop{background:#000000d9}.np-zoom img{border-radius:var(--radius);width:min(90vw,90vh,640px);height:auto;display:block}.np-cover.placeholder{background:var(--bg-secondary);color:var(--text-muted);justify-content:center;align-items:center;display:flex}.np-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.np-title,.np-artist,.np-album{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.np-title{font-size:.98rem;font-weight:600}.np-artist{color:color-mix(in srgb, var(--text-primary) 75%, var(--bg-primary));font-size:.85rem}.np-album{color:var(--text-secondary);font-size:.8rem}.np-progress{color:var(--text-secondary);font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:.72rem;display:flex}.np-bar{background:var(--border);border-radius:2px;flex:1;height:4px;overflow:hidden}.np-bar-fill{background:var(--accent);height:100%}.np-bar-fill.paused{background:var(--text-secondary)}.np-controls{justify-content:center;align-items:center;gap:12px;display:flex}.np-btn{border-radius:var(--radius);width:44px;height:44px;color:var(--text-primary);background:0 0;justify-content:center;align-items:center;transition:background .2s,color .2s;display:inline-flex}.np-btn:hover:not(:disabled){background:#ffffff14}.np-btn:disabled{opacity:.3;cursor:not-allowed}.np-btn.primary{background:var(--accent);color:var(--bg-primary);border-radius:50%}.np-btn.primary:hover:not(:disabled){background:var(--accent-hover)}.np-btn.primary.paused{color:var(--accent);border:2px solid var(--accent);background:0 0}.add-form{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.add-form h3{margin-bottom:16px;font-size:1.1rem}.add-form label{margin-bottom:12px;display:block}.add-form label span{color:var(--text-secondary);margin-bottom:4px;font-size:.85rem;display:block}.add-form input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text-primary);outline:none;padding:10px 12px;font-family:inherit;font-size:1rem;transition:border-color .2s}.add-form input:focus{border-color:var(--accent)}.add-form input::placeholder{color:var(--text-muted)}.form-actions{gap:8px;margin-top:16px;display:flex}.instance-view{flex-direction:column;height:100dvh;display:flex}.top-bar{height:var(--topbar-height);background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:0 8px;display:flex}.current-name{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.95rem;font-weight:600;overflow:hidden}.switcher-wrapper{position:relative}.btn-switch{color:var(--text-secondary);border-radius:var(--radius);background:0 0;align-items:center;padding:6px;transition:color .2s;display:inline-flex}.btn-switch:hover{color:var(--text-primary)}.switcher-backdrop{z-index:10;position:fixed;inset:0}.switcher-dropdown{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);z-index:11;min-width:180px;margin-top:4px;position:absolute;top:100%;right:0;overflow:hidden}.switcher-dropdown button{text-align:left;width:100%;color:var(--text-primary);background:0 0;padding:10px 14px;font-size:.9rem;transition:background .15s;display:block}.switcher-dropdown button:hover{background:#ffffff14}.instance-iframe{border:none;flex:1;width:100%}.btn-save-instance{background:var(--accent);color:#fff;border-radius:var(--radius);align-items:center;gap:6px;padding:6px 12px;font-size:.85rem;font-weight:600;transition:background .2s;display:inline-flex}.btn-save-instance:hover{background:var(--accent-hover)}.save-prompt-backdrop{z-index:20;background:#00000080;position:fixed;inset:0}.save-prompt{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);z-index:21;width:min(360px,100vw - 32px);padding:20px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #00000080}.save-prompt h3{margin-bottom:8px;font-size:1.05rem}.save-prompt p{color:var(--text-secondary);margin-bottom:16px;font-size:.9rem;line-height:1.4}.save-prompt-actions{flex-wrap:wrap;gap:8px;display:flex}.save-prompt-actions .btn-primary{flex:1;min-width:90px}.pwa-toast{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);z-index:100;align-items:center;gap:12px;padding:12px 16px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 24px #0006}.pwa-toast span{font-size:.9rem}@media (width>=768px){.instance-list{max-width:800px;padding:32px 24px}.card-grid{flex-direction:row;align-items:flex-start;gap:16px}.card-column{flex-direction:column;flex:1;gap:16px;min-width:0;display:flex}}.status-screen{background:var(--bg-primary);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;padding:24px;display:flex}.status-screen-icon{color:var(--accent);margin-bottom:4px}.status-screen-title{color:var(--text-primary);font-size:1.2rem;font-weight:700}.status-screen-body{color:var(--text-secondary);font-size:.9rem}.status-screen-actions{flex-direction:column;gap:8px;width:200px;margin-top:4px;display:flex}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:1.5s linear infinite spin}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
