/* 45-Day Tracker — Colorful Light Theme | Gauri Kaushik */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --ink:#1a1a2e;--ink2:#0f172a;--dim:#64748b;--bdr:#e2e8f0;
  --card:#ffffff;--bg:#f0f4ff;--lime:#b5f23d;
  --sky:#38bdf8;--violet:#a78bfa;--rose:#fb7185;
  --amber:#fbbf24;--teal:#2dd4bf;--orange:#fb923c;--green:#22c55e;
  --p1:#38bdf8;--p2:#a78bfa;--p3:#fbbf24;--p4:#fb7185;--p5:#2dd4bf;
  --mono:'Space Mono',monospace;--sans:'DM Sans',system-ui,sans-serif;
}
body{font-family:var(--sans);background:var(--bg);color:var(--ink);min-height:100vh}

/* ── TOPBAR ── */
.site-header{background:var(--ink);padding:0 20px;display:flex;align-items:center;gap:0;height:58px;position:sticky;top:0;z-index:100;box-shadow:0 2px 12px rgba(0,0,0,.3)}
.header-inner{display:flex;align-items:center;width:100%;gap:0}
.brand{display:flex;align-items:center;gap:12px;padding-right:20px;border-right:1px solid rgba(255,255,255,.1)}
.brand-mono{width:40px;height:40px;border-radius:10px;background:var(--lime);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:800;font-size:14px;color:var(--ink);flex-shrink:0;letter-spacing:-1px}
.brand-text{display:flex;flex-direction:column}
.brand-name{font-size:14px;font-weight:700;color:#fff;letter-spacing:-.3px}
.brand-sub{font-size:10px;color:rgba(255,255,255,.4);letter-spacing:.3px}
.day-counter{display:flex;align-items:center;gap:8px;padding:0 20px;border-right:1px solid rgba(255,255,255,.1)}
.day-num{font-family:var(--mono);font-size:14px;color:rgba(255,255,255,.6)}
.day-num strong{color:var(--lime);font-size:28px;letter-spacing:-2px}
.day-total{color:rgba(255,255,255,.35);font-size:13px}
.phase-badge{font-family:var(--mono);font-size:10px;font-weight:700;padding:5px 12px;border-radius:20px;letter-spacing:.5px;text-transform:uppercase;margin:0 16px}
.phase-p1{background:rgba(56,189,248,.15);color:var(--p1);border:1px solid rgba(56,189,248,.35)}
.phase-p2{background:rgba(167,139,250,.15);color:var(--p2);border:1px solid rgba(167,139,250,.35)}
.phase-p3{background:rgba(251,191,36,.15);color:var(--p3);border:1px solid rgba(251,191,36,.35)}
.phase-p4{background:rgba(251,113,133,.15);color:var(--p4);border:1px solid rgba(251,113,133,.35)}
.phase-p5{background:rgba(45,212,191,.15);color:var(--p5);border:1px solid rgba(45,212,191,.35)}

/* Tab nav */
.tab-row-header{display:flex;gap:4px;margin-left:auto}
.htab{padding:6px 14px;border-radius:8px;font-size:11px;font-weight:700;cursor:pointer;background:rgba(255,255,255,.08);color:rgba(255,255,255,.45);transition:all .15s;letter-spacing:.3px;text-decoration:none;display:inline-block;font-family:var(--mono)}
.htab-active{background:var(--lime);color:var(--ink)}
.htab:hover:not(.htab-active){background:rgba(255,255,255,.15);color:#fff}

.header-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;padding-left:16px;min-width:140px}
.today-date{font-family:var(--mono);font-size:10px;color:rgba(255,255,255,.35)}
.overall-progress{display:flex;align-items:center;gap:6px;font-size:10px;color:rgba(255,255,255,.35)}
.progress-bar-thin{width:90px;height:3px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden}
.progress-fill{height:100%;background:var(--lime);border-radius:2px;transition:width .5s}
.viewing-past{font-size:9px;color:var(--amber);font-family:var(--mono);margin-left:4px}

/* Score ring */
.score-ring-wrap{position:relative;width:52px;height:52px;flex-shrink:0}
.score-ring-wrap svg{position:absolute;top:0;left:0}
.score-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:var(--lime);font-family:var(--mono)}
.score-label-wrap{display:flex;flex-direction:column;gap:2px}
.score-label-wrap span{font-size:10px;color:rgba(255,255,255,.35)}
.score-label-wrap strong{font-size:12px;color:#fff}

/* ── PHASE BANNER ── */
.phase-banner{padding:10px 20px;font-size:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid rgba(0,0,0,.06)}
.pb-p1{background:#e0f2fe;color:#0369a1}
.pb-p2{background:#ede9fe;color:#5b21b6}
.pb-p3{background:#fef9c3;color:#854d0e}
.pb-p4{background:#ffe4e6;color:#9f1239}
.pb-p5{background:#ccfbf1;color:#065f46}
.phase-sep{opacity:.4}
.phase-target{opacity:.6;font-size:11px}
.focus-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.banner-targets{display:flex;gap:6px;margin-left:auto}
.tpill{font-size:10px;font-weight:700;padding:3px 10px;border-radius:20px}
.tp-rt{background:#fce7f3;color:#9d174d;border:1px solid #fbcfe8}
.tp-md{background:#e0f2fe;color:#075985;border:1px solid #bae6fd}
.tp-bf{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}

/* ── MAIN GRID ── */
.main-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:16px;max-width:1400px;margin:0 auto}
@media(max-width:900px){.main-grid{grid-template-columns:1fr}}
.col-left,.col-right{display:flex;flex-direction:column;gap:16px}

/* ── CARDS ── */
.card{background:var(--card);border:1px solid var(--bdr);border-radius:16px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.card-plugin{border-left:3px solid var(--violet)}
.card-header{display:flex;align-items:center;gap:10px;padding:14px 16px 12px;border-bottom:1px solid var(--bdr)}
.card-icon{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.ci-blue{background:#eff6ff;color:#2563eb}
.ci-violet{background:#f5f3ff;color:#7c3aed}
.ci-green{background:#f0fdf4;color:#16a34a}
.ci-amber{background:#fffbeb;color:#d97706}
.ci-rose{background:#fff1f2;color:#e11d48}
.ci-teal{background:#f0fdfa;color:#0d9488}
.ci-pink{background:#fdf4ff;color:#9d174d}
.card-header h2{font-size:13px;font-weight:700;color:var(--ink);flex:1}
.card-meta{font-size:11px;color:var(--dim)}
.ch-badge{font-size:10px;font-weight:700;padding:3px 9px;border-radius:20px;background:#f1f5f9;color:var(--dim)}

/* ── TASK LIST ── */
.task-list{padding:12px 14px;display:flex;flex-direction:column;gap:7px}
.task-item{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border-radius:10px;cursor:pointer;transition:all .15s;border:1.5px solid var(--bdr);background:#fff;user-select:none}
.task-item:hover{border-color:var(--violet);background:#faf5ff}
.task-item.done{background:#f0fdf4;border-color:#86efac}
.task-item.done .task-text{text-decoration:line-through;color:#86efac}
.task-check{width:20px;height:20px;border-radius:6px;border:2px solid var(--bdr);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;transition:all .15s;font-size:11px;font-weight:800;color:#fff}
.task-item.done .task-check{background:var(--green);border-color:var(--green)}
.task-text{font-size:13px;line-height:1.5;color:var(--ink)}
.hidden-cb{display:none}

/* Deliverable */
.deliverable-box{margin:0 14px 14px;padding:13px 14px;border-radius:10px;background:linear-gradient(135deg,#fef9c3,#fef3c7);border:1px solid #fde68a;display:flex;gap:10px;align-items:flex-start}
.deliverable-label{font-size:9px;font-weight:800;color:#92400e;text-transform:uppercase;letter-spacing:.8px;margin-bottom:3px;white-space:nowrap}
.deliverable-text{font-size:12px;color:#78350f;line-height:1.5}

/* ── PLUGIN CARD ── */
.plugin-task-body{padding:14px;display:flex;flex-direction:column;gap:11px}
.plugin-name-badge{display:inline-flex;align-items:center;gap:5px;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:20px;padding:4px 11px;font-size:10px;font-weight:700;color:#6d28d9;letter-spacing:.3px}
.plugin-task-title{font-size:13px;font-weight:700;color:#6d28d9;line-height:1.4}
.plugin-code-task{font-size:12px;line-height:1.7;color:#475569;background:#f8faff;border:1px solid var(--bdr);border-radius:8px;padding:11px 13px}
.plugin-files-row{display:flex;flex-direction:column;gap:7px}
.plugin-files{display:flex;align-items:flex-start;gap:7px;font-size:11px;flex-wrap:wrap}
.files-label{color:var(--dim);white-space:nowrap}
.plugin-files code{font-family:var(--mono);font-size:10px;color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;padding:3px 8px;border-radius:5px}
.git-branch-box{display:flex;align-items:center;gap:7px;font-size:11px}
.git-label{color:var(--dim);font-family:var(--mono);font-size:11px}
.git-branch{font-family:var(--mono);font-size:10px;color:#92400e;background:#fef9c3;border:1px solid #fde68a;padding:3px 8px;border-radius:5px}
.plugin-done-toggle{display:flex;align-items:center;gap:9px;padding:11px 13px;border-radius:10px;border:2px dashed #ddd6fe;cursor:pointer;font-size:12px;color:#7c3aed;background:#faf5ff;transition:all .2s;user-select:none}
.plugin-done-toggle:hover{border-color:var(--violet);background:#f5f3ff}
.plugin-done-toggle.done{border-style:solid;border-color:var(--green);background:#f0fdf4;color:#15803d}
.plugin-done-icon{width:20px;height:20px;border-radius:6px;border:2px solid #ddd6fe;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff;flex-shrink:0;transition:all .2s}
.plugin-done-toggle.done .plugin-done-icon{background:var(--green);border-color:var(--green)}

/* ── HABITS ── */
.habits-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 14px}
.habit-card{border-radius:12px;padding:12px 10px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;transition:all .2s;border:2px solid var(--bdr);text-align:center;user-select:none;background:#fff}
.habit-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.habit-icon-wrap{font-size:18px;width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;transition:all .2s}
.habit-label{font-size:11px;font-weight:700;color:var(--ink);line-height:1.2}
.habit-sub{font-size:10px;color:var(--dim);line-height:1.2}
/* Per-habit colors */
.hb-git .habit-icon-wrap{background:#eff6ff;color:#2563eb}
.hb-git.habit-done{background:#eff6ff;border-color:#93c5fd}
.hb-exercise .habit-icon-wrap{background:#fff7ed;color:#ea580c}
.hb-exercise.habit-done{background:#fff7ed;border-color:#fdba74}
.hb-book .habit-icon-wrap{background:#fdf4ff;color:#9d174d}
.hb-book.habit-done{background:#fdf4ff;border-color:#e879f9}
.hb-ai_tool .habit-icon-wrap{background:#f5f3ff;color:#6d28d9}
.hb-ai_tool.habit-done{background:#f5f3ff;border-color:#c4b5fd}
.hb-comms .habit-icon-wrap{background:#f0fdf4;color:#15803d}
.hb-comms.habit-done{background:#f0fdf4;border-color:#86efac}
.hb-reflect .habit-icon-wrap{background:#fefce8;color:#a16207}
.hb-reflect.habit-done{background:#fefce8;border-color:#fde047}
.streak-row{display:flex;gap:8px;padding:0 14px 14px;flex-wrap:wrap}
.streak-chip{display:flex;align-items:center;gap:5px;padding:5px 12px;border-radius:20px;font-size:11px;font-weight:700}
.sc-fire{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}
.sc-check{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}
.sc-low{background:#fefce8;color:#854d0e;border:1px solid #fde047}

/* ── HEATMAP ── */
.heatmap{display:grid;grid-template-columns:repeat(9,1fr);gap:4px;padding:12px 14px 6px}
.heatmap-cell{aspect-ratio:1;border-radius:5px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s;text-decoration:none;border:1.5px solid transparent}
.heatmap-cell:hover{transform:scale(1.25);z-index:5}
.cell-num{font-family:var(--mono);font-size:8px;font-weight:700;opacity:.7;color:var(--ink)}
.heatmap-cell.today-cell{outline:2.5px solid var(--ink);outline-offset:1px}
/* Phase colors */
.heatmap-cell.empty{background:#f1f5f9;border-color:#e2e8f0}
.heatmap-cell.future{background:transparent;border:1.5px dashed #e2e8f0;opacity:.5}
.heatmap-cell.low-p1{background:#bae6fd;border-color:#7dd3fc}
.heatmap-cell.half-p1{background:#38bdf8;border-color:#0ea5e9}
.heatmap-cell.full-p1{background:#0284c7;border-color:#0369a1}
.heatmap-cell.low-p2{background:#ddd6fe;border-color:#c4b5fd}
.heatmap-cell.half-p2{background:#a78bfa;border-color:#7c3aed}
.heatmap-cell.full-p2{background:#7c3aed;border-color:#6d28d9}
.heatmap-cell.low-p3{background:#fde68a;border-color:#fbbf24}
.heatmap-cell.half-p3{background:#fbbf24;border-color:#d97706}
.heatmap-cell.full-p3{background:#d97706;border-color:#b45309}
.heatmap-cell.low-p4{background:#fecdd3;border-color:#fda4af}
.heatmap-cell.half-p4{background:#fb7185;border-color:#e11d48}
.heatmap-cell.full-p4{background:#e11d48;border-color:#be123c}
.heatmap-cell.low-p5{background:#99f6e4;border-color:#5eead4}
.heatmap-cell.half-p5{background:#2dd4bf;border-color:#0d9488}
.heatmap-cell.full-p5{background:#0d9488;border-color:#0f766e}
.heatmap-cell.full-p1 .cell-num,.heatmap-cell.full-p2 .cell-num,
.heatmap-cell.full-p3 .cell-num,.heatmap-cell.full-p4 .cell-num,
.heatmap-cell.full-p5 .cell-num{color:#fff;opacity:1}
.phase-labels{display:flex;gap:6px;flex-wrap:wrap;padding:4px 14px 14px}
.pl{font-size:9px;font-weight:700;padding:3px 9px;border-radius:20px}
.pl-p1{background:#bae6fd;color:#0369a1}
.pl-p2{background:#ddd6fe;color:#5b21b6}
.pl-p3{background:#fde68a;color:#92400e}
.pl-p4{background:#fecdd3;color:#be123c}
.pl-p5{background:#99f6e4;color:#065f46}

/* ── RATINGS ── */
.ratings-list{padding:10px 14px;display:flex;flex-direction:column;gap:4px}
.rating-row{display:flex;align-items:center;justify-content:space-between;padding:9px 11px;border-radius:10px;background:#f8faff;border:1px solid var(--bdr)}
.rating-label{display:flex;flex-direction:column;gap:2px}
.rating-label span{font-size:12px;font-weight:600;color:var(--ink)}
.rating-label small{font-size:10px;color:var(--dim)}
.rating-stars{display:flex;align-items:center;gap:3px}
.star{background:none;border:none;cursor:pointer;font-size:19px;padding:1px;transition:transform .1s;line-height:1;color:#e2e8f0}
.star:hover{transform:scale(1.3)}
.star.active{color:var(--amber)}
.rating-num{font-family:var(--mono);font-size:10px;color:var(--dim);min-width:24px;margin-left:4px}

/* ── BOOK / AI / REFLECTION ── */
.log-fields{padding:12px 14px;display:flex;flex-direction:column;gap:9px}
.text-input{width:100%;background:#f8faff;border:1.5px solid var(--bdr);color:var(--ink);padding:10px 13px;border-radius:10px;font-size:13px;outline:none;transition:border-color .2s;font-family:var(--sans)}
.text-input:focus{border-color:var(--violet);background:#fff}
.text-input::placeholder{color:#94a3b8}
.text-area{width:100%;background:#f8faff;border:1.5px solid var(--bdr);color:var(--ink);padding:10px 13px;border-radius:10px;font-size:13px;min-height:78px;resize:vertical;outline:none;transition:border-color .2s;line-height:1.6;font-family:var(--sans)}
.text-area:focus{border-color:var(--violet);background:#fff}
.text-area::placeholder{color:#94a3b8}
.text-area-lg{min-height:100px}

.reflection-prompts{display:flex;gap:6px;flex-wrap:wrap;padding:10px 14px 0}
.prompt-tag{font-size:10px;font-weight:600;padding:4px 10px;border-radius:20px;background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}

/* ── SAVE BUTTON ── */
.btn-primary{display:block;margin:10px 14px 14px;padding:13px;border-radius:12px;border:none;font-size:13px;font-weight:800;letter-spacing:.3px;cursor:pointer;background:var(--ink);color:var(--lime);transition:all .2s;width:calc(100% - 28px);font-family:var(--sans)}
.btn-primary:hover{background:var(--ink2);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.2)}
.btn-primary:active{transform:translateY(0)}
.btn-ghost{padding:9px 14px;background:#fff;border:1.5px solid var(--bdr);color:var(--ink);border-radius:8px;font-size:12px;cursor:pointer;transition:all .2s;font-family:var(--sans);font-weight:600}
.btn-ghost:hover{border-color:var(--violet);color:#7c3aed}

/* ── TASK ADD ── */
.task-add{padding:0 14px 14px;display:flex;gap:8px}

/* ── DAY NAV ── */
.day-nav{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 20px 20px;max-width:1400px;margin:0 auto}
.nav-btn{padding:9px 18px;border-radius:10px;border:1.5px solid var(--bdr);background:#fff;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;transition:all .15s;text-decoration:none;display:inline-block;font-family:var(--sans)}
.nav-btn:hover{border-color:var(--violet);color:#7c3aed;background:#faf5ff}
.nav-today-btn{background:var(--ink);color:var(--lime);border-color:var(--ink)}
.nav-today-btn:hover{background:var(--ink2);color:var(--lime);border-color:var(--ink2)}

/* ── TOAST ── */
.toast{position:fixed;bottom:20px;right:20px;background:var(--ink);color:var(--lime);font-family:var(--mono);font-size:11px;font-weight:700;padding:10px 18px;border-radius:20px;transform:translateY(60px);opacity:0;transition:all .3s cubic-bezier(.34,1.56,.64,1);z-index:9999;letter-spacing:.5px;pointer-events:none}
.toast.show{transform:translateY(0);opacity:1}

/* ── SCORE RING (fixed top-right) ── */
.score-fixed{position:fixed;top:70px;right:16px;background:var(--card);border:1px solid var(--bdr);border-radius:14px;padding:10px 14px;display:flex;align-items:center;gap:10px;z-index:90;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.score-ring-outer{position:relative;width:50px;height:50px;flex-shrink:0}
.score-ring-outer svg{position:absolute;top:0;left:0}
.score-ring-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:800;color:var(--ink)}
.score-fixed-label{display:flex;flex-direction:column;gap:2px}
.score-fixed-label span{font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.5px;font-weight:600}
.score-fixed-label strong{font-size:14px;color:var(--ink);font-family:var(--mono)}

/* ── RESPONSIVE ── */
@media(max-width:640px){
  .habits-grid{grid-template-columns:1fr 1fr}
  .heatmap{grid-template-columns:repeat(7,1fr)}
  .banner-targets{display:none}
  .header-right{display:none}
}
@media(max-width:400px){
  .day-counter{display:none}
}

/* ── ANIMATIONS ── */
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.card{animation:fadeUp .35s ease both}
.col-left .card:nth-child(1){animation-delay:.04s}
.col-left .card:nth-child(2){animation-delay:.08s}
.col-left .card:nth-child(3){animation-delay:.12s}
.col-right .card:nth-child(1){animation-delay:.06s}
.col-right .card:nth-child(2){animation-delay:.10s}
.col-right .card:nth-child(3){animation-delay:.14s}
.col-right .card:nth-child(4){animation-delay:.18s}
