/* 파일수선소 공통 스타일
   Layout: 흰 바탕, 은은한 빛 히어로 → 타일 격자. 도구 화면은 큰 선택 버튼 → 미리보기(왼쪽) + 옵션(오른쪽). */
:root{
  --bg:#ffffff;
  --bg-2:#f5f7fb;
  --surface:#ffffff;
  --ink:#151927;
  --muted:#626a81;
  --line:#e5e8f0;
  --brand:#2b55e6;
  --brand-ink:#ffffff;
  --brand-soft:#ebf0ff;
  --pdf:#e5484d; --pdf-soft:#fdeeee;
  --img:#12a370; --img-soft:#e4f6ee;
  --sub:#7c4dea; --sub-soft:#f0ebff;
  --ok:#0f8a55; --ok-soft:#e4f6ee;
  --warn:#94590a; --warn-soft:#fff4dc;
  --err:#c62a2f;
  --paper:#ffffff;
  --on-c:#ffffff;
  --shadow:0 1px 2px rgba(20,24,40,.04),0 6px 18px rgba(20,24,40,.06);
  --shadow-h:0 2px 4px rgba(20,24,40,.05),0 16px 34px rgba(20,24,40,.11);
  --f:"Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --c:var(--brand);--cs:var(--brand-soft);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0e1119;--bg-2:#141823;--surface:#191e2b;--ink:#eceef5;--muted:#9aa1b6;--line:#283044;
  --brand:#7290ff;--brand-ink:#0e1119;--brand-soft:#1c2443;
  --pdf:#ff6d72;--pdf-soft:#3a1d20;--img:#40d39a;--img-soft:#12332a;--sub:#a98bff;--sub-soft:#271f45;
  --ok:#5fd39b;--ok-soft:#12332a;--warn:#f0b75a;--warn-soft:#3a2a10;--err:#ff8a8f;--paper:#232a3b;--on-c:#0e1119;
  --shadow:0 1px 2px rgba(0,0,0,.3);--shadow-h:0 12px 30px rgba(0,0,0,.5);color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0e1119;--bg-2:#141823;--surface:#191e2b;--ink:#eceef5;--muted:#9aa1b6;--line:#283044;
  --brand:#7290ff;--brand-ink:#0e1119;--brand-soft:#1c2443;
  --pdf:#ff6d72;--pdf-soft:#3a1d20;--img:#40d39a;--img-soft:#12332a;--sub:#a98bff;--sub-soft:#271f45;
  --ok:#5fd39b;--ok-soft:#12332a;--warn:#f0b75a;--warn-soft:#3a2a10;--err:#ff8a8f;--paper:#232a3b;--on-c:#0e1119;
  --shadow:0 1px 2px rgba(0,0,0,.3);--shadow-h:0 12px 30px rgba(0,0,0,.5);color-scheme:dark}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f);font-size:16px;line-height:1.6;word-break:keep-all;-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
img{max-width:100%}
.wrap{max-width:1140px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:8px}
svg.i{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.c-pdf{--c:var(--pdf);--cs:var(--pdf-soft)}
.c-img{--c:var(--img);--cs:var(--img-soft)}
.c-sub{--c:var(--sub);--cs:var(--sub-soft)}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sec{padding-block:72px 0}
.sec-head{text-align:center;display:grid;gap:8px;justify-items:center;margin-bottom:34px}
.eyebrow{font-size:13.5px;font-weight:700;color:var(--brand);letter-spacing:.06em}
.sec-head h2{margin:0;font-size:clamp(24px,3.6vw,34px);font-weight:800;letter-spacing:-.035em;line-height:1.3;text-wrap:balance}
.sec-head p{margin:0;color:var(--muted);max-width:34em}
.ad-slot{margin-block:40px 0}
.ad-slot:empty{display:none}

/* ---------- header / 메뉴 ---------- */
header.top{position:sticky;top:0;z-index:25;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top,0px)}
.bar{display:flex;align-items:center;gap:8px;min-height:64px}
.logo{display:flex;align-items:center;gap:9px;text-decoration:none;font-weight:800;font-size:20px;letter-spacing:-.03em;margin-right:18px;white-space:nowrap}
.logo .mark{width:32px;height:32px;border-radius:9px;background:var(--brand);color:var(--brand-ink);display:grid;place-items:center;flex:none}
.logo .mark svg{width:20px;height:20px}
.menu{display:flex;gap:2px}
.dd{position:relative}
.dd>button{display:flex;align-items:center;gap:4px;border:0;background:none;font-weight:700;font-size:15.5px;padding:10px 12px;border-radius:9px}
.dd>button svg{width:16px;height:16px;transition:transform .15s}
.dd>button:hover,.dd.open>button{background:var(--bg-2)}
.dd.open>button svg{transform:rotate(180deg)}
.dd-panel{position:absolute;top:calc(100% + 8px);left:0;width:min(560px,90vw);background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-h);padding:10px;display:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px}
.dd.open .dd-panel{display:grid}
.dd-panel a{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:10px;text-decoration:none;min-width:0}
.dd-panel a:hover,.dd-panel a[aria-current="page"]{background:var(--bg-2)}
.dd-panel .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--cs);color:var(--c);flex:none}
.dd-panel .ic svg{width:20px;height:20px}
.dd-panel b{display:block;font-size:14.5px;line-height:1.35}
.dd-panel small{display:block;color:var(--muted);font-size:12.5px;line-height:1.4}
.bar .right{margin-left:auto;display:flex;align-items:center;gap:8px}
.allbtn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 14px;font-weight:700;font-size:14.5px;text-decoration:none;white-space:nowrap}
.allbtn:hover{border-color:var(--ink)}
.allbtn svg{width:18px;height:18px}
.burger{display:none;border:0;background:none;padding:8px;border-radius:9px}
.burger svg{width:26px;height:26px}
.mpanel{position:fixed;inset:calc(65px + env(safe-area-inset-top,0px)) 0 0;z-index:24;background:var(--bg);overflow:auto;padding-block:8px 40px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.mpanel h3{margin:22px 0 6px;font-size:13.5px;color:var(--muted);font-weight:700;letter-spacing:.04em}
.mpanel a{display:flex;align-items:center;gap:12px;padding:11px 4px;text-decoration:none;font-weight:700;border-bottom:1px solid var(--line)}
.mpanel .ic{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--cs);color:var(--c)}
.mpanel .ic svg{width:19px;height:19px}

/* ---------- 홈 히어로 ---------- */
.herobg{position:relative;overflow:hidden;background:radial-gradient(900px 380px at 50% -40px,var(--brand-soft),transparent 72%)}
.herobg::before{content:"";position:absolute;inset:0;background:radial-gradient(var(--line) 1.2px,transparent 1.3px) 0 0/22px 22px;-webkit-mask-image:radial-gradient(ellipse 70% 80% at 50% 30%,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse 70% 80% at 50% 30%,#000 30%,transparent 75%);pointer-events:none}
.herobg>.wrap{position:relative}
.hero{position:relative;text-align:center;padding-block:64px 30px;display:grid;justify-items:center;gap:14px}
.pill{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;color:var(--ok);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px 13px 5px 10px;box-shadow:var(--shadow)}
.pill svg{width:16px;height:16px;stroke-width:2.4}
.hero h1{margin:6px 0 0;font-weight:800;font-size:clamp(31px,5.2vw,50px);line-height:1.22;letter-spacing:-.045em;text-wrap:balance}
.hero h1 span{color:var(--brand)}
.hero p{margin:0;color:var(--muted);font-size:clamp(16px,2.2vw,19px);max-width:34em}
.search{position:relative;width:100%;max-width:560px;margin-top:12px}
.search input{width:100%;font-size:16.5px;padding:16px 18px 16px 50px;border-radius:14px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-h)}
.search input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft),var(--shadow-h)}
.search svg{position:absolute;left:18px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--muted)}
.hint{font-size:14.5px;color:var(--muted)}
.hint button{border:0;background:none;color:var(--brand);font-weight:700;padding:0;text-decoration:underline;text-underline-offset:3px}
.float{position:absolute;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 14px 10px 10px;box-shadow:var(--shadow-h);font-size:13.5px;text-align:left;animation:bob 6s ease-in-out infinite;pointer-events:none}
.float .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--cs);color:var(--c)}
.float .ic svg{width:20px;height:20px}
.float b{display:block;font-size:13.5px;line-height:1.3}
.float small{display:block;color:var(--muted);font-size:12px;line-height:1.3}
.float small em{font-style:normal;color:var(--ok);font-weight:700}
.f1{left:1%;top:70px;transform:rotate(-4deg)}
.f2{left:4%;top:250px;transform:rotate(3deg);animation-delay:-2s}
.f3{right:1%;top:84px;transform:rotate(4deg);animation-delay:-4s}
.f4{right:5%;top:262px;transform:rotate(-3deg);animation-delay:-1s}
@keyframes bob{50%{translate:0 -10px}}
.tabs{position:relative;display:flex;justify-content:center;gap:8px;flex-wrap:wrap;padding-block:14px 28px;scroll-margin-top:80px}
.tabs button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:8px 18px;font-weight:700;font-size:15px}
.tabs button:hover{border-color:var(--ink)}
.tabs button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}

/* ---------- 도구 타일 ---------- */
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.tile{position:relative;display:grid;gap:10px;align-content:start;text-decoration:none;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px 22px 22px;box-shadow:var(--shadow);transition:box-shadow .18s,transform .18s,border-color .18s;min-width:0}
.tile:hover{box-shadow:var(--shadow-h);transform:translateY(-3px);border-color:transparent}
.tile .ic{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:var(--cs);color:var(--c);margin-bottom:4px;transition:background .18s,color .18s}
.tile:hover .ic{background:var(--c);color:var(--on-c)}
.tile b{font-size:17.5px;font-weight:700;line-height:1.35;letter-spacing:-.02em}
.tile .d{font-size:14.5px;color:var(--muted);line-height:1.5}
.tile.req{border:1.5px dashed var(--line);background:transparent;box-shadow:none;align-content:center}
.tile.req .ic{background:var(--bg-2);color:var(--muted)}
.tile.req:hover{border-color:var(--brand);transform:none}
.tile.req:hover .ic{background:var(--brand);color:var(--brand-ink)}
.empty{text-align:center;color:var(--muted);padding:30px 0}

/* ---------- 홈: 움직이는 예시 ---------- */
.demos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.demo{display:grid;grid-template-rows:auto 1fr;background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow);text-decoration:none;color:inherit;transition:box-shadow .18s,transform .18s}
.demo:hover{box-shadow:var(--shadow-h);transform:translateY(-3px)}
.stage{position:relative;height:230px;background:var(--cs);display:grid;place-items:center;overflow:hidden}
.demo .txt{padding:20px 22px 22px;display:grid;gap:6px;align-content:start}
.demo .txt b{font-size:18px;letter-spacing:-.02em}
.demo .txt p{margin:0;color:var(--muted);font-size:14.5px}
.demo .txt .go{color:var(--c);font-weight:700;font-size:14.5px;margin-top:4px}
.d1 .doc{width:116px;height:150px;background:var(--paper);border-radius:8px;box-shadow:var(--shadow-h);padding:16px 14px;display:grid;align-content:start;gap:7px;transform:scale(var(--s,1));position:relative}
.d1 .doc i{display:block;height:6px;border-radius:3px;background:var(--line)}
.d1 .doc i:nth-of-type(1){width:60%;background:var(--pdf);opacity:.8}
.d1 .doc i:nth-of-type(4){width:80%}.d1 .doc i:nth-of-type(5){width:70%}
.d1 .doc .pic{height:34px;border-radius:5px;background:linear-gradient(135deg,var(--pdf-soft),var(--line))}
.d1 .tagpdf{position:absolute;left:-10px;bottom:14px;background:var(--pdf);color:#fff;font-family:var(--f-mono);font-size:11px;font-weight:600;padding:2px 7px;border-radius:5px}
.d1 .meter{position:absolute;left:50%;bottom:16px;translate:-50% 0;width:200px;background:var(--surface);border-radius:12px;padding:9px 12px;box-shadow:var(--shadow);display:grid;gap:6px}
.d1 .meter .row{display:flex;justify-content:space-between;align-items:baseline;font-size:13px}
.d1 .meter .num{font-weight:600;font-size:15px}
.d1 .meter .pct{color:var(--ok);font-weight:700;opacity:0;transition:opacity .25s}
.d1 .meter.done .pct{opacity:1}
.d1 .mbar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.d1 .mbar i{display:block;height:100%;width:100%;background:var(--pdf);border-radius:3px}
.d1 .stage-inner{display:grid;place-items:center;translate:0 -18px}
.idc{position:relative;width:230px;height:144px;background:var(--paper);border-radius:12px;box-shadow:var(--shadow-h);padding:16px;display:grid;grid-template-columns:62px 1fr;gap:14px;overflow:hidden}
.idc .top{grid-column:1/-1;font-size:11.5px;font-weight:800;color:var(--muted);letter-spacing:.08em;margin-bottom:-6px}
.idc .ph{height:78px;border-radius:7px;background:linear-gradient(180deg,var(--sub-soft) 0 55%,var(--line) 55%);position:relative;overflow:hidden}
.idc .ph::before{content:"";position:absolute;left:50%;top:15px;width:26px;height:26px;border-radius:50%;background:var(--line);translate:-50% 0}
.idc .ph::after{content:"";position:absolute;left:50%;bottom:-14px;width:50px;height:36px;border-radius:50% 50% 0 0;background:var(--muted);opacity:.35;translate:-50% 0}
.idc .info{display:grid;gap:6px;align-content:start;font-size:13px;min-width:0}
.idc .info b{font-size:15px}
.rrn{position:relative;font-size:13px;white-space:nowrap}
.rrn .back{position:relative;display:inline-block}
.rrn .back::after{content:"";position:absolute;left:-2px;top:1px;bottom:1px;width:0;background:var(--ink);border-radius:3px;animation:mask 4.5s ease-in-out infinite}
.idc .ln{height:6px;border-radius:3px;background:var(--line)}
.stamp{position:absolute;right:12px;bottom:12px;border:2.5px solid var(--sub);color:var(--sub);font-weight:800;font-size:13px;padding:3px 9px;border-radius:7px;rotate:-12deg;opacity:0;animation:stamp 4.5s ease-in-out infinite}
@keyframes mask{0%,15%{width:0}38%,92%{width:calc(100% + 4px)}100%{width:0}}
@keyframes stamp{0%,42%{opacity:0;scale:1.6}52%,92%{opacity:1;scale:1}100%{opacity:0}}
.a4{position:relative;width:132px;height:182px;background:var(--paper);border-radius:6px;box-shadow:var(--shadow-h);padding:10px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:8px}
.a4 .slot{border:1.5px dashed var(--line);border-radius:4px}
.a4 .label{position:absolute;bottom:-26px;left:50%;translate:-50% 0;font-family:var(--f-mono);font-size:11.5px;color:var(--muted);white-space:nowrap}
.rc{position:absolute;width:51px;height:73px;background:var(--surface);border-radius:3px;box-shadow:0 2px 8px rgba(20,24,40,.15);padding:7px 6px;display:grid;align-content:start;gap:4px;animation:fly 5s cubic-bezier(.3,.7,.2,1) infinite}
.rc i{display:block;height:3px;border-radius:2px;background:var(--line)}
.rc i:first-child{background:var(--sub);opacity:.7;width:70%}
.rc i:last-child{margin-top:6px;width:55%;background:var(--muted);opacity:.5}
.rc:nth-of-type(1){left:10px;top:10px;--x:-120px;--y:-30px;--r:-18deg}
.rc:nth-of-type(2){left:71px;top:10px;--x:120px;--y:-50px;--r:16deg;animation-delay:.12s}
.rc:nth-of-type(3){left:10px;top:99px;--x:-130px;--y:40px;--r:12deg;animation-delay:.24s}
.rc:nth-of-type(4){left:71px;top:99px;--x:115px;--y:55px;--r:-14deg;animation-delay:.36s}
@keyframes fly{0%{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}12%{opacity:1;transform:translate(var(--x),var(--y)) rotate(var(--r))}40%,88%{transform:none;opacity:1}100%{transform:none;opacity:0}}
.cases{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.case{background:var(--bg-2);border-radius:20px;padding:24px 22px;display:grid;gap:10px;align-content:start;min-width:0}
.case .big{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:var(--surface);color:var(--brand);box-shadow:var(--shadow)}
.case b{font-size:18px;letter-spacing:-.02em;margin-top:4px}
.case p{margin:0;color:var(--muted);font-size:14.5px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.chips a{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:700;text-decoration:none;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px 11px 5px 7px}
.chips a:hover{border-color:var(--c)}
.chips a i{width:18px;height:18px;border-radius:50%;background:var(--cs);color:var(--c);display:grid;place-items:center}
.chips a i svg{width:12px;height:12px;stroke-width:2.6}
.promise{margin-top:72px;background:var(--brand);color:var(--brand-ink);border-radius:24px;padding:34px clamp(20px,4vw,44px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.promise>div{display:flex;gap:14px;align-items:flex-start}
.promise .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand-ink) 16%,transparent);flex:none}
.promise b{display:block;font-size:17px;margin-bottom:2px}
.promise p{margin:0;font-size:14.5px;opacity:.85}
.faq{max-width:780px;margin:0 auto}
details{border-bottom:1px solid var(--line);padding-block:16px}
details:first-of-type{border-top:1px solid var(--line)}
details summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:12px;font-size:16.5px}
details summary::-webkit-details-marker{display:none}
details summary::after{content:"+";color:var(--muted);font-weight:500;font-size:22px;line-height:1}
details[open] summary::after{content:"–"}
details p{margin:10px 0 0;color:var(--muted);font-size:15px}

/* ---------- footer ---------- */
footer.foot{margin-top:80px;background:var(--bg-2);border-top:1px solid var(--line);padding-block:44px max(48px,env(safe-area-inset-bottom,0px));font-size:14px;color:var(--muted)}
.fgrid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:28px}
.fgrid h4{margin:0 0 10px;color:var(--ink);font-size:14.5px}
.fgrid ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.fgrid a{text-decoration:none}
.fgrid a:hover{color:var(--ink)}
.fbrand p{margin:10px 0 0;max-width:22em}
.fbottom{margin-top:30px;padding-top:20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between}
.fbottom nav{display:flex;gap:16px;flex-wrap:wrap}
.fbottom a{text-decoration:none}
.fbottom a:hover{color:var(--ink)}

/* ---------- 드래그 오버레이 + 추천 시트 ---------- */
.overlay{position:fixed;inset:0;z-index:40;background:color-mix(in srgb,var(--brand) 90%,transparent);color:#fff;display:grid;place-items:center;text-align:center;font-size:24px;font-weight:800;padding:16px}
.overlay small{display:block;font-size:16px;font-weight:500;opacity:.85;margin-top:6px}
.sheet-bg{position:fixed;inset:0;z-index:41;background:rgba(10,12,20,.45);display:grid;place-items:center;padding:16px}
.sheet{width:min(460px,100%);background:var(--surface);border-radius:20px;padding:24px;display:grid;gap:14px;box-shadow:var(--shadow-h)}
.sheet h3{margin:0;font-size:20px;letter-spacing:-.02em}
.sheet .fn{color:var(--muted);font-size:14px;overflow-wrap:anywhere;margin-top:-8px}
.sheet .opts{display:grid;gap:8px}
.sheet .opt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 14px;font-weight:700;font-size:15.5px}
.sheet .opt:hover{border-color:var(--c)}
.sheet .opt .ic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--cs);color:var(--c);flex:none}
.sheet .opt .ic svg{width:22px;height:22px}
.sheet .opt small{margin-left:auto;font-weight:500;color:var(--muted);font-size:13px;white-space:nowrap}
.sheet .close{justify-self:end;border:0;background:none;color:var(--muted);font-weight:500}

/* =====================================================================
   도구 화면 공통 부품 (body에 c-pdf / c-img / c-sub 를 붙이면 --c 색이 바뀜)
   ===================================================================== */
.toolbg{background:radial-gradient(900px 340px at 50% -60px,var(--cs),transparent 72%)}
.crumb{padding-top:22px;font-size:14px;color:var(--muted)}
.crumb a{text-decoration:none}
.crumb a:hover{color:var(--ink)}
.thero{text-align:center;padding-block:30px 6px;display:grid;justify-items:center;gap:10px}
.thero .ic{width:62px;height:62px;border-radius:18px;display:grid;place-items:center;background:var(--c);color:var(--on-c);box-shadow:0 8px 20px color-mix(in srgb,var(--c) 30%,transparent)}
.thero .ic svg{width:32px;height:32px}
.thero h1{margin:4px 0 0;font-weight:800;font-size:clamp(28px,4.8vw,42px);letter-spacing:-.04em;line-height:1.25;text-wrap:balance}
.thero p{margin:0;color:var(--muted);font-size:clamp(16px,2.2vw,18.5px);max-width:36em}

/* 1단계: 파일 고르기 */
.pickbox{display:grid;justify-items:center;gap:14px;padding-block:28px 10px}
.bigbtn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-width:min(340px,100%);padding:20px 34px;border-radius:14px;background:var(--c);color:var(--on-c);font-weight:800;font-size:19px;box-shadow:0 10px 24px color-mix(in srgb,var(--c) 35%,transparent);cursor:pointer;text-align:center}
.bigbtn:hover{filter:brightness(1.05)}
.bigbtn input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;font-size:0}
.bigbtn svg{width:24px;height:24px}
.bigbtn:focus-within{outline:3px solid var(--ink);outline-offset:3px}
.dropwide{width:100%;max-width:720px;border:2px dashed var(--line);border-radius:18px;padding:18px;text-align:center;color:var(--muted);font-size:14.5px;background:var(--surface);transition:border-color .15s,background .15s}
.dropwide.over{border-color:var(--c);background:var(--cs);color:var(--c)}
.safe{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;color:var(--muted);font-size:13.5px}
.safe span{display:inline-flex;align-items:center;gap:6px}
.safe svg{width:16px;height:16px;color:var(--ok);stroke-width:2.4}

/* 2단계: 작업 영역 */
.work{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:24px;align-items:start;margin-top:30px}
.work.single{grid-template-columns:minmax(0,1fr)}
.stagebox{background:var(--bg-2);border-radius:20px;padding:clamp(14px,2.4vw,28px);min-height:340px;display:grid;gap:16px;align-content:start;min-width:0}
.stagebox.center{justify-items:center;align-content:center;text-align:center}
.stagehead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.stagehead b{font-size:16px}
.stagehead .muted{color:var(--muted);font-size:14px}
.side{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:24px;display:grid;gap:18px;box-shadow:var(--shadow);position:sticky;top:84px}
.side h2{margin:0;font-size:18px;letter-spacing:-.02em}
.field{display:grid;gap:8px}
.field>label,.field>.lbl{font-weight:700;font-size:15px}
.field .help{color:var(--muted);font-size:13px;line-height:1.45;margin:0}
.input,select.input{width:100%;border:1.5px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 12px;font-size:16px}
.input:focus{outline:none;border-color:var(--c);box-shadow:0 0 0 3px var(--cs)}
.inrow{display:flex;gap:8px;align-items:center}
.inrow .input{min-width:0}
.inrow .unit{color:var(--muted);font-size:14px;white-space:nowrap}
input[type=range]{width:100%;accent-color:var(--c)}
input[type=checkbox],input[type=radio]{accent-color:var(--c)}
.check{display:flex;gap:10px;align-items:center;font-size:15px;cursor:pointer}
.check input{width:18px;height:18px}

/* 버튼 모양 선택 (라디오) */
.seg{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:6px}
.seg label{position:relative;display:grid;gap:1px;place-items:center;text-align:center;border:1.5px solid var(--line);border-radius:11px;padding:10px 6px;cursor:pointer;font-weight:700;font-size:14.5px;line-height:1.3;min-width:0}
.seg label small{font-weight:500;color:var(--muted);font-size:12px}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label:has(input:checked){border-color:var(--c);background:var(--cs);color:var(--c)}
.seg label:has(input:focus-visible){outline:3px solid var(--brand);outline-offset:2px}
.choice{display:grid;gap:8px}
.choice label{position:relative;display:flex;align-items:center;gap:12px;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer}
.choice input{position:absolute;opacity:0;pointer-events:none}
.choice .dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);flex:none}
.choice b{font-size:15.5px}
.choice small{display:block;color:var(--muted);font-size:13px;line-height:1.35}
.choice label:has(input:checked){border-color:var(--c);background:var(--cs)}
.choice label:has(input:checked) .dot{border-color:var(--c);background:radial-gradient(circle,var(--c) 45%,transparent 50%)}
.choice label:has(input:focus-visible){outline:3px solid var(--brand);outline-offset:2px}

/* 버튼 */
.btn-main{width:100%;border:0;border-radius:12px;padding:16px;background:var(--c);color:var(--on-c);font-weight:800;font-size:17.5px}
.btn-main:disabled{opacity:.5;cursor:not-allowed}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:9px 14px;font-weight:700;font-size:14.5px;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:var(--ink)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn svg{width:18px;height:18px}
.btn.c{background:var(--c);border-color:var(--c);color:var(--on-c)}
.btn.ok{background:var(--ok);border-color:var(--ok);color:var(--on-c)}
.iconbtn{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:0}
.iconbtn:hover{border-color:var(--ink)}
.iconbtn:disabled{opacity:.35;cursor:not-allowed}
.iconbtn svg{width:18px;height:18px}
.actions{display:flex;gap:8px;flex-wrap:wrap}

/* 상태 표시 */
.note{margin:0;font-size:13.5px;color:var(--warn);background:var(--warn-soft);border-radius:10px;padding:10px 12px;line-height:1.5}
.info{margin:0;font-size:13.5px;color:var(--muted);background:var(--bg-2);border-radius:10px;padding:10px 12px;line-height:1.5}
.progress{display:grid;gap:8px;font-size:14.5px}
.track{height:8px;border-radius:999px;background:var(--line);overflow:hidden}
.track i{display:block;height:100%;width:0;background:var(--c);transition:width .2s}
.err{margin:0;color:var(--err);font-weight:700;font-size:14.5px}
.result{display:grid;gap:12px;padding:18px;border-radius:14px;background:var(--ok-soft)}
.result .badge{font-weight:700;color:var(--ok);font-size:15px}
.result p{margin:0;font-size:14px;color:var(--muted)}
.sizes{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.sizes del{color:var(--muted)}
.sizes .after{font-size:28px;font-weight:600;color:var(--ok);letter-spacing:-.02em}
.result.same{background:var(--warn-soft)}
.result.same .after,.result.same .badge{color:var(--warn)}
.dl{width:100%;border:0;border-radius:12px;padding:15px;background:var(--ok);color:var(--on-c);font-weight:800;font-size:17px}
.result.same .dl{background:var(--warn)}

/* 파일 목록 (순서 바꾸기) */
.flist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.fitem{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 10px;min-width:0}
.fitem.dragging{opacity:.4}
.fitem.dropbefore{box-shadow:0 -3px 0 var(--c)}
.fitem .grip{cursor:grab;color:var(--muted);display:grid;place-items:center;width:20px}
.fitem .grip svg{width:18px;height:18px}
.fitem .th{width:48px;height:48px;border-radius:8px;background:var(--bg-2);flex:none;overflow:hidden;display:grid;place-items:center;color:var(--muted);font-size:11px}
.fitem .th img,.fitem .th canvas{width:100%;height:100%;object-fit:cover;display:block}
.fitem .meta{min-width:0;flex:1;display:grid}
.fitem .meta b{font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fitem .meta small{color:var(--muted);font-size:12.5px}
.fitem .ctrl{display:flex;gap:4px;flex:none}
.addmore{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;border:1.5px dashed var(--line);border-radius:12px;padding:12px;color:var(--muted);font-weight:700;cursor:pointer;background:transparent}
.addmore:hover{border-color:var(--c);color:var(--c)}
.addmore input{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
.addmore svg{width:18px;height:18px}

/* 썸네일 격자 (페이지·사진) */
.tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}
.tcard{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:6px;background:var(--surface);border:2px solid transparent;border-radius:12px;padding:8px;box-shadow:var(--shadow);min-width:0}
.tcard.sel{border-color:var(--c)}
.tcard .pv{aspect-ratio:1/1.3;background:var(--bg-2);border-radius:6px;display:grid;place-items:center;overflow:hidden}
.tcard .pv canvas,.tcard .pv img{max-width:100%;max-height:100%;display:block;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.tcard .cap{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:12.5px;color:var(--muted)}
.tcard .cap b{color:var(--ink);font-size:13px}
.tcard .tick{position:absolute;top:12px;left:12px;width:24px;height:24px;border-radius:50%;border:2px solid var(--line);background:var(--surface);display:grid;place-items:center}
.tcard.sel .tick{background:var(--c);border-color:var(--c);color:var(--on-c)}
.tcard .tick svg{width:14px;height:14px;stroke-width:3}

/* 결과 목록 (여러 파일) */
.olist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.oitem{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 10px;min-width:0}
.oitem .th{width:48px;height:48px;border-radius:8px;background:var(--bg-2);flex:none;overflow:hidden}
.oitem .th img{width:100%;height:100%;object-fit:cover;display:block}
.oitem .meta{min-width:0;flex:1;display:grid}
.oitem .meta b{font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oitem .meta small{color:var(--muted);font-size:12.5px}
.oitem .meta small em{font-style:normal;color:var(--ok);font-weight:700}
.oitem .meta small em.up{color:var(--warn)}

/* 캔버스 미리보기 */
.canvaswrap{position:relative;max-width:100%;display:grid;place-items:center;touch-action:none;user-select:none;-webkit-user-select:none}
.canvaswrap canvas{max-width:100%;height:auto;display:block;border-radius:6px;box-shadow:var(--shadow-h);background:repeating-conic-gradient(var(--bg-2) 0 25%,var(--surface) 0 50%) 0 0/16px 16px}

/* 자르기 상자 (Cropper) */
.crop{position:relative;display:inline-block;max-width:100%;touch-action:none;user-select:none;-webkit-user-select:none;line-height:0;clip-path:inset(-12px)}
.crop>img,.crop>canvas{display:block;max-width:100%;max-height:70vh;height:auto;width:auto}
.crop .shade{position:absolute;inset:0;pointer-events:none}
.crop .box{position:absolute;outline:2px solid #fff;box-shadow:0 0 0 9999px rgba(0,0,0,.5);cursor:move;touch-action:none}
.crop .box::before,.crop .box::after{content:"";position:absolute;inset:0;pointer-events:none;background:
 linear-gradient(to right,transparent calc(33.33% - .5px),rgba(255,255,255,.55) calc(33.33% - .5px) calc(33.33% + .5px),transparent calc(33.33% + .5px) calc(66.66% - .5px),rgba(255,255,255,.55) calc(66.66% - .5px) calc(66.66% + .5px),transparent calc(66.66% + .5px)),
 linear-gradient(to bottom,transparent calc(33.33% - .5px),rgba(255,255,255,.55) calc(33.33% - .5px) calc(33.33% + .5px),transparent calc(33.33% + .5px) calc(66.66% - .5px),rgba(255,255,255,.55) calc(66.66% - .5px) calc(66.66% + .5px),transparent calc(66.66% + .5px))}
.crop .box::after{display:none}
.crop .h{position:absolute;width:22px;height:22px;background:#fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.4);touch-action:none}
.crop .h.nw{left:-11px;top:-11px;cursor:nwse-resize}.crop .h.ne{right:-11px;top:-11px;cursor:nesw-resize}
.crop .h.sw{left:-11px;bottom:-11px;cursor:nesw-resize}.crop .h.se{right:-11px;bottom:-11px;cursor:nwse-resize}
.crop .guide{position:absolute;inset:0;pointer-events:none}

/* 도구 페이지 아래: 사용법·FAQ·관련 도구 */
.guide{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;margin-top:64px}
.guide h2{font-size:21px;margin:0 0 14px;letter-spacing:-.02em}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:14px;counter-reset:s}
.steps li{display:flex;gap:14px;align-items:flex-start;counter-increment:s}
.steps li::before{content:counter(s);flex:none;width:30px;height:30px;border-radius:50%;background:var(--cs);color:var(--c);font-weight:800;display:grid;place-items:center;font-size:14px}
.guide details summary{font-size:15.5px}
.about{margin-top:48px;max-width:780px}
.about h2{font-size:21px;margin:0 0 10px;letter-spacing:-.02em}
.about p{margin:0 0 10px;color:var(--muted)}
.related{margin-top:60px}
.related h2{font-size:21px;margin:0 0 16px;letter-spacing:-.02em}
.related .tiles{grid-template-columns:repeat(3,minmax(0,1fr))}

/* 문서형 페이지 (약관 등) */
.doc-page{max-width:780px;padding-block:40px 20px}
.doc-page h1{font-size:clamp(26px,4vw,36px);letter-spacing:-.035em;margin:0 0 8px}
.doc-page h2{font-size:19px;margin:32px 0 8px}
.doc-page p,.doc-page li{color:var(--muted)}
.doc-page .date{color:var(--muted);font-size:14px}

/* ---------- 반응형 ---------- */
@media (max-width:1180px){.float{display:none}}
@media (max-width:980px){
  .tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
  .cases{grid-template-columns:repeat(2,minmax(0,1fr))}
  .work{grid-template-columns:minmax(0,1fr)}
  .side{position:static}
  .fgrid{grid-template-columns:repeat(3,1fr)}
  .fbrand{grid-column:1/-1}
}
@media (max-width:860px){
  .menu,.allbtn{display:none}
  .burger{display:block}
  .demos{grid-template-columns:minmax(0,1fr);max-width:480px;margin:0 auto}
  .promise{grid-template-columns:minmax(0,1fr);gap:20px}
}
@media (max-width:640px){
  .tiles,.related .tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .tile{padding:18px 16px}
  .tile .ic{width:46px;height:46px}
  .tile b{font-size:16px}
  .tile .d{font-size:13.5px}
  .cases,.guide{grid-template-columns:minmax(0,1fr)}
  .sec{padding-block:56px 0}
  .hero{padding-block:44px 22px}
  .stagebox{min-height:0}
  .fgrid{grid-template-columns:1fr 1fr}
  .tgrid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
  .side{padding:18px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;scroll-behavior:auto!important}
  .float,.rc,.stamp,.rrn .back::after{animation:none!important}
  .rc{transform:none;opacity:1}
  .stamp{opacity:1}
  .rrn .back::after{width:calc(100% + 4px)}
}
