*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Pretendard','Noto Sans KR',sans-serif;
  color:#1a1d29;
  background:
    radial-gradient(1200px 600px at 10% -10%, rgba(124,77,255,.18), transparent 60%),
    radial-gradient(900px 500px at 110% 20%, rgba(0,200,255,.15), transparent 60%),
    radial-gradient(800px 400px at 50% 110%, rgba(255,89,164,.12), transparent 60%),
    linear-gradient(180deg, #f5f6fb 0%, #eef0fa 100%);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

/* ── 상단바 ── */
.topbar{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(20px) saturate(180%);
  border-bottom:1px solid rgba(0,0,0,.06);
}
.topbar-inner{
  max-width:1100px;margin:0 auto;
  padding:14px 24px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{
  width:38px;height:38px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#7c4dff,#00c8ff);
  color:#fff;
}
.brand-mark svg{width:22px;height:22px}
.brand-title{font-size:1.1rem;font-weight:800;letter-spacing:-.02em}
.brand-title span{color:#7c4dff}
.brand-sub{font-size:.75rem;color:#6b7280;font-weight:500}
.topbar-link{
  font-size:.85rem;color:#5b6173;text-decoration:none;
  padding:8px 14px;border-radius:8px;
  transition:background .15s;
}
.topbar-link:hover{background:rgba(0,0,0,.05)}

/* ── 컨테이너/카드 ── */
.container{max-width:1100px;margin:0 auto;padding:32px 24px 80px;display:flex;flex-direction:column;gap:24px}
.card{
  background:#fff;border-radius:18px;
  padding:28px;
  box-shadow:0 4px 24px rgba(15,20,45,.06), 0 1px 2px rgba(15,20,45,.04);
  border:1px solid rgba(0,0,0,.04);
}
.card.glass{
  background:rgba(255,255,255,.78);
  backdrop-filter:blur(20px) saturate(180%);
}
.card-head{margin-bottom:20px}
.card-head h2{margin:0 0 6px;font-size:1.25rem;font-weight:700;letter-spacing:-.02em}
.muted{color:#6b7280;font-size:.9rem;margin:0}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:16px}

/* ── 입력 행 ── */
.input-row{display:flex;gap:12px;align-items:stretch}
.input-wrap{
  flex:1;position:relative;display:flex;align-items:center;
  background:#fff;border:2px solid #e5e7ef;border-radius:12px;
  transition:border-color .15s, box-shadow .15s;
  overflow:hidden;
}
.input-wrap:focus-within{border-color:#7c4dff;box-shadow:0 0 0 4px rgba(124,77,255,.12)}
.input-wrap.ok{border-color:#10b981;box-shadow:0 0 0 4px rgba(16,185,129,.12)}
.input-wrap.bad{border-color:#ef4444;box-shadow:0 0 0 4px rgba(239,68,68,.1)}
.input-wrap input{
  flex:1;border:0;outline:0;background:transparent;
  padding:14px 16px;font-size:1.05rem;font-family:inherit;
  min-width:0;
}
.input-suffix{
  padding:0 8px 0 0;color:#9ca3af;font-size:1.05rem;
  font-weight:500;letter-spacing:-.01em;
  user-select:none;
}
.check-indicator{
  width:46px;display:flex;align-items:center;justify-content:center;
}
.check-indicator.loading::before{
  content:'';width:18px;height:18px;border-radius:50%;
  border:2.5px solid #e5e7ef;border-top-color:#7c4dff;
  animation:spin .7s linear infinite;
}
.check-indicator.ok::before{
  content:'✓';color:#10b981;font-weight:bold;font-size:1.25rem;
  animation:pop .25s ease-out;
}
.check-indicator.bad::before{
  content:'✕';color:#ef4444;font-weight:bold;font-size:1.1rem;
  animation:shake .3s ease-out;
}
.check-msg{margin-top:10px;font-size:.85rem;min-height:1.2em}
.check-msg.ok{color:#059669}
.check-msg.bad{color:#dc2626}

/* ── 버튼 ── */
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:12px 22px;font-size:.95rem;font-weight:600;font-family:inherit;
  border:1px solid #e5e7ef;background:#fff;color:#1a1d29;
  border-radius:12px;cursor:pointer;
  transition:all .15s;white-space:nowrap;
  text-decoration:none;
}
.btn svg{width:16px;height:16px;flex-shrink:0}
.btn:hover:not(:disabled){background:#f5f6fb;border-color:#d4d7e3;transform:translateY(-1px)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-sm{padding:8px 14px;font-size:.82rem;border-radius:9px}
.btn-primary{
  background:linear-gradient(135deg,#7c4dff,#00c8ff);
  color:#fff;border:0;
  box-shadow:0 4px 14px rgba(124,77,255,.32);
}
.btn-primary:hover:not(:disabled){
  box-shadow:0 8px 22px rgba(124,77,255,.4);
  filter:brightness(1.05);
}
.btn-create{padding:12px 26px;font-size:1rem}
.btn-ai{
  background:linear-gradient(135deg,#ff59a4,#7c4dff);
  color:#fff;border:0;
  box-shadow:0 4px 14px rgba(255,89,164,.28);
}
.btn-ai:hover:not(:disabled){box-shadow:0 8px 22px rgba(255,89,164,.4);filter:brightness(1.05)}
.btn-secondary{background:#f5f6fb}
.btn-go{
  background:linear-gradient(135deg,#10b981,#00c8ff);
  color:#fff;border:0;
  box-shadow:0 4px 14px rgba(16,185,129,.3);
}
.btn-go:hover:not(:disabled){box-shadow:0 8px 22px rgba(16,185,129,.4)}
.btn-copy{background:#fff;border:2px solid #7c4dff;color:#7c4dff}
.btn-copy.copied{background:#10b981;border-color:#10b981;color:#fff}

/* ── AI 추천 ── */
.ai-badge{
  display:inline-block;padding:2px 10px;
  font-size:.7rem;font-weight:700;letter-spacing:.05em;
  background:linear-gradient(135deg,#ff59a4,#7c4dff);
  color:#fff;border-radius:999px;
  vertical-align:middle;margin-right:6px;
}
.suggest-row{display:flex;gap:12px;align-items:stretch}
.suggest-row input{
  flex:1;padding:12px 16px;border-radius:12px;border:2px solid #e5e7ef;
  font-size:.95rem;font-family:inherit;outline:0;background:#fff;
  transition:border-color .15s, box-shadow .15s;
  min-width:0;
}
.suggest-row input:focus{border-color:#ff59a4;box-shadow:0 0 0 4px rgba(255,89,164,.12)}
.suggest-chips{
  margin-top:18px;display:flex;flex-wrap:wrap;gap:8px;min-height:0;
}
.chip{
  padding:8px 14px;border-radius:999px;
  background:#fff;border:1.5px solid #e5e7ef;
  cursor:pointer;font-size:.88rem;font-weight:500;
  transition:all .15s;
  display:inline-flex;align-items:center;gap:6px;
  animation:chip-in .3s ease-out backwards;
}
.chip:hover{background:linear-gradient(135deg,rgba(124,77,255,.08),rgba(255,89,164,.08));border-color:#7c4dff;transform:translateY(-1px)}
.chip.taken{opacity:.45;cursor:not-allowed;text-decoration:line-through}
.chip-suffix{color:#9ca3af;font-size:.78rem;font-weight:400}

/* ── 진행 스텝 ── */
.progress-card{animation:card-in .4s ease-out}
.steps{display:flex;flex-direction:column;gap:14px;position:relative}
.steps::before{
  content:'';position:absolute;left:19px;top:20px;bottom:20px;width:2px;
  background:linear-gradient(180deg, rgba(124,77,255,.15), rgba(0,200,255,.15));
}
.step{
  display:flex;gap:16px;align-items:flex-start;
  padding:14px 16px;border-radius:12px;
  background:rgba(255,255,255,.5);
  border:1px solid rgba(0,0,0,.04);
  transition:all .3s;
  position:relative;z-index:1;
}
.step-icon{
  width:40px;height:40px;border-radius:50%;
  background:#fff;border:2px solid #e5e7ef;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  position:relative;
  transition:all .3s;
}
.step-icon .spinner,.step-icon .check,.step-icon .cross{
  position:absolute;inset:0;display:none;align-items:center;justify-content:center;
  font-weight:bold;
}
.step-icon .spinner{
  width:22px;height:22px;margin:auto;border-radius:50%;
  border:2.5px solid rgba(124,77,255,.15);border-top-color:#7c4dff;
  animation:spin .7s linear infinite;
}
.step-icon .check{color:#fff;font-size:1.2rem}
.step-icon .cross{color:#fff;font-size:1.1rem}

.step.running .step-icon{border-color:#7c4dff;background:rgba(124,77,255,.06)}
.step.running .step-icon .spinner{display:flex}
.step.running .step-title{color:#7c4dff}
.step.running{background:rgba(124,77,255,.04);border-color:rgba(124,77,255,.15)}

.step.done .step-icon{background:linear-gradient(135deg,#10b981,#34d399);border-color:#10b981;animation:pop .25s ease-out}
.step.done .step-icon .check{display:flex}
.step.done .step-title{color:#059669}

.step.warn .step-icon{background:linear-gradient(135deg,#f59e0b,#fbbf24);border-color:#f59e0b}
.step.warn .step-icon .check{display:flex}
.step.warn .step-title{color:#d97706}

.step.error .step-icon{background:linear-gradient(135deg,#ef4444,#f87171);border-color:#ef4444;animation:shake .3s}
.step.error .step-icon .cross{display:flex}
.step.error .step-title{color:#dc2626}

.step-body{flex:1;min-width:0}
.step-title{font-weight:600;font-size:.95rem;color:#9ca3af;margin-bottom:2px;transition:color .25s}
.step-msg{font-size:.82rem;color:#6b7280;word-break:break-all;line-height:1.45}

/* ── 완료 패널 ── */
.done-panel{
  margin-top:28px;padding:36px 24px;
  border-radius:16px;
  background:linear-gradient(135deg,rgba(16,185,129,.08),rgba(0,200,255,.08));
  border:1.5px dashed rgba(16,185,129,.3);
  text-align:center;
  animation:card-in .45s ease-out;
}
.done-burst{
  width:72px;height:72px;border-radius:50%;
  background:linear-gradient(135deg,#10b981,#34d399);
  color:#fff;display:flex;align-items:center;justify-content:center;
  margin:0 auto 16px;
  box-shadow:0 8px 28px rgba(16,185,129,.4);
  animation:burst .6s cubic-bezier(.34,1.56,.64,1);
}
.done-burst svg{width:36px;height:36px}
.done-title{font-size:1.4rem;font-weight:800;color:#065f46;margin-bottom:6px;letter-spacing:-.02em}
.done-url{
  font-size:1.1rem;font-weight:600;color:#0c4a6e;
  margin-bottom:24px;
  font-family:'SF Mono','Monaco','Consolas',monospace;
}
.done-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* ── 서브도메인 목록 ── */
.sub-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.sub-item{
  padding:14px 16px;border-radius:12px;
  background:#fff;border:1px solid #e5e7ef;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  transition:all .15s;
}
.sub-item:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(15,20,45,.08);border-color:rgba(124,77,255,.3)}
.sub-info{min-width:0;flex:1}
.sub-fqdn{font-weight:600;font-size:.92rem;color:#1a1d29;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sub-meta{font-size:.72rem;color:#9ca3af;margin-top:2px;display:flex;gap:8px;align-items:center}
.sub-tag{padding:2px 7px;border-radius:6px;background:#f5f6fb;font-weight:500}
.sub-tag.ssl{background:rgba(16,185,129,.12);color:#059669}
.sub-actions{display:flex;gap:6px;flex-shrink:0}
.icon-btn{
  width:32px;height:32px;border-radius:8px;border:1px solid #e5e7ef;background:#fff;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:all .15s;color:#6b7280;
}
.icon-btn svg{width:14px;height:14px}
.icon-btn:hover{background:#f5f6fb;color:#1a1d29;border-color:#d4d7e3}
.icon-btn.copy:hover{color:#7c4dff;border-color:#7c4dff}
.icon-btn.go:hover{color:#10b981;border-color:#10b981}
.icon-btn.copied{background:#10b981;color:#fff;border-color:#10b981;animation:pop .25s ease-out}

/* ── 토스트 ── */
.toast{
  position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(20px);
  padding:12px 24px;border-radius:12px;
  background:#1a1d29;color:#fff;font-size:.88rem;font-weight:500;
  box-shadow:0 8px 28px rgba(0,0,0,.25);
  opacity:0;transition:all .25s;z-index:1000;pointer-events:none;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.success{background:linear-gradient(135deg,#10b981,#059669)}
.toast.error{background:linear-gradient(135deg,#ef4444,#dc2626)}

/* ── 유틸 ── */
.hidden{display:none !important}

/* ── 애니메이션 ── */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.15)}100%{transform:scale(1)}}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
@keyframes burst{0%{transform:scale(0) rotate(-180deg);opacity:0}60%{transform:scale(1.15) rotate(0);opacity:1}100%{transform:scale(1) rotate(0);opacity:1}}
@keyframes card-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes chip-in{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}

/* ── 반응형 ── */
@media (max-width:640px){
  .container{padding:20px 16px 60px}
  .card{padding:20px}
  .input-row,.suggest-row{flex-direction:column}
  .input-row .btn,.suggest-row .btn{justify-content:center}
  .topbar-inner{padding:12px 16px}
  .brand-sub{display:none}
  .input-wrap input{font-size:16px}
}


/* ── 스크립트/사용 안내 모달 ── */
.icon-btn.script{color:#7c4dff}
.sm-overlay{position:fixed;inset:0;background:rgba(15,20,45,.55);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}
.sm-overlay.hidden{display:none}
.sm-box{background:#fff;border-radius:16px;max-width:520px;width:100%;box-shadow:0 24px 60px rgba(15,20,45,.3);overflow:hidden}
.sm-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eef0f6}
.sm-title{font-weight:800;font-size:1rem;color:#1f2440}
.sm-x{border:none;background:#f3f4f8;width:30px;height:30px;border-radius:8px;cursor:pointer;font-size:.9rem;color:#6b7280}
.sm-x:hover{background:#e9eaf0}
.sm-body{padding:20px}
.sm-label{font-size:.78rem;color:#9ca3af;font-weight:700;letter-spacing:.04em;margin-bottom:6px}
.sm-path{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.sm-path code{flex:1;background:#0f142d;color:#a5b4fc;padding:10px 12px;border-radius:9px;font-size:.82rem;word-break:break-all}
.sm-copy{border:none;background:#7c4dff;color:#fff;font-weight:700;font-size:.8rem;padding:9px 14px;border-radius:9px;cursor:pointer}
.sm-copy:hover{filter:brightness(1.08)}
.sm-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.sm-list li{font-size:.9rem;color:#374151;line-height:1.6;background:#f7f8fc;border:1px solid #eef0f6;border-radius:10px;padding:11px 13px}
.sm-list code{background:#eceafe;color:#5b3fd6;padding:1px 6px;border-radius:5px;font-size:.85em}


/* ── 모달: 사용자 스크립트 ── */
.sm-snips{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.sm-empty{color:#9ca3af;font-size:.85rem;padding:10px;text-align:center;background:#f7f8fc;border-radius:8px}
.sm-snip{background:#0f142d;border-radius:9px;overflow:hidden}
.sm-snip-h{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;color:#cbd5e1;font-size:.82rem}
.sm-snip pre{margin:0;padding:10px 12px;color:#a5b4fc;font-size:.8rem;white-space:pre-wrap;word-break:break-all;max-height:160px;overflow:auto}
.sm-mini{border:none;background:#27305a;color:#cbd5e1;font-size:.74rem;padding:4px 9px;border-radius:6px;cursor:pointer;margin-left:5px}
.sm-mini:hover{background:#374480}.sm-mini.del{background:#5b2330;color:#fca5a5}
.sm-add{display:flex;flex-direction:column;gap:7px;margin-top:8px}
.sm-add input,.sm-add textarea{border:1px solid #e5e7eb;border-radius:8px;padding:9px 11px;font-size:.85rem;font-family:inherit;width:100%}
.sm-add textarea{min-height:70px;resize:vertical;font-family:ui-monospace,Menlo,monospace}
