/* GatherMind app — tokens & layout ported from GatherMind.UX mockups/two-column.html (canonical) */
:root{
  --bg:#000;--surface:#0a0a0c;--surface-2:#101014;--border:#26262c;--border-soft:#1a1a1f;
  --violet:#8b5cf6;--violet-dim:#3b2a63;--green:#4ade80;--amber:#fbbf24;
  --text:#e7e7ea;--text-dim:#9a9aa2;--text-faint:#6a6a72;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:Inter,-apple-system,system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);
  font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;height:100%;
  overflow-x:hidden}
*{scrollbar-width:thin;scrollbar-color:#2c2c34 transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#2c2c34;border-radius:6px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#3a3a44}

.app{max-width:1120px;margin:0 auto;height:100vh;height:100dvh;display:flex;flex-direction:column;
  border-left:1px solid var(--border-soft);border-right:1px solid var(--border-soft)}

.evhead{border-bottom:1px solid var(--border);padding:14px 22px;
  display:flex;align-items:center;gap:12px;flex:0 0 auto}
.evhead .brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--text)}
.evhead h1{font-size:15px;margin:0;font-weight:600;letter-spacing:-.01em}
.evhead h1 .ai{color:var(--violet)}
.evhead .live{display:flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:11px;color:var(--green)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--green);
  animation:pulse 1.6s infinite;flex:0 0 auto}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}

.evhead .tabs{display:flex;gap:4px;margin-left:auto}
.evhead .tabs button{background:none;border:none;color:var(--text-faint);font-family:var(--sans);
  font-size:13.5px;padding:6px 12px;border-radius:9px;cursor:pointer}
.evhead .tabs button.on{background:rgba(139,92,246,.16);color:var(--text)}
.evhead .tabs button:focus-visible{outline:2px solid var(--violet);outline-offset:2px}

.view{flex:1;min-height:0;display:none}
.view.on{display:flex}

/* ============ OVERVIEW ============ */
#overview{flex-direction:column;overflow-y:auto}
.ov{max-width:760px;width:100%;margin:0 auto;padding:20px 22px 60px}
.seclabel{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-faint);margin:26px 0 12px}
.seclabel:first-child{margin-top:6px}
.ov .empty{color:var(--text-dim);font-size:14px;padding:8px 2px}

.budgethead{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}
.budgethead .total{font-family:var(--mono);font-size:13px;color:var(--text-dim)}
.budgethead .total b{color:var(--text);font-size:15px}
.bar{display:flex;height:15px;border-radius:8px;overflow:hidden;background:#161619;
  border:1px solid var(--border-soft)}
.bar span{height:100%}
.s-paid{background:var(--green)}.s-comm{background:var(--violet)}
.s-plan{background:var(--amber);opacity:.55}
.legend{display:flex;flex-wrap:wrap;gap:16px;margin:11px 0 4px;font-size:12.5px;color:var(--text-dim)}
.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px;vertical-align:0}
.i-paid{background:var(--green)}.i-comm{background:var(--violet)}
.i-plan{background:var(--amber);opacity:.55}.i-left{background:#161619;border:1px solid var(--border)}
.lines{margin-top:14px;border-top:1px solid var(--border-soft)}
/* grid, not flex: real data has long names and notes; every row shares the
   same column proportions (no per-row width drift) and text wraps instead of
   clipping or pushing the amount off the edge */
.line{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,4fr) auto;
  align-items:baseline;gap:12px;padding:9px 2px;border-bottom:1px solid var(--border-soft)}
.line .nm{font-size:14px;overflow-wrap:anywhere}
.line .st{font-size:12px;color:var(--text-faint);overflow-wrap:anywhere}
.line .amt{font-family:var(--mono);font-size:13px;white-space:nowrap;text-align:right}

.ws{display:grid;grid-template-columns:22px minmax(0,2fr) minmax(0,3fr) auto;
  align-items:baseline;gap:12px;padding:11px 2px;border-bottom:1px solid var(--border-soft)}
.ws .em{font-size:16px;text-align:center}
.ws .nm{font-size:14.5px;font-weight:500;overflow-wrap:anywhere}
.ws .de{font-size:13px;color:var(--text-dim);overflow-wrap:anywhere}
.ws .flag{font-family:var(--mono);font-size:11px;white-space:nowrap;text-align:right}
.flag.ok{color:var(--green)}.flag.need{color:var(--violet)}.flag.prog{color:var(--text-faint)}

.date{display:flex;gap:14px;padding:8px 2px;font-size:14px;border-bottom:1px solid var(--border-soft)}
.date .d{font-family:var(--mono);font-size:12.5px;color:var(--amber);width:88px;flex:0 0 auto}
.date.soft .d{color:var(--text-faint)}

/* ============ CHAT ============ */
#chat{flex-direction:column}
.body{flex:1;display:flex;min-height:0}
.colhead{flex:0 0 auto;padding:11px 22px;font-family:var(--mono);font-size:11px;
  letter-spacing:.06em;color:var(--text-faint);border-bottom:1px solid var(--border-soft);
  display:flex;align-items:center;gap:8px}
.chat{flex:1 1 55%;display:flex;flex-direction:column;min-width:0;border-right:1px solid var(--border)}
.chat .scroll{flex:1;overflow-y:auto;padding:16px 22px 20px}
.msg{display:flex;margin:14px 0}
.msg.user{justify-content:flex-end}
.msg .col{max-width:82%}
.bubble{max-width:100%;width:fit-content;padding:10px 14px;border-radius:16px;font-size:14.5px;
  white-space:pre-wrap;overflow-wrap:break-word}
.msg.user .bubble{background:var(--violet);color:#fff;border-bottom-right-radius:5px}
.msg.agent .bubble{background:var(--surface-2);border:1px solid var(--border-soft);
  border-bottom-left-radius:5px}
.bubble b{font-weight:600}
.bubble a{color:#c4b5fd;text-decoration:underline;text-underline-offset:2px}
.bubble a:hover{color:#ddd6fe}
.msg.user .bubble a{color:#fff}
.who{font-family:var(--mono);font-size:10px;color:var(--text-faint);margin:0 5px 4px}
.msg.user .col{display:flex;flex-direction:column;align-items:flex-end}
.msg.agent .col{display:flex;flex-direction:column;align-items:flex-start}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin:10px 2px 2px}
.btns button{border:1px solid var(--violet);color:var(--violet);background:transparent;
  padding:8px 15px;border-radius:11px;font-size:13.5px;cursor:pointer;font-family:var(--sans);
  touch-action:manipulation}
/* hover styles only where a real pointer hovers: on touch, a sticky hover
   state made the first tap highlight the chip and demand a second tap */
@media(hover:hover){.btns button:hover{background:var(--violet);color:#fff}}
.btns button:active{background:var(--violet);color:#fff}
.btns button:focus-visible{outline:2px solid var(--violet);outline-offset:2px}

/* typing indicator */
.typing{display:inline-flex;gap:5px;align-items:center;padding:4px 2px}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--text-faint);animation:tp 1.2s infinite}
.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}
@keyframes tp{0%,60%,100%{opacity:.25}30%{opacity:1}}

/* composer (real input) */
.composer{flex:0 0 auto;padding:12px 22px 16px}
.composer form{display:flex;align-items:center;gap:10px;background:var(--surface-2);
  border:1px solid var(--border);border-radius:14px;padding:6px 8px 6px 15px}
.composer input{flex:1;background:none;border:none;color:var(--text);font-family:var(--sans);
  font-size:14.5px;outline:none;padding:8px 0}
.composer input::placeholder{color:var(--text-faint)}
.composer button{background:var(--violet);border:none;color:#fff;border-radius:10px;
  padding:8px 14px;font-size:15px;cursor:pointer}
.composer button:disabled{opacity:.4;cursor:default}

.log{flex:1 1 45%;display:flex;flex-direction:column;min-width:0;background:var(--surface)}
.log .colhead .peek,.log .colhead .chev{display:none}
.log .scroll{flex:1;overflow-y:auto;padding:16px 0 20px}
.entry{display:grid;grid-template-columns:58px 1fr;gap:14px;padding:9px 22px;align-items:baseline}
.entry .when{font-family:var(--mono);font-size:12px;color:var(--text-faint);
  white-space:nowrap;display:flex;justify-content:flex-end}
.entry .what{font-size:14.5px}
.entry .what a{color:#c4b5fd;text-decoration:underline;text-underline-offset:2px}
.entry .what a:hover{color:#ddd6fe}
.entry .what .linkless{color:var(--text-faint)}
.cut{display:flex;align-items:center;gap:10px;padding:8px 22px;margin:6px 0}
.cut::before,.cut::after{content:"";height:1px;background:var(--violet-dim);flex:1}
.cut span{font-family:var(--mono);font-size:11px;color:var(--violet);white-space:nowrap}
.composer.mobonly{display:none}

/* ===== gate & simple pages ===== */
.gatewrap{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}
.gate{width:100%;max-width:360px;text-align:center}
.gate .logo{margin-bottom:18px}
.gate h1{font-size:19px;margin:0 0 6px;font-weight:600}
.gate h1 .ai{color:var(--violet)}
.gate p{color:var(--text-dim);font-size:14px;margin:0 0 22px}
.gate form{display:flex;gap:10px}
.gate input{flex:1;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;
  color:var(--text);font-family:var(--mono);font-size:16px;letter-spacing:.15em;text-align:center;
  padding:12px 10px;outline:none;text-transform:uppercase}
.gate input:focus{border-color:var(--violet)}
.gate button{background:var(--violet);border:none;color:#fff;border-radius:12px;padding:12px 18px;
  font-size:14.5px;cursor:pointer;font-family:var(--sans)}
.gate .err{color:var(--amber);font-size:13px;margin-top:14px}
.gate .foot{margin-top:26px;color:var(--text-faint);font-size:12px}
/* signup/login/message pages: stacked forms with normal-text fields */
.gate.wide{max-width:430px}
.gate form.stack{flex-direction:column}
.gate form.stack input,.gate form.stack textarea{
  background:var(--surface-2);border:1px solid var(--border);border-radius:12px;
  color:var(--text);font-family:var(--sans);font-size:16px;text-align:left;
  padding:12px 14px;outline:none;letter-spacing:0;text-transform:none;flex:none;width:100%}
.gate form.stack input:focus,.gate form.stack textarea:focus{border-color:var(--violet)}
.gate .msgbody{color:var(--text-dim);font-size:14.5px;line-height:1.6}
.gate a{color:#c4b5fd}
.gate form.stack{margin-top:20px}
.gate form.stack textarea{resize:none;min-height:96px}
.gate .or{display:flex;align-items:center;gap:12px;margin:18px 0 14px;
  color:var(--text-faint);font-size:12.5px}
.gate .or::before,.gate .or::after{content:"";flex:1;height:1px;background:var(--border)}
.gate .gbtn{display:flex;align-items:center;justify-content:center;gap:10px;
  background:var(--surface-2);border:1px solid var(--border);border-radius:12px;
  padding:12px;color:var(--text);text-decoration:none;font-size:14.5px;font-weight:500}
.gate .gbtn svg{flex:none;display:block}
.gate .gbtn:hover{border-color:var(--violet)}
/* member account controls (Overview tab) — collapsed behind a small disclosure
   so the plan is the screen and Delete account is never front and centre */
.acctbox{margin-top:34px;border-top:1px solid var(--border-soft);padding-top:14px}
.acctbox summary{cursor:pointer;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--text-faint);list-style:none;width:fit-content}
.acctbox summary::-webkit-details-marker{display:none}
.acctbox summary::after{content:" ▾"}
.acctbox[open] summary::after{content:" ▴"}
.acctbox .acct{margin-top:12px}
.acct{display:flex;gap:10px;flex-wrap:wrap}
.acct button{background:none;border:1px solid var(--border);border-radius:10px;
  color:var(--text-dim);padding:8px 14px;font-size:12.5px;cursor:pointer;font-family:var(--sans)}
.acct button:hover{border-color:var(--violet);color:var(--text)}
.acct .danger:hover{border-color:var(--amber);color:var(--amber)}
/* in-app confirm dialog */
.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.62);display:flex;
  align-items:center;justify-content:center;z-index:60;padding:20px}
.modal-back[hidden]{display:none}
.modal{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;
  padding:22px 24px;max-width:380px;width:100%}
.modal p{margin:0 0 18px;font-size:14.5px;line-height:1.55;color:var(--text)}
.modal .row{display:flex;gap:10px;justify-content:flex-end}
.modal button{border:1px solid var(--border);background:none;border-radius:10px;
  color:var(--text-dim);padding:9px 16px;font-size:13.5px;cursor:pointer;font-family:var(--sans)}
.modal button:hover{color:var(--text);border-color:var(--violet)}
.modal .ok{background:var(--violet);border-color:var(--violet);color:#fff}
.modal .ok:hover{color:#fff}
.modal .ok.danger{background:none;border-color:var(--amber);color:var(--amber)}
.modal .ok.danger:hover{background:var(--amber);color:#151217}

/* ===== mobile ===== */
@media(max-width:820px){
  .app{border:none}
  /* 16px stops mobile browsers auto-zooming the page on input focus */
  .composer input{font-size:16px}
  /* collapsed sheet shows ONLY its header bar — no sliver of log rows */
  .log:not(.open) .scroll{display:none}
  .log .colhead .lbl{white-space:nowrap}
  .body{position:relative;display:block}
  .chat{position:absolute;inset:0;border-right:none;flex:none}
  .chat .scroll{padding-bottom:56px}
  .chat .composer{display:none}
  .composer.mobonly{display:block;flex:0 0 auto}
  .log{position:absolute;left:0;right:0;bottom:0;flex:none;height:48px;overflow:hidden;
    border-top:1px solid var(--border);z-index:5;box-shadow:0 -14px 40px rgba(0,0,0,.5);
    transition:height .28s ease}
  .log.open{height:80%}
  .log .colhead{cursor:pointer;border-bottom:1px solid var(--border-soft)}
  .log .colhead .peek{display:inline-flex;align-items:center;gap:7px;margin-left:12px;
    font-family:var(--sans);font-size:13px;letter-spacing:0;text-transform:none;color:var(--text-dim);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .log .colhead .chev{display:inline;margin-left:auto;color:var(--text-faint);transition:transform .28s}
  .log.open .colhead .chev{transform:rotate(180deg)}
}
