/* 도구모음 v2 — TinyWow식 배치 (상단 메뉴 + 큰 검색 + 분류 카드 + 도구 그리드)
   색: 로고의 회색 판 · 검정 테두리 · 노랑/주황/갈색 띠 */
:root {
  --bg: #f5f6f8; --surface: #ffffff; --surface-2: #f0f2f5; --ink: #14161b; --muted: #5d6470; --line: #e3e6eb;
  --brand: #ff5a0a; --brand-ink: #ffffff; --brand-soft: #fff0e8; --yellow: #ffe600; --brown: #3a302c;
  --img: #7c5cff; --doc: #ef4444; --vid: #ec4899; --aud: #3b82f6; --des: #10b981; --txt: #0ea5e9; --form: #f59f00; --fun: #14b8a6;
  --shadow-sm: 0 1px 2px rgba(16, 20, 28, .06), 0 1px 3px rgba(16, 20, 28, .06);
  --shadow: 0 2px 4px rgba(16, 20, 28, .04), 0 10px 24px -8px rgba(16, 20, 28, .16);
  --r: 14px; --r-sm: 10px;
  --f: "Pretendard Variable", Pretendard, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;
  --wrap: 1200px; --gut: clamp(16px, 4vw, 32px);
  /* 예전 공용 스타일(site.css) 변수도 새 색으로 */
  --accent: var(--brand); --accent-ink: #ffffff; --f-body: var(--f); --f-display: var(--f); --gutter: var(--gut);
  color-scheme: light;
}
:root[data-theme="dark"] {
  --bg: #0e1014; --surface: #171a20; --surface-2: #1f232b; --ink: #eceef2; --muted: #98a1ad; --line: #2a2f38;
  --brand: #ff6a22; --brand-soft: #2c1a10; --brown: #1a1512;
  --img: #9b84ff; --doc: #f87171; --vid: #f472b6; --aud: #60a5fa; --des: #34d399; --txt: #38bdf8; --form: #fbbf24; --fun: #2dd4bf;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .4); --shadow: 0 10px 28px -10px rgba(0, 0, 0, .7);
  color-scheme: dark;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--bg); color: var(--ink); font: 16px/1.6 var(--f); -webkit-font-smoothing: antialiased; word-break: keep-all; overflow-wrap: anywhere; }
a { color: inherit; }
button { font: inherit; color: inherit; }
.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gut); }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---------- 상단 ---------- */
.hdr { position: sticky; top: 0; z-index: 40; background: color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid var(--line); }
.hdr .wrap { display: flex; align-items: center; gap: 8px; height: 64px; }
.logo img, .ic svg, .vfbrand img { display: block; }
.logo { display: flex; align-items: center; gap: 10px; text-decoration: none; margin-right: 10px; flex: none; }
.logo img { height: 34px; width: auto; }
.logo span { font-weight: 800; font-size: 15px; letter-spacing: 0; }
.nav { display: flex; gap: 2px; align-items: center; }
.nav > .ni { position: relative; }
.nav > .ni > button { display: flex; align-items: center; gap: 4px; background: none; border: 0; padding: 8px 11px; border-radius: 8px; font-size: 14.5px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.nav > .ni > button::after { content: ""; width: 6px; height: 6px; border: solid currentColor; border-width: 0 1.6px 1.6px 0; transform: rotate(45deg) translate(-2px, -1px); opacity: .55; }
.nav > .ni > button:hover, .nav > .ni.open > button { background: var(--surface-2); }
.mega { position: absolute; top: calc(100% + 8px); left: -8px; width: min(560px, 92vw); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 14px; display: none; }
.ni.open .mega { display: block; }
.mega .mh { display: flex; align-items: center; gap: 10px; padding: 2px 6px 12px; border-bottom: 1px solid var(--line); margin-bottom: 8px; }
.mega .mh b { font-size: 15px; } .mega .mh span { font-size: 13px; color: var(--muted); }
.mega ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }
.mega li a { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: 8px; text-decoration: none; font-size: 14px; }
.mega li a:hover { background: var(--surface-2); }
.mega .all { display: block; margin-top: 8px; padding: 9px 8px 2px; border-top: 1px solid var(--line); font-size: 13.5px; font-weight: 600; color: var(--c); text-decoration: none; }
.sp { flex: 1; }
.ib { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface); cursor: pointer; flex: none; }
.ib:hover { background: var(--surface-2); }
.ib svg { width: 19px; height: 19px; }
.ib.lang { width: auto; padding: 0 12px; font-size: 13.5px; font-weight: 700; gap: 6px; display: flex; align-items: center; white-space: nowrap; }
.burger { display: none; }

/* 작은 색 아이콘 */
.ic { display: grid; place-items: center; flex: none; width: 34px; height: 34px; border-radius: 9px; color: var(--c, var(--ink)); background: color-mix(in srgb, var(--c, var(--ink)) 14%, transparent); }
.ic svg { width: 19px; height: 19px; }
.ic.sm { width: 28px; height: 28px; border-radius: 8px; } .ic.sm svg { width: 16px; height: 16px; }
.ic.lg { width: 52px; height: 52px; border-radius: 14px; color: #fff; background: var(--c, var(--ink)); box-shadow: 0 6px 16px -6px var(--c, var(--ink)); } .ic.lg svg { width: 26px; height: 26px; }

/* 휴대폰 메뉴 */
.drawer { position: fixed; inset: 64px 0 0; background: var(--surface); z-index: 39; overflow-y: auto; padding: 8px var(--gut) 40px; display: none; }
.drawer.open { display: block; }
.drawer details { border-bottom: 1px solid var(--line); }
.drawer summary { display: flex; align-items: center; gap: 12px; padding: 14px 2px; font-weight: 700; cursor: pointer; list-style: none; }
.drawer summary::-webkit-details-marker { display: none; }
.drawer summary small { margin-left: auto; color: var(--muted); font-weight: 500; }
.drawer ul { list-style: none; margin: 0 0 12px; padding: 0; }
.drawer li a { display: flex; gap: 10px; align-items: center; padding: 8px 4px; text-decoration: none; font-size: 15px; }
@media (max-width: 1080px) { .nav { display: none; } .burger { display: grid; } }
@media (max-width: 480px) { .logo span { display: none; } .logo img { height: 30px; } .hdr .wrap { gap: 6px; } .ib { width: 38px; height: 38px; } .ib.lang { width: auto; padding: 0 10px; } .ib.lang svg { display: none; } }

/* ---------- 검색 창 ---------- */
.sbox { position: relative; }
.sbox input { width: 100%; height: 60px; border-radius: 16px; border: 1.5px solid var(--line); background: var(--surface); color: var(--ink); font: 17px var(--f); padding: 0 20px 0 54px; box-shadow: var(--shadow); }
.sbox input:focus { outline: 0; border-color: var(--brand); box-shadow: 0 0 0 4px color-mix(in srgb, var(--brand) 18%, transparent), var(--shadow); }
.sbox > svg { position: absolute; left: 19px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; color: var(--muted); pointer-events: none; }
.sres { position: absolute; left: 0; right: 0; top: calc(100% + 8px); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 6px; max-height: 360px; overflow-y: auto; z-index: 30; text-align: left; }
.sres[hidden] { display: none; }
.sres a { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border-radius: 10px; text-decoration: none; }
.sres a b { display: block; font-size: 15px; } .sres a small { display: block; color: var(--muted); font-size: 12.5px; line-height: 1.4; }
.sres a.on, .sres a:hover { background: var(--surface-2); }
.sres p { margin: 0; padding: 14px; color: var(--muted); font-size: 14px; }
.sdlg { position: fixed; inset: 0; z-index: 60; background: rgba(10, 12, 16, .45); display: none; padding: 12vh var(--gut) 0; }
.sdlg.open { display: block; }
.sdlg .sbox { max-width: 640px; margin: 0 auto; }

/* ---------- 첫 화면 ---------- */
.hero { text-align: center; padding: clamp(48px, 9vw, 96px) 0 clamp(36px, 6vw, 56px); position: relative; overflow-x: clip; overflow-y: visible; z-index: 2; } /* 세로는 열어 둬야 검색 목록이 안 잘려요 */
.hero::before { content: ""; position: absolute; inset: -40% -10% auto; height: 120%; background: radial-gradient(closest-side, color-mix(in srgb, var(--yellow) 26%, transparent), transparent 70%); opacity: .7; z-index: -1; pointer-events: none; }
:root[data-theme="dark"] .hero::before { opacity: .18; }
.hero h1 { font-size: min(60px, 7vw); line-height: 1.22; letter-spacing: .01em; margin: 0 auto 20px; font-weight: 900; width: fit-content; max-width: 100%; }
/* 둘째 줄("만드는 무료도구")이 폭을 정하고, 첫 줄은 오른쪽 끝을 맞춰요. 낱말이 길어지면 왼쪽 빈자리로 늘어나요 */
.hero h1 .ln { display: flex; justify-content: flex-end; white-space: nowrap; }
.hero h1 .ln:first-child { width: 0; min-width: 100%; } /* 첫 줄은 폭 계산에서 빼요 */
.hero h1 .rot { display: inline-block; }
.hero h1 .rot.go { animation: up .45s cubic-bezier(.2, .8, .2, 1); }
.hero h1 .ln:first-child { align-items: baseline; }
.hero h1 .rot b { color: var(--brand); font-weight: 900; font-size: 1.4em; line-height: 1; letter-spacing: .015em; }
@media (max-width: 480px) { .hero h1 .rot b { font-size: 1.2em; } html[lang="en"] .hero h1 .rot b { font-size: 1.1em; } }
@keyframes up { from { transform: translateY(40%); opacity: 0; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .hero h1 .rot.go { animation: none; } }
.hero p { color: var(--muted); font-size: clamp(16px, 2vw, 18.5px); max-width: 56ch; margin: 0 auto 30px; }
.hero .sbox { max-width: 680px; margin: 0 auto; }
.vstats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; max-width: 860px; margin: 40px auto 0; }
.vstat { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 16px 12px; box-shadow: var(--shadow-sm); }
.vstat b { display: block; font-size: clamp(24px, 3.4vw, 32px); font-weight: 800; letter-spacing: 0; line-height: 1.1; }
.vstat b em { font-style: normal; color: var(--brand); font-weight: inherit; }
.vstat span { font-size: 13px; color: var(--muted); }
.vstat span strong { color: var(--ink); font-weight: 700; }
@media (max-width: 640px) { .vstats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- 섹션 ---------- */
.vsec { padding: clamp(36px, 6vw, 64px) 0; }
.sh { display: flex; align-items: end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.sh h2 { font-size: clamp(24px, 3.4vw, 32px); letter-spacing: 0; margin: 0; font-weight: 800; }
.sh p { margin: 4px 0 0; color: var(--muted); }

/* 분류 카드 */
.cats { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.cat { position: relative; display: grid; gap: 12px; padding: 20px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); text-decoration: none; box-shadow: var(--shadow-sm); transition: transform .15s, box-shadow .15s, border-color .15s; overflow: hidden; }
.cat::after { content: ""; position: absolute; right: -40px; top: -40px; width: 140px; height: 140px; border-radius: 50%; background: color-mix(in srgb, var(--c) 10%, transparent); }
.cat:hover { transform: translateY(-3px); box-shadow: var(--shadow); border-color: color-mix(in srgb, var(--c) 40%, var(--line)); }
.cat h3 { margin: 0; font-size: 19px; display: flex; align-items: center; gap: 8px; }
.cat h3 small { font-size: 12.5px; font-weight: 700; color: var(--c); background: color-mix(in srgb, var(--c) 12%, transparent); padding: 2px 8px; border-radius: 999px; }
.cat p { margin: 0; color: var(--muted); font-size: 14.5px; }
.cat .ft { font-size: 13.5px; font-weight: 600; color: var(--c); display: flex; align-items: center; gap: 4px; }

/* 탭 */
.vtabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 20px; }
.vtab { border: 1px solid var(--line); background: var(--surface); padding: 8px 15px; border-radius: 999px; font-size: 14px; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; gap: 7px; }
.vtab i { width: 8px; height: 8px; border-radius: 50%; background: var(--c); }
.vtab[aria-pressed="true"] { background: var(--ink); color: var(--bg); border-color: var(--ink); }

/* 도구 카드 */
.vgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 14px; }
.vtool { display: flex; gap: 14px; align-items: flex-start; padding: 16px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); text-decoration: none; box-shadow: var(--shadow-sm); transition: transform .15s, box-shadow .15s, border-color .15s; min-width: 0; }
.vtool:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: color-mix(in srgb, var(--c) 45%, var(--line)); }
.vtool b { display: block; font-size: 15.5px; line-height: 1.35; margin-bottom: 3px; }
.vtool > div > span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 13.5px; color: var(--muted); line-height: 1.5; }
.vtool > div { min-width: 0; }
.ghead { display: flex; align-items: center; gap: 10px; margin: 28px 0 12px; font-size: 15px; font-weight: 800; }
.ghead:first-child { margin-top: 0; }
.ghead a { margin-left: auto; font-size: 13.5px; font-weight: 600; color: var(--c); text-decoration: none; }

/* 무료 기능 카드 */
.feat { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.fc { display: grid; grid-template-rows: 132px auto; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; text-decoration: none; box-shadow: var(--shadow-sm); transition: transform .15s, box-shadow .15s; }
.fc:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.fc .art { display: grid; place-items: center; background: linear-gradient(135deg, color-mix(in srgb, var(--c) 85%, #fff), var(--c)); color: #fff; position: relative; overflow: hidden; }
.fc .art::before, .fc .art::after { content: ""; position: absolute; border-radius: 50%; background: rgba(255,255,255,.14); }
.fc .art::before { width: 180px; height: 180px; left: -50px; bottom: -90px; } .fc .art::after { width: 120px; height: 120px; right: -30px; top: -50px; }
.fc .art svg { width: 54px; height: 54px; position: relative; z-index: 1; filter: drop-shadow(0 4px 10px rgba(0,0,0,.2)); }
.fc .body { padding: 18px 20px 20px; display: grid; gap: 6px; }
.fc h3 { margin: 0; font-size: 18px; } .fc p { margin: 0; color: var(--muted); font-size: 14.5px; }
.fc .go { margin-top: 6px; font-weight: 700; font-size: 14px; color: var(--c); }

/* 개인정보 띠 */
.priv { background: var(--brown); color: #f3efe9; border-radius: 22px; padding: clamp(28px, 5vw, 48px); display: grid; grid-template-columns: 1.2fr 1fr; gap: 28px; align-items: center; position: relative; overflow: hidden; }
.priv::after { content: ""; position: absolute; right: -60px; bottom: -60px; width: 260px; height: 160px; background: linear-gradient(115deg, transparent 0 30%, var(--yellow) 30% 46%, #ff5a0a 46% 62%, #2a2320 62%); transform: rotate(-8deg); border-radius: 30px; opacity: .9; }
.priv h2 { margin: 0 0 12px; font-size: clamp(24px, 3.4vw, 34px); letter-spacing: 0; }
.priv p { margin: 0; color: #d5cec6; }
.priv ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; position: relative; z-index: 1; }
.priv li { display: flex; align-items: center; gap: 12px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.1); padding: 14px 16px; border-radius: 12px; font-weight: 600; }
.priv li svg { width: 22px; height: 22px; color: var(--yellow); flex: none; }
@media (max-width: 760px) { .priv { grid-template-columns: 1fr; } }

/* 광고 자리 — 비어 있을 땐 흐린 점선 칸 + 광고 문의 버튼 */
.ad-slot.is-empty { margin: 24px 0; }
.ad-ph { display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; min-height: 96px; padding: 16px; border: 1.5px dashed color-mix(in srgb, var(--muted) 38%, var(--line)); border-radius: var(--r-sm); background: color-mix(in srgb, var(--surface) 55%, transparent); color: color-mix(in srgb, var(--muted) 75%, transparent); font-size: 12px; letter-spacing: .06em; }
.ad-ask { display: inline-flex; align-items: center; height: 28px; padding: 0 12px; border: 1px solid color-mix(in srgb, var(--muted) 40%, var(--line)); border-radius: 999px; color: var(--muted); background: var(--surface); font-size: 12px; font-weight: 600; letter-spacing: 0; text-decoration: none; background: transparent; transition: color .15s, border-color .15s; }
.ad-ask:hover, .ad-ask:focus-visible { color: var(--brand); border-color: var(--brand); }
.ad { display: grid; place-items: center; min-height: 100px; border: 1px dashed var(--line); border-radius: var(--r-sm); color: var(--muted); font-size: 12px; letter-spacing: .1em; margin: 24px 0; }

/* ---------- 바닥 ---------- */
.vfoot { background: #15120f; color: #c9c2ba; margin-top: 40px; padding: 56px 0 28px; }
:root[data-theme="dark"] .vfoot { background: #0a0908; border-top: 1px solid var(--line); }
.vfoot a { text-decoration: none; color: #c9c2ba; } .vfoot a:hover { color: #fff; }
.vfgrid { display: grid; grid-template-columns: 1.6fr repeat(4, 1fr); gap: 28px; }
.vfgrid h4 { color: #fff; font-size: 14px; margin: 0 0 12px; }
.vfgrid ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; font-size: 14px; }
.vfbrand img { height: 38px; width: auto; margin-bottom: 14px; }
.vfbrand p { margin: 0; font-size: 14px; max-width: 34ch; }
.vfbot { display: flex; gap: 12px; align-items: center; justify-content: space-between; flex-wrap: wrap; border-top: 1px solid #2c2622; margin-top: 40px; padding-top: 20px; font-size: 13px; }
.vfbot .stripe { display: flex; gap: 4px; } .vfbot .stripe i { width: 18px; height: 6px; border-radius: 3px; }
@media (max-width: 900px) { .vfgrid { grid-template-columns: 1fr 1fr; } .vfbrand { grid-column: 1 / -1; } }

/* ---------- 도구 페이지 ---------- */
.vcrumb { display: flex; gap: 6px; align-items: center; font-size: 13.5px; color: var(--muted); padding-top: 22px; flex-wrap: wrap; }
.vcrumb a { text-decoration: none; } .vcrumb a:hover { color: var(--ink); }
.thead { text-align: center; padding: 26px 0 26px; }
.thead .ic { margin: 0 auto 14px; }
.thead h1 { margin: 0 0 10px; font-size: clamp(28px, 4.6vw, 44px); letter-spacing: 0; line-height: 1.2; }
.thead p { margin: 0 auto; color: var(--muted); max-width: 60ch; font-size: 17px; }
.upl { --c: var(--brand); max-width: 820px; margin: 0 auto; background: var(--surface); border-radius: 20px; box-shadow: var(--shadow); padding: 14px; }
.upl .zone { border: 2px dashed color-mix(in srgb, var(--c) 45%, var(--line)); border-radius: 14px; background: color-mix(in srgb, var(--c) 5%, var(--surface)); display: grid; justify-items: center; gap: 12px; padding: clamp(36px, 7vw, 64px) 20px; text-align: center; cursor: pointer; transition: background .15s, border-color .15s; }
.upl .zone:hover, .upl .zone.over { background: color-mix(in srgb, var(--c) 10%, var(--surface)); border-color: var(--c); }
.upl .big { display: inline-flex; align-items: center; gap: 10px; background: var(--c); color: #fff; border: 0; border-radius: 12px; padding: 16px 30px; font-size: 18px; font-weight: 700; cursor: pointer; box-shadow: 0 8px 20px -8px var(--c); }
.upl .big svg { width: 22px; height: 22px; }
.upl .zone span { color: var(--muted); font-size: 14.5px; }
.upl .lock { display: flex; justify-content: center; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); padding: 12px 0 2px; }
.upl .lock svg { width: 15px; height: 15px; color: var(--des); }
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; counter-reset: s; }
.stp { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 22px; box-shadow: var(--shadow-sm); }
.stp::before { counter-increment: s; content: counter(s); display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--brand-soft); color: var(--brand); font-weight: 800; margin-bottom: 12px; }
.stp h3 { margin: 0 0 6px; font-size: 17px; } .stp p { margin: 0; color: var(--muted); font-size: 14.5px; }
@media (max-width: 760px) { .steps { grid-template-columns: 1fr; } }
.faq { max-width: 820px; margin: 0 auto; display: grid; gap: 10px; }
.faq details { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 0 18px; }
.faq summary { padding: 16px 0; font-weight: 700; cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 12px; }
.faq summary::after { content: "+"; font-size: 20px; line-height: 1; color: var(--muted); }
.faq details[open] summary::after { content: "−"; }
.faq summary::-webkit-details-marker { display: none; }
.faq details p { margin: 0 0 16px; color: var(--muted); }

/* ---------- 기존 도구 페이지를 새 틀에 맞추기 ---------- */
body[data-tool] main.wrap { max-width: var(--wrap); }
body[data-tool] .tool-head { flex-direction: column; align-items: center; text-align: center; padding: 14px 0 26px; gap: 12px; }
body[data-tool] .tool-tag { width: 58px; height: 58px; border-radius: 16px; display: grid; place-items: center; background: var(--cat); color: #fff; box-shadow: 0 8px 20px -8px var(--cat); border: 0; }
body[data-tool] .tool-tag svg { width: 28px; height: 28px; }
body[data-tool] .tool-head h1 { font-family: var(--f); font-weight: 800; letter-spacing: 0; font-size: clamp(28px, 4.4vw, 42px); line-height: 1.2; }
body[data-tool] .tool-head p { margin: 8px auto 0; font-size: 16.5px; max-width: 62ch; }
body[data-tool] .vcrumb { padding-top: 18px; }
body[data-tool] .drop { border: 2px dashed color-mix(in srgb, var(--cat) 45%, var(--line)); background: color-mix(in srgb, var(--cat) 5%, var(--surface)); border-radius: 18px; padding: 48px 20px; gap: 10px; box-shadow: var(--shadow); }
body[data-tool] .drop:hover, body[data-tool] .drop.over { border-color: var(--cat); background: color-mix(in srgb, var(--cat) 10%, var(--surface)); }
body[data-tool] .drop > span:first-child { width: 64px; height: 64px; border-radius: 18px; display: grid; place-items: center; background: var(--cat); color: #fff; margin-bottom: 4px; box-shadow: 0 8px 20px -8px var(--cat); }
body[data-tool] .drop > span:first-child svg { color: #fff; width: 30px; height: 30px; }
body[data-tool] .drop strong { font-size: 19px; }
body[data-tool] .drop.compact { padding: 14px; box-shadow: none; }
body[data-tool] .drop.compact > span:first-child { width: auto; height: auto; background: none; box-shadow: none; margin: 0; }
body[data-tool] .drop.compact > span:first-child svg { color: var(--cat); width: 22px; height: 22px; }
body[data-tool] .panel { border-radius: var(--r); box-shadow: var(--shadow-sm); }
body[data-tool] .btn { border-radius: 10px; }
body[data-tool] .btn-primary { background: var(--brand); color: #fff; font-weight: 700; }
body[data-tool] .btn-primary:hover:not(:disabled) { filter: brightness(1.06); border-color: transparent; }
.tool-more { padding-bottom: 20px; }
.tool-more .vsec { padding: 36px 0 8px; }
@media print { .hdr, .vcrumb, .vfoot, .drawer, .sdlg, .tool-more, .ad-slot { display: none !important; } }

/* 별(즐겨찾기) */
.vtw { position: relative; min-width: 0; }
.vtw > .vtool { height: 100%; padding-right: 44px; }
.star { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; border: 0; background: transparent; color: var(--muted); cursor: pointer; }
.star svg { width: 18px; height: 18px; }
.star:hover { background: var(--surface-2); color: var(--ink); }
.star[aria-pressed="true"] { color: #f5b301; }
.vtw > .star { position: absolute; top: 10px; right: 8px; }
.star.wide { width: auto; display: inline-flex; gap: 6px; padding: 7px 14px; border: 1px solid var(--line); background: var(--surface); font-size: 14px; font-weight: 600; color: var(--ink); border-radius: 999px; margin-top: 4px; }
.star.wide[aria-pressed="true"] { border-color: #f5b301; background: color-mix(in srgb, #f5b301 12%, var(--surface)); }
.star.wide svg { color: #f5b301; }
/* 마지막 숫자 칸: 이 모든 게 무료 */
.vstat.free { background: linear-gradient(135deg, color-mix(in srgb, var(--yellow) 30%, var(--surface)), color-mix(in srgb, var(--brand) 16%, var(--surface))); border-color: color-mix(in srgb, var(--brand) 35%, var(--line)); }
.vstat.free .pre { display: block; font-size: 13px; font-weight: 700; color: var(--ink); margin-bottom: 1px; }
.vstat.free b { color: var(--brand); font-size: clamp(28px, 4vw, 38px); }
.vstat .na { color: var(--muted); font-size: .8em; }
.vstat b .demo { font-style: normal; font-size: 11px; font-weight: 700; color: var(--muted); border: 1px solid var(--line); border-radius: 999px; padding: 1px 6px; margin-left: 6px; vertical-align: middle; letter-spacing: 0; }
