/* RayAssist Client Portal 4.0 — refinement layer. Keeps the approved Portal
   identity while adding depth, ray motion, accessibility, and responsive polish. */
:root{--portal-ease:cubic-bezier(.22,1,.36,1)}
body.portal-app-body{background:
 radial-gradient(circle at 82% 8%,rgba(91,141,239,.08),transparent 28rem),
 radial-gradient(circle at 12% 88%,rgba(18,168,107,.08),transparent 32rem),var(--bg)}
.portal-ray-field{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0;opacity:.6}
.portal-ray-field span,.auth-rays span{position:absolute;display:block;height:1px;width:58vw;min-width:520px;background:linear-gradient(90deg,transparent,rgba(18,168,107,.26),rgba(91,141,239,.12),transparent);transform:rotate(27deg);filter:drop-shadow(0 0 9px rgba(18,168,107,.13));animation:portalRay 15s linear infinite}
.portal-ray-field span:nth-child(1),.auth-rays span:nth-child(1){top:8%;left:-42%;animation-delay:-2s}
.portal-ray-field span:nth-child(2),.auth-rays span:nth-child(2){top:38%;left:-56%;animation-delay:-9s;animation-duration:19s}
.portal-ray-field span:nth-child(3),.auth-rays span:nth-child(3){top:68%;left:-48%;animation-delay:-5s;animation-duration:23s}
.portal-ray-field span:nth-child(4),.auth-rays span:nth-child(4){top:90%;left:-64%;animation-delay:-14s;animation-duration:27s}
@keyframes portalRay{0%{translate:-12vw 6vh;opacity:0}12%{opacity:.9}82%{opacity:.45}100%{translate:180vw -42vh;opacity:0}}
.portal-app-body .app{position:relative;z-index:1}
.portal-app-body .sidebar{background:color-mix(in srgb,var(--bg2) 92%,transparent);backdrop-filter:blur(18px);box-shadow:8px 0 34px rgba(9,30,20,.035)}
.portal-app-body .topbar{background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(18px)}
.portal-app-body .content{max-width:1450px}
.portal-app-body .card,.portal-app-body .stat{transition:transform .28s var(--portal-ease),box-shadow .28s var(--portal-ease),border-color .28s}
.portal-app-body .card:hover,.portal-app-body .stat:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--brand) 24%,var(--border));box-shadow:0 18px 44px rgba(10,36,23,.09)}
[data-theme=dark] .portal-app-body .card:hover,[data-theme=dark] .portal-app-body .stat:hover{box-shadow:0 18px 44px rgba(0,0,0,.3)}
.portal-app-body .btn-primary{background:linear-gradient(135deg,#12a86b,#078a52);box-shadow:0 8px 22px rgba(18,168,107,.23)}
.portal-app-body .btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 30px rgba(18,168,107,.32)}
.workspace-launch{display:inline-flex;align-items:center;gap:9px;padding:8px 13px;border-radius:11px;background:linear-gradient(135deg,#0a7f50,#12a86b);color:#fff;text-decoration:none;font-size:12px;font-weight:800;box-shadow:0 8px 20px rgba(18,168,107,.22)}
.workspace-launch svg{width:15px;height:15px}.workspace-launch:hover{color:#fff;transform:translateY(-1px)}
.ams-workspace-card{position:relative;overflow:hidden;border:1px solid color-mix(in srgb,var(--brand) 34%,var(--border));background:linear-gradient(125deg,color-mix(in srgb,var(--brand-soft) 88%,var(--surface)),color-mix(in srgb,var(--blue-soft) 45%,var(--surface)));padding:24px 26px;border-radius:20px;margin-bottom:22px;display:flex;align-items:center;justify-content:space-between;gap:22px;box-shadow:var(--shadow)}
.ams-workspace-card:after{content:'';position:absolute;right:-60px;top:-90px;width:240px;height:240px;border-radius:50%;border:1px solid rgba(18,168,107,.2);box-shadow:0 0 0 30px rgba(18,168,107,.035),0 0 0 65px rgba(91,141,239,.025)}
.ams-workspace-copy{position:relative;z-index:1;display:flex;align-items:center;gap:16px}.ams-workspace-icon{width:50px;height:50px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,#12a86b,#0a7f50);color:#fff;box-shadow:0 10px 24px rgba(18,168,107,.25);flex:none}.ams-workspace-copy h2{font-size:18px;margin-bottom:4px}.ams-workspace-copy p{color:var(--text2);font-size:13px;max-width:700px}.ams-workspace-actions{position:relative;z-index:1;display:flex;gap:9px;flex-wrap:wrap}
.service-workspace-row{margin-top:15px;padding-top:15px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.service-workspace-note{font-size:12px;color:var(--text2)}
.portal-auth-message{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 18% 20%,rgba(18,168,107,.13),transparent 30rem),radial-gradient(circle at 85% 80%,rgba(91,141,239,.1),transparent 30rem),var(--bg)}
.auth-message-card{width:min(460px,100%);background:var(--surface);border:1px solid var(--border);border-radius:22px;padding:34px;box-shadow:var(--shadow-lg);text-align:center}.auth-message-logo img{width:155px;max-height:48px;object-fit:contain;margin-bottom:26px}.auth-result-icon{width:62px;height:62px;border-radius:20px;display:grid;place-items:center;font-size:28px;font-weight:800;margin:0 auto 18px}.auth-result-icon.ok{background:var(--brand-soft);color:var(--brand-dk)}.auth-result-icon.bad{background:rgba(220,75,68,.1);color:#dc4b44}.auth-message-card h1{font-size:27px;margin-bottom:10px}.auth-message-card>p{font-size:14px;color:var(--text2);margin-bottom:24px;line-height:1.7}.auth-message-help{font-size:11px;color:var(--text3);margin-top:23px}
@media(max-width:760px){.ams-workspace-card{align-items:flex-start;flex-direction:column}.ams-workspace-actions{width:100%}.ams-workspace-actions .btn{flex:1}.workspace-launch span{display:none}.portal-app-body .topbar-right{gap:5px}}
@media(prefers-reduced-motion:reduce){.portal-ray-field span,.auth-rays span{animation:none;opacity:.25}.portal-app-body .card:hover,.portal-app-body .stat:hover,.portal-app-body .btn-primary:hover,.workspace-launch:hover{transform:none}}

/* ============================================================
   Portal 4.1 — Admin One-inspired application shell
   The structure remains native PHP; only the visual language is borrowed:
   graphite navigation, crisp SaaS cards, compact controls and clear data.
   ============================================================ */
:root{--sidebar-w:252px}
[data-theme=light]{
  --bg:#f1f5f9;--bg2:#fff;--bg3:#f8fafc;--surface:#fff;
  --border:#e2e8f0;--text:#0f172a;--text2:#475569;--text3:#8492a6;
  --shadow:0 1px 2px rgba(15,23,42,.04),0 7px 22px rgba(15,23,42,.045);
  --shadow-lg:0 24px 55px rgba(15,23,42,.14)
}
[data-theme=dark]{
  --bg:#0b1120;--bg2:#111827;--bg3:#172033;--surface:#111827;
  --border:#263247;--text:#f1f5f9;--text2:#b0bdd0;--text3:#748198;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 26px rgba(0,0,0,.2)
}
body.portal-app-body{background-color:var(--bg);background-image:
  radial-gradient(circle at 86% 4%,rgba(59,130,246,.075),transparent 27rem),
  radial-gradient(circle at 8% 94%,rgba(18,168,107,.075),transparent 31rem)}
.portal-ray-field{opacity:.44}
.portal-app-body .sidebar{
  background:linear-gradient(180deg,#111827 0%,#0f172a 58%,#0b1220 100%);
  border-right:1px solid rgba(148,163,184,.14);box-shadow:12px 0 34px rgba(2,6,23,.12);
  color:#e5edf7;backdrop-filter:none
}
.portal-app-body .sidebar-logo{min-height:78px;padding:18px 20px;border-color:rgba(148,163,184,.15)}
.portal-app-body .logo-img{width:168px!important;max-width:168px!important;max-height:45px!important;object-fit:contain;object-position:left center}
.portal-app-body .nav{padding:14px 12px 20px;scrollbar-width:thin;scrollbar-color:#344258 transparent}
.portal-app-body .nav-section{color:#718096;padding:17px 12px 8px;font-size:9.5px;letter-spacing:.13em}
.portal-app-body .nav-item{color:#a9b7ca;border:1px solid transparent;border-radius:9px;padding:10px 12px;margin-bottom:3px;font-size:13.5px}
.portal-app-body .nav-item:hover{background:rgba(255,255,255,.055);color:#f8fafc;border-color:rgba(148,163,184,.08)}
.portal-app-body .nav-item.active{background:linear-gradient(90deg,rgba(18,168,107,.22),rgba(18,168,107,.10));color:#70e0ae;border-color:rgba(52,211,153,.24);box-shadow:inset 3px 0 #21c483}
.portal-app-body .nav-item.active::before{display:none}
.portal-app-body .nav-item svg{color:currentColor;opacity:.96}
.portal-app-body .nav-badge{background:#ef476f;box-shadow:0 0 0 3px rgba(239,71,111,.15)}
.portal-app-body .sidebar-foot{border-color:rgba(148,163,184,.15);background:rgba(2,6,23,.13)}
.portal-app-body .user-chip{background:rgba(255,255,255,.055);color:#eef5fb;border:1px solid rgba(148,163,184,.12)}
.portal-app-body .user-chip:hover{background:rgba(18,168,107,.13)}
.portal-app-body .user-chip [style*="var(--text3)"]{color:#8796aa!important}
.portal-app-body .sidebar-foot .avatar{background:linear-gradient(135deg,#12a86b,#0e7490);color:#fff}
.portal-app-body .support-link{color:#8fa0b6}.portal-app-body .support-link:hover{background:rgba(255,255,255,.06);color:#c9f8e2}
.portal-app-body .sidebar-foot .btn-secondary{background:rgba(255,255,255,.055);border-color:rgba(148,163,184,.18);color:#d6e0ec}
.portal-app-body .sidebar-foot .btn-secondary:hover{background:rgba(255,255,255,.10)}
.portal-app-body .main{background:transparent}
.portal-app-body .topbar{min-height:72px;padding:13px 30px;background:color-mix(in srgb,var(--surface) 92%,transparent);border-bottom-color:var(--border);box-shadow:0 1px 2px rgba(15,23,42,.025);backdrop-filter:blur(16px)}
.portal-app-body .topbar h1{font-size:19px;font-weight:750;letter-spacing:-.025em}.portal-app-body .topbar .sub{font-size:12px}
.portal-app-body .content{max-width:1500px;padding:28px 30px 46px}
.portal-app-body .card,.portal-app-body .stat{border-radius:12px;border-color:var(--border);box-shadow:var(--shadow)}
.portal-app-body .card{padding:22px}.portal-app-body .card-title{font-size:15px}
.portal-app-body .card:hover,.portal-app-body .stat:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--brand) 22%,var(--border));box-shadow:0 12px 30px rgba(15,23,42,.075)}
[data-theme=dark] .portal-app-body .card:hover,[data-theme=dark] .portal-app-body .stat:hover{box-shadow:0 14px 30px rgba(0,0,0,.24)}
.portal-app-body .grid-4{gap:14px}.portal-app-body .stat{min-height:132px;padding:20px 21px;background:linear-gradient(160deg,var(--surface),color-mix(in srgb,var(--surface) 91%,var(--brand-soft)))}
.portal-app-body .stat::before{top:0;right:0;bottom:auto;left:0;width:auto;height:3px;opacity:1;background:var(--stat-accent,#12a86b)}
.portal-app-body .grid-4>.stat:nth-child(2){--stat-accent:#3b82f6}.portal-app-body .grid-4>.stat:nth-child(3){--stat-accent:#8b5cf6}.portal-app-body .grid-4>.stat:nth-child(4){--stat-accent:#f59e0b}
.portal-app-body .stat-label{font-size:10.5px;letter-spacing:.085em}.portal-app-body .stat-value{font-size:28px}.portal-app-body .stat-sub{font-size:12px}
.portal-app-body .btn{border-radius:8px}.portal-app-body .btn-primary{background:linear-gradient(135deg,#13aa6c,#078653)}
.portal-app-body .btn-secondary,.portal-app-body .toggle-btn{background:var(--surface);border-color:var(--border)}
.portal-app-body .toggle-btn{border-radius:8px;min-height:37px}
.portal-app-body .workspace-launch{border-radius:8px;padding:9px 13px;background:linear-gradient(135deg,#12a86b,#078653)}
.portal-app-body table{min-width:620px}.portal-app-body .card:has(table){overflow-x:auto}.portal-app-body th{background:color-mix(in srgb,var(--bg3) 78%,transparent);font-size:10px;letter-spacing:.09em}.portal-app-body td{font-size:13px}
.portal-app-body .ams-workspace-card{border-radius:14px;padding:23px 25px;background:
  linear-gradient(112deg,color-mix(in srgb,var(--brand-soft) 78%,var(--surface)),color-mix(in srgb,#dbeafe 48%,var(--surface)));box-shadow:var(--shadow)}
[data-theme=dark] .portal-app-body .ams-workspace-card{background:linear-gradient(112deg,rgba(18,168,107,.13),rgba(59,130,246,.10)),var(--surface)}
.portal-app-body .ams-workspace-icon{border-radius:12px}.portal-app-body .ams-workspace-copy h2{font-size:17px}
.portal-app-body .form-control{border-radius:8px;background:var(--surface);border-color:var(--border)}
@media(max-width:900px){
  .portal-app-body .sidebar{box-shadow:22px 0 65px rgba(2,6,23,.38)}
  .portal-app-body .content{padding:20px 16px 36px}.portal-app-body .topbar{padding:12px 15px;min-height:66px}
}
@media(max-width:560px){.portal-app-body .topbar h1{font-size:16px}.portal-app-body .topbar .sub{display:none}.portal-app-body .grid-4{grid-template-columns:1fr 1fr}.portal-app-body .stat{min-height:118px;padding:17px}.portal-app-body .stat-value{font-size:23px}.portal-app-body .card{padding:18px}}

/* ============================================================
   Portal 4.2 — focused client experience upgrade
   ============================================================ */
.portal-app-body .sidebar-logo{overflow:hidden}
.sidebar-brand-lockup{display:flex;flex-direction:column;align-items:flex-start;gap:5px;width:100%;min-width:0}
.sidebar-wordmark-crop{position:relative;width:178px;height:34px;overflow:hidden;flex:none}
.portal-app-body .sidebar-wordmark-crop .logo-img{position:absolute!important;width:243px!important;max-width:none!important;height:auto!important;max-height:none!important;left:-17px;top:-41px;display:block}
.sidebar-product-label{font-size:8.5px;line-height:1;text-transform:uppercase;letter-spacing:.155em;color:#7889a0;font-weight:750;padding-left:1px;white-space:nowrap}
.portal-app-body .topbar-right{gap:7px}
.topbar-icon-button{position:relative;width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text2);text-decoration:none;transition:background .16s,border-color .16s,color .16s,transform .16s}
.topbar-icon-button svg{width:17px;height:17px}.topbar-icon-button:hover{background:var(--bg3);border-color:var(--border2);color:var(--brand-dk);transform:translateY(-1px)}
.topbar-count{position:absolute;right:-4px;top:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:10px;background:#ef476f;color:#fff;border:2px solid var(--surface);font-size:8px;line-height:13px;text-align:center;font-weight:800;box-shadow:0 3px 8px rgba(239,71,111,.28)}
.topbar-user-link{height:40px;display:flex;align-items:center;gap:9px;margin-left:2px;padding:3px 8px 3px 3px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);text-decoration:none;transition:border-color .16s,background .16s}
.topbar-user-link:hover{border-color:var(--border2);background:var(--bg3);color:var(--text)}.topbar-user-link .avatar{width:32px;height:32px;background:linear-gradient(135deg,#12a86b,#0e7490);color:#fff}
.topbar-user-link>span{display:flex;flex-direction:column;line-height:1.2;max-width:100px}.topbar-user-link strong{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-user-link small{font-size:8.5px;color:var(--text3);margin-top:2px;white-space:nowrap}
.portal-app-body .workspace-launch{min-height:38px}.workspace-launch small{font-size:8px;text-transform:uppercase;letter-spacing:.08em;padding:2px 5px;border-radius:5px;background:rgba(255,255,255,.17)}
.workspace-launch.is-locked{background:linear-gradient(135deg,#334155,#475569);box-shadow:none}.workspace-launch.is-locked:hover{background:linear-gradient(135deg,#12a86b,#078653);box-shadow:0 9px 22px rgba(18,168,107,.24)}
.client-command-center{position:relative;overflow:hidden;margin-bottom:18px;padding:25px 27px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(112deg,var(--surface),color-mix(in srgb,var(--blue-soft) 42%,var(--surface)));box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;gap:24px}
.client-command-center:after{content:'';position:absolute;width:330px;height:330px;right:-155px;top:-175px;border-radius:50%;border:1px solid rgba(59,130,246,.12);box-shadow:0 0 0 34px rgba(18,168,107,.035),0 0 0 74px rgba(59,130,246,.028)}
.client-command-copy{position:relative;z-index:1}.client-command-kicker,.workspace-eyebrow{font-size:9.5px;text-transform:uppercase;letter-spacing:.13em;color:var(--brand-dk);font-weight:800;margin-bottom:6px}.client-command-copy h2{font-size:23px;margin:0 0 6px}.client-command-copy p{font-size:12.5px;color:var(--text2);max-width:600px}
.client-quick-actions{position:relative;z-index:1;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.quick-action{min-width:92px;height:62px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--surface) 88%,transparent);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:6px;color:var(--text2);text-decoration:none;font-size:9.5px;font-weight:700;box-shadow:0 2px 8px rgba(15,23,42,.03);transition:transform .16s,border-color .16s,color .16s,background .16s}.quick-action svg{width:17px;height:17px;color:var(--brand)}.quick-action:hover{transform:translateY(-2px);border-color:var(--brand-line);background:var(--surface);color:var(--text)}
.ams-workspace-card .workspace-eyebrow{margin-bottom:4px}.ams-workspace-card--locked{border-style:dashed;background:linear-gradient(112deg,color-mix(in srgb,#f1f5f9 70%,var(--surface)),color-mix(in srgb,var(--blue-soft) 36%,var(--surface)))}
.ams-workspace-card--locked .ams-workspace-icon{background:linear-gradient(135deg,#475569,#64748b);box-shadow:0 9px 22px rgba(51,65,85,.18)}
[data-theme=dark] .ams-workspace-card--locked{background:linear-gradient(112deg,rgba(51,65,85,.22),rgba(59,130,246,.08)),var(--surface)}
.stat-with-icon{display:flex;align-items:center;gap:15px}.stat-with-icon>div:last-child{min-width:0}.stat-icon{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;flex:none}.stat-icon svg{width:20px;height:20px}.stat-icon.is-green{background:rgba(18,168,107,.12);color:#0c9b60}.stat-icon.is-blue{background:rgba(59,130,246,.12);color:#3b82f6}.stat-icon.is-violet{background:rgba(139,92,246,.12);color:#8b5cf6}.stat-icon.is-amber{background:rgba(245,158,11,.13);color:#e29008}
@media(max-width:1180px){.topbar-user-link>span{display:none}.topbar-user-link{padding-right:3px}.topbar-help{display:none}.workspace-launch small{display:none}}
@media(max-width:1020px){.client-command-center{align-items:flex-start;flex-direction:column}.client-quick-actions{justify-content:flex-start;width:100%}.quick-action{flex:1;min-width:120px}}
@media(max-width:760px){.topbar-icon-button{width:36px;height:36px}.portal-app-body .topbar-right .workspace-launch span{display:none}.portal-app-body .workspace-launch{width:38px;padding:0;justify-content:center}.portal-app-body .toggle-btn .lang-opt:not(.active){display:none}.client-command-center{padding:21px}.client-command-copy h2{font-size:20px}}
@media(max-width:560px){.portal-app-body .grid-4{grid-template-columns:1fr}.stat-with-icon{min-height:106px}.client-quick-actions{display:grid;grid-template-columns:repeat(3,1fr)}.quick-action{min-width:0;width:100%}.topbar-user-link{display:none}}
.service-access-panel{margin-bottom:18px;padding:19px 21px;border:1px dashed color-mix(in srgb,var(--text3) 42%,var(--border));border-radius:12px;background:linear-gradient(110deg,color-mix(in srgb,var(--bg3) 76%,var(--surface)),var(--surface));display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:15px;box-shadow:var(--shadow)}
.service-access-panel.is-active{border-style:solid;border-color:var(--brand-line);background:linear-gradient(110deg,color-mix(in srgb,var(--brand-soft) 72%,var(--surface)),var(--surface))}.service-access-icon{width:45px;height:45px;border-radius:12px;background:#475569;color:#fff;display:grid;place-items:center}.service-access-panel.is-active .service-access-icon{background:linear-gradient(135deg,#12a86b,#078653)}.service-access-icon svg{width:21px;height:21px}.service-access-copy h2{font-size:15px;margin-bottom:3px}.service-access-copy p{font-size:11.5px;color:var(--text2);max-width:760px}.service-access-copy .workspace-eyebrow{margin-bottom:3px}.service-access-action{justify-self:end}
@media(max-width:700px){.service-access-panel{grid-template-columns:auto 1fr}.service-access-action{grid-column:1/-1;justify-self:stretch}.service-access-action .btn{width:100%}}
