|
|
| *,
|
| *::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;
|
| }
|
|
|
|
|
| .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 {
|
| 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 {
|
| 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 {
|
| margin-bottom: 18px;
|
| padding: 10px 12px;
|
| border-radius: 10px;
|
| background: #fdf2f2;
|
| color: #b91c1c;
|
| border: 1px solid #fecaca;
|
| font-size: 13px;
|
| }
|
|
|
|
|
| .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-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%);
|
| }
|
|
|
|
|
| .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;
|
| }
|
|
|
|
|
| .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;
|
| }
|
|
|
|
|
| .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;
|
| }
|
|
|
|
|
| @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;
|
| }
|
| }
|
|
|