:root{
  --bg:#E9EDEC;
  --panel:#F4F6F4;
  --ink:#152423;
  --ink-dim:#4B5957;
  --line:#C9D0CD;
  --accent:#B15A2E;
  --ok:#3D7A56;
  --c-morning:#2F6E73;
  --c-body:#B1731F;
  --c-food:#5F7A3A;
  --c-study:#48548F;
  --c-work:#8A4B6B;
  --c-uni:#465861;
  --c-personal:#A24E45;
  --c-night:#33436B;
  --font-head:'Fraunces', serif;
  --font-body:'IBM Plex Sans', sans-serif;
  --font-mono:'IBM Plex Mono', monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0F1917;
    --panel:#152220;
    --ink:#E7EDE9;
    --ink-dim:#9BAAA5;
    --line:#2B3A37;
    --accent:#E08A4F;
    --ok:#6FBE8F;
    --c-morning:#5FA8AD;
    --c-body:#E8A24B;
    --c-food:#9AC26E;
    --c-study:#8B9BDB;
    --c-work:#D591B4;
    --c-uni:#9BB0BA;
    --c-personal:#E0917F;
    --c-night:#7A8FC4;
  }
}
:root[data-theme="dark"]{
  --bg:#0F1917;
  --panel:#152220;
  --ink:#E7EDE9;
  --ink-dim:#9BAAA5;
  --line:#2B3A37;
  --accent:#E08A4F;
  --ok:#6FBE8F;
  --c-morning:#5FA8AD;
  --c-body:#E8A24B;
  --c-food:#9AC26E;
  --c-study:#8B9BDB;
  --c-work:#D591B4;
  --c-uni:#9BB0BA;
  --c-personal:#E0917F;
  --c-night:#7A8FC4;
}

*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  line-height:1.5;
  padding:0 0 80px;
}
.wrap{max-width:640px;margin:0 auto;padding:28px 20px 0;}

header.top{margin-bottom:28px;}
header.top .kicker{
  font-family:var(--font-mono);
  font-size:12.5px;
  color:var(--ink-dim);
  letter-spacing:.02em;
}
header.top h1{
  font-family:var(--font-head);
  font-weight:600;
  font-size:34px;
  margin:2px 0 14px;
  letter-spacing:-.01em;
}
header.top .navlinks{
  font-family:var(--font-mono);
  font-size:12.5px;
}
header.top .navlinks a{
  color:var(--ink-dim);
  text-decoration:none;
  border-bottom:1px solid var(--line);
}
header.top .navlinks a:hover{color:var(--ink);}

.datebar{
  display:flex;
  gap:10px;
  align-items:baseline;
  flex-wrap:wrap;
}
.datebar input[type=date]{
  font-family:var(--font-mono);
  font-size:15px;
  background:transparent;
  border:none;
  border-bottom:1px solid var(--line);
  color:var(--ink);
  padding:4px 0;
}
.datebar .dow{
  font-family:var(--font-mono);
  color:var(--ink-dim);
  font-size:13px;
}

.objective{
  margin-top:20px;
  padding:16px 18px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:3px;
}
.objective label{
  display:block;
  font-family:var(--font-mono);
  font-size:11.5px;
  color:var(--ink-dim);
  margin-bottom:8px;
}
.objective input{
  width:100%;
  border:none;
  background:transparent;
  font-family:var(--font-head);
  font-size:19px;
  color:var(--ink);
  outline:none;
}
.objective input::placeholder{color:var(--ink-dim);opacity:.7;}

.panel{
  margin-top:26px;
  padding-left:16px;
  border-left:3px solid var(--domain, var(--line));
}
.panel h2{
  font-family:var(--font-head);
  font-size:20px;
  font-weight:600;
  margin:0 0 4px;
  color:var(--domain, var(--ink));
}
.panel .sub{
  font-family:var(--font-mono);
  font-size:11.5px;
  color:var(--ink-dim);
  margin-bottom:12px;
}

.checks{display:flex;flex-direction:column;gap:9px;margin-bottom:4px;}
.chk{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:15px;}
.chk input{
  width:17px;height:17px;flex:none;
  accent-color:var(--domain, var(--accent));
  cursor:pointer;
}
.chk span{user-select:none;}

.fieldgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;}
.fieldgrid.wide{grid-template-columns:1fr;}
.field label{
  display:block;font-family:var(--font-mono);font-size:11px;color:var(--ink-dim);margin-bottom:5px;
}
.field input[type=text], .field input[type=number], .field textarea{
  width:100%;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:3px;
  padding:8px 10px;
  font-family:var(--font-body);
  font-size:14.5px;
  color:var(--ink);
  outline:none;
}
.field textarea{resize:vertical;min-height:44px;}
.field input:focus, .field textarea:focus, .objective input:focus{
  outline:2px solid var(--domain, var(--accent));
  outline-offset:2px;
}

.slider-row{
  display:flex;align-items:center;gap:12px;margin:10px 0;
}
.slider-row label{
  font-family:var(--font-mono);font-size:12.5px;color:var(--ink-dim);
  width:118px;flex:none;
}
.slider-row input[type=range]{
  flex:1;accent-color:var(--domain, var(--accent));
}
.slider-row .val{
  font-family:var(--font-mono);font-size:14px;width:24px;text-align:right;color:var(--ink);
}

.radiogroup{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.radiogroup label{
  font-family:var(--font-mono);font-size:12.5px;
  border:1px solid var(--line);
  border-radius:20px;
  padding:6px 13px;
  cursor:pointer;
  color:var(--ink-dim);
}
.radiogroup input{display:none;}
.radiogroup input:checked + span{color:var(--ink);}
.radiogroup label:has(input:checked){
  border-color:var(--domain, var(--accent));
  background:color-mix(in srgb, var(--domain, var(--accent)) 14%, transparent);
}

.score-block{
  margin-top:34px;
  padding:18px 18px 6px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:3px;
}
.score-block h2{
  font-family:var(--font-head);font-size:20px;margin:0 0 14px;
}

.save-bar{
  position:sticky;bottom:0;
  margin-top:30px;
  padding:14px 0 18px;
  background:linear-gradient(to top, var(--bg) 65%, transparent);
}
button#saveBtn{
  width:100%;
  font-family:var(--font-mono);
  font-size:14px;
  letter-spacing:.02em;
  padding:14px;
  background:var(--accent);
  color:#fff;
  border:none;
  border-radius:3px;
  cursor:pointer;
}
button#saveBtn:active{opacity:.85;}
#saveStatus{
  text-align:center;font-family:var(--font-mono);font-size:12px;color:var(--ink-dim);
  margin-top:8px;min-height:14px;
}

.logsection{margin-top:44px;}
.logsection h2{
  font-family:var(--font-head);font-size:22px;margin-bottom:4px;
}
.logsection .sub{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-dim);margin-bottom:16px;}
.chart-wrap{
  background:var(--panel);border:1px solid var(--line);border-radius:3px;
  padding:14px;margin-bottom:16px;overflow-x:auto;
}
.chart-wrap svg{display:block;min-width:100%;}
table.logtable{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:12.5px;}
table.logtable th, table.logtable td{
  text-align:left;padding:7px 6px;border-bottom:1px solid var(--line);
}
table.logtable th{color:var(--ink-dim);font-weight:500;}
.empty-log{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-dim);}

.theme-toggle{
  position:fixed;top:14px;right:14px;
  font-family:var(--font-mono);font-size:11px;
  background:var(--panel);border:1px solid var(--line);
  border-radius:20px;padding:6px 12px;cursor:pointer;color:var(--ink-dim);
}

/* dashboard-specific */
.stat-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:10px;margin-bottom:16px;}
.stat-tile{
  background:var(--panel);border:1px solid var(--line);border-radius:3px;
  padding:12px 14px;
}
.stat-tile .label{font-family:var(--font-mono);font-size:11px;color:var(--ink-dim);margin-bottom:6px;}
.stat-tile .value{font-family:var(--font-head);font-size:24px;font-weight:600;}
.streak-list{display:flex;flex-direction:column;gap:6px;}
.streak-row{
  display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--font-mono);font-size:12.5px;
  padding:8px 10px;background:var(--panel);border:1px solid var(--line);border-radius:3px;
}
.streak-row .name{color:var(--ink);}
.streak-row .nums{color:var(--ink-dim);}
.streak-row .nums b{color:var(--accent);}

/* select-all per panel */
.panel{position:relative;}
.select-all-btn{
  position:absolute;top:0;right:0;
  font-family:var(--font-mono);font-size:10.5px;
  background:var(--panel);border:1px solid var(--line);
  border-radius:20px;padding:4px 10px;cursor:pointer;color:var(--ink-dim);
}
.select-all-btn:hover{color:var(--ink);}

/* log row delete button */
.row-delete-btn{
  font-family:var(--font-mono);font-size:13px;color:var(--ink-dim);
  background:none;border:none;cursor:pointer;padding:2px 6px;
}
.row-delete-btn:hover{color:var(--accent);}

/* schedule editor + generic secondary button */
.secondary-btn{
  font-family:var(--font-mono);font-size:13px;
  background:var(--panel);border:1px solid var(--line);border-radius:3px;
  padding:9px 14px;cursor:pointer;color:var(--ink);
}
.secondary-btn:hover{border-color:var(--accent);}
table.logtable input[type=text]{
  width:100%;background:transparent;border:none;border-bottom:1px solid var(--line);
  font-family:var(--font-mono);font-size:12.5px;color:var(--ink);padding:4px 2px;outline:none;
}
table.logtable input[type=text]:focus{border-bottom-color:var(--accent);}
.row-del{
  background:none;border:none;color:var(--ink-dim);cursor:pointer;font-size:15px;padding:2px 6px;
}
.row-del:hover{color:var(--accent);}

/* login page */
.login-wrap{
  max-width:340px;margin:120px auto 0;padding:0 20px;
  font-family:var(--font-body);
}
.login-wrap h1{font-family:var(--font-head);font-size:28px;margin-bottom:20px;}
.login-wrap input[type=password]{
  width:100%;padding:10px 12px;font-family:var(--font-mono);font-size:15px;
  background:var(--panel);border:1px solid var(--line);border-radius:3px;color:var(--ink);
  margin-bottom:12px;
}
.login-wrap button{
  width:100%;padding:12px;font-family:var(--font-mono);font-size:14px;
  background:var(--accent);color:#fff;border:none;border-radius:3px;cursor:pointer;
}
.login-wrap .error{color:var(--accent);font-family:var(--font-mono);font-size:12.5px;margin-bottom:10px;}
