:root{--color-paper: oklch(97% .008 60);--color-paper-2: oklch(94% .01 60);--color-paper-3: oklch(90% .012 58);--color-rule: oklch(85% .01 55);--color-neutral: oklch(60% .008 55);--color-ink-2: oklch(38% .01 50);--color-ink: oklch(18% .012 50);--color-accent: oklch(58% .19 27);--color-accent-hover: oklch(52% .2 27);--color-accent-ink: oklch(97% .01 60);--color-focus: oklch(62% .19 27);--color-success: oklch(62% .15 145);--color-danger: oklch(55% .18 25);--color-warn: oklch(75% .15 85);--font-display: "Big Shoulders Display", "Arial Narrow", sans-serif;--font-body: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-outlier: "Geist Mono", ui-monospace, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.375rem;--text-xl: 1.75rem;--text-2xl: 2.25rem;--text-display: clamp(2rem, 3vw + 1rem, 3rem);--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 3rem;--space-2xl: 4.5rem;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-short: .15s;--dur-med: .22s;--radius-card: 2px;--radius-input: 3px;--radius-btn: 3px;--radius-pill: 999px;--shadow-hard: 3px 3px 0 0 var(--color-ink);--shadow-hard-sm: 2px 2px 0 0 var(--color-ink)}*{box-sizing:border-box}html{overflow-x:clip;scrollbar-gutter:stable}body{margin:0;overflow-x:clip;font-family:var(--font-body);font-size:var(--text-base);line-height:1.55;background-color:var(--color-paper);color:var(--color-ink)}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.05;letter-spacing:-.01em;margin:0;color:var(--color-ink)}a{color:var(--color-accent)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{transition-duration:1ms!important;animation-duration:1ms!important}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-xl);padding:var(--space-lg) var(--space-sm);background:linear-gradient(var(--color-paper),var(--color-paper)) padding-box,repeating-linear-gradient(-45deg,var(--color-paper-2) 0 2px,transparent 2px 14px)}.auth-hero{position:relative;flex:1 1 380px;max-width:520px;height:clamp(280px,34vw,460px);display:flex;align-items:center;justify-content:center;text-align:center;padding:0 var(--space-lg)}.auth-hero-animation{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:clamp(280px,34vw,460px);height:auto;opacity:.8;z-index:0;pointer-events:none}.auth-hero-content{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:0 0 var(--space-xl) 0}.auth-hero-brand{font-family:var(--font-display);font-weight:900;font-size:clamp(2.75rem,5vw + 1rem,4.5rem);line-height:.95;text-transform:uppercase;letter-spacing:.01em;margin:-2.75rem 0 0;color:var(--color-ink)}.auth-hero-brand-accent{color:var(--color-accent)}.auth-hero-lower{display:flex;flex-direction:column;align-items:center}.auth-hero-tagline{margin:0 0 var(--space-xs) 0;font-size:var(--text-md);color:var(--color-ink-2)}.auth-hero-frase-wrap{overflow:hidden;min-height:2.6em}.auth-hero-frase{margin:0;font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);text-transform:uppercase;letter-spacing:.02em;color:var(--color-accent);opacity:0;transform:translate(-28px);transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.auth-hero-frase.is-visible{opacity:1;transform:translate(0)}@media (max-width: 860px){.auth-hero{height:clamp(220px,60vw,300px);padding:0 var(--space-sm)}.auth-hero-content{padding:0 0 var(--space-lg) 0}.auth-hero-brand{margin-top:-2rem}.auth-hero-animation{width:clamp(220px,60vw,300px)}}.auth-form{display:flex;flex-direction:column;gap:var(--space-2xs);width:100%;max-width:400px;background:var(--color-paper);padding:var(--space-lg);border:1px solid var(--color-rule);border-top:4px solid var(--color-accent);box-shadow:var(--shadow-hard)}.auth-form h1{margin:0 0 var(--space-2xs) 0;font-size:var(--text-2xl);text-transform:uppercase;letter-spacing:.01em;text-align:center}.auth-form label{font-size:var(--text-sm);font-weight:600;color:var(--color-ink-2)}.auth-form input,.auth-form select,.auth-form textarea{padding:.65rem var(--space-xs);border:1px solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-paper);color:var(--color-ink);font-size:var(--text-base);font-family:inherit;transition:border-color var(--dur-short) var(--ease-out)}.auth-form input:focus,.auth-form select:focus,.auth-form textarea:focus{border-color:var(--color-accent)}.auth-form button[type=submit]{margin-top:var(--space-xs);padding:.85rem var(--space-md);border:none;border-radius:var(--radius-btn);background-color:var(--color-accent);color:var(--color-accent-ink);font-family:var(--font-display);font-weight:700;font-size:var(--text-md);text-transform:uppercase;letter-spacing:.03em;cursor:pointer;box-shadow:var(--shadow-hard-sm);transition:transform var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out)}.auth-form button[type=submit]:hover{background-color:var(--color-accent-hover)}.auth-form button[type=submit]:active{transform:translate(2px,2px);box-shadow:0 0 0 0 var(--color-ink)}.auth-form button:disabled{opacity:.55;cursor:not-allowed;transform:none}.password-field{position:relative;display:flex;align-items:center}.password-field input{width:100%;padding-right:4.75rem}.auth-form .password-toggle{position:absolute;right:.4rem;margin-top:0;padding:.35rem .6rem;background-color:transparent;color:var(--color-accent);font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;border:none;border-radius:var(--radius-input);box-shadow:none}.auth-form .password-toggle:hover{background-color:var(--color-paper-2)}.auth-error{color:var(--color-danger);font-size:var(--text-sm);font-weight:600;margin:0}.auth-switch{font-size:var(--text-sm);color:var(--color-ink-2);margin-top:var(--space-2xs);text-align:center}.auth-info{font-size:var(--text-sm);color:var(--color-ink-2);margin:0;line-height:1.5}.auth-link-button{background:none;border:none;padding:0;color:var(--color-accent);font-size:var(--text-sm);font-weight:600;text-align:left;cursor:pointer;text-decoration:underline}@media (max-width: 860px){.auth-page{align-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-sm)}}@media (max-width: 480px){.auth-form{padding:var(--space-sm);gap:var(--space-3xs)}}.dashboard-page .page-header h1{font-size:var(--text-display)}.dashboard-vacio{padding:var(--space-xl) var(--space-md);text-align:center;border:1px dashed var(--color-rule)}.dashboard-vacio p{margin:0 0 var(--space-2xs) 0}.dashboard-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-sm);margin-bottom:var(--space-lg)}.stat-card{display:flex;flex-direction:column;gap:var(--space-3xs);padding:var(--space-md);background:var(--color-paper);border:1px solid var(--color-rule);border-top:4px solid var(--color-accent);box-shadow:var(--shadow-hard-sm)}.stat-valor{font-family:var(--font-outlier);font-size:var(--text-2xl);font-weight:500;font-variant-numeric:tabular-nums;color:var(--color-ink)}.stat-etiqueta{font-size:var(--text-sm);color:var(--color-ink-2)}.dashboard-seccion{margin-bottom:var(--space-lg)}.dashboard-seccion .page-header{margin-bottom:var(--space-sm);padding-bottom:var(--space-2xs)}.dashboard-seccion .page-header h2{font-size:var(--text-lg);text-transform:uppercase}.dashboard-recientes-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid var(--color-rule)}.dashboard-reciente-item{display:flex;align-items:baseline;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);color:var(--color-ink);text-decoration:none;border-bottom:1px solid var(--color-rule);transition:background-color var(--dur-short) var(--ease-out)}.dashboard-recientes-lista li:last-child .dashboard-reciente-item{border-bottom:none}.dashboard-reciente-item:hover{background-color:var(--color-paper-2)}.dashboard-reciente-fecha{flex:0 0 auto;font-family:var(--font-outlier);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-ink-2)}.dashboard-reciente-ejercicios{flex:1 1 auto;font-size:var(--text-sm)}@media (max-width: 600px){.dashboard-reciente-item{flex-direction:column;gap:var(--space-3xs)}}.navbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);background:var(--color-paper);border-bottom:3px solid var(--color-ink);flex-wrap:wrap}.navbar-brand{font-family:var(--font-display);font-weight:900;font-size:var(--text-lg);text-transform:uppercase;letter-spacing:.01em;white-space:nowrap}.navbar-brand .navbar-brand-accent{color:var(--color-accent)}.navbar-links{display:flex;flex-wrap:wrap;gap:var(--space-md)}.navbar-links a{position:relative;display:inline-flex;align-items:center;gap:var(--space-3xs);color:var(--color-ink);font-weight:600;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.03em;text-decoration:none;padding-bottom:2px;border-bottom:2px solid transparent;transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out)}.navbar-links a svg{opacity:.75;transition:opacity var(--dur-short) var(--ease-out)}.navbar-links a:hover,.navbar-links a:hover svg{color:var(--color-accent);opacity:1}.navbar-links a.navbar-link-active svg{opacity:1}.navbar-links a.navbar-link-active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.navbar-user{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--text-sm)}.navbar-user span{color:var(--color-ink-2);font-weight:500}.navbar-user button{display:inline-flex;align-items:center;gap:var(--space-3xs);padding:.45rem .9rem;border:1px solid var(--color-ink);border-radius:var(--radius-btn);background-color:transparent;color:var(--color-ink);font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out)}.navbar-user button:hover{background-color:var(--color-ink);color:var(--color-paper)}.page-container{max-width:960px;margin:0 auto;padding:var(--space-lg) var(--space-md)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:3px solid var(--color-ink);flex-wrap:wrap;gap:var(--space-xs)}.page-header h1{font-size:var(--text-xl);text-transform:uppercase}.page-header-link{display:inline-flex;align-items:center;gap:var(--space-3xs);color:var(--color-accent);font-weight:600;text-decoration:none;transition:color var(--dur-short) var(--ease-out)}.page-header-link:hover{color:var(--color-accent-hover);text-decoration:underline}.loading-spinner-container{display:flex;align-items:center;justify-content:center;min-height:12rem}.loading-spinner-inline{display:flex;align-items:center;min-height:8rem;padding-top:var(--space-md)}.loading-spinner{display:inline-flex;gap:var(--space-2xs)}.loading-spinner-dot{width:.65rem;height:.65rem;border-radius:var(--radius-pill);background:var(--color-accent);animation:loading-spinner-bounce .9s var(--ease-in-out) infinite}.loading-spinner-dot:nth-child(2){animation-delay:.15s}.loading-spinner-dot:nth-child(3){animation-delay:.3s}@keyframes loading-spinner-bounce{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-.4rem);opacity:1}}.btn-primary{display:inline-flex;align-items:center;gap:var(--space-3xs);padding:.65rem 1.15rem;border:none;border-radius:var(--radius-btn);background-color:var(--color-accent);color:var(--color-accent-ink);font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.03em;text-decoration:none;cursor:pointer;box-shadow:var(--shadow-hard-sm);transition:transform var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out)}.btn-primary:hover{background-color:var(--color-accent-hover)}.btn-primary:active{transform:translate(2px,2px);box-shadow:0 0 0 0 var(--color-ink)}.btn-secondary{display:inline-flex;align-items:center;gap:var(--space-3xs);padding:.55rem .9rem;border:1px dashed var(--color-ink-2);border-radius:var(--radius-btn);background:none;color:var(--color-ink-2);font-weight:600;font-size:var(--text-sm);cursor:pointer;align-self:flex-start;transition:border-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out)}.btn-secondary:hover{border-color:var(--color-accent);color:var(--color-accent)}.data-table{width:100%;border-collapse:collapse;background:var(--color-paper);border:1px solid var(--color-rule)}.data-table thead th{text-align:left;padding:var(--space-xs) var(--space-sm);background:var(--color-ink);color:var(--color-paper);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.data-table td{text-align:left;vertical-align:middle;padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--color-rule)}.data-table tbody tr{transition:background-color var(--dur-short) var(--ease-out)}.data-table tbody tr:hover{background-color:var(--color-paper-2)}.table-actions{white-space:nowrap}.table-actions>*+*{margin-left:var(--space-sm)}.table-actions a{display:inline-flex;align-items:center;gap:var(--space-3xs);vertical-align:middle;font-weight:600;font-size:var(--text-sm);text-decoration:none}.table-actions a:hover{text-decoration:underline}.table-actions button{display:inline-flex;align-items:center;gap:var(--space-3xs);vertical-align:middle;border:none;background:none;color:var(--color-danger);font-weight:600;cursor:pointer;padding:0;font-size:var(--text-sm)}.table-actions button:hover{text-decoration:underline}.pagination{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);margin-top:var(--space-md);font-family:var(--font-outlier);font-variant-numeric:tabular-nums;font-size:var(--text-sm)}.pagination button{padding:.4rem .9rem;border:1px solid var(--color-ink);border-radius:var(--radius-btn);background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out)}.pagination button:hover:not(:disabled){background-color:var(--color-ink);color:var(--color-paper)}.pagination button:disabled{opacity:.4;cursor:not-allowed}@media (max-width: 640px){.data-table{display:block;overflow-x:auto}}.session-form{max-width:680px}.session-form h2{font-size:var(--text-md);text-transform:uppercase;margin:var(--space-xs) 0 0}.session-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:var(--space-2xs);align-items:center;padding:var(--space-2xs) 0;border-bottom:1px solid var(--color-rule)}.session-row select,.session-row input{padding:.5rem;border:1px solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-paper);color:var(--color-ink);font-size:var(--text-sm);width:100%}.session-row input{font-family:var(--font-outlier);font-variant-numeric:tabular-nums}.session-row button{border:none;background:none;color:var(--color-danger);font-weight:600;cursor:pointer;padding:.3rem}@media (max-width: 640px){.session-row{grid-template-columns:1fr}}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2xs);margin-bottom:var(--space-md);padding:var(--space-sm);background:var(--color-paper-2);border-left:3px solid var(--color-accent)}.filter-bar label{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--color-ink-2)}.filter-bar input,.filter-bar select{padding:.4rem .6rem;border:1px solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-paper)}.periodo-rango{font-size:var(--text-sm);color:var(--color-ink-2);font-variant-numeric:tabular-nums}.semana-nav{display:inline-flex;gap:var(--space-2xs)}.semana-nav button{font-size:var(--text-xs);padding:.4rem .6rem}.semana-nav .flecha{font-size:.75em}.filter-bar button[type=button]{padding:.5rem .9rem;border:1px solid var(--color-ink);border-radius:var(--radius-btn);background:var(--color-paper);color:var(--color-ink);font-weight:600;cursor:pointer}.filter-bar button[type=button]:disabled{border-color:var(--color-danger);color:var(--color-danger);background:var(--color-paper);opacity:.6;cursor:not-allowed}.filter-bar-volumen{min-height:5.75rem;align-content:flex-start}@media (max-width: 480px){.filter-bar{flex-direction:column;align-items:stretch}}.session-detail-fecha{font-family:var(--font-outlier);font-weight:500;font-variant-numeric:tabular-nums;text-transform:capitalize;color:var(--color-ink);margin-bottom:var(--space-3xs)}.session-detail-notas{color:var(--color-ink-2);margin-bottom:var(--space-md)}.volver-link{display:inline-block;margin-top:var(--space-md);color:var(--color-accent);font-weight:600;text-decoration:none}.volver-link:hover{text-decoration:underline}.chart-container{position:relative;height:360px;background:var(--color-paper);border:1px solid var(--color-rule);padding:var(--space-sm)}.analisis-destacado{font-size:var(--text-md);margin-bottom:var(--space-md);padding:var(--space-xs) var(--space-sm);background:var(--color-paper-2);border-left:3px solid var(--color-accent)}.analisis-destacado strong{font-family:var(--font-outlier);font-weight:500;font-variant-numeric:tabular-nums;color:var(--color-accent)}.analisis-nota{margin-top:var(--space-xs);color:var(--color-ink-2);font-size:var(--text-sm)}.rango-referencia{margin:calc(var(--space-2xs) * -1) 0 var(--space-xs);color:var(--color-ink-2);font-size:var(--text-sm)}.zonas-leyenda{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-xs);font-size:var(--text-sm);color:var(--color-ink-2)}.zonas-leyenda span{display:inline-flex;align-items:center;gap:var(--space-3xs)}.zonas-leyenda .swatch{display:inline-block;width:.75rem;height:.75rem;border-radius:2px}.analisis-subheader{margin-top:var(--space-lg)}.analisis-subheader h2{font-size:var(--text-lg);text-transform:uppercase}.info-toggle{width:1.5rem;height:1.5rem;border-radius:50%;border:1px solid var(--color-ink);background:var(--color-paper);color:var(--color-ink);font-family:var(--font-outlier);font-style:italic;font-weight:700;line-height:1;cursor:pointer}.info-toggle:hover{background:var(--color-paper-2)}.info-panel{margin-bottom:var(--space-sm);padding:var(--space-sm);background:var(--color-paper-2);border-left:3px solid var(--color-accent);font-size:var(--text-sm);color:var(--color-ink-2)}.info-panel p{margin:0 0 var(--space-2xs)}.info-panel ul{margin:0 0 var(--space-2xs);padding-left:var(--space-md)}.info-panel li{margin-bottom:var(--space-3xs)}.page-header-acciones{display:flex;align-items:center;gap:var(--space-xs)}.video-thumbnail{position:relative;display:block;width:100%;max-width:220px;padding:0;border:1px solid var(--color-rule);border-radius:var(--radius-card);background:none;cursor:pointer;overflow:hidden;line-height:0}.video-thumbnail img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover}.video-play-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;background:var(--color-accent);color:var(--color-accent-ink);font-size:var(--text-sm)}.video-embed{position:relative;width:100%;max-width:220px;aspect-ratio:16 / 9}.video-embed iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none}.catalogo-intro{max-width:60ch;margin-bottom:var(--space-lg);color:var(--color-ink-2)}.catalogo-grupo{margin-bottom:var(--space-xl)}.catalogo-grupo h2{font-size:var(--text-lg);text-transform:uppercase;margin-bottom:var(--space-sm);padding-bottom:var(--space-2xs);border-bottom:2px solid var(--color-ink)}.catalogo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-md)}.catalogo-card{display:flex;flex-direction:column;gap:var(--space-2xs);padding:var(--space-sm);background:var(--color-paper);border:1px solid var(--color-rule);border-top:4px solid var(--color-accent);box-shadow:var(--shadow-hard-sm);transition:transform var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out)}.catalogo-card:hover{transform:translateY(-3px);box-shadow:5px 5px 0 0 var(--color-ink)}.catalogo-card h3{font-size:var(--text-md);margin:0}.catalogo-card-descripcion{margin:0;font-size:var(--text-sm);color:var(--color-ink-2);flex-grow:1}.catalogo-card .btn-primary{align-self:flex-start}.catalogo-card .btn-primary:disabled{cursor:default;opacity:.6}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-md);background:#1c15128c;animation:confirm-overlay-in var(--dur-med) var(--ease-out)}.confirm-dialog{width:100%;max-width:24rem;padding:var(--space-lg);background:var(--color-paper);border-top:4px solid var(--color-accent);box-shadow:var(--shadow-hard);animation:confirm-dialog-in var(--dur-med) var(--ease-out)}.confirm-dialog p{margin:0 0 var(--space-md);font-size:var(--text-md);color:var(--color-ink)}.confirm-dialog-acciones{display:flex;justify-content:flex-end;gap:var(--space-sm)}.confirm-dialog-peligro{padding:.65rem 1.15rem;border:none;border-radius:var(--radius-btn);background-color:var(--color-danger);color:var(--color-accent-ink);font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.03em;cursor:pointer;box-shadow:var(--shadow-hard-sm);transition:transform var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}.confirm-dialog-peligro:active{transform:translate(2px,2px);box-shadow:0 0 0 0 var(--color-ink)}@keyframes confirm-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes confirm-dialog-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
