:root{
  color-scheme:dark;
  --paper:#191B15; --ink:#EDEAE0; --ink-soft:#93987F; --line:#3A3D30;
  --card:#242720; --field:#1E2118;
  --protein:#71AAD1; --carb:#E3B15A; --fat:#DE8B5F; --cal:#9CB169;
  --danger:#DE8B5F; --good:#9CB169; --warn:#E3B15A;
  --totals-bg:#0E0F0B; --totals-text:#F2EFE6;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'Segoe UI',system-ui,-apple-system,sans-serif;padding:24px 16px 60px;}
.wrap{max-width:900px;margin:0 auto;}
h1{font-family:Georgia,'Times New Roman',serif;font-weight:600;font-size:28px;margin:0 0 2px;letter-spacing:0.2px;}
.sub{color:var(--ink-soft);font-size:13px;margin-bottom:20px;}
h2{font-size:15px;margin:0;font-weight:700;}

.date-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
input[type=date],input[type=time],input[type=number],input[type=text],select,textarea{
  font-family:inherit;font-size:13px;padding:6px 8px;border:1px solid var(--line);
  border-radius:6px;background:var(--card);color:var(--ink);}
input[type=date]{font-size:14px;padding:6px 10px;}
.day-nav-btn{font-family:inherit;font-size:15px;line-height:1;padding:6px 11px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink);cursor:pointer;}
.day-nav-btn:hover{background:var(--field);}
.status{font-size:12px;color:var(--ink-soft);}
.cycle-badge{font-size:11px;text-transform:uppercase;letter-spacing:0.6px;padding:5px 10px;
  border-radius:20px;border:1px solid var(--line);background:var(--field);color:var(--ink-soft);}
.cycle-badge b{color:var(--cal);font-weight:700;}
.cycle-badge.rest b{color:var(--ink-soft);}

.tabs{display:flex;gap:4px;margin-bottom:20px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.tab{background:none;border:none;border-bottom:2px solid transparent;color:var(--ink-soft);
  font-family:inherit;font-size:13px;padding:9px 14px;cursor:pointer;margin-bottom:-1px;}
.tab:hover{color:var(--ink);}
.tab.active{color:var(--ink);border-bottom-color:var(--cal);font-weight:600;}
.panel{display:none;} .panel.active{display:block;}

.card{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;overflow:hidden;}
.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.card-head .meta{font-family:'Courier New',monospace;font-size:12px;color:var(--ink-soft);}
.card-body{padding:12px 16px;}

.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px;}
.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;}
.stat .label{font-size:11px;text-transform:uppercase;letter-spacing:0.6px;color:var(--ink-soft);}
.stat .value{font-family:'Courier New',monospace;font-size:20px;font-weight:700;margin:4px 0 2px;}
.stat .note{font-size:11px;color:var(--ink-soft);}

.field-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
.field label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:0.5px;color:var(--ink-soft);margin-bottom:4px;}
.field input,.field select{width:100%;}
.hint{font-size:11px;color:var(--ink-soft);margin-top:6px;}

table{width:100%;border-collapse:collapse;font-size:13px;}
th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:0.5px;color:var(--ink-soft);padding:6px 16px;font-weight:600;}
td{padding:7px 16px;border-top:1px solid var(--line);vertical-align:top;}
td.num,th.num{font-family:'Courier New',monospace;text-align:right;}
tfoot td{border-top:3px double var(--ink-soft);background:var(--field);font-weight:700;}
tfoot .sub-label{font-size:10px;text-transform:uppercase;letter-spacing:0.7px;color:var(--ink-soft);}

.btn{background:var(--cal);color:#191B15;border:none;border-radius:6px;padding:7px 14px;font-size:13px;font-family:inherit;cursor:pointer;font-weight:600;}
.btn:hover{opacity:0.85;}
.btn-quiet{background:none;border:1px solid var(--line);color:var(--ink-soft);border-radius:6px;padding:6px 12px;font-size:12px;font-family:inherit;cursor:pointer;}
.btn-quiet:hover{background:var(--field);color:var(--ink);}
.del-btn{background:none;border:none;color:var(--danger);cursor:pointer;font-size:14px;padding:0 4px;}
.del-btn:hover{opacity:0.6;}
.row-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;}

.empty{padding:14px 16px;font-size:13px;color:var(--ink-soft);font-style:italic;}
.prev-session{border-left:2px solid var(--line);}
.prev-session .card-head{background:var(--field);}
.ago{font-size:11px;color:var(--ink-soft);text-transform:none;letter-spacing:0;}
.delta{font-family:'Courier New',monospace;font-size:11px;padding:1px 6px;border-radius:10px;margin-left:6px;}
.delta.up{background:rgba(156,177,105,0.18);color:var(--good);}
.delta.down{background:rgba(222,139,95,0.18);color:var(--danger);}
.delta.same{background:var(--field);color:var(--ink-soft);}
.note-line{font-size:12px;color:var(--ink-soft);font-style:italic;margin-top:3px;}
.rpe{font-family:'Courier New',monospace;color:var(--carb);}

.pep-grid{display:grid;grid-template-columns:1fr auto auto auto 26px;gap:8px 10px;align-items:center;}
.pep-name{font-size:13px;} .pep-name small{display:block;color:var(--ink-soft);font-size:11px;}
.pep-grid input[type=time]{width:116px;}
.pep-time{display:flex;align-items:center;gap:5px;}
.stamp-btn{background:none;border:1px dashed var(--line);border-radius:3px;cursor:pointer;
  color:var(--ink-soft);font-size:10px;font-family:'Courier New',monospace;padding:3px 5px;
  white-space:nowrap;}
.stamp-btn:hover{border-style:solid;border-color:var(--accent,var(--ink-soft));color:var(--ink);}
.pep-hdr{font-size:10px;text-transform:uppercase;letter-spacing:0.5px;color:var(--ink-soft);}
.pep-cell{display:flex;align-items:center;gap:4px;}
.pep-cell input{width:62px;font-family:'Courier New',monospace;text-align:right;}
.pep-cell span{font-size:10px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.5px;}
.pep-adj small{color:var(--carb);}
.pep-adj input[type=number]{border-color:var(--carb);}
.reset-btn{background:none;border:none;color:var(--ink-soft);cursor:pointer;font-size:14px;padding:0 3px;}
.pep-band,.pep-band-ctl{display:flex;align-items:center;gap:6px;
  margin:5px 0 1px;padding-top:10px;border-top:1px dashed var(--line);}
.pep-band{grid-column:1;}
.pep-band-ctl{grid-column:2/-1;flex-wrap:wrap;}
.pep-grid > .pep-band:first-of-type,
.pep-grid > .pep-band:first-of-type + .pep-band-ctl{margin-top:0;padding-top:0;border-top:none;}
.pep-band-label{font-size:10px;text-transform:uppercase;letter-spacing:0.5px;color:var(--ink-soft);}
.pep-band-n{font-size:10px;color:var(--ink-soft);opacity:0.7;}
.pep-band-ctl input[type=time]{width:104px;}
.pep-band-ctl .btn-quiet{padding:2px 6px;}
.pep-band-ctl .btn-quiet[disabled]{opacity:0.4;cursor:default;}
.reset-btn:hover{color:var(--ink);}
/* Narrow: the name takes its own line and the three controls sit under it,
   which beats squeezing a compound name into 70px. */
@media (max-width:620px){
  .pep-grid{grid-template-columns:1fr auto auto 26px;gap:4px 8px;}
  .pep-grid > .pep-hdr-cell{display:none;}
  .pep-grid > .pep-name{grid-column:1 / -1;margin-top:10px;}
  .pep-grid input[type=time]{width:104px;}
  .pep-cell input{width:56px;}
}
.off-day{color:var(--ink-soft);font-style:italic;font-size:12px;}

.bar-track{height:6px;border-radius:4px;background:var(--paper);border:1px solid var(--line);overflow:hidden;margin:2px 0 5px;}
.bar-fill{height:100%;border-radius:4px;transition:width 0.3s ease;}
.diff-over{color:#E8A388;} .diff-under{color:#9FC4D8;} .diff-ok{color:#B8D67A;}
.t-dim{color:var(--ink-soft);}
.custom-box{border-top:1px dashed var(--line);margin-top:12px;}
.chart-wrap{position:relative;}
.tip{position:absolute;display:none;z-index:5;pointer-events:none;background:var(--totals-bg);
  border:1px solid var(--ink-soft);border-radius:6px;padding:7px 10px;font-size:11px;
  line-height:1.5;color:var(--ink);white-space:nowrap;box-shadow:0 3px 10px rgba(0,0,0,0.5);}
.tip b{font-family:'Courier New',monospace;}
.tip .t-dim{color:var(--ink-soft);}
.hit{fill:transparent;cursor:crosshair;}
.subtabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;}
.subtab{background:var(--card);border:1px solid var(--line);border-radius:20px;color:var(--ink-soft);
  font-family:inherit;font-size:12px;padding:6px 14px;cursor:pointer;}
.subtab:hover{color:var(--ink);}
.subtab.active{background:var(--field);color:var(--ink);border-color:var(--ink-soft);font-weight:600;}
.legend{font-size:11px;color:var(--ink-soft);margin-top:8px;display:flex;gap:14px;flex-wrap:wrap;}
.heat{display:grid;gap:2px;align-items:center;min-width:640px;}
.heat-lbl{font-size:11px;color:var(--ink-soft);padding-right:8px;white-space:nowrap;}
.heat-cell{aspect-ratio:1;border-radius:2px;background:var(--field);border:1px solid var(--line);}
.heat-cell.on{background:var(--cal);border-color:var(--cal);}
.cov-cell{text-align:center;font-family:'Courier New',monospace;font-weight:700;}
.cov-2{color:var(--good);} .cov-1{color:var(--warn);} .cov-0{color:var(--danger);opacity:0.55;}
.spark{display:block;width:100%;height:70px;}

.banner{background:var(--field);border:1px solid var(--line);border-left:3px solid var(--carb);
  border-radius:6px;padding:10px 14px;font-size:12px;color:var(--ink-soft);margin-bottom:16px;}
.banner b{color:var(--ink);}

@media(max-width:600px){
  .stat-grid{grid-template-columns:repeat(2,1fr);}
  table{font-size:12px;} th,td{padding-left:9px;padding-right:9px;}
  .tab{padding:9px 10px;}
}

.top-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;}
.user-bar{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-soft);}
.signin{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:22px 20px;}
.google-btn{text-decoration:none;display:inline-block;padding:10px 18px;font-size:14px;}
.signin-error{font-size:13px;color:var(--danger);min-height:1em;}
.signin-error:empty{display:none;}
.banner a{color:var(--cal);}
