@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap');

:root {
  --bg:#080c08; --surface:#0d120d; --surf2:#111811; --surf3:#161e16;
  --border:#1a261a; --border2:#243624; --text:#c8d8c8; --muted:#4a664a;
  --dim:#223222; --green:#39d353; --green2:#1a5c2a; --green3:#0d3018;
  --cyan:#2dd4bf; --amber:#e8a020; --red:#e05555; --purple:#a78bfa;
  --smr:#39d353; --asir:#2dd4bf; --daw:#e8a020; --dam:#a78bfa;
  --font:'JetBrains Mono',monospace;
  --hist-w:198px; --side-w:190px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:13px;height:100vh;display:flex;flex-direction:column;overflow:hidden}
body::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:999;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.07) 2px,rgba(0,0,0,.07) 4px)}

/* ── BIRTHDAY BANNER ──── */
#bday-banner{background:linear-gradient(90deg,var(--green3),#1a3a10,var(--green3));border-bottom:1px solid var(--green2);padding:5px 1rem;text-align:center;flex-shrink:0;animation:bannerPulse 3s ease-in-out infinite}
@keyframes bannerPulse{0%,100%{opacity:1}50%{opacity:.82}}
.bday-banner-text{font-size:11px;color:var(--green);letter-spacing:.03em}

/* ── HEADER ──── */
header{display:flex;align-items:center;gap:.5rem;padding:0 .9rem;height:46px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;overflow:hidden}
.logo{font-weight:700;font-size:15px;color:var(--green);letter-spacing:-.5px;display:flex;align-items:center;gap:4px;white-space:nowrap;flex-shrink:0}
.logo-br{color:var(--muted);font-weight:400}
.logo span{color:var(--text)}
.cursor{display:inline-block;width:8px;height:13px;background:var(--green);margin-left:2px;vertical-align:middle;animation:cur .9s step-end infinite}
@keyframes cur{0%,100%{opacity:1}50%{opacity:0}}

.header-user{font-family:var(--font);font-size:10px;background:none;border:1px solid transparent;display:flex;align-items:center;gap:6px;cursor:pointer;padding:2px 6px;border-radius:2px;transition:all .12s;color:var(--muted);flex-shrink:0}
.header-user:hover{border-color:var(--border2);background:var(--surf2)}
.header-avatar{width:26px;height:26px;border-radius:2px;background:var(--green3);border:1px solid var(--green2);color:var(--green);font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.header-avatar img{width:100%;height:100%;object-fit:cover;border-radius:2px}
.header-user-info{display:flex;flex-direction:column;gap:1px;text-align:left}
.uname{color:var(--green);font-weight:700;font-size:11px}
.user-badges{display:flex;gap:3px}

.badge-owner  {font-size:8px;font-weight:700;padding:0 5px;border-radius:2px;background:rgba(232,160,32,.15);color:var(--amber);border:1px solid rgba(232,160,32,.3)}
.badge-beta   {font-size:8px;font-weight:700;padding:0 5px;border-radius:2px;background:rgba(167,139,250,.15);color:var(--purple);border:1px solid rgba(167,139,250,.3)}
.badge-bday   {font-size:8px;font-weight:700;padding:0 5px;border-radius:2px;background:rgba(57,211,83,.15);color:var(--green);border:1px solid var(--green2);animation:glow 1.5s ease-in-out infinite}
@keyframes glow{0%,100%{opacity:1}50%{opacity:.6}}

.spacer{flex:1;min-width:4px}

/* ── MOOD SELECTOR ──── */
.mood-selector{display:flex;gap:3px;flex-shrink:0}
.mood-btn{font-family:var(--font);font-size:9px;font-weight:700;padding:3px 8px;border-radius:2px;border:1px solid var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all .12s;letter-spacing:.04em}
.mood-btn:hover{color:var(--text);border-color:var(--muted)}
.mood-btn.active{background:rgba(57,211,83,.1);border-color:var(--green2);color:var(--green)}
.mood-btn.angry.active{background:rgba(224,85,85,.1);border-color:var(--red);color:var(--red)}

/* separador visual entre modos y ciclos */
.header-sep{width:1px;height:20px;background:var(--border2);flex-shrink:0;margin:0 3px}

/* ── CICLOS ──── */
.ciclos{display:flex;gap:3px;flex-shrink:0}
.cbtn{font-family:var(--font);font-size:10px;font-weight:700;padding:3px 8px;border-radius:2px;border:1px solid var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all .12s;letter-spacing:.05em}
.cbtn:hover:not(.on){border-color:var(--text);color:var(--text)}
.cbtn[data-c="SMR"].on    {background:rgba(57,211,83,.1);  border-color:var(--smr); color:var(--smr)}
.cbtn[data-c="ASIR"].on   {background:rgba(45,212,191,.1); border-color:var(--asir);color:var(--asir)}
.cbtn[data-c="DAW"].on    {background:rgba(232,160,32,.1); border-color:var(--daw); color:var(--daw)}
.cbtn[data-c="DAM"].on    {background:rgba(167,139,250,.1);border-color:var(--dam); color:var(--dam)}
.cbtn[data-c="General"].on{background:rgba(196,196,196,.07);border-color:#666;     color:#aaa}

.key-btn{font-family:var(--font);font-size:10px;padding:3px 9px;border-radius:2px;border:1px solid var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all .12s;flex-shrink:0;white-space:nowrap}
.key-btn:hover{border-color:var(--green);color:var(--green)}
.key-btn.set{border-color:var(--green);color:var(--green)}

/* ── LAYOUT ──── */
.app-wrap{display:flex;flex:1;overflow:hidden;position:relative}

/* ── VISTA CHAT ──── */
.view-chat{display:flex;flex:1;overflow:hidden}

/* ── HISTORIAL ──── */
.hist-col{width:var(--hist-w);border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;flex-shrink:0}
.hist-header{padding:.55rem .7rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.hist-title{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.new-chat-btn{font-family:var(--font);font-size:9px;padding:2px 7px;border-radius:2px;border:1px solid var(--border2);background:transparent;color:var(--muted);cursor:pointer;transition:all .12s}
.new-chat-btn:hover{border-color:var(--green2);color:var(--green)}
.hist-list{flex:1;overflow-y:auto;padding:.45rem;display:flex;flex-direction:column;gap:3px}
.hist-list::-webkit-scrollbar{width:2px}
.hist-list::-webkit-scrollbar-thumb{background:var(--border2)}
.hist-item{padding:5px 7px;border-radius:2px;cursor:pointer;border:1px solid transparent;border-left:2px solid transparent;transition:all .12s}
.hist-item:hover{background:var(--surf2);border-color:var(--border)}
.hist-item.active{background:var(--surf3);border-color:var(--border2);border-left-color:var(--green2)}
.hist-item-title{font-size:11px;color:var(--text);line-height:1.3;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hist-item-meta{display:flex;align-items:center;gap:5px}
.hist-item-ciclo{font-size:9px;font-weight:700}
.hist-item-ciclo.SMR    {color:var(--smr)}
.hist-item-ciclo.ASIR   {color:var(--asir)}
.hist-item-ciclo.DAW    {color:var(--daw)}
.hist-item-ciclo.DAM    {color:var(--dam)}
.hist-item-ciclo.General{color:#888}
.hist-item-date{font-size:9px;color:var(--muted)}
.hist-del{font-size:9px;color:var(--muted);background:none;border:none;cursor:pointer;margin-left:auto;opacity:0;transition:opacity .1s}
.hist-item:hover .hist-del{opacity:1}
.hist-del:hover{color:var(--red)}
.hist-empty{font-size:10px;color:var(--dim);text-align:center;padding:1.5rem .5rem;line-height:1.7}

/* ── SIDEBAR ──── */
aside{width:var(--side-w);border-right:1px solid var(--border);background:var(--surface);padding:.7rem;flex-shrink:0;overflow-y:auto;display:flex;flex-direction:column;gap:1.1rem}
aside::-webkit-scrollbar{width:2px}
aside::-webkit-scrollbar-thumb{background:var(--border2)}
.stitle{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid var(--border)}
.mod{font-size:11px;color:var(--muted);padding:4px 6px;border-left:2px solid transparent;cursor:pointer;transition:all .1s;line-height:1.4}
.mod:hover{color:var(--text);background:var(--surf2);border-color:var(--green2)}
.qbtn{font-family:var(--font);font-size:10px;color:var(--muted);padding:5px 6px;cursor:pointer;background:transparent;border:1px solid var(--border);border-radius:2px;transition:all .1s;text-align:left;line-height:1.4;width:100%;margin-bottom:3px;display:block}
.qbtn::before{content:'> ';color:var(--green2)}
.qbtn:hover{color:var(--text);border-color:var(--border2);background:var(--surf2)}

/* ── CHAT ──── */
.chat{flex:1;display:flex;flex-direction:column;overflow:hidden}
.msgs{flex:1;overflow-y:auto;padding:1.2rem;display:flex;flex-direction:column;gap:1rem;scroll-behavior:smooth}
.msgs::-webkit-scrollbar{width:2px}
.msgs::-webkit-scrollbar-thumb{background:var(--border2)}

/* ── WELCOME ──── */
.welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:.9rem;text-align:center;padding:2rem}
.w-ascii{color:var(--green2);font-size:10px;line-height:1.2;white-space:pre;opacity:.8}
.wlogo{font-size:26px;font-weight:700;color:var(--green);letter-spacing:-1px}
.wlogo span{color:var(--text)}
.wsub{font-size:11.5px;color:var(--muted);max-width:340px;line-height:1.7}
.wsub em{color:var(--text);font-style:normal}
.wciclos{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:.25rem}
.wc{font-family:var(--font);font-size:11px;font-weight:700;padding:5px 13px;border-radius:2px;cursor:pointer;border:1px solid;background:transparent;transition:all .15s;letter-spacing:.06em}
.wc[data-c="SMR"]       {color:var(--smr); border-color:var(--smr)}
.wc[data-c="ASIR"]      {color:var(--asir);border-color:var(--asir)}
.wc[data-c="DAW"]       {color:var(--daw); border-color:var(--daw)}
.wc[data-c="DAM"]       {color:var(--dam); border-color:var(--dam)}
.wc[data-c="SMR"]:hover {background:rgba(57,211,83,.12)}
.wc[data-c="ASIR"]:hover{background:rgba(45,212,191,.12)}
.wc[data-c="DAW"]:hover {background:rgba(232,160,32,.12)}
.wc[data-c="DAM"]:hover {background:rgba(167,139,250,.12)}

/* ── MENSAJES ──── */
.msg{display:flex;gap:10px;animation:fi .18s ease}
@keyframes fi{from{opacity:0;transform:translateY(4px)}to{opacity:1}}
.av{width:26px;height:26px;border-radius:2px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;flex-shrink:0;letter-spacing:.04em;overflow:hidden}
.av img{width:100%;height:100%;object-fit:cover}
.msg.user .av{background:var(--green2);color:var(--green);border:1px solid var(--green2)}
.msg.ai   .av{background:var(--surf2);color:var(--muted);border:1px solid var(--border2)}
.msg.ai.mood-extremo .av{background:rgba(224,85,85,.08);border-color:var(--red);color:var(--red)}
.mbody{flex:1;min-width:0}
.mname{font-size:9px;color:var(--muted);margin-bottom:4px;letter-spacing:.06em}
.mname .mprompt{color:var(--green)}
.msg.ai.mood-extremo .mname .mprompt{color:var(--red)}
.mtext{font-size:12.5px;line-height:1.75;color:var(--text);white-space:pre-wrap;word-break:break-word}
.mtext strong{color:var(--green);font-weight:500}
.mtext code{font-family:var(--font);font-size:11.5px;background:var(--surf2);border:1px solid var(--border2);padding:1px 5px;border-radius:2px;color:var(--cyan)}
.mtext pre{background:var(--surf2);border:1px solid var(--border2);border-left:3px solid var(--green2);border-radius:2px;padding:.85rem 1rem;overflow-x:auto;margin:.5rem 0;font-family:var(--font);font-size:11.5px;line-height:1.6;color:var(--cyan)}
.sources{margin-top:7px;display:flex;flex-wrap:wrap;gap:4px}
.src{font-size:9.5px;padding:2px 7px;border-radius:2px;background:rgba(57,211,83,.05);color:var(--muted);border:1px solid var(--border2)}
.src::before{content:'↑ ';color:var(--green2)}
.tdot span{display:inline-block;animation:bl 1.1s infinite;font-size:16px;color:var(--green)}
.tdot span:nth-child(2){animation-delay:.18s}
.tdot span:nth-child(3){animation-delay:.36s}
@keyframes bl{0%,80%,100%{opacity:.15}40%{opacity:1}}

/* ── INPUT ──── */
.input-area{padding:.8rem 1.2rem .9rem;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}
.irow{display:flex;gap:8px;align-items:flex-end;background:var(--surf2);border:1px solid var(--border2);border-radius:2px;padding:7px 10px;transition:border-color .12s}
.irow:focus-within{border-color:var(--green2)}
.irow.mood-extremo:focus-within{border-color:var(--red)}
.prompt-sym{font-size:13px;color:var(--green);flex-shrink:0;line-height:20px}
.prompt-sym.angry{color:var(--red)}
#inp{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:var(--font);font-size:13px;resize:none;min-height:20px;max-height:100px;overflow-y:auto;line-height:1.5;caret-color:var(--green)}
#inp::placeholder{color:var(--dim)}
.sbtn{width:28px;height:28px;border-radius:2px;background:var(--green2);border:1px solid var(--green2);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .12s;color:var(--green)}
.sbtn:hover{background:rgba(57,211,83,.2);border-color:var(--green)}
.sbtn:active{transform:scale(.95)}
.sbtn:disabled{opacity:.3;cursor:default}
.ihint{font-size:9.5px;color:var(--muted);margin-top:5px;padding-left:18px}
.badge{font-size:9px;font-weight:700;padding:1px 6px;border-radius:2px;display:inline-block;margin-left:2px;letter-spacing:.04em}
.b-SMR    {background:rgba(57,211,83,.08);  color:var(--smr); border:1px solid rgba(57,211,83,.25)}
.b-ASIR   {background:rgba(45,212,191,.08); color:var(--asir);border:1px solid rgba(45,212,191,.25)}
.b-DAW    {background:rgba(232,160,32,.08); color:var(--daw); border:1px solid rgba(232,160,32,.25)}
.b-DAM    {background:rgba(167,139,250,.08);color:var(--dam); border:1px solid rgba(167,139,250,.25)}
.b-General{background:rgba(150,150,150,.08);color:#888;       border:1px solid rgba(150,150,150,.2)}
.b-none{color:var(--muted)}
.b-mood-normal {background:rgba(57,211,83,.08); color:var(--green); border:1px solid rgba(57,211,83,.2)}
.b-mood-directo{background:rgba(45,212,191,.08);color:var(--cyan);  border:1px solid rgba(45,212,191,.2)}
.b-mood-extremo{background:rgba(224,85,85,.08); color:var(--red);   border:1px solid rgba(224,85,85,.2)}

/* ── VISTA PERFIL ──── */
.view-profile{flex:1;overflow-y:auto;padding:2rem;display:flex;flex-direction:column;gap:1.5rem}
.profile-page{display:grid;grid-template-columns:220px 1fr;gap:2rem;max-width:800px;width:100%}

.profile-left{display:flex;flex-direction:column;gap:.9rem}
.profile-photo-big{width:100px;height:100px;border-radius:4px;background:var(--green3);border:2px solid var(--green2);color:var(--green);font-size:28px;font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}
.profile-name-big{font-size:18px;font-weight:700;color:var(--text)}
.profile-badges-big{display:flex;gap:5px;flex-wrap:wrap}
.profile-uid-block{background:var(--surf2);border:1px solid var(--border2);border-radius:2px;padding:.75rem}
.profile-uid{font-size:10px;color:var(--green);word-break:break-all;line-height:1.5;margin-bottom:6px}
.profile-copy-btn{font-family:var(--font);font-size:10px;width:100%;padding:4px;background:transparent;border:1px solid var(--border2);border-radius:2px;color:var(--muted);cursor:pointer;transition:all .12s}
.profile-copy-btn:hover{border-color:var(--green);color:var(--green)}

.profile-right{display:flex;flex-direction:column}
.profile-section-title{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:.75rem;padding-bottom:4px;border-bottom:1px solid var(--border)}
.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.profile-stat{background:var(--surf2);border:1px solid var(--border);border-radius:2px;padding:.6rem .75rem}
.profile-label{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:3px}
.profile-val{font-size:13px;color:var(--text)}
.profile-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.profile-action-btn{font-family:var(--font);font-size:10px;padding:7px 10px;background:transparent;border:1px solid var(--border2);border-radius:2px;color:var(--muted);cursor:pointer;text-align:left;transition:all .12s}
.profile-action-btn:hover{border-color:var(--border2);color:var(--text);background:var(--surf2)}
.profile-action-btn.danger:hover{border-color:var(--red);color:var(--red)}

.profile-back-btn{font-family:var(--font);font-size:11px;background:none;border:1px solid var(--border2);border-radius:2px;color:var(--muted);cursor:pointer;padding:6px 14px;transition:all .12s;align-self:flex-start}
.profile-back-btn:hover{color:var(--green);border-color:var(--green2)}

/* ── AVATAR UPLOAD ──── */
.avatar-upload-row{display:flex;gap:10px;align-items:flex-start}
.avatar-preview{width:52px;height:52px;border-radius:2px;background:var(--green3);border:1px solid var(--green2);color:var(--green);font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.avatar-preview img{width:100%;height:100%;object-fit:cover}
.avatar-upload-opts{display:flex;flex-direction:column;gap:5px;flex:1}
.avatar-upload-btn{font-family:var(--font);font-size:10px;padding:4px 10px;border-radius:2px;border:1px solid var(--border2);color:var(--muted);cursor:pointer;transition:all .12s;display:inline-block}
.avatar-upload-btn:hover{border-color:var(--green);color:var(--green)}

/* ── MODALES ──── */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:200}
.setup-modal,.modal{background:var(--surface);border:1px solid var(--border2);border-top:2px solid var(--green);border-radius:2px;padding:1.6rem;width:90%;max-width:400px;animation:slideUp .22s ease}
@keyframes slideUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.logo-big{font-size:20px;font-weight:700;color:var(--green);margin-bottom:.3rem}
.logo-big span{color:var(--text)}
.sub{font-size:11px;color:var(--muted);line-height:1.7;margin-bottom:1.2rem}
.setup-field{margin-bottom:.9rem}
.setup-label{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:5px;display:block}
.setup-input,.modal input{width:100%;background:var(--surf2);border:1px solid var(--border2);border-radius:2px;padding:7px 10px;color:var(--text);font-family:var(--font);font-size:12px;outline:none;caret-color:var(--green);transition:border-color .12s;margin-bottom:2px}
.setup-input:focus,.modal input:focus{border-color:var(--green2)}
.setup-hint{font-size:9.5px;color:var(--muted);margin-top:3px}
.setup-hint a{color:var(--green)}
.setup-btn{font-family:var(--font);font-size:11px;font-weight:700;padding:7px;border-radius:2px;cursor:pointer;width:100%;margin-top:.25rem;background:var(--green2);border:1px solid var(--green2);color:var(--green);transition:all .12s;letter-spacing:.04em}
.setup-btn:hover{background:rgba(57,211,83,.2);border-color:var(--green)}
.modal h3{font-size:13px;font-weight:700;color:var(--green);margin-bottom:.5rem;letter-spacing:.04em}
.modal p{font-size:11px;color:var(--muted);line-height:1.7;margin-bottom:.75rem}
.modal-btns{display:flex;gap:8px;justify-content:flex-end;margin-top:.75rem}
.mbtn{font-family:var(--font);font-size:11px;padding:5px 14px;border-radius:2px;cursor:pointer;border:1px solid var(--border2);background:transparent;color:var(--muted);transition:all .12s}
.mbtn.ok{background:var(--green2);border-color:var(--green2);color:var(--green)}
.mbtn:hover{opacity:.8}
.provs{display:flex;gap:5px;margin-bottom:.75rem;flex-wrap:wrap}
.prov{font-family:var(--font);font-size:10px;padding:4px 10px;border-radius:2px;border:1px solid var(--border2);cursor:pointer;color:var(--muted);transition:all .12s;position:relative}
.prov.on{border-color:var(--green2);color:var(--green);background:rgba(57,211,83,.07)}
.prov .rec{position:absolute;top:-8px;right:-2px;font-size:8px;font-weight:700;padding:1px 5px;border-radius:2px;background:var(--green);color:#080c08;letter-spacing:.04em}
.prov-link{font-size:10px;color:var(--muted);margin-bottom:.5rem;line-height:1.6}
.prov-link a{color:var(--green);text-decoration:none}
.prov-link a:hover{text-decoration:underline}
.bday-modal{background:var(--surface);border:1px solid var(--green2);border-top:3px solid var(--green);border-radius:2px;padding:2rem;width:90%;max-width:340px;text-align:center;animation:slideUp .3s ease}
.bday-art{font-size:11px;color:var(--green2);line-height:1.3;white-space:pre;margin-bottom:1rem}
.bday-modal h2{font-size:16px;color:var(--green);margin-bottom:.5rem}
.bday-modal p{font-size:11.5px;color:var(--muted);line-height:1.7;margin-bottom:1.25rem}
.bday-name{color:var(--green);font-weight:700}
.bday-close{font-family:var(--font);font-size:11px;padding:6px 18px;border-radius:2px;background:var(--green2);border:1px solid var(--green2);color:var(--green);cursor:pointer;transition:all .12s}
.bday-close:hover{background:rgba(57,211,83,.2);border-color:var(--green)}

.back-btn { text-decoration:none; }
.back-btn:hover { border-color:var(--muted); color:var(--text); }
