*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
  --bg: #FAFAFA; --surface: #FFFFFF; --border: #D4D4D4; --border-f: #E5E5E5;
  --accent: #218659; --accent-h: #1a6b47; --text: #262626; --text-sub: #525252;
  --error: #dc2626; --radius: 12px;
}
body { background: var(--bg); color: var(--text); font-family: 'Inter', 'Noto Sans KR', sans-serif;
       min-height: 100vh; display: flex; align-items: center; justify-content: center; }
.card { background: var(--surface); border: 1px solid var(--border-f); border-radius: var(--radius);
        padding: 48px 40px; width: 100%; max-width: 420px; box-shadow: 0 4px 24px rgba(0,0,0,0.07); }
.logo-wrap { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.logo-img  { height: 28px; }
.logo      { font-size: 20px; font-weight: 700; color: var(--accent); }
.subtitle  { color: var(--text-sub); font-size: 14px; margin-bottom: 36px; }
.field     { margin-bottom: 16px; }
label { display: block; font-size: 13px; font-weight: 500; color: var(--text-sub); margin-bottom: 6px; }
input { width: 100%; background: var(--bg); border: 1px solid var(--border); border-radius: 8px;
        padding: 12px 14px; color: var(--text); font-size: 15px; font-family: inherit;
        outline: none; transition: border-color .2s; }
input:focus        { border-color: var(--accent); }
input.input--error { border-color: var(--error); }
.error-msg { color: var(--error); font-size: 13px; margin-top: 6px; display: none; }
.btn { width: 100%; background: var(--accent); color: #fff; border: none; border-radius: 8px;
       padding: 14px; font-size: 15px; font-weight: 600; font-family: inherit;
       cursor: pointer; margin-top: 8px; transition: background .2s; }
.btn:hover    { background: var(--accent-h); }
.btn:disabled { opacity: .5; cursor: not-allowed; }
