/* Layout: "작업 의뢰 창구" 콘셉트 — 밝은 종이 바탕 + 코발트 잉크. 히어로(이름+진행 중 의뢰 티켓) → 서비스 메뉴판 → 진행 순서 → 작업물(좌우 교차) → 도구 → 자주 묻는 질문 → 의뢰서 작성(고객센터) */
:root{
  --paper:#f4f5f8;
  --card:#ffffff;
  --ink:#121521;
  --sub:#5d6275;
  --rule:#dfe2ea;
  --cobalt:#2a44e8;
  --cobalt-soft:#e6e9fd;
  --mint:#14a37f;
  --amber:#e09a1a;
  --f-head:"Black Han Sans","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --f-body:"Gothic A1","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --paper:#0f1118;--card:#171a24;--ink:#e9ebf2;--sub:#969cb2;--rule:#272b39;--cobalt:#7d8dff;--cobalt-soft:#1e2340;--mint:#3fd0a8;--amber:#f2b445;color-scheme:dark}}
:root[data-theme="dark"]{--paper:#0f1118;--card:#171a24;--ink:#e9ebf2;--sub:#969cb2;--rule:#272b39;--cobalt:#7d8dff;--cobalt-soft:#1e2340;--mint:#3fd0a8;--amber:#f2b445;color-scheme:dark}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:15.5px/1.7 var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--cobalt);outline-offset:3px;border-radius:4px}
.wrap{max-width:1120px;margin:0 auto;padding-inline:clamp(16px,4vw,36px)}
.mono{font-family:var(--f-mono)}

/* 상단바 */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
.top .wrap{display:flex;align-items:center;gap:20px;height:64px}
.logo{font-family:var(--f-head);font-size:20px;text-decoration:none;letter-spacing:.01em;display:flex;align-items:center;gap:8px}
.logo::before{content:"";width:12px;height:12px;background:var(--cobalt);border-radius:3px;transform:rotate(45deg)}
.menu{display:flex;gap:22px;margin-left:auto;list-style:none;padding:0;margin-block:0}
.menu a{text-decoration:none;font-size:14px;color:var(--sub);font-weight:600}
.menu a:hover{color:var(--ink)}
.ask{height:38px;padding:0 16px;border-radius:8px;background:var(--ink);color:var(--paper);font-weight:700;font-size:14px;text-decoration:none;display:inline-flex;align-items:center}
.ask:hover{background:var(--cobalt);color:#fff}

/* 히어로 */
.hero{padding-block:72px 56px}
.hero-in{display:grid;grid-template-columns:1.25fr .75fr;gap:48px;align-items:center}
h1{font-family:var(--f-head);font-weight:400;font-size:clamp(38px,6vw,68px);line-height:1.18;letter-spacing:-.01em;margin:0 0 24px;text-wrap:balance}
h1 .u{background:linear-gradient(transparent 62%,var(--cobalt-soft) 62%);padding-inline:2px}
h1 .c{color:var(--cobalt)}
.intro{color:var(--sub);font-size:clamp(15px,1.7vw,17px);max-width:32em;margin:0 0 30px}
.facts{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--rule);border-radius:12px;background:var(--card);width:fit-content;max-width:100%}
.facts div{padding:12px 20px;min-width:0}
.facts div+div{border-left:1px solid var(--rule)}
.facts small{display:block;font:500 11.5px var(--f-mono);color:var(--sub);letter-spacing:.06em}
.facts b{font-size:16px;font-variant-numeric:tabular-nums}

.ticket{background:var(--card);border:1px solid var(--rule);border-radius:16px;padding:22px;position:relative;box-shadow:0 18px 40px -24px rgba(20,30,90,.35);transform:rotate(1.2deg)}
.ticket::before,.ticket::after{content:"";position:absolute;top:58%;width:18px;height:18px;border-radius:50%;background:var(--paper);border:1px solid var(--rule)}
.ticket::before{left:-10px}.ticket::after{right:-10px}
.t-head{display:flex;justify-content:space-between;font:500 12px var(--f-mono);color:var(--sub)}
.t-title{font-family:var(--f-head);font-size:22px;margin:12px 0 4px}
.t-desc{font-size:13.5px;color:var(--sub);margin:0 0 18px}
.t-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:13.5px}
.t-list li{display:flex;align-items:center;gap:10px}
.t-list i{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--rule);flex:none;display:grid;place-items:center;font-style:normal;font-size:11px}
.t-list .done i{background:var(--mint);border-color:var(--mint);color:#fff}
.t-list .done span{color:var(--sub);text-decoration:line-through}
.t-list .now i{border-color:var(--cobalt);animation:pulse 1.4s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 4px var(--cobalt-soft)}}
.t-cut{border-top:1.5px dashed var(--rule);margin:20px -22px 16px}
.t-bar{height:8px;border-radius:99px;background:var(--cobalt-soft);overflow:hidden}
.t-bar span{display:block;height:100%;width:72%;background:var(--cobalt);border-radius:99px;animation:grow 2.4s ease-out}
@keyframes grow{from{width:8%}}
.t-foot{display:flex;justify-content:space-between;margin-top:8px;font:500 12px var(--f-mono);color:var(--sub)}

/* 섹션 공통 */
.sec{padding-block:84px;border-top:1px solid var(--rule)}
.sec-head{display:grid;grid-template-columns:220px 1fr;gap:24px;margin-bottom:40px;align-items:end}
.sec-head .lab{font:600 12.5px var(--f-mono);color:var(--cobalt);letter-spacing:.1em;text-transform:uppercase}
h2{font-family:var(--f-head);font-weight:400;font-size:clamp(28px,3.8vw,40px);line-height:1.25;margin:0;text-wrap:balance}
.sec-head p{grid-column:2;margin:-12px 0 0;color:var(--sub);max-width:40em}

/* 서비스 메뉴판 */
.menu-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.svc{background:var(--card);border:1px solid var(--rule);border-radius:16px;padding:26px 24px;display:flex;flex-direction:column;gap:14px;min-width:0}
.svc .glyph{width:44px;height:44px;border-radius:12px;background:var(--cobalt-soft);color:var(--cobalt);display:grid;place-items:center}
.svc h3{margin:0;font-size:19px;font-weight:700}
.svc p{margin:0;color:var(--sub);font-size:14.5px}
.svc ul{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:14px}
.svc li::before{content:"—";color:var(--cobalt);margin-right:8px}
.svc .from{margin-top:auto;padding-top:16px;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:baseline}
.svc .from small{color:var(--sub);font-size:12.5px}
.svc .from b{font-size:18px;font-variant-numeric:tabular-nums}

/* 진행 순서 */
.flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;counter-reset:s;border:1px solid var(--rule);border-radius:16px;background:var(--card);overflow:hidden}
.flow li{list-style:none;padding:24px 20px;position:relative;min-width:0}
.flow li+li{border-left:1px solid var(--rule)}
.flow li::before{counter-increment:s;content:"STEP " counter(s);font:600 11.5px var(--f-mono);color:var(--cobalt);letter-spacing:.08em}
.flow h4{margin:10px 0 6px;font-size:16px}
.flow p{margin:0;font-size:13.5px;color:var(--sub)}
.flow{padding:0;margin:0}

/* 작업물 */
.works{display:grid;gap:20px}
.work{display:grid;grid-template-columns:1.1fr 1fr;gap:0;background:var(--card);border:1px solid var(--rule);border-radius:18px;overflow:hidden}
.work:nth-child(even) .shot{order:2}
.shot{background:var(--cobalt-soft);padding:28px;display:grid;place-items:center;min-height:260px}
.work .txt{padding:30px 30px 28px;display:flex;flex-direction:column;gap:12px;min-width:0}
.kind{font:600 12px var(--f-mono);color:var(--sub);letter-spacing:.08em}
.work h3{margin:0;font-size:22px}
.work p{margin:0;color:var(--sub);font-size:14.5px}
.feat{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.feat span{font-size:12.5px;padding:4px 10px;border-radius:6px;background:var(--paper);border:1px solid var(--rule)}
.used{margin-top:auto;padding-top:14px;font:500 12.5px var(--f-mono);color:var(--cobalt)}
/* 목업 */
.mock{width:min(100%,360px);border-radius:12px;background:#1e2130;color:#d7daea;padding:14px;font-size:11.5px;box-shadow:0 14px 30px -14px rgba(20,30,90,.5)}
.mock .row{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.mock .av{width:22px;height:22px;border-radius:50%;background:#5865f2}
.mock .nm{font-weight:700;color:#fff}
.mock .bot{font-size:9px;background:#5865f2;color:#fff;padding:1px 5px;border-radius:3px}
.mock .emb{border-left:3px solid #7d8dff;background:#262a3c;border-radius:4px;padding:10px 12px}
.mock .emb b{display:block;color:#fff;margin-bottom:6px;font-size:12.5px}
.mock .kv{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px solid #31364b}
.mock .kv:last-child{border:0}
.mock .bs{display:flex;gap:6px;margin-top:10px}
.mock .bs span{flex:1;text-align:center;padding:6px 0;border-radius:4px;background:#3a3f55;font-size:10.5px}
.mock .bs span:first-child{background:#5865f2;color:#fff}
.mock.light{background:#fff;color:#333}
.mock.light .bar{display:flex;gap:6px;align-items:center;padding-bottom:10px;border-bottom:1px solid #eee;margin-bottom:10px}
.mock.light .bar i{width:7px;height:7px;border-radius:50%;background:#ddd}
.mock.light .bar em{margin-left:8px;font-style:normal;font-size:10px;color:#999}
.mock .prod{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mock .prod div{border:1px solid #eee;border-radius:8px;padding:6px}
.mock .prod i{display:block;aspect-ratio:4/3;border-radius:5px;background:#e6e9fd;margin-bottom:5px}
.mock .prod b{display:block;font-size:10px;color:#222}
.mock .prod span{font-size:10px;color:#2a44e8;font-weight:700}
.mock .stat{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px}
.mock .stat div{background:#262a3c;border-radius:6px;padding:7px}
.mock .stat small{display:block;font-size:9px;color:#8f94ad}
.mock .stat b{color:#fff;font-size:13px}
.mock .spark{height:54px;border-radius:6px;background:#262a3c;position:relative;overflow:hidden}
.mock .spark svg{position:absolute;inset:0;width:100%;height:100%}

/* 도구 */
.tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.tool-col{border-top:2px solid var(--ink);padding-top:16px}
.tool-col h4{margin:0 0 14px;font-size:15px}
.tool-col ul{margin:0;padding:0;list-style:none}
.tool-col li{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--rule);font-size:14.5px}
.lv{font:500 12px var(--f-mono);color:var(--sub);white-space:nowrap}
.lv b{color:var(--cobalt);letter-spacing:1px}

/* FAQ */
.faq{display:grid;gap:10px;max-width:820px}
.faq details{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:0 20px}
.faq summary{cursor:pointer;list-style:none;padding:18px 0;font-weight:700;display:flex;justify-content:space-between;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font:400 22px/1 var(--f-mono);color:var(--cobalt);transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin:0 0 18px;color:var(--sub);font-size:14.5px}

/* 의뢰서 / 고객센터 */
.desk{display:grid;grid-template-columns:1fr 360px;gap:20px;align-items:start}
.form{background:var(--card);border:1px solid var(--rule);border-radius:18px;padding:28px;display:grid;gap:18px;min-width:0}
.form h3{margin:0;font-size:18px}
.form .hint{margin:-12px 0 0;color:var(--sub);font-size:13.5px}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:grid;gap:6px;min-width:0}
.field label{font-size:13px;font-weight:700}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--rule);background:var(--paper);border-radius:10px;padding:11px 12px;font-size:14.5px}
.field textarea{min-height:110px;resize:vertical}
.chipset{display:flex;flex-wrap:wrap;gap:8px;position:relative}
.chipset input{position:absolute;left:0;top:0;width:1px!important;height:1px;margin:0;padding:0;opacity:0;pointer-events:none}
.chipset label{border:1px solid var(--rule);border-radius:999px;padding:7px 14px;font-size:13.5px;font-weight:600;cursor:pointer;background:var(--paper)}
.chipset input:checked+label{background:var(--cobalt);border-color:var(--cobalt);color:#fff}
.chipset input:focus-visible+label{outline:2px solid var(--cobalt);outline-offset:2px}
.preview{background:var(--paper);border:1px dashed var(--rule);border-radius:12px;padding:14px;font:13px/1.7 var(--f-mono);white-space:pre-wrap;word-break:break-word;color:var(--sub);min-height:90px}
.primary{height:48px;border:0;border-radius:10px;background:var(--cobalt);color:#fff;font-weight:700;font-size:15px;cursor:pointer}
.primary:hover{filter:brightness(1.08)}

.side{display:grid;gap:12px}
.panel{background:var(--card);border:1px solid var(--rule);border-radius:16px;padding:20px}
.panel h4{margin:0 0 12px;font-size:15px}
.hours{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:14px}
.hours dt{color:var(--sub)}
.hours dd{margin:0;font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.chan{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--rule);border-radius:12px;background:var(--paper);text-decoration:none;width:100%;text-align:left;cursor:pointer}
.chan+.chan{margin-top:8px}
.chan:hover{border-color:var(--cobalt)}
.chan svg{flex:none}
.chan .tx{flex:1;min-width:0}
.chan b{display:block;font-size:14.5px}
.chan code{font:12.5px var(--f-mono);color:var(--sub);word-break:break-all}
.chan .act{font:600 12px var(--f-mono);color:var(--cobalt)}

footer{border-top:1px solid var(--rule);padding-block:28px}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font:12.5px var(--f-mono);color:var(--sub)}

.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:10px;font-size:13.5px;z-index:70;max-width:calc(100vw - 32px)}

@media (max-width:960px){
  .hero-in{grid-template-columns:1fr}
  .ticket{transform:none;max-width:460px}
  .menu-board,.tools{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr}
  .flow li+li{border-left:0;border-top:1px solid var(--rule)}
  .work{grid-template-columns:1fr}
  .work:nth-child(even) .shot{order:0}
  .desk{grid-template-columns:1fr}
  .sec-head{grid-template-columns:1fr;gap:8px}
  .sec-head p{grid-column:1;margin:4px 0 0}
}
@media (max-width:640px){
  .menu{display:none}
  .ask{margin-left:auto}
  .f-row{grid-template-columns:1fr}
  .facts div{padding:10px 14px}
  .sec{padding-block:60px}
  .shot{min-height:0;padding:20px}
  .work .txt{padding:22px}
  .form{padding:20px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* ---- 추가: 히어로 단일 열(진행 작업 없을 때) ---- */
.hero-in.solo{grid-template-columns:1fr}
.hero-in.solo h1{max-width:16em}
.t-list .todo i{background:transparent}

/* ---- 추가: 작업물 실제 사진 ---- */
.shot.photo{padding:0;display:block;position:relative;background:var(--ink)}
.gallery{position:relative;height:100%;min-height:260px}
.gallery img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s}
.gallery img.on{opacity:1}
.g-nav{position:absolute;inset:auto 0 12px 0;display:flex;justify-content:center;gap:6px;z-index:2}
.g-nav button{width:8px;height:8px;border-radius:50%;border:0;padding:0;background:rgba(255,255,255,.5);cursor:pointer}
.g-nav button[aria-current="true"]{background:#fff;width:20px;border-radius:99px}
.g-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:34px;height:34px;border-radius:50%;border:0;background:rgba(10,12,20,.55);color:#fff;font-size:16px;cursor:pointer;display:grid;place-items:center}
.g-arrow.prev{left:10px}.g-arrow.next{right:10px}
.g-count{position:absolute;top:10px;right:12px;z-index:2;font:500 11.5px var(--f-mono);color:#fff;background:rgba(10,12,20,.55);padding:3px 8px;border-radius:99px}
.gallery img{cursor:zoom-in}
.lightbox{position:fixed;inset:0;z-index:90;background:rgba(5,7,12,.88);display:grid;place-items:center;padding:24px}
.lightbox img{max-width:100%;max-height:100%;border-radius:10px;object-fit:contain}
.lightbox button{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));right:16px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.15);color:#fff;font-size:20px;cursor:pointer}
.works-empty{padding:40px;text-align:center;color:var(--sub);border:1px dashed var(--rule);border-radius:16px}

/* ---- 추가: 의뢰서 ---- */
.agree{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--sub)}
.agree input{margin-top:4px;width:16px;height:16px;accent-color:var(--cobalt);flex:none}
.agree a{color:var(--cobalt)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.btn-row{display:grid;grid-template-columns:1fr auto;gap:10px}
.secondary{height:48px;padding:0 18px;border:1px solid var(--rule);border-radius:10px;background:var(--card);font-weight:700;font-size:14px;cursor:pointer}
.secondary:hover{border-color:var(--cobalt);color:var(--cobalt)}
.form-msg{margin:0;font-size:13.5px;font-weight:600}
.form-msg.ok{color:var(--mint)}.form-msg.err{color:#d6455a}
.policy-links{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px}
.policy-links a{color:var(--sub)}
.policy-links a:hover{color:var(--cobalt)}

/* ---- 추가: 푸터 ---- */
footer .wrap{align-items:center}
footer nav{display:flex;flex-wrap:wrap;gap:6px 18px}
footer nav a{color:var(--sub);text-decoration:none;font-family:var(--f-body);font-size:13px}
footer nav a:hover{color:var(--ink)}
footer nav a.strong{font-weight:700;color:var(--ink)}

/* ---- 추가: 정책 문서 페이지 ---- */
.legal{padding-block:56px 80px}
.legal-in{display:grid;grid-template-columns:240px minmax(0,1fr);gap:48px;align-items:start}
.legal-toc{position:sticky;top:calc(84px + env(safe-area-inset-top,0px));font-size:13.5px;max-height:calc(100vh - 110px);overflow:auto}
.legal-toc b{display:block;font:600 12px var(--f-mono);letter-spacing:.1em;color:var(--cobalt);margin-bottom:10px}
.legal-toc ol{margin:0;padding:0;list-style:none;display:grid;gap:2px}
.legal-toc a{display:block;padding:5px 10px;border-radius:6px;color:var(--sub);text-decoration:none}
.legal-toc a:hover{background:var(--card);color:var(--ink)}
.doc{background:var(--card);border:1px solid var(--rule);border-radius:18px;padding:clamp(22px,4vw,48px);min-width:0}
.doc .kicker{font:600 12.5px var(--f-mono);color:var(--cobalt);letter-spacing:.1em}
.doc h1{font-size:clamp(30px,4.4vw,44px);margin:8px 0 10px}
.doc .meta{color:var(--sub);font-size:14px;margin:0 0 28px;padding-bottom:24px;border-bottom:1px solid var(--rule)}
.doc h2{font-family:var(--f-body);font-weight:700;font-size:19px;margin:40px 0 12px;scroll-margin-top:90px}
.doc h3{font-size:16px;margin:24px 0 8px}
.doc p,.doc li{font-size:15px;line-height:1.85;max-width:68ch}
.doc p{margin:0 0 12px}
.doc ol,.doc ul{padding-left:1.4em;margin:0 0 14px}
.doc li{margin-bottom:6px}
.doc li ol,.doc li ul{margin-top:6px}
.doc .box-note{background:var(--paper);border:1px solid var(--rule);border-left:3px solid var(--cobalt);border-radius:10px;padding:14px 16px;margin:16px 0;font-size:14.5px}
.doc .tbl{overflow-x:auto;margin:12px 0 18px}
.doc table{border-collapse:collapse;width:100%;min-width:520px;font-size:14px}
.doc th,.doc td{border:1px solid var(--rule);padding:10px 12px;text-align:left;vertical-align:top}
.doc th{background:var(--paper);font-weight:700}
.doc .sign{margin-top:40px;padding-top:20px;border-top:1px solid var(--rule);color:var(--sub);font-size:14px}
.back{display:inline-flex;gap:6px;align-items:center;margin-bottom:20px;font-size:14px;color:var(--sub);text-decoration:none}
.back:hover{color:var(--cobalt)}

@media (max-width:960px){
  .legal-in{grid-template-columns:1fr;gap:20px}
  .legal-toc{position:static;max-height:none;background:var(--card);border:1px solid var(--rule);border-radius:14px;padding:16px}
  .gallery{min-height:220px;aspect-ratio:16/10}
}
@media (max-width:640px){
  .btn-row{grid-template-columns:1fr}
}

/* ---- 상담 채팅 위젯 (iOS 메시지 스타일) ---- */
:root{
  --c-bg:#ffffff; --c-bar:rgba(249,249,251,.86); --c-sep:rgba(60,60,67,.18);
  --c-me:#0a7cff; --c-me-ink:#ffffff; --c-them:#e9e9eb; --c-them-ink:#111114;
  --c-sub:#8a8a8e; --c-field:#ffffff; --c-field-line:rgba(60,60,67,.22); --c-chip:#f2f2f7;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --c-bg:#000000; --c-bar:rgba(28,28,30,.86); --c-sep:rgba(84,84,88,.6);
  --c-me:#0a84ff; --c-them:#26252a; --c-them-ink:#f5f5f7; --c-sub:#8d8d93;
  --c-field:#1c1c1e; --c-field-line:rgba(84,84,88,.7); --c-chip:#1c1c1e}}
:root[data-theme="dark"]{--c-bg:#000000; --c-bar:rgba(28,28,30,.86); --c-sep:rgba(84,84,88,.6);
  --c-me:#0a84ff; --c-them:#26252a; --c-them-ink:#f5f5f7; --c-sub:#8d8d93;
  --c-field:#1c1c1e; --c-field-line:rgba(84,84,88,.7); --c-chip:#1c1c1e}

.cfab{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:80;display:flex;align-items:center;gap:9px;height:54px;padding:0 20px 0 17px;border:0;border-radius:27px;background:var(--c-me);color:#fff;font:700 15px var(--f-body);cursor:pointer;box-shadow:0 10px 30px -8px rgba(10,124,255,.55);-webkit-tap-highlight-color:transparent}
.cfab:active{transform:scale(.97)}
.cfab .dot{position:absolute;top:-3px;right:-3px;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#ff3b30;color:#fff;font:700 11.5px/20px var(--f-body);text-align:center;border:2px solid var(--paper)}
html.chat-lock,html.chat-lock body{overflow:hidden}

.cpanel{position:fixed;right:20px;bottom:calc(88px + env(safe-area-inset-bottom,0px));z-index:81;width:390px;height:min(660px,calc(100vh - 120px));background:var(--c-bg);color:var(--c-them-ink);border-radius:22px;box-shadow:0 30px 80px -20px rgba(0,0,0,.45),0 0 0 .5px var(--c-sep);display:flex;flex-direction:column;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Apple SD Gothic Neo",var(--f-body);-webkit-font-smoothing:antialiased}
.cview{flex:1;display:flex;flex-direction:column;min-height:0}

/* 상단 바 */
.cnav{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;min-height:54px;padding:6px 8px;background:var(--c-bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:.5px solid var(--c-sep);position:relative;z-index:2}
.cnav .l{justify-self:start;display:flex;align-items:center}
.cnav .r{justify-self:end;display:flex;align-items:center;gap:2px}
.cnav .mid{text-align:center;min-width:0;max-width:200px}
.cnav .mid b{display:block;font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--c-them-ink)}
.cnav .mid small{display:block;font-size:11.5px;color:var(--c-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nbtn{display:inline-flex;align-items:center;gap:2px;height:38px;min-width:38px;padding:0 8px;border:0;background:none;color:var(--c-me);font-size:16px;cursor:pointer;border-radius:10px;-webkit-tap-highlight-color:transparent}
.nbtn:active{opacity:.5}
.nbtn svg{flex:none}
.nbtn .badge{background:var(--c-me);color:#fff;font-size:11px;font-weight:700;border-radius:9px;min-width:18px;height:18px;line-height:18px;padding:0 5px;margin-left:2px}

/* 메시지 목록 */
.cscroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:12px 12px 8px;display:flex;flex-direction:column}
.cscroll::-webkit-scrollbar{width:0}
.cstamp{align-self:center;margin:14px 0 8px;font-size:11.5px;font-weight:500;color:var(--c-sub)}
.cstamp b{font-weight:600}
.row{display:flex;margin-top:2px}
.row.me{justify-content:flex-end}
.row.gap{margin-top:10px}
.bub{max-width:76%;padding:8px 13px;border-radius:19px;font-size:16px;line-height:1.35;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;position:relative}
.row.me .bub{background:var(--c-me);color:var(--c-me-ink)}
.row.them .bub{background:var(--c-them);color:var(--c-them-ink)}
.row.me.tail .bub{border-bottom-right-radius:6px}
.row.them.tail .bub{border-bottom-left-radius:6px}
.bub a{color:inherit;text-decoration:underline}
.bub.img{padding:0;background:none!important;border-radius:16px;overflow:hidden;line-height:0;max-width:min(66%,260px)}
.bub.img img{display:block;max-width:100%;width:auto;max-height:240px;min-width:80px;min-height:60px;border-radius:16px;object-fit:cover;cursor:zoom-in;background:var(--c-them)}
.bub.pending{opacity:.55}
.bub.failed{opacity:1;outline:1.5px solid #ff3b30;outline-offset:1px}
.meta{font-size:11px;color:var(--c-sub);margin:3px 6px 0;display:flex;gap:6px;align-items:center}
.row-meta{display:flex}
.row-meta.me{justify-content:flex-end}
.retry{border:0;background:none;color:#ff3b30;font-size:11.5px;font-weight:600;cursor:pointer;padding:0}
.sys{align-self:center;max-width:88%;margin:10px 0 4px;padding:7px 12px;border-radius:12px;background:var(--c-chip);color:var(--c-sub);font-size:12.5px;line-height:1.45;text-align:center;white-space:pre-wrap}

/* 입력창 */
.ccompose{flex:none;display:flex;align-items:flex-end;gap:8px;padding:8px 10px calc(8px + env(safe-area-inset-bottom,0px));background:var(--c-bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--c-sep)}
.cplus{flex:none;width:36px;height:36px;border-radius:50%;border:0;background:var(--c-chip);color:var(--c-sub);display:grid;place-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cplus:active{opacity:.6}
.cfield{flex:1;min-width:0;display:flex;align-items:flex-end;background:var(--c-field);border:1px solid var(--c-field-line);border-radius:19px;padding:0 3px 0 13px;transition:border-color .15s}
.cfield:focus-within{border-color:color-mix(in srgb,var(--c-me) 55%,var(--c-field-line))}
.cfield textarea{flex:1;min-width:0;border:0;outline:0;background:transparent;resize:none;color:var(--c-them-ink);font:16px/20px -apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",var(--f-body);padding:7px 0;height:34px;max-height:120px;overflow-y:hidden;-webkit-appearance:none;appearance:none;border-radius:0}
.cfield textarea::placeholder{color:var(--c-sub)}
.csend{flex:none;width:28px;height:28px;margin:3px 0;border-radius:50%;border:0;background:var(--c-me);color:#fff;display:grid;place-items:center;cursor:pointer;transition:transform .12s,opacity .12s;-webkit-tap-highlight-color:transparent}
.csend:disabled{opacity:0;transform:scale(.6);pointer-events:none}
.csend:active{transform:scale(.9)}
.cnote{flex:none;padding:6px 14px 0;font-size:11.5px;color:var(--c-sub);text-align:center;background:var(--c-bar)}

/* 대화 목록 */
.clist{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.cnew{display:flex;align-items:center;justify-content:center;gap:8px;margin:14px 14px 6px;height:46px;border-radius:12px;border:0;background:var(--c-me);color:#fff;font-size:16px;font-weight:600;cursor:pointer;width:calc(100% - 28px)}
.cnew:active{opacity:.8}
.citems{list-style:none;margin:6px 0 0;padding:0}
.citem{display:flex;align-items:center;gap:12px;padding:11px 14px;cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;background:none;width:100%;text-align:left;color:inherit;font:inherit}
.citem:active{background:var(--c-chip)}
.citem .av{flex:none;width:44px;height:44px;border-radius:50%;background:linear-gradient(160deg,#5e9bff,#0a6cff);color:#fff;display:grid;place-items:center;font-weight:700;font-size:17px}
.citem .tx{flex:1;min-width:0;border-bottom:.5px solid var(--c-sep);padding-bottom:11px;margin-bottom:-11px;display:grid;grid-template-columns:1fr auto;column-gap:8px}
.citems li:last-child .citem .tx{border-bottom:0}
.citem .t{font-weight:600;font-size:15.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.citem .d{font-size:13px;color:var(--c-sub);white-space:nowrap}
.citem .p{grid-column:1/-1;display:flex;align-items:center;gap:8px;font-size:14px;color:var(--c-sub);margin-top:2px}
.citem .p span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.citem .u{flex:none;width:10px;height:10px;border-radius:50%;background:var(--c-me)}
.cempty{padding:30px 24px;text-align:center;color:var(--c-sub);font-size:14.5px;line-height:1.6}

/* 로그인 */
.clogin{flex:1;overflow-y:auto;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:26px 22px calc(26px + env(safe-area-inset-bottom,0px))}
.clogin .logo-c{width:56px;height:56px;border-radius:16px;background:linear-gradient(160deg,#5e9bff,#0a6cff);color:#fff;display:grid;place-items:center;font-weight:800;font-size:24px}
.clogin h4{margin:0;font-size:24px;line-height:1.3;font-weight:700;color:var(--c-them-ink)}
.clogin p{margin:0;color:var(--c-sub);font-size:15px;line-height:1.55}
.clogin .note{background:color-mix(in srgb,var(--c-me) 12%,transparent);color:var(--c-me);border-radius:12px;padding:10px 12px;font-size:14px;font-weight:600}
.clogin .agree{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.5;color:var(--c-sub)}
.clogin .agree input{margin-top:2px;width:20px;height:20px;accent-color:var(--c-me);flex:none}
.clogin .agree a{color:var(--c-me)}
.oauth{display:flex;align-items:center;justify-content:center;gap:10px;height:50px;border-radius:14px;border:1px solid var(--c-field-line);background:var(--c-field);color:var(--c-them-ink);font-weight:600;font-size:16px;text-decoration:none}
.oauth.discord{background:#5865f2;border-color:#5865f2;color:#fff}
.oauth[aria-disabled="true"]{opacity:.4;pointer-events:none}

/* 사진 크게 보기 */
.cviewer{position:fixed;inset:0;z-index:95;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;padding:calc(56px + env(safe-area-inset-top,0px)) 12px calc(24px + env(safe-area-inset-bottom,0px))}
.cviewer img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.cviewer .x{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:12px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.16);color:#fff;font-size:20px;cursor:pointer}
.cviewer a{position:absolute;top:calc(18px + env(safe-area-inset-top,0px));left:16px;color:#fff;font-size:15px;text-decoration:none}

.ctoast{position:absolute;left:50%;bottom:76px;transform:translateX(-50%);background:rgba(30,30,32,.92);color:#fff;font-size:13.5px;padding:8px 14px;border-radius:12px;z-index:5;max-width:86%;text-align:center}

/* 휴대폰: 전체 화면 */
@media (max-width:600px){
  .cfab{right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));height:52px}
  .cpanel{inset:0;width:100%;height:100%;border-radius:0;box-shadow:none;bottom:auto;right:auto}
  .cnav{padding-top:calc(6px + env(safe-area-inset-top,0px))}
  .bub{max-width:80%}
}
@media (prefers-reduced-motion:reduce){.csend,.cfield{transition:none}}
/* 아이폰에서 입력칸 누를 때 화면 확대 방지 */
@media (max-width:640px){.field input,.field select,.field textarea{font-size:16px}}
