.card{background:var(--bg-surface);border:1px solid var(--border-light);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-m);display:flex;flex-direction:column;gap:var(--space-m)}.loading-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-m);padding:var(--space-m);background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.loading-state__spinner{width:40px;height:40px;border:3px solid var(--border-light);border-top-color:var(--brand-primary);border-radius:50%;animation:spin 1s linear infinite}.loading-state__text{font-size:1rem;color:var(--text-muted)}.loading-overlay{display:flex;align-items:center;justify-content:center;background:var(--overlay-bg);z-index:1000}.loading-overlay--fullscreen{position:fixed;inset:0}.loading-overlay__content{display:flex;flex-direction:column;align-items:center;gap:var(--space-m);padding:var(--space-m)}.loading-overlay__spinner{width:48px;height:48px;border:4px solid var(--border-light);border-top-color:var(--brand-primary);border-radius:50%;animation:loading-spin .8s linear infinite}@keyframes loading-spin{to{transform:rotate(360deg)}}.loading-overlay__text{font-size:1rem;color:var(--text-secondary);margin:0}.close-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;min-height:40px;flex-shrink:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s ease,color .15s ease}.close-btn:hover{background:var(--bg-surface-alt);color:var(--text-primary)}.back-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-bottom:var(--space-m);border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s}.back-button:hover{background:var(--bg-surface-alt);color:var(--text-primary)}.dev-badge{position:fixed;top:0;left:50%;transform:translate(-50%);color:var(--text-inverted);padding:var(--space-xs) var(--space-m);font-size:.75rem;font-weight:600;z-index:9999;border-bottom-left-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm)}.dev-badge--local{background-color:var(--info-main)}.dev-badge--dev{background-color:var(--warning-main)}.toggle-switch{display:inline-flex;align-items:center;gap:var(--space-s);padding:var(--space-xs) var(--space-s);border-radius:var(--radius-md);border:1px solid var(--border-light);background:var(--bg-surface);font-weight:500;font-size:.85rem;color:var(--text-secondary);cursor:pointer;transition:border-color .2s ease,background .2s ease,color .2s ease}.toggle-switch input{appearance:none;width:34px;height:18px;border-radius:999px;border:1px solid var(--border-light);background:var(--bg-surface-alt);position:relative;cursor:pointer;transition:background .2s ease,border-color .2s ease;flex-shrink:0}.toggle-switch input:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text-muted);transition:transform .2s ease,background .2s ease}.toggle-switch input:checked{background:var(--brand-primary);border-color:var(--brand-primary)}.toggle-switch input:checked:after{transform:translate(16px);background:var(--brand-primary-contrast)}.toggle-switch:has(input:checked){color:var(--text-primary);border-color:var(--brand-primary);background:var(--brand-primary-light)}.toggle-switch input:disabled{opacity:.4;cursor:not-allowed}.theme-dark .toggle-switch{background:var(--bg-surface-alt);border-color:var(--border-medium);color:var(--text-primary)}.theme-dark .toggle-switch input{background:var(--bg-surface);border-color:var(--border-medium)}.theme-dark .toggle-switch:has(input:checked){background:color-mix(in srgb,var(--brand-primary) 20%,var(--bg-surface-alt));border-color:var(--brand-primary)}.modal-overlay{position:fixed;inset:0;background:var(--overlay-bg);display:flex;align-items:center;justify-content:center;z-index:200;padding:var(--space-l)}.modal{width:min(720px,100%);max-height:85vh;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-surface);border-radius:var(--radius-lg);border:1px solid var(--border-light);box-shadow:var(--shadow-lg)}.modal.modal--lg{width:min(840px,100%)}.modal.modal--wide{width:min(960px,100%)}.modal.modal--xl{width:100%;max-width:var(--layout-max-width)}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-m);flex-shrink:0;padding:var(--space-l) var(--space-l) var(--space-m);border-bottom:1px solid var(--border-light)}.modal__title{margin:0;font-size:1.25rem}.modal__body{display:flex;flex-direction:column;gap:var(--space-m);padding:var(--space-m) var(--space-l) var(--space-l);overflow-y:auto;flex:1 1 auto}.modal__footer{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:var(--space-s);flex-shrink:0;padding:var(--space-s) var(--space-l) var(--space-l);border-top:1px solid var(--border-light)}@media(max-width:720px){.modal-overlay{padding:var(--space-m);align-items:center}.modal-overlay--sheet{padding:0;align-items:flex-end}.modal{width:100%;max-height:90vh;border-radius:var(--radius-md)}.modal-overlay--sheet .modal{max-height:min(88dvh,760px);border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:none}.modal-overlay--sheet .modal:before{content:"";width:42px;height:4px;border-radius:999px;background:var(--border-medium);margin:var(--space-s) auto 0}.modal__header{padding:var(--space-m) var(--space-m) var(--space-s)}.modal__body,.modal__footer{padding:var(--space-s) var(--space-m) var(--space-m)}}@media(max-width:520px){.modal-overlay{padding:var(--space-xs);align-items:center}.modal-overlay--sheet{padding:0;align-items:flex-end}.modal{max-height:100dvh;width:100%;border-radius:var(--radius-md)}.modal-overlay--sheet .modal{max-height:92dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.modal__header{padding:var(--space-s) var(--space-s) var(--space-xs)}.modal__body,.modal__footer{padding:var(--space-xs) var(--space-s) var(--space-s)}.modal__footer .btn{flex:1 1 auto}.modal__title{font-size:1.1rem}}.notification-sheet{width:min(480px,100%)}.notification-sheet__content{display:flex;flex-direction:column;gap:var(--space-s)}.notification-sheet__title{margin:0;font-size:1.1rem;font-weight:600;color:var(--text-primary)}.notification-sheet__type{font-size:.8rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.notification-sheet__time{font-size:.8rem;color:var(--text-muted)}.notification-sheet__entity{font-size:.875rem;font-weight:500;color:var(--text-secondary);padding:var(--space-xs) var(--space-s);background:var(--bg-hover);border-radius:var(--radius-sm)}.notification-sheet__body{margin:0;font-size:.875rem;color:var(--text-secondary);line-height:1.5;white-space:pre-line}.notification-sheet__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-s);width:100%}@media(max-width:520px){.notification-sheet__footer{flex-direction:column-reverse}.notification-sheet__footer .btn{width:100%}}.notification-bell,.notification-bell__trigger{position:relative}.notification-bell__trigger--shake{animation:bell-shake .6s ease-in-out}@keyframes bell-shake{0%,to{transform:rotate(0)}15%{transform:rotate(12deg)}30%{transform:rotate(-10deg)}45%{transform:rotate(8deg)}60%{transform:rotate(-6deg)}75%{transform:rotate(3deg)}}.notification-bell__badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:9px;background:var(--error-main);color:var(--text-inverted);display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;padding:0 4px;pointer-events:none}.notification-bell__dropdown{position:fixed;top:var(--navbar-height, 72px);right:var(--space-s);width:360px;max-width:calc(100vw - var(--space-m));max-height:480px;background:var(--bg-surface);border:1px solid var(--border-medium);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:101;display:flex;flex-direction:column;overflow:hidden}.notification-bell__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-s) var(--space-m);border-bottom:1px solid var(--border-light)}.notification-bell__tabs{display:flex;gap:var(--space-xs)}.notification-bell__tab{padding:var(--space-xs) var(--space-s);border-radius:var(--radius-sm);border:none;background:none;color:var(--text-secondary);font-size:.8rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.notification-bell__tab:hover{background:var(--bg-surface-alt)}.notification-bell__tab--active{background:var(--brand-primary-light);color:var(--brand-primary);font-weight:600}.notification-bell__mark-all{border:none;background:none;color:var(--brand-primary);font-size:.75rem;font-weight:500;cursor:pointer;padding:var(--space-xs)}.notification-bell__mark-all:hover{text-decoration:underline}.notification-bell__list{overflow-y:auto;flex:1;max-height:360px}.notification-bell__group:not(:first-child){border-top:1px solid var(--border-light)}.notification-bell__group-header{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) var(--space-m);font-size:.7rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-surface)}.notification-bell__group-count{min-width:20px;height:20px;padding:0 var(--space-xs);border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--brand-primary);background:var(--brand-primary-light)}.notification-bell__empty{padding:var(--space-m);text-align:center;color:var(--text-muted);font-size:.85rem}.notification-bell__item{display:flex;align-items:flex-start;gap:var(--space-s);padding:var(--space-s) var(--space-m);cursor:pointer;transition:background .12s;border-bottom:1px solid var(--border-light)}.notification-bell__item:last-child{border-bottom:none}.notification-bell__item:hover{background:var(--bg-surface-alt)}.notification-bell__item--unread{background:var(--info-bg)}.notification-bell__item--unread:hover{background:var(--info-bg-hover)}.notification-bell__item-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.notification-bell__item-title{font-size:.8rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-bell__item--unread .notification-bell__item-title{font-weight:700}.notification-bell__item-body{font-size:.75rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-bell__item-meta{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-xs);flex-shrink:0}.notification-bell__item-time{font-size:.7rem;color:var(--text-muted);white-space:nowrap}.notification-bell__item-read{width:22px;height:22px;border-radius:50%;border:1px solid var(--border-medium);background:none;color:var(--text-secondary);font-size:.75rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.notification-bell__item-read:hover{background:var(--success-bg);color:var(--success-main);border-color:var(--success-main)}.notification-bell__view-all{display:block;width:100%;padding:var(--space-s);border:none;border-top:1px solid var(--border-light);background:none;color:var(--brand-primary);font-size:.8rem;font-weight:500;cursor:pointer;text-align:center;transition:background .12s}.notification-bell__view-all:hover{background:var(--bg-surface-alt)}.pagination-bar{display:flex;align-items:center;gap:var(--space-m);flex-wrap:wrap;padding:var(--space-s) var(--space-m);background:var(--bg-surface-alt);border-radius:var(--radius-md);font-size:.85rem}.pagination-bar--loading{border:1px solid var(--border-medium)}.pagination-bar__info{color:var(--text-secondary);font-size:.85rem}.pagination-bar__nav{display:inline-flex;align-items:center;gap:var(--space-xs);margin-left:auto}.pagination-bar__btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid var(--border-light);background:var(--bg-surface);color:var(--text-secondary);font-size:.75rem;cursor:pointer;transition:color .12s ease,border-color .12s ease}.pagination-bar__btn:hover:not(:disabled){color:var(--brand-primary);border-color:var(--brand-primary)}.pagination-bar__btn:disabled{opacity:.3;cursor:not-allowed}.pagination-bar__indicator{padding:0 var(--space-s);font-weight:600;color:var(--text-primary);font-size:.85rem;white-space:nowrap}.pagination-bar__size{margin-left:var(--space-s)}.pagination-bar__size-select{min-height:30px;padding:2px var(--space-s);border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text-primary);font-size:.85rem;cursor:pointer}.pagination-bar__size-select:focus{outline:2px solid var(--brand-primary);outline-offset:2px}.theme-dark .pagination-bar{background:var(--bg-surface-alt)}.theme-dark .pagination-bar__btn,.theme-dark .pagination-bar__size-select{background:var(--bg-surface);border-color:var(--border-medium)}@media(max-width:720px){.pagination-bar{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-xs);width:100%;padding:var(--space-s);justify-content:center}.pagination-bar__nav{justify-self:end;margin-left:0;width:100%;justify-content:center}.pagination-bar__info,.pagination-bar__size{display:none}}@media(max-width:520px){.pagination-bar{padding:var(--space-xs);font-size:.8rem}.pagination-bar__btn{width:26px;height:26px;font-size:.7rem}.pagination-bar__indicator{font-size:.8rem;padding:0 var(--space-xs)}.pagination-bar__size-select{min-height:26px;font-size:.8rem}}@media(max-width:360px){.pagination-bar{grid-template-columns:minmax(0,1fr) auto}.pagination-bar__info{grid-column:1 / -1}.pagination-bar__nav{justify-self:start}}.notifications-page__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-m);flex-wrap:wrap;gap:var(--space-s)}.notifications-page__header h1{margin:0}.notifications-page__actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-m)}.notifications-page__tabs{display:flex;gap:var(--space-xs)}.notifications-page__tab{padding:var(--space-xs) var(--space-m);border-radius:var(--radius-sm);border:1px solid var(--border-light);background:var(--bg-surface);color:var(--text-secondary);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.notifications-page__tab:hover{background:var(--bg-surface-alt);border-color:var(--border-medium)}.notifications-page__tab--active{background:var(--brand-primary-light);color:var(--brand-primary);border-color:var(--brand-primary);font-weight:600}.notifications-page__mark-all{border:none;background:none;color:var(--brand-primary);font-size:.85rem;font-weight:500;cursor:pointer;padding:var(--space-xs) var(--space-s)}.notifications-page__mark-all:hover{text-decoration:underline}.notifications-page__list{display:flex;flex-direction:column}.notifications-page__group:not(:first-child){border-top:1px solid var(--border-light)}.notifications-page__group-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-s) var(--space-m);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);background:var(--bg-surface-alt)}.notifications-page__group-count{min-width:22px;height:22px;padding:0 var(--space-xs);border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--brand-primary);background:var(--brand-primary-light)}.notifications-page__setup-content{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-s);padding:var(--space-l) var(--space-m)}.notifications-page__setup-icon{color:var(--text-muted)}.notifications-page__setup-content h3{margin:0;font-size:1rem}.notifications-page__setup-content p{margin:0;font-size:.85rem;color:var(--text-secondary);max-width:400px}.notifications-page__loading,.notifications-page__empty{padding:var(--space-xl);text-align:center;color:var(--text-muted)}.notifications-page__item{display:flex;align-items:flex-start;gap:var(--space-s);padding:var(--space-m);cursor:pointer;transition:background .12s;border-bottom:1px solid var(--border-light)}.notifications-page__item:last-child{border-bottom:none}.notifications-page__item:hover{background:var(--bg-surface-alt)}.notifications-page__item--unread{background:var(--info-bg)}.notifications-page__item--unread:hover{background:var(--info-bg-hover)}.notifications-page__item-dot{width:10px;flex-shrink:0;padding-top:6px}.notifications-page__dot{display:block;width:8px;height:8px;border-radius:50%;background:var(--brand-primary)}.notifications-page__item-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.notifications-page__item-title{font-size:.9rem;font-weight:600;color:var(--text-primary)}.notifications-page__item--unread .notifications-page__item-title{font-weight:700}.notifications-page__item-body{font-size:.8rem;color:var(--text-secondary)}.notifications-page__item-meta{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-xs);flex-shrink:0}.notifications-page__item-time{font-size:.75rem;color:var(--text-muted);white-space:nowrap}.notifications-page__item-read{width:26px;height:26px;border-radius:50%;border:1px solid var(--border-medium);background:none;color:var(--text-secondary);font-size:.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.notifications-page__item-read:hover{background:var(--success-bg);color:var(--success-main);border-color:var(--success-main)}@media(max-width:768px){.notifications-page__actions{width:100%;gap:var(--space-s)}.notifications-page__tabs{width:100%}.notifications-page__tab{flex:1;justify-content:center;display:inline-flex;align-items:center}}.notification-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-s);padding:var(--space-s) var(--space-m);background:var(--info-bg, rgba(21, 101, 192, .08));border:1px solid var(--info-main, #1565c0);border-radius:var(--radius-md);margin-bottom:var(--space-m);flex-wrap:wrap}.notification-banner__text{font-size:.85rem;color:var(--text-primary);font-weight:500;display:flex;align-items:center;gap:var(--space-s)}.notification-banner__icon{display:inline-flex;width:20px;height:20px;flex-shrink:0;color:var(--info-main)}.notification-banner__icon svg{width:20px;height:20px}.notification-banner__actions{display:flex;gap:var(--space-s)}
