.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}}@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}
