/* 문서 전체에 깔리는 기본 — 배경, 글꼴, 입력칸, 버튼, 확인창, 토스트 */

*, *::before, *::after{ box-sizing: border-box; }

body{
  margin:0;
  background:
    radial-gradient(1100px 620px at 50% -14%, var(--glow-a), transparent 62%),
    radial-gradient(760px 520px at 88% 8%, var(--glow-b), transparent 64%),
    var(--bg);
  color: var(--text);
  font-family: var(--f-body);
  font-size: 15px;
  line-height: 1.85;
  letter-spacing: .01em;
  -webkit-font-smoothing: antialiased;
  transition: background .35s, color .35s;
}
body::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:0; opacity:.5;
  background-image:
    repeating-linear-gradient(0deg, rgba(var(--text-rgb),.022) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(90deg, rgba(var(--text-rgb),.015) 0 1px, transparent 1px 4px);
}

a{ color: var(--text); text-decoration:none; }
a:hover{ color: var(--gold); }
:focus-visible{ outline: 2px solid var(--gold); outline-offset: 2px; }
img{ max-width:100%; display:block; }
[hidden]{ display:none !important; }
button{ font-family: inherit; cursor:pointer; color:inherit; }

/* ── 공용 입력 ── */
.inp, textarea.inp, select.inp{
  width:100%; background: rgba(var(--text-rgb),.045);
  border:1px solid var(--line); border-radius: var(--radius);
  color: var(--text); font-family: var(--f-body); font-size:14px;
  padding: 10px 12px; line-height:1.7;
}
textarea.inp{ resize: vertical; min-height:120px; }
.inp:focus, textarea.inp:focus, select.inp:focus{ border-color: var(--gold); background: rgba(var(--text-rgb),.07); }
.inp::placeholder, textarea.inp::placeholder{ color: var(--text-3); opacity:.75; }
select.inp{ appearance:none; }
label.fl{
  display:block; font-family: var(--f-head); font-size:11px;
  letter-spacing:.2em; color: var(--gold); margin-bottom:6px;
}
.btn{
  display:inline-block; background: rgba(var(--accent-rgb),.14);
  border:1px solid var(--accent); color: var(--text);
  font-family: var(--f-head); font-size:13px; letter-spacing:.22em;
  padding: 9px 22px; border-radius: var(--radius); transition: background .18s, color .18s;
}
.btn:hover{ background: var(--accent); color: var(--accent-ink); }
.btn.solid{ background: var(--accent); color: var(--accent-ink); }
.btn.solid:hover{ background: var(--accent-soft); }
.btn.ghost{ background:none; border-color: var(--line); color: var(--text-2); }
.btn.ghost:hover{ color: var(--text); border-color: var(--gold); background: rgba(var(--gold-rgb),.1); }
.btn.sm{ font-size:11px; padding: 5px 12px; letter-spacing:.16em; }
.btn.danger{ border-color: rgba(var(--accent-rgb),.5); color: var(--accent); background:none; }
.btn.danger:hover{ background: var(--accent); color: var(--accent-ink); }
.msg{ font-size:12.5px; min-height:1.3em; margin:0; }
.msg.ok{ color: var(--sub); } .msg.err{ color: var(--accent); }

/* 움직임을 줄이도록 설정한 분에게는 애니메이션을 끕니다 */
@media (prefers-reduced-motion: reduce){ *{ animation:none !important; transition:none !important; } }
