:root{color-scheme:light;--bg: #fffaf8;--bg-2: #faf4f1;--bg-3: #f0e9e5;--bg-4: #e4dbd6;--ink: #2a1f1a;--ink-soft: #5a4a42;--ink-faint: #9a8a82;--ink-ghost: rgba(42, 31, 26, .08);--rule: rgba(42, 31, 26, .08);--green: #c85a42;--green-glow: rgba(200, 90, 66, .18);--green-soft: rgba(200, 90, 66, .08);--red: #c62828;--amber: #c47a20;--phase-menstrual: #c84848;--phase-follicular: #c88a38;--phase-ovulation: #3a9a6a;--phase-luteal: #6060a8;--radius: 10px;--radius-sm: 6px;--card-shadow: 0 1px 3px rgba(42, 31, 26, .06), 0 0 0 1px rgba(42, 31, 26, .04);--card-shadow-hover: 0 4px 12px rgba(42, 31, 26, .08), 0 0 0 1px rgba(42, 31, 26, .06);--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, monospace}[data-theme=dark]{color-scheme:dark;--bg: #120c10;--bg-2: #1a1418;--bg-3: #241c22;--bg-4: #302830;--ink: #f0e8ec;--ink-soft: #b8a8b0;--ink-faint: #7a6a72;--ink-ghost: rgba(240, 232, 236, .12);--rule: rgba(240, 232, 236, .1);--green: #e87461;--green-glow: rgba(232, 116, 97, .25);--green-soft: rgba(232, 116, 97, .12);--card-shadow: 0 1px 3px rgba(0, 0, 0, .3), 0 0 0 1px rgba(255, 255, 255, .05);--card-shadow-hover: 0 4px 12px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .08)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}#root{min-height:100vh;min-height:100dvh}button{font-family:inherit;cursor:pointer;background:none;border:none;color:inherit;padding:0}input,select{font-family:inherit;font-size:inherit}a{color:var(--green);text-decoration:none}::selection{background:var(--green-soft)}.screen{max-width:640px;margin:0 auto;padding:0 16px 80px;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.screen-header{display:flex;align-items:center;gap:12px;padding:18px 0 12px;position:sticky;top:0;background:var(--bg);border-bottom:1px solid var(--rule);z-index:10}.brand-title{font-size:24px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.brand-sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-top:3px}.screen-header>div:first-child{flex:1}.section{margin-top:20px;display:flex;flex-direction:column;gap:8px}.section-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);padding-bottom:4px;display:flex;align-items:center;gap:6px}.section-title:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--green)}.empty{font-size:13px;color:var(--ink-faint);font-style:italic;padding:14px 4px}.icon-btn{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--ink-soft);transition:all .18s ease;font-size:18px}.icon-btn:hover{background:var(--bg-3);color:var(--ink)}.back-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);font-size:20px;color:var(--ink-soft)}.back-btn:hover{background:var(--bg-3)}.add-btn{width:100%;padding:14px;border:1px dashed var(--rule);border-radius:var(--radius);color:var(--ink-faint);font-size:14px;font-weight:500;transition:all .18s ease;margin-top:4px}.add-btn:hover{border-color:var(--green);color:var(--green);background:var(--green-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius);font-size:14px;font-weight:600;color:var(--ink);transition:all .18s ease;cursor:pointer}.btn:hover{background:var(--bg-4)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-block{width:100%}.btn-primary{background:var(--green);color:#fff;border-color:var(--green)}.btn-primary:hover{background:#a04832}.btn-warn{border-color:#ef444473;color:var(--red)}.btn-warn:hover{background:#ef44441f}.btn-large{padding:16px 22px;font-size:16px}.routine-card{display:flex;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;transition:all .18s ease}.routine-card:hover{box-shadow:var(--card-shadow-hover)}.routine-card-main{flex:1;text-align:left;padding:16px 18px}.routine-card-name{font-size:17px;font-weight:600;color:var(--ink);margin-bottom:4px}.routine-card-meta{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);letter-spacing:.04em}.routine-card-edit{display:flex;align-items:center;justify-content:center;width:52px;border-left:1px solid var(--rule);color:var(--ink-faint)}.routine-card-edit:hover{background:var(--bg-3);color:var(--green)}.log-row,.history-row-summary{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);text-align:left;transition:all .18s ease}.log-row:hover,.history-row-summary:hover{border-color:var(--ink-ghost)}.log-row-main{flex:1;min-width:0}.log-row-name{font-size:15px;font-weight:600;margin-bottom:2px}.log-row-meta{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);letter-spacing:.04em}.log-row-active{color:var(--amber);font-weight:700}.log-row-stats{text-align:right}.log-row-stat{font-size:15px;font-weight:700;color:var(--green)}.log-row-stat-sub{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint)}.workout-screen{padding:0 16px 100px}.workout-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:8px;padding:14px 0 12px;background:var(--bg);border-bottom:1px solid var(--rule)}.workout-header-main{flex:1;min-width:0}.workout-header-name{font-size:17px;font-weight:700}.workout-header-meta{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);letter-spacing:.04em;margin-top:2px}.abandon-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--ink-faint);font-size:22px}.abandon-btn:hover{background:#ef44441f;color:var(--red)}.rest-bar{position:relative;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);margin:0 0 14px;overflow:hidden}.rest-bar.is-done{border-color:var(--green);box-shadow:0 0 16px var(--green-glow)}.rest-bar-fill{position:absolute;inset:0 auto 0 0;background:var(--green-soft);transition:width .2s linear}.rest-bar-content{position:relative;display:flex;align-items:center;gap:12px;padding:10px 14px}.rest-bar-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;color:var(--ink-faint)}.rest-bar-time{font-family:var(--font-mono);font-size:18px;font-weight:700;color:var(--green);flex:1}.rest-bar-btn{padding:6px 12px;background:var(--bg-3);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;color:var(--ink-soft)}.rest-bar-btn:hover{background:var(--bg-4)}.exercise-card{background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);margin-bottom:14px;padding:14px 14px 12px}.exercise-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.exercise-card-name{font-size:16px;font-weight:700;color:var(--ink)}.set-grid-header{display:grid;grid-template-columns:32px 1fr 70px 60px 44px 36px;gap:8px;align-items:center;font-family:var(--font-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);padding:0 4px 6px;border-bottom:1px dashed var(--rule)}.set-row{display:grid;grid-template-columns:32px 1fr 70px 60px 44px 36px;gap:8px;align-items:center;padding:8px 4px;border-bottom:1px solid var(--rule);position:relative}.set-row:last-of-type{border-bottom:none}.set-row.is-complete{background:#34d3990f}.set-row.is-warmup{background:#f59e0b0f}.set-row.is-warmup .set-num{color:var(--amber)}.set-actions{display:flex;flex-direction:column;gap:2px;align-items:center}.set-warmup{width:24px;height:20px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:9px;font-weight:700;color:var(--ink-ghost);border-radius:2px;border:1px solid transparent;transition:all .15s ease}.set-warmup:hover{color:var(--amber);border-color:var(--rule)}.set-warmup.is-on{color:var(--amber);background:#f59e0b1f;border-color:#f59e0b59}.set-remove-btn{width:24px;height:20px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--ink-ghost);border-radius:2px;opacity:0}.set-row:hover .set-remove-btn{opacity:.6}.set-remove-btn:hover{color:var(--red);opacity:1}.set-num{font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--ink-faint);text-align:center}.set-prev{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);display:flex;flex-direction:column;gap:2px}.set-hint{font-size:9px;color:var(--green);font-weight:600;letter-spacing:.04em}.set-input{width:100%;padding:12px 8px;text-align:center;font-size:17px;font-weight:600;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius-sm);color:var(--ink);outline:none;transition:all .18s ease;font-feature-settings:"tnum"}.set-input:focus{border-color:var(--green);background:var(--bg)}.set-input.is-complete{color:var(--green)}.set-check{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:18px;color:var(--ink-faint);transition:all .18s cubic-bezier(.2,.6,.2,1)}.set-check.is-on{background:var(--green);color:#fff;border-color:var(--green);box-shadow:0 0 12px var(--green-glow)}.set-check:active{transform:scale(.92)}.add-set-btn{width:100%;margin-top:10px;padding:10px;border:1px dashed var(--rule);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;color:var(--ink-faint);transition:all .18s ease}.add-set-btn:hover{color:var(--green);border-color:var(--green)}.workout-footer{margin-top:18px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;z-index:100;animation:fade-in .2s ease both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-width:520px;background:var(--bg);border:1px solid var(--rule);border-radius:14px 14px 0 0;padding:22px 20px 28px;max-height:90vh;overflow-y:auto;animation:slide-up .28s cubic-bezier(.2,.6,.2,1) both}@media (min-width: 640px){.modal-backdrop{align-items:center}.modal{border-radius:14px}}@keyframes slide-up{0%{transform:translateY(20px)}to{transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.modal-title{font-size:17px;font-weight:700}.modal-eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--green);margin-bottom:4px}.modal-section{margin-top:18px;padding-top:14px;border-top:1px dashed var(--rule)}.modal-section:first-of-type{margin-top:8px;padding-top:0;border-top:none}.modal-section-title{font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:8px}.modal-section .btn{margin-bottom:6px}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;font-size:14px}.setting-row input[type=number]{width:70px;padding:8px;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius-sm);color:var(--ink);text-align:center;outline:none}.setting-row input[type=checkbox]{width:22px;height:22px;accent-color:var(--green)}.setting-unit{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.setting-row-toggle{gap:12px}.modal-summary{text-align:center}.summary-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.summary-stat{background:var(--bg-3);border-radius:var(--radius);padding:14px 10px}.summary-stat-val{font-size:22px;font-weight:800;color:var(--green);font-feature-settings:"tnum"}.summary-stat-key{font-family:var(--font-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-top:4px}.summary-prs{text-align:left;margin:14px 0;padding:14px;background:#34d39914;border-radius:var(--radius)}.summary-prs-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--green);margin-bottom:8px}.summary-pr{display:flex;justify-content:space-between;padding:4px 0;font-size:13px}.summary-pr-name{color:var(--ink)}.summary-pr-val{color:var(--green);font-weight:700}.routine-name-input{flex:1;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:10px 12px;font-size:16px;font-weight:600;color:var(--ink);outline:none}.routine-name-input:focus{border-color:var(--green)}.editor-card{background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);padding:14px;margin-bottom:12px}.editor-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.editor-card-name{font-size:15px;font-weight:700}.editor-card-actions{display:flex;gap:4px}.editor-set-grid{display:grid;grid-template-columns:32px 1fr 80px 36px;gap:6px 8px;align-items:center;font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.editor-set-row{display:contents}.editor-set-input{padding:10px 8px;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:15px;color:var(--ink);outline:none;text-align:center;font-feature-settings:"tnum"}.editor-set-input:focus{border-color:var(--green)}.picker-search{width:100%;padding:12px 14px;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius);font-size:14px;color:var(--ink);outline:none;margin-bottom:12px}.picker-search:focus{border-color:var(--green)}.picker-groups{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}.picker-group-btn{padding:5px 10px;font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;border-radius:var(--radius-sm);color:var(--ink-faint);background:var(--bg-3);border:1px solid var(--rule);transition:all .18s ease}.picker-group-btn.is-active{background:var(--green-soft);color:var(--green);border-color:var(--green)}.picker-group-btn:hover{color:var(--ink)}.picker-group-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);padding:8px 14px 4px;border-bottom:1px dashed var(--rule)}.picker-list{max-height:280px;overflow-y:auto;margin-bottom:12px}.picker-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 14px;border-bottom:1px solid var(--rule);text-align:left;transition:background .16s ease}.picker-item:hover{background:var(--bg-3)}.picker-item-name{font-size:14px}.picker-item-instr{display:block;font-size:11px;color:var(--ink-faint);line-height:1.4;margin-top:2px;max-width:320px;font-family:var(--font-mono)}.picker-item-instr{display:block;font-size:11px;color:var(--ink-faint);line-height:1.4;margin-top:2px;max-width:320px;font-size:9px}.picker-item-instr{display:block;font-size:11px;color:var(--ink-faint);line-height:1.4;margin-top:2px;max-width:320px;letter-spacing:.14em}.picker-item-instr{display:block;font-size:11px;color:var(--ink-faint);line-height:1.4;margin-top:2px;max-width:320px;text-transform:uppercase}.picker-item-instr{display:block;font-size:11px;line-height:1.4;margin-top:2px;max-width:320px;color:var(--ink-faint)}.picker-item-instr{display:block;font-size:11px;color:var(--ink-faint);line-height:1.4;margin-top:2px;max-width:320px}.picker-create{display:flex;flex-direction:column;gap:8px;margin-top:12px}.picker-create input,.picker-create select{padding:12px;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius);color:var(--ink);outline:none}.picker-create input:focus,.picker-create select:focus{border-color:var(--green)}.history-row{background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.history-row.is-expanded{border-color:var(--green)}.history-row-summary{border:none;border-radius:0;background:none}.history-row-name{font-size:15px;font-weight:600}.history-row-date{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);letter-spacing:.04em;margin-top:2px}.history-row-stats{text-align:right}.history-row-stat{font-size:15px;font-weight:700;color:var(--green)}.history-row-stat-sub{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint)}.history-row-detail{padding:12px 16px 16px;border-top:1px dashed var(--rule)}.history-detail-exercise{margin-bottom:10px}.history-detail-name{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase;margin-bottom:4px}.history-detail-sets{display:flex;flex-wrap:wrap;gap:4px}.history-set-chip{font-family:var(--font-mono);font-size:11px;padding:4px 8px;background:var(--bg-3);border-radius:var(--radius-sm);color:var(--ink-soft)}.chart-select{width:100%;padding:12px 14px;background:var(--bg-3);border:1px solid var(--rule);border-radius:var(--radius);color:var(--ink);font-size:14px;outline:none}.chart-select:focus{border-color:var(--green)}.chart{margin-top:12px;padding:12px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius)}.chart-svg{width:100%;height:auto;display:block}.chart-legend{display:flex;gap:16px;justify-content:center;margin-top:8px;font-family:var(--font-mono);font-size:10px;color:var(--ink-faint)}.chart-legend span{display:inline-flex;align-items:center;gap:4px}.chart-swatch{display:inline-block;width:10px;height:10px;border-radius:2px}.welcome{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:var(--bg)}.welcome-card{max-width:420px;width:100%}.welcome-brand{font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--green);font-weight:700;margin-bottom:12px}.welcome-headline{font-size:36px;font-weight:800;letter-spacing:-.025em;line-height:1.05;color:var(--ink);margin:0 0 12px}.welcome-sub{font-size:15px;line-height:1.5;color:var(--ink-soft);margin:0 0 32px}.welcome-features{display:flex;flex-direction:column;gap:18px;margin-bottom:36px}.welcome-feature{display:flex;align-items:flex-start;gap:14px;color:var(--green)}.welcome-feature svg{flex-shrink:0;margin-top:2px}.welcome-feature-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:2px}.welcome-feature-desc{font-size:13px;color:var(--ink-faint);line-height:1.4}.welcome-step-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--green);font-weight:700;margin-bottom:8px}.welcome-step-title{font-size:24px;font-weight:700;letter-spacing:-.015em;color:var(--ink);margin:0 0 6px}.welcome-step-desc{font-size:14px;color:var(--ink-faint);margin:0 0 24px;line-height:1.5}.welcome-options{display:flex;flex-direction:column;gap:8px;margin-bottom:28px}.welcome-option{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--bg);box-shadow:var(--card-shadow);border-radius:var(--radius);text-align:left;transition:all .18s ease}.welcome-option:hover{box-shadow:var(--card-shadow-hover)}.welcome-option.is-selected{box-shadow:0 0 0 2px var(--green)}.welcome-option-radio{width:20px;height:20px;border-radius:50%;border:2px solid var(--rule);flex-shrink:0;transition:all .18s ease;position:relative}.welcome-option.is-selected .welcome-option-radio{border-color:var(--green);background:var(--green)}.welcome-option.is-selected .welcome-option-radio:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:#fff}.welcome-option-label{display:block;font-size:15px;font-weight:600;color:var(--ink)}.welcome-option-desc{display:block;font-size:12px;color:var(--ink-faint);margin-top:2px}.landing{min-height:100vh;min-height:100dvh;background:var(--bg);overflow-y:auto}.landing-inner{max-width:640px;margin:0 auto;padding:0 24px}.landing-hero{padding:80px 0 60px;text-align:center}.landing-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--green);font-weight:600;margin-bottom:20px}.landing-h1{font-size:clamp(36px,8vw,52px);font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--ink);margin:0 0 20px}.landing-lead{font-size:17px;line-height:1.6;color:var(--ink-soft);max-width:440px;margin:0 auto 32px}.landing-cta{display:inline-flex;align-items:center;justify-content:center;padding:16px 36px;background:var(--green);color:#fff;font-size:16px;font-weight:700;border-radius:var(--radius);border:none;cursor:pointer;transition:background .18s ease;letter-spacing:.01em}.landing-cta:hover{background:#a04832}.landing-cta:active{transform:translateY(1px)}.landing-cta-sub{font-size:13px;color:var(--ink-faint);margin-top:12px}.landing-features{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:40px 0 60px;border-top:1px solid var(--rule)}@media (max-width: 520px){.landing-features{grid-template-columns:1fr}.landing-hero{padding:48px 0 40px}}.landing-feature-icon{color:var(--green);margin-bottom:10px}.landing-feature-title{font-size:16px;font-weight:700;color:var(--ink);margin:0 0 6px}.landing-feature-desc{font-size:14px;line-height:1.55;color:var(--ink-faint);margin:0}.landing-section{padding:40px 0;border-top:1px solid var(--rule);text-align:center}.landing-section-title{font-size:22px;font-weight:700;color:var(--ink);margin:0 0 10px}.landing-section-desc{font-size:15px;line-height:1.6;color:var(--ink-soft);max-width:460px;margin:0 auto}.landing-section-cta{padding:48px 0 60px}.landing-footer{padding:32px 0 24px;border-top:1px solid var(--rule);text-align:center}.landing-footer-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}.landing-footer-links a{font-size:12px;color:var(--ink-faint);text-decoration:underline;text-underline-offset:2px}.app-footer{margin-top:40px;padding:20px 0 12px;border-top:1px solid var(--rule);text-align:center}.app-footer-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}.app-footer-links{font-size:12px;color:var(--ink-faint)}.app-footer-links a{color:var(--ink-faint);text-decoration:underline;text-underline-offset:2px}.app-footer-links a:hover{color:var(--ink-soft)}.app-footer-sep{margin:0 6px}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:6px}.stat-card{background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);padding:12px 10px;text-align:center}.stat-card-val{font-size:22px;font-weight:800;color:var(--green);font-feature-settings:"tnum"}.stat-card-key{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin-top:4px}.stat-card-link{cursor:pointer;transition:all .18s ease}.stat-card-link:hover{border-color:var(--green);background:var(--green-soft)}.stat-card-icon{font-size:20px;line-height:1.3}.pr-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius)}.pr-row-main{flex:1;min-width:0}.pr-row-name{font-size:14px;font-weight:600}.pr-row-date{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);margin-top:2px}.pr-row-val{font-size:16px;font-weight:800;color:var(--green);font-feature-settings:"tnum";white-space:nowrap;margin-left:12px}.bw-input-row{display:flex;gap:10px}.bw-input{flex:1;padding:14px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);color:var(--ink);font-size:18px;font-weight:600;outline:none;font-feature-settings:"tnum"}.bw-input:focus{border-color:var(--green)}.bw-input::placeholder{color:var(--ink-faint);font-weight:400;font-size:14px}.bw-row{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius)}.bw-row-val{font-size:16px;font-weight:700;color:var(--green)}.bw-row-date{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);margin-top:2px}.cycle-badge{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);text-align:left;margin-top:8px;transition:all .2s ease}.cycle-badge:hover{border-color:var(--green)}.cycle-badge-empty{font-size:13px;color:var(--ink-faint);font-style:italic}.cycle-badge-empty .cycle-badge-icon{font-size:18px}.cycle-badge-phase{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;font-weight:700;white-space:nowrap}.cycle-badge-hint{flex:1;font-size:12px;color:var(--ink-faint);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cycle-badge-arrow{color:var(--ink-ghost);font-size:16px;flex-shrink:0}.phase-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}[data-phase=menstrual] .phase-dot{background:var(--phase-menstrual);box-shadow:0 0 6px var(--phase-menstrual)}[data-phase=follicular] .phase-dot{background:var(--phase-follicular);box-shadow:0 0 6px var(--phase-follicular)}[data-phase=ovulation] .phase-dot{background:var(--phase-ovulation);box-shadow:0 0 6px var(--phase-ovulation)}[data-phase=luteal] .phase-dot{background:var(--phase-luteal);box-shadow:0 0 6px var(--phase-luteal)}[data-phase=menstrual] .cycle-badge-phase{color:var(--phase-menstrual)}[data-phase=follicular] .cycle-badge-phase{color:var(--phase-follicular)}[data-phase=ovulation] .cycle-badge-phase{color:var(--phase-ovulation)}[data-phase=luteal] .cycle-badge-phase{color:var(--phase-luteal)}.phase-card{background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);padding:18px;margin-top:6px}.phase-card-phase{display:flex;align-items:center;gap:10px;margin-bottom:10px}.phase-label{font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.phase-day{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.phase-hint{font-size:13px;line-height:1.55;color:var(--ink-soft);margin:0}.phase-prediction{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;color:var(--ink-faint);margin:12px 0 0;padding-top:10px;border-top:1px dashed var(--rule)}.phase-prediction-soon{color:var(--phase-menstrual);font-weight:600}.phase-prediction-now{color:var(--phase-menstrual);font-weight:700}.phase-avg{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);margin:6px 0 0;letter-spacing:.04em}.phase-guide-row{display:flex;gap:12px;padding:12px 14px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius)}.phase-guide-dot{width:10px;height:10px;border-radius:50%;margin-top:3px;flex-shrink:0}[data-phase=menstrual] .phase-guide-dot{background:var(--phase-menstrual)}[data-phase=follicular] .phase-guide-dot{background:var(--phase-follicular)}[data-phase=ovulation] .phase-guide-dot{background:var(--phase-ovulation)}[data-phase=luteal] .phase-guide-dot{background:var(--phase-luteal)}.phase-guide-name{font-size:14px;font-weight:600;margin-bottom:2px}.phase-guide-days{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);letter-spacing:.06em;margin-bottom:4px}.phase-guide-desc{font-size:12px;color:var(--ink-soft);line-height:1.4}.heatmap{margin-top:16px;padding:14px;background:var(--bg);box-shadow:var(--card-shadow);border-radius:var(--radius)}.heatmap-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.heatmap-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}.heatmap-legend{display:flex;align-items:center;gap:3px}.heatmap-legend-label{font-family:var(--font-mono);font-size:8px;color:var(--ink-faint);letter-spacing:.08em;margin:0 2px}.heatmap-grid{display:flex;gap:3px}.heatmap-day-labels{display:flex;flex-direction:column;gap:3px;margin-right:4px}.heatmap-day-label{width:12px;height:12px;font-family:var(--font-mono);font-size:8px;color:var(--ink-faint);display:flex;align-items:center;justify-content:center}.heatmap-week{display:flex;flex-direction:column;gap:3px}.heatmap-cell{width:12px;height:12px;border-radius:2px;background:var(--bg-3)}.heatmap-cell[data-intensity=low]{background:var(--green);opacity:.35}.heatmap-cell[data-intensity=mid]{background:var(--green);opacity:.6}.heatmap-cell[data-intensity=high]{background:var(--green);opacity:.9}.heatmap-cell.is-today{outline:1.5px solid var(--ink-faint);outline-offset:-.5px}.heatmap-cell.is-future{background:transparent}.superset-badge{margin-top:8px;padding:4px 10px;font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--green);background:var(--green-soft);border-radius:var(--radius-sm);display:inline-block}.superset-link{display:flex;align-items:center;justify-content:center;width:100%;padding:6px;margin:-4px 0;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--ink-faint);border:1px dashed transparent;border-radius:var(--radius-sm);transition:all .18s ease;z-index:1;position:relative}.superset-link:hover{color:var(--green);border-color:var(--green);background:var(--green-soft)}.superset-link.is-linked{color:var(--green);border-color:var(--green);border-style:solid;background:var(--green-soft)}.superset-header{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--green);padding:8px 14px 4px;margin-top:8px}.superset-member{border-left:3px solid var(--green);border-radius:0;padding-left:8px;margin-left:4px}.superset-member .exercise-card{margin-bottom:8px}.pr-flash{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 18px;margin-bottom:12px;background:var(--green-soft);border:1px solid var(--green);border-radius:var(--radius);animation:pr-flash-in .4s cubic-bezier(.2,.8,.2,1.2) both}@keyframes pr-flash-in{0%{opacity:0;transform:scale(.9) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}.pr-flash-icon{color:var(--green);display:flex;align-items:center}.pr-flash-text{font-family:var(--font-mono);font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--green)}.workout-notes{margin-bottom:14px}.workout-notes-header{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}.workout-notes-input{width:100%;padding:12px 14px;background:var(--bg-2);border:1px solid var(--rule);border-radius:var(--radius);color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.5;resize:vertical;outline:none}.workout-notes-input:focus{border-color:var(--green)}.workout-notes-input::placeholder{color:var(--ink-faint)}.finish-anim{color:var(--green);margin-bottom:12px;animation:finish-pop .6s cubic-bezier(.2,.8,.2,1.2) both}@keyframes finish-pop{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.picker-group-btn{display:inline-flex;align-items:center;gap:4px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
