/* ChainLine Coach — squash solo drill trainer */
:root{
  --bg:#0a0e0f; --bg2:#0e1416; --card:#131b1d; --card2:#182326;
  --line:#22312f; --text:#eef5f2; --muted:#8aa39c; --muted2:#5d736d;
  --accent:#d8ff3e;          /* squash-ball yellow-green */
  --accent2:#36e0a6;         /* mint */
  --hot:#ff5a3c;             /* rest / stop */
  --fh:#36e0a6; --bh:#5aa9ff;
  --ring-bg:#1c2a28;
  --shadow:0 18px 50px rgba(0,0,0,.5);
  font-synthesis:none;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  background:
    radial-gradient(1200px 700px at 50% -10%, #14201f 0%, transparent 60%),
    radial-gradient(900px 600px at 100% 110%, #101a22 0%, transparent 55%),
    var(--bg);
  color:var(--text);
  font-family:"Helvetica Neue",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
.wrap{max-width:560px;margin:0 auto;padding:18px 16px 120px;min-height:100%}

/* Header */
header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.02em}
.ball{width:26px;height:26px;border-radius:50%;background:#0c0c0c;position:relative;box-shadow:inset 0 0 0 2px #1c1c1c, 0 2px 8px rgba(0,0,0,.6)}
.ball:before,.ball:after{content:"";position:absolute;width:5px;height:5px;border-radius:50%;background:var(--accent);top:7px}
.ball:before{left:7px}.ball:after{left:14px}
.brand small{display:block;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:700}
.brand b{font-size:16px}
.iconbtn{background:var(--card);border:1px solid var(--line);color:var(--text);width:40px;height:40px;border-radius:12px;font-size:17px;display:grid;place-items:center;cursor:pointer;transition:.15s}
.iconbtn.on{background:var(--accent);color:#0b0f0a;border-color:var(--accent)}
.iconbtn:active{transform:scale(.92)}

/* Tabs */
.tabs{display:flex;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:5px;margin-bottom:16px}
.tabs button{flex:1;background:transparent;border:0;color:var(--muted);font-weight:700;font-size:13px;padding:9px 4px;border-radius:10px;cursor:pointer;letter-spacing:.02em}
.tabs button.active{background:var(--card2);color:var(--text);box-shadow:0 1px 0 rgba(255,255,255,.04) inset}

.view{display:none;animation:fade .3s ease}
.view.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

h2.sec{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:22px 2px 10px;font-weight:800}

/* Routine cards */
.routine{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,var(--card),var(--card2));border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:11px;cursor:pointer;transition:.18s;position:relative;overflow:hidden}
.routine:active{transform:scale(.985)}
.routine .emoji{font-size:26px;width:46px;height:46px;display:grid;place-items:center;background:#0c1413;border-radius:14px;border:1px solid var(--line);flex:none}
.routine .meta{flex:1;min-width:0}
.routine .meta b{display:block;font-size:16px;margin-bottom:3px}
.routine .meta span{font-size:12.5px;color:var(--muted);line-height:1.4}
.routine .dur{font-weight:800;color:var(--accent);font-size:13px;white-space:nowrap}
.routine.accent{border-color:#34452a;background:linear-gradient(135deg,#1a2417,#141d16)}

/* Drill library */
.cat{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent2);font-weight:800;margin:20px 2px 8px}
.drill{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 14px;margin-bottom:8px}
.drill .top{display:flex;align-items:center;gap:9px}
.drill .side{font-size:10px;font-weight:800;padding:2px 7px;border-radius:6px;letter-spacing:.05em}
.side.FH{background:rgba(54,224,166,.16);color:var(--fh)}
.side.BH{background:rgba(90,169,255,.16);color:var(--bh)}
.side.MOVE{background:rgba(216,255,62,.15);color:var(--accent)}
.drill b{font-size:14.5px;flex:1}
.drill .secs{font-weight:800;color:var(--muted);font-size:12.5px}
.drill p{margin:7px 0 0;font-size:13px;color:var(--muted);line-height:1.5}

/* Builder */
.field{margin-bottom:16px}
.field label{display:block;font-size:12px;letter-spacing:.04em;color:var(--muted);font-weight:700;margin-bottom:8px;text-transform:uppercase}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:var(--card);border:1px solid var(--line);color:var(--text);padding:9px 14px;border-radius:11px;font-weight:700;font-size:13.5px;cursor:pointer;transition:.15s}
.chip.on{background:var(--accent);color:#0b0f0a;border-color:var(--accent)}
.chip:active{transform:scale(.94)}
.catpick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.catpick .chip{text-align:left}

/* Big start button */
.cta{position:fixed;left:0;right:0;bottom:0;padding:14px 16px calc(14px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 60%,transparent);z-index:20}
.cta .inner{max-width:560px;margin:0 auto}
.bigbtn{width:100%;border:0;border-radius:16px;padding:18px;font-size:17px;font-weight:800;letter-spacing:.02em;cursor:pointer;background:var(--accent);color:#0b0f0a;box-shadow:0 10px 30px rgba(216,255,62,.22);transition:.15s}
.bigbtn:active{transform:scale(.98)}
.bigbtn.ghost{background:var(--card2);color:var(--text);box-shadow:none;border:1px solid var(--line)}

/* Player overlay */
.player{position:fixed;inset:0;z-index:50;background:
  radial-gradient(1000px 700px at 50% -5%, #16241f 0%, transparent 55%), var(--bg);
  display:none;flex-direction:column;padding:24px 20px calc(24px + env(safe-area-inset-bottom));animation:fade .25s}
.player.show{display:flex}
.player.rest{background:radial-gradient(1000px 700px at 50% -5%, #2a1714 0%, transparent 55%), var(--bg)}
.ptop{display:flex;align-items:center;justify-content:space-between}
.ptop .x{font-size:22px;background:var(--card);border:1px solid var(--line);color:var(--text)}
.phase{font-size:12px;letter-spacing:.22em;text-transform:uppercase;font-weight:800;color:var(--accent)}
.player.rest .phase{color:var(--hot)}
.progresswrap{height:5px;background:var(--ring-bg);border-radius:5px;margin:16px 0 0;overflow:hidden}
.progressbar{height:100%;width:0;background:var(--accent);transition:width .3s linear}

.stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px}
.ringbox{position:relative;width:min(74vw,300px);aspect-ratio:1;display:grid;place-items:center;margin:6px 0}
.ringbox svg{position:absolute;inset:0;transform:rotate(-90deg)}
.ringbox .track{fill:none;stroke:var(--ring-bg);stroke-width:11}
.ringbox .bar{fill:none;stroke:var(--accent);stroke-width:11;stroke-linecap:round;transition:stroke-dashoffset .25s linear,stroke .3s}
.player.rest .bar{stroke:var(--hot)}
.ringtime{font-variant-numeric:tabular-nums;font-weight:800;font-size:clamp(58px,17vw,86px);line-height:1;letter-spacing:-.02em}
.ringsub{font-size:12px;color:var(--muted);letter-spacing:.18em;text-transform:uppercase;font-weight:700;margin-top:6px}
.drillname{font-size:clamp(22px,6.5vw,30px);font-weight:800;line-height:1.1;margin:6px 14px 0}
.drillcue{font-size:14.5px;color:var(--muted);line-height:1.5;margin:8px 22px 0;max-width:440px}
.sidetag{display:inline-block;margin-top:10px;font-size:11px;font-weight:800;letter-spacing:.06em;padding:4px 10px;border-radius:8px}
.upnext{font-size:12px;color:var(--muted2);margin-top:6px}
.upnext b{color:var(--muted)}

.pulse{animation:pulse .5s ease infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}

.pcontrols{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:6px}
.pbtn{width:58px;height:58px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--text);font-size:20px;display:grid;place-items:center;cursor:pointer;transition:.15s}
.pbtn:active{transform:scale(.92)}
.pbtn.main{width:78px;height:78px;background:var(--accent);color:#0b0f0a;border-color:var(--accent);font-size:26px;box-shadow:0 10px 28px rgba(216,255,62,.25)}
.player.rest .pbtn.main{background:var(--hot);border-color:var(--hot);color:#1a0a08;box-shadow:0 10px 28px rgba(255,90,60,.3)}
.roundpill{text-align:center;font-size:12px;color:var(--muted);letter-spacing:.06em;margin-top:14px;font-weight:700}

/* Done screen */
.done{text-align:center}
.done .big{font-size:46px;margin:10px}
.done h3{font-size:26px;margin:6px}
.done .stats{display:flex;gap:10px;justify-content:center;margin:18px 0}
.done .stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 18px;min-width:90px}
.done .stat b{display:block;font-size:24px;color:var(--accent)}
.done .stat span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}

.note{font-size:12px;color:var(--muted2);line-height:1.5;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:14px 2px}
.note b{color:var(--muted)}
.hint{font-size:12px;color:var(--muted2);text-align:center;margin-top:10px}
footer{text-align:center;color:var(--muted2);font-size:11px;letter-spacing:.06em;margin-top:26px}
footer a{color:var(--muted)}

/* --- v3: favourites, modals, custom/AI drills, settings --- */
.addrow{display:flex;gap:8px;margin-bottom:14px}
.addbtn{flex:1;background:var(--card);border:1px solid var(--line);color:var(--text);font-weight:700;font-size:13.5px;padding:12px;border-radius:13px;cursor:pointer;transition:.15s}
.addbtn.primary{background:linear-gradient(135deg,#1c2a17,#16210f);border-color:#34452a;color:var(--accent)}
.addbtn:active{transform:scale(.97)}

.drill .top{position:relative}
.star{margin-left:auto;background:none;border:0;font-size:19px;cursor:pointer;line-height:1;color:var(--muted2);padding:2px 2px 2px 8px;transition:.15s}
.star.on{color:var(--accent)}
.star:active{transform:scale(1.25)}
.drill .secs{margin-left:0}
.editlink{background:none;border:0;color:var(--muted);font-size:12px;cursor:pointer;text-decoration:underline;padding:0;margin-top:6px}
.cat .mine{color:var(--accent)}

/* modal */
.modal{position:fixed;inset:0;z-index:60;background:rgba(4,8,8,.66);backdrop-filter:blur(4px);display:none;align-items:flex-end;justify-content:center;animation:fade .2s}
.modal.show{display:flex}
.sheet{background:var(--bg2);border:1px solid var(--line);border-top-left-radius:22px;border-top-right-radius:22px;width:100%;max-width:560px;max-height:90vh;overflow:auto;padding:18px 18px calc(26px + env(safe-area-inset-bottom));box-shadow:var(--shadow);animation:rise .28s cubic-bezier(.2,.8,.2,1)}
@keyframes rise{from{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}
.sheethead{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.sheethead b{font-size:18px}

.seg{display:flex;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:5px}
.seg button{flex:1;background:transparent;border:0;color:var(--muted);font-weight:700;font-size:13px;padding:10px 6px;border-radius:9px;cursor:pointer}
.seg button.on{background:var(--accent);color:#0b0f0a}
.seg.small button{font-size:12px;padding:8px 4px}
.subnote{font-size:12px;color:var(--muted2);margin:8px 2px 0;line-height:1.45}
.sel,.inp{width:100%;background:var(--card);border:1px solid var(--line);color:var(--text);border-radius:11px;padding:12px;font-size:14px;font-family:inherit}
textarea.inp{resize:vertical}
.toggle{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--text);font-weight:600;margin-bottom:10px;cursor:pointer;text-transform:none;letter-spacing:0}
.toggle input{width:18px;height:18px;accent-color:var(--accent)}
.aibar{background:var(--card);border:1px solid #34452a;border-radius:14px;padding:14px;margin-bottom:18px}
.aibar .inp{margin-bottom:10px}
.aibar .seg{margin-bottom:10px}
