/* Phase 2 per-tab layouts (app session). Uses only the variables and glass cards from theme-dark.css. */
/* ===== Everywhere: sync chip + coach badge ===== */
.syncchip{position:absolute;right:56px;top:calc(14px + env(safe-area-inset-top));display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted);background:rgba(21,29,38,.72);border:1px solid rgba(230,237,243,.10);border-radius:999px;padding:4px 10px;cursor:pointer;font-family:inherit;max-width:42vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.syncchip i{width:8px;height:8px;border-radius:50%;background:var(--green);flex:none}.syncchip.bad i{background:var(--red)}.syncchip.off i{background:var(--rest)}.syncchip.bad{color:var(--ink);border-color:var(--red)}
@media (min-width:900px){.syncchip{top:16px;right:76px}}
nav button{position:relative}.nbadge{position:absolute;top:2px;left:calc(50% + 8px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center;box-sizing:border-box;line-height:1}
#side button .nbadge{position:static;display:inline-grid;margin-left:8px}
/* ===== 1. Home hub ===== */
#ctiles{display:none}
.hgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 12px}.hgrid>*{margin:0!important;min-width:0}.hgrid .full{grid-column:1/-1}
.htoday{display:flex;flex-direction:column;gap:10px}.htoday .hrow{display:flex;align-items:center;gap:12px}.htoday .hrow b{font-size:18px;display:block}.htoday .hrow span.sub{font-size:13px;color:var(--muted)}
.htoday .tag{font-size:11px;font-weight:800;letter-spacing:.6px;color:var(--muted);text-transform:uppercase}
.stepbar{display:flex;gap:3px;height:14px;border-radius:7px;overflow:hidden}.stepbar i{display:block;min-width:4px;background:var(--blue)}.stepbar i.lt{background:var(--link)}.stepbar i.iv{background:var(--yellow)}
.hbtns{display:flex;gap:8px;flex-wrap:wrap}.hbtns .btn{flex:1 1 130px}
.hring{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;padding:14px 10px}.hring svg{width:112px;height:112px}.hring .rc{font-size:13px;font-weight:800;fill:var(--ink)}.hring .note{margin:0}
.hrace{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:14px;color:var(--ink);background:rgba(21,29,38,.72);border:1px solid rgba(230,237,243,.10);border-radius:18px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.hrace:focus-visible,.hform:focus-visible,.hcoach button:focus-visible{outline:2px solid var(--link)}
.hrace .tag{font-size:11px;font-weight:800;letter-spacing:.6px;color:var(--muted);text-transform:uppercase}.hrace .big{font-family:"Barlow Condensed",Barlow,system-ui,sans-serif;font-weight:800;font-size:52px;line-height:1;color:var(--yellow)}.hrace .big small{font-size:16px;color:var(--muted);margin-left:4px}
.hrace b{font-size:15px}.hrace .goal{font-size:12.5px;color:var(--muted)}
.hform{cursor:pointer}.hform .row{margin:2px 0 6px}.hform svg{width:100%;height:92px;display:block}
.hcoach{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.hcoach button{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:12px 6px;font-size:12.5px;font-weight:700;color:var(--ink);background:rgba(21,29,38,.72);border:1px solid rgba(230,237,243,.10);border-radius:18px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.hcoach small{font-weight:500;color:var(--muted);font-size:11.5px;line-height:1.25}
.cav{position:relative;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;flex:none;border:3px solid var(--c,var(--blue));color:var(--ink);background:rgba(13,19,25,.5)}.cav.solid{background:var(--blue);border-color:var(--blue);color:#fff}.cav.dash{border:3px dashed var(--red)}
.cav .nd{position:absolute;right:-3px;top:-3px;width:12px;height:12px;border-radius:50%;background:var(--yellow);border:2px solid var(--bg)}
@media (min-width:700px){.hgrid{grid-template-columns:repeat(4,minmax(0,1fr))}.hgrid .full{grid-column:span 4}.hgrid .htoday{grid-column:span 2}.hgrid .hring,.hgrid .hrace{grid-column:span 1}}
@media (max-width:899px){#app>.hdr{text-align:left;padding-left:14px}}
/* ===== 2. Plan: calendar first ===== */
#p-plan>.bar{display:none}#days{display:none}
#pview{margin:0 0 12px}
#patpband{margin:0 0 12px}.band{display:flex;height:12px;border-radius:6px;overflow:hidden;gap:1px}.band i{flex:1;display:block;background:var(--line)}.band i.Base{background:var(--blue)}.band i.Build{background:var(--green)}.band i.Peak{background:var(--yellow)}.band i.Race{background:var(--red)}
.bandwrap{position:relative;padding-bottom:30px}.bandmk{position:absolute;top:-5px;width:0;transform:translateX(-50%)}.bandmk::before{content:"";display:block;width:4px;height:22px;background:var(--yellow);border-radius:2px;margin-left:-2px}
.bandlb{position:absolute;top:22px;font-size:12.5px;font-weight:700;color:var(--ink);white-space:nowrap;transform:translateX(-50%)}.bandlb small{font-weight:500;color:var(--muted)}
.pbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}.pbar>div{text-align:center;min-width:0}.pbar b{display:block;font-size:16px}.pbar .note{margin:0}
.strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:12px}
.dcell{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 7px;border-radius:14px;border:1px solid rgba(230,237,243,.10);background:rgba(21,29,38,.72);color:var(--ink);min-height:68px}
.dcell small{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase}.dcell b{font-size:17px}.dcell.today:not(.on){border-color:var(--yellow)}.dcell:focus-visible{outline:2px solid var(--link)}
.dcell.on{background:var(--yellow);border-color:var(--yellow);color:#0d1319}.dcell.on small{color:#0d1319}
.dots{display:flex;gap:3px;height:8px;align-items:center}.dots i{width:7px;height:7px;border-radius:50%;background:var(--c);display:block}.dots i.pl{background:transparent;border:1.5px solid var(--c)}.dcell.on .dots i{box-shadow:0 0 0 1px #0d1319}
.mgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:12px}.mgrid .dcell{min-height:50px;padding:5px 0;border-radius:10px}.mgrid .dcell b{font-size:14px}.mgrid .dcell.out{opacity:.38}.mgrid .hd{font-size:11px;color:var(--muted);text-align:center;font-weight:700}
.pwk{margin:0 0 10px;padding:0;overflow:hidden;border-left:4px solid var(--c)!important}.pwh{all:unset;box-sizing:border-box;width:100%;display:flex;align-items:center;gap:12px;padding:12px;cursor:pointer;color:var(--ink)}.pwh:focus-visible{outline:2px solid var(--link);outline-offset:-2px}
.pwh .tx{flex:1;min-width:0}.pwh .tag{font-size:11px;font-weight:800;letter-spacing:.6px;color:var(--c);text-transform:uppercase;display:block}.pwh b{display:block;font-size:16px}.pwh .sub{font-size:13px;color:var(--muted)}.pwh .chev{color:var(--muted);transition:transform .15s}.pwk.open .chev{transform:rotate(90deg)}
.pwb{padding:0 12px 12px}.pwb h4{margin:12px 0 4px;font-size:14px}.pwb h4 small{color:var(--muted);font-weight:500}.pwb ul{margin:0;padding-left:18px;font-size:14px}.pwb .cbs{margin:12px 0 8px}
.exr{display:flex;gap:12px;align-items:center;margin:10px 0}.exr img{width:70px;height:70px;border-radius:12px;background:#dcdcdc;object-fit:contain;flex:none}.exr b{display:block;font-size:15px}.exr span{display:block;font-size:13px;color:var(--muted)}
.pwdone{font-size:13px;color:var(--green);font-weight:700}
.fab{position:fixed;right:18px;bottom:calc(86px + env(safe-area-inset-bottom));width:54px;height:54px;border-radius:50%;border:0;background:var(--btn);color:#fff;font-size:30px;line-height:1;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.45);z-index:5}.fab:focus-visible{outline:2px solid var(--yellow)}
@media (min-width:900px){.fab{bottom:28px;right:34px}}
.pwb .cbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.pwb .cbs .cb{padding:10px 4px;font-size:13px}
/* ===== 3. Races: milestones ===== */
.rcards{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:2px 2px 10px;margin:0 -2px 6px}.rcards::-webkit-scrollbar{height:6px}.rcards::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.rc{scroll-snap-align:start;flex:0 0 78%;max-width:320px;box-sizing:border-box;border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:4px;cursor:pointer;text-align:left;color:var(--ink);font-family:inherit;background:rgba(21,29,38,.72);border:1px solid rgba(230,237,243,.10);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.rc.sel{outline:2px solid var(--yellow);outline-offset:1px}.rc:focus-visible{outline:2px solid var(--link)}
.rc .tag{font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}.rc b{font-size:17px}.rc .num{display:block;text-align:left;font-family:"Barlow Condensed",Barlow,system-ui,sans-serif;font-weight:800;font-size:54px;line-height:1}.rc .num small{font-size:16px;margin-left:4px;font-weight:600}
.rc .sub{font-size:13px;color:var(--muted)}.rc .goalt{font-size:22px;font-weight:800;color:var(--yellow)}.rc .edit{align-self:flex-start;margin-top:6px;font-size:12.5px}
.rc.hero{background:var(--red);border-color:var(--red);color:#fff}.rc.hero .tag,.rc.hero .sub{color:rgba(255,255,255,.85)}.rc.hero .goalt{color:var(--yellow)}.rc.hero .edit{color:#fff}
.pbadge{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;font-size:12px;font-weight:800;color:#fff;background:var(--rest)}.pbadge.A{background:var(--red)}.pbadge.B{background:var(--blue)}.pbadge.C{background:var(--rest)}
.splits{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:8px}.splits>div{background:var(--s2);border-radius:12px;padding:8px 2px;text-align:center;min-width:0}.splits small{display:block;font-size:11px;color:var(--muted)}.splits b{font-size:14px}.splits .fin{background:var(--yellow);color:#0d1319}.splits .fin small{color:#0d1319}
.pills{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 10px}.pills button{all:unset;box-sizing:border-box;cursor:pointer;padding:7px 12px;border-radius:999px;border:1px solid var(--line);color:var(--muted);font-weight:700;font-size:13px}.pills button.on{background:var(--btn);border-color:var(--btn);color:#fff}.pills button:focus-visible{outline:2px solid var(--link)}
.cgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.cgrid label{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:4px}.cgrid input{width:100%;box-sizing:border-box;padding:9px;font-size:15px}
.legs{margin:10px 0 0;display:grid;gap:4px}.legs div{display:flex;justify-content:space-between;gap:8px;font-size:14px;border-bottom:1px solid var(--line);padding:5px 0}.legs span{color:var(--muted)}.legs .tot{border:0;font-size:15px}.legs .tot b{color:var(--yellow);font-size:20px}
@media (min-width:700px){.rc{flex-basis:300px}}
/* ===== 4. Analytics: pace brain ===== */
.mtiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}.mt{background:var(--s2);border-radius:14px;padding:10px 12px;border:1px solid transparent}.mt.on{border-color:var(--blue)}.mt small{display:block;font-size:11.5px;color:var(--muted);font-weight:700}.mt b{display:block;font-size:20px;margin:2px 0}
.mchg{font-size:12px!important;font-weight:700;color:var(--muted)!important}.mchg.up{color:var(--green)!important}.mchg.dn{color:var(--red)!important}
.ladder{display:grid;gap:6px}.lrow{display:grid;grid-template-columns:30px minmax(0,1fr) auto;grid-template-areas:"z n r" ". b b";gap:2px 10px;align-items:center;font-size:13px;padding:4px 0}.lrow>b{grid-area:z}.lrow .nm{grid-area:n}.lrow .lr{grid-area:r}.lrow .lbar{grid-area:b}.lrow b{color:var(--z)}.lrow .nm{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lrow .lbar{height:10px;border-radius:5px;background:var(--s2);overflow:hidden;display:block}.lrow .lbar i{display:block;height:100%;background:var(--z);border-radius:5px}.lrow .lr{font-weight:700;white-space:nowrap}
#pmcard svg{width:100%;height:auto;display:block}@media (min-width:700px){.mtiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* ===== 5. Coach: agent stream ===== */
.coachtop{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px}.cavrow{display:flex;gap:6px;flex:1;min-width:0;overflow-x:auto;padding:4px 2px}.cavrow::-webkit-scrollbar{display:none}
.cavb{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;flex:1 0 54px;color:var(--muted);font-size:11px;font-weight:700;text-align:center}.cavb:focus-visible .cav{outline:2px solid var(--link);outline-offset:2px}.cavb.on{color:var(--ink)}.cavb.on .cav{box-shadow:0 0 0 3px var(--yellow)}
.cavb .cav{width:46px;height:46px;font-size:15px;font-weight:800}.cavb small{max-width:62px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#cfeed{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}.fpill{align-self:center;font-size:12px;font-weight:700;color:var(--muted);background:rgba(21,29,38,.72);border:1px solid rgba(230,237,243,.10);border-radius:999px;padding:5px 12px}.fpill.bad{color:var(--ink);border-color:var(--red)}
.fb{display:flex;gap:8px;align-items:flex-end;max-width:92%}.mav{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--s2);color:var(--ink);font-size:10px;font-weight:800;border:2px solid var(--blue)}.mav.solid{background:var(--blue);color:#fff}.mav.dash{border:2px dashed var(--red)}
.bub{background:rgba(21,29,38,.72);border:1px solid rgba(230,237,243,.10);border-radius:18px 18px 18px 6px;padding:10px 14px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.bub b{font-size:12.5px;color:var(--muted);display:block}.bub p{margin:4px 0 0;font-size:15px}.bub small{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.bub.med{border:1.5px dashed var(--red)}
.prc{margin-left:34px;border:1px solid rgba(230,237,243,.10);border-radius:16px;overflow:hidden;background:rgba(21,29,38,.72);max-width:92%}.prh{display:flex;align-items:center;gap:8px;padding:8px 12px;background:color-mix(in srgb,var(--c) 28%,var(--surface));font-size:13px}.prb{padding:10px 12px}.prb s{display:block;color:var(--muted);font-size:13.5px}.prb b{display:block;font-size:15px;margin-top:2px}
.pra{display:flex;gap:8px;margin-top:10px}.pra .btn{flex:1}.pra .btn.ok{background:var(--green);border-color:var(--green);color:#fff}
#chat{display:flex;flex-direction:column;gap:8px}#chat .msg{max-width:88%;border-radius:18px;padding:10px 14px;margin:0;position:relative}
#chat .msg.me{align-self:flex-end;background:var(--btn);border-color:var(--btn);color:#fff;border-radius:18px 18px 6px 18px}
#chat .msg.ai{align-self:flex-start;background:rgba(21,29,38,.72);border:1px solid rgba(230,237,243,.10);border-radius:18px 18px 18px 6px;margin-left:30px}#chat .msg.ai::before{content:attr(data-av);position:absolute;left:-32px;bottom:0;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:800;background:var(--blue);color:#fff}
.ccomposer{position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));margin-top:12px;padding:8px 0 4px;z-index:3;background:linear-gradient(to top,var(--bg) 60%,transparent)}
.qr{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px}.qr button{all:unset;box-sizing:border-box;cursor:pointer;flex:none;padding:7px 12px;border-radius:999px;border:1px solid var(--line);color:var(--ink);font-size:13px;font-weight:600;background:rgba(21,29,38,.72)}.qr button.red{border-color:var(--red);color:var(--ink)}.qr button:focus-visible{outline:2px solid var(--link)}
.cin{display:flex;gap:8px}.cin .inp{flex:1;min-width:0;border-radius:999px!important;padding:11px 16px}.cin .send{all:unset;box-sizing:border-box;width:46px;height:46px;border-radius:50%;background:var(--yellow);color:#0d1319;display:grid;place-items:center;cursor:pointer;font-size:18px;flex:none}.cin .send:focus-visible{outline:2px solid var(--link);outline-offset:2px}
@media (min-width:900px){.ccomposer{bottom:0}}
