:root{--font-heading: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-body: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--bg-app: #f4f6fb;--bg-card: rgba(255, 255, 255, .85);--bg-card-hover: rgba(255, 255, 255, .95);--bg-input: #f8fafc;--bg-modal: #ffffff;--bg-backdrop: rgba(15, 23, 42, .5);--text-primary: #0f172a;--text-secondary: #475569;--text-tertiary: #94a3b8;--border-color: rgba(226, 232, 240, .8);--border-highlight: rgba(99, 102, 241, .2);--color-primary: #6366f1;--color-primary-hover: #4f46e5;--color-primary-light: rgba(99, 102, 241, .12);--color-success: #10b981;--color-success-light: rgba(16, 185, 129, .12);--color-warning: #f59e0b;--color-warning-light: rgba(245, 158, 11, .12);--color-danger: #ef4444;--color-danger-light: rgba(239, 68, 68, .12);--color-purple: #8b5cf6;--color-purple-light: rgba(139, 92, 246, .12);--color-cyan: #06b6d4;--shadow-sm: 0 2px 8px rgba(15, 23, 42, .04);--shadow-md: 0 8px 24px -4px rgba(15, 23, 42, .08), 0 2px 6px -1px rgba(15, 23, 42, .04);--shadow-lg: 0 20px 40px -12px rgba(15, 23, 42, .15);--backdrop-blur: blur(16px) saturate(180%);--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--transition-bounce: .4s cubic-bezier(.34, 1.56, .64, 1);color-scheme:light dark}[data-theme=dark]{--bg-app: #0b0f19;--bg-card: rgba(23, 31, 49, .7);--bg-card-hover: rgba(30, 41, 64, .85);--bg-input: #151d30;--bg-modal: #131b2e;--bg-backdrop: rgba(0, 0, 0, .75);--text-primary: #f8fafc;--text-secondary: #94a3b8;--text-tertiary: #64748b;--border-color: rgba(255, 255, 255, .08);--border-highlight: rgba(99, 102, 241, .35);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .2);--shadow-md: 0 8px 24px rgba(0, 0, 0, .4);--shadow-lg: 0 20px 40px rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background-color:var(--bg-app);color:var(--text-primary);line-height:1.5;min-height:100vh;transition:background-color var(--transition-normal),color var(--transition-normal);-webkit-font-smoothing:antialiased;background-image:radial-gradient(at 10% 10%,rgba(99,102,241,.08) 0px,transparent 50%),radial-gradient(at 90% 80%,rgba(16,185,129,.06) 0px,transparent 50%);background-attachment:fixed}.app-container{max-width:1080px;margin:0 auto;padding:1.5rem 1rem 3rem}.glass-panel{background:var(--bg-card);backdrop-filter:var(--backdrop-blur);-webkit-backdrop-filter:var(--backdrop-blur);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);transition:background var(--transition-normal),border-color var(--transition-normal),box-shadow var(--transition-normal)}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;letter-spacing:-.02em}.highlight{background:linear-gradient(135deg,var(--color-primary),var(--color-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.hidden{display:none!important}.text-danger{color:var(--color-danger)}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding:.5rem 0}.header-brand{display:flex;align-items:center;gap:.85rem}.logo-icon{width:44px;height:44px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-primary),var(--color-purple));color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px #6366f159}.app-title{font-size:1.6rem;line-height:1.1}.date-subtitle{font-size:.85rem;color:var(--text-tertiary);font-weight:500}.header-actions{display:flex;align-items:center;gap:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-family:var(--font-body);font-weight:600;font-size:.9rem;padding:.65rem 1.2rem;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast)}.btn-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-purple));color:#fff;box-shadow:0 4px 14px #6366f14d}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #6366f173}.btn-secondary{background:var(--bg-card);border-color:var(--border-color);color:var(--text-primary)}.btn-secondary:hover{background:var(--bg-card-hover);border-color:var(--border-highlight)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:#dc2626}.icon-btn{width:40px;height:40px;border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.icon-btn:hover{color:var(--text-primary);background:var(--bg-card-hover);border-color:var(--border-highlight);transform:translateY(-1px)}[data-theme=light] .sun-icon{display:none}[data-theme=light] .moon-icon,[data-theme=dark] .sun-icon{display:block}[data-theme=dark] .moon-icon{display:none}.dashboard-hero{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:2.5rem}@media (max-width: 840px){.dashboard-hero{grid-template-columns:1fr}}.progress-card{padding:1.75rem;display:flex;align-items:center;gap:1.75rem;position:relative;overflow:hidden}.progress-ring-container{position:relative;width:140px;height:140px;flex-shrink:0}.progress-ring{transform:rotate(-90deg)}.progress-ring-bg{fill:none;stroke:var(--border-color);stroke-width:10}.progress-ring-circle{fill:none;stroke:url(#progress-gradient);stroke:var(--color-primary);stroke-width:10;stroke-linecap:round;stroke-dasharray:364.4;stroke-dashoffset:364.4;transition:stroke-dashoffset .8s cubic-bezier(.34,1.56,.64,1)}.progress-ring-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center}.percent-val{font-family:var(--font-heading);font-size:1.75rem;font-weight:800;line-height:1}.percent-label{font-size:.7rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-top:2px}.progress-details{flex:1;display:flex;flex-direction:column}.badge-status{align-self:flex-start;font-size:.75rem;font-weight:700;padding:.25rem .65rem;border-radius:var(--radius-full);background:var(--color-primary-light);color:var(--color-primary);margin-bottom:.5rem}.progress-title{font-size:1.25rem;margin-bottom:.25rem}.progress-summary{font-size:.9rem;color:var(--text-secondary);margin-bottom:1rem}.linear-progress-bar-container{width:100%;height:8px;background:var(--border-color);border-radius:var(--radius-full);overflow:hidden}.linear-progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));border-radius:var(--radius-full);transition:width .6s cubic-bezier(.4,0,.2,1)}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.stat-card{padding:1.25rem;display:flex;align-items:center;gap:1rem}.stat-icon{width:44px;height:44px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.icon-blue{background:var(--color-primary-light);color:var(--color-primary)}.icon-green{background:var(--color-success-light);color:var(--color-success)}.icon-orange{background:var(--color-warning-light);color:var(--color-warning)}.icon-purple{background:var(--color-purple-light);color:var(--color-purple)}.stat-info{display:flex;flex-direction:column}.stat-value{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;line-height:1.2}.stat-label{font-size:.8rem;color:var(--text-tertiary);font-weight:500}.habit-section{margin-bottom:2.5rem}.habit-section-header{margin-bottom:1.25rem}.search-filter-wrapper{display:flex;flex-wrap:wrap;gap:.85rem;align-items:center;justify-content:space-between}.search-box{display:flex;align-items:center;gap:.5rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.5rem .85rem;flex:1;min-width:220px;color:var(--text-tertiary);transition:border-color var(--transition-fast)}.search-box:focus-within{border-color:var(--color-primary);color:var(--color-primary)}.search-box input{border:none;background:transparent;color:var(--text-primary);font-family:var(--font-body);font-size:.9rem;width:100%;outline:none}.filter-tabs{display:flex;background:var(--bg-card);border:1px solid var(--border-color);padding:.25rem;border-radius:var(--radius-md);gap:.25rem}.filter-tab{border:none;background:transparent;color:var(--text-secondary);font-family:var(--font-body);font-size:.85rem;font-weight:600;padding:.4rem .9rem;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.filter-tab.active{background:var(--color-primary);color:#fff;box-shadow:0 2px 8px #6366f140}.category-select{background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-primary);font-family:var(--font-body);font-size:.85rem;font-weight:500;padding:.55rem .85rem;border-radius:var(--radius-md);outline:none;cursor:pointer}.habit-list{display:flex;flex-direction:column;gap:1rem}.habit-card{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.3rem;position:relative;transition:transform var(--transition-bounce),border-color var(--transition-fast),box-shadow var(--transition-fast);border-left:4px solid var(--card-accent-color, var(--color-primary))}.habit-card:hover{transform:translateY(-2px);border-color:var(--border-highlight);box-shadow:var(--shadow-lg)}.habit-card.completed{opacity:.88}.habit-left{display:flex;align-items:center;gap:1.1rem}.check-btn{width:38px;height:38px;border-radius:var(--radius-full);border:2px solid var(--card-accent-color, var(--color-primary));background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all var(--transition-bounce)}.check-btn:hover{transform:scale(1.1);background:#6366f11a}.habit-card.completed .check-btn{background:var(--card-accent-color, var(--color-primary));border-color:var(--card-accent-color, var(--color-primary));box-shadow:0 4px 12px #10b9814d}.check-btn svg{opacity:0;transform:scale(.5);transition:all var(--transition-bounce)}.habit-card.completed .check-btn svg{opacity:1;transform:scale(1)}.habit-info{display:flex;flex-direction:column;gap:.2rem}.habit-meta{display:flex;align-items:center;gap:.6rem}.habit-icon{font-size:1.1rem}.habit-title{font-size:1.05rem;font-weight:600;transition:color var(--transition-fast)}.habit-card.completed .habit-title{text-decoration:line-through;color:var(--text-tertiary)}.habit-description{font-size:.82rem;color:var(--text-secondary)}.category-tag{font-size:.72rem;font-weight:600;padding:.15rem .5rem;border-radius:var(--radius-sm);background:var(--border-color);color:var(--text-secondary)}.habit-right{display:flex;align-items:center;gap:1rem}.streak-badge{display:flex;align-items:center;gap:.25rem;font-size:.8rem;font-weight:700;padding:.3rem .65rem;border-radius:var(--radius-full);background:var(--color-warning-light);color:var(--color-warning)}.streak-badge.empty-streak{background:var(--border-color);color:var(--text-tertiary)}.habit-actions{display:flex;align-items:center;gap:.35rem}.action-btn{width:32px;height:32px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-tertiary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.action-btn:hover{background:var(--border-color);color:var(--text-primary)}.action-btn.delete-btn:hover{background:var(--color-danger-light);color:var(--color-danger)}.empty-state{padding:3rem 1.5rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.85rem}.empty-icon{font-size:3rem;margin-bottom:.25rem}.history-section{padding:1.5rem}.history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.section-subtitle{font-size:.85rem;color:var(--text-tertiary)}.week-range-tag{font-size:.75rem;font-weight:700;padding:.3rem .75rem;border-radius:var(--radius-full);background:var(--border-color);color:var(--text-secondary)}.weekly-matrix{display:grid;grid-template-columns:repeat(7,1fr);gap:.75rem}@media (max-width: 600px){.weekly-matrix{grid-template-columns:repeat(4,1fr)}}.day-column{display:flex;flex-direction:column;align-items:center;padding:.85rem .5rem;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);gap:.4rem;transition:all var(--transition-fast)}.day-column.today{border-color:var(--color-primary);background:var(--color-primary-light)}.day-name{font-size:.75rem;font-weight:700;text-transform:uppercase;color:var(--text-tertiary)}.day-date{font-family:var(--font-heading);font-size:1.1rem;font-weight:700}.day-bar{width:100%;height:6px;background:var(--border-color);border-radius:var(--radius-full);margin-top:.3rem;overflow:hidden}.day-bar-fill{height:100%;background:var(--color-success);border-radius:var(--radius-full)}.day-count{font-size:.72rem;color:var(--text-secondary);font-weight:600}.custom-modal{border:none;background:transparent;padding:0;max-width:480px;width:90%;margin:auto}.custom-modal::backdrop{background:var(--bg-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-content{padding:1.75rem;background:var(--bg-modal);border:1px solid var(--border-color)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.close-btn{background:transparent;border:none;font-size:1.6rem;color:var(--text-tertiary);cursor:pointer}.close-btn:hover{color:var(--text-primary)}.modal-form{display:flex;flex-direction:column;gap:1.1rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.85rem;font-weight:600;color:var(--text-secondary)}.required{color:var(--color-danger)}.form-group input[type=text],.form-group textarea,.form-group select{background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.65rem .85rem;color:var(--text-primary);font-family:var(--font-body);font-size:.9rem;outline:none}.form-group input[type=text]:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.emoji-picker-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem}.emoji-btn{background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:.4rem;font-size:1.1rem;cursor:pointer}.emoji-btn.active,.emoji-btn:hover{border-color:var(--color-primary);background:var(--color-primary-light)}.color-picker-group{display:flex;gap:.75rem}.color-option input{display:none}.color-option span{display:block;width:28px;height:28px;border-radius:var(--radius-full);background:var(--c);cursor:pointer;border:2px solid transparent;transition:transform var(--transition-fast)}.color-option input:checked+span{transform:scale(1.2);border-color:var(--text-primary)}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;margin-top:.5rem}.settings-body{display:flex;flex-direction:column;gap:1.25rem}.setting-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.setting-item p{font-size:.8rem;color:var(--text-tertiary)}.setting-item.danger-zone{border-bottom:none;padding-bottom:0}.file-upload-btn{margin:0}.app-footer{text-align:center;padding:2rem 0 1rem;font-size:.8rem;color:var(--text-tertiary)}@keyframes checkmarkBounce{0%{transform:scale(1)}50%{transform:scale(1.25) rotate(-5deg)}to{transform:scale(1) rotate(0)}}.habit-card.just-completed .check-btn{animation:checkmarkBounce .45s cubic-bezier(.34,1.56,.64,1)}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}dialog[open] .modal-content{animation:modalFadeIn .25s cubic-bezier(.16,1,.3,1) forwards}@keyframes pulseGlow{0%,to{box-shadow:0 0 #10b98166}50%{box-shadow:0 0 0 12px #10b98100}}.progress-card.all-done{animation:pulseGlow 2s infinite}.confetti-container{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9999;overflow:hidden}.confetti-piece{position:absolute;width:10px;height:16px;background:var(--confetti-color, #6366f1);top:-20px;opacity:.9;animation:confettiFall 3s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(720deg);opacity:0}}
