/* ============================================================
   JOU.ONE — Premium Dark UI
   ============================================================ */
:root {
  --bg-0: #0a0a0a;
  --bg-1: #111;
  --bg-2: #1a1a1a;
  --bg-3: #222;
  --bg-4: #2a2a2a;
  --bg-5: #333;
  --border: #262626;
  --border-l: #363636;
  --tx-1: #f0f0f0;
  --tx-2: #a0a0a0;
  --tx-3: #666;
  --jou: #10a37f;
  --jou-d: #0d8a6a;
  --jou-bg: rgba(16,163,127,.1);
  --claude: #c96442;
  --claude-d: #a8533a;
  --claude-bg: rgba(201,100,66,.1);
  --danger: #ef4444;
  --r: 12px;
  --rs: 8px;
  --t: .18s ease;
  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --mono: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace;
  --sidebar-w: 272px;
  --input-max: 820px;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;font-family:var(--font);font-size:15px;background:var(--bg-0);color:var(--tx-1);overflow:hidden;-webkit-font-smoothing:antialiased}
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bg-5);border-radius:3px}
::selection{background:var(--jou);color:#fff}
.hidden{display:none!important}

/* ============================================================
   LOGIN
   ============================================================ */
.login-screen{height:100vh;display:flex;align-items:center;justify-content:center;position:relative}
.login-bg{position:absolute;inset:0;background:radial-gradient(ellipse at 30% 50%,rgba(16,163,127,.06),transparent 60%),radial-gradient(ellipse at 70% 30%,rgba(201,100,66,.04),transparent 50%)}
.login-card{position:relative;width:400px;max-width:92vw;padding:48px 40px;background:var(--bg-1);border:1px solid var(--border);border-radius:20px;backdrop-filter:blur(20px)}
.login-logo{text-align:center;margin-bottom:36px}
.logo-glyph{width:56px;height:56px;margin:0 auto 16px;background:linear-gradient(135deg,var(--jou),#0d7a5c);border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:800;color:#fff;box-shadow:0 8px 32px rgba(16,163,127,.25)}
.login-logo h1{font-size:28px;font-weight:700;letter-spacing:-.5px}
.login-logo h1 span{color:var(--tx-3);font-weight:400}

.field{position:relative;margin-bottom:18px}
.field input{width:100%;padding:14px 16px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--rs);color:var(--tx-1);font-size:15px;font-family:var(--font);outline:none;transition:border var(--t)}
.field input:focus{border-color:var(--jou)}
.field label{position:absolute;left:16px;top:14px;color:var(--tx-3);font-size:14px;pointer-events:none;transition:all var(--t)}
.field input:not(:placeholder-shown)+label,.field input:focus+label{top:-8px;left:12px;font-size:11px;background:var(--bg-1);padding:0 4px;color:var(--jou)}

.btn-login{width:100%;padding:14px;margin-top:6px;background:linear-gradient(135deg,var(--jou),var(--jou-d));color:#fff;border:none;border-radius:var(--rs);font-size:15px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all var(--t);font-family:var(--font)}
.btn-login:hover{filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 4px 20px rgba(16,163,127,.3)}
.btn-login:active{transform:translateY(0)}
.error-msg{color:var(--danger);font-size:13px;margin-top:14px;text-align:center;min-height:18px}

/* ============================================================
   APP LAYOUT
   ============================================================ */
.app{height:100vh;display:flex}

/* ============================================================
   SIDEBAR
   ============================================================ */
.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);height:100vh;background:var(--bg-1);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:all .25s ease;overflow:hidden}
.sidebar.collapsed{width:0;min-width:0;border:none;opacity:0;pointer-events:none}

.sb-head{padding:14px 16px;display:flex;align-items:center;justify-content:space-between}
.sb-logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px}
.glyph{width:30px;height:30px;background:linear-gradient(135deg,var(--jou),#0d7a5c);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#fff}
.wordmark{letter-spacing:-.3px}

.ico-btn{background:none;border:none;color:var(--tx-2);cursor:pointer;padding:6px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all var(--t)}
.ico-btn:hover{background:var(--bg-3);color:var(--tx-1)}
.ico-btn.danger:hover{color:var(--danger)}

.sb-tabs{display:flex;margin:0 12px;background:var(--bg-2);border-radius:var(--rs);padding:3px;gap:2px}
.sb-tab{flex:1;padding:8px 0;background:none;border:none;border-radius:6px;color:var(--tx-2);font-size:13px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:all var(--t);font-family:var(--font)}
.sb-tab:hover{color:var(--tx-1)}
.sb-tab.active{background:var(--bg-4);color:var(--tx-1);box-shadow:0 1px 3px rgba(0,0,0,.2)}
.dot{width:7px;height:7px;border-radius:50%}
.dot.jou{background:var(--jou)}.dot.claude{background:var(--claude)}

.sb-new{margin:12px;padding:10px;background:transparent;border:1px dashed var(--border-l);border-radius:var(--rs);color:var(--tx-2);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all var(--t);font-family:var(--font)}
.sb-new:hover{background:var(--bg-2);border-color:var(--tx-3);color:var(--tx-1)}

.sb-sessions{flex:1;overflow-y:auto;padding:4px 8px}
.s-item{padding:10px 12px;border-radius:var(--rs);cursor:pointer;display:flex;align-items:center;gap:10px;transition:background var(--t);margin-bottom:1px}
.s-item:hover{background:var(--bg-3)}
.s-item.active{background:var(--bg-4)}
.s-dot{width:6px;height:6px;min-width:6px;border-radius:50%}
.s-name{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tx-2)}
.s-item.active .s-name{color:var(--tx-1)}
.s-count{font-size:11px;color:var(--tx-3)}

.sb-foot{padding:12px 16px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--tx-3)}

.sidebar-open{position:fixed;top:14px;left:14px;z-index:100;background:var(--bg-1);border:1px solid var(--border);color:var(--tx-2);padding:8px;border-radius:8px;cursor:pointer;display:flex;transition:all var(--t)}
.sidebar-open:hover{background:var(--bg-3);color:var(--tx-1)}

/* ============================================================
   MAIN
   ============================================================ */
.main{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;position:relative}

/* WELCOME */
.welcome{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}
.w-glyph{width:72px;height:72px;background:linear-gradient(135deg,var(--jou),#0d7a5c);border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:800;color:#fff;margin-bottom:20px;box-shadow:0 8px 40px rgba(16,163,127,.2)}
.welcome h2{font-size:22px;font-weight:600;margin-bottom:6px}
.welcome p{color:var(--tx-2);margin-bottom:28px;font-size:15px}
.w-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:560px}
.chip{padding:10px 16px;background:var(--bg-2);border:1px solid var(--border);border-radius:20px;color:var(--tx-2);font-size:13px;cursor:pointer;transition:all var(--t);font-family:var(--font);white-space:nowrap}
.chip:hover{background:var(--bg-3);color:var(--tx-1);border-color:var(--border-l)}

/* CHAT */
.chat{flex:1;display:flex;flex-direction:column;height:100vh}
.chat-head{padding:10px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;min-height:52px;gap:12px}
.chat-head-left{display:flex;align-items:center;gap:10px;min-width:0}
.chat-head-right{display:flex;gap:2px}
.badge{padding:3px 10px;border-radius:10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.badge.jou{background:var(--jou-bg);color:var(--jou)}
.badge.claude{background:var(--claude-bg);color:var(--claude)}
.ch-name{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* MESSAGES */
.messages{flex:1;overflow-y:auto;padding:16px 0;scroll-behavior:smooth}
.msg{padding:12px 20px;max-width:var(--input-max);margin:0 auto;width:100%;animation:fadeUp .2s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.msg-inner{display:flex;gap:14px;align-items:flex-start}
.avatar{width:30px;height:30px;min-width:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff}
.avatar.user{background:var(--bg-5)}
.avatar.jou{background:var(--jou)}
.avatar.claude{background:var(--claude)}
.msg-body{flex:1;min-width:0;line-height:1.65;font-size:15px}
.msg-role{font-size:12px;font-weight:600;color:var(--tx-2);margin-bottom:2px;text-transform:uppercase;letter-spacing:.3px}
.msg-text{word-wrap:break-word;overflow-wrap:break-word}
.msg-text p{margin-bottom:10px}
.msg-text p:last-child{margin-bottom:0}
.msg-text ul,.msg-text ol{margin:8px 0;padding-left:22px}
.msg-text li{margin-bottom:3px}
.msg-text h1,.msg-text h2,.msg-text h3,.msg-text h4{margin:14px 0 6px;font-weight:600}
.msg-text h1{font-size:20px}.msg-text h2{font-size:18px}.msg-text h3{font-size:16px}
.msg-text blockquote{border-left:3px solid var(--border-l);padding-left:12px;color:var(--tx-2);margin:8px 0}
.msg-text a{color:var(--jou);text-decoration:none}
.msg-text a:hover{text-decoration:underline}
.msg-text strong{font-weight:600}
.msg-text table{width:100%;border-collapse:collapse;margin:10px 0;font-size:14px}
.msg-text th,.msg-text td{padding:7px 12px;border:1px solid var(--border);text-align:left}
.msg-text th{background:var(--bg-3);font-weight:600}
.msg-text code{font-family:var(--mono);font-size:13px;background:var(--bg-3);padding:2px 5px;border-radius:4px}
.msg-text pre{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--rs);margin:10px 0;overflow:hidden;position:relative}
.msg-text pre code{display:block;padding:14px 16px;overflow-x:auto;background:transparent;border-radius:0}
.code-head{display:flex;justify-content:space-between;align-items:center;padding:6px 14px;background:var(--bg-0);font-size:11px;color:var(--tx-3);border-bottom:1px solid var(--border)}
.copy-btn{background:none;border:1px solid var(--border);color:var(--tx-3);padding:2px 10px;border-radius:4px;font-size:10px;cursor:pointer;font-family:var(--font);transition:all var(--t)}
.copy-btn:hover{color:var(--tx-1);border-color:var(--border-l)}
.copy-btn.ok{color:var(--jou);border-color:var(--jou)}

/* FILE ATTACHMENTS IN MESSAGES */
.msg-files{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.msg-file{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:var(--bg-3);border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--tx-2);max-width:100%}
.msg-file-icon{width:28px;height:28px;min-width:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;text-transform:uppercase}
.msg-file-icon.img{background:var(--jou-bg);color:var(--jou)}
.msg-file-icon.audio{background:#7c3aed20;color:#7c3aed}
.msg-file-icon.code{background:#f59e0b20;color:#f59e0b}
.msg-file-icon.doc{background:#3b82f620;color:#3b82f6}
.msg-file-icon.other{background:var(--bg-4);color:var(--tx-3)}
.msg-file-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.msg-file-size{color:var(--tx-3);font-size:11px;white-space:nowrap}
.msg-file a{color:inherit;text-decoration:none;display:flex;align-items:center;gap:6px}
.msg-file a:hover .msg-file-name{color:var(--tx-1);text-decoration:underline}
.msg-img{max-width:360px;max-height:260px;border-radius:8px;cursor:pointer;border:1px solid var(--border);transition:transform var(--t)}
.msg-img:hover{transform:scale(1.02)}
.msg-audio{height:36px;border-radius:18px}

/* TYPING */
.typing{display:flex;gap:4px;padding:4px 0}
.typing span{width:7px;height:7px;background:var(--tx-3);border-radius:50%;animation:blink 1.4s ease-in-out infinite}
.typing span:nth-child(2){animation-delay:.2s}
.typing span:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}

/* DROP OVERLAY */
.drop-overlay{position:absolute;inset:0;background:rgba(10,10,10,.85);z-index:50;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.drop-inner{text-align:center;color:var(--jou);padding:40px;border:2px dashed var(--jou);border-radius:20px;background:var(--jou-bg)}
.drop-inner p{margin-top:12px;font-size:15px;font-weight:500}

/* ============================================================
   INPUT AREA
   ============================================================ */
.input-area{padding:0 20px 16px;max-width:var(--input-max);margin:0 auto;width:100%}

/* FILE BAR */
.file-bar{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0}
.fb-item{display:flex;align-items:center;gap:6px;padding:5px 10px;background:var(--bg-3);border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--tx-2);animation:fadeUp .15s ease}
.fb-item img{width:28px;height:28px;object-fit:cover;border-radius:4px}
.fb-remove{background:none;border:none;color:var(--tx-3);cursor:pointer;font-size:14px;padding:0 2px;line-height:1;transition:color var(--t)}
.fb-remove:hover{color:var(--danger)}

/* AUDIO BAR */
.audio-bar{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:13px;color:var(--tx-2)}
.rec-dot{width:9px;height:9px;background:var(--danger);border-radius:50%;animation:pulse 1s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.pill-btn{padding:4px 14px;border:1px solid var(--border);border-radius:14px;background:none;color:var(--tx-2);font-size:12px;cursor:pointer;font-family:var(--font);transition:all var(--t)}
.pill-btn:hover{background:var(--bg-3);color:var(--tx-1)}
.pill-btn.accent{border-color:var(--jou);color:var(--jou)}
.pill-btn.accent:hover{background:var(--jou-bg)}

/* COMPOSER */
.composer{display:flex;align-items:flex-end;gap:6px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r);padding:8px 10px;transition:border-color var(--t)}
.composer:focus-within{border-color:var(--border-l)}
.composer-btns{display:flex;gap:1px;padding-bottom:2px}
.composer textarea{flex:1;background:transparent;border:none;color:var(--tx-1);font-size:15px;font-family:var(--font);resize:none;outline:none;max-height:180px;line-height:1.5;padding:4px 4px}
.composer textarea::placeholder{color:var(--tx-3)}
.send-btn,.stop-btn{width:34px;height:34px;min-width:34px;border-radius:8px;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--t)}
.send-btn{background:var(--jou);color:#fff}
.send-btn:hover{background:var(--jou-d)}
.send-btn:disabled{opacity:.25;cursor:default}
.stop-btn{background:var(--danger);color:#fff}
.stop-btn:hover{filter:brightness(1.1)}

/* ============================================================
   MODALS
   ============================================================ */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:500;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px);animation:fadeIn .15s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:var(--bg-1);border:1px solid var(--border);border-radius:16px;padding:24px;width:400px;max-width:92vw;animation:slideUp .2s ease}
@keyframes slideUp{from{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}
.modal h3{font-size:16px;margin-bottom:16px}
.modal input{width:100%;padding:11px 14px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--rs);color:var(--tx-1);font-size:14px;font-family:var(--font);outline:none;margin-bottom:16px}
.modal input:focus{border-color:var(--jou)}
.modal-foot{display:flex;justify-content:flex-end;gap:8px}
.modal-foot button{padding:8px 20px;border-radius:8px;border:1px solid var(--border);background:var(--bg-2);color:var(--tx-1);cursor:pointer;font-family:var(--font);font-size:13px;transition:all var(--t)}
.modal-foot button:hover{background:var(--bg-3)}
.modal-foot .primary{background:var(--jou);border-color:var(--jou);color:#fff}
.modal-foot .primary:hover{background:var(--jou-d)}
.modal-foot .del{background:var(--danger);border-color:var(--danger);color:#fff}
.modal-foot .del:hover{filter:brightness(.9)}

/* IMAGE LIGHTBOX */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:1000;display:flex;align-items:center;justify-content:center;cursor:pointer;animation:fadeIn .15s ease}
.lightbox img{max-width:92vw;max-height:92vh;object-fit:contain;border-radius:8px}

/* ============================================================
   RESPONSIVE
   ============================================================ */
.mobile-only{display:none}
@media(max-width:768px){
  .sidebar{position:fixed;z-index:200;left:0;top:0}
  .sidebar.collapsed{transform:translateX(-100%)}
  .sidebar-open{display:flex!important}
  .mobile-only{display:flex}
  .w-chips{flex-direction:column;align-items:stretch}
  .msg{padding:10px 14px}
  .input-area{padding:0 10px 10px}
  .login-card{padding:36px 24px}
}
