.portal-auth{min-height:100svh;background:#f3f7f2;color:#143b28}
.auth-topbar{min-height:82px;padding:14px clamp(20px,3vw,58px);display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;border-bottom:1px solid #dbe8dc}
.auth-brand{display:inline-flex;align-items:center;min-width:0}
.auth-brand img{display:block;width:185px;max-width:100%;height:auto;max-height:58px;object-fit:contain}
.auth-back{display:inline-flex;align-items:center;gap:9px;min-height:43px;padding:9px 15px;border:1px solid #cddfce;border-radius:9px;background:#fff;color:#17613b;font-size:.82rem;font-weight:700;transition:background .2s,border-color .2s,transform .2s}
.auth-back::before{content:"";width:17px;height:17px;flex:none;background:currentColor;mask:url("/assets/portal-icons/arrow-left.svg") center/contain no-repeat;-webkit-mask:url("/assets/portal-icons/arrow-left.svg") center/contain no-repeat}
.auth-back:hover{background:#eaf5e9;border-color:#97c3a2;transform:translateX(-2px)}
.auth-layout{width:min(calc(100% - clamp(28px,3vw,72px)),1800px);min-height:calc(100svh - 82px);display:grid;grid-template-columns:minmax(0,.96fr) minmax(0,1.04fr);gap:clamp(16px,2vw,32px);margin:0 auto;padding:clamp(18px,2vw,34px) 0}
.auth-story{position:relative;isolation:isolate;overflow:hidden;min-height:650px;border-radius:18px;background:#12582f;color:#fff}
.auth-story::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(5,39,23,.04) 25%,rgba(4,37,21,.88) 100%)}
.auth-story img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center}
.auth-story-copy{position:absolute;inset:auto clamp(26px,4vw,66px) clamp(28px,4vw,62px);max-width:550px}
.auth-story-copy>span{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid rgba(255,255,255,.4);border-radius:100px;background:rgba(6,46,27,.38);color:#fff;font-size:.74rem;font-weight:750;letter-spacing:.02em}
.auth-story-copy>span::before{content:"";width:7px;height:7px;border-radius:50%;background:#deed94}
.auth-story-headline{margin:24px 0 13px;color:#fff;font-family:"Space Grotesk","Geist",sans-serif;font-size:clamp(2.5rem,4vw,4.8rem);font-weight:600;line-height:1.02;letter-spacing:-.055em}
.auth-story-copy>p:last-child{max-width:405px;margin:0;color:#e7f2e7;font-size:1rem;line-height:1.55}
.auth-panel{display:grid;align-items:center;min-width:0;border:1px solid #dce8dc;border-radius:18px;background:#fff;box-shadow:0 16px 44px rgba(15,68,39,.055)}
.auth-panel-inner{width:min(100%,610px);margin:auto;padding:clamp(30px,5vw,80px)}
.portal-auth .portal-kicker{display:inline-flex;align-items:center;gap:8px;margin:0 0 17px;padding:8px 11px;border-radius:100px;background:#e9f5e8;color:#136735;font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;font-weight:800}
.portal-auth .portal-kicker::before{content:"";width:7px;height:7px;border-radius:50%;background:#d62831}
.portal-auth h1{max-width:600px;margin:0 0 13px;font-size:clamp(2.35rem,3.5vw,4rem);font-weight:600;line-height:1.07;letter-spacing:-.05em}
.portal-auth .auth-panel-inner>p{max-width:490px;margin:0;color:#536c59;font-size:.94rem;line-height:1.58}
.portal-auth .portal-login-form{display:grid;gap:17px;margin:31px 0 0;padding:0;border:0;background:transparent;box-shadow:none}
.portal-auth .portal-login-form label{display:grid;gap:8px;color:#294f35;font-size:.78rem;font-weight:750}
.portal-auth .portal-login-form :is(input:not([type="hidden"]),select){width:100%;min-height:53px;padding:12px 15px;border:1px solid #cbdccf;border-radius:10px;background-color:#f9fbf9;color:#173f2b;font-size:.94rem;box-shadow:0 1px 2px rgba(14,60,30,.025);transition:border-color .2s,box-shadow .2s,background .2s}
.portal-auth .portal-login-form input::placeholder{color:#829789}
.portal-auth .portal-login-form :is(input,select):focus-visible{outline:3px solid #d7edda;outline-offset:1px;border-color:#187b43;background:#fff;box-shadow:none}
.portal-auth .portal-login-form select{appearance:none;background-image:url("/assets/portal-icons/chevron-down.svg");background-position:right 16px center;background-repeat:no-repeat;background-size:18px;padding-right:46px}
.portal-auth .portal-login-form button{width:100%;min-height:56px;display:flex;align-items:center;justify-content:space-between;margin:5px 0 0;padding:8px 9px 8px 20px;border:0;border-radius:10px;background:#d62831;color:#fff;font-size:.9rem;font-weight:750;letter-spacing:-.015em;box-shadow:0 7px 17px rgba(159,32,42,.12)}
.portal-auth .portal-login-form button:hover{background:#b62029;box-shadow:0 10px 22px rgba(159,32,42,.19)}
.portal-auth .portal-login-form button::after{width:38px;height:38px;border-radius:8px;background:#fff url("/assets/portal-icons/arrow-up-right.svg") center/20px no-repeat}
.portal-auth .portal-entry-help{margin:25px 0 0;padding-top:22px;border-top:1px solid #e4ece5;color:#607264;font-size:.79rem;line-height:1.7}
.portal-auth .portal-entry-help a{color:#0d6b39;font-weight:750;text-underline-offset:3px}
.portal-auth .portal-alert{margin:20px 0 0;padding:14px 16px;border:1px solid #edd4d5;border-left:4px solid #d62831;border-radius:8px;background:#fff4f3;color:#77222a;font-size:.85rem;line-height:1.55}
.portal-auth .portal-alert[role="status"]{border-color:#cae4cf;border-left-color:#08763a;background:#edf8ee;color:#1c613a}
.portal-auth .install-form #install-mysql:not([hidden]){display:grid;gap:15px;padding:18px;border:1px solid #dce9dd;border-radius:11px;background:#f4f9f4}
.portal-auth .install-form #install-mysql[hidden]{display:none}
.portal-auth .auth-panel-inner>.auth-action{display:inline-flex;align-items:center;min-height:44px;margin-top:26px;padding:11px 15px;border-radius:9px;background:#d62831;color:#fff;font-size:.83rem;font-weight:750;text-decoration:none;transition:background .2s,transform .2s}
.portal-auth .auth-panel-inner>.auth-action:hover{background:#b62029;transform:translateY(-2px)}
@media(max-width:950px){.auth-layout{grid-template-columns:1fr;gap:18px}.auth-story{min-height:300px}.auth-story-copy{inset:auto 30px 30px}.auth-story-headline{font-size:clamp(2.5rem,6vw,4rem)}.auth-panel-inner{width:min(100%,700px);padding:clamp(28px,5vw,60px)}}
@media(max-width:560px){.auth-topbar{min-height:70px;padding:12px 17px}.auth-brand img{width:145px;max-height:45px}.auth-back{padding:8px 10px;font-size:.7rem;min-height:38px}.auth-back::before{width:15px;height:15px}.auth-layout{width:calc(100% - 24px);min-height:calc(100svh - 70px);gap:10px;padding:12px 0 22px}.auth-story{min-height:225px;border-radius:12px}.auth-story img{object-position:center 40%}.auth-story-copy{inset:auto 20px 21px}.auth-story-copy>span{font-size:.65rem;padding:6px 9px}.auth-story-headline{font-size:2.4rem;margin:13px 0 0}.auth-story-copy>p:last-child{display:none}.auth-panel{border-radius:12px}.auth-panel-inner{padding:31px 22px 35px}.portal-auth h1{font-size:clamp(2.25rem,10vw,3rem)}.portal-auth .portal-login-form{margin-top:25px}.portal-auth .portal-entry-help{margin-top:22px}}
@media(prefers-reduced-motion:reduce){.auth-back,.portal-auth .portal-login-form button,.portal-auth .auth-action,.portal-auth .portal-login-form :is(input,select){transition:none}.auth-back:hover,.portal-auth .auth-action:hover{transform:none}}
