/* Paperlogy — 통합앱 전체 글꼴(2026-09-28 서무님 요청), 파일은 /fonts/ 에 같이 올림 */
@font-face { font-family: 'Paperlogy'; font-weight: 400; font-display: swap; src: url(/fonts/Paperlogy-4Regular.woff2) format('woff2'); }
@font-face { font-family: 'Paperlogy'; font-weight: 500; font-display: swap; src: url(/fonts/Paperlogy-5Medium.woff2) format('woff2'); }
@font-face { font-family: 'Paperlogy'; font-weight: 600; font-display: swap; src: url(/fonts/Paperlogy-6SemiBold.woff2) format('woff2'); }
@font-face { font-family: 'Paperlogy'; font-weight: 700; font-display: swap; src: url(/fonts/Paperlogy-7Bold.woff2) format('woff2'); }
@font-face { font-family: 'Paperlogy'; font-weight: 800; font-display: swap; src: url(/fonts/Paperlogy-8ExtraBold.woff2) format('woff2'); }
/* 신학부 통합앱(테스트) 공용 스타일 — 휴대폰(미니앱) 우선, PC에선 넓게 */
:root {
  /* 연두 테마(2026-09-28 서무님 요청) — 연두 + 올리브그린 + 청록 포인트 */
  --bg: #f5f9ec; --card: #ffffff; --text: #1f2a14; --muted: #66735a; --line: #e3ebd5;
  --brand: #5d9a0c; --brand-soft: #ecf7d4; --brand-deep: #3f6212; --bar: #8cc63f; --accent: #0d9488;
  --good: #1f9d55; --good-soft: #e3f6ea; --warn: #d97706; --warn-soft: #fdf1dc; --bad: #d63b3b; --bad-soft: #fde7e7;
  --shadow: 0 1px 2px rgba(40,60,10,.05), 0 6px 20px rgba(40,60,10,.07);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #11170b; --card: #1a2311; --text: #eaf2dd; --muted: #a2b08f; --line: #2e3a22;
    --brand: #8cc63f; --brand-soft: #2a3a17; --brand-deep: #c5e88a; --bar: #9bd14a; --accent: #2dd4bf;
    --good: #4cc27d; --good-soft: #17352a; --warn: #f0a93a; --warn-soft: #3a2d15; --bad: #f07070; --bad-soft: #3d1c1f;
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 6px 20px rgba(0,0,0,.25);
  }
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
button, input, select, textarea { font-family: inherit; }
html, body { margin: 0; background: var(--bg); color: var(--text); }
body { font-family: "Paperlogy", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif; font-size: 16px; line-height: 1.45; }
.wrap { max-width: 1180px; margin: 0 auto; padding: 18px 16px 60px; }
.muted { color: var(--muted); }
h1 { font-size: 24px; margin: 0; letter-spacing: -.3px; }
h2 { font-size: 19px; margin: 0 0 12px; letter-spacing: -.2px; }
.card { background: var(--card); border-radius: 18px; box-shadow: var(--shadow); padding: 18px; }
.btn-primary { width: 100%; border: 0; border-radius: 12px; padding: 14px; font-size: 16px; font-weight: 700; background: var(--brand); color: #fff; cursor: pointer; }
.btn-primary:disabled { opacity: .6; }
.btn-ghost { width: 100%; border: 0; background: none; color: var(--muted); padding: 10px; font-size: 14px; cursor: pointer; }
.test-badge { display: inline-block; font-size: 12px; font-weight: 700; color: var(--warn); background: var(--warn-soft); border-radius: 999px; padding: 3px 10px; }
.err { color: var(--bad); font-size: 14px; margin-top: 8px; min-height: 1em; }
.center-msg { text-align: center; padding: 60px 16px; color: var(--muted); font-size: 16px; }

/* 로그인 — 왼쪽 연두 브랜드 면 + 오른쪽 입력 (폰에선 위아래) */
.login { min-height: 100vh; display: grid; grid-template-columns: 1.15fr 1fr; background: var(--bg); }
.login-brand { position: relative; overflow: hidden; color: #fff; display: flex; align-items: center; justify-content: center; text-align: center; padding: 56px;
  background:
    radial-gradient(60% 55% at 0% 100%, rgba(250, 204, 21, .85) 0%, transparent 70%),
    radial-gradient(45% 45% at 22% 100%, rgba(244, 114, 94, .75) 0%, transparent 70%),
    radial-gradient(55% 60% at 100% 100%, rgba(37, 99, 235, .9) 0%, transparent 72%),
    radial-gradient(60% 60% at 100% 0%, rgba(16, 185, 129, .9) 0%, transparent 70%),
    radial-gradient(55% 55% at 0% 0%, rgba(163, 230, 53, .85) 0%, transparent 70%),
    linear-gradient(135deg, #3f7a1c 0%, #1f7a5a 50%, #1e5aa8 100%); }
.login-net { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
/* 가운데 반투명 유리 카드 */
.login-brand-in { position: relative; z-index: 1; display: grid; gap: 16px; justify-items: center; padding: 48px 56px 52px; border-radius: 34px;
  background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .38);
  -webkit-backdrop-filter: blur(18px) saturate(1.25); backdrop-filter: blur(18px) saturate(1.25);
  box-shadow: 0 30px 60px -20px rgba(10, 30, 40, .45), inset 0 1px 0 rgba(255, 255, 255, .35); }
.login-kicker { font-size: 17px; font-weight: 800; letter-spacing: .12em; color: #1f330a; background: #d9f99d; border-radius: 999px; padding: 8px 18px; }
/* 제목: 윗줄은 속이 빈 외곽선 글자, 아랫줄은 꽉 찬 흰 글자 + 연두 형광펜 */
.login-brand h1 { margin: 6px 0 4px; display: grid; justify-items: center; line-height: 1.02; letter-spacing: -.04em; font-weight: 800; }
.login-brand h1 .t-outline { font-size: clamp(64px, 8.6vw, 132px); color: transparent; -webkit-text-stroke: 2.5px rgba(255, 255, 255, .92); }
.login-brand h1 .t-solid { font-size: clamp(72px, 9.8vw, 150px); color: #fff; background: linear-gradient(transparent 62%, rgba(190, 242, 100, .55) 62%, rgba(190, 242, 100, .55) 90%, transparent 90%); padding-inline: .06em; text-shadow: 0 6px 24px rgba(20, 40, 5, .25); }
.login-tagline { margin: 14px 0 0; font-size: clamp(20px, 1.9vw, 26px); font-weight: 600; line-height: 1.55; color: rgba(255, 255, 255, .95); letter-spacing: -.01em; }
.login-form { display: flex; align-items: center; justify-content: center; padding: 40px 24px; }
.login-card { width: 100%; max-width: 400px; display: grid; gap: 10px; }
.login-logo-img { width: 132px; height: 132px; justify-self: center; margin-bottom: 18px; filter: drop-shadow(0 10px 18px rgba(40, 60, 10, .18)); }
.login-card h2 { font-size: 30px; margin: 0; }
.login-card .muted { font-size: 15px; margin: 0 0 14px; }
.login-step { display: grid; gap: 10px; }
.login-step[hidden] { display: none; }
.login-step label { font-size: 14px; font-weight: 700; color: var(--muted); }
.login-card input { width: 100%; font-size: 18px; padding: 15px 16px; border-radius: 14px; border: 1.5px solid var(--line); background: var(--card); color: var(--text); font-family: inherit; }
.login-card input:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 4px var(--brand-soft); }
.login-card .btn-primary { margin-top: 4px; padding: 16px; font-size: 17px; border-radius: 14px; }
@media (max-width: 760px) {
  .login { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .login-brand { padding: 36px 16px; min-height: 30vh; }
  .login-brand-in { padding: 28px 22px 32px; border-radius: 26px; }
  .login-brand h1 .t-outline { font-size: 58px; -webkit-text-stroke-width: 2px; }
  .login-brand h1 .t-solid { font-size: 66px; }
  .login-tagline { font-size: 18px; }
  .login-logo-img { width: 104px; height: 104px; margin-bottom: 10px; }
  .login-form { align-items: flex-start; padding-top: 32px; }
}

/* 상단바 */
.topbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 18px; }
.topbar .who { font-size: 14px; color: var(--muted); }
.topbar .who b { color: var(--text); }
.link-btn { border: 0; background: none; color: var(--brand); font-size: 14px; cursor: pointer; padding: 6px 4px; }
.back-btn { border: 0; background: var(--card); color: var(--text); box-shadow: var(--shadow); border-radius: 12px; padding: 8px 14px; font-size: 15px; font-weight: 600; cursor: pointer; }
.note { background: var(--card); border-radius: 14px; padding: 14px 16px; box-shadow: var(--shadow); }
