@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Space+Mono:ital,wght@0,400;0,700;1,400&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}

:root{
  --bg:         #080808;
  --bg2:        #0E0E0E;
  --surface:    #121212;
  --surface2:   #181818;
  --border:     #1E1E1E;
  --border2:    #2A2A2A;
  --accent:     #C8F53C;
  --accent-dim: rgba(200,245,60,.12);
  --accent2:    #7B61FF;
  --text:       #EFEFEF;
  --text2:      #888;
  --text3:      #444;
  --danger:     #FF4545;
  --success:    #3CDB85;
  --font:       'Space Grotesk', sans-serif;
  --mono:       'Space Mono', monospace;
  --r:          0px;
}

html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--font);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

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

/* ── LOGIN ── */
#login-screen{
  display:flex;align-items:center;justify-content:center;
  min-height:100vh;padding:2rem;
  background:radial-gradient(ellipse at 60% 40%, rgba(200,245,60,.04) 0%, transparent 60%);
}

.login-box{
  width:100%;max-width:360px;
}

.login-logo{
  font-family:var(--mono);
  font-size:3.5rem;
  font-weight:700;
  color:var(--accent);
  letter-spacing:-3px;
  line-height:1;
  margin-bottom:.25rem;
}

.login-sub{
  font-size:.72rem;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:.18em;
  margin-bottom:3rem;
  font-family:var(--mono);
}

.login-label{
  font-size:.68rem;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:.15em;
  margin-bottom:.5rem;
  font-family:var(--mono);
}

.login-box input{
  width:100%;
  background:transparent;
  border:none;
  border-bottom:1px solid var(--border2);
  color:var(--text);
  padding:.75rem 0;
  font-family:var(--mono);
  font-size:1rem;
  outline:none;
  transition:border-color .2s;
  letter-spacing:.1em;
}

.login-box input:focus{border-bottom-color:var(--accent);}

.login-box input::placeholder{color:var(--text3);}

.login-btn{
  width:100%;
  background:var(--accent);
  color:#000;
  border:none;
  padding:1rem;
  font-family:var(--mono);
  font-weight:700;
  font-size:.8rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  cursor:pointer;
  margin-top:2rem;
  transition:opacity .15s;
  position:relative;
  overflow:hidden;
}

.login-btn:hover{opacity:.88;}
.login-btn:active{opacity:.7;}

.login-error{
  color:var(--danger);
  font-family:var(--mono);
  font-size:.72rem;
  margin-top:.75rem;
  display:none;
  letter-spacing:.05em;
}

/* ── APP LAYOUT ── */
#app{display:none;}

.topbar{
  position:sticky;
  top:0;
  z-index:50;
  background:rgba(8,8,8,.9);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
  padding:0 1.5rem;
  height:52px;
  display:flex;
  align-items:center;
  justify-content:space-between;
}

.topbar-logo{
  font-family:var(--mono);
  font-size:1rem;
  font-weight:700;
  color:var(--accent);
  letter-spacing:-1px;
}

.topbar-right{
  display:flex;
  align-items:center;
  gap:.75rem;
}

.streak-pill{
  display:flex;
  align-items:center;
  gap:.35rem;
  background:var(--surface2);
  border:1px solid var(--border2);
  padding:.3rem .7rem;
  font-family:var(--mono);
  font-size:.72rem;
  color:var(--text2);
}

.streak-pill .fire{font-size:.85rem;}

.topbar-logout{
  background:none;
  border:none;
  color:var(--text3);
  font-family:var(--mono);
  font-size:.68rem;
  cursor:pointer;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:.35rem .6rem;
  transition:color .2s;
}
.topbar-logout:hover{color:var(--danger);}

/* ── MAIN ── */
.main{
  max-width:860px;
  margin:0 auto;
  padding:1.5rem 1rem 4rem;
}

@media(min-width:600px){.main{padding:2rem 1.5rem 4rem;}}

/* ── SECTION TITLE ── */
.section-label{
  font-family:var(--mono);
  font-size:.63rem;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:.2em;
  margin-bottom:.75rem;
}

/* ── STAT CARDS ── */
.header-stats{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:1px;
  background:var(--border);
  border:1px solid var(--border);
  margin-bottom:1px;
}

@media(min-width:600px){
  .header-stats{grid-template-columns:repeat(4,1fr);}
}

.stat-card{
  background:var(--surface);
  padding:1.25rem 1rem;
}

.stat-card .s-label{
  font-family:var(--mono);
  font-size:.6rem;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:.16em;
  margin-bottom:.5rem;
}

.stat-card .s-val{
  font-family:var(--mono);
  font-size:1.75rem;
  font-weight:700;
  color:var(--text);
  line-height:1;
}

.stat-card .s-val sup{
  font-size:.85rem;
  color:var(--text2);
  font-weight:400;
}

.stat-card.is-accent .s-val{color:var(--accent);}

/* ── PROGRESS BAR ── */
.progress-block{
  background:var(--surface);
  border:1px solid var(--border);
  border-top:none;
  padding:1.25rem 1rem;
  margin-bottom:1.5rem;
}

.progress-top{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  margin-bottom:.75rem;
}

.progress-title{
  font-family:var(--mono);
  font-size:.63rem;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:.2em;
}

.progress-nums{
  font-family:var(--mono);
  font-size:.8rem;
  color:var(--accent);
}

.pbar-track{
  height:2px;
  background:var(--border2);
  width:100%;
  position:relative;
}

.pbar-fill{
  height:100%;
  background:var(--accent);
  transition:width .8s cubic-bezier(.4,0,.2,1);
  position:relative;
}

.pbar-fill::after{
  content:'';
  position:absolute;
  right:-1px;
  top:-3px;
  width:8px;
  height:8px;
  background:var(--accent);
  border-radius:50%;
  box-shadow:0 0 8px var(--accent);
}

.pbar-pct{
  font-family:var(--mono);
  font-size:.63rem;
  color:var(--text3);
  margin-top:.6rem;
}

/* ── WEEK NAME ── */
.week-block{
  background:var(--surface);
  border:1px solid var(--border);
  padding:1.1rem 1rem;
  margin-bottom:1.5rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  flex-wrap:wrap;
}

.week-name-display{
  font-family:var(--mono);
  font-size:.9rem;
  color:var(--accent2);
  letter-spacing:.02em;
}

.week-edit{
  display:flex;
  gap:.5rem;
  flex:1;
  min-width:200px;
}

.week-edit input{
  flex:1;
  background:transparent;
  border:none;
  border-bottom:1px solid var(--border2);
  color:var(--text);
  padding:.4rem 0;
  font-family:var(--mono);
  font-size:.78rem;
  outline:none;
}
.week-edit input:focus{border-bottom-color:var(--accent2);}
.week-edit input::placeholder{color:var(--text3);}

.week-edit button{
  background:none;
  border:1px solid var(--border2);
  color:var(--accent2);
  padding:.35rem .75rem;
  font-family:var(--mono);
  font-size:.65rem;
  letter-spacing:.1em;
  cursor:pointer;
  transition:all .15s;
}
.week-edit button:hover{background:var(--accent2);color:#fff;border-color:var(--accent2);}

/* ── XP SECTION ── */
.xp-block{
  background:var(--surface);
  border:1px solid var(--border);
  margin-bottom:1.5rem;
}

.xp-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:1rem;
  border-bottom:1px solid var(--border);
}

.xp-header-left .xp-label{
  font-family:var(--mono);
  font-size:.6rem;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:.2em;
  margin-bottom:.25rem;
}

.xp-header-left .xp-sub{
  font-family:var(--mono);
  font-size:.65rem;
  color:var(--text2);
}

.xp-big{
  font-family:var(--mono);
  font-size:2rem;
  font-weight:700;
  color:var(--accent);
  line-height:1;
}

.tasks-list{display:flex;flex-direction:column;}

.task-row{
  display:flex;
  align-items:center;
  gap:.75rem;
  padding:.8rem 1rem;
  border-bottom:1px solid var(--border);
  cursor:pointer;
  transition:background .12s;
  user-select:none;
}

.task-row:last-child{border-bottom:none;}
.task-row:hover{background:var(--surface2);}

.task-row.is-done{opacity:.45;}

.task-check{
  width:16px;
  height:16px;
  border:1px solid var(--border2);
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all .15s;
}

.task-row.is-done .task-check{
  background:var(--success);
  border-color:var(--success);
}

.task-check svg{
  width:9px;height:9px;
  opacity:0;
  transition:opacity .15s;
}

.task-row.is-done .task-check svg{opacity:1;}

.task-text{
  flex:1;
  font-size:.85rem;
  font-weight:500;
}

.task-row.is-done .task-text{
  text-decoration:line-through;
  color:var(--text2);
}

.task-xp-badge{
  font-family:var(--mono);
  font-size:.68rem;
  color:var(--text3);
  transition:color .15s;
}

.task-row:hover .task-xp-badge{color:var(--accent);}
.task-row.is-done .task-xp-badge{color:var(--success);}

/* ── MONEY ── */
.money-block{
  background:var(--surface);
  border:1px solid var(--border);
  margin-bottom:1.5rem;
}

.money-header{
  padding:1rem;
  border-bottom:1px solid var(--border);
}

.money-add-row{
  display:flex;
  gap:1px;
  background:var(--border);
  border-bottom:1px solid var(--border);
}

.money-add-row input{
  flex:1;
  background:var(--surface2);
  border:none;
  color:var(--text);
  padding:.75rem .9rem;
  font-family:var(--font);
  font-size:.85rem;
  outline:none;
}
.money-add-row input::placeholder{color:var(--text3);}
.money-add-row input:focus{background:var(--surface);}

.money-amount-input{max-width:100px;font-family:var(--mono)!important;}

.money-add-btn{
  background:var(--accent);
  color:#000;
  border:none;
  padding:.75rem 1.1rem;
  font-family:var(--mono);
  font-weight:700;
  font-size:.8rem;
  cursor:pointer;
  letter-spacing:.05em;
  transition:opacity .15s;
}
.money-add-btn:hover{opacity:.85;}

.money-log{max-height:180px;overflow-y:auto;}

.money-empty{
  padding:1.5rem 1rem;
  font-family:var(--mono);
  font-size:.72rem;
  color:var(--text3);
  text-align:center;
  letter-spacing:.05em;
}

.money-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:.7rem 1rem;
  border-bottom:1px solid var(--border);
  font-size:.82rem;
}

.money-row:last-child{border-bottom:none;}
.money-row .m-client{color:var(--text2);}
.money-row .m-date{font-family:var(--mono);font-size:.65rem;color:var(--text3);margin-top:.1rem;}
.money-row .m-amount{font-family:var(--mono);font-size:.9rem;color:var(--accent);}

/* ── CALENDAR ── */
.cal-block{
  background:var(--surface);
  border:1px solid var(--border);
  margin-bottom:1.5rem;
}

.cal-header{
  padding:1rem;
  border-bottom:1px solid var(--border);
  display:flex;
  justify-content:space-between;
  align-items:center;
}

.cal-month{
  font-family:var(--mono);
  font-size:.72rem;
  color:var(--text2);
  letter-spacing:.08em;
}

.cal-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:1px;
  background:var(--border);
  padding:0;
}

.cal-day-header{
  background:var(--surface);
  padding:.5rem .25rem;
  font-family:var(--mono);
  font-size:.55rem;
  color:var(--text3);
  text-align:center;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.cal-day{
  background:var(--surface);
  aspect-ratio:1;
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:var(--mono);
  font-size:.65rem;
  color:var(--text3);
  cursor:pointer;
  transition:background .12s;
  position:relative;
}

.cal-day:hover{background:var(--surface2);}
.cal-day.empty{cursor:default;}
.cal-day.empty:hover{background:var(--surface);}

.cal-day.is-today{
  color:var(--accent);
  font-weight:700;
}

.cal-day.is-done{
  background:rgba(200,245,60,.08);
  color:var(--accent);
}

.cal-day.is-done::after{
  content:'';
  position:absolute;
  bottom:3px;
  width:4px;height:4px;
  border-radius:50%;
  background:var(--accent);
}

.cal-day.is-fail{
  background:rgba(255,69,69,.06);
  color:var(--text3);
}

/* ── NOTES ── */
.notes-block{
  background:var(--surface);
  border:1px solid var(--border);
  margin-bottom:1.5rem;
}

.notes-header{
  padding:1rem;
  border-bottom:1px solid var(--border);
}

.notes-block textarea{
  width:100%;
  background:transparent;
  border:none;
  color:var(--text);
  padding:1rem;
  font-family:var(--font);
  font-size:.85rem;
  resize:vertical;
  min-height:90px;
  outline:none;
  line-height:1.7;
  border-bottom:1px solid var(--border);
}

.notes-block textarea::placeholder{color:var(--text3);}

.notes-save{
  display:block;
  width:100%;
  background:none;
  border:none;
  color:var(--text3);
  padding:.75rem 1rem;
  font-family:var(--mono);
  font-size:.68rem;
  letter-spacing:.15em;
  text-transform:uppercase;
  cursor:pointer;
  text-align:left;
  transition:color .15s;
}
.notes-save:hover{color:var(--accent);}

/* ── TOAST ── */
.toast{
  position:fixed;
  bottom:1.5rem;
  left:50%;
  transform:translateX(-50%) translateY(8px);
  background:var(--surface);
  border:1px solid var(--border2);
  color:var(--text);
  padding:.6rem 1.25rem;
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.05em;
  opacity:0;
  transition:all .25s;
  pointer-events:none;
  white-space:nowrap;
  z-index:999;
}

.toast.show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}

.toast.xp-toast{
  border-color:var(--accent);
  color:var(--accent);
}

.task-time{
  font-family:var(--mono);
  font-size:.65rem;
  color:var(--text3);
  flex-shrink:0;
  width:32px;
}

.task-time{
  font-family:var(--mono);
  font-size:.65rem;
  color:var(--text3);
  flex-shrink:0;
  width:32px;
}

.sync-status{
  font-family:var(--mono);
  font-size:.62rem;
  color:var(--text3);
  letter-spacing:.05em;
}