/* Trade Voice Journal — interface styles.
 *
 * Ethos: an instrument panel where data leads and structure is relentless.
 * Character: a 90s business desk intercom. Warm beige plastic casing, cream
 * button faces with soft bevels, a little green LCD status readout, embossed
 * mono labels, a speaker-grille divider, and a two-tone "kit stripe" trim.
 * Tactile and warm where you operate it — record key, status readout, entry
 * headers — calm and legible where the words and timestamps live. Two
 * functional colors only: teal for meaning, orange for live capture.
 */

:root{
  /* Cool, near-white casing — the data stays the focus */
  --paper:#fbfbfc;          /* app background */
  --surface:#ffffff;        /* card / button face */
  --paper-2:#eef0f3;        /* recessed tint, header strip */
  --ink:#191c22;            /* cool near-black: text + structural borders */
  --ink-2:#565d68;          /* secondary text */
  --dim:#8b929c;            /* labels, tertiary, timestamps */
  --field:#eceef2;          /* recessed field fill */

  /* Functional color — one calm accent + one capture color */
  --accent:#0c9488;         /* teal: identity, interaction, reflection */
  --accent-soft:#4cc2b4;    /* teal tint for on-dark links */
  --accent-tint:#e9f5f3;    /* teal wash for hover */
  --capture:#ff5a1e;        /* orange: live capture + primary action only */
  --alert:#d6453f;          /* error state only */

  /* Intercom hardware — beveled keys, speaker grille, glowing LCD readout */
  --bevel-hi:rgba(255,255,255,.85);  /* raised top-edge highlight */
  --bevel-lo:rgba(0,0,0,.18);        /* seated bottom-edge shadow */
  --sink:rgba(0,0,0,.14);            /* recessed inset for fields */
  --lcd:#cbd9b4;           /* pale green LCD glass */
  --lcd-ink:#23331d;       /* dark green readout digits */
  --lcd-line:#8fa178;      /* LCD bezel */
  --lcd-glow:rgba(122,168,84,.55);   /* faint backlight bloom */

  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-size:14px;line-height:1.5;
  -webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none;font-weight:600}
a:hover{text-decoration:underline}
button{font-family:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* Accent trim: a teal control rule with a thin orange baseline */
.kit-stripe,.topbar::after{
  background:linear-gradient(180deg,
    var(--accent) 0 3px, var(--capture) 3px 4px);
}

/* ---- auth --------------------------------------------------------------- */
body.auth{display:grid;place-items:center;min-height:100vh}
.card{background:var(--surface);border:1px solid var(--ink);
  padding:30px;width:min(380px,92vw);position:relative;
  box-shadow:inset 0 1px 0 var(--bevel-hi),0 2px 0 var(--bevel-lo)}
.card::before{content:"";position:absolute;left:0;right:0;top:0;height:5px;
  background:linear-gradient(180deg,
    var(--accent) 0 4px, var(--capture) 4px 5px)}
.card h1{margin:14px 0 24px;font-size:19px;font-weight:700;
  letter-spacing:.01em;text-transform:uppercase}
.card label{display:block;margin:16px 0;font-size:11px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.card input{width:100%;margin-top:7px;padding:11px 12px;background:var(--field);
  border:1px solid var(--ink);color:var(--ink);font-size:15px;
  box-shadow:inset 1px 1px 2px var(--sink)}
.card input:focus{outline:none;border-color:var(--accent);
  box-shadow:inset 0 0 0 1px var(--accent)}
.card button{margin-top:24px;width:100%;padding:11px;border:1px solid var(--ink);
  background:var(--capture);color:var(--ink);font-size:14px;font-weight:700;
  letter-spacing:.01em;cursor:pointer;transition:transform .06s,box-shadow .06s;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 2px 0 var(--bevel-lo)}
.card button:hover{background:#ff6d38}
.card button:active{transform:translateY(2px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 0 0 var(--bevel-lo)}
.err{color:var(--alert);font-size:13px;font-weight:700;margin:0 0 4px}

/* ---- shell -------------------------------------------------------------- */
.topbar{display:flex;justify-content:space-between;align-items:center;
  min-height:52px;padding:0 20px;background:var(--surface);color:var(--ink);
  border-bottom:1px solid var(--ink);box-shadow:inset 0 1px 0 var(--bevel-hi);
  position:sticky;top:0;z-index:5}
.topbar::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:4px}
.brand{font-weight:700;font-size:15px;letter-spacing:.02em;text-transform:uppercase}
.who{font-size:12px;color:var(--ink-2)}
.who a{color:var(--accent)}
main{max-width:840px;margin:0 auto;padding:26px 20px 64px}

/* ---- recorder (the intercom faceplate) ---------------------------------- */
.recorder{position:relative;display:flex;flex-direction:column;
  align-items:center;gap:12px;padding:6px 0 22px;margin-bottom:16px}
/* speaker-grille divider beneath the controls */
.recorder::after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;
  background:repeating-linear-gradient(90deg,
    var(--ink) 0 2px,transparent 2px 6px);opacity:.22}
.rec{display:inline-flex;align-items:center;gap:10px;
  padding:12px 28px;background:var(--capture);border:1px solid var(--ink);
  color:var(--ink);font-size:15px;font-weight:700;letter-spacing:.01em;
  cursor:pointer;transition:transform .06s,box-shadow .06s,background .1s;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 3px 0 var(--bevel-lo)}
.rec:hover{background:#ff6d38}
.rec:active{transform:translateY(3px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 0 0 var(--bevel-lo)}
.rec .dot{width:9px;height:9px;background:var(--ink);flex:0 0 auto;
  border-radius:50%}
.rec.on{background:var(--ink);color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 3px 0 var(--bevel-lo)}
.rec.on .dot{background:var(--capture);animation:pulse 1s steps(2,end) infinite}
@keyframes pulse{50%{opacity:.2}}

.hf{padding:8px 16px;background:var(--surface);border:1px solid var(--ink);
  color:var(--ink-2);font-family:var(--mono);font-size:11px;font-weight:600;
  letter-spacing:.04em;text-transform:uppercase;cursor:pointer;
  transition:transform .06s,box-shadow .06s,background .1s;
  box-shadow:inset 0 1px 0 var(--bevel-hi),0 2px 0 var(--bevel-lo)}
.hf:hover{background:var(--paper-2)}
.hf:active{transform:translateY(2px);
  box-shadow:inset 0 1px 0 var(--bevel-hi),0 0 0 var(--bevel-lo)}
.hf.on{background:var(--accent);color:#fff;border-color:var(--ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 2px 0 var(--bevel-lo)}
/* LCD status readout — pale green glass with a faint backlight glow */
.meta{font-family:var(--mono);font-size:12px;color:var(--lcd-ink);
  background:
    repeating-linear-gradient(0deg,
      rgba(0,0,0,.05) 0 1px, transparent 1px 3px),
    var(--lcd);
  border:1px solid var(--lcd-line);
  box-shadow:inset 0 1px 2px rgba(0,0,0,.22),
    0 0 7px var(--lcd-glow), inset 0 0 6px rgba(255,255,255,.35);
  padding:5px 14px;letter-spacing:.03em;text-align:center;
  text-shadow:0 0 2px var(--lcd-glow);min-width:min(360px,80vw)}
.diag{font-family:var(--mono);font-size:11px;color:var(--dim);min-height:1em;
  word-break:break-word;text-align:center;max-width:90vw}

/* live transcription preview while recording — same LCD glass */
.live-wrap{margin:14px 0}
.live{font-family:var(--mono);font-size:13px;color:var(--lcd-ink);
  min-height:1.2em;font-weight:600;padding:2px 0}
.live-seg{opacity:.6}

/* ---- search ------------------------------------------------------------- */
.searchrow{margin:18px 0}
#search{width:100%;padding:11px 14px;background:var(--field);
  border:1px solid var(--ink);color:var(--ink);font-size:14px;font-weight:500;
  box-shadow:inset 1px 1px 2px var(--sink)}
#search::placeholder{color:var(--dim);font-weight:400}
#search:focus{outline:none;border-color:var(--accent);
  box-shadow:inset 0 0 0 1px var(--accent)}

/* ---- feed --------------------------------------------------------------- */
.empty{color:var(--ink-2);text-align:center;padding:52px 0;font-size:13px;
  font-weight:500}
.entry{background:var(--surface);border:1px solid var(--ink);margin-bottom:14px;
  box-shadow:inset 0 1px 0 var(--bevel-hi),0 2px 0 var(--bevel-lo)}

/* Header: a warm panel strip with a raised edge and a teal underline rule —
   the interpolation between a filled band and a bare hairline. */
.entry-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:8px 13px;border-bottom:2px solid var(--accent);background:var(--paper-2);
  box-shadow:inset 0 1px 0 var(--bevel-hi)}
.entry-head time{font-family:var(--mono);font-size:13px;font-weight:700;
  letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--ink)}
.entry-head .dur{font-family:var(--mono);font-size:11px;font-weight:600;
  font-variant-numeric:tabular-nums;color:var(--ink);background:var(--surface);
  padding:2px 7px;border:1px solid var(--ink);
  box-shadow:inset 0 1px 0 var(--bevel-hi)}
.entry-head audio{height:30px;margin-left:auto}

/* two parallel columns: transcript | reflection */
.entry-cols{display:flex;gap:0;align-items:stretch}
.entry-transcript{flex:1 1 56%;min-width:0;padding:14px}
.entry-analysis{flex:1 1 44%;min-width:0;padding:14px;
  border-left:1px solid var(--ink);background:var(--paper)}
.analysis-label{font-family:var(--mono);font-size:10px;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink);
  margin-bottom:10px;display:inline-block;
  border-bottom:2px solid var(--accent);padding-bottom:2px}
.analysis-body{font-size:13px;color:var(--ink-2);white-space:pre-wrap;
  line-height:1.6}
.analysis-body.pending{color:var(--dim);font-style:italic}
.analysis-body.err{color:var(--alert);font-weight:600}
.analysis-go,.analysis-redo{margin-top:12px;padding:7px 13px;cursor:pointer;
  background:var(--surface);border:1px solid var(--ink);color:var(--ink);
  font-size:12px;font-weight:600;letter-spacing:.01em;
  transition:transform .06s,box-shadow .06s,background .1s;
  box-shadow:inset 0 1px 0 var(--bevel-hi),0 2px 0 var(--bevel-lo)}
.analysis-go:hover,.analysis-redo:hover{background:var(--accent);color:#fff}
.analysis-go:active,.analysis-redo:active{transform:translateY(2px);
  box-shadow:inset 0 1px 0 var(--bevel-hi),0 0 0 var(--bevel-lo)}
.analysis-redo{font-size:10px}

@media (max-width:640px){
  .entry-cols{flex-direction:column}
  .entry-analysis{border-left:0;border-top:1px solid var(--ink)}
}

/* ---- segments (transcript lines) ---------------------------------------- */
.seg{display:flex;gap:12px;padding:4px 0;align-items:baseline}
.seg-ts{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--dim);
  flex:0 0 auto;padding-top:2px;font-variant-numeric:tabular-nums}
.seg-body{cursor:text;padding:1px 5px;margin:0 -5px;color:var(--ink);
  transition:background .1s}
.seg-body:hover{background:var(--accent-tint)}
.seg-body.edited{border-left:2px solid var(--accent);padding-left:7px;
  margin-left:-7px}
.seg-body textarea{width:100%;min-width:240px;background:var(--surface);
  color:var(--ink);border:1px solid var(--accent);font:inherit;padding:7px;
  box-shadow:inset 0 0 0 1px var(--accent)}

@media (prefers-reduced-motion:reduce){.rec.on .dot{animation:none}}
