:root { --ink:#203c37; --muted:#67776e; --green:#175e4e; --lime:#d8ef8d; --line:#e3e8e1; --paper:#fbfcf8; --body-font:'DM Sans',sans-serif; --heading-font:'Manrope',sans-serif; }
*,*::before,*::after { box-sizing:border-box; }
body { margin:0; background:#f4f6ef; color:var(--ink); font-family:var(--body-font); font-size:14px; -webkit-font-smoothing:antialiased; }
button,input { font:inherit; min-height:48px; }
button,a,input { -webkit-tap-highlight-color:transparent; }
button,a { touch-action:manipulation; }
a { color:var(--green); text-decoration:none; }
a:hover { text-decoration:underline; }
button { cursor:pointer; }
button:disabled { cursor:wait; }
button:focus-visible,a:focus-visible,input:focus-visible { outline:3px solid #79a94a; outline-offset:4px; }
[hidden] { display:none!important; }
.icon-library { position:absolute; width:0; height:0; overflow:hidden; }
.icon { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
.page-shell { max-width:1264px; margin:auto; padding:0 48px; }
.site-header { height:118px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.brand { display:flex; align-items:center; gap:12px; color:var(--ink); }
.brand:hover { text-decoration:none; }
.brand-logo { height:54px; width:54px; display:grid; place-items:center; background:white; border:1px solid #e1e7db; border-radius:16px; }
.brand-logo img { width:40px; height:44px; object-fit:contain; }
.brand-copy { display:flex; flex-direction:column; gap:5px; }
.brand-copy strong { font:800 21px var(--heading-font); letter-spacing:.4px; }
.brand-location { font-size:11px; font-weight:600; letter-spacing:1.6px; margin-left:6px; }
.brand-copy>span { color:var(--muted); font-size:11px; }
.header-note { display:flex; gap:9px; align-items:center; color:#65766e; font-size:12px; }
.status-dot { width:6px; height:6px; flex-shrink:0; border-radius:50%; background:#6d9763; }
.login-layout { display:grid; grid-template-columns:1fr 1fr; background:var(--paper); border:1px solid #e1e7dc; border-radius:26px; overflow:hidden; box-shadow:0 20px 60px -30px #25483828; min-height:710px; }
.story-panel { position:relative; isolation:isolate; overflow:hidden; background:#104b43; color:#fbfcf3; display:flex; flex-direction:column; padding:47px 46px 0; }
.story-glow { position:absolute; z-index:-1; inset:0; background:radial-gradient(ellipse at 96% 1%,#718a4138,transparent 55%),radial-gradient(ellipse at 7% 72%,#36786670,transparent 65%); }
.story-panel::after { content:''; position:absolute; inset:0; z-index:-1; opacity:.14; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23noise)' opacity='.23' d='M0 0h180v180H0z'/%3E%3C/svg%3E"); }
.story-content { flex:1; }
.eyebrow { font-size:9px; letter-spacing:1.9px; color:#dae5cb; display:flex; align-items:center; gap:9px; font-weight:600; }
.eyebrow>span { width:5px; height:5px; background:var(--lime); border-radius:50%; box-shadow:0 0 0 4px #d8ef8d10; }
.story-panel h1 { position:relative; margin:27px 0 20px; font:500 clamp(46px,4.5vw,59px)/1.12 var(--heading-font); letter-spacing:-2.8px; }
.story-panel h1>span { color:var(--lime); }
.headline-spark { color:var(--lime); width:34px; height:34px; margin:0 0 10px 17px; stroke-width:1.2; transform:rotate(12deg); }
.story-description { font-size:13px; line-height:1.9; color:#bed3c8; margin:0; }
.story-description span { display:block; }
.campus-art { height:255px; position:relative; margin-top:22px; width:100%; }
.orbit { position:absolute; border:1px solid #cce8bf24; left:50%; top:46%; border-radius:50%; transform:translate(-50%,-50%) rotate(-25deg); }
.orbit-outer { width:320px; height:232px; }
.orbit-inner { width:229px; height:168px; border-style:dashed; }
.campus-core { position:absolute; left:50%; top:46%; transform:translate(-50%,-50%) rotate(-9deg); width:98px; height:98px; border-radius:27px; background:linear-gradient(135deg,#b9d59629,#a8dcca0a); border:1px solid #d8ef8d3d; display:grid; place-items:center; box-shadow:0 16px 32px #06352c44; }
.campus-core .icon { width:52px; height:52px; color:var(--lime); stroke-width:1.1; }
.orbit-point { position:absolute; width:8px; height:8px; border-radius:50%; background:var(--lime); box-shadow:0 0 0 6px #d8ef8d0c; }
.point-one { top:41px; left:61%; width:5px; height:5px; }
.point-two { top:169px; left:19%; }
.floating-card { position:absolute; display:flex; align-items:center; gap:12px; border-radius:13px; padding:13px 15px; border:1px solid #ffffff25; background:#2b6659; box-shadow:0 12px 30px #052c3133; backdrop-filter:blur(12px); }
.floating-card strong { display:block; font-size:11px; font-weight:500; }
.floating-card div>span { display:block; font-size:9px; color:#bbd1c5; margin-top:5px; }
.learning-card { top:18px; left:-2px; transform:rotate(-5deg); }
.future-card { top:148px; right:-6px; transform:rotate(6deg); background:#e5edce; color:#244d3e; padding-right:24px; }
.future-card div>span { color:#65735b; }
.mini-icon { display:grid; place-items:center; width:33px; height:33px; background:#e9f2d81a; border-radius:10px; color:var(--lime); }
.mini-icon .icon { width:20px; height:20px; }
.future-card .mini-icon { color:#386346; background:#cbd9ad66; }
.card-dot { width:5px; height:5px; background:var(--lime); border-radius:50%; margin-left:5px; }
.art-caption { position:absolute; bottom:9px; left:0; width:100%; text-align:center; font-size:8px; letter-spacing:3px; color:#a6c7b2; }
.story-footer { border-top:1px solid #e5f1dd24; padding:23px 0 26px; display:flex; align-items:center; gap:12px; margin-top:16px; }
.footer-mark { width:35px; height:35px; display:grid; place-items:center; background:#d8ef8d10; border-radius:10px; color:#d7e4bf; }
.footer-mark .icon { width:19px; height:19px; }
.story-footer strong { font-weight:500; font-size:11px; }
.story-footer div>span { display:block; color:#a8c6b8; font-size:9px; margin-top:5px; }
.story-footer>.icon { margin-left:auto; width:18px; color:#a8c6b8; }
.form-panel { display:flex; flex-direction:column; padding:47px 55px 0; }
.form-content { width:100%; max-width:385px; margin:0 auto; flex:1; }
.portal-label { display:flex; align-items:center; gap:7px; color:#687c69; font-size:9px; font-weight:700; letter-spacing:1.7px; }
.portal-label .status-dot { width:5px; height:5px; background:#8caa6c; }
.welcome-heading { display:flex; align-items:center; gap:14px; margin-top:24px; }
.welcome-heading h2 { font:800 clamp(28px,3vw,36px)/1.3 var(--heading-font); letter-spacing:-1.7px; margin:0; }
.welcome-heading h2 span { color:#6d9463; }
.welcome-wave { font-size:29px; color:#88a761; transform:rotate(10deg); }
.form-intro { margin:10px 0 28px; color:var(--muted); font-size:13px; line-height:1.6; }
.google-button { width:100%; min-height:49px; background:#fff; color:#34473c; border:1px solid #dce2d6; border-radius:9px; display:flex; align-items:center; justify-content:center; gap:12px; font-size:13px; font-weight:600; transition:background .2s,border-color .2s,transform .2s; }
.google-button:hover { background:#f0f4e9; border-color:#b7c9b1; transform:translateY(-1px); }
.divider { display:flex; align-items:center; gap:13px; margin:24px 0; color:#697665; font-size:11px; white-space:nowrap; }
.divider::before,.divider::after { content:''; height:1px; background:var(--line); flex:1; }
.field-group { margin-bottom:19px; }
.field-group>label { display:block; font-weight:600; font-size:12px; margin-bottom:9px; }
.input-wrap { position:relative; display:flex; align-items:center; }
.input-wrap input { width:100%; border:1px solid #dce3d7; border-radius:9px; background:white; padding:14px 16px 14px 43px; color:var(--ink); font-size:13px; transition:border-color .2s,box-shadow .2s; }
.input-wrap input::placeholder { color:#6f7d6c; }
.input-wrap:focus-within input { border-color:#638967; box-shadow:0 0 0 3px #72976813; outline:none; }
.input-icon { position:absolute; pointer-events:none; left:15px; color:#91a18d; width:17px; height:17px; }
.password-group input { padding-right:50px; }
.password-toggle { position:absolute; right:2px; top:2px; height:44px; min-height:44px; width:44px; border:0; background:transparent; color:#8a9787; border-radius:7px; display:grid; place-items:center; }
.password-toggle:hover { color:var(--green); background:#f0f4e8; }
.password-toggle .icon { width:18px; height:18px; }
.caps-warning { color:#856017; font-size:11px; margin:8px 0 0; }
.form-options { display:flex; justify-content:space-between; align-items:center; gap:12px; margin:2px 0 25px; font-size:12px; }
.remember-option { display:flex; align-items:center; gap:8px; cursor:pointer; color:#6c7a6a; min-height:25px; }
.remember-option input { width:14px; height:14px; min-height:0; margin:0; accent-color:var(--green); cursor:pointer; }
.form-options a { font-weight:600; padding:8px 0; }
.sign-in-button { display:flex; align-items:center; justify-content:center; position:relative; gap:18px; width:100%; min-height:49px; background:var(--green); border:1px solid var(--green); border-radius:9px; color:white; font-size:12px; font-weight:600; box-shadow:0 5px 10px #175e4e14; transition:background .2s,transform .2s,box-shadow .2s; }
.sign-in-button:hover { background:#104c3e; transform:translateY(-1px); box-shadow:0 7px 16px #175e4e25; }
.sign-in-button>.icon { width:17px; height:17px; }
.button-spinner { width:17px; height:17px; border:2px solid #ffffff55; border-top-color:white; border-radius:50%; animation:spin .75s linear infinite; }
.security-note { display:flex; align-items:center; justify-content:center; gap:6px; color:#64775f; font-size:10px; margin:16px 0 28px; }
.security-note .icon { width:13px; height:13px; }
.account-help { display:flex; align-items:center; gap:11px; border-top:1px solid var(--line); padding:20px 0 22px; }
.help-icon { display:grid; place-items:center; background:#edf1e5; border:1px solid #e4e9d9; border-radius:9px; width:34px; height:34px; color:#799269; flex-shrink:0; }
.help-icon .icon { width:17px; height:17px; }
.account-help p { margin:0; font-size:11px; color:#68745e; line-height:1.8; }
.account-help strong { font-size:11px; font-weight:500; color:#56684e; }
.form-bottom { display:flex; justify-content:center; align-items:center; gap:7px; border-top:1px solid var(--line); padding:20px 0 22px; font-size:10px; color:#727a64; text-align:center; }
.bottom-dot { width:4px; height:4px; border-radius:50%; background:#a7b68d; }
.notice { display:flex; gap:9px; align-items:flex-start; border:1px solid #c4d7bc; background:#eef5e9; color:#3c6240; padding:12px; border-radius:9px; margin-bottom:18px; font-size:12px; line-height:1.6; }
.notice .icon { width:17px; height:17px; margin-top:2px; }
.notice-error { background:#fff1ed; border-color:#efd4cb; color:#a1432a; }
.site-footer { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:26px 1px 32px; color:#6b7765; font-size:10px; }
.site-footer>span:last-child { display:flex; align-items:center; gap:8px; }
.site-footer .icon { width:13px; height:13px; color:#829866; }
@keyframes spin { to { transform:rotate(360deg); } }

@media(min-width:1500px) {
    .page-shell { padding-top:26px; }
    .login-layout { min-height:748px; }
    .story-panel,.form-panel { padding-top:54px; }
    .campus-art { margin-top:38px; }
}
@media(max-width:1100px) {
    .page-shell { padding:0 32px; }
    .story-panel,.form-panel { padding-left:32px; padding-right:32px; }
    .floating-card { padding:11px; gap:9px; }
    .floating-card strong { font-size:10px; }
    .floating-card div>span { font-size:8px; }
    .orbit-outer { width:280px; }
    .headline-spark { margin-left:10px; width:26px; height:26px; }
    .brand-location { font-size:10px; }
}
@media(max-width:800px) {
    .page-shell { max-width:560px; padding:0 22px; }
    .site-header { height:88px; }
    .header-note { display:none; }
    .login-layout { grid-template-columns:1fr; border-radius:21px; min-height:0; }
    .story-panel { padding:23px 30px 24px; }
    .eyebrow { font-size:8px; letter-spacing:1.4px; }
    .story-panel h1 { font-size:clamp(24px,7vw,30px); line-height:1.3; letter-spacing:-1.2px; margin:15px 0 11px; }
    .story-panel h1 br:last-of-type { display:none; }
    .headline-spark { position:absolute; right:0; top:5px; width:25px; height:25px; margin:0; }
    .story-description { font-size:11px; line-height:1.7; }
    .story-description span { display:inline; }
    .campus-art,.story-footer { display:none; }
    .story-glow { background:radial-gradient(ellipse at 95% 100%,#b1c56130,transparent 70%); }
    .form-panel { padding:30px 30px 0; }
    .portal-label { font-size:8px; }
    .welcome-heading { margin-top:16px; }
    .welcome-heading h2 { font-size:30px; }
    .form-intro { margin-bottom:24px; }
    .input-wrap input { font-size:16px; min-height:52px; }
    .google-button,.sign-in-button { min-height:52px; font-size:13px; }
    .password-toggle { height:48px; }
    .field-group>label,.form-options { font-size:12px; }
    .account-help p { font-size:11px; }
    .security-note { font-size:10px; }
    .site-footer { justify-content:center; text-align:center; font-size:10px; padding:22px 0 28px; }
    .site-footer>span:last-child { display:none; }
}
@media(max-width:380px) {
    .page-shell { padding:0 14px; }
    .brand-copy strong { font-size:19px; }
    .brand-location { margin-left:3px; font-size:9px; }
    .brand-copy>span { font-size:10px; }
    .brand-logo { width:46px; height:48px; border-radius:13px; }
    .story-panel,.form-panel { padding-left:23px; padding-right:23px; }
    .form-options { font-size:11px; }
    .welcome-heading { gap:7px; }
    .welcome-heading h2 { font-size:28px; }
    .divider { font-size:9px; gap:9px; }
}
@media(prefers-reduced-motion:reduce) {
    *,*::before,*::after { animation:none!important; transition:none!important; }
}
