.ts-app{--navy:#101A3D; --graphite:#1A2445; --raised:#222E55; --line:#2A3560;
  --blue:#2E6BFF; --sky:#5B9BFF; --white:#FFFFFF; --mist:#A9B6D6; --muted:#8590B0;
  --ok:#12B76A; --warn:#F79009; --alert:#F04438;
  --p1:#9B5C86; --p2:#5B9BFF; --p3:#8B7BE8; --p4:#3F8C8A;
  --display:'Outfit',ui-sans-serif,system-ui,sans-serif;
  --body:'Inter',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  color-scheme:dark;}
.ts-app *{box-sizing:border-box}
.ts-app{background:var(--navy);color:var(--white);font-family:var(--body);font-size:14px;margin:0}
.ts-app button{font:inherit;color:inherit;cursor:pointer}
.ts-app button:focus-visible,.ts-app input:focus-visible,.ts-app select:focus-visible,.ts-app textarea:focus-visible{outline:2px solid var(--sky);outline-offset:2px}
.ts-app .num{font-variant-numeric:tabular-nums}
.ts-app h1,.ts-app h2,.ts-app h3{font-family:var(--display);margin:0;text-wrap:balance}
.ts-app .seg{display:flex;background:var(--graphite);border:1px solid var(--line);border-radius:999px;padding:3px}
.ts-app .seg button{border:0;background:transparent;padding:7px 14px;border-radius:999px;font-weight:600;font-size:13px;color:var(--mist)}
.ts-app .seg button[aria-pressed="true"]{background:var(--blue);color:var(--white)}
.ts-app .ghost{background:transparent;border:1px solid var(--line);border-radius:999px;padding:7px 12px;color:var(--mist);font-size:13px}
.ts-app .tag{font:700 10px var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.ts-app .status{display:flex;justify-content:space-between;padding:12px 24px 4px;font-size:12px;font-weight:600;color:var(--mist)}
.ts-app .screen{flex:1;overflow-y:auto;padding:8px 20px 24px;display:flex;flex-direction:column;gap:16px}
.ts-app .tabs{display:flex;border-top:1px solid var(--line);background:var(--graphite);padding:8px 4px calc(10px + env(safe-area-inset-bottom,0px))}
.ts-app .tabs button{flex:1;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:10.5px;font-weight:600;color:var(--muted);padding:4px 2px;min-width:0;position:relative}
.ts-app .tabs button svg{width:22px;height:22px}
.ts-app .tabs button[aria-current="page"]{color:var(--sky)}
.ts-app .tabs .badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:16px;height:16px;border-radius:8px;background:var(--blue);color:var(--white);font-size:10px;display:flex;align-items:center;justify-content:center;padding:0 4px}
.ts-app .head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.ts-app .head .mono{width:34px;height:34px;flex:none}
.ts-app .icons{display:flex;gap:8px;align-items:center}
.ts-app .ib{width:36px;height:36px;border-radius:50%;border:0;background:var(--graphite);display:flex;align-items:center;justify-content:center;position:relative;color:var(--mist);flex:none}
.ts-app .ib svg{width:18px;height:18px}
.ts-app .ib .badge{position:absolute;top:4px;right:5px;width:8px;height:8px;border-radius:50%;background:var(--sky)}
.ts-app .back{display:flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--sky);font-weight:600;padding:4px 0;align-self:flex-start}
.ts-app .title{font-size:24px;font-weight:700;letter-spacing:-.01em;font-family:var(--display)}
.ts-app .card{background:var(--graphite);border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:12px}
.ts-app .card.flat{background:transparent;border:1px solid var(--line)}
.ts-app .card.hl{background:var(--raised);border:1px solid var(--sky)}
.ts-app .card.tap{border:0;text-align:left;width:100%}
.ts-app .card.hl.tap{border:1px solid var(--sky)}
.ts-app .row{display:flex;justify-content:space-between;align-items:center;gap:12px}
.ts-app .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ts-app .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ts-app .sub{color:var(--mist);font-size:13px;line-height:1.5}
.ts-app .small{font-size:12px;color:var(--muted);line-height:1.45}
.ts-app .btn{border:0;border-radius:14px;padding:14px 16px;font-weight:600;background:var(--blue);color:var(--white);width:100%}
.ts-app .btn.sec{background:var(--raised);color:var(--white)}
.ts-app .btn.light{background:var(--white);color:var(--navy)}
.ts-app .btn.link{background:transparent;color:var(--sky);padding:8px}
.ts-app .btn.sm{padding:9px 12px;width:auto;font-size:13px;border-radius:10px;align-self:flex-start}
.ts-app .pill{display:inline-flex;align-items:center;gap:6px;font:700 10px var(--body);letter-spacing:.12em;text-transform:uppercase;padding:5px 9px;border-radius:999px;background:var(--raised);color:var(--mist);white-space:nowrap;align-self:flex-start}
.ts-app .pill.ok{color:var(--ok)}
.ts-app .pill.warn{color:var(--warn)}
.ts-app .pill.sky{color:var(--sky)}
.ts-app .dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}
.ts-app .stat{background:var(--graphite);border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;min-width:0}
.ts-app .stat b{font:700 22px/1.1 var(--display)}
.ts-app .mini{display:flex;flex-direction:column;gap:2px;min-width:0}
.ts-app .mini b{font:700 22px/1.1 var(--display)}
.ts-app .mini .small{font-size:11px}
.ts-app .ring{position:relative;width:184px;height:184px;margin:4px auto 0;flex:none}
.ts-app .ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ts-app .ring .v{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ts-app .ring .v b{font:700 56px/1 var(--display);letter-spacing:-.03em}
.ts-app .ring .v span{font-size:12px;color:var(--mist);margin-top:4px}
.ts-app .ring.sm{width:72px;height:72px;margin:0}
.ts-app .ring.sm .v b{font-size:24px}
.ts-app .ring.sm .v span{display:none}
.ts-app .bars{display:flex;flex-direction:column;gap:10px}
.ts-app .bar>button{all:unset;display:block;width:100%;cursor:pointer}
.ts-app .lab{display:flex;justify-content:space-between;font-size:13px;margin-bottom:6px;gap:8px}
.ts-app .lab span:first-child{color:var(--mist)}
.ts-app .track{height:6px;background:var(--line);border-radius:6px;overflow:hidden}
.ts-app .fill{height:100%;background:var(--sky);border-radius:6px;transition:width .4s ease}
.ts-app .explain{background:var(--raised);border-radius:12px;padding:12px;font-size:13px;line-height:1.5;color:var(--mist)}
.ts-app .explain b{color:var(--white)}
.ts-app .splits{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.ts-app .split{background:var(--raised);border-radius:10px;padding:8px 2px;text-align:center;min-width:0}
.ts-app .split .k{font:700 9px var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.ts-app .split .t{font:600 12.5px var(--display);margin-top:4px}
.ts-app .split .d{font-size:10.5px;margin-top:3px;color:var(--muted)}
.ts-app .split.weak{outline:1.5px solid var(--sky)}
.ts-app .total{font:700 32px/1 var(--display);letter-spacing:-.02em}
.ts-app .huge{font:700 56px/1 var(--display);letter-spacing:-.03em}
.ts-app .chips{display:flex;flex-wrap:wrap;gap:8px}
.ts-app .chip{border:1px solid var(--line);background:transparent;border-radius:999px;padding:8px 12px;font-size:13px;color:var(--mist)}
.ts-app .chip[aria-pressed="true"]{border-color:var(--sky);color:var(--white);background:var(--raised)}
.ts-app .tabsub{display:flex;background:var(--graphite);border-radius:12px;padding:3px;gap:3px}
.ts-app .tabsub button{flex:1;border:0;background:transparent;border-radius:9px;padding:8px;font-weight:600;font-size:13px;color:var(--mist)}
.ts-app .tabsub button[aria-pressed="true"]{background:var(--blue);color:var(--white)}
.ts-app .scale{display:grid;gap:6px}
.ts-app .scale button{border:1px solid var(--line);background:transparent;border-radius:12px;padding:10px 2px;font-size:12px;color:var(--mist);display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.ts-app .scale button[aria-pressed="true"]{border-color:var(--sky);background:var(--raised);color:var(--white)}
.ts-app .opt{display:flex;flex-direction:column;gap:8px}
.ts-app .opt button{text-align:left;border:1px solid var(--line);background:transparent;border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.ts-app .opt button b{font-weight:600}
.ts-app .opt button span{font-size:12px;color:var(--muted)}
.ts-app .opt button[aria-pressed="true"]{border-color:var(--sky);background:var(--raised)}
.ts-app label.f{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--mist)}
.ts-app input[type=text],.ts-app input[type=date],.ts-app input[type=email],.ts-app select,.ts-app textarea{background:var(--raised);border:1px solid var(--line);border-radius:12px;padding:12px;color:var(--white);font:inherit;width:100%}
.ts-app textarea{min-height:80px;resize:vertical}
.ts-app .stepper{display:flex;align-items:center;gap:8px}
.ts-app .stepper button{width:34px;height:34px;border-radius:50%;border:0;background:var(--raised);font-size:18px;font-weight:600}
.ts-app .stepper span{min-width:58px;text-align:center;font-weight:600}
.ts-app .cycle{display:grid;gap:3px}
.ts-app .cycle i{display:block;height:22px;border-radius:4px;background:var(--line)}
.ts-app .cycle i.p1{background:var(--p1)}
.ts-app .cycle i.p2{background:var(--p2)}
.ts-app .cycle i.p3{background:var(--p3)}
.ts-app .cycle i.p4{background:var(--p4)}
.ts-app .cycle i.today{outline:2px solid var(--white);outline-offset:1px}
.ts-app .legend{display:flex;flex-wrap:wrap;gap:12px;font-size:11px;color:var(--muted)}
.ts-app .legend span{display:inline-flex;align-items:center;gap:5px}
.ts-app .legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.ts-app .list{display:flex;flex-direction:column}
.ts-app .list .r{display:grid;grid-template-columns:24px 1fr auto auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.ts-app .list .r:last-child{border-bottom:0}
.ts-app .list .r.me{color:var(--sky);font-weight:600}
.ts-app .list .r .pos{color:var(--muted);font-weight:600}
.ts-app .kv{display:flex;flex-direction:column}
.ts-app .kv div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.ts-app .kv div:last-child{border-bottom:0}
.ts-app .kv span:first-child{color:var(--mist)}
.ts-app .menu{display:flex;flex-direction:column;background:var(--graphite);border-radius:18px;overflow:hidden}
.ts-app .menu button,.ts-app .menu .mi{border:0;background:transparent;text-align:left;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid var(--line)}
.ts-app .menu>*:last-child{border-bottom:0}
.ts-app .menu .v{color:var(--muted);font-size:13px;white-space:nowrap}
.ts-app .item{display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:center;padding:12px;border-radius:14px;background:var(--graphite);border:0;text-align:left;width:100%}
.ts-app .av{width:40px;height:40px;border-radius:50%;background:var(--raised);display:flex;align-items:center;justify-content:center;font:600 12px var(--display);color:var(--sky);flex:none}
.ts-app .av.lg{width:72px;height:72px;font-size:24px;margin:0 auto}
.ts-app .score{font:700 22px var(--display);text-align:right}
.ts-app .score small{display:block;font:500 11px var(--body);color:var(--muted)}
.ts-app .stack{display:flex;flex-direction:column;gap:8px}
.ts-app .h2h{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;text-align:center}
.ts-app .h2h .t{font:700 28px/1 var(--display)}
.ts-app .h2h .vs{color:var(--muted);font-weight:600}
.ts-app .banner{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--raised);border:1px solid var(--sky);border-radius:14px;padding:10px 12px;font-size:13px;width:100%;text-align:left}
.ts-app .adh{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center;font-size:10.5px;color:var(--muted)}
.ts-app .adh i{display:block;height:26px;border-radius:6px;background:var(--line);margin-bottom:3px}
.ts-app .adh i.done{background:var(--p2)}
.ts-app .adh i.over{background:var(--sky)}
.ts-app .adh i.miss{background:transparent;border:1px dashed var(--muted)}
.ts-app .adh i.today{outline:1.5px solid var(--white)}
.ts-app .tl{display:flex;flex-direction:column}
.ts-app .tl .s{display:grid;grid-template-columns:52px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.ts-app .tl .s:last-child{border-bottom:0}
.ts-app .tl .s b{font-weight:600}
.ts-app .flowdiag{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:6px;align-items:center;text-align:center;font-size:11px;color:var(--mist)}
.ts-app .flowdiag div{background:var(--navy);border-radius:10px;padding:8px 4px}
.ts-app .flowdiag .ar{color:var(--muted)}
.ts-app .share{background:var(--navy);border:1px solid var(--line);border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:10px}
.ts-app .share .big{font:700 48px/1 var(--display);letter-spacing:-.02em}
.ts-app .chart{width:100%;height:auto;display:block}
.ts-app .chart text{fill:var(--muted);font:11px var(--body)}
.ts-app .arc{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.ts-app .arc div{height:8px;border-radius:4px;background:var(--line)}
.ts-app .arc div.on{background:var(--sky)}
.ts-app .arc div.done{background:var(--p2)}
.ts-app .arclab{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;font-size:10.5px;color:var(--muted);text-align:center}
.ts-app .week{display:flex;flex-direction:column;gap:6px}
.ts-app .day{display:grid;grid-template-columns:44px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--graphite);font-size:13px;border:0;text-align:left;width:100%}
.ts-app .card .day{background:var(--raised)}
.ts-app .day.today{outline:1.5px solid var(--sky)}
.ts-app .day .d{font-weight:600;color:var(--muted)}
.ts-app .chat{display:flex;flex-direction:column;gap:10px}
.ts-app .msg{max-width:88%;padding:10px 12px;border-radius:14px;font-size:13.5px;line-height:1.5}
.ts-app .msg.ai,.ts-app .msg.them{background:var(--graphite);color:var(--mist);align-self:flex-start;border-bottom-left-radius:4px}
.ts-app .msg.me{background:var(--blue);align-self:flex-end;border-bottom-right-radius:4px}
.ts-app .msg b{color:var(--white)}
.ts-app .msg .small{display:block;margin-top:4px}
.ts-app .msg.me .small{color:#D6E2FF}
.ts-app .composer{display:flex;gap:8px}
.ts-app .composer input{flex:1;min-width:0}
.ts-app .composer .btn.sm{align-self:stretch}
.ts-app .toggle{width:44px;height:26px;border-radius:13px;border:0;background:var(--line);position:relative;flex:none;display:inline-block}
.ts-app .toggle::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--mist);transition:left .2s}
.ts-app .toggle[aria-pressed="true"]{background:var(--blue)}
.ts-app .toggle[aria-pressed="true"]::after{left:21px;background:var(--white)}
.ts-app .progress{height:8px;background:var(--line);border-radius:8px;overflow:hidden}
.ts-app .progress div{height:100%;width:0;background:var(--sky);transition:width .25s linear}
.ts-app .center{text-align:center;align-items:center}
.ts-app .wm{width:180px;margin:0 auto;display:block}
.ts-app .lock{display:flex;gap:10px;align-items:flex-start;font-size:12px;color:var(--mist);line-height:1.5}
.ts-app .lock svg{flex:none;width:16px;height:16px;margin-top:1px;color:var(--sky)}
.ts-app .celebrate{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;text-align:center}
.ts-app .medal{width:72px;height:72px;border-radius:50%;background:var(--raised);display:flex;align-items:center;justify-content:center;color:var(--sky)}
.ts-app .medal svg{width:34px;height:34px}
@media (prefers-reduced-motion:reduce){.ts-app *{transition:none!important;animation:none!important}}
.ts-app .ghost[aria-pressed="true"]{border-color:var(--sky);color:var(--white)}
.ts-app .sport{display:grid;grid-template-columns:52px 82px 1fr;gap:10px;align-items:start;padding:10px 0;border-top:1px solid var(--line)}
.ts-app .sport:first-of-type{border-top:0}
.ts-app .sport b{font-weight:600}
.ts-app .lv{font:700 13px var(--display);color:var(--white)}
.ts-app .lv.Easy{color:var(--mist)}
.ts-app .lv.High{color:var(--sky)}
.ts-app .morebtn{display:flex;justify-content:space-between;align-items:center;width:100%;background:transparent;border:1px solid var(--line);border-radius:14px;padding:12px 14px;color:var(--mist);font-weight:600}
.ts-app .checks{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.ts-app .checks li{display:grid;grid-template-columns:16px 1fr;gap:10px;color:var(--white);font-size:14px;line-height:1.4}
.ts-app .checks li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--sky);margin-top:6px}
.ts-app .cr{position:relative;width:220px;height:220px;margin:0 auto}
.ts-app .cr svg{width:100%;height:100%}
.ts-app .cr .v{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px}
.ts-app .cr .v b{font:700 52px/1 var(--display);letter-spacing:-.03em}
.ts-app input[type=range]{width:100%;accent-color:var(--blue)}
.ts-app .phchips{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.ts-app .phchips button{border:1px solid var(--line);background:transparent;border-radius:10px;padding:8px 2px;font-size:12px;font-weight:600;color:var(--mist);display:flex;gap:5px;align-items:center;justify-content:center}
.ts-app .phchips button[aria-pressed="true"]{border-color:var(--sky);background:var(--raised);color:var(--white)}
.ts-app .phchips i{width:7px;height:7px;border-radius:50%;display:inline-block}
.ts-app .band{position:relative;height:8px;border-radius:8px;background:var(--line)}
.ts-app .band span{position:absolute;top:0;bottom:0;border-radius:8px;background:rgba(91,155,255,.35)}
.ts-app .band em{position:absolute;top:-4px;width:3px;height:16px;border-radius:2px;background:var(--white)}
.ts-app .fp{display:grid;grid-template-columns:44px repeat(4,1fr);gap:6px;align-items:center}
.ts-app .fp .h{font-size:11px;color:var(--muted);text-align:center;padding-top:6px;border-top:3px solid var(--line)}
.ts-app .fp .h.on{color:var(--white)}
.ts-app .fp .c{border-radius:10px;padding:10px 0;text-align:center;font-weight:700;font-size:13px;font-variant-numeric:tabular-nums}
.ts-app .fp .c.on{outline:2px solid var(--white);outline-offset:-2px}
.ts-app .learn{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:start;background:var(--raised);border-radius:12px;padding:12px}
.ts-app .learn b{font:700 16px var(--display);color:var(--sky)}
.ts-app .taper{display:flex;align-items:flex-end;gap:2px;height:72px}
.ts-app .taper i{flex:1;border-radius:3px 3px 0 0;position:relative;display:block}
.ts-app .taper i.k::after{content:"";position:absolute;top:-8px;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--white)}
.ts-app .pill.rec{color:#D9A6C4}
.ts-app .leaves{background:var(--navy);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px}
.ts-app .leaves .box{border:1px solid var(--sky);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:6px}
.ts-app .wk5{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;text-align:center}
.ts-app .wk5 span{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--muted)}
.ts-app .wk5 b{display:block;border-radius:10px;padding:10px 0;background:var(--raised);font-size:12px;color:var(--white);font-weight:600}
.ts-app .wk5 b.done{background:rgba(91,155,255,.35)}
.ts-app .wk5 b.today{outline:2px solid var(--sky)}
.ts-app .dash{display:grid;grid-template-columns:repeat(12,1fr);gap:4px}
.ts-app .dash i{height:5px;border-radius:3px;background:var(--line)}
.ts-app .dash i.on{background:var(--sky)}
.ts-app .sync{display:flex;gap:12px;align-items:center;background:var(--raised);border-radius:12px;padding:12px}
.ts-app .sync .ok{width:32px;height:32px;border-radius:9px;background:var(--ok);display:flex;align-items:center;justify-content:center;flex:none;color:var(--white)}
.ts-app .n5{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.ts-app .n5 button{border:1px solid var(--line);background:var(--raised);border-radius:12px;padding:14px 0;font:700 18px var(--display);color:var(--white)}
.ts-app .n5 button[aria-pressed="true"]{background:var(--blue);border-color:var(--blue)}
.ts-app .chips2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ts-app .chips2 .chip{text-align:center}
.ts-app .fd{display:flex;justify-content:space-between;gap:10px;align-items:center;background:var(--graphite);border:1px solid transparent;border-radius:14px;padding:12px 14px}
.ts-app .fd.bad{border-color:var(--warn)}
.ts-app .fd b{font-weight:600}
.ts-app .segbar{display:flex;height:16px;border-radius:8px;overflow:hidden;gap:2px}
.ts-app .segbar i{display:block;min-width:4px}