:root {
  --tp: #003866;
  --deep: #002844;
  --sky: #5cb3e6;
  --ink: #132331;
  --sub: #667987;
  --line: #dce5eb;
}

* { box-sizing: border-box; }
html, body { min-height: 100%; margin: 0; }
body { font-family: Pretendard, Inter, "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--ink); background: #f5f8fa; }
button, input { font: inherit; }
.login-shell { min-height: 100dvh; display: grid; grid-template-columns: minmax(520px, 1.35fr) minmax(420px, .65fr); }
.brand-panel { position: relative; min-height: 100dvh; padding: 48px clamp(42px, 6vw, 96px); display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; color: white; background: var(--deep) url("/assets/tp-review-login.png") center / cover no-repeat; }
.brand-panel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0,24,42,.65) 0%, rgba(0,40,68,.18) 58%, rgba(0,40,68,.08)); pointer-events: none; }
.brand-lockup, .brand-copy, .principles { position: relative; z-index: 1; }
.brand-lockup { display: flex; align-items: center; gap: 15px; font-size: 10px; font-weight: 800; letter-spacing: .2em; }
.tp-mark { color: var(--sky); font-size: 38px; font-weight: 950; letter-spacing: -.12em; line-height: 1; }
.brand-copy { max-width: 590px; margin: auto 0; padding: 80px 0; }
.eyebrow { margin: 0 0 18px; color: #94d5fa; font-size: 10px; font-weight: 850; letter-spacing: .22em; }
.brand-copy h1 { margin: 0; max-width: 620px; font-size: clamp(44px, 5vw, 74px); font-weight: 660; line-height: 1.14; letter-spacing: -.06em; }
.brand-copy h1 em { color: #a6dcfa; font-style: normal; }
.brand-copy > p:last-child { max-width: 470px; margin: 24px 0 0; color: #d3e3ec; font-size: 14px; line-height: 1.75; }
.principles { display: flex; flex-wrap: wrap; gap: 10px; }
.principles span { padding: 7px 10px; border: 1px solid rgba(255,255,255,.23); border-radius: 999px; color: #d8e7ef; background: rgba(0,31,52,.28); backdrop-filter: blur(8px); font-size: 8px; font-weight: 800; letter-spacing: .12em; }
.form-panel { min-height: 100dvh; padding: 48px clamp(36px, 5vw, 82px); display: grid; place-items: center; background: #fff; }
.form-wrap { width: min(390px, 100%); }
.form-wrap header > p { margin: 0 0 14px; color: var(--sky); font-size: 9px; font-weight: 900; letter-spacing: .18em; }
.form-wrap h2 { margin: 0; color: var(--deep); font-size: 28px; letter-spacing: -.045em; }
.form-wrap header > span { display: block; margin-top: 12px; color: var(--sub); font-size: 12px; line-height: 1.65; }
form { margin-top: 38px; display: grid; gap: 17px; }
label span { display: block; margin-bottom: 7px; color: #466072; font-size: 10px; font-weight: 750; }
input { width: 100%; height: 50px; padding: 0 14px; border: 1px solid #cedbe3; border-radius: 9px; outline: none; color: var(--ink); background: #fbfcfd; font-size: 14px; transition: border-color .18s, box-shadow .18s, background .18s; }
input:focus { border-color: var(--sky); background: #fff; box-shadow: 0 0 0 4px rgba(92,179,230,.13); }
.error { min-height: 18px; margin: -2px 0 -3px; color: #ad3e49; font-size: 11px; line-height: 1.5; }
form button { height: 52px; padding: 0 16px 0 19px; display: flex; align-items: center; justify-content: space-between; border: 0; border-radius: 9px; color: white; background: var(--tp); font-size: 12px; font-weight: 800; box-shadow: 0 12px 28px rgba(0,56,102,.19); }
form button:hover { background: #074d7b; }
form button:disabled { cursor: wait; opacity: .65; }
form button b { font-size: 20px; font-weight: 400; }
.form-wrap footer { margin-top: 38px; padding-top: 20px; border-top: 1px solid var(--line); }
.form-wrap footer span, .form-wrap footer small { display: block; }
.form-wrap footer span { color: #496273; font-size: 10px; font-weight: 750; }
.form-wrap footer small { margin-top: 6px; color: #91a0aa; font-size: 9px; }
@media (max-width: 880px) {
  .login-shell { grid-template-columns: 1fr; }
  .brand-panel { min-height: 300px; padding: 30px; }
  .brand-copy { margin: 48px 0 28px; padding: 0; }
  .brand-copy h1 { font-size: clamp(34px, 9vw, 52px); }
  .brand-copy > p:last-child { margin-top: 16px; }
  .form-panel { min-height: auto; padding: 54px 28px 64px; }
}
@media (max-width: 520px) {
  .brand-panel { min-height: 255px; }
  .brand-copy { margin: 34px 0 18px; }
  .brand-copy h1 { font-size: 32px; }
  .brand-copy > p:last-child, .principles span:nth-child(2) { display: none; }
}
