html,body{min-height:100%}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--color-ink);overflow-x:clip;background:radial-gradient(circle at top left,rgba(0,109,119,0.10),transparent 30%),radial-gradient(circle at bottom right,rgba(238,155,0,0.12),transparent 25%),linear-gradient(180deg,var(--color-bg-top) 0%,var(--color-bg-bottom) 100%)}:root[data-theme='dark'] body,:root[data-theme='auto'] body{background:radial-gradient(circle at top left,rgba(76,177,186,0.18),transparent 30%),radial-gradient(circle at bottom right,rgba(245,179,74,0.10),transparent 25%),linear-gradient(180deg,var(--color-bg-top) 0%,var(--color-bg-bottom) 100%)}h1,h2,h3,h4,h5,h6{font-weight:var(--fw-bold);line-height:var(--lh-tight);color:var(--color-ink)}h1{font-size:var(--fs-3xl)}h2{font-size:var(--fs-2xl)}h3{font-size:var(--fs-xl)}h4{font-size:var(--fs-lg)}h5{font-size:var(--fs-md)}h6{font-size:var(--fs-base)}a{color:var(--color-primary-strong);text-decoration-thickness:1px;text-underline-offset:0.18em}a:hover{color:var(--color-primary)}code{color:var(--color-accent);font-family:var(--font-mono);font-size:0.92em}.app-shell{min-height:100vh}.app-navbar{background:linear-gradient(135deg,rgba(16,43,63,0.94),rgba(0,109,119,0.92));backdrop-filter:blur(8px);z-index:var(--z-nav)}:root[data-theme='dark'] .app-navbar,:root[data-theme='auto'] .app-navbar{background:linear-gradient(135deg,rgba(8,18,26,0.96),rgba(11,60,66,0.94))}@media (min-width:992px){.app-navbar .nav-link{padding-inline:0.6rem;font-size:0.95rem;white-space:nowrap}.app-navbar .app-user-badge{font-size:0.78rem}}@media (max-width:991.98px){.app-navbar .navbar-nav{gap:0.25rem;padding-top:0.75rem}.app-navbar .app-user-badge{align-self:flex-start;margin-block:0.25rem}}.navbar-toggler,.navbar-toggler:focus{box-shadow:none}.skip-link{position:absolute;inset-inline-start:1rem;top:-3rem;z-index:var(--z-toast);padding:var(--space-2) var(--space-4);background:var(--color-surface);color:var(--color-primary-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);font-weight:var(--fw-semibold);transition:top var(--motion-fast) var(--motion-ease)}.skip-link:focus{top:0.5rem;outline:var(--focus-outline);outline-offset:2px}.hero-panel{padding:var(--space-6);border:1px solid var(--color-line);border-radius:var(--radius-2xl);background:var(--color-surface-raised);box-shadow:var(--shadow-lg)}.eyebrow{display:inline-block;margin-bottom:var(--space-3);padding:0.35rem 0.7rem;border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-primary-strong);font-size:var(--fs-xs);font-weight:var(--fw-extra);letter-spacing:0.08em;text-transform:uppercase}.status-card{padding:var(--space-5);border-radius:var(--radius-xl);border:1px solid var(--color-line);background:var(--color-surface)}.status-card--ok{background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-success-soft) 100%);border-color:var(--color-line)}.status-card--warn{background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-warning-soft) 100%);border-color:var(--color-line)}.feature-item{display:grid;gap:var(--space-1)}.feature-item span,.text-secondary{color:var(--color-ink-muted) !important}.module-grid{display:flex;flex-wrap:wrap;gap:0.65rem}.module-chip{display:inline-flex;align-items:center;padding:0.55rem 0.85rem;border-radius:var(--radius-pill);background:var(--color-primary-soft);border:1px solid var(--color-line-strong);color:var(--color-primary-strong);font-weight:var(--fw-bold);font-size:0.92rem}.card{border-radius:var(--radius-xl);background:var(--color-surface);border-color:var(--color-line)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-1{gap:var(--space-1)}.stack-2{gap:var(--space-2)}.stack-3{gap:var(--space-3)}.stack-5{gap:var(--space-5)}.stack-6{gap:var(--space-6)}.cluster{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.cluster-end{justify-content:flex-end}.cluster-between{justify-content:space-between}.surface{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-xs)}.surface-soft{background:var(--color-surface-alt);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-4)}.badge-state{display:inline-flex;align-items:center;gap:var(--space-1);padding:0.25rem 0.6rem;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:0.04em;text-transform:uppercase;border:1px solid transparent}.badge-state-success{background:var(--color-success-soft);color:var(--color-success);border-color:var(--color-success)}.badge-state-warning{background:var(--color-warning-soft);color:var(--color-warning);border-color:var(--color-warning)}.badge-state-danger{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger)}.badge-state-info{background:var(--color-info-soft);color:var(--color-info);border-color:var(--color-info)}.badge-state-neutral{background:var(--color-surface-alt);color:var(--color-ink-muted);border-color:var(--color-line-strong)}.col-min-140{min-width:140px}.col-min-150{min-width:150px}.col-min-180{min-width:180px}.col-min-220{min-width:220px}.col-min-240{min-width:240px}.col-min-320{min-width:320px}.col-min-340{min-width:340px}.table{color:var(--color-ink);--bs-table-bg:transparent;--bs-table-color:var(--color-ink)}.table thead th{color:var(--color-ink-muted);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:0.05em;font-weight:var(--fw-bold)}.table tbody tr{border-color:var(--color-line)}.table-responsive{overflow-x:auto}.table-sticky{max-height:70vh;overflow-y:auto}.table-sticky thead th{position:sticky;top:0;z-index:2;background:var(--color-surface);box-shadow:inset 0 -1px 0 var(--color-line-strong)}.form-control,.form-select,.form-check-input{background-color:var(--color-surface);color:var(--color-ink);border-color:var(--color-line-strong)}.form-control::placeholder{color:var(--color-ink-soft)}:focus-visible{outline:var(--focus-outline);outline-offset:2px;box-shadow:var(--focus-ring);border-radius:var(--radius-xs)}.btn:focus-visible,.nav-link:focus-visible,.form-control:focus-visible,.form-select:focus-visible{outline:var(--focus-outline);outline-offset:2px;box-shadow:var(--focus-ring)}.btn-primary{--bs-btn-bg:var(--color-primary);--bs-btn-border-color:var(--color-primary);--bs-btn-hover-bg:var(--color-primary-strong);--bs-btn-hover-border-color:var(--color-primary-strong);--bs-btn-active-bg:var(--color-primary-strong);--bs-btn-color:var(--color-primary-contrast);--bs-btn-hover-color:var(--color-primary-contrast)}.btn-outline-primary{--bs-btn-color:var(--color-primary-strong);--bs-btn-border-color:var(--color-primary-strong);--bs-btn-hover-bg:var(--color-primary-strong);--bs-btn-hover-color:var(--color-primary-contrast)}.visually-hidden,.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0,0,0,0) !important;white-space:nowrap !important;border:0 !important}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-6);border:1px dashed var(--color-line-strong);border-radius:var(--radius-lg);background:var(--color-surface-alt);text-align:center}.empty-state__title{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--color-ink);margin:0}.empty-state__hint{color:var(--color-ink-muted);max-width:48ch;margin:0}:root[data-theme='dark'] .card,:root[data-theme='auto'] .card{background:var(--color-surface);color:var(--color-ink)}:root[data-theme='dark'] .bg-body-tertiary,:root[data-theme='auto'] .bg-body-tertiary,:root[data-theme='dark'] .bg-body-secondary,:root[data-theme='auto'] .bg-body-secondary,:root[data-theme='dark'] .bg-light,:root[data-theme='auto'] .bg-light,:root[data-theme='dark'] .bg-light-subtle,:root[data-theme='auto'] .bg-light-subtle,:root[data-theme='dark'] .bg-white,:root[data-theme='auto'] .bg-white{background-color:var(--color-surface) !important;color:var(--color-ink)}:root[data-theme='dark'] .text-bg-light,:root[data-theme='auto'] .text-bg-light,:root[data-theme='dark'] .text-bg-light-subtle,:root[data-theme='auto'] .text-bg-light-subtle{background-color:var(--color-surface-alt) !important;color:var(--color-ink) !important}:root[data-theme='dark'] .border,:root[data-theme='auto'] .border,:root[data-theme='dark'] .border-light-subtle,:root[data-theme='auto'] .border-light-subtle{border-color:var(--color-line-strong) !important}:root[data-theme='dark'] .bg-info-subtle,:root[data-theme='auto'] .bg-info-subtle{background-color:var(--color-info-soft) !important;color:var(--color-info) !important}:root[data-theme='dark'] .bg-success-subtle,:root[data-theme='auto'] .bg-success-subtle{background-color:var(--color-success-soft) !important;color:var(--color-success) !important}:root[data-theme='dark'] .bg-warning-subtle,:root[data-theme='auto'] .bg-warning-subtle{background-color:var(--color-warning-soft) !important;color:var(--color-warning) !important}:root[data-theme='dark'] .bg-danger-subtle,:root[data-theme='auto'] .bg-danger-subtle{background-color:var(--color-danger-soft) !important;color:var(--color-danger) !important}:root[data-theme='dark'] .text-secondary,:root[data-theme='auto'] .text-secondary,:root[data-theme='dark'] .text-muted,:root[data-theme='auto'] .text-muted{color:var(--color-ink-muted) !important}:root[data-theme='dark'] .text-dark,:root[data-theme='auto'] .text-dark{color:var(--color-ink) !important}.app-user-badge{background-color:rgba(255,255,255,0.12);color:#fff;border:1px solid rgba(255,255,255,0.22);padding:0.35rem 0.7rem;font-weight:var(--fw-semibold)}:root[data-theme='dark'] .alert-light,:root[data-theme='auto'] .alert-light{background:var(--color-surface-alt);color:var(--color-ink);border-color:var(--color-line-strong)}:root[data-theme='dark'] .table,:root[data-theme='auto'] .table{--bs-table-color:var(--color-ink);--bs-table-bg:transparent;--bs-table-border-color:var(--color-line);--bs-table-striped-color:var(--color-ink);--bs-table-striped-bg:rgba(255,255,255,0.03);color:var(--color-ink)}:root[data-theme='dark'] .table-sticky thead th,:root[data-theme='auto'] .table-sticky thead th{background:var(--color-surface)}:root[data-theme='dark'] .form-control,:root[data-theme='dark'] .form-select,:root[data-theme='auto'] .form-control,:root[data-theme='auto'] .form-select{background-color:var(--color-surface-alt);color:var(--color-ink);border-color:var(--color-line-strong)}.theme-toggle{display:inline-flex;align-items:center;gap:var(--space-1);padding:0.35rem 0.7rem;border-radius:var(--radius-pill);background:rgba(255,255,255,0.10);border:1px solid rgba(255,255,255,0.25);color:#fff;font-size:var(--fs-sm);font-weight:var(--fw-semibold);cursor:pointer;transition:background-color var(--motion-fast) var(--motion-ease)}.theme-toggle:hover{background:rgba(255,255,255,0.18)}.theme-toggle__icon{font-size:1em;line-height:1}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.001ms !important;animation-iteration-count:1 !important;transition-duration:0.001ms !important;scroll-behavior:auto !important}}@media (max-width:991.98px){.hero-panel{padding:var(--space-5)}}@media (max-width:575.98px){.hero-panel{padding:var(--space-4);border-radius:var(--radius-xl)}h1,.display-6{font-size:var(--fs-2xl)}}.app-toast{color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-line-strong) !important;border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:280px}.app-toast .toast-body{color:var(--color-ink);padding:var(--space-3) var(--space-4);font-size:var(--fs-sm)}.app-toast--success{border-left:4px solid var(--color-success) !important}.app-toast--info{border-left:4px solid var(--color-info) !important}.app-toast--warning{border-left:4px solid var(--color-warning) !important}.app-toast--danger{border-left:4px solid var(--color-danger) !important}@keyframes skeletonShimmer{0%{background-position:-200px 0}100%{background-position:calc(200px + 100%) 0}}.skeleton-line{display:block;width:100%;height:0.85rem;border-radius:var(--radius-xs);background-color:var(--color-line);background-image:linear-gradient(90deg,var(--color-line) 0,var(--color-line-strong) 40%,var(--color-line) 80%);background-size:200px 100%;background-repeat:no-repeat;animation:skeletonShimmer 1.2s ease-in-out infinite}.skeleton-row td{padding-block:var(--space-3)}@media (prefers-reduced-motion:reduce){.skeleton-line{animation:none}}.modal-content{border-radius:var(--radius-xl);border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-ink)}.modal-header,.modal-footer{border-color:var(--color-line)}.empty-state__icon{color:var(--color-ink-soft)}:root[data-theme='dark'] .table-light,:root[data-theme='auto'] .table-light,:root[data-theme='dark'] .table-light > *,:root[data-theme='auto'] .table-light > *{--bs-table-bg:var(--color-surface-alt);--bs-table-color:var(--color-ink);--bs-table-border-color:var(--color-line);color:var(--color-ink)}:root[data-theme='dark'] .btn-outline-secondary,:root[data-theme='auto'] .btn-outline-secondary{--bs-btn-color:var(--color-ink);--bs-btn-border-color:var(--color-line-strong);--bs-btn-hover-bg:var(--color-surface-alt);--bs-btn-hover-border-color:var(--color-ink-muted);--bs-btn-hover-color:var(--color-ink);--bs-btn-active-bg:var(--color-surface-alt);--bs-btn-active-border-color:var(--color-ink);--bs-btn-active-color:var(--color-ink);--bs-btn-disabled-color:var(--color-ink-muted);--bs-btn-disabled-border-color:var(--color-line)}:root[data-theme='dark'] .btn-light,:root[data-theme='auto'] .btn-light{--bs-btn-bg:var(--color-surface-alt);--bs-btn-color:var(--color-ink);--bs-btn-border-color:var(--color-line-strong);--bs-btn-hover-bg:var(--color-surface);--bs-btn-hover-color:var(--color-ink);--bs-btn-hover-border-color:var(--color-ink-muted);--bs-btn-active-bg:var(--color-surface);--bs-btn-active-color:var(--color-ink)}.app-navbar .app-nav-dropdown{background:linear-gradient(180deg,rgba(11,27,38,0.98),rgba(8,18,26,0.98));border:1px solid rgba(255,255,255,0.12);border-radius:var(--radius-md);box-shadow:0 18px 40px -18px rgba(0,0,0,0.55);padding:0.4rem;min-width:220px}.app-navbar .app-nav-dropdown .dropdown-item{color:rgba(255,255,255,0.85);border-radius:var(--radius-sm);padding:0.55rem 0.85rem;font-size:0.92rem;font-weight:500;transition:background-color 120ms ease,color 120ms ease}.app-navbar .app-nav-dropdown .dropdown-item:hover,.app-navbar .app-nav-dropdown .dropdown-item:focus-visible{background-color:rgba(255,255,255,0.08);color:#fff;outline:none}.app-navbar .app-nav-dropdown .dropdown-item.active,.app-navbar .app-nav-dropdown .dropdown-item:active{background-color:var(--color-accent,#21b6a8);color:#061013;font-weight:var(--fw-semibold)}.app-navbar .nav-link.dropdown-toggle.active::after,.app-navbar .nav-link.dropdown-toggle:hover::after,.app-navbar .nav-link.dropdown-toggle:focus-visible::after{opacity:1}.app-navbar .nav-link.dropdown-toggle:hover,.app-navbar .nav-link.dropdown-toggle:focus-visible{color:#fff !important}