/* Student authentication only. Shared theme and admin portal remain unchanged. */
body:has(.auth-gate){background:#f2eee6;color:#332a26}
body:has(.auth-gate) main.container{max-width:1280px;padding:32px 28px!important}
body:has(.auth-gate) main>footer{font:10px/1.6 monospace;letter-spacing:.12em;color:#827466!important;margin-top:24px!important}
.auth-gate{--auth-wine:#501c29;--auth-gold:#aa8754;grid-template-columns:46% 54%;max-width:1180px;min-height:720px;border:1px solid #ded5c7;border-radius:26px;background:#fcf9f2;box-shadow:0 12px 40px #42222308}
.auth-gate .signup-story{padding:44px 42px;min-height:0;background:radial-gradient(ellipse at 0 100%,#7f414044,transparent 68%),#35131e;isolation:isolate}
.auth-gate .signup-story:before{content:"";position:absolute;inset:0;z-index:-1;opacity:.03;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
.auth-gate .signup-story:after{width:410px;height:410px;right:-245px;top:37%;border-color:#c7a77a24;box-shadow:0 0 0 48px #bc986c07,0 0 0 96px #bc986c04;z-index:-1}
.auth-gate .wordmark{font-size:35px;gap:16px;align-self:flex-start}
.auth-gate .wordmark span{font-size:10px;letter-spacing:.19em}
.auth-gate .story-main{margin:auto 0;padding:64px 0}
.auth-gate .story-main .eyebrow{color:#c3a479;font:10px/1.6 monospace;letter-spacing:.18em;margin-bottom:24px}
.auth-gate .signup-story h1{font-size:clamp(2.8rem,4.65vw,4.6rem);line-height:1.05;letter-spacing:-.055em;margin:0 0 28px;color:#f5eddf}
.auth-gate .signup-story h1 em{color:#d2af7a}
.auth-gate .story-main>p:last-child{max-width:290px;font-size:13px;line-height:1.9;color:#c8b7b8;margin-bottom:0}
.auth-gate .story-bottom{padding-top:22px;font:9px/1.6 monospace;letter-spacing:.14em;border-color:#d7c1ae26}
.auth-gate .signup-form{width:100%;max-width:660px;justify-self:center;align-self:center;padding:46px clamp(28px,4vw,56px);min-width:0}
.auth-gate .signup-form>.brand{display:inline-block;font-size:9px;letter-spacing:.17em;margin-bottom:8px!important;color:#6e4b43}
.auth-gate .signup-form>.eyebrow{margin:18px 0 14px!important}
.auth-gate .eyebrow{font:10px/1.5 monospace;letter-spacing:.16em;text-transform:uppercase;color:#82653e}
.auth-form-meta{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}
.auth-form-meta>span:last-child:not(:first-child){font:8px/1.5 monospace;letter-spacing:.1em;color:#8a7b6d}
.auth-gate .signup-form h1,.auth-gate .signup-form h2{font-size:clamp(2rem,3vw,2.65rem);line-height:1.1;letter-spacing:-.045em;margin:0 0 14px;font-weight:400}
.auth-gate .signup-form>.text-secondary{font-size:13px;line-height:1.75;color:#776c62!important;margin-bottom:30px!important}
.auth-gate .signup-form form>.mb-3,.auth-gate .signup-form form>.mb-4{margin-bottom:20px!important}
.auth-gate .form-label{display:block;font-size:13px;line-height:1.4;font-weight:600;margin-bottom:8px;color:#46372f}
.auth-gate .form-control{height:52px;padding:12px 15px;font-size:15px;line-height:1.5;border:1px solid #dcd2c4;border-radius:12px;background:#faf6ee;color:#3c2e29;transition:border-color .2s,box-shadow .2s,background .2s;scroll-margin-block:28px}
.auth-gate .form-control::placeholder{color:#9b8e80;font-size:13px}
.auth-gate .form-control:hover{border-color:#baa995}
.auth-gate .form-control:focus{background:#fffcf6;border-color:#93654f;box-shadow:0 0 0 3px #8d684810;outline:0}
.auth-gate .form-control[aria-invalid=true]{border-color:#9c5d62;background:#fbf2ee}
.auth-gate .form-text{margin-top:6px;font-size:11px;line-height:1.6;color:#87786b}
.auth-gate .input-group{display:block;position:relative}
.auth-gate .input-group>.form-control{width:100%;border-radius:12px!important;padding-right:112px}
.auth-gate .input-group>[data-toggle-password]{position:absolute;right:6px;top:5px;bottom:5px;z-index:5;border:0!important;background:transparent!important;box-shadow:none!important;color:#82634d;font:9px/1 monospace;text-transform:uppercase;letter-spacing:.09em;padding:0 10px;border-radius:7px!important;min-height:42px}
.auth-gate .input-group>[data-toggle-password]:hover{color:#4c1825}
.auth-gate .input-group>[data-toggle-password]:focus-visible{outline:2px solid #987440;outline-offset:0}
.auth-gate #password-help{font:8px/1.5 monospace;letter-spacing:.07em;margin-top:10px}
.auth-gate #password-rules{display:grid!important;grid-template-columns:1fr 1fr;gap:5px 12px!important;font-size:11px!important;line-height:1.5;color:#8d7c6c}
.auth-gate #password-rules .text-success{color:#59715a!important}
.auth-gate .password-meter{height:2px;margin-top:10px!important;background:#e7decf}
.auth-gate .confirmation-feedback:empty{display:none}
.auth-gate .confirmation-feedback[data-match=true]{color:#59715a}
.auth-gate .confirmation-feedback[data-match=false]{color:#925058}
.auth-gate .btn-primary{display:flex;align-items:center;justify-content:center;gap:13px;min-height:56px;padding:16px 20px;border:1px solid var(--auth-wine);border-radius:12px;background:var(--auth-wine);color:#faf1e4;font:600 11px/1.5 Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;transition:background .2s,transform .2s,box-shadow .2s}
.auth-gate .btn-primary:hover:not(:disabled){background:#692b39;border-color:#692b39;transform:translateY(-1px);box-shadow:0 5px 12px #501c2910}
.auth-gate .btn-primary:active:not(:disabled){transform:translateY(0) scale(.995)}
.auth-gate .cta-arrow{font-size:18px;line-height:1;display:inline-block;transition:transform .2s}
.auth-gate .btn-primary:hover .cta-arrow{transform:translateX(3px)}
.auth-gate .btn-primary:disabled{opacity:.65;cursor:wait}
.auth-gate #signup-status{font-size:10px!important;line-height:1.7;color:#8b7c6c!important}
.auth-gate .auth-switch,.auth-gate .signup-form>p.text-center{font-size:12px;line-height:1.8;color:#877467!important;text-align:center;margin:25px 0 0!important}
.auth-gate .auth-switch a,.auth-gate .signup-form>p.text-center a{display:inline-block;margin-left:6px;color:#622f36;font-size:10px;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;font-weight:600;padding:6px 3px}
.auth-gate a:hover{text-decoration:underline;text-underline-offset:4px}
.auth-gate .auth-admin-link{display:block;width:fit-content;margin:26px auto 0!important;padding:8px;font:9px/1.5 monospace;color:#907369;letter-spacing:.04em;text-decoration:none}
.auth-gate .membership-error{font-size:12px;color:#8c464f;margin-top:6px;line-height:1.6}
.auth-gate .alert{padding:12px 15px;font-size:12px;line-height:1.7;border-radius:10px}
.auth-gate .alert-danger{border:1px solid #c99f9c;background:#f5e9e4;color:#813e4c}
.auth-gate .alert-success{border:1px solid #c8d0bd;background:#edf0e5;color:#53634a}
.auth-gate .auth-recipient{display:inline-block;margin-top:5px;color:#513830;font-weight:600}
.auth-gate .otp-input-wrap{margin-top:12px}
.auth-gate .otp-digits{display:flex;gap:10px;border:0;padding:0;margin:0}
.auth-gate .otp-digit{width:54px;min-width:0;height:58px;padding:0;text-align:center;font:27px/1 Georgia,serif;letter-spacing:0;border-radius:10px}
.auth-gate .otp-digit::placeholder{font:20px Georgia;color:#c6b8a5}
.auth-gate #otp-help{margin:12px 0 27px}
.auth-gate .auth-resend{border-top:1px solid #e4dacf;margin-top:28px;padding-top:22px}
.auth-gate .resend-timer{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#897867;margin-bottom:12px}
.auth-gate #resend-countdown{font:13px/1.5 monospace;letter-spacing:.12em;color:#6d473e}
.auth-gate .auth-resend .btn{min-height:48px;border:1px solid #d6c8b6;background:transparent;color:#725345;border-radius:10px;font-size:11px}
.auth-gate .auth-resend .btn:hover:not(:disabled){background:#f0e7da;border-color:#a38a6b}
.auth-gate .auth-resend .btn:disabled{opacity:.45}
.auth-gate .auth-delivery-note{font-size:11px;color:#897867;line-height:1.8;margin:16px 0 0}
.auth-gate .auth-success-content{text-align:center}
.auth-gate .auth-success-mark{display:grid;place-items:center;width:64px;height:64px;border:1px solid #b59b70;border-radius:50%;color:#6b7555;font:30px Georgia;margin:0 auto 28px}
.auth-gate .auth-success-content h1{font-size:clamp(2.5rem,4vw,3.5rem);margin:22px 0}
.auth-gate .auth-success-content h1 em{color:#956d43;font-weight:400}
.auth-gate .auth-success-content>p:not(.eyebrow){font-size:13px;color:#877567;margin-bottom:28px}
@keyframes auth-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:no-preference){
 .auth-gate .wordmark{animation:auth-arrive .25s .12s backwards}
 .auth-gate .story-main .eyebrow{animation:auth-arrive .25s .22s backwards}
 .auth-gate .story-main h1{animation:auth-arrive .3s .32s backwards}
 .auth-gate .story-main>p:last-child{animation:auth-arrive .3s .45s backwards}
 .auth-gate .signup-form{animation:auth-arrive .28s .5s backwards}
 .auth-gate form>.mb-3,.auth-gate form>.mb-4{animation:auth-arrive .22s .57s backwards}
 .auth-gate form>.mb-3:nth-of-type(2){animation-delay:.61s}
 .auth-gate form>.mb-3:nth-of-type(3){animation-delay:.65s}
 .auth-gate form>.mb-3:nth-of-type(4){animation-delay:.69s}
 .auth-gate form>.mb-4{animation-delay:.73s}
 .auth-gate .btn-primary{animation:auth-arrive .2s .76s backwards}
 .auth-gate.auth-leaving .signup-form{animation:none;transition:opacity .24s,transform .24s;opacity:0;transform:translateY(8px)}
 .auth-gate.otp-shell .signup-form{animation-delay:0s}
 .auth-gate.auth-success .signup-form,.auth-gate.auth-success .btn-primary{animation-delay:0s}
}
@media(max-width:899px){
 body:has(.auth-gate) main.container{max-width:650px;padding:20px 20px!important}
 .auth-gate{grid-template-columns:1fr;min-height:0;border-radius:22px}
 .auth-gate .signup-story{padding:24px 26px;min-height:0}
 .auth-gate .wordmark{font-size:25px;gap:12px}
 .auth-gate .wordmark span{font-size:9px}
 .auth-gate .story-main{padding:22px 0 0;margin:0}
 .auth-gate .story-main .eyebrow{display:none}
 .auth-gate .signup-story h1{font-size:clamp(2.4rem,7vw,3.1rem);margin:0;line-height:1.05}
 .auth-gate .story-main>p:last-child,.auth-gate .story-bottom{display:none}
 .auth-gate .signup-story:after{top:-60px;right:-210px}
 .auth-gate .signup-form{padding:32px 26px;max-width:580px}
 .auth-gate .signup-form>.brand{display:none}
 .auth-gate .signup-form>.eyebrow{margin:0 0 16px!important}
 .auth-gate .signup-form h1,.auth-gate .signup-form h2{font-size:clamp(2rem,7vw,2.6rem)}
 .auth-gate .form-control{font-size:16px;height:52px}
 .auth-gate .otp-digit{width:48px;height:54px;font-size:26px}
 .auth-gate .otp-digits{gap:8px}
}
@media(max-width:450px){
 body:has(.auth-gate) main.container{padding:12px 10px 24px!important}
 .auth-gate .signup-form{padding:30px 20px}
 .auth-gate .signup-story{padding:22px 24px}
 .auth-gate .signup-story h1{font-size:2.45rem}
 .auth-form-meta>span:last-child:not(:first-child){font-size:7px;letter-spacing:.02em}
 .auth-gate .otp-digits{gap:6px;justify-content:space-between}
 .auth-gate .otp-digit{width:calc((100% - 30px)/6);max-width:48px;height:52px}
}
@media(prefers-reduced-motion:reduce){.auth-gate *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
