/* ─── VARIABLES ───────────────────────────────────────────────── */
:root{
  --bg:      #0a0c10;
  --card:    #11141c;
  --card2:   #161a24;
  --border:  #1c2030;
  --border2: #222840;
  --primary: #7b74f5;
  --primary2:#9b94ff;
  --muted:   #8892a4;
  --muted2:  #6b7280;
  --danger:  #ef4444;
  --success: #22c55e;
  --warning: #f59e0b;
  --text:    #e2e8f0;
  --text2:   #c0cce0;
  --radius:  .75rem;
  --shadow:  0 4px 24px rgba(0,0,0,.45);
}

/* ─── RESET ────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;overflow-x:hidden}
button{cursor:pointer;border:none;background:none;font-family:inherit;font-size:inherit;color:inherit}
input{font-family:inherit;font-size:inherit}
a{color:var(--primary);text-decoration:none}

/* ─── TOAST ────────────────────────────────────────────────────── */
@keyframes toast-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ─── AUTH OVERLAY ─────────────────────────────────────────────── */
#auth-overlay{
  position:fixed;inset:0;background:linear-gradient(135deg,#0a0c10 0%,#0f1220 100%);
  display:flex;align-items:center;justify-content:center;z-index:1000;padding:1.5rem;
}
.auth-card{
  background:var(--card);border:1px solid var(--border2);border-radius:1.25rem;
  padding:2.5rem 2rem;width:100%;max-width:380px;text-align:center;
  box-shadow:0 20px 60px rgba(0,0,0,.6);
}
.auth-logo{font-size:3rem;margin-bottom:.75rem}
.auth-title{font-size:1.75rem;font-weight:800;letter-spacing:-.02em;margin-bottom:.35rem;
  background:linear-gradient(135deg,var(--primary),var(--primary2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.auth-sub{color:var(--muted);font-size:.9rem;margin-bottom:1.75rem;line-height:1.55}
.auth-tabs{display:flex;background:var(--card2);border-radius:.6rem;padding:.25rem;gap:.25rem;margin-bottom:1.25rem}
.auth-tab{flex:1;padding:.55rem;border-radius:.45rem;font-size:.85rem;color:var(--muted);transition:all .2s}
.auth-tab.active{background:var(--border2);color:var(--text);font-weight:600}
.auth-form{display:flex;flex-direction:column;gap:.75rem}
.auth-form input{background:var(--card2);border:1px solid var(--border2);border-radius:.6rem;padding:.7rem 1rem;color:var(--text);outline:none;transition:border .2s;text-align:left}
.auth-form input:focus{border-color:var(--primary)}
.auth-err{font-size:.82rem;padding:.5rem .75rem;border-radius:.45rem;background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3)}

/* ─── APP LAYOUT ───────────────────────────────────────────────── */
#app{display:flex;flex-direction:column;height:100vh;max-width:520px;margin:0 auto}
.app-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:.85rem 1.1rem;background:var(--card);border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:100;
}
.hdr-brand{font-size:1rem;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:.4rem}
.hdr-logout{color:var(--muted);font-size:1.1rem;padding:.3rem .5rem;border-radius:.4rem;transition:all .2s}
.hdr-logout:hover{color:var(--text);background:var(--border)}
.app-main{flex:1;overflow-y:auto;padding:0 0 80px}
.section{display:none;padding:.25rem 0}
.section.active{display:block}

/* ─── BOTONES ──────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.6rem 1.1rem;border-radius:.55rem;font-size:.85rem;font-weight:600;transition:all .18s;cursor:pointer}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary2)}
.btn-ghost{background:var(--card2);border:1px solid var(--border2);color:var(--text)}
.btn-ghost:hover{border-color:var(--primary);color:var(--primary)}
.btn-danger{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.3);color:var(--danger)}
.btn-danger:hover{background:rgba(239,68,68,.22)}
.btn-full{width:100%;margin-top:.5rem}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ─── CARDS ────────────────────────────────────────────────────── */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin:.75rem 1rem .25rem;overflow:hidden}
.card-header{padding:.85rem 1.1rem .65rem;border-bottom:1px solid var(--border)}
.card-header h3{font-size:.9rem;font-weight:700;color:var(--text)}
.card-body{padding:1rem 1.1rem}

/* ─── HOY ──────────────────────────────────────────────────────── */
.hoy-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.1rem .5rem}
.today-date{font-size:1.15rem;font-weight:700;color:var(--text)}
.today-sub{font-size:.78rem;color:var(--muted);margin-top:.15rem}

/* Score ring */
.score-ring-wrap{position:relative;width:80px;height:80px;flex-shrink:0}
.score-ring{width:80px;height:80px;transform:rotate(-90deg)}
.score-ring-bg{fill:none;stroke:var(--border2);stroke-width:7}
.score-ring-progress{fill:none;stroke:var(--primary);stroke-width:7;stroke-linecap:round;
  stroke-dasharray:0 226;transition:stroke-dasharray .6s ease,stroke .3s}
.score-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
#score-num{font-size:.9rem;font-weight:800;line-height:1}
#score-label{font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}

/* Habit cards */
.habit-list{padding:.25rem 1rem 1rem;display:flex;flex-direction:column;gap:.55rem}
.habit-card{
  background:var(--card);border:1px solid var(--border);border-radius:.8rem;
  padding:.8rem 1rem;display:flex;align-items:center;justify-content:space-between;
  cursor:pointer;transition:all .18s;border-left:3px solid var(--hc,var(--primary));
  -webkit-tap-highlight-color:transparent;
}
.habit-card:hover{border-color:var(--hc,var(--primary));box-shadow:0 2px 16px rgba(0,0,0,.25)}
.habit-card.done{background:rgba(34,197,94,.05);border-color:var(--success)!important}
.hc-left{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}
.hc-check{
  width:26px;height:26px;border-radius:50%;border:2px solid var(--border2);
  display:flex;align-items:center;justify-content:center;font-size:.8rem;
  color:var(--success);font-weight:700;flex-shrink:0;transition:all .2s;
}
.habit-card.done .hc-check{background:var(--success);border-color:var(--success);color:#fff}
.hc-icon{font-size:1.35rem;flex-shrink:0;line-height:1}
.hc-info{min-width:0}
.hc-name{font-size:.92rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-right{flex-shrink:0;margin-left:.5rem}
.streak-badge{
  background:rgba(123,116,245,.12);border:1px solid rgba(123,116,245,.3);
  color:var(--primary);font-size:.72rem;font-weight:700;padding:.2rem .5rem;border-radius:2rem;white-space:nowrap;
}
.streak-badge.streak-fire{background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.3);color:var(--warning)}

/* Category pill */
.cat-pill{font-size:.68rem;font-weight:600;padding:.15rem .5rem;border-radius:2rem;display:inline-flex;align-items:center;gap:.25rem;margin-top:.25rem}

/* Empty state */
.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--muted)}
.es-icon{font-size:3rem;margin-bottom:.75rem}
.es-title{font-size:1.05rem;font-weight:700;color:var(--text);margin-bottom:.5rem}
.es-desc{font-size:.85rem;line-height:1.55;margin-bottom:1.25rem}
.es-btn{background:var(--primary);color:#fff;padding:.65rem 1.4rem;border-radius:.55rem;font-size:.88rem;font-weight:600}

/* ─── ESTADÍSTICAS ─────────────────────────────────────────────── */
.sec-title-row{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.1rem .5rem}
.sec-title-row h2{font-size:1.1rem;font-weight:800}

/* Level */
.level-card{padding:.25rem}
.level-badge{display:flex;align-items:center;gap:.85rem;padding:.8rem 1rem}
.level-icon{font-size:2.2rem;line-height:1}
.level-name{font-size:1rem;font-weight:800}
.level-sub{font-size:.78rem;color:var(--muted);margin-top:.1rem}
.level-bar{height:5px;background:var(--border2);border-radius:3px;margin-top:.55rem;overflow:hidden}
.level-bar-fill{height:100%;border-radius:3px;transition:width .8s ease}

/* Summary grid */
.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;padding:.25rem 1rem .5rem}
.summary-card{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:.9rem 1rem;text-align:center}
.sc-val{font-size:1.5rem;font-weight:800;line-height:1;margin-bottom:.25rem}
.sc-lbl{font-size:.73rem;color:var(--muted)}

/* Heatmap */
.heatmap-wrap{overflow-x:auto}
.hm-months-row{display:grid;grid-template-columns:repeat(18,1fr);gap:2px;margin-bottom:.35rem;padding-left:28px}
.hm-months-row span{font-size:.6rem;color:var(--muted);text-align:center}
.heatmap-days{display:flex;gap:.4rem}
.hm-day-labels{display:flex;flex-direction:column;gap:2px;align-items:flex-end;justify-content:center}
.hm-day-labels span{font-size:.55rem;color:var(--muted);height:12px;line-height:12px;white-space:nowrap;padding-right:.2rem}
.heatmap{display:grid;grid-template-columns:repeat(18,12px);grid-template-rows:repeat(7,12px);gap:2px;width:max-content}
.hm-cell{width:12px;height:12px;border-radius:2px;background:var(--border);cursor:default}
.hm-cell.intensity-0{background:var(--border)}
.hm-cell.intensity-1{background:rgba(123,116,245,.3)}
.hm-cell.intensity-2{background:rgba(123,116,245,.55)}
.hm-cell.intensity-3{background:rgba(123,116,245,.78)}
.hm-cell.intensity-4{background:#7b74f5}
.hm-cell.future{opacity:.3}
.hm-cell:hover{outline:1px solid var(--primary);outline-offset:1px}
.hm-legend{display:flex;align-items:center;gap:.35rem;margin-top:.75rem;justify-content:flex-end}
.hm-l-txt{font-size:.65rem;color:var(--muted)}
.hm-legend .hm-cell{cursor:default}

/* Per-habit stats */
.habit-stat-row{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1.1rem;border-bottom:1px solid var(--border)}
.habit-stat-row:last-child{border-bottom:none}
.hsr-left{display:flex;align-items:center;gap:.7rem;flex:1;min-width:0}
.hsr-icon{font-size:1.2rem;flex-shrink:0}
.hsr-name{font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hsr-stats{display:flex;gap:1rem;flex-shrink:0}
.hsr-stat{text-align:center}
.hsr-val{font-size:.95rem;font-weight:700;white-space:nowrap}
.hsr-lbl{font-size:.62rem;color:var(--muted)}
.c-fire{color:var(--warning)}

/* ─── GESTIÓN DE HÁBITOS ───────────────────────────────────────── */
.habitos-list{padding:.25rem 1rem 1rem;display:flex;flex-direction:column;gap:.5rem}
.habit-mgmt-card{
  background:var(--card);border:1px solid var(--border);border-radius:.8rem;
  padding:.75rem .9rem;display:flex;align-items:center;gap:.7rem;
  border-left:3px solid var(--hc,var(--primary));transition:opacity .2s;
}
.habit-mgmt-card.inactive{opacity:.5}
.hmc-drag{color:var(--muted2);cursor:grab;font-size:1.1rem;flex-shrink:0;padding:.1rem}
.hmc-drag:active{cursor:grabbing}
.hmc-icon{font-size:1.3rem;flex-shrink:0}
.hmc-info{flex:1;min-width:0}
.hmc-name{font-size:.9rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hmc-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;margin-top:.25rem}
.freq-pill{font-size:.65rem;color:var(--muted);background:var(--border);padding:.1rem .45rem;border-radius:2rem}
.streak-sm{font-size:.68rem;color:var(--warning)}
.hmc-actions{display:flex;gap:.25rem;flex-shrink:0}
.icon-action-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:.4rem;font-size:.88rem;transition:background .15s}
.icon-action-btn:hover{background:var(--border2)}
.icon-action-btn.danger:hover{background:rgba(239,68,68,.15)}
.drag-ghost{opacity:.4;background:var(--card2)!important}

/* ─── BOTTOM NAV ───────────────────────────────────────────────── */
.bottom-nav{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:520px;
  background:var(--card);border-top:1px solid var(--border);
  display:flex;padding:.4rem 0 calc(.4rem + env(safe-area-inset-bottom));z-index:50;
}
.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.4rem .5rem;color:var(--muted);font-size:.68rem;font-weight:600;transition:color .18s}
.nav-btn.active{color:var(--primary)}
.nav-icon{font-size:1.3rem;line-height:1}

/* ─── MODAL ────────────────────────────────────────────────────── */
.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.65);display:none;
  align-items:flex-end;justify-content:center;z-index:500;
}
.modal-overlay.open{display:flex}
.modal{
  background:var(--card);border-radius:1.25rem 1.25rem 0 0;width:100%;max-width:520px;
  max-height:92vh;overflow-y:auto;border-top:1px solid var(--border2);
  animation:modal-up .28s ease;
}
.modal-sm{border-radius:1rem;max-width:340px;margin:auto;}
.modal-sm .modal-body{padding:1.5rem}
@keyframes modal-up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem .75rem;border-bottom:1px solid var(--border)}
.modal-header h3{font-size:1rem;font-weight:700}
.modal-close{color:var(--muted);font-size:1rem;padding:.3rem .5rem;border-radius:.4rem;transition:all .15s}
.modal-close:hover{background:var(--border2);color:var(--text)}
.modal-body{padding:1rem 1.25rem 1.5rem;display:flex;flex-direction:column;gap:1rem}

/* Form elements */
.form-group{display:flex;flex-direction:column;gap:.5rem}
.form-label{font-size:.8rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.form-err{font-size:.8rem;color:var(--danger);padding:.4rem .6rem;background:rgba(239,68,68,.08);border-radius:.4rem}

/* Icon + name row */
.icon-name-row{display:flex;align-items:center;gap:.75rem}
.habit-icon-btn{
  width:52px;height:52px;font-size:1.65rem;border-radius:.65rem;background:var(--card2);
  border:1px solid var(--border2);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:border .2s;
}
.habit-icon-btn:hover{border-color:var(--primary)}
.habit-name-input{flex:1;background:var(--card2);border:1px solid var(--border2);border-radius:.6rem;padding:.7rem .9rem;color:var(--text);outline:none;font-size:.95rem;font-weight:600;transition:border .2s}
.habit-name-input:focus{border-color:var(--primary)}

/* Emoji picker */
.emoji-picker{display:grid;grid-template-columns:repeat(8,1fr);gap:.35rem;padding:.5rem 0;max-height:160px;overflow-y:auto}
.emoji-opt{font-size:1.3rem;padding:.3rem;border-radius:.45rem;transition:background .15s;line-height:1}
.emoji-opt:hover{background:var(--border2)}
.emoji-opt.selected{background:rgba(123,116,245,.18);outline:1px solid var(--primary)}

/* Color swatches */
.color-swatches{display:flex;gap:.5rem;flex-wrap:wrap}
.color-swatch{width:28px;height:28px;border-radius:50%;border:3px solid transparent;transition:all .15s}
.color-swatch:hover{transform:scale(1.12)}
.color-swatch.selected{border-color:var(--text);transform:scale(1.15)}

/* Category pills */
.cat-pills{display:flex;flex-wrap:wrap;gap:.4rem}
.cat-select-pill{font-size:.78rem;padding:.35rem .75rem;border-radius:2rem;border:1px solid var(--border2);color:var(--muted);transition:all .15s}
.cat-select-pill:hover{border-color:var(--primary);color:var(--text)}
.cat-select-pill.selected{font-weight:700}

/* Frequency */
.freq-options{display:flex;flex-direction:column;gap:.4rem}
.freq-opt{display:flex;align-items:center;gap:.5rem;font-size:.87rem;cursor:pointer;padding:.25rem 0}
.freq-opt input[type=radio]{accent-color:var(--primary)}
.custom-days{display:flex;flex-wrap:wrap;gap:.4rem;padding:.5rem 0}
.day-cb{display:flex;align-items:center;gap:.3rem;font-size:.82rem;background:var(--card2);border:1px solid var(--border2);padding:.3rem .65rem;border-radius:.4rem;cursor:pointer}
.day-cb input{accent-color:var(--primary)}

/* Confirm modal */
.confirm-icon{font-size:2.5rem;margin-bottom:.75rem}
.confirm-msg{font-size:.9rem;color:var(--muted);margin-bottom:1.5rem;line-height:1.55}
.confirm-btns{display:flex;gap:.75rem;justify-content:center}

/* ─── CONFETTI ─────────────────────────────────────────────────── */
#confetti-wrap{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9000}
@keyframes confetti-fall{0%{transform:translateY(-10px) rotate(0deg);opacity:1}100%{transform:translateY(90vh) rotate(480deg);opacity:0}}
.confetti-piece{position:absolute;width:8px;height:8px;border-radius:2px;top:0;animation:confetti-fall 1.4s ease-in forwards}

/* ─── SCROLLBAR ────────────────────────────────────────────────── */
::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}

/* ─── RESPONSIVE ───────────────────────────────────────────────── */
@media(max-width:400px){
  .heatmap{grid-template-columns:repeat(18,10px);grid-template-rows:repeat(7,10px)}
  .hm-cell{width:10px;height:10px}
  .hm-months-row{grid-template-columns:repeat(18,1fr)}
  .emoji-picker{grid-template-columns:repeat(7,1fr)}
  .hsr-stats{gap:.65rem}
}

/* ─── HEADER ACTIONS ────────────────────────────────────────────── */
.hdr-actions{display:flex;align-items:center;gap:.35rem}
.hdr-btn{color:var(--muted);font-size:1rem;padding:.3rem .45rem;border-radius:.45rem;transition:all .18s;line-height:1}
.hdr-btn:hover{color:var(--text);background:var(--border)}

/* Language pill in header */
.lang-pill{display:flex;background:var(--card2);border:1px solid var(--border);border-radius:2rem;overflow:hidden}
.lang-pill-btn{padding:.2rem .55rem;font-size:.7rem;font-weight:700;color:var(--muted);transition:all .18s;border-radius:2rem}
.lang-pill-btn.active{background:var(--primary);color:#fff}

/* Auth lang row */
.auth-lang-row{display:flex;justify-content:flex-end;gap:.4rem;margin-bottom:1rem}
.auth-lang-btn{padding:.25rem .7rem;font-size:.75rem;font-weight:600;color:var(--muted);border:1px solid var(--border2);border-radius:2rem;transition:all .18s}
.auth-lang-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}

/* ─── MODAL — PERFIL ────────────────────────────────────────────── */
.modal-profile{border-radius:1.25rem 1.25rem 0 0}
.modal-help{border-radius:1.25rem 1.25rem 0 0}

.prof-section{padding:1rem 1.25rem;border-bottom:1px solid var(--border)}
.prof-section:last-child{border-bottom:none}

.prof-info{display:flex;align-items:center;gap:.85rem}
.prof-avatar{font-size:2.25rem;line-height:1}
.prof-email{font-size:.92rem;font-weight:700;color:var(--text)}
.prof-since{font-size:.75rem;color:var(--muted);margin-top:.15rem}
.prof-desc{font-size:.8rem;color:var(--muted);line-height:1.5;margin:.35rem 0 .6rem}

.prof-input{
  width:100%;background:var(--card2);border:1px solid var(--border2);border-radius:.6rem;
  padding:.65rem .9rem;color:var(--text);outline:none;font-size:.88rem;transition:border .18s;margin-top:.5rem;display:block
}
.prof-input:focus{border-color:var(--primary)}

/* Language toggle in profile */
.lang-toggle-row{display:flex;gap:.5rem;margin-top:.5rem}
.lang-toggle-btn{flex:1;padding:.5rem;border-radius:.5rem;font-size:.84rem;font-weight:600;color:var(--muted);border:1px solid var(--border2);transition:all .18s}
.lang-toggle-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}

/* Danger zone */
.danger-zone{background:rgba(239,68,68,.03)}
.danger-label{color:var(--danger)!important}

/* ─── MODAL — AYUDA ─────────────────────────────────────────────── */
.help-item{display:flex;align-items:flex-start;gap:.85rem;padding:.8rem 0;border-bottom:1px solid var(--border)}
.help-item:last-child{border-bottom:none;padding-bottom:0}
.help-icon{font-size:1.75rem;line-height:1;flex-shrink:0;margin-top:.1rem}
.help-item-title{font-size:.9rem;font-weight:700;color:var(--text);margin-bottom:.3rem}
.help-item-desc{font-size:.82rem;color:var(--muted);line-height:1.55}


/* ─── TOAST (compatible con shared/sb-client.js showToast) ─── */
#toast-container{position:fixed;top:1rem;right:1rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}
.toast{background:var(--card);border:1px solid var(--border);color:var(--text);padding:.65rem 1rem;border-radius:.6rem;font-size:.84rem;box-shadow:0 4px 20px rgba(0,0,0,.5);min-width:200px;max-width:300px;opacity:0;transform:translateX(8px);transition:opacity .25s,transform .25s;pointer-events:auto}
.toast.show{opacity:1;transform:translateX(0)}
.toast-success{border-left:3px solid var(--success)}
.toast-error{border-left:3px solid var(--danger)}
.toast-info{border-left:3px solid var(--primary)}
.toast-warning{border-left:3px solid #f59e0b}
