/* Kids Day Scheduler - single stylesheet. Tokens per FSD-000 section 8 / APX-A. */

:root{
  /* palette (APX-A) */
  --bg:#E6E9E3; --surface:#FDFDFC; --ink:#1A2A2E; --muted:#6B7A7E; --line:#CBD2C9;
  /* derived, from the approved drafts */
  --hover:#EEF1EC; --ink-press:#122024; --track:#DDE2DA;
  /* category (APX-A) */
  --c-routine:#7A8A93; --c-bible:#5C6BA8; --c-academic:#216B62;
  --c-skills:#B07A1E; --c-break:#6E8A3C; --c-free:#A63D62;
  /* metrics */
  --wrap-max:560px; --row-h-day:66px; --row-h-builder:78px;
  --radius-row:12px; --radius-card:14px; --radius-pill:999px;
  /* motion (APX-A) */
  --ease:cubic-bezier(.2,.7,.3,1);
  --t-reorder:.16s; --t-popover:.13s; --t-tray:.28s; --t-modal:.22s;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--ink);
  font-family:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:15px;line-height:1.45;
}
.wrap{max-width:var(--wrap-max);margin:0 auto;padding:18px 16px 40px}

/* Household header line (D6, FSD-000 section 8) */
.household{
  font-family:"DM Mono",monospace;font-size:10px;font-weight:500;
  letter-spacing:.13em;text-transform:uppercase;color:var(--muted);
  text-align:center;margin:12px 0 0;
}

/* Shared bits */
.warn{color:var(--c-free);font-size:12.5px;font-weight:600;margin:0 0 12px}
.empty-panel{
  border:1px dashed var(--line);border-radius:var(--radius-row);
  padding:26px 18px;text-align:center;color:var(--muted);font-size:13.5px;
}
.btn-solid{
  font:inherit;font-size:15px;font-weight:600;width:100%;
  background:var(--ink);color:var(--surface);border:0;border-radius:11px;
  padding:13px;cursor:pointer;
}
.btn-solid:hover{background:var(--ink-press)}
.ghostbtn{
  font:inherit;font-size:13px;font-weight:600;background:transparent;
  border:1px solid var(--line);color:var(--muted);
  border-radius:var(--radius-pill);padding:7px 14px;cursor:pointer;
}
.ghostbtn:hover{border-color:var(--ink);color:var(--ink)}

/* Login */
.login{max-width:340px;margin:9vh auto 0}
.login-heading{
  font-family:"Bricolage Grotesque","Public Sans",sans-serif;
  font-weight:800;font-size:29px;letter-spacing:-.02em;line-height:1.05;
  margin:0 0 18px;text-align:center;
}
.login-form{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-card);padding:18px;
  display:flex;flex-direction:column;gap:14px;
}
.field{display:flex;flex-direction:column;gap:5px}
.field-label{
  font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);
}
.field input{
  font:inherit;font-size:15px;color:var(--ink);background:transparent;
  border:1px solid var(--line);border-radius:9px;padding:10px 11px;
}
.field input:focus{outline:0;border-color:var(--ink)}
.logout-form{margin-top:16px;text-align:center}

/* Toast (FSD-000 section 9) */
.toast{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%);
  z-index:100;background:var(--ink);color:var(--surface);
  border-radius:11px;padding:11px 16px;font-size:13.5px;max-width:calc(100vw - 32px);
  display:flex;align-items:center;gap:12px;
  box-shadow:0 10px 26px rgba(26,42,46,.25);
}
.toast button{
  font:inherit;font-size:12.5px;font-weight:600;background:transparent;
  border:1px solid rgba(253,253,252,.4);color:var(--surface);
  border-radius:var(--radius-pill);padding:4px 11px;cursor:pointer;flex:0 0 auto;
}

:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ===== Routine builder (FSD-001), adapted from the approved draft ===== */

.eyebrow{
  font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);margin:0 0 8px;
}
.idblock{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}
#rt-name{
  flex:1;min-width:0;font-family:"Bricolage Grotesque","Public Sans",sans-serif;
  font-weight:800;font-size:29px;line-height:1.05;letter-spacing:-.02em;
  color:var(--ink);background:transparent;border:0;border-bottom:1.5px dashed transparent;
  border-radius:0;padding:0 0 3px;margin:0;
}
#rt-name:hover{border-bottom-color:var(--line)}
#rt-name:focus{outline:0;border-bottom-color:var(--ink)}
#rt-abbr{
  flex:0 0 auto;width:76px;text-align:center;
  font-family:"DM Mono",monospace;font-weight:500;font-size:13px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--surface);background:var(--ink);
  border:1.5px solid var(--ink);border-radius:var(--radius-pill);padding:7px 4px;margin-top:3px;
}
#rt-abbr:focus{outline:0;background:transparent;color:var(--ink)}
#rt-abbr::placeholder{color:#8E9AA0}
.hint{margin:0 0 4px;color:var(--muted);font-size:12.5px}

.controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0}
.selwrap{
  position:relative;display:inline-flex;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-pill);padding:0 30px 0 13px;
}
.selwrap::after{
  content:"";position:absolute;right:13px;top:50%;width:6px;height:6px;
  border-right:1.6px solid var(--muted);border-bottom:1.6px solid var(--muted);
  transform:translateY(-70%) rotate(45deg);pointer-events:none;
}
.selwrap select{
  appearance:none;-webkit-appearance:none;border:0;background:transparent;color:var(--ink);
  font:inherit;font-size:13px;font-weight:600;padding:8px 0;max-width:190px;cursor:pointer;
}
.selwrap select:focus{outline:0}
.startfield{
  display:inline-flex;align-items:center;gap:7px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-pill);padding:6px 12px;
}
.startfield span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-family:"DM Mono",monospace}
.startfield input{font-family:"DM Mono",monospace;font-size:14px;border:0;background:transparent;color:var(--ink);width:82px;padding:0}
.ghostbtn.armed{border-color:var(--c-free);color:var(--c-free)}
.ghostbtn[aria-disabled="true"]{opacity:.4;pointer-events:none}

.summary{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:14px 15px 15px;margin-bottom:8px}
.figs{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:13px}
.fig-k{font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:1px}
.fig-v{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:20px;letter-spacing:-.01em;display:block;line-height:1.1}
.fig.hot .fig-v{color:var(--c-free)}
.shape{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--track)}
.shape i{display:block;height:100%}
.shapelabel{
  font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin:9px 0 0;display:flex;justify-content:space-between;
}
.sectionhead{
  font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);margin:22px 0 10px;display:flex;justify-content:space-between;align-items:baseline;
}
#rt-list{position:relative;padding-left:2px}
.brow{
  position:relative;height:var(--row-h-builder);margin-bottom:10px;display:flex;align-items:stretch;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-row);overflow:hidden;
  transition:transform var(--t-reorder) var(--ease),box-shadow var(--t-reorder) ease;
}
.brow.dragging{
  position:fixed;left:0;z-index:60;margin:0;transition:none;
  box-shadow:0 14px 32px rgba(26,42,46,.22);border-color:var(--ink);
}
.swatch{width:5px;flex:0 0 5px}
.btime{
  flex:0 0 58px;display:flex;flex-direction:column;justify-content:center;align-items:center;
  border-right:1px solid var(--line);font-family:"DM Mono",monospace;
}
.btime b{font-weight:500;font-size:13px;letter-spacing:-.02em}
.btime i{font-style:normal;font-size:10px;color:var(--muted);margin-top:2px}
.bbody{flex:1;min-width:0;padding:9px 10px 9px 12px;display:flex;flex-direction:column;justify-content:center;gap:6px}
.bname{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bname input{font:inherit;border:0;border-bottom:1px dashed var(--line);background:transparent;width:100%;padding:0}
.bname input:focus{outline:0;border-bottom-color:var(--ink)}
.bmeta{display:flex;align-items:center;gap:6px}
.step{
  width:26px;height:26px;border-radius:8px;border:1px solid var(--line);background:transparent;
  color:var(--muted);font-size:15px;line-height:1;cursor:pointer;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;font-family:"DM Mono",monospace;
}
.step:hover{border-color:var(--ink);color:var(--ink)}
.step[aria-disabled="true"]{opacity:.4;pointer-events:none}
.bdur{font-family:"DM Mono",monospace;font-size:12px;min-width:52px;text-align:center;color:var(--ink)}
.kill{
  margin-left:auto;width:26px;height:26px;border:0;background:transparent;color:var(--muted);
  font-size:17px;line-height:1;cursor:pointer;border-radius:8px;flex:0 0 auto;
}
.kill:hover{color:var(--c-free)}
.grip{
  flex:0 0 40px;border:0;border-left:1px solid var(--line);background:transparent;
  cursor:grab;touch-action:none;display:flex;align-items:center;justify-content:center;padding:0;
}
.grip:active{cursor:grabbing}
.grip svg{opacity:.5}
.brow.dragging .grip svg{opacity:1}
.endcap{
  display:flex;align-items:center;gap:10px;margin-top:2px;
  font-family:"DM Mono",monospace;font-size:11.5px;color:var(--muted);
}
.endcap span{flex:1;height:1px;background:var(--line)}
.endcap em{font-style:normal}

/* Tray: three states per D5 (collapsed / open / extended) */
body[data-page="routines"],body[data-page="day"]{padding-bottom:76px}
body.trayopen{padding-bottom:250px}
body.trayext{padding-bottom:calc(min(60vh,480px) + 60px)}
.tray{
  position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--surface);
  border-top:1px solid var(--line);padding:0 0 env(safe-area-inset-bottom);
}
.traytoggle{
  display:flex;align-items:center;justify-content:center;gap:9px;width:100%;height:46px;
  border:0;background:transparent;cursor:pointer;padding:0;touch-action:none;
  font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);
}
.traytoggle:hover{color:var(--ink)}
.traytoggle svg{transition:transform var(--t-tray) var(--ease)}
.tray[data-state="open"] .traytoggle svg,.tray[data-state="extended"] .traytoggle svg{transform:rotate(180deg)}
.traybody{max-height:0;overflow:hidden;transition:max-height var(--t-tray) var(--ease)}
.tray[data-state="open"] .traybody{max-height:220px}
.tray[data-state="extended"] .traybody{max-height:min(60vh,480px)}
.trayinner{max-width:var(--wrap-max);margin:0 auto;padding:0 16px 14px}
.trayhead{font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin:0 0 9px}
.chips{display:flex;flex-wrap:wrap;gap:7px;max-height:126px;overflow-y:auto;padding-bottom:2px}
.tray[data-state="extended"] .chips{max-height:calc(min(60vh,480px) - 110px)}
.chip{
  flex:0 0 auto;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;
  border:1px solid var(--line);background:transparent;color:var(--ink);
  border-radius:var(--radius-pill);padding:7px 13px;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;
}
.chip:hover{border-color:currentColor}
.chip u{width:7px;height:7px;border-radius:50%;text-decoration:none;flex:0 0 auto}
.chip small{font-family:"DM Mono",monospace;font-size:10.5px;color:var(--muted)}
.chip.newblock{border-style:dashed;color:var(--muted)}
.quickadd{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.quickadd input{font:inherit;font-size:13.5px;border:1px solid var(--line);border-radius:9px;padding:8px 10px;flex:1;min-width:140px}
.quickadd input:focus{outline:0;border-color:var(--ink)}
.qa-min{display:inline-flex;align-items:center;gap:6px;font-family:"DM Mono",monospace;font-size:12px}

/* ===== Week template builder (FSD-002) ===== */
#tp-name{
  flex:1;min-width:0;font-family:"Bricolage Grotesque","Public Sans",sans-serif;
  font-weight:800;font-size:29px;line-height:1.05;letter-spacing:-.02em;
  color:var(--ink);background:transparent;border:0;border-bottom:1.5px dashed transparent;
  border-radius:0;padding:0 0 3px;margin:0;
}
#tp-name:hover{border-bottom-color:var(--line)}
#tp-name:focus{outline:0;border-bottom-color:var(--ink)}
.assignline{
  font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.06em;color:var(--muted);
  margin:0 0 16px;
}
.assignline a{color:var(--ink)}
.slotcard{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);
  padding:11px 12px 12px;margin-bottom:10px;
}
.slotcard.droptarget{border-color:var(--ink)}
.slothead{
  display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;
  font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);
}
.slotlist{min-height:4px;position:relative}
.srow{
  position:relative;height:46px;margin-bottom:6px;display:flex;align-items:center;gap:9px;
  background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden;
  transition:transform var(--t-reorder) var(--ease);
}
.srow.dragging{
  position:fixed;left:0;z-index:60;margin:0;transition:none;
  box-shadow:0 14px 32px rgba(26,42,46,.22);border-color:var(--ink);
}
.srow .swatch{align-self:stretch}
.rchip{
  font-family:"DM Mono",monospace;font-size:10.5px;font-weight:500;letter-spacing:.08em;
  border:1px solid var(--ink);color:var(--ink);border-radius:var(--radius-pill);padding:3px 9px;flex:0 0 auto;
}
.srow .sname{flex:1;min-width:0;font-weight:600;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srow .sdur{font-family:"DM Mono",monospace;font-size:11px;color:var(--muted);flex:0 0 auto}
.srow .kill{margin-left:0}
.srow .grip{flex:0 0 36px;align-self:stretch}
.restline{border:1px dashed var(--line);border-radius:10px;padding:10px;text-align:center;color:var(--muted);font-size:12.5px}
.previewline{
  font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--muted);margin:7px 0 0;
}

/* Modal shell (shared: FSD-002 dialog, FSD-007 dial) */
.modalscrim{
  position:fixed;inset:0;background:rgba(26,42,46,.42);z-index:90;
  display:flex;align-items:center;justify-content:center;padding:20px;
  opacity:0;pointer-events:none;transition:opacity .2s ease;
}
.modalscrim.on{opacity:1;pointer-events:auto}
.modalscrim[hidden]{display:none}
.modal{
  background:var(--surface);border-radius:18px;width:100%;max-width:340px;
  padding:20px 20px 16px;transform:scale(.95);transition:transform var(--t-modal) var(--ease);
}
.modalscrim.on .modal{transform:none}
.modal h2{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:21px;letter-spacing:-.02em;margin:0 0 3px}
.modal p.sub{margin:0 0 16px;font-size:13px;color:var(--muted)}
.modalactions{display:flex;gap:8px;margin-top:18px}
.modalactions button{flex:1;font:inherit;font-size:15px;font-weight:600;border-radius:11px;padding:13px;cursor:pointer}
.modalactions-stack{flex-direction:column}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--muted)}

/* Popover (FSD-000 section 8) */
.popscrim{position:fixed;inset:0;z-index:70}
.pop{
  position:fixed;z-index:80;background:var(--surface);border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 30px rgba(26,42,46,.18);
  min-width:242px;max-width:288px;padding:5px;
  opacity:0;transform:scale(.96) translateY(-4px);transform-origin:top right;
  transition:opacity var(--t-popover) ease,transform var(--t-popover) var(--ease);pointer-events:none;
}
.pop.on{opacity:1;transform:none;pointer-events:auto}
.popitem{
  display:block;width:100%;text-align:left;font:inherit;font-size:14.5px;font-weight:500;
  background:transparent;border:0;border-radius:8px;padding:10px 11px;cursor:pointer;color:var(--ink);
}
.popitem:hover,.popitem:focus{background:var(--hover)}
.popitem small{display:block;font-size:11.5px;color:var(--muted);font-weight:400;margin-top:1px}
.popitem.danger{color:var(--c-free)}
.popitem[aria-disabled="true"]{opacity:.4;pointer-events:none}
.pop .popscroll{max-height:300px;overflow-y:auto}

/* ===== Day view (FSD-006), adapted from the approved draft ===== */
.navrow{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;
  padding:9px 10px;margin-bottom:9px;
}
.arrow{
  width:34px;height:34px;border:1px solid var(--line);background:transparent;border-radius:9px;
  cursor:pointer;color:var(--ink);display:flex;align-items:center;justify-content:center;
  flex:0 0 auto;font-size:17px;text-decoration:none;
}
.arrow[aria-disabled="true"]{opacity:.4;pointer-events:none}
.navlabel{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:11px}
.navsel select{max-width:110px}
.navmeta{text-align:center;line-height:1.2;min-width:0}
.navmeta b{display:block;font-size:15px;font-weight:600}
.navmeta span{
  display:block;font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin-top:2px;
}
.vdiv{width:1px;height:28px;background:var(--line);flex:0 0 auto}
.calbtn{
  width:32px;height:32px;border:0;background:transparent;border-radius:9px;cursor:pointer;
  color:var(--muted);display:flex;align-items:center;justify-content:center;flex:0 0 auto;
}
.calbtn:hover{color:var(--ink);background:var(--hover)}

.weekstrip{display:flex;gap:5px;margin-bottom:12px}
.wsday{
  flex:1;min-width:0;border:1px solid var(--line);background:var(--surface);
  border-radius:10px;padding:10px 2px;cursor:pointer;
  font-family:"DM Mono",monospace;font-size:10px;font-weight:500;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);text-align:center;
}
.wsday:hover{border-color:var(--ink);color:var(--ink)}
.wsday.past{opacity:.5}
.wsday.today{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.wsday[aria-disabled="true"]{opacity:.4;pointer-events:none}

.dayhead{
  background:var(--surface);border:1.5px solid var(--ink);border-radius:13px;
  padding:12px 12px 13px;margin-bottom:12px;position:relative;
}
.dh-top{display:flex;align-items:flex-start;gap:10px}
.chipstack{display:flex;flex-wrap:wrap;gap:5px;flex:1;padding-top:2px;min-height:24px}
.kebab{
  flex:0 0 auto;width:30px;height:30px;border:0;background:transparent;cursor:pointer;
  color:var(--muted);border-radius:8px;margin:-3px -4px 0 0;
  display:flex;align-items:center;justify-content:center;
}
.kebab:hover{color:var(--ink);background:var(--hover)}
.figs{
  display:flex;gap:14px;flex-wrap:wrap;align-items:baseline;margin-top:10px;
  font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.06em;color:var(--muted);
}
.figs b{font-weight:500;color:var(--ink)}
.figs .lead b{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:18px;letter-spacing:-.01em}
.figs .free b{color:var(--c-free)}
.nowbar{
  display:flex;align-items:center;gap:9px;margin-top:11px;padding-top:11px;
  border-top:1px solid var(--line);
  font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.06em;color:var(--muted);
}
.nowdot{width:7px;height:7px;border-radius:50%;background:var(--c-free);flex:0 0 auto}
.nowedit{margin-left:auto;padding:3px 10px;font-size:11px}

.editbar{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:var(--ink);color:var(--surface);border-radius:11px;
  padding:10px 10px 10px 14px;margin-bottom:11px;
}
.editbar span{font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase}
.editbar button{
  font:inherit;font-size:13px;font-weight:600;background:var(--surface);color:var(--ink);
  border:0;border-radius:var(--radius-pill);padding:7px 16px;cursor:pointer;
}

#d-list{position:relative}
.drow{
  position:relative;height:var(--row-h-day);margin-bottom:8px;display:flex;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-row);overflow:hidden;
  transition:transform var(--t-reorder) var(--ease),opacity .18s ease,box-shadow var(--t-reorder) ease;
}
.drow.dragging{
  position:fixed;left:0;z-index:60;margin:0;transition:none;
  box-shadow:0 14px 32px rgba(26,42,46,.22);border-color:var(--ink);
}
.drow.past{opacity:.5}
.drow.skipped{opacity:.42;background:transparent;border-style:dashed}
.drow.pulse{animation:kds-pulse 1.2s ease}
@keyframes kds-pulse{
  0%{box-shadow:0 0 0 0 rgba(26,42,46,.45)}
  25%{box-shadow:0 0 0 5px rgba(26,42,46,0)}
  50%{box-shadow:0 0 0 0 rgba(26,42,46,.45)}
  75%{box-shadow:0 0 0 5px rgba(26,42,46,0)}
  100%{box-shadow:0 0 0 0 rgba(26,42,46,0)}
}
.drow .swatch{align-self:stretch}
.check{
  flex:0 0 auto;width:26px;height:26px;margin:0 4px 0 11px;padding:0;cursor:pointer;
  border:1.5px solid var(--line);border-radius:8px;background:transparent;
  display:flex;align-items:center;justify-content:center;color:transparent;
}
.check:hover{border-color:var(--ink)}
.drow.done .check{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.drow.skipped .check{visibility:hidden}
.tcol{flex:0 0 58px;text-align:center;line-height:1.15}
.tcol b{display:block;font-family:"DM Mono",monospace;font-weight:500;font-size:12.5px;letter-spacing:-.01em;color:var(--ink)}
.tcol span{display:block;font-family:"DM Mono",monospace;font-size:10px;color:var(--muted);margin-top:2px}
.drow.skipped .tcol b{color:var(--muted)}
.dnm{flex:1;min-width:0;padding:0 8px 0 6px}
.dnm b{display:block;font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drow.done .dnm b{color:var(--muted)}
.drow.skipped .dnm b{text-decoration:line-through}
.skipbtn{
  flex:0 0 auto;font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;border:1px solid var(--line);background:transparent;color:var(--muted);
  border-radius:var(--radius-pill);padding:6px 10px;cursor:pointer;margin-right:6px;display:none;
}
.skipbtn:hover{border-color:var(--ink);color:var(--ink)}
body.editing .skipbtn{display:block}
.drow.skipped .skipbtn{border-color:var(--ink);color:var(--ink)}
.drow .grip{display:none;align-items:center;justify-content:center;align-self:stretch}
body.editing .drow .grip{display:flex}

/* Start-time dial (FSD-007 / APX-A) */
.dials{display:flex;align-items:center;justify-content:center;gap:4px;position:relative}
.band{
  position:absolute;left:8px;right:8px;top:50%;height:60px;transform:translateY(-50%);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);pointer-events:none;
}
.dial{
  height:180px;overflow-y:auto;scroll-snap-type:y mandatory;
  scrollbar-width:none;-ms-overflow-style:none;flex:0 0 auto;width:74px;text-align:center;
}
.dial::-webkit-scrollbar{display:none}
.dial .pad{height:60px}
.dial button{
  display:block;width:100%;height:60px;line-height:60px;scroll-snap-align:center;
  border:0;background:transparent;cursor:pointer;padding:0;
  font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:34px;
  letter-spacing:-.02em;color:var(--muted);opacity:.4;transition:opacity .15s,color .15s;
}
.dial button.sel{color:var(--ink);opacity:1}
.dial.wide{width:190px}
.dial.wide button{font-size:31px}
.usenow{
  display:block;width:100%;background:transparent;border:0;cursor:pointer;margin-top:10px;
  font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);
}
.usenow:hover{color:var(--ink)}

/* ===== History (FSD-008) ===== */
.histlist{display:flex;flex-direction:column;gap:8px}
.hrow{
  display:flex;align-items:stretch;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-row);overflow:hidden;
}
.htime{
  flex:0 0 58px;display:flex;flex-direction:column;justify-content:center;align-items:center;
  border-right:1px solid var(--line);font-family:"DM Mono",monospace;padding:10px 2px;
}
.htime b{font-weight:500;font-size:12.5px;color:var(--ink)}
.hdate{font-size:9px;color:var(--muted);letter-spacing:.08em;margin-bottom:2px}
.hbody{flex:1;min-width:0;padding:9px 12px}
.hline{margin:0;font-size:14.5px}
.htype{
  font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);
}

/* Admin day additions (FSD-005) */
.ad-sheet-list{display:flex;flex-direction:column;gap:7px;margin:8px 0;max-height:280px;overflow-y:auto}
.ad-target{
  display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;
  padding:9px 11px;cursor:pointer;font-size:13.5px;
}
.ad-target input{accent-color:var(--ink)}
.ad-target .tstate{margin-left:auto;font-family:"DM Mono",monospace;font-size:10.5px;color:var(--muted)}
.ad-target .tstate.haspop{color:var(--c-free)}
.ad-field{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.ad-field input,.ad-field select{
  font:inherit;font-size:14px;border:1px solid var(--line);border-radius:9px;padding:9px 10px;background:transparent;color:var(--ink);
}
.ad-field input:focus,.ad-field select:focus{outline:0;border-color:var(--ink)}
.ad-warn{color:var(--c-free);font-size:12.5px;font-weight:600;margin:4px 0 0}

/* ===== Week view (FSD-004) ===== */
.provenance{
  font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.06em;color:var(--muted);
  margin:0 0 12px;
}
.buildrow{display:flex;flex-direction:column;gap:9px;margin:0 0 14px}
.buildbtn{width:auto;padding:11px 16px}
.buildalt{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.buildalt select{font:inherit;font-size:13px;border:1px solid var(--line);border-radius:9px;padding:7px 9px;background:transparent;color:var(--ink)}
.weeklist{display:flex;flex-direction:column;gap:8px}
.wkrow{
  display:flex;align-items:center;gap:12px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-row);padding:12px 13px;
  text-decoration:none;color:var(--ink);
}
.wkrow.today{border:1.5px solid var(--ink)}
.wkrow.past{opacity:.5}
.wkrow.rest{border-style:dashed;background:transparent}
.wkdate{flex:0 0 44px;text-align:center;font-family:"DM Mono",monospace;line-height:1.2}
.wkdate b{display:block;font-weight:500;font-size:10.5px;letter-spacing:.1em;color:var(--muted)}
.wkdate i{display:block;font-style:normal;font-weight:600;font-size:16px}
.wkchips{display:flex;flex-wrap:wrap;gap:5px;flex:1;min-width:0}
.wktotals{
  flex:0 0 auto;font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--muted);
}
.wktotals b{font-weight:500;color:var(--ink)}
.wktotals .freeval{color:var(--c-free)}
.wkrest{flex:1;color:var(--muted);font-size:13px}

/* ===== Calendar (FSD-009) ===== */
.calhead{
  display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:6px;text-align:center;
  font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.08em;color:var(--muted);
}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.calcell{
  aspect-ratio:1/1;border:1px solid var(--line);background:var(--surface);border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  text-decoration:none;color:var(--ink);cursor:pointer;padding:0;font:inherit;
}
.calcell:hover{border-color:var(--ink)}
.caldnum{font-weight:600;font-size:14px}
.caldot{width:6px;height:6px;border-radius:50%;background:var(--ink)}
.calcell.today{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.calcell.today .caldot{background:var(--surface)}
.calcell.past{opacity:.5}
.calcell.adjacent{opacity:.5}
.calcell.adjacent .caldot{opacity:.5}
.calcell.outrange{opacity:.3;cursor:default}
.calcell.outrange:hover{border-color:var(--line)}
.confirmlist{margin:0;padding-left:20px;font-size:13.5px}
.confirmlist li{margin-bottom:3px}

/* Quiet footer nav (build chrome; the FSD set defines no global navigation) */
.footnav{
  display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:26px;
  font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
}
.footnav a,.footnav button{
  color:var(--muted);text-decoration:none;background:none;border:0;padding:0;cursor:pointer;
  font:inherit;letter-spacing:inherit;text-transform:inherit;
}
.footnav a:hover,.footnav button:hover{color:var(--ink)}

/* ===== Settings (FSD-010) ===== */
.setcard{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);
  padding:14px 15px 15px;margin-bottom:12px;
}
.cardhead{
  font-family:"DM Mono",monospace;font-size:11px;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin:0 0 12px;
}
.setlist{display:flex;flex-direction:column;gap:7px;margin-bottom:10px;position:relative}
.setrow{
  display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;
  padding:8px 10px;background:var(--surface);
  transition:transform var(--t-reorder) var(--ease);
}
.setrow.dragging{
  position:fixed;left:0;z-index:60;margin:0;transition:none;
  box-shadow:0 14px 32px rgba(26,42,46,.22);border-color:var(--ink);
}
.setrow.archived{opacity:.55;border-style:dashed}
.setrow input[type=text]{
  font:inherit;font-size:14px;border:0;border-bottom:1px dashed transparent;background:transparent;
  color:var(--ink);flex:1;min-width:80px;padding:2px 0;
}
.setrow input[type=text]:hover{border-bottom-color:var(--line)}
.setrow input[type=text]:focus{outline:0;border-bottom-color:var(--ink)}
.setrow select{
  font:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:8px;
  padding:5px 7px;background:transparent;color:var(--ink);max-width:150px;
}
.setrow .grip{flex:0 0 32px;border-left:0;align-self:center;height:30px;display:flex}
.rolechip{
  font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  border-radius:var(--radius-pill);padding:3px 9px;flex:0 0 auto;
}
.rolechip.admin{background:var(--ink);color:var(--surface)}
.rolechip.member{border:1px solid var(--ink);color:var(--ink)}
.setmail{font-family:"DM Mono",monospace;font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.archdivider{
  font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--muted);margin:8px 0 2px;
}
#hh-tz{font:inherit;font-size:13.5px;border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:transparent;color:var(--ink)}
#hh-name{font:inherit;font-size:14px;border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:transparent;color:var(--ink)}
#hh-name:focus,#hh-tz:focus{outline:0;border-color:var(--ink)}

/* ===== Dashboard + list pages (UX revision 2026-08-06) ===== */
.dashgrid{display:flex;flex-direction:column;gap:9px;margin-bottom:20px}
.dashcard{
  display:flex;flex-direction:column;gap:5px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-card);padding:14px 15px;
  text-decoration:none;color:var(--ink);
}
.dashcard:hover{border-color:var(--ink)}
.dashname{font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:17px;letter-spacing:-.01em}
.dashmeta{font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--muted)}
.dashlinks{display:flex;gap:14px;margin-top:4px}
.dashlinks span{
  font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);cursor:pointer;
}
.dashlinks span:hover{color:var(--ink)}
.listrow-top{display:flex;align-items:center;gap:9px}
.listnew{margin-top:4px}
.backlink{margin:0 0 10px}
.backlink a{
  font-family:"DM Mono",monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;
}
.backlink a:hover{color:var(--ink)}
.footnav .active{color:var(--ink)}
.dayhead[hidden]{display:none}

/* Week strip: viewed day inverts; today keeps an outline when not viewed */
.wsday.sel{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.wsday.todaymark{border:1.5px solid var(--ink);color:var(--ink)}
.btn-solid[disabled]{opacity:.4;cursor:default}
.btn-solid[disabled]:hover{background:var(--ink)}
.bk-addtop{margin-bottom:10px}
