/* Memoryphone Portal — design system.
   Ported from the customer's Claude design (Kundenseite.dc.html): an audio
   guest book styled as a warm messaging app inside a phone frame.
   Fonts: Instrument Serif (display) · Hanken Grotesk (body) · Space Mono (numerals).
   One accent colour carries the whole identity; six palettes switch it live. */

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg2,#e6dccb);
  font-family:'Hanken Grotesk',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  color:var(--ink,#2a2520);
}
button{font-family:inherit}
input{font-family:inherit}

/* ---- palettes (CSS variables) ---- */
:root,[data-palette="terracotta"]{
  --bg:#f4efe7;--bg2:#e6dccb;--card:#fffdf9;--ink:#2a2520;--muted:#948979;
  --faint:#d8cbb8;--line:#e7ddcd;--line2:#f0e8da;--accent:#b15c46;
  --accent-ink:#fff7f2;--accent-soft:#f3ddd2;--gold:#c39a52;
}
[data-palette="neutral"]{
  --bg:#ece4d8;--bg2:#d8cfc1;--card:#ffffff;--ink:#2b2722;--muted:#8a8276;
  --faint:#cfc6b6;--line:#ddd4c5;--line2:#ece5d8;--accent:#3f7d6e;
  --accent-ink:#f3fbf8;--accent-soft:#d6e6df;--gold:#c9a85f;
}
[data-palette="amber"]{
  --bg:#fdf4ea;--bg2:#f3e2cd;--card:#fffdfa;--ink:#2c2620;--muted:#9a8b78;
  --faint:#e6cdb0;--line:#f0e2cf;--line2:#f9efdf;--accent:#e3623a;
  --accent-ink:#fff6f2;--accent-soft:#fbe0d2;--gold:#f2b134;
}
[data-palette="violet"]{
  --bg:#f1f0f8;--bg2:#ddd9ef;--card:#ffffff;--ink:#232233;--muted:#847f99;
  --faint:#d3cdec;--line:#e4e0f1;--line2:#efedf8;--accent:#6a4fe6;
  --accent-ink:#f7f5ff;--accent-soft:#e7e1fb;--gold:#d6409f;
}
[data-palette="rose"]{
  --bg:#fbf0f3;--bg2:#f0d8e0;--card:#fffafb;--ink:#2e2227;--muted:#9a7d86;
  --faint:#e8c6d1;--line:#f2dde4;--line2:#f9ecf0;--accent:#d6446e;
  --accent-ink:#fff5f8;--accent-soft:#fbd9e4;--gold:#e0849f;
}
[data-palette="ocean"]{
  --bg:#eef3f8;--bg2:#d6e1ee;--card:#ffffff;--ink:#1f2730;--muted:#7c8794;
  --faint:#c4d3e2;--line:#dce6f0;--line2:#eef3f9;--accent:#2f6fb0;
  --accent-ink:#f3f8fd;--accent-soft:#d9e8f5;--gold:#4fa3c7;
}

/* ---- device frame ---- */
.kp-stage{min-height:100dvh;width:100%;display:flex;align-items:center;justify-content:center;background:var(--bg2);}
.kp-device{width:100%;max-width:462px;height:100dvh;max-height:940px;display:flex;}
.kp-screen{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--bg);box-shadow:0 18px 60px -12px rgba(30,22,16,.45);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
@media (min-width:720px) and (min-height:744px){
  .kp-device{position:relative;width:auto;max-width:none;height:auto;max-height:none;padding:15px;background:#0d0d10;border-radius:60px;box-shadow:inset 0 0 0 2px #2c2c30, 0 50px 90px -28px rgba(0,0,0,.6);}
  .kp-screen{width:392px;height:840px;border-radius:46px;overflow:hidden;box-shadow:none;}
  .kp-device::after{content:"";position:absolute;top:27px;left:50%;transform:translateX(-50%);width:104px;height:26px;background:#000;border-radius:14px;z-index:60;}
  .kp-statusbar{padding:0 42px;}
}

/* ---- status bar + header ---- */
.kp-statusbar{flex:0 0 auto;height:30px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 30px;font-size:12.5px;font-weight:700;letter-spacing:.02em;}
.kp-statusbar .num{font-variant-numeric:tabular-nums;}
.kp-header{flex:0 0 auto;background:var(--accent);color:#fff;display:flex;align-items:center;gap:2px;padding:7px 6px 9px;}
.kp-iconbtn{flex:none;border:none;background:none;color:#fff;display:grid;place-items:center;cursor:pointer;border-radius:999px;height:40px;}
.kp-iconbtn:hover{background:rgba(255,255,255,.14)}
.kp-avatar{flex:none;width:40px;height:40px;border-radius:999px;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:21px;}
.kp-title{flex:1 1 auto;min-width:0;line-height:1.18;margin-left:4px;cursor:pointer;}
.kp-title .t{font-family:'Instrument Serif',serif;font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.kp-title .s{display:flex;align-items:center;gap:6px;font-size:12px;color:rgba(255,255,255,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dot{width:7px;height:7px;border-radius:999px;flex:none;}
.dot.online{background:#8ff0b0;}
.dot.offline{background:#ffd27a;}
.spin{width:9px;height:9px;border-radius:999px;border:2px solid #ffe08a;border-top-color:transparent;animation:wf-spin .8s linear infinite;flex:none;}

/* ---- search bar ---- */
.kp-search{flex:0 0 auto;background:var(--accent);padding:0 12px 10px;}
.kp-search input{width:100%;border:none;border-radius:999px;padding:10px 16px;font-size:14px;background:var(--card);color:var(--ink);outline:none;}

/* ---- menu ---- */
.kp-menu-scrim{position:absolute;inset:0;z-index:60;}
.kp-menu{position:absolute;top:74px;right:10px;background:var(--card);border-radius:14px;box-shadow:0 14px 40px -8px rgba(30,22,16,.5);padding:8px;min-width:256px;animation:kp-pop .12s ease;border:1px solid var(--line);}
.kp-seg{display:flex;background:var(--bg);border-radius:999px;padding:3px;gap:2px;margin:0 auto 4px;width:max-content;}
.kp-seg button{border:none;background:transparent;color:var(--muted);font-size:11.5px;font-weight:700;padding:5px 16px;border-radius:999px;cursor:pointer;}
.kp-seg button.on{background:var(--accent);color:#fff;}
.kp-menu-label{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:8px 2px 9px;}
.kp-swatches{display:flex;gap:9px;justify-content:space-between;padding:0 2px;}
.kp-sw{width:27px;height:27px;border-radius:999px;border:2px solid transparent;cursor:pointer;padding:0;flex:none;}
.kp-sw.on{border-color:#fff;box-shadow:0 0 0 2px var(--ink);}
.kp-wp-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:0 2px;}
.kp-wp{height:40px;border-radius:10px;background:var(--bg);border:1.5px solid var(--line);cursor:pointer;padding:0;display:grid;place-items:center;font-size:19px;line-height:1;}
.kp-wp.on{background:var(--accent-soft);border-color:var(--accent);}
.kp-divider{height:1px;background:var(--line2);margin:8px 4px;}
.kp-menu-item{width:100%;text-align:left;background:none;border:none;cursor:pointer;padding:10px;font-size:13.5px;color:var(--ink);display:flex;align-items:center;gap:13px;border-radius:9px;}
.kp-menu-item:hover{background:var(--bg);}

/* ---- chat ---- */
.kp-chat{flex:1 1 auto;overflow-y:auto;padding:12px 10px 16px;background-color:var(--bg);}
.kp-chat::-webkit-scrollbar{width:0}
.kp-pill-row{display:flex;justify-content:center;margin:0 0 9px;}
.kp-daysep{margin:18px 0 11px;}   /* date chip before each day's first message */
.kp-datepill{background:var(--bg2);color:var(--muted);font-family:'Space Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:5px 12px;border-radius:999px;}
.kp-sys{background:#fdf3d4;color:#7a6a2e;font-size:12px;line-height:1.4;padding:7px 13px;border-radius:9px;max-width:84%;text-align:center;box-shadow:0 1px 1px rgba(0,0,0,.04);}
.kp-info{background:var(--card);color:var(--muted);font-size:12px;padding:7px 13px;border-radius:9px;box-shadow:0 1px 1px rgba(0,0,0,.05);}
.kp-syncpill{cursor:pointer;background:var(--card);color:var(--muted);font-size:11.5px;padding:6px 12px;border-radius:999px;box-shadow:0 1px 1px rgba(0,0,0,.05);display:inline-flex;align-items:center;gap:7px;max-width:88%;}

.kp-row{display:flex;align-items:flex-start;gap:7px;margin:9px 2px;animation:kp-rise .25s ease both;}
.kp-row.no-anim{animation:none;}   /* in-place updates must not replay the entrance */
.kp-num{flex:none;width:34px;height:34px;border-radius:999px;color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700;margin-top:2px;position:relative;cursor:pointer;}
.kp-mic{position:absolute;right:-3px;bottom:-3px;width:16px;height:16px;border-radius:999px;background:var(--card);display:grid;place-items:center;box-shadow:0 0 0 1.5px var(--bg);}
.kp-bubble{position:relative;background:var(--card);border-radius:3px 13px 13px 13px;padding:8px 10px 7px;box-shadow:0 1px 1px rgba(11,20,26,.09);max-width:84%;min-width:0;flex:1 1 auto;border:1px solid transparent;cursor:pointer;-webkit-touch-callout:none;user-select:none;}
.kp-bubble.sel{border-color:var(--accent-soft);}
.kp-bubble.pressing{transform:scale(.965);box-shadow:0 0 0 2px var(--accent-soft),0 6px 18px -8px rgba(0,0,0,.35);}
@media (prefers-reduced-motion:no-preference){.kp-bubble{transition:transform .14s ease,box-shadow .14s ease;}}
.kp-btitle{font-family:'Instrument Serif',serif;font-size:16px;line-height:1.1;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.kp-playrow{display:flex;align-items:center;gap:9px;}
.kp-play{flex:none;width:38px;height:38px;border-radius:999px;border:none;background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer;}
.kp-wavewrap{position:relative;flex:1 1 auto;min-width:0;}
.kp-flag{position:absolute;top:-12px;left:0;font-family:'Space Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--gold);background:#fdf3d4;border-radius:4px;padding:1px 5px;white-space:nowrap;}
.kp-wave{position:relative;display:flex;align-items:center;justify-content:space-between;height:28px;}
.kp-bar{flex:none;width:2.5px;border-radius:2px;background:var(--faint);transition:background .05s linear;}
.kp-bar.lead{background:var(--line);}
#chat.ann .kp-bar.lead{background:var(--gold);}   /* Bandansage on → lead bars gold, toggled container-wide */
.kp-playhead{position:absolute;top:50%;left:0%;width:11px;height:11px;border-radius:999px;background:var(--accent);border:2px solid #fff;transform:translate(-50%,-50%);box-shadow:0 1px 2px rgba(0,0,0,.3);pointer-events:none;}
.kp-meta{display:flex;align-items:center;gap:8px;margin-top:6px;padding-left:47px;}
.kp-dur{font-family:'Space Mono',monospace;font-size:11px;color:var(--muted);}
.kp-time{font-family:'Space Mono',monospace;font-size:10px;color:var(--muted);}
.kp-metabtn{border:none;background:none;cursor:pointer;color:var(--muted);padding:2px;display:grid;place-items:center;border-radius:5px;}
.kp-metabtn:hover{color:var(--accent);}
.kp-note{margin-top:7px;font-size:11.5px;color:#9a7b2e;background:#fdf3d4;border-radius:7px;padding:6px 9px;display:flex;gap:7px;align-items:flex-start;}
.kp-transcript{margin-top:7px;font-size:12.5px;color:var(--ink);line-height:1.5;background:var(--bg);border-radius:8px;padding:8px 10px;border-left:3px solid var(--accent-soft);}
/* Playback lives in the transport bar (.kp-transport); message rows carry no
   control pills. .kp-dual is the Bandansage "Doppelknopf": both glyphs (bullhorn
   = play greeting, skip = skip silence) are ALWAYS shown behind a slash, and the
   glyph for the active mode is the bold/enlarged one — the other stays faint.
   data-ann on the wrapper selects which (on → bullhorn, skip → skip, off → none). */
.kp-dual{display:inline-flex;align-items:center;gap:1px;}
.kp-di{display:inline-flex;align-items:center;opacity:.34;transform:scale(.84);transition:opacity .15s,transform .15s;}
.kp-di svg{width:13px;height:13px;display:block;}
.kp-dual[data-ann="on"] .kp-di-ann{opacity:1;transform:scale(1.08);}
.kp-dual[data-ann="on"] .kp-di-ann svg{stroke-width:2.6;}
.kp-dual[data-ann="skip"] .kp-di-skip{opacity:1;transform:scale(1.08);}
.kp-dual-sep{font-weight:700;opacity:.34;margin:0 1px;font-size:11px;}
/* buffering spinner — a ring chasing its own tail (message play button + transport) */
.kp-spin{display:inline-block;width:18px;height:18px;border-radius:50%;border:2.5px solid currentColor;border-right-color:transparent;border-bottom-color:transparent;animation:wf-spin .7s linear infinite;}
.kp-play .kp-spin{width:17px;height:17px;}
.kp-share{flex:none;width:34px;height:34px;border-radius:999px;border:none;background:var(--line);color:var(--muted);display:grid;place-items:center;cursor:pointer;margin-top:4px;transition:transform .12s ease, background .12s ease;}
.kp-share:hover{background:var(--accent-soft);color:var(--accent);transform:scale(1.06);}
.kp-share:active{transform:scale(.92);}

/* ---- footer (summary + download, now the very bottom strip, below transport) ---- */
.kp-footer{flex:0 0 auto;background:var(--bg);padding:4px 12px 9px;padding-bottom:max(9px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:10px;}
.kp-foottext{flex:1;background:var(--card);border-radius:999px;padding:11px 16px;font-size:13px;color:var(--muted);box-shadow:0 1px 1px rgba(0,0,0,.05);display:flex;align-items:center;gap:9px;min-width:0;}
.kp-foottext span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.kp-fab{flex:none;width:48px;height:48px;border-radius:999px;border:none;background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 5px 16px -5px var(--accent);transition:transform .12s ease;}
.kp-fab:hover{transform:scale(1.05);} .kp-fab:active{transform:scale(.95);}

/* ---- transport / player bar (sits above the summary footer) ----
   One relative row, no white block: blends into the page bg, only a hairline
   separates it from the chat. THREE zones via a 1fr·auto·1fr grid so the centre
   playback cluster (prev · jump-5s · round accent play/pause · jump-5s · next)
   stays perfectly centred no matter how wide the flanks are — LEFT hugs the
   Bandansage button, RIGHT hugs speed + loop. Never positioned by hand. */
.kp-transport{flex:0 0 auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;background:var(--bg);border-top:1px solid var(--line);padding:8px 12px 4px;}
.kp-tp-side{display:flex;align-items:center;gap:5px;min-width:0;}
.kp-tp-left{grid-column:1;justify-self:start;}
.kp-tp-right{grid-column:3;justify-self:end;}
.kp-tp-main{grid-column:2;justify-self:center;display:flex;align-items:center;justify-content:center;gap:6px;}
.kp-tp-track{flex:none;width:34px;height:34px;border-radius:999px;border:none;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer;transition:color .15s,background .15s,opacity .15s;}
.kp-tp-track svg{width:24px;height:24px;}
.kp-tp-track:hover{color:var(--ink);background:var(--bg);}
.kp-tp-track:disabled{opacity:.26;cursor:default;}
.kp-tp-track:disabled:hover{background:transparent;color:var(--muted);}
.kp-tp-seek{flex:none;width:34px;height:34px;border-radius:999px;border:none;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer;transition:color .15s,background .15s,opacity .15s;}
.kp-tp-seek svg{width:22px;height:22px;}
.kp-tp-seek:hover{color:var(--ink);background:var(--bg);}
.kp-tp-seek:disabled{opacity:.3;cursor:default;}
.kp-tp-seek:disabled:hover{background:transparent;color:var(--muted);}
.kp-tp-pp{flex:none;width:46px;height:46px;border-radius:999px;border:none;background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 14px -4px var(--accent);transition:transform .12s ease,background .15s,box-shadow .15s;}   /* single accent play/pause toggle */
.kp-tp-pp svg{width:26px;height:26px;}
.kp-tp-pp:active{transform:scale(.92);}
.kp-tp-pp:disabled{background:var(--faint);box-shadow:none;cursor:default;}
.kp-tp-mod{flex:none;min-width:34px;height:30px;padding:0 9px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:3px;font-size:11.5px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;cursor:pointer;transition:color .15s,background .15s,border-color .15s,opacity .15s;}
.kp-tp-mod svg{width:15px;height:15px;}
.kp-tp-mod:hover{color:var(--ink);border-color:var(--line2);}
.kp-tp-mod.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);}
.kp-tp-mod.off{opacity:.5;}
.kp-tp-mod.off:hover{opacity:.82;}

/* ---- modals / sheets ---- */
.kp-scrim{position:absolute;inset:0;z-index:100;background:rgba(30,22,16,.45);backdrop-filter:blur(2px);display:flex;align-items:flex-end;justify-content:center;transition:padding-bottom .18s ease;}
.kp-sheet{width:100%;background:var(--card);border-radius:20px 20px 0 0;padding:18px 20px 24px;box-shadow:0 -10px 40px -12px rgba(0,0,0,.4);animation:kp-pop .14s ease;}
.kp-grab{width:38px;height:4px;border-radius:999px;background:var(--line);margin:0 auto 14px;}
.kp-h3{font-family:'Instrument Serif',serif;font-weight:400;font-size:23px;margin:0;color:var(--ink);}
.kp-sub{margin:6px 0 15px;font-size:13.5px;line-height:1.5;color:var(--muted);}
.kp-codecells{display:flex;gap:8px;justify-content:space-between;}
.kp-codecells input{width:100%;height:56px;text-align:center;font-family:'Space Mono',monospace;font-size:23px;font-weight:700;color:var(--ink);background:var(--bg);border:1.5px solid var(--line);border-radius:12px;outline:none;}
.kp-codecells input:focus{border-color:var(--accent);background:var(--card);}
.kp-primary{margin-top:18px;width:100%;height:50px;border-radius:13px;border:none;background:var(--accent);color:var(--accent-ink);font-size:15px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:opacity .2s ease;}
.kp-primary[disabled]{background:var(--faint);opacity:.6;cursor:not-allowed;}
.kp-dlopt{width:100%;display:flex;align-items:center;gap:13px;padding:12px 13px;border-radius:13px;border:1px solid var(--line);background:var(--bg);cursor:pointer;text-align:left;margin-bottom:8px;}
.kp-dlopt:hover{border-color:var(--accent);}
.kp-dlopt.danger:hover{border-color:#c0392b;}
.kp-dlopt.danger .kp-dlicon{background:#fdecea;color:#c0392b;}
.kp-dlopt.danger .l{color:#c0392b;}
.kp-dlicon{flex:none;width:38px;height:38px;border-radius:11px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;}
/* long-press context menu header */
.kp-ctx-head{display:flex;align-items:center;gap:12px;margin:0 2px 14px;}
.kp-ctx-num{flex:none;width:34px;height:34px;border-radius:999px;color:#fff;display:grid;place-items:center;font-size:13px;font-weight:700;}
.kp-ctx-title{font-family:'Instrument Serif',serif;font-size:20px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.kp-ctx-sub{font-family:'Space Mono',monospace;font-size:11px;color:var(--muted);margin-top:2px;}
.kp-dlopt .l{display:block;font-size:14px;font-weight:700;color:var(--ink);}
.kp-dlopt .sub{display:block;font-size:11.5px;color:var(--muted);margin-top:1px;}
.kp-ghost{width:100%;margin-top:4px;height:46px;border-radius:12px;border:none;background:transparent;color:var(--muted);font-size:14px;font-weight:700;cursor:pointer;}
.kp-ghost:hover{background:var(--bg);}
.kp-help-item{display:flex;align-items:flex-start;gap:13px;padding:11px 0;border-bottom:1px solid var(--line2);}
.kp-help-ic{flex:none;width:42px;height:42px;border-radius:999px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:20px;}
.kp-help-item .ti{font-size:14.5px;font-weight:700;color:var(--ink);}
.kp-help-item .tx{font-size:13px;line-height:1.5;color:var(--muted);margin-top:2px;}

.kp-toast{position:absolute;left:50%;bottom:132px;transform:translateX(-50%);z-index:120;background:var(--ink);color:var(--card);font-size:13px;font-weight:600;padding:11px 17px;border-radius:12px;box-shadow:0 16px 40px -12px rgba(0,0,0,.5);max-width:88%;text-align:center;animation:kp-pop .14s ease;}

/* ---- host settings extras ---- */
.kp-field{margin:0 0 16px;}
.kp-field label{display:block;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:0 2px 6px;}
.kp-field input[type=text]{width:100%;border:1.5px solid var(--line);border-radius:11px;padding:11px 13px;font-size:14px;background:var(--card);color:var(--ink);outline:none;}
.kp-field input[type=text]:focus{border-color:var(--accent);}
.kp-hint{font-size:11.5px;color:var(--muted);margin:5px 2px 0;line-height:1.4;}
.kp-rec-edit{display:flex;align-items:center;gap:7px;padding:10px 2px;border-bottom:1px solid var(--line2);}
.kp-rec-edit .seq{flex:none;width:30px;height:30px;border-radius:999px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:12px;font-weight:700;}
.kp-rec-edit input{flex:1;border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-size:13px;background:var(--card);color:var(--ink);outline:none;min-width:0;}
.kp-rec-edit input:focus{border-color:var(--accent);}
.kp-rec-edit input:disabled{background:var(--bg);color:var(--muted);}
.kp-rec-edit .save{flex:none;border:none;background:var(--accent);color:#fff;border-radius:8px;width:34px;height:34px;cursor:pointer;display:grid;place-items:center;}
.kp-rec-edit .save:disabled{background:var(--faint);cursor:not-allowed;}
.kp-rec-play{flex:none;width:32px;height:32px;border-radius:999px;border:none;background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer;}
.kp-rec-tog{flex:none;width:32px;height:32px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--muted);display:grid;place-items:center;cursor:pointer;}
.kp-rec-tog.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);}
.kp-rec-tog.danger.on{border-color:#c0392b;background:#fdecea;color:#c0392b;}
.kp-rec-edit.is-hidden{opacity:.62;}
.kp-rec-edit.is-trashed{opacity:.45;}
.kp-hint svg{vertical-align:-3px;margin:0 1px;}

/* ---- scrubbing (tap/drag the waveform) ---- */
/* pan-y: the browser keeps vertical scrolling; JS only claims horizontal drags
   for scrubbing (see bindScrub axis-lock). touch-action:none used to swallow the
   scroll, so a swipe that began on a waveform froze the list. */
.kp-wave.scrubbable{cursor:pointer;touch-action:pan-y;}
.kp-wave.scrubbable::before{content:"";position:absolute;inset:-9px 0;}  /* taller tap target */
.kp-wave.scrubbable .kp-playhead{cursor:grab;}

/* ---- guest suggestion chip (only shown in a host session) ---- */
.kp-sugchip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--gold);background:#fdf3d4;color:#8a6a1f;border-radius:999px;padding:2px 8px 2px 6px;font-size:11px;font-weight:700;cursor:pointer;max-width:48%;min-width:0;}
.kp-sugchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.kp-sugchip svg{color:var(--gold);flex:none;}

/* ---- ctx-menu / rename suggestion row ---- */
.kp-suggest{display:flex;align-items:center;gap:8px;background:#fdf3d4;border:1px solid var(--gold);border-radius:12px;padding:8px 10px;margin:0 2px 11px;}
.kp-suggest-l{flex:1;min-width:0;display:flex;align-items:center;gap:6px;font-size:13px;color:#6f561a;}
.kp-suggest-l span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.kp-suggest-l svg{color:var(--gold);flex:none;}
.kp-suggest-yes,.kp-suggest-no{flex:none;width:34px;height:34px;border-radius:999px;border:none;cursor:pointer;display:grid;place-items:center;}
.kp-suggest-yes{background:var(--accent);color:#fff;}
.kp-suggest-no{background:var(--bg);color:var(--muted);border:1px solid var(--line);}

/* ---- rename input ---- */
.kp-rename-input{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;font-size:16px;background:var(--card);color:var(--ink);outline:none;}
.kp-rename-input:focus{border-color:var(--accent);}

/* ---- host: recording card + suggestion + transcript + badge ---- */
.kp-rec-card{border-bottom:1px solid var(--line2);padding:4px 0;}
.kp-rec-card .kp-rec-edit{border-bottom:none;}
.kp-rec-card.is-hidden{opacity:.62;}
.kp-rec-card.is-trashed{opacity:.45;}
.kp-rec-badge{flex:none;font-size:9.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:2px 5px;}
.kp-rec-sug{display:flex;align-items:center;gap:8px;margin:2px 2px 6px 41px;background:#fdf3d4;border:1px solid var(--gold);border-radius:10px;padding:6px 9px;}
.kp-rec-sug-l{flex:1;min-width:0;display:flex;align-items:center;gap:6px;font-size:12.5px;color:#6f561a;}
.kp-rec-sug-l span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.kp-rec-sug-l svg{color:var(--gold);flex:none;}
.kp-sug-yes,.kp-sug-no{flex:none;width:30px;height:30px;border-radius:999px;border:none;cursor:pointer;display:grid;place-items:center;}
.kp-sug-yes{background:var(--accent);color:#fff;}
.kp-sug-no{background:var(--bg);color:var(--muted);border:1px solid var(--line);}
.kp-rec-txt{margin:0 2px 7px 41px;font-size:12px;color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}

/* ---- transcription progress ---- */
.kp-txprog{margin:12px 2px 0;}
.kp-txbar{height:8px;border-radius:999px;background:var(--line2);overflow:hidden;}
.kp-txbar span{display:block;height:100%;background:var(--accent);border-radius:999px;transition:width .3s ease;}
.kp-txmeta{margin-top:6px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;}
.kp-txerr{margin-top:3px;font-size:11.5px;color:#c0392b;}

@keyframes wf-spin{to{transform:rotate(360deg)}}
@keyframes kp-rise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes kp-pop{from{opacity:0;transform:scale(.96) translateY(-6px)}to{opacity:1;transform:none}}
/* autoplay hand-off: a soft accent ring blooms on the row that just took over */
@keyframes kp-nextglow{0%{box-shadow:0 0 0 0 var(--accent-soft)}45%{box-shadow:0 0 0 3px var(--accent-soft)}100%{box-shadow:0 0 0 0 rgba(0,0,0,0)}}
.kp-bubble.autonext{animation:kp-nextglow 1.2s ease;}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
