:root{--bg: #0d0f0f;--surface: #151818;--card: #1c2020;--border: #2a2f2f;--accent: #d4f53c;--accent2: #3cd4f5;--accent3: #f53c7a;--text: #e8edec;--muted: #7a8888;--warn: #f5a23c;--font-display: "Bebas Neue", sans-serif;--font-body: "DM Sans", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased}#root{min-height:100vh}button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}h1,h2,h3,.display{font-family:var(--font-display);letter-spacing:.02em;margin:0}button,input,textarea,select{font-family:inherit;color:inherit}.exercise-select{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;font-size:14px;width:100%;max-width:320px}a{color:inherit;text-decoration:none}.block{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface)}.block-header{background:var(--card);display:flex;align-items:center;justify-content:space-between;padding:10px 14px}.block-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.section-heading{font-size:13px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.stats-body{padding:14px;display:flex;flex-direction:column;gap:14px}.stat-row{display:flex;flex-direction:column;gap:2px}.stat-label{font-size:11px;color:var(--muted)}.stat-value{font-family:var(--font-display);font-size:22px;color:var(--accent);letter-spacing:.02em}.stat-value-empty{color:var(--muted)}.stat-value-group{display:flex;flex-direction:column;gap:2px}.stat-sub{font-size:12px;color:var(--muted)}.chart-body{padding:14px}.chart-empty{font-size:13px;color:var(--muted);text-align:center;padding:24px 0}.progression-svg{width:100%;height:180px}.chart-gridline{stroke:var(--border);stroke-width:1}.chart-axis-label{font-size:10px;fill:var(--muted)}.chart-line{stroke:var(--accent);stroke-width:2}.chart-dot{fill:var(--accent)}.exercise{display:grid;grid-template-columns:1fr auto;gap:12px;padding:12px 14px;border-top:1px solid var(--border)}.exercise:first-child{border-top:none}.ex-name{font-size:15px;font-weight:500}.ex-note-block{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}.ex-note{font-size:12px;color:var(--muted);font-style:italic;font-weight:300}.ex-description-block{margin-bottom:8px}.ex-description-toggle{width:100%;display:flex;align-items:center;justify-content:flex-start;gap:8px;background:transparent;border:none;padding:0;cursor:pointer;text-align:left}.ex-description-toggle .block-label{color:var(--accent2)}.ex-description-caret{color:var(--muted);font-size:15px;flex-shrink:0}.ex-description{font-size:12px;color:var(--muted);font-weight:300;margin-top:6px}.ex-reps-num{font-family:var(--font-display);font-size:22px;color:var(--accent);text-align:right}.ex-reps-label{font-size:10px;color:var(--muted);text-align:right}.superset-divider{background:#d4f53c08;padding:6px 14px}.superset-divider .label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);opacity:.7}.badge{font-size:10px;letter-spacing:.1em;text-transform:uppercase;border-radius:20px;padding:5px 10px;border:1px solid transparent;white-space:nowrap}.badge.green{background:#d4f53c1f;color:var(--accent);border-color:#d4f53c4d}.badge.blue{background:#3cd4f51f;color:var(--accent2);border-color:#3cd4f54d}.badge.red{background:#f53c7a1a;color:var(--accent3);border-color:#f53c7a4d}.badge.orange{background:#f5a23c1a;color:var(--warn);border-color:#f5a23c4d}.badge.grey{background:#7a88881a;color:var(--muted);border-color:#7a88884d}.notes-block{background:#f5a23c0d;border:1px solid rgba(245,162,60,.2);border-radius:10px;padding:10px 14px}.notes-block .title{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--warn);margin-bottom:6px}.notes-block .item{font-size:13px;color:var(--muted);padding-left:14px;position:relative}.notes-block .item:before{content:"→";position:absolute;left:0;color:var(--warn)}.tab-nav{display:flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;width:fit-content}.tab-nav button{background:var(--surface);border:none;border-right:1px solid var(--border);padding:8px 16px;font-size:13px;cursor:pointer}.tab-nav button:last-child{border-right:none}.tab-nav button.active{background:var(--accent);color:var(--bg);font-weight:700}.tab-nav-sm button{padding:4px 10px;font-size:11px}.header-glow{background:radial-gradient(circle,rgba(212,245,60,.12) 0%,transparent 70%)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:20px}.login-glow{position:absolute;top:-20%;left:50%;width:800px;height:800px;transform:translate(-50%);background:radial-gradient(circle,rgba(212,245,60,.12) 0%,transparent 70%);pointer-events:none}.login-card{position:relative;z-index:1;width:100%;max-width:340px;display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:32px 28px}.login-logo{width:100%;max-width:160px;margin:0 auto;display:block}.login-title{font-family:"MedievalSharp",var(--font-display);text-align:center;font-size:32px;color:var(--accent);text-transform:uppercase;margin:12px 0 0}.login-slogan{font-family:"Cinzel",var(--font-display);text-align:center;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent2);margin:4px 0 0}.login-subtitle{text-align:center;color:var(--muted);font-size:13px;margin:4px 0 20px}.login-label{font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-top:14px}.login-input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;font-size:16px;margin-top:6px;outline:none}.login-input:focus{border-color:var(--accent)}.login-error{color:var(--accent3);font-size:12px;margin-top:12px}.login-button{margin-top:22px;background:var(--accent);color:var(--bg);font-weight:700;border:none;border-radius:8px;padding:12px;font-size:14px;letter-spacing:.05em;cursor:pointer}.login-button:disabled{opacity:.6;cursor:default}.app-shell{min-height:100vh;display:flex;flex-direction:column}.navbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px;padding-top:calc(14px + env(safe-area-inset-top));border-bottom:1px solid var(--border);position:relative}.navbar-title{position:relative;z-index:1;flex-shrink:0;display:flex;align-items:center}.navbar-logo{height:32px;width:auto;display:block}.navbar-links{display:flex;align-items:center;gap:4px;position:relative;z-index:1}.navbar-links a{font-size:12px;color:var(--muted);padding:6px 10px;border-radius:8px}.navbar-links a.active{color:var(--accent);font-weight:700}.navbar-right{display:flex;align-items:center;gap:10px;min-width:0;position:relative;z-index:1}.navbar-user{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:90px}.navbar-logout{background:transparent;border:1px solid var(--border);border-radius:8px;padding:8px 14px;font-size:12px;cursor:pointer;flex-shrink:0}.app-content{flex:1;padding:20px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));max-width:520px;width:100%;margin:0 auto}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.dialog-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px;width:100%;max-width:320px}.dialog-title{font-size:18px;margin-bottom:8px}.dialog-message{font-size:13px;color:var(--muted);margin-bottom:20px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px}.dialog-button{border-radius:8px;padding:12px 16px;font-size:13px;cursor:pointer;border:1px solid var(--border)}.dialog-button.secondary{background:transparent;color:var(--text)}.dialog-button.primary{background:var(--accent);color:var(--bg);font-weight:700;border-color:var(--accent)}.whats-new-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px;width:100%;max-width:340px;max-height:80vh;overflow-y:auto}.whats-new-entry{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid var(--border)}.whats-new-entry:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}.whats-new-date{font-size:11px;color:var(--muted)}.whats-new-badge{display:inline-block;background:#d4f53c1f;color:var(--accent);border:1px solid rgba(212,245,60,.3);border-radius:20px;padding:4px 10px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px}.whats-new-list{display:flex;flex-direction:column;gap:10px;margin:16px 0 20px;padding:0;list-style:none}.whats-new-list li{font-size:13px;color:var(--muted);padding-left:16px;position:relative}.whats-new-list li:before{content:"→";position:absolute;left:0;color:var(--accent)}.session-summary-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px;width:100%;max-width:360px;max-height:80vh;overflow-y:auto}.summary-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0 20px}.summary-stat{display:flex;flex-direction:column;gap:2px}.summary-prs{border-top:1px solid var(--border);padding-top:16px;margin-bottom:16px}.pr-badge-anchor{position:relative;display:inline-flex}.fireworks{position:absolute;top:50%;left:50%;width:0;height:0}.firework-particle{position:absolute;top:0;left:0;width:5px;height:5px;border-radius:50%;transform:rotate(var(--angle)) translateY(0);opacity:0;animation:firework-pop 1.3s ease-out var(--delay, 0s) forwards}.spark-accent{background:var(--accent)}.spark-accent2{background:var(--accent2)}.spark-warn{background:var(--warn)}@keyframes firework-pop{0%{transform:rotate(var(--angle)) translateY(0);opacity:1}60%{opacity:1}to{transform:rotate(var(--angle)) translateY(calc(-1 * var(--distance)));opacity:0}}@media(prefers-reduced-motion:reduce){.firework-particle{animation:none;opacity:0}}.summary-pr-list{display:flex;flex-direction:column;gap:10px;margin:10px 0 0;padding:0;list-style:none}.summary-pr-list li{display:flex;align-items:center;gap:8px;font-size:13px}.summary-pr-name{flex:1}.summary-pr-weight{font-family:var(--font-display);color:var(--accent);font-size:15px}.summary-message{font-size:13px;color:var(--warn);font-style:italic;margin-bottom:20px}.feedback-bubble{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));right:calc(16px + env(safe-area-inset-right));width:48px;height:48px;border-radius:50%;background:var(--accent);border:none;font-size:20px;cursor:pointer;box-shadow:0 4px 14px #0006;z-index:50}.feedback-panel{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));right:calc(16px + env(safe-area-inset-right));left:16px;width:auto;max-width:280px;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;z-index:50;box-shadow:0 4px 14px #0006}.feedback-header{display:flex;align-items:center;justify-content:space-between;background:var(--card);padding:10px 14px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.feedback-close{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1}.feedback-form{padding:12px;display:flex;flex-direction:column;gap:10px}.feedback-textarea{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px;font-size:16px;resize:none;outline:none}.feedback-textarea:focus{border-color:var(--accent)}.feedback-send{background:var(--accent);color:var(--bg);font-weight:700;border:none;border-radius:8px;padding:10px;font-size:13px;cursor:pointer}.feedback-send:disabled{opacity:.5;cursor:default}.info-banner{background:#3cd4f50d;border:1px solid rgba(60,212,245,.2);border-radius:10px;margin-bottom:20px;overflow:hidden}.info-banner-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:transparent;border:none;padding:12px 14px;cursor:pointer;text-align:left}.info-banner-title{font-size:12px;font-weight:700;letter-spacing:.05em;color:var(--accent2)}.info-banner-caret{color:var(--accent2);font-size:11px;flex-shrink:0}.info-banner-body{padding:0 14px 14px;font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:8px}.info-banner-body p{margin:0}.info-banner-body ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.info-banner-body strong{color:var(--text)}.program-row{width:100%;display:flex;align-items:center;justify-content:space-between;background:var(--card);border:none;padding:16px 18px;cursor:pointer;text-align:left}.program-row-name{font-size:16px;font-weight:500}.program-expanded{padding:16px 18px;border-top:1px solid var(--border)}.program-summary{font-size:12px;color:var(--muted);margin-bottom:14px}.start-button{background:var(--accent);color:var(--bg);font-weight:700;border:none;border-radius:8px;padding:10px 18px;font-size:13px;cursor:pointer}.start-button:disabled{opacity:.6;cursor:default}.schedule{display:flex;flex-direction:column;gap:10px}.schedule-week{display:flex;flex-direction:column;gap:6px}.schedule-week-label{font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}.schedule-week-days{display:flex;flex-direction:column;gap:8px;min-width:0}.schedule-chip{width:100%;min-width:0;border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface);cursor:pointer}.schedule-chip.done{border-color:#d4f53c40;opacity:.65}.schedule-chip.upcoming{opacity:.5}.schedule-chip.next,.schedule-chip.active{border-color:var(--accent);background:#d4f53c0f}.schedule-chip-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;min-width:0}.schedule-chip-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.schedule-chip-exercises{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}.schedule-chip-caret{color:var(--muted);font-size:10px;flex-shrink:0}.schedule-chip-detail{margin-top:8px;border-top:1px solid var(--border);padding-top:8px}.schedule-chip-section{margin-bottom:10px}.schedule-chip-section:last-child{margin-bottom:0}.schedule-chip-section-name{font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.schedule-chip-detail .exercise{padding:8px 0}.schedule-continue{background:var(--accent);color:var(--bg);font-weight:700;border:none;border-radius:6px;padding:8px 12px;font-size:12px;cursor:pointer;flex-shrink:0}.schedule-continue:disabled{opacity:.6;cursor:default}.session-timer-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.session-timer{font-family:var(--font-display);font-size:22px;color:var(--accent);letter-spacing:.02em;margin-bottom:8px}.prefill-notice{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--warn);margin-bottom:8px}.rest-duration-editor{display:flex;align-items:center;gap:8px;margin-bottom:20px}.rest-duration-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.rest-duration-input{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:16px;outline:none;width:64px;text-align:center}.rest-duration-input:focus{border-color:var(--accent)}.rest-duration-suffix{font-size:12px;color:var(--muted)}.rest-timer{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--accent);border-radius:999px;padding:10px 22px;box-shadow:0 4px 14px #0006;z-index:50;cursor:pointer}.rest-timer-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.rest-timer-value{font-family:var(--font-display);font-size:26px;color:var(--accent);letter-spacing:.02em}.target-line{font-size:14px;margin-bottom:4px}.set-list{display:flex;flex-direction:column;gap:8px;margin:14px 0}.set-row{display:flex;align-items:flex-start;gap:8px;background:var(--surface);border-radius:8px;padding:8px}.set-row.completed{background:#d4f53c0f}.set-number,.set-actions{flex-shrink:0;margin-top:14px}.set-number{font-size:11px;color:var(--muted)}.set-actions{display:flex;gap:6px}.set-fields{display:flex;gap:8px;flex:1;min-width:0}@media(max-width:340px){.set-fields{flex-direction:column}}.set-field{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.set-field-label{font-size:9px;line-height:12px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);padding-left:2px}.set-stepper{display:flex;align-items:stretch;background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:hidden}.set-stepper:focus-within{border-color:var(--accent)}.set-stepper-btn{background:transparent;border:none;width:26px;flex-shrink:0;font-size:15px;line-height:1;color:var(--muted);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none}.set-stepper-btn:active{color:var(--accent);background:#d4f53c14}.set-stepper-btn:disabled{opacity:.5;cursor:default}.set-stepper-value,.set-stepper-input{flex:1;min-width:0;background:transparent;border:none;font-size:16px;text-align:center;display:flex;align-items:center;justify-content:center;padding:8px 2px;cursor:text}.set-stepper-input{outline:none;font-family:inherit}.set-stepper-input:focus{border-color:var(--accent)}.set-timer-button{margin-top:4px;width:100%;background:transparent;border:1px solid var(--accent2);color:var(--accent2);border-radius:6px;padding:4px 2px;font-size:11px;font-weight:600;letter-spacing:.02em;cursor:pointer}.set-timer-button.countdown{border-color:var(--warn);color:var(--warn);font-family:var(--font-display);font-size:15px}.set-timer-button.running{background:#3cd4f51f}.set-tick{background:transparent;border:1px solid var(--border);border-radius:6px;width:36px;height:36px;flex-shrink:0;cursor:pointer;color:var(--muted)}.set-tick.active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.set-remove{background:transparent;border:1px solid var(--border);border-radius:6px;width:36px;height:36px;flex-shrink:0;cursor:pointer;color:var(--accent3)}.add-set-button{background:transparent;border:1px dashed var(--border);border-radius:8px;padding:8px 14px;font-size:12px;color:var(--muted);cursor:pointer;width:100%}
