:root{--clr-primary:#003087;--clr-primary-dark:#00206b;--clr-primary-light:#e6edf7;--clr-accent:#ff6200;--clr-text:#1a1a2e;--clr-text-secondary:#5a5a72;--clr-bg:#f4f5f7;--clr-surface:#fff;--clr-border:#dde1e8;--clr-success:#107c10;--clr-success-bg:#dff6dd;--clr-error:#a4262c;--clr-error-bg:#fde7e9;--shadow-sm:0 1px 3px #00000014, 0 1px 2px #0000000f;--shadow-md:0 4px 12px #00000014, 0 2px 4px #0000000f;--shadow-lg:0 10px 25px #0000001f, 0 4px 8px #00000014;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--font-sans:"Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--clr-bg);color:var(--clr-text);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}.login-page{background:linear-gradient(145deg,#001650 0%,#003087 55%,#004ab3 100%);flex-direction:column;flex:1;justify-content:center;align-items:center;padding:2rem;display:flex;position:relative;overflow:hidden}.login-page:before{content:"";pointer-events:none;background:radial-gradient(at 15% 60%,#ff62002e 0%,#0000 55%),radial-gradient(at 85% 15%,#ffffff0f 0%,#0000 50%);position:absolute;inset:0}.login-card{background:var(--clr-surface);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg);text-align:center;padding:3rem 2.5rem;position:relative}.login-logo{justify-content:center;align-items:center;gap:.75rem;margin-bottom:1.75rem;display:flex}.login-logo__mark{width:48px;height:48px}.login-logo__name{color:var(--clr-primary);letter-spacing:.06em;font-size:2rem;font-weight:800}.login-card__eyebrow{text-transform:uppercase;letter-spacing:.1em;color:var(--clr-accent);margin-bottom:.5rem;font-size:.75rem;font-weight:600}.login-card__title{color:var(--clr-text);margin-bottom:.5rem;font-size:1.5rem;font-weight:700}.login-card__subtitle{color:var(--clr-text-secondary);margin-bottom:.25rem;font-size:.9rem;line-height:1.6}.login-divider{background:var(--clr-border);height:1px;margin:1.75rem 0}.ms-sign-in-btn{border-radius:var(--radius-sm);font-family:var(--font-sans);color:#2d2d2d;cursor:pointer;background:#fff;border:1px solid #8c8c8c;justify-content:center;align-items:center;gap:.75rem;width:100%;padding:.7rem 1.25rem;font-size:.9375rem;font-weight:600;text-decoration:none;transition:background .15s,box-shadow .15s;display:inline-flex}.ms-sign-in-btn:hover:not(:disabled){box-shadow:var(--shadow-sm);background:#f5f5f5}.ms-sign-in-btn:active:not(:disabled){background:#ebebeb}.ms-sign-in-btn:disabled{opacity:.6;cursor:not-allowed}.login-card__footer{color:var(--clr-text-secondary);margin-top:1.75rem;font-size:.8rem;line-height:1.6}.app-header{background:var(--clr-primary);color:#fff;z-index:100;flex-shrink:0;justify-content:space-between;align-items:center;height:64px;padding:0 1.5rem;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #0003}.app-header__brand{color:#fff;align-items:center;gap:.75rem;text-decoration:none;display:flex}.app-header__logo{flex-shrink:0;width:32px;height:32px}.app-header__title{letter-spacing:.06em;font-size:1.125rem;font-weight:800;line-height:1.1}.app-header__subtitle{opacity:.65;letter-spacing:.05em;text-transform:uppercase;font-size:.65rem;font-weight:400}.app-header__user{align-items:center;gap:.875rem;display:flex}.app-header__user-info{text-align:right;display:none}@media (width>=600px){.app-header__user-info{display:block}}.app-header__user-name{font-size:.875rem;font-weight:600;line-height:1.2}.app-header__user-email{opacity:.7;font-size:.75rem;line-height:1.2}.app-header__avatar{-webkit-user-select:none;user-select:none;background:#fff3;border:2px solid #ffffff59;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.8rem;font-weight:700;display:flex}.sign-out-btn{border-radius:var(--radius-sm);color:#fff;font-size:.8125rem;font-family:var(--font-sans);cursor:pointer;white-space:nowrap;background:#ffffff1f;border:1px solid #ffffff47;padding:.375rem .875rem;transition:background .15s}.sign-out-btn:hover{background:#ffffff38}.dashboard{flex-direction:column;flex:1;display:flex}.dashboard__main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem 1.5rem 3rem}.dashboard__hero{margin-bottom:1.75rem}.dashboard__greeting{color:var(--clr-text);margin-bottom:.3rem;font-size:1.625rem;font-weight:700}.dashboard__meta{color:var(--clr-text-secondary);font-size:.875rem}.stats-bar{flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem;display:flex}.stat-chip{background:var(--clr-surface);border:1px solid var(--clr-border);color:var(--clr-text-secondary);box-shadow:var(--shadow-sm);border-radius:100px;align-items:center;gap:.5rem;padding:.4rem 1rem;font-size:.8125rem;display:flex}.stat-chip__value{color:var(--clr-text);font-size:1rem;font-weight:700}.stat-chip--success .stat-chip__value{color:var(--clr-success)}.filter-tabs{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-md);width:fit-content;box-shadow:var(--shadow-sm);gap:.25rem;margin-bottom:1.5rem;padding:.25rem;display:flex}.filter-tab{border-radius:calc(var(--radius-md) - 2px);font-size:.875rem;font-family:var(--font-sans);color:var(--clr-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:.375rem;padding:.4rem 1rem;transition:background .15s,color .15s;display:flex}.filter-tab:hover:not(.filter-tab--active){background:var(--clr-bg);color:var(--clr-text)}.filter-tab--active{background:var(--clr-primary);color:#fff}.filter-tab__count{background:#ffffff38;border-radius:100px;padding:.1rem .45rem;font-size:.75rem;font-weight:700}.filter-tab:not(.filter-tab--active) .filter-tab__count{background:var(--clr-border);color:var(--clr-text-secondary)}.app-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.app-card{background:var(--clr-surface);border:1px solid var(--clr-border);border-radius:var(--radius-lg);flex-direction:column;gap:.875rem;padding:1.25rem;transition:box-shadow .15s,transform .15s;display:flex;position:relative}.app-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.app-card--granted{border-top:3px solid var(--clr-success)}.app-card--denied{border-top:3px solid var(--clr-border);opacity:.75}.app-card__icon-row{justify-content:space-between;align-items:flex-start;display:flex}.app-card__icon{border-radius:var(--radius-md);background:var(--clr-primary-light);width:44px;height:44px;color:var(--clr-primary);flex-shrink:0;justify-content:center;align-items:center;font-size:1.375rem;display:flex}.app-card__category{text-transform:uppercase;letter-spacing:.07em;color:var(--clr-text-secondary);background:var(--clr-bg);border:1px solid var(--clr-border);border-radius:100px;padding:.2rem .55rem;font-size:.6875rem;font-weight:600}.app-card__title{color:var(--clr-text);margin-bottom:.25rem;font-size:.9375rem;font-weight:700;line-height:1.3}.app-card__description{color:var(--clr-text-secondary);font-size:.8125rem;line-height:1.55}.app-card__footer{border-top:1px solid var(--clr-border);justify-content:space-between;align-items:center;gap:.5rem;margin-top:auto;padding-top:.5rem;display:flex}.access-badge{white-space:nowrap;border-radius:100px;align-items:center;gap:.3rem;padding:.25rem .625rem;font-size:.75rem;font-weight:600;display:inline-flex}.access-badge--granted{background:var(--clr-success-bg);color:var(--clr-success)}.access-badge--denied{background:var(--clr-bg);color:var(--clr-text-secondary);border:1px solid var(--clr-border)}.app-card__link{color:var(--clr-primary);white-space:nowrap;font-size:.8125rem;font-weight:600;text-decoration:none;transition:color .15s}.app-card__link:hover{color:var(--clr-primary-dark);text-decoration:underline}.loading-state{color:var(--clr-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:5rem 2rem;font-size:.9375rem;display:flex}.spinner{border:3px solid var(--clr-border);border-top-color:var(--clr-primary);border-radius:50%;width:40px;height:40px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{background:var(--clr-error-bg);border-radius:var(--radius-md);border:1px solid #f1c0c3;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem;padding:1rem 1.25rem;display:flex}.error-banner__icon{flex-shrink:0;margin-top:.05rem;font-size:1.125rem}.error-banner__title{color:var(--clr-error);margin-bottom:.25rem;font-size:.875rem;font-weight:700}.error-banner__message{color:var(--clr-text-secondary);font-size:.8125rem;line-height:1.5}.empty-state{text-align:center;color:var(--clr-text-secondary);padding:4rem 1rem}.empty-state__icon{margin-bottom:.875rem;font-size:3rem}.empty-state__title{color:var(--clr-text);margin-bottom:.5rem;font-size:1.125rem;font-weight:600}
