:root{--bg: #F5F4F0;--surface: #FFFFFF;--surface2: #EFEEEA;--surface3: #E8E7E3;--border: #EBEBEA;--accent: #7EB8A4;--accent-hover: #6BA592;--accent-dim: rgba(126, 184, 164, .08);--success: #4CAF82;--danger: #B5564E;--macro-protein: #5DAF87;--macro-carbs: #D4A04A;--macro-fat: #D88BAE;--text: #1C1C1C;--text2: #8A8A86;--text3: #B5B5B0;--radius: 12px;--radius-lg: 20px;--shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--ease: cubic-bezier(.4,0,.2,1)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}body{background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;font-weight:400;line-height:1.65;max-width:430px;margin:0 auto;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-shell{display:flex;flex-direction:column;min-height:100vh;padding-bottom:80px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes prPop{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}@keyframes subtlePulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes coachPulse{0%,to{box-shadow:0 4px 12px #00000026,0 0 #5daf8766}50%{box-shadow:0 4px 12px #00000026,0 0 0 8px #5daf8700}}.coach-fab-pulse{animation:coachPulse 3s ease-in-out infinite}.stagger-item{animation:fadeIn .3s ease both}.stagger-item:nth-child(1){animation-delay:0ms}.stagger-item:nth-child(2){animation-delay:30ms}.stagger-item:nth-child(3){animation-delay:60ms}.stagger-item:nth-child(4){animation-delay:90ms}.stagger-item:nth-child(5){animation-delay:.12s}.stagger-item:nth-child(6){animation-delay:.15s}.brand-logo{display:inline-flex;align-items:center;gap:8px}.brand-mark{display:inline-flex;align-items:center;justify-content:center;color:var(--accent);flex-shrink:0}.brand-text{font-family:Inter,sans-serif;font-weight:300;letter-spacing:1px;color:var(--text);line-height:1}.brand-text--sm{font-size:15px}.brand-text--md{font-size:24px}.brand-text--lg{font-size:28px}.header{padding:20px 24px 16px;position:sticky;top:0;z-index:100;background:var(--bg)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:430px;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -2px 8px #0000000a;display:flex;z-index:100;padding-bottom:env(safe-area-inset-bottom,0)}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;padding:10px 0;gap:4px;cursor:pointer;border:none;background:none;color:#aaa;font-size:9px;font-family:Inter,sans-serif;font-weight:500;letter-spacing:1px;text-transform:uppercase;transition:color .2s var(--ease)}.nav-item.active{color:var(--accent)}.nav-item svg{width:20px;height:20px;stroke-width:1.5}.card{background:var(--surface);border-radius:var(--radius-lg);padding:28px;margin-bottom:12px;box-shadow:var(--shadow);border:1px solid var(--border)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:14px 20px;border-radius:var(--radius);font-family:Inter,sans-serif;font-weight:400;font-size:13px;letter-spacing:.5px;cursor:pointer;border:none;transition:all .2s var(--ease);white-space:nowrap}.btn-primary{background:var(--accent);color:#fff;height:48px;box-shadow:0 1px 3px #7eb8a433}.btn-primary:hover{background:var(--accent-hover);box-shadow:0 2px 6px #7eb8a440}.btn-primary:active{transform:scale(.98);opacity:.85}.btn-primary:disabled{opacity:.3;cursor:not-allowed;box-shadow:none}.btn-secondary{background:var(--surface);color:var(--text);border:1.5px solid #C0C0BC;box-shadow:0 1px 2px #0000000a}.btn-secondary:hover{background:var(--surface2);border-color:#a8a8a4}.btn-secondary:active{transform:scale(.98);opacity:.85}.btn-ghost{background:transparent;color:var(--text2);padding:8px 12px;border-radius:8px}.btn-ghost:hover{background:var(--surface2);color:var(--text)}.btn-ghost:active{opacity:.6}.btn-danger{background:#b5564e0f;color:var(--danger);border:1.5px solid rgba(181,86,78,.25)}.btn-danger:hover{background:#b5564e1a;border-color:#b5564e59}.btn-danger:active{transform:scale(.98);opacity:.85}.btn-green{background:var(--accent);color:#fff;box-shadow:0 1px 3px #7eb8a433}.btn-green:hover{background:var(--accent-hover)}.btn-green:active{transform:scale(.98);opacity:.85}.btn-full{width:100%}input,select,textarea{background:var(--surface2);border:1px solid transparent;border-radius:var(--radius);color:var(--text);font-family:Inter,sans-serif;font-size:14px;padding:13px 16px;width:100%;outline:none;transition:border-color .15s var(--ease),background .15s var(--ease);height:48px;appearance:none;-webkit-appearance:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);background:var(--surface)}textarea{height:auto}input::placeholder{color:var(--text3)}select option{background:var(--surface)}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239A9A96' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}label{display:block;font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3);margin-bottom:8px}.field{margin-bottom:20px}.page{padding:8px 24px 0;animation:fadeIn .2s ease}.page-title{font-size:24px;font-weight:300;letter-spacing:.5px;margin-bottom:4px;line-height:1.2;color:var(--text)}.page-subtitle{font-size:13px;color:var(--text3);margin-bottom:32px;font-weight:400}.stats-row{display:flex;gap:0;margin-bottom:32px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:24px 0}.stat-card{flex:1;text-align:center;border-right:1px solid var(--border)}.stat-card:last-child{border-right:none}.stat-val{font-size:32px;font-weight:300;color:var(--text);line-height:1;letter-spacing:-.5px}.stat-label{font-size:10px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3);margin-top:6px}.macro-bar-wrap{margin-bottom:14px}.macro-bar-wrap:last-child{margin-bottom:0}.macro-bar-label{display:flex;justify-content:space-between;font-size:13px;font-weight:400;margin-bottom:6px}.macro-bar-track{height:2px;background:#1c1c1c14;border-radius:1px;overflow:hidden}.macro-bar-fill{height:100%;border-radius:1px;transition:width .6s var(--ease)}.meal-card{padding:24px 8px;margin:0 -8px;border-bottom:1px solid var(--border);cursor:pointer;border-radius:12px;transition:background .15s var(--ease)}.meal-card:last-child{border-bottom:none}.meal-card:hover{background:#1c1c1c05}.meal-name{font-weight:400;font-size:16px;margin-bottom:4px}.meal-desc{font-size:13px;color:var(--text2);margin-bottom:14px;line-height:1.6}.macros-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:12px}.macro-cell{text-align:center;padding:10px 4px}.macro-val{font-family:DM Mono,monospace;font-size:14px;font-weight:400;color:var(--text)}.macro-key{font-size:9px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3);margin-top:3px}.day-ring-wrap{display:flex;align-items:center;gap:24px;margin-bottom:24px}.ring-svg{transform:rotate(-90deg)}.ring-track{fill:none;stroke:#1c1c1c1a;stroke-width:2}.ring-fill{fill:none;stroke-width:2;stroke-linecap:round;transition:stroke-dashoffset .8s var(--ease)}.ring-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.ring-wrap{position:relative;width:100px;height:100px;flex-shrink:0}.ring-cals{font-size:20px;font-weight:300;color:var(--text);line-height:1;letter-spacing:-.5px}.ring-sub{font-size:9px;font-weight:500;color:var(--text3);letter-spacing:1px;text-transform:uppercase;margin-top:4px}.pr-trophy-card{padding:24px 0;border-bottom:1px solid var(--border)}.pr-trophy-card:last-child{border-bottom:none}.pr-shimmer{font-size:28px;font-weight:300;color:var(--text);letter-spacing:-.5px}.pr-badge-new{display:inline-flex;align-items:center;gap:3px;background:var(--accent);color:#fff;font-size:9px;font-weight:500;letter-spacing:1px;text-transform:uppercase;padding:3px 8px;border-radius:4px}.active-workout{position:fixed;inset:0;background:var(--bg);z-index:200;display:flex;flex-direction:column;max-width:430px;margin:0 auto;animation:fadeIn .2s ease}.active-header{padding:16px 24px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;border-bottom:1px solid var(--border)}.timer{font-family:DM Mono,monospace;font-size:18px;font-weight:400;color:var(--text);letter-spacing:1px}.active-scroll{flex:1;overflow-y:auto;padding:24px 24px 32px;-webkit-overflow-scrolling:touch}.exercise-block{margin-bottom:32px}.exercise-block-header{padding:0 0 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);margin-bottom:16px}.exercise-block-name{font-weight:400;font-size:16px}.exercise-block-cat{font-size:10px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3)}.exercise-block-body{padding:0}.set-input-row{display:grid;grid-template-columns:28px 1fr 1fr auto;gap:10px;align-items:center;margin-bottom:8px;padding:6px 0}.set-input-row.set-completed{opacity:.5}.set-num{font-size:13px;font-weight:400;color:var(--text3);text-align:center}.set-input{padding:10px 8px;min-height:44px;font-size:15px;text-align:center;font-family:DM Mono,monospace;border-radius:var(--radius)}.set-done{width:32px;height:32px;border-radius:50%;border:1.5px solid #C0C0BC;background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s var(--ease);flex-shrink:0}.set-done:hover{border-color:#999;background:var(--surface2)}.set-done.checked{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 3px #7eb8a433}.progress-bar{height:2px;background:#1c1c1c14;border-radius:1px;overflow:hidden;margin-bottom:16px}.progress-fill{height:100%;background:var(--accent);border-radius:1px;transition:width .3s ease}.finish-btn{position:sticky;bottom:0;background:var(--bg);padding:16px 24px 20px;border-top:1px solid var(--border);flex-shrink:0}.rest-timer-overlay{position:fixed;bottom:0;left:0;right:0;z-index:200;display:flex;justify-content:center;padding:0 16px 24px;pointer-events:none;animation:slideUp .25s ease-out}.rest-timer-card{pointer-events:auto;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px 24px 16px;width:100%;max-width:400px;text-align:center;box-shadow:0 -4px 24px #0000001f}.rest-timer-label{font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3);margin-bottom:4px}.rest-timer-countdown{font-family:DM Mono,monospace;font-size:48px;font-weight:500;color:var(--accent);line-height:1.1;margin-bottom:12px}.rest-timer-progress-track{width:100%;height:4px;background:var(--surface2);border-radius:2px;overflow:hidden;margin-bottom:10px}.rest-timer-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width 1s linear}.rest-timer-exercise{font-size:12px;color:var(--text2);margin-bottom:14px}.rest-timer-actions{display:flex;gap:10px;justify-content:center}.rest-timer-btn{font-family:Inter,sans-serif;font-size:13px;font-weight:500;padding:8px 20px;border-radius:8px;border:1px solid var(--border);background:var(--surface2);color:var(--text);cursor:pointer}.rest-timer-skip{background:var(--accent);color:#fff;border-color:var(--accent)}.add-exercise-btn{border:1.5px dashed #C0C0BC;background:transparent;border-radius:var(--radius);color:var(--text2);padding:16px;width:100%;font-family:Inter,sans-serif;font-size:13px;font-weight:400;letter-spacing:.5px;cursor:pointer;transition:all .2s var(--ease)}.add-exercise-btn:hover{background:var(--surface2);border-color:#a8a8a4;color:var(--text)}.add-exercise-btn:active{transform:scale(.99);opacity:.7}.modal-overlay{position:fixed;inset:0;background:#00000047;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:300;display:flex;align-items:flex-end;animation:fadeIn .15s}.modal{background:var(--surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:28px 28px 44px;width:100%;max-width:430px;margin:0 auto;animation:slideUp .25s var(--ease);max-height:88vh;overflow-y:auto}.modal-handle{width:32px;height:3px;background:var(--surface3);border-radius:2px;margin:0 auto 24px}.modal-title{font-size:20px;font-weight:300;letter-spacing:.3px;margin-bottom:20px;color:var(--text)}.tabs{display:flex;gap:0;margin-bottom:32px;border-bottom:1px solid var(--border)}.tab{flex:1;padding:12px 8px;text-align:center;font-size:13px;font-weight:400;letter-spacing:.3px;cursor:pointer;transition:all .2s var(--ease);color:var(--text2);border:none;background:none;font-family:Inter,sans-serif;border-bottom:2px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);font-weight:500;border-bottom-color:var(--accent)}.filter-row{display:flex;gap:8px;overflow-x:auto;margin-bottom:20px;padding-bottom:2px;scrollbar-width:none}.filter-row::-webkit-scrollbar{display:none}.filter-chip{flex-shrink:0;padding:8px 16px;border-radius:24px;font-size:12px;font-weight:400;cursor:pointer;border:1.5px solid #C8C8C4;background:var(--surface);color:var(--text);transition:all .2s var(--ease);font-family:Inter,sans-serif;letter-spacing:.3px;box-shadow:0 1px 2px #00000008}.filter-chip:hover{border-color:#a8a8a4;background:var(--surface2)}.filter-chip.active{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 1px 3px #7eb8a426}.empty-state{text-align:center;padding:64px 24px}.empty-icon{width:48px;height:48px;margin:0 auto 16px;color:var(--text3);opacity:.5}.empty-icon svg{width:100%;height:100%}.empty-cta{margin-top:16px}.empty-title{font-weight:400;font-size:16px;margin-bottom:8px;color:var(--text)}.empty-sub{font-size:13px;color:var(--text3);line-height:1.65;max-width:240px;margin:0 auto}.sets-table{width:100%;border-collapse:collapse;font-size:13px;font-family:DM Mono,monospace}.sets-table th{text-align:left;padding:10px 6px;font-size:10px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3);border-bottom:1px solid var(--border)}.sets-table td{padding:10px 6px;border-bottom:1px solid var(--border)}.sets-table tr:last-child td{border-bottom:none}.divider{height:1px;background:var(--border);margin:24px 0}.row-between{display:flex;justify-content:space-between;align-items:center}.text-accent{color:var(--text)}.text-green{color:var(--success)}.text-muted{color:var(--text2);font-size:13px}.section-label{font-size:11px;font-weight:500;letter-spacing:1.5px;text-transform:uppercase;color:var(--text3);margin-bottom:18px}.note-area{resize:none;height:78px;font-size:14px}.flex-center{display:flex;align-items:center}.flex-col{display:flex;flex-direction:column}.flex-center-gap-4{display:flex;align-items:center;gap:4px}.flex-center-gap-6{display:flex;align-items:center;gap:6px}.flex-center-gap-8{display:flex;align-items:center;gap:8px}.flex-center-gap-12{display:flex;align-items:center;gap:12px}.flex-center-gap-16{display:flex;align-items:center;gap:16px}.flex-wrap-gap-8{display:flex;flex-wrap:wrap;gap:8px}.text-center{text-align:center}.text-right{text-align:right}.cursor-pointer{cursor:pointer}.gap-4{gap:4px}.gap-6{gap:6px}.gap-8{gap:8px}.gap-12{gap:12px}.gap-14{gap:14px}.gap-16{gap:16px}.mb-2{margin-bottom:2px}.mb-4{margin-bottom:4px}.mb-6{margin-bottom:6px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-14{margin-bottom:14px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.mb-24{margin-bottom:24px}.mb-28{margin-bottom:28px}.mb-32{margin-bottom:32px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.pt-12{padding-top:12px}.mono{font-family:DM Mono,monospace}.mono-sm{font-family:DM Mono,monospace;font-size:12px;color:var(--text3)}.mono-md{font-family:DM Mono,monospace;font-size:14px}.mono-lg{font-family:DM Mono,monospace;font-size:15px}.label-sm{font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3)}.label-xs{font-size:10px;font-weight:500;letter-spacing:.5px;text-transform:uppercase;color:var(--text3)}.text-sm{font-size:13px;color:var(--text2)}.text-xs{font-size:12px;color:var(--text3)}.text-body{font-size:14px;font-weight:400}.font-400{font-weight:400}.font-500{font-weight:500}.btn-reset{background:none;border:none;padding:0;cursor:pointer;font-family:Inter,sans-serif;color:inherit}.link-btn{background:none;border:none;color:var(--text3);font-size:12px;cursor:pointer;font-family:Inter,sans-serif;text-decoration:underline;text-underline-offset:3px}.flex-1{flex:1}.flex-1-min0{flex:1;min-width:0}.flex-shrink-0{flex-shrink:0}.flex-gap-6{display:flex;gap:6px}.flex-wrap-gap-6{display:flex;flex-wrap:wrap;gap:6px}.mb-0{margin-bottom:0}.mb-10{margin-bottom:10px}.mb-44{margin-bottom:44px}.mt-6{margin-top:6px}.pt-16{padding-top:16px}.w-full{width:100%}.text-11-muted{font-size:11px;color:var(--text3)}.text-10-muted{font-size:10px;color:var(--text3)}.text-9-muted{font-size:9px;color:var(--text3)}.text-danger{color:var(--danger)}.text-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.italic{font-style:italic}.lh-15{line-height:1.5}.lh-165{line-height:1.65}.btn-h44{height:44px}.coach-hero{margin-bottom:28px;padding:28px 24px 24px;background:var(--surface2);border-radius:16px;border:1px solid var(--border)}.coach-hero-label{font-size:13px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;color:var(--accent)}.coach-hero-streak{font-size:11px;font-family:DM Mono,monospace;color:var(--text2);background:var(--surface3);padding:2px 8px;border-radius:20px;letter-spacing:.3px;white-space:nowrap}.coach-hero-message{font-size:20px;font-weight:400;line-height:1.65;color:var(--text);letter-spacing:-.2px}.coach-hero-nudge{font-size:13px;line-height:1.5;color:var(--text2);margin-top:12px;font-style:italic}.check-circle{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:transparent;cursor:pointer;padding:0;transition:all .2s ease}.check-circle[aria-checked=true],.check-circle--checked{border-color:var(--success);background:var(--success)}.selector-chip{height:36px;border:1px solid var(--border);background:transparent;color:var(--text2);border-radius:8px;font-size:13px;font-weight:400;cursor:pointer;transition:all .15s ease}.selector-chip[aria-pressed=true],.selector-chip--active{border-color:var(--accent);background:var(--accent);color:#fff}.focus-chip{height:32px;padding:0 12px;border:1px solid var(--border);background:transparent;color:var(--text2);border-radius:8px;font-size:12px;font-weight:400;cursor:pointer;transition:all .15s ease}.focus-chip[aria-pressed=true],.focus-chip--active{border-color:var(--accent);background:var(--accent);color:#fff}.energy-dot{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;padding:0}.energy-dot[aria-pressed=true],.energy-dot--active{border-color:var(--accent);background:var(--accent)}.energy-dot-label{font-size:12px;font-weight:500;color:var(--text3)}.energy-dot[aria-pressed=true] .energy-dot-label,.energy-dot--active .energy-dot-label{color:#fff}.plan-card{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface)}.plan-row{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:opacity .2s ease}.plan-row:last-child{border-bottom:none}.plan-row--logged{opacity:.5;cursor:default}.notif-card{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;margin-bottom:8px;border-radius:12px;border:1px solid var(--border);background:var(--surface);animation:fadeIn .3s ease}.notif-card--priority{background:#1c1c1c08}.notif-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.notif-title{font-size:13px;font-weight:500;margin-bottom:2px;line-height:1.3}.notif-body{font-size:12px;color:var(--text2);line-height:1.5}.notif-action-btn{margin-top:8px;padding:5px 12px;font-size:11px;font-weight:500;letter-spacing:.3px;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer}.notif-dismiss{padding:4px;color:var(--text3);font-size:16px;line-height:1;flex-shrink:0}.notif-enable-push{width:100%;padding:10px 0;font-size:12px;font-weight:400;color:var(--text3);background:none;border:1px dashed var(--border);border-radius:10px;cursor:pointer;margin-top:4px}.water-btn{width:30px;height:30px;border-radius:50%;font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.water-btn--minus{border:1px solid var(--border);background:var(--surface2);color:var(--text)}.water-btn--minus:disabled{color:var(--text3);cursor:default}.water-btn--plus{border:none;background:#6b9bd2;color:#fff;transition:background .2s ease}.water-btn--plus-done{background:var(--success)}.swap-panel{padding:8px 16px 12px;background:var(--surface2);border-bottom:1px solid var(--border);animation:fadeIn .2s ease}.swap-option{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;margin-bottom:4px;border-radius:8px;background:var(--surface);border:1px solid var(--border);cursor:pointer;transition:border-color .15s ease}.swap-option--custom{background:transparent;border-style:dashed}.swap-pick{font-size:11px;color:var(--accent);font-weight:500;flex-shrink:0;margin-left:8px}.check-circle:focus-visible,.selector-chip:focus-visible,.focus-chip:focus-visible,.energy-dot:focus-visible,.water-btn:focus-visible,.swap-option:focus-visible,.notif-action-btn:focus-visible,.notif-dismiss:focus-visible,.notif-enable-push:focus-visible,.activity-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip-link{position:absolute;top:-40px;left:0;background:var(--accent);color:#fff;padding:8px 16px;z-index:100;font-size:14px;border-radius:0 0 var(--radius) 0;transition:top .2s ease}.skip-link:focus{top:0}.loading-dots-inline{display:flex;gap:6px;justify-content:center;padding:32px 0}.loading-dot{width:6px;height:6px;border-radius:50%;background:var(--text3);animation:pulse 1.2s ease-in-out infinite}.loading-dot:nth-child(2){animation-delay:.15s}.loading-dot:nth-child(3){animation-delay:.3s}.spinner-sm{width:14px;height:14px;border:1.5px solid #fff;border-top-color:transparent;border-radius:50%;display:inline-block;animation:subtlePulse .7s linear infinite}.dropdown-menu{position:absolute;top:calc(100% + 8px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:4px;min-width:120px;z-index:100;box-shadow:var(--shadow)}.dropdown-item{width:100%;padding:10px 14px;font-size:13px;font-weight:400;background:none;border:none;cursor:pointer;text-align:left;border-radius:8px;font-family:Inter,sans-serif}.dropdown-item--danger{color:var(--danger)}.alert{font-size:13px;margin-bottom:16px;padding:10px 14px;border-radius:8px;line-height:1.5}.alert-error{color:var(--danger);background:#b5564e0f;border:1px solid rgba(181,86,78,.12)}.alert-success{color:var(--success);background:#7d8b6a0f;border:1px solid rgba(125,139,106,.12)}.auth-screen{position:fixed;inset:0;background:var(--bg);z-index:600;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;animation:fadeIn .3s}.auth-heading{color:var(--text2);font-size:13px;margin-bottom:40px;text-align:center;max-width:260px;line-height:1.65}.auth-form{width:100%;max-width:320px}.auth-tabs{display:flex;margin-bottom:28px;width:100%;max-width:320px;border-bottom:1px solid var(--border)}.auth-tab{flex:1;padding:12px 0;font-size:13px;font-weight:400;letter-spacing:.3px;cursor:pointer;color:var(--text3);border:none;border-bottom:2px solid transparent;background:transparent;font-family:Inter,sans-serif;transition:all .15s;margin-bottom:-1px}.auth-tab.active{color:var(--text);border-bottom-color:var(--text)}.post-workout-overlay{position:fixed;inset:0;z-index:400;background:var(--bg);display:flex;flex-direction:column;max-width:430px;margin:0 auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.activity-name{font-size:14px;font-weight:400;margin-bottom:2px}.activity-meta{font-size:12px;color:var(--text3);font-family:DM Mono,monospace}.tag-chip{font-size:11px;color:var(--text3);background:var(--surface2);padding:2px 8px;border-radius:6px;font-weight:600}.ob-logo-glow{position:absolute;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,var(--accent-dim) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none}.border-top{border-top:1px solid var(--border)}.chat-msg{max-width:85%;padding:14px 18px;border-radius:18px;font-size:14px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.chat-msg--user{background:var(--accent);color:#fff;border-bottom-right-radius:6px;margin-left:auto}.chat-msg--assistant{background:var(--surface2);color:var(--text);border-bottom-left-radius:6px}.coach-chat{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;flex-direction:column;animation:slideUp .3s var(--ease)}.cc-header{padding:14px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.cc-header-left{display:flex;flex-direction:column;gap:4px}.cc-brand{font-size:11px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;color:var(--accent)}.cc-status-bar{display:flex;align-items:center;gap:6px}.cc-status-dot{width:6px;height:6px;border-radius:50%;background:var(--surface3);flex-shrink:0;transition:background .2s ease}.cc-status-dot--on{background:var(--success)}.cc-status-text{font-size:11px;font-family:DM Mono,monospace;color:var(--text3)}.cc-status-sep{width:1px;height:10px;background:var(--border)}.cc-close{background:none;border:none;font-size:14px;color:var(--text2);cursor:pointer;padding:8px 12px;font-family:inherit}.cc-messages{flex:1;overflow-y:auto;padding:20px 20px 12px;-webkit-overflow-scrolling:touch}.cc-coach-msg{margin-bottom:20px}.cc-coach-label{font-size:10px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--accent);margin-bottom:6px}.cc-coach-text{font-size:15px;line-height:1.7;color:var(--text);font-weight:400;letter-spacing:-.1px}.cc-user-msg{display:flex;justify-content:flex-end;margin-bottom:20px}.cc-user-bubble{max-width:78%;padding:10px 16px;border-radius:16px 16px 4px;background:var(--accent);color:#fff;font-size:14px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.cc-actions{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.cc-action-card{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:12px;border:1px solid var(--border);background:var(--surface);cursor:pointer;transition:all .15s ease;text-align:left;font-family:inherit}.cc-action-card:active{background:var(--surface2);border-color:var(--accent)}.cc-action-icon{width:32px;height:32px;border-radius:8px;background:var(--surface2);display:flex;align-items:center;justify-content:center;color:var(--accent);flex-shrink:0}.cc-action-label{font-size:14px;font-weight:500;color:var(--text)}.cc-thinking{opacity:.8}.cc-thinking-text{font-size:13px;color:var(--text3);display:flex;align-items:center;gap:8px;font-style:italic}.cc-thinking-dots{display:flex;gap:3px}.cc-thinking-dots span{width:4px;height:4px;border-radius:50%;background:var(--accent);animation:pulse 1.2s ease-in-out infinite}.cc-thinking-dots span:nth-child(2){animation-delay:.15s}.cc-thinking-dots span:nth-child(3){animation-delay:.3s}.cc-input-area{padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface);display:flex;gap:10px;align-items:flex-end;flex-shrink:0}.cc-textarea{flex:1;resize:none;border:1px solid var(--border);border-radius:20px;padding:10px 16px;font-size:14px;font-family:inherit;line-height:1.5;background:var(--bg);color:var(--text);outline:none;max-height:120px;overflow-y:auto}.cc-textarea:focus{border-color:var(--accent)}.cc-send{width:40px;height:40px;border-radius:50%;border:none;background:var(--surface3);color:var(--text3);cursor:default;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.cc-send--active{background:var(--accent);color:#fff;cursor:pointer}.cc-eye{margin:4px 0 20px;padding:14px 16px;border-radius:12px;background:var(--surface);border:1px solid var(--border)}.cc-eye-label{font-size:10px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3);margin-bottom:10px}.cc-eye-row{display:flex;align-items:baseline;gap:8px;padding:4px 0;font-size:13px;line-height:1.4}.cc-eye-arrow{font-size:13px;font-weight:600;flex-shrink:0;width:14px;text-align:center}.cc-eye-arrow--up{color:var(--success)}.cc-eye-arrow--down{color:var(--danger)}.cc-eye-arrow--stall,.cc-eye-arrow--neutral{color:var(--text3)}.cc-eye-name{font-weight:500;color:var(--text);flex-shrink:0}.cc-eye-detail{color:var(--text2);font-family:DM Mono,monospace;font-size:11px}.cc-eye-take{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:14px;line-height:1.6;color:var(--text);font-style:italic}.coach-card{max-width:82%;width:100%;border-radius:16px;overflow:hidden;animation:fadeIn .3s ease}.coach-card-header{padding:10px 14px;display:flex;align-items:center;gap:8px}.coach-card-body{padding:8px 14px;background:var(--surface)}.coach-card-action{padding:10px 14px;background:var(--surface)}.coach-card-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0}.workout-name{font-weight:400;font-size:15px}.workout-date{font-size:12px;color:var(--text3);font-family:DM Mono,monospace;margin-top:2px}.workout-meta{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px}.meta-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:400;color:var(--text3);font-family:DM Mono,monospace}.meta-chip .dot{width:3px;height:3px;border-radius:50%;background:var(--text3)}.log-entry{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--border)}.log-entry:last-child{border-bottom:none}.log-entry-emoji{display:none}.log-entry-name{font-weight:400;font-size:14px}.log-entry-macros{font-size:12px;color:var(--text3);font-family:DM Mono,monospace;margin-top:2px}.log-remove{background:none;border:none;color:var(--text3);font-size:18px;cursor:pointer;padding:4px;line-height:1;transition:opacity .15s var(--ease)}.log-remove:active{opacity:.5}.custom-label{display:inline-flex;align-items:center;gap:3px;font-size:9px;font-weight:500;letter-spacing:1px;text-transform:uppercase;padding:2px 8px;border-radius:4px;background:var(--accent-dim);color:var(--text2)}.ob-slide-in-right,.ob-slide-in-left{animation:fadeIn .2s ease}.ob-container{position:fixed;inset:0;background:var(--bg);z-index:500;display:flex;flex-direction:column;max-width:430px;margin:0 auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.ob-progress-wrap{display:flex;align-items:center;gap:12px;padding:20px 24px 0;flex-shrink:0}.ob-back{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px;display:flex;align-items:center;flex-shrink:0;transition:opacity .15s var(--ease)}.ob-back:active{opacity:.5}.ob-progress-track{flex:1;height:2px;background:#1c1c1c14;border-radius:1px;overflow:hidden}.ob-progress-fill{height:100%;background:var(--accent);border-radius:1px;transition:width .35s ease}.ob-screen{flex:1;display:flex;flex-direction:column;padding:32px 24px 44px}.ob-step-label{font-size:10px;font-weight:500;letter-spacing:1.5px;text-transform:uppercase;color:var(--text3);margin-bottom:12px}.ob-question{font-family:Inter,sans-serif;font-size:22px;font-weight:300;line-height:1.4;color:var(--text);margin-bottom:28px;letter-spacing:.2px}.ob-hint{font-size:13px;color:var(--text3);margin-top:-8px;margin-bottom:20px}.ob-field-label{display:block;font-size:11px;font-weight:500;letter-spacing:.5px;text-transform:uppercase;color:var(--text3);margin-bottom:6px;line-height:1.6}.ob-cta{margin-top:auto;height:52px;font-size:13px;font-weight:400;letter-spacing:.5px;flex-shrink:0;border-radius:var(--radius)}.ob-cta:disabled{opacity:.3;cursor:not-allowed}.ob-welcome{align-items:center;justify-content:center;text-align:center;padding-top:0}.ob-logo-wrap{margin-bottom:32px;position:relative;display:flex;align-items:center;justify-content:center}.ob-logo{font-family:Inter,sans-serif;font-size:28px;font-weight:300;letter-spacing:1px;color:var(--text)}.ob-welcome-hi{font-size:14px;color:var(--text2);margin-bottom:8px}.ob-headline{font-size:24px;font-weight:300;letter-spacing:.3px;line-height:1.4;margin-bottom:12px;color:var(--text)}.ob-subtitle{font-size:14px;color:var(--text2);line-height:1.65;max-width:300px;margin:0 auto 36px}.ob-goal-grid{display:flex;flex-direction:column;gap:8px;margin-bottom:28px}.ob-goal-card{display:flex;align-items:center;gap:16px;background:transparent;border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;cursor:pointer;text-align:left;font-family:Inter,sans-serif;transition:all .15s var(--ease)}.ob-goal-card:active{opacity:.7}.ob-goal-card.selected{border-color:var(--accent);background:var(--accent-dim)}.ob-goal-icon{font-size:18px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--surface2);border-radius:10px;flex-shrink:0;color:var(--text2)}.ob-goal-label{font-weight:400;font-size:15px;color:var(--text);margin-bottom:2px}.ob-goal-desc{font-size:12px;color:var(--text3)}.ob-exp-list{display:flex;flex-direction:column;gap:8px;margin-bottom:28px}.ob-exp-card{display:flex;align-items:center;gap:14px;background:transparent;border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;cursor:pointer;text-align:left;font-family:Inter,sans-serif;transition:all .15s var(--ease);position:relative}.ob-exp-card:active{opacity:.7}.ob-exp-card.selected{border-color:var(--accent);background:var(--accent-dim)}.ob-exp-label{font-weight:400;font-size:15px;color:var(--text)}.ob-exp-sub{font-size:13px;color:var(--text3)}.ob-check{position:absolute;right:16px;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center}.ob-days-row{display:flex;gap:8px;margin-bottom:8px}.ob-day-btn{flex:1;height:50px;border-radius:var(--radius);border:1px solid var(--border);background:transparent;color:var(--text);font-family:Inter,sans-serif;font-size:16px;font-weight:400;cursor:pointer;transition:all .15s var(--ease)}.ob-day-btn:active{opacity:.7}.ob-day-btn.selected{border-color:var(--accent);background:var(--accent);color:#fff}.ob-duration-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:28px}.ob-dur-btn{padding:18px;border-radius:var(--radius);border:1px solid var(--border);background:transparent;color:var(--text);font-family:Inter,sans-serif;font-size:14px;font-weight:400;cursor:pointer;transition:all .15s var(--ease);text-align:center}.ob-dur-btn:active{opacity:.7}.ob-dur-btn.selected{border-color:var(--accent);background:var(--accent-dim)}.ob-chips-wrap{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.ob-chip{padding:10px 18px;border-radius:24px;border:1px solid var(--border);background:transparent;color:var(--text);font-family:Inter,sans-serif;font-size:13px;font-weight:400;cursor:pointer;transition:all .15s var(--ease)}.ob-chip:active{opacity:.7}.ob-chip.selected{border-color:var(--accent);background:var(--accent-dim)}.ob-detail-section{margin-bottom:20px}.ob-sex-row{display:flex;gap:8px}.ob-sex-btn{flex:1;padding:16px;border-radius:var(--radius);border:1px solid var(--border);background:transparent;color:var(--text);font-family:Inter,sans-serif;font-size:14px;font-weight:400;cursor:pointer;transition:all .15s var(--ease);text-align:center}.ob-sex-btn:active{opacity:.7}.ob-sex-btn.selected{border-color:var(--accent);background:var(--accent-dim)}.ob-confirm{align-items:center;text-align:center;justify-content:center;padding-top:0}.ob-confirm-check{margin-bottom:0}.ob-circle-draw{animation:fadeIn .4s ease-out forwards}.ob-tick-draw{animation:fadeIn .3s ease-out .3s forwards;opacity:0}.ob-summary-card{border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;width:100%;max-width:320px;text-align:left}.ob-summary-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0}.ob-summary-row+.ob-summary-row{border-top:1px solid var(--border)}.ob-summary-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:1px;color:var(--text3)}.ob-summary-val{font-size:13px;font-weight:400;color:var(--text)}.loading-screen{display:flex;align-items:center;justify-content:center;flex-direction:column;height:100vh;gap:24px;background:var(--bg)}.loading-logo{font-family:Inter,sans-serif;font-size:24px;font-weight:300;letter-spacing:1px;color:var(--text)}.loading-dots{display:flex;gap:6px}.loading-dots span{width:4px;height:4px;border-radius:50%;background:var(--text3);animation:subtlePulse 1.2s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}.greeting-card{margin-bottom:32px}.action-btn-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:32px}.action-btn{height:48px;border-radius:var(--radius);font-size:13px;font-weight:400;letter-spacing:.5px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;border:none;transition:all .2s var(--ease);font-family:Inter,sans-serif}.action-btn-primary{background:var(--accent);color:#fff;box-shadow:0 1px 3px #7eb8a433}.action-btn-primary:hover{background:var(--accent-hover);box-shadow:0 2px 6px #7eb8a440}.action-btn-primary:active{transform:scale(.98);opacity:.85}.action-btn-secondary{background:var(--surface);color:var(--text);border:1.5px solid #C0C0BC;box-shadow:0 1px 2px #0000000a}.action-btn-secondary:hover{background:var(--surface2);border-color:#a8a8a4}.action-btn-secondary:active{transform:scale(.98);opacity:.85}.activity-card{padding:18px 4px;margin:0 -4px;border-bottom:1px solid var(--border);cursor:pointer;transition:all .15s var(--ease);border-radius:8px}.activity-card:first-child{padding-top:4px}.activity-card:last-child{border-bottom:none}.activity-card:hover{background:var(--surface2)}.activity-card:active{opacity:.6}@media(prefers-color-scheme:dark){:root{--bg: #121212;--surface: #1C1C1C;--surface2: #252525;--surface3: #2E2E2E;--border: #2A2A2A;--accent: #7EB8A4;--accent-hover: #6BA592;--accent-dim: rgba(126, 184, 164, .12);--success: #4CAF82;--danger: #C96B63;--macro-protein: #5DAF87;--macro-carbs: #D4A04A;--macro-fat: #D88BAE;--text: #F0F0ED;--text2: #9A9A96;--text3: #5A5A56;--shadow: 0 1px 3px rgba(0,0,0,.4), 0 1px 2px rgba(0,0,0,.3)}input,select,textarea{color-scheme:dark}.btn-secondary,.action-btn-secondary{border-color:#3a3a38}}.skeleton{background:linear-gradient(90deg,var(--surface2) 25%,var(--surface3) 50%,var(--surface2) 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:var(--radius);color:transparent!important;pointer-events:none;user-select:none}.skeleton-text{height:14px;border-radius:4px}.skeleton-title{height:22px;border-radius:4px}.skeleton-card{height:80px;border-radius:var(--radius-lg)}.skeleton-avatar{width:40px;height:40px;border-radius:50%}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(min-width:431px){body{border-left:1px solid var(--border);border-right:1px solid var(--border)}}@media(min-width:768px){body{box-shadow:0 0 40px #0000000f}.modal{border-radius:var(--radius-lg);max-height:80vh;margin-bottom:5vh}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus:not(:focus-visible),input:focus:not(:focus-visible),select:focus:not(:focus-visible){outline:none}.briefing-card{padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;transition:box-shadow .2s ease}.briefing-card:active{box-shadow:inset 0 1px 3px #0000000f}.briefing-greeting{font-size:17px;font-weight:400;line-height:1.5;margin-bottom:14px;color:var(--text)}.briefing-streak{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;background:var(--accent-dim);border-radius:20px;margin-bottom:16px}.briefing-streak-count{font-family:DM Mono,monospace;font-size:12px;font-weight:500;color:var(--accent)}.briefing-streak-msg{font-size:12px;color:var(--text2)}.briefing-section{padding:12px 0;border-top:1px solid var(--border)}.briefing-section-label{font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--text3);margin-bottom:6px}.briefing-section-body{font-size:14px;line-height:1.6;color:var(--text)}.briefing-meta{font-family:DM Mono,monospace;font-size:11px;color:var(--text3);margin-top:4px}.briefing-recovery{padding:12px 16px;margin-top:12px;background:#b5564e0f;border-radius:10px;border:1px solid rgba(181,86,78,.12)}.briefing-expand-hint{text-align:center;font-size:11px;color:var(--text3);margin-top:12px;letter-spacing:.3px}.briefing-loading{cursor:default}.briefing-loading-bar{height:14px;background:var(--surface2);border-radius:6px;margin-bottom:10px;animation:briefingPulse 1.5s ease-in-out infinite}.briefing-loading-bar--short{width:60%}.briefing-loading-bar--med{width:80%}@keyframes briefingPulse{0%,to{opacity:.4}50%{opacity:.8}}.review-card{transition:box-shadow .2s ease}.review-summary{margin-bottom:8px}.review-summary-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px}.review-stat{text-align:center}.review-stat-value{font-family:DM Mono,monospace;font-size:20px;font-weight:400;letter-spacing:-.5px;color:var(--text)}.review-stat-label{font-size:10px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text3);margin-top:4px}.review-highlight{font-size:13px;line-height:1.6;color:var(--text2);text-align:center;padding:8px 0}.review-section{padding:14px 0;border-top:1px solid var(--border)}.review-section-title{font-size:10px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--text3);margin-bottom:10px}.review-trend-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0}.review-trend-icon{font-size:16px;font-weight:600;width:20px;text-align:center;flex-shrink:0;margin-top:1px}.review-trend-name{font-size:13px;font-weight:500;color:var(--text)}.review-trend-detail{font-size:12px;color:var(--text2);line-height:1.5;margin-top:2px}.review-nutrition-grid{display:flex;gap:20px;margin-bottom:10px}.review-nutrition-item{display:flex;align-items:baseline;gap:4px}.review-nutrition-value{font-family:DM Mono,monospace;font-size:18px;font-weight:400;color:var(--text)}.review-nutrition-label{font-size:11px;color:var(--text3)}.review-insight-text{font-size:13px;line-height:1.6;color:var(--text2)}.review-patterns{background:#7eb8a40a;margin-left:-20px;margin-right:-20px;padding-left:20px;padding-right:20px;border-radius:0}.review-pattern-item{display:flex;align-items:flex-start;gap:8px;padding:6px 0;font-size:13px;line-height:1.6;color:var(--text)}.review-pattern-icon{font-size:14px;flex-shrink:0;margin-top:2px}.review-meta{font-family:DM Mono,monospace;font-size:11px;color:var(--text3);margin-bottom:6px}.review-targets{font-size:13px;line-height:1.6;color:var(--text);margin-top:6px}.review-targets-label{font-weight:500}.review-next-week{background:var(--surface2);margin-left:-20px;margin-right:-20px;margin-bottom:-20px;padding:16px 20px 20px;border-radius:0 0 var(--radius-lg) var(--radius-lg)}.review-prompt-card{border:1px dashed var(--border);background:var(--surface)}.recent-meals-grid{display:flex;flex-wrap:wrap;gap:6px}.recent-meal-chip{padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;text-align:left;transition:background .15s ease,border-color .15s ease;max-width:calc(50% - 3px);flex:1 0 calc(50% - 3px);min-width:0}.recent-meal-chip:active{background:var(--accent-dim);border-color:var(--accent)}.recent-meal-name{font-size:12px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-meal-meta{font-family:DM Mono,monospace;font-size:10px;color:var(--text3);margin-top:2px}.same-yesterday-btn{width:100%;padding:10px 14px;margin-bottom:8px;background:var(--accent-dim);border:1px solid rgba(126,184,164,.2);border-radius:10px;cursor:pointer;text-align:left;transition:background .15s ease}.same-yesterday-btn:active{background:#7eb8a426}.same-yesterday-label{display:block;font-size:12px;font-weight:500;color:var(--accent);margin-bottom:2px}.same-yesterday-detail{display:block;font-size:11px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes skeletonPulse{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-pulse{animation:skeletonPulse 1.5s ease-in-out infinite}.pull-to-refresh{display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;transition:height .2s ease}.pull-to-refresh-icon{display:flex;align-items:center;justify-content:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pull-to-refresh-icon--spinning{animation:spin 1s linear infinite}.activity-card-wrap{position:relative;display:flex;align-items:stretch}.activity-card-wrap .activity-card{flex:1;min-width:0}.activity-repeat-btn{display:flex;align-items:center;justify-content:center;width:40px;flex-shrink:0;background:none;border:none;border-left:1px solid var(--border);cursor:pointer;color:var(--text3);transition:color .15s ease,background .15s ease;border-radius:0 var(--radius) var(--radius) 0}.activity-repeat-btn:active{background:var(--accent-dim);color:var(--accent)}@keyframes toastSlideIn{0%{transform:translateY(20px) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes toastSlideOut{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-10px) scale(.95);opacity:0}}.toast-container{position:fixed;top:env(safe-area-inset-top,12px);left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;width:calc(100% - 32px);max-width:400px;pointer-events:none;padding-top:12px}.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;background:var(--surface);border:1px solid var(--border);box-shadow:0 4px 16px #0000001a,0 1px 4px #0000000f;font-size:13px;font-weight:400;color:var(--text);pointer-events:auto;cursor:pointer;animation:toastSlideIn .3s var(--ease) both;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.toast--exiting{animation:toastSlideOut .3s var(--ease) both}.toast-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;flex-shrink:0}.toast--success .toast-icon{background:#4caf821f;color:var(--success)}.toast--error .toast-icon{background:#b5564e1f;color:var(--danger)}.toast--warning .toast-icon{background:#d4a04a1f;color:var(--macro-carbs)}.toast--info .toast-icon{background:#7eb8a414;color:var(--accent)}.toast-message{flex:1;line-height:1.4}.offline-banner{position:fixed;top:0;left:50%;transform:translate(-50%);z-index:9998;width:100%;max-width:430px;animation:fadeIn .3s ease}.offline-banner-content{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#b5564ef2;color:#fff;font-size:12px;font-weight:400;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.offline-banner--online .offline-banner-content{background:#4caf82f2}.offline-badge{margin-left:auto;background:#fff3;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}.share-card-overlay{position:fixed;inset:0;z-index:600;background:#00000080;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .2s ease}.share-card-modal{background:var(--surface);border-radius:20px 20px 0 0;padding:24px;width:100%;max-width:430px;max-height:85vh;overflow:auto}.share-card-preview{margin-bottom:20px;border-radius:16px;overflow:hidden;box-shadow:0 4px 20px #00000026}.share-card-actions{padding-bottom:env(safe-area-inset-bottom,16px)}@keyframes streakPulse{0%,to{border-color:var(--macro-carbs);box-shadow:0 0 #d4a04a4d}50%{border-color:var(--macro-carbs);box-shadow:0 0 0 6px #d4a04a00}}@keyframes streakPulseCritical{0%,to{border-color:var(--danger);box-shadow:0 0 #b5564e4d}50%{border-color:var(--danger);box-shadow:0 0 0 6px #b5564e00}}.streak-danger{margin:0 16px 16px;padding:16px;border-radius:14px;border:1.5px solid var(--macro-carbs);background:#d4a04a0f;animation:fadeIn .4s ease}.streak-danger--pulsing{animation:streakPulse 2.5s ease-in-out infinite}.streak-danger--critical{border-color:var(--danger);background:#b5564e0f}.streak-danger--critical.streak-danger--pulsing{animation:streakPulseCritical 2s ease-in-out infinite}.streak-danger-content{display:flex;align-items:flex-start;gap:12px}.streak-danger-icon{flex-shrink:0;color:var(--macro-carbs);margin-top:1px}.streak-danger--critical .streak-danger-icon{color:var(--danger)}.streak-danger-text{flex:1}.streak-danger-title{font-size:14px;font-weight:500;color:var(--text);margin-bottom:2px}.streak-danger-subtitle{font-size:12px;color:var(--text2)}.streak-danger-dismiss{background:none;border:none;cursor:pointer;color:var(--text3);padding:4px;flex-shrink:0}.streak-danger-actions{display:flex;gap:8px;margin-top:12px;padding-left:32px}@keyframes setComplete{0%{transform:scale(1)}40%{transform:scale(1.15)}70%{transform:scale(.95)}to{transform:scale(1)}}@keyframes prBurst{0%{transform:scale(.5);opacity:1}to{transform:scale(2);opacity:0}}@keyframes streakBounce{0%,to{transform:translateY(0)}30%{transform:translateY(-4px)}60%{transform:translateY(-2px)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.set-complete-pop{animation:setComplete .35s var(--ease)}.pr-burst{position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--accent);animation:prBurst .6s ease-out forwards;pointer-events:none}.streak-bounce{animation:streakBounce .5s var(--ease)}.btn-share-shimmer{background:linear-gradient(90deg,var(--accent) 25%,var(--accent-hover) 50%,var(--accent) 75%);background-size:200% 100%;animation:shimmer 2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.toast{animation:none!important;opacity:1}.streak-danger--pulsing,.streak-danger--critical.streak-danger--pulsing,.coach-fab-pulse{animation:none!important}.stagger-item{animation:none!important;opacity:1}}.daily-status{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px;margin-bottom:24px}.daily-status-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.daily-status-label{font-size:11px;font-weight:500;color:var(--text3);text-transform:uppercase;letter-spacing:1.2px}.daily-status-checks-row{display:flex;gap:10px;margin-bottom:16px}.daily-status-checks{display:flex;flex-direction:column;gap:6px;flex:1}.daily-status-chip{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text3);transition:color .2s ease}.daily-status-chip--done{color:var(--text)}.daily-status-dot{width:16px;height:16px;border-radius:50%;background:var(--surface3);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .2s ease}.daily-status-dot--done{background:var(--accent)}.daily-status-fraction{font-size:11px;color:var(--text3);font-family:DM Mono,monospace;margin-top:2px}.daily-status-macros{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.macro-bar-row{display:flex;flex-direction:column;gap:4px}.macro-bar-meta{display:flex;justify-content:space-between;align-items:baseline}.macro-bar-label{font-size:12px;color:var(--text2)}.macro-bar-nums{font-size:11px;font-family:DM Mono,monospace;color:var(--text3)}.macro-bar-track{height:5px;background:var(--surface3);border-radius:3px;overflow:hidden}.macro-bar-fill{height:100%;border-radius:3px;transition:width .5s var(--ease);min-width:2px}.daily-status-burn{display:flex;align-items:baseline;gap:6px;padding:10px 0;font-size:12px;color:var(--text3);border-top:1px solid var(--border)}.daily-status-burn-val{font-family:DM Mono,monospace;font-size:14px;color:var(--text2);font-weight:500}.daily-status-burn-unit{color:var(--text3)}.daily-status-burn-detail{margin-left:auto;font-size:11px}.daily-status-action{padding-top:14px;border-top:1px solid var(--border)}.daily-status-action-btn{background:none;border:1px solid var(--accent);border-radius:10px;padding:10px 16px;font-size:13px;font-weight:500;color:var(--accent);cursor:pointer;width:100%;transition:all .15s ease;text-align:center}.daily-status-action-btn:active{background:var(--accent);color:#fff}.daily-status-action-text{font-size:13px;color:var(--text2);text-align:center;display:block}.daily-status-narration{font-size:13px;line-height:1.5;color:var(--text2);font-style:italic;padding:12px 0;border-top:1px solid var(--border)}.daily-status-perfect{text-align:center;font-size:13px;color:var(--accent);font-weight:500;letter-spacing:.3px;padding-top:14px;border-top:1px solid var(--border)}.quest-xp-badge{font-size:10px;font-weight:500;letter-spacing:.3px;padding:2px 7px;border-radius:10px;background:#7eb8a426;color:var(--accent)}.quest-item{display:flex;align-items:center;gap:12px;padding:14px 20px;transition:opacity .2s var(--ease)}.quest-item--done{opacity:.65}.quest-emoji{font-size:22px;line-height:1;flex-shrink:0;width:28px;text-align:center}.quest-body{flex:1;min-width:0}.quest-title{font-size:13px;font-weight:500;color:var(--text);line-height:1.3}.quest-item--done .quest-title{text-decoration:line-through;color:var(--text2)}.quest-desc{font-size:11px;color:var(--text3);margin-top:2px;line-height:1.4}.quest-progress-bar{height:3px;background:var(--surface3);border-radius:2px;margin-top:7px;overflow:hidden}.quest-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .4s var(--ease)}.quest-right{flex-shrink:0}.quest-check-icon{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center}.quest-xp{font-size:11px;font-weight:500;color:var(--text3);letter-spacing:.3px}.achievements-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:24px}.achievement-badge{display:flex;flex-direction:column;align-items:center;gap:5px;padding:12px 6px;border-radius:14px;background:var(--surface);border:1px solid var(--border);filter:grayscale(1);opacity:.35;transition:all .2s var(--ease);cursor:default;text-align:center}.achievement-badge--unlocked{filter:none;opacity:1;border-color:#7eb8a44d;background:#7eb8a40f}.achievement-badge-emoji{font-size:24px;line-height:1}.achievement-badge-name{font-size:9px;font-weight:500;color:var(--text2);letter-spacing:.2px;line-height:1.2}.achievement-badge--unlocked .achievement-badge-name{color:var(--text)}
