@font-face{font-family:'Paperlogy';font-weight:400;src:url('https://cdn.jsdelivr.net/gh/fonts-archive/Paperlogy/Paperlogy-4Regular.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Paperlogy';font-weight:500;src:url('https://cdn.jsdelivr.net/gh/fonts-archive/Paperlogy/Paperlogy-5Medium.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Paperlogy';font-weight:600;src:url('https://cdn.jsdelivr.net/gh/fonts-archive/Paperlogy/Paperlogy-6SemiBold.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Paperlogy';font-weight:700;src:url('https://cdn.jsdelivr.net/gh/fonts-archive/Paperlogy/Paperlogy-7Bold.woff2') format('woff2');font-display:swap}

:root{
  --bg:#F3F5FA; --panel:#FFFFFF; --ink:#0D1424; --sub:#4E5A73; --mut:#87919F;
  --line:#E4E9F1; --line2:#EFF2F7;
  --acc:#4338CA; --accS:#6155E3; --accL:#EEEDFD; --accD:#2D2790;
  --amber:#C07C0B; --amberL:#FFF6E4; --ok:#0F7A52; --okL:#E7F6EF; --red:#C3392F; --redL:#FDEDEC;
  --side:#0B1120; --side2:#161F35; --sideLine:#242F49;
  --r:14px; --sh:0 1px 2px rgba(13,20,36,.05), 0 10px 28px -16px rgba(13,20,36,.28);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Paperlogy','페이퍼로지 4 Regular','Malgun Gothic',sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea{font-family:inherit;outline:none}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#CBD3E1;border-radius:9px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

.app{position:relative;height:100%;min-height:660px;overflow:hidden}

/* ============ sidebar ============ */
.side{position:absolute;left:0;top:0;bottom:0;width:252px;background:var(--side);padding:20px 0 0;z-index:5}
.brand{display:flex;align-items:center;gap:11px;padding:0 20px 18px}
.brand .mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#5B4BE8,#8C6BFF);color:#fff;font-weight:700;font-size:17px;display:flex;align-items:center;justify-content:center;letter-spacing:-.5px}
.brand b{display:block;color:#fff;font-size:15px;font-weight:700;letter-spacing:-.3px}
.brand span{display:block;color:#6C7794;font-size:10px;letter-spacing:1.4px;margin-top:2px}
.navlab{color:#4A5670;font-size:10px;font-weight:600;letter-spacing:1.3px;padding:0 22px;margin:16px 0 6px}
.nav a{display:flex;align-items:center;gap:11px;padding:11px 22px;color:#A9B4CB;font-size:14px;border-left:3px solid transparent;transition:.15s}
.nav a:hover{background:#111A2C;color:#DDE4F2}
.nav a svg{width:17px;height:17px;flex:0 0 17px;stroke:#77839E;fill:none;stroke-width:1.8}
.nav a.on{background:var(--side2);color:#fff;font-weight:600;border-left-color:var(--accS)}
.nav a.on svg{stroke:#9A8CFF}
.nav a .badge2{margin-left:auto;background:#3A2F8F;color:#C6BDFF;font-size:10px;font-weight:700;padding:2px 7px;border-radius:20px}
.sidefoot{position:absolute;left:16px;right:16px;bottom:16px;background:var(--side2);border:1px solid var(--sideLine);border-radius:12px;padding:13px}
.sidefoot b{display:block;color:#fff;font-size:12px;margin-bottom:5px}
.sidefoot span{display:block;color:#7D89A5;font-size:11px;line-height:1.65}
.sidefoot .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#31C48D;margin-right:5px;vertical-align:middle}

/* ============ main ============ */
.main{position:absolute;left:252px;right:0;top:0;bottom:0;display:flex;flex-direction:column}
.topbar{flex:0 0 auto;height:58px;background:rgba(255,255,255,.86);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 26px;gap:14px}
.crumb{font-size:12.5px;color:var(--mut)}
.crumb b{color:var(--ink);font-weight:600}
.tbright{margin-left:auto;display:flex;align-items:center;gap:10px}
.iconbtn{width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;position:relative}
.iconbtn:hover{border-color:#C9D0DE}
.iconbtn svg{width:16px;height:16px;stroke:#5A6580;fill:none;stroke-width:1.8}
.iconbtn .dotN{position:absolute;top:7px;right:8px;width:7px;height:7px;background:#E5484D;border-radius:50%;border:1.5px solid #fff}
.me{display:flex;align-items:center;gap:9px;padding:5px 11px 5px 5px;border:1px solid var(--line);border-radius:20px;background:#fff}
.me i{width:26px;height:26px;border-radius:50%;background:#4338CA;color:#fff;font-style:normal;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.me span{font-size:12.5px;font-weight:600}
.scroll{flex:1 1 auto;overflow-y:auto;padding:22px 26px 26px}

.head{margin-bottom:16px}
.pill{display:inline-block;background:var(--accL);color:var(--accD);font-size:11.5px;font-weight:600;padding:4px 11px;border-radius:20px;margin-bottom:9px}
.head h1{font-size:24px;font-weight:700;letter-spacing:-.5px}
.head p{color:var(--sub);font-size:13px;margin-top:6px}
.head .act{float:right;display:flex;gap:8px;margin-top:6px}

.view{display:none}
.view.on{display:block}
.grid{display:flex;gap:16px;align-items:flex-start}
.gL{flex:1 1 auto;min-width:0}
.gR{flex:0 0 358px;width:358px}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin-bottom:14px;box-shadow:var(--sh)}
.card.pad0{padding:0;overflow:hidden}
.card h3{font-size:15px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.card h3 .more{margin-left:auto;font-size:12px;color:var(--acc);font-weight:600}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--acc);color:#fff;border-radius:10px;padding:9px 15px;font-size:13px;font-weight:600;transition:.15s}
.btn:hover{background:var(--accD)}
.btn.ghost{background:#fff;color:var(--acc);border:1px solid #CFCBF6}
.btn.ghost:hover{background:var(--accL)}
.btn.gray{background:#fff;color:var(--sub);border:1px solid var(--line)}
.btn.gray:hover{border-color:#C9D0DE;background:#FAFBFD}
.btn.sm{padding:6px 11px;font-size:12px;border-radius:9px}
.btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2}

.badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:6px}
.b-red{background:var(--redL);color:var(--red)}
.b-amb{background:var(--amberL);color:var(--amber)}
.b-grn{background:var(--okL);color:var(--ok)}
.b-blu{background:var(--accL);color:var(--accD)}
.b-gray{background:#F0F2F7;color:#69748C}
.tag{display:inline-block;font-size:11.5px;color:var(--accD);background:var(--accL);border-radius:7px;padding:4px 9px;margin:0 5px 5px 0}
.muted{color:var(--mut);font-size:12px}

/* ============ chat ============ */
.chatwrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);display:flex;flex-direction:column;height:calc(100vh - 190px);min-height:520px}
.chatlog{flex:1 1 auto;overflow-y:auto;padding:20px 22px}
.msg{margin-bottom:16px;display:flex;gap:11px}
.msg.u{justify-content:flex-end}
.ava{flex:0 0 30px;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#5B4BE8,#8C6BFF);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.bub{max-width:74%;padding:13px 16px;border-radius:14px;font-size:14px;line-height:1.75}
.msg.u .bub{background:var(--acc);color:#fff;border-bottom-right-radius:4px}
.msg.a .bub{background:#F6F7FB;border:1px solid var(--line2);border-bottom-left-radius:4px}
.bub b{font-weight:700;color:var(--accD)}
.bub .li{display:block;margin-top:5px;padding-left:12px;position:relative}
.bub .li:before{content:'';position:absolute;left:0;top:9px;width:4px;height:4px;border-radius:50%;background:#A9B2C6}
.opt{display:block;width:100%;text-align:left;border:1px solid var(--line);border-radius:11px;padding:11px 13px;margin-top:8px;background:#fff;transition:.15s}
.opt:hover{border-color:var(--acc);background:#FBFAFF;transform:translateY(-1px)}
.opt .n{display:inline-flex;width:21px;height:21px;background:var(--accL);color:var(--accD);border-radius:7px;align-items:center;justify-content:center;font-size:11px;font-weight:700;margin-right:9px;vertical-align:middle}
.opt b{font-size:13px;color:var(--ink)}
.opt p{color:var(--sub);font-size:12px;margin:5px 0 0 30px;line-height:1.6}
.opt.sel{border-color:var(--acc);background:#F5F4FF}
.opt.sel .n{background:var(--acc);color:#fff}
.opt.dim{opacity:.45;pointer-events:none}
.src{margin-top:11px;padding-top:10px;border-top:1px dashed #E1E6F0;color:var(--mut);font-size:11.5px;line-height:1.7}
.src a{color:var(--acc);font-weight:600;border-bottom:1px solid #CFCBF6}
.typing span{display:inline-block;width:6px;height:6px;background:#B6BECD;border-radius:50%;margin-right:4px;animation:bl 1.2s infinite}
.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}
@keyframes bl{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.composer{flex:0 0 auto;border-top:1px solid var(--line);padding:13px 16px}
.cbox{display:flex;align-items:flex-end;gap:9px;border:1px solid var(--line);border-radius:13px;padding:9px 10px 9px 14px;background:#FCFDFE}
.cbox:focus-within{border-color:var(--acc);background:#fff;box-shadow:0 0 0 3px rgba(67,56,202,.09)}
.cbox textarea{flex:1;border:none;background:none;resize:none;font-size:14px;line-height:1.6;max-height:110px;color:var(--ink);padding:4px 0}
.chips{margin-top:10px;display:flex;flex-wrap:wrap;gap:7px}
.chip{border:1px solid var(--line);background:#fff;border-radius:20px;padding:7px 13px;font-size:12.5px;color:var(--sub);transition:.15s}
.chip:hover{border-color:var(--acc);color:var(--accD);background:var(--accL)}

/* ============ list rows ============ */
.rowitem{display:block;width:100%;text-align:left;padding:15px 0;border-bottom:1px solid var(--line2);transition:.12s}
.rowitem:last-child{border-bottom:none}
.rowitem:hover{background:#FAFBFE}
.rowitem .ttl{font-size:14.5px;font-weight:600;margin-top:7px}
.rowitem .sub{color:var(--sub);font-size:12.5px;margin-top:5px;line-height:1.65}
.rowitem .meta{color:var(--mut);font-size:11.5px;margin-top:7px}
.rowitem .arw{float:right;color:#C3CAD8;font-size:16px}

/* widgets */
.wi{padding:12px 0;border-bottom:1px solid var(--line2)}
.wi:last-child{border-bottom:none;padding-bottom:0}
.wi b{font-size:13px}
.wi p{color:var(--mut);font-size:11.5px;margin-top:5px;line-height:1.6}
.dd{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;margin-right:7px}
.kv{display:flex;padding:10px 0;border-bottom:1px solid var(--line2);font-size:12.5px}
.kv:last-child{border-bottom:none}
.kv span{flex:0 0 40%;color:var(--mut)}
.kv b{flex:1;font-weight:600;text-align:right}
.statrow{display:flex;gap:9px}
.stat{flex:1;background:#F7F8FC;border:1px solid var(--line2);border-radius:11px;padding:12px}
.stat .v{font-size:22px;font-weight:700;color:var(--acc)}
.stat .k{font-size:11.5px;color:var(--mut);margin-top:2px}
.bar{height:7px;background:#EDF0F6;border-radius:5px;margin-top:8px;overflow:hidden}
.bar i{display:block;height:7px;border-radius:5px;background:var(--acc)}
.note{background:#F6F7FB;border:1px solid var(--line2);border-radius:11px;padding:12px 14px;color:var(--sub);font-size:12px;line-height:1.7}

/* search */
.sbar{display:flex;gap:9px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:10px 10px 10px 15px;box-shadow:var(--sh);align-items:center}
.sbar svg{width:17px;height:17px;stroke:#8A94A8;fill:none;stroke-width:2;flex:0 0 17px}
.sbar input{flex:1;border:none;font-size:14px;color:var(--ink);background:none}
.sres{margin-top:10px}
.sresitem{display:block;width:100%;text-align:left;padding:13px 15px;border:1px solid var(--line);background:#fff;border-radius:12px;margin-bottom:8px}
.sresitem:hover{border-color:var(--acc);background:#FBFAFF}
.sresitem b{font-size:14px}
.sresitem p{color:var(--sub);font-size:12.5px;margin-top:4px}

/* law doc */
.dochead{border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:6px}
.dochead h2{font-size:21px;font-weight:700;letter-spacing:-.4px}
.dochead .m{color:var(--mut);font-size:12.5px;margin-top:7px}
.dochead .acts{float:right;display:flex;gap:8px}
.art{padding:15px 0;border-bottom:1px solid var(--line2)}
.art:last-child{border-bottom:none}
.art > b{display:block;font-size:14.5px;margin-bottom:7px}
.art p b{color:var(--ink)}
.art p{font-size:13px;color:#3B4661;line-height:1.9}
.hl{background:#FFF1BE;font-weight:600;padding:1px 3px;border-radius:3px}
.hit{background:#D8F5E4;padding:1px 3px;border-radius:3px}
.tbl{width:100%;border-collapse:collapse;font-size:12px}
.tbl th{background:#F5F7FB;color:#57627A;font-weight:600;padding:9px 8px;text-align:left;border-bottom:1px solid var(--line)}
.tbl td{padding:9px 8px;border-bottom:1px solid var(--line2);color:#3B4661;vertical-align:top;line-height:1.6}
.dlbtn{display:flex;align-items:center;width:100%;text-align:left;background:#F7F8FC;border:1px solid var(--line);border-radius:11px;padding:11px 13px;margin-bottom:8px;font-size:12.5px;transition:.15s}
.dlbtn:hover{border-color:var(--acc);background:#FBFAFF}
.dlbtn .fi{flex:0 0 30px;width:30px;height:30px;border-radius:8px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:var(--acc);margin-right:11px}
.dlbtn em{margin-left:auto;font-style:normal;color:var(--acc);font-size:11.5px;font-weight:600}

/* diff */
.diff{display:flex;gap:12px}
.diffcol{flex:1;border:1px solid var(--line);border-radius:12px;padding:14px}
.diffcol.old{background:#FDF7F7;border-color:#F3DEDC}
.diffcol.new{background:#F4FBF7;border-color:#D8EDE3}
.diffcol h4{font-size:12px;font-weight:700;margin-bottom:9px}
.diffcol p{font-size:12.5px;line-height:1.85;color:#3B4661}

/* upload */
.drop{border:1.5px dashed #CBD3E4;border-radius:14px;padding:26px;text-align:center;background:#FBFCFE;transition:.15s}
.drop:hover{border-color:var(--acc);background:#FAFAFF}
.drop b{display:block;font-size:14px;margin-top:10px}
.drop span{display:block;color:var(--mut);font-size:12px;margin-top:5px}
.filerow{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;margin-top:11px}
.filerow .fi{width:34px;height:34px;border-radius:9px;background:var(--accL);color:var(--accD);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}
.filerow b{font-size:13.5px}
.filerow span{display:block;color:var(--mut);font-size:11.5px;margin-top:3px}
.finding{border:1px solid var(--line);border-left:4px solid var(--red);border-radius:11px;padding:13px 15px;margin-bottom:9px;background:#fff}
.finding.warn{border-left-color:var(--amber)}
.finding.ok{border-left-color:var(--ok)}
.finding b{font-size:13.5px}
.finding p{color:var(--sub);font-size:12.5px;margin-top:6px;line-height:1.7}
.finding .fix{background:#F6F7FB;border-radius:9px;padding:9px 11px;margin-top:9px;font-size:12.5px;color:#2F3A54;line-height:1.7}
.score{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,#0F1730,#232F52);border-radius:13px;padding:17px 20px;color:#fff;margin-bottom:14px}
.score .n{font-size:34px;font-weight:700;line-height:1}
.score .t b{display:block;font-size:14px}
.score .t span{display:block;color:#A7B2CC;font-size:12px;margin-top:4px}

/* modal / toast */
.modal{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(11,17,32,.5);display:none;z-index:50;padding:40px 20px;overflow-y:auto}
.modal.on{display:block}
.mbox{max-width:600px;margin:0 auto;background:#fff;border-radius:16px;padding:24px 26px;box-shadow:0 24px 60px rgba(11,17,32,.3)}
.mbox.wide{max-width:820px}
.mbox h3{font-size:18px;font-weight:700}
.mbox .d{color:var(--mut);font-size:12.5px;margin:7px 0 16px}
.mfoot{margin-top:18px;padding-top:16px;border-top:1px solid var(--line2);display:flex;justify-content:flex-end;gap:9px}
.lawchk{display:inline-block;width:calc(33.33% - 7px);margin:0 7px 9px 0;border:1px solid var(--line);border-radius:11px;padding:11px;font-size:13px;color:var(--sub);text-align:left}
.lawchk:nth-child(3n){margin-right:0}
.lawchk.on{border-color:var(--acc);background:var(--accL);color:var(--accD);font-weight:600}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:#0D1424;color:#fff;padding:12px 20px;border-radius:11px;font-size:13px;opacity:0;transition:.25s;z-index:80;box-shadow:0 12px 30px rgba(0,0,0,.25)}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.skel{height:14px;background:linear-gradient(90deg,#EEF1F6,#F7F9FC,#EEF1F6);background-size:200% 100%;animation:sk 1.1s infinite;border-radius:6px;margin-bottom:9px}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}
.empty{text-align:center;padding:40px 20px;color:var(--mut);font-size:13px}
.inp{border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12.5px;width:190px;text-align:right}
.inp:focus{border-color:var(--acc)}

/* --- legacy engine spacing fallbacks (gap 미지원 환경) --- */
.brand .mark{margin-right:11px}
.nav a svg{margin-right:11px}
.msg .ava{margin-right:11px}
.filerow .fi{margin-right:12px}
.sbar svg{margin-right:10px}
.sbar input{margin-right:10px}
.btn svg{margin-right:6px}
.statrow .stat{margin-right:9px}
.statrow .stat:last-child{margin-right:0}
.diff .diffcol{margin-right:12px}
.diff .diffcol:last-child{margin-right:0}
.grid .gL{margin-right:16px}
.head .act .btn{margin-left:8px}
.tbright .iconbtn{margin-left:10px}
.tbright .me{margin-left:10px}
.cbox textarea{margin-right:9px}
.score .n{margin-right:16px}
.finding .badge{margin-right:6px}
.mfoot .btn{margin-left:9px}
.chatwrap{overflow:hidden}

