:root{
  --navy:#1E3359; --navy2:#2B4776; --deep:#172846; --gold:#C9AA67; --gold2:#D8BF86; --bg:#F6F7F9; --paper:#fff; --ink:#1C2631; --muted:#5F6B78; --rule:#DCE2E9; --line:#C9D3DE;
  --ok:#2E6B3A; --okb:#F1F8F2; --warn:#9B4B0C; --warnb:#FFF8E6; --bad:#A12C2C; --badb:#FDF0F0; --blue:#1D5A94; --blueb:#EEF5FC;
  --ui:"Pretendard GOV","Pretendard","Apple SD Gothic Neo","Malgun Gothic","맑은 고딕","Noto Sans KR",system-ui,sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0}
body{font:16px/1.65 var(--ui);color:var(--ink);background:var(--bg);min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;word-break:keep-all;overflow-wrap:anywhere}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:1px solid var(--rule);background:#fff;border-radius:8px;padding:7px 14px}
button:hover:not(:disabled){border-color:#9AA7B4}
button:disabled{opacity:.5;cursor:default}
button.pri{background:var(--navy);border-color:var(--navy);color:#fff}
button.pri:hover:not(:disabled){background:var(--navy2)}
button.sm{font-size:13px;padding:3px 10px;border-radius:6px}
button.link{border:0;background:none;color:var(--blue);padding:0}
input[type=text],input[type=email],input[type=password],input[type=date],select,textarea{border:1px solid var(--rule);border-radius:8px;padding:8px 10px;background:#fff;width:100%}
textarea{resize:vertical;min-height:5em}
:focus-visible{outline:2px solid #3B7DD8;outline-offset:2px}

/* ── 머리·바닥 ── */
header#top{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:16px;padding:0 20px;height:58px;background:rgba(255,255,255,.95);border-bottom:1px solid var(--rule)}
.brand{display:flex;align-items:center;gap:8px;color:var(--navy);white-space:nowrap}
.brand:hover{text-decoration:none}.brand .mark{width:30px;height:30px;flex:0 0 30px}.brand b{font:700 17.5px/1 var(--ui);letter-spacing:-.01em}
#nav{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}
#nav a{color:var(--muted);padding:6px 12px;border-radius:18px;white-space:nowrap;font-size:14.5px}
#nav a:hover{color:var(--ink);text-decoration:none;background:#F0F3F7}
#nav a.on{color:var(--navy);background:#EAF0F7;font-weight:700}
#nav a .n{display:inline-block;min-width:18px;margin-left:4px;padding:0 5px;border-radius:9px;background:var(--gold2);color:#1C2631;font-size:11.5px;font-weight:700;text-align:center}
#who{display:flex;align-items:center;gap:8px;font-size:13.5px;white-space:nowrap}
#who a{color:var(--ink)}
#who button{background:#fff;border-color:var(--line);color:var(--navy);font-size:13px;padding:4px 12px;border-radius:16px}
#who button.pri{background:var(--navy);color:#fff;border-color:var(--navy)}
main{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:24px 20px 40px}
footer#foot{color:#7A8592;font-size:12px;line-height:1.8;padding:14px 20px 18px;text-align:center;border-top:1px solid var(--rule)}
footer#foot div{max-width:1000px;margin:0 auto}
footer#foot a,footer#foot .link{color:#5F6B78;font-size:12px}
footer#foot .cr{color:#97A0AA;font-size:11.5px;margin-top:2px}
.loading{color:var(--muted);padding:40px;text-align:center}
#toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:#1C2631;color:#fff;padding:10px 18px;border-radius:10px;font-size:14px;display:none;z-index:60;max-width:90vw}
#modal{position:fixed;inset:0;background:rgba(20,30,45,.45);z-index:45;display:flex;align-items:flex-start;justify-content:center;padding:5vh 12px;overflow:auto}
.mbox{background:#fff;border-radius:14px;width:min(760px,100%);box-shadow:0 10px 40px rgba(0,0,0,.25)}
.mhd{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--rule)}.mhd b{flex:1}
.mbd{padding:14px 18px 18px}

/* ── 소개(첫 방문): 법전 표지처럼 쪽빛 천에 금박 선 — 이상·규범·현실 세 원을 차례로 긋고, 셋이 겹친 가운데 '좋은 법'을 채움 ── */
#intro{--cloth:#172846;--foil:#C9AA67;--foil2:#D8BF86;--paper:#F3F2EE;--draw:cubic-bezier(.65,0,.35,1);--rise:cubic-bezier(.2,.7,.2,1);
  position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;text-align:center;padding:28px 18px;overflow:hidden;color:var(--paper);
  background:radial-gradient(120% 90% at 50% 38%,#1E3258 0%,#172846 48%,#111E36 100%)}
html.intro #intro{display:flex}
html.intro body{overflow:hidden}
#intro:focus{outline:none}
#intro .in-word{position:absolute;left:28px;top:24px;font:700 15px/1 var(--ui);letter-spacing:.02em;color:rgba(243,242,238,.78);opacity:0}
#intro .in-skip{position:absolute;right:16px;top:14px;background:none;border:0;color:rgba(243,242,238,.62);font-size:13.5px;line-height:1;padding:10px;border-radius:8px;opacity:0}
#intro .in-skip:hover{color:var(--paper);background:rgba(255,255,255,.06)}
#intro .in-skip:focus-visible{outline:2px solid rgba(243,242,238,.7);outline-offset:1px}
#intro .in-stage{position:relative;width:100%;max-width:720px}
.in-emb{display:block;width:min(296px,70vw);height:auto;margin:0 auto;overflow:visible}
.in-emb .ring{fill:none;stroke:var(--foil);stroke-width:1.6;stroke-dasharray:503;stroke-dashoffset:503}
.in-emb .core{fill:var(--foil);opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.86)}
.in-emb .ct{fill:var(--cloth);font:700 15px var(--ui);text-anchor:middle;dominant-baseline:central;letter-spacing:.04em;opacity:0}
.in-emb .lb{fill:var(--foil2);font:700 15px var(--ui);text-anchor:middle;dominant-baseline:central;letter-spacing:.18em;opacity:0}
.in-h{font:700 clamp(25px,3.4vw,34px)/1.38 var(--ui);letter-spacing:-.022em;margin:36px auto 14px;max-width:16em;text-wrap:balance;color:var(--paper);opacity:0;transform:translateY(8px)}
.in-p{font:400 clamp(15px,1.9vw,16.5px)/1.8 var(--ui);margin:0 auto 34px;max-width:30em;color:rgba(243,242,238,.68);opacity:0;transform:translateY(8px);text-wrap:balance}
.in-go{font:700 15.5px var(--ui);letter-spacing:.01em;color:var(--cloth);background:var(--foil);border:0;border-radius:10px;padding:13px 32px;opacity:0;transform:translateY(8px)}
.in-go:hover:not(:disabled){background:#D6BA7B}
.in-go:focus-visible{outline:2px solid var(--paper);outline-offset:3px}
#intro .in-go:disabled{opacity:0;cursor:default}     /* 다 그리기 전에는 숨김(누르지 못하게) — 애니메이션이 시작되면 그 값이 이김 */
/* 차례: 원 셋(0.2·0.45·0.7초부터 1.1초씩, 이름은 그어지는 대로) → 가운데 채움(1.65) → 문구(2.1~) → 시작 단추(2.45) */
#intro.go .in-word,#intro.go .in-skip{animation:inShow .7s ease .1s forwards}
#intro.go .rA{animation:inDraw 1.1s var(--draw) .2s forwards}#intro.go .rB{animation:inDraw 1.1s var(--draw) .45s forwards}#intro.go .rC{animation:inDraw 1.1s var(--draw) .7s forwards}
#intro.go .lA{animation:inShow .6s ease .8s forwards}#intro.go .lB{animation:inShow .6s ease 1.05s forwards}#intro.go .lC{animation:inShow .6s ease 1.3s forwards}
#intro.go .core{animation:inCore .7s var(--rise) 1.65s forwards}
#intro.go .ct{animation:inShow .5s ease 1.95s forwards}
#intro.go .in-h{animation:inRise .8s var(--rise) 2.1s forwards}
#intro.go .in-p{animation:inRise .8s var(--rise) 2.25s forwards}
#intro.go .in-go{animation:inRise .6s var(--rise) 2.45s forwards}
@keyframes inShow{to{opacity:1}}
@keyframes inRise{to{opacity:1;transform:none}}
@keyframes inDraw{to{stroke-dashoffset:0}}
@keyframes inCore{to{opacity:1;transform:none}}
/* 건너뛰거나 시작하면 끝 모습으로 맞춘 뒤 표지가 걷히듯 옅어지며 대화 화면으로 */
#intro.done .ring{stroke-dashoffset:0;animation:none}
#intro.done .core,#intro.done .ct,#intro.done .lb,#intro.done .in-h,#intro.done .in-p,#intro.done .in-go,#intro.done .in-word,#intro.done .in-skip{opacity:1;transform:none;animation:none}
#intro.out{opacity:0;pointer-events:none;transition:opacity var(--out,.4s) ease calc(var(--out,.4s) * .3)}     /* 글과 그림이 먼저 걷히고 표지 바탕이 뒤따라 옅어짐 */
#intro.out .in-stage,#intro.out .in-word,#intro.out .in-skip{opacity:0;transition:opacity calc(var(--out,.4s) * .45) ease,transform var(--out,.4s) ease}
#intro.out .in-stage{transform:scale(1.02)}
@media (prefers-reduced-motion:reduce){
  #intro *,#intro{animation:none!important;transition:none!important}
  #intro .ring{stroke-dashoffset:0}
  #intro .core,#intro .ct,#intro .lb,#intro .in-h,#intro .in-p,#intro .in-go,#intro .in-word,#intro .in-skip{opacity:1;transform:none}
}
@media (max-height:760px){.in-emb{width:min(250px,64vw)}.in-h{margin-top:26px}.in-p{margin-bottom:26px}}
@media (max-height:620px){.in-emb{width:min(190px,52vw)}.in-h{margin-top:18px;font-size:24px}.in-p{font-size:14px;margin-bottom:18px}}
@media (max-width:640px){#intro{padding:24px 16px}#intro .in-word{left:20px;top:22px;font-size:14px}.in-h{max-width:11em}}
/* 소개 뒤 첫 말풍선이 차례로 */
.thread.arrive>*{animation:msgIn .5s cubic-bezier(.2,.7,.2,1) both}
.thread.arrive>*:nth-child(2){animation-delay:.12s}.thread.arrive>*:nth-child(3){animation-delay:.24s}.thread.arrive>*:nth-child(4){animation-delay:.36s}.thread.arrive>*:nth-child(5){animation-delay:.48s}
@keyframes msgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.thread.arrive>*{animation:none}}

/* ── 대화 ── */
.chat{max-width:780px;margin:0 auto;display:flex;flex-direction:column;min-height:100%}
.thread{flex:1;padding:4px 0 6px}
.msg{display:flex;gap:10px;margin:12px 0;align-items:flex-start}
.msg .av{flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:#fff;border:1px solid var(--rule);display:flex;align-items:center;justify-content:center}
.msg .av svg{width:26px;height:26px}
.msg .b{max-width:84%;padding:10px 15px;border-radius:16px;line-height:1.72;font-size:16px;min-width:0}
.msg.ai .b{background:#fff;border:1px solid var(--rule);border-top-left-radius:6px}
.msg.me{justify-content:flex-end}
.msg.me .b{background:var(--navy);color:#fff;border-top-right-radius:6px}
.msg.me .b a{color:#fff;text-decoration:underline}
.msg .b.wide{flex:1;max-width:100%;padding:14px 18px}
.msg .who{display:block;font-size:12px;color:var(--muted);margin-bottom:2px}
.msg.me .who{color:rgba(255,255,255,.7)}
.msg.tip .b{background:#FBF8EE;border-color:#EADFB4;color:#5A4A12;font-size:13.5px}
.msg.sys{justify-content:center}.msg.sys .b{background:transparent;border:0;color:var(--muted);font-size:12.5px;padding:0 8px;text-align:center}
.msg .tm{display:block;font-size:11.5px;color:#9AA4B0;margin-top:4px}.msg.me .tm{color:rgba(255,255,255,.6);text-align:right}
.dots{display:inline-flex;gap:4px;padding:5px 2px}
.dots i{width:6px;height:6px;border-radius:50%;background:#9AA7B4;animation:dt 1s infinite ease-in-out}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes dt{0%,80%,100%{opacity:.3;transform:none}40%{opacity:1;transform:translateY(-3px)}}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:-2px 0 12px 42px}
.chips button{border-radius:14px;padding:7px 14px;font-size:14px;background:#fff;border:1px solid var(--line);text-align:left;line-height:1.45}
.chips button small{display:block;font-size:12px;color:var(--muted)}
.chips button:hover:not(:disabled){border-color:var(--navy);background:#F7F9FC}
.chips button.pri{background:var(--navy);border-color:var(--navy);color:#fff}.chips button.pri small{color:rgba(255,255,255,.75)}
.fchip{display:inline-flex;align-items:center;gap:6px;background:#F1F4F8;border:1px solid var(--rule);border-radius:10px;padding:3px 6px 3px 10px;font-size:13px;max-width:100%;color:var(--ink)}
.fchip .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:20em}
.fchip .s{color:var(--muted);font-size:12px;white-space:nowrap}
.fchip button{border:0;background:transparent;padding:0 4px;font-size:16px;line-height:1;color:var(--muted)}
a.fchip:hover{text-decoration:none;border-color:#9AA7B4}
.fchip.gone{border-style:dashed;opacity:.78;cursor:default}
.msg.me .fchip{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.25);color:#fff}.msg.me .fchip .s{color:rgba(255,255,255,.7)}
.msg.me .b a.fchip{text-decoration:none}.msg.me .b a.fchip:hover{border-color:rgba(255,255,255,.55)}
.fl{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.up{margin-top:6px;font-size:12.5px}
.up .bar{height:4px;background:rgba(255,255,255,.25);border-radius:2px;overflow:hidden;margin-top:3px}
.msg.ai .up .bar,.qc .up .bar{background:#E6EBF1}
.up .bar i{display:block;height:100%;width:0;background:var(--gold2);transition:width .2s}
/* 입력창 */
.composer{position:sticky;bottom:0;z-index:4;padding:12px 0 calc(8px + env(safe-area-inset-bottom));background:linear-gradient(to bottom,rgba(246,247,249,0),var(--bg) 22%)}
.cp-box{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 6px 22px rgba(20,35,58,.08);padding:6px}
.cp-box:focus-within{border-color:#7FA6D6;box-shadow:0 6px 24px rgba(31,53,80,.15)}
.cp-files{display:flex;flex-wrap:wrap;gap:6px;padding:4px 6px 2px}
.cp-files:empty{display:none}
.cp-row{display:flex;align-items:flex-end;gap:4px}
.cp-row textarea{flex:1;border:0;resize:none;min-height:0;height:44px;max-height:200px;padding:10px 6px;font-size:16px;line-height:1.5;outline:none;background:transparent;border-radius:0;overflow-y:hidden}
.cp-row textarea:focus-visible{outline:none}
.cp-clip,.cp-send{flex:0 0 42px;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0;border:0}
.cp-clip{background:transparent;color:#5F6B78}.cp-clip:hover:not(:disabled){background:#F0F3F7;color:var(--ink)}
.cp-send{background:var(--navy);color:#fff}.cp-send:hover:not(:disabled){background:var(--navy2)}
.cp-clip svg,.cp-send svg{width:21px;height:21px}
.cp-hint{font-size:12px;color:#8A95A2;text-align:center;margin-top:7px}
.cp-sug{display:flex;flex-direction:column;gap:2px;padding:2px 4px 4px}
.cp-sug:empty{display:none}
.cp-sug button{text-align:left;border:0;border-radius:10px;font-size:14px;padding:7px 10px;background:#F6F8FB}
.cp-sug button:hover,.cp-sug button:focus-visible{background:#EAF0F7}
.cp-sug button .s{font-size:12px;color:var(--muted);margin-left:6px}
.composer.off .cp-box{background:#F3F5F8;box-shadow:none}
/* 의뢰 정리 카드 */
.qc h4{margin:0 0 4px;font:700 15.5px var(--ui)}
.qc .lead2{font-size:13.5px;color:var(--muted);margin:0 0 6px}
.qc .fld{display:grid;grid-template-columns:6.4em 1fr;gap:6px 12px;align-items:start;margin:10px 0}
.qc .fld>.k{font-size:13.5px;color:var(--muted);padding-top:7px}
.qc .tg{display:flex;flex-wrap:wrap;gap:6px}
.qc .tg button{border-radius:999px;font-size:13.5px;padding:5px 12px}
.qc .tg button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.qc .cand{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.qc .cand button{font-size:13px;border-radius:999px;padding:3px 11px;background:#F6F8FB}
.qc .cand button.on{border-color:var(--ok);color:var(--ok);background:var(--okb)}
.qc .badge{display:inline-block;font-size:12px;color:var(--ok);background:var(--okb);border:1px solid #9BC7A4;border-radius:10px;padding:0 8px;margin-top:4px}
.qc .badge.no{color:var(--muted);background:#F3F5F8;border-color:var(--rule)}
.qc details{margin-top:8px}.qc details summary{cursor:pointer;color:var(--muted);font-size:13.5px}
.qc .go{display:flex;gap:8px;align-items:center;margin-top:14px;flex-wrap:wrap;border-top:1px dashed var(--rule);padding-top:12px}
.qc .go .pri{padding:9px 22px;font-weight:700;border-radius:22px}
.qc .go .note{flex:1 1 16em}
.qc .addf{font-size:13px;border-radius:10px;padding:3px 10px;border-style:dashed}
/* 로그인·가입(대화 안) */
.lg .form{max-width:none;gap:10px}.lg h4{margin:0 0 2px;font:700 15.5px var(--ui)}
.lg .row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lg .consent{font-size:12.5px;color:var(--muted);background:#F8FAFC;border:1px solid var(--rule);border-radius:8px;padding:8px 12px;line-height:1.7}
.lg .alt{font-size:13.5px;color:var(--muted)}
/* 끌어놓기 */
#dropov{position:fixed;inset:0;z-index:55;background:rgba(14,26,43,.55);display:flex;align-items:center;justify-content:center;padding:20px;pointer-events:none}
#dropov>div{background:#fff;border:2px dashed #7FA6D6;border-radius:22px;padding:34px 44px;text-align:center;max-width:520px;box-shadow:0 10px 40px rgba(0,0,0,.25)}
#dropov b{display:block;font-size:19px;color:var(--navy)}#dropov span{display:block;color:var(--muted);font-size:14px;margin-top:6px}
.dz{border:2px dashed var(--line);border-radius:14px;padding:18px;text-align:center;color:var(--muted);background:#FAFBFC}
.dz.on{border-color:#3B7DD8;background:var(--blueb)}
/* 의뢰 대화 머리 */
.rq-head{background:#fff;border:1px solid var(--rule);border-radius:14px;padding:14px 18px 12px;margin:0 0 4px}
.rq-head h2{font:700 19px/1.45 var(--ui);margin:2px 0 2px}
.rq-head .acts2{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}

/* ── 공통 ── */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:0 0 6px}
.card{background:#fff;border:1px solid var(--rule);border-radius:12px;padding:14px 16px}
.card h3{font:700 15.5px var(--ui);margin:0 0 4px}.card p{margin:0;color:var(--muted);font-size:14px;line-height:1.7}
.card .tag{display:inline-block;font-size:12px;border-radius:10px;padding:0 8px;margin-bottom:6px;background:var(--blueb);color:var(--blue)}
.sec{background:#fff;border:1px solid var(--rule);border-radius:14px;padding:20px 22px;margin-bottom:16px}
.sec>h2{font:700 20px var(--ui);margin:0 0 10px;letter-spacing:-.01em}
.sec>h3{font:700 16px var(--ui);margin:16px 0 6px}
.lead{color:var(--muted);font-size:14.5px;margin:-4px 0 14px}
.quote{border-left:4px solid var(--gold);padding:6px 14px;margin:10px 0;color:#3A4654;font:16px/1.8 var(--ui);background:#FBF8EE;border-radius:0 8px 8px 0}
.list{display:flex;flex-direction:column;gap:10px}
.row{background:#fff;border:1px solid var(--rule);border-radius:12px;padding:12px 16px;display:flex;gap:12px;align-items:center;cursor:pointer}
.row:hover{border-color:#9AA7B4}
.row .main{flex:1;min-width:0}.row .t{font-weight:700}.row .s{font-size:13px;color:var(--muted)}
.chip{display:inline-block;font-size:12.5px;border-radius:12px;padding:1px 10px;border:1px solid var(--rule);white-space:nowrap}
.chip.작성중{color:var(--muted)}.chip.접수{color:var(--blue);border-color:#9DBEE0;background:var(--blueb)}
.chip.검토중{color:#5B3E9B;border-color:#C3B4E6;background:#F5F1FC}.chip.보완요청{color:var(--warn);border-color:#E0B252;background:var(--warnb)}
.chip.완료{color:var(--ok);border-color:#9BC7A4;background:var(--okb)}.chip.취소{color:var(--muted);text-decoration:line-through}
.chip.AI정리{color:var(--blue);border-color:#9DBEE0;background:var(--blueb)}.chip.확인함{color:var(--ok);border-color:#9BC7A4;background:var(--okb)}
.chip.평가자고침,.chip.이용자고침{color:var(--warn);border-color:#E0B252;background:var(--warnb)}.chip.정리전,.chip.원문바뀜{color:var(--muted)}
.prog{display:flex;gap:0;margin:10px 0 2px;font-size:13px}
.prog span{flex:1;text-align:center;padding:5px 4px;background:var(--bg);color:var(--muted);border-right:2px solid #fff}
.prog span:first-child{border-radius:8px 0 0 8px}.prog span:last-child{border-radius:0 8px 8px 0;border-right:0}
.prog span.on{background:var(--navy);color:#fff;font-weight:700}.prog span.done{background:#DCE6F1;color:var(--navy)}
.kv{display:grid;grid-template-columns:7.5em 1fr;gap:6px 12px;font-size:14.5px}
.kv .k{color:var(--muted)}.kv .v{white-space:pre-wrap}
.res{border:1px solid #9BC7A4;background:#FAFDFB;border-radius:14px;padding:14px 16px}
.res h3{margin:0 0 4px;font:700 16px var(--ui)}
.res .files{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.res .disc{font-size:12.5px;color:var(--muted);border-top:1px dashed var(--rule);margin-top:10px;padding-top:8px}
.tbl{border-collapse:collapse;width:100%;font-size:13.5px;background:#fff;overflow-wrap:break-word}     /* 칸 너비를 낱말 단위로(실태조/사처럼 끊기지 않게) */
.tbl th,.tbl td{border:1px solid var(--rule);padding:6px 8px;text-align:left;vertical-align:top}
.tbl th{background:#F1F4F8;white-space:nowrap}
.tbl tr.click{cursor:pointer}.tbl tr.click:hover td{background:#F8FAFC}
.tbl .sub{font-size:12px;color:var(--muted)}.tbl .nw{white-space:nowrap}
.filters{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 12px}
.filters button{border-radius:16px;font-size:13.5px;padding:4px 12px}
.filters button.on{background:var(--navy);border-color:var(--navy);color:#fff}
.filters input{max-width:22em}
.profile{display:grid;grid-template-columns:repeat(auto-fill,minmax(14em,1fr));gap:8px 18px;margin:10px 0}
.profile .k{display:block;font-size:12.5px;color:var(--muted)}
.tl{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin:8px 0}
.tl span{font-size:12.5px;border:1px solid var(--rule);border-radius:12px;padding:1px 9px;background:#fff}
.tl span.ev{border-color:#C3B4E6;color:#5B3E9B;background:#F5F1FC}.tl i{color:#A9B4C0;font-style:normal}
.note{font-size:13px;color:var(--muted)}
.warnbox{background:var(--warnb);border:1px solid #E0B252;color:#7A4A06;border-radius:10px;padding:10px 14px;font-size:14px;margin:8px 0}
.okbox{background:var(--okb);border:1px solid #9BC7A4;color:var(--ok);border-radius:10px;padding:10px 14px;font-size:14px;margin:8px 0}
.form{display:flex;flex-direction:column;gap:12px;max-width:520px}
.form label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--muted)}
.form label.chk{flex-direction:row;align-items:flex-start;gap:8px;color:var(--ink)}
.form label.chk input{margin-top:5px}
.inrow{display:flex;gap:8px;margin-top:8px;align-items:flex-end}
.inrow textarea,.inrow input{flex:1}
.twocol{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.md{font:16px/1.8 var(--ui)}
.md h2,.md h3{font:700 16px var(--ui);color:var(--navy);margin:14px 0 4px}.md h4{font:700 14.5px var(--ui);margin:10px 0 2px}
.md p{margin:4px 0}.md ul,.md ol{margin:2px 0 8px;padding-left:1.4em}.md li.sub{margin-left:1.2em;list-style:circle}
.md table{border-collapse:collapse;margin:6px 0 10px;font-size:13.5px}.md th,.md td{border:1px solid var(--rule);padding:4px 8px}.md th{background:#F1F4F8}
.md blockquote{margin:4px 0;padding:2px 12px;border-left:3px solid var(--rule);color:var(--muted)}
.md code{background:#F1F4F8;padding:0 4px;border-radius:3px;font-size:13px}.md .pg{color:#5B3E9B;font-size:13px}
.adm .tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.adm .tabs button{border-radius:16px}.adm .tabs button.on{background:var(--navy);border-color:var(--navy);color:#fff}
.token{font:13px ui-monospace,Consolas,monospace;background:#F1F4F8;border-radius:6px;padding:8px 10px;word-break:break-all}
/* 자료 현황 목록·정리본 */
.crumb{font-size:13px;color:var(--muted);margin-bottom:4px}
.sec .acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}.sec .acts .grow{flex:1}
.stats{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.stats button{display:flex;flex-direction:column;align-items:flex-start;border-radius:10px;padding:6px 14px;min-width:6.8em}
.stats button b{font-size:19px;line-height:1.25}.stats button span{font-size:12.5px;color:var(--muted)}
.stats button.on{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}
.tw{overflow-x:auto}
.tbl.mat td.dg{min-width:11em}
.tbl.mat .see{display:inline-block;margin-top:3px;font-size:12.5px;color:var(--blue);font-weight:700}
.hh{font:700 15px var(--ui);margin:14px 0 6px;color:var(--ink)}
.legend,.log{margin-top:10px;font-size:13px}.legend summary,.log summary{cursor:pointer;color:var(--muted)}
.legend>div>div{margin:5px 0}.log>div{padding:2px 0;color:#3A4654}
.item .it-t{font:700 22px/1.4 var(--ui);margin:2px 0 4px}
.item .meta{font-size:13.5px;color:var(--muted)}
.item .fn{font-family:ui-monospace,Consolas,monospace;font-size:12.5px}
.prov{border:1px solid var(--rule);border-radius:10px;padding:10px 14px;margin:12px 0;background:#F8FAFC;font-size:14px}
.prov.확인함{border-color:#9BC7A4;background:var(--okb)}.prov.AI정리{border-color:#9DBEE0;background:var(--blueb)}
.prov.평가자고침,.prov.이용자고침,.prov.원문바뀜{border-color:#E0B252;background:var(--warnb)}
.prov .who{font-size:12.5px;color:var(--muted);margin-top:4px}
.sum{background:#FBF8EE;border-left:4px solid var(--gold);padding:8px 12px;border-radius:0 8px 8px 0;margin:10px 0}
.dglab{font:700 13px var(--ui);color:var(--navy);margin-top:14px;padding-bottom:4px;border-bottom:2px solid var(--navy)}.dglab span{font-weight:400;color:var(--muted);margin-left:6px;font-size:12.5px}
.digest{margin-top:2px}
.pager{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--rule);margin-top:14px;padding-top:10px;font-size:13.5px}
.pager a{max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.refs{margin-top:12px}.refs h4{font:700 15px var(--ui);margin:0 0 2px}
.hits{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.hit{display:block;border:1px solid var(--rule);border-radius:10px;padding:8px 12px;background:#fff;color:inherit}
.hit:hover{text-decoration:none;border-color:#9AA7B4;background:#FBFCFD}
.hit .t{font-weight:700}.hit .s{font-size:13.5px;color:#3A4654;margin-top:2px}
mark{background:#FFF0B3;color:inherit;padding:0 1px;border-radius:2px}
@media print{
  header#top,footer#foot,#toast,#modal,#intro,#dropov,.composer,.filters,.acts,.pager,.stats,.legend,button,.warnbox{display:none!important}
  body{background:#fff}main{padding:0;max-width:none}.sec{border:0;padding:0;margin:0 0 14px}a{color:inherit}
  .tbl.mat .see{display:none}.tbl tr.click{cursor:default}.digest{border:0}
}
@media (max-width:760px){
  .tbl.mat .kd{display:none}
  header#top{position:static;flex-wrap:wrap;height:auto;padding:8px 12px;gap:4px 8px}
  #nav{order:3;flex:1 0 100%}
  #who{margin-left:auto}
  main{padding:14px 12px 24px}
  .twocol{grid-template-columns:1fr}
  .msg .b{max-width:90%}
  .msg .av{flex-basis:28px;width:28px;height:28px}.msg .av svg{width:22px;height:22px}
  .chips{margin-left:0}
  .kv{grid-template-columns:1fr}
  .qc .fld{grid-template-columns:1fr}.qc .fld>.k{padding-top:0}
  .lg .row2{grid-template-columns:1fr}
  .cp-hint{display:none}
}
/* 글 속 작은 그림(클립·내려받기) — 글자 크기를 따라가고 글 줄에 맞춤 */
.ic{display:inline-block;width:1.08em;height:1.08em;vertical-align:-.2em;flex:0 0 auto;margin-right:.18em}
.fchip .n .ic{color:var(--muted);margin-right:.3em}
.msg.me .fchip .n .ic{color:inherit}
.cp-hint .ic{width:1.15em;height:1.15em;vertical-align:-.25em;margin:0 .05em}
button .ic{margin-right:.3em}
