/* ════════════ FAB ════════════ */
.fab{
  position:fixed; right:24px; bottom:28px;
  background:var(--ink); color:var(--bg);
  border:none; border-radius:14px;
  padding:13px 20px; font-size:14px; font-weight:700;
  cursor:pointer; z-index:50;
  font-family:'Noto Sans KR',sans-serif; letter-spacing:-.3px;
  display:flex; align-items:center; gap:8px;
  box-shadow:var(--shadow-lg); transition:all .2s;
}
.fab:hover{background:#333; transform:translateY(-2px);}
.fab-icon{font-size:18px;}

/* ════════════ MODAL ════════════ */
.overlay{
  display:none; position:fixed; inset:0;
  background:rgba(26,24,20,.5); backdrop-filter:blur(6px);
  z-index:200; align-items:center; justify-content:center; padding:20px;
}
.overlay.open{display:flex;}

.modal{
  background:var(--surface); border:2px solid var(--ink);
  border-radius:16px; padding:32px;
  width:100%; max-width:500px;
  animation:mIn .22s cubic-bezier(.4,0,.2,1);
  max-height:90vh; overflow-y:auto;
}
@keyframes mIn{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}

.modal-title{
  font-family:'Gmarket Sans','Noto Sans KR',sans-serif; font-size:22px; font-weight:900;
  letter-spacing:-.5px; margin-bottom:4px;
}
.modal-sub{font-size:13px;color:var(--ink3);margin-bottom:24px;}

/* ── FORM ── */
.fg{margin-bottom:16px;}
.flabel{
  display:block; font-family:'DM Mono',monospace; font-size:11px;
  letter-spacing:.8px; text-transform:uppercase; color:var(--ink3);
  margin-bottom:6px; font-weight:500;
}
.finput,.fselect,.ftextarea{
  width:100%; padding:11px 13px;
  background:var(--surface2); border:1.5px solid var(--border2);
  border-radius:8px; color:var(--ink); font-size:14px;
  font-family:'Noto Sans KR',sans-serif;
  transition:border-color .15s; outline:none;
}
.finput:focus,.fselect:focus,.ftextarea:focus{
  border-color:var(--ink); background:var(--surface);
}
.fselect{appearance:none;cursor:pointer;}
.ftextarea{resize:vertical;min-height:80px;}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media(max-width:420px){.frow{grid-template-columns:1fr;}}

.mact{display:flex;gap:10px;margin-top:24px;}
.mbtn{
  flex:1; padding:12px; border-radius:8px; font-size:14px; font-weight:700;
  cursor:pointer; font-family:'Noto Sans KR',sans-serif;
  transition:all .15s; border:1.5px solid var(--border2);
}
.mbtn.cancel{background:transparent;color:var(--ink2);}
.mbtn.cancel:hover{border-color:var(--ink);color:var(--ink);}
.mbtn.ok{background:var(--ink);color:var(--bg);border-color:var(--ink);}
.mbtn.ok:hover{background:#333;}

/* ── 뱃지 미리보기 ── */
.badge-prev{
  background:var(--surface2); border:1.5px solid var(--border);
  border-radius:10px; padding:14px; margin-top:8px;
}
.badge-prev-label{
  font-family:'DM Mono',monospace; font-size:10px; text-transform:uppercase;
  letter-spacing:.8px; color:var(--ink3); margin-bottom:8px;
}

/* ── VPN 경고 ── */
.vpn-box{
  border:1.5px solid rgba(214,60,30,.3); border-radius:10px;
  padding:14px; margin-bottom:20px; background:rgba(214,60,30,.04);
  display:flex; gap:10px; font-size:13px; line-height:1.55;
}
.vpn-box strong{color:var(--accent);}

/* ── 유사 주제 경고 ── */
.dup-box{
  display:none; border:1.5px solid rgba(214,60,30,.3);
  border-radius:10px; padding:14px; margin-top:10px;
  background:rgba(214,60,30,.04);
}
.dup-box.show{display:block;}
.dup-title{color:var(--accent);font-weight:700;font-size:13px;margin-bottom:8px;}
.dup-item{
  padding:9px 12px; background:var(--surface);
  border:1px solid var(--border); border-radius:7px;
  margin-top:6px; cursor:pointer; transition:border-color .15s;
}
.dup-item:hover{border-color:var(--accent);}
.dup-item-t{font-size:13px;font-weight:600;}
.dup-item-m{font-size:11px;color:var(--ink3);margin-top:2px;font-family:'DM Mono',monospace;}

/* ── 개인정보 알림 ── */
.priv-note{
  background:var(--surface2); border:1px solid var(--border);
  border-radius:8px; padding:12px; font-size:12px;
  color:var(--ink3); line-height:1.6; margin-top:8px;
}
.priv-note strong{color:var(--ink2);}

