
:root{--bg:#0b0e14;--surface:#131824;--line:rgba(255,255,255,.1);--text:#e8ecf4;
--soft:#a8b2c6;--dim:#6f7b93;--brand:#6ee7ff;--brand2:#a78bfa;--err:#f87171;--ok:#4ade80}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;min-height:100vh;display:grid;place-items:center;padding:24px;
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo",
"Malgun Gothic","Noto Sans KR",system-ui,sans-serif;background:var(--bg);color:var(--text);
line-height:1.6;letter-spacing:-.01em}
.grid{position:fixed;inset:0;z-index:-2;pointer-events:none;
background-image:linear-gradient(to right,rgba(255,255,255,.035) 1px,transparent 1px),
linear-gradient(to bottom,rgba(255,255,255,.035) 1px,transparent 1px);background-size:64px 64px;
mask-image:radial-gradient(ellipse 80% 60% at 50% 0%,#000 35%,transparent 78%);
-webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 0%,#000 35%,transparent 78%)}
.glow{position:fixed;top:-260px;left:50%;transform:translateX(-50%);width:620px;height:620px;
border-radius:50%;filter:blur(130px);opacity:.18;z-index:-1;pointer-events:none;
background:radial-gradient(circle,var(--brand),transparent 68%)}
.card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);
border-radius:18px;padding:36px 32px}
.brand{display:flex;align-items:center;gap:10px;justify-content:center}
.brand svg{width:26px;height:26px}
.brand b{font-size:1.2rem;font-weight:800;letter-spacing:-.03em}
h1{font-size:1.35rem;font-weight:700;text-align:center;margin:16px 0 6px;letter-spacing:-.02em}
.sub{text-align:center;color:var(--soft);font-size:.92rem;margin-bottom:26px}
label{display:block;font-size:.85rem;color:var(--soft);margin:16px 0 6px;font-weight:500}
label .hint{color:var(--dim)}
input{width:100%;padding:12px 14px;border-radius:10px;background:rgba(255,255,255,.04);
border:1px solid var(--line);color:var(--text);font-family:inherit;font-size:.95rem;
transition:border-color .2s,background .2s}
input:focus{outline:none;border-color:var(--brand);background:rgba(110,231,255,.06)}
button{width:100%;margin-top:24px;padding:13px;border:0;border-radius:11px;cursor:pointer;
font-family:inherit;font-size:.97rem;font-weight:700;color:#06111c;
background:linear-gradient(120deg,var(--brand),var(--brand2));
transition:transform .18s,box-shadow .22s}
button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 26px -10px rgba(110,231,255,.6)}
button:disabled{opacity:.6;cursor:not-allowed;transform:none}
/* ---- 가입 동의 ----
   ★ 전역 label 은 block + 위 여백이라 체크박스가 글자와 따로 놀았습니다.
     여기서는 flex 로 묶어 **줄 전체가 누르는 자리**가 되게 합니다(모바일에서
     10px짜리 네모만 정확히 눌러야 하면 사실상 못 누릅니다).
   ★ input 의 width:100% 도 여기서 되돌립니다 — 그대로 두면 체크박스가
     상자 너비만큼 늘어납니다. */
.agree{margin-top:22px;padding:14px 15px;border-radius:11px;
border:1px solid var(--line);background:rgba(255,255,255,.03)}
.agree-item{display:flex;align-items:flex-start;gap:10px;margin:0 0 10px;
font-size:.86rem;color:var(--soft);font-weight:400;line-height:1.5;cursor:pointer}
.agree-item:last-of-type{margin-bottom:0}
.agree-item input[type=checkbox]{width:17px;height:17px;flex:0 0 auto;margin:1px 0 0;
padding:0;accent-color:var(--brand);cursor:pointer}
.agree-item input[type=checkbox]:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.agree-item a{color:var(--brand);text-decoration:underline;text-underline-offset:2px}
.agree-note{margin:10px 0 0;font-size:.78rem;color:var(--dim)}
.msg{margin-top:18px;padding:11px 14px;border-radius:10px;font-size:.88rem;display:none}
.msg.err{display:block;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.35);color:var(--err)}
.msg.ok{display:block;background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.35);color:var(--ok)}
.links{margin-top:22px;text-align:center;font-size:.87rem;color:var(--dim)}
/* 링크가 여러 개인 줄(.spaced)은 공백 하나로 붙어 있어 눌러야 할 것이
   하나처럼 보였습니다. flex + gap 으로 확실히 띄우고, 좁은 화면에서는
   줄바꿈되게 둡니다. 문장 속에 링크가 섞인 일반 .links 는 그대로 인라인. */
.links.spaced{margin-top:24px;display:flex;flex-wrap:wrap;justify-content:center;
gap:10px 22px}
/* ── 언어 선택기 ──────────────────────────────────────────────────────────
   기본 select 는 브라우저마다 생김새가 제각각이고 이 화면의 어두운 톤과 겉돕니다.
   테두리·배경·화살표를 직접 그리고, 지구본 아이콘을 붙여 "무엇을 고르는 칸인지"가
   글자를 읽기 전에 보이게 했습니다(모르는 언어가 떠 있을 때 특히 중요합니다).
   화살표는 배경 이미지가 아니라 CSS 삼각형이라 색이 테마를 따라갑니다. */
.langbar{display:flex;justify-content:flex-end;margin:-4px 0 14px}
/* ★ select 가 상자 전체를 채웁니다.
   예전에는 지구본 옆에 인라인으로만 놓여 있어 **글자 위를 정확히 눌러야만**
   목록이 열렸습니다 — 지구본·화살표·여백은 모두 죽은 영역이었습니다.
   여백을 컨테이너가 아니라 select 에 주면 상자 안 어디를 눌러도 열립니다. */
.langpick{position:relative;display:inline-flex;align-items:center;
border-radius:10px;border:1px solid var(--line);
background:rgba(255,255,255,.045);transition:border-color .18s,background .18s}
.langpick:hover{border-color:rgba(255,255,255,.26);background:rgba(255,255,255,.07)}
.langpick:focus-within{border-color:var(--brand);
box-shadow:0 0 0 3px rgba(110,231,255,.16)}
/* 지구본 */
/* 지구본·화살표는 장식이라 클릭을 가로채면 안 됩니다. 그래야 그 위를 눌러도
   밑에 깔린 select 가 받습니다. */
.langpick svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);
width:14px;height:14px;stroke:var(--dim);fill:none;pointer-events:none;
stroke-width:1.6;transition:stroke .18s}
.langpick:hover svg,.langpick:focus-within svg{stroke:var(--brand)}
/* 화살표 */
.langpick::after{content:"";position:absolute;right:11px;top:50%;
width:0;height:0;margin-top:-1.5px;border-left:4px solid transparent;
border-right:4px solid transparent;border-top:4.5px solid var(--dim);
pointer-events:none;transition:border-top-color .18s}
.langpick:hover::after{border-top-color:var(--brand)}
/* select 자체는 투명하게 겹쳐 두고 겉모습은 위 컨테이너가 담당합니다.
   appearance:none 만으로는 브라우저 기본 화살표가 남는 경우가 있어 함께 지웁니다. */
.langpick select{appearance:none;-webkit-appearance:none;-moz-appearance:none;
background:transparent;border:0;margin:0;color:var(--text);
/* 좌: 지구본 자리, 우: 화살표 자리. 여백이 select 안에 있어야 클릭 대상이 됩니다. */
padding:6px 30px 6px 32px;width:100%;
font-family:inherit;font-size:.8rem;font-weight:600;cursor:pointer;
line-height:1.2;max-width:11rem;text-overflow:ellipsis}
.langpick select:focus{outline:none}
.langpick option{background:#131824;color:var(--text);font-weight:500}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* 아랍어 등 RTL 에서 폼과 링크가 자연스럽게 뒤집히도록 */
[dir="rtl"] .langbar{justify-content:flex-start}
[dir="rtl"] .langpick svg{left:auto;right:11px}
[dir="rtl"] .langpick select{padding:6px 32px 6px 30px}
[dir="rtl"] .langpick::after{right:auto;left:11px}
[dir="rtl"] .sub,[dir="rtl"] h1{text-align:right}
.links a{color:var(--brand);text-decoration:none;font-weight:500}
.links a:hover{text-decoration:underline}
.sep{margin:0 8px;opacity:.4}
.dest{margin-top:18px;padding:10px 12px;border-radius:9px;background:rgba(255,255,255,.03);
border:1px solid var(--line);font-size:.83rem;color:var(--dim);text-align:center}
.site{display:block;padding:14px 16px;margin-top:10px;border-radius:11px;
background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--text);
text-decoration:none;font-weight:600;transition:border-color .2s,transform .2s}
.site:hover{border-color:var(--brand);transform:translateX(3px)}
.site span{display:block;font-size:.8rem;color:var(--dim);font-weight:400;margin-top:2px}
/* 계정 홈: 회원 정보 표 */
.notice{margin:0 0 18px;padding:11px 14px;border-radius:9px;
  background:rgba(96,165,250,.12);border:1px solid rgba(96,165,250,.28);
  color:var(--text);font-size:.9rem;line-height:1.6}
.info{margin:6px 0 4px;border:1px solid var(--line);border-radius:11px;overflow:hidden}
.info div{display:flex;gap:12px;padding:11px 14px;font-size:.88rem;
border-bottom:1px solid var(--line)}
.info div:last-child{border-bottom:0}
.info dt{flex:0 0 92px;color:var(--dim);margin:0;font-size:.84rem}
.info dd{margin:0;color:var(--text);word-break:break-all}
.info .tag{font-size:.74rem;padding:1px 8px;border-radius:99px;
background:rgba(110,231,255,.14);color:var(--brand)}
.info .tag.warn{background:rgba(251,191,36,.16);color:#fbbf24}
.secthead{margin:22px 0 6px;font-size:.82rem;color:var(--dim);font-weight:600;
letter-spacing:.04em;text-transform:uppercase}
.danger-note{margin:6px 0 14px;padding:12px 14px;border-radius:11px;
background:rgba(248,113,113,.09);border:1px solid rgba(248,113,113,.3);
color:#fca5a5;font-size:.85rem;line-height:1.65}
button.danger{background:transparent;border:1px solid rgba(248,113,113,.45);color:#f87171}
button.danger:hover:not(:disabled){background:rgba(248,113,113,.12)}
/* ── 구글 로그인 버튼 ─────────────────────────────────────────────────────
   구글 브랜드 지침이 요구하는 모양(흰 바탕·정품 로고·상표명 그대로)을 따릅니다.
   이 화면의 어두운 톤과 일부러 다르게 둔 것이기도 합니다 — 다른 회사로
   넘어가는 버튼이 우리 버튼과 똑같이 생기면 어디로 가는지 알 수 없습니다.
   <button> 이 아니라 <a> 인 이유: 단순 이동이라 JS 가 필요 없고, 스크립트가
   막혀도 동작합니다. */
.gbtn{display:flex;align-items:center;justify-content:center;gap:10px;
width:100%;margin-top:20px;padding:12px;border-radius:11px;
background:#fff;color:#1f1f1f;border:1px solid #dadce0;
font-family:inherit;font-size:.95rem;font-weight:600;text-decoration:none;
transition:box-shadow .2s,transform .18s}
.gbtn:hover{transform:translateY(-1px);box-shadow:0 8px 22px -10px rgba(0,0,0,.7)}
.gbtn svg{width:18px;height:18px;flex:0 0 18px}
/* '또는' 구분선 — 두 방법이 나란히 있다는 것을 한눈에 보이게 합니다. */
.orline{display:flex;align-items:center;gap:12px;margin:22px 0 2px;
color:var(--dim);font-size:.8rem}
.orline::before,.orline::after{content:"";flex:1;height:1px;background:var(--line)}
/* 계정 화면의 보조 버튼(연결 해제 등) — 주 버튼과 무게를 다르게 둡니다. */
button.ghost{background:transparent;border:1px solid var(--line);color:var(--soft)}
button.ghost:hover:not(:disabled){border-color:var(--brand);color:var(--text)}
/* ── /account 국가·언어 콤보박스 ─────────────────────────────────────────
   249개 국가는 기본 select 로는 사실상 스크롤할 수 없어 검색을 뒀습니다.
   언어도 시각 일관성을 위해 같은 컴포넌트를 씁니다(검색 상자는 있지만 짧아
   사실상 안 씁니다 — 짧은 목록에서도 방해되지 않게 설계).
   기본 select 는 브라우저 기본 폰트/색으로 뜨며 어두운 톤과 겉돕니다. */
.combo{position:relative;margin-top:0}
.combo-btn{width:100%;margin-top:0;padding:12px 14px;border-radius:10px;
  background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--text);
  font-family:inherit;font-size:.95rem;font-weight:500;text-align:start;cursor:pointer;
  display:flex;align-items:center;gap:10px;transition:border-color .18s,background .18s}
.combo-btn:hover{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.06)}
.combo-btn:focus,.combo-btn[aria-expanded="true"]{outline:none;border-color:var(--brand);
  background:rgba(110,231,255,.06);box-shadow:0 0 0 3px rgba(110,231,255,.14)}
.combo-btn .flag{flex:0 0 auto;font-size:1.15rem;line-height:1;min-width:1.4rem;text-align:center;
  /* 국기 이모지가 없는 환경(Windows 기본)에서 두 글자로 폴백되어도 정렬이 유지되도록 */
  font-family:"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",inherit}
.combo-btn .text{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.combo-btn .text.dim{color:var(--dim)}
.combo-btn .chev{flex:0 0 auto;width:0;height:0;margin-inline-start:4px;
  border-left:4px solid transparent;border-right:4px solid transparent;
  border-top:5px solid var(--dim);transition:border-top-color .18s,transform .2s}
.combo-btn:hover .chev,.combo-btn:focus .chev{border-top-color:var(--brand)}
.combo-btn[aria-expanded="true"] .chev{transform:rotate(180deg);border-top-color:var(--brand)}
.combo-panel{position:absolute;inset-inline-start:0;inset-inline-end:0;top:calc(100% + 6px);
  z-index:20;background:#0f1522;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 20px 60px -20px rgba(0,0,0,.6);overflow:hidden;
  display:flex;flex-direction:column;max-height:340px}
/* ★ author 스타일의 display:flex 는 UA 의 [hidden]{display:none} 를 이깁니다
   (author > UA). 이 한 줄이 없으면 두 콤보 패널이 항상 펼쳐진 채 겹쳐 보입니다. */
.combo-panel[hidden]{display:none}
.combo-search{width:100%;padding:11px 12px;background:rgba(255,255,255,.03);border:0;
  border-bottom:1px solid var(--line);color:var(--text);
  font-family:inherit;font-size:.92rem;margin:0;border-radius:0}
.combo-search:focus{outline:none;background:rgba(110,231,255,.06)}
.combo-list{list-style:none;margin:0;padding:4px;overflow-y:auto;overflow-x:hidden;
  scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.14) transparent}
.combo-list::-webkit-scrollbar{width:8px}
.combo-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:99px}
.combo-list li{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;
  font-size:.9rem;color:var(--text);cursor:pointer;user-select:none;
  transition:background .12s}
.combo-list li .fx{flex:0 0 auto;font-size:1.05rem;line-height:1;min-width:1.4rem;text-align:center;
  font-family:"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",inherit}
.combo-list li .ln{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.combo-list li .cc{flex:0 0 auto;font-size:.72rem;color:var(--dim);letter-spacing:.06em;
  padding:1px 6px;border-radius:99px;background:rgba(255,255,255,.05)}
.combo-list li[hidden]{display:none}
.combo-list li.active,.combo-list li:hover{background:rgba(110,231,255,.09)}
.combo-list li[aria-selected="true"]{background:rgba(110,231,255,.15)}
.combo-list li[aria-selected="true"] .cc{background:rgba(110,231,255,.24);color:var(--brand)}
.combo-empty{padding:16px;text-align:center;color:var(--dim);font-size:.88rem}
/* 계정 홈의 '홈페이지' 서비스 카드 — 다른 사이트 카드와 구분되는 부드러운 강조 */
.site.home{border-color:rgba(110,231,255,.28);background:rgba(110,231,255,.05)}
.site.home:hover{border-color:var(--brand)}
.site.home .ico{display:inline-block;margin-inline-end:8px;color:var(--brand);font-weight:700}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
