:root{--ink:#0f2a43;--ink-soft:#163753;--accent:#108be3;--accent-deep:#00497d;--accent-soft:#9ecaff;--sand:#f3f6fa;--paper:#fff;--line:#e6ebf2;--line-strong:#d5dce6;--text:#152033;--muted:#66758a;--canvas:#f8f9ff;--canvas-soft:#fbfbff;--success:#15803d;--success-bg:#ecfdf3;--warn:#b45309;--warn-bg:#fff7ed;--danger:#b91c1c;--danger-bg:#fef2f2;--info:#0369a1;--info-bg:#e0f2fe;--neutral:#475569;--neutral-bg:#f1f5f9;--shadow:0 1px 2px #0f2a430a, 0 8px 24px #0f2a430d;--radius:16px;--font-display:"Oracle Sans", "Segoe UI", sans-serif;--font-body:"Oracle Sans", "Segoe UI", sans-serif;--table-header-bg:#3d82c3;--table-header-fg:#fff;--table-border:#add8e6;--table-row-hover:#3d82c30f}*{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font-body);color:var(--text);background-color:var(--canvas);background-image:none;background-attachment:fixed;margin:0;font-size:.875rem;font-weight:500}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}h1,h2,h3{font-family:var(--font-display);letter-spacing:0;margin:0;font-weight:700}p{margin:0}.muted{color:var(--muted)}.tiny{font-size:.8rem}.eyebrow,.page-kicker{text-transform:uppercase;letter-spacing:.14em;color:var(--accent);margin-bottom:.55rem;font-size:.72rem;font-weight:600}.app-shell{grid-template-columns:228px 1fr;min-height:100vh;display:grid}.sidebar{color:#f8fbff;z-index:30;background:linear-gradient(#0b1f33 0%,#0f2a43 45%,#123552 100%);border-right:1px solid #9ecaff2e;flex-direction:column;gap:.75rem;height:100vh;padding:.75rem 0;display:flex;position:sticky;top:0}.sidebar-mobile-bar{justify-content:flex-end;align-items:center;min-height:52px;padding:.35rem .75rem 0}.sidebar-mobile-bar.mobile-only{display:none}.sidebar-mobile-bar .icon-btn{color:#f8fbff;background:#ffffff14}.nija-brand{--nija-logo-w:168px;flex-flow:column;align-items:flex-start;gap:.2rem;width:max-content;min-width:0;max-width:100%;display:flex}.nija-brand-img{width:var(--nija-logo-w);object-fit:contain;object-position:left center;-webkit-user-select:none;user-select:none;background:0 0;flex-shrink:0;max-width:100%;height:auto;display:block}.nija-brand-subtitle{letter-spacing:.02em;color:#fff;text-transform:none;white-space:nowrap;margin:0;padding:0;font-family:Oracle Sans,Segoe UI,sans-serif;font-size:.82rem;font-weight:700;line-height:1.1}.nija-brand-sidebar,.nija-brand-header{--nija-logo-h:28px;--nija-logo-w:auto;align-items:flex-start;gap:.05rem;height:auto}.nija-brand-sidebar .nija-brand-img,.nija-brand-header .nija-brand-img{width:auto;height:var(--nija-logo-h);max-height:var(--nija-logo-h);object-fit:contain;object-position:left center;align-self:flex-start;max-width:96px;display:block}.nija-brand-sidebar .nija-brand-subtitle,.nija-brand-header .nija-brand-subtitle{letter-spacing:.01em;align-self:flex-start;height:auto;padding-top:0;padding-left:4px;font-size:.65rem;font-weight:700;line-height:1.1;display:block}.nija-brand-header .nija-brand-subtitle{color:var(--ink)}.nija-brand-hero{--nija-logo-w:min(180px, 52vw);flex-direction:column;align-items:center;gap:.35rem}.nija-brand-hero .nija-brand-subtitle{letter-spacing:.02em;color:#fff;text-align:center;font-size:1.05rem;font-weight:700}.login-page .nija-brand-hero{margin-bottom:.35rem}.nija-brand-form{--nija-logo-w:min(140px, 48%);gap:.5rem;margin-bottom:.85rem}.nija-brand-form .nija-brand-subtitle{color:#0f2a43;font-size:.95rem;font-weight:700}.side-nav-search{color:#9ecaffb8;cursor:text;background:0 0;border:0;border-bottom:1px solid #9ecaff24;align-items:center;gap:.55rem;margin:0 0 .45rem;padding:.55rem .9rem;transition:background-color .15s,border-color .15s,color .15s;display:flex;position:relative}.side-nav-search:hover{color:#e8f4ffe6;background:#108be314}.side-nav-search:focus-within{color:#9ecaff;background:#108be31f;border-bottom-color:#108be3a6}.side-nav-search input{color:#f8fbff;width:100%;min-width:0;font:inherit;background:0 0;border:0;outline:none;padding:0;font-size:.84rem;font-weight:500;line-height:1.3}.side-nav-search input::placeholder{color:#9ecaff7a}.side-nav-search input[type=search]::-webkit-search-decoration{appearance:none}.side-nav-search input[type=search]::-webkit-search-cancel-button{appearance:none}.side-nav-search input[type=search]::-webkit-search-results-button{appearance:none}.side-nav-search input[type=search]::-webkit-search-results-decoration{appearance:none}.side-nav-search-clear{color:#9ecaffbf;cursor:pointer;background:0 0;border:0;border-radius:0;flex-shrink:0;place-items:center;width:22px;height:22px;margin:0;padding:0;display:grid}.side-nav-search-clear:hover{color:#fff;background:#108be338}.side-nav-empty{color:#9ecaffb3;margin:.65rem .9rem;font-size:.78rem;line-height:1.4}.side-nav{scrollbar-width:thin;scrollbar-color:#9ecaff59 transparent;flex-direction:column;flex:1;gap:.35rem;margin:0;padding:0;display:flex;overflow:auto}.nav-link-top{margin-bottom:.15rem}.nav-accordion{flex-direction:column;gap:.1rem;display:flex}.nav-accordion-trigger{color:#9ecaffc7;width:100%;font:inherit;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-radius:0;justify-content:space-between;align-items:center;gap:.5rem;margin:0;padding:.45rem .9rem;font-size:.68rem;font-weight:700;transition:background .15s,color .15s;display:flex}.nav-accordion-trigger:hover{color:#e8f4ff;background:#108be31a}.nav-accordion.is-active>.nav-accordion-trigger,.nav-accordion.is-open>.nav-accordion-trigger{color:#9ecaff}.nav-accordion-chevron{opacity:.75;flex-shrink:0;transition:transform .2s}.nav-accordion.is-open .nav-accordion-chevron{transform:rotate(180deg)}.nav-accordion-panel{flex-direction:column;gap:.1rem;padding:.1rem 0 .25rem;display:flex}.nav-accordion-panel[hidden]{display:none}.side-nav::-webkit-scrollbar{width:6px}.side-nav::-webkit-scrollbar-track{background:0 0;margin:.35rem 0}.side-nav::-webkit-scrollbar-thumb{background:linear-gradient(#9ecaff47,#108be373) padding-box padding-box;border:1px solid #0000;border-radius:999px}.side-nav::-webkit-scrollbar-thumb:hover{background:linear-gradient(#9ecaff80,#108be3b3)}.side-nav::-webkit-scrollbar-corner{background:0 0}.nav-link{color:#f8fbffc7;border:0;border-radius:0;align-items:center;gap:.7rem;width:100%;padding:.58rem .9rem;font-size:.86rem;transition:background .2s,color .2s;display:flex}.nav-link:hover{color:#fff;background:#108be324}.nav-link.active{color:#fff;background:linear-gradient(90deg,#108be347,#00497d2e);border-radius:0}.user-chip{align-items:center;gap:.75rem;display:flex}.user-chip small{opacity:.7;display:block}.avatar,.user-avatar{color:#fff;letter-spacing:.02em;-webkit-user-select:none;user-select:none;background:#00497d;border:none;border-radius:999px;flex-shrink:0;place-items:center;width:38px;height:38px;font-size:.8rem;font-weight:600;line-height:1;display:grid}.user-avatar-xs{width:1.5rem;height:1.5rem;font-size:10px}.user-avatar-sm{width:2rem;height:2rem;font-size:.75rem}.user-avatar-md{width:2.5rem;height:2.5rem;font-size:.875rem}.user-avatar-lg{width:3rem;height:3rem;font-size:1rem}.user-avatar-xl{width:5rem;height:5rem;font-size:1.5rem}.avatar.lg{width:72px;height:72px;font-size:1.3rem}.main-area{background:var(--canvas);flex-direction:column;min-width:0;min-height:100vh;display:flex}.topbar{z-index:25;-webkit-backdrop-filter:blur(14px)saturate(1.15);box-sizing:border-box;background:#ffffffdb;border-bottom:1px solid #e6ebf2f2;justify-content:space-between;align-items:center;gap:.75rem;height:48px;min-height:48px;padding:.35rem 1.25rem;display:flex;position:sticky;top:0}.topbar-left,.topbar-actions{align-items:center;gap:.75rem;min-width:0;display:flex}.topbar-copy{min-width:0}.topbar-title{letter-spacing:-.02em;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.05rem;font-weight:700;line-height:1.2;overflow:hidden}.topbar-subtitle{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:.15rem 0 0;font-size:.78rem;font-weight:500;overflow:hidden}.topbar-divider{background:var(--line);width:1px;height:22px}.topbar-icon-btn{width:2.25rem;height:2.25rem;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;transition:background-color .15s,color .15s;display:inline-grid;position:relative}.topbar-icon-btn svg{flex-shrink:0;display:block}.topbar-icon-btn:hover,.topbar-icon-btn.is-open{background:var(--neutral-bg);color:var(--accent-deep)}.topbar-profile-wrap,.notif-wrap{position:relative}.topbar-profile{cursor:pointer;color:var(--text);background:0 0;border:0;border-radius:10px;align-items:center;gap:.6rem;padding:.2rem .35rem .2rem .2rem;transition:background-color .15s;display:inline-flex}.topbar-profile:hover,.topbar-profile.is-open{background:var(--neutral-bg)}.topbar-profile .avatar,.topbar-profile .user-avatar{border:0;width:2rem;height:2rem;font-size:.75rem}.topbar-profile-meta{text-align:left;min-width:0;line-height:1.15;display:grid}.topbar-profile-meta strong{white-space:nowrap;font-size:.84rem;font-weight:650}.topbar-profile-meta small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:.72rem;overflow:hidden}.topbar-profile-icon{color:var(--muted);flex-shrink:0;transition:transform .15s}.topbar-profile.is-open .topbar-profile-icon{transform:rotate(180deg)}.topbar-menu{z-index:40;border:1px solid var(--line);background:#fff;border-radius:12px;min-width:12.5rem;padding:.35rem;position:absolute;top:calc(100% + .45rem);right:0;box-shadow:0 12px 28px #0f2a431f}.topbar-menu-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.2rem;padding:.45rem .55rem .65rem;display:flex}.topbar-menu-head strong{font-size:.88rem}.topbar-menu-head span{color:var(--muted);font-size:.72rem;font-weight:600}.topbar-profile-menu{gap:.1rem;min-width:11.5rem;display:grid}.topbar-profile-menu button{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:.55rem;padding:.65rem .7rem;font-size:.84rem;font-weight:600;display:flex}.topbar-profile-menu button:hover{background:var(--neutral-bg)}.topbar-profile-menu button.is-danger{color:var(--danger)}.topbar-profile-menu button.is-danger:hover{background:var(--danger-bg)}@media (width<=720px){.topbar{padding:.25rem .85rem}.topbar-profile-meta,.topbar-subtitle,.topbar-divider{display:none}}.page-content{background:var(--canvas);flex:1;padding:1.1rem 1.35rem 2rem}.stack{gap:1.25rem;display:grid}.page-header{border-bottom:0;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:1rem;padding-bottom:.15rem;display:flex}.page-header h1{color:var(--ink);font-size:clamp(1.7rem,2.4vw,2.15rem);font-weight:700;line-height:1.15}.page-header p{color:var(--muted);max-width:48rem;margin-top:.4rem}.dash-hero{border-radius:calc(var(--radius) + 2px);color:#fff;background:linear-gradient(135deg,#00497df5,#108be3e0),#00497d;flex-wrap:wrap;justify-content:space-between;align-items:stretch;gap:1.25rem;padding:1.35rem 1.4rem;display:flex;box-shadow:0 18px 40px #00497d38}.dash-hero h1{margin-bottom:.35rem;font-size:clamp(1.7rem,2.6vw,2.25rem)}.dash-hero>div>p:last-child{color:#ffffffdb;max-width:40rem}.dash-hero .page-kicker{color:#9ecafff2}.dash-hero-meta{align-items:stretch;gap:.75rem;display:flex}.dash-hero-meta>div{background:#ffffff1f;border:1px solid #ffffff2e;border-radius:12px;gap:.25rem;min-width:110px;padding:.85rem 1rem;display:grid}.dash-hero-meta span{letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-size:.72rem}.dash-hero-meta strong{font-size:1.55rem;font-weight:700}.page-actions,.row-actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.row-actions.compact{gap:.35rem}.row-crud-icons{align-items:center;gap:.35rem;display:inline-flex}.btn-icon-action{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.375rem;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.btn-icon-edit{color:#0369a1;background:#e0f2fe;border-color:#bae6fd}.btn-icon-edit:hover{color:#0c4a6e;background:#bae6fd;border-color:#7dd3fc}.btn-icon-delete{color:#dc2626;background:#fef2f2;border-color:#fecaca}.btn-icon-delete:hover{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.btn{cursor:pointer;letter-spacing:.01em;box-shadow:none;border:1px solid #0000;border-radius:.375rem;justify-content:center;align-items:center;gap:.4rem;padding:.5rem .95rem;font-size:.875rem;font-weight:600;line-height:1.25;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.btn:disabled,.btn.disabled{opacity:1;cursor:not-allowed;background:var(--neutral-bg);color:var(--muted);border-color:var(--line);box-shadow:none}.btn-primary{background:var(--accent-deep);color:#fff;box-shadow:none;border-color:#0000}.btn-primary:hover:not(:disabled){color:#fff;background:#003a64}.btn-primary:active:not(:disabled){background:#002f52}.btn-ghost{background:var(--paper);color:var(--ink);border:1px solid var(--line-strong)}.btn-ghost:hover:not(:disabled){color:var(--accent-deep);background:#108be30f;border-color:#108be347}.sidebar .btn-ghost{color:#f8fbff;background:0 0;border-color:#ffffff40}.sidebar .btn-ghost:hover:not(:disabled){color:#fff;background:#108be324;border-color:#9ecaff66}.btn-sm{border-radius:.375rem;padding:.3rem .65rem;font-size:.8125rem}.btn-block{justify-content:center;width:100%}.icon-btn{border:1px solid var(--line);background:var(--paper);cursor:pointer;width:40px;height:40px;color:var(--ink);border-radius:.375rem;place-items:center;display:grid}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.9rem;display:grid}.stat-card,.panel,.project-card,.public-card,.demo-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-card{border-top:3px solid var(--accent-deep);color:inherit;padding:1rem 1.05rem;text-decoration:none;animation:.4s both rise;display:block;position:relative;overflow:hidden}a.stat-card.is-clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}a.stat-card.is-clickable:hover{border-color:#108be359;transform:translateY(-1px);box-shadow:0 6px 18px #00497d1a}a.stat-card.is-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stat-card:after{content:"";background:#108be30f;border-radius:50%;width:90px;height:90px;position:absolute;inset:auto -20% -40% auto}.stat-card-primary{border-top-color:var(--accent)}.stat-card-success{border-top-color:var(--success)}.stat-card-warn{border-top-color:var(--warn)}.stat-card-danger{border-top-color:var(--danger)}.stat-card:nth-child(2){animation-delay:40ms}.stat-card:nth-child(3){animation-delay:80ms}.stat-card:nth-child(4){animation-delay:.12s}.stat-card-top{z-index:1;justify-content:space-between;gap:.5rem;display:flex;position:relative}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.74rem;font-weight:600}.stat-icon{color:var(--accent);background:#108be31a;border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.stat-value{font-family:var(--font-display);color:var(--ink);z-index:1;margin-top:.55rem;font-size:1.55rem;line-height:1.1;position:relative}.stat-hint{color:var(--muted);z-index:1;margin-top:.4rem;font-size:.78rem;position:relative}.panel{padding:1.05rem;overflow:auto}:is(.panel:has(>.data-table:first-child),.panel:has(>.panel-head:first-child+.data-table),.panel:has(.data-table)){border-radius:0}:is(.panel:has(>.data-table:first-child),.panel:has(>.panel-head:first-child+.data-table)){box-shadow:none;background:0 0;border:none;padding:0;overflow:hidden}.panel:has(>.panel-head:first-child+.data-table)>.panel-head{background:0 0;border-bottom:none;margin:0;padding:.45rem 0 .55rem}.panel-grid .panel{overflow-x:auto}.panel-grid .data-table{table-layout:auto;min-width:100%}.panel-grid .data-table th,.panel-grid .data-table td{text-overflow:ellipsis;white-space:nowrap;padding:.28rem .55rem;overflow:hidden}.panel-grid .data-table td:has(.badge){text-overflow:unset;overflow:visible}.panel-grid .data-table .badge{width:max-content;max-width:none;text-overflow:unset;vertical-align:middle;display:inline-flex;overflow:visible}.panel.soft{background:linear-gradient(#f8fbff,#fff);border:1px solid #108be329}.panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;margin-bottom:.85rem;padding-bottom:.55rem;display:flex}.panel-head h2{color:var(--ink);font-size:1.05rem;font-weight:700}.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.chart-panel{min-height:320px}.chart-panel-tall{min-height:360px}.chart-head h2{font-size:1.15rem}.chart-subtitle{color:var(--muted);margin-top:.25rem;font-size:.82rem}.chart-body{height:260px}.chart-panel-tall .chart-body{height:290px}.panel-grid,.report-grid,.project-grid,.profile-layout{gap:1rem;display:grid}.panel-grid,.report-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.project-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.profile-layout{grid-template-columns:1.1fr 1fr}.project-card{border-top:3px solid var(--accent-deep);padding:1.2rem;transition:border-color .2s,transform .2s}.project-card:hover{border-top-color:var(--accent);transform:translateY(-2px)}.project-card-clickable{cursor:pointer}.project-card-clickable:focus-visible{outline-offset:2px;outline:2px solid #108be373}.project-card-top{justify-content:space-between;margin-bottom:.8rem;display:flex}.project-card h2{color:var(--ink);margin-bottom:.45rem;font-size:1.45rem}.project-card p{color:var(--muted);margin-bottom:1rem}.code-pill{letter-spacing:.08em;background:#1a274414;border-radius:10px;padding:.2rem .55rem;font-size:.75rem;font-weight:600;display:inline-flex}.meta-list{gap:.55rem;display:grid}.meta-list.stacked div,.meta-list div{border-top:1px solid var(--line);justify-content:space-between;gap:1rem;padding-top:.45rem;display:flex}.meta-list dt{color:var(--muted)}.meta-list dd{margin:0;font-weight:500}.data-table{border-collapse:separate;border-spacing:0;background:var(--paper);border:1px solid var(--table-border);width:100%;min-width:720px;font-size:.875rem}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--table-border);border-right:1px solid var(--table-border);vertical-align:middle;color:var(--text);padding:.28rem .65rem;line-height:1.25}.data-table th:last-child,.data-table td:last-child{border-right:none}.data-table tbody tr:last-child td{border-bottom:none}.data-table th{color:var(--table-header-fg);text-transform:none;letter-spacing:.01em;background:var(--table-header-bg);white-space:nowrap;padding-top:.32rem;padding-bottom:.32rem;font-size:.72rem;font-weight:600}.data-table tbody tr{background:var(--paper);transition:background-color .15s}.data-table tbody tr:hover{background:var(--table-row-hover)}.data-table tbody tr.data-table-row-clickable{cursor:pointer}.data-table tbody tr.data-table-row-clickable:focus-visible{outline-offset:-2px;outline:2px solid #108be373}.cell-sub{color:var(--muted);margin-top:.05rem;font-size:.72rem;font-weight:500;line-height:1.2}.user-cell{align-items:center;gap:.5rem;min-width:0;display:flex}.data-table .avatar,.data-table .user-avatar{width:2rem;height:2rem;font-size:.75rem}.data-table .btn-icon-action{width:1.65rem;height:1.65rem}.data-table .badge{min-height:1.35rem;padding:.15rem .55rem;font-size:.6875rem;line-height:1.2}.data-table .btn-sm{padding:.18rem .5rem;font-size:.75rem}.user-cell strong{color:var(--ink);display:block}.filter-inline{color:var(--muted);align-items:center;gap:.45rem;margin:0;font-size:.82rem;font-weight:600;display:inline-flex}.filter-inline input{width:auto;min-width:0}.empty-cell{text-align:center;color:var(--muted);border-right:none!important;padding:2rem!important}.badge{box-sizing:border-box;white-space:nowrap;text-align:center;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;width:max-content;max-width:none;min-height:1.4rem;padding:.2rem .55rem;font-size:.6875rem;font-weight:600;line-height:1.25;display:inline-flex;overflow:visible}.badge-success{background:var(--success-bg);color:var(--success);border-color:#bbf7d0}.badge-warn{background:var(--warn-bg);color:var(--warn);border-color:#fed7aa}.badge-danger{background:var(--danger-bg);color:var(--danger);border-color:#fecaca}.badge-info{background:var(--info-bg);color:var(--info);border-color:#bae6fd}.badge-neutral{background:var(--neutral-bg);color:var(--neutral);border-color:#e2e8f0}.toolbar{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.toolbar:has(.chip){border:0;border-bottom:1px solid var(--line);background:0 0;border-radius:0;flex-wrap:wrap;align-items:flex-end;gap:.25rem 1.25rem;width:100%;max-width:100%;padding:0 .15rem;display:flex}.chip{color:var(--muted);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:0;margin:0 0 -1px;padding:.65rem .15rem;font-size:.875rem;font-weight:600;line-height:1.25;text-decoration:none;transition:color .15s;position:relative}.chip:after{content:"";background:0 0;border-radius:999px;height:2px;transition:transform .18s,background-color .18s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(.35)}.chip:hover{color:var(--ink);background:0 0}.chip:hover:not(.active):after{background:#66758a73;transform:scaleX(1)}.chip.active{color:var(--accent);box-shadow:none;background:0 0;border:0}.chip.active:after{background:var(--accent);transform:scaleX(1)}.chip.active:hover{color:var(--accent);background:0 0}.search-input,label input,label select,label textarea,.toolbar select{border:1px solid var(--line-strong);width:100%;color:var(--text);box-shadow:none;background:#fff;border-radius:.375rem;outline:none;padding:.55rem .8rem;transition:border-color .15s,box-shadow .15s}.search-input:focus,label input:focus,label select:focus,label textarea:focus,.toolbar select:focus{border-color:#108be38c;box-shadow:0 0 0 3px #108be31f}.search-input,.toolbar select{flex:1;width:auto;min-width:260px;max-width:420px}label{color:var(--muted);gap:.4rem;font-size:.88rem;display:grid}label:has(>.field-label):has(>:is(input,select,textarea)[required]){flex-direction:column;gap:.4rem;display:flex}label:has(>.field-label):has(>:is(input,select,textarea)[required])>.field-label:after{content:" *";color:#dc2626;font-weight:700}label:has(>:is(input,select,textarea)[required]):not(:has(>.field-label)){grid-template-columns:max-content max-content minmax(0,1fr);gap:.4rem .2rem;width:100%;min-width:0;display:grid}label:has(>:is(input,select,textarea)[required]):not(:has(>.field-label)):after{content:"*";color:#dc2626;grid-area:1/2;font-weight:700;line-height:1.25}label:has(>:is(input,select,textarea)[required]):not(:has(>.field-label))>:is(input,select,textarea){grid-column:1/-1;width:100%;min-width:0}.password-panel-copy{margin:.35rem 0 1rem}.password-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;max-width:720px;display:grid}.password-form .span-2{grid-column:span 2}.password-form .field-label{font-size:inherit;font-weight:inherit;color:inherit;display:inline}@media (width<=640px){.password-form{grid-template-columns:1fr}.password-form .span-2{grid-column:auto}}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:.9rem 1rem;display:grid}.form-view>label{color:#000;font-weight:700}.form-view label input,.form-view label select,.form-view label textarea{box-shadow:none;color:#000;-webkit-text-fill-color:#000;opacity:1;appearance:none;pointer-events:none;background:0 0;border:none;border-radius:0;padding-left:0;padding-right:0;font-weight:400}.form-view .field-value{color:#000;align-items:center;min-height:2.2rem;font-weight:400;display:flex}.form-view label input:focus,.form-view label select:focus,.form-view label textarea:focus{box-shadow:none;border:none}.form-view label:has(>:is(input,select,textarea)[required]):after{content:none}.form-view label select{background-image:none}.form-grid>label,.form-grid>.span-2,.form-grid>.row-actions,.form-grid>.form-actions{min-width:0}.span-2{grid-column:span 2}.checkbox-label{align-items:center;gap:.55rem;margin-top:1.6rem;display:flex}.checkbox-label:has([required]){grid-template-columns:none;display:flex}.checkbox-label:has([required]):after{content:none}.form-error{color:var(--danger);background:var(--danger-bg);border:1px solid #e0c4c4;border-radius:10px;padding:.65rem .8rem}.form-success{color:var(--success);background:var(--success-bg);border:1px solid #bbf7d0;border-radius:10px;padding:.65rem .8rem}.form-actions{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:.65rem;margin-top:.35rem;padding-top:.15rem;display:flex}.form-grid>.form-actions{margin-top:.25rem}.banner{background:var(--info-bg);color:var(--info);border:1px solid #c5d5e0;border-radius:10px;padding:.8rem 1rem}.modal-backdrop{z-index:1000;background:#1620337a;place-items:center;padding:1rem;animation:.2s fade;display:grid;position:fixed;inset:0}.modal-panel{background:var(--paper);width:min(560px,100%);box-shadow:var(--shadow);border:1px solid var(--line);border-radius:10px;max-height:90vh;overflow:auto}.modal-wide{width:min(760px,100%)}.modal-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.1rem;display:flex}.modal-header-actions{flex-shrink:0;align-items:center;gap:.35rem;display:inline-flex}.modal-icon-btn{cursor:pointer;background:0 0;border:none;border-radius:.375rem;place-items:center;width:36px;height:36px;padding:0;display:grid}.modal-icon-btn svg{flex-shrink:0;width:18px;height:18px}.modal-icon-edit svg{width:15px;height:15px}.modal-icon-btn:hover{background:#0f2a430f}.modal-icon-edit{color:#ea580c}.modal-icon-edit:hover{color:#c2410c;background:var(--warn-bg)}.modal-icon-close{color:#dc2626}.modal-icon-close:hover{color:#b91c1c;background:var(--danger-bg)}.modal-body{padding:1.1rem}.notif-icon{justify-content:center;align-items:center;width:1.125rem;height:1.125rem;line-height:0;display:inline-flex;position:relative}.notif-dot{z-index:2;box-sizing:border-box;background:var(--accent);color:#fff;border:1.5px solid var(--paper);letter-spacing:0;font-variant-numeric:tabular-nums;pointer-events:none;border-radius:999px;justify-content:center;align-items:center;min-width:1.05rem;height:1.05rem;padding:0 .25rem;font-size:.6rem;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:-.4rem;right:-.5rem}.notif-panel{width:min(320px,84vw)}.notif-list{max-height:280px;overflow:auto}.notif-item{border-radius:8px;padding:.65rem .55rem}.notif-item+.notif-item{margin-top:.1rem}.notif-item.unread{background:#108be30f}.notif-item.unread strong{color:var(--accent-deep)}.notif-item p{color:var(--muted);margin:.18rem 0;font-size:.82rem}.notif-item small{color:var(--muted)}body:has(.login-page){height:100dvh;overflow:hidden}.login-page{--login-text:#f8fafc;--login-text-muted:#f8fafcb8;--login-accent:#7cc4ff;--login-glass-bg:#ffffff1f;--login-glass-bg-strong:#ffffff29;--login-glass-border:#ffffff38;--login-glass-blur:blur(20px) saturate(1.45);--login-input-bg:#0a0e1480;--login-input-border:#404752;height:100dvh;min-height:100dvh;max-height:100dvh;color:var(--login-text);background:#000;flex-direction:column;display:flex;position:relative;overflow:hidden}.login-page-bg{z-index:0;pointer-events:none;background-color:#000;background-image:linear-gradient(#000000b8,#000000b8),url(/login-bg-real-estate.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0}.login-page-topbar{z-index:4;position:absolute;top:1.15rem;left:50%;transform:translate(-50%)}.login-brand-badge{border:1px solid var(--login-glass-border);background:var(--login-glass-bg);-webkit-backdrop-filter:var(--login-glass-blur);color:var(--login-text);white-space:nowrap;pointer-events:none;border-radius:9999px;align-items:center;gap:.5rem;padding:.4rem .95rem;font-size:.75rem;font-weight:500;display:inline-flex;box-shadow:0 10px 28px #00000047}.login-brand-badge svg{color:var(--login-accent)}.login-page-shell{z-index:2;flex:1;justify-content:center;align-items:center;width:100%;min-height:0;margin:0 auto;padding:2rem clamp(1rem,3vw,2.5rem) 3rem;display:flex;position:relative;overflow:auto}.login-card{background:var(--login-glass-bg);border:1px solid var(--login-glass-border);width:min(520px,100%);-webkit-backdrop-filter:var(--login-glass-blur);border-radius:1rem;flex-direction:column;justify-content:center;padding:1.75rem 1.85rem;display:flex;box-shadow:0 24px 56px #0006,inset 0 1px #ffffff1f}.login-card-brand{justify-content:center;margin-bottom:1rem;display:flex}.login-card-brand .nija-brand{align-items:center}.login-card-brand .nija-brand-hero{--nija-logo-w:min(180px, 48vw)}.login-card-brand .nija-brand-hero .nija-brand-subtitle{font-size:clamp(.95rem,3.2vw,1.1rem)}.login-card-header{text-align:center;margin-bottom:1rem}.login-card-title{letter-spacing:-.02em;color:#fff;margin:0 0 .35rem;font-size:1.55rem;font-weight:700}.login-card-subtitle{color:#ffffffad;margin:0;font-size:.875rem}.login-mode-toggle{background:#ffffff0f;border:1px solid #ffffff24;border-radius:.75rem;grid-template-columns:1fr 1fr;gap:.35rem;margin-bottom:1rem;padding:.3rem;display:grid}.login-mode-toggle-btn{appearance:none;color:#ffffffb3;cursor:pointer;background:0 0;border:0;border-radius:.55rem;padding:.55rem .75rem;font-size:.8125rem;font-weight:600;line-height:1.2;transition:background-color .15s,color .15s}.login-mode-toggle-btn:hover:not(:disabled){color:#fff;background:#ffffff14}.login-mode-toggle-btn.is-active{color:#0f172a;background:#fff}.login-mode-toggle-btn:disabled{opacity:.6;cursor:default}.login-card form{gap:.95rem;display:grid}.login-field{gap:.4rem;display:grid}.login-field-row{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.login-field-label{color:#ffffffc7;align-items:baseline;gap:.2rem;font-size:.8125rem;font-weight:600;display:inline-flex}.login-input-wrap{display:block;position:relative}.login-input-icon{pointer-events:none;color:#ffffff8c;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}.login-input{background:var(--login-input-bg);border:1px solid var(--login-input-border);color:#fff;width:100%;min-height:2.85rem;box-shadow:none;border-radius:.7rem;padding:.65rem .9rem .65rem 2.55rem;font-size:.875rem}.login-input-password{padding-right:2.75rem}.login-input::placeholder{color:#fff6}.login-input:focus{border-color:#5a6575;outline:none}.login-input:disabled{opacity:.65}.login-password-toggle{color:#ffffff8c;cursor:pointer;background:0 0;border:0;border-radius:.4rem;justify-content:center;align-items:center;width:2rem;height:2rem;display:inline-flex;position:absolute;top:50%;right:.55rem;transform:translateY(-50%)}.login-password-toggle:hover:not(:disabled){color:#fff;background:#ffffff14}.login-forgot-link{color:#fff;cursor:pointer;background:0 0;border:0;padding:0;font-size:.8125rem;font-weight:600}.login-otp-timer{font-variant-numeric:tabular-nums;color:#ffffffb8;font-size:.78rem}.login-otp-timer.is-expired{color:#fca5a5}.login-forgot-link:hover:not(:disabled){color:#ffffffd9}.login-alert{background:#202124;border:1px solid #ffffff1f;border-radius:.65rem;padding:.75rem .9rem;font-size:.84rem;line-height:1.4}.login-error-alert{color:#f87171}.login-info-alert{color:#e5e7eb}.login-submit-btn{background:var(--accent-deep);color:#fff;cursor:pointer;width:100%;min-height:2.75rem;box-shadow:none;border:0;border-radius:.375rem;justify-content:center;align-items:center;gap:.5rem;font-size:.9375rem;font-weight:600;display:inline-flex}.login-submit-btn:hover:not(:disabled){background:#003a64}.login-submit-btn:disabled{background:var(--neutral-bg);color:var(--muted);cursor:not-allowed}.login-page-copyright{z-index:2;color:#ffffff9e;text-align:center;white-space:nowrap;justify-content:center;align-items:center;gap:.45rem;font-size:.75rem;line-height:1.35;display:inline-flex;position:absolute;bottom:.5rem;left:50%;transform:translate(-50%)}.login-page-copyright-text:after{content:"·";opacity:.55;margin-left:.45rem}.login-page-legal-links{align-items:center;gap:.45rem;display:inline-flex}.login-page-legal-links a{color:inherit;text-decoration:none}.login-page-legal-links a:hover{color:#fff}.public-page{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.public-card{width:min(760px,100%);padding:1.5rem}.profile-hero{align-items:center;gap:1rem;display:flex}.mobile-only,.sidebar-backdrop{display:none}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes drift{0%{transform:translate(0)}to{transform:translate(-40px)}}@media (width<=1100px){.chart-grid{grid-template-columns:1fr}.dash-hero-meta{width:100%}}@media (width<=980px){.app-shell{grid-template-columns:1fr}.sidebar{width:min(300px,86vw);transition:transform .25s;position:fixed;inset:0 auto 0 0;transform:translate(-105%)}.sidebar.open{transform:translate(0)}.sidebar-backdrop{z-index:20;background:#00000059;display:block;position:fixed;inset:0}.mobile-only{display:grid}.sidebar-mobile-bar.mobile-only{display:flex}.form-grid,.profile-layout{grid-template-columns:1fr}.span-2{grid-column:span 1}}.loading-screen{background:radial-gradient(ellipse 70% 50% at 50% 0%, #108be31f, transparent 60%), var(--canvas);place-items:center;min-height:100vh;padding:1.5rem;display:grid}.loading-screen-card{background:var(--paper);border:1px solid var(--line);width:min(100%,22rem);box-shadow:var(--shadow);justify-items:center;gap:1.35rem;padding:2rem 1.5rem 1.75rem;animation:.45s both loading-card-in;display:grid}.loading-orbit{width:56px;height:56px;position:relative}.loading-orbit-ring{border:3px solid #108be32e;border-top-color:var(--accent);border-right-color:var(--accent-deep);border-radius:50%;animation:.85s linear infinite loading-spin;position:absolute;inset:0}.loading-orbit-dot{background:var(--accent);border-radius:50%;width:10px;height:10px;margin:-5px 0 0 -5px;animation:1.2s ease-in-out infinite loading-pulse;position:absolute;top:50%;left:50%;box-shadow:0 0 0 6px #108be31f}.loading-screen-label{color:var(--ink);letter-spacing:.02em;align-items:center;gap:.15rem;margin:0;font-size:.95rem;font-weight:600;display:inline-flex}.loading-dots{gap:.18rem;margin-left:.2rem;display:inline-flex}.loading-dots span{background:var(--accent);border-radius:50%;width:4px;height:4px;animation:1.2s ease-in-out infinite loading-dot}.loading-dots span:nth-child(2){animation-delay:.15s}.loading-dots span:nth-child(3){animation-delay:.3s}@keyframes loading-spin{to{transform:rotate(360deg)}}@keyframes loading-pulse{0%,to{opacity:.7;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}@keyframes loading-dot{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}@keyframes loading-card-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}
