/* 신뢰감 있는 블루 테마: 네이비 헤더 + 선명한 블루 포인트 */
:root {
  --fg:#0f1f3d; --muted:#5b6b85; --line:#dbe3ef; --bg:#f3f6fb; --card:#fff;
  --navy:#0b2a5b; --navy-2:#123a7a; --accent:#1d5fd6; --accent-dark:#164bb0; --accent-soft:#e8f0fe;
  --pro:#c2410c; --ok:#0f7a55;
  --shadow:0 1px 2px rgba(15,31,61,.06), 0 4px 14px rgba(15,31,61,.05);
}
* { box-sizing: border-box; }
body { margin:0; font-family: Pretendard, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif; color:var(--fg); background:var(--bg); line-height:1.6; -webkit-font-smoothing:antialiased; }
a { color:var(--accent); text-decoration:none; }
a:hover { text-decoration:underline; }
main { max-width:1080px; margin:0 auto; padding:20px 16px; }

.top { display:flex; justify-content:space-between; align-items:center; padding:14px max(16px, calc((100% - 1080px) / 2 + 16px)); background:var(--navy); position:sticky; top:0; z-index:10; box-shadow:0 2px 8px rgba(11,42,91,.25); }
.top nav { display:flex; gap:18px; align-items:center; }
.top nav a { color:#d6e2f7; font-size:15px; }
.top nav a:hover { color:#fff; text-decoration:none; }
.top nav a.btn { color:#fff; background:var(--accent); }
.top nav a.btn:hover { background:#2b6ee8; }
.logo { font-weight:800; font-size:19px; color:#fff; letter-spacing:-.3px; display:flex; align-items:center; gap:8px; }
.logo::before { content:""; width:22px; height:22px; border-radius:6px; background:linear-gradient(135deg, #4f8cff, #1d5fd6); box-shadow:inset 0 0 0 3px rgba(255,255,255,.25); }
.logo:hover { text-decoration:none; }

footer { text-align:center; color:var(--muted); font-size:13px; padding:36px 16px; border-top:1px solid var(--line); background:var(--card); margin-top:32px; }
h1 { font-size:25px; margin:12px 0; letter-spacing:-.4px; }
h2 { font-size:18px; margin:20px 0 10px; letter-spacing:-.2px; }
.muted { color:var(--muted); }
.small { font-size:14px; font-weight:normal; margin-left:8px; }

.btn { display:inline-block; background:var(--accent); color:#fff; border:0; padding:9px 16px; border-radius:8px; cursor:pointer; font-size:15px; font-weight:600; transition:background .15s; }
.btn:hover { text-decoration:none; background:var(--accent-dark); }
.btn.big { padding:13px 26px; font-size:17px; }
button.link { background:none; border:0; color:var(--accent); cursor:pointer; }

.hero { background:linear-gradient(135deg, var(--navy) 0%, var(--navy-2) 55%, var(--accent) 100%); color:#fff; border-radius:14px; padding:40px 36px; margin-bottom:20px; box-shadow:var(--shadow); }
.hero h1 { font-size:30px; margin-top:0; color:#fff; }
.hero p { color:#d6e2f7; max-width:680px; font-size:16px; }
.hero b { color:#fff; }
.hero .btn { background:#fff; color:var(--navy); }
.hero .btn:hover { background:var(--accent-soft); }

.card { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:18px 22px; margin:16px 0; box-shadow:var(--shadow); }
.card h2 { margin-top:4px; }

.search, .inline { display:flex; gap:8px; flex-wrap:wrap; }
.search input, .inline input { flex:1; min-width:200px; }
input, select { padding:9px 12px; border:1px solid var(--line); border-radius:8px; font-size:15px; width:100%; background:#fff; color:var(--fg); }
input:focus, select:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(29,95,214,.15); }
.search select { width:auto; }
.search button { padding:9px 20px; border:0; border-radius:8px; background:var(--accent); color:#fff; font-weight:600; cursor:pointer; }
.search button:hover { background:var(--accent-dark); }

table.bids { width:100%; border-collapse:separate; border-spacing:0; background:var(--card); font-size:14px; border:1px solid var(--line); border-radius:12px; overflow:hidden; box-shadow:var(--shadow); }
.bids th, .bids td { padding:10px 12px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.bids tr:last-child td { border-bottom:0; }
.bids th { background:#eef3fb; color:var(--navy); font-weight:700; font-size:13px; }
.bids tbody tr:hover td { background:#f7faff; }
.r { text-align:right !important; white-space:nowrap; }
.nowrap { white-space:nowrap; }

.tag { display:inline-block; font-size:12px; padding:1px 8px; border-radius:10px; background:var(--accent-soft); color:var(--accent); white-space:nowrap; font-weight:600; }
.tag.pro { background:#fff1e6; color:var(--pro); font-weight:700; }
.tag.pre { background:#e6f6f0; color:var(--ok); }
.chips { display:flex; flex-wrap:wrap; gap:4px; margin-top:3px; }
.chip { font-size:12px; color:var(--muted); background:#eef2f8; padding:1px 8px; border-radius:8px; }
a.chip:hover { background:var(--accent-soft); color:var(--accent); text-decoration:none; }
.chip.on { background:var(--accent); color:#fff; }
.tagnav { display:flex; flex-direction:column; gap:6px; margin:12px 0; font-size:14px; }
.tagnav div { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.tagpick { grid-column:1 / -1; border:1px solid var(--line); border-radius:10px; padding:10px 14px; font-size:14px; }
.tagpick div { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:4px 0; }
label.check { flex-direction:row; align-items:center; gap:3px; }
label.check input { width:auto; }
ul.plain { padding-left:18px; margin:0; }
ul.plain li { padding:3px 0; }

.beta-bar { background:#071d42; color:#c9d8f2; text-align:center; font-size:13px; padding:7px 12px; }
.beta-bar a { color:#8fb6ff; }
.ok { background:#e6f6f0; border-left:3px solid var(--ok); padding:10px 14px; border-radius:0 8px 8px 0; }
.pager { display:flex; gap:16px; justify-content:center; margin:20px 0; }
dl.info { display:grid; grid-template-columns:100px 1fr; gap:8px 14px; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:18px; box-shadow:var(--shadow); }
dl.info dt { color:var(--muted); }
dl.info dd { margin:0; }
.locked { background:#fff7ed; border-left:3px solid var(--pro); padding:10px 14px; border-radius:0 8px 8px 0; }
.error { color:#b91c1c; }
.auth { max-width:400px; margin:40px auto; display:flex; flex-direction:column; gap:12px; background:var(--card); border:1px solid var(--line); border-radius:14px; padding:28px; box-shadow:var(--shadow); }
.grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap:10px; margin-top:12px; align-items:end; }
label { display:flex; flex-direction:column; gap:4px; font-size:14px; }
.alert-row { display:flex; justify-content:space-between; padding:10px 0; border-bottom:1px solid var(--line); }
.plans { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap:16px; }
.highlight { border:2px solid var(--accent); box-shadow:0 8px 24px rgba(29,95,214,.15); }
.price { font-size:30px; font-weight:800; margin:0; color:var(--navy); }
.price small { font-size:14px; font-weight:normal; color:var(--muted); }

@media (max-width:640px) {
  .top nav { gap:12px; }
  .top nav a { font-size:14px; }
  .bids.rows th:nth-child(3), .bids.rows td:nth-child(3) { display:none; }
  .hero { padding:24px 20px; }
  .hero h1 { font-size:24px; }
}

/* ---------- 홈 ---------- */
.hero { display:grid; grid-template-columns:1.4fr 1fr; gap:28px; align-items:center; position:relative; overflow:hidden; }
.hero::after { content:""; position:absolute; right:-120px; top:-120px; width:360px; height:360px; border-radius:50%; background:radial-gradient(circle, rgba(79,140,255,.35), transparent 70%); pointer-events:none; }
.eyebrow { display:inline-block; font-size:13px; font-weight:700; letter-spacing:.3px; color:#9cc0ff; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.15); padding:3px 10px; border-radius:20px; margin:0 0 14px; }
.eyebrow.dark { color:var(--accent); background:var(--accent-soft); border-color:transparent; }
.hero h1 { line-height:1.3; }
.hero-cta { display:flex; gap:10px; flex-wrap:wrap; margin-top:20px; }
.btn.ghost { background:transparent; color:#fff; box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.5); }
.btn.ghost:hover { background:rgba(255,255,255,.1); }
.btn.ghost-blue { background:var(--accent-soft); color:var(--accent); }
.btn.ghost-blue:hover { background:#d8e6fd; }
.hero-stats { display:grid; grid-template-columns:1fr 1fr; gap:10px; position:relative; z-index:1; }
.hero-stats div { background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.14); border-radius:12px; padding:14px 16px; backdrop-filter:blur(4px); }
.hero-stats b { display:block; font-size:24px; color:#fff; letter-spacing:-.5px; }
.hero-stats span { font-size:13px; color:#b9cdf0; }
.features { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-bottom:8px; }
.feature { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:18px; box-shadow:var(--shadow); }
.feature .ico { display:inline-grid; place-items:center; width:30px; height:30px; border-radius:8px; background:var(--accent-soft); color:var(--accent); font-weight:800; }
.feature h3 { font-size:16px; margin:10px 0 6px; color:var(--navy); }
.feature p { font-size:14px; color:var(--muted); margin:0; }
.split { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap:16px; }
.split.three { grid-template-columns:repeat(3, 1fr); }
.split > .card { margin:16px 0 0; }
.split + .search { margin-top:16px; }
ul.list li { display:flex; flex-wrap:wrap; gap:4px 8px; align-items:baseline; padding:6px 0; border-bottom:1px dashed var(--line); }
ul.list li:last-child { border-bottom:0; }
.quick { display:flex; flex-wrap:wrap; gap:6px; margin:12px 0 4px; }
.quick .chip { font-size:13px; padding:4px 12px; border-radius:20px; background:var(--card); border:1px solid var(--line); color:var(--fg); }
.quick .chip.on { background:var(--accent); border-color:var(--accent); color:#fff; }

/* ---------- 목록 배지 ---------- */
.badge { display:inline-block; font-size:11.5px; font-weight:700; padding:1px 7px; border-radius:6px; white-space:nowrap; }
.badge.nego { background:#ede9fe; color:#5b21b6; }
.badge.joint { background:#e6f6f0; color:var(--ok); }
.badge.region { background:#fef3c7; color:#92400e; }
.badge.pre { background:#e0f2fe; color:#0369a1; }
.dday { display:inline-block; margin-left:4px; font-size:11.5px; font-weight:800; padding:1px 6px; border-radius:6px; background:var(--accent-soft); color:var(--accent); }
.dday.hot { background:#fee2e2; color:#b91c1c; }
.dday.done { background:#eef2f8; color:var(--muted); font-weight:600; }
a.title { font-weight:600; color:var(--fg); }
a.title:hover { color:var(--accent); }
td.empty { text-align:center; padding:28px; }

/* ---------- 상세 ---------- */
.crumbs { font-size:13px; color:var(--muted); margin:4px 0 10px; }
.crumbs a { color:var(--muted); }
.title-row { display:flex; justify-content:space-between; gap:20px; align-items:flex-start; }
.title-row h1 { margin:8px 0 4px; line-height:1.35; }
.title-row p { margin:0; }
.countdown { flex:none; min-width:150px; text-align:center; background:var(--navy); color:#fff; border-radius:14px; padding:14px 18px; box-shadow:var(--shadow); }
.countdown b { display:block; font-size:30px; letter-spacing:-1px; }
.countdown span { font-size:12.5px; color:#b9cdf0; }
.countdown.hot { background:linear-gradient(135deg, #b91c1c, #dc2626); }
.countdown.hot span { color:#fde2e2; }
.brief { display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:12px; overflow:hidden; margin:18px 0 14px; box-shadow:var(--shadow); }
.kv { background:var(--card); padding:14px 16px; display:flex; flex-direction:column; gap:2px; }
.kv > span { font-size:12.5px; color:var(--muted); }
.kv > b { font-size:17px; color:var(--navy); }
.kv small { font-size:12.5px; color:var(--muted); }
.meter { height:6px; background:#e4ebf6; border-radius:4px; overflow:hidden; margin:6px 0 2px; }
.meter i { display:block; height:100%; background:linear-gradient(90deg, #4f8cff, var(--accent)); border-radius:4px; }
.meter.wide { height:10px; }
.actions { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 6px; }
.timeline { list-style:none; margin:0; padding:0; }
/* 원(14px)과 선(2px)을 같은 중심선(왼쪽 7px)에 맞춘다 */
.timeline li { position:relative; padding:0 0 16px 26px; }
.timeline li::before { content:""; position:absolute; left:0; top:3px; width:14px; height:14px; box-sizing:border-box;
  border-radius:50%; background:#fff; border:2px solid #c3d0e4; z-index:1; }
.timeline li:not(:last-child)::after { content:""; position:absolute; left:6px; top:17px; bottom:-3px; width:2px;
  background:#dfe6f1 linear-gradient(var(--accent), var(--accent)) no-repeat top / 100% 0; }
.timeline li.done::before { background:var(--accent); border-color:var(--accent); }
.timeline li.done:not(:last-child)::after { background-size:100% 100%; }
.timeline li.now::before { background:#fff; border-color:#dc2626; box-shadow:0 0 0 4px rgba(220,38,38,.15); }
.timeline b { display:block; font-size:14px; }
.timeline span { font-size:13px; color:var(--muted); }
.timeline em { font-style:normal; font-weight:700; }
.timeline em.up { color:#b91c1c; } .timeline em.down { color:var(--ok); }
.big-name { font-size:20px; font-weight:800; margin:4px 0; }
.card h3 { font-size:15px; margin:16px 0 6px; color:var(--navy); }
.card h3:first-child { margin-top:2px; }
.card.cta { display:flex; justify-content:space-between; align-items:center; gap:20px; background:linear-gradient(135deg, var(--accent-soft), #fff); }
.card.cta h2 { margin:0 0 4px; }
.card.cta p { margin:0; color:var(--muted); }
ul.docs li { padding:3px 0; font-size:14px; }
.lead { font-size:16px; color:var(--muted); max-width:760px; }
.notice { border-left:4px solid var(--accent); }
.locked-inline { font-size:12px; font-weight:700; color:var(--pro); background:#fff1e6; padding:1px 7px; border-radius:6px; }
table.compact { box-shadow:none; }
.center { text-align:center; }
table.compare td.us, table.compare th.us { background:#f3f7ff; color:var(--navy); font-weight:600; }
table.compare th.us { background:var(--accent); color:#fff; }
.foot-links { display:flex; gap:18px; justify-content:center; margin-bottom:10px; }

/* ---------- 대시보드 ---------- */
.channels { display:flex; flex-direction:column; gap:10px; }
.channel { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; padding:12px 14px; border:1px solid var(--line); border-radius:10px; }
.channel > b { min-width:84px; }
.channel .btn { margin-left:auto; }
input.copy { font-family:ui-monospace, Menlo, monospace; font-size:12.5px; background:#f6f8fc; }
details { margin-top:12px; }
.small-note { font-size:13px; margin:12px 0 0; }

/* ---------- 관리자 ---------- */
.admin-head { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; }
.admin-head h1 { margin:0; }
.admin-actions { display:flex; gap:8px; }
.admin-actions form { margin:0; }
.btn[disabled] { opacity:.5; cursor:wait; }
.kpis { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; }
.kpi { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:16px 18px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:4px; }
.kpi.hit { border-color:#9fdcc4; background:linear-gradient(180deg, #f2fbf7, #fff); }
.kpi.hit .meter i { background:linear-gradient(90deg, #34d399, var(--ok)); }
.kpi-label { font-size:13px; color:var(--muted); font-weight:600; }
.kpi-value { font-size:28px; color:var(--navy); letter-spacing:-.5px; }
.kpi-sub { font-size:12.5px; color:var(--muted); }
.bars { display:flex; align-items:flex-end; gap:2px; height:110px; margin-top:10px; }
.bars i { flex:1; min-height:2px; background:linear-gradient(180deg, #4f8cff, var(--accent)); border-radius:3px 3px 0 0; position:relative; }
.bars.green i { background:linear-gradient(180deg, #34d399, var(--ok)); }
.bars.navy i { background:linear-gradient(180deg, var(--navy-2), var(--navy)); }
.bars i b { position:absolute; bottom:100%; left:50%; transform:translateX(-50%); font-size:9.5px; color:var(--muted); font-weight:600; opacity:0; }
.bars i:hover { filter:brightness(1.15); }
.bars i:hover b { opacity:1; }
.bars-axis { display:flex; justify-content:space-between; font-size:11.5px; color:var(--muted); margin-top:4px; }
.status-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:14px; }
.status-grid div { display:flex; flex-direction:column; }
.status-grid span { font-size:12.5px; color:var(--muted); }
.status-grid b { font-size:16px; color:var(--navy); }
.status-grid b.good::before { content:"● "; color:#10b981; }
.status-grid b.bad::before { content:"● "; color:#dc2626; }
.status-grid small { font-size:12px; color:var(--muted); }
.checks { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.checks span { font-size:12.5px; padding:3px 10px; border-radius:20px; background:#fee2e2; color:#b91c1c; font-weight:600; }
.checks span.on { background:#e6f6f0; color:var(--ok); }
.hbar { display:grid; grid-template-columns:130px 1fr 60px; gap:8px; align-items:center; font-size:13px; padding:3px 0; }
.hbar span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hbar div { height:10px; background:#eef3fb; border-radius:5px; overflow:hidden; }
.hbar i { display:block; height:100%; background:var(--accent); border-radius:5px; }
.hbar b { text-align:right; color:var(--navy); }
.rank { display:flex; justify-content:space-between; gap:8px; font-size:14px; padding:5px 0; border-bottom:1px dashed var(--line); }
.rank:last-child { border-bottom:0; }
.rank a { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
input.filter { max-width:280px; margin-bottom:10px; }
form.mini { display:inline-flex; gap:4px; align-items:center; margin:0; }
form.mini select { width:auto; padding:2px 4px; font-size:12.5px; }
button.link.danger { color:#b91c1c; }

@media (max-width:900px) {
  .hero, .split, .split.three { grid-template-columns:1fr; }
  .features, .kpis { grid-template-columns:1fr 1fr; }
  .status-grid { grid-template-columns:1fr 1fr; }
}
@media (max-width:640px) {
  .features, .kpis { grid-template-columns:1fr; }
  .title-row { flex-direction:column; }
  .countdown { width:100%; }
  .card.cta { flex-direction:column; align-items:flex-start; }
  .top nav a:not(.btn):nth-child(3) { display:none; }
}

/* ================= 신뢰감 리디자인 (덮어쓰기) ================= */
:root { --bg:#f5f7fb; --line:#e3e8f0; --muted:#5a6a82; --shadow:0 1px 2px rgba(15,31,61,.05), 0 2px 8px rgba(15,31,61,.04); }
body { font-family:"Pretendard Variable", Pretendard, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif; letter-spacing:-.1px; }
.beta-bar { background:#eaf1ff; color:#24407a; border-bottom:1px solid #d6e3fb; font-size:13px; }
.beta-bar a { color:var(--accent); font-weight:600; margin-left:6px; }
.beta-bar .pill { display:inline-block; font-size:10.5px; font-weight:800; letter-spacing:.5px; background:var(--accent); color:#fff; padding:1px 6px; border-radius:4px; margin-right:6px; }
.top { background:rgba(255,255,255,.92); backdrop-filter:saturate(180%) blur(10px); border-bottom:1px solid var(--line); box-shadow:none; }
.top nav a { color:#33415c; font-weight:500; }
.top nav a:hover { color:var(--navy); }
.logo { color:var(--navy); gap:9px; }
.logo::before { content:none; }
.logo svg { display:block; }

.hero { background:#fff; color:var(--fg); border:1px solid var(--line); border-radius:16px; padding:40px; box-shadow:var(--shadow); grid-template-columns:1.15fr 1fr; gap:36px;
  background-image:linear-gradient(rgba(29,95,214,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(29,95,214,.035) 1px, transparent 1px); background-size:24px 24px; }
.hero::after { content:none; }
.hero h1 { color:var(--navy); font-size:34px; font-weight:800; letter-spacing:-1px; }
.hero .hero-sub, .hero p { color:var(--muted); }
.hero b { color:var(--navy); }
.hero .btn { background:var(--accent); color:#fff; }
.hero .btn:hover { background:var(--accent-dark); }
.hero .btn.ghost-blue { background:var(--accent-soft); color:var(--accent); }
.eyebrow { color:var(--accent); background:var(--accent-soft); border:0; }
dl.hero-stats { display:flex; gap:28px; margin:28px 0 0; padding-top:20px; border-top:1px solid var(--line); grid-template-columns:none; }
dl.hero-stats div { background:none; border:0; padding:0; backdrop-filter:none; }
dl.hero-stats dt { font-size:12.5px; color:var(--muted); }
dl.hero-stats dd { margin:2px 0 0; font-size:22px; font-weight:800; color:var(--navy); letter-spacing:-.5px; }
.hero-panel { background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 12px 32px rgba(11,42,91,.10); padding:6px; }
.panel-head { display:flex; justify-content:space-between; align-items:center; padding:12px 14px 8px; font-size:14px; color:var(--navy); }
.live { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); }
.live i { width:7px; height:7px; border-radius:50%; background:#10b981; box-shadow:0 0 0 3px rgba(16,185,129,.18); animation:pulse 2s infinite; }
@keyframes pulse { 50% { box-shadow:0 0 0 6px rgba(16,185,129,0); } }
.panel-item { display:block; padding:12px 14px; border-radius:10px; color:var(--fg); }
.panel-item + .panel-item { border-top:1px solid var(--line); border-radius:0; }
.panel-item:hover { background:#f6f9ff; text-decoration:none; }
.panel-item b { display:block; font-size:14.5px; line-height:1.45; margin:3px 0 6px; color:var(--fg); }
.pi-top { display:flex; justify-content:space-between; font-size:12.5px; }
.pi-meta { display:flex; flex-wrap:wrap; gap:6px; align-items:center; font-size:13px; color:var(--navy); font-weight:600; }
.panel-foot { margin:0; padding:8px 14px 10px; font-size:11.5px; color:#66758c !important; border-top:1px solid var(--line); }

ul.trust { list-style:none; margin:16px 0; padding:0; display:grid; grid-template-columns:repeat(4, 1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:12px; overflow:hidden; }
ul.trust li { display:flex; gap:12px; align-items:center; background:#fff; padding:14px 16px; }
ul.trust svg, .feature svg { width:26px; height:26px; flex:none; fill:none; stroke:var(--accent); stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
ul.trust b { display:block; font-size:14px; color:var(--navy); }
ul.trust span { font-size:12.5px; color:var(--muted); }
.feature { box-shadow:none; }
.feature svg { width:30px; height:30px; padding:6px; background:var(--accent-soft); border-radius:8px; }
.feature .ico { display:none; }

.countdown { background:#fff; color:var(--navy); border:1px solid var(--line); }
.countdown span { color:var(--muted); }
.countdown.hot { background:#fff5f5; border-color:#fecaca; color:#b91c1c; }
.countdown.hot span { color:#b91c1c; }
.card, .feature, table.bids, .brief, .kpi { box-shadow:var(--shadow); }

footer { text-align:left; padding:40px 16px 28px; }
.foot { max-width:1048px; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr; gap:32px; }
.foot-brand b { font-size:16px; color:var(--navy); }
.foot-brand p { margin:8px 0 0; max-width:420px; }
.foot h4 { margin:0 0 8px; font-size:13px; color:var(--navy); }
.foot div > a { display:block; color:var(--muted); padding:2px 0; }
.foot-legal { max-width:1048px; margin:28px auto 0; padding-top:16px; border-top:1px solid var(--line); font-size:12px; color:#66758c; }
.foot-links { display:none; }

.doc { max-width:820px; }
.doc h2 { margin-top:32px; }
.steps { padding-left:20px; }
.steps li { margin:8px 0; }
.steps em { font-style:normal; font-weight:700; color:var(--navy); background:var(--accent-soft); padding:0 4px; border-radius:4px; }

@media (max-width:900px) {
  ul.trust { grid-template-columns:1fr 1fr; }
  .foot { grid-template-columns:1fr 1fr; }
  .foot-brand { grid-column:1 / -1; }
}
@media (max-width:640px) {
  .hero { padding:24px 20px; }
  .hero h1 { font-size:26px; }
  dl.hero-stats { flex-wrap:wrap; gap:16px; }
  ul.trust { grid-template-columns:1fr; }
}

/* 모바일 (위 리디자인 규칙보다 뒤에 와야 함) */
.btn, .logo span { white-space:nowrap; }
@media (max-width:900px) {
  .hero { grid-template-columns:1fr; }
}
@media (max-width:640px) {
  html, body { overflow-x:hidden; }
  main { padding:14px 12px; }
  .top { padding:10px 12px; }
  .top nav { gap:10px; }
  .top nav a:not(.btn):not([href="/login"]):not([href="/dashboard"]) { display:none; }
  .top nav .btn { padding:7px 12px; font-size:14px; }
  .logo { font-size:17px; }
  .beta-bar { font-size:12px; }
  .hero { padding:22px 18px; gap:20px; }
  .hero h1 { font-size:25px; }
  .hero-cta .btn { flex:1; text-align:center; }
  dl.hero-stats dd { font-size:18px; }
  .bids.rows th:nth-child(1), .bids.rows td:nth-child(1) { display:none; }
  .bids th, .bids td { padding:9px 8px; }
  .brief { grid-template-columns:1fr 1fr; }
  .search select { flex:1; }
}

/* 가입 동의, 탈퇴, 방침 문서 */
.consent { background:#f6f8fc; border:1px solid var(--line); border-radius:10px; padding:12px 14px; font-size:13px; color:var(--muted); }
.consent p { margin:0 0 6px; }
.consent label.check { display:flex; gap:6px; font-size:13.5px; color:var(--fg); margin-top:8px; }
.btn.danger { background:#fff; color:#b91c1c; box-shadow:inset 0 0 0 1px #fecaca; }
.btn.danger:hover { background:#fef2f2; }
.danger-zone { margin-top:40px; border-color:#fde2e2; box-shadow:none; }
.foot-legal.biz { margin-top:20px; border-top:0; padding-top:0; color:var(--muted); }
.policy h2 { font-size:17px; margin-top:30px; padding-top:14px; border-top:1px solid var(--line); }
.policy table.bids { font-size:13.5px; margin:8px 0; }
.policy .ph { background:#fff7d6; color:#7a5300; padding:0 4px; border-radius:4px; font-weight:600; }
.policy .toc { columns:2; font-size:14px; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:14px 18px 14px 34px; }
@media (max-width:640px) { .policy .toc { columns:1; } }

/* ---------- 인앱 알림 ---------- */
.bell { position:relative; }
.bell > button { position:relative; display:grid; place-items:center; width:38px; height:38px; border:0; border-radius:10px; background:transparent; cursor:pointer; color:#33415c; }
.bell > button:hover, .bell > button[aria-expanded="true"] { background:var(--accent-soft); color:var(--accent); }
.bell svg { fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.bell-count { position:absolute; top:3px; right:2px; min-width:17px; height:17px; padding:0 4px; border-radius:9px; background:#e5484d; color:#fff; font-size:10.5px; font-weight:800; line-height:17px; text-align:center; box-shadow:0 0 0 2px #fff; }
.bell-panel { position:absolute; right:0; top:46px; width:min(380px, calc(100vw - 24px)); background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 16px 40px rgba(11,42,91,.16); overflow:hidden; z-index:50; }
.bell-head { display:flex; justify-content:space-between; align-items:center; padding:12px 16px; border-bottom:1px solid var(--line); }
.bell-list { max-height:420px; overflow-y:auto; }
.bell-empty { padding:24px 16px; text-align:center; margin:0; font-size:14px; }
.bell-all { display:block; text-align:center; padding:11px; font-size:14px; font-weight:600; border-top:1px solid var(--line); }
.noti { display:grid; grid-template-columns:auto 1fr; gap:2px 10px; padding:12px 16px; color:var(--fg); border-bottom:1px solid var(--line); position:relative; }
.noti:last-child { border-bottom:0; }
.noti:hover { background:#f6f9ff; text-decoration:none; }
.noti.unread { background:#f3f7ff; }
.noti.unread::before { content:""; position:absolute; left:6px; top:18px; width:6px; height:6px; border-radius:50%; background:var(--accent); }
.noti-kind { grid-row:span 3; align-self:start; font-size:11px; font-weight:800; padding:2px 7px; border-radius:6px; background:var(--accent-soft); color:var(--accent); white-space:nowrap; }
.noti-kind.k-prebid { background:#e0f2fe; color:#0369a1; }
.noti-kind.k-deadline { background:#fee2e2; color:#b91c1c; }
.noti b { font-size:14px; line-height:1.4; }
.noti .muted { font-size:12.5px; }
.noti time { font-size:11.5px; color:#66758c; }
.noti-list { padding:0; overflow:hidden; }
.noti-list .empty { padding:28px; text-align:center; margin:0; }

.toasts { position:fixed; right:20px; bottom:20px; display:flex; flex-direction:column; gap:10px; z-index:100; width:min(380px, calc(100vw - 24px)); }
.toast { display:flex; gap:12px; align-items:flex-start; background:#0f1f3d; color:#fff; border-radius:12px; padding:14px 14px 14px 16px; box-shadow:0 16px 40px rgba(11,42,91,.3); transform:translateY(12px); opacity:0; transition:transform .25s, opacity .25s; }
.toast.show { transform:none; opacity:1; }
a.toast:hover { text-decoration:none; background:#132a52; }
.toast-dot { flex:none; width:8px; height:8px; margin-top:7px; border-radius:50%; background:#4f8cff; box-shadow:0 0 0 4px rgba(79,140,255,.25); }
.toast.k-deadline .toast-dot { background:#f87171; box-shadow:0 0 0 4px rgba(248,113,113,.25); }
.toast.k-prebid .toast-dot { background:#38bdf8; }
.toast-text { flex:1; min-width:0; }
.toast-text b { display:block; font-size:14px; line-height:1.4; }
.toast-text span { display:block; font-size:12.5px; color:#b9cdf0; margin-top:2px; }
.toast-act { flex:none; align-self:center; border:0; border-radius:8px; background:#fff; color:var(--navy); font-weight:700; font-size:13px; padding:6px 10px; cursor:pointer; }
.toast-x { flex:none; border:0; background:none; color:#a9bcdc; font-size:18px; line-height:1; cursor:pointer; padding:0 2px; }
.toast-x:hover { color:#fff; }
@media (max-width:640px) { .toasts { right:12px; left:12px; bottom:12px; width:auto; } }
.notfound { max-width:560px; margin:48px auto; padding:36px; } .notfound .search { margin:20px 0; }

/* 즐겨찾기 */
button.star { border:0; background:none; padding:0 4px 0 0; font-size:16px; line-height:1; color:#c8d2e2; cursor:pointer; vertical-align:-1px; transition:transform .12s, color .12s; }
button.star:hover { color:#f5b301; transform:scale(1.15); }
button.star.on { color:#f5b301; }
.btn.fav-btn { background:#fff; color:var(--fg); box-shadow:inset 0 0 0 1px var(--line); }
.btn.fav-btn span { color:#c8d2e2; }
.btn.fav-btn.on { background:#fffaeb; box-shadow:inset 0 0 0 1px #fde68a; color:#92400e; }
.btn.fav-btn.on span { color:#f5b301; }

/* 통계·FAQ (AEO) */
.doc.wide { max-width:none; }
.answer { background:#fff; border:1px solid var(--line); border-left:4px solid var(--accent); border-radius:0 12px 12px 0; padding:16px 20px; color:var(--fg) !important; max-width:none !important; }
.mbars { display:flex; align-items:flex-end; gap:6px; height:180px; margin:10px 0 18px; }
.mbar { flex:1; display:flex; flex-direction:column; align-items:center; height:100%; justify-content:flex-end; }
.mbar i { width:100%; max-width:46px; background:linear-gradient(180deg, #4f8cff, var(--accent)); border-radius:6px 6px 0 0; position:relative; min-height:2px; }
.mbar i b { position:absolute; bottom:100%; left:50%; transform:translateX(-50%); font-size:11px; color:var(--navy); padding-bottom:2px; }
.mbar span { font-size:11px; color:var(--muted); margin-top:4px; }
.faq details { background:#fff; border:1px solid var(--line); border-radius:12px; padding:0 18px; margin:8px 0; }
.faq summary { cursor:pointer; padding:14px 0; font-weight:700; color:var(--navy); list-style:none; }
.faq summary::-webkit-details-marker { display:none; }
.faq summary::before { content:"Q"; display:inline-grid; place-items:center; width:22px; height:22px; margin-right:10px; border-radius:6px; background:var(--accent-soft); color:var(--accent); font-size:12px; }
.faq details p { margin:0 0 14px 32px; color:var(--fg); }
.summary-line { font-size:15px; background:#f6f9ff; border:1px solid #dbe6fb; border-radius:10px; padding:12px 16px; margin:14px 0 0; }
.cite { font-size:12.5px; margin-top:24px; }

/* 사용자 메뉴 */
.usermenu { position:relative; }
.usermenu summary { list-style:none; cursor:pointer; }
.usermenu summary::-webkit-details-marker { display:none; }
.avatar { display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:var(--accent-soft); color:var(--accent); font-weight:800; font-size:14px; }
.avatar.big { width:64px; height:64px; font-size:26px; flex:none; }
.usermenu[open] .avatar { box-shadow:0 0 0 3px rgba(29,95,214,.2); }
.usermenu-panel { position:absolute; right:0; top:46px; width:240px; background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 16px 40px rgba(11,42,91,.16); padding:6px; z-index:50; display:flex; flex-direction:column; }
.um-head { padding:10px 12px 12px; border-bottom:1px solid var(--line); margin-bottom:4px; display:flex; flex-direction:column; }
.um-head b { font-size:14px; overflow:hidden; text-overflow:ellipsis; }
.um-head span { font-size:12px; color:var(--muted); }
.usermenu-panel a, .usermenu-panel .link { display:block; text-align:left; padding:9px 12px; border-radius:8px; color:var(--fg) !important; font-size:14px; }
.usermenu-panel a:hover, .usermenu-panel .link:hover { background:#f3f6fb; text-decoration:none; }
.usermenu-panel .um-logout { color:var(--muted) !important; border-top:1px solid var(--line); border-radius:0 0 8px 8px; margin-top:4px; }
.top nav .usermenu-panel a { font-weight:500; }

/* 마이페이지 */
.account .profile { display:flex; align-items:center; gap:18px; }
.account .profile h1 { font-size:21px; margin:0; }
.account .profile p { margin:2px 0 0; }
.plan-box { margin-left:auto; display:flex; flex-direction:column; align-items:flex-end; gap:3px; }
.plan-box b { color:var(--navy); }
.plan-box small { font-size:13px; }
.stat-tiles { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; }
.stat-tiles a { background:#fff; border:1px solid var(--line); border-radius:12px; padding:16px 18px; color:var(--fg); box-shadow:var(--shadow); }
.stat-tiles a:hover { border-color:#c3d4f3; text-decoration:none; }
.stat-tiles b { display:block; font-size:26px; color:var(--navy); }
.stat-tiles span { font-size:13px; color:var(--muted); }
form.stack { display:flex; flex-direction:column; gap:10px; max-width:420px; }
.my-fb li { padding:6px 0; border-bottom:1px dashed var(--line); font-size:14px; }
.stars-static { color:#f5b301; letter-spacing:1px; } .stars-static i { color:#dbe3ef; font-style:normal; }
.foot-fb { display:block; padding:2px 0; font-size:inherit; color:var(--muted); text-align:left; }

/* 별점·피드백 카드 */
.fb-card { position:fixed; left:20px; bottom:20px; width:min(360px, calc(100vw - 24px)); background:#fff; border:1px solid var(--line); border-radius:16px; box-shadow:0 18px 48px rgba(11,42,91,.2); padding:20px 20px 18px; z-index:110; display:flex; flex-direction:column; gap:6px; transform:translateY(14px); opacity:0; transition:transform .25s, opacity .25s; }
.fb-card.show { transform:none; opacity:1; }
.fb-card .toast-x { position:absolute; top:12px; right:12px; color:#66758c; }
.fb-title { font-size:16px; color:var(--navy); padding-right:20px; }
.fb-sub { margin:0; font-size:13.5px; color:var(--muted); min-height:20px; }
.fb-stars { display:flex; gap:4px; margin:4px 0; }
.fb-star { border:0; background:none; font-size:32px; line-height:1; color:#dbe3ef; cursor:pointer; padding:0 2px; transition:transform .1s, color .1s; }
.fb-star.on { color:#f5b301; }
.fb-star:hover { transform:scale(1.12); }
.fb-card textarea { width:100%; border:1px solid var(--line); border-radius:10px; padding:10px 12px; font:inherit; font-size:14px; resize:vertical; }
.fb-card textarea:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(29,95,214,.15); }
.fb-card .btn { align-self:flex-end; }
@media (max-width:640px) {
  .fb-card { left:12px; right:12px; bottom:12px; width:auto; }
  .stat-tiles { grid-template-columns:1fr 1fr; }
  .account .profile { flex-wrap:wrap; }
  .plan-box { margin-left:0; align-items:flex-start; }
}

.fb-summary { display:flex; gap:24px; align-items:center; }
.fb-score { display:flex; flex-direction:column; align-items:center; min-width:110px; }
.fb-score b { font-size:44px; color:var(--navy); line-height:1; }
.fb-dist { flex:1; }
.fb-dist .hbar { grid-template-columns:36px 1fr 40px; }
.fb-dist .hbar i { background:#f5b301; }
.fb-feed { max-height:320px; overflow-y:auto; }
.fb-item { padding:8px 0; border-bottom:1px dashed var(--line); }
.fb-item p { margin:2px 0; font-size:14px; }
.admin-top { background:var(--navy); border-bottom:0; }
.admin-top .logo, .admin-top nav a { color:#fff; }
.admin-top nav a:hover { color:#cfe0ff; }
.admin-top .logo em { font-style:normal; font-size:12px; font-weight:700; background:#1d5fd6; color:#fff; padding:2px 7px; border-radius:6px; margin-left:4px; vertical-align:2px; }
.admin-who { color:#9fb6dc !important; font-size:13px; }
.foot .foot-fb { color:var(--muted) !important; }
.tag.plan { background:#f3e8ff; color:#7e22ce; }
.noti-kind.k-plan { background:#f3e8ff; color:#7e22ce; }
.noti-kind.k-watch { background:#fef3c7; color:#92400e; }
.noti-kind.k-mine { background:#dcfce7; color:#166534; }
.flow { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:6px 0 18px; font-size:14px; }
.flow span { padding:5px 12px; border-radius:20px; background:#fff; border:1px solid var(--line); color:var(--muted); }
.flow span.on { background:var(--navy); color:#fff; border-color:var(--navy); font-weight:700; }
.flow i { color:#a9b6ca; font-style:normal; }

.btn.watch-btn { background:#fff; color:var(--navy); box-shadow:inset 0 0 0 1px var(--line); flex:none; }
.btn.watch-btn.on { background:#fffaeb; color:#92400e; box-shadow:inset 0 0 0 1px #fde68a; }
.watch-chip { background:#fffaeb !important; color:#92400e !important; }

.rfp-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.rfp-grid div { background:#fff; padding:12px 14px; display:flex; flex-direction:column; gap:2px; }
.rfp-grid span { font-size:12.5px; color:var(--muted); }
.rfp-grid b { color:var(--navy); font-size:15px; }
.rfp-grid small { font-size:12px; color:var(--muted); }
.rfp-row { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:12px 0 0; }
.rfp-row > span:first-child { font-size:13px; color:var(--muted); margin-right:4px; min-width:90px; }
@media (max-width:640px) { .rfp-grid { grid-template-columns:1fr 1fr; } }

.hint { font-size:13.5px; background:#f6f9ff; border-radius:8px; padding:8px 12px; margin:8px 0 0; color:var(--navy); }
table.history td, table.history th { padding:7px 8px; }
.noti-kind.k-change { background:#ffedd5; color:#c2410c; }
.toast.k-change .toast-dot { background:#fb923c; }

/* 온보딩·미리보기 */
.welcome { max-width:820px; margin:0 auto; }
.welcome h1 { font-size:28px; }
.welcome .card h2 { font-size:16px; margin:18px 0 10px; }
.welcome .card h2:first-child { margin-top:2px; }
.pick { display:flex; flex-wrap:wrap; gap:8px; }
label.pill { display:inline-flex; flex-direction:row; cursor:pointer; }
label.pill input { position:absolute; opacity:0; pointer-events:none; }
label.pill span { padding:8px 16px; border-radius:22px; border:1.5px solid var(--line); background:#fff; font-size:14.5px; font-weight:600; color:var(--fg); transition:all .12s; }
label.pill span:hover { border-color:#b9cdf0; }
label.pill input:checked + span { background:var(--accent); border-color:var(--accent); color:#fff; }
label.pill input:focus-visible + span { box-shadow:0 0 0 3px rgba(29,95,214,.25); }
.preview-card { background:#f6f9ff; border-color:#dbe6fb; }
.preview-head { display:flex; gap:8px; align-items:baseline; flex-wrap:wrap; color:var(--navy); }
.preview-inline { grid-column:1 / -1; font-size:14px; color:var(--navy); }
.welcome-actions { display:flex; justify-content:space-between; align-items:center; margin:8px 0 24px; }
label.pill { position:relative; }
label.pill input { width:1px; height:1px; left:0; top:0; }
@media (max-width:640px) { .welcome h1 { font-size:23px; } .welcome-actions { flex-direction:column-reverse; gap:12px; align-items:stretch; } .welcome-actions .btn { text-align:center; } }

.subnav { display:none; }
@media (max-width:640px) {
  .subnav { display:flex; gap:4px; overflow-x:auto; padding:6px 10px; background:#fff; border-bottom:1px solid var(--line); position:sticky; top:57px; z-index:9; scrollbar-width:none; }
  .subnav::-webkit-scrollbar { display:none; }
  .subnav a { flex:none; padding:6px 12px; border-radius:16px; font-size:14px; color:#33415c; font-weight:600; }
  .subnav a.on { background:var(--accent-soft); color:var(--accent); }
}
table.health { margin-top:16px; font-size:13px; }

.checkout h1 small { font-size:15px; font-weight:500; }
.checklist li { padding:5px 0 5px 22px; position:relative; font-size:14.5px; }
.checklist li::before { content:"✓"; position:absolute; left:0; color:var(--ok); font-weight:800; }
.pay-buttons { display:flex; flex-direction:column; gap:8px; }
.pay-buttons .btn { text-align:center; }
.auth .eyebrow { align-self:flex-start; }

.verify-box { display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; justify-content:space-between; background:#fff7ed; border:1px solid #fed7aa; border-radius:10px; padding:12px 14px; margin-bottom:12px; font-size:14px; }
.verify-box form { margin:0; }
form.toggles { display:flex; flex-direction:column; gap:8px; align-items:flex-start; }
form.toggles label.check { display:flex; gap:8px; font-size:14.5px; }
a.badge { text-decoration:none; }

.errors details { border-bottom:1px dashed var(--line); padding:6px 0; font-size:13.5px; }
.errors summary { cursor:pointer; }
.errors pre { white-space:pre-wrap; font-size:12px; background:#f6f8fc; padding:10px; border-radius:8px; max-height:300px; overflow:auto; }

/* 접근성: 본문 속 링크는 색만이 아니라 밑줄로도 구분 */
main p a:not(.btn):not(.chip):not(.badge):not(.title), .steps li a, .docs li a, .cite a, .consent a, footer p a {
  text-decoration:underline; text-underline-offset:2px; text-decoration-thickness:1px;
}
:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }

/* 인쇄: 영업 회의용. 메뉴·버튼·추천 목록은 빼고 핵심 정보만 */
.print-only { display:none; }
@media (max-width:640px) { .no-mobile { display:none; } }
@media print {
  .beta-bar, .top, .subnav, footer, .actions, .toasts, .fb-card, .card.cta, .crumbs, .bell, .usermenu,
  .search, .quick, .tagnav, .pager, .hint + *, form { display:none !important; }
  body { background:#fff; font-size:12px; }
  main { max-width:none; padding:0; }
  .card, .brief, table.bids { box-shadow:none !important; break-inside:avoid; }
  .countdown { border:1px solid #999; }
  a { color:#000; text-decoration:none !important; }
  .print-only { display:block; margin-top:16px; font-size:10px; color:#555; border-top:1px solid #ccc; padding-top:6px; }
  .split { grid-template-columns:1fr 1fr; }
}
@media print { .no-print, button.star { display:none !important; } }
.mini-form { max-width:420px; margin-bottom:10px; }

/* 모바일: 공고 목록(.rows) 외의 표는 열을 숨기지 않고 옆으로 넘겨 본다 */
@media (max-width:640px) {
  table.bids:not(.rows) { display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  table.bids:not(.rows) th, table.bids:not(.rows) td { white-space:nowrap; }
  table.compare td, table.compare th { white-space:normal; min-width:140px; }
}
.mbar.partial i { background:repeating-linear-gradient(135deg, #8fb4ff 0 6px, #b9d0ff 6px 12px); }
.quick .sep { width:1px; background:var(--line); margin:0 4px; }
/* 가입 동의 문구: 링크가 따로 칸을 차지하지 않게 한 문장으로 */
.consent label.check { display:block; padding-left:24px; text-indent:-24px; line-height:1.6; }
.consent label.check input { width:auto; margin:0 8px 0 0; vertical-align:-2px; }
.beta-bar a { white-space:nowrap; }

/* 영업 맞춤 리포트 */
.lead-hero { background:#fff; border:1px solid var(--line); border-radius:16px; padding:32px 36px; box-shadow:var(--shadow); margin-bottom:16px;
  background-image:linear-gradient(rgba(29,95,214,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(29,95,214,.035) 1px, transparent 1px); background-size:24px 24px; }
.lead-hero h1 { font-size:28px; line-height:1.35; color:var(--navy); margin:6px 0 10px; letter-spacing:-.6px; }
.lead-hero .hl { color:#b91c1c; }
.lead-hero .hero-cta { align-items:center; }
@media (max-width:640px) { .lead-hero { padding:22px 18px; } .lead-hero h1 { font-size:22px; } }

/* 칩 입력 + 드롭다운 */
.tag-input { position:relative; display:flex; flex-wrap:wrap; align-items:center; gap:6px; min-height:42px; padding:5px 8px;
  border:1px solid var(--line); border-radius:8px; background:#fff; cursor:text; font-weight:400; }
.tag-input:focus-within { border-color:var(--accent); box-shadow:0 0 0 3px rgba(29,95,214,.15); }
.ti-chips { display:contents; }
.ti-chip { display:inline-flex; align-items:center; gap:4px; background:var(--accent-soft); color:var(--accent); font-size:13.5px;
  font-weight:600; padding:3px 4px 3px 10px; border-radius:16px; animation:chipIn .15s ease-out; }
.ti-chip button { border:0; background:none; color:inherit; cursor:pointer; font-size:15px; line-height:1; padding:0 4px; border-radius:50%; }
.ti-chip button:hover { background:rgba(29,95,214,.15); }
input.ti-text { flex:1; min-width:120px; border:0 !important; box-shadow:none !important; padding:5px 4px; width:auto; }
.ti-list { position:absolute; left:-1px; right:-1px; top:calc(100% + 4px); z-index:40; list-style:none; margin:0; padding:4px;
  background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow:0 12px 32px rgba(11,42,91,.14); max-height:280px; overflow-y:auto;
  animation:dropIn .14s ease-out; }
.ti-opt { display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:7px; cursor:pointer; font-size:14px; }
.ti-opt:hover, .ti-opt.on { background:#f1f5fe; }
.ti-opt b { color:var(--accent); }
.ti-meta { margin-left:auto; font-size:12px; color:var(--muted); }
.ti-meta.mine { color:#7e22ce; font-weight:700; }
.ti-del { border:0; background:none; color:#b91c1c; font-size:12px; cursor:pointer; padding:2px 4px; }
.amount-pick { display:flex; gap:6px; }
.amount-pick select { flex:1; }
.amount-pick input[type=number] { flex:1; }
.grid.narrow { grid-template-columns:repeat(auto-fit, minmax(min(300px, 100%), 1fr)); }
@keyframes chipIn { from { transform:scale(.85); opacity:0; } to { transform:none; opacity:1; } }
@keyframes dropIn { from { transform:translateY(-4px); opacity:0; } to { transform:none; opacity:1; } }

/* 진행 일정 타임라인 애니메이션: 원이 켜지고 → 다음 원까지 선이 이어지고 → 다음 원이 켜지는 순서로 (단계당 0.35초) */
.timeline li:nth-child(1) { --d:0.00s; }
.timeline li:nth-child(2) { --d:0.35s; }
.timeline li:nth-child(3) { --d:0.70s; }
.timeline li:nth-child(4) { --d:1.05s; }
.timeline li:nth-child(5) { --d:1.40s; }
.timeline li:nth-child(6) { --d:1.75s; }
.timeline li:nth-child(7) { --d:2.10s; }
.timeline li:nth-child(8) { --d:2.45s; }
.timeline li { opacity:0; animation:tlIn .3s ease-out var(--d, 0s) forwards; }
.timeline li.done::before { animation:tlDot .2s ease-out var(--d, 0s) both; }
.timeline li.done:not(:last-child)::after { background-size:100% 0; animation:tlLine .3s linear calc(var(--d, 0s) + .1s) forwards; }
.timeline li.now::before { animation:tlPulse 1.8s ease-in-out calc(var(--d, 0s) + .2s) infinite; }
@keyframes tlIn { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
@keyframes tlDot { from { background:#fff; border-color:#c3d0e4; transform:scale(.7); } to { background:var(--accent); border-color:var(--accent); transform:none; } }
@keyframes tlLine { to { background-size:100% 100%; } }
@keyframes tlPulse { 0%, 100% { box-shadow:0 0 0 3px rgba(220,38,38,.18); } 50% { box-shadow:0 0 0 8px rgba(220,38,38,0); } }

/* 카드·목록 등장 (첫 화면에만 가볍게) */
.brief, .card, .kpi { animation:fadeUp .35s ease-out both; }
@keyframes fadeUp { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
.countdown.hot b { animation:hotBeat 2.4s ease-in-out infinite; }
@keyframes hotBeat { 0%, 100% { transform:none; } 50% { transform:scale(1.06); } }

/* 움직임 줄이기 설정을 켠 사용자에게는 애니메이션을 끈다 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation:none !important; transition:none !important; }
  .timeline li { opacity:1; }
  .timeline li.done:not(:last-child)::after { background-size:100% 100%; }
}
@media print { .timeline li, .timeline li::before, .timeline li::after { opacity:1; animation:none !important; } .timeline li.done:not(:last-child)::after { background-size:100% 100%; } }
.listbar { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:8px; margin:12px 0 10px; }
.listbar .quick { margin:0; }
.sorts { display:flex; gap:2px; background:#eef2f8; border-radius:8px; padding:3px; }
.sort { padding:5px 11px; border-radius:6px; font-size:13px; color:var(--muted); font-weight:600; }
.sort:hover { color:var(--navy); text-decoration:none; }
.sort.on { background:#fff; color:var(--navy); box-shadow:0 1px 2px rgba(15,31,61,.12); }

/* PRO 미리보기 (흐릿한 예시 위에 안내) */
.tease { position:relative; border-radius:10px; overflow:hidden; min-height:150px; }
.tease-blur { filter:blur(5px); opacity:.55; user-select:none; pointer-events:none; padding:6px 2px; }
.tease-over { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
  text-align:center; padding:12px; background:linear-gradient(180deg, rgba(255,255,255,.35), rgba(255,255,255,.85)); }
.tease-over b { color:var(--navy); font-size:15.5px; }
.tease-over .muted { font-size:13px; }
.tease-over .btn { margin-top:4px; }
.tease-over small { font-size:12px; }

/* 묶음 알림 */
.noti-group { border-bottom:1px solid var(--line); }
.noti-group > summary { list-style:none; cursor:pointer; border-bottom:0; }
.noti-group > summary::-webkit-details-marker { display:none; }
.noti-group.unread > summary { background:#f3f7ff; }
.noti-group[open] > summary time { color:var(--accent); }
.noti-items { list-style:none; margin:0; padding:0 0 8px 0; counter-reset:n; }
.noti-items li a { display:flex; flex-direction:column; gap:1px; padding:9px 16px 9px 44px; color:var(--fg); position:relative; }
.noti-items li a::before { counter-increment:n; content:counter(n); position:absolute; left:18px; top:10px; font-size:11px; font-weight:800;
  color:var(--muted); background:#eef2f8; border-radius:5px; padding:0 5px; }
.noti-items li a:hover { background:#f6f9ff; text-decoration:none; }
.noti-items b { font-size:14px; }
.noti-items .muted { font-size:12.5px; }

.views { display:inline-block; margin-left:6px; font-size:11.5px; color:var(--muted); font-weight:600; white-space:nowrap; }
.views.fav { color:#b45309; }
.seen { display:inline-block; margin:8px 0 0; font-size:13.5px; color:var(--muted); background:#fff; border:1px solid var(--line);
  border-radius:20px; padding:4px 12px; animation:fadeUp .4s ease-out both; }
.seen b { color:var(--navy); }

/* hidden 속성은 버튼·입력칸의 display 규칙보다 항상 우선 */
[hidden] { display:none !important; }
.fb-card .btn[disabled] { opacity:.45; cursor:not-allowed; }

.btn.like-btn { background:#fff; color:var(--fg); box-shadow:inset 0 0 0 1px var(--line); }
.btn.like-btn.on { background:#eef4ff; color:var(--accent); box-shadow:inset 0 0 0 1px #c3d4f3; }
.btn.like-btn.pop { animation:likePop .35s ease-out; }
@keyframes likePop { 40% { transform:scale(1.12); } 100% { transform:none; } }
.views.like { color:var(--accent); }

/* 번호 페이지 */
.pager { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:4px; margin:20px 0; }
.pager a, .pager .cur, .pager .gap { min-width:34px; height:34px; display:inline-grid; place-items:center; padding:0 8px; border-radius:8px; font-size:14px; }
.pager a { color:var(--fg); background:#fff; border:1px solid var(--line); }
.pager a:hover { border-color:var(--accent); color:var(--accent); text-decoration:none; }
.pager .cur { background:var(--accent); color:#fff; font-weight:700; }
.pager .gap { color:var(--muted); min-width:20px; padding:0; }
.pager .jump { display:inline-flex; align-items:center; gap:4px; margin-left:10px; font-size:13px; color:var(--muted); }
.pager .jump input { width:64px; height:34px; padding:4px 8px; }
.pager .jump button { height:34px; border:1px solid var(--line); background:#fff; border-radius:8px; padding:0 10px; cursor:pointer; }
@media (max-width:640px) { .pager .jump { margin:6px 0 0; width:100%; justify-content:center; } }

/* 목록: 게시일, 새 공고 */
.bids small.posted { display:block; font-size:12px; color:var(--muted); margin-top:2px; }
.bids small.posted.fresh { color:#13794a; font-weight:600; } /* 하루 안에 올라온 공고 */

/* 관리자 2단계 인증: QR 왼쪽, 입력 오른쪽 (한 화면에 다 보이게) */
.mfa { max-width:400px; }
.mfa.mfa-setup { max-width:620px; display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:center; }
.mfa h1 { font-size:21px; margin:0 0 6px; }
.mfa .muted { font-size:13.5px; margin:0 0 12px; }
.mfa-body { display:flex; flex-direction:column; gap:10px; }
.mfa-body p { margin:0; }
.mfa-qr svg { display:block; width:200px; height:200px; border:1px solid var(--line); border-radius:10px; background:#fff; }
.mfa-manual { font-size:13px; color:var(--muted); }
.mfa-manual summary { cursor:pointer; }
.mfa-key { display:inline-block; margin-top:6px; font-size:13px; letter-spacing:.04em; background:#f3f6fb; padding:4px 8px; border-radius:6px; user-select:all; }
.mfa input[name=code] { font-size:22px; letter-spacing:.3em; text-align:center; padding:10px; }
@media (max-width:640px) { .mfa.mfa-setup { grid-template-columns:1fr; justify-items:center; } .mfa-qr svg { width:180px; height:180px; } }

/* 관리자 그로스 */
.funnel { display:flex; flex-direction:column; gap:8px; }
.funnel-row { display:grid; grid-template-columns:190px 1fr 60px 130px; gap:12px; align-items:center; font-size:14px; }
.funnel-bar { background:#eef2f8; border-radius:6px; height:22px; overflow:hidden; }
.funnel-bar i { display:block; height:100%; background:linear-gradient(90deg, #2f74ee, #5b94f5); border-radius:6px; }
.funnel-row b { text-align:right; }
.cohort .cell { background:rgba(47, 116, 238, calc(var(--a, 0) * .55)); }
@media (max-width:640px) { .funnel-row { grid-template-columns:110px 1fr 44px; } .funnel-row .muted { display:none; } .kpis { grid-template-columns:1fr 1fr; } }

/* 알림 설정: 관심 업체 */
.watch-chip { display:inline-flex; align-items:center; gap:4px; }
.watch-chip .chip-x { border:0; background:none; cursor:pointer; color:var(--muted); font-size:15px; line-height:1; padding:0 2px; }
.watch-chip .chip-x:hover { color:#b91c1c; }
.watch-add { position:relative; margin-top:12px; max-width:520px; }
.watch-add input { width:100%; }
.watch-results { display:flex; flex-direction:column; margin-top:4px; border-radius:10px; overflow:hidden; }
.watch-results:not(:empty) { border:1px solid var(--line); box-shadow:var(--shadow); }
.watch-results button { display:flex; justify-content:space-between; gap:10px; align-items:center; text-align:left; border:0; background:var(--card);
  padding:9px 12px; cursor:pointer; font-size:14px; }
.watch-results button + button { border-top:1px solid var(--line); }
.watch-results button:hover:not(:disabled) { background:#f3f7ff; }
.watch-results button span { color:var(--muted); font-size:12.5px; margin-left:auto; }
.watch-results button em { font-style:normal; color:var(--ok); font-size:12px; }
.watch-results .muted { padding:9px 12px; margin:0; font-size:13px; }

/* 브라우저 알림 스위치 */
.push { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.switch { position:relative; display:inline-block; width:42px; height:24px; flex:none; }
.switch input { opacity:0; width:0; height:0; position:absolute; }
.switch i { position:absolute; inset:0; border-radius:999px; background:#cfd8e6; transition:.2s; cursor:pointer; }
.switch i::after { content:""; position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.2); transition:.2s; }
.switch input:checked + i { background:var(--accent); }
.switch input:checked + i::after { transform:translateX(18px); }
.switch input:disabled + i { opacity:.5; cursor:not-allowed; }
.push-state { font-size:14px; font-weight:600; }
.push-state.ok { color:var(--ok); } .push-state.warn { color:#b45309; } .push-state.bad { color:#b91c1c; }
.push-help { font-size:13px; margin:6px 0 0; background:#fff7ed; border-radius:8px; padding:8px 10px; }

.reset-box { border-color:#f5d48a; background:#fffbeb; margin:12px 0; } .reset-box .copy { width:100%; margin-top:8px; }

.alert-actions { display:flex; gap:12px; align-items:center; flex:none; }
.alert-actions form { margin:0; }
.alert-row.editing { background:#f3f7ff; border-radius:8px; outline:2px solid #bcd2fb; }
.edit-title { margin:16px 0 4px; font-size:15px; display:flex; gap:12px; align-items:center; }

/* 구글·카카오 로그인 버튼 (각 회사 브랜드 가이드 색) */
.social-login{display:grid;gap:8px;margin:2px 0 4px}
.btn.social{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:700;border:1px solid transparent}
.btn.social .ico{width:20px;height:20px;flex:none}
.btn.social.google{background:#fff;color:#1f1f1f;border-color:#dadce0}
.btn.social.google:hover{background:#f8f9fa}
.btn.social.kakao{background:#FEE500;color:#191919}
.btn.social.kakao:hover{background:#f3d900}
.social-login .divider{display:flex;align-items:center;gap:10px;color:#8392a8;font-size:13px;margin:6px 0 2px}
.social-login .divider::before,.social-login .divider::after{content:"";flex:1;height:1px;background:#e3e8f0}

/* 마지막에 쓴 로그인 방식 표시 */
.btn .recent{position:absolute;top:-9px;right:10px;font-style:normal;font-size:11px;font-weight:700;line-height:1;
  padding:4px 7px;border-radius:999px;background:#0b2a5b;color:#fff;box-shadow:0 1px 3px rgba(11,42,91,.25)}
.btn.email-submit{position:relative}
