:root{--portal-sidebar:270px}
body.portal-body{min-height:100vh;background:#f5f3f7}
.portal-login{min-height:100vh;display:grid;grid-template-columns:minmax(360px,.8fr) 1.2fr}
.portal-login-panel{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:center;padding:clamp(28px,4.3vw,64px);background:#fff}
.portal-login-logo{width:170px;margin-bottom:38px}
.portal-login-copy{max-width:520px}.portal-login-copy h1{margin:12px 0 16px;font-size:clamp(40px,4.35vw,60px);line-height:.98;letter-spacing:-.06em}.portal-login-copy p{color:var(--muted);line-height:1.65}
.portal-login-form{display:grid;gap:12px;max-width:470px;margin-top:25px}.portal-login-form .button{width:100%;margin-top:2px}.portal-login-help{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px}.portal-login-help a{color:var(--purple);font-weight:800}
.portal-login-visual{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:60px;color:#fff;background:radial-gradient(circle at 73% 20%,rgba(125,80,168,.72),transparent 35%),linear-gradient(145deg,#0b0810,#241431)}
.portal-login-visual::before{content:"";position:absolute;inset:0;opacity:.1;background-image:linear-gradient(rgba(255,255,255,.55) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.55) 1px,transparent 1px);background-size:56px 56px}
.portal-login-visual img{position:relative;z-index:1;display:block;width:auto;max-width:100%;height:auto;max-height:min(50vh,480px);margin:0 auto 26px;object-fit:contain;flex:none;filter:drop-shadow(0 35px 35px rgba(0,0,0,.35))}
.portal-login-message{position:relative;z-index:1;max-width:560px;padding:28px;border:1px solid rgba(255,255,255,.14);border-radius:26px;background:rgba(18,12,25,.64);backdrop-filter:blur(18px)}.portal-login-message strong{font-size:25px}.portal-login-message p{margin:9px 0 0;color:rgba(255,255,255,.62);font-size:12px;line-height:1.7}
.portal-app-shell{min-height:100vh;display:grid;grid-template-columns:var(--portal-sidebar) 1fr}
.portal-app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--portal-sidebar);z-index:20;padding:28px 20px;color:#fff;background:linear-gradient(180deg,#1b1225,#0c0810);overflow:auto}.portal-app-sidebar .portal-login-logo{width:165px;margin:0 10px 44px}.portal-app-sidebar nav{display:grid;gap:6px}.portal-app-sidebar a{position:relative;padding:14px 15px;border-radius:13px;color:rgba(255,255,255,.55);font-size:10px;font-weight:800;transition:.25s}.portal-app-sidebar a:hover,.portal-app-sidebar a.is-active,.portal-app-sidebar a[aria-selected="true"]{color:#fff;background:rgba(206,243,62,.16);transform:translateX(4px)}.portal-app-sidebar a.is-active::before,.portal-app-sidebar a[aria-selected="true"]::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:3px;background:var(--lime)}.portal-app-sidebar a:focus-visible{outline:2px solid rgba(206,243,62,.6);outline-offset:2px}
.portal-app-sidebar footer{margin-top:50px;padding-top:20px;border-top:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.4);font-size:9px}.portal-app-sidebar form{margin-top:16px}.portal-app-sidebar button{padding:0;border:0;background:none;color:var(--lime);font-size:9px;font-weight:800;cursor:pointer}
.portal-app-main{grid-column:2;padding:30px clamp(22px,4vw,58px) 60px}.portal-app-topbar{display:flex;align-items:center;justify-content:space-between;gap:22px}.portal-app-topbar h1{margin:5px 0 0;font-size:35px;letter-spacing:-.045em}.portal-app-topbar small{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.12em}.portal-user{display:flex;align-items:center;gap:12px}.portal-avatar{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:var(--purple);color:#fff;font-size:11px;font-weight:800}.portal-user strong{display:block;font-size:10px}.portal-user span{display:block;margin-top:3px;color:var(--muted);font-size:8px}
.portal-app-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-top:30px}.portal-app-kpi{position:relative;overflow:hidden;padding:22px;border:1px solid var(--line);border-radius:20px;background:#fff;transition:.3s var(--ease)}.portal-app-kpi::after{content:"";position:absolute;right:-20px;bottom:-25px;width:90px;height:90px;border-radius:50%;background:rgba(206,243,62,.16)}.portal-app-kpi:hover{transform:translateY(-6px);border-color:var(--lime);box-shadow:0 20px 45px rgba(31,21,45,.1)}.portal-app-kpi strong{display:block;color:var(--purple);font-size:30px}.portal-app-kpi span{display:block;margin-top:7px;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.05em}
.portal-app-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px;margin-top:14px}.portal-module{padding:24px;border:1px solid var(--line);border-radius:22px;background:#fff}.portal-module.is-wide{grid-column:1/-1}.portal-module-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:19px}.portal-module-head h2{margin:0;font-size:15px}.portal-module-head a{color:var(--purple);font-size:9px;font-weight:800}
.portal-progress-list{display:grid;gap:13px}.portal-progress{display:grid;grid-template-columns:1fr auto;gap:8px;font-size:9px}.portal-progress i{grid-column:1/-1;height:7px;overflow:hidden;border-radius:999px;background:#eeebf0}.portal-progress i::before{content:"";display:block;width:var(--value);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--purple),var(--lime))}
.portal-event-list{display:grid;gap:8px}.portal-event{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:14px}.portal-event i{width:9px;height:9px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 5px rgba(206,243,62,.17)}.portal-event strong{display:block;font-size:9px}.portal-event small{display:block;margin-top:3px;color:var(--muted);font-size:8px}.portal-event time{color:var(--muted);font-size:8px}
.portal-notice{margin-top:18px;padding:14px 16px;border:1px solid #f2d697;border-radius:14px;background:#fff8e5;color:#715400;font-size:10px}.portal-notice[hidden]{display:none}
.portal-mobile-head{display:none}
.portal-demo-shell{max-width:1240px;margin:0 auto;padding:44px 20px 90px}
.portal-demo-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}
.portal-demo-head img{width:170px}
.portal-demo-head a{color:var(--purple);font-size:11px;font-weight:800}
.portal-demo-copy{max-width:640px;margin-bottom:30px}
.portal-demo-copy h1{margin:10px 0 0;font-size:clamp(30px,3.5vw,44px);line-height:1.05;letter-spacing:-.045em}
.portal-demo-copy p{margin:12px 0 0;color:var(--muted)}
.portal-table.cols-5 .portal-row{grid-template-columns:1fr .8fr .9fr 1fr .8fr}
.portal-table.cols-6 .portal-row{grid-template-columns:.9fr .8fr .8fr .8fr .8fr .9fr}
.portal-empty{padding:26px 16px;color:var(--muted);font-size:10px;text-align:center}
.portal-row a[data-bind-href],.portal-row a[data-bind-href-template]{color:var(--purple);font-weight:800;font-size:9px;justify-self:start}
.portal-row a.is-disabled{color:var(--muted);pointer-events:none;text-decoration:none}
.portal-app-tabbar{display:none}
@media(max-width:720px){.portal-app-tabbar{display:flex;gap:6px;overflow:auto;padding:14px 16px 0}.portal-app-tabbar a{flex:none;padding:9px 13px;border-radius:999px;background:#eeebf0;color:var(--muted);font-size:9px;font-weight:800;white-space:nowrap}.portal-app-tabbar a[aria-selected="true"]{background:var(--purple);color:#fff}}
@media(max-width:1000px){:root{--portal-sidebar:220px}.portal-app-kpis{grid-template-columns:1fr 1fr}.portal-login{grid-template-columns:1fr}.portal-login-visual{display:none}}
@media(max-width:720px){.portal-login-panel{padding:28px}.portal-login-logo{margin-bottom:38px}.portal-app-shell{display:block}.portal-app-sidebar{display:none}.portal-mobile-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;background:#160f1f}.portal-mobile-head img{width:140px}.portal-mobile-head a{color:var(--lime);font-size:9px;font-weight:800}.portal-app-main{padding:24px 16px 50px}.portal-app-topbar{align-items:flex-start}.portal-user div:not(.portal-avatar){display:none}.portal-app-topbar h1{font-size:28px}.portal-app-grid{grid-template-columns:1fr}.portal-module.is-wide{grid-column:auto}.portal-demo-shell{padding:26px 16px 60px}.portal-demo-head img{width:140px}}
@media(max-width:460px){.portal-app-kpis{grid-template-columns:1fr}.portal-login-help{display:grid}.portal-event{grid-template-columns:auto 1fr}.portal-event time{grid-column:2}}

/* Portal motion and interaction layer */
.portal-login{overflow:hidden}.portal-login-panel::before{content:"";position:absolute;left:-120px;top:-150px;width:330px;height:330px;border-radius:50%;background:radial-gradient(circle,rgba(206,243,62,.16),transparent 68%);pointer-events:none;animation:portalAura 7s ease-in-out infinite}.portal-login-panel>*{position:relative;z-index:1}
.portal-login-visual::after{content:"";position:absolute;left:18%;top:13%;width:46%;aspect-ratio:1;border:1px solid rgba(206,243,62,.23);border-radius:50%;box-shadow:0 0 0 50px rgba(206,243,62,.025),0 0 0 110px rgba(255,255,255,.018);animation:portalOrbit 13s linear infinite}.portal-login-visual img{z-index:1;animation:portalVehicle 5.4s ease-in-out infinite}.portal-login-message{transition:transform .35s var(--ease),border-color .35s,background .35s}.portal-login-message:hover{transform:translateY(-7px);border-color:rgba(206,243,62,.45);background:rgba(18,12,25,.78)}
.portal-login-form .field{transition:transform .28s var(--ease)}.portal-login-form .field:focus-within{transform:translateX(7px)}.portal-login-form input{transition:border-color .25s,box-shadow .25s,background .25s}.portal-login-form input:hover{border-color:rgba(118,82,155,.48)}.portal-login-form input:focus{box-shadow:0 0 0 4px rgba(206,243,62,.16),0 14px 32px rgba(69,44,92,.08)}.portal-login-form .button{box-shadow:0 14px 32px rgba(118,82,155,.2)}.portal-login-form .button:hover{box-shadow:0 19px 38px rgba(118,82,155,.28),0 0 0 5px rgba(206,243,62,.11)}
.portal-app-main{position:relative;overflow:hidden}.portal-app-main::before{content:"";position:fixed;right:-220px;top:-250px;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(118,82,155,.09),transparent 67%);pointer-events:none;animation:portalAura 9s ease-in-out infinite reverse}.portal-app-main>*{position:relative;z-index:1}
.portal-app-sidebar::after{content:"";position:absolute;left:-60%;top:0;width:55%;height:100%;background:linear-gradient(90deg,transparent,rgba(206,243,62,.045),transparent);transform:skewX(-12deg);animation:sidebarSweep 8s ease-in-out infinite;pointer-events:none}.portal-app-sidebar nav,.portal-app-sidebar footer,.portal-app-sidebar>a{position:relative;z-index:1}
.portal-app-kpi{--motion-glow:0}.portal-app-kpi::before{content:"";position:absolute;inset:-1px;border-radius:inherit;background:radial-gradient(circle at 85% 115%,rgba(206,243,62,.28),transparent 48%);opacity:calc(.18 + var(--motion-glow,0)*.18);transition:opacity .3s}.portal-app-kpi>*{position:relative;z-index:1}.portal-app-kpi:hover strong{color:#4f2f70;transform:translateY(-2px) scale(1.04)}.portal-app-kpi strong{transition:transform .3s var(--ease),color .3s}
.portal-module{position:relative;overflow:hidden;transition:transform .32s var(--ease),border-color .32s,box-shadow .32s}.portal-module::before{content:"";position:absolute;left:-40%;top:-80%;width:75%;height:250%;background:linear-gradient(90deg,transparent,rgba(206,243,62,.06),transparent);transform:rotate(16deg);transition:left .7s var(--ease)}.portal-module:hover{transform:translateY(-7px);border-color:rgba(206,243,62,.75);box-shadow:0 24px 55px rgba(31,21,45,.1)}.portal-module:hover::before{left:110%}.portal-module>*{position:relative;z-index:1}.portal-module-head a{display:inline-block;translate:var(--magnetic-x,0) var(--magnetic-y,0);transition:color .25s,translate .2s}.portal-module-head a:hover{color:#3d1d5d}
.portal-progress i::before{transform-origin:left;animation:portalProgress 1.25s .7s cubic-bezier(.2,.8,.2,1) both}.portal-event,.activity-item,.portal-row:not(:first-child){transition:transform .28s var(--ease),border-color .28s,background .28s}.portal-event:hover,.activity-item:hover,.portal-row:not(:first-child):hover{transform:translateX(6px);border-color:rgba(206,243,62,.7);background:#fbfff0}.portal-event i{animation:portalPulse 1.8s ease-in-out infinite}.portal-avatar{animation:avatarBreathe 3.4s ease-in-out infinite}
.portal-login-help a{position:relative;translate:var(--magnetic-x,0) var(--magnetic-y,0)}.portal-login-help a::after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:2px;background:var(--lime);transition:right .3s var(--ease)}.portal-login-help a:hover::after{right:0}

@keyframes portalVehicle{0%,100%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(-10px,-10px,0) rotate(-.3deg)}}
@keyframes portalOrbit{to{transform:rotate(360deg)}}
@keyframes portalAura{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(28px,20px,0) scale(1.08)}}
@keyframes sidebarSweep{0%,65%{left:-60%}85%,100%{left:140%}}
@keyframes portalProgress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes portalPulse{0%,100%{box-shadow:0 0 0 5px rgba(206,243,62,.17)}50%{box-shadow:0 0 0 10px rgba(206,243,62,0)}}
@keyframes avatarBreathe{0%,100%{box-shadow:0 0 0 0 rgba(118,82,155,.15)}50%{box-shadow:0 0 0 8px rgba(118,82,155,0)}}

@media(prefers-reduced-motion:reduce){html.respect-reduced-motion .portal-login-panel::before,html.respect-reduced-motion .portal-login-visual::after,html.respect-reduced-motion .portal-login-visual img,html.respect-reduced-motion .portal-app-main::before,html.respect-reduced-motion .portal-app-sidebar::after,html.respect-reduced-motion .portal-progress i::before,html.respect-reduced-motion .portal-event i,html.respect-reduced-motion .portal-avatar{animation:none!important}html.respect-reduced-motion .portal-progress i::before{transform:none}html.respect-reduced-motion .portal-module:hover,html.respect-reduced-motion .portal-login-message:hover{transform:none}}

.portal-progress i::before{animation:none;transform:scaleX(0)}.portal-module.is-chart-active .portal-progress i::before,.is-chart-active .portal-progress i::before{animation:portalProgress 1.25s .22s cubic-bezier(.2,.8,.2,1) both}.portal-app-kpi::after{animation:portalKpiOrbit 5s ease-in-out infinite}.portal-app-kpi:nth-child(2)::after{animation-delay:.35s}.portal-app-kpi:nth-child(3)::after{animation-delay:.7s}.portal-app-kpi:nth-child(4)::after{animation-delay:1.05s}
@keyframes portalKpiOrbit{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-14px,-9px) scale(1.14)}}
@media(prefers-reduced-motion:reduce){html.respect-reduced-motion .portal-app-kpi::after{animation:none}html.respect-reduced-motion .portal-progress i::before{transform:scaleX(1)}}
