:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:400;color:var(--text, #1f2937);background-color:var(--bg, #f5f5f7);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;min-width:320px;min-height:100vh}#root{max-width:600px;margin:0 auto;padding:0}:root{--bg: #f5f5f7;--text: #1f2937;--text-heading: #111827;--text-secondary: #374151;--card-bg: #fff;--card-border: rgba(0, 0, 0, .08);--muted: #9ca3af;--muted-light: #6b7280;--border: #e5e7eb;--border-hover: #d1d5db;--surface: #f9fafb;--surface-hover: #f3f4f6;--accent: #2563eb;--accent-light: #93c5fd;--accent-bg: #dbeafe;--accent-dark: #1d4ed8;--accent-bg-subtle: #eff6ff;--success: #16a34a;--danger: #dc2626;--orange: #ea580c;--yellow: #ca8a04;--purple: #9333ea;--purple-bg: #f3e8ff;--purple-text: #7c3aed}[data-theme=dark]{--bg: #111827;--text: #e5e7eb;--text-heading: #f9fafb;--text-secondary: #d1d5db;--card-bg: #1f2937;--card-border: rgba(255, 255, 255, .06);--muted: #6b7280;--muted-light: #9ca3af;--border: #374151;--border-hover: #4b5563;--surface: #1f2937;--surface-hover: #374151;--accent: #60a5fa;--accent-light: #3b82f6;--accent-bg: #1e3a5f;--accent-dark: #93c5fd;--accent-bg-subtle: #1e293b;--success: #22c55e;--danger: #ef4444;--orange: #f97316;--yellow: #eab308;--purple: #a78bfa;--purple-bg: #2d1b4e;--purple-text: #c4b5fd}.app{padding:16px 16px 40px}.loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--muted);font-size:18px}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.app-header h1{font-size:24px;font-weight:700;color:var(--text-heading)}.settings-btn{background:none;border:none;font-size:24px;cursor:pointer;padding:4px 8px;border-radius:8px}.settings-btn:hover{background:var(--surface-hover)}.theme-toggle-btn{background:none;border:none;font-size:22px;cursor:pointer;padding:4px 8px;border-radius:8px;line-height:1}.theme-toggle-btn:hover{background:var(--surface-hover)}.card{background:var(--card-bg);border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 1px 3px var(--card-border)}.progress-card{text-align:center}.progress-header{margin-bottom:12px}.progress-rate{font-size:48px;font-weight:800;line-height:1}.progress-target{font-size:14px;color:var(--muted-light);margin-top:2px}.scoreboard{display:flex;justify-content:space-around;margin-bottom:16px;flex-wrap:wrap;gap:4px}.score-item{text-align:center;min-width:56px}.score-value{font-size:22px;font-weight:700}.score-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.chart-svg{width:100%;height:auto}.chart-label{font-size:9px;fill:var(--muted)}.chart-title{font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.period-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.period-nav button{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:6px 14px;font-size:16px;cursor:pointer;color:var(--text-secondary)}.period-nav button:hover{background:var(--surface-hover);border-color:var(--border-hover)}.period-label{font-size:16px;font-weight:600;color:var(--text-heading);min-width:180px;text-align:center}.today-btn{font-size:13px!important;padding:4px 10px!important;color:var(--accent)!important;border-color:var(--accent-light)!important}.calendar{background:var(--card-bg);border-radius:12px;padding:12px;margin-bottom:12px;box-shadow:0 1px 3px var(--card-border)}.cal-header{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.cal-header-cell{text-align:center;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;padding:4px 0}.cal-month-label{font-size:12px;font-weight:600;color:var(--muted-light);padding:8px 4px 4px}.cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cal-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;position:relative;min-height:40px;transition:transform .1s}.cal-cell:hover{transform:scale(1.05)}.cal-empty{cursor:default;background:transparent!important}.cal-empty:hover{transform:none}.cal-today{outline:2px solid var(--accent);outline-offset:-2px}.cal-selected{outline:2px solid var(--text-heading);outline-offset:-2px}.cal-day-num{font-size:13px;font-weight:600;color:var(--text-secondary)}.cal-emoji{font-size:12px;line-height:1}.day-detail{background:var(--surface);border-radius:8px;padding:12px;margin:4px 0 8px}.day-detail-header{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.status-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.status-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border:2px solid transparent;border-radius:10px;cursor:pointer;font-size:12px;font-weight:500;transition:all .15s}.status-btn:hover{transform:scale(1.03)}.status-active{font-weight:700}.settings-overlay{position:fixed;inset:0;background:#0006;z-index:100;display:flex;align-items:flex-end;justify-content:center}.settings-panel{background:var(--card-bg);border-radius:16px 16px 0 0;max-width:600px;width:100%;max-height:85vh;overflow-y:auto;padding:20px}.settings-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.settings-header h2{font-size:20px;font-weight:700;color:var(--text-heading)}.close-btn{background:none;border:none;font-size:28px;cursor:pointer;color:var(--muted-light);padding:0 4px;line-height:1}.settings-section{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--surface-hover)}.settings-label{display:block;font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.settings-sublabel{display:block;font-size:13px;color:var(--muted-light);margin-bottom:4px;margin-top:8px}.rto-control{display:flex;align-items:center;gap:12px}.rto-control input[type=range]{flex:1;height:6px;-webkit-appearance:none;appearance:none;background:var(--border);border-radius:3px;outline:none}.rto-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer}.rto-value{font-size:18px;font-weight:700;color:var(--accent);min-width:48px;text-align:right}.radio-group{display:flex;gap:20px}.radio-group label,.toggle-label{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--text-secondary);cursor:pointer}.toggle-label{margin-bottom:8px}.workday-toggles{display:flex;gap:4px}.workday-btn{flex:1;padding:8px 4px;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer;font-size:12px;font-weight:500;color:var(--muted-light);transition:all .15s}.workday-active{background:var(--accent-bg);border-color:var(--accent-light);color:var(--accent-dark);font-weight:700}.period-style-group{display:flex;flex-direction:column;gap:6px}.period-style-btn{display:flex;flex-direction:column;align-items:flex-start;padding:10px 12px;border:2px solid var(--border);border-radius:10px;background:var(--surface);cursor:pointer;text-align:left;transition:all .15s}.period-style-btn:hover{border-color:var(--accent-light)}.period-style-active{border-color:var(--accent);background:var(--accent-bg-subtle)}.period-style-label{font-size:14px;font-weight:600;color:var(--text-secondary)}.period-style-active .period-style-label{color:var(--accent-dark)}.period-style-desc{font-size:12px;color:var(--muted);margin-top:2px}.holidays-list{display:flex;flex-direction:column;gap:6px}.holiday-item{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:var(--purple-bg);border-radius:6px;font-size:13px;color:var(--purple-text)}.holiday-remove{background:none;border:none;font-size:18px;cursor:pointer;color:var(--purple);padding:0 4px}.holiday-add{padding:6px 10px;border:1px solid var(--border-hover);border-radius:8px;font-size:14px;color:var(--text-secondary);background:var(--card-bg)}.today-status-bar{padding:12px 16px}.today-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.today-nav-btn{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:6px 14px;font-size:18px;cursor:pointer;color:var(--text-secondary);line-height:1}.today-nav-btn:hover{background:var(--surface-hover);border-color:var(--border-hover)}.today-label{display:flex;flex-direction:column;align-items:center}.today-day-label{font-size:16px;font-weight:700;color:var(--text-heading)}.today-date-label{font-size:12px;color:var(--muted-light);margin-top:1px}.today-status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.today-status-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border:2px solid transparent;border-radius:10px;cursor:pointer;transition:all .15s}.today-status-btn:hover{transform:scale(1.03)}.today-status-active{font-weight:700}.today-status-emoji{font-size:18px}.today-status-label{font-size:11px;font-weight:500}.week-strip{display:flex;justify-content:space-between;padding:8px 4px;gap:2px}.week-day{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 2px;border:none;background:none;cursor:pointer;border-radius:10px;transition:background .15s}.week-day:hover{background:var(--surface-hover)}.week-day-selected{outline:2px solid var(--text-heading);outline-offset:-2px;border-radius:10px}.week-day-today{background:var(--accent-bg-subtle)}.week-day-abbrev{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase}.week-day-num{font-size:15px;font-weight:600;color:var(--text-secondary);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%}.week-day-num-today{background:var(--accent);color:#fff}.week-day-dot{width:6px;height:6px;border-radius:50%}.week-day-dot-empty{background:transparent}.status-legend{display:flex;flex-wrap:wrap;gap:12px;padding:8px 4px;margin-bottom:12px;justify-content:center}.legend-item{display:flex;align-items:center;gap:5px}.legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.legend-label{font-size:12px;color:var(--muted-light);font-weight:500}.streaks{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:12px;font-size:14px;font-weight:600}.streak-current{color:var(--orange)}.streak-best{color:var(--yellow)}.chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chart-header .chart-title{margin-bottom:0}.chart-mode-toggle{display:flex;gap:2px;background:var(--surface-hover);border-radius:8px;padding:2px}.chart-mode-btn{padding:4px 10px;border:none;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;color:var(--muted-light);background:transparent;transition:all .15s}.chart-mode-btn:hover{color:var(--text-secondary)}.chart-mode-active{background:var(--card-bg);color:var(--text-heading);font-weight:600;box-shadow:0 1px 2px var(--card-border)}.heatmap-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.heatmap-svg{display:block}.heatmap-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;font-size:11px;color:var(--muted-light)}.heatmap-legend-item{display:flex;align-items:center;gap:4px}.heatmap-legend-dot{width:10px;height:10px;border-radius:2px;display:inline-block}.dow-chart{display:flex;flex-direction:column;gap:8px}.dow-row{display:flex;align-items:center;gap:8px}.dow-label{width:36px;font-size:12px;font-weight:600;color:var(--muted-light);flex-shrink:0}.dow-bar-track{flex:1;height:18px;background:var(--surface);border-radius:4px;overflow:hidden}.dow-bar-fill{height:100%;border-radius:4px;transition:width .3s ease;min-width:2px}.dow-pct{width:36px;text-align:right;font-size:12px;font-weight:600;color:var(--text-secondary);flex-shrink:0}.comparison-header-row,.comparison-row{display:grid;grid-template-columns:90px 1fr 24px 1fr 60px;align-items:center;gap:4px;padding:4px 0}.comparison-header-row{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--border);padding-bottom:6px;margin-bottom:4px}.comparison-col-label{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.comparison-label{font-size:12px;font-weight:600;color:var(--text-secondary)}.comparison-prev,.comparison-curr{font-size:14px;font-weight:700;text-align:center;color:var(--text)}.comparison-delta{font-size:11px;text-align:right;color:var(--muted-light)}.comparison-arrow{font-size:16px;text-align:center;font-weight:700}.comparison-up{color:var(--success)}.comparison-down{color:var(--danger)}.comparison-neutral{color:var(--muted)}.trend-stats{display:flex;justify-content:space-around;margin-bottom:16px}.trend-stat{text-align:center}.trend-stat-value{font-size:24px;font-weight:800;color:var(--text)}.trend-stat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;margin-top:2px}.trend-weeks{position:relative;margin-top:8px}.trend-weeks-label{font-size:11px;color:var(--muted);margin-bottom:6px}.trend-bars{display:flex;align-items:flex-end;gap:2px;height:60px}.trend-bar-col{flex:1;display:flex;align-items:flex-end;height:100%}.trend-bar{width:100%;border-radius:2px 2px 0 0;min-height:2px;transition:height .3s ease}.trend-target-line{position:absolute;left:0;right:0;height:1px;border-top:1.5px dashed var(--danger);pointer-events:none}.import-export-section{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.csv-import{display:flex;align-items:center;gap:8px}.csv-import-btn{display:inline-block;padding:8px 16px;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .15s}.csv-import-btn:hover{background:var(--surface-hover);border-color:var(--border-hover)}.csv-import-status{font-size:12px;color:var(--success)}.csv-export-btn{padding:8px 16px;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;font-size:13px;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .15s}.csv-export-btn:hover{background:var(--surface-hover);border-color:var(--border-hover)}.csv-export-btn:disabled{opacity:.4;cursor:not-allowed}.onboarding-overlay{position:fixed;inset:0;background:#0009;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.onboarding-panel{background:var(--card-bg);border-radius:16px;max-width:400px;width:100%;padding:28px 24px}.onboarding-steps{display:flex;justify-content:center;gap:8px;margin-bottom:24px}.onboarding-dot{width:8px;height:8px;border-radius:50%;background:var(--border)}.onboarding-dot-active{background:var(--accent);transform:scale(1.3)}.onboarding-dot-done{background:var(--success)}.onboarding-content{text-align:center}.onboarding-content h2{font-size:20px;font-weight:700;color:var(--text-heading);margin-bottom:8px}.onboarding-content p{font-size:14px;color:var(--muted-light);margin-bottom:20px;line-height:1.5}.onboarding-icon{font-size:48px;margin-bottom:12px}.onboarding-next{display:inline-block;padding:10px 28px;background:var(--accent);color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;transition:opacity .15s}.onboarding-next:hover{opacity:.9}.onboarding-back{padding:10px 20px;background:none;border:1px solid var(--border);border-radius:10px;font-size:14px;color:var(--muted-light);cursor:pointer}.onboarding-nav{display:flex;justify-content:center;gap:12px;margin-top:20px}.celebration-container{position:fixed;inset:0;pointer-events:auto;z-index:150;overflow:hidden}.celebration-dot{position:absolute;bottom:40%;border-radius:50%;animation:confetti-fly linear forwards}@keyframes confetti-fly{0%{opacity:1;transform:translateY(0) translate(0) scale(1)}60%{opacity:1}to{opacity:0;transform:translateY(-120vh) translate(var(--drift, 0px)) scale(.5)}}.section-title{font-size:13px;font-weight:600;color:var(--muted-light);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;margin-top:16px}@media(max-width:400px){.app{padding:10px}.scoreboard{gap:2px}.score-item{min-width:48px}.status-buttons,.today-status-grid{grid-template-columns:repeat(2,1fr)}.week-day-num{font-size:13px;width:24px;height:24px}.comparison-header-row,.comparison-row{grid-template-columns:70px 1fr 20px 1fr 50px}.trend-stats{flex-direction:column;gap:12px}}
