/* =====================================================================
 * PHA PORTAL v2 — portal.css (2026-08-08)
 * Frame: compliance.rentspire.com Shell (240px grouped sidebar, sticky
 * page header, stat cards, one workspace per nav item).
 * Skin: the PHA solutions system — graph-grid canvas, --pha-* tokens,
 * IBM Plex Mono numerals, terminal radii (pha-shared.css).
 * Owner directive 2026-08-07: "FRAME THE APP TO THE MOLD OF THE
 * COMPLIANCE.RENTSPIRE.COM PORTAL, BUT KEEPING THE OVERALL
 * AESTHETICS/FEEL OF THE PHA SOLUTIONS" + grandma-simple, few words.
 * ===================================================================== */

body.portal{
  margin:0;font:400 14px/1.5 var(--pha-font-body,Inter,system-ui);
  color:var(--pha-text,#0a0d11);
  background:
    radial-gradient(1100px 600px at 50% -10%, rgba(26,86,164,.07), transparent 60%),
    linear-gradient(rgba(148,163,184,.16) 1px, transparent 1px),
    linear-gradient(90deg, rgba(148,163,184,.16) 1px, transparent 1px);
  background-size:auto,46px 46px,46px 46px;
  background-attachment:fixed;
  background-color:var(--pha-canvas,#eceff4);
}

/* ---------- App frame: sidebar + header + scrolling main ------------- */
.pt-app{display:grid;grid-template-columns:240px 1fr;grid-template-rows:auto 1fr;height:100vh;overflow:hidden}

/* ---------- Sidebar --------------------------------------------------- */
.pt-side{grid-row:1/3;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;
  background:rgba(249,251,253,.94);border-right:1px solid #cfd6e0}
.pt-brand{display:flex;align-items:center;gap:9px;padding:13px 14px 11px}
.pt-brand svg{width:22px;height:22px;color:var(--pha-blue,#1a56a4)}
.pt-brand b{display:block;font-size:13.5px;font-weight:700;letter-spacing:-.01em;line-height:1.1}
.pt-brand span{display:block;font:600 9.5px/1.4 var(--pha-font-mono,monospace);letter-spacing:.13em;color:var(--pha-text-muted,#3b4652)}
.pt-pha{margin:0 10px 8px;padding:9px 11px;background:#fff;border:1px solid #cfd6e0;border-radius:6px;position:relative}
.pt-pha-name{font-size:12.5px;font-weight:700;line-height:1.25}
.pt-pha-code{font:500 10px/1.6 var(--pha-font-mono,monospace);letter-spacing:.04em;color:var(--pha-text-muted,#3b4652)}
.pt-pha-tag{position:absolute;top:8px;right:8px;font:700 8.5px/1 var(--pha-font-mono,monospace);letter-spacing:.1em;
  color:var(--pha-green,#106339);background:var(--pha-green-bg,#d3ead9);border:1px solid #bfe0d2;border-radius:3px;padding:3px 5px}

.pt-nav{flex:1;padding:2px 10px 10px}
.pt-nav-sec{margin:13px 2px 4px;font:800 10px/1 Inter,system-ui;letter-spacing:.15em;color:var(--pha-blue,#1a56a4);text-transform:uppercase}
.pt-nav-sec:first-child{margin-top:4px}
.pt-nav a{display:flex;align-items:center;gap:7px;margin-bottom:1px;padding:6px 9px;border-radius:6px;
  font-size:13px;font-weight:500;color:var(--pha-text-secondary,#1d262f);text-decoration:none;position:relative}
.pt-nav a:hover{background:#eef2f8}
.pt-nav a.on{background:#e1ebf8;color:#123f7c;font-weight:700}
.pt-nav a.on::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:2px;background:var(--pha-blue,#1a56a4)}
.pt-nav a .grow{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.bd{font:700 8.5px/1 var(--pha-font-mono,monospace);letter-spacing:.09em;border-radius:3px;padding:3px 5px;flex:0 0 auto}
.bd-live{color:var(--pha-green,#106339);background:var(--pha-green-bg,#d3ead9);border:1px solid #bfe0d2}
.bd-build{color:var(--pha-amber,#82500a);background:var(--pha-amber-bg,#f3e4c8);border:1px solid #e8d5ae}
.bd-product{color:#fff;background:var(--pha-blue,#1a56a4);border:1px solid var(--pha-blue,#1a56a4)}

.pt-side-foot{border-top:1px solid #cfd6e0;padding:10px 12px}
.pt-me{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.pt-avatar{flex:0 0 30px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(26,86,164,.14);color:var(--pha-blue,#1a56a4);font:700 11px/1 Inter,system-ui}
.pt-me-name{font-size:12px;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-me-sub{font:500 9.5px/1.5 var(--pha-font-mono,monospace);color:var(--pha-text-muted,#3b4652)}
.pt-side-foot .out{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px;border:1px solid #cfd6e0;
  border-radius:6px;font-size:12px;font-weight:500;color:var(--pha-text-muted,#3b4652);text-decoration:none;background:#fff}
.pt-side-foot .out:hover{background:#eef2f8}

/* ---------- Header ---------------------------------------------------- */
.pt-top{grid-column:2;display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:11px 26px;background:rgba(255,255,255,.85);backdrop-filter:blur(8px);border-bottom:1px solid #cfd6e0}
.pt-top h1{margin:0;font-size:16.5px;font-weight:700;letter-spacing:-.01em;line-height:1.2}
.pt-top .sub{margin-top:1px;font-size:12px;color:var(--pha-text-muted,#3b4652)}
.pt-top-badge{display:flex;align-items:center;gap:6px;font:600 10px/1 var(--pha-font-mono,monospace);letter-spacing:.08em;
  color:var(--pha-text-muted,#3b4652);background:#fff;border:1px solid #cfd6e0;border-radius:5px;padding:7px 10px;white-space:nowrap}
.pt-top-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--pha-green,#106339)}

/* ---------- Main ------------------------------------------------------ */
.pt-main{grid-column:2;overflow-y:auto;overscroll-behavior:contain;padding:20px 26px 40px}
.pt-page{max-width:1120px;margin:0 auto}
.pt-page[hidden]{display:none}

.pt-sec{margin:22px 0 10px;display:flex;align-items:baseline;gap:10px}
.pt-sec h2{margin:0;font-size:13px;font-weight:700;letter-spacing:.01em}
.pt-sec .sub{font-size:12px;color:var(--pha-text-muted,#3b4652)}
.pt-sec a{font-size:12px;font-weight:600;color:var(--pha-blue,#1a56a4);text-decoration:none;margin-left:auto}
.pt-sec a:hover{text-decoration:underline}

/* Hero action — dark blue PHA showcase panel */
.pt-hero{display:flex;align-items:center;gap:18px;justify-content:space-between;border-radius:8px;padding:20px 24px;
  color:var(--pha-on-dark,#fff);border:1px solid #123c73;
  background:linear-gradient(160deg,#163c73 0%,#1a56a4 100%);box-shadow:0 10px 30px rgba(16,60,115,.25)}
.pt-hero h2{margin:0 0 3px;font-size:18px;font-weight:800;letter-spacing:-.01em}
.pt-hero p{margin:0;font-size:12.5px;color:var(--pha-on-dark-body,#dce8f7)}
.pt-hero .go{flex:0 0 auto;display:inline-block;background:#fff;color:#123f7c;font-size:13.5px;font-weight:700;
  text-decoration:none;border-radius:6px;padding:11px 18px}
.pt-hero .go:hover{background:#e9f0fa}

/* Stat cards */
.pt-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}
.pt-kpi{background:#fff;border:1px solid #cfd6e0;border-radius:6px;padding:12px 14px;box-shadow:var(--pha-shadow-card)}
.pt-kpi .v{font:600 23px/1.15 var(--pha-font-mono,monospace);letter-spacing:-.01em}
.pt-kpi .l{margin-top:3px;font-size:11.5px;font-weight:600;color:var(--pha-text-muted,#3b4652)}
.pt-kpi.k-build .v{color:var(--pha-text-muted,#3b4652)}
.pt-kpi .bd{margin-left:6px;vertical-align:2px}

/* Station tiles (dashboard) */
.pt-stations{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pt-st{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid #cfd6e0;border-radius:6px;
  padding:9px 11px;text-decoration:none;color:inherit;box-shadow:var(--pha-shadow-card)}
.pt-st:hover{border-color:var(--pha-blue,#1a56a4)}
.pt-st .num{flex:0 0 auto;font:700 10px/1 var(--pha-font-mono,monospace);color:#fff;background:#5a6b85;border-radius:4px;padding:4px 5px}
.pt-st.product .num{background:var(--pha-blue,#1a56a4)}
.pt-st .nm{flex:1;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* One-line rows (pipeline / checklists / tools) */
.pt-rows{display:flex;flex-direction:column;gap:6px}
.pt-row{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid #cfd6e0;border-radius:6px;
  padding:10px 13px;box-shadow:var(--pha-shadow-card)}
.pt-row .num{flex:0 0 auto;font:700 10px/1 var(--pha-font-mono,monospace);color:#fff;background:#5a6b85;border-radius:4px;padding:4px 6px}
.pt-row.product .num{background:var(--pha-blue,#1a56a4)}
.pt-row .nm{font-size:13px;font-weight:600}
.pt-row .d{font-size:12px;color:var(--pha-text-muted,#3b4652);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-row .sp{flex:1}
.pt-row a.act{font-size:12.5px;font-weight:700;color:var(--pha-blue,#1a56a4);text-decoration:none;white-space:nowrap}
.pt-row a.act:hover{text-decoration:underline}

/* Forms table */
.pt-table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid #cfd6e0;border-radius:6px;overflow:hidden}
.pt-table th{font:700 10px/1 var(--pha-font-mono,monospace);letter-spacing:.1em;text-transform:uppercase;text-align:left;
  color:var(--pha-text-muted,#3b4652);background:#f4f7fb;border-bottom:1px solid #cfd6e0;padding:9px 13px}
.pt-table td{font-size:12.5px;border-bottom:1px solid #e4e9f0;padding:9px 13px;vertical-align:middle}
.pt-table tr:last-child td{border-bottom:0}
.pt-table .fno{font:600 11.5px/1 var(--pha-font-mono,monospace);white-space:nowrap}
.pt-table .use{font:600 9px/1 var(--pha-font-mono,monospace);letter-spacing:.07em;color:var(--pha-cyan,#0a5675);
  background:var(--pha-cyan-bg,#d6e9f3);border:1px solid #bcd9e8;border-radius:3px;padding:3px 6px;white-space:nowrap}
.pt-table a{font-weight:700;color:var(--pha-blue,#1a56a4);text-decoration:none;white-space:nowrap}
.pt-table a:hover{text-decoration:underline}

/* Module cards (plan) */
.pt-mods{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.pt-mod{background:#fff;border:1px solid #cfd6e0;border-radius:6px;padding:14px 16px;box-shadow:var(--pha-shadow-card)}
.pt-mod .t{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:700}
.pt-mod .d{margin-top:5px;font-size:12.5px;color:var(--pha-text-secondary,#1d262f)}
.pt-mod .q{margin-top:9px}
.pt-mod .q a{font-size:12.5px;font-weight:700;color:var(--pha-blue,#1a56a4);text-decoration:none}
.pt-mod .q a:hover{text-decoration:underline}

/* Footnote */
.pt-note{margin-top:22px;font-size:11.5px;color:var(--pha-text-muted,#3b4652);border-top:1px solid #cfd6e0;padding-top:10px}

/* ---------- Sign-in gate (compliance login mold, graph-grid skin) ----- */
.pt-gate{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;
  background:
    radial-gradient(1100px 600px at 50% -10%, rgba(26,86,164,.09), transparent 60%),
    linear-gradient(rgba(148,163,184,.16) 1px, transparent 1px),
    linear-gradient(90deg, rgba(148,163,184,.16) 1px, transparent 1px);
  background-size:auto,46px 46px,46px 46px;background-color:var(--pha-canvas,#eceff4)}
.pt-gate[hidden]{display:none}
.pt-gate-card{background:#fff;border:1px solid #cfd6e0;border-radius:8px;box-shadow:0 16px 48px rgba(10,13,17,.12);
  width:100%;max-width:400px;padding:28px 30px}
.pt-gate-brand{display:flex;align-items:center;gap:9px;margin-bottom:16px}
.pt-gate-brand svg{width:24px;height:24px;color:var(--pha-blue,#1a56a4)}
.pt-gate-brand b{display:block;font-size:14px;font-weight:700;line-height:1.1}
.pt-gate-brand span{display:block;font:600 9.5px/1.4 var(--pha-font-mono,monospace);letter-spacing:.13em;color:var(--pha-text-muted,#3b4652)}
.pt-gate-card h1{margin:0 0 4px;font-size:19px;font-weight:800;letter-spacing:-.01em}
.pt-gate-card .sub{margin:0 0 16px;font-size:12.5px;color:var(--pha-text-muted,#3b4652)}
.pt-gate-card label{display:block;margin:11px 0 4px;font:700 10px/1 var(--pha-font-mono,monospace);letter-spacing:.11em;
  text-transform:uppercase;color:var(--pha-text-muted,#3b4652)}
.pt-gate-card select{width:100%;font:500 13.5px/1.3 Inter,system-ui;color:var(--pha-text,#0a0d11);background:#f6f8fb;
  border:1px solid #c3ccd8;border-radius:6px;padding:10px 12px;appearance:auto}
.pt-gate-card select:disabled{color:#8b95a3}
#gate-btn{width:100%;margin-top:16px;font:700 13.5px/1 Inter,system-ui;color:#fff;background:var(--pha-blue,#1a56a4);
  border:1px solid var(--pha-blue,#1a56a4);border-radius:6px;padding:12px;cursor:pointer}
#gate-btn:hover{background:var(--pha-blue-hover,#123f7c)}
#gate-btn:disabled{background:#9fb4d1;border-color:#9fb4d1;cursor:default}
.pt-gate-foot{display:flex;gap:7px;margin-top:14px;font-size:11px;line-height:1.45;color:var(--pha-text-muted,#3b4652)}
.pt-gate-foot svg{flex:0 0 auto;margin-top:1px;color:var(--pha-green,#106339)}

/* ---------- Small screens (portal is a desk tool; keep it usable) ----- */
@media (max-width:900px){
  .pt-app{grid-template-columns:1fr}
  .pt-side{display:none}
  .pt-top,.pt-main{grid-column:1}
  .pt-kpis{grid-template-columns:repeat(2,1fr)}
  .pt-stations{grid-template-columns:1fr}
  .pt-mods{grid-template-columns:1fr}
}

/* ===== Station 4: rrpro embedded pixel-for-pixel (2026-08-08) ============ */
.pt-main.rr{padding:0;overflow:hidden}
.pt-page-rr{max-width:none;height:100%}
#rr-frame{display:block;width:100%;height:100%;border:0;background:#f4f7fb}
