
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0c0c10;--bg1:#13131a;--bg2:#1a1a24;--bg3:#22222e;--bg4:#2a2a38;
--tx:#e5e5eb;--tx2:#9a9ab0;--tx3:#5a5a72;--acc:#7c6fff;--acc2:#6b5ce6;--accbg:rgba(124,111,255,.08);
--brd:#252530;--red:#ef4444;--green:#22c55e;--blue:#3b82f6;--yellow:#f59e0b;--teal:#14b8a6;
--rad:8px;--font:'Inter',system-ui,sans-serif;--mono:'JetBrains Mono',monospace;--sw:260px;--rw:310px}
html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--tx);overflow:hidden}
body{display:flex}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:#333;border-radius:3px}
a{color:var(--acc)}
/* AUTH */
.auth-body{justify-content:center;align-items:center}
.auth-card{background:var(--bg1);border:1px solid var(--brd);border-radius:12px;padding:36px;max-width:360px;width:90%;text-align:center}
.auth-card h1{font-size:20px;margin-bottom:4px}.auth-sub{color:var(--tx3);font-size:13px;margin-bottom:20px}
.auth-card input{width:100%;padding:10px;border-radius:8px;border:1px solid var(--brd);background:var(--bg2);color:var(--tx);font-size:14px;outline:none;margin-bottom:10px}
.auth-card input:focus{border-color:var(--acc)}
.auth-card button{width:100%;padding:10px;border:none;border-radius:8px;background:var(--acc);color:white;font-size:14px;cursor:pointer;font-weight:600}
.auth-card button:hover{background:var(--acc2)}
.auth-err{color:var(--red);font-size:12px;margin-top:8px;display:none}
/* ADMIN */
.admin-body{flex-direction:column;overflow:auto}
.admin-top{display:flex;align-items:center;gap:16px;padding:12px 20px;background:var(--bg1);border-bottom:1px solid var(--brd)}
.admin-brand{font-size:16px;font-weight:600;flex:1}
.admin-link{color:var(--tx2);font-size:13px;text-decoration:none;background:none;border:none;cursor:pointer;font-family:var(--font)}
.admin-link:hover{color:var(--tx)}
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:20px;max-width:1200px;margin:0 auto;width:100%}
.admin-card{background:var(--bg1);border:1px solid var(--brd);border-radius:var(--rad);padding:16px}
.admin-card h3{font-size:14px;margin-bottom:12px;color:var(--tx2)}
.admin-card h4{font-size:13px;color:var(--tx2)}
.adm-tbl{width:100%;border-collapse:collapse;font-size:12px}
.adm-tbl th,.adm-tbl td{padding:6px 8px;border-bottom:1px solid var(--brd);text-align:left}
.adm-tbl th{color:var(--tx3);font-weight:600}
.dot-on{color:var(--green)}.dot-off{color:var(--tx3)}
.adm-input{width:100%;padding:7px;border-radius:5px;border:1px solid var(--brd);background:var(--bg2);color:var(--tx);font-size:12px;outline:none;margin-bottom:6px}
.adm-input:focus{border-color:var(--acc)}
.adm-btn{padding:6px 14px;border:1px solid var(--brd);border-radius:5px;background:var(--acc);color:white;font-size:12px;cursor:pointer;margin-bottom:6px}
.adm-btn:hover{background:var(--acc2)}
.adm-del{background:none;border:1px solid var(--brd);color:var(--red);border-radius:4px;padding:2px 8px;font-size:11px;cursor:pointer}
.adm-del:hover{background:rgba(239,68,68,.1)}
.adm-msg{font-size:12px;display:none;margin-top:4px}
.adm-empty{color:var(--tx3);font-size:12px}
/* SIDEBAR */
.sidebar{width:var(--sw);height:100vh;background:var(--bg1);border-right:1px solid var(--brd);display:flex;flex-direction:column;flex-shrink:0}
.sb-top{padding:14px}.sb-brand{font-size:15px;font-weight:600;margin-bottom:10px}
.sb-new{width:100%;padding:7px;border:1px dashed var(--brd);border-radius:6px;background:transparent;color:var(--tx2);font-size:12px;cursor:pointer;font-family:var(--font)}
.sb-new:hover{border-color:var(--acc);color:var(--acc)}
.sb-search{width:calc(100% - 28px);margin:0 14px 8px;padding:6px 10px;border:1px solid var(--brd);border-radius:6px;background:var(--bg2);color:var(--tx);font-size:12px;outline:none}
.sb-list{flex:1;overflow-y:auto;padding:0 6px}
.si{display:flex;align-items:center;padding:8px 10px;border-radius:6px;cursor:pointer;margin-bottom:1px;font-size:12px;color:var(--tx2)}
.si:hover{background:var(--bg2);color:var(--tx)}.si.active{background:var(--bg3);color:var(--tx)}
.si-t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.si-x{display:none;background:0;border:0;color:var(--tx3);cursor:pointer;font-size:13px}.si:hover .si-x{display:block}.si-x:hover{color:var(--red)}
.sb-foot{padding:10px 14px;border-top:1px solid var(--brd);font-size:11px;color:var(--tx3);display:flex;flex-direction:column;gap:4px}
.foot-link{background:0;border:0;color:var(--tx3);cursor:pointer;font-size:11px;font-family:var(--font);padding:0}
.foot-link:hover{color:var(--tx)}
/* CENTER */
.center{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0}
.topbar{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--brd);background:var(--bg1);height:46px;flex-shrink:0}
.tb-menu{display:none;background:0;border:0;color:var(--tx2);font-size:18px;cursor:pointer}
.tb-model{background:var(--bg2);color:var(--tx);border:1px solid var(--brd);border-radius:6px;padding:4px 8px;font-size:11px;font-family:var(--font);outline:none;max-width:300px}
.tb-tag{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:500}
.tb-spacer{flex:1}
.tb-btn{background:var(--bg2);color:var(--tx2);border:1px solid var(--brd);border-radius:6px;padding:4px 12px;font-size:11px;cursor:pointer;font-family:var(--font)}
.tb-btn:hover{background:var(--bg3);color:var(--tx)}
/* System bar */
.sys-bar{border-bottom:1px solid var(--brd);background:var(--bg1)}
.sys-header{display:flex;justify-content:space-between;padding:7px 16px;cursor:pointer;font-size:12px;color:var(--tx2);user-select:none}
.sys-right{display:flex;gap:6px;align-items:center}
.sys-sel{background:var(--bg2);color:var(--tx2);border:1px solid var(--brd);border-radius:4px;padding:2px 6px;font-size:11px;outline:none}
.sys-arrow{font-size:10px;transition:.2s}.sys-bar.collapsed .sys-text{display:none}.sys-bar.collapsed .sys-arrow{transform:rotate(-90deg)}
.sys-text{width:100%;padding:6px 16px 10px;border:none;background:transparent;color:var(--tx);font-family:var(--mono);font-size:12px;resize:vertical;min-height:44px;max-height:160px;outline:none;line-height:1.5}
/* Chat */
.chat-area{flex:1;overflow-y:auto;padding:16px 0}
.messages{max-width:780px;margin:0 auto;padding:0 24px}
.welcome{text-align:center;padding:60px 20px;color:var(--tx2)}.welcome h2{font-size:22px;color:var(--tx);margin-bottom:8px;font-weight:500}
.welcome p{font-size:13px;line-height:1.6;margin-bottom:14px}
.msg{padding:14px 0;border-bottom:1px solid var(--brd);animation:fi .2s ease}.msg:last-child{border-bottom:none}
@keyframes fi{from{opacity:0}to{opacity:1}}
.msg-role{font-size:12px;font-weight:600;margin-bottom:5px;display:flex;gap:8px;align-items:center}
.msg-role .r-user{color:var(--acc)}.msg-role .r-model{color:var(--teal)}.msg-role .msg-meta{font-size:10px;font-weight:400;color:var(--tx3)}
.msg-body{font-size:14px;line-height:1.7}
.msg-body pre{background:var(--bg2);border:1px solid var(--brd);border-radius:6px;padding:10px;overflow-x:auto;margin:6px 0;font-size:12px}
.msg-body code{font-family:var(--mono);font-size:12px}.msg-body :not(pre)>code{background:var(--accbg);padding:1px 4px;border-radius:3px}
.msg-body ul,.msg-body ol{padding-left:18px;margin:4px 0}.msg-body blockquote{border-left:3px solid var(--acc);padding-left:10px;color:var(--tx2);margin:6px 0}
.msg-body h1,.msg-body h2,.msg-body h3{margin:10px 0 4px}.msg-body table{border-collapse:collapse;margin:6px 0;width:100%;font-size:12px}
.msg-body th,.msg-body td{border:1px solid var(--brd);padding:5px 8px;text-align:left}.msg-body th{background:var(--bg2)}
.msg-body img{max-width:400px;border-radius:6px;margin:6px 0;border:1px solid var(--brd);cursor:pointer}
.msg-body audio{margin:6px 0;width:100%;max-width:300px}
.msg-actions{display:none;gap:4px;margin-top:6px}.msg:hover .msg-actions{display:flex}
.msg-actions button{background:var(--bg2);border:1px solid var(--brd);color:var(--tx2);cursor:pointer;border-radius:4px;font-size:10px;padding:2px 6px;font-family:var(--font)}
.msg-actions button:hover{color:var(--tx);background:var(--bg3)}
.streaming::after{content:'\\25CF';animation:bk .5s infinite;color:var(--acc);margin-left:2px}@keyframes bk{0%,100%{opacity:1}50%{opacity:.15}}
.att-card{background:var(--bg2);border:1px solid var(--brd);border-radius:6px;padding:6px 10px;font-size:12px;max-width:300px;margin-top:6px;display:inline-block;margin-right:6px}
.att-card img{max-width:280px;border-radius:4px;margin-top:4px;display:block}
.yt-card{display:flex;gap:8px;background:var(--bg2);border:1px solid var(--brd);border-radius:6px;padding:8px;max-width:380px;margin-top:6px}
.yt-card img{width:100px;border-radius:4px;flex-shrink:0}.yt-card .yt-t{font-size:12px;font-weight:500;color:var(--tx)}.yt-card .yt-a{font-size:11px;color:var(--tx3)}
/* Input */
.input-bar{border-top:1px solid var(--brd);padding:10px 24px 6px;background:var(--bg1);flex-shrink:0}
.att-preview{max-width:780px;margin:0 auto 4px;display:flex;flex-wrap:wrap;gap:4px}
.att-prev{background:var(--bg2);border:1px solid var(--brd);border-radius:6px;padding:3px 8px;font-size:11px;color:var(--tx2);display:flex;align-items:center;gap:4px}
.att-prev img{height:32px;border-radius:3px}
.att-prev-x{background:0;border:0;color:var(--tx3);cursor:pointer;font-size:13px}.att-prev-x:hover{color:var(--red)}
.input-row{max-width:780px;margin:0 auto;display:flex;align-items:flex-end;gap:4px;background:var(--bg2);border:1px solid var(--brd);border-radius:18px;padding:3px}
.input-row:focus-within{border-color:var(--acc)}
.in-btn{background:0;border:0;color:var(--tx3);font-size:16px;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0}
.in-btn:hover{background:var(--bg3);color:var(--tx)}
.in-btn.recording{color:var(--red);animation:bk .8s infinite}
#user-input{flex:1;border:0;background:0;color:var(--tx);font-size:13px;font-family:var(--font);resize:none;outline:none;max-height:140px;line-height:1.5;padding:6px 4px}
.in-send{background:var(--acc);color:white;border:0;border-radius:50%;width:32px;height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px}
.in-send:hover{background:var(--acc2)}.in-send:disabled{opacity:.3}
.input-foot{max-width:780px;margin:3px auto 0;display:flex;justify-content:space-between;font-size:11px;color:var(--tx3)}
.foot-btn{background:0;border:1px solid var(--brd);color:var(--tx2);border-radius:4px;padding:2px 8px;font-size:10px;cursor:pointer;margin-left:4px;font-family:var(--font)}
.foot-btn:hover{color:var(--tx)}
/* Right panels */
.rpanel{width:var(--rw);height:100vh;background:var(--bg1);border-left:1px solid var(--brd);flex-shrink:0;display:flex;flex-direction:column}
.rp-header{display:flex;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--brd);font-size:13px;font-weight:600}
.rp-close{background:0;border:0;color:var(--tx2);font-size:18px;cursor:pointer}.rp-close:hover{color:var(--tx)}
.rp-body{flex:1;overflow-y:auto;padding:8px}
.rp-section{border:1px solid var(--brd);border-radius:6px;margin-bottom:6px;padding:10px}
.rp-title{font-size:10px;font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.rp-p{margin-bottom:5px}.rp-p label{display:flex;justify-content:space-between;font-size:11px;color:var(--tx2);margin-bottom:2px}
.rp-p b{color:var(--acc);font-family:var(--mono);font-size:10px}
.rp-p input[type=range]{width:100%;accent-color:var(--acc)}
.rp-input{width:100%;padding:5px 8px;border-radius:5px;border:1px solid var(--brd);background:var(--bg2);color:var(--tx);font-size:12px;outline:none;margin-bottom:4px}
.rp-input:focus{border-color:var(--acc)}
.rp-sel{width:100%;padding:4px 6px;border-radius:5px;border:1px solid var(--brd);background:var(--bg2);color:var(--tx);font-size:11px;outline:none;margin-bottom:4px;font-family:var(--font)}
.rp-cb{display:flex;gap:5px;font-size:11px;color:var(--tx2);cursor:pointer;margin-bottom:3px}
.rp-cb input{accent-color:var(--acc)}
.rp-btn{width:100%;padding:5px;border:1px solid var(--brd);border-radius:5px;background:var(--bg2);color:var(--tx2);font-size:11px;cursor:pointer;font-family:var(--font);margin-bottom:3px;text-align:left}
.rp-btn:hover{background:var(--bg3);color:var(--tx)}
.rp-red{color:var(--red)!important}
/* Memory */
.mem-add{display:flex;gap:4px;margin-bottom:10px}.mem-add .rp-input{margin-bottom:0}.mem-add .rp-btn{width:auto;padding:5px 12px}
.mem-list{display:flex;flex-direction:column;gap:4px}
.mem-item{display:flex;align-items:center;gap:6px;padding:6px 8px;background:var(--bg2);border:1px solid var(--brd);border-radius:5px;font-size:12px}
.mem-item span{flex:1}.mem-item button{background:0;border:0;color:var(--tx3);cursor:pointer;font-size:13px}.mem-item button:hover{color:var(--red)}
@media(max-width:900px){.sidebar{position:fixed;transform:translateX(-100%);transition:.2s;z-index:100}.sidebar.open{transform:translateX(0)}.tb-menu{display:block}}
/* ═══════ MOBILE RESPONSIVE ═══════ */
@media (max-width: 768px) {
    :root { --sw: 280px; --rw: 100vw; }

    .sidebar {
        position: fixed; left: 0; top: 0; height: 100vh;
        transform: translateX(-100%); transition: transform .25s ease;
        z-index: 200; width: var(--sw);
    }
    .sidebar.open { transform: translateX(0); }

    /* Overlay behind sidebar */
    .sidebar.open::after {
        content: ''; position: fixed; top: 0; right: 0;
        width: calc(100vw - var(--sw)); height: 100vh;
        background: rgba(0,0,0,.5); z-index: -1;
    }

    .tb-menu { display: flex !important; }
    .tb-model { max-width: 160px; font-size: 10px; }
    .tb-tag { font-size: 9px; padding: 1px 6px; }
    .tb-btn { padding: 4px 8px; font-size: 10px; }

    .rpanel {
        position: fixed; right: 0; top: 0; height: 100vh;
        width: 100vw; max-width: 340px; z-index: 200;
        box-shadow: -4px 0 20px rgba(0,0,0,.5);
    }

    .sys-text { font-size: 12px; min-height: 36px; }
    .messages { padding: 0 12px; }
    .msg { padding: 12px 0; }
    .msg-body { font-size: 13px; line-height: 1.6; }
    .msg-body pre { font-size: 11px; padding: 8px; }
    .msg-body img { max-width: 100%; }
    .msg-body audio { max-width: 100%; }

    .input-bar { padding: 8px 10px 4px; }
    .input-row { border-radius: 14px; padding: 2px; }
    #user-input { font-size: 14px; padding: 8px 4px; }
    .in-btn { width: 34px; height: 34px; font-size: 12px; }
    .in-send { width: 34px; height: 34px; }

    .att-card img { max-width: 100%; }
    .yt-card { max-width: 100%; }
    .yt-card img { width: 80px; }

    .topbar { padding: 6px 10px; height: 42px; gap: 6px; }
    .sys-header { padding: 6px 12px; }
    .sys-text { padding: 4px 12px 8px; }

    .att-preview { padding: 0 2px; }
    .att-prev { font-size: 10px; padding: 2px 6px; }
    .att-prev img { height: 28px; }

    /* Admin page mobile */
    .admin-grid { grid-template-columns: 1fr; padding: 12px; gap: 12px; }
    .admin-top { padding: 10px 14px; }
    .adm-tbl { font-size: 11px; }
    .adm-tbl th, .adm-tbl td { padding: 4px 6px; }

    /* Memory panel full width on mobile */
    #memory-panel { width: 100vw; max-width: 340px; }
}

@media (max-width: 480px) {
    .tb-model { max-width: 120px; }
    .in-btn { width: 30px; height: 30px; font-size: 11px; }
    .in-send { width: 30px; height: 30px; font-size: 11px; }
    .msg-role { font-size: 11px; }
    .msg-body { font-size: 12px; }
    .sb-brand { font-size: 14px; }
}

/* Touch-friendly tap targets */
@media (pointer: coarse) {
    .si { padding: 12px 10px; min-height: 44px; }
    .sb-new { padding: 10px; }
    .tb-btn { padding: 6px 12px; min-height: 36px; }
    .in-btn { min-width: 36px; min-height: 36px; }
    .foot-btn { padding: 4px 12px; min-height: 32px; }
    .msg-actions button { padding: 4px 10px; min-height: 28px; }
    .rp-btn { padding: 8px; min-height: 36px; }
    .rp-cb { padding: 4px 0; min-height: 32px; }
    .mem-item { padding: 8px 10px; }
    .mem-item button { min-width: 32px; min-height: 32px; }
}

/* Disable hover effects on touch */
@media (hover: none) {
    .si:hover { background: transparent; }
    .si.active { background: var(--bg3); }
    .msg-actions { display: flex; opacity: 0.5; }
}