/* Portal-specific structure only.
   Shared geometry (header, marks, controls, cards, tables, feedback and
   footer) belongs to design-system/alpnexum-platform.css.  Do not re-add it
   here: Portal must consume the same components as Time and future modules. */

:root { color: var(--alx-ink); background: var(--alx-bg); font-size: var(--alx-body-size); }
* { box-sizing: border-box; }
body { min-width: 0; margin: 0; background: var(--alx-bg); color: var(--alx-ink); font-family: var(--alx-font-sans); }
a { color: inherit; }
.portal-home { background: linear-gradient(135deg, #f5f8fc 0%, #eef4fa 55%, #e6f0f7 100%); }

.login-content,
.dashboard-content,
.user-content { width: min(100%, var(--alx-content-max)); margin-inline: auto; padding-inline: var(--alx-page-gutter); }
.dashboard-content { padding-bottom: 40px; }
.user-content { min-height: 100vh; padding-bottom: 40px; }
.admin-topbar { margin: 0; }

.page-heading { padding: 32px 0 24px; border-bottom: 1px solid var(--alx-line); }
.page-heading h1 { margin: 0 0 8px; color: var(--alx-ink); font-size: var(--alx-title-size); font-weight: 700; letter-spacing: -.04em; line-height: 1.1; }
.page-heading p { margin: 0; color: var(--alx-muted); }

.actions,
.operation-inline-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 16px 0; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--alx-dashboard-grid-gap); padding: 16px 0; }
.grid.forms { grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); align-items: start; }
.grid.compact { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.admin-folds { display: grid; gap: 16px; margin: 24px 0; }
.admin-fold { overflow: hidden; border: 1px solid var(--alx-card-border); border-radius: var(--alx-card-radius); background: var(--alx-card); box-shadow: 0 8px 24px #1e42630d; }
.admin-fold > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 22px; color: var(--alx-ink); font-size: var(--alx-card-title-size); font-weight: 800; cursor: pointer; list-style: none; }
.admin-fold > summary::-webkit-details-marker { display: none; }
.admin-fold > summary::after { flex: 0 0 auto; color: var(--alx-muted); content: "+"; font-size: 24px; line-height: 1; }
.admin-fold[open] > summary { border-bottom: 1px solid var(--alx-line); }
.admin-fold[open] > summary::after { content: "−"; }
.admin-fold-summary-note { margin-left: auto; color: var(--alx-muted); font-size: var(--alx-body-size); font-weight: 500; }
.admin-fold-body { padding: 0 18px 18px; }
.admin-fold-body > .grid { padding-bottom: 0; }
.admin-fold-body > article { margin-top: 18px; }
.admin-fold-body > section { margin-top: 18px; }

.admin-page article,
.admin-page .tile,
.user-shell article,
.user-shell .tile {
  border: 1px solid var(--alx-card-border);
  border-radius: var(--alx-card-radius);
  background: var(--alx-card);
  box-shadow: 0 8px 24px #1e42630d;
}
.admin-page article,
.user-shell article { padding: var(--alx-card-padding); }
.tile { display: block; padding: var(--alx-card-padding); color: inherit; text-decoration: none; }
.tile:hover { border-color: var(--alx-control-border); }
.tile h3 { margin: 0 0 8px; color: var(--alx-ink); }
.tile p { margin: 0; color: var(--alx-muted); }

.admin-page h2,
.user-shell h2 { margin: 24px 0 0; color: var(--alx-ink); font-size: var(--alx-section-title-size); font-weight: 700; letter-spacing: -.02em; line-height: 1.2; }
.admin-page article h2,
.user-shell article h2 { margin-top: 0; font-size: var(--alx-card-title-size); }
.admin-page h3,
.user-shell h3 { color: var(--alx-ink); font-size: var(--alx-card-title-size); }

.admin-page form,
.user-shell form { display: grid; gap: 0; }
.admin-page label,
.user-shell label { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 12px; align-items: center; padding: 10px; border-bottom: 1px solid var(--alx-line); color: var(--alx-ink); font-size: var(--alx-field-label-size); font-weight: 700; }
.admin-page input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.admin-page select,
.admin-page textarea,
.user-shell input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.user-shell select,
.user-shell textarea { box-sizing: border-box; min-height: var(--alx-button-height); max-width: 100%; padding: 8px 10px; border: 1px solid var(--alx-control-border); border-radius: var(--alx-control-radius); background: var(--alx-card); color: var(--alx-ink); font: inherit; }
.admin-page input[type="checkbox"],
.user-shell input[type="checkbox"] { width: auto; min-height: auto; justify-self: start; }
.forms form > p { margin: 10px; color: var(--alx-muted); line-height: 1.4; }
.forms form > .actions { padding: 10px; margin: 0; }

.button,
button:not(.alx-logout) { display: inline-flex; align-items: center; justify-content: center; min-height: var(--alx-button-height); padding: 0 14px; border: 0; border-radius: var(--alx-control-radius); background: var(--alx-primary-gradient); box-shadow: var(--alx-primary-shadow); color: #fff; font: inherit; font-size: var(--alx-button-size); font-weight: 700; line-height: 1; text-decoration: none; cursor: pointer; }
.button:hover,
button:not(.alx-logout):hover { background: var(--alx-primary-gradient-hover); }
.secondary { background: #667085; box-shadow: none; }
.alx-product-header .secondary.alx-logout,
.alx-product-header .account-link:hover { background: transparent; color: var(--alx-blue); text-decoration: none; }
.notice { margin: 15px 0; padding: var(--alx-state-padding); border: 1px solid #bfe6d0; border-radius: var(--alx-control-radius); background: var(--alx-success-background); color: var(--alx-success-ink); }
.notice.error { border-color: #f1c5c1; background: var(--alx-error-background); color: var(--alx-error-ink); }

.table { overflow-x: auto; border: 1px solid var(--alx-card-border); border-radius: var(--alx-card-radius); background: var(--alx-card); box-shadow: 0 8px 24px #1e42630d; }
.table table { width: 100%; border-collapse: collapse; color: var(--alx-ink); }
.table th,
.table td { padding: 12px; border-bottom: 1px solid var(--alx-line); text-align: left; vertical-align: top; }
.table th { background: #edf4fa; color: #315d75; font-size: 13px; font-weight: 700; }
.table tr:last-child td { border-bottom: 0; }
.eyebrow { color: #39799d; font-size: var(--alx-eyebrow-size); font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
small { color: var(--alx-muted); }
.empty-card { padding: var(--alx-state-padding); border: 1px dashed var(--alx-control-border); border-radius: var(--alx-card-radius); background: var(--alx-card); color: var(--alx-muted); }

/* Portal administration has a structural sidebar; it intentionally consumes
   common tokens and has no independent scrollbar. */
.admin-workspace { display: grid; grid-template-columns: 272px minmax(0, 1fr); min-height: calc(100vh - var(--alx-header-height)); background: var(--alx-bg); }
.platform-admin-header { padding-inline: 28px; background: var(--alx-card); }
.admin-sidebar { min-height: 100vh; padding-top: 12px; overflow: visible; background: #f8fafc; border-right: 1px solid var(--alx-line); box-shadow: 12px 0 28px rgba(34, 66, 105, .035); }
.sidebar-group { margin: 0 12px 18px; }
.sidebar-group h2 { margin: 0; padding: 11px 14px; border-radius: 10px 10px 0 0; background: #3f829d; color: #fff; font-size: 12px; font-weight: 800; }
.sidebar-group a { display: block; padding: 10px 14px; border-bottom: 1px solid #e1e8f0; color: #145f8c; text-decoration: none; }
.sidebar-group a:hover { background: #edf5ff; }
.admin-content { min-width: 0; padding: 32px var(--alx-page-gutter) 48px; }
.admin-content .page-heading { margin: 0 0 24px; }
.admin-content .inline-form { display: inline-flex; gap: 8px; align-items: center; }

.account-link { color: var(--alx-blue); font-weight: 700; text-decoration: none; }
.account-link:hover { text-decoration: underline; }
.organization-switch label { display: flex; align-items: center; gap: 7px; padding: 0; border: 0; background: transparent; }
.organization-switch label > span { font-size: 12px; font-weight: 700; }
.organization-switch select { min-width: 135px; }
.mobile-account-action { display: none; }
.account-settings-card { max-width: 620px; }
.account-settings-card h2 { margin: 0 0 8px; }
.account-settings-card p { margin: 0 0 20px; color: var(--alx-muted); }
.account-settings-card form { display: flex; align-items: end; gap: 14px; }
.account-settings-card label { min-width: 260px; }

/* Sign-in is product content; the platform header, footer, type and controls
   still come from the shared stylesheet. */
.login-shell { min-height: 100vh; background: var(--alx-bg); }
.login-stage { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(360px, .9fr); align-items: center; gap: clamp(32px, 5vw, 64px); min-height: calc(100vh - var(--alx-header-height)); padding: 45px 0; }
.login-hero { padding: 25px 0; }
.login-kicker { margin: 70px 0 14px; color: #39799d; font-size: 11px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
.login-hero h1 { max-width: 560px; margin: 0 0 18px; color: var(--alx-ink); font-size: 48px; font-weight: 700; letter-spacing: -.05em; line-height: 1.05; }
.login-hero > p:not(.login-kicker) { max-width: 490px; color: var(--alx-muted); font-size: 18px; line-height: 1.5; }
.login-sparkles { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
.login-sparkles span { padding: 8px 13px; border: 1px solid var(--alx-card-border); border-radius: 999px; background: var(--alx-card); color: #39799d; font-size: 12px; }
.login-card { min-height: 420px; padding: 38px; border: 1px solid var(--alx-card-border); border-radius: 24px; background: var(--alx-card); box-shadow: 0 25px 65px #17365d1d; }
.login-card h2 { margin: 8px 0; color: var(--alx-ink); font-size: 28px; }
.login-card > p:not(.eyebrow) { margin: 0 0 25px; color: var(--alx-muted); line-height: 1.5; }
.login-button { display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 0 17px; border-radius: var(--alx-control-radius); background: var(--alx-primary-gradient); box-shadow: var(--alx-primary-shadow); color: #fff; font-weight: 800; text-decoration: none; }
.login-button span { font-size: 22px; }
.login-card small { display: block; line-height: 1.45; }

@media (max-width: 1024px) {
  .admin-workspace { display: block; min-height: 0; }
  .admin-sidebar { display: none; }
  .platform-admin-header { min-height: var(--alx-header-mobile-height); padding-inline: 16px; }
  .admin-content { padding-inline: 20px; }
}

@media (max-width: 760px) {
  .login-content,
  .dashboard-content,
  .user-content { padding-inline: 16px; }
  .admin-content { padding: 24px 16px 40px; }
  .page-heading h1 { font-size: var(--alx-title-size); }
  .grid.forms { grid-template-columns: minmax(0, 1fr); }
  .admin-page label,
  .user-shell label { grid-template-columns: minmax(0, 1fr); }
  .admin-page input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  .admin-page select,
  .admin-page textarea,
  .user-shell input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  .user-shell select,
  .user-shell textarea,
  .button,
  button:not(.alx-logout) { min-height: var(--alx-mobile-button-height); }
  .operation-inline-actions,
  .operation-inline-actions form,
  .operation-inline-actions .button { width: 100%; }
  .account-settings-card form { display: block; }
  .account-settings-card label { min-width: 0; }
  .account-settings-card button { margin-top: 12px; }
  .login-stage { grid-template-columns: 1fr; gap: 24px; min-height: 0; padding: 24px 0 32px; }
  .login-hero { padding: 10px 0; }
  .login-kicker { margin-top: 38px; }
  .login-hero h1 { font-size: 38px; }
  .login-hero > p:not(.login-kicker) { font-size: 16px; }
  .login-card { width: 100%; min-height: 420px; padding: clamp(24px, 6vw, 32px); }
}

@media (max-width: 480px) {
.portal-home .mobile-account-action { display: inline-grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px; border-radius: 8px; background: transparent; color: var(--alx-blue); font-size: 18px; line-height: 1; text-decoration: none; }
  .portal-home .organization-switch label > span,
  .portal-home .organization-switch button,
  .platform-admin-header .account-link { display: none; }
  .portal-home .organization-switch select { width: 118px; min-width: 0; max-width: 118px; }
}
