/* ==========================================================================
 * 사정율분석 v3.0 — Ant Design v5 / Ant Design Pro 컴포넌트 규격 (2026-10-07 개정)
 * Layout.Header(#001529) · PageHeader · Descriptions(bordered) · QueryFilter · StatisticCard.Group
 * Card(tabList) · Table(머리 구분선·삼각형 정렬·선택 열) · Input addon · Radio.Button · Segmented · Alert
 * 토큰: colorPrimary #1677FF · borderRadius 6 · borderRadiusLG 8 · fontSize 14 · controlHeight 32
 * ========================================================================== */
:root{
	--ant-primary:#1677ff; --ant-primary-hover:#4096ff; --ant-primary-active:#0958d9; --ant-primary-bg:#e6f4ff; --ant-primary-border:#91caff;
	--ant-text:rgba(0,0,0,.88); --ant-text-2:rgba(0,0,0,.65); --ant-text-3:rgba(0,0,0,.45); --ant-text-4:rgba(0,0,0,.25);
	--ant-border:#d9d9d9; --ant-split:#f0f0f0; --ant-fill:rgba(0,0,0,.02); --ant-fill-2:rgba(0,0,0,.04); --ant-layout:#f5f5f5; --ant-header:#001529;
	--ant-success:#52c41a; --ant-success-bg:#f6ffed; --ant-success-bd:#b7eb8f;
	--ant-warning:#faad14; --ant-warning-bg:#fffbe6; --ant-warning-bd:#ffe58f;
	--ant-error:#ff4d4f; --ant-error-bg:#fff2f0; --ant-error-bd:#ffccc7;
	--ant-info-bd:#91caff;
	--ant-orange:#d46b08; --ant-orange-bg:#fff7e6; --ant-orange-bd:#ffd591;
	--ant-radius-sm:4px; --ant-radius:6px; --ant-radius-lg:8px;
	--ant-shadow-2:0 6px 16px 0 rgba(0,0,0,.08),0 3px 6px -4px rgba(0,0,0,.12),0 9px 28px 8px rgba(0,0,0,.05);
	--ant-motion:.2s cubic-bezier(.645,.045,.355,1);
	/* 본문: 기기 기본 고딕(맥 Apple SD Gothic Neo · 윈도우 맑은 고딕) / 제목·숫자: Pretendard */
	--ant-font:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","맑은 고딕","Segoe UI",Roboto,"Noto Sans KR",sans-serif;
	--ant-font-title:"Pretendard","Pretendard Variable",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
}
html,body{background:var(--ant-layout)}
body.popup-mode{margin:0;font:400 14px/1.5714 var(--ant-font);color:var(--ant-text);-webkit-font-smoothing:antialiased;word-break:keep-all}
.r3 *{box-sizing:border-box}
.r3 button,.r3 input{font-family:inherit;color:inherit}
.r3 .panels{padding:0;margin:0;background:none;border:0;clear:none}	/* 공용 reset.css 의 .panels 무효화 */
.r3 :focus-visible{outline:2px solid var(--ant-primary-border);outline-offset:1px}
.ant-text-secondary{color:var(--ant-text-3)}
.num{text-align:right;font-variant-numeric:tabular-nums}

/* Spin (ratio.js 의 .se-pre-con) */
.se-pre-con{position:fixed;inset:0;z-index:9999;background:rgba(255,255,255,.5);display:none}
.se-pre-con::after{content:"";position:absolute;left:50%;top:45%;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;border:3px solid var(--ant-primary-bg);border-top-color:var(--ant-primary);animation:antspin 1s linear infinite}
@keyframes antspin{to{transform:rotate(360deg)}}

/* ── Layout.Header (dark) ── */
.ant-layout-header{display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 24px;background:var(--ant-header);color:rgba(255,255,255,.85)}
.ant-logo{display:flex;align-items:center;gap:10px}
.ant-logo-mark{width:28px;height:28px;border-radius:6px;background:var(--ant-primary);color:#fff;display:grid;place-items:center;font-weight:700}
.ant-logo-tx{font-size:16px;font-weight:600;color:#fff}
.ant-header-right{display:flex;align-items:center;gap:8px}
.r3-user{position:relative}
.r3-user-btn{display:flex;align-items:center;gap:8px;height:40px;padding:0 10px;border:0;border-radius:var(--ant-radius);background:transparent;color:rgba(255,255,255,.85)!important;cursor:pointer}
.r3-user-btn:hover{background:rgba(255,255,255,.08)}
.ant-avatar{width:24px;height:24px;border-radius:50%;background:var(--ant-primary);color:#fff;display:grid;place-items:center;font-size:12px}
.r3-user-nm{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ant-dropdown{display:none;position:absolute;right:0;top:44px;z-index:1050;min-width:220px;padding:4px;background:#fff;border-radius:var(--ant-radius-lg);box-shadow:var(--ant-shadow-2);color:var(--ant-text)}
.r3-user.open .ant-dropdown{display:block}
.ant-dropdown-item{display:flex;gap:8px;padding:5px 12px;border-radius:var(--ant-radius-sm);font-size:14px}
.ant-dropdown-item span{min-width:48px;color:var(--ant-text-3)}

/* ── PageHeader ── */
.ant-page-header{background:#fff;border-bottom:1px solid var(--ant-split)}
.ant-page-header-in{max-width:1440px;margin:0 auto;padding:16px 24px}
.ant-breadcrumb{font-size:14px;color:var(--ant-text-3);margin-bottom:8px}
.ant-breadcrumb .sep{margin:0 8px}
.ant-breadcrumb .cur{color:var(--ant-text)}
.ant-page-header-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.ant-page-header-heading-left{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.ant-page-header-title{margin:0 4px 0 0;font-size:20px;font-weight:600;line-height:32px;color:var(--ant-text)}
.ant-page-header-extra{display:flex;gap:8px}

/* ── Descriptions (bordered, small) ── */
.ant-descriptions{width:100%;border-collapse:collapse;font-size:14px;border:1px solid var(--ant-split)}
.ant-descriptions th,.ant-descriptions td{padding:8px 16px;border:1px solid var(--ant-split);text-align:left;vertical-align:top;line-height:1.5714}
.ant-descriptions th{width:110px;background:#fafafa;color:var(--ant-text);font-weight:400;white-space:nowrap}
.ant-descriptions td{color:var(--ant-text);font-variant-numeric:tabular-nums}
@media(max-width:860px){.ant-descriptions,.ant-descriptions tbody,.ant-descriptions tr{display:block}.ant-descriptions th,.ant-descriptions td{display:block;width:auto;border:0;border-bottom:1px solid var(--ant-split)}.ant-descriptions th{padding-bottom:4px}}

/* ── Tag ── */
.ant-tag{display:inline-flex;align-items:center;height:22px;padding:0 7px;border:1px solid var(--ant-border);border-radius:var(--ant-radius-sm);background:#fafafa;color:var(--ant-text);font-size:12px;line-height:20px;white-space:nowrap;font-weight:400}
.ant-tag-blue{background:var(--ant-primary-bg);border-color:var(--ant-primary-border);color:var(--ant-primary-active)}
.ant-tag-orange{background:var(--ant-orange-bg);border-color:var(--ant-orange-bd);color:var(--ant-orange)}
.ant-tag-sm{height:18px;line-height:16px;padding:0 4px;font-size:11px;margin-left:4px}

/* ── Button ── */
.ant-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:32px;padding:4px 15px;border:1px solid var(--ant-border);border-radius:var(--ant-radius);background:#fff;color:var(--ant-text);font-size:14px;line-height:1.5714;cursor:pointer;white-space:nowrap;box-shadow:0 2px 0 rgba(0,0,0,.02);transition:all var(--ant-motion)}
.ant-btn:hover{color:var(--ant-primary-hover);border-color:var(--ant-primary-hover)}
.ant-btn:active{color:var(--ant-primary-active);border-color:var(--ant-primary-active)}
.ant-btn-primary{background:var(--ant-primary);border-color:var(--ant-primary);color:#fff!important;box-shadow:0 2px 0 rgba(5,145,255,.1)}
.ant-btn-primary:hover{background:var(--ant-primary-hover);border-color:var(--ant-primary-hover)}
.ant-btn-primary:active{background:var(--ant-primary-active);border-color:var(--ant-primary-active)}
.ant-btn-sm{height:24px;padding:0 7px;border-radius:var(--ant-radius-sm);font-size:14px}
.ant-btn-link{display:inline-flex;align-items:center;gap:4px;height:32px;padding:4px;border:0;background:none;color:var(--ant-primary);cursor:pointer;font-size:14px}
.ant-btn-link:hover{color:var(--ant-primary-hover)}

/* ── Layout.Content ── */
.ant-layout-content{max-width:1440px;margin:0 auto;padding:24px}
.r3-layout{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:16px;align-items:start;margin-top:16px}
.r3-main{min-width:0;display:flex;flex-direction:column;gap:16px}
.r3-side{position:sticky;top:16px}
@media(max-width:1100px){.r3-layout{grid-template-columns:1fr}.r3-side{position:static}}

/* ── Alert ── */
.ant-alert{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border:1px solid;border-radius:var(--ant-radius-lg);font-size:14px;line-height:1.5714;word-break:keep-all}
.ant-alert-icon{margin-top:4px;font-size:14px}
.ant-alert-message{flex:1;color:var(--ant-text)}
.ant-alert-warning{background:var(--ant-warning-bg);border-color:var(--ant-warning-bd)} .ant-alert-warning .ant-alert-icon{color:var(--ant-warning)}
.ant-alert-info{background:var(--ant-primary-bg);border-color:var(--ant-info-bd)} .ant-alert-info .ant-alert-icon{color:var(--ant-primary)}
.ant-alert-error{background:var(--ant-error-bg);border-color:var(--ant-error-bd)} .ant-alert-error .ant-alert-icon{color:var(--ant-error)}
.ant-alert-success{background:var(--ant-success-bg);border-color:var(--ant-success-bd)} .ant-alert-success .ant-alert-icon{color:var(--ant-success)}

/* ── Card ── */
.ant-card{background:#fff;border:1px solid var(--ant-split);border-radius:var(--ant-radius-lg)}
.ant-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:0 24px;border-bottom:1px solid var(--ant-split);flex-wrap:wrap}
.ant-card-head-title{font-size:16px;font-weight:600;padding:16px 0}
.ant-card-body{padding:24px}
.ant-card-extra{display:flex;align-items:center;gap:8px;padding:10px 0}

/* ── Form / QueryFilter ── */
.ant-qf-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px}
.ant-form-item{display:flex;align-items:flex-start;margin-bottom:24px;min-width:0}
.ant-form-item-label{flex:0 0 96px;padding-right:8px;height:32px;line-height:32px;text-align:right;color:var(--ant-text);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ant-form-item-label::after{content:":";margin:0 0 0 2px}
.ant-form-item-control{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;min-height:32px}
.ant-qf-more{display:none}
.ant-query-filter.expanded .ant-qf-more{display:flex}
.ant-qf-actions{grid-column:-2/-1;display:flex;justify-content:flex-end;align-items:flex-start;gap:8px;margin-bottom:24px}
.ant-query-filter.expanded .ant-qf-actions{grid-column:1/-1}
.ant-query-filter .ant-card-body{padding:24px 24px 0}
@media(max-width:1280px){.ant-qf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ant-qf-actions{grid-column:1/-1}}
@media(max-width:760px){.ant-qf-grid{grid-template-columns:1fr}.ant-form-item{flex-direction:column;margin-bottom:16px}.ant-form-item-label{flex:none;height:auto;line-height:1.5714;padding:0 0 8px;text-align:left}.ant-form-item-label::after{content:none}.ant-qf-actions{margin-bottom:16px}}
.ant-form-vertical .ant-form-item{flex-direction:column;margin-bottom:16px}
.ant-form-vertical .ant-form-item-label{flex:none;height:auto;line-height:1.5714;padding:0 0 8px;text-align:left}
.ant-form-vertical .ant-form-item-label::after{content:none}

/* Input / addon / affix */
.ant-input{width:100%;min-width:0;height:32px;padding:4px 11px;border:1px solid var(--ant-border);border-radius:var(--ant-radius);background:#fff;font-size:14px;line-height:1.5714;color:var(--ant-text);transition:all var(--ant-motion)}
.ant-input:hover{border-color:var(--ant-primary-hover)}
.ant-input:focus{outline:none;border-color:var(--ant-primary);box-shadow:0 0 0 2px rgba(5,145,255,.1)}
.ant-input-group{display:flex;width:100%}
.ant-input-group > *{border-radius:0!important}
.ant-input-group > :first-child{border-radius:var(--ant-radius) 0 0 var(--ant-radius)!important}
.ant-input-group > :last-child{border-radius:0 var(--ant-radius) var(--ant-radius) 0!important}
.ant-input-group > * + *{margin-left:-1px}
.ant-input-group .ant-input{position:relative}
.ant-input-group .ant-input:hover,.ant-input-group .ant-input:focus{z-index:1}
.ant-input-group-addon{display:flex;align-items:center;padding:0 11px;border:1px solid var(--ant-border);background:#fafafa;color:var(--ant-text);font-size:14px;white-space:nowrap}
.ant-input-affix-wrapper{position:relative;display:inline-flex;align-items:center;width:240px;max-width:100%;height:32px;padding:4px 11px;border:1px solid var(--ant-border);border-radius:var(--ant-radius);background:#fff;transition:all var(--ant-motion)}
.ant-input-affix-wrapper:hover{border-color:var(--ant-primary-hover)}
.ant-input-affix-wrapper:focus-within{border-color:var(--ant-primary);box-shadow:0 0 0 2px rgba(5,145,255,.1)}
.ant-input-affix-wrapper i.fa-search{color:var(--ant-text-4);margin-right:8px;font-size:13px}
.ant-input-affix-wrapper input{flex:1;min-width:0;border:0;outline:0;padding:0;font-size:14px;background:none}
.rt-search-clear{display:none;border:0;background:none;color:var(--ant-text-4);cursor:pointer;padding:0 0 0 4px;font-size:12px}
.rt-search-clear:hover{color:var(--ant-text-3)}
.ant-input-affix-wrapper input.has-value ~ .rt-search-clear{display:inline-block}
/* RangePicker 모양(날짜 두 칸) */
.ant-picker-range{display:inline-flex;align-items:center;gap:8px;width:100%;height:32px;padding:0 11px;border:1px solid var(--ant-border);border-radius:var(--ant-radius);background:#fff;transition:all var(--ant-motion)}
.ant-picker-range:hover{border-color:var(--ant-primary-hover)}
.ant-picker-range:focus-within{border-color:var(--ant-primary);box-shadow:0 0 0 2px rgba(5,145,255,.1)}
.ant-picker-range input{flex:1;min-width:0;height:30px;border:0;outline:0;background:none;font-size:14px;color:var(--ant-text)}
.ant-picker-sep{color:var(--ant-text-4)}
/* Radio.Button */
.ant-radio-group{display:inline-flex;flex-wrap:wrap}
.ant-radio-button-wrapper{position:relative;cursor:pointer;margin:0}
.ant-radio-button-wrapper input{position:absolute;opacity:0;width:0;height:0}
.ant-radio-button-wrapper span{display:inline-flex;align-items:center;height:32px;padding:0 15px;border:1px solid var(--ant-border);margin-left:-1px;background:#fff;font-size:14px;color:var(--ant-text);transition:all var(--ant-motion)}
.ant-radio-button-wrapper:first-child span{margin-left:0;border-radius:var(--ant-radius) 0 0 var(--ant-radius)}
.ant-radio-button-wrapper:last-child span{border-radius:0 var(--ant-radius) var(--ant-radius) 0}
.ant-radio-button-wrapper span:hover{color:var(--ant-primary)}
.ant-radio-button-wrapper input:checked + span{position:relative;z-index:1;color:var(--ant-primary);border-color:var(--ant-primary)}
.ant-radio-button-wrapper input:focus-visible + span{outline:2px solid var(--ant-primary-border)}
/* Segmented */
.ant-segmented{display:inline-flex;padding:2px;border-radius:var(--ant-radius);background:var(--ant-fill-2)}
.ant-segmented button{height:28px;padding:0 11px;border:0;border-radius:var(--ant-radius-sm);background:transparent;color:var(--ant-text-3);font-size:14px;cursor:pointer;transition:all var(--ant-motion)}
.ant-segmented button:hover{color:var(--ant-text)}
.ant-segmented button.on{background:#fff;color:var(--ant-text);box-shadow:0 1px 2px 0 rgba(0,0,0,.03),0 1px 6px -1px rgba(0,0,0,.02),0 2px 4px 0 rgba(0,0,0,.02)}
/* Checkbox */
.ant-checkbox-wrapper{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--ant-text);line-height:1.5714}
.ant-checkbox-wrapper input{position:absolute;opacity:0;width:0;height:0}
.ant-checkbox{position:relative;width:16px;height:16px;flex:0 0 16px;border:1px solid var(--ant-border);border-radius:4px;background:#fff;transition:all var(--ant-motion)}
.ant-checkbox-wrapper:hover .ant-checkbox{border-color:var(--ant-primary)}
.ant-checkbox-wrapper input:checked + .ant-checkbox{background:var(--ant-primary);border-color:var(--ant-primary)}
.ant-checkbox-wrapper input:checked + .ant-checkbox::after{content:"";position:absolute;left:4.5px;top:1.5px;width:5px;height:9px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg)}
.ant-checkbox-wrapper input:focus-visible + .ant-checkbox{outline:2px solid var(--ant-primary-border)}

/* ── StatisticCard.Group ── */
.ant-statistic-group{display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}
.ant-statistic-group > .ant-statistic{padding:20px 24px;border:0;border-left:1px solid var(--ant-split);background:transparent;text-align:left;font:inherit;min-width:0}
.ant-statistic-group > .ant-statistic:first-child{border-left:0}
.ant-statistic.is-click{cursor:pointer;transition:background var(--ant-motion)}
.ant-statistic.is-click:hover{background:#fafafa}
.ant-statistic-title{margin-bottom:4px;font-size:14px;color:var(--ant-text-3)}
.ant-statistic-content{font-size:24px;line-height:1.333;color:var(--ant-text);font-variant-numeric:tabular-nums;white-space:nowrap}
.ant-statistic-content.primary{color:var(--ant-primary)}
.ant-statistic-suffix{margin-left:4px;font-size:16px;color:var(--ant-text-2)}
.ant-statistic-foot{margin-top:8px;padding-top:8px;border-top:1px solid var(--ant-split);font-size:12px;color:var(--ant-text-3)}
@media(max-width:1280px){.ant-statistic-group{grid-template-columns:repeat(3,minmax(0,1fr))}.ant-statistic-group > .ant-statistic:nth-child(n+4){border-top:1px solid var(--ant-split)}.ant-statistic-group > .ant-statistic:nth-child(4){border-left:0}}
@media(max-width:560px){.ant-statistic-group{grid-template-columns:repeat(2,minmax(0,1fr))}.ant-statistic-group > .ant-statistic{padding:14px 16px;border-left:0;border-top:1px solid var(--ant-split)}.ant-statistic-group > .ant-statistic:nth-child(-n+2){border-top:0}.ant-statistic-group > .ant-statistic:nth-child(even){border-left:1px solid var(--ant-split)}.ant-statistic-content{font-size:20px}}

/* ── Card tabList ── */
.ant-card-head-tabs{padding:0 24px;align-items:stretch}
.ant-tabs-nav{display:flex;gap:32px;overflow-x:auto}
.ant-tabs-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:16px 0;border:0;background:none;color:var(--ant-text);font-size:14px;cursor:pointer;white-space:nowrap;transition:color var(--ant-motion)}
.ant-tabs-tab:hover{color:var(--ant-primary-hover)}
.ant-tabs-tab.on{color:var(--ant-primary);text-shadow:0 0 .25px currentcolor}
.ant-tabs-tab.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ant-primary)}
.ant-badge-count{display:inline-block;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--ant-fill-2);color:var(--ant-text-2);font-size:12px;line-height:20px;text-align:center}
.ant-tabs-tab.on .ant-badge-count{background:var(--ant-primary);color:#fff}
.r3-pane{display:none;padding:16px 24px 24px}
.r3-pane.on{display:block}
.r3-pane-desc{margin:0 0 12px;font-size:14px}
.r3-chart{min-height:360px}

/* ── Table ── */
.ant-table-wrapper{max-height:560px;overflow:auto;border-radius:var(--ant-radius-lg) var(--ant-radius-lg) 0 0}
.ant-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;color:var(--ant-text)}
.ant-table thead th{position:sticky;top:0;z-index:2;padding:12px 16px;background:#fafafa;color:var(--ant-text);font-weight:600;text-align:left;white-space:nowrap;border-bottom:1px solid var(--ant-split)}
.ant-table thead th:first-child{border-top-left-radius:var(--ant-radius-lg)}
.ant-table thead th:last-child{border-top-right-radius:var(--ant-radius-lg)}
.ant-table thead th:not(:last-child)::before{content:"";position:absolute;right:0;top:50%;width:1px;height:1.6em;transform:translateY(-50%);background:var(--ant-split)}	/* Ant 머리 칸 구분선 */
.ant-table thead th.num{text-align:right}
.ant-table thead th.sortable{cursor:pointer;user-select:none;transition:background var(--ant-motion)}
.ant-table thead th.sortable:hover{background:#f0f0f0}
.ant-sorter{display:inline-flex;flex-direction:column;vertical-align:middle;margin-left:6px;gap:2px}
.ant-sorter i{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent}
.ant-sorter i.up{border-bottom:5px solid rgba(0,0,0,.29)}
.ant-sorter i.down{border-top:5px solid rgba(0,0,0,.29)}
.ant-table thead th.asc .ant-sorter i.up{border-bottom-color:var(--ant-primary)}
.ant-table thead th.desc .ant-sorter i.down{border-top-color:var(--ant-primary)}
.ant-table th.ant-table-selection-column,.ant-table td.ant-table-selection-column{width:56px;text-align:center;padding-left:8px;padding-right:8px}
.ant-table tbody td{padding:12px 16px;border-bottom:1px solid var(--ant-split);background:#fff;transition:background var(--ant-motion)}
.ant-table tbody tr{cursor:pointer}
.ant-table tbody tr:hover > td{background:#fafafa}
.ant-table tbody tr.row-selected > td{background:var(--ant-primary-bg)}
.ant-table tbody tr.row-selected:hover > td{background:#bae0ff}
.ant-table tbody td.small{white-space:nowrap;color:var(--ant-text-2);font-variant-numeric:tabular-nums}
.ant-table tbody td.txt_cut{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ant-table tbody td a{color:var(--ant-primary);text-decoration:none}
.ant-table tbody td a:hover{color:var(--ant-primary-hover)}
.ant-table tbody td.c_gray{color:var(--ant-text-2);white-space:nowrap}
.ant-table tbody td.c_blue,.ant-table tbody td.c_red{text-align:right;font-variant-numeric:tabular-nums}
.ant-table tbody td.c_blue{font-weight:600}
.ant-table tbody td:nth-child(6){text-align:right;font-variant-numeric:tabular-nums}
.ant-table.has-a tbody td:nth-child(8){text-align:right;font-variant-numeric:tabular-nums}
.ant-table tbody td[colspan]{padding:32px 16px;color:var(--ant-text-4);cursor:default;text-align:center}
.ant-table-footer{padding:12px 16px;background:#fafafa;color:var(--ant-text-3);font-size:13px;border-radius:0 0 var(--ant-radius-lg) var(--ant-radius-lg)}
.ant-empty{padding:32px 16px;text-align:center;color:var(--ant-text-4)}
/* 선택 열 Radio */
.row-select-label{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.row-select-radio{position:absolute;opacity:0;width:0;height:0}
.row-select-mark{position:relative;width:16px;height:16px;border:1px solid var(--ant-border);border-radius:50%;background:#fff;transition:all var(--ant-motion)}
.row-select-label:hover .row-select-mark{border-color:var(--ant-primary)}
.row-select-radio:checked + .row-select-mark{border-color:var(--ant-primary);background:var(--ant-primary)}
.row-select-radio:checked + .row-select-mark::after{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#fff}
.row-select-radio:focus-visible + .row-select-mark{outline:2px solid var(--ant-primary-border)}

/* 차트 도구 (ratio3.js 가 주입) */
.zoom-ctl{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:8px;font-size:12px;color:var(--ant-text-3);flex-wrap:wrap}
.zoom-ctl .zc-hint{margin-right:auto}
.zoom-ctl button{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 7px;border:1px solid var(--ant-border);border-radius:var(--ant-radius-sm);background:#fff;font-size:14px;cursor:pointer;color:var(--ant-text);box-shadow:0 2px 0 rgba(0,0,0,.02)}
.zoom-ctl button:hover{color:var(--ant-primary-hover);border-color:var(--ant-primary-hover)}
.bindo-crumb{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;padding:8px 12px;border:1px solid var(--ant-info-bd);border-radius:var(--ant-radius-lg);background:var(--ant-primary-bg);font-size:14px}
.bindo-crumb .bc-reset{height:24px;padding:0 7px;border:1px solid var(--ant-border);border-radius:var(--ant-radius-sm);background:#fff;font-size:14px;cursor:pointer}
.bindo-crumb .bc-reset:hover:not(:disabled){color:var(--ant-primary-hover);border-color:var(--ant-primary-hover)}
.bindo-crumb .bc-reset:disabled{color:var(--ant-text-4);background:var(--ant-fill-2);cursor:not-allowed}

/* ── 계산기 ── */
.r3-calc .ant-card-body{display:flex;flex-direction:column;gap:12px;padding:20px 24px 24px}
.r3-calc .ant-form-item{margin-bottom:12px}
.r3-calc .ant-form-vertical{margin-bottom:-12px}
.ant-divider{height:1px;margin:4px 0;background:var(--ant-split)}
.r3-money .ant-statistic-content{font-size:30px;font-weight:600}
.r3-money .ant-statistic-title .ant-text-secondary{font-size:12px}
.iSaMoney{cursor:text;border-radius:var(--ant-radius-sm);padding:0 2px;transition:background-color .3s}
.iSaMoney:hover{background:var(--ant-primary-bg)}
.iSaPercent{border-radius:var(--ant-radius-sm);padding:0 2px;transition:background-color .3s}
.iSaMoneyEditor{width:190px;height:40px;padding:4px 11px;border:1px solid var(--ant-primary);border-radius:var(--ant-radius);font-size:20px;text-align:right;box-shadow:0 0 0 2px rgba(5,145,255,.1)}
.r3-formula{font-size:12px;line-height:1.66}
.r3-formula:empty{display:none}
.ant-space{display:flex;gap:8px;flex-wrap:wrap}
.r3-quick .ant-btn{flex:1}

/* 인쇄 */
@media print{
	html,body{background:#fff}
	.ant-layout-header,.ant-page-header-extra,.ant-qf-actions,.r3-list-tools,.ant-tabs-nav,.zoom-ctl,.r3-quick,.ant-alert-warning,.ant-table-footer{display:none!important}
	.ant-qf-more{display:flex!important}
	.r3-pane{display:block!important;page-break-inside:avoid}
	.r3-layout{grid-template-columns:1fr}
	.r3-side{position:static}
	.ant-table-wrapper{max-height:none;overflow:visible}
}
@media(max-width:640px){.ant-layout-header,.ant-page-header-in,.ant-layout-content{padding-left:12px;padding-right:12px}.ant-card-head,.ant-card-head-tabs,.r3-pane,.ant-card-body{padding-left:16px;padding-right:16px}.ant-input-affix-wrapper{width:100%}.ant-radio-button-wrapper span{padding:0 10px}.r3-user-nm{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* 보정: Statistic 을 버튼으로 쓴 칸도 위쪽 정렬 / 기간 칸을 넓게 */
.ant-statistic-group > .ant-statistic{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}
.ant-qf-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) minmax(0,1fr)}
.ant-qf-grid .ant-form-item-label{flex-basis:84px}
@media(max-width:1280px){.ant-qf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.ant-qf-grid{grid-template-columns:1fr}}

/* 숨김 속성 우선 (ant-alert 등 display 지정보다 앞서게) */
.r3 [hidden]{display:none!important}
/* Layout.Header — 밝은 헤더(Ant Design Pro light). 사이트 로고가 흰 바탕용이라 밝게 둔다 */
.ant-layout-header{background:#fff;color:var(--ant-text);box-shadow:0 1px 4px rgba(0,21,41,.08);position:relative;z-index:10}
.ant-logo-img{display:block;height:28px;width:auto;max-width:200px;object-fit:contain}
.ant-logo-name{font-size:16px;font-weight:600;color:var(--ant-text)}
.ant-logo-divider{width:1px;height:16px;background:var(--ant-split);margin:0 4px}
.ant-logo-tx{color:var(--ant-text)}
.r3-user-btn{color:var(--ant-text)!important}
.r3-user-btn:hover{background:var(--ant-fill-2)}
.ant-radio-button-wrapper span{padding:0 12px}

/* ── 초기화 (공용 reset.css 대신 v3.0 에 필요한 만큼만) ── */
.r3 h1,.r3 h2,.r3 h3,.r3 p,.r3 ul,.r3 ol,.r3 form,.r3 figure{margin:0;padding:0}
.r3 table{border-collapse:collapse;border-spacing:0}
.r3 img{border:0;vertical-align:middle}
.r3 a{text-decoration:none}
.r3 button,.r3 input,.r3 select,.r3 textarea{font-family:inherit;font-size:inherit;margin:0}
.hide{display:none!important}
/* ── 글꼴: 제목·탭·통계 숫자·투찰금액은 Pretendard ── */
.r3 .ant-page-header-title,.r3 .ant-card-head-title,.r3 .ant-logo-tx,.r3 .ant-logo-name,.r3 .ant-tabs-tab,
.r3 .ant-statistic-content,.r3 .ant-statistic-content *{font-family:var(--ant-font-title);font-feature-settings:"tnum"}
.ant-page-header-title{letter-spacing:-.01em}
/* 표: Ant Table size="middle" 여백 + 사정율 열 강조 (reset.css 를 빼면서 사라진 글자색 대신) */
.ant-table thead th,.ant-table tbody td{padding:12px 12px}
.ant-table tbody td.c_blue{color:var(--ant-primary-active)}
.ant-table tbody td.c_gray,.ant-table tbody td.small{color:var(--ant-text-2)}
.ant-table tbody td.txt_cut{max-width:300px}
/* 로고만 단독 배치 — 높이 24px(헤더 56px 안에서 Ant Pro 로고 비율) */
.ant-logo-img{height:24px}

/* ── Modal (Ant Modal / Modal.confirm) ── */
body.ant-modal-open{overflow:hidden}
.ant-modal-mask{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.45)}
.ant-modal-wrap{position:fixed;inset:0;z-index:1000;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:100px 16px 24px}
.ant-modal{position:relative;width:520px;max-width:100%;font:400 14px/1.5714 var(--ant-font);color:var(--ant-text)}
.ant-modal-content{position:relative;padding:20px 24px;background:#fff;border-radius:var(--ant-radius-lg);box-shadow:var(--ant-shadow-2)}
.ant-modal-close{position:absolute;top:17px;right:17px;width:22px;height:22px;border:0;border-radius:var(--ant-radius-sm);background:transparent;color:var(--ant-text-3);cursor:pointer;display:grid;place-items:center}
.ant-modal-close:hover{background:var(--ant-fill-2);color:var(--ant-text)}
.ant-modal-header{margin-bottom:8px}
.ant-modal-title{font-family:var(--ant-font-title);font-size:16px;font-weight:600;line-height:1.5}
.ant-modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.ant-modal-confirm .ant-modal-content{padding:32px 32px 24px}
.ant-modal-confirm-body{display:flex;gap:12px}
.ant-modal-confirm-icon{font-size:22px;margin-top:1px}
.ant-modal-info .ant-modal-confirm-icon{color:var(--ant-primary)}
.ant-modal-warning .ant-modal-confirm-icon{color:var(--ant-warning)}
.ant-modal-error .ant-modal-confirm-icon{color:var(--ant-error)}
.ant-modal-success .ant-modal-confirm-icon{color:var(--ant-success)}
.ant-modal-confirm-title{font-family:var(--ant-font-title);font-size:16px;font-weight:600;line-height:1.5;margin-bottom:8px}
.ant-modal-confirm-content{color:var(--ant-text)}
.ant-modal-confirm .ant-modal-footer{margin-top:24px}
.ant-modal-confirm .ant-modal-close{display:none}

/* ── 공고 검색 (Input.Search + List) ── */
.ant-input-search{display:flex}
.ant-input-search .ant-input{border-radius:var(--ant-radius) 0 0 var(--ant-radius);height:40px;font-size:16px}
.ant-input-search .ant-btn{height:40px;border-radius:0 var(--ant-radius) var(--ant-radius) 0;margin-left:-1px;padding:0 20px;font-size:16px}
.r3-find-help{margin:8px 0 16px;font-size:13px}
.r3-find-loading{display:flex;align-items:center;gap:8px;padding:24px 0;color:var(--ant-text-3)}
.ant-spin{width:16px;height:16px;border-radius:50%;border:2px solid var(--ant-primary-bg);border-top-color:var(--ant-primary);animation:antspin 1s linear infinite}
.ant-list{list-style:none;margin:0;padding:0;border:1px solid var(--ant-split);border-radius:var(--ant-radius-lg)}
.ant-list-item{display:flex;align-items:center;gap:16px;padding:12px 16px;border-bottom:1px solid var(--ant-split)}
.ant-list-item:last-child{border-bottom:0}
.ant-list-item-main{flex:1;min-width:0}
.ant-list-item-title{font-weight:600;color:var(--ant-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ant-list-item-desc{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:2px;font-size:13px;color:var(--ant-text-3);font-variant-numeric:tabular-nums}
a.ant-btn{text-decoration:none}
.ant-empty i{display:block;font-size:32px;color:var(--ant-text-4);margin-bottom:8px}
.r3-finder-page{max-width:880px}
.ant-modal .r3-find-result{max-height:min(420px,55vh);overflow:auto}

/* ── 모바일 ── */
.r3-desc-more{display:none;margin-top:4px}
.r3-mbar{display:none}
@media(max-width:1100px){
	/* 계산기를 통계 바로 아래로: 본문 열을 풀어 카드 순서를 다시 잡는다 */
	.r3-layout{display:flex;flex-direction:column;gap:16px}
	.r3-main{display:contents}
	#r3Query{order:1}
	.r3-main > .ant-card:nth-child(2){order:2}
	.r3-side{order:3}
	.r3-main > .ant-card:nth-child(3){order:4}
}
@media(max-width:760px){
	.r3-hide-m{display:none!important}
	.ant-page-header-in{padding-top:12px;padding-bottom:12px}
	.ant-page-header-title{font-size:18px;line-height:1.4}
	.ant-page-header-heading{margin-bottom:12px}
	#r3Desc:not(.expanded) tr:nth-child(n+3){display:none}
	.r3-desc-more{display:inline-flex}
	.ant-layout-content{padding-top:16px;padding-bottom:88px}
	.r3-layout{margin-top:12px;gap:12px}
	.ant-alert-warning{font-size:13px}
	.r3-chart{min-height:280px}
	.zoom-ctl .zc-hint{display:none}
	.ant-table{font-size:13px}
	.ant-table thead th,.ant-table tbody td{padding:10px 8px}
	.ant-table tbody td.txt_cut{max-width:180px}
	.ant-table-footer::before{content:"← 표를 좌우로 밀어 볼 수 있습니다 · "}
	.ant-card-head-tabs{flex-direction:column;align-items:stretch;padding:0 16px}
	.ant-card-head-tabs .ant-card-extra{padding:0 0 12px}
	.ant-tabs-nav{gap:24px}
	.r3-money .ant-statistic-content{font-size:26px}
	.ant-list-item{flex-direction:column;align-items:stretch;gap:8px}
	.ant-list-item-title{white-space:normal}
	.ant-modal-wrap{padding:24px 12px}
	.ant-modal-confirm .ant-modal-content{padding:24px 20px 20px}
	/* 하단 고정 요약 바 */
	.r3-mbar{position:fixed;left:0;right:0;bottom:0;z-index:900;display:flex;align-items:center;gap:16px;width:100%;padding:10px 16px calc(10px + env(safe-area-inset-bottom));border:0;border-top:1px solid var(--ant-split);background:rgba(255,255,255,.97);box-shadow:0 -4px 12px rgba(0,0,0,.06);text-align:left;cursor:pointer;font:inherit;color:var(--ant-text)}
	.r3-mbar-item{display:flex;flex-direction:column;min-width:0}
	.r3-mbar-item .l{font-size:12px;color:var(--ant-text-3)}
	.r3-mbar-item b{font-family:var(--ant-font-title);font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
	.r3-mbar-item b.primary{color:var(--ant-primary)}
	.r3-mbar > i{margin-left:auto;font-size:18px;color:var(--ant-primary)}
}
@media print{.r3-mbar,.r3-desc-more,[data-open-finder]{display:none!important}}
/* 초기화(.r3 p{margin:0})보다 우선해야 하는 문단 여백 */
.r3 .r3-find-help{margin:8px 0 16px}
.r3 .r3-pane-desc{margin:0 0 12px}
/* 세로 배치(모바일)에서 표의 최소 폭이 카드를 밀어내지 않게 — 표는 카드 안에서만 가로 스크롤 */
.r3-layout > *,.r3-main > *{min-width:0;max-width:100%}
/* 링크 버튼 색(.r3 button{color:inherit} 보다 우선) */
.r3 .ant-btn-link{color:var(--ant-primary)}
.r3 .ant-btn-link:hover{color:var(--ant-primary-hover)}
@media(max-width:860px){
	/* Descriptions column=1 — 라벨|값을 한 줄로 */
	.ant-descriptions tr{display:grid;grid-template-columns:96px minmax(0,1fr)}
	.ant-descriptions th,.ant-descriptions td{display:block;border:0;border-bottom:1px solid var(--ant-split);padding:8px 12px}
	.ant-descriptions th{padding-bottom:8px;width:auto;white-space:normal}
	.ant-descriptions td{word-break:break-all}
}
@media(max-width:760px){
	#r3Desc:not(.expanded) tr:nth-child(n+2){display:none}
}
/* 모바일 폼: 라벨이 위로 올라갈 때 데스크톱 라벨 폭(flex-basis)이 '높이'로 바뀌어 생긴 빈 간격 제거 + 입력칸 전체 폭 */
@media(max-width:760px){
	.ant-form-item{align-items:stretch}
	.ant-form-item-label,.ant-qf-grid .ant-form-item-label{flex:0 0 auto;height:auto;padding:0 0 6px}
	.ant-form-item-control{flex:0 0 auto;width:100%}
	.ant-qf-actions{justify-content:flex-end}
}
@media(max-width:1100px){.r3-layout{align-items:stretch}}

/* ==========================================================================
 * 2026-10-07 추가: 발주처 넓히기 · 300건 안내 · 최근 3개월 비교 · 이상치 제외 · 투찰금액 후보 · 복사 알림
 * ========================================================================== */
.ant-modal-root *{box-sizing:border-box}	/* 모달은 .r3 밖(body)에 붙는다 */
.ant-tag-red{background:var(--ant-error-bg);border-color:var(--ant-error-bd);color:#cf1322}
/* 발주처 — Select(mode=multiple) 모양. 누르면 '발주처 넓혀 보기' 모달 */
.r3-orders{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%;min-height:32px;padding:3px 4px;border:1px solid var(--ant-border);border-radius:var(--ant-radius);background:#fff;cursor:pointer;transition:all var(--ant-motion)}
.r3-orders:hover{border-color:var(--ant-primary-hover)}
.r3-orders:focus-visible{outline:0;border-color:var(--ant-primary);box-shadow:0 0 0 2px rgba(5,145,255,.1)}
.r3-orders.is-expanded{border-color:var(--ant-primary-border)}
.ant-select-selection-item{display:inline-flex;align-items:center;gap:4px;max-width:100%;height:24px;padding:0 4px 0 8px;border-radius:var(--ant-radius-sm);background:rgba(0,0,0,.06);font-size:14px;line-height:22px;color:var(--ant-text);min-width:0}
.ant-select-selection-item .tx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ant-select-selection-item em{flex:0 0 auto;font-style:normal;font-size:12px;color:var(--ant-primary-active)}
.ant-select-selection-item:not(:has(button)){padding-right:8px}
.ant-select-selection-item-remove{flex:0 0 auto;display:grid;place-items:center;width:16px;height:16px;padding:0;border:0;border-radius:2px;background:none;color:var(--ant-text-3);font-size:10px;cursor:pointer}
.ant-select-selection-item-remove:hover{color:var(--ant-text);background:rgba(0,0,0,.06)}
.r3-orders-add{margin-left:auto;padding:0 6px;font-size:13px;color:var(--ant-primary);white-space:nowrap}
/* 통계 카드: 300건 안내 · 아래 줄(최근 3개월 비교 + 이상치 제외) */
.r3 .r3-limit{margin:16px 24px 0}
.r3-stat-foot{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;padding:12px 24px;border-top:1px solid var(--ant-split)}
.r3-trend{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;font-size:13px;color:var(--ant-text-2);min-width:0}
.r3-trend-k{font-weight:600;color:var(--ant-text)}
.r3-trend-k .ant-text-secondary{font-weight:400}
.r3 .r3-trend-v{padding:0 4px;border:0;border-radius:var(--ant-radius-sm);background:none;font-size:13px;color:var(--ant-text);cursor:pointer}
.r3 .r3-trend-v:hover{background:var(--ant-primary-bg)}
.r3-trend-v b{font-family:var(--ant-font-title);font-weight:600;color:var(--ant-primary);font-variant-numeric:tabular-nums}
/* Switch(size=small) */
.r3 .r3-switch{display:inline-flex;align-items:center;gap:8px;margin-left:auto;padding:4px 0;border:0;background:none;font-size:13px;color:var(--ant-text);cursor:pointer;white-space:nowrap}
.ant-switch{position:relative;flex:0 0 28px;width:28px;height:16px;border-radius:8px;background:rgba(0,0,0,.25);transition:background var(--ant-motion)}
.ant-switch-handle{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 2px 4px rgba(0,35,11,.2);transition:left var(--ant-motion)}
.r3-switch[aria-checked=true] .ant-switch{background:var(--ant-primary)}
.r3-switch[aria-checked=true] .ant-switch-handle{left:14px}
.r3-switch:hover:not(:disabled) .ant-switch{background:rgba(0,0,0,.45)}
.r3-switch[aria-checked=true]:hover:not(:disabled) .ant-switch{background:var(--ant-primary-hover)}
.r3 .r3-switch:disabled{opacity:.45;cursor:not-allowed}
/* 표: 이상치 표시 · 제외된 행 흐리게 (글자는 ::after 라 정렬·CSV 에 섞이지 않는다) */
.ant-table tbody td[data-flag]::after{content:attr(data-flag);display:inline-block;margin-left:6px;padding:0 4px;border:1px solid var(--ant-error-bd);border-radius:var(--ant-radius-sm);background:var(--ant-error-bg);color:#cf1322;font-size:11px;font-weight:400;line-height:16px;vertical-align:1px}
.ant-table tbody tr.is-excluded > td{color:var(--ant-text-4)}
.ant-table tbody tr.is-excluded > td a,.ant-table tbody tr.is-excluded > td.c_blue{color:var(--ant-text-4)}
/* 투찰금액 후보 */
.r3-cands-title{margin-bottom:8px;font-size:14px;font-weight:600}
.r3-cands-title .ant-text-secondary{font-size:12px;font-weight:400}
.r3-cand-list{list-style:none;margin:0;padding:0;border:1px solid var(--ant-split);border-radius:var(--ant-radius-lg)}
.r3-cand{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 4px;border-bottom:1px solid var(--ant-split)}
.r3-cand:last-child{border-bottom:0}
.r3 .r3-cand-main{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:4px 8px;border:0;border-radius:var(--ant-radius);background:none;text-align:left;cursor:pointer;transition:background var(--ant-motion)}
.r3 .r3-cand-main:hover{background:#fafafa}
.r3 .r3-cand-main.on{background:var(--ant-primary-bg)}
.r3-cand-k{display:flex;flex-direction:column;font-size:14px;color:var(--ant-text);white-space:nowrap}
.r3-cand-k small,.r3-cand-v small{font-size:12px;color:var(--ant-text-3)}
.r3-cand-v{display:flex;flex-direction:column;align-items:flex-end;min-width:0}
.r3-cand-v b{font-family:var(--ant-font-title);font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.r3-cand-main.on .r3-cand-v b{color:var(--ant-primary)}
.r3-copy{flex:0 0 auto;width:28px;padding:0!important}
.r3-copy:disabled{opacity:.4;cursor:not-allowed}
.r3-cand-empty{padding:12px;font-size:13px;color:var(--ant-text-3)}
/* message (복사 알림) */
.ant-message{position:fixed;top:16px;left:0;right:0;z-index:1010;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.ant-message-notice{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:var(--ant-radius-lg);background:#fff;box-shadow:var(--ant-shadow-2);font:400 14px/1.5714 var(--ant-font);color:var(--ant-text);transition:opacity .3s,transform .3s}
.ant-message-notice i{color:var(--ant-success)}
.ant-message-notice i.is-error{color:var(--ant-error)}
.ant-message-notice.out{opacity:0;transform:translateY(-8px)}
/* 발주처 넓혀 보기 모달 */
.r3-om-sec + .r3-om-sec{margin-top:20px;padding-top:16px;border-top:1px solid var(--ant-split)}
.r3-om-h{margin:0 0 4px;font-family:var(--ant-font-title);font-size:14px;font-weight:600}
.r3-om-help{margin:0 0 10px;font-size:12px;line-height:1.6;color:var(--ant-text-3)}
.r3-om-opt{display:flex;align-items:center;gap:10px;margin-bottom:8px;padding:10px 12px;border:1px solid var(--ant-split);border-radius:var(--ant-radius-lg);cursor:pointer;transition:all var(--ant-motion)}
.r3-om-opt:hover{border-color:var(--ant-primary-hover)}
.r3-om-opt:has(input:checked){border-color:var(--ant-primary);background:var(--ant-primary-bg)}
.r3-om-opt input{flex:0 0 auto;margin:0;accent-color:var(--ant-primary)}
.r3-om-opt.is-disabled{opacity:.5;cursor:not-allowed}
.r3-om-opt.is-disabled:hover{border-color:var(--ant-split)}
.r3-om-opt-main{flex:1;display:flex;flex-direction:column;min-width:0}
.r3-om-opt-main span{font-size:12px;color:var(--ant-text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.r3-om-n{flex:0 0 auto;font-size:13px;color:var(--ant-text-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.r3-om-search .ant-input{height:36px;font-size:14px}
.r3-om-search .ant-btn{height:36px;font-size:14px;padding:0 16px}
.r3-om-picked{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 8px}
.r3-om-picked:empty{display:none}
.r3-om-result{max-height:min(320px,40vh);overflow:auto}
.r3-om .ant-list-item{padding:10px 12px}
.r3-om [data-add]:disabled{color:var(--ant-success);border-color:var(--ant-success-bd);background:var(--ant-success-bg);cursor:default}
@media(max-width:760px){
	.r3 .r3-limit{margin:12px 16px 0}
	.r3-stat-foot{padding:12px 16px}
	.r3 .r3-switch{margin-left:0}
	.r3-om-opt{padding:10px}
	.r3-om .ant-list-item{flex-direction:row;align-items:center}
}
@media print{.r3-switch,.r3-copy,.r3-orders-add{display:none!important}}
/* 발주처 칸: '넓히기'를 Select 뒤쪽 아이콘 자리에 고정해 칩이 한 줄을 쓰게 */
.r3-orders{position:relative;padding-right:64px}
.r3-orders-add{position:absolute;right:8px;top:50%;transform:translateY(-50%);margin:0;padding:0}
.ant-select-selection-item{flex:0 1 auto}
/* 로그인 전에 열었을 때 (index_login.html) — React 사이트는 안내, PHP 사이트는 아이디·비밀번호 입력 */
.r3-login-page{max-width:480px;margin:0 auto;padding-top:80px;text-align:center}
.r3-login-page .ant-card-body{padding:40px 32px}
.r3-login-icon{font-size:32px;color:var(--ant-primary);margin-bottom:16px}
.r3 .r3-login-desc{margin:8px 0 24px}
.r3-login-actions{justify-content:center}
.r3-login-form{display:flex;flex-direction:column;gap:6px;text-align:left}
.r3-login-form .ant-alert{margin-bottom:8px;text-align:left}
.r3-login-label{margin-top:6px;font-size:14px;color:var(--ant-text-2)}
.r3-login-form .ant-input{height:40px;font-size:15px}
.r3-login-save{margin:8px 0 4px}
.r3 .r3-login-btn{height:40px;margin-top:8px;font-size:15px}
.r3-login-links{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 10px;margin-top:20px;font-size:14px;color:var(--ant-text-3)}
.r3-login-links a{color:var(--ant-primary);text-decoration:none}
.r3-login-links a:hover{text-decoration:underline}
.r3 .r3-login-tip{margin:12px 0 4px;font-size:12px}
@media(max-width:560px){.r3-login-page{padding:24px 16px 0}.r3-login-page .ant-card-body{padding:28px 20px}}

/* ==========================================================================
 * 2026-10-07 추가: 모의 투찰 · 추첨 예가 · 낙찰 경향 · AI 추천금액 · 모바일 카드형 표
 * ========================================================================== */
.ant-tag-green{background:var(--ant-success-bg);border-color:var(--ant-success-bd);color:#389e0d}
.ant-tag-purple{background:#f9f0ff;border-color:#d3adf7;color:#531dab}
.r3-chart-sm{min-height:240px;margin-bottom:8px}
.r3-sim-sum{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.r3-sim-sum:empty{display:none}
.r3-sim-row{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;padding:10px 12px;border:1px solid var(--ant-split);border-radius:var(--ant-radius-lg);background:#fafafa;font-size:13px;color:var(--ant-text-2)}
.r3-sim-k{font-weight:600;color:var(--ant-text)}
.r3-sim-k b,.r3-num{font-family:var(--ant-font-title);font-size:15px;font-weight:600;color:var(--ant-primary);font-variant-numeric:tabular-nums}
.r3-sim-row .r3-trend-v b{font-size:15px}
.r3 .r3-sub-h{margin:20px 0 8px;font-family:var(--ant-font-title);font-size:14px;font-weight:600}
.r3-sub-h .ant-text-secondary{font-family:var(--ant-font);font-size:12px;font-weight:400}
.r3-top-wrap{max-height:none}
.r3-top td,.r3-top th{padding:10px 12px}
.r3-top tbody tr{cursor:default}
.r3-top td.num{text-align:right;font-variant-numeric:tabular-nums}
/* AI 추천금액 */
.r3-ai{padding-top:12px;border-top:1px dashed var(--ant-split)}
.r3 .r3-ai-btn{width:100%;border-color:#d3adf7;color:#531dab;background:#f9f0ff}
.r3 .r3-ai-btn:hover:not(:disabled){border-color:#9254de;color:#391085}
.r3 .r3-ai-btn:disabled{opacity:.6;cursor:wait}
.r3 .r3-ai-help{margin:8px 0;font-size:12px;line-height:1.6}
.r3-ai .r3-cand-list{margin-top:4px}
.r3-ai-usage{margin-top:6px;font-size:12px}
.r3-ai-usage:empty{display:none}
@media print{.r3-ai,#r3Share{display:none!important}}

/* 모바일 카드형 표 — 한 건 = 카드(공고명 위, 나머지는 '항목 이름 + 값' 두 줄 격자) */
@media(max-width:760px){
	#ratio_table thead{display:none}
	#ratio_table,#ratio_table tbody{display:block}
	#ratio_table tbody tr{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;padding:12px 12px 12px 44px;border-bottom:1px solid var(--ant-split)}
	#ratio_table tbody td{display:block;padding:0;border:0;background:none!important;text-align:left!important;white-space:normal;max-width:none}
	#ratio_table tbody td.row-select-cell{position:absolute;left:12px;top:12px;width:auto}
	#ratio_table tbody td.r3-td-name{grid-column:1/-1;font-weight:600;white-space:normal}
	#ratio_table tbody td[data-label]::before{content:attr(data-label);display:block;margin-bottom:2px;font-size:11px;font-weight:400;color:var(--ant-text-3)}
	#ratio_table tbody td.c_blue{font-size:15px}
	#ratio_table tbody td[colspan]{grid-column:1/-1}
	#ratio_table tbody tr.row-selected{background:var(--ant-primary-bg)}
	.ant-table-wrapper{max-height:70vh}
	.ant-table-footer::before{content:none}
	.r3-top td,.r3-top th{padding:8px}
}
/* 탭이 6개라 좁은 화면에서 탭 줄이 카드를 밀어냈다 — 탭 줄은 카드 안에서 가로로 스크롤 */
.ant-card-head-tabs > *{min-width:0;max-width:100%}
.ant-tabs-nav{scrollbar-width:none}
.ant-tabs-nav::-webkit-scrollbar{display:none}
@media(max-width:760px){#ratio_table tbody td.r3-td-name{order:-1}}	/* 카드 맨 위 = 공고명 */

/* ── 이용안내 (guide.php) ── */
.r3-guide .ant-page-header-in{max-width:960px}
.r3 .r3-guide-lead{margin:8px 0 16px;font-size:14px;line-height:1.7}
.r3-guide-toc{display:flex;flex-wrap:wrap;gap:6px}
.r3-guide-toc a{display:inline-flex;align-items:center;height:28px;padding:0 12px;border:1px solid var(--ant-border);border-radius:14px;background:#fff;color:var(--ant-text-2);font-size:13px;transition:all var(--ant-motion)}
.r3-guide-toc a:hover{color:var(--ant-primary);border-color:var(--ant-primary)}
.r3-guide-body{max-width:960px;margin:0 auto}
.r3-guide-sec{padding:24px 28px;margin-bottom:16px;scroll-margin-top:16px;font-size:14px;line-height:1.75;color:var(--ant-text)}
.r3 .r3-guide-sec h2{margin:0 0 12px;font-family:var(--ant-font-title);font-size:18px;font-weight:600}
.r3 .r3-guide-sec h3{margin:16px 0 6px;font-family:var(--ant-font-title);font-size:15px;font-weight:600}
.r3 .r3-guide-sec p{margin:8px 0}
.r3 .r3-guide-sec ol,.r3 .r3-guide-sec ul{margin:6px 0;padding-left:20px}
.r3 .r3-guide-sec li{margin:4px 0}
.r3 .r3-guide-sec li ul{margin:4px 0}
.r3 .r3-guide-sec figure{margin:4px 0 16px}
.r3-guide-sec figure img{display:block;max-width:100%;height:auto;border:1px solid var(--ant-split);border-radius:var(--ant-radius-lg);box-shadow:0 1px 2px rgba(0,0,0,.03),0 2px 8px rgba(0,0,0,.05)}
.r3-guide-sec figcaption{margin-top:6px;font-size:12px;color:var(--ant-text-3);text-align:center}
.r3-guide-dl{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px 16px;margin:0}
.r3-guide-dl dt{font-weight:600;color:var(--ant-text)}
.r3-guide-dl dd{margin:0;color:var(--ant-text-2)}
.r3 .r3-guide-tip{margin:12px 0 0;padding:10px 14px;border-radius:var(--ant-radius-lg);background:var(--ant-primary-bg);color:var(--ant-text-2);font-size:13px}
.r3-guide-formula{margin:8px 0;padding:10px 14px;border-left:3px solid var(--ant-primary);background:#fafafa;font-family:var(--ant-font-title);font-size:13px;line-height:1.8}
.r3-guide-split{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px;align-items:start}
.r3-guide-narrow img{width:100%}
.r3-guide-table{font-size:13px}
.r3-guide-table td,.r3-guide-table th{padding:10px 12px;vertical-align:top;cursor:default}
.r3-guide-table tbody tr{cursor:default}
.r3-guide-table td:first-child{white-space:nowrap;font-weight:600}
.r3-guide-flag{display:inline-block;padding:0 4px;border:1px solid var(--ant-error-bd);border-radius:var(--ant-radius-sm);background:var(--ant-error-bg);color:#cf1322;font-size:11px;line-height:16px}
.r3-guide-note{border-color:var(--ant-warning-bd);background:var(--ant-warning-bg)}
@media(max-width:760px){
	.r3-guide-sec{padding:18px 16px}
	.r3-guide-dl{grid-template-columns:1fr;gap:2px}
	.r3-guide-dl dd{margin-bottom:10px}
	.r3-guide-split{grid-template-columns:1fr}
	.r3-guide-narrow{max-width:320px;margin:0 auto}
	.r3 .r3-guide-sec h2{font-size:16px}
}
@media print{.r3-guide-toc,.r3-guide .ant-layout-header{display:none!important}.r3-guide-sec{break-inside:avoid}}
/* 계산기 칸(sticky)이 화면보다 길면 아래(AI 추천금액)가 가려진다 → 칸 안에서 스크롤 */
@media(min-width:1101px){.r3-side{max-height:calc(100vh - 32px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;border-radius:var(--ant-radius-lg)}}

/* ==========================================================================
 * 인쇄 보고서 (#r3Print — ratio3.js buildPrint 가 beforeprint 에 만든다)
 *  A4 세로 · 첫 쪽 요약 + 낙찰 사례 표. 큰 덩어리에는 '쪼개지 않기'를 걸지 않는다(빈칸의 원인)
 * ========================================================================== */
#r3Print{display:none}
@media print{
	@page{size:A4 portrait;margin:11mm 10mm 12mm}
	html.r3p-on,html.r3p-on body{background:#fff!important;min-width:0!important}
	html.r3p-on body > *:not(#r3Print){display:none!important}
	html.r3p-on #r3Print{display:block!important}
}
html.r3p-preview,html.r3p-preview body{background:#e8e8e8!important}
html.r3p-preview body > *:not(#r3Print){display:none!important}
html.r3p-preview #r3Print{display:block;width:190mm;margin:16px auto;padding:11mm 10mm;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.12)}
.r3p{font:400 8.5pt/1.5 var(--ant-font);color:#1f1f1f;-webkit-print-color-adjust:exact;print-color-adjust:exact;word-break:keep-all}
.r3p *{box-sizing:border-box}
.r3p-top{display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:1.5mm;border-bottom:2px solid #1677ff;font-size:7.5pt;color:#8c8c8c}
.r3p-kicker{font:600 9pt/1.2 var(--ant-font-title);color:#1677ff}
.r3p h1{margin:2.5mm 0 2mm;font:600 14pt/1.35 var(--ant-font-title);letter-spacing:-.01em}
.r3p-info{width:100%;border-collapse:collapse;font-size:8pt}
.r3p-info th,.r3p-info td{padding:.8mm 2mm;border:1px solid #f0f0f0;text-align:left;vertical-align:top;line-height:1.45}
.r3p-info th{width:17mm;background:#fafafa;color:#595959;font-weight:500;white-space:nowrap}
.r3p-info td.num{text-align:left}
.r3p-h{margin:3.5mm 0 1.2mm;padding-left:2mm;border-left:3px solid #1677ff;font:600 9.5pt/1.3 var(--ant-font-title);break-after:avoid}
.r3p-h small{margin-left:1.5mm;font:400 7.5pt var(--ant-font);color:#8c8c8c}
.r3p .r3p-line{margin:1mm 0;color:#434343;font-size:8pt}
.r3p .r3p-warn{color:#ad6800}
.r3p-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid #f0f0f0;border-radius:1.5mm;break-inside:avoid}
.r3p-stat{padding:1.6mm 2.2mm;border-left:1px solid #f0f0f0}
.r3p-stat:first-child{border-left:0}
.r3p-stat .k{font-size:7pt;color:#8c8c8c}
.r3p-stat .v{font:600 10.5pt/1.3 var(--ant-font-title);font-variant-numeric:tabular-nums}
.r3p-stat .v small{margin-left:.5mm;font-size:7.5pt;font-weight:400;color:#8c8c8c}
.r3p-stat.is-main .v{color:#1677ff}
.r3p-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4mm}
.r3p-block,.r3p tr{break-inside:avoid}
.r3p-calc{padding:1.5mm 2.5mm;border:1px solid #f0f0f0;border-radius:1.5mm}
.r3p-kv{display:flex;justify-content:space-between;align-items:baseline;gap:2mm}
.r3p-kv span{color:#8c8c8c;font-size:7.5pt}
.r3p-kv b{font:600 10.5pt var(--ant-font-title);font-variant-numeric:tabular-nums}
.r3p-kv b.money{font-size:13pt;color:#1677ff}
.r3p-calc p{margin:.8mm 0 0;font-size:7.5pt;color:#595959;line-height:1.45}
.r3p-table{width:100%;border-collapse:collapse;font-size:7.8pt;table-layout:fixed}
.r3p-table th{padding:.9mm 1.5mm;background:#fafafa;border-bottom:1px solid #e8e8e8;font-weight:600;text-align:left;white-space:nowrap}
.r3p-table td{padding:.7mm 1.5mm;border-bottom:1px solid #f0f0f0;vertical-align:top;overflow:hidden;text-overflow:ellipsis}
.r3p-table .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.r3p-table .b{font-weight:600}
.r3p-table td small{color:#8c8c8c;font-size:6.8pt}
.r3p-rows td{white-space:nowrap}
.r3p-rows td:nth-child(2){white-space:normal}
.r3p-rows tr.ex td{color:#bfbfbf}
.r3p-rows thead{display:table-header-group}
.r3p-chart canvas{display:block;max-width:100%}
.r3p-list{margin:0;padding-left:4mm;font-size:8pt;color:#434343}
.r3p-list li{margin:.4mm 0}
.r3p .r3p-note{margin:3mm 0 0;padding-top:1.5mm;border-top:1px solid #f0f0f0;font-size:7pt;color:#8c8c8c}
.r3p-cands td small{display:block;line-height:1.3}	/* 후보 설명은 이름 아래 한 줄 */
.r3p-rows td:nth-child(2){white-space:nowrap}	/* 사례 표는 한 줄씩 — 300건이 11쪽 → 7쪽 */
.ant-modal .r3-print-desc{margin:0 0 12px;color:var(--ant-text-2);font-size:13px;line-height:1.6}
/* 첫 쪽 한 장에 맞추기(맺음말까지) — 간격·여백 조금씩 줄임 */
.r3p h1{margin:2mm 0 1.5mm;font-size:13.5pt}
.r3p-info th,.r3p-info td{padding:.45mm 2mm}
.r3p-h{margin:2.6mm 0 1mm}
.r3p-stat{padding:1.1mm 2.2mm}
.r3p-calc{padding:1.2mm 2.5mm}
.r3p .r3p-line{margin:.7mm 0}
.r3p .r3p-note{margin-top:2mm}
