/* FRPM is an operational application: predictable structure, clear focus, and
   comfortable data entry take priority over decorative presentation. */
.frpm-rolebar { background: #123d27; border-top: 3px solid #c4a04d; color: #fff; position: sticky; top: 0; z-index: 20; }
.frpm-rolebar-inner { align-items: center; display: flex; gap: .8rem; min-height: 3.35rem; }
.frpm-rolebar-brand { color: #fff; font-weight: 800; letter-spacing: .08em; text-decoration: none; }
.frpm-rolebar-role { color: #d9e8df; font-size: .84rem; margin-right: auto; }
.frpm-inbox-button, .frpm-rolebar-login { align-items: center; border: 1px solid rgba(255,255,255,.45); border-radius: .5rem; color: #fff; display: inline-flex; font-size: .9rem; font-weight: 700; gap: .45rem; padding: .45rem .7rem; text-decoration: none; }
.frpm-inbox-button.has-pending { background: #fff3d8; border-color: #d89b2b; color: #684000; }
.frpm-inbox-badge, .frpm-leftnav nav > a span { align-items: center; background: #b52b2b; border-radius: 99rem; color: #fff; display: inline-flex; font-size: .72rem; justify-content: center; min-height: 1.3rem; min-width: 1.3rem; padding: 0 .35rem; }
.frpm-app-layout { align-items: start; display: grid; gap: 1.5rem; grid-template-columns: 17rem minmax(0, 1fr); padding-bottom: 3rem; padding-top: 1.5rem; }
.frpm-leftnav { background: #fff; border: 1px solid #d7e2dc; border-radius: .75rem; box-shadow: 0 2px 8px rgba(18,51,33,.06); max-height: calc(100vh - 5.5rem); overflow-y: auto; position: sticky; top: 4.6rem; }
.frpm-leftnav-heading { background: #edf8f1; border-bottom: 1px solid #d7e2dc; padding: .9rem 1rem; }
.frpm-leftnav-heading strong, .frpm-leftnav-heading small { display: block; }
.frpm-leftnav-heading small { color: #476053; margin-top: .2rem; }
.frpm-leftnav nav { padding: .6rem; }
.frpm-leftnav nav a { align-items: center; border-radius: .4rem; color: #183d2a; display: flex; font-size: .9rem; gap: .4rem; justify-content: space-between; padding: .55rem .65rem; text-decoration: none; }
.frpm-leftnav nav a:hover { background: #edf8f1; }
.frpm-leftnav nav a.is-current { background: #167343; color: #fff; font-weight: 700; }
.frpm-leftnav-label { color: #64756c; font-size: .7rem; font-weight: 800; letter-spacing: .08em; margin: .9rem .65rem .25rem; text-transform: uppercase; }
.frpm-leftnav-group { border-top: 1px solid #e3ebe7; margin-top: .35rem; padding-top: .3rem; }
.frpm-leftnav-group summary { color: #355545; cursor: pointer; font-size: .82rem; font-weight: 700; padding: .5rem .65rem; }
.frpm-leftnav-group a { margin-left: .5rem; }
.frpm-step-pointer { border-top: 1px solid #d7e2dc; padding: .9rem 1rem 1rem; }
.frpm-step-pointer h2 { font-size: .85rem; margin: 0 0 .65rem; }
.frpm-step-pointer ol { display: grid; gap: .45rem; list-style: none; margin: 0; padding: 0; }
.frpm-step-pointer li { align-items: center; color: #476053; display: flex; font-size: .78rem; gap: .5rem; }
.frpm-step-pointer li span { align-items: center; background: #e5f3e9; border-radius: 50%; color: #123d27; display: inline-flex; font-size: .7rem; font-weight: 800; height: 1.35rem; justify-content: center; width: 1.35rem; }
.frpm-main-content { min-width: 0; }
.frpm-main-content > .page-shell > .page-header .container,
.frpm-main-content > .page-shell > .container { max-width: none; padding-left: 0; padding-right: 0; }
.frpm-main-content > .page-shell > .page-header { padding-top: clamp(1.5rem, 4vw, 3.5rem); }
.frpm-action-row { display: flex; flex-wrap: wrap; gap: .75rem; margin: 0 0 1.5rem; }
.frpm-action-row .button { margin: 0; }
.frpm-guide { background: #edf8f1; border-left: 4px solid #167343; border-radius: .5rem; padding: 1rem 1.1rem; margin-bottom: 1.25rem; }
.frpm-guide h2, .frpm-guide h3 { font-size: 1rem; margin: 0 0 .4rem; }
.frpm-guide p { margin: 0; }
.frpm-form-layout { display: grid; grid-template-columns: minmax(14rem, .6fr) minmax(0, 1.4fr); gap: 1.5rem; align-items: start; }
.frpm-form-card, .frpm-detail-card, .frpm-table-card, .frpm-summary-card { background: #fff; border: 1px solid #d7e2dc; border-radius: .75rem; box-shadow: 0 2px 8px rgba(18, 51, 33, .06); }
.frpm-form-card { padding: clamp(1rem, 3vw, 2rem); }
.frpm-detail-card, .frpm-summary-card { padding: 1.25rem; }
.frpm-progress { font-size: .94rem; color: #355545; margin: 0 0 1rem; }
.frpm-fieldset { min-inline-size: 0; border: 0; border-top: 1px solid #d7e2dc; margin: 1.65rem 0 0; padding: 1.5rem 0 0; }
.frpm-fieldset:first-of-type { border-top: 0; margin-top: 0; padding-top: 0; }
.frpm-fieldset legend { color: #123d27; font-size: 1.1rem; font-weight: 700; padding: 0 .35rem 0 0; }
.frpm-field { margin: 0 0 1.2rem; }
.frpm-field > label { display: block; color: #183d2a; font-weight: 700; margin: 0 0 .4rem; }
.frpm-required { color: #9e1f1f; }
.frpm-field small { color: #476053; display: block; line-height: 1.45; margin-top: .35rem; }
.frpm-input, .contact-form .frpm-input { box-sizing: border-box; min-height: 2.8rem; width: 100%; }
.frpm-field textarea.frpm-input { min-height: 7rem; }
.frpm-field select[multiple] { min-height: 8rem; }
.frpm-field input[type="checkbox"] { block-size: 1.25rem; inline-size: 1.25rem; margin-right: .5rem; vertical-align: middle; }
.frpm-field .errorlist, .frpm-error-summary { color: #7d1717; }
.frpm-error-summary { background: #fff1f1; border: 1px solid #d75656; border-radius: .5rem; margin: 0 0 1.25rem; padding: 1rem 1.15rem; }
.frpm-error-summary h2 { font-size: 1rem; margin: 0 0 .5rem; }
.frpm-error-summary ul { margin: 0; padding-left: 1.25rem; }
.frpm-error-summary a { color: inherit; }
.frpm-table-card { overflow-x: auto; }
.frpm-table-card table { min-width: 42rem; margin: 0; }
.frpm-table-card th { white-space: nowrap; }
.frpm-table-card td { vertical-align: top; }
.frpm-portal-table { min-width: max(42rem, calc(var(--frpm-table-columns, 5) * 9rem)) !important; table-layout: auto; }
.frpm-portal-table th,
.frpm-portal-table td { min-width: 8rem; overflow-wrap: anywhere; }
.frpm-portal-table th:first-child,
.frpm-portal-table td:first-child { min-width: 14rem; }
.frpm-portal-table th:nth-child(3),
.frpm-portal-table td:nth-child(3) { min-width: 11rem; }
.frpm-portal-table th:nth-child(4),
.frpm-portal-table td:nth-child(4) { min-width: 14rem; }
.frpm-portal-table th:last-child,
.frpm-portal-table td:last-child { min-width: 7.5rem; }
.frpm-action-cell { width: 7.5rem; }
.frpm-detail-link { border: 1px solid #2d7450; border-radius: .38rem; color: #125233; display: inline-flex; font-size: .74rem; font-weight: 750; line-height: 1; padding: .48rem .62rem; text-decoration: none; white-space: nowrap; }
.frpm-detail-link:hover { background: #e9f4ed; border-color: #125b36; }
.frpm-result-note { color: #476053; margin: 0 0 1rem; }
.frpm-resource-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); }
.frpm-resource-card { background: #fff; border: 1px solid #d7e2dc; border-radius: .75rem; padding: 1.1rem; }
.frpm-resource-card h3 { font-size: 1.05rem; margin: 0 0 .4rem; }
.frpm-resource-card p { color: #476053; margin: 0; }
.frpm-status-badge { background: #e5f3e9; border-radius: 99rem; color: #123d27; display: inline-block; font-size: .82rem; font-weight: 700; padding: .25rem .6rem; }
.frpm-key-value { display: grid; gap: 1rem; grid-template-columns: minmax(11rem, .42fr) minmax(0, 1fr); }
.frpm-key-value dt { color: #355545; font-weight: 700; }
.frpm-key-value dd { margin: 0; }
.frpm-delete-warning { background: #fff7e7; border-left: 4px solid #af6900; padding: 1rem; }
.frpm-survey-scale { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-top: .5rem; }
.frpm-survey-scale > div { display: inline-flex; align-items: center; gap: .3rem; }
.frpm-survey-scale input { inline-size: 1.15rem; block-size: 1.15rem; }
.frpm-range-control { align-items: center; display: grid; gap: .8rem; grid-template-columns: minmax(0, 1fr) 3.5rem; }
.frpm-range { accent-color: #136a3c; cursor: pointer; min-height: 2rem; width: 100%; }
.frpm-range-control output { background: #123d27; border-radius: .42rem; color: #fff; font-size: .9rem; font-variant-numeric: tabular-nums; font-weight: 800; min-width: 3rem; padding: .42rem .55rem; text-align: center; }
.frpm-range-scale { color: #5f7167; display: flex; font-size: .72rem; justify-content: space-between; margin-right: 4.3rem; }
.frpm-fieldset-intro { color: #52675b; font-size: .86rem; margin: .1rem 0 1.2rem; }
.frpm-metric-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); margin: 1.25rem 0; }
.frpm-metric { background: #edf8f1; border-radius: .65rem; padding: 1rem; }
.frpm-metric h2 { font-size: .92rem; margin: 0 0 .35rem; }
.frpm-metric p { color: #123d27; font-size: 1.4rem; font-weight: 700; margin: 0; }
.frpm-financial-table { min-width: 76rem; table-layout: auto; }
.frpm-financial-table th,
.frpm-financial-table td { min-width: 8.5rem; white-space: normal; }
.frpm-financial-table th:nth-child(2),
.frpm-financial-table td:nth-child(2) { min-width: 22rem; }
.frpm-ledger-detail-table { min-width: 68rem; table-layout: auto; }
.frpm-ledger-detail-table th,
.frpm-ledger-detail-table td { white-space: normal; }
.frpm-delete-locked { align-self: center; background: #fff7e7; border-left: 4px solid #af6900; color: #694000; max-width: 38rem; padding: .65rem .8rem; }
.frpm-inbox-hint { align-self: center; color: #694000; font-weight: 700; }
.frpm-inbox-list { display: grid; gap: .9rem; }
.frpm-inbox-item { align-items: start; background: #fff; border: 1px solid #d7e2dc; border-left: 5px solid #167343; border-radius: .7rem; display: flex; gap: 1.25rem; justify-content: space-between; padding: 1rem 1.1rem; }
.frpm-inbox-item.is-read { border-left-color: #93a89c; opacity: .8; }
.frpm-inbox-item.needs-action { border-left-color: #af6900; }
.frpm-inbox-item h2 { font-size: 1.05rem; margin: .2rem 0 .45rem; }
.frpm-inbox-item p { margin: .25rem 0; }
.frpm-inbox-meta, .frpm-inbox-read { color: #476053; font-size: .85rem; }
.frpm-inbox-labels, .frpm-inbox-actions { align-items: center; display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem; }
.frpm-inbox-actions { justify-content: flex-end; margin-top: 0; min-width: 11rem; }
.frpm-inbox-actions form { margin: 0; }
.frpm-inbox-group { margin-top: 1.5rem; }
.frpm-pagination { align-items: center; background: #fff; border: 1px solid #d7e2dc; border-radius: .65rem; display: flex; flex-wrap: wrap; gap: .8rem; justify-content: space-between; margin-top: 1rem; padding: .7rem .85rem; }
.frpm-pagination > span { color: #53675c; font-size: .76rem; }
.frpm-pagination > div { align-items: center; display: flex; flex-wrap: wrap; gap: .35rem; }
.frpm-page-link.button { font-size: .72rem; margin: 0; min-height: auto; padding: .43rem .58rem; }
.frpm-page-number, .frpm-page-current { align-items: center; border-radius: .38rem; display: inline-flex; font-size: .74rem; font-weight: 750; height: 2rem; justify-content: center; min-width: 2rem; text-decoration: none; }
.frpm-page-number { color: #155a36; }
.frpm-page-number:hover { background: #e8f3ec; }
.frpm-page-current { background: #145c37; color: #fff; }
.frpm-revoke-form { display: grid; gap: .4rem; margin-top: .5rem; max-width: 16rem; }
.frpm-revoke-form .button { justify-self: start; margin: 0; }
.frpm-leadership-board { margin: 2rem 0; }
.frpm-kanban-heading { align-items: end; display: flex; flex-wrap: wrap; gap: 1rem 2rem; justify-content: space-between; margin-bottom: 1rem; }
.frpm-kanban-heading h2 { margin: 0 0 .35rem; }
.frpm-kanban-heading p { color: #476053; margin: 0; }
.frpm-sla-note { font-size: .9rem; max-width: 30rem; }
.frpm-kanban-board { display: grid; gap: 1rem; grid-template-columns: repeat(4, minmax(16rem, 1fr)); overflow-x: auto; padding-bottom: .5rem; }
.frpm-kanban-column { background: #f2f6f3; border: 1px solid #d7e2dc; border-radius: .75rem; min-width: 16rem; padding: .8rem; }
.frpm-kanban-column > header { align-items: center; display: flex; gap: .6rem; justify-content: space-between; margin-bottom: .75rem; }
.frpm-kanban-column h3 { font-size: .98rem; margin: 0; }
.frpm-kanban-column > header span { background: #dbece1; border-radius: 99rem; color: #123d27; font-size: .85rem; font-weight: 700; min-width: 1.8rem; padding: .25rem .45rem; text-align: center; }
.frpm-kanban-column--at_risk { background: #fff7e7; border-color: #e5bd76; }
.frpm-kanban-column--at_risk > header span { background: #ffe0a3; color: #6a4000; }
.frpm-kanban-column--completed { background: #edf8f1; }
.frpm-kanban-cards { display: grid; gap: .75rem; }
.frpm-kanban-card { background: #fff; border: 1px solid #d7e2dc; border-radius: .55rem; padding: .8rem; }
.frpm-kanban-card h4 { font-size: .98rem; line-height: 1.35; margin: .2rem 0 .4rem; overflow-wrap: anywhere; }
.frpm-kanban-type, .frpm-kanban-reference, .frpm-kanban-card dl { color: #476053; font-size: .84rem; margin: 0; }
.frpm-kanban-type { color: #123d27; font-weight: 700; }
.frpm-kanban-reference { margin-bottom: .65rem; overflow-wrap: anywhere; }
.frpm-kanban-card dl { display: grid; gap: .25rem .5rem; grid-template-columns: auto 1fr; }
.frpm-kanban-card dt { font-weight: 700; }
.frpm-kanban-card dd { margin: 0; }
.frpm-sla { border-radius: 99rem; display: inline-block; font-size: .78rem; font-weight: 700; padding: .18rem .45rem; }
.frpm-sla--on-track, .frpm-sla--completed { background: #e5f3e9; color: #123d27; }
.frpm-sla--at-risk, .frpm-sla--overdue { background: #ffe0a3; color: #6a4000; }
.frpm-kanban-empty, .frpm-kanban-more { color: #476053; font-size: .88rem; margin: .35rem 0; }
.frpm-form-card :is(input, select, textarea, button, a):focus-visible,
.frpm-action-row a:focus-visible, .frpm-resource-card a:focus-visible, .frpm-kanban-card a:focus-visible { outline: 3px solid #1d78c8; outline-offset: 3px; }
@media (max-width: 760px) {
  .frpm-rolebar-role { display: none; }
  .frpm-app-layout { grid-template-columns: 1fr; padding-top: .8rem; }
  .frpm-leftnav { max-height: none; position: static; }
  .frpm-leftnav nav { display: flex; flex-wrap: wrap; gap: .25rem; }
  .frpm-leftnav nav > a { border: 1px solid #d7e2dc; }
  .frpm-leftnav-label { flex-basis: 100%; }
  .frpm-leftnav-group { flex-basis: 100%; }
  .frpm-step-pointer { display: none; }
  .frpm-form-layout { grid-template-columns: 1fr; }
  .frpm-key-value { grid-template-columns: 1fr; gap: .3rem; }
  .frpm-table-card table { min-width: 36rem; }
  .frpm-kanban-board { grid-template-columns: 1fr; overflow: visible; }
  .frpm-kanban-column { min-width: 0; }
  .frpm-inbox-item { display: block; }
  .frpm-inbox-actions { justify-content: flex-start; margin-top: .85rem; }
}

/* --------------------------------------------------------------------------
   FRPM application shell — aligned with the CMS workspace and role workflow.
   -------------------------------------------------------------------------- */
body:has(.frpm-app-shell) { background: #f4f7f5; }
body:has(.frpm-app-shell) > .topbar,
body:has(.frpm-app-shell) > .site-header,
body:has(.frpm-app-shell) > .site-footer,
body:has(.frpm-app-shell) > .back-to-top { display: none !important; }
body:has(.frpm-app-shell) > #main-content { min-height: 100vh; }
.frpm-app-shell { --frpm-topbar: 4.25rem; --frpm-sidebar: 17.5rem; background: #f4f7f5; color: #17271e; min-height: 100vh; padding-left: var(--frpm-sidebar); padding-top: var(--frpm-topbar); }
.frpm-app-topbar { align-items: center; background: #fff; border-bottom: 1px solid #dce6e0; display: flex; gap: 1rem; height: var(--frpm-topbar); left: 0; padding: 0 1.25rem; position: fixed; right: 0; top: 0; z-index: 90; }
body.has-adminbar .frpm-app-topbar { top: 32px; }
.frpm-app-brand { align-items: center; color: #123d27; display: flex; gap: .7rem; min-width: calc(var(--frpm-sidebar) - 2.2rem); text-decoration: none; }
.frpm-app-brand-mark { align-items: center; background: #0a5531; border-radius: .65rem; box-shadow: inset 0 0 0 2px rgba(255,255,255,.16); color: #fff; display: inline-flex; font-family: Merriweather, Georgia, serif; font-size: .82rem; font-weight: 900; height: 2.35rem; justify-content: center; width: 2.35rem; }
.frpm-app-brand > span:last-child { display: grid; line-height: 1.1; }
.frpm-app-brand strong { font-size: .98rem; letter-spacing: .08em; }
.frpm-app-brand small { color: #64766c; font-size: .69rem; font-weight: 600; margin-top: .16rem; }
.frpm-topbar-context { border-left: 1px solid #dce6e0; display: grid; line-height: 1.15; padding-left: 1rem; }
.frpm-topbar-context span { color: #6c7a72; font-size: .68rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.frpm-topbar-context strong { color: #263c30; font-size: .86rem; margin-top: .18rem; }
.frpm-topbar-actions { align-items: center; display: flex; gap: .35rem; margin-left: auto; }
.frpm-sidebar-toggle { align-items: center; background: transparent; border: 0; color: #123d27; cursor: pointer; display: none; justify-content: center; padding: .5rem; }
.frpm-notification-menu, .frpm-user-menu { position: relative; }
.frpm-notification-menu > summary, .frpm-user-menu > summary, .frpm-inbox-shortcut { align-items: center; background: transparent; border: 0; border-radius: .6rem; color: #294237; cursor: pointer; display: flex; min-height: 2.75rem; position: relative; text-decoration: none; }
.frpm-notification-menu > summary, .frpm-inbox-shortcut { justify-content: center; min-width: 2.75rem; }
.frpm-notification-menu > summary::-webkit-details-marker, .frpm-user-menu > summary::-webkit-details-marker { display: none; }
.frpm-notification-menu > summary:hover, .frpm-user-menu > summary:hover, .frpm-inbox-shortcut:hover { background: #edf5f0; }
.frpm-topbar-badge { align-items: center; background: #b52b2b; border: 2px solid #fff; border-radius: 99rem; color: #fff; display: inline-flex; font-size: .62rem; font-weight: 800; justify-content: center; min-height: 1.18rem; min-width: 1.18rem; padding: 0 .25rem; position: absolute; right: .05rem; top: .05rem; }
.frpm-topbar-badge.is-warning { background: #b86508; }
.frpm-notification-popover { background: #fff; border: 1px solid #d8e3dc; border-radius: .8rem; box-shadow: 0 18px 45px rgba(20,51,34,.18); min-width: min(26rem, calc(100vw - 2rem)); overflow: hidden; position: absolute; right: -3rem; top: calc(100% + .55rem); z-index: 110; }
.frpm-notification-popover > header { align-items: center; border-bottom: 1px solid #e4ebe7; display: flex; justify-content: space-between; padding: .9rem 1rem; }
.frpm-notification-popover > header strong { font-size: .92rem; }
.frpm-notification-popover > header a { color: #0b6738; font-size: .78rem; font-weight: 700; }
.frpm-notification-preview { max-height: 28rem; overflow-y: auto; }
.frpm-notification-preview-item { align-items: start; border-bottom: 1px solid #edf1ef; color: #283a31; display: grid; gap: .7rem; grid-template-columns: .5rem 1fr; padding: .85rem 1rem; text-decoration: none; }
.frpm-notification-preview-item:hover { background: #f3f8f5; }
.frpm-notification-preview-item.requires-action { background: #fffaf0; }
.frpm-notification-dot { background: #789185; border-radius: 50%; height: .48rem; margin-top: .32rem; width: .48rem; }
.frpm-notification-preview-item.requires-action .frpm-notification-dot { background: #bd6900; }
.frpm-notification-preview-item > span:last-child { display: grid; gap: .18rem; }
.frpm-notification-preview-item strong { font-size: .82rem; line-height: 1.35; }
.frpm-notification-preview-item small { color: #637269; font-size: .74rem; line-height: 1.4; }
.frpm-notification-preview-item em { color: #66766d; font-size: .67rem; font-style: normal; margin-top: .2rem; }
.frpm-sla-chip { border-radius: 99rem; display: inline-block; font-size: .65rem; font-weight: 800; margin-right: .3rem; padding: .14rem .38rem; }
.frpm-sla-chip.is-info, .frpm-sla-chip.is-track { background: #e6f3eb; color: #175a34; }
.frpm-sla-chip.is-risk { background: #fff0cc; color: #7e4c00; }
.frpm-sla-chip.is-overdue { background: #fbe1df; color: #8b2420; }
.frpm-empty-state { color: #66766d; margin: 0; padding: 1.5rem; text-align: center; }
.frpm-user-menu > summary { gap: .55rem; margin-left: .25rem; padding: .28rem .5rem; }
.frpm-avatar { align-items: center; background: #dff0e5; border-radius: .55rem; color: #0b5732; display: inline-flex; font-size: .85rem; font-weight: 800; height: 2.15rem; justify-content: center; width: 2.15rem; }
.frpm-user-copy { display: grid; line-height: 1.15; min-width: 7rem; }
.frpm-user-copy strong { font-size: .78rem; }
.frpm-user-copy small { color: #6b7b72; font-size: .68rem; margin-top: .15rem; }
.frpm-user-menu > div { background: #fff; border: 1px solid #d8e3dc; border-radius: .7rem; box-shadow: 0 16px 38px rgba(20,51,34,.17); display: grid; min-width: 13rem; padding: .45rem; position: absolute; right: 0; top: calc(100% + .5rem); z-index: 110; }
.frpm-user-menu > div p { color: #78867e; font-size: .68rem; font-weight: 800; letter-spacing: .07em; margin: .4rem .55rem .25rem; text-transform: uppercase; }
.frpm-user-menu > div a, .frpm-menu-logout button { border-radius: .4rem; color: #294237; font-family: inherit; font-size: .78rem; padding: .5rem .6rem; text-align: left; text-decoration: none; }
.frpm-user-menu > div a:hover, .frpm-user-menu > div a.is-current, .frpm-menu-logout button:hover { background: #e8f4ec; color: #0b5732; font-weight: 700; }
.frpm-menu-logout { display: grid; margin: 0; }
.frpm-menu-logout button { background: transparent; border: 0; cursor: pointer; width: 100%; }
.frpm-user-menu > div hr { border: 0; border-top: 1px solid #e2e9e5; margin: .4rem 0; }
.frpm-topbar-login { background: #0a5531; border-radius: .55rem; color: #fff; font-size: .82rem; font-weight: 700; margin-left: auto; padding: .58rem .9rem; text-decoration: none; }
.frpm-sidebar { background: #0d3f28; bottom: 0; color: #fff; left: 0; overflow-y: auto; position: fixed; top: var(--frpm-topbar); width: var(--frpm-sidebar); z-index: 80; }
body.has-adminbar .frpm-sidebar { top: calc(var(--frpm-topbar) + 32px); }
.frpm-sidebar-role { background: rgba(255,255,255,.055); border-bottom: 1px solid rgba(255,255,255,.1); display: grid; gap: .2rem; padding: 1.15rem 1.2rem; }
.frpm-sidebar-role span { color: #a9c4b4; font-size: .66rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.frpm-sidebar-role strong { color: #fff; font-size: .92rem; }
.frpm-sidebar-role small { color: #bfd1c6; font-size: .72rem; }
.frpm-sidebar-nav { padding: .65rem .7rem 1.25rem; }
.frpm-nav-accordion { border-bottom: 1px solid rgba(255,255,255,.08); padding: .22rem 0; }
.frpm-nav-accordion > summary { align-items: center; color: #a9c4b4; cursor: pointer; display: flex; font-family: Inter, sans-serif; font-size: .65rem; font-weight: 800; justify-content: space-between; letter-spacing: .1em; list-style: none; padding: .58rem .65rem; text-transform: uppercase; }
.frpm-nav-accordion > summary::-webkit-details-marker { display: none; }
.frpm-nav-accordion > summary::after { content: "⌄"; font-size: .9rem; transform: rotate(-90deg); transition: transform .16s ease; }
.frpm-nav-accordion[open] > summary::after { transform: rotate(0); }
.frpm-nav-accordion > summary:hover { background: rgba(255,255,255,.06); color: #fff; }
.frpm-nav-accordion-panel { padding-bottom: .35rem; }
.frpm-sidebar-subgroup { color: #7fa18d; font-size: .62rem; font-weight: 800; letter-spacing: .07em; margin: .7rem .65rem .2rem; text-transform: uppercase; }
.frpm-sidebar-nav a { align-items: center; border-radius: .48rem; color: #dbe8e0; display: grid; font-size: .78rem; gap: .62rem; grid-template-columns: 1.55rem minmax(0, 1fr) auto; line-height: 1.25; margin: .08rem 0; min-height: 2.35rem; padding: .4rem .55rem; text-decoration: none; }
.frpm-sidebar-nav a:hover { background: rgba(255,255,255,.08); color: #fff; }
.frpm-sidebar-nav a.is-current { background: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.12); color: #0c4b2e; font-weight: 800; }
.frpm-nav-icon { align-items: center; display: inline-flex; font-size: .92rem; justify-content: center; }
.frpm-sidebar-nav a em { align-items: center; background: #c57312; border-radius: 99rem; color: #fff; display: inline-flex; font-size: .62rem; font-style: normal; font-weight: 800; justify-content: center; min-height: 1.25rem; min-width: 1.25rem; padding: 0 .3rem; }
.frpm-sidebar-help { background: rgba(255,255,255,.055); border: 1px solid rgba(255,255,255,.11); border-radius: .6rem; display: grid; gap: .35rem; margin: .5rem .75rem 1.25rem; padding: .85rem; }
.frpm-sidebar-help strong { font-size: .78rem; }
.frpm-sidebar-help span { color: #bcd0c3; font-size: .7rem; line-height: 1.45; }
.frpm-sidebar-help a { color: #f2d99b; font-size: .7rem; font-weight: 800; margin-top: .15rem; }
.frpm-sidebar-scrim { display: none; }
.frpm-workspace { margin: 0 auto; max-width: 105rem; min-height: calc(100vh - var(--frpm-topbar)); padding: clamp(1.1rem, 2.5vw, 2.25rem); }
.frpm-workspace > .page-shell { padding: 0; }
.frpm-workspace .page-header { background: transparent; border: 0; margin: 0 0 1.35rem; padding: 0; }
.frpm-workspace .page-header .container, .frpm-workspace .page-shell > .container { max-width: none; padding-left: 0; padding-right: 0; }
.frpm-workspace .page-header h1 { color: #123d27; font-family: Inter, sans-serif; font-size: clamp(1.55rem, 2.5vw, 2.2rem); font-weight: 750; letter-spacing: -.03em; line-height: 1.15; margin: .18rem 0 .35rem; }
.frpm-workspace .page-header-meta { color: #64736a; font-size: .88rem; margin: 0; max-width: 52rem; }
.frpm-workspace .breadcrumb { color: #738078; font-size: .7rem; font-weight: 700; letter-spacing: .06em; margin: 0 0 .35rem; text-transform: uppercase; }
.frpm-workspace .breadcrumb a { color: #0b6438; text-decoration: none; }
.frpm-flash-stack { display: grid; gap: .55rem; margin-bottom: 1rem; }
.frpm-flash { background: #e7f4eb; border-left: 4px solid #137641; border-radius: .45rem; color: #17472d; font-size: .82rem; padding: .75rem .9rem; }
.frpm-flash.error { background: #fdebea; border-color: #ad2e29; color: #7b2421; }
.frpm-flash.warning { background: #fff3da; border-color: #b56808; color: #714506; }

/* Single-column workflow dashboard and Satubeasiswa-style progress. */
.frpm-dashboard { display: grid; gap: 1.25rem; }
.frpm-dashboard-hero { align-items: center; background: linear-gradient(115deg,#0b4b2d,#17663e); border-radius: .9rem; color: #fff; display: grid; gap: 1.5rem; grid-template-columns: minmax(0,1fr) auto; overflow: hidden; padding: clamp(1.25rem,3vw,2rem); position: relative; }
.frpm-dashboard-hero::after { border: 1.8rem solid rgba(255,255,255,.05); border-radius: 50%; content: ""; height: 11rem; position: absolute; right: -3rem; top: -4rem; width: 11rem; }
.frpm-dashboard-hero p { color: #d7e8dd; margin: .4rem 0 0; max-width: 47rem; }
.frpm-dashboard-hero h1 { color: #fff; font-family: Inter, sans-serif; font-size: clamp(1.55rem,3vw,2.25rem); letter-spacing: -.035em; margin: 0; }
.frpm-dashboard-hero .button { background: #fff; border-color: #fff; color: #0b4b2d; margin: 0; position: relative; z-index: 1; }
.frpm-stat-strip { display: grid; gap: .75rem; grid-template-columns: repeat(4,minmax(0,1fr)); }
.frpm-stat-card { background: #fff; border: 1px solid #dce6e0; border-radius: .7rem; display: grid; gap: .22rem; min-height: 6.3rem; padding: 1rem; }
.frpm-stat-card span { color: #69776f; font-size: .7rem; font-weight: 700; }
.frpm-stat-card strong { color: #133f29; font-size: 1.6rem; line-height: 1; }
.frpm-stat-card small { color: #748179; font-size: .66rem; }
.frpm-section-card { background: #fff; border: 1px solid #dce6e0; border-radius: .8rem; padding: 1.15rem; }
.frpm-section-heading { align-items: end; display: flex; gap: 1rem; justify-content: space-between; margin-bottom: .9rem; }
.frpm-section-heading h2 { color: #173d2a; font-family: Inter, sans-serif; font-size: 1.05rem; margin: 0; }
.frpm-section-heading p { color: #6b7971; font-size: .75rem; margin: .2rem 0 0; }
.frpm-section-heading a { color: #0b6337; font-size: .75rem; font-weight: 800; white-space: nowrap; }
.frpm-process-grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit,minmax(14.5rem,1fr)); }
.frpm-process-card { border: 1px solid #dce6e0; border-radius: .65rem; color: #1b3728; display: grid; gap: .42rem; min-height: 8.2rem; padding: .9rem; text-decoration: none; }
.frpm-process-card:hover { border-color: #4e966d; box-shadow: 0 7px 20px rgba(17,74,42,.09); transform: translateY(-1px); }
.frpm-process-card > span { align-items: center; background: #e8f4ec; border-radius: .5rem; color: #0b6237; display: inline-flex; font-weight: 800; height: 2rem; justify-content: center; width: 2rem; }
.frpm-process-card strong { font-size: .84rem; line-height: 1.35; }
.frpm-process-card small { color: #68766e; font-size: .7rem; line-height: 1.4; }
.frpm-ticket-list { display: grid; gap: .55rem; }
.frpm-ticket-row { align-items: center; border: 1px solid #e0e8e3; border-radius: .55rem; color: #203a2c; display: grid; gap: .8rem; grid-template-columns: minmax(0,1.6fr) minmax(7.5rem,.6fr) minmax(8rem,.6fr) auto; padding: .75rem .85rem; text-decoration: none; }
.frpm-ticket-row:hover { background: #f5f9f6; border-color: #a9c8b5; }
.frpm-ticket-row > span { display: grid; gap: .15rem; min-width: 0; }
.frpm-ticket-row strong { font-size: .78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.frpm-ticket-row small { color: #748078; font-size: .67rem; }
.frpm-status-pill { background: #e7f3eb; border-radius: 99rem; color: #155e36; display: inline-block; font-size: .65rem; font-weight: 800; padding: .25rem .48rem; text-align: center; }
.frpm-status-pill.is-warning { background: #fff0d1; color: #804b00; }
.frpm-status-pill.is-danger { background: #fbe3e1; color: #8b2a26; }
.frpm-progress-overview { display: grid; gap: .8rem; }
.frpm-progress-track { background: #dfe8e2; border-radius: 99rem; height: .48rem; overflow: hidden; }
.frpm-progress-track > span { background: linear-gradient(90deg,#0d713e,#69aa80); border-radius: inherit; display: block; height: 100%; transition: width .25s ease; }
.frpm-progress-steps { display: grid; gap: .55rem; grid-template-columns: repeat(var(--step-count,4),minmax(8.5rem,1fr)); overflow-x: auto; padding-bottom: .3rem; }
.frpm-progress-step { background: #f4f7f5; border: 1px solid #dce5df; border-radius: .55rem; display: grid; gap: .35rem; min-width: 8.5rem; padding: .7rem; }
.frpm-progress-step > span { align-items: center; background: #dbe5df; border-radius: 50%; color: #496055; display: inline-flex; font-size: .68rem; font-weight: 800; height: 1.45rem; justify-content: center; width: 1.45rem; }
.frpm-progress-step strong { font-size: .7rem; line-height: 1.3; }
.frpm-progress-step small { color: #738078; font-size: .63rem; }
.frpm-progress-step.is-complete { background: #eaf5ed; border-color: #a7cdb5; }
.frpm-progress-step.is-complete > span { background: #13733f; color: #fff; }
.frpm-progress-step.is-current { background: #fff8e9; border-color: #e3bd78; box-shadow: inset 0 0 0 1px #e3bd78; }
.frpm-progress-step.is-current > span { background: #b96a0c; color: #fff; }
.frpm-detail-grid { display: grid; gap: 1rem; grid-template-columns: minmax(0,1.45fr) minmax(18rem,.55fr); }
.frpm-form-layout { grid-template-columns: minmax(0,1fr); max-width: 72rem; }
.frpm-guide { max-width: 72rem; }
.frpm-form-card { box-shadow: none; }
.frpm-form-sections { display: grid; gap: 0 1.2rem; grid-template-columns: repeat(2,minmax(0,1fr)); }
.frpm-form-sections .frpm-field.is-wide, .frpm-form-sections .frpm-error-summary, .frpm-form-sections fieldset { grid-column: 1 / -1; }
.frpm-actions-sticky { align-items: center; background: #f7faf8; border-top: 1px solid #dce6e0; bottom: 0; display: flex; gap: .7rem; justify-content: flex-end; margin: 1.4rem -2rem -2rem; padding: .85rem 2rem; position: sticky; z-index: 5; }

@media (max-width: 1040px) {
  .frpm-app-shell { --frpm-sidebar: 15.5rem; }
  .frpm-stat-strip { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .frpm-detail-grid { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
  .frpm-app-shell { padding-left: 0; }
  .frpm-sidebar-toggle { display: inline-flex; }
  .frpm-app-brand { min-width: 0; }
  .frpm-topbar-context { display: none; }
  .frpm-user-copy { display: none; }
  .frpm-sidebar { box-shadow: 10px 0 36px rgba(0,0,0,.24); transform: translateX(-102%); transition: transform .2s ease; }
  .frpm-app-shell.sidebar-open .frpm-sidebar { transform: translateX(0); }
  .frpm-sidebar-scrim { background: rgba(5,24,14,.48); bottom: 0; left: 0; position: fixed; right: 0; top: var(--frpm-topbar); z-index: 70; }
  .frpm-app-shell.sidebar-open .frpm-sidebar-scrim { display: block; }
  .frpm-dashboard-hero { grid-template-columns: 1fr; }
  .frpm-dashboard-hero .button { justify-self: start; }
  .frpm-ticket-row { grid-template-columns: minmax(0,1fr) auto; }
  .frpm-ticket-row > span:nth-child(2), .frpm-ticket-row > span:nth-child(3) { display: none; }
}
@media (max-width: 560px) {
  .frpm-app-topbar { gap: .4rem; padding: 0 .65rem; }
  .frpm-app-brand small { display: none; }
  .frpm-app-brand > span:last-child { display: block; }
  .frpm-user-menu { display: none; }
  .frpm-notification-popover { position: fixed; right: .75rem; top: calc(var(--frpm-topbar) + .4rem); }
  .frpm-workspace { padding: .85rem; }
  .frpm-stat-strip { grid-template-columns: 1fr 1fr; }
  .frpm-stat-card { min-height: 5.4rem; }
  .frpm-form-sections { grid-template-columns: 1fr; }
  .frpm-actions-sticky { margin-left: -1rem; margin-right: -1rem; padding-left: 1rem; padding-right: 1rem; }
}

/* Public account registration: clear, protected, and independent from role navigation. */
.frpm-public-registration { background: #f5f8f6; min-height: 70vh; padding-bottom: 4rem; }
.frpm-public-registration-hero { background: linear-gradient(120deg,#0b4b2d,#17663e); color: #fff; padding: clamp(2rem,5vw,4rem) 0; }
.frpm-public-registration-hero h1 { color: #fff; font-family: Inter,sans-serif; font-size: clamp(2rem,4vw,3.2rem); letter-spacing: -.04em; margin: .35rem 0 .5rem; }
.frpm-public-registration-hero p { color: #dcece2; margin: 0; max-width: 48rem; }
.frpm-public-registration-hero .breadcrumb, .frpm-public-registration-hero .breadcrumb a { color: #d6e9dd; }
.frpm-public-registration-layout { align-items: start; display: grid; gap: 1.3rem; grid-template-columns: minmax(15rem,.38fr) minmax(0,1fr); margin-top: -1.5rem; position: relative; }
.frpm-public-registration-guide { background: #e9f4ed; border: 1px solid #c8decf; border-radius: .85rem; color: #294b38; padding: 1.2rem; position: sticky; top: 1rem; }
.frpm-public-registration-guide h2 { color: #153f29; font-family: Inter,sans-serif; font-size: 1.05rem; margin-top: 0; }
.frpm-public-registration-guide ol { display: grid; gap: .5rem; margin: .8rem 0 1rem; padding-left: 1.2rem; }
.frpm-public-registration-guide li, .frpm-public-registration-guide p { font-size: .75rem; line-height: 1.5; }
.frpm-public-registration-form { margin: 0; max-width: none; }
.frpm-public-registration-form fieldset { border: 0; border-bottom: 1px solid #dce6e0; margin: 0 0 1.35rem; padding: 0 0 1.35rem; }
.frpm-public-registration-form legend { color: #153f29; font-family: Inter,sans-serif; font-size: 1rem; font-weight: 800; margin-bottom: .85rem; }
.frpm-public-registration-form .captcha-field { display: grid; gap: .35rem; max-width: 28rem; }
.frpm-public-registration-form .captcha-field > label { color: #183d2a; display: block; font-weight: 700; }
.frpm-public-registration-form .captcha-field > small { color: #476053; display: block; line-height: 1.45; }
.frpm-public-registration-actions { align-items: center; display: flex; flex-wrap: wrap; gap: .7rem; justify-content: flex-end; }
.frpm-public-registration-success { background: #fff; border: 1px solid #d6e4db; border-radius: 1rem; box-shadow: 0 18px 45px rgba(18,66,39,.1); margin-top: 4rem; max-width: 42rem; padding: clamp(1.5rem,4vw,3rem); text-align: center; }
.frpm-public-registration-success > span { align-items: center; background: #e5f4e9; border-radius: 50%; color: #0b6a39; display: inline-flex; font-size: 1.6rem; height: 3.2rem; justify-content: center; width: 3.2rem; }
.frpm-public-registration-success h1 { color: #153f29; font-family: Inter,sans-serif; }
.frpm-registration-reference { background: #eef5f1; border-radius: .5rem; color: #315241; padding: .7rem; }
@media (max-width: 820px) {
  .frpm-public-registration-layout { grid-template-columns: 1fr; margin-top: 1rem; }
  .frpm-public-registration-guide { position: static; }
}
