:root{
  --bg:#f5f7fb;--panel:#fff;--text:#172033;--muted:#687386;--line:#dfe5ef;
  --blue:#2563eb;--cyan:#06b6d4;--green:#16a34a;--amber:#d97706;--red:#dc2626;
  --purple:#7c3aed;--shadow:0 8px 28px rgba(15,23,42,.07);
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}
button{font:inherit;cursor:pointer}.app{display:flex;min-height:100vh}
.sidebar{width:265px;background:#101828;color:#dce5f3;padding:22px 15px;position:fixed;inset:0 auto 0 0;overflow:auto}
.brand{display:flex;align-items:center;gap:11px;padding:4px 10px 25px;font-size:21px;font-weight:800;color:#fff}
.logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#2563eb,#06b6d4);display:grid;place-items:center;color:white;font-weight:900}
.nav-section{font-size:10px;text-transform:uppercase;letter-spacing:1.3px;color:#718096;margin:18px 10px 8px}
.nav button{width:100%;border:0;background:transparent;color:#aebbd0;text-align:left;padding:10px 12px;border-radius:8px;margin:2px 0}
.nav button:hover,.nav button.active{background:#1d2939;color:#fff}
.nav button span{display:inline-block;width:23px}.main{margin-left:265px;width:calc(100% - 265px)}
.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:5}
.breadcrumb{font-size:14px;color:var(--muted)}.breadcrumb b{color:var(--text)}
.conn{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.conn .dot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block}
.conn.offline .dot{background:var(--amber)}
.user{display:flex;align-items:center;gap:10px;font-size:13px}.avatar{width:34px;height:34px;border-radius:50%;background:#dbeafe;color:#1d4ed8;display:grid;place-items:center;font-weight:700}
.content{padding:28px;max-width:1500px;margin:auto}.hero{display:flex;justify-content:space-between;gap:25px;align-items:flex-start;margin-bottom:25px}
h1{font-size:29px;margin:0 0 7px}.hero p{color:var(--muted);margin:0;max-width:800px}.actions{display:flex;gap:8px}.btn{border:1px solid var(--line);background:#fff;padding:9px 14px;border-radius:8px}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:13px;margin-bottom:24px}.layer-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:15px;box-shadow:var(--shadow);cursor:pointer;transition:.2s}.layer-card:hover{transform:translateY(-2px)}.layer-card.selected{border:2px solid var(--blue)}
.layer-num{font-size:11px;color:var(--muted);text-transform:uppercase}.layer-name{font-weight:800;margin:5px 0}.layer-role{font-size:12px;color:var(--muted);line-height:1.45}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:5px}
.grid{display:grid;grid-template-columns:1.7fr 1fr;gap:20px}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.panel-head{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.panel-head h2{font-size:16px;margin:0}.panel-body{padding:18px}
.arch{display:flex;flex-direction:column;gap:10px}.arch-row{border:1px solid var(--line);border-radius:10px;padding:13px 15px;background:#fbfcfe;display:flex;align-items:center;gap:15px}.arch-row.active{border-color:#93c5fd;background:#eff6ff}.arch-icon{width:38px;height:38px;border-radius:9px;background:#eaf2ff;display:grid;place-items:center;font-weight:800;color:#1d4ed8}.arch-info{flex:1}.arch-info b{font-size:14px}.arch-info small{display:block;color:var(--muted);margin-top:3px}.arrow{text-align:center;color:#94a3b8;height:4px}
.features{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.feature{padding:10px;border:1px solid var(--line);border-radius:8px;font-size:12px;background:#fff}.feature b{display:block;margin-bottom:3px}.feature small{color:var(--muted)}
.flowline{display:flex;align-items:center;gap:0;overflow:auto;padding:10px 2px 18px}.step{min-width:145px;border:1px solid var(--line);border-radius:9px;padding:12px;background:#fff;text-align:center}.step b{font-size:12px}.step small{display:block;color:var(--muted);margin-top:4px}.flow-arrow{padding:0 8px;color:#94a3b8}
.status{display:flex;align-items:center;gap:7px;font-size:12px}.status .dot{background:var(--green)}
.log{font-family:ui-monospace,Consolas,monospace;font-size:11px;background:#0b1220;color:#cbd5e1;border-radius:8px;padding:12px;height:170px;overflow:auto}.log div{margin-bottom:7px}.ok{color:#86efac}.warn{color:#fcd34d}
.badge{font-size:10px;padding:3px 7px;border-radius:20px;background:#ecfdf5;color:#15803d}
.badge.warn{background:#fef3c7;color:#92400e}
.badge.bad{background:#fee2e2;color:#b91c1c}
.muted{color:#6b7280;font-size:13px}
.obot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:12px}
.obot-stat{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px}
.obot-stat b{display:block;font-size:13px;margin-bottom:2px}
.obot-stat span{font-size:12px;color:#6b7280}
.obot-tools{margin-top:12px;font-size:13px}
.obot-tools code{background:#f3f4f6;padding:1px 5px;border-radius:5px;margin-right:6px}
.detail{font-size:13px;line-height:1.6;color:var(--muted)}.detail strong{color:var(--text)}.hidden{display:none}
.crud-form{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-bottom:4px}
.crud-field{display:flex;flex-direction:column;font-size:11.5px;color:var(--muted);gap:4px}
.crud-field input,.crud-field select{font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:7px;min-width:150px;background:#fff;color:var(--text)}
.crud-table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:640px}
.crud-table th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px}
.crud-table td{padding:8px 10px;border-bottom:1px solid var(--line);color:var(--text)}
.crud-table tr:hover td{background:#fbfcfe}
.crud-table .btn{padding:5px 9px;font-size:11.5px}
@media(max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}}
@media(max-width:720px){.sidebar{width:70px}.brand span,.nav-section,.nav button label{display:none}.main{margin-left:70px;width:calc(100% - 70px)}.content{padding:18px}.cards{grid-template-columns:1fr}.hero{display:block}.actions{margin-top:15px}}

/* ---- HIAM functional-area links on the Que ID HIAM product page ----
   Links out to hiam/console.html#<section>, the dedicated HIAM console
   with the full 15-object model (see docs/hiam-gap-analysis.md). Kept
   here rather than in hiam/console.css since this renders on THIS page
   (index.php), not inside the console itself. */
.hiam-areas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin-top:4px}
.hiam-area-card{display:block;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff;text-decoration:none;color:inherit;transition:.15s}
.hiam-area-card:hover{border-color:#93c5fd;background:#f8fbff;transform:translateY(-1px)}
.hiam-area-card .hac-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.hiam-area-code{font-family:ui-monospace,Consolas,monospace;font-size:10.5px;font-weight:700;color:#7c3aed}
.hiam-area-card b{display:block;font-size:13.5px;margin-bottom:2px;color:var(--text)}
.hiam-area-card span.desc{font-size:11.5px;color:var(--muted);line-height:1.4}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;padding:3px 8px;border-radius:20px;white-space:nowrap}
.pill.real{background:#ecfdf5;color:#15803d}
.pill.partial{background:#fef3c7;color:#92400e}
.pill.missing{background:#fee2e2;color:#b91c1c}
.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}

/* ---- end-user portal (restructure) ---- */
.nav-bottom{margin-top:26px;border-top:1px solid #2a3850}
.nav-action{display:block;width:100%;border:0;background:transparent;color:#c3cee0;text-align:left;padding:10px 12px;border-radius:8px;margin:2px 0;text-decoration:none;font:inherit;cursor:pointer}
.nav-action:hover,.nav-action:focus-visible{background:#1d2939;color:#fff}
.nav-action span{display:inline-block;width:23px}
.nav-action.admin{color:#fff;background:#1e3a8a}.nav-action.admin:hover{background:#2748b4}
.notice{margin:0 0 18px;padding:12px 16px;border-radius:10px;background:#fff7e0;border:1px solid #e8c766;color:#5b4300}
.pt-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}
.pt-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px}
.pt-card h3{margin:0 0 10px;font-size:15px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.pt-kv{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed #e5eaf2;font-size:14px}
.pt-kv:last-child{border-bottom:0}.pt-kv b{font-variant-numeric:tabular-nums}
.pt-chip{display:inline-block;padding:3px 9px;border-radius:99px;background:#eaf0ff;color:#1e40af;font-size:12px;margin:2px 4px 2px 0}
.pt-chip.ok{background:#e1f6e8;color:#14532d}.pt-chip.warn{background:#fdecc8;color:#6b3f00}.pt-chip.off{background:#eceff4;color:#3d4757}.pt-chip.bad{background:#fde2e2;color:#7f1d1d}
.pt-note{font-size:13px;color:#4b5667;margin-top:8px}
.pt-table{width:100%;border-collapse:collapse;font-size:14px}.pt-table th,.pt-table td{text-align:left;padding:9px 10px;border-bottom:1px solid #e5eaf2;vertical-align:top}
.pt-table th{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:#4b5667}
.pt-form{display:grid;gap:12px;max-width:420px}.pt-form label{display:grid;gap:4px;font-size:14px}
.pt-form input{padding:9px 10px;border:1px solid #c5cedb;border-radius:8px;font:inherit}
.pt-err{color:#b91c1c;font-size:13px}.pt-ok{color:#166534;font-size:13px}
.pt-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.pt-tabs button{border:1px solid var(--line);background:#fff;border-radius:99px;padding:7px 14px}
.pt-tabs button[aria-pressed=true]{background:#1e3a8a;color:#fff;border-color:#1e3a8a}
.pt-avatar{width:72px;height:72px;border-radius:50%;background:linear-gradient(135deg,#2563eb,#06b6d4);color:#fff;display:grid;place-items:center;font-size:26px;font-weight:800}
.pt-hub{width:100%;height:calc(100vh - 150px);min-height:520px;border:1px solid var(--line);border-radius:12px;background:#fff}
.pt-secret{font-family:Consolas,monospace;background:#f1f4f9;padding:8px 10px;border-radius:8px;word-break:break-all;user-select:all}
@media(max-width:1100px){.pt-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.pt-stats{grid-template-columns:1fr}.nav-action label{display:none}}
.hero p{color:#4b5667}
.sidebar:has(.nav-bottom){display:flex;flex-direction:column}
.nav-bottom{position:static;margin-top:auto;padding:10px 0 4px;background:transparent}
.nav-section + .nav{flex:none}
.pt-chip{white-space:nowrap;flex:none}
.pt-kv{align-items:center}

/* ---- admin console ---- */
.tenant-switch{display:grid;gap:4px;margin:0 10px 6px;font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:#9fb0c8}
.tenant-switch select{background:#1d2939;color:#fff;border:1px solid #33445f;border-radius:8px;padding:8px;font:inherit;font-size:14px;text-transform:none;letter-spacing:0}
.nav-bottom-row{display:flex;gap:6px}.nav-bottom-row .nav-action{flex:1;padding:10px 8px;text-align:center}.nav-bottom-row .nav-action span{display:none}
.pt-inline{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.pt-inline label{display:grid;gap:4px;font-size:13px}
.pt-inline input,.pt-inline select,.pt-form select{padding:8px 10px;border:1px solid #c5cedb;border-radius:8px;font:inherit;background:#fff}
details.pt-new{margin-bottom:14px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px}details.pt-new summary{cursor:pointer;font-weight:600}
.pt-stat{font-size:28px;font-weight:800;margin:2px 0}.pt-link{word-break:break-all}
body.admin .nav button{padding:7px 12px;margin:1px 0}body.admin .nav-section{margin:10px 10px 5px}body.admin .brand{padding-bottom:14px}
/* collapsible side menu */
.nav-toggle{background:none;border:1px solid var(--line,#e2e8f0);border-radius:8px;width:36px;height:36px;font-size:18px;line-height:1;color:#334155;margin-right:14px;flex:none}
.nav-toggle:hover{background:#f1f5f9}
.topbar{justify-content:flex-start;gap:0}.topbar>*:not(.nav-toggle):last-child{margin-left:auto}
.sidebar,.main{transition:width .18s,margin-left .18s}
body.nav-collapsed .sidebar{width:70px;padding-left:9px;padding-right:9px}
body.nav-collapsed .brand span,body.nav-collapsed .nav-section,body.nav-collapsed .nav button label{display:none}
body.nav-collapsed .brand{padding-left:6px;padding-right:6px}
body.nav-collapsed .main{margin-left:70px;width:calc(100% - 70px)}
body.nav-collapsed .nav button{justify-content:center;padding-left:4px;padding-right:4px}
body.nav-collapsed .sidebar .back-link,body.nav-collapsed .sidebar .nav-bottom a{font-size:0;display:block;text-align:center}
body.nav-collapsed .sidebar .back-link::before,body.nav-collapsed .sidebar .nav-bottom a::before{content:"\2190";font-size:16px}
/* nav line icons */
.nav button span.nav-ic{display:inline-flex;width:24px;min-width:24px;padding:0;margin-top:1px;color:inherit;opacity:.9;flex:none;align-items:center;justify-content:center}
.nav-ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav button:hover span.nav-ic,.nav button.active span.nav-ic{opacity:1}
.nav button[data-ic]{display:flex;align-items:center;gap:11px;text-align:left}
.nav button[data-ic] span.nav-ic{margin-top:0}
.nav button[data-ic] label{flex:1;line-height:1.3}
/* table search + pagination */
.tp-bar{display:flex;align-items:center;gap:12px;margin:10px 0 6px}
.tp-search{flex:0 1 280px;padding:7px 10px;border:1px solid #cbd5e1;border-radius:8px;font:inherit;font-size:13px}
.tp-count{font-size:12px;color:#64748b}
.tp-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:8px 0 4px;font-size:12.5px;color:#475569}
.tp-ctrl{display:inline-flex;align-items:center;gap:8px}
.tp-ctrl button{border:1px solid #cbd5e1;background:#fff;border-radius:7px;padding:5px 10px;font:inherit;font-size:12.5px}
.tp-ctrl button:disabled{opacity:.45;cursor:default}
.tp-ctrl select{padding:4px 6px;border:1px solid #cbd5e1;border-radius:6px;font:inherit;font-size:12.5px}
