:root{
  --bg:#F3F4F6; --card:#FFFFFF; --ink:#16191D; --ink2:#4A525C; --muted:#5B6470; --faint:#8A929C;
  --line:#E3E6EA; --seg:#E3E6EA; --accent:#1D5C87; --accent-ink:#FFFFFF; --accent-soft:#E4EEF5;
  --lake:#0B6B73; --lake-soft:#DDF0F1; --work:#4C3F9E; --work-soft:#ECE9F8; --good:#1F6B45; --good-soft:#E3F1E9; --bad:#9A3B3B; --bad-soft:#F6E6E6;
  --warn:#8A4705; --warn-soft:#FBEEDC; --shadow:0 1px 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.06);
  --radius:14px; --tab-h:64px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0F1216; --card:#181C21; --ink:#ECEEF1; --ink2:#C3C8CF; --muted:#9AA3AE; --faint:#6E7782;
    --line:#2A3038; --seg:#232830; --accent:#5AA2D6; --accent-ink:#0B1520; --accent-soft:#16283A;
    --lake:#5CC8D0; --lake-soft:#123236; --work:#A99CF0; --work-soft:#25213F; --good:#5CC48E; --good-soft:#14281E; --bad:#E58A8A; --bad-soft:#2E1A1A;
    --warn:#E8A65A; --warn-soft:#2E2213; --shadow:0 1px 2px rgba(0,0,0,.5);
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:16px;-webkit-text-size-adjust:100%}
body{min-height:100dvh}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent)}
h1,h2,h3{font-family:Manrope,Inter,system-ui,sans-serif;margin:0;letter-spacing:-.01em}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* layout */
#app{display:grid;grid-template-columns:1fr;min-height:100dvh}
.main{padding:calc(env(safe-area-inset-top) + 16px) 16px calc(var(--tab-h) + env(safe-area-inset-bottom) + 84px);max-width:640px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.side{display:none}
.chatpane{display:none}
@media (min-width:1000px){
  #app{grid-template-columns:220px minmax(0,1fr) 380px}
  .side{display:flex;flex-direction:column;gap:4px;padding:20px 12px;border-right:1px solid var(--line);position:sticky;top:0;height:100dvh}
  .side .brand{font-family:Manrope,sans-serif;font-weight:800;font-size:18px;padding:4px 12px 16px}
  .side a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:var(--ink2);text-decoration:none;font-weight:500}
  .side a[aria-current=page]{background:var(--card);color:var(--ink);font-weight:600;box-shadow:var(--shadow)}
  .side .count{margin-left:auto;font-size:12px;font-weight:700;color:var(--muted)}
  .tabs,.fab{display:none!important}
  .main{padding:24px 28px 48px;max-width:760px}
  body.chat-closed #app{grid-template-columns:220px minmax(0,1fr)}
  body.chat-closed .chatpane{display:none}
  body.chat-closed .chatopen{display:flex!important}
  .chatpane{display:flex;flex-direction:column;border-left:1px solid var(--line);height:100dvh;position:sticky;top:0;background:var(--card)}
}

/* tabs */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(5,1fr);background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:var(--tab-h);text-decoration:none;color:var(--faint);font-size:11px;font-weight:600;position:relative}
.tabs a[aria-current=page]{color:var(--accent)}
.tabs .badge{position:absolute;top:8px;left:calc(50% + 6px);min-width:18px;height:18px;border-radius:9px;background:var(--bad);color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;padding:0 5px}
.fab{position:fixed;right:16px;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 16px);z-index:21;width:56px;height:56px;border-radius:28px;border:0;background:var(--accent);color:var(--accent-ink);box-shadow:0 6px 20px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}

/* header */
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:8px}
.eyebrow{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.title{white-space:nowrap;font-size:30px;font-weight:800;letter-spacing:-.02em}
.daynav{display:flex;gap:4px;align-items:center}
.iconbtn{width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card);display:inline-flex;align-items:center;justify-content:center;color:var(--ink2)}
.iconbtn.plain{border:0;background:transparent}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;background:var(--seg);border-radius:12px;padding:4px}
.seg button{min-height:36px;border:0;border-radius:9px;background:transparent;color:var(--ink2);font-size:14px;font-weight:500}
.seg button[aria-pressed=true]{background:var(--card);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.12)}

/* cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}
.card.tight{padding:0;overflow:hidden}
.label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.mind{display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%}
.mind .txt{font-size:16px;font-weight:500;line-height:1.4}
.mit{background:var(--accent);color:var(--accent-ink);border:0}
.mit .label{color:inherit;opacity:.85}
.mitlist{display:flex;flex-wrap:wrap;gap:0 28px}
.mitrow{display:flex;gap:10px;align-items:center;background:transparent;border:0;padding:0;color:inherit;text-align:left;min-height:44px}
.mitbox{flex:none;width:24px;height:24px;border-radius:7px;border:2px solid currentColor;display:flex;align-items:center;justify-content:center}
.mitrow[aria-pressed=true] .mitbox{background:var(--accent-ink);color:var(--accent)}
.mitrow[aria-pressed=true] .t{text-decoration:line-through;opacity:.8}
.mitrow .t{font-size:17px;font-weight:600}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-size:13px;padding:4px 9px;border-radius:999px;background:var(--seg);color:var(--ink2);font-weight:500}
.chip.win{background:var(--good-soft);color:var(--good)}
.cardbtn{display:block;width:100%;text-align:left;cursor:pointer;color:inherit;font:inherit;margin:0}
.cardbtn:focus-visible{outline:2px solid var(--accent);border-radius:var(--radius)}

/* quick add */
.quick{display:flex;gap:8px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:6px 6px 6px 14px}
.quick input{flex:1;border:0;background:transparent;font-size:16px;min-height:40px;outline:none}
.quick button{min-height:40px;border:0;border-radius:10px;background:var(--accent);color:var(--accent-ink);font-weight:600;padding:0 14px}
.hint{font-size:12.5px;color:var(--muted);padding:0 4px}

/* rows */
.sect{display:flex;flex-direction:column;gap:6px}
.secthead{display:flex;justify-content:space-between;align-items:baseline;padding:4px 4px 0}
.rows{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.row{display:flex;align-items:center;gap:4px;min-height:52px;border-top:1px solid var(--line);padding-right:6px}
.row:first-child{border-top:0}
.check{flex:none;width:48px;height:52px;border:0;background:transparent;display:flex;align-items:center;justify-content:center}
.box{width:22px;height:22px;border-radius:7px;border:2px solid var(--faint);display:flex;align-items:center;justify-content:center;color:transparent}
.row.done .box{background:var(--good);border-color:var(--good);color:#fff}
.row.missed .box{border-color:var(--bad);color:var(--bad)}
.row .body{flex:1;min-width:0;border:0;background:transparent;text-align:left;padding:8px 4px;display:flex;flex-direction:column;gap:2px}
.row .t{font-size:15.5px;font-weight:500;line-height:1.3;overflow-wrap:anywhere}
.row.done .t{text-decoration:line-through;color:var(--faint)}
.row .m{font-size:12.5px;color:var(--muted);display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.row .time{flex:none;font-size:13px;font-weight:700;color:var(--accent);min-width:74px;text-align:left;padding-left:2px;font-variant-numeric:tabular-nums}
.row .time+.body{padding-left:2px}
.tag{font-size:10.5px;font-weight:700;letter-spacing:.05em;padding:1px 6px;border-radius:5px;text-transform:uppercase}
.tag.work{background:var(--work-soft);color:var(--work)}
.tag.lake{background:var(--lake-soft);color:var(--lake)}
.tag.roll{background:var(--warn-soft);color:var(--warn)}
.tag.miss{background:var(--bad-soft);color:var(--bad)}
.tag.book{background:var(--accent-soft);color:var(--accent)}
.tag.pay{background:var(--good-soft);color:var(--good)}
.empty{padding:18px 16px;color:var(--muted);font-size:14.5px}
.progress{height:6px;border-radius:3px;background:var(--seg);overflow:hidden}
.progress>i{display:block;height:100%;background:var(--good);border-radius:3px}

/* treadmill card */
.tread{display:flex;gap:12px;align-items:center}
.tread .big{font-family:Manrope,sans-serif;font-size:22px;font-weight:800}
.btn{min-height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card);padding:0 16px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;color:var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.danger{color:var(--bad)}
.btn.small{min-height:36px;padding:0 12px;font-size:14px}
.btnrow{display:flex;gap:8px;flex-wrap:wrap}

/* sheet */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:40;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--bg);width:100%;max-width:560px;max-height:92dvh;overflow:auto;border-radius:18px 18px 0 0;padding:8px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px}
@media (min-width:700px){.scrim{align-items:center}.sheet{border-radius:18px;max-height:86dvh}}
.grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:4px auto}
.field{display:flex;flex-direction:column;gap:5px}
.field>span{font-size:13px;font-weight:600;color:var(--muted)}
.input,textarea.input,select.input{width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:10px 12px;font-size:16px}
textarea.input{min-height:84px;resize:vertical}
.fields2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.steps .row{min-height:46px}
.prov{font-size:14.5px;line-height:1.5}

/* toast */
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 84px);z-index:60;background:var(--ink);color:var(--bg);border-radius:12px;padding:10px 10px 10px 16px;display:flex;gap:12px;align-items:center;box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:calc(100% - 32px);font-size:14.5px}
.toast button{border:0;background:transparent;color:var(--accent-soft);font-weight:700;min-height:36px;padding:0 8px}
@media (min-width:1000px){.toast{bottom:24px}}

/* week / coming */
.wday{display:flex;flex-direction:column;gap:6px}
.wday h3{font-size:16px;font-weight:700;padding:0 4px;display:flex;gap:8px;align-items:baseline}
.wday h3 small{font-size:12.5px;color:var(--muted);font-weight:600}
.crow{display:flex;gap:10px;align-items:baseline;padding:11px 16px;border-top:1px solid var(--line);font-size:15px}
.crow:first-child{border-top:0}
.crow .d{flex:none;width:74px;font-size:13px;font-weight:700;color:var(--accent)}
.crow .x{flex:1;min-width:0}
.crow .x small{display:block;color:var(--muted);font-size:12.5px}
.monthhead{padding:10px 4px 2px}

/* treadmill player */
.player{display:flex;flex-direction:column;gap:14px;align-items:stretch}
.speed{font-family:Manrope,sans-serif;font-weight:800;font-size:min(30vw,140px);line-height:1;text-align:center;letter-spacing:-.04em}
.speed small{font-size:.22em;font-weight:700;color:var(--muted);letter-spacing:0}
.seglabel{text-align:center;font-size:22px;font-weight:700}
.clock{text-align:center;font-variant-numeric:tabular-nums;font-family:Manrope,sans-serif;font-size:min(19vw,88px);font-weight:800;line-height:1;letter-spacing:-.03em}
.nextup{text-align:center;color:var(--text,inherit);font-size:24px;font-weight:700}
.player.warn .speed{color:var(--warn)}
.timeline{display:flex;height:34px;border-radius:8px;overflow:hidden;gap:2px}
.timeline i{display:block;background:var(--seg);position:relative}
.timeline i.jog{background:var(--accent-soft)}
.timeline i.now{outline:2px solid var(--accent);outline-offset:-2px}
.timeline i.past{opacity:.45}
.bigbtn{min-height:64px;font-size:19px;border-radius:16px}

/* weight */
.stat{display:flex;flex-direction:column;gap:2px}
.stat b{font-family:Manrope,sans-serif;font-size:26px;font-weight:800}
.stat span{font-size:12.5px;color:var(--muted);font-weight:600}
.chart svg{width:100%;height:auto;display:block}

/* chat */
.chatlog{flex:1;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:16px}
.msg{max-width:88%;padding:10px 13px;border-radius:14px;font-size:15px;line-height:1.45;white-space:pre-wrap}
.msg.user{align-self:flex-end;background:var(--accent);color:var(--accent-ink);border-bottom-right-radius:4px}
.msg.assistant{align-self:flex-start;background:var(--bg);border:1px solid var(--line);border-bottom-left-radius:4px}
.change{align-self:flex-start;display:flex;gap:8px;align-items:center;font-size:13.5px;background:var(--good-soft);color:var(--good);border-radius:10px;padding:6px 6px 6px 10px}
.change button{border:0;background:transparent;color:inherit;font-weight:700;text-decoration:underline;min-height:30px}
.chatin{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);align-items:flex-end}
.chatin textarea{flex:1;min-height:112px;max-height:260px;resize:vertical;line-height:1.4}
.chathead{padding:16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}

/* login */
.login{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}
.login form{width:100%;max-width:340px;display:flex;flex-direction:column;gap:14px}
.err{color:var(--bad);font-size:14px}
.list-group h2{font-size:17px;padding:6px 4px}
.more a{display:flex;align-items:center;gap:12px;padding:14px 16px;border-top:1px solid var(--line);text-decoration:none;color:var(--ink);font-weight:500;min-height:52px}
.more a:first-child{border-top:0}
.more a .sub{margin-left:auto;color:var(--muted);font-size:13px}

/* treadmill program editor */
.segrow{display:grid;grid-template-columns:48px minmax(0,1fr) 92px 92px 40px 40px;gap:6px;align-items:center}
.segrow .input{min-height:42px;padding:8px 10px}
.segrow .iconbtn{width:40px;height:40px;font-size:20px;font-weight:600}
.segrow .iconbtn:disabled{opacity:.35}
.segstart{font-size:12.5px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}
.segnum{position:relative;display:block}
.segnum .input{padding-right:36px;-moz-appearance:textfield}
.segnum .input::-webkit-inner-spin-button,.segnum .input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.segnum span{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--muted);pointer-events:none}
@media (max-width:560px){
  .segrow{grid-template-columns:44px minmax(0,1fr) minmax(0,1fr) 40px;grid-template-areas:"start lab lab del" ". min mph add";row-gap:6px;padding-bottom:10px;border-bottom:1px solid var(--line)}
  .segrow:last-child{border-bottom:0;padding-bottom:0}
  .segstart{grid-area:start}.segrow>select{grid-area:lab}.segrow>.segnum:nth-of-type(1){grid-area:min}.segrow>.segnum:nth-of-type(2){grid-area:mph}
  .segrow>.iconbtn:nth-last-child(2){grid-area:add}.segrow>.iconbtn:last-child{grid-area:del}
}

.cbrow{display:flex;align-items:center;gap:8px;min-height:44px;font-size:15px;font-weight:500;cursor:pointer;flex:1 1 140px}
.cb{width:22px;height:22px;accent-color:var(--accent);margin:0}

.whead,.wrow{padding-right:4px!important;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,.8fr) minmax(0,.9fr) minmax(0,.9fr) minmax(0,.8fr) 30px;align-items:center;padding:0 16px;gap:8px}
.whead{min-height:38px;font-size:10.5px;font-weight:700;color:var(--muted);letter-spacing:.02em;text-transform:uppercase;border-bottom:1px solid var(--line)}
.wrow{min-height:50px;border-top:1px solid var(--line);font-size:15px}
.whead+.wrow{border-top:0}
.wrow .d{font-size:13px;white-space:nowrap;font-weight:600;color:var(--accent)}
.wrow .lb{font-weight:600;font-variant-numeric:tabular-nums}
.awo{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:13px;font-weight:700;color:var(--accent)}
.wrow .chg{font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted)}
.wrow .chg.down{color:var(--good)}
.wrow .chg.up{color:var(--bad)}
.linkbtn{border:0;background:transparent;padding:0;text-align:left;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;min-height:44px}
.wrow .iconbtn{width:36px;height:36px;color:var(--faint)}

.setrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-top:1px solid var(--line);min-height:60px;cursor:pointer}
.setrow:first-child{border-top:0}
.setrow .st{display:flex;flex-direction:column;gap:2px}
.setrow .st b{font-weight:600;font-size:15.5px}
.setrow .st small{color:var(--muted);font-size:13px}
.switch{appearance:none;-webkit-appearance:none;flex:none;width:50px;height:30px;border-radius:15px;background:var(--seg);border:1px solid var(--line);position:relative;cursor:pointer;transition:background .15s;margin:0}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:12px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .15s}
.switch:checked{background:var(--good);border-color:var(--good)}
.switch:checked::after{transform:translateX(20px)}

/* supporting lists */
.li{display:flex;align-items:center;gap:12px;min-height:46px;padding:0 14px;border-top:1px solid var(--line)}
.li:first-child{border-top:0}
.li .t{flex:1;font-size:15.5px;overflow-wrap:anywhere}
.li.skip .t{color:var(--faint)}
.pill{font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:3px 10px;white-space:nowrap}
.bar{height:6px;border-radius:99px;background:var(--seg);overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent);transition:width .2s}
.addrow{display:flex;gap:8px}.addrow .input{flex:1}

.li .lastb{display:block;font-size:12px;font-weight:500;color:var(--muted);margin-top:1px;text-decoration:none}

.row .time small.leave{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-top:1px;letter-spacing:.01em}
.tag.drive{cursor:pointer}

.bills .billhead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.bills .billrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--line,rgba(127,127,127,.2))}
.bills .billrow .bn{display:flex;flex-direction:column}
.bills .billrow .bn small{font-size:12px;color:var(--muted)}
.bills .billtotal{display:flex;justify-content:space-between;align-items:baseline;padding:10px 0 4px;border-top:2px solid var(--line,rgba(127,127,127,.3));font-size:16px}
.bills .billtotal b{font-size:20px}
.bills .billwarn{margin-top:4px;padding:8px 10px;border-radius:8px;background:rgba(217,119,6,.14);color:inherit;font-weight:600;font-size:14px}
.bills .billrow.sub{border-top:0;padding-top:0;margin-top:-4px}
.bills .billblock{display:flex;flex-direction:column}
.reorder-btn { border: 0; background: transparent; color: var(--accent); font: inherit; font-weight: 600; padding: 4px 8px; cursor: pointer; }
.movebtns { display: flex; gap: 4px; margin-left: auto; align-items: center; }
.movebtns button { border: 1px solid var(--line, #ccc); background: var(--card, #fff); color: var(--ink, #222); border-radius: 8px; min-width: 40px; min-height: 40px; font-size: 14px; cursor: pointer; }
.movebtns button:disabled { opacity: .3; }

.row.doing .box{border-color:var(--accent);color:var(--accent);background:transparent}
.row.doing .box{position:relative}
.row.doing .box::after{content:'';width:10px;height:10px;border-radius:50%;background:var(--accent)}
.tag.wip{background:#FFF1D6;color:#8A5A00}
.dropbar{position:fixed;left:12px;right:12px;bottom:84px;z-index:50;padding:18px;border-radius:14px;border:2px dashed var(--accent);background:var(--card,#fff);color:var(--accent);font-weight:700;text-align:center}
.dropbar.over{background:var(--accent);color:#fff}


.mitlist.w3,.mitlist.w4{display:grid;gap:2px 12px}
.mitlist.w3{grid-template-columns:repeat(3,minmax(0,1fr))}
.mitlist.w4{grid-template-columns:repeat(4,minmax(0,1fr))}
.mitlist.w3 .mitrow,.mitlist.w4 .mitrow{min-width:0;align-items:flex-start;padding:8px 0;gap:8px}
.mitlist.w3 .t,.mitlist.w4 .t{font-size:15px;line-height:1.25;overflow-wrap:anywhere}
.mitlist.w4 .t{font-size:14px}
@media (max-width:519px){.mitlist.w3,.mitlist.w4{grid-template-columns:repeat(2,minmax(0,1fr))}.mitlist.w3 .t,.mitlist.w4 .t{font-size:16px}}

.wvchip{border:1px solid var(--line);background:transparent;color:var(--faint);border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.04em;padding:2px 9px;min-height:26px;cursor:pointer}
.wvchip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.exedit{background:none;border:0;color:inherit;font:inherit;padding:0;text-align:left;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.sheetx{position:sticky;top:2px;align-self:flex-end;z-index:3;flex:none;width:32px;height:32px;margin:-14px 0 -18px;border-radius:50%;border:1px solid var(--line,rgba(128,128,128,.35));background:var(--card,var(--bg));color:var(--muted,inherit);font-size:20px;line-height:1;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sheet>h2:first-of-type{padding-right:40px}
.reps{margin:6px 2px 0;font-size:14px;color:var(--muted)}.reps summary{cursor:pointer;padding:6px 4px;font-weight:600}.reps .rows{margin-top:4px}
.tag.who{white-space:nowrap}

.mitcell{position:relative;display:flex;min-width:0}
.mitcell .mitrow{flex:1;min-width:0;padding-right:28px}
.mitmore{position:absolute;right:0;top:4px;width:28px;height:36px;border:0;background:transparent;color:inherit;opacity:.8;font-size:22px;font-weight:700;line-height:1;cursor:pointer;border-radius:8px}
.mitcell.skip .t{opacity:.55}.mitcell.missed .t{color:#ffb4ab}
.mitnote{display:block;font-size:11px;font-weight:600;opacity:.8;line-height:1.2}
.mithist{border-collapse:collapse;width:100%;font-size:14px}.mithist th{font-size:11px;color:var(--muted);font-weight:600;padding:2px}
.mithist td{padding:3px 2px;text-align:center}.mithist td.n{text-align:left;padding-right:8px;white-space:nowrap}.mithist td.r{text-align:right;padding-left:8px;white-space:nowrap;color:var(--muted);font-size:13px}
.mh{display:inline-flex;width:22px;height:22px;border-radius:11px;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.mh.ok{background:#E3F1E9;color:#1F6B45}.mh.bad{background:#F3E4E4;color:#A1332B}.mh.skip{background:#ECEEF1;color:#8A929C}.mh.open{color:#8A929C}
@media (prefers-color-scheme:dark){.mh.ok{background:#1d3a2c;color:#8fd1ac}.mh.bad{background:#3d2220;color:#f0a39b}.mh.skip{background:#2a2f36;color:#98a1ac}}
@media (min-width:700px){.grab{width:100%;height:24px;background:none;margin:0;cursor:grab;position:relative}.grab::after{content:'';position:absolute;left:50%;top:9px;width:44px;height:5px;margin-left:-22px;border-radius:3px;background:var(--line)}.sheet h2:first-of-type{cursor:move;user-select:none}.sheet.dragging{box-shadow:0 18px 50px rgba(0,0,0,.35)}.sheet.dragging .grab{cursor:grabbing}}
.datepickwrap{position:relative;display:inline-flex}.datepick{position:absolute;left:0;top:100%;width:1px;height:1px;opacity:0;pointer-events:none;border:0;padding:0}
.notedot{border:0;background:none;padding:0 0 0 6px;font-size:14px;cursor:pointer;line-height:1}.wrow .wnote{grid-column:1/-1;font-size:13.5px;color:var(--muted);padding:2px 0 6px;white-space:pre-wrap}
.wrow .lb{white-space:nowrap}.notedot{padding-left:3px}
.hidedone{flex:none;margin-left:auto;min-height:0;padding:0;gap:5px;font-size:12px;font-weight:500;color:var(--muted)}.hidedone .cb{width:14px;height:14px}.hiddennote{text-align:center;padding:8px 0}

.mit.mitpast{background:var(--seg);color:var(--ink2);border:1px solid var(--line)}
.mit.mitpast .mitrow[aria-pressed=true] .mitbox{background:var(--muted);color:var(--card);border-color:var(--muted)}
.mitpast .mitcell.missed .t{color:inherit}.mitpast .mitcell.missed .mitbox,.mitpast .mitcell.missed .mitnote{color:#b3261e}
@media (prefers-color-scheme:dark){.mitpast .mitcell.missed .mitbox,.mitpast .mitcell.missed .mitnote{color:#ff8a80}}

.tag.dueby{background:var(--seg);color:var(--ink2)}
.parkitem{display:flex;flex-direction:column}
.parkbtns{display:flex;gap:8px;align-items:center;padding:0 12px 10px 52px;flex-wrap:wrap}
.parkdate{width:auto;min-height:36px;padding:4px 8px;font-size:14px}

.ver{font-family:Inter,system-ui,sans-serif;font-weight:500;font-size:.76em;color:var(--faint);letter-spacing:0}

.chatopen{display:none!important;position:fixed;right:16px;bottom:16px;z-index:25;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;border:0;background:var(--accent);color:var(--accent-ink);font-weight:600;box-shadow:var(--shadow);cursor:pointer}
@media (min-width:1000px){.chatopen{display:none!important}body.chat-closed .chatopen{display:flex!important}}
.chathead{display:flex;align-items:center;gap:10px}
.chatclose{width:34px;height:34px;border-radius:50%;border:0;background:var(--seg);color:var(--ink2);font-size:22px;line-height:1;cursor:pointer}

.actrow{display:flex;gap:8px;flex-wrap:nowrap}
.actrow .btn.ic{flex:1 1 0;min-width:0;padding:0 6px;font-size:14px}
.actrow .btn.ic.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.actrow .btn.ic.danger{color:var(--bad)}
.actrow .btn.ic svg{display:block}

.bills .billnote{flex:1;min-width:0;min-height:30px;padding:2px 8px;font-size:12px;color:var(--muted);background:transparent;border-color:transparent}
.bills .billnote:hover,.bills .billnote:focus{border-color:var(--line);background:var(--card)}
.bills .billnote::placeholder{color:var(--muted)}
.bills .billrow.sub .billnote{margin-left:-8px}

.tplprev{white-space:pre-wrap;font-family:inherit;font-size:13px;background:var(--seg);border-radius:10px;padding:10px 12px;margin:0;color:var(--ink2)}
.tmchip{position:fixed;left:12px;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 12px);z-index:22;padding:9px 14px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-weight:700;font-size:13.5px;text-decoration:none;box-shadow:var(--shadow);max-width:calc(100vw - 100px)}
@media (min-width:1000px){.tmchip{bottom:16px;left:50%;transform:translateX(-50%)}}
.overall{display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-radius:16px;background:var(--bg2,rgba(127,127,127,.12))}
.ovrow{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.ovcap{color:var(--muted);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase}
.voicetest{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex:none}
.ovbig{font-family:Manrope,sans-serif;font-size:34px;font-weight:800;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}
.ovof{color:var(--muted);font-weight:600;font-size:.58em}
.ovleft{text-align:right;font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.ovleft small{display:block;color:var(--muted);font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase}
.ovtrack{height:12px;border-radius:6px;background:rgba(127,127,127,.25);overflow:hidden}
.ovtrack b{display:block;height:100%;background:var(--accent);border-radius:6px}
.ovpct{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.grpbadge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-right:6px;border-radius:50%;font-size:12px;font-weight:800;line-height:1;vertical-align:1px;flex:none}
.grpbadge{color:#fff}
.grpbadge.ring{width:22px;height:22px;margin-right:4px;margin-left:-2px;color:inherit;vertical-align:-5px}
/* Edit sheet: tighter, and the action row stays at the top while you scroll */
.sheet{gap:8px}
.sheet .field{gap:3px}
.sheet textarea.input{min-height:56px}
.sheet .input,.sheet select.input{min-height:40px;padding:8px 10px}
.actrow.acttop{position:sticky;top:-8px;z-index:3;background:var(--bg);padding:6px 0 8px;margin-top:-2px;border-bottom:1px solid var(--line)}
.setrow .trashbtns{display:flex;gap:6px;flex:none;align-items:center}
.setrow .st small+small{display:block}
.btn.danger{color:var(--bad)}
.btn.danger.armed{background:var(--bad);color:#fff;border-color:var(--bad)}
.setrow:has(.trashbtns){flex-wrap:wrap}

/* Force refresh: a small icon, floating top-right on phones, in the sidebar header on wide screens */
.refreshbtn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--faint);padding:0;cursor:pointer}
.refreshbtn:active{transform:rotate(180deg)}
.refreshbtn.floating{position:fixed;top:calc(8px + env(safe-area-inset-top,0px));right:8px;z-index:20;opacity:.7}
.refreshbtn.inbrand{display:none;margin-left:2px;flex:none}
@media (min-width:1000px){.refreshbtn.floating{display:none}.refreshbtn.inbrand{display:inline-flex}.side .brand{display:flex;align-items:center;gap:6px}}
.player .hint:empty{display:none}
.side .brand{justify-content:space-between}
.brandr{display:inline-flex;align-items:center;gap:6px}
.refreshbtn.inbrand{margin-left:0}
.side .brand{padding-right:2px}
.side .brand .brandr{gap:3px}
.side .brand .ver{font-size:16px;font-weight:800;color:#000}
.side .brand .refreshbtn.inbrand{width:34px;height:34px;color:#000;border-color:#9aa3ad}
.side .brand .refreshbtn.inbrand svg{width:20px;height:20px}
@media (prefers-color-scheme:dark){.side .brand .ver,.side .brand .refreshbtn.inbrand{color:#fff}}
.tread.mini{padding:8px 14px;gap:10px;text-decoration:none;color:inherit}
.tread.mini .mt{flex:1;font-weight:700;font-size:16px}
.tread.xcard{flex-direction:column;align-items:stretch;gap:10px}
.xtop{display:flex;gap:12px;align-items:center}
.exbtns{display:flex;gap:8px}.exbtns .btn{flex:1}

/* Compact spacing: less white space, same fonts */
.main{gap:8px;padding-top:calc(env(safe-area-inset-top) + 10px)}
.sect{gap:3px}
.secthead{padding:2px 4px 0}
.row{min-height:42px}
.row .body{padding:4px 4px}
.card{padding:10px 14px}
.card.mit{padding:8px 14px}
.mitrow{min-height:36px}
.mitlist{gap:0 24px}
.parkbtns{padding:0 12px 6px 52px;gap:6px}
.parkbtns .btn{min-height:30px;padding:2px 12px}
.parkdate{min-height:30px;padding:2px 8px}
.tread.xcard{gap:8px}
.quick{padding:3px 4px 3px 12px}
.quick input,.quick button{min-height:36px}
.row .body{flex-direction:row;flex-wrap:wrap;align-items:center;gap:1px 8px}
.row .body .m{flex:none}
.check{height:40px}
.row{min-height:40px}
.side .brand{align-items:center}
.brandl{display:flex;flex-direction:column;line-height:1.05}
.brandl .plym{font-family:Inter,system-ui,sans-serif;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.brandl .appname{font-family:Manrope,sans-serif;font-weight:800;font-size:26px;color:var(--ink)}
.brandl .plym{font-size:16px;font-weight:800;letter-spacing:.1em;color:var(--ink);margin-top:-2px}
.brandl .appname{margin-top:2px}
.side{padding-top:14px}
.grpbadge.ring{width:30px;height:24px;border-radius:0;margin-right:5px}
.side .brand{display:flex;flex-direction:column;align-items:stretch;gap:0;justify-content:flex-start}
.brandrow{display:flex;align-items:center;justify-content:space-between}
.brandl .appname,.brandrow .appname{font-family:Manrope,sans-serif;font-weight:800;font-size:36px;line-height:1.1;color:var(--ink);margin:0}
.brand .plym{font-size:16px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin:0}
.grpbadge.ring{width:34px;height:28px;margin-right:6px}
.grpbadge.ring{vertical-align:-9px}
.quick .parkbtn{background:transparent;color:var(--accent);border:1px solid var(--accent);margin-right:4px}

/* Schedule buttons on the same line as the task: T = today, T+1 = tomorrow, then a small date picker */
.parkitem{flex-direction:row;flex-wrap:wrap;align-items:center;border-top:1px solid var(--line)}
.parkitem:first-child{border-top:0}
.parkitem .row{flex:1 1 150px;min-width:0;border-top:0}
.parkitem .parkbtns{flex:none;padding:0 8px 0 0;gap:5px;flex-wrap:nowrap;margin-left:auto}
.tbadge{min-width:0!important;padding:2px 9px!important;font-weight:800;font-size:13px;border-radius:999px!important;color:var(--accent)}
.parkitem .parkdate{width:116px;min-height:30px;font-size:12.5px;padding:2px 6px}

/* Parked block at top of Plan */
.parkedplan{margin:0}
.parkedhead{position:sticky;top:0;z-index:5;width:100%;display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 14px;background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;font-size:18px;font-weight:800;color:inherit;cursor:pointer;text-align:left}
.parkedhead .chev{font-size:20px;width:18px}
.parkedhead .cnt{margin-left:auto;font-size:15px;font-weight:800;background:var(--line);border-radius:999px;padding:1px 10px}
.parkedplan .rows{margin-top:6px}

/* Life wordmark with speed lines */
.lifemark{display:inline-flex;align-items:center;gap:2px}
.lifemark .lifelines{color:var(--accent);display:inline-flex;margin-right:-2px}
.lifemark .lifelines svg{display:block}
.lifemark .lifetxt{display:inline-block;transform:skewX(-9deg);letter-spacing:-.01em}
h1.title .lifemark{font-size:inherit}
.brandrow .lifemark{margin-right:8px}

/* Treadmill: coming-up days */
.upcoming{display:flex;flex-direction:column;gap:8px}
.upday{background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.upday summary{display:flex;flex-direction:column;gap:2px;padding:10px 14px;cursor:pointer;list-style:none;font-size:15px}
.upday summary::-webkit-details-marker{display:none}
.upday summary b{font-size:16px}
.upday summary span{color:var(--muted);font-size:13.5px;font-weight:600}
.upday .rows{border-top:1px solid var(--line);border-radius:0;box-shadow:none}

.grpbadge.letter{font-size:12px;font-weight:800;color:#fff;line-height:1}

/* day marks: holidays (red) and time off (teal) */
.head.marked,.wday.marked h3{border-radius:10px}
.head.marked.holiday{background:var(--bad-soft);box-shadow:0 0 0 6px var(--bad-soft)}
.head.marked.pto{background:var(--lake-soft);box-shadow:0 0 0 6px var(--lake-soft)}
.wday.marked.holiday h3{background:var(--bad-soft);padding:4px 8px}
.wday.marked.pto h3{background:var(--lake-soft);padding:4px 8px}
.daymark{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:6px 12px;border-radius:8px;font-size:15.5px;font-weight:700;text-align:left;color:#fff}
.daymark.holiday{background:#b42323}.daymark.pto{background:#0b6b73}
.daymark .dmk{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;opacity:.85;font-weight:800}
.daymark .dml{flex:1;min-width:0}.daymark .dmy{font-size:12px;opacity:.85}
.markrow .x{display:flex;flex-direction:column;gap:4px}

.head.marked.birthday,.wday.marked.birthday h3{background:#fbe7f1}.head.marked.birthday{box-shadow:0 0 0 6px #fbe7f1}
.head.marked.anniversary,.wday.marked.anniversary h3{background:#fdf0d5}.head.marked.anniversary{box-shadow:0 0 0 6px #fdf0d5}
.wday.marked.birthday h3,.wday.marked.anniversary h3{padding:4px 8px}
.daymark.birthday{background:#be185d}.daymark.anniversary{background:#b45309}
@media (prefers-color-scheme:dark){.head.marked.birthday,.wday.marked.birthday h3{background:#3a1a2b;box-shadow:none}.head.marked.anniversary,.wday.marked.anniversary h3{background:#3a2c12;box-shadow:none}}

.head.marked.travel,.wday.marked.travel h3{background:#e3e8fb}.head.marked.travel{box-shadow:0 0 0 6px #e3e8fb}
.wday.marked.travel h3{padding:4px 8px}
.daymark.travel{background:#3949ab}
@media (prefers-color-scheme:dark){.head.marked.travel,.wday.marked.travel h3{background:#1c2140;box-shadow:none}}

/* drag and drop */
.droptray{position:fixed;left:12px;right:12px;bottom:12px;z-index:60;display:flex;gap:8px;flex-wrap:wrap}
.droptarget{flex:1 1 120px;padding:16px 8px;border-radius:12px;border:2px dashed var(--accent);background:var(--card,#fff);color:var(--accent);font-weight:800;font-size:16px;text-align:center}
.droptarget.over{background:var(--accent);color:#fff}
.row.dragging,.dragging{opacity:.45}
.drop-before{box-shadow:0 -3px 0 0 var(--accent)}.drop-after{box-shadow:0 3px 0 0 var(--accent)}

/* search button sits beside the refresh icon */
.searchbtn.floating{right:42px}
.searchbtn.inbrand{margin-left:2px}
@media (min-width:1000px){.searchbtn.floating{display:none}.searchbtn.inbrand{display:inline-flex}}
.searchrow{width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);cursor:pointer;color:inherit;min-height:48px}
.searchres{max-height:55vh;overflow:auto}
.searchbtn{opacity:1}
.searchbtn{width:34px;height:34px;color:var(--accent);border-color:var(--accent);opacity:1}
.searchbtn svg{width:18px;height:18px}
.searchbtn.floating{right:44px;top:calc(4px + env(safe-area-inset-top,0px))}

.head.marked.remote,.wday.marked.remote h3{background:var(--work-soft)}.head.marked.remote{box-shadow:0 0 0 6px var(--work-soft)}
.wday.marked.remote h3{padding:4px 8px}
.daymark.remote{background:var(--work);color:#fff}
@media (prefers-color-scheme:dark){.daymark.remote{color:#10101a}}
.searchbtn{width:28px;height:28px}
.searchbtn.floating{right:40px;top:calc(5px + env(safe-area-inset-top,0px))}
.searchbtn svg{width:16px;height:16px}

/* ---------------- Plymsoul - Tenant additions ---------------- */
:root{--accent:#0B6B73;--accent-soft:#DDF0F1}
@media (prefers-color-scheme:dark){:root{--accent:#5CC8D0;--accent-ink:#0B1A1C;--accent-soft:#123236}}
@media (min-width:1000px){#app{grid-template-columns:270px minmax(0,1fr)}.main{max-width:900px}}
.side .brand{padding:4px 8px 16px 10px}
.side .brand .brandrow{width:100%}
.side .brand .appname{font-size:32px}
.homehead .brandrow{justify-content:flex-start;gap:6px}
.homehead .appname{font-family:Manrope,sans-serif;font-weight:800;font-size:34px;line-height:1.1}
.refreshbtn.inhead{width:34px;height:34px;color:var(--ink);border-color:#9aa3ad}
.refreshbtn.inhead svg{width:18px;height:18px}
.homehead .ver{font-size:15px;font-weight:800;color:var(--ink)}
@media (min-width:1000px){.homehead .brandrow{display:none}.homehead .eyebrow::after{content:''}}
.side a .count:empty{display:none}
.hcard{display:flex;flex-direction:column;gap:6px;text-decoration:none;color:inherit}
.hcard.warnc{background:var(--warn-soft);color:var(--warn);font-weight:600;border-color:transparent}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.stat b{font-size:22px}
.neg{color:var(--bad)!important}.pos{color:var(--good)}
.pill.ok{color:var(--good);background:var(--good-soft)}.pill.warn{color:var(--warn);background:var(--warn-soft)}
button.box{flex:none;margin:0 6px 0 12px;background:transparent;padding:0;min-width:22px;cursor:pointer}
button.box:hover{border-color:var(--accent)}
.row.over .t{color:var(--bad)}
.rows.more .cardbtn{padding:14px 16px;border:0;border-top:1px solid var(--line);background:transparent;font-weight:500;min-height:52px}
.rows.more .cardbtn:first-child{border-top:0}
.crow.cbtn,a.crow{width:100%;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;color:inherit;font:inherit;cursor:pointer;text-decoration:none;align-items:center}
.rows>.crow.cbtn:first-child,.rows>a.crow:first-child{border-top:0}
.crow:hover{background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}
.crow b,.crow .amt{flex:none;font-variant-numeric:tabular-nums;font-size:14.5px}
.amt.pos{color:var(--good)}.amt.cap{color:var(--work)}.amt.dim{color:var(--faint)}
.crow .d{width:64px}
.filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (min-width:700px){.filters{grid-template-columns:1fr 1fr 1fr 1.4fr}}
.stack{display:flex;flex-direction:column;gap:10px}
details.card>summary{cursor:pointer;list-style:none}
details.card>summary::-webkit-details-marker{display:none}
details.card>summary::after{content:' ▸'}
details[open].card>summary::after{content:' ▾'}
.tog{display:flex;align-items:center;gap:10px;font-weight:600;cursor:pointer}
.tog.small{font-weight:500;font-size:14px;gap:6px}
.kv{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-top:1px solid var(--line);font-size:14.5px}
.kv:first-of-type{border-top:0}
.kv.tot{border-top:2px solid var(--line);font-weight:700}
.kv b{font-variant-numeric:tabular-nums}
.pbars{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.pbar{display:grid;grid-template-columns:62px 1fr 92px;gap:8px;align-items:center;font-size:13.5px}
.pk{font-weight:700;color:var(--ink2)}
.ptrack{position:relative;height:18px;background:var(--seg);border-radius:6px;overflow:hidden}
.ptrack i{position:absolute;left:0;top:0;height:100%;border-radius:6px}
.ptrack i.neg{background:var(--bad);opacity:.85;z-index:2;height:60%;top:20%}
.ptrack i.pos{background:var(--good);z-index:2;height:60%;top:20%}
.ptrack i.cap{background:var(--bad-soft);z-index:1}
.pv{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.pv small{display:block;font-weight:500;color:var(--muted);font-size:11.5px}
.tablewrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}
.ptable{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
.ptable th,.ptable td{padding:9px 12px;text-align:right;white-space:nowrap;border-top:1px solid var(--line)}
.ptable th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-top:0}
.ptable th:first-child,.ptable td:first-child{text-align:left;font-weight:700}
.ptable tr.click{cursor:pointer}
.ptable tr.click:hover td{background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}
.secthead .linkbtn{min-height:28px;font-size:13.5px;font-weight:600;color:var(--accent)}
