@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Spline+Sans+Mono:wght@400;500&display=swap";:root{--font-sans:"Space Grotesk", "Helvetica Neue", Arial, sans-serif;--font-mono:"Spline Sans Mono", "SFMono-Regular", Menlo, monospace;--bg-0:#f7f3ea;--bg-1:#e7f4f2;--card:#ffffffe0;--ink:#102a2a;--muted:#5a6a6a;--accent:#0f766e;--accent-strong:#0b4f49;--accent-2:#e07a5f;--border:#d5e3df;--shadow:0 30px 60px -45px #102a2a99;--radius:18px;--button-height:36px}*,:before,:after{box-sizing:border-box}body{min-height:100vh;font-family:var(--font-sans);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%, #0f766e26, transparent 60%), radial-gradient(1200px 700px at 90% -20%, #e07a5f2e, transparent 55%), linear-gradient(160deg, var(--bg-0), var(--bg-1));margin:0}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-strong)}.page{max-width:1200px;margin:0 auto;padding:36px 24px 80px}.hero{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:28px;display:flex}.hero h1{letter-spacing:-.02em;margin:8px 0 0;font-size:clamp(1.9rem,3.2vw,2.8rem)}.hero p{color:var(--muted);max-width:640px;margin:8px 0 0}.pill{letter-spacing:.12em;text-transform:uppercase;background:var(--accent);color:#fff;border-radius:999px;padding:6px 10px;font-size:.72rem;display:inline-block}.control-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;display:grid}.subscriber-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.card{border-radius:var(--radius);border:1px solid var(--border);background:var(--card);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:20px 22px}.link-card{color:inherit;text-decoration:none;transition:transform .18s,box-shadow .18s;display:block}.link-card:hover{transform:translateY(-2px);box-shadow:0 30px 60px -45px #102a2ab3}.link-card p{color:var(--muted);margin:8px 0 0}.card.full{grid-column:1/-1}.stack{flex-direction:column;gap:12px;height:100%;display:flex}.stack br{display:none}h2,h3,h4{letter-spacing:-.01em;margin:0 0 6px}.card-title-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.card-title-row>h2,.card-title-row>h3,.card-title-row>h4{margin:0}.card-title-actions{align-items:center;gap:8px;display:inline-flex}.hint{color:var(--muted);margin:0;font-size:.9rem}label{color:var(--ink);flex-wrap:wrap;align-items:center;gap:8px;font-weight:600;display:flex}input[type=text],input[type=url],input[type=number],select{border:1px solid var(--border);width:100%;max-width:520px;font-family:var(--font-sans);color:var(--ink);background:#fff;border-radius:12px;outline:none;padding:10px 12px;font-size:.95rem;transition:border-color .2s,box-shadow .2s}label input[type=text],label input[type=url],label input[type=number],label select{flex:220px;width:auto;max-width:none}input[type=text]:focus,input[type=url]:focus,input[type=number]:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring,#0f766e33)}input[type=radio]{accent-color:var(--accent)}button{min-height:var(--button-height);white-space:nowrap;background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;padding:0 16px;font-weight:600;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex;box-shadow:0 10px 22px -14px #0f766ecc}button:hover{background:var(--accent-strong);transform:translateY(-1px)}#closeBtn{background:var(--accent-2);box-shadow:0 10px 22px -14px #e07a5fb3}#closeBtn:hover{background:#c7664f}button:active{transform:translateY(0)}.preset-bar{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:.85rem;display:flex}.preset-bar button{min-height:var(--button-height);color:var(--accent);border:1px dashed var(--border);box-shadow:none;background:#fff;border-radius:999px;padding:0 12px;font-weight:500}.preset-bar button:hover{color:var(--accent-strong);background:#0f766e1a}.button-row{flex-wrap:wrap;gap:10px;display:flex}.action-row{justify-content:flex-start;align-items:flex-end;margin-top:auto}.compact-button{min-height:var(--button-height);place-self:start;width:fit-content;padding:0 12px;font-size:.82rem;line-height:1.1;box-shadow:0 6px 14px -10px #0f766eb3}.mode-toggle-button{color:var(--accent);border:1px solid var(--border);box-shadow:none;background:#fff;border-radius:10px}.mode-toggle-button:hover{color:var(--accent-strong);background:#0f766e1a}.mode-toggle-button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.icon-button{width:34px;min-width:34px;height:34px;min-height:34px;color:var(--accent);border:1px solid var(--border);box-shadow:none;background:#fff;border-radius:10px;flex:none;padding:0}.icon-button svg{stroke:currentColor;fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;width:17px;height:17px}.icon-button:hover{color:var(--accent-strong);background:#0f766e1a}.icon-button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.visualizer-panel{font-family:var(--font-mono);border:1px solid var(--border);background:#102a2a0a;border-radius:12px;padding:10px 12px;font-size:.85rem;display:none}.visualizer-panel.is-visible{display:block}.visualizer-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.visualizer-card{border:1px solid var(--border);background:#ffffffb8;border-radius:10px;padding:10px}.visualizer-card h3{color:var(--accent-strong);letter-spacing:.02em;text-transform:uppercase;margin:0 0 8px;font-size:.86rem}.visualizer-table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:.8rem}.visualizer-table th,.visualizer-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:6px 7px}.visualizer-table thead th{color:var(--muted);font-weight:600}.visualizer-table tbody th{color:var(--ink);font-weight:600}.visualizer-table tbody tr:last-child th,.visualizer-table tbody tr:last-child td{border-bottom:none}.field-row{flex-wrap:wrap;gap:12px;display:flex}.field-row>label{flex:220px}.inline-fields>label{flex-wrap:nowrap;align-items:center}.inline-fields>label input[type=text]{flex:140px}.subscribe-split{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.subscribe-panel{border:1px solid var(--border);background:#ffffffb3;border-radius:14px;padding:14px}.status-list{gap:10px;display:grid}.status-item{border:1px solid var(--border);background:#102a2a0a;border-radius:12px;gap:4px;padding:10px 12px;display:grid}.status-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:.72rem}.status-value{font-family:var(--font-mono);color:var(--ink);font-size:.86rem;line-height:1.4}video,audio{border:1px solid var(--border);background:#0c1111;border-radius:16px;width:100%}audio{background:#fff;padding:6px}.media-grid{gap:12px;display:grid}.playback-panel{border:1px solid var(--border);background:#ffffffb3;border-radius:14px;padding:14px}.playback-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;font-size:.9rem;display:flex}.playback-meta span{font-family:var(--font-mono);color:var(--muted)}#logPanel{border:1px solid var(--border);max-height:260px;font-family:var(--font-mono);background:#102a2a0a;border-radius:12px;padding:12px;font-size:.82rem;line-height:1.4;overflow:auto}.log-entry{color:var(--muted);margin:0 0 6px}.log-entry strong{color:var(--ink)}.log-entry.log-warn strong{color:#b45309}.log-entry.log-error strong{color:#dc2626}@media (width<=720px){.subscriber-grid{grid-template-columns:1fr}.inline-fields>label{flex-wrap:wrap}.subscribe-split{grid-template-columns:1fr}.page{padding:28px 18px 60px}.hero{align-items:flex-start}button{justify-content:center;width:100%}.compact-button{width:auto}.icon-button{width:34px}.visualizer-cards{grid-template-columns:1fr}}.status-dot{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.status-dot:before{content:"";background:var(--dot,#9ca3af);border-radius:50%;flex:none;width:8px;height:8px}.status-dot[data-state=ok]{--dot:#16a34a}.status-dot[data-state=review]{--dot:#d97706}.status-dot[data-state=error]{--dot:#dc2626;color:#b91c1c}
