.login-shell{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);background:var(--paper)}
.login-visual{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;padding:clamp(2rem,6vw,6rem);color:#f4faf9;background:radial-gradient(circle at 18% 14%,#83d9c33b,transparent 32%),linear-gradient(145deg,var(--campus-navy),var(--hero-end))}
.login-visual:after{content:"";position:absolute;z-index:-1;width:32rem;height:32rem;right:-13rem;bottom:-14rem;border:1px solid #d8fff124;border-radius:50%;box-shadow:0 0 0 3rem #d8fff10b,0 0 0 7rem #d8fff108}
.login-brand{display:flex;align-items:center;gap:.8rem}.login-brand img{border-radius:16px;box-shadow:0 10px 24px #001b1838}.login-brand strong{display:block;font:600 1.2rem var(--sans);letter-spacing:-.02em}.login-brand small{display:block;color:#d1e9e0;font-size:.78rem}
.login-visual-copy{max-width:36rem}.login-kicker{margin:0 0 .8rem;color:var(--green);font-size:.72rem;font-weight:750;letter-spacing:.13em;text-transform:uppercase}.login-visual .login-kicker{color:#b8e8d8}.login-visual h1{margin:0 0 1rem;color:#f4faf9;font:600 clamp(2.8rem,6vw,5.8rem)/.98 var(--display);letter-spacing:-.055em}.login-visual h1 em{color:#a8e3ce;font-style:normal}.login-visual-copy>p:last-child{max-width:32rem;margin:0;color:#d7ece5;font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.55}
.login-visual-art{position:absolute;right:clamp(1.5rem,8vw,7rem);top:24%;width:min(36vw,28rem);aspect-ratio:1.35;overflow:hidden;border:1px solid #d8fff13b;border-radius:28px;transform:rotate(5deg);box-shadow:0 24px 60px #001b1840;background:#ffffff12;opacity:.82}.login-visual-art img{width:100%;height:100%;object-fit:cover;mix-blend-mode:screen;filter:saturate(.85) contrast(.9)}
.login-orbit{display:flex;flex-wrap:wrap;gap:.55rem}.login-orbit span{padding:.5rem .85rem;border:1px solid #d8fff13b;border-radius:999px;background:#ffffff12;color:#e5f7f0;font-size:.82rem;backdrop-filter:blur(10px)}.login-visual-footer{margin:0;color:#b8d8cf;font-size:.8rem}
.login-card{align-self:center;width:min(100% - 3rem,30rem);margin:auto;padding:clamp(1.5rem,4vw,3rem) 0}.login-card-head{margin-bottom:2rem}.login-card-head h2{margin:.15rem 0 .4rem;font:600 clamp(2rem,4vw,3rem)/1.05 var(--display);letter-spacing:-.04em}.login-card-head>p:last-child{margin:0;color:var(--muted)}.login-card form{display:grid;gap:.7rem}.login-card h3{margin:0 0 .25rem;font-size:1.15rem}.login-card label{display:grid;gap:.35rem;margin:0;color:var(--ink);font-size:.88rem;font-weight:700}.login-card input{margin-top:.05rem;border-radius:14px;background:var(--surface);padding:.78rem .9rem;min-height:50px}.login-card button{min-height:50px;border-radius:14px}.login-card button span{margin-left:.35rem;font-size:1.2em}.login-card .secondary{background:transparent;border-color:var(--line);color:var(--green)}.login-card .form-help{margin:0 0 .25rem;color:var(--muted);font-size:.87rem}.login-divider{display:flex;align-items:center;gap:.7rem;margin:1.6rem 0;color:var(--muted);font-size:.78rem}.login-divider:before,.login-divider:after{content:"";height:1px;background:var(--line);flex:1}.login-note{margin:1.5rem 0 .75rem;color:var(--muted);font-size:.82rem}.login-card nav{display:flex;gap:1rem;font-size:.82rem}.login-card nav a{text-underline-offset:.25em}#auth-error,#otp-status{min-height:1.3em;margin:.1rem 0 0;color:var(--red);font-size:.86rem}#otp-status{color:var(--green)}
@media(max-width:800px){.login-shell{grid-template-columns:1fr}.login-visual{min-height:38vh;padding:1.5rem 1.25rem 2rem}.login-visual-art{right:1rem;top:20%;width:45vw;opacity:.5}.login-visual-copy{margin-top:3rem}.login-visual h1{font-size:clamp(2.7rem,13vw,4.5rem)}.login-orbit{margin-top:2rem}.login-visual-footer{margin-top:2.5rem}.login-card{width:min(100% - 2.5rem,30rem);padding:2.5rem 0 3rem}}
@media(prefers-reduced-motion:no-preference){.login-visual:after{animation:login-drift 18s ease-in-out infinite alternate}@keyframes login-drift{to{transform:translate(-1rem,-.8rem) scale(1.04)}}}
.access-link{display:block;margin:1.25rem 0 0;color:var(--green);font-weight:700;text-underline-offset:.25em}.login-teasers{padding:clamp(3rem,8vw,7rem) clamp(1.25rem,6vw,6rem);background:var(--surface)}.teaser-intro{max-width:42rem;margin:0 auto 2rem;text-align:center}.teaser-intro h2{margin:.2rem 0 .7rem;font:600 clamp(2rem,5vw,3.7rem)/1 var(--display);letter-spacing:-.045em}.teaser-intro p:last-child{color:var(--muted)}.teaser-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;max-width:76rem;margin:auto}.teaser-grid article{overflow:hidden;border:1px solid var(--line);border-radius:24px;background:var(--paper);box-shadow:var(--shadow)}.teaser-grid img{display:block;width:100%;aspect-ratio:1.55;object-fit:cover}.teaser-grid h3,.teaser-grid p{margin-left:1.1rem;margin-right:1.1rem}.teaser-grid h3{margin-top:1rem;margin-bottom:.3rem}.teaser-grid p{margin-bottom:1.2rem;color:var(--muted);font-size:.9rem}.access-page{min-height:100dvh;display:grid;place-items:center;padding:2rem 1.25rem;background:radial-gradient(circle at 15% 10%,var(--soft),transparent 45%),var(--paper)}.access-card{width:min(100%,34rem);padding:clamp(1.5rem,5vw,3rem);border:1px solid var(--glass-border,var(--line));border-radius:28px;background:var(--glass-reading,var(--surface));box-shadow:var(--glass-shadow,var(--shadow))}.access-card>img{border-radius:14px}.access-card h1{font:600 clamp(2.2rem,7vw,4rem)/1 var(--display);letter-spacing:-.05em;margin:.3rem 0 .8rem}.access-card form{display:grid;gap:.75rem;margin-top:1.5rem}.access-card label{display:grid;gap:.35rem;margin:0;font-weight:700}.access-card input{min-height:50px}.access-back{position:absolute;top:1.5rem;left:1.25rem;color:var(--green);font-weight:700}.access-card nav{display:flex;gap:1rem;font-size:.82rem}
@media(max-width:800px){.teaser-grid{grid-template-columns:1fr}.teaser-grid article{display:grid;grid-template-columns:7rem 1fr;grid-template-rows:auto auto}.teaser-grid img{grid-row:1 / span 2;width:7rem;height:100%;min-height:7rem}.teaser-grid h3,.teaser-grid p{margin-left:.9rem}.teaser-grid h3{margin-top:1rem}.teaser-grid p{margin-bottom:1rem}}
.public-showcase{padding:clamp(3rem,8vw,7rem) clamp(1.25rem,6vw,6rem);background:var(--paper)}.showcase-head{max-width:42rem;margin:0 auto 2rem;text-align:center}.showcase-head h2{margin:.2rem 0 .7rem;font:600 clamp(2rem,5vw,3.7rem)/1 var(--display);letter-spacing:-.045em}.showcase-head p:last-child{margin:0;color:var(--muted)}.showcase-grid{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:1rem;max-width:76rem;margin:auto}.showcase-grid article{border:1px solid var(--line);border-radius:24px;padding:1.3rem;background:var(--surface);box-shadow:var(--shadow)}.showcase-weather{display:flex;gap:1rem;align-items:center;background:linear-gradient(145deg,var(--soft),var(--surface))!important}.showcase-events{display:flex;gap:1rem;align-items:flex-start}.showcase-icon{display:grid;place-items:center;flex:0 0 3.2rem;width:3.2rem;height:3.2rem;border-radius:18px;background:var(--green);color:var(--on-green);font-size:1.5rem}.showcase-label{margin:0 0 .2rem;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.showcase-weather strong{display:block;color:var(--green);font:600 clamp(1.8rem,4vw,2.8rem)/1 var(--display)}.showcase-meta{margin:.2rem 0 0;color:var(--muted);font-size:.85rem}.public-event{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.public-event:first-child{border-top:0;padding-top:0}.public-event strong{font-size:.9rem}.public-event span{color:var(--green);font-size:.8rem;white-space:nowrap}@media(max-width:800px){.showcase-grid{grid-template-columns:1fr}.showcase-grid article{padding:1.1rem}}
/* Enrollment shares the calm reading surface and touch targets of login. */
.access-page{padding-top:5.5rem;padding-bottom:3rem}
.access-card{box-sizing:border-box;min-width:0}
.access-card>p:not(.login-kicker){color:var(--muted);line-height:1.6}
.access-card .login-kicker{margin-top:1.25rem}
.access-card label{display:block;font-size:.9rem}
.access-card .field-optional{font-weight:400;color:var(--muted);font-size:.8rem}
.access-card input,.access-card select,.login-card select{box-sizing:border-box;width:100%;min-width:0;min-height:50px;padding:.78rem .9rem;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);font:inherit}
.access-card button{min-height:52px;border-radius:14px;margin-top:.5rem}
.access-card .form-help{margin:0;color:var(--muted);font-size:.8rem;line-height:1.5}
#access-request-status,#login-link-status{margin:0;min-height:1.4em;line-height:1.55;color:var(--green);overflow-wrap:anywhere}
.access-card input:focus-visible,.access-card select:focus-visible,.access-card button:focus-visible,.login-card select:focus-visible{outline:3px solid var(--green);outline-offset:3px}
.access-card button:disabled,.login-card button:disabled{opacity:.6;cursor:wait}
.login-card form[hidden]{display:none}
@media(max-width:400px){.access-page{padding-left:1rem;padding-right:1rem}.access-card{padding:1.25rem}.access-card h1{font-size:2.5rem}}
.access-page{padding-top:4.5rem;padding-bottom:2rem}
.access-card{padding:clamp(1.25rem,3vw,2rem)}
.access-card h1{font-size:clamp(2rem,4vw,2.8rem);line-height:1.06}
.access-card>p:not(.login-kicker){font-size:.9rem}
.access-card form{gap:.45rem;margin-top:1rem}
.access-card input,.access-card select{min-height:46px;padding:.62rem .8rem}
.access-card .login-note{margin-top:1rem}
