:root{--bg-primary:#0d0d12;--bg-secondary:#13131a;--bg-tertiary:#1a1a24;--bg-elevated:#1e1e2a;--bg-hover:#24243a;--glass-bg:#ffffff08;--glass-border:#ffffff0f;--glass-bg-hover:#ffffff0f;--text-primary:#f0f0f5;--text-secondary:#8b8b9e;--text-tertiary:#5a5a6e;--text-inverse:#0d0d12;--accent:#6c5ce7;--accent-light:#a78bfa;--accent-dark:#5241b5;--accent-glow:#6c5ce726;--accent-gradient:linear-gradient(135deg, #6c5ce7, #a78bfa);--success:#10b981;--success-bg:#10b9811f;--warning:#f59e0b;--warning-bg:#f59e0b1f;--danger:#ef4444;--danger-bg:#ef44441f;--info:#3b82f6;--info-bg:#3b82f61f;--priority-low:#6b7280;--priority-medium:#3b82f6;--priority-high:#f59e0b;--priority-urgent:#ef4444;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--fs-xs:.6875rem;--fs-sm:.75rem;--fs-base:.875rem;--fs-md:1rem;--fs-lg:1.125rem;--fs-xl:1.375rem;--fs-2xl:1.75rem;--fs-3xl:2rem;--fw-light:300;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-extrabold:800;--lh-tight:1.2;--lh-normal:1.5;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--sp-10:2.5rem;--sp-12:3rem;--sp-16:4rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-pill:100px;--radius-full:50%;--shadow-sm:0 2px 8px #0003;--shadow-md:0 4px 16px #00000040;--shadow-lg:0 8px 32px #00000059;--shadow-glow:0 0 20px var(--accent-glow);--ease-default:cubic-bezier(.4, 0, .2, 1);--duration-fast:.15s;--duration-normal:.2s;--duration-slow:.3s;--nav-height:64px;--sidebar-width:240px;--content-max-width:640px;--safe-bottom:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-family);font-size:var(--fs-base);font-weight:var(--fw-regular);line-height:var(--lh-normal);color:var(--text-primary);background-color:var(--bg-primary);min-height:100dvh;overflow-x:hidden}a{color:var(--accent-light);text-decoration:none}a:hover{text-decoration:underline}img,svg{max-width:100%;display:block}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;background:0 0;border:none;outline:none}button{cursor:pointer}ul,ol{list-style:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}::selection{background:var(--accent);color:var(--text-primary)}#app{min-height:100dvh;display:flex}.page-content{min-height:100dvh;padding:var(--sp-5) var(--sp-4) calc(var(--nav-height) + var(--safe-bottom) + var(--sp-5));max-width:var(--content-max-width);flex:1;width:100%;margin:0 auto}.sidebar{display:none}@media (width>=768px){.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--glass-border);min-height:100dvh;padding:var(--sp-6) var(--sp-4);z-index:50;flex-direction:column;display:flex;position:fixed;top:0;left:0}.page-content{margin-left:var(--sidebar-width);padding-bottom:var(--sp-8);max-width:calc(var(--content-max-width) + var(--sp-8))}.bottom-nav{display:none!important}}.bottom-nav{height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--glass-border);z-index:100;background:#0d0d12eb;justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}@media (width>=768px){.bottom-nav{display:none}}.text-xs{font-size:var(--fs-xs)}.text-sm{font-size:var(--fs-sm)}.text-base{font-size:var(--fs-base)}.text-md{font-size:var(--fs-md)}.text-lg{font-size:var(--fs-lg)}.text-xl{font-size:var(--fs-xl)}.text-2xl{font-size:var(--fs-2xl)}.text-3xl{font-size:var(--fs-3xl)}.text-light{font-weight:var(--fw-light)}.text-regular{font-weight:var(--fw-regular)}.text-medium{font-weight:var(--fw-medium)}.text-semibold{font-weight:var(--fw-semibold)}.text-bold{font-weight:var(--fw-bold)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-accent{color:var(--accent-light)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--sp-4);transition:background var(--duration-normal) var(--ease-default)}.card:hover{background:var(--glass-bg-hover)}.card-solid{background:var(--bg-secondary);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--sp-4)}.section-header{margin-bottom:var(--sp-3);justify-content:space-between;align-items:center;display:flex}.section-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes popIn{0%{transform:scale(0)}70%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes checkmark{0%{stroke-dashoffset:24px}to{stroke-dashoffset:0}}.animate-fade-in{animation:fadeIn var(--duration-normal) var(--ease-default)}.animate-slide-up{animation:slideUp var(--duration-slow) var(--ease-default)}.animate-scale-in{animation:scaleIn var(--duration-normal) var(--ease-default)}.stagger-children>*{animation:slideUp var(--duration-slow) var(--ease-default) both}.stagger-children>:first-child{animation-delay:0s}.stagger-children>:nth-child(2){animation-delay:40ms}.stagger-children>:nth-child(3){animation-delay:80ms}.stagger-children>:nth-child(4){animation-delay:.12s}.stagger-children>:nth-child(5){animation-delay:.16s}.stagger-children>:nth-child(6){animation-delay:.2s}.stagger-children>:nth-child(7){animation-delay:.24s}.stagger-children>:nth-child(8){animation-delay:.28s}.stagger-children>:nth-child(9){animation-delay:.32s}.stagger-children>:nth-child(10){animation-delay:.36s}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-6{gap:var(--sp-6)}.w-full{width:100%}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hidden{display:none!important}.page-loading{justify-content:center;align-items:center;min-height:40vh;display:flex}.page-spinner{border:3px solid var(--glass-border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.line-through{text-decoration:line-through}.nav-item{padding:var(--sp-2) var(--sp-3);color:var(--text-tertiary);font-size:var(--fs-xs);font-weight:var(--fw-medium);border-radius:var(--radius-md);transition:color var(--duration-normal) var(--ease-default);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:2px;text-decoration:none;display:flex}.nav-item svg{stroke-width:1.8px;width:22px;height:22px}.nav-item.active{color:var(--accent-light)}.nav-item:hover{color:var(--text-secondary);text-decoration:none}.nav-item.active:hover{color:var(--accent-light)}.sidebar .nav-item{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-base);border-radius:var(--radius-md);flex-direction:row;width:100%}.sidebar .nav-item.active{background:var(--accent-glow);color:var(--accent-light)}.sidebar-logo{font-size:var(--fs-xl);font-weight:var(--fw-extrabold);background:var(--accent-gradient);-webkit-text-fill-color:transparent;padding:var(--sp-2) var(--sp-4);margin-bottom:var(--sp-8);letter-spacing:-.02em;-webkit-background-clip:text;background-clip:text}.btn{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);border-radius:var(--radius-md);font-size:var(--fs-base);font-weight:var(--fw-semibold);transition:all var(--duration-normal) var(--ease-default);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:0 2px 12px var(--accent-glow)}.btn-primary:hover{box-shadow:0 4px 20px #6c5ce74d}.btn-secondary{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-primary)}.btn-secondary:hover{background:var(--glass-bg-hover)}.btn-ghost{color:var(--text-secondary);padding:var(--sp-2)}.btn-ghost:hover{color:var(--text-primary);background:var(--glass-bg)}.btn-danger{background:var(--danger-bg);color:var(--danger)}.btn-danger:hover{background:#ef444433}.btn-sm{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);border-radius:var(--radius-sm)}.btn-icon{border-radius:var(--radius-full);width:40px;height:40px;padding:0}.btn-icon svg{width:20px;height:20px}.fab{bottom:calc(var(--nav-height) + var(--safe-bottom) + var(--sp-4));right:var(--sp-4);border-radius:var(--radius-full);background:var(--accent-gradient);color:#fff;cursor:pointer;z-index:90;width:56px;height:56px;transition:all var(--duration-normal) var(--ease-default);-webkit-tap-highlight-color:transparent;border:none;justify-content:center;align-items:center;display:flex;position:fixed;box-shadow:0 4px 24px #6c5ce766}.fab:hover{transform:scale(1.05);box-shadow:0 6px 32px #6c5ce780}.fab:active{transform:scale(.95)}.fab svg{width:24px;height:24px}@media (width>=768px){.fab{bottom:var(--sp-6);right:var(--sp-6)}}.form-group{gap:var(--sp-2);flex-direction:column;display:flex}.form-label{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-secondary)}.form-input,.form-select,.form-textarea{width:100%;padding:var(--sp-3) var(--sp-4);background:var(--bg-tertiary);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--fs-base);transition:border-color var(--duration-normal) var(--ease-default)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-tertiary)}.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238B8B9E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--sp-3) center;padding-right:var(--sp-10)}.form-textarea{resize:vertical;min-height:80px}.form-row{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.color-options{gap:var(--sp-2);flex-wrap:wrap;display:flex}.color-option{border-radius:var(--radius-full);cursor:pointer;width:28px;height:28px;transition:all var(--duration-fast) var(--ease-default);border:2px solid #0000}.color-option:hover{transform:scale(1.15)}.color-option.selected{border-color:var(--text-primary);box-shadow:0 0 0 2px var(--bg-primary)}.modal-overlay{-webkit-backdrop-filter:blur(4px);z-index:200;animation:fadeIn var(--duration-fast) var(--ease-default);background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=768px){.modal-overlay{align-items:center}}.modal-container{background:var(--bg-secondary);border:1px solid var(--glass-border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:480px;max-height:90dvh;animation:slideUp var(--duration-slow) var(--ease-default);overflow-y:auto}@media (width>=768px){.modal-container{border-radius:var(--radius-xl)}}.modal-header{padding:var(--sp-5) var(--sp-5) var(--sp-3);background:var(--bg-secondary);z-index:1;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.modal-title{font-size:var(--fs-lg);font-weight:var(--fw-bold)}.modal-close{border-radius:var(--radius-full);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default);justify-content:center;align-items:center;display:flex}.modal-close:hover{background:var(--glass-bg);color:var(--text-primary)}.modal-body{padding:var(--sp-3) var(--sp-5) var(--sp-5);gap:var(--sp-4);flex-direction:column;display:flex}.modal-footer{padding:var(--sp-3) var(--sp-5) var(--sp-5);gap:var(--sp-3);justify-content:flex-end;display:flex}.modal-footer .btn{flex:1}#toast-root{top:var(--sp-4);right:var(--sp-4);left:var(--sp-4);z-index:300;gap:var(--sp-2);pointer-events:none;flex-direction:column;align-items:center;display:flex;position:fixed}.toast{background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-primary);box-shadow:var(--shadow-lg);animation:slideDown var(--duration-slow) var(--ease-default);pointer-events:auto;align-items:center;gap:var(--sp-2);width:100%;max-width:360px;display:flex}.toast-success{border-left:3px solid var(--success)}.toast-error{border-left:3px solid var(--danger)}.toast-info{border-left:3px solid var(--info)}.checkbox-wrapper{flex-shrink:0;width:24px;height:24px;position:relative}.checkbox-wrapper input{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;margin:0;position:absolute}.checkbox-visual{border:2px solid var(--text-tertiary);width:24px;height:24px;transition:all var(--duration-normal) var(--ease-default);pointer-events:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.checkbox-wrapper input:checked+.checkbox-visual{background:var(--accent-gradient);border-color:var(--accent)}.checkbox-visual svg{stroke:#fff;stroke-width:3px;fill:none;opacity:0;width:14px;height:14px;transition:all var(--duration-normal) var(--ease-default);transform:scale(0)}.checkbox-wrapper input:checked+.checkbox-visual svg{opacity:1;transform:scale(1)}.tabs{background:var(--bg-tertiary);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.tab{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-secondary);text-align:center;cursor:pointer;transition:all var(--duration-normal) var(--ease-default);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;flex:1}.tab.active{background:var(--bg-elevated);color:var(--text-primary);box-shadow:var(--shadow-sm)}.tab:hover:not(.active){color:var(--text-primary)}.empty-state{padding:var(--sp-12) var(--sp-6);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state svg{width:48px;height:48px;color:var(--text-tertiary);margin-bottom:var(--sp-4)}.empty-state-title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-secondary);margin-bottom:var(--sp-2)}.empty-state-text{font-size:var(--fs-sm);color:var(--text-tertiary);max-width:240px}.progress-ring{transform:rotate(-90deg)}.progress-ring-bg{stroke:var(--bg-tertiary)}.progress-ring-fill{transition:stroke-dashoffset .6s var(--ease-default)}.badge{padding:2px var(--sp-2);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-semibold);align-items:center;line-height:1.4;display:inline-flex}.badge-accent{background:var(--accent-glow);color:var(--accent-light)}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.metric-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--sp-4);gap:var(--sp-1);flex-direction:column;display:flex}.metric-value{font-size:var(--fs-2xl);font-weight:var(--fw-bold);line-height:var(--lh-tight)}.metric-label{font-size:var(--fs-xs);color:var(--text-secondary);font-weight:var(--fw-medium);text-transform:uppercase;letter-spacing:.06em}.metric-delta{font-size:var(--fs-xs);font-weight:var(--fw-semibold)}.metric-delta.positive{color:var(--success)}.metric-delta.negative{color:var(--danger)}.metrics-grid{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}@media (width>=768px){.metrics-grid-4{grid-template-columns:repeat(4,1fr)}}.page-header{margin-bottom:var(--sp-6)}.page-title{font-size:var(--fs-2xl);font-weight:var(--fw-bold);line-height:var(--lh-tight);margin-bottom:var(--sp-1)}.page-subtitle{font-size:var(--fs-sm);color:var(--text-secondary)}.dashboard{gap:var(--sp-5);flex-direction:column;display:flex}.dash-greeting-text{font-size:var(--fs-2xl);font-weight:var(--fw-bold);line-height:var(--lh-tight)}.dash-hero{gap:var(--sp-5);align-items:center;display:flex}.dash-ring-container{flex-shrink:0;width:128px;height:128px;position:relative}.dash-ring-label{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.dash-ring-pct{font-size:var(--fs-2xl);font-weight:var(--fw-extrabold);background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;line-height:1}.dash-hero-stats{gap:var(--sp-2);flex:1;grid-template-columns:1fr 1fr;min-width:0;display:grid}.dash-hero-stats .metric-card{padding:var(--sp-3)}.dash-hero-stats .metric-value{font-size:var(--fs-xl)}.dash-week-bars{gap:var(--sp-2);height:80px;padding-top:var(--sp-2);align-items:flex-end;display:flex}.dash-week-day{align-items:center;gap:var(--sp-1);flex-direction:column;flex:1;display:flex}.dash-week-bar-track{border-radius:var(--radius-sm);background:var(--bg-tertiary);flex-direction:column;justify-content:flex-end;width:100%;height:56px;display:flex;overflow:hidden}.dash-week-bar-fill{background:var(--accent-gradient);border-radius:var(--radius-sm);width:100%;transition:height .4s var(--ease-default);min-height:0}.dash-week-label{font-size:var(--fs-xs);color:var(--text-tertiary);font-weight:var(--fw-medium);text-transform:capitalize}.dash-week-today .dash-week-label{color:var(--accent-light);font-weight:var(--fw-semibold)}.dash-week-today .dash-week-bar-track{border:1px solid var(--accent)}.dash-habits-list{gap:var(--sp-1);flex-direction:column;display:flex}.dash-habit-item{padding:var(--sp-2) 0;border-bottom:1px solid var(--glass-border);justify-content:space-between;align-items:center;display:flex}.dash-habit-item:last-child{border-bottom:none}.dash-habit-left{align-items:center;gap:var(--sp-3);min-width:0;display:flex}.dash-habit-color{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.dash-habit-name{font-size:var(--fs-base);font-weight:var(--fw-medium);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dash-habit-name.line-through{color:var(--text-tertiary);text-decoration:line-through}.dash-habit-check{width:32px;height:32px;color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-full);transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;display:flex}.dash-habit-check:hover{background:var(--glass-bg)}.dash-habit-check.checked{color:var(--success)}.dash-habit-check svg{width:22px;height:22px}.dash-tasks-list{gap:var(--sp-1);flex-direction:column;display:flex}.dash-task-item{align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--glass-border);display:flex}.dash-task-item:last-child{border-bottom:none}.dash-task-check{width:24px;height:24px;color:var(--text-tertiary);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.dash-task-check svg{width:20px;height:20px}.dash-task-info{align-items:center;gap:var(--sp-2);flex:1;min-width:0;display:flex}.dash-task-title{font-size:var(--fs-base);font-weight:var(--fw-medium);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dash-actions{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.dash-actions .btn{justify-content:center;text-decoration:none}.dash-actions .btn svg{width:16px;height:16px}.xp-widget{padding:var(--sp-4)}.xp-header{margin-bottom:var(--sp-3);justify-content:space-between;align-items:center;display:flex}.xp-badge-wrap{align-items:center;gap:var(--sp-3);display:flex}.xp-era-icon{flex-shrink:0;font-size:2rem;line-height:1}.xp-level{font-size:var(--fs-lg);font-weight:var(--fw-bold);line-height:1.1}.xp-era-name{font-size:var(--fs-sm);font-weight:var(--fw-semibold);margin-top:2px}.xp-bar-track{background:var(--bg-tertiary);border-radius:var(--radius-pill);height:8px;margin-bottom:var(--sp-2);overflow:hidden}.xp-bar-fill{border-radius:var(--radius-pill);height:100%;transition:width .7s var(--ease-default);min-width:4px}.xp-bar-meta{justify-content:space-between;display:flex}.xp-achievements-link{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--accent-light);margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--accent-glow);border-radius:var(--radius-pill);transition:background var(--duration-fast), border-color var(--duration-fast), transform var(--duration-fast);border:1px solid #6c5ce733;align-items:center;gap:6px;width:fit-content;text-decoration:none;display:flex}.xp-achievements-link:hover{background:#6c5ce733;border-color:#6c5ce759;text-decoration:none;transform:translateY(-1px)}.xp-ach-counter{font-size:.6rem;font-weight:var(--fw-bold);color:var(--text-primary);background:var(--bg-tertiary);border-radius:var(--radius-pill);margin-left:2px;padding:1px 6px}.level-up-overlay{-webkit-backdrop-filter:blur(10px);z-index:9999;animation:fadeIn .25s var(--ease-default);background:#000000c7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.level-up-card{background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--sp-8) var(--sp-6);text-align:center;width:90%;max-width:320px;position:relative;overflow:hidden}.level-up-confetti-area{pointer-events:none;position:absolute;inset:0;overflow:hidden}.level-up-emoji{margin-bottom:var(--sp-4);font-size:3.5rem;line-height:1}.level-up-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.18em;color:var(--text-secondary);text-transform:uppercase;margin-bottom:var(--sp-2)}.level-up-number{font-size:var(--fs-3xl);font-weight:var(--fw-extrabold);margin-bottom:var(--sp-1);line-height:1}.level-up-era-name{font-size:var(--fs-lg);font-weight:var(--fw-semibold);margin-bottom:var(--sp-6)}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-20px)rotate(0)}80%{opacity:.9}to{opacity:0;transform:translateY(380px)rotate(720deg)}}.confetti-piece{animation:linear forwards confetti-fall;position:absolute;top:0}@media (width<=360px){.dash-hero{flex-direction:column;align-items:center}.dash-hero-stats{width:100%}}.habits-page{flex-direction:column;display:flex}.habits-daily-summary{align-items:center;gap:var(--sp-4);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-4);display:flex}.habits-daily-numbers{flex-shrink:0;align-items:baseline;gap:2px;display:flex}.habits-daily-done{font-size:2.5rem;font-weight:var(--fw-bold);color:var(--accent-light);line-height:1}.habits-daily-of{font-size:var(--fs-lg);font-weight:var(--fw-medium);color:var(--text-tertiary)}.habits-daily-right{gap:var(--sp-2);flex-direction:column;flex:1;min-width:0;display:flex}.habits-daily-label{font-size:var(--fs-sm);color:var(--text-secondary)}.habits-progress-bar{background:var(--bg-tertiary);border-radius:var(--radius-pill);width:100%;height:6px;overflow:hidden}.habits-progress-fill{background:var(--accent-gradient);border-radius:var(--radius-pill);height:100%;transition:width .4s var(--ease-default)}.habits-list{gap:var(--sp-3);flex-direction:column;display:flex}.habit-card{gap:var(--sp-2);background:var(--glass-bg);border:1px solid var(--glass-border);border-left:3px solid var(--habit-color,var(--accent));border-radius:var(--radius-lg);padding:var(--sp-3) var(--sp-4);transition:all var(--duration-normal) var(--ease-default);flex-direction:column;display:flex}.habit-card:hover{background:var(--glass-bg-hover)}.habit-card.habit-completed{opacity:.65}.habit-card-main{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.habit-card-info{gap:var(--sp-1);flex-direction:column;flex:1;min-width:0;display:flex}.habit-card-name{font-size:var(--fs-base);font-weight:var(--fw-semibold);line-height:var(--lh-tight);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.habit-completed .habit-card-name{color:var(--text-tertiary);text-decoration:line-through}.habit-card-tags{gap:var(--sp-1);flex-wrap:wrap;display:flex}.habit-tag{font-size:.65rem;font-weight:var(--fw-medium);color:var(--text-tertiary);background:var(--bg-tertiary);border-radius:var(--radius-pill);padding:2px var(--sp-2);letter-spacing:.01em}.habit-mini-progress{background:var(--bg-tertiary);border-radius:var(--radius-pill);height:4px;overflow:hidden}.habit-mini-progress-fill{border-radius:var(--radius-pill);height:100%;transition:width .4s var(--ease-default)}.habit-stepper{align-items:center;gap:var(--sp-2);flex-shrink:0;display:flex}.habit-stepper-btn{border-radius:var(--radius-full);background:var(--bg-tertiary);border:1px solid var(--glass-border);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;font-size:var(--fs-base);font-weight:var(--fw-bold);justify-content:center;align-items:center;line-height:1;display:flex}.habit-stepper-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.habit-stepper-btn:active{transform:scale(.9)}.habit-stepper-value{font-size:var(--fs-sm);font-weight:var(--fw-bold);text-align:center;min-width:40px;color:var(--accent-light)}.habit-check-btn{cursor:pointer;width:40px;height:40px;color:var(--text-tertiary);border-radius:var(--radius-full);transition:all var(--duration-normal) var(--ease-default);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.habit-check-btn:hover{background:var(--glass-bg)}.habit-check-btn.checked{color:var(--success)}.habit-check-btn:active{transform:scale(.85)}.habits-all-header{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);display:flex}.habits-all-list{gap:var(--sp-2);flex-direction:column;display:flex}.habit-row{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);transition:background var(--duration-fast) var(--ease-default);display:flex;overflow:hidden}.habit-row:hover{background:var(--glass-bg-hover)}.habit-row-accent{flex-shrink:0;width:4px}.habit-row-body{gap:var(--sp-2);min-width:0;padding:var(--sp-3) var(--sp-4);flex-direction:column;flex:1;display:flex}.habit-row-top{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.habit-row-name{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.habit-row-actions{gap:var(--sp-1);flex-shrink:0;display:flex}.habit-row-meta{align-items:center;gap:var(--sp-1);flex-wrap:wrap;display:flex}.habit-meta-chip{font-size:.65rem;font-weight:var(--fw-medium);color:var(--text-tertiary);background:var(--bg-tertiary);border-radius:var(--radius-pill);padding:2px var(--sp-2);letter-spacing:.01em}.habit-meta-ended{color:var(--danger);background:#ff475714}.habit-meta-period{color:var(--accent-light);background:var(--accent-glow)}.habit-streak-dots{align-items:center;gap:4px;display:flex}.habit-dot{border-radius:var(--radius-full);background:var(--bg-hover);border:1px solid var(--glass-border);width:10px;height:10px;transition:background var(--duration-fast);flex-shrink:0}.habit-dot.done{border-color:#0000}.habit-dot.today{border-color:var(--accent);border-width:2px}.habit-dot.done.today{border-color:#0000}.habit-row-stats{align-items:center;gap:var(--sp-3);display:flex}.habit-stat-item{flex-direction:column;align-items:center;gap:1px;display:flex}.habit-stat-value{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--text-primary);line-height:1}.habit-stat-label{font-size:.6rem;font-weight:var(--fw-medium);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.habit-stat-divider{background:var(--glass-border);flex-shrink:0;width:1px;height:24px}.habit-days-selector{gap:var(--sp-1);flex-wrap:wrap;display:flex}.habit-day-chip{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-pill);background:var(--bg-tertiary);border:1px solid var(--glass-border);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent}.habit-day-chip input{display:none}.habit-day-chip.selected{background:var(--accent-glow);border-color:var(--accent);color:var(--accent-light)}.habit-day-chip:has(input:checked){background:var(--accent-glow);border-color:var(--accent);color:var(--accent-light)}.date-navigator{justify-content:center;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4);padding:var(--sp-2) 0;display:flex}.date-nav-btn{border-radius:var(--radius-full);background:var(--glass-bg);border:1px solid var(--glass-border);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;flex-shrink:0;justify-content:center;align-items:center;display:flex}.date-nav-btn:hover:not(.disabled){background:var(--glass-bg-hover);color:var(--text-primary)}.date-nav-btn:active:not(.disabled){transform:scale(.9)}.date-nav-btn.disabled{opacity:.3;cursor:not-allowed}.date-nav-center{align-items:center;gap:var(--sp-1);flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.date-nav-label{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border:1px solid var(--glass-border);border-radius:var(--radius-md);cursor:pointer;color:var(--text-primary);font-size:var(--fs-base);font-weight:var(--fw-semibold);transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;background:0 0;width:100%;font-family:inherit;display:flex}.date-nav-label:hover{background:var(--glass-bg-hover)}.date-nav-label:active{transform:scale(.97)}.date-nav-label.date-nav-past{background:var(--accent-glow);border-color:var(--accent);color:var(--accent-light)}.date-picker-hidden{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.date-nav-today-btn{padding:4px var(--sp-3);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-pill);color:var(--accent-light);font-size:.65rem;font-weight:var(--fw-semibold);cursor:pointer;transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;text-transform:uppercase;letter-spacing:.04em;justify-content:center;align-items:center;gap:4px;font-family:inherit;display:flex}.date-nav-today-btn:hover{background:var(--accent-glow);border-color:var(--accent)}.date-nav-today-btn:active{transform:scale(.95)}.tasks-page{flex-direction:column;display:flex}.tasks-list{gap:var(--sp-2);flex-direction:column;display:flex}.task-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--sp-3) var(--sp-4);transition:all var(--duration-normal) var(--ease-default);flex-direction:column;gap:0;display:flex}.task-card:hover{background:var(--glass-bg-hover)}.task-card.task-done{opacity:.5}.task-card.task-overdue{border-left:3px solid var(--danger)}.task-check{cursor:pointer;width:28px;height:28px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.task-card.task-done .task-check{color:var(--success)}.task-check:active{transform:scale(.8)}.task-info{cursor:pointer;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.task-title{font-size:var(--fs-base);font-weight:var(--fw-medium);line-height:var(--lh-tight)}.task-done .task-title{color:var(--text-tertiary);text-decoration:line-through}.task-meta{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.task-delete-btn{opacity:0;transition:opacity var(--duration-normal) var(--ease-default);color:var(--text-tertiary)}.task-card:hover .task-delete-btn{opacity:1}@media (width<=767px){.task-delete-btn{opacity:.6;min-width:36px;min-height:36px}}.task-card-main{align-items:flex-start;gap:var(--sp-3);width:100%;display:flex}.task-check{margin-top:2px}.subtask-badge{font-size:.65rem;font-weight:var(--fw-semibold);color:var(--accent-light);background:var(--accent-glow);border-radius:var(--radius-pill);border:1px solid #6c5ce733;align-items:center;gap:3px;padding:1px 6px;display:inline-flex}.subtask-list{margin-top:var(--sp-2);padding-left:calc(28px + var(--sp-3));flex-direction:column;gap:2px;display:flex}.subtask-item{align-items:center;gap:var(--sp-2);padding:2px 0;display:flex}.subtask-check{cursor:pointer;width:18px;height:18px;color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.subtask-item:not(.subtask-done) .subtask-check:hover{color:var(--accent-light)}.subtask-done .subtask-check{color:var(--success)}.subtask-check:active{transform:scale(.85)}.subtask-title{font-size:var(--fs-sm);color:var(--text-secondary);line-height:1.3}.subtask-done .subtask-title{color:var(--text-tertiary);text-decoration:line-through}.modal-subtasks-list{flex-direction:column;gap:2px;max-height:200px;display:flex;overflow-y:auto}.modal-subtask-item{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--bg-tertiary);border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-default);display:flex}.modal-subtask-done{opacity:.6}.modal-subtask-check{cursor:pointer;width:24px;height:24px;color:var(--text-tertiary);border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.modal-subtask-check:hover{color:var(--accent-light)}.modal-subtask-checked{color:var(--success)}.modal-subtask-title{font-size:var(--fs-sm);color:var(--text-primary);flex:1}.modal-subtask-done .modal-subtask-title{color:var(--text-tertiary);text-decoration:line-through}.subtask-add-row{gap:var(--sp-2);margin-top:var(--sp-2);display:flex}.subtask-add-row .form-input{flex:1}.task-desc{font-size:var(--fs-xs);color:var(--text-tertiary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:1px;line-height:1.4;display:-webkit-box;overflow:hidden}.date-input-row{align-items:center;gap:var(--sp-2);display:flex}.date-input-row .form-input{flex:1}.recurrence-badge{font-size:.6rem;font-weight:var(--fw-semibold);color:var(--text-secondary);background:var(--bg-tertiary);border:1px solid var(--glass-border);border-radius:var(--radius-pill);align-items:center;padding:1px 6px;display:inline-flex}.toggle-row{padding:var(--sp-2) 0;justify-content:space-between;align-items:center;display:flex}.toggle-switch{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-slider{background:var(--bg-hover);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--duration-normal) var(--ease-default);border:1px solid var(--glass-border);position:absolute;inset:0}.toggle-slider:before{content:"";background:var(--text-secondary);width:18px;height:18px;transition:transform var(--duration-normal) var(--ease-default), background var(--duration-normal);border-radius:50%;position:absolute;top:50%;left:2px;transform:translateY(-50%)}.toggle-switch input:checked+.toggle-slider{background:var(--accent-glow);border-color:var(--accent)}.toggle-switch input:checked+.toggle-slider:before{background:var(--accent-light);transform:translate(20px,-50%)}.analytics-page{flex-direction:column;display:flex}.analytics-sections{gap:var(--sp-5);flex-direction:column;display:flex}.analytics-period-bar{gap:var(--sp-2);padding:var(--sp-1) 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;overflow-x:auto}.analytics-period-bar::-webkit-scrollbar{display:none}.period-chip{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-pill);background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-secondary);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;flex-shrink:0;font-family:inherit}.period-chip:hover{background:var(--glass-bg-hover);color:var(--text-primary)}.period-chip.active{background:var(--accent-glow);border-color:var(--accent);color:var(--accent-light);font-weight:var(--fw-semibold)}.custom-range{align-items:flex-end;gap:var(--sp-3);padding:var(--sp-3);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);margin-top:var(--sp-2);display:flex}.custom-range-field{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.form-input-sm{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm)}.chart-container{width:100%;height:220px;position:relative}.chart-container-sm{height:180px}.heatmap{gap:var(--sp-2);padding:var(--sp-2) 0;display:flex;overflow-x:auto}.heatmap-days{flex-direction:column;flex-shrink:0;gap:3px;padding-top:0;display:flex}.heatmap-day-label{height:14px;color:var(--text-tertiary);width:24px;font-size:.6rem;line-height:14px}.heatmap-grid{flex:1;gap:3px;display:flex}.heatmap-week{flex-direction:column;gap:3px;display:flex}.heatmap-cell{width:14px;height:14px;transition:all var(--duration-fast) var(--ease-default);cursor:default;border-radius:3px}.heatmap-cell-empty{background:0 0}.heatmap-level-0{background:var(--bg-tertiary)}.heatmap-level-1{background:#6c5ce733}.heatmap-level-2{background:#6c5ce766}.heatmap-level-3{background:#6c5ce799}.heatmap-level-4{background:#6c5ce7d9}.heatmap-today{outline:2px solid var(--accent-light);outline-offset:1px}.heatmap-cell:hover{transform:scale(1.3)}.heatmap-legend{align-items:center;gap:var(--sp-1);padding-top:var(--sp-2);justify-content:flex-end;display:flex}.habit-ranking{gap:var(--sp-3);flex-direction:column;display:flex}.habit-rank-item{align-items:center;gap:var(--sp-3);display:flex}.habit-rank-info{align-items:center;gap:var(--sp-2);flex-shrink:0;width:30%;min-width:100px;display:flex}.habit-rank-bar-container{background:var(--bg-tertiary);border-radius:var(--radius-pill);flex:1;height:8px;overflow:hidden}.habit-rank-bar{border-radius:var(--radius-pill);height:100%;transition:width .6s var(--ease-default);min-width:2px}.task-analytics-metrics{gap:var(--sp-3);margin-bottom:var(--sp-4);grid-template-columns:repeat(3,1fr);display:grid}.task-analytics-stat{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--sp-3);flex-direction:column;gap:2px;display:flex}.task-analytics-value{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--text-primary);line-height:1}.task-analytics-label{font-size:var(--fs-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.task-analytics-delta{font-size:var(--fs-xs);font-weight:var(--fw-semibold);margin-top:2px}.task-analytics-delta.positive{color:var(--success)}.task-analytics-delta.negative{color:var(--danger)}.task-cat-bars{gap:var(--sp-2);flex-direction:column;display:flex}.task-cat-row{align-items:center;gap:var(--sp-3);display:flex}.task-cat-name{width:25%;min-width:80px;color:var(--text-secondary);flex-shrink:0}.task-cat-bar-track{background:var(--bg-tertiary);border-radius:var(--radius-pill);flex:1;height:8px;overflow:hidden}.task-cat-bar-fill{background:var(--accent-gradient);border-radius:var(--radius-pill);height:100%;transition:width .6s var(--ease-default);min-width:2px}.task-cat-count{text-align:right;min-width:28px;color:var(--text-primary)}@media (width<=400px){.task-analytics-metrics{grid-template-columns:1fr 1fr}}.settings-page{gap:var(--sp-5);flex-direction:column;display:flex}.settings-stats{gap:var(--sp-3);flex-direction:column;display:flex}.settings-stat{align-items:center;gap:var(--sp-3);font-size:var(--fs-base);color:var(--text-secondary);display:flex}.settings-tags{gap:var(--sp-2);flex-wrap:wrap;display:flex}.settings-tag{align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-3);background:var(--bg-tertiary);border:1px solid var(--glass-border);border-radius:var(--radius-pill);font-size:var(--fs-sm);color:var(--text-secondary);display:inline-flex}.settings-tag-remove{width:18px;height:18px;color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-full);transition:all var(--duration-fast) var(--ease-default);background:0 0;border:none;justify-content:center;align-items:center;font-size:14px;line-height:1;display:flex}.settings-tag-remove:hover{background:var(--danger-bg);color:var(--danger)}.settings-actions{gap:var(--sp-3);flex-direction:column;display:flex}.settings-about{text-align:center;padding:var(--sp-2)}.login-page{min-height:100vh;padding:var(--sp-4);background:var(--bg-primary);background-image:radial-gradient(at 20%,#6c5ce714 0%,#0000 60%),radial-gradient(at 80% 20%,#a78bfa0f 0%,#0000 50%);justify-content:center;align-items:center;display:flex}.login-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);width:100%;max-width:400px;padding:var(--sp-8);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);animation:fade-in-up var(--duration-normal) var(--ease-default)}.login-header{text-align:center;margin-bottom:var(--sp-6)}.login-logo{font-size:2.5rem;font-weight:var(--fw-bold);background:var(--accent-gradient);-webkit-text-fill-color:transparent;letter-spacing:-.03em;margin-bottom:var(--sp-1);-webkit-background-clip:text;background-clip:text}.login-subtitle{color:var(--text-secondary);font-size:var(--fs-sm)}.login-tabs{gap:var(--sp-1);background:var(--bg-secondary);border-radius:var(--radius-md);margin-bottom:var(--sp-5);padding:3px;display:flex}.login-tab{padding:var(--sp-2) 0;color:var(--text-secondary);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease-default);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex:1;font-family:inherit}.login-tab.active{background:var(--accent-glow);color:var(--accent-light);font-weight:var(--fw-semibold)}.login-tab:hover:not(.active){color:var(--text-primary)}.login-form{gap:var(--sp-4);flex-direction:column;display:flex}.login-btn{width:100%;padding:var(--sp-3);font-size:var(--fs-base);font-weight:var(--fw-semibold);margin-top:var(--sp-2);justify-content:center;align-items:center;gap:var(--sp-2);min-height:48px;display:flex}.login-btn:disabled{opacity:.7;cursor:not-allowed}.login-error{padding:var(--sp-3);border-radius:var(--radius-md);color:var(--danger);font-size:var(--fs-sm);text-align:center;background:#ef44441a;border:1px solid #ef44444d}.login-error.login-success{color:var(--success);background:#22c55e1a;border-color:#22c55e4d}.login-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}.achievement-overlay{z-index:1100;padding:var(--sp-4);-webkit-backdrop-filter:blur(12px);animation:fadeIn var(--duration-normal) var(--ease-default);background:#000000d1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.achievement-card{background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--sp-8) var(--sp-6) var(--sp-6);text-align:center;align-items:center;gap:var(--sp-3);width:100%;max-width:340px;box-shadow:0 24px 64px #00000080, 0 0 80px var(--ach-popup-glow,#6c5ce726);flex-direction:column;display:flex;position:relative;overflow:hidden}.achievement-card:before{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#ffffff0a,#0000);width:100%;height:100%;animation:2s ease-out .3s ach-shimmer-pass;position:absolute;top:0;left:-100%}.achievement-counter{font-size:.6rem;font-weight:var(--fw-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em}.achievement-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.12em}.achievement-icon-wrap{border-radius:var(--radius-full);background:var(--ach-popup-glow,#6c5ce71f);border:2px solid var(--ach-popup-color,var(--accent));width:88px;height:88px;animation:ach-icon-bounce .6s var(--ease-default) .15s both;box-shadow:0 0 40px var(--ach-popup-glow,#6c5ce740);justify-content:center;align-items:center;display:flex;position:relative}.achievement-icon-lg{filter:drop-shadow(0 4px 16px #0006);font-size:3rem;line-height:1}.achievement-name{font-size:var(--fs-xl);font-weight:var(--fw-bold);color:var(--text-primary);line-height:var(--lh-tight)}.achievement-desc{font-size:var(--fs-sm);color:var(--text-secondary);line-height:1.4}.achievement-xp-badge{background:var(--ach-popup-glow,var(--accent-glow));border:1px solid var(--ach-popup-color,var(--accent));color:var(--ach-popup-color,var(--accent-light));font-size:var(--fs-sm);font-weight:var(--fw-bold);padding:var(--sp-1) var(--sp-5);border-radius:var(--radius-pill)}.ach-confetti-area{pointer-events:none;position:absolute;inset:0;overflow:hidden}@keyframes ach-icon-bounce{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.15)}80%{transform:scale(.95)}to{transform:scale(1)}}@keyframes ach-shimmer-pass{0%{left:-100%}to{left:200%}}.ach-page{gap:var(--sp-6);padding-bottom:var(--sp-6);flex-direction:column;display:flex}.ach-hero{align-items:center;gap:var(--sp-3);padding:var(--sp-8) var(--sp-5) var(--sp-6);text-align:center;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);flex-direction:column;display:flex;position:relative;overflow:hidden}.ach-hero:before{content:"";background:var(--ach-era-color,var(--accent));opacity:.08;filter:blur(60px);pointer-events:none;border-radius:50%;width:200px;height:200px;position:absolute;top:-60px;left:50%;transform:translate(-50%)}.ach-hero-badge{z-index:1;width:120px;height:120px;position:relative}.ach-hero-badge svg.ach-ring-svg{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.ach-ring-bg{fill:none;stroke:var(--bg-tertiary);stroke-width:4px}.ach-ring-fill{fill:none;stroke:var(--ach-era-color,var(--accent));stroke-width:4px;stroke-linecap:round;transition:stroke-dashoffset 1s var(--ease-default);filter:drop-shadow(0 0 6px var(--ach-era-color,var(--accent)))}.ach-hero-badge-inner{border-radius:var(--radius-full);background:var(--bg-secondary);border:2px solid var(--glass-border);box-shadow:inset 0 0 20px #0000004d, 0 0 30px var(--ach-era-glow,#6c5ce71f);flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:8px}.ach-hero-era-icon{filter:drop-shadow(0 2px 8px #0006);font-size:2.25rem;line-height:1}.ach-hero-level-num{font-size:.7rem;font-weight:var(--fw-extrabold);color:var(--ach-era-color,var(--accent));letter-spacing:-.02em;line-height:1}.ach-hero-title{z-index:1;flex-direction:column;align-items:center;gap:4px;display:flex}.ach-hero-level{font-size:2rem;font-weight:var(--fw-extrabold);background:linear-gradient(135deg, var(--ach-era-color,var(--accent)), var(--text-primary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;line-height:1}.ach-hero-era-name{align-items:center;gap:var(--sp-1);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--ach-era-color,var(--accent));background:var(--ach-era-glow,#6c5ce71a);border-radius:var(--radius-pill);letter-spacing:.02em;padding:3px 12px;display:inline-flex}.ach-hero-xp-wrap{z-index:1;flex-direction:column;gap:6px;width:100%;max-width:280px;display:flex}.ach-hero-xp-bar{background:var(--bg-tertiary);border-radius:var(--radius-pill);width:100%;height:6px;overflow:hidden}.ach-hero-xp-fill{border-radius:var(--radius-pill);height:100%;transition:width .8s var(--ease-default);min-width:3px}.ach-hero-xp-text{font-size:var(--fs-xs);color:var(--text-tertiary);text-align:center}.ach-hero-pill{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-pill);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-primary);z-index:1;display:flex}.ach-hero-pill-pct{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--accent-light);background:var(--accent-glow);border-radius:var(--radius-pill);padding:2px 8px}.ach-section{gap:var(--sp-3);flex-direction:column;display:flex}.ach-section-title{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-primary);align-items:center;gap:var(--sp-2);display:flex}.ach-section-count{font-size:.65rem;font-weight:var(--fw-semibold);color:var(--text-tertiary);background:var(--bg-tertiary);border-radius:var(--radius-pill);padding:2px 8px}.ach-section-count.all-done{color:var(--success);background:#22c55e1f}.ach-quest{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);transition:background var(--duration-fast), transform var(--duration-fast), box-shadow var(--duration-fast);overflow:hidden}.ach-quest:hover{background:var(--glass-bg-hover);transform:translateY(-1px);box-shadow:0 4px 20px #00000026}.ach-quest-top{align-items:center;gap:var(--sp-3);padding:var(--sp-4);display:flex}.ach-quest-icon-box{background:var(--qcg,#6c5ce71f);border:1.5px solid color-mix(in srgb, var(--qc,#6c5ce7) 30%, transparent);border-radius:var(--radius-lg);flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;font-size:1.75rem;line-height:1;display:flex;position:relative}.ach-quest-info{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.ach-quest-name{font-size:var(--fs-base);font-weight:var(--fw-bold);color:var(--text-primary);line-height:var(--lh-tight)}.ach-quest-desc{font-size:var(--fs-xs);color:var(--text-tertiary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.ach-quest-pct-wrap{flex-shrink:0;align-items:baseline;gap:1px;display:flex}.ach-quest-pct-num{font-size:1.75rem;font-weight:var(--fw-extrabold);line-height:1}.ach-quest-pct-sym{font-size:var(--fs-sm);font-weight:var(--fw-bold)}.ach-quest-bottom{padding:0 var(--sp-4) var(--sp-3);gap:var(--sp-2);flex-direction:column;display:flex}.ach-quest-bar{background:var(--bg-tertiary);border-radius:var(--radius-pill);width:100%;height:8px;overflow:hidden}.ach-quest-bar-fill{border-radius:var(--radius-pill);background:linear-gradient(90deg, var(--qc,#6c5ce7), color-mix(in srgb, var(--qc,#6c5ce7) 60%, white));height:100%;animation:ach-bar-fill-in .8s var(--ease-default) both;position:relative}.ach-quest-bar-fill:after{content:"";background:linear-gradient(90deg,#0000 0%,#fff3 50%,#0000 100%);animation:2s ease-in-out 1s infinite ach-bar-shimmer;position:absolute;inset:0}.ach-quest-foot-row{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.ach-quest-stat{font-size:var(--fs-xs);color:var(--text-tertiary)}.ach-quest-xp{font-size:.65rem;font-weight:var(--fw-bold);border-radius:var(--radius-pill);border:1px solid;flex-shrink:0;padding:2px 8px}.ach-badge-grid{gap:var(--sp-3);grid-template-columns:repeat(2,1fr);display:grid}.ach-badge{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-5) var(--sp-3) var(--sp-4);background:var(--bg,#6c5ce70f);border:1.5px solid color-mix(in srgb, var(--bc,var(--accent)) 40%, transparent);border-radius:var(--radius-xl);text-align:center;min-height:150px;transition:transform var(--duration-fast), box-shadow var(--duration-fast), border-color var(--duration-fast);cursor:default;flex-direction:column;display:flex;position:relative;overflow:hidden}.ach-badge:hover{box-shadow:0 8px 24px var(--bg,#6c5ce726);border-color:var(--bc,var(--accent));transform:translateY(-2px)scale(1.02)}.ach-badge-glow{background:var(--bc,var(--accent));opacity:.1;filter:blur(30px);pointer-events:none;width:100px;height:100px;transition:opacity var(--duration-fast);border-radius:50%;position:absolute;top:-40px;left:50%;transform:translate(-50%)}.ach-badge:hover .ach-badge-glow{opacity:.18}.ach-badge-icon{z-index:1;filter:drop-shadow(0 2px 8px #0000004d);font-size:2.5rem;line-height:1;animation:3s ease-in-out infinite ach-icon-idle}.ach-badge-name{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--text-primary);line-height:var(--lh-tight);z-index:1}.ach-badge-meta{z-index:1;flex-direction:column;align-items:center;gap:3px;display:flex}.ach-badge-date{color:var(--text-tertiary);font-size:.6rem}.ach-badge-xp{font-size:.6rem;font-weight:var(--fw-bold);color:var(--bc,var(--accent-light));background:var(--bg,#6c5ce714);border:1px solid color-mix(in srgb, var(--bc,var(--accent)) 35%, transparent);border-radius:var(--radius-pill);padding:1px 7px}.ach-empty{padding:var(--sp-10) var(--sp-4);text-align:center;align-items:center;gap:var(--sp-3);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);flex-direction:column;display:flex}.ach-empty-icon{filter:drop-shadow(0 4px 12px #0000004d);font-size:3.5rem;line-height:1}.ach-empty-heading{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-primary)}.ach-empty-sub{font-size:var(--fs-sm);color:var(--text-tertiary);max-width:260px;line-height:1.5}.ach-locked-group{gap:var(--sp-2);flex-direction:column;display:flex}.ach-locked-cat{font-size:.65rem;font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.07em;margin-top:var(--sp-2);align-items:center;gap:var(--sp-1);display:flex}.ach-locked-group:first-child .ach-locked-cat{margin-top:0}.ach-locked-grid{gap:var(--sp-1);flex-direction:column;display:flex}.ach-locked-pill{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);opacity:.4;transition:opacity var(--duration-fast), background var(--duration-fast);display:flex}.ach-locked-pill:hover{opacity:.55;background:var(--glass-bg-hover)}.ach-locked-icon{filter:grayscale()blur(.5px);flex-shrink:0;font-size:1.1rem;line-height:1}.ach-locked-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ach-locked-name{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-secondary)}.ach-locked-req{color:var(--text-tertiary);font-size:.6rem;line-height:1.3}@keyframes ach-icon-idle{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes ach-bar-fill-in{0%{width:0}}@keyframes ach-bar-shimmer{0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes ach-glow-pulse{0%,to{opacity:.1}50%{opacity:.18}}@media (width<=360px){.ach-badge-grid{grid-template-columns:1fr}.ach-hero-badge{width:100px;height:100px}.ach-hero-level{font-size:1.75rem}}
