/* RESET / BASE */ *, *::before, *::after { box-sizing: border-box; } html, body { margin: 0; padding: 0; } body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; color: #111; background-color: #050505; } /* LAYOUT SHELL */ .page-shell { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); background: radial-gradient(circle at top left, #1c1c1c 0, #050505 50%, #000 100%); color: #fff; } /* BRAND SIDE */ .brand-side { display: flex; align-items: center; justify-content: center; padding: 40px; } .brand-inner { max-width: 420px; } .brand-mark { width: 52px; height: 52px; border-radius: 50%; border: 1px solid #fff; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 18px; margin-bottom: 16px; } .brand-title { font-size: 32px; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 10px; } .brand-subtitle { color: #c4c4c4; font-size: 15px; max-width: 280px; } /* AUTH SIDE */ .auth-side { display: flex; align-items: center; justify-content: center; padding: 24px; } .auth-card { width: 100%; max-width: 420px; background: #ffffff; color: #111; border-radius: 24px; padding: 28px 26px 26px; box-shadow: 0 26px 60px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(0, 0, 0, 0.08); } .auth-header { margin-bottom: 20px; } .auth-title { font-size: 24px; margin: 0 0 4px; } .auth-caption { margin: 0; font-size: 14px; color: #555; } /* ALERT */ .alert { margin-bottom: 18px; padding: 10px 12px; border-radius: 10px; background: #fdf2f2; color: #b91c1c; border: 1px solid #fecaca; font-size: 13px; } /* ROLE TABS */ .role-tabs { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); border-radius: 999px; padding: 3px; background: #f3f3f3; margin-bottom: 22px; } .role-input { display: none; } .role-tab { position: relative; z-index: 1; cursor: pointer; text-align: center; padding: 8px 0; font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em; color: #555; user-select: none; transition: color 0.2s ease-out; } .role-label { display: inline-block; } .role-active-indicator { position: absolute; top: 3px; bottom: 3px; width: calc(33.333% - 4px); border-radius: 999px; background: #111; transition: transform 0.25s ease-out; } /* TAB LOGIC */ #tab-student:checked ~ .role-tab[for="tab-student"], #tab-teacher:checked ~ .role-tab[for="tab-teacher"], #tab-admin:checked ~ .role-tab[for="tab-admin"] { color: #fff; } #tab-student:checked ~ .role-active-indicator { transform: translateX(0%); } #tab-teacher:checked ~ .role-active-indicator { transform: translateX(100%); } #tab-admin:checked ~ .role-active-indicator { transform: translateX(200%); } /* FORM FIELDS */ .auth-form { display: flex; flex-direction: column; } .field-group { margin-bottom: 16px; } .field-label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 6px; color: #333; } .field-input { width: 100%; border-radius: 12px; border: 1px solid #d4d4d4; padding: 11px 13px; font-size: 15px; background: #f9fafb; transition: border-color 0.18s ease-out, box-shadow 0.18s ease-out, background 0.18s ease-out; } .field-input:focus { outline: none; border-color: #111; background: #fff; box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.08); } .field-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 18px; gap: 12px; } .checkbox { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #444; cursor: pointer; } .checkbox input { width: 14px; height: 14px; } /* BUTTON */ .btn-primary { border: none; border-radius: 999px; padding: 11px 16px; background: #111; color: #fff; font-weight: 600; font-size: 15px; cursor: pointer; width: 100%; margin-bottom: 12px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; transition: background 0.18s ease-out, transform 0.1s ease-out, box-shadow 0.18s ease-out; } .btn-primary:hover { background: #222; transform: translateY(-1px); box-shadow: 0 14px 30px rgba(0, 0, 0, 0.4); } .btn-primary:active { transform: translateY(0); box-shadow: none; } /* LINKS / TEXT */ .link-muted { font-size: 13px; color: #666; text-decoration: none; border-bottom: 1px solid transparent; padding-bottom: 1px; transition: color 0.15s ease-out, border-color 0.15s ease-out; } .link-muted:hover { color: #111; border-color: #111; } .legal-text { font-size: 11px; color: #777; margin: 0; text-align: center; } /* RESPONSIVE */ @media (max-width: 900px) { .page-shell { grid-template-columns: 1fr; padding: 16px; } .brand-side { display: none; } .auth-side { padding: 0; } .auth-card { max-width: 480px; margin: 0 auto; } } @media (max-width: 480px) { .auth-card { border-radius: 18px; padding: 22px 18px 18px; } .auth-title { font-size: 21px; } }