:root{
  --work:#1ec98b;   --work-bg:#e4f8ef;
  --rest:#f43f5e;   --rest-bg:#fde8ec;
  --ex:#8a8f98;     --ex-bg:#f1f2f4;
  --round:#5b6bf5;  --round-bg:#ebedfe;
  --reset:#e0a91b;  --reset-bg:#fbf3da;
  --ramp:#f97316;   --ramp-bg:#fdecdf;
  --prep:#3b82f6;   --prep-bg:#e6eefe;
  --reps:#a855f7;   --reps-bg:#f4e9fe;
  --ink:#11151c;    --muted:#8a93a0;  --line:#e4eeec;
  --accent:#0d9488; --accent2:#0ea5e9;
  --grad: linear-gradient(155deg,#14b8a6 0%,#0ea5e9 52%,#0d9488 100%);
  --tint:#f1faf9;   /* subtle teal wash for the main area */
  --sheet-radius:30px;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink);background:var(--tint);overflow:hidden;
  -webkit-font-smoothing:antialiased;
}
/* Phone-width frame, centred on big screens (laptop/desktop PWA) */
.screen{
  position:fixed;inset:0;display:flex;flex-direction:column;
  max-width:520px;margin:0 auto;background:var(--tint);overflow:hidden;
}
@media (min-width:560px){
  body{background:#0c0d10}
  .screen{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 30px 80px rgba(0,0,0,.5);
    border-radius:0;}
}
.hidden{display:none !important}

/* ---------- HERO ---------- */
.hero{
  position:relative;background:var(--grad);color:#fff;flex:0 0 auto;
  padding:calc(var(--safe-top) + 12px) 18px 44px;
  border-bottom-left-radius:0;border-bottom-right-radius:0;
}
/* home hero grows so the teal/timer area dominates; rows sit at the bottom */
#hero{flex:1 1 auto;min-height:230px;display:flex;flex-direction:column}
.hero-center{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center}
.hero-bar{display:flex;align-items:center;justify-content:space-between;gap:8px}
.hero-title{font-size:21px;font-weight:700;margin:0;letter-spacing:.2px;text-align:center;flex:1}
.icon-btn{
  background:transparent;border:0;color:#fff;padding:8px;border-radius:12px;
  display:grid;place-items:center;cursor:pointer;opacity:.96;
}
.icon-btn:active{background:rgba(255,255,255,.16)}
.icon-btn.dark{color:var(--ink)}
.hero-time{
  text-align:center;font-weight:800;font-size:92px;line-height:1;
  margin-top:0;letter-spacing:-2px;font-variant-numeric:tabular-nums;
}
.hero-sub{text-align:center;opacity:.85;font-size:13px;margin-top:8px;letter-spacing:.4px;text-transform:lowercase}

/* ---------- SHEET ---------- */
/* Sheet sits at the bottom and overlaps the hero; the square Start button is a
   child of the sheet and pokes above its top edge so the seam runs through its
   middle: ---[ ]---  (sheet stacks above hero; button stacks above the rows). */
.sheet{
  position:relative;z-index:2;flex:0 1 auto;max-height:72vh;overflow:visible;
  display:flex;flex-direction:column;
  background:var(--tint);border-top-left-radius:var(--sheet-radius);border-top-right-radius:var(--sheet-radius);
  margin-top:-40px;
}
.sheet-scroll{
  flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:58px 16px calc(34px + var(--safe-bottom));
}
.play-fab{
  position:absolute;top:-40px;left:50%;transform:translateX(-50%);z-index:5;
  width:80px;height:80px;border-radius:22px;border:0;background:#fff;color:var(--accent);
  display:grid;place-items:center;cursor:pointer;
  box-shadow:0 14px 30px rgba(13,148,136,.30);
}
.play-fab svg{margin-left:3px}
.play-fab:active{transform:translateX(-50%) scale(.95)}

/* rows */
.row{
  width:100%;display:flex;align-items:center;gap:14px;
  background:var(--ex-bg);border:0;border-radius:18px;
  padding:18px 18px;margin-bottom:12px;cursor:pointer;text-align:left;
  font-size:19px;font-weight:700;color:var(--ink);
  transition:transform .06s ease;
}
.row:active{transform:scale(.99)}
.row-ic{display:grid;place-items:center;width:30px;height:30px;flex:0 0 auto}
.row-label{flex:1}
.row-val{font-weight:800;font-variant-numeric:tabular-nums;font-size:20px;display:flex;align-items:center}
.row-load{background:#fff;color:var(--muted);border:1px solid var(--line)}
.row-load .row-ic,.row-load .row-val{color:var(--muted)}

.row-work{background:var(--work-bg)}   .row-work .row-ic,.row-work .row-val{color:var(--work)}
.row-rest{background:var(--rest-bg)}   .row-rest .row-ic,.row-rest .row-val{color:var(--rest)}
.row-ex{background:#fff;border:1px solid var(--line)}  .row-ex .row-ic,.row-ex .row-val{color:var(--ex)}
.row-round{background:var(--round-bg)} .row-round .row-ic,.row-round .row-val{color:var(--round)}
.row-reset{background:var(--reset-bg)} .row-reset .row-ic,.row-reset .row-val{color:var(--reset)}
.row-ramp{background:var(--ramp-bg)}   .row-ramp .row-ic,.row-ramp .row-val{color:var(--ramp)}
.row-prep{background:var(--prep-bg)}   .row-prep .row-ic,.row-prep .row-val{color:var(--prep)}

/* sequence steps */
.seq-head{display:flex;align-items:center;justify-content:space-between;margin:4px 4px 10px;color:var(--muted);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.seq-step{
  display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:13px 14px;margin-bottom:9px;
}
.seq-num{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;color:#fff;flex:0 0 auto}
.seq-name{flex:1;font-weight:600;font-size:15px}
.seq-name small{display:block;color:var(--muted);font-weight:500;font-size:12px;margin-top:2px}
.seq-dose{font-weight:800;font-variant-numeric:tabular-nums;color:var(--muted);font-size:15px}
.k-work{background:var(--work)} .k-rest{background:var(--rest)} .k-prep{background:var(--prep)}
.k-reset{background:var(--reset)} .k-reps{background:var(--reps)}
.seq-note{color:var(--muted);font-size:13px;padding:0 6px 14px}

/* ---------- RUNNING SCREEN ---------- */
/* coloured area takes ~half the screen; controls take the other half */
.hero-run{flex:1 1 50%;display:flex;flex-direction:column;padding-bottom:22px;transition:background .25s ease,filter .4s ease}
.run-center{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center}
.hero-run.is-work{background:linear-gradient(160deg,#22d39a,#10b981)}
.hero-run.is-rest{background:linear-gradient(160deg,#fb7185,#f43f5e)}
.hero-run.is-prep{background:linear-gradient(160deg,#60a5fa,#3b82f6)}
.hero-run.is-reset{background:linear-gradient(160deg,#fbbf24,#e0a91b)}
.hero-run.is-reps{background:linear-gradient(160deg,#c084fc,#a855f7)}
.hero-run.is-done{background:linear-gradient(160deg,#34d399,#059669)}
.run-kind{text-align:center;text-transform:uppercase;letter-spacing:2px;font-weight:800;font-size:14px;opacity:.9;margin-top:18px}
#runTime{margin-top:6px;font-size:clamp(54px,15vw,82px)}

/* circular countdown ring around the time */
.run-ring-wrap{position:relative;width:min(72vw,300px);aspect-ratio:1;display:grid;place-items:center;margin-bottom:4px}
.run-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.run-ring-bg{fill:none;stroke:rgba(255,255,255,.22);stroke-width:9}
.run-ring-fg{fill:none;stroke:#fff;stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset .25s linear}
.run-ring-center{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 14px}
.run-ring-center .run-kind{margin-top:0;margin-bottom:2px}
.run-label{text-align:center;font-size:20px;font-weight:700;margin-top:6px;padding:0 16px}
.run-next{text-align:center;font-size:13px;opacity:.85;margin-top:8px;min-height:18px}
/* ramp wedge: thin→thick intensity ramp with divider marks at the chosen frequency */
.ramp-wedge{width:min(72vw,300px);margin:10px auto 0}
.ramp-wedge svg{width:100%;height:34px;display:block;overflow:visible}
.ramp-wedge .rw-label{display:flex;justify-content:space-between;font-size:10px;font-weight:800;letter-spacing:1px;opacity:.85;text-transform:uppercase;margin-top:3px}
.run-progress{height:6px;background:rgba(255,255,255,.28);border-radius:99px;margin:20px 10px 0;overflow:hidden}
.run-progress-fill{height:100%;width:0;background:#fff;border-radius:99px;transition:width .25s linear}

.run-controls{flex:1 1 50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;padding:18px}
.run-stats{display:flex;gap:46px}
.run-stats > div{display:flex;flex-direction:column;align-items:center}
.run-stats span{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.run-stats small{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
.run-buttons{display:flex;align-items:center;gap:26px}
.ctl{width:64px;height:64px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--ink);display:grid;place-items:center;cursor:pointer}
.ctl:active{transform:scale(.95)}
.ctl-main{width:88px;height:88px;background:var(--ink);color:#fff;border:0;box-shadow:0 10px 24px rgba(0,0,0,.18)}
.ctl-reset{background:none;border:0;color:var(--muted);font-size:15px;font-weight:700;padding:8px 16px;cursor:pointer}

/* ---------- DRAWER ---------- */
.drawer-scrim{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:40}
.drawer{
  position:fixed;top:0;left:0;bottom:0;width:84%;max-width:380px;background:#fff;z-index:50;
  display:flex;flex-direction:column;padding:calc(var(--safe-top) + 10px) 0 calc(var(--safe-bottom) + 10px);
  box-shadow:0 0 40px rgba(0,0,0,.25);
  transform:translateX(0);
}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:6px 16px 12px}
.drawer-head h2{margin:0;font-size:20px}
.drawer-list{flex:1 1 auto;overflow-y:auto;padding:4px 12px}
.wk{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:9px;cursor:pointer;background:#fff}
.wk.active{border-color:var(--rest);background:var(--rest-bg)}
.wk-body{flex:1;min-width:0}
.wk-name{font-weight:700;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk-meta{color:var(--muted);font-size:12px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk-kind{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;padding:3px 7px;border-radius:7px;background:var(--ex-bg);color:var(--muted)}
.wk-x{border:0;background:none;color:var(--muted);font-size:18px;padding:6px;cursor:pointer;border-radius:8px}
.wk-x:active{background:var(--ex-bg)}
.drawer-actions{padding:10px 12px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:8px}
.da{border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 10px;font-size:14px;font-weight:700;cursor:pointer;text-align:left;color:var(--ink)}
.da:active{background:var(--ex-bg)}

/* ---------- MODAL ---------- */
.modal-scrim{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:60;display:flex;align-items:flex-end;justify-content:center}
@media(min-width:560px){.modal-scrim{align-items:center}}
.modal{background:#fff;width:100%;max-width:520px;border-radius:24px 24px 0 0;max-height:90vh;display:flex;flex-direction:column;padding-bottom:var(--safe-bottom)}
@media(min-width:560px){.modal{border-radius:24px}}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 6px}
.modal-head h3{margin:0;font-size:19px}
.modal-body{padding:8px 18px 12px;overflow-y:auto}
.modal-foot{padding:10px 18px calc(18px);display:flex;gap:10px}
.btn{flex:1;border:0;border-radius:14px;padding:15px;font-size:16px;font-weight:800;cursor:pointer}
.btn-primary{background:var(--ink);color:#fff}
.btn-ghost{background:var(--ex-bg);color:var(--ink)}
.btn-danger{background:var(--rest-bg);color:var(--rest)}
.btn:active{transform:scale(.99)}

/* form bits */
.field{margin-bottom:16px}
.field label{display:block;font-size:13px;font-weight:700;color:var(--muted);margin-bottom:7px;text-transform:uppercase;letter-spacing:.4px}
.input{width:100%;border:1px solid var(--line);border-radius:13px;padding:14px;font-size:16px;font-family:inherit;background:#fff;color:var(--ink)}
textarea.input{min-height:160px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.5}

/* time stepper */
.stepper{display:flex;align-items:center;justify-content:center;gap:18px}
.stepper button{width:54px;height:54px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:26px;font-weight:700;cursor:pointer;color:var(--ink)}
.stepper button:active{background:var(--ex-bg)}
.stepper .val{font-size:46px;font-weight:800;font-variant-numeric:tabular-nums;min-width:150px;text-align:center}
.stepper-unit{text-align:center;color:var(--muted);font-size:13px;margin-top:6px}
.range{width:100%;margin-top:18px;accent-color:var(--rest)}
.quick{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:16px}
.quick button{border:1px solid var(--line);background:#fff;border-radius:99px;padding:8px 14px;font-size:14px;font-weight:700;cursor:pointer;color:var(--ink)}
.quick button:active{background:var(--ex-bg)}

/* exercise list editor */
.exli{list-style:none;margin:0;padding:0}
.exli li{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:13px;padding:8px 10px;margin-bottom:8px;background:#fff}
.exli .ex-name{flex:1;min-width:0;border:0;font-size:15px;font-weight:600;padding:6px 2px;outline:none;background:transparent;color:var(--ink)}
.exli .ex-ramp{flex:0 0 auto;font-size:12px;font-weight:700;border:1px solid var(--line);border-radius:9px;padding:6px 4px;background:#fff;color:var(--ink);max-width:92px}
.exli .icon-btn{padding:5px}
.exli li.dragging{opacity:.5}
.exli li.over{border-color:var(--rest)}
.exadd{width:100%;border:1px dashed var(--line);background:#fff;border-radius:13px;padding:13px;font-weight:700;color:var(--muted);cursor:pointer}

.toast{position:fixed;left:50%;bottom:calc(28px + var(--safe-bottom));transform:translateX(-50%);background:#11151c;color:#fff;padding:12px 18px;border-radius:12px;font-size:14px;font-weight:600;z-index:100;box-shadow:0 8px 24px rgba(0,0,0,.3);max-width:90%}
[hidden]{display:none !important}
