:root{--bg-base: #fff1f7;--bg-surface: #fffafd;--bg-elevated: #ffffff;--bg-overlay: rgba(54, 24, 38, .45);--glass-bg: #fffafd;--glass-border: rgba(157, 23, 77, .11);--glass-hover: #fff0f7;--glass-blur: 12px;--accent-start: #f472b6;--accent-end: #db2777;--accent: #db2777;--accent-hover: #be185d;--accent-muted: rgba(219, 39, 119, .13);--gradient-primary: linear-gradient(135deg, var(--accent-start), var(--accent-end));--success: #15803d;--success-muted: rgba(21, 128, 61, .12);--warning: #d97706;--warning-muted: rgba(217, 119, 6, .14);--danger: #dc2626;--danger-muted: rgba(220, 38, 38, .12);--info: #9333ea;--info-muted: rgba(147, 51, 234, .12);--text-primary: #28111c;--text-secondary: #654154;--text-muted: #9a7487;--text-inverse: #fffafd;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--sp-9: 48px;--sp-10: 64px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-pill: 9999px;--shadow-sm: 0 1px 2px rgba(83, 25, 54, .06), 0 1px 3px rgba(83, 25, 54, .05);--shadow-md: 0 4px 10px rgba(83, 25, 54, .07), 0 2px 4px rgba(83, 25, 54, .05);--shadow-lg: 0 16px 40px rgba(83, 25, 54, .12), 0 4px 12px rgba(83, 25, 54, .06);--shadow-glow: 0 6px 20px rgba(219, 39, 119, .18);--shadow-glow-lg: 0 10px 34px rgba(219, 39, 119, .24);--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-heading: "Outfit", "Inter", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.5rem;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.7;--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .4s ease;--transition-spring: .3s cubic-bezier(.34, 1.56, .64, 1);--z-base: 1;--z-sticky: 100;--z-dropdown: 200;--z-overlay: 300;--z-modal: 400;--z-toast: 500;--sidebar-width: 240px;--sidebar-collapsed: 64px;--bottomnav-height: 64px;--header-height: 56px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth}body{font-family:var(--font-body);font-weight:400;line-height:var(--leading-normal);color:var(--text-primary);background-color:var(--bg-base);background-image:radial-gradient(1200px 600px at 100% -10%,rgba(22,121,79,.06),transparent 60%),radial-gradient(1000px 500px at -10% 110%,rgba(217,119,6,.05),transparent 60%);background-attachment:fixed;min-height:100vh;overflow-x:hidden}.login-page{min-height:100vh;display:grid;place-items:center;padding:var(--sp-6)}.login-panel{width:min(100%,420px);display:flex;flex-direction:column;gap:var(--sp-5);padding:var(--sp-7);background:var(--bg-surface);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.login-brand{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-2)}.login-mark{width:48px;height:48px;display:grid;place-items:center;flex:0 0 auto;border-radius:var(--radius-md);background:var(--gradient-primary);color:var(--text-inverse);font-weight:800;font-family:var(--font-heading)}.login-brand h1{font-size:var(--text-2xl)}.login-brand p{margin-top:var(--sp-1);font-size:var(--text-sm)}.login-error{padding:var(--sp-3) var(--sp-4);color:var(--danger);background:var(--danger-muted);border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:var(--leading-normal)}.login-submit{width:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#2b261f2e;border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:#2b261f52}::selection{background:var(--accent-muted);color:var(--text-primary)}a{color:var(--accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-hover)}img,svg{max-width:100%;display:block}ul,ol{list-style:none}button,input,select,textarea{font:inherit;color:inherit;border:none;outline:none;background:none}button{cursor:pointer}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:600;line-height:var(--leading-tight);color:var(--text-primary)}h1{font-size:var(--text-4xl);font-weight:800}h2{font-size:var(--text-3xl);font-weight:700}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}h5{font-size:var(--text-lg)}h6{font-size:var(--text-base)}p{color:var(--text-secondary);line-height:var(--leading-relaxed)}small{font-size:var(--text-xs);color:var(--text-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-gradient{background:var(--gradient-primary);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes countUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes checkmark{0%{stroke-dashoffset:24}to{stroke-dashoffset:0}}@keyframes floatOrb{0%,to{transform:translate(0) scale(1)}33%{transform:translate(30px,-40px) scale(1.1)}66%{transform:translate(-20px,20px) scale(.9)}}@keyframes progressFill{0%{width:0}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .4s ease both}.animate-fade-in-up{animation:fadeInUp .5s ease both}.animate-fade-in-down{animation:fadeInDown .5s ease both}.animate-slide-in-left{animation:slideInLeft .5s ease both}.animate-scale-in{animation:scaleIn .3s ease both}.stagger-children>*{animation:fadeInUp .4s ease both}.stagger-children>*:nth-child(1){animation-delay:.05s}.stagger-children>*:nth-child(2){animation-delay:.1s}.stagger-children>*:nth-child(3){animation-delay:.15s}.stagger-children>*:nth-child(4){animation-delay:.2s}.stagger-children>*:nth-child(5){animation-delay:.25s}.stagger-children>*:nth-child(6){animation-delay:.3s}.stagger-children>*:nth-child(7){animation-delay:.35s}.stagger-children>*:nth-child(8){animation-delay:.4s}.stagger-children>*:nth-child(9){animation-delay:.45s}.stagger-children>*:nth-child(10){animation-delay:.5s}.page-transition{animation:fadeInUp .45s ease both}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;line-height:1;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all var(--transition-base);-webkit-user-select:none;user-select:none;white-space:nowrap;position:relative;overflow:hidden}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.08) 50%,transparent 70%);background-size:200% 100%;opacity:0;transition:opacity var(--transition-fast)}.btn:hover:after{opacity:1;animation:shimmer 1.2s ease infinite}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:0 2px 12px #6366f14d}.btn-primary:hover{box-shadow:0 4px 20px #6366f173;transform:translateY(-1px)}.btn-secondary{background:var(--glass-bg);color:var(--text-primary);border-color:var(--glass-border);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur))}.btn-secondary:hover{background:var(--glass-hover);border-color:#2b261f2e}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{color:var(--text-primary);background:var(--glass-bg)}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 2px 12px #f43f5e4d}.btn-danger:hover{box-shadow:0 4px 20px #f43f5e73}.btn-xs{padding:var(--sp-1) var(--sp-2);font-size:var(--text-xs)}.btn-sm{padding:var(--sp-2) var(--sp-4);font-size:var(--text-sm)}.btn-lg{padding:var(--sp-4) var(--sp-6);font-size:var(--text-base)}.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-md)}.btn-icon.btn-sm{width:32px;height:32px}.btn-icon.btn-lg{width:44px;height:44px}.input-group{display:flex;flex-direction:column;gap:var(--sp-2)}.input-label{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.input{width:100%;padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);color:var(--text-primary);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-sm);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));transition:all var(--transition-base)}.input::placeholder{color:var(--text-muted)}.input:hover{border-color:#2b261f2e}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-muted)}.input-sm{padding:var(--sp-2) var(--sp-3);font-size:var(--text-xs)}.input-lg{padding:var(--sp-4) var(--sp-5);font-size:var(--text-base)}textarea.input{resize:vertical;min-height:80px}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;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='%2394a3b8' stroke-width='2'%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;cursor:pointer}.card{background:var(--bg-surface);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--sp-6);transition:all var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.card-interactive{cursor:pointer}.card-interactive:hover{transform:translateY(-2px);box-shadow:var(--shadow-md),var(--shadow-glow);border-color:#16794f40}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4)}.card-title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:600}.card-body{color:var(--text-secondary)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);animation:fadeIn .2s ease;padding:var(--sp-4)}.modal{background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-lg);width:100%;max-width:480px;max-height:90vh;overflow-y:auto;animation:scaleIn .25s ease;box-shadow:var(--shadow-lg)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-5) var(--sp-6);border-bottom:1px solid var(--glass-border)}.modal-title{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:600}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--text-muted);transition:all var(--transition-fast);font-size:18px}.modal-close:hover{color:var(--text-primary);background:var(--glass-bg)}.modal-body{padding:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-4)}.modal-footer{display:flex;gap:var(--sp-3);justify-content:flex-end;padding:var(--sp-4) var(--sp-6);border-top:1px solid var(--glass-border)}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);font-size:var(--text-xs);font-weight:500;border-radius:var(--radius-pill);line-height:1.4}.badge-primary{background:var(--accent-muted);color:var(--accent-hover)}.badge-success{background:var(--success-muted);color:var(--success)}.badge-warning{background:var(--warning-muted);color:var(--warning)}.badge-danger{background:var(--danger-muted);color:var(--danger)}.badge-info{background:var(--info-muted);color:var(--info)}.badge-neutral{background:var(--glass-bg);color:var(--text-secondary);border:1px solid var(--glass-border)}.toggle{position:relative;width:44px;height:24px;flex-shrink:0}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle-track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-pill);cursor:pointer;transition:all var(--transition-base)}.toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--text-muted);border-radius:50%;transition:all var(--transition-spring)}.toggle input:checked+.toggle-track{background:var(--accent-muted);border-color:var(--accent)}.toggle input:checked+.toggle-track:after{transform:translate(20px);background:var(--accent)}.toggle input:focus-visible+.toggle-track{box-shadow:0 0 0 3px var(--accent-muted)}.select-wrapper{position:relative}.select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);animation:slideDown .2s ease;overflow:hidden;max-height:240px;overflow-y:auto}.select-option{padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast)}.select-option:hover{background:var(--glass-hover)}.select-option.active{background:var(--accent-muted);color:var(--accent-hover)}.toast-container{position:fixed;top:var(--sp-5);right:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3);z-index:var(--z-toast);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);animation:slideInRight .3s ease,fadeIn .3s ease;pointer-events:auto;min-width:280px;max-width:400px}.toast-icon{flex-shrink:0;width:20px;height:20px}.toast-message{font-size:var(--text-sm);color:var(--text-primary);flex:1}.toast-close{flex-shrink:0;color:var(--text-muted);cursor:pointer;padding:var(--sp-1);transition:color var(--transition-fast)}.toast-close:hover{color:var(--text-primary)}.toast-success{border-left:3px solid var(--success)}.toast-error{border-left:3px solid var(--danger)}.toast-warning{border-left:3px solid var(--warning)}.toast-info{border-left:3px solid var(--info)}.stat-card{background:var(--bg-surface);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3);transition:all var(--transition-base);position:relative;overflow:hidden}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--gradient-primary);opacity:0;transition:opacity var(--transition-base)}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md),var(--shadow-glow)}.stat-card:hover:before{opacity:1}.stat-card-header{display:flex;align-items:center;justify-content:space-between}.stat-card-icon{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:18px}.stat-card-trend{display:flex;align-items:center;gap:2px;font-size:var(--text-xs);font-weight:500}.stat-card-trend.up{color:var(--success)}.stat-card-trend.down{color:var(--danger)}.stat-card-value{font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:700;color:var(--text-primary);animation:countUp .6s ease both}.stat-card-label{font-size:var(--text-sm);color:var(--text-muted)}.progress-bar{width:100%;height:8px;background:#2b261f14;border-radius:var(--radius-pill);overflow:hidden}.progress-bar-fill{height:100%;background:var(--gradient-primary);border-radius:var(--radius-pill);transition:width .8s cubic-bezier(.4,0,.2,1);animation:progressFill 1s ease both}.progress-bar-fill.success{background:var(--success)}.progress-bar-fill.warning{background:var(--warning)}.progress-bar-fill.danger{background:var(--danger)}.skeleton{background:linear-gradient(90deg,#2b261f0f 25%,#2b261f1f,#2b261f0f 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}.skeleton-text{height:14px;margin-bottom:var(--sp-2)}.skeleton-text:last-child{width:60%}.skeleton-title{height:24px;width:40%;margin-bottom:var(--sp-3)}.skeleton-avatar{width:40px;height:40px;border-radius:50%}.skeleton-card{height:120px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-10) var(--sp-6);text-align:center}.empty-state-icon{width:80px;height:80px;border-radius:50%;background:var(--glass-bg);border:1px solid var(--glass-border);display:flex;align-items:center;justify-content:center;font-size:32px;margin-bottom:var(--sp-5);color:var(--text-muted)}.empty-state-title{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:600;margin-bottom:var(--sp-2)}.empty-state-desc{font-size:var(--text-sm);color:var(--text-muted);max-width:320px;margin-bottom:var(--sp-5)}.tabs{display:flex;gap:var(--sp-1);background:#2b261f0d;border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--sp-1);overflow-x:auto}.tab{padding:var(--sp-2) var(--sp-4);font-size:var(--text-sm);font-weight:500;color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;border:none;background:none}.tab:hover{color:var(--text-primary)}.tab.active{background:var(--accent-muted);color:var(--accent-hover)}.checkbox-wrapper{display:flex;align-items:center;gap:var(--sp-3);cursor:pointer}.checkbox{width:22px;height:22px;border:2px solid var(--glass-border);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:all var(--transition-spring);flex-shrink:0}.checkbox.checked{background:var(--accent);border-color:var(--accent)}.checkbox.checked svg{stroke-dasharray:24;animation:checkmark .3s ease forwards}.checkbox-label{font-size:var(--text-sm);color:var(--text-primary);transition:all var(--transition-fast)}.checkbox-label.checked{text-decoration:line-through;color:var(--text-muted)}.avatar{width:36px;height:36px;border-radius:50%;background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:600;color:#fff;flex-shrink:0}.avatar-sm{width:28px;height:28px;font-size:var(--text-xs)}.avatar-lg{width:48px;height:48px;font-size:var(--text-lg)}.divider{width:100%;height:1px;background:var(--glass-border);margin:var(--sp-4) 0}.form-row{display:grid;gap:var(--sp-4)}.form-row-2{grid-template-columns:1fr 1fr}.form-row-3{grid-template-columns:1fr 1fr 1fr}@media(max-width:600px){.form-row-2,.form-row-3{grid-template-columns:1fr}}.list-item{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);border-bottom:1px solid var(--glass-border);transition:background var(--transition-fast)}.list-item:last-child{border-bottom:none}.list-item:hover{background:#2b261f0a}.list-item-content{flex:1;min-width:0}.list-item-title{font-size:var(--text-sm);font-weight:500;color:var(--text-primary)}.list-item-subtitle{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.list-item-trailing{font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);flex-shrink:0}.app-shell{display:flex;min-height:100vh}.app-content{flex:1;margin-left:var(--sidebar-width);padding:var(--sp-7);min-height:100vh;max-width:100%}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-7);flex-wrap:wrap;gap:var(--sp-4)}.page-title{font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:700}.page-subtitle{font-size:var(--text-sm);color:var(--text-muted);margin-top:var(--sp-1)}@media(max-width:1024px){.app-content{margin-left:var(--sidebar-collapsed)}}@media(max-width:768px){.app-content{margin-left:0;padding:var(--sp-4);padding-bottom:calc(var(--bottomnav-height) + var(--sp-6))}}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);background:var(--bg-surface);border-right:1px solid var(--glass-border);display:flex;flex-direction:column;z-index:var(--z-sticky);transition:width var(--transition-base);overflow:hidden}.sidebar-logo{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-5) var(--sp-5);margin-bottom:var(--sp-2)}.sidebar-logo-icon{width:36px;height:36px;border-radius:var(--radius-md);background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:var(--text-sm);color:#fff;flex-shrink:0}.sidebar-logo-text{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:700;white-space:nowrap}.sidebar-logo-text span{background:var(--gradient-primary);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.sidebar-nav{flex:1;padding:0 var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-1);overflow-y:auto}.sidebar-link{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-3);border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--text-sm);font-weight:500;text-decoration:none;transition:all var(--transition-base);white-space:nowrap;position:relative}.sidebar-link:hover{color:var(--text-primary);background:var(--glass-bg)}.sidebar-link.active{color:var(--accent-hover);background:var(--accent-muted)}.sidebar-link.active:before{content:"";position:absolute;left:-12px;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--gradient-primary);border-radius:var(--radius-pill)}.sidebar-link-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}.sidebar-link-label{overflow:hidden;text-overflow:ellipsis}.sidebar-footer{padding:var(--sp-4);border-top:1px solid var(--glass-border)}@media(max-width:1024px){.sidebar{width:var(--sidebar-collapsed)}.sidebar-logo-text,.sidebar-link-label{display:none}.sidebar-link{justify-content:center;padding:var(--sp-3)}.sidebar-link.active:before{left:0}.sidebar-logo{justify-content:center}}@media(max-width:768px){.sidebar{display:none}}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:var(--bottomnav-height);background:var(--bg-surface);border-top:1px solid var(--glass-border);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:var(--z-sticky);padding-bottom:env(safe-area-inset-bottom,0)}.bottom-nav-inner{display:flex;align-items:center;justify-content:space-around;height:100%;max-width:500px;margin:0 auto}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-1) var(--sp-2);color:var(--text-muted);font-size:10px;font-weight:500;text-decoration:none;transition:color var(--transition-fast);position:relative}.bottom-nav-item-icon{font-size:20px;height:24px;display:flex;align-items:center;justify-content:center}.bottom-nav-item.active{color:var(--accent)}.bottom-nav-item.active:before{content:"";position:absolute;top:-1px;left:50%;transform:translate(-50%);width:24px;height:2px;background:var(--gradient-primary);border-radius:var(--radius-pill)}@media(max-width:768px){.bottom-nav{display:block}}.page-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:var(--sp-4)}.page-loader-spinner{width:44px;height:44px;border-radius:50%;border:3px solid var(--accent-muted);border-top-color:var(--accent);animation:spin .8s linear infinite}.page-loader-text{font-size:var(--text-sm);color:var(--text-muted)}.dashboard-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-5);margin-bottom:var(--sp-7)}.dashboard-quick-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-7)}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}@media(max-width:900px){.dashboard-grid{grid-template-columns:1fr}}.activity-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--glass-border)}.activity-item:last-child{border-bottom:none}.activity-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.activity-text{flex:1;font-size:var(--text-sm);color:var(--text-secondary)}.activity-time{font-size:var(--text-xs);color:var(--text-muted);flex-shrink:0}.meals-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-4);margin-bottom:var(--sp-5)}.meals-grid{display:grid;grid-template-columns:1fr 340px;gap:var(--sp-5)}@media(max-width:900px){.meals-grid{grid-template-columns:1fr}}.meal-item{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);border-radius:var(--radius-md);background:var(--glass-bg);border:1px solid var(--glass-border);margin-bottom:var(--sp-3);transition:all var(--transition-base)}.meal-item:hover{background:var(--glass-hover);transform:translate(4px)}.meal-type-icon{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.meal-info{flex:1;min-width:0}.meal-name{font-size:var(--text-sm);font-weight:500}.meal-meta{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.meal-calories{font-size:var(--text-sm);font-weight:600;color:var(--accent-hover);flex-shrink:0}.nutrition-ring{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--sp-4)}.nutrition-legend{display:flex;flex-direction:column;gap:var(--sp-2)}.nutrition-legend-item{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--text-secondary)}.nutrition-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.exercise-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}@media(max-width:900px){.exercise-grid{grid-template-columns:1fr}}.workout-item{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);margin-bottom:var(--sp-3);transition:all var(--transition-base)}.workout-item:hover{background:var(--glass-hover);transform:translate(4px)}.workout-type-icon{width:44px;height:44px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.workout-info{flex:1;min-width:0}.workout-name{font-size:var(--text-sm);font-weight:500}.workout-detail{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.workout-duration{font-size:var(--text-sm);font-weight:600;color:var(--success);flex-shrink:0}.habit-starter-card{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5)}.habit-starter-copy{color:var(--text-muted);font-size:var(--text-sm);margin-top:var(--sp-1)}.habit-starter-list{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:var(--sp-2);min-width:min(480px,100%)}.habit-sample{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:62px;padding:var(--sp-3);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:linear-gradient(135deg,#ffffffb8,#ffffff5c)}.habit-sample-name{color:var(--text-primary);font-size:var(--text-sm);font-weight:700}.habit-sample-meta{color:var(--text-muted);font-size:var(--text-xs);margin-top:2px}.habit-sample-rose{box-shadow:inset 3px 0 #ec4899}.habit-sample-amber{box-shadow:inset 3px 0 #f59e0b}.habit-sample-violet{box-shadow:inset 3px 0 #8b5cf6}.habit-sample-mint{box-shadow:inset 3px 0 #10b981}.habit-heatmap-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}.habit-range-tabs{display:flex;flex-wrap:wrap;gap:var(--sp-1);padding:var(--sp-1);border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg)}.habit-range-tabs button{min-width:44px;height:30px;padding:0 var(--sp-2);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;font:inherit;font-size:var(--text-xs);font-weight:700;transition:all var(--transition-fast)}.habit-range-tabs button:hover{color:var(--text-primary);background:var(--glass-hover)}.habit-range-tabs button.active{color:var(--text-inverse);background:var(--gradient-primary);box-shadow:var(--shadow-glow)}.habits-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}@media(max-width:700px){.habit-starter-card{align-items:stretch;flex-direction:column}.habit-starter-list{grid-template-columns:1fr;min-width:0}.habit-heatmap-header{flex-direction:column}.habit-range-tabs{width:100%}.habit-range-tabs button{flex:1}}@media(max-width:900px){.habits-grid{grid-template-columns:1fr}}.habit-item{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);border-bottom:1px solid var(--glass-border);transition:background var(--transition-fast)}.habit-item:last-child{border-bottom:none}.habit-item:hover{background:var(--glass-bg)}.habit-info{flex:1}.habit-name{font-size:var(--text-sm);font-weight:500;color:var(--text-primary)}.habit-description{color:var(--text-muted);font-size:var(--text-xs);margin-top:2px}.habit-streak{font-size:var(--text-xs);color:var(--text-muted);display:flex;align-items:center;gap:var(--sp-1);margin-top:2px}.habit-streak .streak-fire{color:var(--warning)}.heatmap-container{overflow-x:auto;padding-bottom:var(--sp-3)}.heatmap{display:flex;gap:3px}.heatmap-week{display:flex;flex-direction:column;gap:3px}.heatmap-day{width:12px;height:12px;border-radius:2px;background:var(--glass-bg);transition:all var(--transition-fast)}.heatmap-day:hover{transform:scale(1.4);outline:1px solid var(--glass-border)}.heatmap-day.level-1{background:#ec489938}.heatmap-day.level-2{background:#ec48996b}.heatmap-day.level-3{background:#ec4899a8}.heatmap-day.level-4{background:var(--accent)}.expenses-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--sp-4);margin-bottom:var(--sp-6)}.expenses-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}@media(max-width:900px){.expenses-grid{grid-template-columns:1fr}}.expense-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--glass-border)}.expense-item:last-child{border-bottom:none}.expense-category-icon{width:36px;height:36px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.expense-info{flex:1;min-width:0}.expense-desc{font-size:var(--text-sm);font-weight:500}.expense-date{font-size:var(--text-xs);color:var(--text-muted)}.expense-amount{font-size:var(--text-sm);font-weight:600;color:var(--danger);flex-shrink:0}.reading-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5)}@media(max-width:900px){.reading-grid{grid-template-columns:1fr}}.book-card{display:flex;gap:var(--sp-5);padding:var(--sp-5);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md)}.book-cover{width:80px;height:120px;border-radius:var(--radius-sm);background:var(--gradient-primary);display:flex;align-items:center;justify-content:center;font-size:28px;flex-shrink:0}.book-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-2)}.book-title{font-size:var(--text-base);font-weight:600}.book-author{font-size:var(--text-sm);color:var(--text-muted)}.book-progress-text{font-size:var(--text-xs);color:var(--text-secondary);margin-top:var(--sp-1)}.goals-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--sp-5)}.goal-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--sp-5);transition:all var(--transition-base)}.goal-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow)}.goal-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:var(--sp-4)}.goal-title{font-size:var(--text-base);font-weight:600}.goal-target-date{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--sp-1)}.goal-values{display:flex;align-items:baseline;gap:var(--sp-2);margin-top:var(--sp-3)}.goal-current{font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:700}.goal-target{font-size:var(--text-sm);color:var(--text-muted)}.grocery-receipt-summary{display:grid;grid-template-columns:minmax(240px,1fr) minmax(0,2fr);gap:var(--sp-5);align-items:stretch;padding:var(--sp-5);margin-bottom:var(--sp-6);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md)}.grocery-receipt-summary h2{font-size:var(--text-xl);font-weight:700;margin-top:var(--sp-1)}.grocery-summary-label{color:var(--text-muted);font-size:var(--text-xs);font-weight:700;text-transform:uppercase}.grocery-summary-meta{margin-top:var(--sp-2);color:var(--text-muted);font-size:var(--text-sm);line-height:1.5}.grocery-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:var(--sp-3)}.grocery-summary-stat{min-width:0;padding:var(--sp-3);background:var(--bg-card);border:1px solid var(--glass-border);border-radius:var(--radius-md)}.grocery-summary-stat span{display:block;color:var(--text-muted);font-size:var(--text-xs);margin-bottom:var(--sp-1)}.grocery-summary-stat strong{display:block;color:var(--text-primary);font-size:var(--text-lg);overflow-wrap:anywhere}.grocery-lists{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--sp-5)}.grocery-list-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);overflow:hidden}.grocery-list-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--glass-border)}.grocery-list-title{font-size:var(--text-base);font-weight:600}.grocery-list-count{font-size:var(--text-xs);color:var(--text-muted)}.grocery-list-items{padding:var(--sp-2) 0}.grocery-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);transition:background var(--transition-fast)}.grocery-item:hover{background:var(--glass-bg)}.grocery-item-main{min-width:0;display:grid;gap:var(--sp-1);flex:1}.grocery-item-text{flex:1;font-size:var(--text-sm);line-height:1.35;overflow-wrap:anywhere;transition:all var(--transition-fast)}.grocery-item-text.completed{text-decoration:line-through;color:var(--text-muted)}.grocery-item-meta{color:var(--text-muted);font-size:var(--text-xs);line-height:1.35;overflow-wrap:anywhere}.grocery-item-price{font-size:var(--text-xs);color:var(--text-muted);flex-shrink:0}.grocery-list-footer{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--glass-border);font-size:var(--text-sm);color:var(--text-muted)}.grocery-list-total{font-weight:600;color:var(--text-primary)}.grocery-list-badge{flex-shrink:0;padding:var(--sp-1) var(--sp-3);background:var(--accent-muted);color:var(--accent-hover);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:700}.pantry-page-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.pantry-empty-location{padding:var(--sp-5);color:var(--text-muted);font-size:var(--text-sm)}.grocery-details-panel{display:grid;gap:var(--sp-4)}.grocery-detail-items{max-height:50vh;overflow:auto;border:1px solid var(--glass-border);border-radius:var(--radius-md)}@media(max-width:900px){.grocery-receipt-summary{grid-template-columns:1fr}}@media(max-width:520px){.grocery-lists{grid-template-columns:1fr}.grocery-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grocery-list-header{align-items:flex-start;gap:var(--sp-3);flex-direction:column}}.photo-summary-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-3);margin:var(--sp-5) 0}.photo-summary-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm)}.photo-summary-item strong{color:var(--text-primary);font-size:var(--text-lg)}.photos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--sp-5)}.photo-card{background:var(--bg-surface);border:1px solid var(--glass-border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.photo-thumb-wrap{position:relative;aspect-ratio:1;background:var(--glass-bg);overflow:hidden}.photo-thumb{width:100%;height:100%;object-fit:cover;display:block}.photo-category-chip{position:absolute;left:var(--sp-3);bottom:var(--sp-3);display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-pill);background:#ffffffe0;color:var(--text-primary);font-size:var(--text-xs);font-weight:700;box-shadow:var(--shadow-sm)}.photo-card-body{padding:var(--sp-4)}.photo-card-topline{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.photo-date{color:var(--text-muted);font-size:var(--text-xs);white-space:nowrap}.photo-description{color:var(--text-primary);font-size:var(--text-sm);font-weight:600;line-height:1.4;min-height:2.8em}.photo-metrics{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3);color:var(--text-secondary);font-size:var(--text-xs)}.photo-metrics span{padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-pill);background:var(--glass-bg)}.photo-actions{display:flex;justify-content:flex-end;margin-top:var(--sp-4)}.chart-container{width:100%;height:300px}.chart-container-sm{width:100%;height:200px}.recharts-cartesian-axis-tick-value{fill:var(--text-muted)!important;font-size:11px!important}.recharts-legend-item-text{color:var(--text-secondary)!important;font-size:12px!important}.recharts-tooltip-wrapper{outline:none!important}.recharts-default-tooltip{background:var(--bg-elevated)!important;border:1px solid var(--glass-border)!important;border-radius:var(--radius-md)!important;box-shadow:var(--shadow-lg)!important}.recharts-tooltip-label{color:var(--text-primary)!important;font-weight:600!important}.recharts-tooltip-item{color:var(--text-secondary)!important}.date-nav{display:flex;align-items:center;gap:var(--sp-3)}.date-nav-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--text-muted);transition:all var(--transition-fast);cursor:pointer;background:var(--glass-bg);border:1px solid var(--glass-border)}.date-nav-btn:hover{color:var(--text-primary);background:var(--glass-hover)}.date-nav-label{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);min-width:120px;text-align:center}
