.loading-spinner{justify-content:center;align-items:center;gap:var(--space-m);padding:var(--space-xxl);flex-direction:column;min-height:200px;display:flex}.loading-spinner__ring{border:3px solid var(--color-secondary-light);border-top-color:var(--color-primary-light);border-radius:50%;animation:.8s linear infinite spin}.loading-spinner__text{color:var(--color-text-secondary);font-size:.875rem}.dashboard{background:var(--color-bg);min-height:100vh}.sidebar{z-index:100;background:var(--color-surface);border-right:1px solid var(--color-divider);transition:width var(--transition-normal);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden}.sidebar--expanded{width:var(--sidebar-width-expanded)}.sidebar--collapsed{width:var(--sidebar-width-collapsed)}.sidebar__header{padding:var(--space-l) var(--space-m);border-bottom:1px solid var(--color-divider);justify-content:space-between;align-items:center;min-height:72px;display:flex}.sidebar__logo-wrapper{align-items:center;gap:var(--space-s);display:flex;overflow:hidden}.sidebar__logo{object-fit:contain;flex-shrink:0;width:36px;height:36px}.sidebar__brand{font-family:var(--font-heading);color:var(--color-primary);white-space:nowrap;font-size:1rem;font-weight:700}.sidebar__toggle{border-radius:var(--radius-s);width:32px;height:32px;color:var(--color-text-secondary);transition:background var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar__toggle:hover{background:var(--color-secondary-light);color:var(--color-text)}.sidebar__nav{padding:var(--space-m) var(--space-s);flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.sidebar__link{align-items:center;gap:var(--space-m);padding:12px var(--space-m);border-radius:var(--radius-m);color:var(--color-text-secondary);transition:all var(--transition-fast);white-space:nowrap;cursor:pointer;text-align:left;background:0 0;border:none;width:100%;font-size:.9375rem;font-weight:500;text-decoration:none;display:flex}.sidebar__link:hover{background:var(--color-secondary-light);color:var(--color-text)}.sidebar__link--active{color:var(--color-primary-light);background:#2b6cb014;font-weight:600}.sidebar__link--danger{color:var(--color-error)}.sidebar__link--danger:hover{background:var(--color-error-light);color:var(--color-error)}.sidebar__footer{padding:var(--space-m) var(--space-s);border-top:1px solid var(--color-divider)}.sidebar__user{align-items:center;gap:var(--space-s);padding:var(--space-s) var(--space-m);margin-bottom:var(--space-s);display:flex;overflow:hidden}.sidebar__avatar{border-radius:var(--radius-round);background:var(--color-primary);width:36px;height:36px;color:var(--color-text-on-primary);font-family:var(--font-heading);flex-shrink:0;justify-content:center;align-items:center;font-size:.875rem;font-weight:700;display:flex}.sidebar__user-info{flex-direction:column;display:flex;overflow:hidden}.sidebar__user-name{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:600;overflow:hidden}.sidebar__user-email{color:var(--color-text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.dashboard__content{transition:margin-left var(--transition-normal);min-height:100vh;padding:var(--space-l)}.dashboard--mobile{flex-direction:column;min-height:100vh;display:flex}.dashboard__content--mobile{padding:var(--space-m);flex:1;margin-left:0!important}.dashboard__content--with-bottom-nav{padding-bottom:calc(72px + var(--space-m))}.bottom-nav{z-index:100;background:var(--color-surface);border-top:1px solid var(--color-divider);align-items:stretch;height:72px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #0f172a0f}.bottom-nav__item{color:var(--color-text-hint);transition:color var(--transition-fast);padding:var(--space-s);border-radius:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;font-size:.6875rem;font-weight:500;text-decoration:none;display:flex;position:relative}.bottom-nav__item:before{content:"";border-radius:0 0 var(--radius-s) var(--radius-s);background:var(--color-primary-light);height:2.5px;transition:transform var(--transition-fast);position:absolute;top:0;left:20%;right:20%;transform:scaleX(0)}.bottom-nav__item--active{color:var(--color-primary-light);font-weight:700}.bottom-nav__item--active:before{transform:scaleX(1)}.bottom-nav__item svg{transition:transform var(--transition-fast)}.bottom-nav__item--active svg{transform:scale(1.1)}.install-prompt{color:#fff;z-index:9999;background:#0d1b4c;border-radius:16px;align-items:center;gap:12px;width:calc(100% - 32px);max-width:420px;padding:14px 16px;animation:.35s cubic-bezier(.34,1.56,.64,1) ip-slide-up;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #00000059}@keyframes ip-slide-up{0%{opacity:0;transform:translate(-50%)translateY(24px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.install-prompt__logo{object-fit:cover;border-radius:10px;flex-shrink:0;width:44px;height:44px}.install-prompt__text{flex:1;min-width:0}.install-prompt__title{white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-size:.875rem;font-weight:700;overflow:hidden}.install-prompt__sub{opacity:.75;font-size:.75rem;line-height:1.4}.install-prompt__actions{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.install-prompt__btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:7px 14px;font-size:.8125rem;font-weight:600}.install-prompt__btn--install{color:#0d1b4c;background:#fff}.install-prompt__btn--dismiss{color:#ffffffa6;text-align:center;background:0 0}.install-prompt__btn--dismiss:hover{color:#fff}:root{--color-primary:#1a3a5c;--color-primary-light:#2b6cb0;--color-primary-dark:#122840;--color-secondary:#c6d1d8;--color-secondary-light:#e8ecef;--color-accent:#f6ad55;--color-accent-light:#feebc8;--color-accent-dark:#dd6b20;--color-accent-secondary:#48bb78;--color-accent-secondary-light:#c6f6d5;--color-success:#48bb78;--color-success-light:#c6f6d5;--color-error:#e53e3e;--color-error-light:#fed7d7;--color-warning:#ed8936;--color-warning-light:#feebc8;--color-info:#4299e1;--color-info-light:#bee3f8;--color-bg:#f7f8fc;--color-surface:#fff;--color-divider:#e2e8f0;--color-disabled:#cbd5e0;--color-dark:#0f172a;--color-text:#1a202c;--color-text-secondary:#718096;--color-text-hint:#a0aec0;--color-text-on-primary:#fff;--font-heading:"DM Sans", sans-serif;--font-body:"Plus Jakarta Sans", sans-serif;--space-xs:4px;--space-s:8px;--space-m:16px;--space-l:24px;--space-xl:32px;--space-xxl:48px;--radius-s:8px;--radius-m:14px;--radius-l:18px;--radius-xl:24px;--radius-xxl:28px;--radius-round:100px;--radius-full:999px;--shadow-sm:0 2px 8px #0f172a0a, 0 1px 4px #0f172a05;--shadow-md:0 4px 16px #0f172a0f, 0 2px 6px #0f172a08;--shadow-lg:0 8px 24px #0f172a14, 0 4px 10px #0f172a0a;--shadow-elevated:0 8px 20px #1a3a5c26, 0 2px 6px #0f172a0d;--transition-fast:.2s ease;--transition-normal:.3s ease;--transition-slow:.5s cubic-bezier(.4, 0, .2, 1);--sidebar-width-expanded:280px;--sidebar-width-collapsed:80px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg);min-height:100vh;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.2px;font-weight:700;line-height:1.2}a{color:var(--color-primary-light);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary)}button{cursor:pointer;font-family:var(--font-body);background:0 0;border:none}img{max-width:100%;display:block}input,textarea,select{font-family:var(--font-body);font-size:1rem}ul,ol{list-style:none}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-disabled);border-radius:var(--radius-round)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:3px solid var(--color-primary-light);outline-offset:2px;border-radius:var(--radius-s)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --promo-angle{syntax:"<angle>";inherits:false;initial-value:0deg}.promo-banner{margin-bottom:var(--space-l);background:linear-gradient(135deg, #fff 0%, #fff1f7 55%, #ffe3ef 100%) padding-box, conic-gradient(from var(--promo-angle), #f9a8d4, #ec4899, #fff, #be185d, #f9a8d4) border-box;cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast);border:1px solid #0000;border-radius:16px;align-items:center;gap:12px;padding:12px 16px;animation:4s linear infinite promo-border-spin;display:flex;position:relative;overflow:hidden;box-shadow:0 12px 30px #ec48992e}.promo-banner:hover{transform:translateY(-2px);box-shadow:0 16px 38px #ec489942}.promo-banner:focus-visible{outline-offset:2px;outline:2px solid #ec4899}.promo-ribbon{z-index:3;color:#fff;letter-spacing:.8px;clip-path:polygon(0 0,100% 0,100% 100%,50% 76%,0 100%);background:linear-gradient(135deg,#f472b6,#ec4899);padding:4px 12px 7px;font-size:.5rem;font-weight:800;position:absolute;top:0;left:14px;box-shadow:0 3px 8px #be185d4d}.promo-dots{z-index:0;opacity:.55;background-image:radial-gradient(#f9a8d4 1.7px,#0000 1.8px);background-size:11px 11px;width:64px;height:44px;position:absolute}.promo-dots--tl{top:16px;left:16px}.promo-dots--br{bottom:14px;right:108px}.promo-spark{z-index:1;color:#f9a8d4;font-size:1.3rem;animation:2.2s ease-in-out infinite promo-twinkle;position:absolute}.promo-spark--1{top:34%;left:44%}.promo-spark--2{font-size:.95rem;animation-delay:.8s;top:64%;left:50%}.promo-banner__body{z-index:1;flex:1;min-width:0;padding-top:8px;padding-right:102px;position:relative}.promo-head{justify-content:center;align-items:flex-start;margin-right:-102px;display:flex}.promo-title{text-align:center;flex-direction:column;align-items:center;margin:0;line-height:1.05;display:flex}.promo-title__sm{color:#1a3a5c;font-size:1.28rem;font-weight:800}.promo-title__lg{letter-spacing:.5px;background:linear-gradient(90deg,#f472b6,#ec4899 55%,#be185d);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:1.84rem;font-weight:900}.promo-badge{z-index:3;color:#fff;background:linear-gradient(135deg,#f9a8d4,#ec4899);border-radius:999px;align-items:center;gap:4px;padding:7px 16px;font-size:1rem;font-weight:800;animation:1.8s ease-in-out infinite promo-badge-pulse;display:inline-flex;position:absolute;top:3px;right:3px;box-shadow:0 4px 12px #ec489959}.promo-price{align-items:center;gap:12px;margin-top:6px;display:flex}.promo-price__old-amt{color:#111;font-size:1.1rem;font-weight:700;-webkit-text-decoration:line-through #ec4899;text-decoration:line-through #ec4899;text-decoration-thickness:2px}.promo-price__divider{background:#f3c6db;align-self:stretch;width:2px;min-height:38px}.promo-price__new-wrap{align-items:baseline;gap:6px;line-height:1.05;display:flex}.promo-price__now{color:#be185d;font-size:.82rem;font-weight:800}.promo-price__new{background:linear-gradient(90deg,#ec4899,#be185d);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:2.2rem;font-weight:900}.promo-price__new span{font-size:1rem}.promo-price--d{display:none}.promo-valid{color:#111;align-items:center;gap:6px;margin-top:8px;font-size:.88rem;font-weight:600;display:flex}.promo-valid__count{color:#fff;background:linear-gradient(135deg,#f472b6,#ec4899);border-radius:999px;flex-shrink:0;padding:1px 9px;font-weight:800}.promo-seal{z-index:2;color:#fff;text-align:center;clip-path:polygon(50% 0%,56.6% 8.5%,65.5% 2.4%,69.1% 12.6%,79.4% 9.5%,79.7% 20.3%,90.5% 20.6%,87.4% 30.9%,97.6% 34.5%,91.5% 43.4%,100% 50%,91.5% 56.6%,97.6% 65.5%,87.4% 69.1%,90.5% 79.4%,79.7% 79.7%,79.4% 90.5%,69.1% 87.4%,65.5% 97.6%,56.6% 91.5%,50% 100%,43.4% 91.5%,34.5% 97.6%,30.9% 87.4%,20.6% 90.5%,20.3% 79.7%,9.5% 79.4%,12.6% 69.1%,2.4% 65.5%,8.5% 56.6%,0% 50%,8.5% 43.4%,2.4% 34.5%,12.6% 30.9%,9.5% 20.6%,20.3% 20.3%,20.6% 9.5%,30.9% 12.6%,34.5% 2.4%,43.4% 8.5%);filter:drop-shadow(0 6px 12px #15803d66);background:radial-gradient(circle at 50% 34%,#34d399 0%,#16a34a 45%,#15803d 100%);flex-direction:column;justify-content:center;align-items:center;width:82px;height:82px;font-weight:800;line-height:1.05;animation:1.6s ease-in-out infinite promo-cta-grow;display:flex;position:absolute;bottom:14px;right:16px}.promo-seal__top,.promo-seal__bot{font-size:.9rem}.promo-seal__star{opacity:.85;margin-top:1px;font-size:.6rem}@keyframes promo-badge-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes promo-cta-grow{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}@keyframes promo-twinkle{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}@keyframes promo-border-spin{to{--promo-angle:360deg}}.promo-confetti{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.promo-confetti__bit{opacity:.9;border-radius:1px;width:7px;height:7px;animation:linear infinite promo-fall;position:absolute;top:-12px}.promo-confetti__bit--0{background:#ec4899;animation-duration:3.2s;animation-delay:0s;left:6%}.promo-confetti__bit--1{background:#fde68a;border-radius:50%;width:5px;height:5px;animation-duration:4.1s;animation-delay:.6s;left:18%}.promo-confetti__bit--2{background:#34d399;animation-duration:3.6s;animation-delay:1.1s;left:31%}.promo-confetti__bit--3{background:#a78bfa;border-radius:50%;width:6px;height:6px;animation-duration:4.4s;animation-delay:.3s;left:45%}.promo-confetti__bit--4{background:#60a5fa;animation-duration:3.9s;animation-delay:1.4s;left:59%}.promo-confetti__bit--5{background:#be185d;animation-duration:3.3s;animation-delay:.9s;left:72%}.promo-confetti__bit--6{background:#f472b6;border-radius:50%;width:5px;height:5px;animation-duration:4.6s;animation-delay:.2s;left:86%}@keyframes promo-fall{0%{opacity:0;transform:translateY(-12px)rotate(0)}10%{opacity:.95}to{opacity:0;transform:translateY(170px)rotate(320deg)}}@media (width<=640px){.promo-banner{gap:8px;padding:10px 14px}.promo-head{margin-right:-68px}.promo-title__sm{font-size:.78rem}.promo-title__lg{font-size:1.05rem}.promo-badge{border-radius:999px;padding:5px 12px;font-size:.68rem;top:0;right:0}.promo-price{gap:9px}.promo-price__old-amt{font-size:.78rem}.promo-price__now{font-size:.6rem}.promo-price__divider{min-height:24px}.promo-price__new{font-size:1.3rem}.promo-price__new span{font-size:.72rem}.promo-valid{font-size:.62rem}.promo-banner__body{padding-top:2px;padding-right:68px}.promo-dots{display:none}.promo-seal{width:56px;height:56px;bottom:12px;right:12px}.promo-seal__top,.promo-seal__bot{font-size:.66rem}.promo-seal__star{font-size:.45rem}}@media (width>=641px){.promo-price--m,.promo-badge{display:none}.promo-banner__body{flex-wrap:wrap;align-items:center;gap:8px 32px;padding-top:6px;padding-left:200px;display:flex}.promo-head{flex:none;justify-content:flex-start;margin-right:0}.promo-title{text-align:left;align-items:flex-start;gap:4px}.promo-price--d{flex-direction:column;flex:none;gap:4px;display:flex}.promo-price__row{align-items:baseline;gap:12px;line-height:1.05;display:flex}.promo-price--d .promo-price__old-amt{font-size:.95rem}.promo-price--d .promo-price__new{font-size:1.84rem}.promo-valid{display:none}.promo-price__valid-top,.promo-price__valid-bot{color:#111;font-size:.925rem;font-weight:600}.promo-price__valid-top{margin-left:50px;font-weight:800}.promo-price__valid-bot{margin-left:35px;font-weight:800}.promo-seal{width:58px;height:58px;margin-top:-29px;top:50%;bottom:auto;right:246px}.promo-seal__top,.promo-seal__bot{font-size:.72rem}.promo-seal__star{font-size:.5rem}.promo-badge-inline{color:#fff;background:linear-gradient(135deg,#f9a8d4,#ec4899);border-radius:999px;align-self:center;align-items:center;margin:-6px 0;padding:3px 14px;font-size:.85rem;font-weight:800;line-height:1.1;animation:1.8s ease-in-out infinite promo-badge-pulse;display:inline-flex;box-shadow:0 4px 12px #ec489959}}@media (prefers-reduced-motion:reduce){.promo-banner,.promo-badge,.promo-badge-inline,.promo-seal,.promo-spark{animation:none}.promo-confetti__bit{display:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fade-in{animation:.3s ease-out fadeIn}.animate-fade-in-up{animation:.5s ease-out fadeInUp}.animate-slide-in-right{animation:.4s ease-out slideInRight}.animate-scale-in{animation:.3s ease-out scaleIn}.skeleton{background:linear-gradient(90deg, var(--color-secondary-light) 25%, var(--color-divider) 37%, var(--color-secondary-light) 63%);border-radius:var(--radius-m);background-size:200% 100%;animation:1.5s ease-in-out infinite shimmer}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.stagger-6{animation-delay:.3s}
