:root{
  --bg:#F5F6F4;--surface:#FFFFFF;--ink:#14202B;--muted:#5B6773;--line:#DDE2E0;
  --accent:#0F6B63;--accent-ink:#FFFFFF;--pin:#B87A00;--danger:#B3382C;--chip:#E2EEEC;
  --shadow:0 6px 18px rgba(20,32,43,.18);
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0F1519;--surface:#172027;--ink:#E8EEF0;--muted:#98A6AE;--line:#26333B;
    --accent:#4DB8AC;--accent-ink:#07201D;--pin:#E3AD3A;--danger:#F07A6C;--chip:#1E3330;
    --shadow:0 6px 18px rgba(0,0,0,.5);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0F1519;--surface:#172027;--ink:#E8EEF0;--muted:#98A6AE;--line:#26333B;
  --accent:#4DB8AC;--accent-ink:#07201D;--pin:#E3AD3A;--danger:#F07A6C;--chip:#1E3330;
  --shadow:0 6px 18px rgba(0,0,0,.5);
  color-scheme:dark;
}
:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-padding-top:env(safe-area-inset-top,0px);height:100%}
*,*::before,*::after{box-sizing:inherit}
body{
  margin:0;min-height:100%;background:var(--bg);color:var(--ink);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  font-size:16px;line-height:1.5;-webkit-tap-highlight-color:transparent;
}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:var(--bg);z-index:10}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.app{max-width:640px;margin:0 auto;padding:0 16px 120px}
header.top{position:sticky;top:env(safe-area-inset-top,0px);background:var(--bg);z-index:5;padding:14px 0 8px}
.bar{display:flex;align-items:center;justify-content:space-between;gap:8px}
h1{margin:0;font-size:1.75rem;font-weight:700;letter-spacing:-.01em}
.sub{margin:0;color:var(--muted);font-size:.875rem}
.icon-btn{width:44px;height:44px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink)}
.icon-btn:active{background:var(--chip)}
.icon-btn svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon-btn.on{color:var(--pin)}
.icon-btn.on svg{fill:currentColor}
.icon-btn.danger{color:var(--danger)}

.search{margin-top:10px;position:relative}
.search input{width:100%;height:46px;border-radius:12px;border:1px solid var(--line);background:var(--surface);padding:0 14px;font-size:1rem}
.search input::placeholder{color:var(--muted)}
.chips{display:flex;gap:8px;overflow-x:auto;padding:10px 0 4px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;height:34px;padding:0 14px;border-radius:17px;border:1px solid var(--line);background:var(--surface);font-size:.875rem;color:var(--muted)}
.chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}

.group-title{margin:18px 2px 8px;font-size:.875rem;font-weight:600;color:var(--muted)}
.list{display:flex;flex-direction:column;gap:10px}
.note{width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:block}
.note:active{border-color:var(--accent)}
.note h3{margin:0 0 4px;font-size:1rem;font-weight:600;display:flex;gap:8px;align-items:center}
.note h3 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.note h3 svg{flex:none;width:15px;height:15px;fill:var(--pin);stroke:var(--pin)}
.note p{margin:0;color:var(--muted);font-size:.9375rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line}
.note .meta{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.8125rem;color:var(--muted)}
.tag{background:var(--chip);color:var(--ink);border-radius:8px;padding:1px 8px}
.empty{margin:56px 8px;text-align:center;color:var(--muted)}
.empty strong{display:block;color:var(--ink);font-size:1.0625rem;margin-bottom:4px}

.fabs{position:fixed;right:16px;bottom:0;margin-bottom:calc(16px + env(safe-area-inset-bottom,0px));display:flex;gap:10px;align-items:center;z-index:6}
.fab{height:54px;padding:0 22px 0 18px;border-radius:27px;background:var(--accent);color:var(--accent-ink);font-weight:600;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow)}
.fab.round{width:54px;padding:0;justify-content:center;background:var(--surface);color:var(--accent);border:1px solid var(--line)}
.icon-btn.rec{color:var(--danger);background:var(--chip)}
.voicebar{display:none;border-top:1px solid var(--line);background:var(--surface);padding:10px 12px;gap:12px;align-items:center}
.voicebar.show{display:flex}
.vb-main{flex:1;min-width:0}
.vb-state{font-size:.8125rem;font-weight:600;color:var(--danger);display:flex;align-items:center;gap:8px}
.vb-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--danger)}
.vb-live{font-size:.9375rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:1.5em}
.voicebar.err .vb-dot{display:none}
.voicebar.err .vb-state{color:var(--ink);font-weight:500}
.voicebar.err .vb-live{display:none}
.meter{flex:none;width:56px;height:6px;border-radius:3px;background:var(--chip);overflow:hidden}
.meter i{display:block;height:100%;width:0;background:var(--accent)}
.stop{flex:none;height:44px;padding:0 16px;border-radius:12px;background:var(--danger);color:var(--bg);font-weight:600}
.voicebar.err .stop{background:var(--chip);color:var(--ink)}
.voicebar.err .install{background:var(--accent);color:var(--bg)}
.opt{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}
.opt input{flex:none;width:22px;height:22px;margin:2px 0 0;accent-color:var(--accent)}
.opt-t strong{display:block;font-weight:600}
.opt-t span{display:block;color:var(--muted);font-size:.875rem}
@media (prefers-reduced-motion:no-preference){
  .vb-dot{animation:pulse 1.2s ease-in-out infinite}
  @keyframes pulse{50%{opacity:.25}}
}
.fab svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round}

.sheet{position:fixed;inset:0;background:var(--bg);z-index:20;display:none;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.sheet.open{display:flex}
#editor{z-index:22}
.sheet .head{display:flex;align-items:center;gap:4px;padding:8px 8px;border-bottom:1px solid var(--line)}
.sheet .head .grow{flex:1;color:var(--muted);font-size:.8125rem;padding-left:4px}
.editor-body{flex:1;overflow-y:auto;padding:16px;max-width:640px;width:100%;margin:0 auto;display:flex;flex-direction:column}
.title-in{border:0;background:none;font-size:1.5rem;font-weight:700;padding:4px 0;width:100%;outline:none}
.title-in::placeholder,.body-in::placeholder,.tags-in::placeholder{color:var(--muted);opacity:.8}
.tags-in{border:0;border-bottom:1px solid var(--line);background:none;padding:8px 0 10px;width:100%;font-size:.9375rem;outline:none}
.tags-in:focus,.title-in:focus-visible,.body-in:focus-visible{outline:none}
.body-in{flex:1;min-height:50vh;border:0;background:none;resize:none;padding:14px 0 40px;width:100%;line-height:1.65;outline:none}

.panel{padding:16px;max-width:640px;width:100%;margin:0 auto;overflow-y:auto}
.panel h2{font-size:1.125rem;margin:20px 0 6px}
.panel h2:first-child{margin-top:4px}
.panel p{margin:0 0 10px;color:var(--muted);font-size:.9375rem}
.btn{height:46px;padding:0 18px;border-radius:12px;font-weight:600;border:1px solid var(--line);background:var(--surface)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.row{display:flex;gap:10px;flex-wrap:wrap}
.panel textarea{width:100%;min-height:110px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:10px 12px;font-size:.875rem;margin-bottom:10px}
.msg{min-height:1.4em;font-size:.875rem;color:var(--accent);margin-top:6px}

.toast{position:fixed;left:16px;right:16px;bottom:0;margin:0 auto calc(88px + env(safe-area-inset-bottom,0px));max-width:420px;background:var(--ink);color:var(--bg);border-radius:12px;padding:10px 12px 10px 16px;display:none;align-items:center;justify-content:space-between;gap:12px;z-index:30;box-shadow:var(--shadow)}
.toast.show{display:flex}
.toast button{color:var(--bg);font-weight:700;text-decoration:underline;padding:6px 8px}
/* Sync status */
.sync{display:inline-flex;align-items:center;gap:6px}
.sync i{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}
.sync.ok i{background:var(--accent)}
.sync.busy i{background:var(--pin)}
.sync.off i{background:var(--line)}
.sync.err i{background:var(--danger)}

@media (prefers-reduced-motion:no-preference){
  .sheet.open{animation:rise .18s ease-out}
  @keyframes rise{from{transform:translateY(16px);opacity:0}to{transform:none;opacity:1}}
}

/* ---- added in the split ---- */
[hidden]{display:none !important}
.head-actions{display:flex}
.btn.sm{height:36px;padding:0 12px}
.btn.danger{color:var(--danger)}
.msg.err{color:var(--danger)}
.field{display:block;margin:0 0 12px}
.field>span{display:block;font-size:.875rem;color:var(--muted);margin-bottom:4px}
.field input,.field select,.proj-sel,.proj-row input,.proj-row select{width:100%;height:46px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:0 12px}
.login-box{max-width:380px;width:100%;margin:12vh auto 0;padding:0 16px}
.login-box h1{margin-bottom:4px}
.login-box .sub{margin-bottom:20px}
.login-box .btn{width:100%}
#login{z-index:40}
.proj-line{padding:10px 0;border-bottom:1px solid var(--line)}
.proj-sel{height:40px;font-size:.9375rem}
.chip{display:inline-flex;align-items:center;gap:6px}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none;background:var(--pc,var(--muted))}
.c-teal{--pc:#14917F}.c-blue{--pc:#2F6FD6}.c-violet{--pc:#7A52CC}.c-rose{--pc:#D04A6E}
.c-amber{--pc:#C98A00}.c-green{--pc:#3E9A3A}.c-slate{--pc:#6B7A86}
.ptag{display:inline-flex;align-items:center;gap:5px;color:var(--ink)}
.proj-list{margin-bottom:10px}
.proj-row{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.proj-row input{flex:1;min-width:0;height:40px}
.proj-row select{width:auto;flex:none;height:40px}
.proj-row .btn{height:40px;padding:0 12px;flex:none}
.who{font-weight:600;color:var(--ink)}

.sheet.dialog{z-index:35;background:color-mix(in srgb,var(--bg) 92%,transparent)}
.hidden-line{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0 8px;padding:8px 12px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:.875rem}
.rk{display:block;margin:8px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem;word-break:break-all;user-select:all;color:var(--ink)}
.more{margin:10px 0;border-top:1px solid var(--line);padding-top:8px}
.more summary{cursor:pointer;font-weight:600;padding:4px 0}
.icon-btn.on-lock{color:var(--accent)}
.lock-mark{display:inline-flex;align-items:center;gap:4px;color:var(--accent);font-size:.75rem}

/* New-note form: field mics, topic chips, language switch, mic check */
.field-line{display:flex;align-items:center;gap:4px}
.field-line .title-in,.field-line .tags-in{flex:1;min-width:0}
.mic-f{flex:none;color:var(--muted)}
.mic-f.rec{color:var(--danger);background:var(--chip)}
.tag-box{border-bottom:1px solid var(--line);padding:4px 0}
.tag-box .tags-in{border-bottom:0}
.tag-chips{display:flex;flex-wrap:wrap;gap:6px}
.tag-chips:empty{display:none}
.tag-chips{padding-top:6px}
.tchip{display:inline-flex;align-items:center;gap:2px;height:32px;padding:0 4px 0 12px;border-radius:16px;background:var(--chip);color:var(--ink);font-size:.875rem;max-width:100%}
.tchip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tchip button{flex:none;width:28px;height:28px;border-radius:14px;color:var(--muted);font-size:1.1rem;line-height:1}
.tchip button:active{background:var(--line)}
.lang-btn{flex:none;height:32px;min-width:44px;padding:0 8px;border-radius:16px;border:1px solid var(--line);font-size:.8125rem;font-weight:700;color:var(--ink)}
.voicebar .done{background:var(--accent);color:var(--bg)}
.diag{list-style:none;margin:8px 0;padding:0}
.diag li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.9375rem}
.diag li b{font-weight:600;text-align:right}
.diag li b.bad{color:var(--danger)}
.diag li b.good{color:var(--accent)}
