:root {
    /* 미러볼뮤직 브랜드 (mirrorballmusic.co.kr): 블루 #0099cc, 민트 #99cccc */
    --bg: #f3f7f8;
    --surface: #ffffff;
    --text: #1b2a33;
    --muted: #66757f;
    --line: #dfe8eb;
    --primary: #0099cc;
    --primary-dark: #007ba6;
    --primary-soft: #e3f4fa;
    --mint: #99cccc;
    --mint-soft: #eaf5f5;
    --topbar-h: 60px;
    --success-bg: #e8f6ee;
    --success: #1a7f45;
    --error-bg: #fdecec;
    --error: #c62828;
    --radius: 8px;

    /* 화면 곳곳의 면·선 색 - 다크 모드에서 아래 [data-theme="dark"] 로 바뀐다 */
    --mint-text: #2f7373;
    --input-bg: #ffffff;
    --input-border: #cfd5de;
    --hover: #f0f1f4;
    --th-bg: #f3f9fa;
    --row-hover: #f2fafc;
    --soft-bg: #f8fbfc;
    --popover-bg: #ffffff;
    --track: #e9ebf0;
    --dot: #c5cad3;
    --disabled: #b5bbc6;
    --status-off-bg: #eef0f3;
    --warn-bg: #fff1e0;
    --warn: #b25e00;
    --unread-bg: #fff7f7;
    --pinned-bg: #fffaf0;
    --danger-border: #f1c4c4;
    --shadow: rgba(20, 70, 90, .05);
    --shadow-strong: rgba(29, 36, 51, .12);
    --topbar-bg: linear-gradient(100deg, #0099cc 0%, #1fa9cf 60%, #4fb9c9 100%);
    --login-bg: radial-gradient(1200px 600px at 10% -10%, #c7e6e6 0%, transparent 60%), radial-gradient(900px 500px at 110% 110%, #bfe6f3 0%, transparent 55%), #eaf5f5;
    --login-brand-bg: linear-gradient(120deg, #0099cc 0%, #2aaecd 55%, #66c0c6 100%);
    color-scheme: light;
}

/* 다크 모드 - 상단의 해/달 버튼으로 켜고 끈다 (layouts.app 의 data-theme). 브랜드 블루·민트는 어두운 바탕에 맞게 밝게. */
:root[data-theme="dark"] {
    --bg: #0e171c;
    --surface: #152229;
    --text: #dbe7ec;
    --muted: #8ba0aa;
    --line: #253740;
    --primary: #33b5e0;
    --primary-dark: #0a7fa6;
    --primary-soft: #11303b;
    --mint: #4f9e9e;
    --mint-soft: #13282a;
    --success-bg: #11301f;
    --success: #5fd18e;
    --error-bg: #3a1c20;
    --error: #ff7f7f;
    --mint-text: #8fd0d0;
    --input-bg: #0f1b21;
    --input-border: #2f4651;
    --hover: #1d2f38;
    --th-bg: #1a2b33;
    --row-hover: #1a2d36;
    --soft-bg: #121f26;
    --popover-bg: #1a2a32;
    --track: #263a43;
    --dot: #4d626c;
    --disabled: #4d626c;
    --status-off-bg: #22343c;
    --warn-bg: #3a2a12;
    --warn: #f2b45c;
    --unread-bg: #2e1a1e;
    --pinned-bg: #2b2513;
    --danger-border: #6b3237;
    --shadow: rgba(0, 0, 0, .25);
    --shadow-strong: rgba(0, 0, 0, .5);
    --topbar-bg: linear-gradient(100deg, #075a76 0%, #0a6a82 60%, #1b7480 100%);
    --login-bg: radial-gradient(1200px 600px at 10% -10%, #123438 0%, transparent 60%), radial-gradient(900px 500px at 110% 110%, #0d2f3d 0%, transparent 55%), #0b1418;
    --login-brand-bg: linear-gradient(120deg, #07627f 0%, #0b7590 55%, #2a8389 100%);
    color-scheme: dark;
}

/* 에디터(CKEditor) 다크 모드 */
:root[data-theme="dark"] {
    --ck-color-base-background: #0f1b21;
    --ck-color-base-foreground: #1a2a32;
    --ck-color-base-border: #2f4651;
    --ck-color-text: #dbe7ec;
    --ck-color-toolbar-background: #1a2b33;
    --ck-color-toolbar-border: #2f4651;
    --ck-color-button-default-hover-background: #253a44;
    --ck-color-button-default-active-background: #2c4550;
    --ck-color-button-on-background: #11303b;
    --ck-color-button-on-hover-background: #17404e;
    --ck-color-button-on-color: #5cc6e9;
    --ck-color-dropdown-panel-background: #1a2a32;
    --ck-color-dropdown-panel-border: #2f4651;
    --ck-color-panel-background: #1a2a32;
    --ck-color-panel-border: #2f4651;
    --ck-color-input-background: #0f1b21;
    --ck-color-input-border: #2f4651;
    --ck-color-input-text: #dbe7ec;
    --ck-color-list-background: #1a2a32;
    --ck-color-list-button-hover-background: #253a44;
    --ck-color-list-button-on-background: #0a7fa6;
    --ck-color-labeled-field-label-background: #1a2a32;
    --ck-color-split-button-hover-background: #253a44;
    --ck-color-focus-border: #33b5e0;
    --ck-color-shadow-drop: rgba(0, 0, 0, .4);
    --ck-color-image-caption-background: #1a2b33;
    --ck-color-image-caption-text: #8ba0aa;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    background: var(--bg);
    color: var(--text);
    font: 14px/1.5 -apple-system, BlinkMacSystemFont, "Pretendard", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
}

a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 22px; margin: 0; }
h2 { font-size: 17px; margin: 28px 0 8px; }
h1 small, h2 small { font-size: 13px; font-weight: normal; margin-left: 6px; }
.muted { color: var(--muted); }
.mono { font-family: Consolas, "SFMono-Regular", Menlo, monospace; font-size: 12.5px; }
.hint { color: var(--muted); margin: 0 0 10px; font-size: 13px; }

/* 상단 바 - 흰색 로고(images/mirrorball-logo.png)를 브랜드 블루 위에, 아래에 민트 선 */
.topbar { position: sticky; top: 0; z-index: 30; background: var(--topbar-bg); color: #fff; border-bottom: 3px solid var(--mint); box-shadow: 0 2px 10px rgba(0, 80, 110, .12); }
.topbar-inner { max-width: 1280px; margin: 0 auto; padding: 0 16px; min-height: var(--topbar-h); display: flex; align-items: center; gap: 28px; }
.brand { display: inline-flex; align-items: center; gap: 10px; color: #fff; flex-shrink: 0; }
.brand img { display: block; height: 28px; width: auto; }
.brand span { font-size: 12px; font-weight: 700; letter-spacing: .08em; padding: 3px 8px; border-radius: 999px; background: rgba(255, 255, 255, .2); border: 1px solid rgba(255, 255, 255, .35); }
.brand:hover { text-decoration: none; }
.nav { display: flex; gap: 2px; flex: 1; min-width: 0; }
.nav > a, .nav-group-toggle { color: rgba(255, 255, 255, .88); padding: 7px 13px; border-radius: 999px; font-weight: 500; white-space: nowrap; transition: background .15s, color .15s; }
.nav > a:hover, .nav-group-toggle:hover, .nav-group.open .nav-group-toggle { color: #fff; background: rgba(255, 255, 255, .16); text-decoration: none; }
.nav > a.active, .nav-group-toggle.active, .nav-group.open .nav-group-toggle.active { color: var(--primary-dark); background: #fff; font-weight: 700; box-shadow: 0 1px 4px rgba(0, 60, 90, .15); }
.who { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #fff; white-space: nowrap; }
.who form { margin: 0; }
.link { background: none; border: 0; color: #fff; opacity: .85; cursor: pointer; font: inherit; padding: 0 0 0 8px; text-decoration: underline; text-underline-offset: 3px; }
.link:hover { opacity: 1; }

.badge { font-size: 11px; padding: 2px 8px; border-radius: 10px; font-weight: 700; }
.badge-admin { background: #fff; color: var(--primary-dark); }
.badge-company { background: var(--mint-soft); color: var(--mint-text); }

/* 로그인 화면 - 상단 바 없이 브랜드 카드 */
body.is-login { min-height: 100vh; background: var(--login-bg); }
body.is-login .topbar { display: none; }
body.is-login .container { padding-top: 9vh; }

.container { max-width: 1280px; margin: 0 auto; padding: 24px 16px 60px; }

.page-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 8px 0 16px; flex-wrap: wrap; }
.page-head h2 { margin: 0; }
.breadcrumb { font-size: 13px; color: var(--muted); margin-bottom: 4px; }

/* 알림 */
.alert { padding: 10px 14px; border-radius: var(--radius); margin-bottom: 16px; }
.alert-success { background: var(--success-bg); color: var(--success); }
.alert-error { background: var(--error-bg); color: var(--error); }

/* 버튼 */
.btn {
    display: inline-block; padding: 7px 14px; border-radius: 6px; border: 1px solid var(--line);
    background: var(--surface); color: var(--text); font: inherit; cursor: pointer; white-space: nowrap;
}
.btn:hover { background: var(--hover); text-decoration: none; }
.btn-primary { background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 600; }
.btn-primary:hover { background: var(--primary-dark); }
.btn-danger { border-color: var(--danger-border); color: var(--error); }
.btn-danger:hover { background: var(--error-bg); border-color: var(--error); }
.btn-ghost {border-color: transparent; background: transparent; color: var(--muted); }
.btn-sm { padding: 3px 10px; font-size: 12.5px; }
.btn-block { display: block; width: 100%; padding: 10px; }

/* 카드·폼 */
.card { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; padding: 20px; margin-bottom: 16px; box-shadow: 0 1px 3px var(--shadow); }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 20px; }
.form-grid .full { grid-column: 1 / -1; }
.form-inline { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; }
.field { display: flex; flex-direction: column; gap: 5px; }
.field > span { font-size: 13px; font-weight: 600; }
.field em { color: var(--error); font-style: normal; }
.field .static { padding: 8px 0; }
input[type=text], input[type=search], input[type=password], input[type=number], input[type=date], input[type=month], select, textarea {
    font: inherit; padding: 8px 10px; border: 1px solid var(--input-border); border-radius: 6px; background: var(--input-bg); color: var(--text); width: 100%;
}
input:focus, select:focus, textarea:focus { outline: 2px solid var(--primary-soft); border-color: var(--primary); }
.check { display: flex; align-items: center; gap: 6px; }
.actions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 6px; }
.row-form { display: flex; gap: 6px; align-items: center; margin: 0; }
.row-form input, .row-form select { width: auto; padding: 4px 6px; }
.row-form.inline { display: inline-flex; margin-left: 4px; }
.table tr.is-suspended td { color: var(--muted); }
.status-choice { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.status-choice .check { align-items: baseline; }
.status-choice .is-disabled { opacity: .55; }

.search { display: flex; gap: 8px; margin-bottom: 14px; }
.search input { max-width: 420px; }
.search select { width: auto; }

.info { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px 24px; margin: 0; }
.info dt { font-size: 12px; color: var(--muted); }
.info dd { margin: 2px 0 0; }

/* 표 */
.table-wrap { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; overflow-x: auto; margin-bottom: 16px; box-shadow: 0 1px 3px var(--shadow); }
.table { width: 100%; border-collapse: collapse; }
.table th, .table td { padding: 9px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.table th { background: var(--th-bg); font-size: 12.5px; color: var(--muted); font-weight: 600; white-space: nowrap; }
.table tbody tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: var(--row-hover); }
.table .num { text-align: right; }
.table .empty { text-align: center; color: var(--muted); padding: 32px; }

.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--dot); }
.dot.on { background: #2fb86b; }
.status { font-size: 12px; padding: 2px 8px; border-radius: 10px; white-space: nowrap; }
.status-on { background: var(--success-bg); color: var(--success); }
.status-off { background: var(--status-off-bg); color: var(--muted); }
.reasons { margin: 4px 0 0; padding-left: 16px; font-size: 12px; }
.status-warn { background: var(--warn-bg); color: var(--warn); }
.status-error { background: var(--error-bg); color: var(--error); font-weight: 600; }

/* 정산 결과의 읽지 않은 정산서 (admin.settlements.index) */
.table tr.row-unread td { background: var(--unread-bg); }
.table tr.row-unread td:first-child { box-shadow: inset 3px 0 0 var(--error); }
.row-unread .tag { font-size: 11px; padding: 1px 6px; border-radius: 4px; background: var(--error-bg); color: var(--error); }
.row-unread .unread-hint { font-size: 12px; color: var(--error); margin-top: 2px; }
.name-rules summary { cursor: pointer; font-size: 13px; color: var(--muted); }
.name-rules .table { margin-top: 8px; font-size: 13px; }
.code-column { margin: 8px 0; border-left: 3px solid var(--primary); background: var(--primary-soft); }
.row-selected td { background: var(--primary-soft); }

/* 계약·지분율 입력 (admin.partials.contract-set) */
.contract-set { max-width: 760px; }
.cs-head, .cs-row { display: grid; grid-template-columns: minmax(0, 1fr) 120px 32px; gap: 10px; align-items: start; }
.cs-head { font-size: 12.5px; font-weight: 600; color: var(--muted); padding: 0 2px 6px; }
.cs-head .cs-share-head { text-align: right; }
.cs-rows { display: flex; flex-direction: column; gap: 8px; }
.cs-row { padding: 10px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--soft-bg); }
.cs-row.is-dup { border-color: var(--error); background: var(--error-bg); }
.cs-row.is-dup .cs-pick::after { content: '위에 같은 계약이 이미 있습니다'; display: block; margin-top: 5px; color: var(--error); font-size: 12.5px; }
.cs-pick { position: relative; min-width: 0; }
.cs-code { font-family: Consolas, "SFMono-Regular", Menlo, monospace; }
.cs-info { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-height: 18px; margin-top: 5px; font-size: 12.5px; }
.cs-info:empty { display: none; }
.cs-tag { font-size: 11.5px; padding: 1px 7px; border-radius: 10px; background: var(--primary-soft); color: var(--primary); white-space: nowrap; }
.cs-error { color: var(--error); font-size: 12.5px; }
.cs-error-block { margin-top: 8px; }
.cs-suggest {
    position: absolute; z-index: 20; top: 38px; left: 0; right: 0; max-height: 280px; overflow-y: auto;
    margin: 0; padding: 4px; list-style: none; background: var(--popover-bg); border: 1px solid var(--line); border-radius: var(--radius);
    box-shadow: 0 8px 24px var(--shadow-strong);
}
.cs-suggest li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; padding: 7px 9px; border-radius: 6px; cursor: pointer; }
.cs-suggest li small { flex-basis: 100%; }
.cs-suggest li:hover, .cs-suggest li.active { background: var(--primary-soft); }
.cs-suggest li.cs-empty { color: var(--muted); cursor: default; background: none; }
.cs-share-input { position: relative; }
.cs-share-input input { text-align: right; padding-right: 26px; }
.cs-share-input span { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); color: var(--muted); pointer-events: none; }
.cs-share-input input:disabled { background: var(--hover); color: var(--muted); }
.cs-remove {
    width: 32px; height: 36px; border: 0; border-radius: 6px; background: transparent; color: var(--muted);
    font-size: 20px; line-height: 1; cursor: pointer;
}
.cs-remove:hover { background: var(--error-bg); color: var(--error); }
.contract-set.is-single .cs-remove { visibility: hidden; }
.contract-set.is-single [data-cs=split] { display: none; }
.cs-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; }
.cs-buttons { display: flex; gap: 6px; }
.cs-total { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.cs-bar { width: 140px; height: 8px; border-radius: 4px; background: var(--track); overflow: hidden; }
.cs-bar span { display: block; height: 100%; width: 0; background: #f0a33a; transition: width .15s; }
.cs-bar span.ok { background: #2fb86b; }
.cs-bar span.over { background: var(--error); }
.cs-msg.ok { color: var(--success); }
.cs-msg.bad { color: var(--error); }
.cs-period { margin: 16px 0 6px; padding: 12px 14px 14px; border: 1px solid var(--line); border-radius: var(--radius); }
.cs-period legend { padding: 0 6px; font-size: 13px; font-weight: 600; }
.cs-period legend small { font-weight: normal; margin-left: 4px; }
.cs-period .field { width: 180px; }

/* 페이지네이션 (Laravel 기본 bootstrap-4 마크업) */
.pagination { display: flex; flex-wrap: wrap; gap: 4px; list-style: none; padding: 0; margin: 0; }
.pagination .page-link, .pagination li > span { display: block; min-width: 34px; text-align: center; padding: 5px 9px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); color: var(--text); }
.pagination .active .page-link, .pagination .active > span { background: var(--primary); border-color: var(--primary); color: #fff; }
.pagination .disabled .page-link, .pagination .disabled > span { color: var(--disabled); }

/* 로그인 */
.login-box { max-width: 400px; margin: 0 auto; background: var(--surface); border-radius: 16px; overflow: hidden; box-shadow: 0 18px 50px rgba(0, 70, 100, .16); }
.login-brand { padding: 34px 32px 26px; text-align: center; color: #fff; background: var(--login-brand-bg); border-bottom: 4px solid var(--mint); }
.login-brand img { display: block; width: 200px; max-width: 70%; height: auto; margin: 0 auto; }
.login-brand p { margin: 12px 0 0; font-size: 13px; font-weight: 600; letter-spacing: .12em; opacity: .92; }
.login-form { display: flex; flex-direction: column; gap: 14px; padding: 28px 32px 32px; }
.login-form .btn-block { margin-top: 6px; padding: 11px; font-weight: 700; }
.login-foot { text-align: center; font-size: 12px; color: var(--muted); letter-spacing: .06em; margin-top: 20px; }

@media (max-width: 720px) {
    .form-grid { grid-template-columns: 1fr; }
    .topbar { position: static; }
    .topbar-inner { flex-wrap: wrap; gap: 6px 12px; padding: 10px 16px 8px; }
    .brand img { height: 24px; }
    .who { margin-left: auto; }
    .who span.badge { display: none; }
    .nav { order: 3; flex-basis: 100%; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }
    .nav::-webkit-scrollbar { display: none; }
    .login-brand { padding: 28px 24px 22px; }
    .login-form { padding: 24px; }
    .cs-head, .cs-row { grid-template-columns: minmax(0, 1fr) 90px 32px; gap: 6px; }
    .cs-foot, .cs-total { flex-wrap: wrap; }
    .cs-period .field { width: 100%; }
}

/* 정산 결과 표 (admin.settlements.index) */
.results-table td:first-child, .results-table td:nth-child(2), .results-table td:last-child { white-space: nowrap; }

/* 긴 결과 문구: 3줄까지만, 누르면 펼침 (admin.settlements.index 업로드 결과) */
.clamp-3 { white-space: pre-line; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; cursor: pointer; max-width: 640px; }
.clamp-3:hover { color: var(--text, #222); }
.clamp-3.open { display: block; -webkit-line-clamp: unset; overflow: visible; }

/* 선급금 (admin.advances) - 금액 요약 타일, 상계 진행 막대 */
.summary-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 16px; }
.tile { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; }
.tile span { display: block; font-size: 12.5px; color: var(--muted); }
.tile strong { display: block; font-size: 20px; margin-top: 2px; font-variant-numeric: tabular-nums; }
.tile-accent { border-color: var(--primary); background: var(--primary-soft); }
.tile-accent strong { color: var(--primary); }
.tile .progress { margin-top: 8px; width: 100%; }
.progress { width: 90px; height: 6px; border-radius: 3px; background: var(--track); overflow: hidden; }
.progress span { display: block; height: 100%; background: #2fb86b; }
.field-grow { flex: 1; min-width: 200px; }
.nowrap { white-space: nowrap; }
.log-list { list-style: none; margin: 0 0 16px; padding: 4px 16px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); font-size: 13px; }
.log-list li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.log-list li:last-child { border-bottom: 0; }
.log-list time { color: var(--muted); font-variant-numeric: tabular-nums; }
.log-action { font-size: 12px; padding: 1px 8px; border-radius: 10px; background: var(--success-bg); color: var(--success); }
.log-action.is-cancel { background: var(--error-bg); color: var(--error); }
.field small { font-size: 12px; }
h1 .status { font-size: 12px; vertical-align: middle; margin-left: 6px; }

/* 공지사항 (admin.notices, my.notices) - 본문은 CKEditor 가 만든 HTML */
.badge-new { display: inline-block; font-size: 10px; font-weight: 700; line-height: 1; padding: 3px 5px; border-radius: 8px; background: var(--error); color: #fff; vertical-align: middle; }
.table tr.is-pinned td { background: var(--pinned-bg); }
.notice { padding: 28px 32px; }
.notice-title { font-size: 22px; margin: 0 0 6px; }
.notice-meta { font-size: 13px; padding-bottom: 14px; margin-bottom: 20px; border-bottom: 1px solid var(--line); }
.notice-content { line-height: 1.75; word-break: break-word; overflow-wrap: anywhere; }
.notice-content > :first-child { margin-top: 0; }
.notice-content h2 { font-size: 19px; margin: 24px 0 8px; }
.notice-content h3 { font-size: 16px; margin: 20px 0 6px; }
.notice-content img { max-width: 100%; height: auto; }
.notice-content figure { margin: 16px 0; }
.notice-content figure.image { display: table; margin: 16px auto; text-align: center; }
.notice-content figure.image img { display: block; margin: 0 auto; }
.notice-content figure.image-style-side { float: right; margin-left: 20px; max-width: 50%; }
.notice-content figcaption { display: table-caption; caption-side: bottom; font-size: 13px; color: var(--muted); padding: 6px 0; }
.notice-content blockquote { margin: 16px 0; padding: 4px 16px; border-left: 4px solid var(--line); color: var(--muted); }
.notice-content figure.table { display: table; }
.notice-content table { border-collapse: collapse; }
.notice-content th, .notice-content td { border: 1px solid var(--line); padding: 6px 10px; }
.notice-content th { background: var(--th-bg); }
.notice-content::after { content: ''; display: block; clear: both; }
.notice-nav { display: flex; flex-direction: column; margin-bottom: 12px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.notice-nav a { padding: 10px 16px; color: var(--text); }
.notice-nav a + a { border-top: 1px solid var(--line); }
.notice-nav a .muted { display: inline-block; width: 60px; font-size: 13px; }
.notice-form { display: flex; flex-direction: column; gap: 16px; }
.notice-form .ck-editor__editable { min-height: 380px; }
.notice-form .ck-content { line-height: 1.7; }
@media (max-width: 720px) {
    .notice { padding: 20px 16px; }
    .notice-content figure.image-style-side { float: none; margin: 16px auto; max-width: 100%; }
}

/* 공지 첨부파일 */
.attachments { margin-top: 28px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--soft-bg); }
.attachments-head { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.attach-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.attach-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 13.5px; }
.attach-list a { display: inline-flex; align-items: center; gap: 8px; color: var(--text); }
.attach-list a:hover .attach-name { color: var(--primary); text-decoration: underline; }
.attach-list li.is-bad .attach-name, .attach-list li.is-bad small { color: var(--error); }
.attach-list.is-edit { margin-bottom: 6px; }
.attach-list.is-edit .check { gap: 8px; }
.attach-ext { display: inline-block; min-width: 38px; padding: 1px 5px; border-radius: 4px; background: var(--primary-soft); color: var(--primary); font-size: 11px; font-weight: 700; text-align: center; text-transform: uppercase; }
.attach-name { word-break: break-all; }
.attach-mark { font-size: 12px; color: var(--muted); margin-left: 4px; }
.attach-drop { margin-top: 6px; padding: 16px; border: 2px dashed var(--input-border); border-radius: var(--radius); text-align: center; background: var(--soft-bg); }
.attach-drop.is-over { border-color: var(--primary); background: var(--primary-soft); }
.attach-drop input[type=file] { display: none; }
.attach-drop p { margin: 0 0 4px; }
.attach-drop .attach-list { margin-top: 10px; text-align: left; }
.link-btn { background: none; border: 0; padding: 0; color: var(--primary); font: inherit; cursor: pointer; text-decoration: underline; }

/* 다크 모드 버튼 (partials.theme-toggle) - 상단 바 오른쪽, 로그인 화면은 오른쪽 위에 띄움 */
.theme-toggle { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 10px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .45); background: rgba(255, 255, 255, .14); color: #fff; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; transition: background .15s; }
.theme-toggle:hover { background: rgba(255, 255, 255, .26); }
.theme-toggle:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.theme-toggle .icon-sun { display: none; }
:root[data-theme="dark"] .theme-toggle .icon-sun { display: block; }
:root[data-theme="dark"] .theme-toggle .icon-moon { display: none; }
.theme-toggle-float { position: fixed; top: 16px; right: 16px; z-index: 40; border-color: var(--line); background: var(--surface); color: var(--text); box-shadow: 0 2px 8px var(--shadow-strong); }
.theme-toggle-float:hover { background: var(--hover); }
.theme-toggle-float:focus-visible { outline-color: var(--primary); }
:root[data-theme="dark"] .login-box { border: 1px solid var(--line); }
:root[data-theme="dark"] .nav > a.active, :root[data-theme="dark"] .nav-group-toggle.active, :root[data-theme="dark"] .nav-group.open .nav-group-toggle.active { color: #075a76; }
:root[data-theme="dark"] .notice-content img { opacity: .92; }
@media (max-width: 720px) {
    .theme-toggle-label { display: none; }
    .theme-toggle { padding: 0 8px; }
}

/* 비활성 버튼 (선급금 적용 전·선급금 적용 중 적용 취소 등) */
.btn:disabled, .btn[disabled] { opacity: .45; cursor: not-allowed; background: var(--surface); color: var(--muted); border-color: var(--line); }
/* 권리사 화면 적용 표 (admin.settlements.partials.months-table) - 단계마다 왼쪽 상태·누가·언제, 오른쪽 버튼 */
.months-table td { vertical-align: middle; }
.months-table th .step-no { display: inline-flex; align-items: center; justify-content: center; width: 17px; height: 17px; margin-right: 4px; border-radius: 50%; background: var(--primary-soft); color: var(--primary); font-size: 11px; font-weight: 700; }
.months-table tr.is-advanced td { background: linear-gradient(0deg, rgba(47, 184, 107, .05), rgba(47, 184, 107, .05)); }
.months-table tr.is-advanced td:first-child { box-shadow: inset 3px 0 0 #2fb86b; }
.platforms-cell { max-width: 220px; }
.count-pill { display: inline-block; font-size: 11.5px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: var(--status-off-bg); color: var(--text); }
.platform-codes { margin-top: 3px; font-size: 11.5px; line-height: 1.4; color: var(--muted); }
.step { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-width: 230px; }
.step-info { min-width: 0; }
.step-info .status { margin-right: 4px; }
.step-amount { font-size: 14px; white-space: nowrap; }
.step-meta { margin-top: 3px; font-size: 12px; color: var(--muted); white-space: nowrap; }
.step-action { flex-shrink: 0; }
.step-action form { margin: 0; }
.lock-note { display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border-radius: 999px; border: 1px dashed var(--line); color: var(--muted); font-size: 12px; cursor: help; white-space: nowrap; }

/* 섹션 제목 + 전체 보기 링크 (정산 화면) - 제목과 같은 줄 맨 오른쪽, 세로 가운데 */
.section-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 28px 0 10px; }
.section-head h2 { margin: 0; min-width: 0; }
.more-link { flex-shrink: 0; display: inline-flex; align-items: center; gap: 2px; padding: 4px 10px; border-radius: 999px; font-size: 13px; font-weight: 600; white-space: nowrap; color: var(--primary); }
.more-link:hover { background: var(--primary-soft); text-decoration: none; }
@media (max-width: 720px) {
    /* 좁은 화면: 섹션 제목 옆 설명을 숨겨 제목·전체 보기를 한 줄로, 플랫폼은 개수만 */
    .section-head h2 small { display: none; }
    .platform-codes { display: none; }
}

/* 상단 메뉴 그룹 (partials.admin-nav) - 마우스를 올리거나 누르면 아래로 펼침 */
.nav { align-items: center; }
.nav-group { position: relative; }
.nav-group-toggle { display: inline-flex; align-items: center; gap: 5px; border: 0; background: transparent; font: inherit; cursor: pointer; }
.nav-group-toggle .caret { opacity: .8; transition: transform .15s; }
.nav-group.open .caret { transform: rotate(180deg); }
.nav-menu {
    position: absolute; top: calc(100% + 8px); left: 0; z-index: 50; min-width: 230px; padding: 6px;
    background: var(--popover-bg); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 12px 32px var(--shadow-strong);
    opacity: 0; visibility: hidden; transform: translateY(-4px);
    transition: opacity .12s, transform .12s, visibility 0s linear .12s; /* 닫을 때만 사라진 뒤 숨김 */
}
.nav-menu::before { content: ''; position: absolute; left: 0; right: 0; top: -10px; height: 10px; } /* 버튼과 메뉴 사이로 마우스가 지나가도 닫히지 않게 */
.nav-group.open .nav-menu { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; } /* 열면 바로 보이게 - 숨김 상태면 키보드 포커스가 안 들어간다 */
@media (hover: hover) {
    .nav-group:hover .nav-menu { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
    .nav-group:hover .caret { transform: rotate(180deg); }
}
.nav-menu a { display: flex; flex-direction: column; gap: 1px; padding: 8px 12px; border-radius: 8px; color: var(--text); white-space: nowrap; }
.nav-menu a:hover, .nav-menu a:focus-visible { background: var(--hover); text-decoration: none; outline: none; }
.nav-menu a.active { background: var(--primary-soft); }
.nav-menu a.active .nav-menu-label { color: var(--primary); }
.nav-menu-label { font-weight: 600; font-size: 14px; }
.nav-menu-desc { font-size: 12px; color: var(--muted); }
@media (max-width: 720px) {
    /* 좁은 화면: 그룹을 펼친 채 한 줄 메뉴로 (가로 스크롤 안에서는 펼침 메뉴가 잘리므로) */
    .nav-group-toggle { display: none; }
    .nav-group { display: contents; }
    .nav-menu { position: static; display: contents; opacity: 1; visibility: visible; transform: none; padding: 0; border: 0; box-shadow: none; background: none; min-width: 0; }
    .nav-menu::before { display: none; }
    .nav-menu a { flex-direction: row; padding: 7px 13px; border-radius: 999px; color: rgba(255, 255, 255, .88); font-weight: 500; }
    .nav-menu a:hover { background: rgba(255, 255, 255, .16); color: #fff; }
    .nav-menu a.active { background: #fff; color: var(--primary-dark); font-weight: 700; }
    .nav-menu a.active .nav-menu-label { color: inherit; }
    .nav-menu-label { font-weight: inherit; }
    .nav-menu-desc { display: none; }
}
