:root{
  --bg:#16181b;
  --panel:#1e2126;
  --field:#252a31;
  --line:#2f353d;
  --ink:#e9ebee;
  --dim:#8d949d;
  --dimmer:#666d76;
  --rec:#ff3b30;
  --sans:"Helvetica Neue",Helvetica,Arial,system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  width:400px;background:var(--bg);color:var(--ink);
  font:400 13px/1.45 var(--sans);-webkit-font-smoothing:antialiased;
}
button,input,select,output{font:inherit;color:inherit}
:focus-visible{outline:2px solid #6ea8fe;outline-offset:2px}

/* header */
#top{
  display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:10px;
  padding:12px 14px 0;
}
#version{
  font:500 12px/1 var(--mono);color:var(--dim);
  background:var(--field);border:1px solid var(--line);border-radius:4px;padding:4px 7px;
}
#logo{height:22px;width:22px;display:block;border-radius:5px}
#tabs{display:flex;justify-self:end;gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:2px}
#tabs button{background:transparent;border:0;border-radius:4px;padding:5px 9px;font-size:12px;color:var(--dim);cursor:pointer}
#tabs button[aria-pressed=true]{background:#333a44;color:var(--ink)}

/* views */
.view{padding:12px 14px 6px}

#target{
  background:var(--panel);border:1px solid var(--line);border-radius:7px;
  padding:9px 11px;margin-bottom:14px;display:grid;gap:2px;
}
#targetTitle{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#targetHost{font:11.5px/1.3 var(--mono);color:var(--dimmer);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#target.blocked{border-color:#5c3a3a}
#target.blocked #targetHost{color:#e08a84}

.group{margin-bottom:15px}
.group h2{margin:0 0 9px;font-size:11.5px;font-weight:600;color:var(--dim)}

.row{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.row:last-child{margin-bottom:0}
.row>label{flex:0 0 74px;color:var(--dim);font-size:12px}
.row input[type=range]{flex:1;accent-color:#7b8794;min-width:0}
.row select{flex:1;min-width:0}
output{font:12px/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);min-width:62px;text-align:right}

.row.split{gap:14px}
.row.split>span{flex:1;display:flex;align-items:center;gap:7px;min-width:0}
.row.split>span>label{flex:none;color:var(--dim);font-size:12px}
.row.split input[type=number]{width:52px;flex:none}
.row.split select{flex:1}
.row.split i{font-style:normal;color:var(--dimmer);font-size:11.5px}

input[type=number],select{
  background:var(--field);border:1px solid var(--line);border-radius:5px;
  padding:6px 8px;font-size:12.5px;
}
input[type=number]{font-family:var(--mono);font-variant-numeric:tabular-nums}
select{appearance:none;padding-right:24px;
  background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);
  background-position:calc(100% - 13px) 12px,calc(100% - 9px) 12px;background-size:5px 5px;background-repeat:no-repeat}

.check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink);margin-bottom:7px;cursor:pointer}
.check:last-child{margin-bottom:0}
.check input{accent-color:#6d7783;margin:0}

.fmt{margin:8px 0 0;color:var(--dimmer);font-size:11.5px}

/* status + controls */
#statusWrap{margin-bottom:12px}
#track{height:3px;background:#2b3038;border-radius:2px;overflow:hidden;margin-bottom:7px}
#bar{height:100%;width:0;background:#6d7783;transition:width .12s linear}
body.recording #bar{background:var(--rec)}
#status{margin:0;color:var(--dim);font-size:12px;min-height:17px}

#controls{display:flex;gap:9px;padding-bottom:4px}
#recBtn{
  flex:1;display:flex;align-items:center;justify-content:center;gap:8px;
  background:#2a2f37;border:1px solid #3c434d;border-radius:7px;padding:10px;cursor:pointer;font-size:13.5px;
}
#recBtn:hover:not(:disabled){border-color:#575f6b}
#recBtn:disabled{opacity:.4;cursor:not-allowed}
#recBtn .dot{width:10px;height:10px;border-radius:50%;background:var(--rec)}
body.recording #recBtn{background:#3a2020;border-color:var(--rec)}
body.recording #recBtn .dot{animation:pulse 1s steps(1,end) infinite}
@keyframes pulse{50%{opacity:.15}}
.ghost{background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:10px 13px;cursor:pointer;font-size:13px;color:var(--dim)}
.ghost:hover:not(:disabled){color:var(--ink);border-color:#465060}
.ghost:disabled{opacity:.4;cursor:not-allowed}

/* prose views */
.prose{max-height:430px;overflow-y:auto;padding-right:4px}
.prose h2{margin:16px 0 7px;font-size:13px;font-weight:600}
.prose h2:first-child{margin-top:0}
.prose p,.prose li{color:var(--dim);font-size:12.5px;line-height:1.55}
.prose p{margin:0 0 9px}
.prose ol,.prose ul{margin:0 0 9px;padding-left:17px}
.prose li{margin-bottom:6px}
.prose b{color:var(--ink);font-weight:600}
.prose code{font:11.5px/1 var(--mono);background:var(--field);border:1px solid var(--line);border-radius:3px;padding:2px 4px;color:var(--ink)}
.release h2 span{font-weight:400;color:var(--dimmer);font-size:12px;margin-left:6px}

/* footer */
#bottom{
  border-top:1px solid var(--line);margin-top:6px;padding:12px 14px 14px;
  display:grid;justify-items:center;gap:7px;
  color:var(--dimmer);font-size:11px;text-align:center;
}
#bottom img{width:44px;height:44px;border-radius:50%;display:block}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ── record size readout (v0.3) ─────────────────────────────── */
.note{margin:0 0 9px;color:var(--dimmer);font-size:11.5px;line-height:1.45}

#readout{
  background:var(--field);border:1px solid var(--line);border-left:2px solid #4d5763;
  border-radius:5px;padding:8px 10px;margin-bottom:9px;
}
#readout.good{border-left-color:var(--ok)}
#readout.off{border-left-color:var(--armed)}
#readout .line{font:12.5px/1.35 var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}
#readout .sub{font-family:var(--sans);font-size:11.5px;color:var(--dim);margin-top:3px}
#readout.off .sub{color:var(--armed)}
#readout.good .sub{color:var(--ok)}

button.wide{
  width:100%;background:var(--panel-2,var(--field));border:1px solid var(--line);
  border-radius:6px;padding:8px;cursor:pointer;font-size:12.5px;color:var(--dim);
  margin-bottom:9px;
}
button.wide:hover:not(:disabled){color:var(--ink);border-color:#465060}
button.wide:disabled{opacity:.4;cursor:not-allowed}

#format{font-size:12px}

/* ── v0.4 ───────────────────────────────────────────────────── */

/* An author display value outranks the browser's own [hidden] rule,
   so state it explicitly or hiding .check labels silently does nothing. */
[hidden]{display:none!important}

#intro{
  background:linear-gradient(180deg,#232b34,#1f242b);
  border:1px solid #39434f;border-radius:8px;
  padding:12px 13px 11px;margin-bottom:12px;
}
#intro h3{margin:0 0 8px;font-size:12.5px;font-weight:600;color:var(--ink)}
#intro ol{margin:0 0 11px;padding-left:17px}
#intro li{color:var(--dim);font-size:12px;line-height:1.5;margin-bottom:5px}
#intro li:last-child{margin-bottom:0}
#intro b{color:var(--ink);font-weight:500}
#introDone{
  background:#2f3944;border:1px solid #454f5c;border-radius:5px;
  padding:6px 13px;font-size:12px;cursor:pointer;color:var(--ink);
}
#introDone:hover{border-color:#5d6875}

button.inline{
  background:var(--field);border:1px solid var(--line);border-radius:5px;
  padding:6px 11px;font-size:12px;cursor:pointer;color:var(--dim);
}
button.inline:hover{color:var(--ink);border-color:#465060}

#status.err{color:var(--rec)}

/* ── v0.5: the target panel reads as a subject, not a status ── */
#target{display:block}
#targetLabel{
  display:block;font-size:10.5px;color:var(--dimmer);
  letter-spacing:.02em;margin-bottom:5px;
}
#targetRow{display:flex;align-items:center;gap:8px;min-width:0}
#targetIcon{width:16px;height:16px;flex:none;border-radius:3px}
#targetText{min-width:0;display:grid;gap:1px}
#targetHelp{
  display:block;margin-top:7px;padding-top:7px;border-top:1px solid var(--line);
  font-size:11px;line-height:1.4;color:var(--dimmer);
}
#target.blocked #targetLabel{color:#e08a84}
#target.blocked #targetHelp{color:#e08a84;border-top-color:#5c3a3a}

/* ── v0.6: opened as a file rather than installed ───────────── */
#notInstalled{
  background:#2a2027;border:1px solid #5c4a3a;border-left:2px solid var(--armed);
  border-radius:8px;padding:14px 14px 12px;
}
#notInstalled h3{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--ink)}
#notInstalled p{margin:0 0 9px;font-size:12px;line-height:1.55;color:var(--dim)}
#notInstalled ol{margin:0 0 10px;padding-left:17px}
#notInstalled li{font-size:12px;line-height:1.55;color:var(--dim);margin-bottom:5px}
#notInstalled b{color:var(--ink);font-weight:600}
#notInstalled code{
  font:11px/1 var(--mono);background:#1d2126;border:1px solid var(--line);
  border-radius:3px;padding:2px 4px;color:var(--ink);
}
body.uninstalled #intro,
body.uninstalled #target,
body.uninstalled #view-record .group,
body.uninstalled #statusWrap,
body.uninstalled #controls{display:none!important}
body.uninstalled #version{color:var(--armed)}

.introNote{
  margin:0 0 11px;font-size:11px;line-height:1.45;color:var(--dimmer);
  padding-top:8px;border-top:1px solid #333c47;
}

/* ── v0.7 ───────────────────────────────────────────────────── */
#folder{flex:1;min-width:0;font-size:12.5px}
#container{font-size:12.5px}
#fmtLine{font-family:var(--mono);font-size:11px;word-break:break-all}

/* ── v1.1 ───────────────────────────────────────────────────── */
.note.warn{color:var(--armed)}
#motionNote{margin-top:9px;margin-bottom:0}

/* ── v1.2 ───────────────────────────────────────────────────── */
#modeSeg button{padding:7px 4px}
#hotkey{
  flex:1;min-width:0;font-family:var(--mono);font-size:12px;text-align:center;
  background:var(--field);border:1px solid var(--line);border-radius:5px;padding:6px 8px;
  cursor:pointer;
}
#hotkey:focus{border-color:#6ea8fe;color:var(--ink)}
#countdown{width:56px;flex:none}
.manual-only .row i{font-style:normal;color:var(--dimmer);font-size:11.5px}

/* ── v2.1 ───────────────────────────────────────────────────── */

/* The mode switch used .seg, a class carried over from the hosted version
   whose styles never came with it. Unstyled, the buttons took Chrome's pale
   default background while color:inherit painted the label light. */
.seg{
  display:flex;background:var(--panel);border:1px solid var(--line);
  border-radius:6px;padding:2px;gap:2px;
}
.seg button{
  flex:1;background:transparent;border:0;border-radius:4px;
  padding:7px 6px;font-size:12.5px;color:var(--dim);cursor:pointer;
}
.seg button[aria-pressed=true]{background:#333a44;color:var(--ink)}
.seg button:hover:not([aria-pressed=true]){color:var(--ink)}
.seg button:disabled{opacity:.4;cursor:not-allowed}

/* A single long unbroken token — an unrounded devicePixelRatio, a deep save
   path — was widening the popup and pushing everything off the left edge. */
body{overflow-x:hidden}
#readout .line,#readout .sub,.note,#status,#targetHelp{overflow-wrap:anywhere}

/* ── v2.2 ───────────────────────────────────────────────────── */
#globalKey{
  display:flex;align-items:center;justify-content:space-between;gap:9px;
  background:var(--field);border:1px solid var(--line);border-left:2px solid var(--ok);
  border-radius:5px;padding:8px 10px;margin-top:10px;
}
#globalKey.unset{border-left-color:var(--armed)}
#globalKeyLine{font-size:11.5px;color:var(--dim);line-height:1.4}
#globalKeyLine b{color:var(--ink);font-family:var(--mono);font-weight:500}
#globalKey.unset #globalKeyLine b{font-family:var(--sans);color:var(--armed)}
#maxMinutes{width:56px;flex:none}

/* ── v2.3 ───────────────────────────────────────────────────── */
#basename{flex:1;min-width:0;font-size:12.5px}
#folder:disabled{opacity:.45;cursor:not-allowed}
#browseBtn.on{color:var(--ink);border-color:#5b6672;background:#2f3944}

#namePrompt{
  background:var(--panel-2,var(--field));border:1px solid #3c434d;
  border-radius:7px;padding:12px;margin-bottom:12px;
}
#namePrompt>label{display:block;font-size:12px;color:var(--dim);margin-bottom:7px}
#nameField{
  width:100%;background:var(--field);border:1px solid var(--line);border-radius:5px;
  padding:8px 9px;font-size:13px;
}
#nameField:focus{border-color:#6ea8fe}
#namePreview{margin:7px 0 10px;font-family:var(--mono);font-size:11px;color:var(--dimmer);overflow-wrap:anywhere}
.promptRow{display:flex;gap:8px;justify-content:flex-end}
#nameGo{
  background:#2f3944;border:1px solid #5b6672;border-radius:5px;
  padding:6px 16px;font-size:12.5px;cursor:pointer;color:var(--ink);
}
#nameGo:hover{border-color:#77828f}

/* ── v2.4 ───────────────────────────────────────────────────── */
#micState{
  display:flex;align-items:center;justify-content:space-between;gap:9px;
  background:var(--field);border:1px solid var(--line);border-left:2px solid var(--ok);
  border-radius:5px;padding:8px 10px;margin-bottom:9px;
}
#micState.needed{border-left-color:var(--armed)}
#micStateLine{font-size:11.5px;color:var(--dim)}
#micState.needed #micStateLine{color:var(--armed)}
