  :root{
    --bg:#141920; --panel:#1b2027; --panel-2:#232a33; --line:#333c46;
    --ink:#eef2f0; --muted:#8b97a3; --faint:#5b6672;
    --blood:#7fa322; --blood-2:#c3f53c; --blood-soft:#22301a;
    --gold:#c3f53c;
    --fair:#c3f53c; --miss:#e0864f;
    --lime-ink:#1b2027;
    --r:10px;
  }
  *{box-sizing:border-box}
  html,body{margin:0}
  body{
    font-family:"Archivo",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    background:var(--bg); color:var(--ink);
    -webkit-font-smoothing:antialiased; line-height:1.45;
    padding-bottom:env(safe-area-inset-bottom);
  }
  h1,h2,h3{font-family:"Archivo",sans-serif; font-weight:800; margin:0; letter-spacing:-.01em}
  .display{font-family:"Archivo",sans-serif; font-weight:900; letter-spacing:-.02em; text-transform:uppercase}
  button{font-family:inherit; cursor:pointer}
  input,select,textarea{font-family:inherit; font-size:16px}
  .wrap{max-width:1120px; margin:0 auto; padding:0 16px}
  a{color:var(--blood-2)}

  /* header */
  header{
    background:linear-gradient(180deg,#1b2027 0%,var(--bg) 100%);
    border-bottom:1px solid var(--line);
    position:relative; z-index:2;
    padding-top:env(safe-area-inset-top);
  }
  header .wrap{display:flex; align-items:center; gap:12px; padding-top:12px; padding-bottom:12px}
  .mark{display:flex; align-items:center; gap:10px}
  .mark .bar{width:4px; height:26px; background:var(--blood-2); border-radius:2px}
  .brand{font-family:"Archivo"; font-weight:900; font-size:20px; text-transform:uppercase; letter-spacing:.02em}
  .brand em{color:var(--blood-2); font-style:normal}
  .whoami{margin-left:auto; display:flex; align-items:center; gap:12px; font-size:13px; color:var(--muted)}
  .rolechip{border:1px solid var(--line); color:var(--ink); padding:3px 10px; border-radius:999px; font-size:11px; text-transform:uppercase; letter-spacing:.06em}
  .signout{background:none; border:0; color:var(--muted); font-size:13px; text-decoration:underline}

  /* auth */
  .auth{min-height:88vh; display:flex; align-items:center; justify-content:center; padding:24px 16px}
  .authcard{width:100%; max-width:420px}
  .kicker{color:var(--blood-2); font-size:12px; letter-spacing:.28em; text-transform:uppercase; font-weight:700; margin-bottom:14px}
  .authcard h1{font-size:44px; line-height:.95; text-transform:uppercase; font-weight:900; letter-spacing:-.02em; margin-bottom:10px}
  .authcard h1 em{color:var(--blood-2); font-style:normal}
  .authcard .sub{color:var(--muted); font-size:14px; margin-bottom:24px; max-width:34ch}
  .field{margin-bottom:12px}
  .field label{display:block; font-size:11px; color:var(--muted); margin-bottom:5px; text-transform:uppercase; letter-spacing:.08em}
  .field input,.field select{width:100%; padding:12px 13px; border:1px solid var(--line); border-radius:var(--r); background:var(--panel); color:var(--ink)}
  .field input:focus,.field select:focus{outline:none; border-color:var(--blood-2); box-shadow:0 0 0 3px var(--blood-soft)}
  .btn{border:0; border-radius:var(--r); padding:13px 16px; font-size:14px; font-weight:700; text-transform:uppercase; letter-spacing:.04em}
  .btn-primary{background:var(--blood-2); color:var(--lime-ink); width:100%}
  .btn-primary:hover{background:#d3ff5c}
  .btn-primary:active{transform:translateY(1px)}
  .btn-ghost{background:var(--panel); border:1px solid var(--line); color:var(--ink)}
  .btn-ghost:hover{border-color:var(--faint)}
  .btn-sm{padding:7px 12px; font-size:12px; border-radius:8px}
  .switch{margin-top:16px; font-size:13px; color:var(--muted)}
  .switch a{font-weight:700; text-decoration:none}
  .err{background:#2e1f1a; border:1px solid #7a4a33; color:#f0c2ab; padding:10px 12px; border-radius:var(--r); font-size:13px; margin-bottom:12px}

  /* tabs */
  .stickytop{position:sticky; top:0; z-index:30; background:var(--bg)}
  #tabview{padding-top:14px}
  nav.tabs{display:flex; gap:4px; padding:10px 0 6px; background:var(--bg); z-index:20; border-bottom:1px solid var(--line)}
  nav.tabs button{background:none; border:0; padding:9px 14px; font-size:12px; color:var(--muted); border-radius:8px; font-weight:700; text-transform:uppercase; letter-spacing:.05em}
  nav.tabs button.on{background:var(--blood-2); color:var(--lime-ink)}

  section{padding:16px 0 40px}
  .sec-h{display:flex; align-items:flex-end; justify-content:space-between; margin:6px 0 14px; gap:12px; flex-wrap:wrap}
  .sec-h h2{font-size:22px; text-transform:uppercase; letter-spacing:-.01em}
  .sec-h .meta{font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:.06em}
  .card{background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:16px}
  .card + .card{margin-top:14px}
  .mini{font-size:11px; color:var(--muted); display:block; margin-bottom:5px; text-transform:uppercase; letter-spacing:.07em}
  .card input,.card select,.card textarea{width:100%; padding:10px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink)}
  .card input:focus,.card select:focus{outline:none; border-color:var(--blood-2)}
  .grid2{display:grid; grid-template-columns:1fr 1fr; gap:10px}
  .grid3{display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px}
  .inline{display:flex; align-items:center; gap:8px}

  /* day toolbar */
  .daybar{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px}
  .daybar .dsel{display:flex; align-items:center; gap:8px; background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:6px 8px}
  .daybar input[type=date]{background:transparent; border:0; color:var(--ink); font-weight:700}
  .who{font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:.06em}
  .who b{color:var(--gold)}

  /* THE GRID */
  .gridwrap{overflow-x:auto; border:1px solid var(--line); border-radius:var(--r); background:var(--panel)}
  table.grid{border-collapse:collapse; width:100%; min-width:1120px; font-size:13px}
  table.grid th{position:sticky; top:0; background:var(--panel-2); text-align:center; padding:9px 8px; font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; font-weight:700; border-bottom:1px solid var(--line); white-space:nowrap}
  table.grid th.l{text-align:left}
  table.grid td{padding:6px 6px; border-bottom:1px solid var(--line); vertical-align:middle}
  table.grid tr:last-child td{border-bottom:0}
  .cell-in{width:52px; padding:6px; border:1px solid var(--line); border-radius:6px; background:var(--panel-2); color:var(--ink); text-align:center; font-size:13px}
  .cell-in:focus{outline:none; border-color:var(--blood-2)}
  .cell-txt{width:100%; min-width:120px; padding:6px 8px; border:1px solid var(--line); border-radius:6px; background:var(--panel-2); color:var(--ink); font-size:13px}
  .cell-txt:focus{outline:none; border-color:var(--blood-2)}
  /* note cell + expand button */
  .notewrap{display:flex; align-items:stretch; gap:5px; min-width:140px}
  .notewrap .cell-txt{min-width:0; flex:1}
  .noteexp{flex-shrink:0; width:30px; border:1px solid var(--line); border-radius:6px; background:var(--panel-2);
    color:var(--muted); font-size:13px; line-height:1; cursor:pointer; padding:0}
  .noteexp:hover{color:var(--blood-2); border-color:var(--blood-2)}
  .noteexp.hasnote{color:var(--blood-2); border-color:var(--blood)}
  .noteread{display:block; text-align:left; min-width:110px; max-width:190px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  .notearea{width:100%; box-sizing:border-box; min-height:180px; resize:vertical; padding:11px 12px;
    border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink);
    font-size:15px; line-height:1.55; font-family:inherit}
  .notearea:focus{outline:none; border-color:var(--blood-2)}
  .notearea[readonly]{color:var(--muted)}
  .drillsel{width:100%; min-width:170px; padding:7px; border:1px solid var(--line); border-radius:6px; background:var(--panel-2); color:var(--ink); font-size:13px; font-weight:600}
  .drillsel:focus{outline:none; border-color:var(--blood-2)}
  /* Frozen first column (Day Plan only): the drill name stays put while the rest
     of the sheet scrolls sideways, like a spreadsheet freeze pane. */
  table.grid.frz th:first-child, table.grid.frz td:first-child{
    position:sticky; left:0; z-index:2; background:var(--panel);
    box-shadow:7px 0 8px -6px rgba(0,0,0,.7);
    width:148px; min-width:148px; max-width:148px}
  table.grid.frz thead th:first-child{background:var(--panel-2); z-index:4}
  /* Safari drops collapsed borders on sticky cells, so the row lines are drawn in */
  table.grid.frz tbody td:first-child{box-shadow:7px 0 8px -6px rgba(0,0,0,.7), inset 0 -1px 0 var(--line)}
  table.grid.frz tbody tr:last-child td:first-child{box-shadow:7px 0 8px -6px rgba(0,0,0,.7)}
  table.grid.frz td:first-child .drillsel{min-width:0; width:100%}
  table.grid.frz td:first-child > span{display:block; white-space:normal; line-height:1.3; word-break:break-word}
  .auto{display:block; padding:6px 4px; text-align:center; color:var(--muted); background:transparent; font-size:12px; white-space:nowrap}
  /* Goal is a long pass-criteria sentence. Left to itself it stretches the whole
     day grid sideways, so it's held to one short line and opens on tap. */
  .gcell{display:block; max-width:84px; padding:6px 4px; text-align:left; color:var(--muted); font-size:12px;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
  .gcell.tap{cursor:pointer; border-bottom:1px dotted var(--line)}
  .gcell.open{max-width:240px; white-space:normal; color:var(--ink); border-bottom:0}
  th.gtog{cursor:pointer; user-select:none}
  .pill{font-size:10px; padding:3px 9px; border-radius:999px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; white-space:nowrap}
  .p-Driving{background:#3b4a1c; color:#c3f53c}
  .p-Approach{background:#1e3340; color:#7fc4dd}
  .p-Putting{background:#1c3a2e; color:#6fd8ab}
  .p-sg{background:#3d2a1a; color:#e0a26f}
  .p-Performance{background:#2a2740; color:#a9a4e8}
  .p-Technical{background:#1b3733; color:#6ec9c0}
  .p-Practice,.p--{background:#2a323b; color:#98a4b0}
  .p-oncourse{background:#3a3320; color:#dcc463}
  .statusbtn{width:30px; height:30px; border-radius:8px; border:1px solid var(--line); background:var(--panel-2); color:var(--faint); font-size:15px; font-weight:800; line-height:1; cursor:pointer}
  .statusbtn.s-done{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  .statusbtn.s-missed{background:#3d2a1a; color:#e0864f; border-color:#7a4a33}
  .statusflag{font-size:14px; font-weight:800; color:var(--faint)}
  .statusflag.s-done{color:var(--blood-2)}
  .statusflag.s-missed{color:#e0864f}
  .doneflag{color:var(--faint); font-size:14px}
  .doneflag.on{color:var(--fair)}
  .rowdel{background:none; border:0; color:var(--faint); font-size:16px; cursor:pointer; padding:2px 6px}
  .rowdel:hover{color:var(--blood-2)}
  .cbtn{background:none; border:0; color:var(--faint); font-size:13px; cursor:pointer; padding:2px 4px}
  .cbtn:hover{color:var(--blood-2)}
  .cbtn b{color:var(--blood-2); font-size:11px; margin-left:1px}
  .cmodal{position:fixed; inset:0; background:rgba(0,0,0,.6); display:flex; align-items:center; justify-content:center; z-index:80; padding:16px}
  .cbox{background:var(--panel); border:1px solid var(--line); border-radius:12px; width:100%; max-width:440px; max-height:80vh; display:flex; flex-direction:column}
  .chead{display:flex; align-items:flex-start; justify-content:space-between; padding:14px 16px; border-bottom:1px solid var(--line)}
  .cx{background:none; border:0; color:var(--muted); font-size:22px; cursor:pointer; line-height:1}
  .clist{overflow-y:auto; padding:8px 16px; flex:1}
  .citem{padding:10px 0; border-bottom:1px solid var(--line); font-size:14px}
  .citem:last-child{border-bottom:0}
  .cmeta{font-size:12px; color:var(--muted); margin-bottom:3px}
  .cfoot{display:flex; gap:8px; padding:12px 16px; border-top:1px solid var(--line)}
  .cfoot input{flex:1; padding:9px 11px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink)}
  tfoot td{background:var(--panel-2); font-weight:800; padding:10px 8px; border-top:2px solid var(--line); text-align:center}
  tfoot td.l{text-align:left; text-transform:uppercase; letter-spacing:.06em; font-size:12px; color:var(--gold)}

  .gridtools{display:flex; gap:8px; margin-top:12px; flex-wrap:wrap}
  .savebar{display:flex; align-items:center; gap:10px; margin-top:12px}
  .savestate{font-size:12px; color:var(--muted)}

  .row-item{display:flex; align-items:center; gap:10px; padding:11px 0; border-bottom:1px solid var(--line)}
  .row-item:last-child{border-bottom:0}
  .row-item .name{flex:1; font-size:14px}
  .row-item .name small{display:block; color:var(--muted); font-size:12px}
  .empty{text-align:center; color:var(--muted); font-size:14px; padding:30px 12px; border:1px dashed var(--line); border-radius:var(--r)}
  .stat-row{display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:16px}
  .stat{background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:14px 12px}
  .stat .n{font-family:"Archivo"; font-weight:900; font-size:26px; letter-spacing:-.02em}
  .stat .l{font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; margin-top:2px}
  .barwrap{margin:10px 0}
  .barwrap .lab{display:flex; justify-content:space-between; font-size:12px; margin-bottom:5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted)}
  .bar{height:10px; background:var(--panel-2); border-radius:2px; overflow:hidden; border:1px solid var(--line)}
  .bar > i{display:block; height:100%; background:var(--blood-2)}
  .flash{position:fixed; left:50%; bottom:24px; transform:translateX(-50%); background:var(--blood-2); color:var(--lime-ink); padding:11px 20px; border-radius:8px; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; opacity:0; transition:opacity .2s; z-index:60}
  .flash.show{opacity:1}
  .load{text-align:center; padding:44px; color:var(--muted); text-transform:uppercase; letter-spacing:.1em; font-size:12px}
  .sfil.on,.cwin.on,.rv.on,.tcat.on,.lcat.on,.lwk.on,.cmpmode.on{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  .heatcell{border-radius:4px; padding:7px 4px; text-align:center; color:#0b0b0c; font-weight:800; font-size:11px}
  .rvbar{overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; flex-wrap:nowrap}
  .rvbar .btn{flex:0 0 auto; white-space:nowrap}
  .rvbar::-webkit-scrollbar{display:none}

  @media (max-width:520px){
    .stat-row{grid-template-columns:repeat(2,1fr)}
    .authcard h1{font-size:36px}
  }
  @media (max-width:760px){
    /* tabs scroll rather than squash */
    nav.tabs{overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none}
    nav.tabs::-webkit-scrollbar{display:none}
    nav.tabs button{flex:0 0 auto; white-space:nowrap}
    /* toolbars wrap more kindly */
    .daybar{gap:8px}
    .daybar .dsel{padding:5px 7px}
    .wrap{padding:0 12px}
    .sec-h h2{font-size:19px}
    .cbox{max-height:88vh}
  }

  /* training load + drill rotation */
  .clist input,.clist select{width:100%; padding:10px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink)}
  .clist input[type=checkbox]{width:auto}
  .ld-head{display:flex; align-items:flex-start; gap:14px; margin-bottom:14px}
  .ld-word{font-family:"Archivo",sans-serif; font-weight:900; font-size:26px; line-height:1; text-transform:uppercase; letter-spacing:-.01em}
  .ld-ratio{margin-left:auto; text-align:right; flex-shrink:0}
  .ld-ratio .n{font-family:"Archivo"; font-weight:900; font-size:26px; letter-spacing:-.02em; line-height:1}
  .ld-ratio .l{font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; margin-top:3px}
  .ld-bars{display:flex; align-items:flex-end; gap:2px; height:64px; margin-bottom:5px}
  .ld-bars i{flex:1; min-width:0; border-radius:2px 2px 0 0; background:var(--line); display:block}
  .ld-scale{display:flex; justify-content:space-between; font-size:10px; color:var(--faint); text-transform:uppercase; letter-spacing:.06em}
  .ld-note{font-size:12.5px; color:var(--muted); margin:12px 0 0; line-height:1.55}
  .rot-gap{font-size:12px; font-weight:800; flex:0 0 auto; text-align:right}

  /* ---------- Team Fitz additions ---------- */
  .mark .logo{width:30px; height:30px; border-radius:8px; display:block}
  .authlogo{width:52px; height:52px; border-radius:13px; display:block; margin-bottom:18px}
  .muted{color:var(--muted)}
  .small{font-size:12px}
  .kicker.lime{color:var(--blood-2)}
  p.kicker{margin:0 0 10px}
  .today{padding-top:6px}
  .today-head h1{font-size:30px; line-height:1.05; letter-spacing:-.02em; margin:2px 0 4px}
  .today-head .sub{color:var(--muted); font-size:14px; margin:0 0 16px}
  .today-head .kicker{color:var(--muted); letter-spacing:.18em; margin-bottom:6px}
  .proto-card{border-color:var(--blood-2); margin-bottom:22px}
  .proto-list{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
  .proto-list li{display:flex; flex-direction:column; gap:2px}
  .proto-list li span{color:var(--muted); font-size:13px}
  .proto-row{display:flex; gap:12px; align-items:flex-start}
  .proto-row.off{opacity:.55}
  .team-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px}
  @media (max-width:720px){ .team-grid{grid-template-columns:minmax(0,1fr)} }
  .field textarea{width:100%; background:var(--panel-2); border:1px solid var(--line); color:var(--ink); border-radius:8px; padding:10px 12px; resize:vertical}

  /* ---------- Gym ---------- */
  .g-days{gap:6px}
  .g-sess{margin-bottom:14px}
  .g-sess .field input,.g-sess .field select{padding:10px 12px}
  .g-item + .g-item{margin-top:12px}
  .g-head{display:flex; align-items:flex-start; gap:10px}
  .g-slot{flex:0 0 auto; min-width:34px; text-align:center; padding:4px 6px; border-radius:6px; background:var(--blood-soft); color:var(--blood-2); font-weight:800; font-size:12px}
  .g-name{font-weight:800; font-size:15px; line-height:1.3}
  .g-chips{display:flex; flex-wrap:wrap; gap:4px; margin-top:5px}
  .g-chips span{font-size:10.5px; padding:2px 8px; border-radius:999px; border:1px solid var(--line); color:var(--muted); white-space:nowrap}
  .g-presc{margin-top:8px; font-size:13px; font-weight:700}
  .g-note{margin-top:4px; font-size:12.5px; color:var(--muted)}
  .g-past{display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:8px; padding:8px 10px; border-radius:8px; background:var(--panel-2); font-size:12px; color:var(--muted)}
  .g-past b{color:var(--ink); font-weight:700; margin-right:4px}
  .g-setwrap{margin-top:10px; overflow-x:auto; -webkit-overflow-scrolling:touch}
  .g-sets{display:grid; grid-auto-flow:column; grid-template-rows:repeat(5,auto); grid-template-columns:58px; grid-auto-columns:minmax(58px,1fr); gap:6px; align-items:center}
  .g-col{display:contents}
  .g-col .cell-in{width:100%; min-height:40px; font-size:15px}
  .g-lab span{font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.06em}
  .g-sn{text-align:center; font-weight:800; color:var(--muted); font-size:13px}
  .g-item{border-top-width:3px}
  .g-item.g-newgroup{margin-top:22px}
  .g-sessgrid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px}
  .g-sessgrid .field{margin:0}
  @media (max-width:520px){ .g-sessgrid{grid-template-columns:minmax(0,1fr)} }
  .g-after-card{margin-top:16px}
  .g-after-card textarea{width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink); resize:vertical}
  .g-dayhead{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:10px}
  .card .g-dayhead input{width:auto; padding:9px 11px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink)}
  table.g-ptable{table-layout:fixed}
  table.g-ptable .cell-in, table.g-ptable .cell-txt{width:100%; min-width:0}
  .card .g-daytitle{flex:1 1 200px; min-width:0; font-weight:700}
  .g-dayedit + .g-dayedit{margin-top:14px}
  .g-exrow{display:flex; gap:12px; align-items:flex-start}
  .g-exrow + .g-exrow{margin-top:8px}
  .g-off{opacity:.55}

  /* ---------- Recovery ---------- */
  .rec-line{display:flex; gap:12px; align-items:center; margin-bottom:22px}
  .rec-dot{width:10px; height:10px; border-radius:50%; flex-shrink:0}
  .rec-warn{border-color:#7a4a33}
  .rec-flags{margin:8px 0 0; padding-left:18px; color:#f0c2ab; font-size:14px}
  .rec-flags li + li{margin-top:3px}
  .rec-u{font-size:13px; font-weight:700; color:var(--muted)}
  .rec-usual{font-size:11px; color:var(--muted); margin-top:4px}
  .stat.rec-out{border-color:#7a4a33}
  .stat.rec-out .n{color:#e0a26f}
  .rec-chart + .rec-chart{margin-top:12px}
  .rec-svg{width:100%; height:auto; display:block}
  .rec-ax{font-size:13px; fill:#8b97a3; font-family:inherit}
  .rec-tiles{display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px}
  .rec-tiles .stat .n{font-size:24px}
  @media (max-width:720px){ .rec-tiles{grid-template-columns:repeat(2,minmax(0,1fr))} .rec-tiles .stat:first-child{grid-column:1 / -1} }
  .rec-val{fill:#eef2f0; font-weight:700}
  .g-day-done:not(.btn-primary){border-color:var(--blood); color:var(--blood-2)}
  .g-donebar{display:flex; gap:10px; align-items:center; padding:10px 14px; margin-bottom:12px; border-radius:var(--r); background:var(--blood-soft); border:1px solid var(--blood); color:var(--ink); font-size:14px}
  .g-tick{display:inline-flex; width:24px; height:24px; border-radius:50%; align-items:center; justify-content:center; background:var(--blood-2); color:var(--lime-ink); font-weight:900}
  .g-donechk{display:flex; gap:8px; align-items:center; margin-top:12px; font-weight:700}
  .g-donechk input{width:auto}
  .g-donepill{font-size:11px; font-weight:800; padding:4px 10px; border-radius:999px; background:var(--blood-soft); color:var(--blood-2); border:1px solid var(--blood); text-transform:uppercase; letter-spacing:.05em}
  .t-start{display:flex; align-items:center; gap:10px; padding:10px 14px; margin-bottom:14px}
  .t-start label{font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted)}
  .card.t-start select{width:auto; flex:0 1 140px; padding:8px 10px}

  /* ---------- Alarm (your Alarm app, embedded) ---------- */
  .a-today{margin-bottom:12px}
  .alarm-frame{display:block; width:100%; border:0; border-radius:var(--r); background:var(--bg)}
  .t-keys{margin-bottom:14px}
  .t-keygrid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px}
  .t-keygrid div{background:var(--panel-2); border-radius:8px; padding:8px 10px}
  .t-keygrid span{display:block; font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em}
  .t-keygrid b{font-size:18px}
  .t-keygrid .t-tee{background:var(--blood-soft); border:1px solid var(--blood)}
  .t-keygrid .t-tee b{color:var(--blood-2)}
  @media (max-width:520px){ .t-keygrid{grid-template-columns:repeat(2,minmax(0,1fr))} }
  @media (max-width:760px){ .alarm-frame{width:calc(100% + 24px); margin:0 -12px; border-radius:0} }
  .g-warm + .g-warm{margin-top:10px}
  .g-warm summary{cursor:pointer; list-style:none; display:flex; align-items:baseline; gap:6px; min-height:28px}
  .g-warm summary::-webkit-details-marker{display:none}
  .g-warm summary::before{content:"▸"; color:var(--blood-2); margin-right:4px}
  .g-warm[open] summary::before{content:"▾"}
  .g-warmrow{display:flex; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--line); font-size:14px}
  .g-warmrow:last-child{border-bottom:0}
  .g-warmrow b{flex:0 0 auto; max-width:45%; text-align:right; color:var(--muted); font-weight:700; font-size:13px}

  /* ---------- Menu (three lines → list of sections) ---------- */
  .menu-btn{display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; border-radius:10px; border:1px solid var(--line); background:var(--panel); color:var(--ink); flex:0 0 auto}
  .menu-btn.open{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  .menu-title{font-size:20px; font-weight:800; letter-spacing:-.01em; margin:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0}
  header .wrap{gap:12px}
  .menu-wrap{position:absolute; left:0; right:0; top:100%; background:var(--bg); border-bottom:1px solid var(--line); box-shadow:0 18px 30px rgba(0,0,0,.45); max-height:calc(100vh - 80px); overflow-y:auto}
  .menu-wrap[hidden]{display:none}
  nav.tabs.menu{display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:6px; padding:12px 0 16px; border-bottom:0; overflow:visible}
  nav.tabs.menu button{text-align:left; padding:13px 14px; font-size:13px; min-height:46px; background:var(--panel); border:1px solid var(--line); color:var(--ink); white-space:normal; flex:initial}
  nav.tabs.menu button.on{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  @media (max-width:520px){ nav.tabs.menu{grid-template-columns:repeat(2,minmax(0,1fr))} .menu-title{font-size:18px} }
  .eq-latest{border-color:var(--blood)}
  .eq-row{display:flex; gap:10px; align-items:center}
  .eq-row + .eq-row{margin-top:8px}

  /* ---------- Team (collapsible people) ---------- */
  .t-person + .t-person{margin-top:8px}
  .t-person summary{list-style:none; cursor:pointer; display:flex; align-items:center; gap:10px; min-height:40px}
  .t-person summary::-webkit-details-marker{display:none}
  .t-person summary::before{content:"▸"; color:var(--blood-2); flex:0 0 auto}
  .t-person[open] summary::before{content:"▾"}
  .t-sum-main{flex:1; min-width:0; display:flex; flex-direction:column; gap:1px}
  .t-sum-main b{white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
  .t-status{flex:0 0 auto; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; padding:4px 9px; border-radius:999px; border:1px solid var(--line)}
  .t-status.t-on{color:var(--blood-2); border-color:var(--blood); background:var(--blood-soft)}
  .t-status.t-wait{color:#7fc4dd; border-color:#2b4a58}
  .t-status.t-off{color:#e0864f; border-color:#7a4a33}
  .t-body{margin-top:14px; padding-top:14px; border-top:1px solid var(--line)}
  .t-access{display:flex; gap:8px; align-items:center; font-weight:700; margin-top:4px}
  .card .t-access input, .card .t-sec input{width:auto}
  .t-secs{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:8px; align-items:start}
  .t-group{display:flex; flex-direction:column; gap:6px}
  .t-subs{display:flex; flex-wrap:wrap; gap:6px; padding-left:14px; border-left:2px solid var(--line); margin-left:10px}
  .t-subsec{display:flex; gap:6px; align-items:center; padding:6px 9px; border:1px solid var(--line); border-radius:999px; font-size:12px; color:var(--muted); cursor:pointer; min-height:34px}
  .card .t-subsec input{width:auto; accent-color:#c3f53c}
  .t-group-off .t-subs{opacity:.35}
  .t-sec{display:flex; gap:8px; align-items:center; padding:9px 11px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); font-size:14px; cursor:pointer; min-height:42px}
  .t-sec.t-fixed{opacity:.6; cursor:default}
  .t-foot{display:flex; justify-content:flex-end; margin-top:14px}
  @media (max-width:520px){ .t-secs{grid-template-columns:minmax(0,1fr)} .t-count{display:none} }
  .t-add summary b{color:var(--blood-2)}
  .t-sec input, .t-access input, .g-donechk input{accent-color:#c3f53c}
  .t-titlerow{display:flex; align-items:center; gap:10px}
  .t-titlerow h1{flex:1; min-width:0}
  .t-share{display:inline-flex; align-items:center; gap:6px; flex:0 0 auto}
  .hp-chips{display:flex; flex-wrap:wrap; gap:6px; margin-top:6px}
  .hp-chip{font-size:12px; padding:3px 9px; border-radius:999px; background:var(--panel-2); border:1px solid var(--line); color:var(--ink)}
  .hp-chip b{color:var(--muted); font-weight:700; margin-right:2px}
  .hp-day + .hp-day{margin-top:8px}
  .hp-dayhead{display:flex; align-items:baseline; gap:14px; flex-wrap:wrap}
  .hp-dayhead > b{flex:1; min-width:110px}
  .stat.hp-noisy{border-color:#3a3f42}
  .stat.hp-noisy .n{color:var(--faint)}
  .bp-bar{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:10px}
  .bp-bar select{flex:1 1 180px; min-width:0; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:var(--panel); color:var(--ink)}
  .t-wide summary b{color:var(--blood-2)}
  .tw-row{padding:10px 0; border-bottom:1px solid var(--line)}
  .tw-row:last-of-type{border-bottom:0}
  .tw-head{display:flex; align-items:center; justify-content:space-between; gap:10px}
  .tw-switch{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--muted); cursor:pointer}
  .card .tw-switch input{width:auto; accent-color:#c3f53c}
  .tw-allow{display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:8px}
  .tw-allow[hidden]{display:none}
  .card .tw-allow input{width:auto; accent-color:#c3f53c}
  .t-teamoff{font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:#e0864f; margin-left:4px}

  /* ---------- Protocols (week timeline, IF → THEN) ---------- */
  .lime-t{color:var(--blood-2)}
  .pr-how{display:flex; flex-direction:column; gap:4px; background:var(--blood-soft); border:1px solid var(--blood); border-radius:12px; padding:11px 13px; font-size:13px; line-height:1.45; margin-bottom:10px}
  .pr-key{display:flex; flex-wrap:wrap; gap:6px 12px; margin:0 0 12px; font-size:11px; color:var(--muted)}
  .pr-key span{display:inline-flex; align-items:center; gap:5px}
  .pr-key i{width:8px; height:8px; border-radius:2px; display:inline-block}
  .pr-line{position:relative; display:flex; flex-direction:column; gap:14px}
  .pr-line::before{content:""; position:absolute; left:7px; top:8px; bottom:8px; width:2px; background:var(--line)}
  .pr-stage{position:relative; padding-left:24px; display:flex; flex-direction:column; gap:7px}
  .pr-node{position:absolute; left:1px; top:3px; width:12px; height:12px; border-radius:50%; background:var(--bg); border:2px solid var(--blood-2)}
  .pr-stage-t{font-size:12px; font-weight:800; color:var(--blood-2); text-transform:uppercase; letter-spacing:.08em}
  .pr-item{display:flex; gap:10px; align-items:flex-start; width:100%; text-align:left; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:10px 12px; color:var(--ink); font:inherit; cursor:pointer}
  .pr-item:hover{border-color:var(--faint)}
  .pr-open{cursor:default; border-color:var(--c); padding:12px 13px}
  .pr-stripe{width:4px; align-self:stretch; border-radius:2px; background:var(--c); flex-shrink:0}
  .pr-txt{flex:1; min-width:0; display:flex; flex-direction:column; gap:3px}
  .pr-if{font-size:12.5px; color:var(--muted); line-height:1.35}
  .pr-if b{color:var(--c); font-size:10px; font-weight:900; letter-spacing:.06em; margin-right:6px}
  .pr-then{font-size:15px; font-weight:700; line-height:1.3}
  .pr-then b{color:var(--blood-2); font-size:10px; font-weight:900; letter-spacing:.06em; margin-right:6px}
  .pr-then-big{font-size:18px; font-weight:800; margin-top:2px}
  .pr-chev{color:var(--muted); font-size:18px; align-self:center}
  .pr-pills{display:flex; flex-wrap:wrap; gap:6px; margin-top:5px}
  .pr-pill{font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; padding:2px 8px; border-radius:999px; border:1px solid var(--line); color:var(--muted)}
  .pr-auto{color:var(--blood-2); border-color:var(--blood)}
  .pr-trial{color:#dcc463; border-color:#5a4f22}
  .pr-h{font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin:12px 0 4px}
  .pr-steps{margin:0; padding-left:18px; font-size:14px; line-height:1.55}
  .pr-meta{display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:10px; font-size:12px; color:var(--muted)}
  .pr-meta b{color:var(--ink)}
  .pr-c-strong{color:var(--blood-2)!important} .pr-c-moderate{color:#7fc4dd!important} .pr-c-trial{color:#dcc463!important} .pr-c-agreed{color:#a9a4e8!important}
  .pr-why{font-size:13.5px; line-height:1.5}
  .pr-more{margin-top:8px; font-size:12.5px; color:var(--muted)}
  .pr-more summary{cursor:pointer; color:var(--blood-2); font-weight:700; font-size:12px}
  .pr-more div{margin-top:6px; line-height:1.5}
  .pr-foot{display:flex; justify-content:space-between; align-items:center; gap:8px; margin-top:12px; flex-wrap:wrap}
  .pr-foot > span:last-child{display:flex; gap:6px}
  .pr-retired{opacity:.5}
  .pr-edit{border-color:var(--blood)}
  .proto-if{display:block; font-size:11.5px; color:var(--muted)}

  /* ---------- To-do ---------- */
  .td-add{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
  .card.td-add input{flex:1 1 180px; width:auto}
  .card.td-add input[type=date]{flex:0 1 160px}
  .td-row{display:flex; gap:12px; align-items:flex-start}
  .td-row + .td-row{margin-top:8px}
  .td-check{padding-top:2px}
  .card .td-check input{width:22px; height:22px; accent-color:#c3f53c}
  .td-meta{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:6px; font-size:12px; color:var(--muted)}
  .td-late{color:#e0864f; font-weight:700}
  .td-done{opacity:.5}
  .td-done b{text-decoration:line-through}
  .td-today{text-decoration:none; color:var(--ink); margin-bottom:12px}
  /* ---------- Sunday review ---------- */
  .rv-row{display:flex; gap:10px; align-items:center}
  .rv-row + .rv-row{margin-top:8px}
  .flash{pointer-events:none}
  .pl-card + .pl-card{margin-top:10px}
  .pl-li{font-size:13.5px; line-height:1.45; margin-top:4px}
  .pl-md{font-size:13px; line-height:1.5; color:var(--ink)}
  .pl-md p{margin:6px 0}
  .pl-h3{display:block; margin-top:8px}
  .pl-admin{margin-top:10px}
  .pl-steps{margin:10px 0; padding-left:20px; font-size:13.5px; line-height:1.5}
  .pl-steps code{font-size:12px; color:var(--blood-2)}
  .t-start{flex-wrap:wrap}
  .t-start-need{border-color:var(--blood)}
  .t-tm-info{flex-basis:100%}
  .rv-season{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:12px}
  .rv-season select{flex:1 1 150px; min-width:0; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink)}
  .dr-row{display:flex; gap:10px; align-items:center}
  .dr-row + .dr-row{margin-top:8px}
  .dr-btns{display:flex; gap:6px; flex:0 0 auto}
  .dr-st{font:inherit; font-size:12px; font-weight:800; padding:8px 10px; border-radius:8px; border:1px solid var(--line); background:var(--panel-2); color:var(--muted); cursor:pointer; min-height:38px}
  .dr-st.on.s-done{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  .dr-st.on.s-missed{background:#5a2f22; color:#ffd5c2; border-color:#e0864f}
  .dr-rate{display:flex; gap:8px}
  .dr-r{font:inherit; font-weight:800; width:44px; height:44px; border-radius:10px; border:1px solid var(--line); background:var(--panel-2); color:var(--ink); cursor:pointer}
  .dr-r.on{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  .nt-row{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 0; border-bottom:1px solid var(--line)}
  .nt-on{display:flex; align-items:center; gap:8px; font-size:14px; flex:1; min-width:0}
  .card .nt-on input{width:auto; accent-color:#c3f53c}
  .card .nt-row select{width:auto; flex:0 0 auto; padding:7px 9px}
  .rv-result{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
  .card .rv-result input, .rv-result input{width:110px; flex:0 0 auto; text-transform:uppercase}
  .rv-place{font-size:20px; font-weight:900; color:var(--blood-2)}
  .sec-bar{flex-wrap:wrap}
  .cn-row{display:flex; gap:10px; align-items:center}
  .cn-row + .cn-row{margin-top:8px}
  .cn-when{font-size:12px; color:var(--blood-2); margin-top:4px}
  .cn-off{opacity:.55}
  .cn-switch{display:flex; align-items:center; gap:6px; font-size:12px; color:var(--muted)}
  .card .cn-switch input{width:auto; accent-color:#c3f53c}
  .cn-edit{border-color:var(--blood); margin-bottom:12px}
  .cn-days{display:flex; flex-wrap:wrap; gap:6px; margin:-4px 0 12px}
  .cn-days[hidden],.cn-date[hidden]{display:none}
  .card .cn-days input{width:auto; accent-color:#c3f53c}
  .td-main{cursor:pointer}
  .td-bell{font-size:11px; color:var(--blood-2)}
  .td-wk{display:flex; justify-content:space-between; align-items:center; gap:8px; margin:20px 0 8px; padding-bottom:6px; border-bottom:1px solid var(--line)}
  .td-form{border-color:var(--blood); margin-top:10px}
  .td-form + .td-row, .td-row + .td-form{margin-top:8px}

  /* ---------- Inbox ---------- */
  .ib-row{display:flex; gap:12px; align-items:center; width:100%; text-align:left; font:inherit; color:var(--ink); cursor:pointer; position:relative}
  .ib-row + .ib-row{margin-top:8px}
  .ib-unread{border-color:var(--blood)}
  .ib-thumb{width:56px; height:56px; object-fit:cover; border-radius:8px; flex:0 0 auto; background:var(--panel-2)}
  .ib-txt{flex:1; min-width:0; display:flex; flex-direction:column; gap:3px}
  .ib-top{display:flex; align-items:center; gap:6px; flex-wrap:wrap}
  .ib-body{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  .ib-dot{width:10px; height:10px; border-radius:50%; background:var(--blood-2); flex:0 0 auto}
  .ib-compose{border-color:var(--blood); margin-bottom:12px}
  .ib-for{display:flex; flex-wrap:wrap; gap:6px}
  .card .ib-for input{width:auto; accent-color:#c3f53c}
  .ib-previews{display:flex; gap:6px; flex-wrap:wrap}
  .ib-text{margin-top:8px; line-height:1.5; white-space:pre-line}
  .ib-photos{display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:6px; margin-top:10px}
  .ib-photos img{width:100%; border-radius:8px; display:block}
  .ib-reply{margin-top:8px}
  .ib-mine{border-color:var(--line); background:var(--panel-2)}
  .ib-reply .rowdel{margin-left:auto}
  .ib-replybox{margin-top:12px}
  .menu-btn{position:relative}
  .mb-badge{position:absolute; top:-5px; right:-5px; min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:#e0864f; color:#fff; font-size:11px; font-weight:800; display:flex; align-items:center; justify-content:center}
  @media (max-width:520px){ .rolechip{display:none} }
  .ib-who{display:flex; flex-direction:column; gap:6px}
  .ib-person{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:6px 0; border-bottom:1px solid var(--line)}
  .card .ib-person select{width:auto; flex:0 0 auto; padding:7px 9px; font-size:13px}
  .ib-for[hidden]{display:none}
  .card .ib-for input{width:auto; accent-color:#c3f53c}
  .ib-lab{display:flex; justify-content:space-between; align-items:center; font-size:11px; font-weight:800; letter-spacing:.1em; color:var(--muted); text-transform:uppercase; margin:10px 0 6px}
  .ib-lab:first-child{margin-top:0}
  .ib-chips{display:flex; flex-wrap:wrap; gap:6px; align-items:center}
  .ib-chip{font:inherit; font-size:13px; font-weight:700; padding:7px 11px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--muted); cursor:pointer; min-height:34px}
  .ib-chip.on-n{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  .ib-chip.on-s{border:1.5px solid var(--blood-2); color:var(--blood-2)}
  .ib-group{border-radius:10px}
  .ib-link{font:inherit; font-size:12px; font-weight:800; color:var(--blood-2); background:none; border:0; cursor:pointer; padding:4px 2px; letter-spacing:0; text-transform:none}
  .ib-gline{display:flex; justify-content:space-between; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--line)}
  .card #ib-gname{width:100%}
  .tw-mine{border-color:var(--blood)}
  .tw-note{margin-top:8px}
  .tw-rating{font-size:12px; font-weight:900; color:var(--lime-ink); background:var(--blood-2); padding:2px 8px; border-radius:999px}
  .pl-head{display:flex; gap:10px; align-items:center; width:100%; text-align:left; background:none; border:0; padding:0; font:inherit; color:var(--ink); cursor:pointer}
  .pl-chev{color:var(--blood-2); font-size:16px; flex:0 0 auto}
  .pl-bar{display:flex; justify-content:space-between; align-items:center; margin:-4px 0 8px}
  .pl-card{padding-top:12px; padding-bottom:12px}
  .td-wk > span{flex:1; min-width:0}
  .td-season{flex:0 0 auto; white-space:nowrap; min-width:96px; text-align:center}
  /* date boxes: stay inside their card on iPhone */
  .field{min-width:0}
  input[type=date], input[type=time]{-webkit-appearance:none; appearance:none; display:block; width:100%; max-width:100%; min-width:0; box-sizing:border-box; min-height:44px; text-align:left}
  input[type=date]::-webkit-date-and-time-value{text-align:left}
  .rec-topbar{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:12px; padding:10px 12px; border:1px solid var(--line); border-radius:12px; background:var(--panel)}
  .card input, .card select, .card textarea{max-width:100%}
  .si-prev{margin-top:8px; font-size:12.5px; line-height:1.6; color:var(--muted)}
  .si-prev b{color:var(--ink)}
  .pl-mode{display:inline-flex; margin-top:10px; border:1px solid var(--line); border-radius:9px; overflow:hidden}
  .pl-mbtn{font:inherit; font-size:12px; font-weight:800; padding:7px 12px; background:transparent; color:var(--muted); border:0; cursor:pointer}
  .pl-mbtn.on{background:var(--blood-2); color:var(--lime-ink)}
  .pl-tx{margin-top:10px; max-height:60vh; overflow-y:auto; border:1px solid var(--line); border-radius:10px; padding:8px 10px; background:var(--panel-2)}
  .pl-tl{display:grid; grid-template-columns:44px 1fr; gap:8px; font-size:13.5px; line-height:1.45; padding:4px 0; border-bottom:1px solid var(--line)}
  .pl-tl:last-child{border-bottom:0}
  .pl-tt{color:var(--faint); font-size:11.5px; padding-top:2px; font-variant-numeric:tabular-nums}
  .mo-list{padding:4px 14px}
  .mo-row{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--line)}
  .mo-row:last-child{border-bottom:0}
  .mo-fixed{opacity:.6}
  .mo-btns{display:flex; gap:6px}
  .mo-b{font:inherit; font-size:16px; font-weight:800; width:40px; height:36px; border-radius:8px; border:1px solid var(--line); background:var(--panel-2); color:var(--ink); cursor:pointer}
  .mo-b:disabled{opacity:.3; cursor:default}
  .dr-q .field{margin-bottom:10px}
  .dr-ro{margin-bottom:8px; line-height:1.45}
  .dr-ro span{display:block; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--muted)}
  .dr-done{font-size:11px; color:var(--blood-2); letter-spacing:0}
  .rv-debrief{display:flex; gap:10px; align-items:center; margin:12px 0}
  .rv-missing{border-color:#7a4a33}
  .dbf-ok{color:var(--blood-2)} .dbf-no{color:#e0864f}
  .rv-round{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:6px}
  .tt-row{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--line)}
  .card .tt-row select{width:auto; flex:0 0 auto; padding:7px 9px}
  .tt-week{border:1px dashed var(--line); border-radius:12px; padding:12px}
  .tt-week.on{border:1px solid var(--blood); background:var(--blood-soft)}
  .nt-wline{display:grid; grid-template-columns:120px 1fr; gap:8px; font-size:13px; line-height:1.4; padding:6px 0; border-bottom:1px solid var(--line)}
  .nt-wline b{font-size:12.5px}
  .nt-wline span{color:var(--muted)}
  .ib-chip.nt-off{border-style:dashed; color:var(--faint)}
  .n8{margin-bottom:12px}
  .n8-head{display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:8px}
  .n8-row{display:grid; grid-template-columns:58px 1fr auto; gap:8px; align-items:baseline; padding:6px 0; border-bottom:1px solid var(--line); font-size:14px}
  .n8-row:last-of-type{border-bottom:0}
  .n8-row > span:first-child{color:var(--muted); font-size:12.5px}
  .n8-row b{font-weight:600; color:var(--muted)}
  .n8-t b{color:var(--ink); font-weight:800}
  .n8-auto{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:10px; padding-top:10px; border-top:1px solid var(--line)}
  .card .n8-auto select{width:auto; padding:6px 8px; font-size:13px}
  /* gym: day title + date row, last change, autosave, warm-up editor */
  .card .g-dayhead .g-daydate{flex:0 0 160px; width:160px; min-width:150px}
  .g-lastedit{display:flex; flex-direction:column; gap:3px; padding:10px 14px; margin-bottom:12px; font-size:13px}
  tr.g-unknown .g-ex-in{border-color:#e0864f}
  .g-autosave{justify-content:space-between}
  .gw-form{border-color:var(--blood); margin-bottom:12px}
  .gw-sec{border-top:1px solid var(--line); padding-top:10px; margin-top:10px}
  .gw-sechead{display:flex; gap:8px; align-items:center; margin-bottom:6px}
  .card .gw-sechead input{font-weight:800; text-transform:uppercase; letter-spacing:.06em; font-size:12px}
  .gw-item{display:grid; grid-template-columns:minmax(0,1fr) 110px auto; gap:6px; align-items:center; margin-top:6px}
  .gw-ops{display:flex; gap:2px}
  @media (max-width:520px){ .gw-item{grid-template-columns:minmax(0,1fr) 90px} .gw-ops{grid-column:1 / -1; justify-content:flex-end} }
  /* phones: 16px text in boxes, so tapping a box doesn't zoom the page */
  @media (pointer:coarse){ input, select, textarea, .cell-in, .cell-txt{font-size:16px !important} }
  .eq-upload{border-color:var(--blood)}
  .eq-top{display:flex; align-items:center; gap:8px}
  .eq-notes{font-size:13.5px; line-height:1.45; margin-top:5px; white-space:pre-line}
  .eq-actions{display:flex; gap:6px; align-items:center; flex:0 0 auto}
  .eq-row{align-items:flex-start}
  /* no double-tap zoom (pinch still works) */
  html, body{touch-action:manipulation; -webkit-text-size-adjust:100%}
  input, textarea, select, button{touch-action:manipulation}
  .updbar{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 16px; background:var(--blood-soft); border-bottom:1px solid var(--blood); font-size:13px}
  .updbar[hidden]{display:none}
  .vcard{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:18px}
  /* day plan: drill picker (section tiles) */
  .drillpick{font:inherit; font-size:14px; width:100%; min-width:180px; text-align:left; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); color:var(--ink); cursor:pointer; display:flex; align-items:center; gap:6px}
  .drillpick.empty{color:var(--muted)}
  .dp-caret{margin-left:auto; color:var(--muted); font-size:11px}
  .dp-tiles{display:grid; grid-template-columns:1fr 1fr; gap:10px}
  .dp-tile{font:inherit; text-align:left; border:1px solid rgba(255,255,255,.08); border-radius:12px; padding:14px 12px; min-height:78px; display:flex; flex-direction:column; justify-content:space-between; cursor:pointer}
  .dp-tname{font-size:15.5px; font-weight:800}
  .dp-count{font-size:12px; color:var(--muted)}
  .dp-sechead{display:flex; align-items:center; gap:8px; margin-bottom:8px}
  .dp-drill{font:inherit; width:100%; display:flex; align-items:center; gap:10px; text-align:left; padding:12px 4px; background:none; border:0; border-bottom:1px solid var(--line); color:var(--ink); cursor:pointer; font-size:15px}
  .dp-drill.on{color:var(--blood-2); font-weight:700}
  .dp-box{max-height:86vh}
  .drillpick{min-width:0; max-width:100%; overflow:hidden}
  .drillpick > :first-child, .drillpick{white-space:nowrap; text-overflow:ellipsis}
  #rows td:first-child{min-width:200px; max-width:260px}
  .dp-modal{align-items:flex-start; padding-top:calc(env(safe-area-inset-top,0px) + 76px)}
  .dp-modal .dp-box{max-height:calc(100vh - env(safe-area-inset-top,0px) - 100px); margin-top:0}
  .g-warm summary{display:flex; align-items:center; gap:6px}
  .g-warm summary .gw-edit{flex:0 0 auto}
  /* physio: tap body areas */
  .ph-body{display:flex; flex-direction:column; gap:10px}
  .ph-grp{display:flex; flex-wrap:wrap; gap:6px; align-items:center}
  .ph-gname{flex-basis:100%; font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--muted)}
  .ph-area{display:inline-flex; align-items:center; gap:3px; border:1px solid var(--line); border-radius:999px; padding:2px 3px 2px 10px; font-size:13px}
  .ph-t{font:inherit; font-size:12px; font-weight:800; min-width:30px; height:28px; border-radius:999px; border:1px solid var(--line); background:var(--panel-2); color:var(--muted); cursor:pointer; padding:0 8px}
  .ph-solo{font-size:13px; height:32px; padding:0 12px}
  .ph-t.on{background:var(--blood-2); color:var(--lime-ink); border-color:var(--blood-2)}
  .ph-filter{display:flex; flex-wrap:wrap; gap:6px; margin:-4px 0 10px}
  .ph-f{font:inherit; font-size:12px; font-weight:700; padding:6px 10px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--muted); cursor:pointer}
  .ph-f b{color:var(--ink); margin-left:2px}
  .ph-f.on{border-color:var(--blood-2); color:var(--blood-2)}
  .pill.ph-bodypill{background:#3a2330; color:#f0a8c8}
  .prevbar{background:#e0864f; color:#16191d; font-size:11.5px; font-weight:900; letter-spacing:.08em; text-align:center; padding:5px 10px}
