.portal-page{min-height:100vh;background:#081b12;color:#fff}
.portal-container{width:min(1120px,calc(100% - 48px));margin-inline:auto}
.portal-header{border-bottom:1px solid #31533b;background:#0b2115}
.portal-header-inner{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.portal-brand{display:inline-flex;align-items:center;gap:13px;color:#fff;font-size:20px;font-weight:500;white-space:nowrap}
.portal-brand img{width:48px;height:48px;object-fit:contain}
.portal-brand strong{font-weight:800}
.portal-nav{display:flex;flex-wrap:wrap;align-items:center;gap:4px 22px}
.portal-nav a,.portal-footer a,.portal-return{color:#f5fff6;text-decoration:none;font-size:15px;font-weight:600;padding:10px 0}
.portal-nav a:hover,.portal-nav a[aria-current=page],.portal-footer a:hover,.portal-return:hover{color:#a6eb72}
.portal-nav a[aria-current=page]{text-decoration:underline;text-decoration-color:#a6eb72;text-underline-offset:7px}
.portal-main{min-height:calc(100vh - 156px);padding-block:48px 76px}
.portal-status{min-height:1.5em;color:#e0eee3;font-size:14px;line-height:1.55;margin:0 0 16px}
.portal-welcome{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:34px;border:1px solid #315a3c;border-radius:10px;background:#0d2819;margin-bottom:28px}
.portal-privacy-note{margin:0 0 28px;padding:14px 18px;border-left:3px solid #a6eb72;background:#0d261a;color:#e8f2eb;font-size:14px;line-height:1.6}.portal-privacy-note a{color:#a6eb72;text-decoration:underline}
.portal-welcome h1,.login-card h1{margin-top:9px;color:#a6eb72;font-size:clamp(38px,5vw,56px)}
.portal-lead{margin:15px 0 3px;color:#fff;font-size:21px}
.portal-account{margin:0;color:#d6e7d9;font-size:14px}
.portal-eyebrow{color:#b9f38e;font-size:12px;font-weight:800;letter-spacing:.14em}
.portal-wave{width:82px;height:82px;opacity:.82;object-fit:contain}
.portal-section{padding-block:22px}
.portal-section-heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:20px}
.portal-section-heading h2,.portal-card h2{margin-top:8px;color:#a6eb72;font-size:clamp(25px,3vw,34px)}
.portal-section-heading p{margin:8px 0 0;color:#d6e7d9;font-size:15px}
.portal-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.portal-card{min-width:0;padding:22px;border:1px solid #31553c;border-radius:9px;background:#102a1b}
.portal-card-link{position:relative;min-height:190px;display:flex;flex-direction:column;align-items:flex-start;transition:border-color .2s,transform .2s}
.portal-card-link:hover{border-color:#a6eb72;transform:translateY(-2px)}
.course-card-grid,.resource-card-grid,.contact-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.course-card,.portal-resource-card,.contact-card-grid>.portal-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.course-card h3,.portal-resource-card h3{margin:0;color:#a6eb72;font-size:23px}
.portal-resource-description{margin:0;color:#e7f0e8;font-size:15px;line-height:1.6}
.portal-resource-pending,.portal-resource-version,.portal-resource-notes{margin:0;color:#d3e4d5;font-size:13px;line-height:1.55}
.portal-resource-empty{grid-column:1/-1;padding:20px;border:1px dashed #55765d;border-radius:7px;color:#e7f0e8;font-size:15px}
.course-card .portal-text-button,.portal-resource-card .portal-text-button{margin-top:3px}
.contact-card-grid>.portal-card h2{margin:6px 0;color:#a6eb72;font-size:24px}
.contact-card-grid>.portal-card p{margin:0 0 9px;color:#e7f0e8;font-size:15px;line-height:1.6}
.contact-card-grid>.portal-card .portal-button{margin-top:auto}
.portal-card-link h3{margin-top:8px;color:#a6eb72;font-size:25px}
.portal-card-link p{max-width:34ch;margin:10px 0 24px;color:#e7f0e8;font-size:15px;line-height:1.6}
.portal-card-kicker{color:#c0d8c4;font-size:11px;font-weight:800;letter-spacing:.12em}
.portal-card-arrow{margin-top:auto;color:#a6eb72;font-size:26px}
.portal-contact-link{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin-block:20px 26px}
.portal-contact-link p{margin:0;color:#e7f0e8;font-size:15px}
.portal-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:11px 18px;border:1px solid #a6eb72;border-radius:5px;background:#a6eb72;color:#081b12;font:inherit;font-size:15px;font-weight:750;text-decoration:none;cursor:pointer;transition:filter .2s,transform .2s}
.portal-button:hover{filter:brightness(1.08);transform:translateY(-1px)}
.portal-button:disabled{opacity:.55;cursor:wait;transform:none}
.portal-button-secondary{background:transparent;color:#fff;border-color:#7eae68}
.portal-button-secondary:hover{background:#173923}
.portal-actions{display:flex;flex-wrap:wrap;gap:12px}
.news-choice{margin-bottom:23px}
.news-choice h2{max-width:780px;margin:9px 0 12px;color:#a6eb72;font-size:clamp(22px,2.6vw,30px)}
.news-choice>p:not(.portal-status){max-width:780px;margin:0 0 16px;color:#e7f0e8;font-size:15px}
.news-choice .portal-status{margin-block:10px}
.portal-settings{margin-top:4px}
.portal-settings h2{font-size:23px}
.portal-settings p{margin:10px 0;color:#e7f0e8;font-size:15px}
.portal-text-button{padding:8px 0;border:0;background:none;color:#b9f38e;text-decoration:underline;text-underline-offset:4px;font:inherit;font-weight:700;cursor:pointer}
.portal-text-button:hover{color:#fff}
.portal-footer{border-top:1px solid #31533b;background:#0b2115}
.portal-footer>.portal-container{min-height:74px;display:flex;justify-content:space-between;align-items:center;gap:15px}
.portal-footer span{color:#cadaca;font-size:13px}
.login-main{display:grid;place-items:center;padding-block:54px 72px}
.login-card{width:min(100%,560px);padding:34px;border:1px solid #315a3c;border-radius:10px;background:#0d2819}
.login-card h1{font-size:clamp(34px,5vw,48px)}
.login-card>p:not(.portal-status){color:#e4eee5;font-size:15px;line-height:1.65}
.login-card .portal-status{margin-block:14px}
.portal-form{display:grid;gap:9px;margin-block:18px}
.portal-form label{color:#fff;font-size:14px;font-weight:700;margin-top:5px}
.portal-form input{width:100%;min-height:46px;padding:10px 12px;border:1px solid #55765d;border-radius:5px;background:#07190f;color:#fff;font:inherit}
.portal-form input:focus{outline:3px solid #a6eb72;outline-offset:2px}
.portal-form .portal-button{justify-self:start;margin-top:7px}
.portal-form-hint{margin:0;color:#d6e7d9;font-size:13px}
.portal-login-help{border-top:1px solid #31533b;padding-top:18px;margin-top:20px!important}
.portal-login-help a{color:#b9f38e;text-decoration:underline;text-underline-offset:3px}
.portal-page [hidden]{display:none!important}
.portal-page :focus-visible{outline:3px solid #fff;outline-offset:3px}
.portal-resource-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;gap:18px}
.portal-resource-copy{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.portal-resource-copy .portal-text-button{margin-top:3px}
.portal-resource-visual{min-width:0;min-height:220px;display:grid;place-items:center;overflow:hidden;border:1px solid #31553c;border-radius:7px;background:#07190f}
.portal-resource-thumbnail{display:block;width:100%;height:100%;max-height:420px;object-fit:contain}
.portal-resource-visual .portal-resource-thumbnail{min-height:220px}
.portal-resource-image-placeholder{display:flex;min-height:220px;width:100%;align-items:center;justify-content:center;flex-direction:column;gap:12px;background:radial-gradient(ellipse at center,#163923 0%,#081b12 72%);color:#b9f38e;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.portal-resource-image-placeholder img{width:88px;height:88px;object-fit:contain;opacity:.8}
body[data-resource-category="software"] .software-catalog-card{display:flex;flex-direction:column;align-items:stretch;gap:16px}
body[data-resource-category="software"] .software-catalog-visual{aspect-ratio:16/9;min-height:0}
body[data-resource-category="software"] .software-catalog-visual .software-catalog-screenshot{min-height:0;max-height:none;object-fit:contain}
body[data-resource-category="software"] .software-catalog-copy{width:100%;flex:1}
body[data-resource-category="software"] .portal-resource-card:not(.software-catalog-card){display:flex;flex-direction:column;align-items:stretch}
body[data-resource-category="software"] .portal-resource-card:not(.software-catalog-card) .portal-resource-visual{aspect-ratio:16/9;min-height:0;order:-1}
body[data-resource-category="software"] .portal-resource-card:not(.software-catalog-card) .portal-resource-visual .portal-resource-thumbnail,
body[data-resource-category="software"] .portal-resource-card:not(.software-catalog-card) .portal-resource-image-placeholder{min-height:0}
.software-installer-list,.software-installer{display:flex;flex-wrap:wrap;align-items:center;gap:9px}
.software-installer-list{gap:10px 16px}
.software-catalog-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:4px}
.course-resource-thumbnail{height:180px;margin-block:8px;border:1px solid #31553c;border-radius:7px;background:#07190f}
.trainer-course-thumbnail{height:170px;border:1px solid #31553c;border-radius:7px;background:#07190f}
.portal-certificate-card{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.portal-certificate-card h2{margin:0;color:#a6eb72;font-size:22px}
.portal-certificate-thumbnail{width:100%;height:180px;border:1px solid #31553c;border-radius:7px;background:#07190f}
.trainer-course-manager{margin:0 0 24px;padding:24px}.trainer-course-manager h2{margin:7px 0;color:#a6eb72;font-size:clamp(24px,3vw,32px)}.trainer-course-guidance{max-width:78ch;color:#e7f0e8;font-size:14px;line-height:1.6}.trainer-course-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:13px 16px;margin-block:20px}.trainer-course-form label{display:grid;gap:7px;color:#fff;font-size:14px;font-weight:700}.trainer-course-form label:nth-of-type(3),.trainer-course-form label:nth-of-type(4),.trainer-course-form label:nth-of-type(5),.trainer-course-form .portal-actions{grid-column:1/-1}.trainer-course-form input,.trainer-course-form textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid #55765d;border-radius:5px;background:#07190f;color:#fff;font:inherit}.trainer-course-form textarea{resize:vertical}.trainer-course-form input:focus,.trainer-course-form textarea:focus{outline:3px solid #a6eb72;outline-offset:2px}.trainer-course-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.trainer-course-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.trainer-course-card h3{margin:0;color:#a6eb72;font-size:21px}.trainer-course-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}.trainer-course-actions .portal-button{margin-top:0}.trainer-course-state{margin:0;color:#d6e7d9;font-size:13px;line-height:1.55}
@media(max-width:900px){.portal-header-inner{flex-wrap:wrap;padding-block:13px}.portal-nav{order:3;width:100%;gap:4px 18px}.portal-card-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.portal-container{width:calc(100% - 32px)}.portal-main{padding-block:28px 48px}.portal-header-inner{gap:12px}.portal-brand{font-size:17px}.portal-brand img{width:40px;height:40px}.portal-nav{gap:2px 14px}.portal-nav a{font-size:13px}.portal-welcome,.login-card{padding:22px}.portal-wave{width:56px;height:56px}.portal-card-grid,.course-card-grid,.resource-card-grid,.contact-card-grid,.trainer-course-list{grid-template-columns:1fr}.portal-resource-card{grid-template-columns:1fr}.portal-resource-visual{grid-row:1;min-height:190px}.portal-resource-visual .portal-resource-thumbnail,.portal-resource-image-placeholder{min-height:190px}.trainer-course-manager{padding:18px}.trainer-course-form{grid-template-columns:1fr}.trainer-course-form label,.trainer-course-form label:nth-of-type(3),.trainer-course-form label:nth-of-type(4),.trainer-course-form label:nth-of-type(5),.trainer-course-form label:nth-of-type(6),.trainer-course-form .portal-actions{grid-column:1}.portal-card-link{min-height:150px}.portal-footer>.portal-container{align-items:flex-start;justify-content:center;flex-direction:column;padding-block:14px}.portal-actions{display:grid}.portal-actions .portal-button{width:100%}}

/* Login background waveform: decorative, low-contrast movement behind the form. */
.login-main{position:relative;isolation:isolate}
.login-waveform{position:absolute;z-index:0;top:50%;left:50%;width:100vw;height:min(660px,100%);transform:translate(-50%,-50%);overflow:visible;pointer-events:none;opacity:.62}
.login-waveform__glow{fill:none;stroke:#a6eb72;stroke-width:18;stroke-linecap:round;opacity:.055;animation:login-wave-float 12s ease-in-out infinite alternate}
.login-waveform__trace{fill:none;stroke:#a6eb72;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3 15;opacity:.24;animation:login-wave-dash 34s linear infinite}
.login-waveform__trace--secondary{stroke-width:1;stroke-dasharray:1 18;opacity:.13;animation-duration:46s;animation-direction:reverse}
.login-card{position:relative;z-index:1;box-shadow:0 18px 52px rgba(0,0,0,.16)}
@keyframes login-wave-dash{to{stroke-dashoffset:-720px}}
@keyframes login-wave-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@media(max-width:560px){.login-waveform{height:58%;opacity:.5}}
@media(prefers-reduced-motion:reduce){.login-waveform__trace,.login-waveform__glow{animation:none}}
