:root{--brand: #FF385C;--brand-from: #E61E4D;--brand-to: #D70466;--text: #222222;--text-secondary: #6A6A6A;--border: #DDDDDD;--surface: #FFFFFF;--surface-alt: #F7F7F7;--success: #008A05;--warning: #C13515;--muscle-primary: #FF385C;--muscle-secondary: #FFB3C1;--muscle-base: #E9E9E9;--shadow-card: 0 6px 16px rgba(0, 0, 0, .12);--line-soft: #EBEBEB;--backdrop: rgba(0, 0, 0, .4);--r-card: 16px;--r-btn: 12px;--r-sheet: 24px;--gutter: 24px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--text: #F2F2F2;--text-secondary: #A0A0A0;--border: #333333;--surface: #121212;--surface-alt: #1E1E1E;--success: #3DBE4A;--warning: #FF6B4A;--muscle-secondary: #7A2A3B;--muscle-base: #2E2E2E;--shadow-card: 0 6px 16px rgba(0, 0, 0, .5);--line-soft: #2A2A2A;--backdrop: rgba(0, 0, 0, .6);color-scheme:dark}}:root[data-theme=dark]{--text: #F2F2F2;--text-secondary: #A0A0A0;--border: #333333;--surface: #121212;--surface-alt: #1E1E1E;--success: #3DBE4A;--warning: #FF6B4A;--muscle-secondary: #7A2A3B;--muscle-base: #2E2E2E;--shadow-card: 0 6px 16px rgba(0, 0, 0, .5);--line-soft: #2A2A2A;--backdrop: rgba(0, 0, 0, .6);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--surface);color:var(--text);font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.4;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:0;padding:0;cursor:pointer}h1,h2,h3,p{margin:0}svg{flex-shrink:0}.app{max-width:560px;margin:0 auto;min-height:100%}.screen{padding:calc(max(env(safe-area-inset-top),16px) + 12px) var(--gutter) calc(110px + env(safe-area-inset-bottom))}.screen.no-tabs{padding-bottom:calc(40px + env(safe-area-inset-bottom))}.stack{display:flex;flex-direction:column;gap:16px}.stack-sm{display:flex;flex-direction:column;gap:8px}.stack-lg{display:flex;flex-direction:column;gap:32px}.row{display:flex;align-items:center;gap:8px}.row-top{display:flex;align-items:flex-start;gap:12px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.center{text-align:center}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.title{font-size:28px;line-height:1.15;font-weight:800;letter-spacing:-.02em}.section-title{font-size:22px;font-weight:700;letter-spacing:-.01em}.card-title{font-size:18px;font-weight:600}.label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}.muted{color:var(--text-secondary)}.small{font-size:14px}.tiny{font-size:12px}.bold{font-weight:600}.num{font-variant-numeric:tabular-nums}.big-num{font-size:40px;font-weight:800;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.mid-num{font-size:28px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.brand{color:var(--brand)}.ok{color:var(--success)}.warn{color:var(--warning)}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:20px}.card-raised{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:20px}.card-alt{background:var(--surface-alt);border-radius:var(--r-card);padding:16px}.tap{transition:transform .12s ease}.tap:active{transform:scale(.98)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:var(--r-btn);font-weight:600;font-size:16px;transition:transform .12s ease,opacity .12s;white-space:nowrap}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;pointer-events:none}.btn-primary{color:#fff;background:linear-gradient(to right,var(--brand-from),var(--brand-to))}.btn-secondary{background:var(--surface);border:1px solid var(--text)}.btn-ghost{background:var(--surface-alt)}.btn-danger{background:var(--surface);border:1px solid var(--warning);color:var(--warning)}.btn-link{min-height:40px;padding:0 4px;text-decoration:underline;text-underline-offset:3px;font-weight:600}.btn-block{width:100%}.btn-sm{min-height:40px;padding:0 14px;font-size:14px}.icon-btn{width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);transition:transform .12s ease}.icon-btn:active{transform:scale(.92)}.icon-btn.plain{border:0;background:transparent}.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gutter));padding:2px var(--gutter)}.chips::-webkit-scrollbar{display:none}.chips.wrap{flex-wrap:wrap;overflow:visible;margin:0;padding:0}.chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 16px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:14px;font-weight:500;white-space:nowrap}.chip.on{background:var(--text);color:var(--surface);border-color:var(--text)}.seg{display:flex;background:var(--surface-alt);border-radius:999px;padding:4px}.seg button{flex:1;height:36px;border-radius:999px;font-size:14px;font-weight:600;color:var(--text-secondary)}.seg button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 4px #0000001f}.badge{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--surface-alt);white-space:nowrap}.badge.brand{background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand)}.badge.ok{background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success)}.field{width:100%;height:48px;padding:0 16px;border-radius:var(--r-btn);background:var(--surface-alt);border:1px solid var(--border);outline:none;font-size:16px}.field:focus{border-color:var(--text)}textarea.field{height:auto;min-height:96px;padding:12px 16px;resize:vertical}select.field{-webkit-appearance:none;-moz-appearance:none;appearance:none}.field-group{display:flex;flex-direction:column;gap:6px}.search{position:relative}.search svg{position:absolute;left:16px;top:14px;color:var(--text-secondary)}.search .field{padding-left:46px;border-radius:999px;box-shadow:var(--shadow-card);border-color:transparent;background:var(--surface)}.list{display:flex;flex-direction:column}.list-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line-soft);text-align:left;width:100%}.list-row:last-child{border-bottom:0}.thumb{width:52px;height:52px;border-radius:12px;background:var(--surface-alt);display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--text-secondary)}.thumb img{width:100%;height:100%;object-fit:cover}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--surface);box-shadow:0 -1px 0 var(--line-soft);padding-bottom:env(safe-area-inset-bottom)}.tabbar-inner{max-width:560px;margin:0 auto;display:flex}.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 0 8px;font-size:11px;font-weight:600;color:var(--text-secondary)}.tabbar button.on{color:var(--brand)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:var(--surface);overflow-y:auto;-webkit-overflow-scrolling:touch;animation:slide-in .22s ease-out}.overlay-inner{max-width:560px;margin:0 auto}@keyframes slide-in{0%{transform:translate(24px);opacity:0}to{transform:none;opacity:1}}.topbar{position:sticky;top:0;z-index:5;background:var(--surface);padding:max(env(safe-area-inset-top),12px) 16px 8px;display:flex;align-items:center;gap:8px}.topbar.lined{box-shadow:0 1px 0 var(--line-soft)}.topbar-title{flex:1;font-weight:700;font-size:16px;text-align:center}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--backdrop);animation:fade .18s ease-out;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;max-height:88vh;overflow-y:auto;background:var(--surface);border-radius:var(--r-sheet) var(--r-sheet) 0 0;padding:12px var(--gutter) calc(24px + env(safe-area-inset-bottom));animation:sheet-up .24s cubic-bezier(.2,.9,.3,1)}.sheet-handle{width:36px;height:5px;border-radius:99px;background:var(--border);margin:0 auto 16px}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(40px);opacity:.6}to{transform:none;opacity:1}}.dots{display:flex;gap:6px}.dot{width:14px;height:14px;border-radius:99px;background:var(--surface-alt);border:1px solid var(--border)}.dot.on{background:var(--brand);border-color:var(--brand)}.dot.extra{background:var(--text);border-color:var(--text)}.weeks{display:grid;grid-template-columns:repeat(12,1fr);gap:4px}.week-cell{aspect-ratio:1;border-radius:6px;background:var(--surface-alt);border:1px solid var(--border)}.week-cell.cumplida{background:var(--brand);border-color:var(--brand)}.week-cell.superada{background:var(--text);border-color:var(--text)}.week-cell.salvada{background:color-mix(in srgb,var(--brand) 30%,var(--surface));border-color:transparent}.week-cell.congelada{background:#8ec9ff;border-color:#8ec9ff}.week-cell.pausa{background:repeating-linear-gradient(45deg,var(--surface-alt) 0 3px,var(--border) 3px 5px)}.week-cell.en-curso{border:2px dashed var(--brand)}.set-head,.set-row{display:grid;grid-template-columns:28px 1fr 1fr 48px;gap:8px;align-items:center}.set-head{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.set-row .field{height:48px;text-align:center;font-weight:700;font-size:18px;padding:0 6px;font-variant-numeric:tabular-nums}.set-row.done .field{background:color-mix(in srgb,var(--success) 10%,var(--surface));border-color:transparent}.set-num{font-weight:700;color:var(--text-secondary);text-align:center}.check{width:48px;height:48px;border-radius:999px;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:transform .12s ease,background .15s}.check:active{transform:scale(.9)}.check.on{background:var(--success);border-color:var(--success);color:#fff}.sub-unit{font-size:11px;color:var(--text-secondary);text-align:center;margin-top:2px;font-variant-numeric:tabular-nums}.rest-bar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(16px + env(safe-area-inset-bottom));z-index:40;width:calc(100% - 32px);max-width:528px;background:var(--text);color:var(--surface);border-radius:999px;padding:8px 8px 8px 20px;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-card)}.rest-bar.over{background:var(--success);color:#fff}.rest-bar button{height:40px;min-width:48px;border-radius:999px;background:#ffffff29;font-weight:600;font-size:14px;padding:0 12px;color:inherit}.session-banner{position:fixed;left:50%;transform:translate(-50%);z-index:25;bottom:calc(76px + env(safe-area-inset-bottom));width:calc(100% - 32px);max-width:528px;background:var(--text);color:var(--surface);border-radius:999px;padding:10px 10px 10px 20px;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-card)}.suggest{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--success)}.muscle-map{display:flex;gap:8px;justify-content:center}.muscle-map svg{width:50%;max-width:160px;height:auto}.muscle-map .m{fill:var(--muscle-base);transition:fill .15s}.muscle-map .m.primary{fill:var(--muscle-primary)}.muscle-map .m.secondary{fill:var(--muscle-secondary)}.muscle-map .m.selected{fill:var(--text)}.muscle-map .body{fill:var(--muscle-base);opacity:.55}.muscle-map.clickable .m{cursor:pointer}.map-caption{display:flex;justify-content:space-around;font-size:12px;color:var(--text-secondary);font-weight:600}.legend{display:flex;gap:16px;justify-content:center;font-size:12px;color:var(--text-secondary)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.chart{width:100%;height:auto;display:block}.chart .grid-line{stroke:var(--line-soft);stroke-width:1}.chart .raw{fill:var(--text-secondary);opacity:.45}.chart .avg{fill:none;stroke:var(--brand);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.chart text{fill:var(--text-secondary);font-size:10px;font-family:inherit}.empty{text-align:center;padding:40px 16px;color:var(--text-secondary)}.divider{height:1px;background:var(--line-soft);margin:4px 0}.photo-hero{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--r-card);display:block}.steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}.toast{position:fixed;left:50%;transform:translate(-50%);top:calc(max(env(safe-area-inset-top),12px) + 8px);z-index:80;background:var(--text);color:var(--surface);padding:12px 20px;border-radius:999px;font-weight:600;font-size:14px;box-shadow:var(--shadow-card);animation:fade .2s ease-out;max-width:calc(100% - 32px);text-align:center}.switch{position:relative;width:52px;height:32px;border-radius:99px;background:var(--border);transition:background .15s;flex-shrink:0}.switch:after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:99px;background:#fff;transition:transform .15s;box-shadow:0 1px 3px #00000040}.switch.on{background:var(--success)}.switch.on:after{transform:translate(20px)}.stepper{display:flex;align-items:center;gap:4px}.stepper button{width:36px;height:36px;border-radius:99px;border:1px solid var(--border);font-weight:700;font-size:18px}.stepper span{min-width:28px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.photo-slot{width:100%;aspect-ratio:3 / 4;border-radius:12px;background:var(--surface-alt);border:1px dashed var(--border);display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--text-secondary)}.photo-slot img,.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.photo-thumb{width:100%;aspect-ratio:3 / 4;border-radius:12px;overflow:hidden;background:var(--surface-alt)}.compare{display:grid;grid-template-columns:1fr 1fr;gap:8px}.compare img{width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:12px;display:block;background:var(--surface-alt)}.bar-row{display:grid;grid-template-columns:118px 1fr 36px;gap:10px;align-items:center;font-size:14px}.bar-track{position:relative;height:10px;border-radius:99px;background:var(--surface-alt);overflow:hidden}.bar-zone{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--success) 14%,transparent)}.bar-fill{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:var(--brand)}.bar-fill.low{background:color-mix(in srgb,var(--brand) 45%,var(--surface))}.pr-badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:#b7791f}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center}.cal-h{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase}.cal-d{aspect-ratio:1;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.cal-d.gym{background:var(--brand);color:#fff;font-weight:700}.cal-d.home{background:var(--text);color:var(--surface);font-weight:700}.cal-d.today{box-shadow:inset 0 0 0 2px var(--text)}.cal-d.out{visibility:hidden}.glasses{display:flex;flex-wrap:wrap;gap:6px}.glass{width:36px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--surface-alt)}.glass svg path{fill:none;stroke:var(--text-secondary);stroke-width:1.6;stroke-linejoin:round}.glass svg path.w{fill:transparent;stroke:none}.glass.on svg path{stroke:#2b8cff}.glass.on svg path.w{fill:#2b8cff;opacity:.85}.level-bar{height:10px;border-radius:99px;background:var(--surface-alt);overflow:hidden}.level-bar>div{height:100%;border-radius:99px;background:linear-gradient(to right,var(--brand-from),var(--brand-to))}.ach-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.ach{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:14px 6px;border-radius:var(--r-card);background:var(--surface-alt)}.ach .em{font-size:30px;line-height:1}.ach.locked .em{filter:grayscale(1);opacity:.35}.ach .t{font-size:12px;font-weight:700;line-height:1.2}.ach .p{font-size:11px;color:var(--text-secondary);font-variant-numeric:tabular-nums}
