body{margin:0;font-family:"Malgun Gothic",Arial,sans-serif}h1:focus{outline:none}.topbar{border-bottom:1px solid #e5e9f1}.brand{font-weight:800!important;letter-spacing:.04em;margin-right:16px}.sidebar{border-right:1px solid #e5e9f1}.workspace-label{padding:28px 24px 20px;color:#8290a7;font-size:11px;letter-spacing:.1em}.workspace-label .mud-typography{color:#243047;margin-top:6px;letter-spacing:0}.page-container{width:100%;padding:24px;box-sizing:border-box}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.page-heading h1{font-weight:700;font-size:28px}.muted{color:#758198}.filter-panel,.table-panel{border:1px solid #e5e9f1;border-radius:12px!important}.filter-panel{padding:20px}.table-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:24px}.count{color:#315bdb;margin-left:8px}.mud-table-head{background:#f8faff}.loading{padding:80px;text-align:center;color:#315bdb}#blazor-error-ui{display:none;position:fixed;bottom:0;width:100%;padding:16px;background:#ffecb3;z-index:9999}@media(max-width:700px){.page-container{padding:20px 12px}.page-heading,.table-heading{align-items:flex-start;flex-direction:column}.topbar .mud-typography-body2{display:none}}

.filter-reset{height:40px;margin-top:8px;margin-bottom:4px}

@media(min-width:600px){.partner-grid table{min-width:1750px}.partner-grid .mud-table-cell{white-space:nowrap}}

.partner-dialog .mud-dialog-title{padding:16px 24px 8px}.partner-dialog .mud-dialog-content{padding:8px 24px}.partner-dialog .mud-dialog-actions{padding:8px 24px 16px}.partner-dialog .mud-switch{margin-top:0;margin-bottom:0}

.metric-card{padding:20px 24px;border:1px solid #e5e9f1;border-radius:12px!important}.metric-unit{font-size:13px;color:#758198;margin-left:8px}.company-banner{display:flex;align-items:center;gap:20px;padding:24px;border:1px solid #e5e9f1;border-radius:12px!important}.compact-dialog .mud-dialog-title{padding:16px 24px 8px}.compact-dialog .mud-dialog-content{padding:8px 24px}.compact-dialog .mud-dialog-actions{padding:8px 24px 16px}@media(min-width:600px){.wide-grid table{min-width:1800px}.wide-grid .mud-table-cell{white-space:nowrap}}.mud-chart{max-width:100%}

/* 모든 목록의 컬럼 헤더는 중앙 정렬한다. */
.mud-table-head .mud-table-cell{text-align:center!important}.mud-table-head .mud-table-sort-label{justify-content:center;width:100%}

.mud-table-body .mud-table-cell{text-align:center}.mud-table-body .mud-table-cell.cell-number{text-align:right;font-variant-numeric:tabular-nums}

/* 2026-10-15 컨텐츠 디자인 토큰. 컨텐츠 영역의 색·글꼴은 여기서만 정한다. 메뉴·상단 바는 아래의 기존 규칙을 그대로 쓴다. */
:root{
 --app-font:"IBM Plex Sans KR","Malgun Gothic","Apple SD Gothic Neo",sans-serif;
 --app-mono:"IBM Plex Mono",Consolas,"D2Coding",monospace;
 --c-bg:#eef1f4;--c-surface:#fff;--c-text:#1b2430;--c-muted:#4a5868;--c-subtle:#5d6b7b;
 --c-line:#d8dfe7;--c-line-soft:#e4e9ef;--c-row-line:#edf1f5;--c-input-line:#c5cfda;
 --c-head:#f1f4f8;--c-stripe:#fafbfc;--c-hover:#f3f7fb;--c-selected:#e8f0f9;--c-readonly:#f1f3f6;
 --c-primary:#2f5d8a;--c-primary-dark:#1e3f60;--c-primary-tint:#edf3f9;--c-primary-line:#bfd0e2;
 --c-warn:#8a5a12;--c-warn-tint:#fdf3e4;--c-error:#b42318;--c-error-tint:#fff0f0;--c-ok:#1d6b3a;
 --s-wait-bg:#e6ebf1;--s-wait-fg:#3a4858;--s-run-bg:#dce9f7;--s-run-fg:#1e4c7c;--s-done-bg:#ddf0e3;--s-done-fg:#1d6b3a;
 --s-closed-bg:#4a5868;--s-closed-fg:#fff;--s-cancel-bg:#f1f2f4;--s-cancel-fg:#6b7480;
}
/* 새 글꼴은 컨텐츠 영역·팝업·인쇄 화면에만 쓴다. 메뉴와 상단 바는 기존 글꼴을 유지한다. */
.page-container,.page-container .mud-typography,.page-container .mud-input,.page-container .mud-input-label,.page-container .mud-button-root,.page-container .mud-table-cell,
.mud-dialog,.mud-dialog .mud-typography,.mud-dialog .mud-input,.mud-dialog .mud-input-label,.mud-dialog .mud-button-root,.mud-popover .mud-list-item-text,.print-layout{font-family:var(--app-font)}
.page-container{color:var(--c-text)}
/* 컨텐츠 영역과 팝업에서만 MudBlazor 강조색을 바꾼다. 메뉴·상단 바·로그인은 테마의 기존 강조색(#315bdb)을 쓴다. */
.page-container,.mud-dialog,.mud-popover{--mud-palette-primary:#2f5d8a;--mud-palette-primary-rgb:47,93,138;--mud-palette-primary-text:#fff;
 --mud-palette-primary-darken:#244a6e;--mud-palette-primary-lighten:#4a77a3;--mud-palette-primary-hover:rgba(47,93,138,.06)}
/* 2026-10-15 컨텐츠 디자인: 흰 패널, 철강 청색 강조, 8px 모서리. 컨텐츠 영역(.page-container)과 팝업에만 적용한다. */
/* 메뉴·상단 바: 2026-10-15 사용자 요청으로 기존 디자인을 그대로 둔다(새 디자인은 컨텐츠 영역에만 적용). */
.topbar{border-bottom:1px solid #304256;height:56px}
.topbar .brand{font-size:19px;letter-spacing:.14em;border-left:3px solid #52a8c5;padding-left:13px}
.topbar .mud-icon-button{color:#bfcbd8}.topbar .mud-avatar{background:#31485c!important;border:1px solid #516478;border-radius:4px}
.sidebar{border-right:1px solid #304256}
.workspace-label{padding:22px 22px 18px;border-bottom:1px solid #324153;color:#8197ac;letter-spacing:.14em}
.workspace-label .mud-typography{color:#edf3f8;font-size:14px;margin-top:8px}
.sidebar .mud-navmenu{padding:10px 0}
.sidebar .mud-nav-group>.mud-nav-link{font-weight:700;color:#d2dce5;min-height:39px}
.sidebar .mud-nav-link{font-size:13px;border-radius:0;min-height:34px;padding-top:7px;padding-bottom:7px}
.sidebar .mud-nav-link:not(.active):hover{background:#26394c}
.sidebar .mud-nav-link.active{color:#e9f7ff;background:#294358;border-left:3px solid #65b8d4}
.sidebar .mud-nav-link .mud-icon-root{color:#8fa7bc}
.sidebar .mud-nav-link.active .mud-nav-link-text{color:#e9f7ff!important}
/* Original light palette with the compact panel and grid design retained. */
.topbar{border-bottom-color:#e5e9f1}.topbar .brand{border-left-color:#315bdb}
.topbar .mud-icon-button{color:#758198}.topbar .mud-avatar{background:#315bdb!important;border-color:#315bdb}
.sidebar{border-right-color:#e5e9f1}.workspace-label{border-bottom-color:#e5e9f1;color:#8290a7}.workspace-label .mud-typography{color:#243047}
.sidebar .mud-nav-group>.mud-nav-link{color:#243047}.sidebar .mud-nav-link .mud-icon-root{color:#758198}
.sidebar .mud-nav-link:not(.active):hover{background:#f1f4fb}.sidebar .mud-nav-link.active{color:#315bdb;background:#edf2ff;border-left-color:#315bdb}.sidebar .mud-nav-link.active .mud-nav-link-text{color:#315bdb!important}
.page-container{padding:22px 24px 28px}
.page-heading{margin-bottom:18px;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--c-line-soft)}
.page-heading h1{font-size:22px;letter-spacing:-.02em;font-weight:700;color:var(--c-text)}
.page-heading .muted{font-size:13px}.muted{color:#758198}.page-container .muted,.mud-dialog .muted{color:var(--c-muted)}
.filter-panel,.table-panel,.metric-card,.company-banner{border:1px solid var(--c-line);border-radius:8px!important;box-shadow:none!important;background:var(--c-surface)}
.filter-panel{padding:16px 18px}
.metric-card{padding:15px 19px;border-top:3px solid var(--c-primary)}
.metric-card .mud-typography-h4{font-size:29px;font-weight:600;letter-spacing:-.035em;font-variant-numeric:tabular-nums;margin-top:4px}
.metric-card .muted{font-size:12px;font-weight:700;color:var(--c-muted)}
.metric-unit{font-size:12px;color:var(--c-subtle)}
.table-heading{padding:16px 18px;border-bottom:1px solid var(--c-line-soft);background:var(--c-surface)}
.table-heading .mud-typography-h6{font-size:15px;font-weight:700}
.table-heading .mud-typography-body2{font-size:12px}
.count{font-size:13px;color:var(--c-primary);background:var(--c-primary-tint);padding:2px 7px;border:1px solid var(--c-primary-line);border-radius:4px}
.mud-table-head{background:var(--c-head)}
.mud-table-head .mud-table-cell{font-size:12px;font-weight:600;color:#3a4858;border-bottom:1px solid var(--c-line);padding-top:11px;padding-bottom:11px;border-right:none}
.mud-table-body .mud-table-cell{font-size:13px;color:var(--c-text);border-bottom:1px solid var(--c-row-line);padding-top:9px;padding-bottom:9px}
.mud-table-body tr:nth-child(even){background:var(--c-stripe)}
.mud-table-hover .mud-table-body .mud-table-row:hover{background:var(--c-hover)!important}
.mud-table-body .mud-button-text{font-size:13px;font-weight:600;color:var(--c-primary)}
.mud-table-pagination{background:var(--c-surface);border-top:1px solid var(--c-line-soft)}
.mud-button-root{border-radius:3px;font-weight:600;font-size:13px;text-transform:none;box-shadow:none}
.page-container .mud-button-root,.mud-dialog .mud-button-root{border-radius:6px}
.mud-button-outlined{border-color:#aab6d0}.mud-input-outlined .mud-input-outlined-border{border-radius:3px;border-color:#bdc5d3}
.page-container .mud-button-outlined,.mud-dialog .mud-button-outlined{border-color:var(--c-input-line)}.page-container .mud-input-outlined .mud-input-outlined-border,.mud-dialog .mud-input-outlined .mud-input-outlined-border{border-radius:6px;border-color:var(--c-input-line)}
.mud-chip{border-radius:3px!important;font-size:11px;font-weight:600}
.page-container .mud-chip,.mud-dialog .mud-chip{border-radius:999px!important;font-size:12px}
.mud-dialog{border-radius:10px!important;border:1px solid var(--c-line);overflow:hidden}
.mud-dialog-title{background:var(--c-surface);border-bottom:1px solid var(--c-line-soft)}
.mud-dialog-actions{background:var(--c-stripe);border-top:1px solid var(--c-line-soft)}
.company-banner{padding:20px;border-left:4px solid var(--c-primary)}
.company-banner .mud-avatar{border-radius:8px;background:var(--c-primary)!important}
@media(max-width:700px){.page-container{padding:18px 12px}.page-heading{gap:12px}.table-heading{padding:14px}.topbar .brand{font-size:17px}}
.filter-reset{white-space:nowrap;min-width:72px}

.page-breadcrumb{color:var(--c-primary-dark)!important;font-size:13px;font-weight:500}


/* Desktop workspace: only the data grid owns content scrolling. */
@media(min-width:600px){
 html,body,#app,.mud-layout{height:100%;min-height:0}
 .mud-main-content{height:100dvh;box-sizing:border-box;min-width:0;display:flex;flex-direction:column;padding-top:56px}
 .page-container{flex:1;min-height:0;padding:16px 20px;display:flex;flex-direction:column}
 .screen-page{display:flex;flex-direction:column;flex:1;min-height:0;gap:12px}
 .screen-page>.page-breadcrumb{margin:0!important;flex-shrink:0}
 .screen-page>.page-heading{margin:0;padding-bottom:12px;flex-shrink:0}
 .screen-page>.mud-grid{width:100%;margin:0;flex-shrink:0}
 .screen-page>.mud-grid>.mud-grid-item{padding:0 8px}
 .screen-page>.mud-grid>.mud-grid-item:first-child{padding-left:0}
 .screen-page>.mud-grid>.mud-grid-item:last-child{padding-right:0}
 .screen-page>.mb-5{margin-bottom:0!important}
 .screen-page>.filter-panel{padding:10px 16px;flex-shrink:0}
 .screen-page .metric-card{padding:10px 16px}
 .screen-page .metric-card .mud-typography-h4{font-size:26px;margin-top:2px!important}
 .list-screen>.table-panel{flex:1;min-height:0;display:flex;flex-direction:column}
 .table-heading{padding:12px 16px;flex-shrink:0}
 .table-panel>.mud-table{flex:1;min-height:0;display:flex;flex-direction:column}
 .table-panel .mud-table-container{flex:1;min-height:0;overflow:auto}
 .table-panel .mud-table-pagination{flex-shrink:0}
 .table-panel .mud-table-head th{position:sticky;top:0;z-index:2;background:var(--c-head)}
 .company-screen .company-banner{padding:12px 18px;margin-bottom:0!important;flex-shrink:0}
 .company-screen>.filter-panel{padding:14px 18px}
 .company-screen .filter-panel>.mud-typography{margin-bottom:8px!important}
 .company-screen .mud-grid{row-gap:0}
 .company-screen .mud-grid-item{padding-top:4px;padding-bottom:4px}
 .dashboard-screen>.dashboard-body{flex:1;min-height:0;display:grid;grid-template-columns:2fr 1fr;grid-template-rows:minmax(205px,1fr) minmax(115px,.65fr);gap:12px}
 .dashboard-body>.mud-grid-item{width:auto;max-width:none;padding:0!important;min-height:0;display:flex;flex-direction:column}
 .dashboard-body>.mud-grid-item:last-child{grid-column:1 / -1}
 .dashboard-body>.mud-grid-item>.mud-paper{flex:1;min-height:0}
 .dashboard-body .filter-panel{padding:10px 16px}
 .dashboard-body .mud-typography-h6{font-size:15px}
 .dashboard-body .mud-typography-h3{font-size:32px;margin:6px 0!important}
 .dashboard-body .mud-typography-caption{font-size:11px;line-height:1.4}
 .dashboard-body .mt-4{margin-top:8px!important}
 .dashboard-body .mt-2{margin-top:4px!important}
 .dashboard-body .table-panel{display:flex;flex-direction:column}
}
.production-chart-panel{display:flex;flex-direction:column;min-height:0}
.production-chart-panel>.mud-typography{flex-shrink:0;margin-bottom:6px}
.production-chart-panel>.mud-chart{flex:1;min-height:0;width:100%;height:auto!important}
.production-chart-panel .mud-chart{min-width:0;min-height:0}
.production-chart-panel>.mud-chart>.mud-chart{width:100%;height:100%;display:flex;flex-direction:row;align-items:stretch}
.production-chart-panel svg{flex:1;min-width:0;width:100%;height:100%}
.production-chart-panel .mud-chart-legend{flex:0 0 132px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;padding-left:12px;margin:0}
@media(min-width:600px){
.production-chart-panel{position:relative}
.production-chart-panel>.mud-chart{position:absolute;top:40px;bottom:12px;left:16px;right:16px;width:auto!important;height:auto!important;display:flex}
.production-chart-panel>.mud-chart>.mud-chart{flex:1;min-height:0;height:100%;max-height:100%}
.production-chart-panel svg{height:100%!important;max-height:100%;align-self:stretch}
.production-chart-panel .mud-chart-legend{height:100%;max-height:100%}
}
@media(min-width:600px){
.production-chart-panel>div{position:absolute;top:40px;bottom:12px;left:16px;right:16px;width:auto!important;height:auto!important;min-height:0}
.production-chart-panel>div>.mud-chart{width:100%!important;height:100%!important;min-height:0}
.production-chart-panel>div>.mud-chart>.mud-chart{width:100%;height:100%;min-height:0;max-height:100%;display:flex;align-items:stretch}
}

.metric-detail{font-size:12px;color:var(--c-subtle);margin-top:5px;line-height:1.4}
.chart-title{display:flex;align-items:center;justify-content:space-between;gap:12px}
.chart-key{display:flex;gap:14px;font-size:12px;font-weight:400;color:var(--c-subtle)}.chart-key>span{display:flex;align-items:center;gap:5px}.chart-key i{display:inline-block;width:15px}.actual-key{height:9px;background:var(--c-primary);border-radius:2px}.target-key{height:0;border-top:2px dashed #a96a19}
.kpi-chart-surface svg{display:block;width:100%;height:100%}.daily-rate-bar:hover,.daily-rate-bar:focus{fill:var(--c-primary-dark)}
.achievement-heading{display:flex;align-items:center;gap:12px;margin:6px 0}.achievement-heading>strong{font-size:34px;line-height:1.15;font-variant-numeric:tabular-nums}.status-success{color:#287465}.status-warning{color:#996015}.status-neutral{color:#61738b}.status-label{font-size:12px;font-weight:600;color:#43556b}
.achievement-details{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0;padding-bottom:8px;border-bottom:1px solid var(--c-line-soft)}.achievement-details>div{display:flex;flex-direction:column;gap:3px}.achievement-details span{font-size:11px;color:var(--c-subtle)}.achievement-details strong{font-size:20px;line-height:1.2;font-variant-numeric:tabular-nums;color:var(--c-text)}.achievement-details small{font-size:11px;font-weight:400}.kpi-note{font-size:12px!important;line-height:1.5!important;color:var(--c-subtle)}
@media(min-width:600px){.dashboard-screen>.dashboard-body{grid-template-rows:minmax(225px,1fr) minmax(100px,.55fr)}.production-chart-panel>.kpi-chart-surface{top:42px;bottom:8px;left:8px;right:16px}.achievement-panel{padding:10px 14px!important}}

.rail-layout .mud-main-content{margin-left:64px!important}.expanded-layout .mud-main-content{margin-left:248px!important}
.module-rail{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px 0}
.module-rail .rail-item{width:44px;height:44px;border-radius:4px;color:#758198;border:1px solid transparent}
.module-rail .selected-module{color:#2446a6;background:#edf2ff;border-color:#d5dffc;box-shadow:inset 3px 0 #315bdb}
.module-rail .rail-item:hover{background:#edf2ff;color:#2446a6}

.mud-table-body .mud-table-cell.cell-text-left{text-align:left}
.cell-ellipsis{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.core-grid table{width:100%;min-width:0!important;table-layout:fixed}
.core-grid .mud-table-cell{padding-left:10px;padding-right:10px}
.core-grid .mud-table-head .mud-table-cell{white-space:normal;word-break:keep-all}
.core-grid .mud-table-cell.sticky-name{width:19%}
.core-grid .mud-table-cell.sticky-action{width:98px}
.mud-table-cell.sticky-name{position:sticky;left:0;z-index:1;background:#fff}
.mud-table-cell.sticky-action{position:sticky;right:0;z-index:1;background:#fff}
.mud-table-head .sticky-name,.mud-table-head .sticky-action{z-index:3!important;background:var(--c-head)!important}
.mud-table-body tr:nth-child(even) .sticky-name,.mud-table-body tr:nth-child(even) .sticky-action{background:var(--c-stripe)}
@media(max-width:959px){.core-grid table{min-width:850px!important}}

.interactive-grid .mud-table-body .mud-table-row{cursor:pointer}
.interactive-grid .mud-table-body .inactive-row .mud-table-cell{color:#64748b}
.interactive-grid .inactive-row .mud-chip{opacity:1}
.readonly-field .mud-input-outlined{background:var(--c-readonly)}.readonly-field input{color:var(--c-subtle)}
.form-section-title{font-size:13px;font-weight:700;color:var(--c-primary);border-bottom:1px solid var(--c-line-soft);margin:8px 0 8px;padding-bottom:5px}
.form-section-title:first-child{margin-top:0}
.partner-dialog .mud-dialog-content,.compact-dialog .mud-dialog-content{padding-top:10px;padding-bottom:10px}
/* 거래업체 창은 비고 3줄이 들어가 1366×768에서 창 안 스크롤이 생기지 않게 구획 제목 여백을 마스터 창과 같게 줄인다(FORM-05). */
.partner-dialog .form-section-title{margin-top:6px;margin-bottom:4px}
.sticky-action .mud-button{font-size:13px;min-width:58px}
@media(min-width:600px){
.filter-row{display:flex!important;flex-wrap:nowrap!important;gap:12px;width:100%;margin:0!important;align-items:center}
.filter-row>.mud-grid-item{flex:0 0 170px!important;width:170px!important;max-width:none!important;padding:0!important;min-width:0}
.filter-row>.mud-grid-item:first-child{flex:1 1 240px!important;width:auto!important}
.filter-row>.mud-grid-item:has(.filter-reset){flex:0 0 88px!important;width:88px!important;margin-left:0}
.filter-row>.mud-grid-item:has(a.filter-reset){flex-basis:120px!important;width:120px!important}
.filter-row .filter-reset{width:100%;min-width:0;margin-top:8px}
.partner-dialog .mud-input-control,.compact-dialog .mud-input-control{margin-top:8px;margin-bottom:2px}
}
/* Narrow desktop: retain a table, never stack cells into mobile cards. */
@media(min-width:600px) and (max-width:1100px){
.filter-row{flex-wrap:wrap!important;gap:8px!important}
.filter-row>.mud-grid-item:first-child{flex:1 0 100%!important;width:100%!important}
.filter-row>.mud-grid-item{flex:1 1 140px!important;width:auto!important}
.filter-row>.mud-grid-item:has(.filter-reset){flex:0 0 88px!important}
.filter-row>.mud-grid-item:has(a.filter-reset){flex:0 0 120px!important}
.filter-row .filter-reset{margin-top:0}
.screen-page>.mud-grid:not(.dashboard-body){display:flex;flex-wrap:nowrap}
.screen-page>.mud-grid:not(.dashboard-body)>.mud-grid-item{flex:1;max-width:none;width:auto;min-width:0}
.metric-card .mud-typography-h4{font-size:23px!important}
.metric-detail{font-size:11px}.table-heading{gap:12px}.table-heading .mud-typography-h6{white-space:nowrap}
.dashboard-screen>.dashboard-body{grid-template-columns:1.25fr 1fr;grid-template-rows:minmax(260px,1fr) minmax(100px,.5fr)}
.achievement-details{grid-template-columns:1fr;gap:4px;margin:6px 0}.achievement-details>div{flex-direction:row;align-items:baseline;justify-content:space-between}.achievement-details strong{font-size:17px}.kpi-note{font-size:11px!important}
}
@media(max-width:599px){
.table-panel{min-width:0}.table-panel .mud-table-container{overflow:auto;max-width:100%}
.core-grid table{min-width:850px!important}.table-heading{display:block}.table-heading .mud-typography-h6{white-space:nowrap;margin-bottom:6px}
}.page-heading>.mud-button{flex-shrink:0;white-space:nowrap;min-width:112px}
@media(max-width:1100px){.core-grid table{min-width:1050px!important}.core-grid .mud-table-head .mud-table-cell{white-space:nowrap}}




.header-user{display:flex;align-items:center;gap:12px}.topbar .header-user .mud-typography-body2{display:block!important}


/* Shared filter sizing: text 1.75, other conditions 1, fixed dates/actions. */
.heading-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}
.filter-row.standard-filters{display:flex!important;flex-wrap:wrap!important;gap:12px!important;align-items:center;width:100%;margin:0!important}
.filter-row.standard-filters>.mud-grid-item{order:0!important;padding:0!important;max-width:none!important;min-width:0}
.filter-row.standard-filters>.filter-text{flex:1.75 1 245px!important;width:auto!important}
.filter-row.standard-filters>.filter-combo,.filter-row.standard-filters>.filter-number,.filter-row.standard-filters>.filter-other{flex:1 1 140px!important;width:auto!important}
.filter-row.standard-filters>.filter-date{flex:0 0 160px!important;width:160px!important}
.filter-row.standard-filters>.filter-action{flex:0 0 88px!important;width:88px!important;margin-left:0!important}
.filter-row.standard-filters .filter-reset{height:40px;width:88px;min-width:88px;margin-top:8px}
.filter-row.standard-filters .mud-input-control{margin-top:8px;margin-bottom:0}

.company-form-section+.company-form-section{margin-top:4px}
.company-form-section .form-section-title{margin:0 0 4px;padding-bottom:4px}
.company-field-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px 12px}
.company-field-grid>div{min-width:0}.company-field-grid .mud-input-control{margin-top:8px;margin-bottom:0}
.company-field-grid .company-address{grid-column:span 2}
.company-banner .mud-avatar{font-weight:700;font-size:20px}
@media(min-width:600px) and (max-width:1100px){.company-field-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.company-field-grid .company-address{grid-column:auto}}
@media(max-width:599px){.company-field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.company-field-grid .company-address{grid-column:auto}}



.inventory-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;flex-shrink:0}
.inventory-summary-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px;text-align:left;font:inherit;background:white;cursor:pointer;padding:10px 16px}.inventory-summary-card>strong{font-weight:600;line-height:1.334;letter-spacing:-.035em;font-variant-numeric:tabular-nums}.inventory-summary-card .metric-unit{font-weight:400;letter-spacing:normal}
.inventory-summary-card>span{display:block;font-size:12px}.inventory-summary-card>strong{display:block;font-size:26px;color:var(--c-text)}
.inventory-summary-card:hover{background:var(--c-hover)}.inventory-summary-card:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}
.inventory-summary-card.selected-summary{border-color:var(--c-primary);background:var(--c-primary-tint)}

/* Inventory filter cards share the status badge colors. */
.inventory-summary-card{--status-accent:var(--c-primary);--status-tint:var(--c-primary-tint);--status-text:var(--c-primary-dark);border-top-color:var(--status-accent)}
.inventory-summary-card:nth-child(2){--status-accent:var(--mud-palette-warning);--status-tint:#fff7e8;--status-text:#995b00}
.inventory-summary-card:nth-child(3){--status-accent:var(--mud-palette-error);--status-tint:#fff0f0;--status-text:#b42318}
.inventory-summary-card:nth-child(n+2)>strong{color:var(--status-text)}
.inventory-summary-card:hover{background:var(--status-tint)}
.inventory-summary-card.selected-summary{border-color:var(--status-accent);background:var(--status-tint)}
.inventory-summary-card:focus-visible{outline-color:var(--status-accent)}

.sidebar .mud-drawer-content{overflow:visible;position:relative;height:100%;min-height:0}
.nav-scroll{height:100%;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:transparent transparent}
.nav-scroll.show-scrollbar{scrollbar-color:#a8b4c8 transparent}
.nav-scroll::-webkit-scrollbar{width:8px}.nav-scroll::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
.nav-scroll.show-scrollbar::-webkit-scrollbar-thumb{background:#a8b4c8}
.nav-scroll-edge{position:absolute;right:0;top:0;bottom:0;width:8px;pointer-events:auto}
.sidebar:has(.show-scrollbar) .nav-scroll-edge{pointer-events:none}
.rail-flyout{position:fixed;left:64px;top:72px;width:220px;background:white;border:1px solid #e5e9f1;border-radius:3px;box-shadow:0 4px 16px #24304720;z-index:1300;max-height:calc(100dvh - 90px);overflow:auto}
.rail-flyout-title{padding:12px 16px;font-weight:700!important;color:#2446a6}
.filter-row.standard-filters .filter-reset{margin:8px 0 0!important;height:40px;box-sizing:border-box}

.master-dialog{width:min(1280px,calc(100vw - 48px))!important;max-width:1280px!important}.master-dialog .mud-dialog-content{padding-top:8px;padding-bottom:8px}.master-dialog .form-section-title{margin-top:6px;margin-bottom:4px}.master-screen .filter-panel{flex-shrink:0}

/* Tables use their natural height, bounded by remaining workspace height. */
@media(min-width:600px){
 .list-screen>.table-panel{flex:0 1 auto;min-height:0}
 .table-panel>.mud-table{flex:0 1 auto;min-height:0}
 .table-panel .mud-table-container{flex:0 1 auto;min-height:0}
 .dashboard-body>.mud-grid-item:last-child{align-self:start;max-height:100%}
 .dashboard-body>.mud-grid-item:last-child>.table-panel{flex:0 1 auto;max-height:100%}
}
.table-panel table{height:auto}
.table-panel .mud-table-empty-row{text-align:center!important;position:static;white-space:normal;padding:24px 16px}
.table-panel .mud-table-container{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:transparent transparent}
.table-panel .mud-table-container::-webkit-scrollbar{width:8px;height:8px}
.table-panel .mud-table-container::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}
.table-panel .mud-table-container::-webkit-scrollbar-track,.table-panel .mud-table-container::-webkit-scrollbar-corner{background:transparent}
.table-panel .mud-table-container.grid-scrollbar-visible{scrollbar-color:#a9b4c2 transparent}
.table-panel .mud-table-container.grid-scrollbar-visible::-webkit-scrollbar-thumb{background:#a9b4c2}
.table-panel .mud-table-container.grid-has-more{box-shadow:inset 0 -8px 8px -8px var(--c-subtle)66}

.table-panel .mud-table-empty-row>.my-3{margin:0!important}.table-panel .mud-table-empty-row .mud-typography{padding:0!important}


/* 로그인·사용자 메뉴 (2026-10-14) */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f7fb;padding:24px;box-sizing:border-box}
.login-card{width:min(400px,100%);padding:32px!important;border:1px solid #e5e9f1;border-radius:12px!important;background:#fff}
.login-brand{margin-bottom:24px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
/* 체험하기(2026-10-22): 제목 오른쪽 버튼 규칙(ACTION-03)대로 40px */
.login-trial{height:40px;flex-shrink:0;white-space:nowrap}.login-brand .brand{margin:0 0 4px}
.login-button{height:40px}
/* 로그인 오류 창(2026-10-22): 로그인 카드와 같은 12px 모서리, 가운데 정렬, 버튼은 로그인 버튼과 같은 40px */
.login-error-dialog{width:340px;max-width:calc(100vw - 32px);border-radius:12px!important;border:1px solid #e5e9f1;box-shadow:0 12px 32px rgba(27,36,48,.16)!important}
.login-error-dialog .mud-dialog-content{padding:28px 24px 22px!important;margin:0}
.login-error-dialog .mud-dialog-title{display:none}
.login-alert{display:flex;flex-direction:column;align-items:center;text-align:center}
.login-alert-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--c-error-tint);color:var(--c-error);margin-bottom:14px}
.login-alert-title{font-size:16px;font-weight:700;color:var(--c-text);letter-spacing:-.01em;margin-bottom:6px}
.login-alert-text{font-size:13.5px;line-height:1.55;color:var(--c-muted);margin-bottom:22px;word-break:keep-all}
.login-alert-button{height:40px}
.header-user{display:flex;align-items:center;gap:8px}
.header-user-text{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}
.header-user-text .mud-typography-caption{font-size:11px}
/* 권한 그룹 창의 메뉴별 권한 표 */
.permission-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px 20px}
.permission-module{grid-column:1/-1;font-size:12px;font-weight:700;color:var(--c-muted);margin-top:2px;line-height:18px}
.permission-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px;border-bottom:1px dashed var(--c-line-soft)}
.permission-row .mud-toggle-group{height:26px}.permission-row .mud-toggle-item{min-width:40px;padding:0 6px;font-size:12px}
@media(max-width:1100px){.permission-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.permission-row .permission-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.permission-row .mud-toggle-group{flex-shrink:0}
/* 토글 묶음은 바깥 테두리 반경(6px, 버튼과 같음)으로 안쪽 항목을 잘라 선택된 항목의 모서리가 테두리와 맞게 한다(2026-10-16). */
.mud-toggle-group{border-radius:6px!important;overflow:hidden}.mud-toggle-group .mud-toggle-item{border-radius:0!important}
.goal-status-achieved{color:#1b7f4c;font-weight:600}.goal-status-short{color:#b4511a;font-weight:600}
.table-subcount{font-size:13px;font-weight:400;margin-left:12px;color:var(--c-muted)}
/* ── 2026-10-15 공용 컴포넌트: FormField(라벨 위 입력), StatusBadge ── */
.mono{font-family:var(--app-mono);font-size:12px;letter-spacing:0}
.form-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.form-field-label{font-size:12px;color:var(--c-muted);line-height:16px}
.form-field-required{color:var(--c-error)}.form-field-unit{color:var(--c-subtle)}
.form-field .mud-input-control{margin:0!important}
.form-field .mud-input-outlined .mud-input-slot{height:40px;box-sizing:border-box}
.form-field .readonly-field .mud-input-outlined,.form-field .mud-input-control.readonly-field .mud-input{background:var(--c-readonly)}
.number-input input{text-align:right;font-variant-numeric:tabular-nums}
.form-grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 14px}
.form-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}
.form-grid-4 .span-2{grid-column:span 2}.form-grid-4 .span-4{grid-column:1/-1}
.form-hint{display:flex;gap:8px;padding:10px 12px;border-radius:6px;background:var(--c-primary-tint);font-size:12px;line-height:1.6;color:#3a4858;margin-top:10px}
.status-badge{display:inline-block;min-width:40px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;line-height:18px;text-align:center;white-space:nowrap}
.status-wait{background:var(--s-wait-bg);color:var(--s-wait-fg)}.status-run{background:var(--s-run-bg);color:var(--s-run-fg)}
.status-done{background:var(--s-done-bg);color:var(--s-done-fg)}.status-closed{background:var(--s-closed-bg);color:var(--s-closed-fg)}
.status-cancel{background:var(--s-cancel-bg);color:var(--s-cancel-fg);text-decoration:line-through}
/* 2026-10-15 표준: 작업지시 외 화면의 상태 표시(사용/미사용, 입고/출고, 재고 상태, 목표 달성, 사용 이력 구분)도 같은 배지를 쓴다. 이름은 Models/StatusTone.cs. */
.status-ok{background:var(--s-done-bg);color:var(--s-done-fg)}.status-off{background:var(--s-cancel-bg);color:var(--s-cancel-fg)}
.status-info{background:var(--s-run-bg);color:var(--s-run-fg)}.status-warn{background:var(--c-warn-tint);color:var(--c-warn)}
.status-err{background:var(--c-error-tint);color:var(--c-error)}

/* ── 작업지시 관리 ── */
.work-order-grid .col-no{width:128px}.work-order-grid .col-status{width:64px}.work-order-grid .col-code{width:76px}
.work-order-grid .col-count{width:52px}.work-order-grid .col-qty{width:80px}.work-order-grid .col-done{width:72px}.work-order-grid .col-progress{width:96px}.work-order-grid .col-date{width:104px}
/* 지시일·완료예정 칸(2026-10-15). 목록은 월-일("10-15", 37px)만 적어 좌우 여백 12px로 지시일 64px, 머리글 "완료예정"(52px)에 맞춰 완료예정 76px.
   진척 칸도 막대를 넓히려고 좌우 여백 12px. 진척은 표 폭이 1,200px 이상이면 144px(1920 메뉴 펼침에서 360px의 40% 정도), 그보다 좁으면 112px.
   품목명은 남는 폭을 받는 유일한 열(GRID-08). 품목명이 길어 다른 목록처럼 비율로 늘리지 않는다.
   2026-10-16 재검토: 1366 메뉴 펼침에서 품목명이 104px뿐이라 숫자·코드 칸 좌우 여백을 8px로 줄이고 지시번호 128, 실적·잔량 72, 진척 96(넓으면 144)으로 줄였다.
   결과: 1366 펼침(표 1,066) 품목명 144, 1366 접힘(1,250) 328, 1920은 약 650(펼침)·830(접힘). */
.work-order-grid .col-day{width:64px}.work-order-grid .col-due{width:76px}
.work-order-grid .mud-table-cell.cell-day,.work-order-grid .mud-table-cell.col-day,.work-order-grid .mud-table-cell.col-due{padding-left:12px;padding-right:12px;font-variant-numeric:tabular-nums;text-align:center}
.work-order-grid .mud-table-cell.cell-progress,.work-order-grid .mud-table-cell.col-progress{padding-left:12px;padding-right:12px}
.core-grid.work-order-grid td.mud-table-cell:not(.sticky-name):not(.sticky-action):not(.cell-day):not(.cell-progress){padding-left:8px;padding-right:8px}
.core-grid.work-order-grid th.col-status,.core-grid.work-order-grid th.col-count,.core-grid.work-order-grid th.col-done{padding-left:8px;padding-right:8px}
.work-order-grid{container-type:inline-size}
@container (min-width:1200px){.work-order-grid .col-progress{width:144px}}
.work-order-grid .mud-table-cell.sticky-name{width:auto;min-width:140px}
.work-order-grid .mud-table-cell,.core-grid.work-order-grid .mud-table-head .mud-table-cell{white-space:nowrap}
.work-order-grid .mud-table-cell.mud-table-cell-checkbox,.work-order-grid th.mud-table-cell:first-child{width:44px}
.work-order-grid .selected-row>td{background:var(--c-selected)!important}
.work-order-grid .over-quantity{color:var(--c-warn);font-weight:600}
.work-order-grid .overdue-date{color:var(--c-error);font-weight:700}
.progress-cell{display:flex;align-items:center;gap:8px}.progress-cell .mud-progress-linear{flex:1}.progress-cell span{width:38px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums}
/* 화면 제목 오른쪽 버튼(등록·출력·저장·이동)은 모두 40px로 검색·초기화와 같은 높이(2026-10-16, ACTION-03). */
.page-heading .mud-button-root,.heading-actions .mud-button-root{height:40px;white-space:nowrap}
/* 버튼 세로 위치는 제목 줄 기준으로 고정한다. 설명이 두 줄이 되거나 글자 줄높이가 달라도 버튼이 움직이지 않게 위쪽 정렬 + 7px(설명 한 줄일 때의 가운데). */
.page-heading>.mud-button,.page-heading>.heading-actions{align-self:flex-start;margin-top:7px}
.work-order-screen>.table-panel.detail-panel{flex:0 0 auto}
.detail-panel .table-heading{padding:10px 16px}
/* 상세 머리글은 한 줄로 고정한다. 품목명·규격이 길거나 마감 버튼이 있고 없음에 따라 높이가 바뀌면 위 목록 높이가 흔들린다(GRID-08과 같은 취지). 넘치는 요약은 말줄임하고 title로 전체를 보여 준다. */
.detail-panel .table-heading{height:61px;box-sizing:border-box;flex-wrap:nowrap}
.detail-title{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;min-width:0;flex:1 1 auto;overflow:hidden}
.detail-title>*{flex-shrink:0}
.detail-title>.detail-summary{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.detail-title .mud-typography-h6{font-size:15px;font-weight:700}.detail-no{color:var(--c-primary)}
.detail-grid th{background:var(--c-head);font-size:12px;font-weight:600;color:#3a4858;text-align:center!important;white-space:nowrap}
.detail-grid td{font-size:13px;text-align:center;border-bottom:1px solid var(--c-row-line)}
.detail-grid td.cell-number{text-align:right;font-variant-numeric:tabular-nums}.detail-grid td.cell-text-left{text-align:left;max-width:280px}
.detail-note{padding:8px 16px 10px;font-size:12px}
@media(min-width:600px){.work-order-screen>.table-panel:not(.detail-panel){flex:0 1 auto;min-height:0}}

.work-order-dialog{width:min(920px,calc(100vw - 32px))!important;max-width:920px!important}
.section-with-hint{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:16px!important}
.section-hint{font-size:12px;font-weight:400;color:var(--c-subtle)}
.line-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
/* 표 너비 규칙(GRID-08): 열 너비는 colgroup으로 고정하고 작업조건 열 하나가 남는 너비를 받는다. 고른 공정·설비 이름 길이에 따라 열이 움직이지 않게 한다. */
.line-table col.l-seq{width:48px}.line-table col.l-proc{width:180px}.line-table col.l-mc{width:220px}.line-table col.l-qty{width:120px}.line-table col.l-move{width:112px}
.line-table th{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.line-table th{background:var(--c-head);font-size:12px;font-weight:600;color:#3a4858;padding:7px 6px;border-bottom:1px solid var(--c-line);text-align:center}
.line-table td{padding:5px 4px;border-bottom:1px solid var(--c-row-line);vertical-align:middle}
.line-table .col-seq{width:48px;text-align:center}.line-table .col-line-qty{width:120px}.line-table .col-move{width:112px;text-align:center;white-space:nowrap}
.line-table .mud-input-control{margin:0!important}
.add-line-button{margin-top:10px;border-style:dashed!important}
.print-selection{padding:8px 12px;margin-bottom:12px;border-radius:6px;background:var(--c-warn-tint);color:var(--c-warn);font-size:13px}
.inline-checks{display:flex;gap:8px;align-items:center;min-height:40px}
.grouping-options{display:flex;flex-direction:column;gap:2px}
/* 작업지시서 출력 창의 묶음 기준 선택 카드(2026-10-15 시안). */
.grouping-label{margin:14px 0 6px}
.grouping-cards{display:flex;flex-direction:column;gap:8px}
.grouping-card{display:flex;justify-content:flex-start;align-items:flex-start;gap:12px;width:100%;padding:12px 14px;border:1px solid var(--c-line);border-radius:8px;background:var(--c-surface);
 font:inherit;color:var(--c-text);text-align:left;cursor:pointer}
.grouping-card:hover{border-color:var(--c-primary-line);background:var(--c-hover)}
.grouping-card:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}
.grouping-card.selected{border-color:var(--c-primary);background:var(--c-primary-tint)}
.grouping-dot{flex:0 0 18px;width:18px;height:18px;margin-top:1px;border:2px solid #8a96a6;border-radius:50%;box-sizing:border-box;position:relative}
.grouping-card.selected .grouping-dot{border-color:var(--c-primary)}
.grouping-card.selected .grouping-dot::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--c-primary)}
.grouping-text{flex:1 1 auto;display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;text-align:left}.grouping-text strong{font-size:14px;font-weight:700}
.grouping-text span{font-size:12px;color:var(--c-muted)}
.print-dialog .print-summary{margin-top:14px}
.print-summary{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;border-radius:6px;background:var(--c-head);font-size:13px;color:#3a4858}

/* ── 인쇄 화면: 일일 작업지시서 (A4 가로) ── */
.print-layout{background:#e9ecef;min-height:100vh;padding:16px 0 40px;font-family:var(--app-font);color:#111820}
.print-toolbar{display:flex;align-items:center;gap:8px;justify-content:flex-end;max-width:297mm;margin:0 auto 12px;padding:0 12px;font-size:13px;color:var(--c-muted)}
.print-toolbar>span{margin-right:auto}
.print-button{height:36px;padding:0 18px;border:1px solid var(--c-input-line);border-radius:6px;background:#fff;color:var(--c-text);font:inherit;font-weight:600;cursor:pointer}
.print-button.primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}
.print-message{max-width:297mm;margin:40px auto;text-align:center;color:var(--c-muted)}
.sheet{width:297mm;min-height:210mm;box-sizing:border-box;margin:0 auto 16px;padding:10mm 11mm 9mm;background:#fff;display:flex;flex-direction:column;gap:3mm;box-shadow:0 1px 4px #0002;font-size:9pt}
.sheet-header{display:flex;justify-content:space-between;align-items:flex-start;gap:6mm}
.sheet-title{display:flex;align-items:baseline;gap:4mm}.sheet-title h1{margin:0;font-size:20pt;letter-spacing:.04em}.sheet-title span{font-size:10pt;color:#3a4858}
.sheet table{border-collapse:collapse}
.sheet th,.sheet td{border:1px solid #5a6672;padding:1.2mm 1.5mm}
.sheet-approval th{background:#e9eef3;font-weight:600;width:20mm}.sheet-approval th[rowspan]{width:7mm;line-height:1.6}.sheet-approval td{height:13mm}
.sheet-info{width:100%;table-layout:fixed}.sheet-info th{background:#e9eef3;font-weight:600}.sheet-info td{font-weight:600}
/* 정보 표는 세 칸을 정확히 1/3씩 쓴다. 출력일시 칸 시작선(2/3 지점)이 아래 표의 현장 기입란 시작선과 같아야 한다. */
.sheet-info col.i-th{width:7.6%}.sheet-info col.i-td{width:25.7333%}
.sheet-table{width:100%;table-layout:fixed;font-variant-numeric:tabular-nums}
.sheet-table th{background:#e9eef3;font-weight:600;font-size:8.5pt}
.sheet-table td{border-color:#8a949e;font-size:8.5pt}
.sheet-table .band-plan{background:#dce5ee}.sheet-table .band-field,.sheet-table th.field{background:#f6e3d2}
.sheet-table td.field{background:#fffaf4}
.sheet-table .center{text-align:center}.sheet-table .number{text-align:right}
.sheet-table .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-table .mono{font-size:8pt}
.sheet-table td,.sheet-table th{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 2026-10-15 개편: 지시 행 + 공정 행. 지시 행은 전체 폭을 쓰고, 공정 행은 왼쪽 2/3에 지시 내용, 오른쪽 1/3에 현장 기입란(생산수량·작업자·시작·종료는 같은 폭, 불량은 절반)을 둔다.
   행 높이는 WorkOrderRules.SheetLayout(지시 6mm, 공정 9mm, 합계 7mm)과 같아야 장 나누기가 맞는다. */
.sheet-table col.c-seq{width:13mm}.sheet-table col.c-proc{width:34mm}.sheet-table col.c-mc{width:34mm}.sheet-table col.c-qty{width:25mm}
.sheet-table col.f-full{width:7.4074%}.sheet-table col.f-half{width:3.7037%}
.sheet-table tr.sheet-order td{height:6mm;box-sizing:border-box;padding:0 1.5mm;background:#eef2f6;border-top:1.5px solid #3a4858}
.sheet-table tr.sheet-line td{height:9mm;box-sizing:border-box;padding:0 1.5mm}
.sheet-table tr.sheet-total td{height:7mm;box-sizing:border-box;padding:0 1.5mm;font-weight:700;background:#eef1f4;border-top:2px solid #111820}
.sheet-table tr.sheet-total td.continued{font-weight:400;color:#3a4858;text-align:right}
.sheet-table td.field-off{background:repeating-linear-gradient(135deg,#f3f4f6 0 2mm,#fafafa 2mm 4mm)}
.sheet-table td.condition{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 지시 행은 칸마다 시작점이 고정된 격자다. 경계(셀 안쪽 기준)는 아래 공정 행의 열 경계에 맞춘다:
   품명 47mm(설비 열 시작), 지시수량 106mm(작업조건 열 시작), 규격 183.3mm(현장 기입란 시작)부터 끝까지.
   비고는 지시 행 아래 sheet-note 줄(5mm, 전체 폭)에 둔다. 높이는 WorkOrderRules.SheetLayout.Note와 같다. */
.order-line{display:grid;grid-template-columns:30mm 17mm 59mm 30mm 47.3mm minmax(0,1fr);align-items:center;white-space:nowrap}
.order-line>*{min-width:0;overflow:hidden;text-overflow:ellipsis;padding-right:2mm;box-sizing:border-box}
.sheet-table tr.sheet-note td{height:5mm;box-sizing:border-box;padding:0 1.5mm;background:#f6f8fa;font-size:8pt;color:#243047}
.sheet-table tr.sheet-note em{font-style:normal;color:#5a6672;margin-right:2mm}
.total-line{display:grid;grid-template-columns:106mm minmax(0,1fr);white-space:nowrap}.total-line>span{overflow:hidden;text-overflow:ellipsis}
.order-line .o-no{font-weight:700}.order-line em{font-style:normal;color:#5a6672;margin-right:1mm}
.band-hint{font-weight:400;font-size:7.5pt;color:#3a4858;margin-left:2mm}
/* 공정별·설비별 장(2026-10-15): 지시당 본 줄(9mm) + 보조 줄(5mm). 기입란은 두 줄을 합친 14mm 칸이다.
   열: 지시번호 30 · 품목코드 16 · 품명(남는 폭, 약 56) · 가변 열 28(설비/앞 공정/공정) · 공정 지시수량 23 · 완료예정 30(지연 표시 포함), 기입란은 전체 표와 같은 1/3. */
.sheet-table.flat col.g-no{width:30mm}.sheet-table.flat col.g-code{width:16mm}.sheet-table.flat col.g-slot{width:28mm}
.sheet-table.flat col.g-qty{width:23mm}.sheet-table.flat col.g-due{width:30mm}
.sheet-table.flat tr.flat-main td{border-top:1.5px solid #3a4858}
.sheet-table.flat tr.flat-main td.field{border-top:1px solid #8a949e}
.sheet-table.flat tr.sheet-sub td{height:5mm;box-sizing:border-box;padding:0 1.5mm;background:#f6f8fa;font-size:8pt;color:#243047}
/* 보조 줄: 본 줄 열 경계를 그대로 쓰는 세 칸(규격 | 앞 공정·공정 순서 | 작업조건). 칸 이름은 머리 셋째 줄(sub-head)에 둔다. 비고 줄은 한 칸 전체 */
.sheet-table.flat tr.sheet-sub td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-table.flat tr.sheet-sub td+td{border-left:1px dotted #c3cad2}
.sheet-table.flat tr.sub-head th{height:4.5mm;padding:0 1.5mm;font-size:7.5pt;font-weight:500;color:#5a6672;background:#f6f8fa;text-align:left}
.sheet-table.flat tr.sub-note td em{font-style:normal;color:#5a6672;margin-right:1.5mm}
.total-line.flat{display:flex;justify-content:space-between;gap:6mm}
.sheet-title .sheet-group{font-size:15pt;font-weight:700;color:#111820;padding:0 3mm;border-left:2px solid #3a4858}
.overdue-tag{display:inline-block;margin-left:1.5mm;padding:0 1.2mm;border:1px solid #111820;border-radius:2px;font-size:7.5pt;font-weight:700;line-height:1.3}
.sheet-footer{margin-top:auto;display:flex;justify-content:space-between;font-size:8.5pt;color:#3a4858}
@media print{
 @page{size:A4 landscape;margin:0}
 html,body{background:#fff!important}
 .no-print{display:none!important}
 .print-layout{background:#fff;padding:0;min-height:0}
 .sheet{margin:0;box-shadow:none;break-after:page;page-break-after:always;height:210mm}
 .sheet:last-child{break-after:auto;page-break-after:auto}
 .sheet th,.sheet td{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
/* 생산실적 등록 창의 작업지시 연결 */
.work-order-link{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;margin-bottom:8px;border:1px solid var(--c-primary-line);border-radius:8px;background:#f5f9fd}
/* 연결된 공정이 있으면 선택칸과 수량 카드를 한 줄에 둔다. 위아래로 쌓으면 1366×768에서 수정 창 안에 스크롤이 생겼다(2026-10-16). */
.work-order-link:has(.link-tiles){flex-direction:row;align-items:center;gap:12px}.work-order-link:has(.link-tiles)>.mud-select{flex:0 0 44%;min-width:0}.work-order-link:has(.link-tiles)>.link-tiles{flex:1;min-width:0}
.link-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;font-variant-numeric:tabular-nums}
.link-tiles>div{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:6px;background:#fff}
.link-tiles span{font-size:12px;color:var(--c-muted)}.link-tiles strong{font-size:15px;font-weight:600}
.link-tiles .over-quantity{color:var(--c-warn)}
/* 공정별 진행 표는 줄어들지 않고 내용 높이를 그대로 쓴다(목록 그리드만 남은 높이 안에서 스크롤). */
.detail-panel .mud-table-container{flex:none!important;overflow:visible!important;max-height:none}
.detail-grid th,.detail-grid td{white-space:nowrap}
/* 공정별 진행 표는 지시마다 컬럼 위치가 바뀌지 않게 너비를 고정한다. 작업조건이 남는 너비를 쓴다. */
.detail-grid table{width:100%;table-layout:fixed}
.detail-grid col.d-seq{width:64px}.detail-grid col.d-proc{width:160px}.detail-grid col.d-mc{width:180px}
.detail-grid col.d-qty{width:130px}.detail-grid col.d-count{width:100px}
.detail-grid td{overflow:hidden;text-overflow:ellipsis}
.cancel-confirm{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--c-error)}
/* 지시를 바꿔 고를 때 위 목록 높이가 흔들리지 않게 공정별 진행 표 높이를 머리글 + 3줄로 고정한다. 4줄부터는 표 안에서 스크롤한다. */
.detail-panel .mud-table-container{height:134px!important;overflow-y:auto!important}
.detail-grid thead th{position:sticky;top:0;z-index:1}

/* ── 2026-10-15 컨텐츠 디자인 표준: 팝업의 라벨은 입력칸 위에 따로 둔다(FormField와 같은 모양, FORM-01) ──
   MudBlazor 입력에 Label을 준 기존 팝업도 마크업을 바꾸지 않고 같은 모양이 되게 한다. 조회 조건 줄(DIM-01, 40px)은 바꾸지 않는다.
   적용 범위는 팝업(.mud-dialog)뿐이다. 회사 정보 화면(팝업이 아닌 입력 폼)은 라벨을 위로 올리면 1366×768에서 화면이 53px 넘쳐(SCROLL-01) 제외했다.
   메뉴·상단 바·로그인 화면도 제외한다. */
.mud-dialog .mud-input-control-input-container:has(>label.mud-input-label-outlined){padding-top:20px}
.mud-dialog .mud-input-control:has(>.mud-input-control-input-container>label.mud-input-label-outlined){margin-top:0!important}
.mud-dialog label.mud-input-label-outlined.mud-input-label-inputcontrol{transform:none!important;top:0!important;left:0!important;font-size:12px;line-height:16px;
 color:var(--c-muted);background:transparent!important;padding:0!important;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.mud-dialog .mud-input-outlined-border legend{display:none}
/* 상단 바 로고 링크(종합현황). 모양은 기존 로고 그대로다. */
.brand-link{color:inherit;text-decoration:none;display:inline-flex}.brand-link:focus-visible{outline:2px solid #315bdb;outline-offset:2px}
.workspace-link{display:block;text-decoration:none;cursor:pointer}.workspace-link:hover .mud-typography{color:var(--c-primary)}.workspace-link:focus-visible{outline:2px solid #315bdb;outline-offset:-2px}
/* 종합현황(2026-10-16). 1366×768 메뉴 펼침에서 스크롤 없이 들어가게 줄 높이와 간격을 고정한다. */
.overview-screen{display:flex;flex-direction:column;gap:10px}
.overview-screen .page-heading{margin-bottom:4px;padding-bottom:12px}
.ov-monitor-link{display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 14px;border:1px solid var(--c-primary);border-radius:6px;background:var(--c-surface);color:var(--c-primary);text-decoration:none;box-sizing:border-box;flex-shrink:0}
.ov-monitor-link:hover{background:var(--c-primary-tint)}.ov-monitor-link:focus-visible{outline:2px solid var(--c-primary);outline-offset:1px}
.ov-two-line{display:flex;flex-direction:column;line-height:1.2;font-size:13px;font-weight:600}
.ov-loading,.ov-none{padding:40px;text-align:center;color:var(--c-muted)}
.ov-day{display:flex;flex-direction:column;min-width:0;background:var(--c-surface)}
.ov-day-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--c-line-soft)}
.ov-tabs{display:flex;gap:6px}
.ov-tab{width:120px;height:46px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--c-input-line);border-radius:6px;background:var(--c-surface);color:#2f3e50;font:inherit;cursor:pointer}
.ov-tab:hover{background:var(--c-hover)}.ov-tab.selected{background:var(--c-primary);border-color:var(--c-primary);color:#fff}
.ov-tab:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}
.ov-tab-name{font-size:13px;font-weight:600}.ov-tab-date{font-size:12px;font-family:var(--app-mono)}
.ov-caption{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--c-muted)}
.ov-day-body{position:relative;display:flex;flex-direction:column;flex:1;min-height:0}
.ov-day-body.is-empty>.ov-kpis,.ov-day-body.is-empty>.ov-tables{visibility:hidden}
.ov-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--c-muted);font-size:13px;text-align:center;padding:0 16px}
.ov-empty strong{font-size:15px;color:var(--c-text)}
.ov-kpis{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:12px;padding:12px 16px 0}
.ov-kpi{border:1px solid var(--c-line-soft);border-radius:6px;padding:9px 12px;display:flex;flex-direction:column;gap:2px;background:var(--c-stripe);min-width:0}
.ov-kpi-label{font-size:12px;color:var(--c-muted)}
.ov-kpi-value{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.ov-kpi-value small{font-size:13px;font-weight:500;color:var(--c-muted);margin-left:4px}
.ov-kpi-detail{font-size:12px;color:var(--c-subtle);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-tables{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:12px;padding:10px 16px 12px;flex:1;min-height:0}.ov-tables.two{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
.ov-table-box{display:flex;flex-direction:column;min-width:0;min-height:0}
.ov-fit{flex:1;min-height:0;overflow:hidden}
.ov-fit.ov-scroll{overflow-y:auto}.ov-fit.ov-scroll thead th{position:sticky;top:0;z-index:1}
.ov-table-title,.ov-card-title{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:4px}
.ov-table-title h2,.ov-card-title h2{margin:0;font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-table-title h2 span{font-weight:500;font-size:12px;color:var(--c-muted);margin-left:4px}
.ov-table-title a,.ov-card-title a{font-size:12px;color:var(--c-primary);white-space:nowrap}
.ov-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.ov-table col.q{width:130px}.ov-table col.n{width:76px}.ov-table col.k{width:64px}
.ov-table th{background:var(--c-head);color:#3a4858;font-weight:600;padding:4px 8px;text-align:right}
.ov-table td{height:24px;padding:0 8px;border-bottom:1px solid var(--c-row-line);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-table .l{text-align:left}.ov-table .c{text-align:center}.ov-table td.sub,.ov-table small{color:var(--c-subtle);font-size:12px}
.ov-table tr.blank td{border-bottom-color:#f4f6f8}
.ov-table tr.idle td{color:var(--c-subtle)}
.ov-table .status-badge{font-size:11px;padding:1px 8px}
.ov-now{display:flex;flex-direction:column;gap:6px;min-width:0}
.ov-now-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--c-muted)}.ov-now-head strong{font-size:13px;color:var(--c-text)}
.ov-cards{display:grid;gap:12px;grid-template-rows:minmax(0,1fr);flex:1;min-height:0}
.ov-card{padding:10px 14px;display:flex;flex-direction:column;gap:6px;min-width:0;min-height:0;background:var(--c-surface)}
.ov-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;text-align:center}
.ov-counts a{display:flex;flex-direction:column;padding:4px 0;border-radius:6px;text-decoration:none;color:var(--c-text)}
.ov-counts a:hover,.ov-big-link:hover{background:var(--c-hover)}.ov-counts a:focus-visible,.ov-big-link:focus-visible{outline:2px solid var(--c-primary)}
.ov-counts span{font-size:12px;color:var(--c-muted)}.ov-counts strong{font-size:20px;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.ov-cards .run{color:var(--s-run-fg)}.ov-cards .late{color:var(--c-error)}.ov-cards .warn{color:var(--c-warn)}
.ov-list{display:flex;flex-direction:column;font-size:12px;border-top:1px solid var(--c-row-line)}
.ov-list-title{color:var(--c-muted);padding:5px 0 1px}.ov-list-none{color:var(--c-subtle);height:23px;display:flex;align-items:center}
.ov-order-row{display:grid;grid-template-columns:minmax(0,1fr) 44px 40px;gap:6px;align-items:center;height:23px}
.ov-order-row .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-order-row .due{text-align:center;font-family:var(--app-mono)}.ov-order-row .due.late{font-weight:700}
.ov-order-row .pct{text-align:right;font-variant-numeric:tabular-nums;color:#3a4858}
.ov-big,.ov-big-link{display:flex;align-items:baseline;gap:6px;padding:2px 0;border-radius:6px;text-decoration:none;font-size:12px;color:var(--c-muted)}
.ov-big strong,.ov-big-link strong{font-size:20px;font-weight:700}.ov-big-link strong{text-decoration:underline;text-underline-offset:3px}
.ov-bars{display:flex;flex-direction:column;gap:6px;font-size:12px;border-top:1px solid var(--c-row-line);padding-top:6px}
.ov-bar-row{display:flex;flex-direction:column;gap:3px}
.ov-bar-text{display:flex;justify-content:space-between;gap:6px}.ov-bar-text span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-bar-text span:last-child{font-variant-numeric:tabular-nums;color:#3a4858;white-space:nowrap}
.ov-bar{height:5px;border-radius:3px;background:var(--c-line-soft);overflow:hidden}.ov-bar>div{height:5px;background:var(--c-primary)}.ov-bar>div.warn{background:#c27c1a}
@media(max-width:900px){.ov-kpis{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr))}.ov-tables.two{grid-template-columns:minmax(0,1fr);grid-template-rows:none}.ov-cards{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:none}}
/* 데스크톱: 종합현황이 화면 높이를 다 쓰고(위 3 : 아래 2), 늘어난 높이만큼 표와 목록 줄이 더 보인다(js/overview-fit.js, 2026-10-16). */
@media(min-width:900px){.overview-screen>.ov-day{flex:3 1 0;min-height:0}.overview-screen>.ov-now{flex:2 1 0;min-height:0}}
/* 생산현황 모니터링(2026-10-16). 현장 TV 1920×1080용 어두운 화면, 큰 글씨. 메뉴·상단 바 없음. */
.monitor-layout{min-height:100vh;background:#0f1720}
.mon-screen{min-height:100vh;box-sizing:border-box;padding:28px 40px;display:flex;flex-direction:column;gap:20px;background:#0f1720;color:#f2f5f8;font-family:var(--app-font);font-size:22px;font-variant-numeric:tabular-nums}
.mon-head{display:flex;justify-content:space-between;align-items:center;gap:24px}
.mon-title{display:flex;align-items:center;gap:18px}
.mon-logo{width:64px;height:56px;border-radius:10px;background:#2f5d8a;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;letter-spacing:.08em}
.mon-title h1{margin:0;font-size:36px;font-weight:700}.mon-title span{font-size:18px;color:#a9b6c4}
.mon-clock{display:flex;align-items:center;gap:28px}
.mon-refresh{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:18px;color:#a9b6c4}
.mon-time{display:flex;flex-direction:column;align-items:flex-end}.mon-time span{font-size:20px;color:#c9d3de}.mon-time strong{font-size:44px;font-weight:600;font-family:var(--app-mono);line-height:1.1}
.mon-message{padding:120px;text-align:center;font-size:26px;color:#c9d3de}
.mon-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
.mon-kpi,.mon-panel{background:#17212e;border:1px solid #263445;border-radius:10px;min-width:0}
.mon-kpi{padding:16px 22px;display:flex;flex-direction:column;gap:4px}
.mon-kpi .label{font-size:20px;color:#a9b6c4}
.mon-kpi .value{font-size:48px;font-weight:700;line-height:1.1;white-space:nowrap}.mon-kpi .value small{font-size:22px;font-weight:500;color:#a9b6c4;margin-left:8px}
.mon-kpi .detail{font-size:18px;color:#c9d3de;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mon-screen .good{color:#4cc38a}.mon-screen .run{color:#8cc0f0}.mon-screen .late{color:#ff8a7a;font-weight:700}
.mon-middle{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px}
.mon-panel{padding:14px 22px;display:flex;flex-direction:column;gap:6px}
.mon-panel-title{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.mon-panel-title h2{margin:0;font-size:26px;font-weight:700;white-space:nowrap}.mon-panel-title h2 span{font-size:20px;font-weight:500;color:#a9b6c4;margin-left:6px}
.mon-panel-title>span{font-size:17px;color:#a9b6c4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mon-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:22px}
.mon-table th{padding:6px 10px;text-align:right;font-weight:500;font-size:18px;color:#a9b6c4;border-bottom:1px solid #33445a}
.mon-table td{height:34px;padding:0 10px;text-align:right;border-bottom:1px solid #223042;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mon-orders .mon-table td{height:38px}
.mon-table .l{text-align:left}.mon-table .c{text-align:center}.mon-table .strong{font-weight:600}.mon-table .soft{color:#c9d3de}
.mon-table .mono{font-family:var(--app-mono);font-size:20px}.mon-table small{font-size:16px;color:#a9b6c4}
.mon-table tr.blank td{border-bottom-color:#1c2836}
.mon-progress{display:flex;align-items:center;gap:10px}.mon-progress .bar{flex:1;height:12px;border-radius:6px;background:#263445;overflow:hidden}
.mon-progress .bar>div{height:12px;border-radius:6px;background:#5b9bd5}.mon-progress span{width:64px;text-align:right;font-size:20px}
.mon-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:17px;font-weight:600}.mon-badge.run{background:#1e4c7c;color:#dce9f7}.mon-badge.wait{background:#33445a;color:#e6ebf1}
.mon-pages{display:flex;align-items:center;gap:12px;font-size:18px;color:#c9d3de}.mon-pages .dots{display:flex;gap:6px}.mon-pages i{width:12px;height:12px;border-radius:50%;background:#3a4a5e}.mon-pages i.on{background:#f2f5f8}
/* 표 머리글 정렬(UI 기준 GRID-09, 2026-10-16). 화살표 자리를 글자 오른쪽에 두고 머리글 칸 너비는 바꾸지 않는다. */
.sort-head{all:unset;position:relative;display:inline-block;padding-right:14px;cursor:pointer;font:inherit;color:inherit;white-space:nowrap;line-height:inherit}
.sort-head .sort-icon{position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:13px!important;width:13px;height:13px;color:#b8c2ce}
/* 정렬 머리글 칸은 좌우 여백을 줄여 화살표 자리를 낸다(칸 너비는 그대로, 1366에서 좁은 칸도 넘치지 않음). */
.mud-table-head .mud-table-cell:has(.sort-head){padding-left:4px!important;padding-right:4px!important}
.sort-head:hover .sort-icon{color:var(--c-muted)}
.sort-head.active .sort-icon{color:var(--c-primary)}
.sort-head:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px;border-radius:2px}
