.lg-root { min-height: 100dvh; width: auto; max-width: 100%; position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, 500px); color: var(--auth-hero-text); overflow-x: hidden; overflow-y: auto; } .lg-root::before { content: ""; position: absolute; inset: 0; background: var(--auth-room-shade); pointer-events: none; } .lg-brand, .lg-enter { position: relative; z-index: 1; } .lg-brand { min-width: 0; width: 100%; position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-7); padding: var(--sp-7); background: transparent; color: var(--auth-hero-text); overflow: hidden; } .lg-brand::after { display: none; } .lg-wordmark { position: relative; z-index: 1; display: flex; align-items: center; gap: 10px; font-size: 19px; font-weight: 700; letter-spacing: 0; color: var(--auth-hero-text); } .lg-mark { display: grid; place-items: center; color: var(--accent-bright); } .lg-copy { max-width: 620px; } .lg-copy, .lg-policy { position: relative; z-index: 1; } .lg-kicker { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-num); font-size: 12px; font-weight: 700; letter-spacing: 0; text-transform: uppercase; /* --accent-bright 는 dot/진행바 fill 용 밝은 값이라 12px 글자로 쓰면 3.29:1 이다. */ color: var(--text-accent); } .lg-kicker .d { width: 6px; height: 6px; border-radius: 50%; background: currentColor; } .lg-highlight { display: inline-block; position: relative; z-index: 0; padding: 0 4px; background: linear-gradient(90deg, var(--accent-deep), var(--accent-bright)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; } .lg-copy h1 { margin: var(--sp-4) 0 0; max-width: 640px; font-size: 56px; line-height: 1.12; letter-spacing: 0; font-weight: 760; } .lg-copy p { margin: var(--sp-5) 0 0; max-width: 560px; color: var(--auth-hero-muted); font-size: 17px; line-height: 1.75; } .lg-policy { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; width: max-content; max-width: min(430px, 100%); padding: 14px 16px; border: 1px solid var(--auth-hero-border); border-radius: var(--radius-lg); background: var(--auth-hero-surface); backdrop-filter: blur(18px) saturate(1.08); -webkit-backdrop-filter: blur(18px) saturate(1.08); color: var(--auth-hero-muted); font-size: 13px; } .lg-policy span, .lg-policy b { display: inline-flex; align-items: center; gap: 7px; } .lg-policy b { color: var(--auth-hero-text); background: var(--auth-hero-chip); border: 1px solid var(--auth-hero-border); border-radius: 999px; padding: 5px 10px; font-weight: 650; } .lg-enter { min-width: 0; display: flex; align-items: center; justify-content: center; padding: var(--sp-6); background: transparent; } .lg-panel { width: 100%; max-width: 430px; border-radius: var(--radius-lg); padding: var(--sp-6); color: var(--text-strong); } .lg-panel h2 { margin: var(--sp-3) 0 0; font-size: 28px; line-height: 1.25; letter-spacing: 0; color: var(--text-strong); } .lg-lead { margin: 10px 0 0; color: var(--text-body); font-size: 14px; line-height: 1.65; } .lg-actions { display: flex; flex-direction: column; gap: var(--sp-3); margin-top: var(--sp-6); } .lg-obtn { width: 100%; min-height: 58px; display: grid; grid-template-columns: 36px minmax(0, 1fr) 18px; align-items: center; gap: 13px; border-radius: var(--radius); padding: 11px 14px; font-family: var(--font-sans); font-size: 15px; font-weight: 650; text-align: left; cursor: pointer; transition: transform var(--dur-fast) var(--ease-spring), background var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); } .lg-obtn:active { transform: translateY(1px) scale(0.98); } .lg-obtn.primary { background: color-mix(in srgb, var(--accent-tint) 72%, var(--glass-surface-inset)); border-color: color-mix(in srgb, var(--accent) 44%, var(--glass-inset-border)); color: var(--text-strong); } .lg-obtn.primary:hover { background: color-mix(in srgb, var(--accent-tint) 88%, var(--glass-surface-inset)); border-color: var(--accent); } .lg-obtn.secondary { color: var(--text-strong); } .lg-obtn.secondary:hover { border-color: color-mix(in srgb, var(--accent) 42%, var(--glass-inset-border)); } .lg-obtn:disabled { cursor: not-allowed; opacity: 1; background: var(--glass-surface-inset); border-color: var(--glass-inset-border); color: var(--text-muted); } .lg-obtn:disabled:hover { background: var(--glass-surface-inset); border-color: var(--glass-inset-border); } .lg-obtn:disabled .ic { background: var(--bg-surface-2); color: var(--text-muted); } .lg-obtn:disabled .sub { color: var(--text-muted); } .lg-obtn .ic { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 8px; background: var(--accent-tint); color: var(--accent-deep); } .lg-obtn.secondary .ic { background: var(--bg-surface-2); } .lg-obtn .txt { min-width: 0; display: flex; flex-direction: column; gap: 1px; } .lg-obtn .sub { font-size: 12px; font-weight: 550; color: var(--text-muted); } .lg-obtn.primary .sub { color: var(--text-body); } .lg-config { display: flex; align-items: flex-start; gap: 10px; margin-top: var(--sp-3); padding: 10px 12px; border-radius: var(--radius); /* 2026-07-27: 기존 하드코딩 다크 전제 색상 대신 라이트/다크 테마별로 스왑되는 warn 의미 토큰으로 교체한다. */ background: var(--warn-tint); border: 1px solid color-mix(in srgb, var(--warn-solid) 34%, transparent); color: var(--warn-text); font-size: 12.5px; line-height: 1.5; } .lg-dev { margin-top: var(--sp-6); padding-top: var(--sp-5); border-top: 1px solid var(--glass-inset-border); } .lg-devhead { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); color: var(--text-strong); font-size: 13px; font-weight: 700; } .lg-devhead small { color: var(--text-muted); font-weight: 600; } .lg-rolepick { display: grid; grid-template-columns: 1fr; gap: var(--sp-2); margin-top: var(--sp-3); } .lg-roleopt { min-height: 50px; display: grid; grid-template-columns: 10px minmax(0, 1fr) 16px; align-items: center; gap: 10px; padding: 9px 11px; border-radius: var(--radius); color: var(--text-strong); text-align: left; cursor: pointer; transition: transform var(--dur-fast) var(--ease-spring), background var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); } .lg-roleopt:active { transform: translateY(1px) scale(0.98); } .lg-roleopt.is-sel { border-color: color-mix(in srgb, var(--accent) 58%, var(--glass-inset-border)); background: color-mix(in srgb, var(--accent-tint) 64%, var(--glass-surface-inset)); } .lg-roleopt .d { width: 8px; height: 8px; border-radius: 50%; } .lg-roleopt .d.learner { background: var(--accent-bright); } .lg-roleopt .d.teacher { background: var(--info-solid); } .lg-roleopt .d.admin { background: var(--neutral-500); } .lg-roleopt b { display: block; font-size: 13px; } .lg-roleopt small { display: block; margin-top: 1px; color: var(--text-muted); font-size: 12px; } .lg-devbtn { width: 100%; min-height: 46px; margin-top: var(--sp-3); border: 1px solid color-mix(in srgb, var(--accent) 58%, transparent); border-radius: var(--radius); background: color-mix(in srgb, var(--accent-tint) 60%, transparent); color: var(--accent-deep); font-family: var(--font-sans); font-size: 14px; font-weight: 750; cursor: pointer; transition: transform var(--dur-fast) var(--ease-spring), background var(--dur-base) var(--ease-out); } .lg-devbtn:active { transform: translateY(1px) scale(0.98); } .lg-devbtn:disabled { opacity: 0.62; cursor: wait; } .lg-error { margin: var(--sp-3) 0 0; color: var(--crit-text); background: var(--crit-tint); border: 1px solid color-mix(in srgb, var(--crit-solid) 30%, transparent); border-radius: var(--radius); padding: 10px 12px; font-size: 13px; line-height: 1.5; } .lg-error small { display: block; margin-top: 4px; color: var(--text-muted); font-family: var(--font-num); font-size: 11.5px; overflow-wrap: anywhere; } .lg-note { margin: var(--sp-5) 0 0; color: var(--text-muted); font-size: 12.5px; line-height: 1.6; } @media (max-width: 880px) { .lg-root { grid-template-columns: 1fr; } .lg-root::before { display: none; } .lg-brand { padding: var(--sp-6) var(--sp-5); gap: var(--sp-6); } .lg-brand::after { display: none; } .lg-copy h1 { font-size: 36px; } .lg-enter { padding: var(--sp-5); } .lg-panel { max-width: 560px; } } @media (max-width: 480px) { .lg-brand { padding: var(--sp-5); } .lg-copy h1 { font-size: 30px; } .lg-copy p { font-size: 15px; } .lg-enter { padding: var(--sp-4); } .lg-panel { padding: var(--sp-5); } }