:root {
    --font-mono: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace;
    color-scheme: light;

    /* 색상 토큰 (라이트 = 기본). Tailwind는 rgb(var(--law-x) / <alpha-value>) 로 참조 → opacity modifier 지원 */
    --law-bg: 250 249 247;             /* #FAF9F7 */
    --law-sidebar: 234 230 223;        /* #EAE6DF */
    --law-sidebar-hover: 224 219 212;  /* #E0DBD4 */
    --law-sidebar-active: 212 207 199; /* #D4CFC7 */
    --law-accent: 218 119 86;          /* rgb(var(--law-accent)) */
    --law-accent-hover: 196 101 74;    /* #C4654A */
    --law-accent-light: 245 230 223;   /* #F5E6DF */
    --law-text: 31 31 30;              /* #1F1F1E */
    --law-text-secondary: 74 74 72;    /* #4A4A48 */
    --law-border: 229 224 217;         /* #E5E0D9 */
    --law-input-bg: 255 255 255;       /* #FFFFFF */
    --law-surface: 255 255 255;        /* 카드/모달 배경 (구 bg-white) */
    --law-user-msg: 240 235 227;       /* #F0EBE3 */
    /* 마크다운 보조 토큰 */
    --law-code-bg: 240 235 227;        /* #F0EBE3 인라인 코드 배경 */
    --law-code-text: 199 37 78;        /* #C7254E 인라인 코드 글자 */
    --law-md-muted: 107 107 107;       /* #6B6B6B 인용구/마커 */
    --law-th-bg: 240 235 227;          /* #F0EBE3 표 헤더 */
    --law-scroll-thumb: 212 207 199;   /* #D4CFC7 스크롤바 */
}

/* 다크 테마 — html.dark 일 때 변수값만 교체 (마크업/클래스는 그대로) */
html.dark {
    color-scheme: dark;
    --law-bg: 38 38 36;                /* #262624 따뜻한 다크 */
    --law-sidebar: 31 30 29;           /* #1F1E1D */
    --law-sidebar-hover: 44 43 40;     /* #2C2B28 */
    --law-sidebar-active: 56 54 50;    /* #383632 */
    --law-accent: 218 119 86;          /* 브랜드색 유지 */
    --law-accent-hover: 230 142 110;   /* 다크에선 hover를 밝게 */
    --law-accent-light: 58 45 39;      /* 어두운 accent 틴트 */
    --law-text: 236 234 228;           /* #ECEAE4 */
    --law-text-secondary: 165 162 154; /* #A5A29A */
    --law-border: 58 57 54;            /* #3A3936 */
    --law-input-bg: 48 48 46;          /* #30302E */
    --law-surface: 48 48 46;           /* #30302E 카드/모달 */
    --law-user-msg: 56 54 50;          /* #383632 */
    --law-code-bg: 58 57 54;           /* #3A3936 */
    --law-code-text: 240 150 138;      /* #F0968A 밝은 핑크 */
    --law-md-muted: 165 162 154;
    --law-th-bg: 56 54 50;
    --law-scroll-thumb: 74 73 69;
}

html, body {
    overflow-x: hidden;
    max-width: 100vw;
}

[x-cloak] { display: none !important; }

/* 마크다운 스타일 */
.markdown-body {
    line-height: 1.65;
    overflow-wrap: anywhere;
    font-size: 0.9375rem;
}
.markdown-body > *:first-child { margin-top: 0; }
.markdown-body > *:last-child { margin-bottom: 0; }
.markdown-body h1 { font-size: 1.35rem; font-weight: 700; margin: 1.25rem 0 0.625rem; color: rgb(var(--law-text)); }
.markdown-body h2 { font-size: 1.125rem; font-weight: 700; margin: 1.25rem 0 0.625rem; color: rgb(var(--law-text)); }
.markdown-body h3 { font-size: 1rem; font-weight: 600; margin: 1rem 0 0.5rem; color: rgb(var(--law-text)); }
.markdown-body p { margin: 0.5rem 0; }
.markdown-body ul, .markdown-body ol { margin: 0.5rem 0; padding-left: 1.5rem; }
/* Tailwind Preflight가 list-style:none으로 리셋하므로 마커를 복구한다 */
.markdown-body ul { list-style: disc outside; }
.markdown-body ol { list-style: decimal outside; }
.markdown-body ul ul { list-style-type: circle; }
.markdown-body ul ul ul { list-style-type: square; }
.markdown-body ol ol { list-style-type: lower-alpha; }
.markdown-body ol ol ol { list-style-type: lower-roman; }
.markdown-body li { margin: 0.25rem 0; }
.markdown-body li::marker { color: rgb(var(--law-md-muted)); }
.markdown-body li > p { margin: 0.25rem 0; }
.markdown-body code {
    background: rgb(var(--law-code-bg));
    padding: 0.125rem 0.375rem;
    border-radius: 0.25rem;
    font-size: 0.8em;
    font-family: var(--font-mono);
    color: rgb(var(--law-code-text));
}
/* 코드 블록 래퍼 */
.code-block-wrapper {
    position: relative;
    margin: 0.75rem 0;
    border-radius: 0.75rem;
    overflow: hidden;
    background: #1E1E1E;
}
.code-block-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.375rem 0.75rem;
    background: #2D2D2D;
    border-bottom: 1px solid #3A3A3A;
}
.code-lang {
    font-size: 0.6875rem;
    color: #9A9A9A;
    font-family: var(--font-mono);
    text-transform: lowercase;
}
.code-copy-btn {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.2rem 0.5rem;
    border-radius: 0.375rem;
    font-size: 0.6875rem;
    color: #9A9A9A;
    background: transparent;
    border: none;
    cursor: pointer;
    transition: color 0.15s, background 0.15s;
}
.code-copy-btn:hover {
    color: #D4D4D4;
    background: #3A3A3A;
}
.code-copy-btn.copied {
    color: #4ADE80;
}
.code-block-wrapper pre {
    margin: 0 !important;
    border-radius: 0 !important;
}

.markdown-body pre {
    background: #1E1E1E;
    color: #D4D4D4;
    padding: 1rem;
    margin: 0.75rem 0;
    overflow-x: auto;
    font-size: 0.875rem;
    line-height: 1.5;
    border-radius: 0.75rem;
}
.markdown-body pre code {
    background: transparent;
    padding: 0;
    color: inherit;
    font-size: inherit;
    font-family: var(--font-mono);
}
.markdown-body blockquote {
    border-left: 3px solid rgb(var(--law-accent));
    padding-left: 1rem;
    color: rgb(var(--law-md-muted));
    margin: 0.75rem 0;
    font-style: italic;
}
.markdown-body a { color: rgb(var(--law-accent)); text-decoration: none; }
.markdown-body a:hover { text-decoration: underline; }
.markdown-body table { border-collapse: collapse; margin: 0.75rem 0; display: block; overflow-x: auto; max-width: 100%; }
.markdown-body th, .markdown-body td { border: 1px solid rgb(var(--law-border)); padding: 0.5rem 0.75rem; font-size: 0.875rem; }
.markdown-body th { background: rgb(var(--law-th-bg)); font-weight: 600; }
.markdown-body hr { border: none; border-top: 1px solid rgb(var(--law-border)); margin: 1.5rem 0; }
.markdown-body strong { font-weight: 600; color: rgb(var(--law-text)); }

/* 판례 상세 가독성 */
.legal-header {
    font-weight: 700;
    color: rgb(var(--law-text));
    margin: 1.1rem 0 0.4rem;
    font-size: 0.9375rem;
}

/* 사용자 메시지 접기 */
.user-msg-content {
    white-space: pre-wrap;
    line-height: 1.5;
}
.user-msg-content.collapsed {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    white-space: normal;
    word-break: break-word;
    padding-bottom: 0.25rem !important;
}

/* 세션 더보기 버튼: 터치 기기에서 숨김 (모바일은 롱프레스 사용) */
@media (hover: none), (pointer: coarse) {
    .session-more-btn {
        display: none !important;
    }
}

/* AI 응답 복사 버튼 */
.ai-msg-copy-btn.copied {
    color: #4ADE80 !important;
}

/* 스크롤바 (모바일에서 얇게) */
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgb(var(--law-scroll-thumb)); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #B8B3AB; }

/* 스크롤바 숨김 */
.scrollbar-hide::-webkit-scrollbar { display: none; }
.scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; }

/* 라인 클램프 */
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* 판례 검색 결과 동적 프리뷰의 키워드 하이라이트 (FTS5 snippet 매칭어). 다크 대응. */
mark.search-hl {
    background: #fde68a;          /* amber-200 */
    color: inherit;
    border-radius: 2px;
    padding: 0 1px;
}
html.dark mark.search-hl {
    background: rgba(250, 204, 21, 0.28);  /* amber, 다크에서 톤다운 */
    color: inherit;
}
