@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&display=swap");:root{--color-primary:#2563EB;--color-primary-hover:#1D4ED8;--color-primary-light:#DBEAFE;--color-primary-subtle:#EFF6FF;--color-success:#16A34A;--color-success-light:#DCFCE7;--color-danger:#DC2626;--color-danger-light:#FEE2E2;--color-warning:#D97706;--color-warning-light:#FEF3C7;--color-info:#2563EB;--color-info-light:#DBEAFE;--color-bg:#F8FAFC;--color-surface:#FFFFFF;--color-surface-hover:#F1F5F9;--color-border:#E2E8F0;--color-border-strong:#CBD5E1;--color-text:#0F172A;--color-text-secondary:#475569;--color-text-muted:#94A3B8;--color-text-tertiary:#64748B;--color-bg-secondary:#F1F5F9;--font-family:"Outfit",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-size-xs:0.8125rem;--font-size-sm:0.9375rem;--font-size-base:1.125rem;--font-size-lg:1.3125rem;--font-size-xl:1.5rem;--font-size-2xl:1.875rem;--font-size-3xl:2.25rem;--space-xs:0.25rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--radius-sm:0.5rem;--radius-md:0.75rem;--radius-lg:1rem;--radius-xl:1.5rem;--radius-full:9999px;--shadow-sm:0 1px 2px rgba(15,23,42,0.04),0 1px 3px rgba(15,23,42,0.03);--shadow-md:0 1px 2px rgba(15,23,42,0.04),0 4px 12px -2px rgba(15,23,42,0.06);--shadow-lg:0 2px 4px rgba(15,23,42,0.04),0 12px 28px -6px rgba(15,23,42,0.1);--shadow-xl:0 4px 8px rgba(15,23,42,0.04),0 24px 48px -12px rgba(15,23,42,0.18);--shadow-primary:0 1px 2px rgba(37,99,235,0.2),0 6px 16px -4px rgba(37,99,235,0.45);--ease-out:cubic-bezier(0.22,1,0.36,1);--transition-fast:150ms ease;--transition-normal:250ms ease;--transition-slow:350ms ease;--sidebar-width:280px;--header-height:72px;--max-content-width:960px;--bottom-nav-height:72px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:100%;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body,html{overflow-x:hidden}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.6;color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto;display:block}.shell{min-height:100vh}.shell-sidebar{position:fixed;inset:0 auto 0 0;z-index:40;width:var(--sidebar-width);display:flex;flex-direction:column;gap:var(--space-md);padding:20px 14px 14px;background:linear-gradient(180deg,#FFFFFF,#F8FAFF);border-right:1px solid rgba(226,232,240,.9)}.brand{display:flex;align-items:center;gap:12px;padding:4px 10px 12px;color:var(--color-text)}.brand,.brand:hover{text-decoration:none}.brand-mark{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:13px;color:#fff;background:linear-gradient(135deg,#2563EB,#4F46E5 55%,#7C3AED);box-shadow:0 6px 16px -4px rgba(79,70,229,.55),inset 0 1px 0 rgba(255,255,255,.25)}.brand-text{display:flex;flex-direction:column;min-width:0}.brand-name{font-size:1.3rem;font-weight:800;letter-spacing:-.03em;line-height:1.1}.brand-community{font-size:13px;font-weight:500;color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-scroll{flex:1 1;min-height:0;overflow-y:auto;gap:18px;padding:2px;margin:0 -2px;scrollbar-width:thin}.nav-group,.nav-scroll{display:flex;flex-direction:column}.nav-group{gap:3px}.nav-group-label{padding:0 12px 6px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.nav-link{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:6px 10px;border:1px solid transparent;border-radius:14px;background:transparent;color:var(--color-text-secondary);font-family:inherit;font-size:16px;font-weight:600;text-align:left;text-decoration:none;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.nav-link:hover{background:rgba(241,245,249,.9);color:var(--color-text);text-decoration:none}.nav-link.active{background:#fff;color:var(--color-text);border-color:rgba(226,232,240,.9);box-shadow:0 1px 2px rgba(15,23,42,.05),0 6px 16px -8px rgba(37,99,235,.35)}.nav-link.active:before{content:"";position:absolute;left:-14px;top:12px;bottom:12px;width:4px;border-radius:0 4px 4px 0;background:linear-gradient(180deg,var(--color-primary),#7C3AED)}.nav-link.is-locked{opacity:.55}.nav-link-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:11px;transition:transform var(--transition-fast),background var(--transition-fast),color var(--transition-fast)}.nav-link:hover .nav-link-icon{transform:scale(1.06)}.nav-link.active .nav-link-icon{color:#fff;background:linear-gradient(135deg,#2563EB,#7C3AED);box-shadow:0 4px 10px -3px rgba(79,70,229,.6)}.nav-link-label{flex:1 1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-link-lock{color:var(--color-text-muted)}.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:11px;background:var(--color-danger);color:#fff;font-size:12px;font-weight:700;box-shadow:0 2px 6px rgba(220,38,38,.35)}.tone-blue{background:#EFF4FF;color:#2563EB}.tone-violet{background:#F3EEFF;color:#7C3AED}.tone-green{background:#ECFDF3;color:#16A34A}.tone-amber{background:#FFF7E8;color:#D97706}.tone-rose{background:#FFF0F3;color:#E11D48}.tone-teal{background:#ECFDFB;color:#0D9488}.tone-slate{background:#F1F5F9;color:#475569}.user-card{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid rgba(226,232,240,.9);border-radius:16px;background:#fff;color:var(--color-text);text-decoration:none;box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.user-card.active,.user-card:hover{text-decoration:none;border-color:var(--color-primary-light);box-shadow:var(--shadow-md)}.avatar{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#DBEAFE,#EDE9FE);color:#3730A3;font-size:15px;font-weight:800;letter-spacing:.02em}.avatar,.avatar:hover{text-decoration:none}.user-card-text{flex:1 1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.user-card-name{font-size:15px;font-weight:700}.user-card-name,.user-card-role{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-card-role{font-size:13px;color:var(--color-text-tertiary)}.user-card-chevron{color:var(--color-text-muted)}.shell-main{margin-left:var(--sidebar-width);min-height:100vh;min-width:0}.shell-header{position:-webkit-sticky;position:sticky;top:0;z-index:30;height:var(--header-height);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:0 var(--space-xl);background:rgba(248,250,252,.82);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid rgba(226,232,240,.8)}.shell-header-left{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark-mobile{display:none;width:38px;height:38px;border-radius:12px}.shell-header-titles{display:flex;flex-direction:column;min-width:0;line-height:1.2}.shell-header-title{font-size:1.15rem;font-weight:800;letter-spacing:-.02em}.shell-header-sub{display:flex;gap:8px;font-size:13px;color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden}.shell-header-date:first-letter{text-transform:uppercase}.shell-header-community{display:none;overflow:hidden;text-overflow:ellipsis}.avatar-header{width:42px;height:42px;box-shadow:0 0 0 3px #fff,0 0 0 4px var(--color-border)}.shell-banner{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;padding:10px var(--space-lg);font-size:14px;font-weight:600;color:#fff;text-align:center}.shell-banner button{padding:4px 12px;border:1px solid rgba(255,255,255,.45);border-radius:8px;background:rgba(255,255,255,.18);color:#fff;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}.banner-violet{background:linear-gradient(90deg,#4F46E5,#7C3AED)}.banner-warning{background:linear-gradient(90deg,#D97706,#F59E0B)}.banner-danger{background:linear-gradient(90deg,#DC2626,#EF4444)}.page-content{padding:var(--space-xl);max-width:1040px;margin:0 auto;width:100%;box-sizing:border-box}.sheet,.sheet-backdrop,.tabbar{display:none}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:45;grid-template-columns:repeat(5,minmax(0,1fr));padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:rgba(255,255,255,.92);backdrop-filter:saturate(1.6) blur(16px);-webkit-backdrop-filter:saturate(1.6) blur(16px);border-top:1px solid rgba(226,232,240,.9);box-shadow:0 -8px 24px -12px rgba(15,23,42,.15)}.tabbar-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:56px;padding:4px 2px;border:none;border-radius:14px;background:transparent;color:var(--color-text-tertiary);font-family:inherit;cursor:pointer}.tabbar-item,.tabbar-item:hover{text-decoration:none}.tabbar-item.is-locked{opacity:.5}.tabbar-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;width:52px;height:30px;border-radius:999px;transition:background var(--transition-fast),color var(--transition-fast)}.tabbar-item.active{color:var(--color-primary)}.tabbar-item.active .tabbar-icon{background:var(--color-primary-subtle)}.tabbar-label{max-width:100%;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabbar-dot{position:absolute;top:3px;right:12px;width:9px;height:9px;border-radius:50%;background:var(--color-danger);box-shadow:0 0 0 2px #fff}.sheet-backdrop{position:fixed;inset:0;z-index:43;background:rgba(15,23,42,.35);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .25s ease}.sheet-backdrop.open{opacity:1;pointer-events:auto}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:44;max-height:82vh;overflow-y:auto;flex-direction:column;gap:var(--space-md);padding:10px var(--space-md) calc(var(--bottom-nav-height) + 20px + env(safe-area-inset-bottom));background:var(--color-bg);border-radius:24px 24px 0 0;box-shadow:0 -20px 40px -12px rgba(15,23,42,.25);transform:translateY(105%);visibility:hidden;transition:transform .32s var(--ease-out),visibility 0s linear .32s}.sheet.open{transform:none;visibility:visible;transition:transform .32s var(--ease-out),visibility 0s}.sheet-handle{align-self:center;width:40px;height:5px;border-radius:3px;background:var(--color-border-strong)}.sheet-user{display:flex;align-items:center;gap:12px;padding:12px;border-radius:16px;background:#fff;border:1px solid var(--color-border);color:var(--color-text)}.sheet-user,.sheet-user:hover{text-decoration:none}.sheet-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px}.sheet-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:96px;padding:12px 6px;border:1px solid rgba(226,232,240,.9);border-radius:18px;background:#fff;color:var(--color-text);font-family:inherit;font-size:14px;font-weight:600;text-align:center;cursor:pointer;box-shadow:var(--shadow-sm)}.sheet-tile,.sheet-tile:hover{text-decoration:none}.sheet-tile.active{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.sheet-tile.is-locked{opacity:.55}.sheet-tile .nav-link-icon{width:44px;height:44px;border-radius:14px}.sheet-tile-badge{position:absolute;top:8px;right:8px}.sheet-tile-lock{position:absolute;top:10px;right:10px;color:var(--color-text-muted)}.sheet .switcher{padding:12px;border-radius:16px;background:#fff;border:1px solid var(--color-border)}@media (max-width:1100px) and (min-width:769px){:root{--sidebar-width:248px}}@media (max-height:760px) and (min-width:769px){.nav-link{min-height:42px;padding:4px 10px}.nav-link-icon{width:32px;height:32px}.nav-scroll{gap:12px}}@media (max-width:768px){:root{--header-height:64px;--bottom-nav-height:74px}.shell-sidebar{display:none}.shell-main{margin-left:0;padding-bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom))}.shell-header{padding:0 var(--space-md)}.brand-mark-mobile{display:inline-flex}.shell-header-date{display:none}.shell-header-community{display:block}.tabbar{display:grid}.sheet{display:flex}.sheet-backdrop{display:block}.page-content{padding:var(--space-lg) var(--space-md)}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-xl);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-normal),transform var(--transition-normal)}.card:hover{box-shadow:var(--shadow-md)}.card-clickable{cursor:pointer}.card-clickable:hover{transform:translateY(-2px)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.card-title{font-size:var(--font-size-lg);font-weight:700;color:var(--color-text)}.card-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--space-xs)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);min-height:52px;border:none;border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all var(--transition-fast);white-space:normal;word-break:break-word}.btn,.btn:hover{text-decoration:none}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-primary);color:white}.btn-primary:hover{background:var(--color-primary-hover)}.btn-success{background:var(--color-success);color:white}.btn-danger{background:var(--color-danger);color:white}.btn-warning{background:var(--color-warning);color:white}.btn-outline{background:transparent;color:var(--color-primary);border:2px solid var(--color-primary)}.btn-outline:hover{background:var(--color-primary-subtle)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background:var(--color-surface-hover);color:var(--color-text)}.btn-block{width:100%}.btn-icon{font-size:var(--font-size-lg)}.badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));grid-gap:var(--space-md);gap:var(--space-md);margin-bottom:var(--space-lg);align-items:stretch}@media (min-width:768px){.stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-info{background:var(--color-info-light);color:var(--color-info)}.input-group{display:flex;flex-direction:column;gap:var(--space-sm)}.input-label{font-weight:600}.input,.input-label{font-size:var(--font-size-base);color:var(--color-text)}.input{padding:var(--space-md) var(--space-lg);min-height:52px;border:2px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-family);background:var(--color-surface);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);width:100%}.input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.input::placeholder{color:var(--color-text-muted)}.textarea{min-height:120px;resize:vertical}.stat-card{text-align:center;padding:var(--space-xl)}.stat-value{font-size:var(--font-size-3xl);font-weight:800;line-height:1.2}.stat-value.positive{color:var(--color-success)}.stat-value.negative{color:var(--color-danger)}.stat-label{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-top:var(--space-xs);font-weight:500}.empty-state{text-align:center;padding:var(--space-2xl);color:var(--color-text-muted)}.empty-state-icon{font-size:3rem;margin-bottom:var(--space-md)}.empty-state-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.section-title{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text);margin-bottom:var(--space-lg)}.section-subtitle{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-top:calc(var(--space-xs) * -1);margin-bottom:var(--space-lg)}.grid-2{grid-template-columns:repeat(2,1fr);grid-gap:var(--space-lg)}.grid-2,.grid-3{display:grid;gap:var(--space-lg)}.grid-3{grid-template-columns:repeat(3,1fr);grid-gap:var(--space-lg)}.stack{gap:var(--space-md)}.stack,.stack-lg{display:flex;flex-direction:column}.stack-lg{gap:var(--space-lg)}.pinned-indicator{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-warning);font-weight:600}.divider{border:none;border-top:1px solid var(--color-border);margin:var(--space-lg) 0}.progress-bar-container{width:100%;height:12px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden;display:flex}.progress-bar-segment{height:100%;transition:width var(--transition-slow)}.progress-bar-yes{background:var(--color-success)}.progress-bar-no{background:var(--color-danger)}.progress-bar-abstain{background:var(--color-warning)}.folder-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-xl);gap:var(--space-md);cursor:pointer;min-height:160px}.folder-card-icon{font-size:3rem}.folder-card-name{font-size:var(--font-size-lg);font-weight:700;text-align:center}.folder-card-count{font-size:var(--font-size-sm);color:var(--color-text-muted)}.search-bar{position:relative}.search-bar-icon{position:absolute;left:var(--space-lg);top:50%;transform:translateY(-50%);font-size:var(--font-size-lg);color:var(--color-text-muted);pointer-events:none}.search-bar .input{padding-left:3.5rem}.toast{position:fixed;bottom:calc(var(--bottom-nav-height) + var(--space-md));left:50%;transform:translateX(-50%) translateY(100px);z-index:100}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.skeleton{background:linear-gradient(90deg,var(--color-border) 25%,var(--color-surface-hover) 50%,var(--color-border) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-sm)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-text{height:1.125rem;margin-bottom:var(--space-sm)}.skeleton-title{height:1.5rem;width:60%;margin-bottom:var(--space-md)}.skeleton-avatar{width:44px;height:44px;border-radius:var(--radius-full)}.mobile-menu-toggle{display:none;background:none;border:none;font-size:var(--font-size-xl);color:var(--color-text);cursor:pointer;padding:var(--space-sm)}.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:35}.overlay.show{display:block}@media (max-width:768px){.grid-2,.grid-3{grid-template-columns:1fr}.stat-value{font-size:var(--font-size-2xl)}.stat-grid{grid-template-columns:1fr}.card{max-width:100%;overflow-x:hidden}.card-header{flex-wrap:wrap;gap:var(--space-sm)}.btn{padding:var(--space-sm) var(--space-md);min-height:44px;font-size:var(--font-size-sm)}.modal-backdrop{padding:var(--space-md)}.modal{max-width:100%}}@media (max-width:480px){.section-title{font-size:var(--font-size-lg)}.card{padding:var(--space-md)}}.unread-badge{min-width:22px;height:22px;padding:0 6px;border-radius:11px;font-size:11px;margin-left:auto;box-shadow:0 2px 8px rgba(220,38,38,.4)}.unread-badge,.unread-badge-mini{display:inline-flex;align-items:center;justify-content:center;background:var(--color-danger);color:white;font-weight:700;line-height:1;animation:badgePulse 2s ease-in-out infinite}.unread-badge-mini{position:absolute;top:-6px;right:-8px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;font-size:10px;box-shadow:0 2px 6px rgba(220,38,38,.4)}.neighbor-unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--color-danger);color:white;font-size:12px;font-weight:700;line-height:1;animation:badgePulse 2s ease-in-out infinite;box-shadow:0 2px 8px rgba(220,38,38,.4)}@keyframes badgePulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn var(--transition-normal) ease forwards}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.slide-up{animation:slideUp var(--transition-slow) ease forwards}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(135deg,#667eea,#764ba2 50%,#f093fb)}.login-bg{position:absolute;inset:0;overflow:hidden;z-index:0}.login-bg-shape{position:absolute;border-radius:50%;filter:blur(80px);opacity:.5;animation:float 8s ease-in-out infinite}.login-bg-shape-1{width:500px;height:500px;background:rgba(99,102,241,.6);top:-10%;left:-10%;animation-delay:0s}.login-bg-shape-2{width:400px;height:400px;background:rgba(244,114,182,.5);bottom:-5%;right:-5%;animation-delay:-3s;animation-duration:10s}.login-bg-shape-3{width:300px;height:300px;background:rgba(52,211,153,.4);top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:-5s;animation-duration:12s}@keyframes float{0%,to{transform:translate(0) scale(1)}25%{transform:translate(30px,-30px) scale(1.05)}50%{transform:translate(-20px,20px) scale(.95)}75%{transform:translate(15px,15px) scale(1.02)}}.login-container{position:relative;z-index:1;width:100%;max-width:460px;padding:var(--space-xl);animation:slideUp .6s ease forwards}.login-card{background:rgba(255,255,255,.85);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.4);border-radius:var(--radius-xl);padding:var(--space-2xl);box-shadow:0 25px 50px rgba(0,0,0,.15),inset 0 0 0 1px rgba(255,255,255,.2)}.login-logo{text-align:center;margin-bottom:var(--space-2xl)}.login-logo-icon{font-size:4rem;display:block;margin-bottom:var(--space-sm);animation:float 4s ease-in-out infinite}.login-logo-text{font-size:var(--font-size-3xl);font-weight:800;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-logo-subtitle{color:var(--color-text-secondary);font-size:var(--font-size-base);margin-top:var(--space-xs)}.login-form{display:flex;flex-direction:column;gap:var(--space-lg)}.login-input{background:rgba(255,255,255,.7);border-color:rgba(0,0,0,.1)}.login-input:focus{background:white}.login-btn{font-size:var(--font-size-lg);min-height:56px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;box-shadow:0 4px 15px rgba(102,126,234,.4);transition:all var(--transition-fast)}.login-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(102,126,234,.5)}.login-btn:active{transform:translateY(0)}.login-divider{display:flex;align-items:center;gap:var(--space-md);color:var(--color-text-muted);font-size:var(--font-size-sm)}.login-divider:after,.login-divider:before{content:"";flex:1 1;height:1px;background:var(--color-border)}.login-features{display:flex;justify-content:center;gap:var(--space-xl);margin-top:var(--space-2xl);flex-wrap:wrap}.login-feature{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.login-feature-icon{font-size:var(--font-size-lg)}.login-footer{text-align:center;color:rgba(255,255,255,.7);font-size:var(--font-size-sm);margin-top:var(--space-xl)}.login-status{text-align:center;padding:var(--space-xl) 0}.login-status-icon{font-size:4rem;display:block;margin-bottom:var(--space-lg)}.login-status-title{font-size:var(--font-size-xl);font-weight:700;margin-bottom:var(--space-md)}.login-status-text{color:var(--color-text-secondary);line-height:1.7}.login-spinner{width:48px;height:48px;border:4px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto var(--space-lg)}@keyframes spin{to{transform:rotate(1turn)}}.login-form-wrapper{min-height:200px}@media (max-width:480px){.login-card{padding:var(--space-xl)}.login-features{flex-direction:column;align-items:center;gap:var(--space-md)}}.toast-container{position:fixed;bottom:var(--space-xl);left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:var(--space-sm);pointer-events:none}.toast{position:relative;background:var(--color-text);color:white;padding:var(--space-md) var(--space-xl);border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:500;box-shadow:var(--shadow-xl);opacity:0;transform:translateY(20px);transition:all var(--transition-normal);pointer-events:auto;display:flex;align-items:center;gap:var(--space-md)}.toast.toast-visible{opacity:1;transform:translateY(0)}.toast-success{background:var(--color-success)}.toast-error{background:var(--color-danger)}.toast-warning{background:var(--color-warning)}.toast-info{background:var(--color-primary)}.toast-icon{font-size:var(--font-size-xl);flex-shrink:0}@media (max-width:768px){.toast-container{bottom:calc(var(--bottom-nav-height) + var(--space-md));left:var(--space-md);right:var(--space-md);transform:none}}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-xl);animation:fadeIn .2s ease}.modal{background:var(--color-surface);border-radius:var(--radius-xl);width:100%;max-width:560px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:slideUp .3s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xl);border-bottom:1px solid var(--color-border)}.modal-title{font-weight:700}.modal-close,.modal-title{font-size:var(--font-size-xl)}.modal-close{background:none;border:none;cursor:pointer;color:var(--color-text-muted);padding:var(--space-sm);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.modal-close:hover{background:var(--color-surface-hover);color:var(--color-text)}.modal-body{padding:var(--space-xl)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-md);padding:var(--space-lg) var(--space-xl);border-top:1px solid var(--color-border)}.vote-btn{overflow:hidden}.vote-btn,.vote-btn-voted{position:relative}.vote-btn-voted:after{content:"✓";position:absolute;top:-4px;right:-4px;width:22px;height:22px;background:white;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:var(--color-success);box-shadow:var(--shadow-sm)}@keyframes confetti{0%{transform:scale(0);opacity:1}50%{transform:scale(1.2);opacity:.8}to{transform:scale(1.5);opacity:0}}.vote-confetti{position:absolute;inset:0;border-radius:inherit;animation:confetti .5s ease forwards;pointer-events:none}.vote-confetti-yes{background:rgba(22,163,74,.3)}.vote-confetti-no{background:rgba(220,38,38,.3)}.vote-confetti-abstain{background:rgba(217,119,6,.3)}.priority-selector{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--space-md);gap:var(--space-md)}.priority-option{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-lg) var(--space-md);border:2px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:var(--color-surface)}.priority-option:hover{border-color:var(--color-border-strong);background:var(--color-surface-hover)}.priority-option.selected{border-width:2px}.priority-option.priority-low.selected{border-color:var(--color-info);background:var(--color-info-light)}.priority-option.priority-medium.selected{border-color:var(--color-warning);background:var(--color-warning-light)}.priority-option.priority-high.selected{border-color:var(--color-danger);background:var(--color-danger-light)}.priority-option-icon{font-size:2rem}.priority-option-label{font-weight:600;font-size:var(--font-size-base)}.photo-upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-2xl);text-align:center;cursor:pointer;transition:all var(--transition-fast);background:var(--color-surface)}.photo-upload-zone.dragging,.photo-upload-zone:hover{border-color:var(--color-primary);background:var(--color-primary-subtle)}.photo-upload-zone-icon{font-size:3rem;margin-bottom:var(--space-md)}.photo-upload-zone-text{color:var(--color-text-secondary);font-size:var(--font-size-base)}.photo-upload-zone-hint{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-top:var(--space-xs)}.photo-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));grid-gap:var(--space-md);gap:var(--space-md);margin-top:var(--space-md)}.photo-preview-item{position:relative;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden}.photo-preview-item img{width:100%;height:100%;object-fit:cover}.photo-preview-remove{position:absolute;top:4px;right:4px;width:24px;height:24px;background:rgba(0,0,0,.6);color:white;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.75rem}.animated-number{display:inline-block;transition:all .5s cubic-bezier(.4,0,.2,1)}@keyframes countPulse{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}.count-pulse{animation:countPulse .4s ease}@keyframes successBounce{0%{transform:scale(0);opacity:0}50%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}.success-check{width:80px;height:80px;border-radius:50%;background:var(--color-success);display:flex;align-items:center;justify-content:center;margin:0 auto var(--space-lg);animation:successBounce .5s cubic-bezier(.4,0,.2,1) forwards;color:white;font-size:2.5rem}textarea.input{min-height:120px;resize:vertical;font-family:var(--font-family)}.color-text-tertiary{color:var(--color-text-muted)}body{background:radial-gradient(1200px 600px at 100% -10%,rgba(99,102,241,.06),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(37,99,235,.05),transparent 60%),var(--color-bg);font-feature-settings:"ss01" on}::selection{background:var(--color-primary-light);color:var(--color-text)}.num,.stat-value{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.02em}.page-heading{display:flex;flex-direction:column;gap:2px}.page-title{font-size:var(--font-size-2xl);font-weight:800;letter-spacing:-.03em;line-height:1.15;color:var(--color-text)}.page-subtitle{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.section-title{letter-spacing:-.02em}.section-heading{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.count-pill{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 8px;border-radius:var(--radius-full);background:var(--color-bg-secondary);color:var(--color-text-tertiary);font-size:var(--font-size-xs);font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted-note{color:var(--color-text-muted);font-size:var(--font-size-sm)}.card{border-color:rgba(226,232,240,.9);border-radius:var(--radius-xl)}.card:hover{box-shadow:var(--shadow-sm)}.card-clickable{transition:transform .3s var(--ease-out),box-shadow .3s var(--ease-out),border-color .2s ease}.card-clickable:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow-lg)}.card-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap;margin-bottom:var(--space-md)}.card-heading-title{font-size:var(--font-size-base);font-weight:700;letter-spacing:-.01em}.card-heading-meta{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:500}.stat-card{position:relative;overflow:hidden}.stat-card:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--color-primary),#7C3AED);opacity:.7}.stat-label{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.btn{letter-spacing:-.005em;transition:background var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast),color var(--transition-fast)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(180deg,#3B82F6 0,var(--color-primary) 100%);box-shadow:var(--shadow-primary),inset 0 1px 0 rgba(255,255,255,.18)}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,var(--color-primary) 0,var(--color-primary-hover) 100%)}.btn-soft{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.btn-soft:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border-strong)}.btn-sm{min-height:42px;padding:.5rem 1rem;font-size:var(--font-size-sm);border-radius:var(--radius-md)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;font-size:15px;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.icon-btn:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border)}.icon-btn.danger:hover:not(:disabled){background:var(--color-danger-light);border-color:transparent}.badge-sm{padding:2px 10px;font-size:var(--font-size-xs)}.input{border-width:1.5px}.input:hover:not(:focus){border-color:var(--color-border-strong)}.input-compact{min-height:44px;padding:.5rem .875rem;font-size:var(--font-size-sm);width:auto;min-width:0;max-width:100%;text-overflow:ellipsis}.modal-backdrop{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.modal{animation:modalIn .28s var(--ease-out)}@keyframes modalIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:var(--space-md);gap:var(--space-md)}.kpi-card{display:flex;flex-direction:column;gap:4px;padding:var(--space-lg);background:var(--color-surface);border:1px solid rgba(226,232,240,.9);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);min-width:0}.kpi-hero{background:linear-gradient(135deg,#1E3A8A,#2563EB 55%,#7C3AED);border:none;color:#fff;box-shadow:var(--shadow-primary)}.kpi-label{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-tertiary)}.kpi-hero .kpi-hint,.kpi-hero .kpi-label{color:rgba(255,255,255,.8)}.kpi-value{font-size:1.4rem;font-weight:800;line-height:1.2;white-space:nowrap}.income,.kpi-value.income{color:var(--color-success)}.expense,.kpi-value.expense{color:var(--color-danger)}.kpi-hint{font-size:var(--font-size-xs);color:var(--color-text-muted)}.kpi-dot{width:8px;height:8px;border-radius:50%}.kpi-dot.income{background:var(--color-success)}.kpi-dot.expense{background:var(--color-danger)}.kpi-dot.net{background:var(--color-primary)}.toolbar{gap:var(--space-sm) var(--space-md);padding:var(--space-sm);background:rgba(255,255,255,.7);border:1px solid rgba(226,232,240,.9);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.toolbar,.toolbar-filters{display:flex;flex-wrap:wrap;align-items:center}.toolbar-filters{gap:var(--space-sm);flex:1 1 min(360px,100%);min-width:0}.toolbar-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);width:100%;justify-content:flex-end;padding-top:var(--space-sm);border-top:1px dashed var(--color-border)}.segmented{display:inline-flex;padding:4px;gap:2px;background:var(--color-bg-secondary);border-radius:var(--radius-md)}.segmented button{border:none;background:transparent;padding:.45rem .9rem;border-radius:calc(var(--radius-md) - 3px);font-family:inherit;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-tertiary);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.segmented button:hover{color:var(--color-text)}.segmented button.active{background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.search-field{display:flex;align-items:center;gap:8px;flex:1 1 200px;min-height:44px;padding:0 .875rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-size:14px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.search-field:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.search-field input{flex:1 1;min-width:0;border:none;outline:none;background:transparent;font-family:inherit;font-size:var(--font-size-sm);color:var(--color-text)}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));grid-gap:var(--space-md);gap:var(--space-md)}.chart-box{width:100%;height:240px}.cat-bars{display:flex;flex-direction:column;gap:4px}.cat-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:6px var(--space-sm);gap:6px var(--space-sm);align-items:center;width:100%;padding:8px 10px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;font-family:inherit;text-align:left;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.cat-row:hover{background:var(--color-surface-hover)}.cat-row.active{background:var(--color-primary-subtle);border-color:var(--color-primary-light)}.cat-row-label{display:inline-flex;align-items:center;gap:8px;font-size:var(--font-size-sm);font-weight:600;color:var(--color-text);min-width:0}.cat-row-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-row-icon{flex-shrink:0;font-size:16px}.cat-row-value{white-space:nowrap;font-size:var(--font-size-sm);font-weight:700;color:var(--color-text)}.cat-row-value small{margin-left:4px;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted)}.cat-bar-track{grid-column:1/-1;height:6px;border-radius:var(--radius-full);background:var(--color-bg-secondary);overflow:hidden}.cat-bar-fill{display:block;height:100%;border-radius:inherit;transition:width .5s var(--ease-out)}.cat-bar-fill.income{background:linear-gradient(90deg,#22C55E,var(--color-success))}.cat-bar-fill.expense{background:linear-gradient(90deg,#F87171,var(--color-danger))}.tx-list{background:var(--color-surface);border:1px solid rgba(226,232,240,.9);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);overflow:clip}.tx-group+.tx-group{border-top:1px solid var(--color-border)}.tx-group-header{position:-webkit-sticky;position:sticky;top:var(--header-height);z-index:2;display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:wrap;padding:10px var(--space-lg);background:rgba(248,250,252,.94);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--color-border)}.tx-group-title{font-size:var(--font-size-sm);font-weight:700;color:var(--color-text)}.tx-group-totals{display:inline-flex;gap:var(--space-md);font-size:var(--font-size-xs);font-weight:700}.tx-row{display:flex;align-items:center;gap:var(--space-md);padding:14px var(--space-lg);transition:background var(--transition-fast),opacity var(--transition-fast)}.tx-row+.tx-row{border-top:1px solid var(--color-bg-secondary)}.tx-row:hover{background:#FBFCFE}.tx-row.is-busy{opacity:.5}.tx-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;font-size:19px;background:var(--color-bg-secondary)}.tx-icon.income{background:var(--color-success-light)}.tx-icon.expense{background:var(--color-danger-light)}.tx-main{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.tx-title{font-size:var(--font-size-base);font-weight:600;color:var(--color-text)}.tx-meta,.tx-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-meta{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.tx-amount{flex-shrink:0;font-size:var(--font-size-base);font-weight:700;color:var(--color-text)}.tx-amount.income,.tx-group-totals .income{color:var(--color-success)}.tx-amount.expense,.tx-group-totals .expense{color:var(--color-danger)}.tx-side{align-items:center;gap:var(--space-sm)}.tx-actions,.tx-side{display:flex;flex-shrink:0}.tx-actions{gap:2px}.tx-more{display:block;width:100%;padding:14px;border:none;border-top:1px solid var(--color-border);background:var(--color-bg);font-family:inherit;font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary);cursor:pointer;transition:background var(--transition-fast)}.tx-more:hover{background:var(--color-primary-subtle)}@media (hover:hover) and (min-width:769px){.tx-actions{opacity:0;transition:opacity var(--transition-fast)}.tx-row:focus-within .tx-actions,.tx-row:hover .tx-actions{opacity:1}}@media (max-width:1024px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:768px){.page-title{font-size:var(--font-size-xl)}.toolbar-actions{justify-content:stretch}.toolbar-actions .btn{flex:1 1 auto}.input-compact{flex:1 1 140px}.segmented{width:100%}.segmented button{flex:1 1;padding:.45rem .4rem}}@media (max-width:480px){.kpi-card{padding:var(--space-md)}.kpi-card:last-child,.kpi-hero{grid-column:1/-1}.tx-row{padding:12px var(--space-md);gap:var(--space-sm)}.tx-side{flex-direction:column;align-items:flex-end;gap:0}.tx-actions .icon-btn{width:32px;height:30px;font-size:13px}.tx-icon{width:36px;height:36px;font-size:16px}.tx-amount,.tx-title{font-size:var(--font-size-sm)}.tx-group-header{padding:10px var(--space-md)}.chart-box{height:210px}}.page-skeleton{display:flex;flex-direction:column;gap:var(--space-lg)}.page-skeleton-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:var(--space-md);gap:var(--space-md)}.skeleton-block{height:104px;border-radius:var(--radius-xl)}.status-page{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);text-align:center;padding:var(--space-2xl) var(--space-lg);min-height:50vh}.status-page-icon{font-size:3.5rem;line-height:1}.status-page-title{font-size:var(--font-size-2xl);font-weight:800;letter-spacing:-.03em}.status-page-text{max-width:440px;color:var(--color-text-tertiary)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.page-header{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.page-header-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:16px;box-shadow:inset 0 0 0 1px rgba(15,23,42,.04)}.page-header-text{flex:1 1 220px;min-width:0}.page-header-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}@media (max-width:768px){.page-header-icon{width:44px;height:44px;border-radius:14px}.page-header-actions{width:100%}.page-header-actions>*{flex:1 1 auto}}