/* V242 — actual portal-wide redesign. CSS-only layout layer; business logic untouched. */
:root{--ds-bg:#f4f6fb;--ds-surface:#fff;--ds-ink:#172b46;--ds-muted:#64758b;--ds-navy:#102943;--ds-navy-2:#183d62;--ds-gold:#e8bd43;--ds-line:#e3e9f2;--ds-shadow:0 10px 30px rgba(17,39,66,.07);--ds-radius:18px}
body:has(.portal){background:var(--ds-bg)!important;color:var(--ds-ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif!important;font-size:14px;-webkit-font-smoothing:antialiased}
.portal.app-mobile-shell{min-height:100vh;background:var(--ds-bg)!important;gap:0!important}
.portal .sidebar{width:258px!important;flex:0 0 258px!important;background:linear-gradient(180deg,#102943 0%,#0b1d30 100%)!important;color:#eef4ff!important;border-right:1px solid rgba(255,255,255,.07)!important;box-shadow:8px 0 28px rgba(12,31,51,.08);padding:18px 13px 14px!important;z-index:40}
.portal .side-brand{display:flex!important;align-items:center!important;gap:12px!important;padding:8px 9px 20px!important;margin-bottom:14px!important;border-bottom:1px solid rgba(255,255,255,.12)!important;min-height:68px}
.portal .side-brand .logo,.portal .portal-top .logo{width:44px!important;height:44px!important;min-width:44px;border-radius:14px!important;background:linear-gradient(145deg,#ffe68b,#d6a82a)!important;color:#132b43!important;box-shadow:0 7px 18px rgba(232,189,67,.2);font-weight:950!important}
.portal .side-brand strong{font-size:13px!important;line-height:1.4;color:#fff;letter-spacing:-.01em}.portal .side-brand small{display:block;color:#a9bfd7!important;font-size:10px!important;margin-top:3px;letter-spacing:.04em}
.portal .sidebar-menu{display:flex!important;flex-direction:column;gap:4px!important;overflow-y:auto;overscroll-behavior:contain;padding:4px 2px 14px!important}
.portal .menu-label{margin:15px 9px 7px!important;color:#8ba6c2!important;font-size:9px!important;font-weight:850!important;letter-spacing:.16em!important;text-transform:uppercase}
.portal .side-link{display:flex!important;align-items:center!important;gap:12px!important;width:100%;min-height:44px!important;padding:10px 12px!important;border:1px solid transparent!important;border-radius:12px!important;background:transparent!important;color:#dce8f6!important;text-align:left;font-size:12px!important;font-weight:650!important;line-height:1.35;transition:background .18s,border-color .18s,transform .18s}
.portal .side-link>span:first-child{display:grid;place-items:center;min-width:26px;height:26px;border-radius:8px;background:rgba(255,255,255,.07);font-size:15px}
.portal .side-link:hover{background:rgba(255,255,255,.08)!important;border-color:rgba(255,255,255,.08)!important;transform:translateX(2px)}.portal .side-link.active{background:linear-gradient(100deg,rgba(232,189,67,.19),rgba(255,255,255,.07))!important;border-color:rgba(232,189,67,.32)!important;color:#ffe18a!important;box-shadow:inset 3px 0 #e8bd43}
.portal .sidebar-footer{margin-top:auto;padding:12px 3px 0!important;border-top:1px solid rgba(255,255,255,.12)!important;background:transparent!important}
.portal .sidebar-profile{width:100%;display:flex;align-items:center;gap:10px;padding:10px!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:13px!important;background:rgba(255,255,255,.065)!important;color:white!important;text-align:left}
.portal .sidebar-profile .avatar{width:36px!important;height:36px!important;min-width:36px;display:grid;place-items:center;border-radius:50%!important;background:#f8e5a1!important;color:#132b43!important;font-weight:850}.portal .sidebar-profile-text{min-width:0;flex:1}.portal .sidebar-profile-text b{display:block;font-size:11px;overflow-wrap:anywhere}.portal .sidebar-profile-text small{display:block;font-size:10px;color:#a9bfd7!important;margin-top:3px}
.portal .portal-main{min-width:0!important;flex:1;background:var(--ds-bg)!important}
.portal .portal-top{position:sticky;top:0;z-index:25;min-height:70px!important;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px clamp(16px,2.5vw,36px)!important;background:rgba(255,255,255,.94)!important;border-bottom:1px solid var(--ds-line)!important;box-shadow:0 3px 14px rgba(17,39,66,.035);backdrop-filter:blur(16px)}
.portal .mobile-brand-mini{display:flex;align-items:center;gap:12px;min-width:0}.portal .portal-top h2{font-size:19px!important;line-height:1.25;font-weight:850!important;letter-spacing:-.035em;color:var(--ds-ink);margin:1px 0 0!important}.portal .portal-top .eyebrow{font-size:9px!important;letter-spacing:.15em!important;font-weight:850;color:#a27a14!important}.portal .mobile-header-actions{display:flex;align-items:center;gap:10px}
.portal .content{width:100%;max-width:1740px;margin:0 auto;padding:clamp(16px,2.4vw,34px)!important;min-width:0}
.portal .page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 22px!important;padding:0!important}.portal .page-head h3,.portal .dash-title h3{font-size:clamp(23px,2.1vw,32px)!important;line-height:1.16!important;font-weight:900!important;letter-spacing:-.045em!important;color:var(--ds-ink)!important;margin:5px 0 7px!important}.portal .page-head p,.portal .dash-title p{font-size:13px!important;line-height:1.65!important;color:var(--ds-muted)!important;margin:0!important;max-width:720px}.portal .eyebrow{font-size:10px!important;font-weight:850!important;letter-spacing:.15em!important;color:#7186a0!important}
.portal .panel,.portal .panel-v165,.portal .settings-card,.portal .workspace-card,.portal .feature,.portal .person-card,.portal .kpi,.portal .stat-card{border:1px solid var(--ds-line)!important;border-radius:var(--ds-radius)!important;background:var(--ds-surface)!important;box-shadow:var(--ds-shadow)!important;overflow:hidden}
.portal .panel,.portal .panel-v165{margin-bottom:18px!important}.portal .panel-head,.portal .p-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:18px 21px!important;border-bottom:1px solid #edf1f6!important;background:linear-gradient(180deg,#fff,#fcfdff)!important}.portal .panel-head h4,.portal .p-head h4{font-size:15px!important;font-weight:850!important;color:var(--ds-ink)!important;letter-spacing:-.02em;margin:0!important}.portal .panel-head small,.portal .p-head small{color:var(--ds-muted)!important;font-size:12px!important;line-height:1.5}.portal .p-body,.portal .panel-body{padding:18px 21px!important}
.portal .btn, .portal button.btn{min-height:40px;border-radius:11px!important;padding:10px 15px!important;font-size:12px!important;line-height:1.25!important;font-weight:800!important;letter-spacing:0!important;box-shadow:none;transition:transform .16s,box-shadow .16s,background .16s}.portal .btn:hover,.portal button.btn:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(16,41,67,.1)}.portal .btn-gold{background:linear-gradient(135deg,#f4d36c,#dfb22e)!important;border:1px solid #e2b83d!important;color:#152d46!important}.portal .btn-primary{background:linear-gradient(135deg,#183f67,#102943)!important;color:#fff!important}.portal .btn-soft{background:#f0f4fa!important;color:#23405f!important;border:1px solid #e1e8f1!important}.portal .btn-danger{background:#fff0ef!important;color:#b42318!important;border:1px solid #ffd4d1!important}
.portal .actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.portal .kpi-grid,.portal .kpi-row{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:14px!important;margin-bottom:20px}.portal .kpi,.portal .stat-card{padding:18px!important;min-width:0;cursor:default;transition:transform .18s,box-shadow .18s}.portal .kpi:hover,.portal .stat-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(17,39,66,.1)!important}.portal .kpi strong,.portal .stat-card strong{display:block;font-size:30px!important;line-height:1.1!important;font-weight:900!important;color:var(--ds-ink)!important;margin:12px 0 5px!important;letter-spacing:-.04em}.portal .kpi span,.portal .stat-card>span{font-size:11px!important;color:var(--ds-muted)!important;font-weight:650}.portal .kpi-icon,.portal .stat-icon,.portal .qicon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#edf3fc;color:#234f82;font-size:18px}
.portal .admin-dashboard-v165{display:flex;flex-direction:column;gap:18px}.portal .dash-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:2px}.portal .dash-date{padding:12px 15px;border:1px solid var(--ds-line);border-radius:13px;background:#fff;box-shadow:0 4px 14px rgba(17,39,66,.04);color:var(--ds-ink);font-size:12px}.portal .kpi-row{grid-template-columns:repeat(4,minmax(0,1fr))!important;margin-bottom:0}.portal .stat-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.portal .trend{font-size:10px!important;color:#23865b!important;font-weight:800}.portal .section-head{margin:0!important}.portal .section-head h4{font-size:15px;font-weight:850}.portal .quick-grid{display:grid!important;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px!important}.portal .quick-card{min-width:0;min-height:105px;padding:16px 10px!important;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#fff!important;border:1px solid var(--ds-line)!important;border-radius:16px!important;box-shadow:0 5px 18px rgba(17,39,66,.045);color:var(--ds-ink)!important;transition:transform .18s,box-shadow .18s}.portal .quick-card:hover{transform:translateY(-3px);box-shadow:var(--ds-shadow)}.portal .quick-card b{font-size:12px!important;font-weight:850}.portal .quick-card small{font-size:10px;color:var(--ds-muted)}.portal .dash-grid,.portal .bottom-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px!important}.portal .bottom-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal .person-row{display:flex;align-items:center;gap:11px;padding:12px 0!important;border-bottom:1px solid #eef2f7!important}.portal .person-row:last-child{border-bottom:0!important}.portal .person-row>div:nth-child(2){flex:1;min-width:0}.portal .person-row b{font-size:12px;color:var(--ds-ink)}.portal .person-row small{display:block;font-size:10px;color:var(--ds-muted);margin-top:3px}.portal .p-avatar{width:36px;height:36px;min-width:36px;display:grid;place-items:center;border-radius:12px;background:#eaf1fc;color:#234f82;font-weight:850}.portal .time,.portal .ago{font-size:10px;color:#8492a5}.portal .course-mini-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px}.portal .course-mini{min-width:0;padding:10px!important;border:1px solid var(--ds-line)!important;border-radius:13px!important;background:#fff!important;text-align:left}.portal .course-mini img{width:100%;height:74px;object-fit:cover;border-radius:9px}.portal .course-mini b{display:block;font-size:11px;line-height:1.45;margin:5px 0}.portal .course-mini small{font-size:10px;color:var(--ds-muted)}
.portal .table-wrap{max-width:100%;overflow:auto!important;border-radius:0 0 var(--ds-radius) var(--ds-radius);-webkit-overflow-scrolling:touch}.portal table{width:100%;border-collapse:separate;border-spacing:0}.portal .lead-table{min-width:780px!important}.portal .lead-table th{background:#f3f6fb!important;color:#536a84!important;font-size:10px!important;font-weight:850!important;letter-spacing:.06em;text-transform:uppercase;padding:14px 15px!important;border-bottom:1px solid var(--ds-line)!important;white-space:nowrap}.portal .lead-table td{padding:15px!important;border-bottom:1px solid #edf1f6!important;color:#344b66;font-size:12px!important;vertical-align:middle!important}.portal .lead-table tbody tr:hover td{background:#fbfcff}.portal .lead-table tbody tr:last-child td{border-bottom:0!important}.portal input:not([type=checkbox]):not([type=radio]):not([type=file]),.portal select,.portal textarea{min-height:42px;border:1px solid #dbe4ef!important;border-radius:11px!important;background:#fff!important;color:var(--ds-ink)!important;padding:10px 12px!important;font-size:12px!important;box-shadow:none!important;max-width:100%;min-width:0}.portal textarea{min-height:90px}.portal input:focus,.portal select:focus,.portal textarea:focus{outline:0!important;border-color:#6d91c0!important;box-shadow:0 0 0 3px rgba(53,111,180,.12)!important}.portal label{font-size:11px!important;font-weight:750!important;color:#4a6078!important}.portal .form-grid{gap:14px!important}.portal .field{min-width:0}.portal .field small{font-size:10px;line-height:1.5}.portal .badge{border-radius:99px!important;padding:5px 9px!important;font-size:10px!important;font-weight:850!important}
.portal .modal-backdrop{backdrop-filter:blur(5px);background:rgba(7,20,36,.52)!important;z-index:1000}.portal .modal{border:1px solid rgba(255,255,255,.7)!important;border-radius:20px!important;box-shadow:0 25px 80px rgba(4,20,38,.28)!important;overflow:auto!important}.portal .modal-head{padding:19px 22px!important;border-bottom:1px solid var(--ds-line)!important;background:#fbfcff}.portal .modal-head h3{font-size:20px!important;font-weight:900;color:var(--ds-ink)}.portal .modal-body{padding:22px!important}.portal .modal-foot{padding:15px 22px!important;border-top:1px solid var(--ds-line)!important;background:#fbfcff}
.portal .mobile-bottom-nav{display:none}
@media(max-width:1100px){.portal .sidebar{width:230px!important;flex-basis:230px!important}.portal .content{padding:18px!important}.portal .quick-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portal .kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:760px){.portal.app-mobile-shell{display:block!important}.portal .sidebar{position:fixed!important;inset:0 auto 0 0!important;width:min(300px,86vw)!important;max-width:86vw;transform:translateX(-105%);transition:transform .24s ease;box-shadow:18px 0 45px rgba(5,20,36,.28);height:100dvh!important;overflow-y:auto!important}.portal .sidebar.mobile-open{transform:translateX(0)}.portal .portal-main{width:100%!important;min-width:0!important}.portal .portal-top{min-height:64px!important;padding:10px 14px!important}.portal .portal-top h2{font-size:17px!important}.portal .portal-top .logo{width:38px!important;height:38px!important;min-width:38px;border-radius:12px!important}.portal .content{padding:15px 12px 90px!important}.portal .page-head{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:17px!important}.portal .page-head h3,.portal .dash-title h3{font-size:25px!important}.portal .page-head .actions{width:100%}.portal .page-head .actions .btn{flex:1}.portal .dash-top{flex-direction:column;align-items:stretch}.portal .dash-date{align-self:flex-start}.portal .kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}.portal .stat-card{padding:13px!important;border-radius:15px!important}.portal .stat-card strong{font-size:25px!important;margin:10px 0 4px!important}.portal .stat-icon{width:34px;height:34px;font-size:16px}.portal .quick-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px!important}.portal .quick-card{min-height:94px;padding:12px 6px!important;border-radius:14px!important}.portal .quick-card b{font-size:10px!important;text-align:center}.portal .quick-card small{font-size:9px!important}.portal .qicon{width:34px;height:34px;font-size:16px}.portal .dash-grid,.portal .bottom-grid{grid-template-columns:minmax(0,1fr)!important;gap:12px!important}.portal .panel,.portal .panel-v165,.portal .settings-card,.portal .workspace-card{border-radius:15px!important;margin-bottom:12px!important}.portal .p-head,.portal .panel-head{padding:14px!important;align-items:flex-start}.portal .p-body,.portal .panel-body{padding:13px!important}.portal .panel-head>.actions{width:100%}.portal .panel-head>.actions .btn{flex:1}.portal .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important}.portal .kpi{padding:13px!important}.portal .kpi strong{font-size:24px!important}.portal .actions{gap:7px}.portal .btn,.portal button.btn{min-height:42px!important;padding:10px 12px!important}.portal .table-wrap{margin:0!important}.portal .lead-table{min-width:720px!important}.portal .lead-table th,.portal .lead-table td{padding:12px 10px!important}.portal .simple-grid{grid-template-columns:minmax(0,1fr)!important}.portal .form-grid{grid-template-columns:minmax(0,1fr)!important}.portal .field.full{grid-column:1/-1}.portal .modal-backdrop{padding:8px!important;align-items:flex-start!important}.portal .modal{width:100%!important;max-width:100%!important;max-height:calc(100dvh - 16px)!important;margin:0!important;border-radius:17px!important}.portal .modal-head,.portal .modal-body,.portal .modal-foot{padding:14px!important}.portal .mobile-bottom-nav{position:fixed!important;display:flex!important;left:10px!important;right:10px!important;bottom:max(9px,env(safe-area-inset-bottom))!important;z-index:80!important;justify-content:space-around!important;align-items:stretch!important;gap:4px!important;padding:7px!important;border:1px solid rgba(210,221,235,.9)!important;border-radius:18px!important;background:rgba(255,255,255,.96)!important;box-shadow:0 10px 35px rgba(16,41,67,.18)!important;backdrop-filter:blur(18px)}.portal .mobile-nav-item{display:flex!important;flex:1;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:6px 2px!important;border:0!important;border-radius:11px!important;background:transparent!important;color:#6b7f96!important}.portal .mobile-nav-item span{font-size:17px;line-height:1.1}.portal .mobile-nav-item small{font-size:9px!important;font-weight:750;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.portal .mobile-nav-item.active{background:#edf3fc!important;color:#183f67!important}.portal .mobile-nav-item.active span{filter:saturate(1.2)}.portal .sidebar-logout{margin-top:8px}}
@media(max-width:380px){.portal .content{padding-inline:9px!important}.portal .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal .kpi-row{gap:8px!important}.portal .stat-card strong{font-size:22px!important}.portal .page-head h3,.portal .dash-title h3{font-size:23px!important}}
@media(prefers-reduced-motion:reduce){.portal *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
