/* 기반: 토큰(:root) · 글꼴 · 리셋 · 타이포 · 버튼 · 글래스 · 시트·토스트.
   색·간격·모서리·그림자·글꼴은 여기 변수만 바꾸면 전체가 바뀐다(디자인 시스템 v0: 차콜 + 라임, 라임은 화면당 주 CTA 한 곳). */
@font-face{font-family:"Pretendard";font-weight:500;font-display:swap;src:url(/fonts/pretendard-Medium.woff2) format("woff2")}
@font-face{font-family:"Pretendard";font-weight:700;font-display:swap;src:url(/fonts/pretendard-Bold.woff2) format("woff2")}
@font-face{font-family:"Num";font-weight:700;font-display:swap;src:url(/fonts/barlow-cond-bold.woff2) format("woff2")}

:root{
  /* 바탕·글자 */
  --s0:#0F1216; --s1:#171B21; --s2:#1F242B; --s3:#2A3039;
  --t0:#fff; --t1:#C3CAD4; --t2:#8E97A4;
  /* 브랜드·의미색 (의미색은 진한 채움 + 흰 라벨) */
  --lime:#C8F53C; --lime-btn:#A3E82A; --lime-top:#B4F034; --lime-press:#93D126; --ink:#14181D;
  --ok:#15805A; --ok-text:#4FE0B0; --info:#2A74C8; --ice:#5CC8FF; --warn:#C0661B; --danger:#D93A4A; --danger-text:#FF6A78;
  /* 외부 브랜드 버튼(각 사 가이드) */
  --kakao:#FEE500; --kakao-press:#F0D800; --kakao-ink:#191919;
  --google-bg:#fff; --google-press:#F1F3F4; --google-ink:#1F1F1F; --google-line:#DADCE0;
  /* 선 티 색 */
  --tee-Black:#1B1F25; --tee-Blue:#2A74C8; --tee-White:#F2F2F2; --tee-Yellow:#FFC932; --tee-Red:#D93A4A;
  /* 서피스 */
  --glass:rgba(31,36,43,.58); --hair:rgba(255,255,255,.10); --panel:rgba(23,27,33,.9); --field:rgba(255,255,255,.07);
  --scrim-bottom:rgba(15,18,22,.92);
  /* 그림자 */
  --e1:0 2px 8px rgba(15,18,22,.35); --e2:0 8px 24px rgba(15,18,22,.45); --e3:0 16px 48px rgba(15,18,22,.55);
  /* 간격·모서리 */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-7:28px; --sp-8:36px;
  --r-sm:9px; --r-md:12px; --r-lg:16px; --r-xl:20px; --r-2xl:24px; --r-pill:999px;
  --tap:48px; --btn-h:52px; --page-x:20px;
  /* 글꼴·모션·안전 영역 */
  --font:"Pretendard",-apple-system,"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",system-ui,sans-serif;
  --num:"Num","Barlow Condensed","Arial Narrow",Impact,sans-serif;
  --ease:cubic-bezier(.2,.7,.2,1); --sat:env(safe-area-inset-top); --sab:env(safe-area-inset-bottom);
}

*{box-sizing:border-box;margin:0;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html{background:var(--s0)}
body{font:500 16px/1.5 var(--font);color:var(--t0);min-height:100dvh;-webkit-font-smoothing:antialiased;overflow-x:hidden;word-break:keep-all;overflow-wrap:anywhere;
  background:radial-gradient(900px 500px at 50% -10%,rgba(80,130,40,.20),transparent 60%),radial-gradient(700px 500px at 100% 100%,rgba(42,116,200,.10),transparent 60%),var(--s0)}
/* 필름 그레인 질감 */
body::after{content:"";position:fixed;inset:0;pointer-events:none;opacity:.05;z-index:50;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
button,input{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;touch-action:manipulation}
a{color:inherit;text-decoration:none}
svg{display:block}

/* 앱 프레임: 휴대폰 폭 한 칼럼, 데스크톱은 가운데 정렬 */
#app{max-width:430px;margin:0 auto;min-height:100dvh;position:relative;display:flex;flex-direction:column}
@media(min-width:520px){
  body{padding:var(--sp-6) 0}
  #app{min-height:calc(100dvh - 48px);border-radius:32px;overflow:clip;box-shadow:0 0 0 1px var(--hair),var(--e3);background:rgba(15,18,22,.6)}
}
main{flex:1;position:relative}
.view{animation:rise .22s var(--ease) both;padding:calc(var(--sat) + var(--page-x)) var(--page-x) var(--sp-7)}
@keyframes rise{from{opacity:0;transform:translateY(8px)}}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{transform:scale(.6);opacity:0}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* 타이포 */
h1{font-size:28px;line-height:1.2;font-weight:700;letter-spacing:-.01em}
h2{font-size:13px;font-weight:700;color:var(--t2);letter-spacing:.04em;margin:var(--sp-7) 0 var(--sp-3)}
h2 .soft{font-weight:500}
.cap{font-size:13px;color:var(--t2)}
.cap.light{color:var(--t1)}
.cap.center{text-align:center}
.sub{color:var(--t1);font-size:15px}
.num{font-family:var(--num);letter-spacing:.02em;font-variant-numeric:tabular-nums}
.err{color:var(--danger-text);font-size:14px;min-height:20px;margin:2px 0 14px}
.err:empty{min-height:0;margin:0}

/* 버튼 */
.btn{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--btn-h);padding:0 var(--sp-6);border-radius:var(--r-md);font-weight:700;font-size:17px;width:100%;
  position:relative;overflow:hidden;transition:transform .15s var(--ease),box-shadow .15s,background .15s}
.btn:active{transform:scale(.96)}
.btn[disabled]{opacity:.4;pointer-events:none}
.btn.pri{background:linear-gradient(var(--lime-top),var(--lime-btn));color:var(--ink);box-shadow:var(--e1),inset 0 1px 0 rgba(255,255,255,.35),inset 0 -1px 0 rgba(0,0,0,.18)}
.btn.pri::before{content:"";position:absolute;left:0;right:0;top:0;height:40%;background:rgba(255,255,255,.12);pointer-events:none}
.btn.pri:active{background:var(--lime-press);box-shadow:none}
.btn.pri:active::before{display:none}
.btn.sec{background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:inset 0 1px 0 var(--hair),inset 0 -1px 0 rgba(0,0,0,.25)}
.btn.danger{background:var(--danger);color:#fff}
.btn.txt{min-height:var(--tap);width:auto;color:var(--t1);font-weight:500;font-size:15px}
.btn.txt.block{width:100%}
.btn.kakao{background:var(--kakao);color:var(--kakao-ink);box-shadow:var(--e1),inset 0 -1px 0 rgba(0,0,0,.12)}
.btn.kakao:active{background:var(--kakao-press)}
.btn.google{background:var(--google-bg);color:var(--google-ink);box-shadow:var(--e1),inset 0 0 0 1px var(--google-line)}
.btn.google:active{background:var(--google-press)}

/* 글래스 */
.glass{background:var(--glass);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);
  border-radius:var(--r-xl);box-shadow:var(--e1),inset 0 1px 0 var(--hair),inset 0 -1px 0 rgba(0,0,0,.25)}

/* 시트·모달·토스트 */
.scrim{position:fixed;inset:0;z-index:40;background:rgba(15,18,22,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:fade .2s both}
.sheet{position:fixed;left:0;right:0;bottom:0;margin:auto;max-width:430px;z-index:41;background:rgba(23,27,33,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-radius:var(--r-2xl) var(--r-2xl) 0 0;padding:var(--sp-3) var(--sp-6) calc(var(--sab) + var(--sp-6));box-shadow:var(--e3),inset 0 1px 0 var(--hair);animation:up .24s var(--ease) both}
@keyframes up{from{transform:translateY(40px);opacity:0}}
.sheet .grab{width:40px;height:4px;border-radius:2px;background:var(--s3);margin:0 auto var(--sp-5)}
.sheet h1{font-size:22px}
.sheet .sub{margin:var(--sp-2) 0 var(--sp-5)}
.toast{position:fixed;left:50%;bottom:calc(var(--sab) + 96px);transform:translateX(-50%);z-index:60;padding:var(--sp-3) var(--sp-5);border-radius:var(--r-pill);
  background:rgba(42,48,57,.92);backdrop-filter:blur(14px);font-size:14px;font-weight:700;box-shadow:var(--e2);animation:rise .2s both;white-space:nowrap}

/* 폼 */
.field-input{width:100%;min-height:var(--btn-h);border-radius:var(--r-md);border:0;background:var(--field);padding:0 var(--sp-4);font-size:17px;outline:0;box-shadow:inset 0 0 0 1px var(--hair);transition:box-shadow .15s}
.field-input:focus{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.5)}
