:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#101317;--line:#343c44;--muted:#b0bbc4;--text:#f2f5f7;--cyan:#7dd8fa;--gold:#e4bd70;--red:#f0a39a;--app:#101820;--card:#1a2630;--card-line:#2c3c47;--bar-muted:#6b7882;color:var(--text);background:var(--page);font-synthesis:none;font-variant-numeric:tabular-nums;font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0}p{margin:0 0 12px}h2{letter-spacing:-.02em;margin:8px 0 12px;font-size:20px;font-weight:600}h3{margin:0 0 8px;font-size:17px;font-weight:600}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}svg{width:100%;display:block}.app{background:var(--app);flex-direction:column;max-width:480px;min-height:100dvh;margin:auto;display:flex}.appbar{z-index:3;background:var(--app);border-bottom:1px solid #22303a;grid-template-columns:minmax(min-content,1fr) minmax(0,auto) minmax(min-content,1fr);align-items:center;gap:8px;min-height:56px;padding:4px 16px;display:grid;position:sticky;top:0}.appbar>:first-child{justify-self:start}.appbar h1{text-align:center;min-width:0;margin:0;font-size:18px;font-weight:700}.back{min-height:44px;color:var(--cyan);white-space:nowrap;background:0 0;border:0;align-items:center;padding:0 8px 0 0;font-size:16px;display:inline-flex}.content{overflow-wrap:anywhere;flex:1;min-width:0;padding:4px 20px 0}.content>section{flex-direction:column;min-height:100%;display:flex}.source{color:var(--gold);margin:8px 0 0;font-size:13px}.file-name{overflow-wrap:anywhere}.app-bottom{z-index:2;background:var(--app);border-top:1px solid #22303a;margin:auto 0 0;padding:12px 0 20px;position:sticky;bottom:0}.small{color:var(--muted);font-size:14px;display:block}.label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:24px 0 8px;font-size:14px;font-weight:600}.label+.list,.label+.card{margin-top:0}.strong{font-size:18px;font-weight:600}.unit{letter-spacing:0;color:var(--muted);font-size:16px;font-weight:400}.cyan{color:var(--cyan)}.gold{color:var(--gold)}.muted{color:var(--muted)}.card{border:1px solid var(--card-line);background:var(--card);border-radius:14px;min-width:0;margin:0 0 12px;padding:16px}.card>:last-child{margin-bottom:0}.notice{border-left:3px solid var(--gold);color:#e7d8b8;background:#242219;margin:0 0 12px;padding:12px 16px}.notice h3{font-size:16px}.notice>:last-child{margin-bottom:0}.action{background:var(--cyan);color:#10212c;text-align:center;border:0;border-radius:12px;justify-content:center;align-items:center;width:100%;min-height:52px;padding:12px 16px;font-size:17px;font-weight:700;display:flex}.action.secondary{color:var(--cyan);background:0 0;border:1px solid #446271}.action-pair{grid-template-columns:1fr 1fr;gap:10px;display:grid}.text-button{width:100%;min-height:44px;color:var(--cyan);background:0 0;border:0;justify-content:center;align-items:center;margin-top:4px;padding:0 8px;font-size:15px;display:flex}.list{border:1px solid var(--card-line);background:var(--card);border-radius:14px;margin:16px 0 12px;overflow:hidden}.list-row{width:100%;min-height:56px;color:var(--text);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;font-size:16px;display:flex}.list-row+.list-row{border-top:1px solid var(--card-line)}.list-row>span:first-child{min-width:0}.list-row b{font-weight:500;display:block}.meta{color:var(--muted);white-space:nowrap;font-size:15px}.chev{color:var(--muted);font-size:22px;line-height:1}.start-choice{border:1px solid var(--card-line);background:var(--card);width:100%;min-height:88px;color:var(--text);text-align:left;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 12px;padding:16px;font-size:16px;display:flex}.start-choice.primary{border-color:var(--cyan)}.start-choice b{margin-bottom:4px;font-size:20px;font-weight:700;display:block}.start-choice>span:first-child{min-width:0}ul.list{padding:0;list-style:none}.link-button{min-height:44px;color:var(--cyan);white-space:nowrap;background:0 0;border:0;padding:0 0 0 8px;font-size:16px}.add-row{width:100%;min-height:52px;color:var(--cyan);background:0 0;border:1px dashed #446271;border-radius:14px;margin:0 0 8px;font-size:16px}.field{min-width:0;margin:0 0 16px}.field>label{color:var(--muted);margin-bottom:8px;font-size:14px;display:block}input:not([type=checkbox]):not([type=radio]),select{width:100%;min-width:0;min-height:48px;color:var(--text);background:#0d161e;border:1px solid #526574;border-radius:10px;padding:10px 12px;font-size:16px}input[aria-invalid=true]{border-color:var(--red)}.field-hint{margin:8px 0 0}.field-error{color:var(--red);margin:8px 0 0;font-size:14px}.options{padding-top:0;padding-bottom:0}.option{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.option+.option{border-top:1px solid var(--card-line)}.option b{font-size:17px;font-weight:500;display:block}.option .small{margin-top:2px}.option input{appearance:none;cursor:pointer;background:#3a4954;border-radius:16px;flex-shrink:0;width:52px;height:32px;margin:0;position:relative}.option input:after{content:"";background:#fff;border-radius:50%;width:26px;height:26px;position:absolute;top:3px;left:3px}.option input:checked{background:#2f8fb3}.option input:checked:after{left:23px}.checkbox-label{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.5rem;min-height:44px;display:grid}.checkbox-label input{width:1.25rem;height:1.25rem;margin:0}.flywheels{border:0;min-width:0;margin:0 0 16px;padding:0}.flywheels legend{padding:0;font-weight:600}.load-total{text-align:center;padding:4px 0 12px}.card.wheels{padding-top:4px;padding-bottom:4px}.load-total>output{letter-spacing:-.03em;font-size:48px;font-weight:600}.wheel{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;min-height:68px;padding:8px 0;display:flex}.wheel+.wheel{border-top:1px solid var(--card-line)}.wheel-name{color:var(--muted);font-size:14px}.wheel-name b{color:var(--text);font-size:18px;display:block}.wheel-stepper{align-items:center;gap:8px;display:flex}.wheel-stepper button{width:48px;height:48px;color:var(--cyan);background:#0d161e;border:1px solid #526574;border-radius:12px;padding:0;font-size:24px}.wheel-stepper output{text-align:center;min-width:32px;font-size:20px;font-weight:600}.sheet-layer{z-index:10;flex-direction:column;justify-content:flex-end;align-items:center;display:flex;position:fixed;inset:0}.sheet-scrim{background:#04080c9e;border:0;width:100%;padding:0;position:absolute;inset:0}.sheet{background:var(--card);width:100%;max-width:480px;max-height:100dvh;color:var(--text);border-top:1px solid var(--card-line);border-radius:20px 20px 0 0;padding:8px 20px 24px;position:relative;overflow:auto}.sheet-grab{background:#526574;border-radius:4px;width:40px;height:4px;margin:0 auto 8px}.sheet h2{margin:0;font-size:18px}.sheet .small{margin:12px 0 16px}.sheet .action{margin-top:16px}.equipment-sheet .device-equipment{border-top:0;margin-bottom:0;padding-top:0}.equipment-options{border:0;min-width:0;margin:0 0 12px;padding:0}.equipment-options legend{margin-bottom:8px;padding:0;font-weight:600}.equipment-options .choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px}.equipment-options .small{margin:0}.equipment-sheet .device-equipment form>.action{background:var(--cyan);color:#10212c;border:0;min-height:52px;font-weight:700}.equipment-sheet-later{margin-top:8px}.choice-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.choice{cursor:pointer;border:1px solid #425561;border-radius:12px;justify-content:center;align-items:center;min-height:52px;padding:8px;font-size:17px;display:flex;position:relative}.choice input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.choice:has(input:checked){border-color:var(--cyan);color:var(--cyan);background:#213643;font-weight:600}.choice:has(input:focus-visible){outline:3px solid var(--gold);outline-offset:2px}.rep-label{color:var(--muted);margin:0 0 8px;font-size:14px}.training .field{margin-bottom:8px}.instruments{gap:8px;padding:14px 16px;display:grid}.main-values{grid-template-columns:1fr 1fr;gap:12px;min-width:0;display:grid}.main-values>div+div{border-left:1px solid var(--card-line);padding-left:12px}.main-values p{grid-column:1/-1;margin:0}.phase{color:var(--muted);font-size:14px;display:block}.big{letter-spacing:-.04em;overflow-wrap:anywhere;font-size:44px;font-weight:600;line-height:1.1;display:block}.big .unit{font-size:16px}.counters{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:8px 0 12px;display:grid}.counters b{font-size:24px;font-weight:600;display:block}.gauge{text-align:center;grid-template-areas:"dial""caption";max-width:260px;display:grid;position:relative}.gauge svg{grid-area:dial}.gauge path{fill:none;stroke-width:8px;stroke-linecap:round}.track{stroke:#34434d}.fill{stroke:var(--cyan);transition:stroke-dasharray .1s linear}.gauge-value{grid-area:dial;align-self:center;display:grid}.gauge-value strong{color:var(--cyan);font-size:1.1rem}.gauge-value span{color:var(--muted);font-size:.75rem}.gauge>small{color:var(--muted);grid-area:caption;font-size:.7rem}figure{margin:0 0 12px}.chart-card{padding:10px 12px 8px}.chart-card b{font-size:15px;font-weight:600}.chart-card .field{margin-bottom:4px}.chart-scroll{overscroll-behavior-x:contain;scrollbar-width:thin;margin:6px -12px 0;padding:0 12px;overflow-x:auto}.chart-scroll:focus-visible{outline-offset:-3px}.chart{width:auto;max-width:none}.chart-grid{fill:none;stroke:var(--card-line)}.chart-guide{fill:none;stroke:var(--text);stroke-width:2px}.fill-concentric,.fill-value{fill:var(--cyan)}.fill-eccentric{fill:var(--gold)}.bar.muted rect{fill:var(--bar-muted)}.bar-value{fill:var(--text);paint-order:stroke;stroke:var(--card);stroke-width:4px;stroke-linejoin:round;font-size:14px;font-weight:600}.bar-tick,.guide-label{fill:var(--muted);font-size:14px}.legend{color:var(--muted);flex-wrap:wrap;gap:4px 16px;margin-top:6px;font-size:14px;display:flex}.guide-legend{color:var(--muted);margin:6px 0 0;font-size:14px}.guide-legend:before{content:"";vertical-align:middle;border-top:2px dashed var(--text);width:18px;margin-right:6px;display:inline-block}.main-values .single{grid-column:1/-1}.legend span:before{content:"";background:var(--cyan);border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.legend .eccentric:before{background:var(--gold)}.legend .muted:before{background:var(--bar-muted)}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:12px;display:grid}.metric{background:var(--card);border:1px solid var(--card-line);overflow-wrap:anywhere;border-radius:14px;min-width:0;padding:14px}.metric b{margin-top:4px;font-size:22px;font-weight:600;display:block}.table-scroll{padding:8px 12px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:15px}caption{text-align:left;color:var(--muted);padding:4px 0 8px;font-size:14px}td,th{text-align:right;border-bottom:1px solid var(--card-line);white-space:nowrap;padding:8px 6px}thead th{color:var(--muted);font-weight:400}details.card{padding-top:4px;padding-bottom:4px}summary{cursor:pointer;min-height:44px;color:var(--cyan);align-items:center;display:flex}details ul{color:var(--muted);padding-left:1.25rem}.row{justify-content:space-between;align-items:center;gap:12px;display:flex}.value{font-variant-numeric:tabular-nums;font-size:28px;font-weight:600;line-height:1.15;display:block}.card-head{justify-content:space-between;align-items:center;gap:8px;margin:-8px -8px 4px 0;display:flex}.zone-help{width:44px;height:44px;color:var(--cyan);background:0 0;border:0;flex-shrink:0;padding:0;font-size:16px}.zone-help span{border:1.5px solid var(--cyan);border-radius:50%;place-items:center;width:28px;height:28px;display:inline-grid}.zone-info{line-height:1.5}.zone-info h3{margin:22px 0 8px;font-size:17px}.zone-info p{color:var(--muted)}.zone-info th,.zone-info td{text-align:left;vertical-align:top;white-space:normal;padding:10px 6px}.zone-info th{color:var(--muted);font-weight:500}.exercise-list .list-row{cursor:pointer}.exercise-list input{width:1.25rem;height:1.25rem;accent-color:var(--cyan);margin:0}.bluetooth-panel{overflow-wrap:anywhere}.bluetooth-panel h3{font-size:1.0625rem}.bluetooth-panel .small{font-size:.875rem}.device-list{border:0;min-width:0;margin:0 0 12px;padding:0}.device-list legend{margin:0 0 8px;padding:0;font-weight:600}.device-row{border-top:1px solid var(--card-line);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem 0;display:flex}.bluetooth-panel .device-choice{flex:10rem;grid-template-columns:auto minmax(0,1fr);align-items:center;min-width:0;min-height:44px;margin:0;display:grid}.device-choice input{width:1.25rem;height:1.25rem;accent-color:var(--cyan);margin:0}.device-choice strong{display:block}.device-row button{max-width:100%}.device-identity{grid-template-columns:repeat(auto-fit,minmax(min(100%,max(45%,6rem)),1fr));gap:.25rem 1rem;margin:0 0 12px;display:grid}.device-identity dt{color:var(--muted)}.device-identity dd{min-width:0;margin:0}.device-equipment{border-top:1px solid var(--card-line);margin:0 0 12px;padding-top:12px}.connection-step{border-top:1px solid var(--card-line);margin:12px 0;padding-top:12px}.connection-step h3{margin-top:0}.connection-step .device-equipment{border-top:0;padding-top:0}.device-equipment p,.device-equipment .field{margin:0 0 8px}.device-equipment .field>label{margin-bottom:6px}.device-equipment button{width:100%;margin-top:8px}.actions{flex-wrap:wrap;gap:.5rem;display:flex}.bluetooth-panel .actions{grid-template-columns:repeat(auto-fit,minmax(min(100%,8rem),1fr));display:grid}.actions button,.bluetooth-panel button{min-width:0;min-height:44px;color:var(--cyan);background:0 0;border:1px solid #446271;border-radius:10px;padding:.5rem 1rem}.bluetooth-panel label{gap:.5rem;margin:0 0 12px;display:grid}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@media (width<=360px){.appbar,.content{padding-left:14px;padding-right:14px}.app-bottom{padding:10px 0 14px}.big{font-size:34px}.action{padding:10px 8px;font-size:16px}}@media (prefers-reduced-motion:no-preference){.bar.entering,.bar-label.entering{animation:.45s cubic-bezier(.2,.9,.3,1.2) both bar-enter}}@keyframes bar-enter{0%{opacity:0;transform:translate(48px)}}@media (prefers-reduced-motion:reduce){.fill{transition:none}}
