:root{--navy:#0b1f3a;--navy2:#102b4e;--blue:#1268e8;--cyan:#00a8c8;--bg:#f3f6fa;--line:#dfe6ef;--text:#162235;--muted:#68778c;--ok:#14845b;--warn:#c17b08;--danger:#c43b48;--white:#fff;--shadow:0 8px 24px rgba(18,39,67,.08)}*{box-sizing:border-box}body{margin:0;font-family:"Pretendard","Noto Sans KR","Malgun Gothic",Arial,sans-serif;color:var(--text);background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer}#app{min-height:100vh;display:flex}.sidebar{width:264px;background:linear-gradient(180deg,var(--navy),#071526);color:#dbe7f6;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:20}.brand{height:82px;padding:0 22px;display:flex;align-items:center;gap:13px;border-bottom:1px solid rgba(255,255,255,.08)}.brand b{display:block;font-size:15px;letter-spacing:.7px;color:#fff}.brand span{display:block;font-size:10px;margin-top:5px;color:#7e9abb;text-transform:uppercase;letter-spacing:.8px}.chipmark{width:34px;height:34px;border:1px solid #4c89cb;border-radius:9px;display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:7px;background:#103966}.chipmark i{border-radius:2px;background:#59cce3}.sidebar nav{flex:1;overflow:auto;padding:18px 13px}.nav-group{margin-bottom:17px}.nav-group label{display:block;padding:0 11px 8px;color:#718cab;font-size:10px;font-weight:700;letter-spacing:1.1px}.nav-item{width:100%;height:42px;border:0;border-radius:8px;background:transparent;color:#c9d8e8;display:flex;align-items:center;gap:11px;padding:0 12px;margin:2px 0;text-align:left}.nav-item:hover{background:rgba(255,255,255,.07);color:white}.nav-item.active{background:linear-gradient(90deg,#156ee8,#135fbd);color:#fff;box-shadow:0 6px 14px rgba(0,73,159,.25)}.nav-item .ico{width:20px;text-align:center;font-size:15px}.profile{min-height:76px;border-top:1px solid rgba(255,255,255,.1);padding:14px 16px;display:flex;align-items:center;gap:10px;background:rgba(0,0,0,.12)}.avatar{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;background:#1674df;color:#fff;font-weight:800}.profile b,.profile span{display:block}.profile b{font-size:13px;color:#fff}.profile span{font-size:10px;color:#7f9ab7;margin-top:4px}.profile button{margin-left:auto;border:0;background:transparent;color:#99afc7}.shell{margin-left:264px;min-width:0;width:calc(100% - 264px)}header{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 26px;position:sticky;top:0;z-index:15}.global-search{height:40px;width:min(520px,50vw);border:1px solid #d9e2ec;background:#f7f9fc;border-radius:9px;display:flex;align-items:center;gap:9px;padding:0 13px;color:#8391a4}.global-search input{border:0;outline:0;background:transparent;width:100%;color:var(--text)}.head-actions{margin-left:auto;display:flex;align-items:center;gap:9px}.iconbtn{position:relative;width:38px;height:38px;border:1px solid #e0e6ee;background:#fff;border-radius:9px;color:#526276}.iconbtn em{position:absolute;right:-3px;top:-4px;background:#e04b57;color:white;width:17px;height:17px;border-radius:9px;font-size:10px;font-style:normal;display:grid;place-items:center}.head-user{display:flex;align-items:center;gap:8px;margin-left:8px;font-size:13px}.status{width:8px;height:8px;background:#1caf76;border-radius:50%}#mobileMenu{display:none;margin-right:10px}main{padding:30px;max-width:1720px;margin:auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:24px}.eyebrow{font-size:11px;color:var(--blue);font-weight:800;letter-spacing:1.2px;text-transform:uppercase}.page-head h1{font-size:26px;margin:7px 0 6px;letter-spacing:-.7px}.page-head p{margin:0;color:var(--muted);font-size:13px}.datebox{text-align:right;font-size:12px;color:var(--muted)}.datebox b{display:block;color:var(--text);font-size:14px;margin-top:4px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:18px}.card{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.metric{padding:18px 19px;position:relative;overflow:hidden}.metric:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue)}.metric .label{font-size:12px;color:var(--muted)}.metric strong{display:block;font-size:28px;margin:10px 0 5px;letter-spacing:-1px}.metric small{color:var(--muted)}.metric small b{color:var(--blue)}.grid2{display:grid;grid-template-columns:1.35fr .65fr;gap:16px}.panel{padding:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.panel-head h2{font-size:15px;margin:0}.panel-head span{font-size:11px;color:var(--muted)}.progress-row{display:grid;grid-template-columns:130px 1fr 48px;gap:13px;align-items:center;margin:15px 0;font-size:12px}.bar{height:8px;background:#edf1f6;border-radius:9px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan));border-radius:9px}.alerts{display:grid;gap:10px}.alert{display:flex;align-items:center;gap:11px;border:1px solid var(--line);border-radius:9px;padding:12px}.alert .dot{width:9px;height:9px;border-radius:50%;background:var(--warn)}.alert b{font-size:12px;display:block}.alert span{font-size:10px;color:var(--muted)}.toolbar{display:flex;gap:9px;align-items:center;margin-bottom:15px}.toolbar input,.toolbar select{height:39px;border:1px solid #d9e2ec;background:#fff;border-radius:8px;padding:0 12px;outline:none}.toolbar input{min-width:260px}.btn{height:39px;border:1px solid #d7e0ea;border-radius:8px;background:#fff;padding:0 14px;color:#425369}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}.data-table{width:100%;border-collapse:collapse;min-width:850px}.data-table th{background:#f7f9fc;color:#5b6b80;font-size:11px;text-align:left;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}.data-table td{padding:12px;border-bottom:1px solid #edf1f5;font-size:12px;white-space:nowrap}.data-table tr:hover td{background:#f9fbfe}.badge{display:inline-flex;align-items:center;height:23px;border-radius:12px;padding:0 9px;background:#e9f3ff;color:#1765bf;font-size:10px;font-weight:700}.badge.ok{background:#e8f7f1;color:var(--ok)}.badge.warn{background:#fff4dc;color:var(--warn)}.empty{padding:65px 20px;text-align:center;color:var(--muted)}.empty .symbol{font-size:34px;margin-bottom:12px}.module-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.module-card{padding:18px}.module-card h3{margin:0 0 8px;font-size:14px}.module-card p{font-size:11px;color:var(--muted);min-height:34px}.module-card .count{font-size:24px;font-weight:800}.module-card footer{border-top:1px solid var(--line);margin-top:15px;padding-top:12px;font-size:10px;color:var(--muted)}#toast{position:fixed;right:24px;bottom:24px;background:#10243d;color:white;border-radius:9px;padding:12px 16px;opacity:0;transform:translateY(10px);transition:.2s;z-index:50;font-size:12px}#toast.show{opacity:1;transform:none}@media(max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.module-summary{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.shell{margin-left:0;width:100%}#mobileMenu{display:block}header{padding:0 12px}.global-search{width:100%}.head-user,.head-actions>.iconbtn{display:none}main{padding:18px}.cards,.module-summary{grid-template-columns:1fr}.page-head{align-items:flex-start}.datebox{display:none}.toolbar{flex-wrap:wrap}.toolbar input{min-width:100%;width:100%}}
/* V20.1 HR module */
.tabs{display:flex;gap:6px;margin:0 0 18px;border-bottom:1px solid var(--line)}.tabs button{border:0;background:transparent;padding:12px 18px;font-weight:800;color:#667085;border-bottom:3px solid transparent;cursor:pointer}.tabs button.active{color:#1268e8;border-bottom-color:#1268e8}.cards.compact{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.cards.compact .metric{min-height:112px}.cell-sub{display:block;color:#8a98aa;margin-top:3px}.row-actions{display:flex;gap:5px;white-space:nowrap}.row-actions button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 9px;cursor:pointer}.row-actions .danger,.icon-danger{color:#c43b45}.form-card{padding:22px}.form-section{border-bottom:1px solid var(--line);padding:0 0 22px;margin-bottom:22px}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-title h3{margin:0;color:#10233f}.section-title span{color:#758398;font-size:13px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.form-grid label,.dynamic-row label{font-size:12px;font-weight:800;color:#526174}.form-grid input,.form-grid select,.form-grid textarea,.dynamic-row input,.print-grid select{width:100%;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:10px 11px;background:#fff;box-sizing:border-box}.form-grid textarea{min-height:72px;resize:vertical}.span2{grid-column:span 2}.dynamic-list{display:flex;flex-direction:column;gap:9px}.dynamic-row{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr)) 64px;gap:8px;align-items:end;padding:12px;background:#f7f9fc;border:1px solid var(--line);border-radius:10px}.dynamic-row[data-kind="accounts"]{grid-template-columns:repeat(4,minmax(130px,1fr)) 64px}.icon-danger{border:1px solid #f0c6ca;background:#fff;border-radius:7px;padding:10px 7px;cursor:pointer}.btn.small{padding:7px 10px;font-size:12px}.form-actions{display:flex;justify-content:flex-end;gap:8px}.print-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.print-grid .panel{padding:24px}.print-grid h2{margin-top:0}.print-grid p{color:#68778b;min-height:44px}.button-stack{display:flex;gap:8px;flex-wrap:wrap}.migration{display:grid;gap:10px}.migration>div{padding:12px;border:1px solid var(--line);border-radius:10px;display:flex;justify-content:space-between}.migration .done{border-color:#9dd9c3;background:#f1fbf7}.migration span{color:#667085;font-size:13px}@media(max-width:1100px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dynamic-row,.dynamic-row[data-kind="accounts"]{grid-template-columns:repeat(2,minmax(0,1fr))}.cards.compact{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.form-grid,.print-grid,.cards.compact{grid-template-columns:1fr}.span2{grid-column:auto}.dynamic-row,.dynamic-row[data-kind="accounts"]{grid-template-columns:1fr}.tabs{overflow:auto}.tabs button{white-space:nowrap}}

/* V20.1.1 fixed enterprise proportions */
:root{--sidebar-w:220px}
.sidebar{width:var(--sidebar-w)}
.shell{margin-left:var(--sidebar-w);width:calc(100% - var(--sidebar-w))}
.brand{height:68px;padding:0 15px;gap:10px}
.brand b{font-size:13px;letter-spacing:.45px}.brand span{font-size:8px;margin-top:3px}.chipmark{width:30px;height:30px;padding:6px;border-radius:8px}
.sidebar nav{padding:10px 8px}.nav-group{margin-bottom:8px}.nav-group label{padding:5px 9px 4px;font-size:8px;letter-spacing:.8px}
.nav-item{height:34px;border-radius:7px;gap:8px;padding:0 9px;margin:1px 0;font-size:12px}.nav-item .ico{width:17px;font-size:12px}
.profile{min-height:62px;padding:10px 12px;gap:8px}.avatar{width:31px;height:31px;border-radius:8px;font-size:12px}.profile b{font-size:11px}.profile span{font-size:8px;margin-top:2px}
header{height:58px;padding:0 20px}.global-search{height:34px;width:min(460px,45vw);border-radius:8px;font-size:11px}.iconbtn{width:34px;height:34px;border-radius:8px}.head-user{font-size:11px}
main{padding:22px 26px;max-width:1680px}.page-head{margin-bottom:17px}.eyebrow{font-size:9px}.page-head h1{font-size:22px;margin:5px 0 4px}.page-head p{font-size:11px}.datebox{font-size:10px}.datebox b{font-size:12px}
.cards{gap:12px;margin-bottom:14px}.card{border-radius:10px}.metric{padding:15px 16px}.metric .label{font-size:10px}.metric strong{font-size:24px;margin:7px 0 3px}.panel{padding:16px}.panel-head{margin-bottom:12px}.panel-head h2{font-size:13px}.progress-row{margin:11px 0;font-size:11px}
.module-summary{gap:11px}.module-card{padding:15px}.module-card h3{font-size:12px}.module-card p{font-size:10px}.module-card .count{font-size:21px}
.toolbar{margin-bottom:12px}.toolbar input,.toolbar select,.btn{height:35px;font-size:11px}.data-table th{padding:10px;font-size:10px}.data-table td{padding:10px;font-size:11px}
@media(max-width:760px){.shell{margin-left:0;width:100%}.sidebar{width:220px}main{padding:16px}}
/* V20.1.2 - Personal assistant module */
.assistant-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;align-items:start}.assistant-main{min-width:0}.assistant-toolbar{grid-template-columns:minmax(220px,1fr) repeat(4,auto);display:grid}.task-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.task-card{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line,#dbe3ee);border-radius:10px;padding:12px;background:#fff}.task-card.overdue{border-left:4px solid #d92d20}.task-card.due-soon{border-left:4px solid #d78b09}.task-check button{width:28px;height:28px;border-radius:50%;border:1px solid #b8c5d6;background:#f7f9fc;color:#1b63c6;font-weight:800}.task-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.task-title b{font-size:14px;color:#10233f}.task-body p{margin:5px 0 7px;color:#5b6b80;font-size:12px;white-space:pre-wrap}.task-meta{display:flex;gap:14px;flex-wrap:wrap;color:#718096;font-size:11px}.task-meta .overdue{color:#b42318;font-weight:700}.task-meta .due-soon{color:#a15c00;font-weight:700}.memo-form{display:grid;gap:8px}.memo-form textarea{min-height:96px;resize:vertical}.memo-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;max-height:520px;overflow:auto}.memo-item{border:1px solid #dbe3ee;border-radius:9px;padding:10px;background:#f9fbfd}.memo-item p{margin:0 0 7px;white-space:pre-wrap;font-size:12px}.memo-item small{display:block;color:#8491a5;margin-bottom:8px}.modal-overlay{position:fixed;inset:0;background:rgba(9,23,43,.48);display:grid;place-items:center;z-index:100001;padding:20px}.modal-box{width:min(680px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 24px 70px rgba(9,23,43,.28)}.modal-head{height:56px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e3e9f1}.modal-head h2{font-size:17px;margin:0}.modal-head button{border:0;background:none;font-size:25px;color:#637187}.modal-body{padding:18px}.modal-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-form label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#34445b}.modal-form .span2{grid-column:1/-1}.modal-form textarea{min-height:110px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.status-choice{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.badge.info{background:#e7f0ff;color:#175cd3}.badge.danger{background:#fee4e2;color:#b42318}@media(max-width:1050px){.assistant-layout{grid-template-columns:1fr}.assistant-toolbar{grid-template-columns:1fr 1fr 1fr}.assistant-toolbar input{grid-column:1/-1}}@media(max-width:700px){.assistant-toolbar,.modal-form{grid-template-columns:1fr}.modal-form .span2{grid-column:auto}.task-card{grid-template-columns:28px 1fr}.task-card>.row-actions{grid-column:2;justify-content:flex-start}.status-choice{grid-template-columns:1fr 1fr}}
/* V20.1.3 Schedule migration */
.schedule-panel{padding:0;overflow:hidden}.schedule-panel>.panel-head{padding:14px 16px;border-bottom:1px solid var(--line);align-items:center}.schedule-tabs,.schedule-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.tab-btn{height:34px;padding:0 13px;border:1px solid var(--line);background:#fff;border-radius:9px;font-weight:800;color:var(--text);cursor:pointer}.tab-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.schedule-toolbar{margin:14px 16px 0}.schedule-table{min-width:1420px}.schedule-table td small{display:block;color:var(--muted);margin-top:3px}.wide-cell{min-width:240px;white-space:normal!important;line-height:1.45}.calendar-toolbar{display:flex;justify-content:center;align-items:center;gap:8px;padding:16px}.calendar-toolbar input{height:36px;border:1px solid var(--line);border-radius:9px;padding:0 10px;font-weight:800}.calendar-week,.schedule-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line)}.calendar-week{margin:0 16px;background:transparent;gap:0}.calendar-week b{text-align:center;padding:8px;color:var(--muted);font-size:12px}.schedule-calendar{margin:0 16px 16px;border:1px solid var(--line);border-radius:12px;overflow:hidden}.cal-day{background:#fff;min-height:118px;padding:8px}.cal-day.muted{background:#f8fafc}.cal-date{font-size:12px;font-weight:900;margin-bottom:6px}.cal-event{width:100%;display:block;text-align:left;border:0;border-left:3px solid var(--primary);background:#eef5ff;border-radius:6px;padding:6px 7px;margin:4px 0;cursor:pointer}.cal-event b,.cal-event span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-event b{font-size:11px}.cal-event span{font-size:10px;color:var(--muted);margin-top:2px}.schedule-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:16px}.stat-box{border:1px solid var(--line);border-radius:12px;padding:15px;background:#fff}.stat-box h3{margin:0 0 14px;font-size:15px}.stat-row{display:grid;grid-template-columns:140px 1fr 50px;align-items:center;gap:10px;margin:10px 0;font-size:12px}.stat-row>div{height:8px;background:#edf1f6;border-radius:99px;overflow:hidden}.stat-row i{display:block;height:100%;background:linear-gradient(90deg,var(--primary),#38a7c4);border-radius:99px}.stat-row b{text-align:right}.paste-help{font-size:12px;line-height:1.6;color:var(--muted);margin-bottom:10px}.paste-area{width:100%;min-height:230px;border:1px solid var(--line);border-radius:10px;padding:12px;font-family:Consolas,"Malgun Gothic",monospace;resize:vertical}.preview-box{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:10px;margin-top:12px}.preview-box>div{padding:10px 12px;border-bottom:1px solid var(--line)}.preview-box>div:last-child{border-bottom:0}.preview-box b,.preview-box span,.preview-box p{display:block;margin:0}.preview-box span,.preview-box p{font-size:12px;color:var(--muted);margin-top:4px}
@media(max-width:900px){.schedule-stats{grid-template-columns:1fr}.schedule-panel>.panel-head{align-items:flex-start}.calendar-week,.schedule-calendar{min-width:720px}.schedule-panel{overflow:auto}.stat-row{grid-template-columns:105px 1fr 44px}}
@media print{.sidebar,.topbar,.page-head,.cards,.schedule-panel>.panel-head,.toolbar,.row-actions{display:none!important}.app-shell,.main-shell,#main{margin:0!important;padding:0!important}.schedule-panel{border:0!important;box-shadow:none!important}.schedule-calendar{margin:0;grid-template-columns:repeat(7,1fr)}.cal-day{min-height:100px}}
/* V20.1.4 account assistant, shared schedule, worklog separation, admin master data */
.kmi-logo{width:46px;height:34px;border:1px solid rgba(255,255,255,.3);border-radius:7px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:linear-gradient(135deg,#0d67c8,#08a7bd);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}.kmi-logo b{font-size:14px!important;line-height:13px;letter-spacing:1.6px!important;color:#fff}.kmi-logo span{font-size:6px!important;line-height:7px;margin:0!important;letter-spacing:2px!important;color:#dff8ff!important}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.master-card{min-height:280px}.master-list{display:flex;flex-direction:column;gap:7px;max-height:280px;overflow:auto}.master-list>div:not(.empty){display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-size:12px;background:#f9fbfd}.master-list button,.row-actions .danger{border:1px solid #f2c7cc;background:#fff;color:#b42318;border-radius:7px;padding:5px 8px}.master-form{display:flex;gap:8px;margin-top:12px}.master-form input{flex:1;height:35px;border:1px solid var(--line);border-radius:8px;padding:0 10px}.schedule-actions{display:flex;gap:7px;flex-wrap:wrap}@media(max-width:900px){.admin-grid{grid-template-columns:1fr}}
/* V20.1.4 schedule calendar integration revision */
.calendar-guide{margin:14px 16px 0;padding:10px 12px;border:1px solid #d9e6f5;border-radius:10px;background:#f4f8fd;color:var(--muted);font-size:12px}.shared-cal-day{cursor:cell;transition:background .15s}.shared-cal-day:hover{background:#f8fbff}.shared-cal-day:hover .cal-date{color:var(--primary)}.shared-event{cursor:pointer}.schedule-panel>.panel-head>div>span{display:block;margin-top:5px;color:var(--muted);font-size:12px}

/* V20.1.4 schedule filter and logo refinement */
.brand-logo{width:58px;height:42px;object-fit:contain;border-radius:5px;flex:0 0 auto;background:#15556b}
.brand{height:82px;padding:7px 14px;gap:11px}
.brand>div:last-child{min-width:0}
.brand>div:last-child b{white-space:nowrap}
.cal-day{padding:10px 12px}
.cal-date{padding-left:4px;margin-bottom:7px;line-height:22px;min-width:24px}
.calendar-guide{padding-left:16px}
.modal-form select,.modal-form input,.modal-form textarea{width:100%;border:1px solid #bfc9d6;border-radius:5px;background:#fff;padding:0 9px;outline:none}
.modal-form input,.modal-form select{height:36px}
.modal-form textarea{padding:9px;min-height:110px}
.modal-form select:focus,.modal-form input:focus,.modal-form textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(18,104,232,.1)}


/* V20.1.5 schedule and master-data polish */
.brand-logo{width:66px;height:48px;object-fit:contain;background:transparent!important;border-radius:0;filter:none}.brand{height:88px;padding:9px 14px;gap:10px}.brand>div:last-child b{font-size:12px;letter-spacing:.2px}.brand>div:last-child span{font-size:7px;letter-spacing:1.1px}
.schedule-heading{padding-left:0}.schedule-panel>.panel-head{padding-left:30px;padding-right:30px}.calendar-guide{margin:0;padding:15px 30px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:#fff;color:#20324c;font-size:13px;line-height:1.6}.schedule-panel>.panel-head>div>span{margin-top:7px}.cal-event{border-left-color:var(--event-color,#2563eb);background:color-mix(in srgb,var(--event-color,#2563eb) 10%,white)}.event-shape{font-style:normal;color:var(--event-color,#2563eb);margin-right:5px}.site-pill,.display-pill{display:inline-flex;align-items:center;gap:7px}.site-pill i{width:9px;height:9px;border-radius:50%}.display-pill i{font-style:normal;font-size:15px;color:#234d8e}.modal-spacer{flex:1}
.admin-workspace{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;align-items:start}.master-nav{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px;box-shadow:var(--shadow)}.master-nav-title{font-size:11px;font-weight:900;color:#6b7c93;padding:9px 11px;text-transform:uppercase;letter-spacing:.12em}.master-nav button{width:100%;border:0;background:transparent;text-align:left;border-radius:10px;padding:11px 12px;cursor:pointer;color:var(--text)}.master-nav button b,.master-nav button span{display:block}.master-nav button b{font-size:13px}.master-nav button span{font-size:10px;color:var(--muted);margin-top:3px;line-height:1.35}.master-nav button.active{background:#edf4ff;color:#1559b5}.master-nav button.active span{color:#4b76ae}.master-nav .master-back{margin-top:10px;border-top:1px solid var(--line);border-radius:0;padding-top:15px;color:#31557f;font-weight:800}.master-content{padding:0;overflow:hidden;min-height:620px}.master-content-head{display:flex;align-items:center;justify-content:space-between;padding:24px 26px;border-bottom:1px solid var(--line)}.master-content-head h2{margin:4px 0 5px;font-size:20px}.master-content-head p{margin:0;color:var(--muted);font-size:12px}.master-kicker{font-size:9px;font-weight:900;color:var(--primary);letter-spacing:.16em}.master-table-head,.master-row{display:grid;grid-template-columns:minmax(220px,1fr) 210px 100px;align-items:center;gap:14px}.master-table-head{padding:11px 26px;background:#f7f9fc;border-bottom:1px solid var(--line);font-size:10px;font-weight:900;color:#6b7c93;text-transform:uppercase}.master-table-head.simple{grid-template-columns:1fr 100px}.master-list.modern{display:block;max-height:none;overflow:visible}.master-list.modern .master-row{padding:14px 26px;border:0;border-bottom:1px solid #edf1f6;border-radius:0;background:#fff;font-size:13px}.master-list.modern .master-row:hover{background:#fbfdff}.master-name{display:flex;align-items:center;gap:10px;font-weight:800}.color-dot{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 3px rgba(15,35,65,.06)}.color-label{display:flex;align-items:center;gap:9px;color:#52647b;font-family:Consolas,monospace;font-size:11px}.color-label i{width:30px;height:18px;border-radius:5px;border:1px solid rgba(0,0,0,.08)}.shape-preview{font-style:normal;width:26px;height:26px;border-radius:7px;display:grid;place-items:center;background:#eef4ff;color:#185dbd;font-size:17px}.shape-label{font-size:20px;color:#1e4e8f}.master-row-actions{display:flex;justify-content:flex-end;gap:6px}.icon-btn{width:32px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#45617f;cursor:pointer}.icon-btn:hover{background:#f3f7fc;border-color:#b8c8dc}.icon-btn.danger{color:#c33;border-color:#f0d0d0}.editor-field{display:grid;gap:10px}.editor-field>b{font-size:12px;color:#34445b}.choice-grid{display:flex;gap:9px;flex-wrap:wrap}.color-choice{width:34px;height:34px;border-radius:50%;border:3px solid #fff;background:var(--choice);box-shadow:0 0 0 1px #cfd8e5;cursor:pointer}.color-choice.selected{box-shadow:0 0 0 3px #1d64d1}.custom-color{display:flex!important;grid-template-columns:auto auto!important;align-items:center;gap:8px!important;height:34px;padding:0 9px;border:1px solid var(--line);border-radius:9px}.custom-color input{width:28px!important;height:24px!important;padding:0!important;border:0!important}.shape-choice{width:42px;height:42px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:19px;cursor:pointer}.shape-choice.selected{border-color:#1d64d1;background:#edf4ff;color:#1559b5;box-shadow:0 0 0 2px rgba(29,100,209,.15)}
@media(max-width:980px){.admin-workspace{grid-template-columns:1fr}.master-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.master-nav-title,.master-back{grid-column:1/-1}.master-table-head,.master-row{grid-template-columns:1fr 150px 80px}}

/* V20.1.5.1 emergency layout correction */
.sidebar{overflow:hidden}
.sidebar .brand{height:88px!important;min-height:88px!important;max-height:88px!important;padding:10px 14px!important;display:flex!important;align-items:center!important;gap:10px!important;overflow:hidden!important}
.sidebar .brand img.brand-logo,
.sidebar .brand img{
  display:block!important;
  position:static!important;
  width:66px!important;
  min-width:66px!important;
  max-width:66px!important;
  height:48px!important;
  min-height:48px!important;
  max-height:48px!important;
  object-fit:contain!important;
  object-position:center!important;
  margin:0!important;
  padding:0!important;
  transform:none!important;
  inset:auto!important;
  flex:0 0 66px!important;
}
.sidebar .brand>div:last-child{min-width:0!important;overflow:hidden!important}
.sidebar .brand>div:last-child b{font-size:12px!important;line-height:1.25!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.sidebar .brand>div:last-child span{font-size:7px!important;line-height:1.25!important;white-space:normal!important;margin-top:4px!important}
.schedule-panel>.panel-head{padding-left:30px!important;padding-right:30px!important}
.schedule-panel>.panel-head .schedule-heading{padding-left:0!important;margin-left:0!important}
.schedule-panel>.panel-head .schedule-heading>span{padding-left:0!important;margin-left:0!important}
.schedule-panel .calendar-guide{box-sizing:border-box!important;width:100%!important;margin:0!important;padding:15px 30px!important;border-left:0!important;border-right:0!important;border-radius:0!important}
@media(max-width:760px){
  .sidebar .brand img.brand-logo,.sidebar .brand img{width:58px!important;min-width:58px!important;max-width:58px!important;flex-basis:58px!important}
  .schedule-panel>.panel-head,.schedule-panel .calendar-guide{padding-left:18px!important;padding-right:18px!important}
}

/* V20.2.0 electronic approval and alignment refinement */
.master-table-head,.master-row{grid-template-columns:minmax(260px,1fr) 220px 96px!important}.master-name,.color-label,.shape-label{min-height:34px;align-items:center}.color-label{display:grid!important;grid-template-columns:34px 82px;justify-content:start}.color-label i{justify-self:center;width:28px!important;height:18px!important}.shape-label{display:grid;grid-template-columns:34px 1fr;align-items:center}.shape-label::before{content:''}.shape-preview{width:30px!important;justify-self:center}.approval-tabs{margin-bottom:18px}.approval-home-grid{display:grid;grid-template-columns:360px minmax(0,1fr);gap:18px}.approval-quick{padding:0;overflow:hidden}.approval-quick .panel-head{padding:20px 22px;border-bottom:1px solid var(--line)}.approval-form-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:18px}.approval-form-cards button{min-height:105px;border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;padding:15px;cursor:pointer;display:flex;flex-direction:column;gap:5px}.approval-form-cards button:hover{border-color:#8eb5eb;background:#f7fbff;transform:translateY(-1px)}.approval-form-cards i{font-style:normal;font-size:23px;color:var(--primary)}.approval-form-cards b{font-size:13px}.approval-form-cards span{font-size:10px;color:var(--muted)}.approval-table th,.approval-table td{white-space:nowrap}.row-actions .approve{color:#087a52;border-color:#a9dec9}.approval-editor{padding:0;overflow:hidden}.approval-editor-head{display:flex;justify-content:space-between;align-items:center;padding:22px 26px;border-bottom:1px solid var(--line);background:#fbfcfe}.approval-editor-head span{font-size:9px;color:var(--primary);font-weight:900;letter-spacing:.15em}.approval-editor-head h2{margin:5px 0 0}.approval-editor-actions{display:flex;gap:8px}.approval-editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:0}.approval-editor-grid>section{padding:22px 26px}.approval-editor .form-section{border:0;padding:0}.approval-editor textarea{min-height:300px}.approval-line-editor{border-left:1px solid var(--line);background:#f8fafc;padding:22px}.approval-line-editor .section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.approval-line-editor p{font-size:10px;color:var(--muted);margin-top:14px}.approver-row{display:grid;grid-template-columns:28px 85px 1fr 30px;gap:7px;align-items:center;margin-bottom:8px}.approver-row>span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#e7effb;color:#175db8;font-size:11px;font-weight:900}.approver-row select,.approver-row input{height:36px;border:1px solid var(--line);border-radius:8px;padding:0 8px;background:#fff}.approver-row button{height:30px;border:0;background:transparent;color:#b42318;font-size:18px}.approval-view-title{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:14px}.approval-view-title span{font-size:11px;color:var(--primary);font-weight:900}.approval-view-title h2{flex:1;margin:0}.approval-view dl{display:grid;grid-template-columns:90px 1fr 90px 1fr;border:1px solid var(--line);margin:16px 0}.approval-view dt,.approval-view dd{margin:0;padding:10px;border-bottom:1px solid var(--line)}.approval-view dt{background:#f4f7fb;font-weight:800}.approval-view-content{min-height:160px;border:1px solid var(--line);padding:15px;white-space:pre-wrap}.approval-line-view{display:flex;gap:10px}.approval-line-view>div{min-width:130px;border:1px solid var(--line);border-radius:10px;padding:12px}.approval-line-view span{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#e9f1fc;color:#145bad;margin-right:8px}.approval-line-view b,.approval-line-view small{display:block}.approval-line-view small{margin-top:5px;color:var(--muted)}.approval-form-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:22px}.approval-form-list button{display:grid;grid-template-columns:1fr auto;gap:5px;text-align:left;padding:17px;border:1px solid var(--line);border-radius:11px;background:#fff;cursor:pointer}.approval-form-list button span{font-size:10px;color:var(--muted)}.approval-form-list button i{grid-row:1/3;grid-column:2;font-style:normal;align-self:center;color:var(--primary)}
@media(max-width:1100px){.approval-home-grid{grid-template-columns:1fr}.approval-editor-grid{grid-template-columns:1fr}.approval-line-editor{border-left:0;border-top:1px solid var(--line)}.approval-form-list{grid-template-columns:repeat(2,1fr)}}

/* V20.2.3 safe approval recovery: spacing only */
.approval-form-cards button i{margin-right:8px}
.approval-form-cards button b,.approval-form-cards button span{padding-left:2px}
.approval-form-list button b{padding-right:10px}
.approval-editor-actions{gap:8px;flex-wrap:wrap}

/* V20.2.4 - V10.2 approval restoration */
.legacy-approval{display:grid;gap:16px}.legacy-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.legacy-summary article{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px}.legacy-summary span,.legacy-summary small{display:block;color:var(--muted)}.legacy-summary strong{display:block;font-size:28px;margin:7px 0;color:var(--ink)}.legacy-panel{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}.legacy-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line)}.legacy-tabs,.legacy-tools,.legacy-actions{display:flex;gap:7px;flex-wrap:wrap}.legacy-tabs button,.legacy-actions button{border:1px solid var(--line);background:#f7f9fc;border-radius:8px;padding:8px 11px;cursor:pointer}.legacy-tabs button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.legacy-tools input{height:38px;min-width:260px;border:1px solid var(--line);border-radius:8px;padding:0 11px}.legacy-table-wrap{overflow:auto}.legacy-table{width:100%;border-collapse:collapse;min-width:1050px}.legacy-table th{background:#f4f7fb;color:#607086;text-align:left;padding:12px;border-bottom:1px solid var(--line)}.legacy-table td{padding:12px;border-bottom:1px solid #edf1f5}.legacy-table .title-cell{font-weight:800}.legacy-status{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:800}.legacy-status.gray{background:#eef2f4;color:#5d6c76}.legacy-status.orange{background:#fff1d5;color:#956000}.legacy-status.blue{background:#e3f1ff;color:#17629a}.legacy-status.green{background:#e5f7eb;color:#24723c}.legacy-status.red{background:#ffe6e4;color:#b73832}.legacy-status.dark{background:#e8ebee;color:#3f4a52}.legacy-actions .success{color:#16734b}.legacy-actions .danger{color:#b42318}.legacy-approval-form{display:grid;gap:14px}.legacy-approval-form label{display:grid;gap:6px;font-size:12px;font-weight:800;color:#516877}.legacy-approval-form input,.legacy-approval-form select,.legacy-approval-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:10px;background:#fff}.legacy-approval-form textarea{min-height:120px}.legacy-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.legacy-approval-preview{background:#fff}.legacy-doc-head{display:grid;grid-template-columns:160px 1fr 300px;align-items:start;border-bottom:2px solid #173d5a;padding-bottom:12px}.legacy-doc-head>div b{display:block;font-size:21px;color:#174b70}.legacy-doc-head>div small{color:#778895}.legacy-doc-head h2{text-align:center;margin:6px 0;font-size:24px}.legacy-sign{width:100%;border-collapse:collapse}.legacy-sign th,.legacy-sign td{border:1px solid #6a7780;text-align:center;padding:7px;font-size:12px}.legacy-doc-meta{width:100%;border-collapse:collapse}.legacy-doc-meta th,.legacy-doc-meta td{border:1px solid #bbc6ce;padding:8px}.legacy-doc-meta th{background:#f1f4f6}.legacy-approval-preview>h3{text-align:center;margin:28px 0 18px}.legacy-doc-body{min-height:230px;border:1px solid #d5dde3;padding:18px;line-height:1.75}.legacy-doc-note,.legacy-doc-alert{margin-top:12px;padding:12px;background:#f6f8fa}.legacy-doc-alert{background:#fff0ef;color:#a73731}.legacy-approval-print{max-width:900px;margin:0 auto}.legacy-approval-print .legacy-doc-head{grid-template-columns:150px 1fr 270px}.legacy-approval-print h2{text-align:center;margin:28px 0 18px}@media(max-width:900px){.legacy-summary{grid-template-columns:repeat(2,1fr)}.legacy-toolbar{align-items:flex-start;flex-direction:column}.legacy-tools{width:100%}.legacy-tools input{flex:1}.legacy-doc-head{grid-template-columns:1fr}.legacy-sign{margin-top:12px}.legacy-form-grid{grid-template-columns:1fr}}@media(max-width:560px){.legacy-summary{grid-template-columns:1fr}}

/* V20.3.0 - rebuilt electronic approval */
.ap-shell{display:grid;gap:16px;max-width:1680px;margin:0 auto;padding:0 20px 24px}.ap-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.ap-summary article{background:#fff;border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:14px;padding:18px 20px;box-shadow:0 8px 24px rgba(22,40,70,.04)}.ap-summary span,.ap-summary small{display:block;color:var(--muted)}.ap-summary strong{display:block;font-size:28px;margin:8px 0;color:var(--ink)}.ap-tabs{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--line);padding:0 4px}.ap-tabs button{border:0;background:transparent;padding:14px 18px;color:#5c6b7e;font-weight:800;cursor:pointer;border-bottom:3px solid transparent}.ap-tabs button.active{color:var(--primary);border-bottom-color:var(--primary)}#approvalContent{min-width:0}.ap-card,.ap-editor{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.ap-card+.ap-card{margin-top:16px}.ap-card-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:20px 24px;border-bottom:1px solid var(--line)}.ap-card-head h2{margin:0 0 5px;font-size:18px}.ap-card-head p{margin:0;color:var(--muted);font-size:12px}.ap-quick-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:20px 24px}.ap-quick-grid button,.ap-form-list button{display:flex;align-items:center;gap:14px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:18px;cursor:pointer;min-width:0}.ap-quick-grid button:hover,.ap-form-list button:hover{border-color:#8bb2ea;background:#f8fbff}.ap-form-mark{width:38px;height:38px;border-radius:10px;background:#e9f1ff;color:#1f63c7;display:grid;place-items:center;font-size:11px;font-weight:900;flex:0 0 auto}.ap-quick-grid b,.ap-form-list b{display:block;font-size:14px;color:var(--ink)}.ap-quick-grid small,.ap-form-list small{display:block;margin-top:5px;color:var(--muted);line-height:1.45}.ap-toolbar{display:flex;gap:8px;align-items:center}.ap-toolbar input{height:38px;min-width:280px;border:1px solid var(--line);border-radius:9px;padding:0 11px}.ap-table-wrap{overflow:auto}.ap-table{width:100%;border-collapse:collapse;min-width:1050px}.ap-table th{background:#f5f7fa;color:#607086;text-align:left;padding:12px;border-bottom:1px solid var(--line);font-size:11px}.ap-table td{padding:12px;border-bottom:1px solid #edf1f5;vertical-align:middle}.ap-title{font-weight:800}.ap-status{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:800}.ap-status.gray{background:#eef2f4;color:#5d6c76}.ap-status.orange{background:#fff1d5;color:#956000}.ap-status.blue{background:#e3f1ff;color:#17629a}.ap-status.green{background:#e5f7eb;color:#24723c}.ap-status.red{background:#ffe6e4;color:#b73832}.ap-actions{display:flex;gap:6px;flex-wrap:wrap}.ap-actions button{border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 9px;cursor:pointer}.ap-actions .ok{color:#16734b}.ap-actions .danger{color:#b42318}.ap-editor-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px 24px;border-bottom:1px solid var(--line)}.ap-editor-head span{font-size:10px;color:var(--primary);font-weight:900;letter-spacing:.14em}.ap-editor-head h2{margin:6px 0 0}.ap-editor-actions{display:flex;gap:8px;flex-wrap:wrap}.ap-editor-body{display:grid;grid-template-columns:minmax(0,1fr) 350px;min-height:560px}.ap-form-section{padding:24px}.ap-form-section h3,.ap-line-panel h3{margin:0 0 16px}.ap-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ap-form-grid label{display:grid;gap:6px;font-size:12px;font-weight:800;color:#52687b}.ap-form-grid input,.ap-form-grid select,.ap-form-grid textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:9px;padding:10px;background:#fff}.ap-form-grid textarea{min-height:170px;resize:vertical}.ap-form-grid .span2{grid-column:span 2}.ap-line-panel{border-left:1px solid var(--line);background:#f8fafc;padding:24px}.ap-line-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.ap-line-head h3{margin:0 0 4px}.ap-line-head p{margin:0;color:var(--muted);font-size:11px}.ap-line-row{display:grid;grid-template-columns:30px 92px minmax(0,1fr) 32px;gap:8px;align-items:center;margin-bottom:9px}.ap-line-row>span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#e8f0ff;color:#1c5cb8;font-weight:900}.ap-line-row select,.ap-line-row input{height:38px;border:1px solid var(--line);border-radius:8px;padding:0 8px;background:#fff;min-width:0}.ap-line-row button{border:0;background:transparent;color:#b42318;font-size:20px;cursor:pointer}.ap-form-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:22px 24px}.ap-form-list button>span:nth-child(2){min-width:0;flex:1}.ap-form-list em{font-style:normal;color:var(--primary);font-weight:800;white-space:nowrap}.ap-document{display:grid;gap:16px}.ap-document-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.ap-document-head span{color:var(--muted);font-size:11px}.ap-document-head h2{margin:5px 0 0}.ap-document dl{display:grid;grid-template-columns:90px 1fr 90px 1fr;border:1px solid var(--line);margin:0}.ap-document dt,.ap-document dd{margin:0;padding:10px;border-bottom:1px solid var(--line)}.ap-document dt{background:#f4f7fb;font-weight:800}.ap-document-content{min-height:180px;border:1px solid var(--line);padding:16px;line-height:1.7}.ap-line-view{display:grid;gap:8px}.ap-line-view>div{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:10px;border:1px solid var(--line);border-radius:9px;padding:10px}.ap-line-view>div>span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#e8f0ff;color:#1c5cb8;font-weight:900}.ap-line-view small{color:var(--muted)}.ap-reject{padding:12px;background:#fff0ef;color:#a73731;border-radius:8px}.print-choice{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.print-choice p{grid-column:1/-1;margin-top:0;color:var(--muted)}
@media(max-width:1100px){.ap-summary{grid-template-columns:repeat(2,1fr)}.ap-quick-grid{grid-template-columns:repeat(2,1fr)}.ap-editor-body{grid-template-columns:1fr}.ap-line-panel{border-left:0;border-top:1px solid var(--line)}.ap-form-list{grid-template-columns:1fr}}
@media(max-width:680px){.ap-shell{padding:0 10px 20px}.ap-summary,.ap-quick-grid{grid-template-columns:1fr}.ap-tabs{overflow:auto}.ap-tabs button{white-space:nowrap}.ap-card-head,.ap-editor-head{align-items:flex-start;flex-direction:column}.ap-toolbar{width:100%}.ap-toolbar input{min-width:0;flex:1}.ap-form-grid{grid-template-columns:1fr}.ap-form-grid .span2{grid-column:auto}.print-choice{grid-template-columns:1fr}.print-choice p{grid-column:auto}}

/* V20.3.3 관리자 기준정보 열 정렬 고정 */
.master-sites-grid{grid-template-columns:minmax(260px,1fr) 110px 130px 96px!important;column-gap:18px!important}
.master-display-grid{grid-template-columns:minmax(260px,1fr) 140px 96px!important;column-gap:18px!important}
.master-table-head.master-sites-grid>span:nth-child(2),
.master-table-head.master-sites-grid>span:nth-child(3),
.master-table-head.master-display-grid>span:nth-child(2){text-align:center}
.master-table-head.master-sites-grid>span:last-child,
.master-table-head.master-display-grid>span:last-child{text-align:right;padding-right:8px}
.master-list.modern .master-row.master-sites-grid,
.master-list.modern .master-row.master-display-grid{min-height:62px}
.master-color-cell,.master-shape-cell{display:flex;align-items:center;justify-content:center;min-height:34px}
.master-color-swatch{display:block;width:32px;height:20px;border-radius:6px;border:1px solid rgba(0,0,0,.10);box-shadow:0 1px 2px rgba(16,35,63,.08)}
.master-hex{display:flex;align-items:center;justify-content:center;min-height:34px;font-family:Consolas,'Courier New',monospace;font-size:11px;color:#52647b;font-variant-numeric:tabular-nums}
.master-display-grid .shape-preview{margin:0;width:32px!important;height:32px!important;font-size:19px}
.master-sites-grid .master-row-actions,.master-display-grid .master-row-actions{justify-content:flex-end;align-items:center}
@media(max-width:980px){.master-sites-grid{grid-template-columns:minmax(180px,1fr) 80px 100px 80px!important}.master-display-grid{grid-template-columns:minmax(180px,1fr) 100px 80px!important}}

/* V20.3.4 관리자 기준정보 실제 컬럼 그리드 통일 */
.master-table-head.master-sites-grid,
.master-list.modern > .master-row.master-sites-grid{
  display:grid!important;
  grid-template-columns:minmax(0,44fr) minmax(96px,16fr) minmax(110px,25fr) minmax(92px,15fr)!important;
  column-gap:0!important;
  align-items:center!important;
}
.master-table-head.master-display-grid,
.master-list.modern > .master-row.master-display-grid{
  display:grid!important;
  grid-template-columns:minmax(0,70fr) minmax(110px,15fr) minmax(92px,15fr)!important;
  column-gap:0!important;
  align-items:center!important;
}
.master-table-head.master-sites-grid > span,
.master-list.modern > .master-row.master-sites-grid > *,
.master-table-head.master-display-grid > span,
.master-list.modern > .master-row.master-display-grid > *{
  min-width:0;
  box-sizing:border-box;
}
.master-table-head.master-sites-grid > span:first-child,
.master-list.modern > .master-row.master-sites-grid > .master-name,
.master-table-head.master-display-grid > span:first-child,
.master-list.modern > .master-row.master-display-grid > .master-name{
  justify-self:stretch;
  text-align:left;
}
.master-table-head.master-sites-grid > span:nth-child(2),
.master-table-head.master-sites-grid > span:nth-child(3),
.master-table-head.master-sites-grid > span:nth-child(4),
.master-table-head.master-display-grid > span:nth-child(2),
.master-table-head.master-display-grid > span:nth-child(3){
  justify-self:stretch;
  text-align:center!important;
  padding-right:0!important;
}
.master-list.modern > .master-row.master-sites-grid > .master-color-cell,
.master-list.modern > .master-row.master-sites-grid > .master-hex,
.master-list.modern > .master-row.master-sites-grid > .master-row-actions,
.master-list.modern > .master-row.master-display-grid > .master-shape-cell,
.master-list.modern > .master-row.master-display-grid > .master-row-actions{
  justify-self:stretch!important;
  justify-content:center!important;
  text-align:center!important;
}
.master-list.modern > .master-row.master-sites-grid > .master-row-actions,
.master-list.modern > .master-row.master-display-grid > .master-row-actions{
  display:flex!important;
  align-items:center!important;
}
@media(max-width:980px){
  .master-table-head.master-sites-grid,
  .master-list.modern > .master-row.master-sites-grid{
    grid-template-columns:minmax(150px,44fr) minmax(76px,16fr) minmax(94px,25fr) minmax(78px,15fr)!important;
  }
  .master-table-head.master-display-grid,
  .master-list.modern > .master-row.master-display-grid{
    grid-template-columns:minmax(180px,70fr) minmax(90px,15fr) minmax(78px,15fr)!important;
  }
}

/* V20.3.5 HR photo attachment */
.hr-photo-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:22px;align-items:start}.hr-photo-box{display:grid;gap:9px;justify-items:stretch}.hr-photo-preview{width:150px;height:200px;border:1px solid var(--line);border-radius:12px;background:#f5f7fa;display:grid;place-items:center;overflow:hidden;color:var(--muted);font-size:12px}.hr-photo-preview img{width:100%;height:100%;object-fit:cover}.hr-photo-button{display:flex;align-items:center;justify-content:center;text-align:center;width:150px;line-height:1}.hr-photo-box>button{width:150px}.hr-photo-box small{width:150px;color:var(--muted);font-size:10px;line-height:1.45}@media(max-width:780px){.hr-photo-layout{grid-template-columns:1fr}.hr-photo-box{justify-items:center}.hr-photo-box small{text-align:center}}
/* V20.3.8 - unified collaboration metrics and schedule copy */
.ap-shell>.cards.compact{margin-bottom:0}
.copy-summary{border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:10px;padding:14px 16px;background:#f8fbff}
.copy-summary b,.copy-summary span{display:block}.copy-summary b{font-size:14px;color:var(--text)}.copy-summary span{margin-top:6px;font-size:11px;color:var(--muted)}.copy-summary p{margin:10px 0 0;font-size:12px;line-height:1.55;color:#425369}
/* V20.3.8 - unified collaboration metrics and schedule copy */

/* V20.3.9 - enterprise-wide page alignment standard
   Every current and future module must start from the same content axis.
   Do not add module-specific horizontal padding or margins to first-level wrappers. */
:root{
  --kmi-page-gutter:30px;
  --kmi-page-gutter-mobile:16px;
  --kmi-page-max:1720px;
  --kmi-section-gap:18px;
}
main#main{
  width:100%;
  max-width:var(--kmi-page-max);
  margin:0 auto;
  padding:var(--kmi-page-gutter);
}
/* First-level page elements share one left/right alignment line. */
main#main > .page-head,
main#main > .tabs,
main#main > .cards,
main#main > .toolbar,
main#main > .table-wrap,
main#main > .card,
main#main > .grid2,
main#main > .module-summary,
main#main > .print-grid,
main#main > .assistant-layout,
main#main > .admin-workspace,
main#main > .ap-shell,
main#main > #hrBody{
  width:100%;
  max-width:none;
  margin-left:0;
  margin-right:0;
}
/* Electronic approval previously added a second 20px side gutter. */
.ap-shell{
  padding-left:0;
  padding-right:0;
  max-width:none;
}
/* HR child contents must remain on the same axis as the HR tabs and heading. */
#hrBody > .cards,
#hrBody > .toolbar,
#hrBody > .table-wrap,
#hrBody > .form-card,
#hrBody > .print-grid{
  width:100%;
  margin-left:0;
  margin-right:0;
}
/* Shared standard class for every newly added module. */
.kmi-page-standard{
  width:100%;
  max-width:none;
  margin:0;
  padding:0;
  display:grid;
  gap:var(--kmi-section-gap);
}
@media(max-width:760px){
  main#main{padding:var(--kmi-page-gutter-mobile)}
  .ap-shell{padding-left:0;padding-right:0}
}

/* V20.4.0 connected calendar and digital daily schedule */
.cal-lanes{display:flex;flex-direction:column;gap:4px;min-width:0}.cal-event-slot{height:43px}.connected-calendar .cal-day{overflow:visible;position:relative}.connected-calendar{overflow:hidden}.connected-calendar .cal-event{height:43px;margin:0;position:relative;z-index:2}.connected-calendar .connected-event{border-left:0;border-radius:0;margin-left:-9px;margin-right:-9px;width:calc(100% + 18px);padding-left:10px;padding-right:10px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--event-color,#2563eb) 24%,transparent)}.connected-calendar .connected-event.segment-start{margin-left:0;width:calc(100% + 9px);border-left:4px solid var(--event-color,#2563eb);border-radius:7px 0 0 7px}.connected-calendar .connected-event.segment-end{margin-right:0;width:calc(100% + 9px);border-radius:0 7px 7px 0}.connected-calendar .connected-event.segment-start.segment-end{width:100%;margin:0;border-radius:7px}.connected-calendar .segment-middle{border-radius:0}.continue-mark{font-style:normal;margin-right:4px;color:var(--event-color,#2563eb)}
.daily-schedule-toolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;padding:16px 30px;border-bottom:1px solid var(--line);background:#f8fafc}.daily-schedule-toolbar label{display:grid;gap:6px;font-size:12px;font-weight:800}.daily-schedule-toolbar input{height:36px;border:1px solid var(--line);border-radius:8px;padding:0 10px}.daily-schedule-toolbar>div{display:flex;gap:7px}.daily-schedule-toolbar>span{margin-left:auto;font-size:12px;color:var(--muted);font-weight:800}.daily-sheet-wrap{padding:18px 30px 30px;overflow:auto}.daily-sheet-title{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:12px}.daily-sheet-title span{font-weight:900;color:var(--primary);letter-spacing:.08em}.daily-sheet-title h2{margin:0;font-size:24px}.daily-sheet-title b{text-align:right}.daily-sheet{width:100%;min-width:1500px;border-collapse:collapse;table-layout:fixed;background:#fff}.daily-sheet th,.daily-sheet td{border:1px solid #8191a7;padding:8px 6px;text-align:center;font-size:12px;vertical-align:middle}.daily-sheet th{background:#eaf0f7;font-weight:900}.daily-sheet th:nth-child(1){width:48px}.daily-sheet th:nth-child(2){width:90px}.daily-sheet th:nth-child(3),.daily-sheet th:nth-child(7){width:125px}.daily-sheet th:nth-child(4),.daily-sheet th:nth-child(8){width:130px}.daily-sheet th:nth-child(5),.daily-sheet th:nth-child(9){width:125px}.daily-sheet th:nth-child(6){width:90px}.daily-sheet th:nth-child(10){width:180px}.daily-sheet th:nth-child(11){width:220px}.daily-sheet th:nth-child(12){width:180px}.daily-sheet .worker-cell{text-align:center;white-space:normal;line-height:1.5;overflow-wrap:anywhere}.daily-form textarea{min-height:90px}
@media(max-width:900px){.daily-schedule-toolbar,.daily-sheet-wrap{padding-left:18px;padding-right:18px}.daily-sheet-title{grid-template-columns:1fr}.daily-sheet-title h2,.daily-sheet-title b{text-align:left}.cal-event-slot,.connected-calendar .cal-event{height:39px}}
@media print{.daily-schedule-toolbar{display:none!important}.daily-sheet-wrap{padding:0}.daily-sheet{min-width:0;font-size:8px}.daily-sheet th,.daily-sheet td{font-size:8px;padding:3px}.daily-sheet th:last-child,.daily-sheet td:last-child{display:none}}

/* V20.4.0 connected calendar and digital daily schedule */
@media(max-width:900px){.daily-schedule-toolbar,.daily-sheet-wrap{padding-left:18px;padding-right:18px}.daily-sheet-title{grid-template-columns:1fr}.daily-sheet-title h2,.daily-sheet-title b{text-align:left}.cal-event-slot,.connected-calendar .cal-event{height:39px}}
@media print{.daily-schedule-toolbar{display:none!important}.daily-sheet-wrap{padding:0}.daily-sheet{min-width:0;font-size:8px}.daily-sheet th,.daily-sheet td{font-size:8px;padding:3px}.daily-sheet th:last-child,.daily-sheet td:last-child{display:none}}

/* V20.4.2 daily schedule: customer/site/process and multi-employee picker */
.daily-sheet{min-width:1180px}
.daily-sheet th:nth-child(1){width:52px}.daily-sheet th:nth-child(2){width:130px}.daily-sheet th:nth-child(3){width:105px}.daily-sheet th:nth-child(4){width:145px}.daily-sheet th:nth-child(5){width:145px}.daily-sheet th:nth-child(6){width:240px}.daily-sheet th:nth-child(7){width:260px}.daily-sheet th:nth-child(8){width:78px}.daily-sheet th:nth-child(9){width:190px}
.daily-sheet .worker-cell,.daily-sheet .work-content-cell{white-space:normal;overflow-wrap:anywhere;word-break:keep-all;line-height:1.55;text-align:left}
.worker-picker{border:1px solid var(--line);border-radius:12px;padding:14px;margin:0}.worker-picker legend{padding:0 8px;font-weight:900}.worker-picker-tools{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;gap:8px;margin-bottom:10px}.worker-picker-tools input{width:100%}.worker-check-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:300px;overflow:auto;padding:4px}.worker-check-list>label{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:9px;padding:9px 10px;background:#fff;cursor:pointer}.worker-check-list>label:has(input:checked){border-color:var(--primary);background:#eff6ff}.worker-check-list input{width:16px;height:16px}.worker-check-list span{display:grid;min-width:0}.worker-check-list small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){.worker-picker-tools{grid-template-columns:1fr 1fr}.worker-picker-tools input{grid-column:1/-1}.worker-check-list{grid-template-columns:1fr}.daily-sheet{min-width:980px}}
@media print{.daily-sheet .worker-cell,.daily-sheet .work-content-cell{white-space:normal!important;overflow-wrap:anywhere!important;word-break:keep-all!important}.daily-sheet th:nth-child(9),.daily-sheet td:nth-child(9){display:none!important}}

/* V20.4.3 compact technical-department employee picker */
.worker-check-list{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  max-height:260px;
  padding:2px;
}
.worker-check-list>label{
  display:grid;
  grid-template-columns:18px minmax(0,1fr);
  align-items:center;
  column-gap:10px;
  min-height:48px;
  padding:8px 11px;
  border-radius:8px;
}
.worker-check-list>label input[type="checkbox"]{
  appearance:auto;
  -webkit-appearance:checkbox;
  width:16px!important;
  min-width:16px!important;
  max-width:16px!important;
  height:16px!important;
  min-height:16px!important;
  margin:0!important;
  padding:0!important;
  justify-self:center;
}
.worker-check-list>label span{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:0;
  line-height:1.25;
}
.worker-check-list>label b{font-size:13px;white-space:nowrap}
.worker-check-list>label small{font-size:11px;min-width:0}
.daily-sheet .worker-cell,.daily-sheet .work-content-cell{text-align:center}
@media(max-width:620px){
  .worker-check-list{grid-template-columns:1fr}
  .worker-picker{padding:12px}
}

.daily-sheet .row-actions{justify-content:center;align-items:center}

/* V20.4.3 daily schedule completed-row alignment */
.daily-sheet tbody td{ text-align:center!important; vertical-align:middle!important; }
.daily-sheet tbody .work-content-cell,.daily-sheet tbody .worker-cell{ text-align:center!important; white-space:normal!important; overflow-wrap:anywhere; word-break:keep-all; line-height:1.55; }
.daily-sheet .daily-manage-cell{ text-align:center!important; }
.daily-sheet .daily-manage-actions{ display:flex!important; width:100%!important; justify-content:center!important; align-items:center!important; gap:6px; margin:0 auto!important; }


/* V20.4.4 employee picker final: isolate checkboxes from modal input styles */
.worker-check-list{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important;
  max-height:260px!important;
  overflow:auto!important;
  padding:2px!important;
}
.modal-form .worker-check-list .worker-option{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  min-height:46px!important;
  margin:0!important;
  padding:8px 11px!important;
  border:1px solid var(--line)!important;
  border-radius:8px!important;
  background:#fff!important;
  cursor:pointer!important;
  color:#34445b!important;
}
.modal-form .worker-check-list .worker-option:hover{
  border-color:#9fb3cc!important;
  background:#f8fafc!important;
}
.modal-form .worker-check-list .worker-native-check{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  min-width:1px!important;
  min-height:1px!important;
  margin:0!important;
  padding:0!important;
  opacity:0!important;
  pointer-events:none!important;
}
.worker-check-mark{
  flex:0 0 17px!important;
  width:17px!important;
  height:17px!important;
  border:1px solid #9aa9bc!important;
  border-radius:4px!important;
  background:#fff!important;
  display:grid!important;
  place-items:center!important;
  box-sizing:border-box!important;
}
.worker-native-check:checked + .worker-check-mark{
  border-color:var(--primary)!important;
  background:var(--primary)!important;
}
.worker-native-check:checked + .worker-check-mark::after{
  content:"";
  width:7px;
  height:4px;
  border-left:2px solid #fff;
  border-bottom:2px solid #fff;
  transform:rotate(-45deg) translateY(-1px);
}
.worker-native-check:focus-visible + .worker-check-mark{
  outline:3px solid rgba(37,99,235,.18)!important;
  outline-offset:2px!important;
}
.worker-option-text{
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  min-width:0!important;
  line-height:1.25!important;
}
.worker-option-text b{
  font-size:13px!important;
  white-space:nowrap!important;
}
.worker-option-text small{
  min-width:0!important;
  color:var(--muted)!important;
  font-size:11px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.worker-option:has(.worker-native-check:checked){
  border-color:var(--primary)!important;
  background:#eff6ff!important;
}
@media(max-width:620px){
  .worker-check-list{grid-template-columns:1fr!important}
}

/* V20.4.5 - compact daily worker picker and centered management actions */
.daily-sheet td.daily-manage-cell{
  text-align:center!important;
  vertical-align:middle!important;
}
.daily-sheet td.daily-manage-cell .daily-manage-actions{
  display:flex!important;
  width:100%!important;
  justify-content:center!important;
  align-items:center!important;
  gap:6px!important;
  margin:0!important;
  flex-wrap:wrap!important;
}
.modal-form .worker-check-list{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:6px!important;
  max-height:254px!important;
  padding:2px!important;
}
.modal-form .worker-check-list .worker-option{
  min-height:38px!important;
  padding:6px 9px!important;
  gap:7px!important;
  border-radius:8px!important;
}
.modal-form .worker-check-list .worker-check-mark{
  flex-basis:15px!important;
  width:15px!important;
  height:15px!important;
  border-radius:3px!important;
}
.modal-form .worker-check-list .worker-native-check:checked + .worker-check-mark::after{
  width:6px!important;
  height:3px!important;
  border-left-width:2px!important;
  border-bottom-width:2px!important;
}
.modal-form .worker-check-list .worker-option-text{
  gap:5px!important;
  line-height:1.15!important;
}
.modal-form .worker-check-list .worker-option-text b{
  font-size:12px!important;
  font-weight:800!important;
}
.modal-form .worker-check-list .worker-option-text small{
  font-size:10px!important;
}
@media(max-width:620px){
  .modal-form .worker-check-list{grid-template-columns:1fr!important}
}


/* V20.4.6 - final daily schedule centering */
.daily-sheet tbody td.work-content-cell,
.daily-sheet tbody td.worker-cell{
  text-align:center!important;
  vertical-align:middle!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  word-break:keep-all!important;
}
.daily-sheet tbody td.daily-manage-cell{
  text-align:center!important;
  vertical-align:middle!important;
  padding-left:6px!important;
  padding-right:6px!important;
}
.daily-sheet tbody td.daily-manage-cell>.daily-manage-actions{
  display:flex!important;
  width:100%!important;
  justify-content:center!important;
  align-items:center!important;
  gap:6px!important;
  margin:0!important;
  flex-wrap:wrap!important;
}
.daily-form .daily-work-content-input{
  text-align:center!important;
}
.daily-form .worker-option-text{
  text-align:center!important;
}


/* V20.4.7 - stable employee picker and save form */
.daily-form .worker-check-list{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;max-height:250px!important;overflow-y:auto!important;padding:2px!important;}
.daily-form .worker-option{display:flex!important;align-items:center!important;gap:7px!important;min-height:36px!important;padding:5px 9px!important;margin:0!important;border:1px solid var(--line)!important;border-radius:8px!important;background:#fff!important;cursor:pointer!important;}
.daily-form .worker-option .worker-native-check{display:none!important;width:0!important;height:0!important;min-width:0!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;}
.daily-form .worker-check-mark{display:grid!important;place-items:center!important;flex:0 0 14px!important;width:14px!important;height:14px!important;border:1px solid #9aa9bc!important;border-radius:3px!important;background:#fff!important;}
.daily-form .worker-option-text{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:5px!important;min-width:0!important;text-align:left!important;line-height:1.15!important;}
.daily-form .worker-option-text b{font-size:12px!important;font-weight:800!important;white-space:nowrap!important;}
.daily-form .worker-option-text small{font-size:10px!important;color:var(--muted)!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
.daily-form .worker-native-check:checked + .worker-check-mark{background:var(--primary)!important;border-color:var(--primary)!important;}
.daily-form .worker-native-check:checked + .worker-check-mark::after{content:""!important;width:6px!important;height:3px!important;border-left:2px solid #fff!important;border-bottom:2px solid #fff!important;transform:rotate(-45deg) translateY(-1px)!important;}
.daily-form .worker-option:has(.worker-native-check:checked){border-color:var(--primary)!important;background:#eff6ff!important;}
.daily-sheet tbody td.work-content-cell,.daily-sheet tbody td.worker-cell{text-align:center!important;vertical-align:middle!important;}
.daily-sheet tbody td.daily-manage-cell>.daily-manage-actions{display:flex!important;justify-content:center!important;align-items:center!important;width:100%!important;gap:6px!important;margin:0 auto!important;}
@media(max-width:620px){.daily-form .worker-check-list{grid-template-columns:1fr!important;}}

/* V20.4.8 - show selected worker check mark only */
.daily-form .worker-native-check:checked + .worker-check-mark::after{
  content:"✓"!important;
  display:block!important;
  width:auto!important;
  height:auto!important;
  border:0!important;
  transform:none!important;
  color:#fff!important;
  font-size:11px!important;
  font-weight:900!important;
  line-height:1!important;
}

/* V20.4.9 - selected worker checkbox visibility only */
.daily-form .worker-option:has(.worker-native-check:checked) .worker-check-mark{
  background:#2563eb!important;
  border-color:#2563eb!important;
}
.daily-form .worker-option:has(.worker-native-check:checked) .worker-check-mark::after{
  content:"✓"!important;
  display:block!important;
  color:#fff!important;
  font-size:11px!important;
  font-weight:900!important;
  line-height:1!important;
  width:auto!important;
  height:auto!important;
  border:0!important;
  transform:none!important;
}

/* V20.4.10 HR photo buttons alignment only */
.hr-photo-box>.hr-photo-button{display:flex!important;align-items:center!important;justify-content:center!important;width:150px!important;height:35px!important;min-height:35px!important;padding:0!important;margin:0!important;line-height:1!important;text-align:center!important;}

/* V20.4.11 HR photo text and dynamic delete buttons only */
.hr-photo-box>.hr-photo-button{display:grid!important;place-items:center!important;width:150px!important;height:35px!important;min-height:35px!important;padding:0!important;margin:0!important;line-height:normal!important;text-align:center!important;}
.hr-photo-box>label.hr-photo-button>span{display:flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:normal;}
.dynamic-row{grid-template-columns:repeat(6,minmax(110px,1fr)) 54px!important;align-items:end!important;}
.dynamic-row[data-kind="careers"]{grid-template-columns:repeat(7,minmax(95px,1fr)) 54px!important;}
.dynamic-row[data-kind="accounts"]{grid-template-columns:repeat(4,minmax(130px,1fr)) 54px!important;}
.dynamic-row>.icon-danger{width:54px!important;height:35px!important;min-height:35px!important;padding:0!important;margin:0!important;display:flex!important;align-items:center!important;justify-content:center!important;justify-self:end!important;align-self:end!important;font-size:11px!important;line-height:1!important;}
@media(max-width:1100px){.dynamic-row,.dynamic-row[data-kind="careers"],.dynamic-row[data-kind="accounts"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}.dynamic-row>.icon-danger{justify-self:start!important}}
@media(max-width:650px){.dynamic-row,.dynamic-row[data-kind="careers"],.dynamic-row[data-kind="accounts"]{grid-template-columns:1fr!important}.dynamic-row>.icon-danger{justify-self:start!important}}

/* V20.4.13 HR photo upload uses the exact same button element as photo delete */
.hr-photo-box>button.hr-photo-button{display:flex!important;align-items:center!important;justify-content:center!important;width:150px!important;height:35px!important;min-height:35px!important;padding:0!important;margin:0!important;line-height:35px!important;text-align:center!important;}

/* HR dynamic sections: move delete control beside add control */
.section-actions{display:flex;align-items:center;gap:8px}
.btn.danger-outline{color:#c43b45;border-color:#f0b9bf;background:#fff}
.btn.danger-outline:hover{background:#fff7f8;border-color:#e58f98}
.dynamic-row{grid-template-columns:repeat(6,minmax(110px,1fr))!important}
.dynamic-row[data-kind="careers"]{grid-template-columns:repeat(7,minmax(95px,1fr))!important}
.dynamic-row[data-kind="accounts"]{grid-template-columns:repeat(4,minmax(130px,1fr))!important}
@media(max-width:1100px){.dynamic-row,.dynamic-row[data-kind="careers"],.dynamic-row[data-kind="accounts"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:650px){.section-title{align-items:flex-start}.section-actions{flex-shrink:0}.dynamic-row,.dynamic-row[data-kind="careers"],.dynamic-row[data-kind="accounts"]{grid-template-columns:1fr!important}}

/* V20.4.16 HR dynamic section action buttons: equal size only */
.section-actions > .btn.small{
  width:54px!important;
  min-width:54px!important;
  height:35px!important;
  min-height:35px!important;
  padding:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
}

/* V20.5.0 PURCHASE MANAGEMENT */
.purchase-tabs{margin-bottom:18px}.purchase-section-head{display:flex;align-items:flex-end;justify-content:space-between;margin:4px 0 14px}.purchase-section-head h2{margin:0 0 5px;font-size:20px}.purchase-section-head p{margin:0;color:var(--muted);font-size:13px}.purchase-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}.purchase-metrics .metric strong{font-size:24px}.purchase-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:16px}.purchase-bars{display:flex;flex-direction:column;gap:15px;padding-top:4px}.purchase-bars>div{display:grid;grid-template-columns:130px 1fr 105px;align-items:center;gap:12px;font-size:12px}.purchase-bars span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.purchase-bars i{height:9px;background:#eef2f7;border-radius:99px;overflow:hidden}.purchase-bars i b{display:block;height:100%;background:#2f6bd8;border-radius:99px}.purchase-bars strong{text-align:right;font-size:12px}.purchase-recent{display:flex;flex-direction:column}.purchase-recent>div{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid #edf1f6}.purchase-recent>div:last-child{border-bottom:0}.purchase-recent span{display:flex;flex-direction:column;gap:3px}.purchase-recent small{color:var(--muted)}.purchase-toolbar{margin-top:0}.purchase-table td{white-space:nowrap}.purchase-table td:nth-last-child(2){font-weight:600}.purchase-status{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:24px;padding:0 9px;border-radius:99px;font-size:11px;font-weight:700}.purchase-status.green{background:#e7f5ef;color:#16805c}.purchase-status.orange{background:#fff3df;color:#b46b00}.purchase-status.red{background:#fdeceb;color:#bf3c37}.purchase-status.blue{background:#eaf1ff;color:#2f63bd}.row-actions{display:flex;gap:6px;justify-content:flex-end}.btn.mini{height:28px;min-width:48px;padding:0 10px;font-size:11px}.btn.mini.danger{color:#b43c3c;border-color:#efd0d0;background:#fff}.purchase-form{grid-template-columns:repeat(2,minmax(0,1fr))}.purchase-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.purchase-detail>div{display:flex;flex-direction:column;gap:6px;padding:12px;border:1px solid #e4e9f0;border-radius:10px}.purchase-detail span{font-size:11px;color:var(--muted)}.purchase-detail pre{margin:0;white-space:pre-wrap;font-size:11px;line-height:1.5}.purchase-detail .modal-actions{border:0;padding:8px 0 0}@media(max-width:1100px){.purchase-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.purchase-grid{grid-template-columns:1fr}}@media(max-width:700px){.purchase-metrics{grid-template-columns:1fr}.purchase-bars>div{grid-template-columns:90px 1fr 86px}.purchase-form,.purchase-detail{grid-template-columns:1fr}.purchase-form .span2,.purchase-detail .span2{grid-column:span 1}}

/* PATCH 002 - editable approval lines and purchase workflow settings */
.purchase-grid-second{margin-top:16px}.subcontract-bars i b{background:#16805c}.purchase-guide{display:flex;flex-direction:column;justify-content:center}.purchase-flow,.purchase-approval-preview>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.purchase-flow span,.purchase-approval-preview span{padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:#f7f9fc;font-weight:800;font-size:12px}.purchase-guide>small{margin-top:15px;color:var(--muted)}
.purchase-settings{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.purchase-setting-head{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid var(--line)}.purchase-setting-head h2{margin:0 0 5px}.purchase-setting-head p{margin:0;color:var(--muted)}.purchase-setting-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:22px 24px}.purchase-setting-item{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:12px;padding:16px;cursor:pointer}.purchase-setting-item span{display:grid;gap:4px}.purchase-setting-item small{color:var(--muted);font-weight:400}.purchase-setting-item input{display:none}.purchase-setting-item i{width:46px;height:26px;border-radius:99px;background:#cbd4df;position:relative;flex:0 0 auto}.purchase-setting-item i:after{content:'';position:absolute;width:20px;height:20px;left:3px;top:3px;border-radius:50%;background:#fff;transition:.2s}.purchase-setting-item input:checked+i{background:var(--primary)}.purchase-setting-item input:checked+i:after{left:23px}.purchase-default-line,.purchase-approval-preview{margin:0 24px 22px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}.purchase-default-line label{display:grid;gap:7px;max-width:480px;font-weight:800}.purchase-default-line select{height:40px;border:1px solid var(--line);border-radius:9px;padding:0 10px;background:#fff}.purchase-default-line p{margin:10px 0 0;color:var(--muted)}.purchase-approval-preview h3{margin:0 0 12px}.approval-line-list{display:grid;gap:10px;padding:20px 24px}.approval-line-list article{display:grid;grid-template-columns:220px 1fr auto;align-items:center;gap:18px;border:1px solid var(--line);border-radius:12px;padding:15px}.approval-line-list article>div:first-child{display:grid;gap:4px}.approval-line-list small{color:var(--muted)}.approval-line-steps{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.approval-line-steps span{padding:7px 9px;background:#f2f6fb;border-radius:8px;font-size:11px;font-weight:700}.approval-line-steps i{font-style:normal;color:var(--muted)}.approval-template-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.approval-template-form>label{display:grid;gap:6px;font-size:12px;font-weight:800}.approval-template-form input,.approval-template-form select{height:40px;border:1px solid var(--line);border-radius:9px;padding:0 10px}.approval-template-form .toggle-row{display:flex;align-items:center;gap:8px}.approval-template-form .toggle-row input{height:auto}.approval-template-head{display:flex;justify-content:space-between;align-items:center}.template-step{display:grid;grid-template-columns:30px 110px minmax(0,1fr) 34px 34px 34px;gap:7px;align-items:center;margin-bottom:8px}.template-step>span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#e8f0ff;color:#1c5cb8;font-weight:900}.template-step select,.template-step input{height:38px;border:1px solid var(--line);border-radius:8px;padding:0 8px}.template-step button{height:32px;border:1px solid var(--line);background:#fff;border-radius:7px;cursor:pointer}.template-step button.danger{color:#b42318}
@media(max-width:900px){.purchase-setting-grid{grid-template-columns:1fr}.approval-line-list article{grid-template-columns:1fr}.approval-template-form{grid-template-columns:1fr}.approval-template-form .span2{grid-column:auto}}@media(max-width:620px){.purchase-setting-head{align-items:flex-start;flex-direction:column;gap:12px}.template-step{grid-template-columns:28px 90px minmax(0,1fr) 30px}.template-step [data-ts-up],.template-step [data-ts-down]{display:none}}

/* PATCH 003: 구매 현황 카드 높이를 콘텐츠 기준으로 자동 조정 */
.purchase-grid{
  align-items:start;
}
.purchase-grid>.panel{
  height:auto;
  min-height:0;
  align-self:start;
}
.purchase-bars,
.purchase-recent{
  min-height:0;
}
.purchase-bars .empty{
  padding:36px 20px;
}

/* PATCH 004: 구매 현황 2열 카드 행 정렬 복원
   같은 행의 좌우 카드 높이를 맞추고 다음 행 시작 위치를 동일하게 유지한다. */
.purchase-grid{
  align-items:stretch!important;
}
.purchase-grid>.panel{
  height:100%!important;
  min-height:0!important;
  align-self:stretch!important;
}
.purchase-grid-second{
  margin-top:16px!important;
}
@media(max-width:1100px){
  .purchase-grid>.panel{
    height:auto!important;
  }
}

/* PATCH 005 - purchase settings toggle selected-state visibility */
.purchase-setting-item input:checked + i{
  background:var(--blue,#1268e8);
  box-shadow:0 0 0 3px rgba(18,104,232,.14);
}
.purchase-setting-item input:checked + i:after{
  left:23px;
  box-shadow:0 1px 4px rgba(16,36,61,.25);
}
.purchase-setting-item:has(input:checked){
  border-color:rgba(18,104,232,.45);
  background:#f6f9ff;
}
.purchase-setting-item:has(input:checked) b{
  color:var(--blue,#1268e8);
}
.purchase-setting-item input:focus-visible + i{
  outline:3px solid rgba(18,104,232,.22);
  outline-offset:2px;
}

/* PATCH 009 - compact purchase overview and simple subcontract payment management */
.purchase-overview-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:16px;align-items:start}
.purchase-overview-left,.purchase-overview-right{display:grid;gap:16px;align-content:start}
.purchase-summary-card{height:auto!important;min-height:0!important}
.purchase-summary-card .purchase-bars{gap:12px;padding-top:2px}
.purchase-summary-card .purchase-bars .empty{padding:28px 16px}
.purchase-overview-right .purchase-guide{min-height:150px}
@media(max-width:1100px){.purchase-overview-grid{grid-template-columns:1fr}.purchase-overview-left,.purchase-overview-right{gap:12px}}

/* PATCH 010: 외주·하도급 지급조건 자동 계산 */
.purchase-form input.auto-date {
  background: #f5f7fb;
  color: #334155;
  cursor: not-allowed;
}

/* PATCH 011 - 결제 예정 금액 카드 */
.purchase-scheduled-card{min-height:0}
.purchase-scheduled-total{display:flex;align-items:flex-end;justify-content:space-between;padding:4px 0 14px;border-bottom:1px solid var(--line);margin-bottom:2px}
.purchase-scheduled-total span{font-size:12px;color:var(--muted);font-weight:700}
.purchase-scheduled-total strong{font-size:24px;letter-spacing:-.04em}
.purchase-scheduled-list>div{padding:11px 0}
.purchase-scheduled-list>div:last-child{border-bottom:0}

/* PATCH 012: 결제 예정 금액을 우측 상단으로 이동하고 최근 입고 카드 제거 */
.purchase-scheduled-primary{align-self:start}
.purchase-scheduled-primary .purchase-scheduled-list{max-height:none}
.purchase-scheduled-primary .empty{padding:46px 16px}

/* PATCH 013 - 업체별 결제 예정 금액, 우선순위 색상, 기간 필터 */
.purchase-due-filters{display:flex;gap:7px;flex-wrap:wrap;margin:2px 0 12px}
.purchase-due-filters button{height:30px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#526174;font-size:11px;font-weight:800;cursor:pointer}
.purchase-due-filters button.active{border-color:#2f6bd8;background:#edf3ff;color:#1f5cc6;box-shadow:0 0 0 2px rgba(47,107,216,.08)}
.purchase-due-list{display:flex;flex-direction:column}
.purchase-due-row{width:100%;display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px 0;border:0;border-bottom:1px solid #edf1f6;background:transparent;text-align:left;cursor:pointer;font:inherit;color:inherit}
.purchase-due-row:last-child{border-bottom:0}
.purchase-due-row:hover{background:#f8fafc}
.purchase-due-marker{width:8px;height:34px;border-radius:999px;background:#3b82f6}
.purchase-due-row.overdue .purchase-due-marker{background:#dc2626}
.purchase-due-row.soon .purchase-due-marker{background:#f59e0b}
.purchase-due-row.normal .purchase-due-marker{background:#2563eb}
.purchase-due-row.undated .purchase-due-marker{background:#94a3b8}
.purchase-due-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.purchase-due-title{display:flex;align-items:center;gap:7px;min-width:0}
.purchase-due-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.purchase-due-title em{flex:0 0 auto;padding:3px 7px;border-radius:999px;background:#eef2f7;color:#536174;font-size:10px;font-style:normal;font-weight:800}
.purchase-due-main small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.purchase-due-meta{font-size:10px;font-weight:800;color:#64748b}
.purchase-due-row.overdue .purchase-due-meta{color:#b91c1c}
.purchase-due-row.soon .purchase-due-meta{color:#b45309}
.purchase-due-row>strong{padding-left:10px;white-space:nowrap;font-size:13px}
@media(max-width:700px){.purchase-due-row{grid-template-columns:7px minmax(0,1fr)}.purchase-due-row>strong{grid-column:2;padding-left:0}.purchase-due-filters button{flex:1 1 auto}}

/* PATCH 014: shared tab consistency and customer contacts */
.contact-toolbar{padding:14px 16px;border-bottom:1px solid var(--line,#d9e1ec)}
.contact-toolbar input{max-width:420px}
.contact-table a{color:#2563eb;text-decoration:none;font-weight:700}
.contact-table a:hover{text-decoration:underline}
.schedule-tabs .tab-btn{min-height:40px;padding:0 18px;border-radius:10px 10px 0 0}

/* PATCH 016: 일정 등록 고객사 담당자 검색 팝업 */
.contact-picker-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.contact-picker-field input[readonly]{background:#fff;cursor:pointer}
.contact-picker-open{white-space:nowrap;height:40px}
.contact-picker-overlay{position:fixed;inset:0;z-index:12000;background:rgba(15,23,42,.48);display:flex;align-items:center;justify-content:center;padding:20px}
.contact-picker-dialog{width:min(680px,100%);max-height:min(720px,88vh);background:#fff;border:1px solid #dbe3ef;border-radius:18px;box-shadow:0 28px 80px rgba(15,23,42,.28);display:flex;flex-direction:column;overflow:hidden}
.contact-picker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 24px 18px;border-bottom:1px solid #e3e9f2}
.contact-picker-head h3{margin:0 0 5px;font-size:20px;color:#10213d}
.contact-picker-head p{margin:0;color:#6b7a90;font-size:13px}
.contact-picker-close{border:0;background:transparent;font-size:30px;line-height:1;color:#64748b;cursor:pointer;padding:0 2px}
.contact-picker-search{padding:16px 24px 12px}
.contact-picker-search input{width:100%;height:42px;border:1px solid #cfd9e8;border-radius:9px;padding:0 13px;font:inherit;outline:none}
.contact-picker-search input:focus{border-color:#3169e8;box-shadow:0 0 0 3px rgba(49,105,232,.12)}
.contact-picker-results{padding:0 24px 12px;overflow:auto;display:grid;gap:8px;min-height:180px}
.contact-picker-item{width:100%;border:1px solid #dbe3ef;background:#fff;border-radius:11px;padding:13px 15px;display:grid;grid-template-columns:120px minmax(0,1fr) 130px;gap:12px;align-items:center;text-align:left;cursor:pointer;color:#17233b}
.contact-picker-item:hover{border-color:#79a0f4;background:#f5f8ff}
.contact-picker-name{font-weight:700}
.contact-picker-meta{color:#596a82;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-picker-phone{text-align:right;color:#245dcf;font-weight:600}
.contact-picker-empty{padding:54px 20px;text-align:center;color:#7b8799;border:1px dashed #d6deea;border-radius:11px}
.contact-picker-actions{display:flex;justify-content:flex-end;padding:14px 24px 20px;border-top:1px solid #e8edf4}
@media(max-width:640px){.contact-picker-overlay{padding:10px;align-items:flex-end}.contact-picker-dialog{max-height:92vh;border-radius:16px 16px 0 0}.contact-picker-item{grid-template-columns:1fr;gap:4px}.contact-picker-phone{text-align:left}.contact-picker-field{grid-template-columns:1fr}.contact-picker-open{width:100%}}

/* PATCH 019 - HR organization charts */
.org-shell{padding:0;overflow:hidden}.org-head{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:24px 26px;border-bottom:1px solid var(--line,#dce4ef)}.org-head h2{margin:0 0 5px}.org-head p{margin:0;color:#718096}.org-tools{display:flex;gap:8px;align-items:center}.org-tools input{min-width:260px}.org-tabs{display:flex;gap:28px;padding:0 26px;border-bottom:1px solid var(--line,#dce4ef)}.org-tabs button{border:0;background:transparent;padding:16px 4px 14px;font:inherit;font-weight:800;color:#617087;cursor:pointer;border-bottom:3px solid transparent}.org-tabs button.active{color:#2563eb;border-bottom-color:#2563eb}.org-general,.safety-org,.dept-org-view{padding:28px}.org-root{display:flex;justify-content:center}.org-root-card{min-width:210px;text-align:center;padding:18px 24px;border:2px solid #2f6ce5;border-radius:14px;background:#f5f8ff;box-shadow:0 8px 20px rgba(31,75,145,.08)}.org-root-card b,.org-root-card span{display:block}.org-root-card span{margin-top:6px;color:#52637a}.org-connector{height:34px;width:2px;background:#b9c7da;margin:0 auto}.org-dept-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}.org-dept-card,.safety-role-card{border:1px solid #d9e2ee;border-radius:14px;background:#fff;overflow:hidden}.org-dept-card header,.safety-role-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 16px;background:#f7f9fc;border-bottom:1px solid #e3e9f1}.org-dept-card h3,.safety-role-title h3{margin:0;font-size:15px}.org-dept-card header span{font-size:12px;color:#6b7a90}.org-person-list{display:grid;gap:7px;padding:10px}.org-person{width:100%;display:flex;gap:10px;align-items:center;text-align:left;border:1px solid #e4eaf2;background:#fff;border-radius:10px;padding:9px 10px;cursor:pointer}.org-person:hover{border-color:#8db1ff;background:#f7faff}.org-avatar{width:38px;height:38px;flex:0 0 38px;border-radius:50%;overflow:hidden;background:#e8eef8;display:grid;place-items:center;color:#2d61b9;font-weight:900}.org-avatar img{width:100%;height:100%;object-fit:cover}.org-person-info{min-width:0;display:flex;flex-direction:column}.org-person-info b{font-size:13px;color:#10233f}.org-person-info small{font-size:11px;color:#68778c}.org-person-info em{font-size:10px;color:#8a96a7;font-style:normal}.safety-org-note{padding:14px 16px;border-radius:12px;background:#f3f7fd;margin-bottom:16px;display:flex;gap:12px;align-items:center}.safety-org-note span{color:#68778c;font-size:12px}.safety-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.btn.small{min-height:30px;padding:5px 10px;font-size:11px}.dept-org-toolbar{display:flex;justify-content:space-between;align-items:end;padding:20px 28px 0}.dept-org-toolbar label{font-weight:800;display:grid;gap:7px}.dept-org-toolbar select{min-width:260px}.dept-org-toolbar span{color:#65758b}.dept-org-title{text-align:center;padding:18px;border:2px solid #2f6ce5;background:#f5f8ff;border-radius:14px;max-width:360px;margin:0 auto 24px}.dept-org-title b,.dept-org-title small{display:block}.dept-org-title small{margin-top:5px;color:#6a7890}.org-person-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.org-employee-detail{display:grid;grid-template-columns:120px 1fr;gap:20px}.org-detail-photo{width:120px;height:150px;border-radius:12px;overflow:hidden;background:#edf2f8;display:grid;place-items:center;font-size:42px;font-weight:900;color:#3c68af}.org-detail-photo img{width:100%;height:100%;object-fit:cover}.org-detail-info h3{font-size:23px;margin:4px 0}.org-detail-info p{color:#64748b;margin:0 0 15px}.org-detail-info dl{display:grid;grid-template-columns:82px 1fr;margin:0;border-top:1px solid #e3e9f1}.org-detail-info dt,.org-detail-info dd{margin:0;padding:8px;border-bottom:1px solid #e3e9f1}.org-detail-info dt{font-weight:800;background:#f7f9fc}.safety-assign-list{max-height:430px;overflow:auto;border:1px solid #dde5ef;border-radius:12px;padding:8px}.safety-assign-row{display:grid;grid-template-columns:24px 1fr;align-items:center;gap:5px;padding:4px}.safety-assign-row .org-person{pointer-events:none}.safety-assign-row input{width:18px;height:18px}.empty.compact{padding:18px}
@media(max-width:900px){.org-head{align-items:stretch;flex-direction:column}.org-tools{flex-wrap:wrap}.org-tools input{min-width:0;flex:1}.org-tabs{gap:14px;overflow:auto}.safety-role-grid{grid-template-columns:1fr}.org-general,.safety-org,.dept-org-view{padding:18px}.dept-org-toolbar{align-items:stretch;flex-direction:column;gap:10px}.dept-org-toolbar select{min-width:0;width:100%}.org-employee-detail{grid-template-columns:1fr}.org-detail-photo{margin:auto}}

/* PATCH 020 - organization chart editing, connectors and print-ready layout */
.org-edit-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:18px;padding:12px 14px;border:1px solid #dbe4f0;border-radius:12px;background:#f8fafc}
.org-edit-bar span{margin-left:auto;color:#6b7a90;font-size:12px}.org-edit-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.btn.danger{border-color:#f1b9b9;color:#b42318;background:#fff}.btn.danger:hover{background:#fff4f3}
.org-tree,.dept-org-tree{position:relative}.org-line-vertical{width:2px;height:34px;background:#b8c6d8;margin:0 auto}.org-branches{position:relative;display:flex;align-items:flex-start;justify-content:center;gap:16px;padding-top:34px;overflow-x:auto}.org-branches:before{content:"";position:absolute;top:0;left:calc(8% + 10px);right:calc(8% + 10px);height:2px;background:#b8c6d8}.org-branch{position:relative;flex:1 1 250px;min-width:240px;max-width:360px}.org-line-drop{position:absolute;top:-34px;left:50%;width:2px;height:34px;background:#b8c6d8;transform:translateX(-50%)}
.org-dept-card header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.org-dept-card header .org-edit-actions{grid-column:1/-1;margin-top:8px}.org-dept-card header h3{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.safety-flow{max-width:760px;margin:0 auto;display:flex;flex-direction:column;align-items:stretch}.safety-flow-node{position:relative}.safety-flow-line{width:2px;height:28px;background:#b8c6d8;margin:0 auto}.safety-flow .safety-role-card{max-width:620px;width:100%;margin:0 auto}.safety-flow .org-person-list{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.dept-org-toolbar{gap:12px;flex-wrap:wrap}.dept-org-toolbar>.org-edit-actions{margin-left:auto}.dept-org-tree{max-width:1100px;margin:0 auto}.dept-org-tree .org-person-grid{position:relative;padding-top:34px}.dept-org-tree .org-person-grid:before{content:"";position:absolute;top:0;left:8%;right:8%;height:2px;background:#b8c6d8}.dept-person-node{position:relative}.dept-person-node .org-line-drop{top:-34px}.dept-person-node .org-person{height:100%}
@media(max-width:900px){.org-edit-bar span{width:100%;margin-left:0}.org-branches{display:grid;grid-template-columns:1fr;padding-top:0;overflow:visible}.org-branches:before,.org-branch>.org-line-drop,.dept-org-tree .org-person-grid:before,.dept-person-node .org-line-drop{display:none}.org-branch{min-width:0;max-width:none}.dept-org-toolbar>.org-edit-actions{margin-left:0;width:100%}.safety-flow .org-person-list{grid-template-columns:1fr}}
@media print{.org-edit-bar,.org-edit-actions,.org-tools,.org-tabs{display:none!important}.org-shell{border:0!important;box-shadow:none!important}.org-head{display:none!important}.org-general,.safety-org,.dept-org-view{padding:0!important}.org-branches{overflow:visible}.org-person{break-inside:avoid}.org-dept-card,.safety-role-card{break-inside:avoid;box-shadow:none!important}}

/* PATCH 021 - executive root, finished connectors and premium print layout */
.org-root-card.executive{min-width:230px;padding:19px 28px;border-color:#1f5fd1;background:linear-gradient(180deg,#f8fbff 0%,#eef4ff 100%);box-shadow:0 12px 28px rgba(31,95,209,.12)}
.org-root-card.executive small{display:block;margin-bottom:5px;font-size:9px;font-weight:900;letter-spacing:.14em;color:#4471b8}
.org-root-card.executive b{font-size:18px;color:#10233f}
.org-root-card.executive span{font-size:14px;font-weight:800;color:#31527f}
.org-branches{gap:16px}
.org-branches:before{display:none}
.org-branch:before,.org-branch:after{content:"";position:absolute;top:-34px;width:50%;height:2px;background:#aebed2}
.org-branch:before{right:50%}.org-branch:after{left:50%}
.org-branch:first-child:before,.org-branch:last-child:after{display:none}
.org-branch:only-child:before,.org-branch:only-child:after{display:none}
.org-line-vertical,.org-line-drop{background:#aebed2}
.org-line-drop{z-index:1}
@media(max-width:900px){.org-branch:before,.org-branch:after{display:none}}

/* PATCH 022 - organization chart connector, rank order and print refinement */
.org-tree .org-branches{
  display:grid;
  grid-template-columns:repeat(var(--org-count,1),minmax(210px,1fr));
  gap:16px;
  position:relative;
  padding-top:34px;
  overflow-x:auto;
  align-items:start;
}
.org-tree .org-branches::before{
  content:"";
  display:block;
  position:absolute;
  top:0;
  left:calc(50% / var(--org-count,1));
  right:calc(50% / var(--org-count,1));
  height:2px;
  background:#aebed2;
}
.org-tree .org-branch{position:relative;min-width:210px;max-width:none;width:auto}
.org-tree .org-branch::before,.org-tree .org-branch::after{display:none!important}
.org-tree .org-branch>.org-line-drop{top:-34px;height:34px}

.dept-org-tree .org-person-grid{
  display:grid;
  grid-template-columns:repeat(var(--person-count,1),minmax(185px,1fr));
  gap:12px;
  position:relative;
  padding-top:34px;
  overflow-x:auto;
}
.dept-org-tree .org-person-grid::before{
  content:"";
  position:absolute;
  top:0;
  left:calc(50% / var(--person-count,1));
  right:calc(50% / var(--person-count,1));
  height:2px;
  background:#aebed2;
}
.dept-org-tree .dept-person-node{position:relative;min-width:185px}
.dept-org-tree .dept-person-node .org-line-drop{top:-34px;height:34px}

.org-print-brand{background:transparent!important;width:34mm!important;height:18mm!important;padding:0!important;border-radius:0!important}
.org-print-brand img{display:block;width:100%;height:100%;object-fit:contain}

@media(max-width:900px){
  .org-tree .org-branches,.dept-org-tree .org-person-grid{display:grid;grid-template-columns:1fr;padding-top:0;overflow:visible}
  .org-tree .org-branches::before,.dept-org-tree .org-person-grid::before,.org-tree .org-branch>.org-line-drop,.dept-org-tree .dept-person-node .org-line-drop{display:none!important}
}

@media print{
  @page{size:A4 landscape;margin:0}
  .print-profile-directory .print-page{padding:0!important;max-width:none!important}
  .print-profile-directory .org-print-document{min-height:auto!important;padding:0!important}
  .print-profile-directory .org-print-header{
    grid-template-columns:36mm 1fr 28mm!important;
    gap:5mm!important;
    padding:0 0 4mm!important;
    margin-bottom:5mm!important;
  }
  .print-profile-directory .org-print-header h2{font-size:16px!important;margin:0 0 1mm!important}
  .print-profile-directory .org-print-header p{font-size:7px!important}
  .print-profile-directory .org-print-footer{position:static!important;margin-top:5mm!important;padding-top:2mm!important}
  .print-profile-directory .org-tree .org-branches{
    display:grid!important;
    grid-template-columns:repeat(var(--org-count,1),minmax(0,1fr))!important;
    gap:3mm!important;
    overflow:visible!important;
    padding-top:7mm!important;
  }
  .print-profile-directory .org-tree .org-branches::before{
    display:block!important;
    left:calc(50% / var(--org-count,1))!important;
    right:calc(50% / var(--org-count,1))!important;
    top:0!important;
    border:0!important;
    height:1px!important;
    background:#66788f!important;
  }
  .print-profile-directory .org-tree .org-branch{min-width:0!important;max-width:none!important;padding-top:0!important}
  .print-profile-directory .org-tree .org-branch>.org-line-drop{display:block!important;top:-7mm!important;height:7mm!important;border:0!important;width:1px!important;background:#66788f!important}
  .print-profile-directory .org-branch::before,.print-profile-directory .org-branch::after{display:none!important}
  .print-profile-directory .org-dept-card{border-radius:2mm!important}
  .print-profile-directory .org-dept-card header{padding:2mm!important;min-height:7mm!important}
  .print-profile-directory .org-dept-card h3{font-size:7.5px!important}
  .print-profile-directory .org-person-list{padding:1.5mm!important}
  .print-profile-directory .org-person{padding:1.2mm!important;margin-bottom:1mm!important;min-height:8mm!important}
  .print-profile-directory .org-avatar{width:7mm!important;height:7mm!important;flex-basis:7mm!important}
  .print-profile-directory .org-person-info b{font-size:7.5px!important}
  .print-profile-directory .org-person-info small{font-size:6.5px!important}
  .print-profile-directory .org-person-info em{display:none!important}
  .print-profile-directory .dept-org-tree .org-person-grid{
    display:grid!important;
    grid-template-columns:repeat(var(--person-count,1),minmax(0,1fr))!important;
    gap:3mm!important;
    overflow:visible!important;
    padding-top:7mm!important;
  }
  .print-profile-directory .dept-org-tree .org-person-grid::before{
    display:block!important;
    left:calc(50% / var(--person-count,1))!important;
    right:calc(50% / var(--person-count,1))!important;
    top:0!important;
    height:1px!important;
    background:#66788f!important;
  }
  .print-profile-directory .dept-org-tree .dept-person-node{min-width:0!important;padding-top:0!important}
  .print-profile-directory .dept-org-tree .dept-person-node .org-line-drop{display:block!important;top:-7mm!important;height:7mm!important;border:0!important;width:1px!important;background:#66788f!important}
}

/* PATCH 023 - continuous organization chart connectors */
.org-tree .org-branches{
  column-gap:0!important;
  row-gap:16px!important;
}
.org-tree .org-branch{
  box-sizing:border-box;
  padding-left:8px;
  padding-right:8px;
}
.org-tree .org-branches::before{
  left:calc(50% / var(--org-count,1))!important;
  right:calc(50% / var(--org-count,1))!important;
}
.org-tree .org-branch>.org-line-drop{
  left:50%!important;
  transform:translateX(-50%)!important;
}

.dept-org-tree .org-person-grid{
  column-gap:0!important;
  row-gap:12px!important;
}
.dept-org-tree .dept-person-node{
  box-sizing:border-box;
  padding-left:6px;
  padding-right:6px;
}
.dept-org-tree .org-person-grid::before{
  left:calc(50% / var(--person-count,1))!important;
  right:calc(50% / var(--person-count,1))!important;
}
.dept-org-tree .dept-person-node .org-line-drop{
  left:50%!important;
  transform:translateX(-50%)!important;
}

@media(max-width:900px){
  .org-tree .org-branch,.dept-org-tree .dept-person-node{padding-left:0;padding-right:0}
}

@media print{
  .print-profile-directory .org-tree .org-branches,
  .print-profile-directory .dept-org-tree .org-person-grid{
    column-gap:0!important;
  }
  .print-profile-directory .org-tree .org-branch{
    padding-left:1.5mm!important;
    padding-right:1.5mm!important;
  }
  .print-profile-directory .dept-org-tree .dept-person-node{
    padding-left:1.5mm!important;
    padding-right:1.5mm!important;
  }
}

/* PATCH 024 - exact endpoint connectors and rank hierarchy */
.org-tree,.dept-org-tree{position:relative;isolation:isolate}
.org-connector-svg{position:absolute;inset:0;z-index:0;overflow:visible;pointer-events:none}
.org-connector-svg line{stroke:#9fb1c9;stroke-width:2;vector-effect:non-scaling-stroke;shape-rendering:geometricPrecision}
.org-tree .org-root,.org-tree .org-branches,.dept-org-tree .dept-org-title,.dept-org-tree .dept-rank-stack{position:relative;z-index:1}
.org-tree .org-line-vertical,.org-tree .org-line-drop,.org-tree .org-branches::before,.org-tree .org-branch::before,.org-tree .org-branch::after{display:none!important}
.org-tree .org-branches{padding-top:44px!important;column-gap:16px!important}
.org-tree .org-branch{padding:0!important}
.dept-rank-stack{display:flex;flex-direction:column;gap:48px;padding-top:48px}
.dept-rank-level{position:relative}
.dept-rank-label{width:max-content;min-width:120px;margin:0 auto 14px;padding:8px 18px;border:1px solid #cbd8ea;border-radius:999px;background:#f4f7fb;text-align:center;font-weight:800;color:#294b76}
.dept-rank-level .org-person-grid{display:grid;grid-template-columns:repeat(var(--person-count,1),minmax(220px,1fr));gap:14px;position:relative;padding:0;overflow:visible}
.dept-rank-level .dept-person-node{min-width:0;padding:0}
.dept-org-tree .org-line-vertical,.dept-org-tree .org-person-grid::before,.dept-org-tree .org-line-drop{display:none!important}
.safety-flow .org-person-list .org-person{order:initial}
@media(max-width:900px){
 .org-connector-svg{display:none!important}
 .org-tree .org-branches{padding-top:0!important}
 .dept-rank-stack{gap:20px;padding-top:20px}
 .dept-rank-level .org-person-grid{grid-template-columns:1fr}
}
@media print{
 .print-profile-directory .org-connector-svg{display:block!important}
 .print-profile-directory .org-connector-svg line{stroke:#586b85!important;stroke-width:1!important}
 .print-profile-directory .org-tree .org-branches{padding-top:7mm!important;column-gap:3mm!important}
 .print-profile-directory .dept-rank-stack{gap:7mm!important;padding-top:7mm!important}
 .print-profile-directory .dept-rank-label{font-size:7px!important;padding:1mm 3mm!important;margin-bottom:2mm!important;min-width:20mm!important}
 .print-profile-directory .dept-rank-level .org-person-grid{gap:3mm!important;grid-template-columns:repeat(var(--person-count,1),minmax(0,1fr))!important}
}

/* PATCH 025 - organization chart hierarchy, photo avatars and crisp connectors */
.org-avatar,
.org-executive-photo{
  overflow:hidden;
  background:#eef3fb;
  border:1px solid #d8e2f1;
  color:#2d5fc4;
  display:grid;
  place-items:center;
  flex:none;
}
.org-avatar.has-photo,
.org-executive-photo.has-photo{background:#fff}
.org-avatar.has-photo img,
.org-executive-photo.has-photo img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center top;
}
.org-avatar.no-photo span,
.org-executive-photo.no-photo span{font-weight:800}
.org-root-card.executive{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  min-width:230px;
}
.org-executive-photo{
  width:58px;
  height:58px;
  border-radius:50%;
}
.org-executive-text{display:flex;flex-direction:column;align-items:flex-start;text-align:left}
.org-executive-text small{margin:0 0 4px}
.org-executive-text b{font-size:18px;line-height:1.2}
.org-executive-text strong{font-size:14px;margin-top:4px}

/* SVG is the single source of connector lines on desktop. */
.org-connector-svg{overflow:visible!important}
.org-connector-svg line{
  stroke:#9cafc8!important;
  stroke-width:1.5!important;
  stroke-linecap:square;
  shape-rendering:geometricPrecision;
}
.org-tree .org-root-card,
.org-tree .org-dept-card,
.dept-org-tree .dept-org-title,
.dept-org-tree .dept-rank-level,
.safety-flow .safety-role-card{position:relative;z-index:2}

/* Department and safety charts share the same hierarchy card language as general chart. */
.dept-rank-stack{max-width:1120px;margin:0 auto}
.dept-rank-level{
  border:1px solid #d8e1ee;
  border-radius:14px;
  background:#fff;
  padding:14px;
  box-shadow:0 6px 18px rgba(20,42,76,.04);
}
.dept-rank-label{
  border-radius:10px!important;
  background:#f3f6fb!important;
  border-color:#d5dfed!important;
  color:#172b4d!important;
  min-width:150px!important;
  margin-bottom:12px!important;
}
.dept-rank-level .org-person-grid{align-items:stretch}
.dept-rank-level .org-person{height:100%}
.safety-flow{max-width:1120px!important}
.safety-flow-node{max-width:920px;margin:0 auto}
.safety-flow-line{height:34px!important;border-left:0!important;width:2px!important;background:#9cafc8!important}
.safety-role-card{border-color:#d8e1ee!important;border-radius:14px!important;box-shadow:0 6px 18px rgba(20,42,76,.04)}
.safety-role-title{background:#f3f6fb!important}
.safety-role-card .org-person-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}

/* Keep exact vertical center under the executive card. */
.org-tree .org-root{display:flex;justify-content:center}
.org-tree .org-root-card.executive{transform:none!important}

@media(max-width:900px){
  .org-root-card.executive{min-width:0;width:100%;max-width:360px}
  .org-executive-photo{width:48px;height:48px}
  .org-executive-text b{font-size:16px}
  .dept-rank-level{padding:10px}
  .safety-role-card .org-person-list{grid-template-columns:1fr}
}

@media print{
  .print-profile-directory .org-root-card.executive{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    gap:3mm!important;
    max-width:58mm!important;
  }
  .print-profile-directory .org-executive-photo{
    width:12mm!important;
    height:12mm!important;
    border-radius:50%!important;
  }
  .print-profile-directory .org-executive-text{align-items:flex-start!important;text-align:left!important}
  .print-profile-directory .org-executive-text b{font-size:10px!important}
  .print-profile-directory .org-executive-text strong{font-size:8px!important}
  .print-profile-directory .org-connector-svg line{
    stroke:#586b85!important;
    stroke-width:.8!important;
    stroke-linecap:square!important;
  }
  .print-profile-directory .dept-rank-level,
  .print-profile-directory .safety-role-card{
    box-shadow:none!important;
    border-radius:2mm!important;
    break-inside:avoid;
  }
  .print-profile-directory .dept-rank-level{padding:2mm!important}
  .print-profile-directory .safety-flow-line{height:5mm!important;width:.8px!important;background:#586b85!important}
}

/* PATCH 026 - keep department rank cards inside the organization chart */
.dept-org-view,
.dept-org-tree,
.dept-rank-stack,
.dept-rank-level{
  width:100%;
  max-width:100%;
  min-width:0;
}
.dept-org-view{
  overflow-x:hidden;
}
.dept-rank-stack{
  box-sizing:border-box;
  padding-left:0;
  padding-right:0;
}
.dept-rank-level{
  box-sizing:border-box;
  overflow:hidden;
}
.dept-rank-level .org-person-grid{
  width:100%;
  max-width:100%;
  min-width:0;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr))!important;
  gap:12px!important;
  align-items:stretch;
  justify-content:center;
  overflow:visible;
}
.dept-rank-level .dept-person-node,
.dept-rank-level .org-person,
.dept-rank-level .org-person-info{
  min-width:0;
  max-width:100%;
}
.dept-rank-level .org-person{
  width:100%;
  box-sizing:border-box;
}
.dept-rank-level .org-person-info b,
.dept-rank-level .org-person-info small,
.dept-rank-level .org-person-info em{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
@media(max-width:1200px){
  .dept-rank-level .org-person-grid{
    grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr))!important;
  }
}
@media(max-width:760px){
  .dept-rank-level .org-person-grid{
    grid-template-columns:1fr!important;
  }
  .dept-rank-level{
    padding:10px;
  }
}
@media print{
  .print-profile-directory .dept-org-view,
  .print-profile-directory .dept-org-tree,
  .print-profile-directory .dept-rank-stack,
  .print-profile-directory .dept-rank-level{
    width:100%!important;
    max-width:100%!important;
    overflow:visible!important;
  }
  .print-profile-directory .dept-rank-level .org-person-grid{
    display:grid!important;
    grid-template-columns:repeat(auto-fit,minmax(30mm,1fr))!important;
    gap:2mm!important;
  }
  .print-profile-directory .dept-rank-level .dept-person-node{
    min-width:0!important;
    max-width:none!important;
    padding:0!important;
  }
}

/* PATCH 027 - safety organization branching layout and print parity */
.safety-org-chart{
  width:min(1120px,100%);
  margin:0 auto;
  padding:0 10px 24px;
}
.safety-top-node{display:flex;justify-content:center;position:relative}
.safety-top-node>.safety-role-card{width:min(420px,100%)}
.safety-split-connector{position:relative;height:68px}
.safety-split-connector .stem{position:absolute;width:2px;background:#9cafc8}
.safety-split-connector .stem.top{left:50%;top:0;height:28px;transform:translateX(-1px)}
.safety-split-connector .bar{position:absolute;left:25%;right:25%;top:28px;height:2px;background:#9cafc8}
.safety-split-connector .stem.left{left:25%;top:28px;height:40px;transform:translateX(-1px)}
.safety-split-connector .stem.right{left:75%;top:28px;height:40px;transform:translateX(-1px)}
.safety-middle-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:34px;align-items:start}
.safety-middle-col{min-width:0}
.safety-middle-col .safety-role-card{height:100%}
.safety-middle-col .org-person-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.safety-worker-connector{height:44px;width:2px;background:#9cafc8;margin:0 auto}
.safety-worker-card{width:min(620px,100%);margin:0 auto;border:1px solid #d8e1ee;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 6px 18px rgba(20,42,76,.04)}
.safety-worker-body{display:flex;align-items:center;justify-content:center;gap:14px;padding:20px}
.safety-worker-body b,.safety-worker-body small{display:block}
.safety-worker-body small{margin-top:4px;color:#68778c}
.safety-worker-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:#eef3fb;font-size:24px}
.safety-extra-roles{margin-top:34px;padding-top:22px;border-top:1px solid #dce5f0}
.safety-extra-roles>h3{margin:0 0 14px;font-size:15px}
.safety-extra-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}

@media(max-width:760px){
  .safety-split-connector{display:none}
  .safety-middle-row{grid-template-columns:1fr;gap:16px;margin-top:16px}
  .safety-middle-col+.safety-middle-col{position:relative;padding-top:28px}
  .safety-middle-col+.safety-middle-col:before{content:'';position:absolute;top:0;left:50%;height:28px;border-left:2px solid #9cafc8}
  .safety-worker-connector{height:28px}
  .safety-extra-grid{grid-template-columns:1fr}
}

@media print{
  .print-profile-directory .safety-org-chart{width:100%!important;max-width:100%!important;margin:0 auto!important;padding:0!important}
  .print-profile-directory .safety-top-node{display:flex!important;justify-content:center!important}
  .print-profile-directory .safety-top-node>.safety-role-card{width:62mm!important}
  .print-profile-directory .safety-split-connector{display:block!important;height:13mm!important;position:relative!important}
  .print-profile-directory .safety-split-connector .stem{display:block!important;position:absolute!important;width:0!important;background:none!important;border-left:1px solid #66788f!important}
  .print-profile-directory .safety-split-connector .stem.top{left:50%!important;top:0!important;height:5mm!important}
  .print-profile-directory .safety-split-connector .bar{display:block!important;position:absolute!important;left:25%!important;right:25%!important;top:5mm!important;height:0!important;background:none!important;border-top:1px solid #66788f!important}
  .print-profile-directory .safety-split-connector .stem.left{left:25%!important;top:5mm!important;height:8mm!important}
  .print-profile-directory .safety-split-connector .stem.right{left:75%!important;top:5mm!important;height:8mm!important}
  .print-profile-directory .safety-middle-row{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:8mm!important;align-items:start!important}
  .print-profile-directory .safety-worker-connector{height:8mm!important;width:0!important;background:none!important;border-left:1px solid #66788f!important;margin:0 auto!important}
  .print-profile-directory .safety-worker-card{width:92mm!important;margin:0 auto!important;box-shadow:none!important;border-radius:2mm!important}
  .print-profile-directory .safety-worker-body{padding:4mm!important;gap:3mm!important}
  .print-profile-directory .safety-extra-roles{margin-top:7mm!important;padding-top:4mm!important}
  .print-profile-directory .safety-extra-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:3mm!important}
}

/* PATCH 028 - safety branch merge connector and WYSIWYG one-page print */
.safety-merge-connector{
  position:relative;
  height:72px;
  width:100%;
  margin:0 auto;
}
.safety-merge-connector .stem,
.safety-merge-connector .bar{
  position:absolute;
  display:block;
  background:#9cafc8;
}
.safety-merge-connector .stem{width:2px}
.safety-merge-connector .stem.left{left:25%;top:0;height:28px;transform:translateX(-1px)}
.safety-merge-connector .stem.right{left:75%;top:0;height:28px;transform:translateX(-1px)}
.safety-merge-connector .bar{left:25%;right:25%;top:28px;height:2px}
.safety-merge-connector .stem.center{left:50%;top:28px;height:44px;transform:translateX(-1px)}

@media(max-width:760px){
  .safety-merge-connector{height:28px}
  .safety-merge-connector .stem.left,
  .safety-merge-connector .stem.right,
  .safety-merge-connector .bar{display:none}
  .safety-merge-connector .stem.center{left:50%;top:0;height:28px}
}

@media print{
  .print-profile-directory .org-print-document{
    transform-origin:top center!important;
    page-break-inside:avoid!important;
    break-inside:avoid!important;
  }
  .print-profile-directory .safety-merge-connector{
    display:block!important;
    position:relative!important;
    height:14mm!important;
    width:100%!important;
    margin:0 auto!important;
  }
  .print-profile-directory .safety-merge-connector .stem,
  .print-profile-directory .safety-merge-connector .bar{
    display:block!important;
    position:absolute!important;
    background:none!important;
  }
  .print-profile-directory .safety-merge-connector .stem{width:0!important;border-left:1px solid #66788f!important}
  .print-profile-directory .safety-merge-connector .stem.left{left:25%!important;top:0!important;height:5mm!important}
  .print-profile-directory .safety-merge-connector .stem.right{left:75%!important;top:0!important;height:5mm!important}
  .print-profile-directory .safety-merge-connector .bar{left:25%!important;right:25%!important;top:5mm!important;height:0!important;border-top:1px solid #66788f!important}
  .print-profile-directory .safety-merge-connector .stem.center{left:50%!important;top:5mm!important;height:9mm!important}
  .print-profile-directory .safety-worker-connector{display:none!important}
  .print-profile-directory .org-print-header{margin-bottom:3mm!important;padding-bottom:3mm!important}
  .print-profile-directory .org-print-footer{display:none!important}
  .print-profile-directory .safety-role-title{padding:3mm!important}
  .print-profile-directory .org-person-list{padding:2mm!important}
  .print-profile-directory .org-person{padding:2mm!important}
}

/* PATCH 030 - continuous safety center spine and reliable WYSIWYG print source */
.safety-split-connector .stem.center{
  left:50%;
  top:28px;
  height:40px;
  transform:translateX(-1px);
}
.safety-middle-row{
  position:relative;
}
.safety-middle-row::before{
  content:'';
  position:absolute;
  z-index:0;
  left:50%;
  top:0;
  bottom:0;
  width:2px;
  background:#9cafc8;
  transform:translateX(-1px);
}
.safety-middle-col{
  position:relative;
  z-index:1;
}
.safety-worker-connector{
  display:block;
  height:44px;
  width:2px;
  margin:0 auto;
  background:#9cafc8;
}
.safety-merge-connector{display:none!important}

@media(max-width:760px){
  .safety-middle-row::before{display:none}
  .safety-split-connector .stem.center{display:none}
}

@media print{
  .print-profile-directory .safety-split-connector .stem.center{
    display:block!important;
    position:absolute!important;
    left:50%!important;
    top:5mm!important;
    height:8mm!important;
    width:0!important;
    border-left:1px solid #66788f!important;
    background:none!important;
  }
  .print-profile-directory .safety-middle-row::before{
    display:block!important;
    left:50%!important;
    top:0!important;
    bottom:0!important;
    width:0!important;
    border-left:1px solid #66788f!important;
    background:none!important;
  }
  .print-profile-directory .safety-worker-connector{
    display:block!important;
    height:8mm!important;
    width:0!important;
    margin:0 auto!important;
    border-left:1px solid #66788f!important;
    background:none!important;
  }
}

/* PATCH 031 - uninterrupted safety center spine and one-page A4 landscape print */
.safety-org-chart{position:relative}
.safety-flow-body{
  position:relative;
  isolation:isolate;
}
.safety-flow-body::before{
  content:'';
  position:absolute;
  z-index:0;
  left:50%;
  top:0;
  bottom:0;
  width:2px;
  background:#9cafc8;
  transform:translateX(-1px);
}
.safety-split-connector,
.safety-middle-row,
.safety-worker-connector,
.safety-worker-card{
  position:relative;
  z-index:1;
}
.safety-split-connector .stem.top,
.safety-split-connector .stem.center,
.safety-middle-row::before,
.safety-worker-connector{
  background:transparent!important;
  border:0!important;
}
.safety-worker-card{background:#fff}
.safety-middle-row{background:transparent}
.safety-middle-col{background:#fff}

@media(max-width:760px){
  .safety-flow-body::before{display:none}
}

@media print{
  .print-profile-directory .safety-flow-body{position:relative!important;isolation:isolate!important}
  .print-profile-directory .safety-flow-body::before{
    display:block!important;
    content:''!important;
    position:absolute!important;
    z-index:0!important;
    left:50%!important;
    top:0!important;
    bottom:0!important;
    width:0!important;
    border-left:1px solid #66788f!important;
    background:none!important;
    transform:none!important;
  }
  .print-profile-directory .safety-split-connector,
  .print-profile-directory .safety-middle-row,
  .print-profile-directory .safety-worker-card{position:relative!important;z-index:1!important}
  .print-profile-directory .safety-worker-card,
  .print-profile-directory .safety-middle-col{background:#fff!important}
}

/* PATCH 037 - 부서별 조직도 직급 계층 정렬 */
.dept-org-tree{max-width:1180px}
.dept-org-title{max-width:300px;padding:14px 20px;margin-bottom:18px}
.dept-rank-stack{display:flex;flex-direction:column;gap:16px}
.dept-rank-level{padding:12px 14px;border:1px solid #dbe4f0;border-radius:14px;background:#fff}
.dept-rank-level .dept-rank-label{width:150px;min-height:38px;margin:-32px auto 10px;padding:8px 14px;border:1px solid #cfdaea;border-radius:10px;background:#f4f7fc;text-align:center;font-weight:900;color:#17345c;position:relative;z-index:2}
.dept-rank-level .org-person-grid{gap:8px 12px;grid-template-columns:repeat(var(--person-count,1),minmax(180px,1fr))}
.dept-rank-level .org-person{min-height:52px;padding:7px 9px;border-radius:9px}
.dept-rank-level .org-avatar{width:32px;height:32px;flex-basis:32px}
.dept-rank-level .org-person-info b{font-size:12px}
.dept-rank-level .org-person-info small{font-size:10px}
@media(max-width:900px){.dept-rank-level .dept-rank-label{margin:-26px auto 8px}.dept-rank-level{margin-top:14px}}

/* =========================================================
   PATCH 038 - ORGANIZATION LAYOUT ENGINE FINAL OVERRIDES
   ========================================================= */
.org-connector-svg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible}
.org-connector-svg line{stroke:#8fa4bf;stroke-width:1.5;vector-effect:non-scaling-stroke}

/* General organization: department cells follow actual content height. */
.org-tree .org-branches{align-items:start!important}
.org-tree .org-branch{align-self:start!important;min-width:0!important}
.org-dept-card{height:auto!important;min-height:0!important;overflow:hidden}
.org-dept-card header{min-height:38px!important;height:auto!important;padding:7px 10px!important;display:flex!important;align-items:center!important;gap:8px!important}
.org-dept-card header h3{margin:0!important;line-height:1.2!important}.org-dept-card header>span{margin-left:auto!important}
.org-dept-hierarchy{display:flex!important;flex-direction:column!important;gap:5px!important;padding:6px!important}
.org-dept-rank-row{display:grid!important;grid-template-columns:64px minmax(0,1fr)!important;gap:6px!important;align-items:center!important}
.org-dept-rank-title{display:flex!important;align-items:center!important;justify-content:center!important;align-self:stretch!important;min-height:34px!important;padding:4px 6px!important;border:1px solid #d4deeb!important;border-radius:7px!important;background:#f4f7fb!important;color:#294b76!important;font-size:11px!important;font-weight:900!important;text-align:center!important;line-height:1.1!important}
.org-dept-rank-people{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important}
.org-dept-rank-people .org-person{min-height:34px!important;padding:5px 7px!important}
.org-dept-rank-people .org-person-info{min-width:0!important}.org-dept-rank-people .org-person-info b{font-size:11px!important}.org-dept-rank-people .org-person-info small{font-size:9px!important}.org-dept-rank-people .org-person-info em{display:none!important}

/* Department organization: compact rank cells, centered labels, safe line clearance. */
.dept-org-tree{padding-top:4px!important}
.dept-org-title{position:relative!important;z-index:3!important}
.dept-rank-stack{display:flex!important;flex-direction:column!important;gap:34px!important;padding-top:34px!important;max-width:1180px!important}
.dept-rank-level{position:relative!important;z-index:1!important;padding:20px 12px 10px!important;border:1px solid #dbe4f0!important;border-radius:12px!important;background:#fff!important}
.dept-rank-label{position:absolute!important;z-index:4!important;left:50%!important;top:0!important;transform:translate(-50%,-50%)!important;display:flex!important;align-items:center!important;justify-content:center!important;width:130px!important;min-width:0!important;min-height:32px!important;margin:0!important;padding:5px 12px!important;border:1px solid #ccd8e8!important;border-radius:9px!important;background:#f4f7fc!important;color:#17345c!important;font-size:13px!important;font-weight:900!important;line-height:1!important;text-align:center!important}
.dept-rank-level .org-person-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))!important;gap:8px!important;padding:0!important;overflow:visible!important}
.dept-rank-level .dept-person-node{min-width:0!important;padding:0!important}.dept-rank-level .org-person{min-height:44px!important;padding:6px 8px!important}
.dept-rank-level .org-person-info b{font-size:12px!important}.dept-rank-level .org-person-info small{font-size:10px!important}.dept-rank-level .org-person-info em{font-size:9px!important}

/* Safety organization: explicit complete hierarchy connectors. */
.safety-org-chart{position:relative!important}
.safety-top-node,.safety-middle-row,.safety-worker-card{position:relative!important;z-index:2!important}
.safety-split-connector{display:block!important;position:relative!important;height:56px!important;z-index:1!important}
.safety-split-connector .stem{display:block!important;position:absolute!important;width:2px!important;background:#9cafc8!important}
.safety-split-connector .stem.top{left:50%!important;top:0!important;height:22px!important;transform:translateX(-1px)!important}
.safety-split-connector .bar{display:block!important;position:absolute!important;left:25%!important;right:25%!important;top:22px!important;height:2px!important;background:#9cafc8!important}
.safety-split-connector .stem.left{left:25%!important;top:22px!important;height:34px!important;transform:translateX(-1px)!important}
.safety-split-connector .stem.right{left:75%!important;top:22px!important;height:34px!important;transform:translateX(-1px)!important}
.safety-split-connector .stem.center{display:block!important;left:50%!important;top:22px!important;height:calc(100% + 112px)!important;transform:translateX(-1px)!important;z-index:0!important}
.safety-middle-row{background:#fff!important}.safety-worker-connector{position:relative!important;z-index:2!important;height:38px!important;border-left:2px solid #9cafc8!important;margin:0 auto!important}
.safety-worker-card{background:#fff!important}

@media(max-width:900px){
 .org-dept-rank-row{grid-template-columns:52px minmax(0,1fr)!important}.org-dept-rank-people{grid-template-columns:1fr!important}
 .dept-rank-stack{gap:26px!important;padding-top:26px!important}.dept-rank-level .org-person-grid{grid-template-columns:1fr!important}
 .org-connector-svg{display:none!important}
}

/* KMI PATCH 039 - ORGANIZATION CHART ENGINE REBUILD */
.kmi-org-v2{padding:20px 28px 32px}.kmi-general-tree,.kmi-safety-tree,.kmi-dept-tree{position:relative;max-width:1380px;margin:0 auto}.kmi-ceo-card,.kmi-dept-title{width:290px;margin:0 auto 46px;padding:14px 20px;border:2px solid #2f67ef;border-radius:14px;text-align:center;background:#f5f7fc}.kmi-ceo-card small{display:block;font-size:10px;letter-spacing:.14em;color:#4d6a98}.kmi-ceo-card b,.kmi-dept-title b{display:block;font-size:18px;margin-top:3px}.kmi-ceo-card span,.kmi-dept-title small{display:block;font-size:13px;color:#68778b;margin-top:3px}.kmi-general-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start;position:relative}.kmi-org-dept-card,.kmi-safety-card{border:1px solid #b9c5d4;border-radius:10px;overflow:hidden;background:#fff;min-width:0}.kmi-org-dept-card>header,.kmi-safety-card>header{min-height:42px;padding:8px 12px;background:#eef3f8;border-bottom:1px solid #c8d1dc;display:flex;align-items:center;justify-content:space-between;gap:8px}.kmi-org-dept-card h3,.kmi-safety-card h3{margin:0;font-size:14px}.kmi-org-dept-card header>span{font-size:12px;color:#738197}.kmi-org-ranks{padding:8px}.kmi-org-rank-row{display:grid;grid-template-columns:68px minmax(0,1fr);gap:7px;align-items:stretch;margin-bottom:6px}.kmi-org-rank-row:last-child{margin-bottom:0}.kmi-org-rank-row>strong{display:grid;place-items:center;min-height:34px;border:1px solid #c7d1de;border-radius:7px;background:#f7f9fc;font-size:13px;color:#344d73}.kmi-org-rank-people,.kmi-dept-level>div,.kmi-safety-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.kmi-org-person{min-width:0;min-height:34px;padding:5px 8px;border:1px solid #ccd5e0;border-radius:7px;background:#fff;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}.kmi-org-person b{font-size:12px;color:#172b4d}.kmi-org-person span{font-size:10px;color:#748196}.kmi-org-person:hover{border-color:#4f7df0;background:#f7f9ff}.kmi-general-tree>.org-connector-svg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible}.kmi-ceo-card,.kmi-general-grid{position:relative;z-index:1}.kmi-safety-tree{max-width:1120px}.kmi-safety-top{width:360px;margin:0 auto;position:relative}.kmi-safety-top:after{content:'';position:absolute;left:50%;top:100%;height:32px;border-left:2px solid #a1afc1}.kmi-safety-middle{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:32px;position:relative}.kmi-safety-middle:before{content:'';position:absolute;left:25%;right:25%;top:0;border-top:2px solid #a1afc1}.kmi-safety-middle>div{padding-top:26px;position:relative}.kmi-safety-middle>div:before{content:'';position:absolute;left:50%;top:0;height:26px;border-left:2px solid #a1afc1}.kmi-safety-people{padding:8px}.kmi-worker-card{width:340px;margin:34px auto 0;border:1px solid #b9c5d4;border-radius:12px;padding:16px;text-align:center;position:relative;background:#fff}.kmi-worker-card:before{content:'';position:absolute;left:50%;bottom:100%;height:34px;border-left:2px solid #a1afc1}.kmi-worker-card small,.kmi-worker-card span{display:block;color:#748196;font-size:12px}.kmi-worker-card b{display:block;font-size:19px;margin:3px 0}.kmi-safety-extra{max-width:1120px;margin:36px auto 0;border-top:1px solid #d4dbe5;padding-top:18px}.kmi-safety-extra h3{margin:0 0 12px;font-size:17px}.kmi-safety-extra>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.kmi-dept-tree{padding:28px 28px 40px}.kmi-dept-levels{max-width:1100px;margin:0 auto}.kmi-dept-level{position:relative;margin-bottom:34px;padding-top:26px}.kmi-dept-level:before{content:'';position:absolute;left:50%;top:0;height:26px;border-left:2px solid #a1afc1}.kmi-dept-level h3{width:180px;height:42px;display:grid;place-items:center;margin:0 auto 12px;border:1px solid #b9c5d4;border-radius:9px;background:#f3f6fa;font-size:15px;text-align:center}.kmi-dept-level>div{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;max-width:1000px;margin:0 auto}.dept-org-toolbar+ .kmi-dept-tree{border-top:1px solid #edf0f5}.org-shell .org-person-grid,.org-shell .dept-rank-stack{display:none}.org-shell .kmi-org-person .org-avatar{display:none}
@media(max-width:1100px){.kmi-general-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kmi-dept-level>div{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.kmi-org-v2{padding:14px}.kmi-general-grid,.kmi-safety-middle,.kmi-safety-extra>div{grid-template-columns:1fr}.kmi-safety-middle:before,.kmi-safety-middle>div:before,.kmi-safety-top:after,.kmi-worker-card:before,.kmi-dept-level:before{display:none}.kmi-safety-middle{margin-top:14px;gap:14px}.kmi-safety-middle>div,.kmi-dept-level{padding-top:0}.kmi-ceo-card,.kmi-dept-title,.kmi-safety-top,.kmi-worker-card{width:min(100%,320px)}.kmi-dept-level>div{grid-template-columns:repeat(2,minmax(0,1fr))}.kmi-org-rank-row{grid-template-columns:56px minmax(0,1fr)}}


/* KMI PATCH 040 - GENERAL ORG COMPACT ONLY */
.kmi-general-grid{align-items:start}
.kmi-general-column{display:flex;flex-direction:column;gap:14px;min-width:0;align-items:stretch}
.kmi-general-column .kmi-org-dept-card{width:100%;align-self:stretch}
.kmi-general-column .kmi-org-dept-card.is-compact{width:88%;align-self:center}
.kmi-org-dept-card>header{min-height:36px;padding:6px 10px}
.kmi-org-people-only{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:7px}
.kmi-org-people-only .kmi-org-person{min-height:32px;padding:4px 7px}
.kmi-org-people-only .kmi-org-person b{font-size:12px}
.kmi-org-people-only .kmi-org-person span{font-size:10px}
@media(max-width:1100px){.kmi-general-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kmi-general-column .kmi-org-dept-card.is-compact{width:100%}}
@media(max-width:760px){.kmi-general-grid{grid-template-columns:1fr}.kmi-general-column{gap:10px}.kmi-general-column .kmi-org-dept-card.is-compact{width:100%}}

/* PATCH 041: General organization department title center alignment only. */
.kmi-general-tree .kmi-org-dept-card>header{
  position:relative!important;
  justify-content:center!important;
}
.kmi-general-tree .kmi-org-dept-card>header h3{
  width:100%!important;
  margin:0!important;
  padding:0 42px!important;
  text-align:center!important;
}
.kmi-general-tree .kmi-org-dept-card>header>span{
  position:absolute!important;
  right:10px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
}

/* PATCH 042 - safety organization connectors and editable worker card only */
.kmi-safety-tree{overflow:visible}
.kmi-safety-middle{align-items:stretch}
.kmi-safety-middle>div{display:flex}
.kmi-safety-middle>div>.kmi-safety-card{width:100%}
.kmi-safety-middle:after{content:'';position:absolute;left:25%;right:25%;bottom:-28px;border-top:2px solid #a1afc1;z-index:0}
.kmi-safety-middle>div:after{content:'';position:absolute;left:50%;bottom:-28px;height:28px;border-left:2px solid #a1afc1;z-index:0}
.kmi-worker-card{margin-top:62px}
.kmi-worker-card:before{height:34px}
.kmi-worker-edit{position:absolute;right:10px;top:9px;z-index:2}
@media(max-width:760px){
 .kmi-safety-middle:after,.kmi-safety-middle>div:after{display:none}
 .kmi-worker-card{margin-top:14px}
}


/* PATCH 043 - safety org center spine, centered titles, unified worker card only */
.kmi-safety-tree{
  position:relative!important;
  overflow:visible!important;
}
.kmi-safety-top:after{
  height:32px!important;
  border-left:2px solid #a1afc1!important;
}
.kmi-safety-middle{
  position:relative!important;
  align-items:stretch!important;
}
/* Keep one uninterrupted center line from the top responsibility card to the worker card. */
.kmi-safety-middle:after{
  content:''!important;
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:0!important;
  bottom:-34px!important;
  width:0!important;
  border:0!important;
  border-left:2px solid #a1afc1!important;
  transform:translateX(-1px)!important;
  z-index:0!important;
}
/* Remove the former lower U-shaped merge connector. */
.kmi-safety-middle>div:after{
  display:none!important;
}
.kmi-safety-middle>div,
.kmi-safety-card,
.kmi-worker-card{
  position:relative!important;
  z-index:1!important;
  background:#fff!important;
}
/* Center every safety job title without moving edit controls. */
.kmi-safety-card>header{
  position:relative!important;
  justify-content:center!important;
  text-align:center!important;
}
.kmi-safety-card>header h3{
  width:100%!important;
  margin:0!important;
  padding:0 82px!important;
  text-align:center!important;
}
.kmi-safety-card>header .org-edit-actions{
  position:absolute!important;
  right:8px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
}
/* Worker uses exactly the same card/header/person-cell language as the other safety roles. */
.kmi-worker-card{
  width:360px!important;
  margin:34px auto 0!important;
  padding:0!important;
  text-align:initial!important;
  border:1px solid #b9c5d4!important;
  border-radius:10px!important;
  overflow:hidden!important;
  box-shadow:none!important;
}
.kmi-worker-card:before{
  height:34px!important;
  border-left:2px solid #a1afc1!important;
  z-index:0!important;
}
.kmi-worker-people{
  grid-template-columns:1fr!important;
  padding:8px!important;
}
.kmi-worker-person{
  width:100%!important;
  cursor:default!important;
}
.kmi-worker-edit{
  position:static!important;
  display:inline-flex!important;
}
@media(max-width:760px){
  .kmi-safety-middle:after{display:none!important}
  .kmi-worker-card{width:min(100%,360px)!important;margin-top:14px!important}
  .kmi-safety-card>header h3{padding:0 70px!important}
}
@media print{
  .print-profile-directory .kmi-safety-middle:after{
    display:block!important;
    left:50%!important;
    top:0!important;
    bottom:-7mm!important;
    border-left:1px solid #8191a8!important;
    transform:none!important;
  }
  .print-profile-directory .kmi-safety-middle>div:after{display:none!important}
  .print-profile-directory .kmi-worker-card{
    width:64mm!important;
    margin:14mm auto 0!important;
    padding:0!important;
  }
  .print-profile-directory .kmi-worker-card:before{
    height:7mm!important;
    border-left:1px solid #8191a8!important;
  }
  .print-profile-directory .kmi-worker-people{padding:1mm!important}
  .print-profile-directory .kmi-safety-card>header h3{padding:0 16mm!important;text-align:center!important}
}

/* PATCH 044 - safety organization connector correction only.
   Scope: center spine, branch connector, centered titles, worker card consistency. */
.kmi-safety-top{
  position:relative!important;
  z-index:3!important;
}
/* Top card -> branch intersection */
.kmi-safety-top::after{
  content:''!important;
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:100%!important;
  width:0!important;
  height:32px!important;
  border:0!important;
  border-left:2px solid #9cafc8!important;
  transform:translateX(-1px)!important;
  z-index:1!important;
}
.kmi-safety-middle{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:40px!important;
  margin-top:32px!important;
  position:relative!important;
  align-items:stretch!important;
  overflow:visible!important;
}
/* Horizontal branch line connecting the two middle cards. */
.kmi-safety-middle::before{
  content:''!important;
  display:block!important;
  position:absolute!important;
  left:25%!important;
  right:25%!important;
  top:0!important;
  width:auto!important;
  height:0!important;
  border:0!important;
  border-top:2px solid #9cafc8!important;
  background:none!important;
  z-index:2!important;
}
/* One continuous center spine from the branch intersection to the worker card. */
.kmi-safety-middle::after{
  content:''!important;
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:0!important;
  bottom:-68px!important;
  width:0!important;
  height:auto!important;
  border:0!important;
  border-left:2px solid #9cafc8!important;
  background:none!important;
  transform:translateX(-1px)!important;
  z-index:0!important;
}
.kmi-safety-middle>div{
  position:relative!important;
  display:flex!important;
  padding-top:26px!important;
  z-index:2!important;
  background:transparent!important;
}
/* Branch drops from horizontal line to each middle card. */
.kmi-safety-middle>div::before{
  content:''!important;
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:0!important;
  width:0!important;
  height:26px!important;
  border:0!important;
  border-left:2px solid #9cafc8!important;
  transform:translateX(-1px)!important;
  z-index:1!important;
}
.kmi-safety-middle>div::after{
  display:none!important;
  content:none!important;
}
.kmi-safety-middle .kmi-safety-card{
  width:100%!important;
  position:relative!important;
  z-index:3!important;
  background:#fff!important;
}
/* The center spine already reaches the worker card; suppress duplicate line. */
.kmi-worker-card::before{
  display:none!important;
  content:none!important;
}
.kmi-worker-card{
  width:360px!important;
  margin:34px auto 0!important;
  padding:0!important;
  position:relative!important;
  z-index:3!important;
  background:#fff!important;
  border:1px solid #b9c5d4!important;
  border-radius:10px!important;
  overflow:hidden!important;
  text-align:initial!important;
}
/* Center all safety role names while preserving edit controls. */
.kmi-safety-card>header{
  position:relative!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
}
.kmi-worker-person{
  width:100%!important;
  min-height:34px!important;
  cursor:default!important;
}
@media(max-width:760px){
  .kmi-safety-top::after,
  .kmi-safety-middle::before,
  .kmi-safety-middle::after,
  .kmi-safety-middle>div::before{display:none!important}
  .kmi-safety-middle{grid-template-columns:1fr!important;gap:14px!important;margin-top:14px!important}
  .kmi-safety-middle>div{padding-top:0!important}
  .kmi-worker-card{width:min(100%,360px)!important;margin-top:14px!important}
  .kmi-safety-card>header h3{padding:0 70px!important}
}
@media print{
  .print-profile-directory .kmi-safety-top::after{
    display:block!important;height:7mm!important;border-left:1px solid #8191a8!important;transform:none!important
  }
  .print-profile-directory .kmi-safety-middle{
    gap:8mm!important;margin-top:7mm!important
  }
  .print-profile-directory .kmi-safety-middle::before{
    display:block!important;left:25%!important;right:25%!important;top:0!important;border-top:1px solid #8191a8!important
  }
  .print-profile-directory .kmi-safety-middle::after{
    display:block!important;left:50%!important;top:0!important;bottom:-14mm!important;border-left:1px solid #8191a8!important;transform:none!important
  }
  .print-profile-directory .kmi-safety-middle>div{padding-top:5mm!important}
  .print-profile-directory .kmi-safety-middle>div::before{
    display:block!important;height:5mm!important;border-left:1px solid #8191a8!important;transform:none!important
  }
  .print-profile-directory .kmi-worker-card{
    width:64mm!important;margin:14mm auto 0!important
  }
  .print-profile-directory .kmi-worker-card::before{display:none!important}
  .print-profile-directory .kmi-safety-card>header h3{padding:0 16mm!important;text-align:center!important}
}

/* PATCH 045 - safety connector endpoint overlap fix only.
   Extend line endpoints a few pixels into card borders so no visible gaps remain. */
.kmi-safety-top::after{
  height:36px!important;
}
.kmi-safety-middle{
  margin-top:34px!important;
}
.kmi-safety-middle>div{
  padding-top:26px!important;
}
.kmi-safety-middle>div::before{
  height:29px!important;
}
.kmi-safety-middle::after{
  bottom:-38px!important;
}
.kmi-worker-card{
  margin-top:34px!important;
}
@media print{
  .print-profile-directory .kmi-safety-top::after{height:7.5mm!important}
  .print-profile-directory .kmi-safety-middle{margin-top:7mm!important}
  .print-profile-directory .kmi-safety-middle>div::before{height:5.5mm!important}
  .print-profile-directory .kmi-safety-middle::after{bottom:-14.5mm!important}
}

/* PATCH 046 - safety organization uses the same SVG connector method as general organization. */
.kmi-safety-tree>.safety-connector-svg{position:absolute!important;inset:0!important;z-index:0!important;pointer-events:none!important;overflow:visible!important}
.kmi-safety-top,.kmi-safety-middle,.kmi-worker-card{position:relative!important;z-index:1!important}
.kmi-safety-top::after,
.kmi-safety-middle::before,
.kmi-safety-middle::after,
.kmi-safety-middle>div::before,
.kmi-safety-middle>div::after,
.kmi-worker-card::before{display:none!important;content:none!important}

/* PATCH 047 - center safety worker card and match safety role card styling only. */
.kmi-worker-card{
  width:360px!important;
  margin:34px auto 0!important;
  padding:0!important;
  text-align:center!important;
  overflow:hidden!important;
}
.kmi-worker-card>header{
  min-height:56px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  position:relative!important;
  text-align:center!important;
}
.kmi-worker-card>header h3{
  width:100%!important;
  margin:0!important;
  padding:0 72px!important;
  text-align:center!important;
}
.kmi-worker-card>header .org-edit-actions{
  position:absolute!important;
  right:8px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
}
.kmi-worker-people{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:0!important;
  padding:8px!important;
}
.kmi-worker-person{
  width:100%!important;
  min-height:34px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:8px!important;
  text-align:center!important;
  cursor:default!important;
}
.kmi-worker-person b,.kmi-worker-person span{
  display:inline!important;
  margin:0!important;
  text-align:center!important;
}
@media(max-width:760px){
  .kmi-worker-card{width:min(100%,360px)!important}
  .kmi-worker-card>header h3{padding:0 64px!important}
}

/* PATCH 049: department organization connectors use measured SVG coordinates. */
.kmi-dept-tree>.org-connector-svg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible}
.kmi-dept-title,.kmi-dept-levels,.kmi-dept-level h3,.kmi-dept-level>div{position:relative;z-index:1}
.kmi-dept-level:before{display:none!important}
@media(max-width:760px){.kmi-dept-tree>.org-connector-svg{display:none}}


/* KMI PATCH 050 - DEPARTMENT ORG CARD LAYOUT ONLY */
.kmi-dept-tree{padding:28px 28px 40px;position:relative}
.kmi-dept-tree .kmi-dept-title{margin-bottom:34px}
.kmi-dept-tree .kmi-dept-levels{max-width:900px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:24px}
.kmi-dept-tree .kmi-dept-level{width:min(100%,900px);margin:0;padding:0;border:1px solid #b9c5d4;border-radius:10px;overflow:hidden;background:#fff;position:relative}
.kmi-dept-tree .kmi-dept-level h3{width:100%;height:46px;margin:0;border:0;border-bottom:1px solid #c8d1dc;border-radius:0;background:#eef3f8;display:grid;place-items:center;text-align:center;font-size:15px}
.kmi-dept-tree .kmi-dept-level>div{max-width:none;margin:0;padding:10px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.kmi-dept-tree .kmi-dept-level:before{display:none!important}
.kmi-dept-tree .kmi-dept-title,.kmi-dept-tree .kmi-dept-levels,.kmi-dept-tree .kmi-dept-level{position:relative;z-index:1}
@media(max-width:1100px){.kmi-dept-tree .kmi-dept-level>div{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.kmi-dept-tree .kmi-dept-levels{gap:14px}.kmi-dept-tree .kmi-dept-level>div{grid-template-columns:repeat(2,minmax(0,1fr))}.kmi-dept-tree>.org-connector-svg{display:none}}

/* PATCH 051: optional print document number */
.print-document-number{display:grid;gap:7px;margin:14px 0;font-weight:800;color:#24364d;width:min(100%,430px)}.print-document-number input{display:block;width:100%;min-width:340px;height:42px;padding:0 13px;border:1px solid #b9c5d4;border-radius:7px;font:inherit;background:#fff;box-sizing:border-box}.print-choice-buttons{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}@media(max-width:560px){.print-document-number,.print-document-number input{min-width:0;width:100%}}


/* PATCH 052: approval table borders, full document-number hint, single-person centering */
.org-general .org-dept-rank-row.is-single-person .org-dept-rank-people{grid-template-columns:minmax(0,1fr)!important;justify-items:center!important}
.org-general .org-dept-rank-row.is-single-person .org-person{width:58%!important;min-width:170px!important;max-width:260px!important}
@media(max-width:760px){.org-general .org-dept-rank-row.is-single-person .org-person{width:100%!important;min-width:0!important}}

/* PATCH 054 - center compact employee groups (1 to 3 people) only.
   Four or more people keep the existing responsive grid. */
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> .kmi-org-person:only-child),
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> .org-person:only-child){
  grid-template-columns:minmax(180px,260px)!important;
  justify-content:center!important;
}
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(2):last-child){
  grid-template-columns:repeat(2,minmax(180px,240px))!important;
  justify-content:center!important;
}
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(3):last-child){
  grid-template-columns:repeat(3,minmax(160px,220px))!important;
  justify-content:center!important;
}
@media(max-width:760px){
  :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(2):last-child),
  :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(3):last-child){
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media print{
  .org-print-canvas :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :only-child){
    grid-template-columns:minmax(28mm,46mm)!important;
    justify-content:center!important;
  }
  .org-print-canvas :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(2):last-child){
    grid-template-columns:repeat(2,minmax(26mm,42mm))!important;
    justify-content:center!important;
  }
  .org-print-canvas :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(3):last-child){
    grid-template-columns:repeat(3,minmax(24mm,38mm))!important;
    justify-content:center!important;
  }
}

/* PATCH 056 - auto-fit centered compact employee groups without overflow. */
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people){
  box-sizing:border-box;
  min-width:0;
}
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :only-child){
  width:min(100%,260px)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  grid-template-columns:minmax(0,1fr)!important;
}
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(2):last-child){
  width:min(100%,488px)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
}
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(3):last-child){
  width:min(100%,680px)!important;
  margin-left:auto!important;
  margin-right:auto!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
:is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people)>*{
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
@media(max-width:760px){
  :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(3):last-child){
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    width:100%!important;
  }
}
@media print{
  .org-print-canvas :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :only-child){
    width:min(100%,46mm)!important;
    grid-template-columns:minmax(0,1fr)!important;
  }
  .org-print-canvas :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(2):last-child){
    width:min(100%,86mm)!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .org-print-canvas :is(.kmi-org-people-only,.kmi-safety-people,.kmi-dept-level>div,.kmi-org-rank-people,.org-dept-rank-people):has(> :nth-child(3):last-child){
    width:100%!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
}


/* PATCH 057 - show employee photo, name and position centered inside existing organization cards only. */
.kmi-org-person{
  justify-content:center!important;
  text-align:center!important;
  gap:6px!important;
}
.kmi-org-avatar{
  width:22px!important;
  height:22px!important;
  flex:0 0 22px!important;
  border-radius:50%!important;
  overflow:hidden!important;
  display:grid!important;
  place-items:center!important;
  background:#edf2fa!important;
  color:#315a9c!important;
  font-size:10px!important;
  font-weight:800!important;
  line-height:1!important;
}
.kmi-org-avatar.has-photo{background:#fff!important}
.kmi-org-avatar img{
  width:100%!important;
  height:100%!important;
  display:block!important;
  object-fit:cover!important;
}
.kmi-org-person>.kmi-org-position{
  font-size:10px!important;
  color:#748196!important;
  white-space:nowrap!important;
}
.org-shell .kmi-org-person .kmi-org-avatar{display:grid!important}
@media print{
  .org-print-canvas .kmi-org-avatar,
  .canvas .kmi-org-avatar{
    width:4mm!important;
    height:4mm!important;
    flex-basis:4mm!important;
    font-size:4.5px!important;
  }
}


/* KMI PATCH 058 - GENERAL ORG ALL DEPARTMENTS ON ONE LEVEL */
.kmi-general-grid.kmi-general-row{
  grid-template-columns:repeat(var(--general-count,5),minmax(0,1fr));
  gap:14px;
  align-items:start;
}
.kmi-general-grid.kmi-general-row>.kmi-org-dept-card,
.kmi-general-grid.kmi-general-row>.kmi-org-dept-card.is-compact{
  width:100%;
  align-self:start;
  justify-self:stretch;
}
@media(max-width:1100px){
  .kmi-general-grid.kmi-general-row{grid-template-columns:repeat(var(--general-count,5),minmax(210px,1fr));overflow-x:auto;padding-bottom:8px}
}
@media(max-width:760px){
  .kmi-general-grid.kmi-general-row{grid-template-columns:1fr;overflow:visible}
}


/* KMI PATCH 059 - support departments vertically stacked; technology department kept alongside. */
.kmi-general-stacked-layout{
  display:grid;
  grid-template-columns:minmax(340px,.9fr) minmax(440px,1.35fr);
  gap:24px;
  align-items:start;
  max-width:1360px;
  margin:0 auto;
  position:relative;
  z-index:1;
}
.kmi-general-stack{display:flex;flex-direction:column;gap:16px;min-width:0}
.kmi-general-tech{min-width:0}
.kmi-general-stacked-tree .kmi-org-dept-card,
.kmi-general-stacked-tree .kmi-org-dept-card.is-compact{width:100%!important;max-width:none!important;justify-self:stretch!important}
.kmi-general-extra-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:1360px;margin:18px auto 0;position:relative;z-index:1}
.kmi-general-stacked-tree>.org-connector-svg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible}
.kmi-general-stacked-tree .kmi-ceo-card,.kmi-general-stacked-tree .kmi-general-stacked-layout,.kmi-general-stacked-tree .kmi-general-extra-grid{position:relative;z-index:1}
@media(max-width:1100px){.kmi-general-stacked-layout{grid-template-columns:minmax(300px,.9fr) minmax(380px,1.2fr);gap:16px}}
@media(max-width:900px){.kmi-general-stacked-layout{grid-template-columns:1fr}.kmi-general-stack{gap:10px}.kmi-general-extra-grid{grid-template-columns:1fr}}

/* PATCH 061 - reduce technology department width only.
   Keep all independent department branches and existing card contents unchanged. */
.kmi-general-stacked-layout{
  grid-template-columns:minmax(420px,540px) minmax(520px,620px)!important;
  gap:18px!important;
  max-width:1180px!important;
  justify-content:center!important;
}
.kmi-general-stack{
  width:100%!important;
  max-width:540px!important;
}
.kmi-general-tech{
  width:100%!important;
  max-width:620px!important;
  justify-self:start!important;
}
.kmi-general-tech>.kmi-org-dept-card{
  width:100%!important;
  max-width:620px!important;
}
@media(max-width:1180px){
  .kmi-general-stacked-layout{
    grid-template-columns:minmax(340px,.95fr) minmax(440px,1.05fr)!important;
    max-width:100%!important;
  }
  .kmi-general-stack,.kmi-general-tech,.kmi-general-tech>.kmi-org-dept-card{
    max-width:none!important;
  }
}
@media(max-width:900px){
  .kmi-general-stacked-layout{grid-template-columns:1fr!important}
}

/* PATCH 062 - widen only the space between the left support-department stack and the technology department.
   No card, connector, content, or other organization-chart layout changes. */
.kmi-general-stacked-layout{
  gap:52px!important;
  max-width:1220px!important;
}
@media(max-width:1180px){
  .kmi-general-stacked-layout{
    gap:36px!important;
    max-width:100%!important;
  }
}
@media(max-width:900px){
  .kmi-general-stacked-layout{gap:16px!important}
}

/* PATCH 063 - slightly widen the general organization spacing on screen and match it in print.
   Only the gap between the left support-department stack and the technology department is changed. */
.kmi-general-stacked-layout{
  gap:68px!important;
  max-width:1240px!important;
}
@media(max-width:1180px) and (min-width:901px){
  .kmi-general-stacked-layout{
    gap:46px!important;
    max-width:100%!important;
  }
}
@media(max-width:900px){
  .kmi-general-stacked-layout{gap:16px!important}
}
@media print{
  .print-profile-directory .kmi-general-stacked-layout,
  .org-print-canvas .kmi-general-stacked-layout{
    grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)!important;
    gap:18mm!important;
    max-width:100%!important;
    width:100%!important;
  }
}


/* PATCH 064 - widen the actual general-organization gap on screen.
   The separate print-window CSS is updated in app.js to use the same spacious layout. */
.kmi-general-stacked-layout{
  gap:88px!important;
  max-width:1260px!important;
}
@media(max-width:1180px) and (min-width:901px){
  .kmi-general-stacked-layout{gap:56px!important;max-width:100%!important}
}
@media(max-width:900px){
  .kmi-general-stacked-layout{gap:16px!important}
}
/* PATCH 066 - Enterprise ISO document management */
.document-table td{vertical-align:middle}.doc-expiry{display:block;margin-top:4px;font-size:10px;font-weight:800;color:#b26b00}.doc-expiry.over{color:#c33737}.doc-file-count{border:0;background:#eaf2f8;color:#1d5c8f;border-radius:999px;padding:5px 9px;font-weight:800;cursor:pointer}.document-upload{display:flex;align-items:center;gap:18px;border:1px dashed #9eacbb;background:#f7f9fb;border-radius:12px;padding:18px}.document-upload input{flex:1}.document-upload div{display:flex;flex-direction:column;gap:4px;color:#263548}.document-upload small{color:#778395}.doc-revision-note{display:block;margin-top:14px}.doc-revision-note textarea{width:100%;min-height:70px}.doc-current-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.doc-current-files b{width:100%}.doc-current-files span{padding:7px 10px;border:1px solid #d9e0e7;border-radius:8px;background:#fff;font-size:12px}.doc-revision-list{display:grid;gap:10px}.doc-revision-card{display:flex;justify-content:space-between;gap:18px;border:1px solid #dce3e9;border-radius:12px;padding:14px;background:#fff}.doc-revision-card>div:first-child{min-width:180px}.doc-revision-card b{font-size:15px}.doc-revision-card span,.doc-revision-card p{display:block;margin:4px 0 0;color:#6d7887;font-size:12px}.doc-revision-card>div:last-child{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.doc-revision-card button{border:1px solid #b9c8d5;background:#eef5fa;color:#174d75;border-radius:8px;padding:7px 10px;cursor:pointer}.doc-revision-card button small{display:block}.document-detail-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid #d9e0e7;padding-bottom:12px}.document-detail-head span{font-weight:800;color:#1d5c8f}.document-detail-head h2{margin:5px 0 0}.document-detail dl{display:grid;grid-template-columns:130px 1fr 130px 1fr;border-top:1px solid #d9e0e7;border-left:1px solid #d9e0e7;margin:15px 0}.document-detail dt,.document-detail dd{margin:0;padding:9px;border-right:1px solid #d9e0e7;border-bottom:1px solid #d9e0e7}.document-detail dt{background:#f2f5f7;font-weight:800}.print-center-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.print-option{text-align:left;padding:24px;cursor:pointer;border:1px solid #d8e0e7}.print-option:hover{border-color:#1d5c8f;transform:translateY(-1px)}.print-option b{display:block;font-size:18px;margin-bottom:8px}.print-option span{color:#6b7787}.document-form .form-section{margin-bottom:18px}@media(max-width:900px){.print-center-grid{grid-template-columns:1fr}.doc-revision-card{flex-direction:column}.document-detail dl{grid-template-columns:100px 1fr}.document-upload{align-items:flex-start;flex-direction:column}}

/* KMI PATCH 071 - EDUCATION MANAGEMENT */
.training-metrics{grid-template-columns:repeat(6,minmax(0,1fr))}.training-chart{height:245px;display:flex;align-items:flex-end;gap:10px;padding:18px 8px 0}.training-bar-col{flex:1;min-width:0;text-align:center}.training-bars{height:180px;display:flex;align-items:flex-end;justify-content:center;gap:4px}.training-bars i,.training-bars b{display:block;width:12px;border-radius:5px 5px 0 0;background:#b7c8dd}.training-bars b{background:#1e63d6}.training-bar-col span{display:block;font-size:11px;margin-top:7px}.training-bar-col small{font-size:10px;color:#6f7b8c}.training-hbars{display:grid;gap:14px;padding:12px 2px}.training-hbars>div{display:grid;grid-template-columns:90px 1fr 35px;gap:10px;align-items:center}.training-hbars i{height:12px;background:#edf1f6;border-radius:7px;overflow:hidden}.training-hbars i b{display:block;height:100%;background:#1e63d6;border-radius:7px}.training-hbars strong{text-align:right}.training-alert{display:inline-flex;align-items:center;justify-content:center;min-width:66px;padding:4px 8px;border-radius:999px;background:#edf2f7;color:#4c5b70;font-size:11px;font-weight:700}.training-alert.soon{background:#fff4cf;color:#926600}.training-alert.urgent{background:#ffe2c8;color:#a94a00}.training-alert.over{background:#ffe0e0;color:#b42318}.training-alert-guide{display:flex;gap:8px;margin-bottom:12px}.training-form{padding:22px}.training-form-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.training-form-head h2{margin:0 0 4px}.training-form-head p{margin:0;color:#6b7789}.segmented{display:flex;border:1px solid #cfd8e5;border-radius:9px;overflow:hidden}.segmented label{padding:9px 13px;border-right:1px solid #cfd8e5;cursor:pointer}.segmented label:last-child{border-right:0}.segmented input{margin-right:5px}.training-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.training-form-grid label,.training-participants label{font-size:12px;font-weight:700;color:#43516a}.training-form-grid input,.training-form-grid select,.training-form-grid textarea{width:100%;margin-top:6px}.training-form-grid .span2{grid-column:span 2}.training-form-grid .check-label{display:flex;align-items:center;gap:7px;padding-top:25px}.training-form-grid .check-label input{width:auto;margin:0}.training-participants{margin-top:24px;border-top:1px solid #e2e7ee;padding-top:18px}.training-employee-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;max-height:300px;overflow:auto;padding:4px}.training-employee-grid label{display:flex;gap:8px;align-items:center;border:1px solid #dbe2ec;border-radius:8px;padding:9px;background:#fff}.training-employee-grid input{width:auto}.training-employee-grid span{display:flex;flex-direction:column}.training-employee-grid small{color:#7b8797;font-weight:400;margin-top:2px}.training-attachments{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:22px}.training-attachments>div{border:1px solid #dbe2ec;border-radius:10px;padding:14px}.training-attachments h3{margin:0 0 4px}.training-attachments p{margin:0 0 12px;color:#6f7b8c;font-size:11px}.training-file{display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:center;margin-top:8px;padding:8px;border-radius:7px;background:#f5f7fa}.training-file span{min-width:0}.training-file b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.training-file small{color:#7b8797}.training-detail dl{display:grid;grid-template-columns:110px 1fr 110px 1fr;border-top:1px solid #dce3ed;border-left:1px solid #dce3ed}.training-detail dt,.training-detail dd{margin:0;padding:9px;border-right:1px solid #dce3ed;border-bottom:1px solid #dce3ed}.training-detail dt{background:#f4f6f9;font-weight:700}.training-detail h3{margin:18px 0 8px}@media(max-width:1100px){.training-metrics{grid-template-columns:repeat(3,1fr)}.training-form-grid{grid-template-columns:repeat(2,1fr)}.training-employee-grid{grid-template-columns:repeat(3,1fr)}.training-attachments{grid-template-columns:1fr}}@media(max-width:720px){.training-metrics{grid-template-columns:repeat(2,1fr)}.training-form-grid{grid-template-columns:1fr}.training-form-grid .span2{grid-column:auto}.training-employee-grid{grid-template-columns:1fr 1fr}.training-form-head{display:block}.segmented{margin-top:12px}}

/* KMI PATCH 072 */
.panel-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.check-col{width:42px;text-align:center!important}.check-col input{width:16px;height:16px}.training-alert-settings{margin-bottom:16px}.training-setting-grid{display:grid;grid-template-columns:2fr repeat(4,minmax(150px,1fr)) auto;gap:12px;align-items:end}.training-setting-grid label{font-size:12px;font-weight:700;color:#43516a}.training-setting-grid label small{display:block;margin-top:5px;color:#7b8797;font-weight:400}.training-setting-grid input[type=text],.training-setting-grid input:not([type]){width:100%;margin-top:6px}.training-setting-grid .toggle-row{min-height:42px;display:flex;align-items:center;gap:7px;border:1px solid #dbe2ec;border-radius:8px;padding:9px;background:#fff}.training-popup-summary{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 14px;margin-bottom:12px;border-radius:9px;background:#f2f6fc}.training-popup-summary span{color:#64748b;font-size:12px}@media(max-width:1200px){.training-setting-grid{grid-template-columns:1fr 1fr 1fr}.training-setting-grid>label:first-child{grid-column:span 2}}@media(max-width:720px){.training-setting-grid{grid-template-columns:1fr}.training-setting-grid>label:first-child{grid-column:auto}.training-popup-summary{align-items:flex-start;flex-direction:column}}
/* KMI PATCH 074 - JOB CERTIFICATION */
.cert-work-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);gap:18px}.cert-raw{width:100%;min-height:420px;resize:vertical;border:1px solid var(--line,#d8e0ea);border-radius:12px;padding:16px;font:13px/1.65 'Malgun Gothic',sans-serif;background:#fbfcfe}.cert-preview{margin-top:18px}.cert-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0 18px}.cert-meta label,.modal-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:#475467}.cert-meta input,.modal-form input,.modal-form select{height:40px;border:1px solid #d8e0ea;border-radius:9px;padding:0 11px;background:#fff}.cert-assignment-list{display:flex;flex-direction:column;gap:6px;min-width:280px}.cert-assignment-list>div{display:grid;grid-template-columns:minmax(110px,1fr) 100px 34px;gap:5px}.cert-assignment-list input,.cert-assignment-list select{height:32px;border:1px solid #d8e0ea;border-radius:7px;padding:0 8px}.cert-flow{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:28px 8px}.cert-flow span{padding:12px 15px;border:1px solid #cdd9e8;border-radius:10px;background:#f5f8fc;font-weight:800;color:#244467}.cert-flow i{font-style:normal;color:#8a9bb0}.btn.small{padding:5px 8px;min-height:28px;font-size:11px}.modal-form{display:grid;gap:13px}.modal-form .check-label{flex-direction:row;align-items:center;font-weight:600}.modal-form .check-label input{height:auto;width:auto}@media(max-width:1100px){.cert-work-grid{grid-template-columns:1fr}.cert-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.cert-meta{grid-template-columns:1fr}.cert-flow{align-items:stretch;flex-direction:column}.cert-flow i{transform:rotate(90deg);text-align:center}}

/* KMI PATCH 075 - JOB CERTIFICATION PHASE 2 */
.cert075-scope .data-table th,.cert075-scope .data-table td{text-align:center!important;vertical-align:middle!important}.cert075-scope .data-table td b{display:inline-block}.cert075-scope .data-table textarea{text-align:left}.cert075-signature{display:block;max-width:90px;max-height:38px;object-fit:contain;margin:auto}.cert075-signature.large{max-width:220px;max-height:90px}.cert075-approval-grid{align-items:start}.cert075-stage-list{display:flex;flex-direction:column;gap:9px}.cert075-stage-list>div{display:grid;grid-template-columns:34px minmax(100px,1fr) minmax(120px,1fr) auto auto;align-items:center;gap:8px;padding:10px;border:1px solid #dbe3ed;border-radius:10px}.cert075-step{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#e9f1fa;color:#1d5c8f;font-weight:800}.cert075-stage-list small{color:#687386}.cert075-alert-list>div:not(.modal-actions){display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #e6ebf1}.cert075-summary{display:flex;flex-direction:column;gap:4px;padding:12px;border-radius:10px;background:#f4f7fb}.cert075-matrix-wrap{max-height:65vh}.cert075-matrix th:first-child,.cert075-matrix td:first-child{position:sticky;left:0;z-index:2;background:#fff}.cert075-matrix thead th{position:sticky;top:0;z-index:3}.cert075-matrix thead th:first-child{z-index:4}.cert075-matrix-cell{display:inline-flex;align-items:center;justify-content:center;min-width:58px;padding:5px 7px;border-radius:999px;background:#f0f3f7;font-size:11px;font-weight:800}.cert075-matrix-cell.ready{background:#fff4d8;color:#8a5a00}.cert075-matrix-cell.approved{background:#dff5e9;color:#14734b}.cert075-matrix-cell.danger{background:#fee7e7;color:#b42318}.badge.danger{background:#fee7e7;color:#b42318}@media print{.sidebar,.topbar,.tabs,.panel-head button{display:none!important}.content{margin:0!important;padding:0!important}.cert075-matrix-wrap{max-height:none;overflow:visible}.cert075-matrix{font-size:9px}}

/* KMI PATCH 076 - NEW EMPLOYEE LV1 & THEORY EXAM */
.cert076-scope .data-table th,.cert076-scope .data-table td{text-align:center!important;vertical-align:middle!important}.cert076-lv1-table{min-width:1450px}.cert076-lv1-table td:first-child small{display:block;margin-top:4px;color:#7b8797}.cert076-check{display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:5px 7px;border-radius:999px;background:#f1f3f6;color:#7b8797;font-size:11px;font-weight:800}.cert076-check.done{background:#dff5e9;color:#14734b}.cert076-course-row{display:flex!important;flex-direction:row!important;align-items:center;justify-content:space-between;border:1px solid #dbe3ed;border-radius:10px;padding:11px 13px}.cert076-course-row span{display:flex;flex-direction:column;gap:3px}.cert076-course-row small{color:#7b8797;font-weight:400}.cert076-course-row input{width:18px!important;height:18px!important}.cert076-exam-grid{grid-template-columns:1.15fr .85fr;align-items:start}.cert076-question-text{text-align:left!important;min-width:250px}.cert076-test{display:grid;gap:15px}.cert076-test-head{display:flex;justify-content:space-between;gap:15px;padding:13px;border-radius:10px;background:#f3f7fc}.cert076-test fieldset{border:1px solid #d8e1ec;border-radius:10px;padding:14px}.cert076-test legend{font-weight:800;padding:0 6px}.cert076-test legend small{color:#667085}.cert076-test fieldset label{display:block;padding:7px;border-radius:7px;cursor:pointer}.cert076-test fieldset label:hover{background:#f5f8fc}.cert076-test fieldset>input{width:100%;height:40px;border:1px solid #d8e0ea;border-radius:8px;padding:0 10px}.cert076-result>h2{text-align:center}.cert076-result>p{text-align:center}.cert076-result>div:not(.modal-actions){display:flex;flex-direction:column;gap:5px;padding:11px 0;border-bottom:1px solid #e5eaf0}.cert076-result span{color:#667085}.cert076-flow span{min-width:120px;text-align:center}@media(max-width:1200px){.cert076-exam-grid{grid-template-columns:1fr}}@media print{.cert076-scope .panel-actions,.cert076-scope .row-actions{display:none!important}.cert076-lv1-table{min-width:0;font-size:8px}}

/* PATCH 077 */
.cert077-status{border:0;background:transparent;font:inherit;font-weight:700;color:#52657d;cursor:pointer;padding:5px 7px;border-radius:999px}.cert077-status.done{background:#e7f6ef;color:#13714f}.cert077-status.danger{background:#fff0f0;color:#b42318}.cert077-overview{display:grid;gap:10px}.cert077-course-card{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:12px 14px;border:1px solid #dbe3ed;border-radius:10px;background:#fff;text-align:left;cursor:pointer}.cert077-course-card span:first-child{display:grid;gap:3px}.cert077-course-card small{color:#68788d}.cert077-files{display:flex;flex-wrap:wrap;gap:7px}.cert077-files span{display:inline-flex;gap:6px;align-items:center;padding:5px 8px;border-radius:999px;background:#f2f5f9;font-size:12px}.cert077-files button{border:0;background:transparent;cursor:pointer}.cert077-eval-summary{display:flex;justify-content:space-between;gap:12px;padding:11px 13px;background:#f5f8fc;border-radius:9px}.cert077-target-tools{display:flex;gap:7px}.cert077-target-list{max-height:360px;overflow:auto;border:1px solid #dde5ee;border-radius:10px}.cert077-target-list label{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #edf1f5}.cert077-target-list label:last-child{border-bottom:0}.cert077-target-list label span{display:grid}.cert077-target-list small{color:#748399}.cert076-lv1-table td,.cert076-lv1-table th{text-align:center;vertical-align:middle}

/* PATCH 078 */
.cert078-external{display:none;gap:10px;padding:12px;border:1px solid var(--line,#dce3ea);border-radius:10px;background:#f8fafc}
.cert078-employee-list{max-height:430px;overflow:auto}

/* PATCH 079 - THEORY EXAM ASSIGNMENT & COMPACT PICKER */
.cert079-question-wrap{max-height:360px}.cert079-assign-summary{display:grid;gap:4px;padding:10px 12px;border-radius:8px;background:#f5f8fc}.cert079-assign-summary span,.cert079-inline-note{font-size:12px;color:#667085}.cert079-inline-note{padding:9px 11px;border-radius:8px;background:#f6f8fb}.cert079-search{width:100%;height:38px;border:1px solid #d8e0ea;border-radius:8px;padding:0 11px}.cert079-picker-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:#667085}.cert079-employee-list{max-height:330px;overflow:auto;border:1px solid #dde5ee;border-radius:8px;background:#fff}.cert079-employee-list label{display:flex;align-items:center;gap:10px;min-height:44px;padding:7px 10px;border-bottom:1px solid #edf1f5;cursor:pointer}.cert079-employee-list label:last-child{border-bottom:0}.cert079-employee-list label:hover{background:#f7f9fc}.cert079-employee-list label>input{width:16px!important;height:16px!important;flex:0 0 auto}.cert079-employee-list label>span{display:grid;gap:1px;min-width:0;flex:1}.cert079-employee-list label small{font-size:11px;color:#7b8797}.cert079-employee-list label em{font-size:11px;font-style:normal;color:#1b6fcb}.cert079-employee-list label.excluded{background:#fafafa}.cert079-employee-list label.excluded em{color:#9b1c1c}.modal-box.cert079-compact-modal{width:min(480px,calc(100vw - 32px));max-width:480px}.modal-box.cert079-compact-modal .modal-body{padding:16px}.cert079-employee-form,.cert079-assign-form{gap:10px}@media print{#certBody .card.panel:not(:last-child){display:none!important}}

/* PATCH 080 - UI CONSISTENCY & MATERIAL QUESTION GENERATOR */
.cert075-stage-list>.empty{display:flex!important;align-items:center;justify-content:center;width:100%;min-width:0;min-height:96px;white-space:normal;word-break:keep-all;text-align:center;color:#7b8797}.cert075-stage-list{min-width:0}.cert075-approval-grid>.panel{min-width:0}.cert080-employee-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:360px;overflow:auto;padding:2px}.cert080-employee-picker label{display:flex;align-items:center;justify-content:center;gap:8px;min-height:62px;padding:9px;border:1px solid #e0e6ee;border-radius:8px;background:#fff;cursor:pointer;text-align:center}.cert080-employee-picker label:hover{background:#f6f9fd}.cert080-employee-picker label>input{width:16px!important;height:16px!important;flex:0 0 auto}.cert080-employee-picker label>span{display:flex;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center}.cert080-employee-picker label b,.cert080-employee-picker label small{display:block;width:100%;text-align:center;word-break:keep-all}.cert080-employee-picker label small{font-size:11px;color:#7b8797}.cert080-picker-modal{display:grid;gap:10px}.cert080-assign-form{gap:12px}.cert080-selected-names{min-height:42px;padding:10px;border:1px solid #e0e6ee;border-radius:8px;background:#f8fafc;color:#667085;font-size:12px;line-height:1.5}.cert080-bank-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:12px 0}.cert080-bank-card{display:grid;gap:4px;padding:12px;border:1px solid #dce4ed;border-radius:9px;background:#fff;text-align:left;cursor:pointer}.cert080-bank-card:hover{border-color:#8db3e8;background:#f7faff}.cert080-bank-card span{font-size:11px;color:#6b7788}.cert080-question-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0}.cert080-question-tools select{height:36px;border:1px solid #d8e0ea;border-radius:8px;padding:0 10px}.cert080-question-tools span{font-size:12px;color:#667085}.cert080-source-line{display:block;margin-top:5px;color:#7b8797;font-size:11px}.cert080-source-box{display:grid;gap:5px;padding:11px;border:1px solid #dfe6ef;border-radius:9px;background:#f8fafc}.cert080-source-box span,.cert080-source-box small{color:#667085}.cert080-generator-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.cert080-file-status{padding:9px 11px;border-radius:8px;background:#f6f8fb;color:#667085;font-size:12px}.cert080-material-form textarea{min-height:180px;resize:vertical}.modal-form textarea{width:100%;border:1px solid #d8e0ea;border-radius:9px;padding:10px;background:#fff;line-height:1.5}.panel-head>div{min-width:0;flex:1}.panel-head h2,.panel-head span{word-break:keep-all}.panel-head span{display:block;max-width:100%;line-height:1.45}@media(max-width:900px){.cert080-bank-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.cert080-employee-picker{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.cert080-bank-cards,.cert080-employee-picker,.cert080-generator-grid{grid-template-columns:1fr}.cert080-question-tools{align-items:stretch;flex-direction:column}}

/* KMI PATCH 081 */
.cert081-paste-form textarea[name="raw"]{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;line-height:1.55;min-height:360px}
.cert081-preview-list{display:grid;gap:12px;max-height:62vh;overflow:auto;padding-right:4px}
.cert081-preview-item{border:1px solid var(--line,#dbe3ea);border-radius:10px;padding:12px;background:#fff}
.cert081-preview-item.needs-review{border-color:#e4a11b;background:#fffaf0}
.cert081-preview-head,.cert081-preview-grid{display:flex;align-items:center;gap:10px}.cert081-preview-head{justify-content:space-between;margin-bottom:10px}.cert081-preview-grid>label{flex:1}
.cert081-preview-item textarea{min-height:64px}
.cert081-question-list{border:1px solid var(--line,#dbe3ea);border-radius:10px;max-height:360px;overflow:auto;padding:6px;background:#fff}
.cert081-question-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-bottom:1px solid #eef2f5;cursor:pointer}.cert081-question-row:last-child{border-bottom:0}.cert081-question-row>span{display:flex;flex-direction:column;gap:3px;min-width:0}.cert081-question-row b{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cert081-question-row small{font-size:12px;color:#6b7280}

/* PATCH 081: 직무인증 시험 만들기 팝업을 기존 공통 팝업 레이아웃에 맞춤 */
.cert081-template-form{
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:start;
}
.cert081-template-form>.cert079-inline-note,
.cert081-template-form>.cert079-picker-tools,
.cert081-template-form>.cert081-question-list,
.cert081-template-form>.cert080-generator-grid,
.cert081-template-form>.check-label,
.cert081-template-form>.modal-actions{
  grid-column:1/-1;
}
.cert081-template-form .cert081-question-list{
  width:100%;
  max-width:100%;
  max-height:330px;
  overflow-y:auto;
  overflow-x:hidden;
  box-sizing:border-box;
}
.cert081-template-form .cert081-question-row{
  width:100%;
  min-width:0;
  box-sizing:border-box;
}
.cert081-template-form .cert081-question-row>input{
  width:16px!important;
  height:16px!important;
  min-width:16px;
  flex:0 0 16px;
  margin:0;
}
.cert081-template-form .cert081-question-row>span{
  min-width:0;
  flex:1;
}
.cert081-template-form .cert081-question-row b{
  display:block;
  width:100%;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  line-height:1.45;
  word-break:keep-all;
}
.cert081-template-form .cert079-picker-tools>div{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.cert081-template-form .modal-actions{
  padding-top:12px;
  border-top:1px solid #e5eaf0;
}
@media(max-width:700px){
  .cert081-template-form{grid-template-columns:1fr}
  .cert081-template-form>*{grid-column:1!important}
  .cert081-template-form .cert079-picker-tools{align-items:flex-start;flex-direction:column}
}

/* KMI PATCH 083 - 문제 일괄 붙여넣기 인식 및 검토 화면 정리 */
.modal-box.cert083-wide-modal{width:min(980px,calc(100vw - 40px));max-height:92vh;overflow:hidden}
.modal-box.cert083-wide-modal .modal-body{padding:0;overflow:hidden}
.cert081-preview{display:flex;flex-direction:column;max-height:calc(92vh - 56px);min-height:520px}
.cert081-preview-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-bottom:1px solid #e5eaf0;background:#f8fafc;color:#475467}
.cert081-preview-list{display:flex;flex-direction:column;gap:12px;max-height:none;overflow-y:auto;overflow-x:hidden;padding:16px 20px;flex:1}
.cert081-preview-item{display:grid;grid-template-columns:1fr;border:1px solid #dbe3ea;border-radius:10px;padding:14px;background:#fff;box-sizing:border-box}
.cert081-preview-head{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;margin-bottom:12px}
.cert081-preview-head .check-label{display:flex;flex-direction:row;align-items:center;gap:7px}
.cert081-preview-head input[type="checkbox"]{width:16px!important;height:16px!important}
.cert083-status{font-size:12px;font-weight:700;color:#14734b}.needs-review .cert083-status{color:#9a6700}
.cert081-preview-grid{display:grid;grid-template-columns:160px 160px 120px;gap:10px;margin-bottom:10px}
.cert081-preview-item label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700;color:#475467;min-width:0}
.cert081-preview-item input,.cert081-preview-item select,.cert081-preview-item textarea{width:100%;box-sizing:border-box;border:1px solid #cfd8e3;border-radius:8px;background:#fff;font:13px/1.45 'Malgun Gothic',sans-serif}
.cert081-preview-item input,.cert081-preview-item select{height:38px;padding:0 10px}
.cert081-preview-item textarea{min-height:40px;padding:9px 10px;resize:none;overflow-y:auto;white-space:pre-wrap;word-break:break-word}
.cert083-full{margin-top:9px}.cert083-options[hidden]{display:none!important}
.cert083-sticky-actions{margin:0;padding:12px 20px;border-top:1px solid #e5eaf0;background:#fff;flex:0 0 auto}
@media(max-width:720px){.modal-box.cert083-wide-modal{width:calc(100vw - 20px)}.cert081-preview-grid{grid-template-columns:1fr}.cert081-preview-summary{align-items:flex-start;flex-direction:column}.cert081-preview-list{padding:12px}.cert083-sticky-actions{padding:10px 12px}}

/* KMI PATCH 084 */
.cert084-check-col{width:42px;text-align:center!important}.cert084-check-col input{width:16px;height:16px}.cert084-assign-list{max-height:360px;overflow-y:auto;border:1px solid var(--line,#d9e0ea);border-radius:10px;padding:8px}.cert084-assign-list label{display:flex;align-items:center;gap:10px;padding:9px 10px;border-bottom:1px solid #edf0f4}.cert084-assign-list label:last-child{border-bottom:0}.cert084-assign-list label span{display:flex;flex-direction:column}.cert084-assign-list label small{color:#7b8798}

/* KMI PATCH 086 */
.print-standard-modal{display:grid;gap:16px}.print-standard-modal p{margin:0;color:var(--muted)}.print-standard-modal label{display:grid;gap:7px;font-weight:800}.print-standard-modal input{height:42px;border:1px solid var(--line);border-radius:8px;padding:0 12px}.cert086-assign-form{grid-template-columns:1fr 1fr}.cert086-assign-form .cert079-assign-summary,.cert086-assign-form #cert086AssignSearch,.cert086-assign-form .cert079-picker-tools,.cert086-assign-form #cert086AssignList,.cert086-assign-form #cert086SelectedNames,.cert086-assign-form .modal-actions{grid-column:1/-1}.cert086-nc-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:14px 0}.cert086-nc-summary>div{display:grid;gap:5px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.cert086-nc-summary span{font-size:12px;color:var(--muted)}.cert086-nc-summary b{font-size:21px}.cert086-nc-toolbar{display:flex;gap:10px;margin:0 0 12px}.cert086-nc-toolbar input{flex:1}.cert086-nc-toolbar input,.cert086-nc-toolbar select{height:40px;border:1px solid var(--line);border-radius:8px;padding:0 11px;background:#fff}.cert086-nc-rank{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.cert086-nc-rank>div{border:1px solid var(--line);border-radius:10px;padding:14px}.cert086-nc-rank h3{margin:0 0 10px}.cert086-nc-rank p{display:flex;justify-content:space-between;margin:0;padding:8px 0;border-bottom:1px solid #edf1f5}.cert086-nc-rank p:last-child{border-bottom:0}.cert086-nc-form{grid-template-columns:repeat(2,minmax(0,1fr));max-height:72vh;overflow:auto;padding-right:4px}.cert086-nc-form .span2{grid-column:1/-1}.cert086-file-list{display:grid;gap:7px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#f8fafc}.cert086-file-list>div{display:flex;justify-content:space-between;align-items:center;gap:10px}.cert086-file-list small{color:var(--muted)}@media(max-width:800px){.cert086-nc-summary{grid-template-columns:repeat(2,1fr)}.cert086-nc-rank,.cert086-nc-form,.cert086-assign-form{grid-template-columns:1fr}.cert086-nc-form .span2,.cert086-assign-form>*{grid-column:auto}}

/* KMI PATCH 087 - compact employee/process hierarchy */
.cert087-toolbar{align-items:center;gap:8px}.cert087-toolbar input{min-width:280px}.cert087-help{margin-right:auto;color:#718096;font-size:12px}.cert087-people{display:grid;gap:12px}.cert087-person,.cert087-process{border:1px solid #dce4ef;border-radius:10px;background:#fff;overflow:hidden}.cert087-person>summary,.cert087-process>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px}.cert087-person>summary::-webkit-details-marker,.cert087-process>summary::-webkit-details-marker{display:none}.cert087-person>summary:before,.cert087-process>summary:before{content:'›';font-size:20px;color:#66758a;transition:.15s;flex:0 0 auto}.cert087-person[open]>summary:before,.cert087-process[open]>summary:before{transform:rotate(90deg)}.cert087-person>summary>span:first-of-type,.cert087-process>summary>span:first-of-type{display:flex;flex-direction:column;gap:3px;margin-right:auto}.cert087-person summary small,.cert087-process summary small{font-size:12px;color:#7a8799;font-weight:400}.cert087-summary-metrics,.cert087-process>summary>span:last-child{display:flex;gap:8px;align-items:center}.cert087-summary-metrics i,.cert087-process>summary>span:last-child i{font-style:normal;font-size:12px;padding:5px 8px;border-radius:999px;background:#f1f5f9;color:#526174}.cert087-summary-metrics i.ready{background:#eaf7f0;color:#157347}.cert087-process-grid{padding:0 12px 12px;display:grid;gap:8px;background:#f8fafc}.cert087-process{border-radius:8px}.cert087-process>summary{padding:11px 14px}.cert087-task-table th,.cert087-task-table td{padding-top:9px;padding-bottom:9px}.cert087-task-table{margin:0}.cert087-process .table-wrap{border-top:1px solid #e6ebf2}@media(max-width:900px){.cert087-toolbar{align-items:stretch}.cert087-toolbar input{min-width:0}.cert087-help{display:none}.cert087-person>summary,.cert087-process>summary{align-items:flex-start}.cert087-summary-metrics,.cert087-process>summary>span:last-child{flex-direction:column;align-items:flex-end}}

/* KMI PATCH 088 */
.cert081-question-row>span{display:grid;justify-items:center;text-align:center;width:100%}
.cert081-question-row>span>b,.cert081-question-row>span>small{width:100%;text-align:center}
.cert087-task-table th,.cert087-task-table td{text-align:center;vertical-align:middle}
.cert087-task-table td:nth-child(1){text-align:left}

/* KMI PATCH 090 - COLLAPSIBLE CERTIFICATION VIEWS */
.cert090-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.cert090-toolbar .spacer{flex:1}
.cert090-list{display:grid;gap:10px}
.cert090-person{border:1px solid #d7e0ec;border-radius:12px;background:#fff;overflow:hidden}
.cert090-person>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;font-weight:700}
.cert090-person>summary::-webkit-details-marker{display:none}
.cert090-person>summary:before{content:'›';font-size:22px;line-height:1;color:#47627f;transition:transform .18s ease}
.cert090-person[open]>summary:before{transform:rotate(90deg)}
.cert090-person>summary .cert090-main{display:flex;flex-direction:column;gap:4px;flex:1}
.cert090-person>summary small{font-weight:500;color:#7a8aa0}
.cert090-person>summary .cert090-metrics{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.cert090-pill{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;background:#f1f5f9;color:#52657b;font-size:12px;font-style:normal;font-weight:700}
.cert090-pill.ok{background:#edf8f2;color:#23845d}
.cert090-detail{border-top:1px solid #e3e9f1;padding:12px 14px 14px}
.cert090-detail .table-wrap{margin:0}
.cert090-detail .data-table{margin:0}
@media(max-width:900px){.cert090-person>summary{align-items:flex-start}.cert090-person>summary .cert090-metrics{justify-content:flex-start}.cert090-person>summary{flex-wrap:wrap}}

/* KMI PATCH 092 - LV1~LV4 LEVEL GUIDE */
.cert092-level-guide{display:flex;align-items:stretch;gap:10px;margin:0 0 14px}.cert092-level-guide>div{flex:1;border:1px solid #dbe4f1;background:#fff;border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.cert092-level-guide>div b{font-size:15px;color:#18304f}.cert092-level-guide>div span{font-size:12px;color:#6b7b90}.cert092-level-guide>i{align-self:center;color:#8392a7;font-style:normal;font-weight:700}.cert092-level-guide-inline{margin:12px 16px}.cert092-rule{border:1px solid #dbe6f7;background:#f5f8fd;border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.cert092-rule b{color:#203653}.cert092-rule span{font-size:12px;color:#687a91;line-height:1.55}.cert092-level-form input[readonly]{background:#f5f7fa;color:#33465f;font-weight:700}@media(max-width:800px){.cert092-level-guide{display:grid;grid-template-columns:1fr}.cert092-level-guide>i{display:none}}

/* KMI PATCH 093 */
.cert093-person-action{display:flex;justify-content:flex-end;margin-top:12px;padding-top:10px;border-top:1px solid #e5eaf1}

/* KMI PATCH 094 */
.cert094-level-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.cert094-process-field{border:1px solid #d7e0ec;border-radius:10px;padding:12px 14px;margin:0;min-width:0}
.cert094-process-field legend{font-size:12px;font-weight:700;color:#40536d;padding:0 6px}
.cert094-check-all{display:flex!important;align-items:center;gap:8px;margin-bottom:10px;font-weight:700}
.cert094-process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.cert094-process-grid label{display:flex!important;align-items:center;gap:7px;padding:9px 10px;border:1px solid #e0e7f0;border-radius:8px;background:#fff;min-width:0}
.cert094-process-grid input{width:16px;height:16px;flex:0 0 auto}
.cert094-guide{display:flex;align-items:center;gap:10px;margin:0 0 14px;padding:11px 13px;border:1px solid #dbe5f2;border-radius:10px;background:#f7faff;color:#58708f;font-size:12px}
.cert094-guide b{color:#24415f;white-space:nowrap}
@media(max-width:900px){.cert094-level-form{grid-template-columns:1fr}.cert094-process-grid{grid-template-columns:1fr 1fr}.cert094-level-form .span2{grid-column:auto}}

/* KMI PATCH 095 - task-specific level UI */
.cert095-task-field{border:1px solid #dbe3ee;border-radius:12px;padding:12px}.cert095-task-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.cert095-task-grid>label{display:flex;align-items:flex-start;gap:9px;padding:10px;border:1px solid #e1e7ef;border-radius:10px;background:#fff}.cert095-task-grid span{display:flex;flex-direction:column;gap:3px}.cert095-task-grid small,.cert095-process summary small,.cert095-equipment{display:block;color:#718096;font-size:12px;font-weight:400}.cert095-process{border:1px solid #dfe6ef;border-radius:12px;margin:10px 0;background:#fff;overflow:hidden}.cert095-process>summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:13px 15px;background:#f7f9fc;cursor:pointer}.cert095-process>summary>span{display:flex;align-items:center;gap:10px;min-width:0}.cert095-process>.table-wrap{margin:0;border:0;border-top:1px solid #e5eaf1;border-radius:0}.cert095-equipment{margin-top:3px}@media(max-width:760px){.cert095-task-grid{grid-template-columns:1fr}.cert095-process>summary{align-items:flex-start;flex-direction:column}}

/* KMI PATCH 096 - task master management */
.cert096-task-form{max-width:820px}.cert096-task-form .table-wrap{max-height:420px;overflow:auto}.cert096-inactive{opacity:.58}.cert096-inactive td{text-decoration:none}.cert096-task-form .modal-actions{justify-content:flex-end}

/* KMI PATCH 097 - TOOL MANAGEMENT */
.tool097-photo-grid{display:grid;grid-template-columns:210px 1fr;gap:24px;align-items:start}.tool097-photo{text-align:center}.tool097-photo #tool097PhotoPreview,.tool097-detail-photo,.tool097-mobile-photo{border:1px solid var(--line,#d9e0e7);border-radius:14px;background:#f6f8fa;display:flex;align-items:center;justify-content:center;overflow:hidden}.tool097-photo #tool097PhotoPreview{height:190px;margin-bottom:10px}.tool097-photo img,.tool097-detail-photo img,.tool097-mobile-photo img{width:100%;height:100%;object-fit:cover}.tool097-files{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.tool097-files span{background:#f1f4f7;border:1px solid #dbe2e8;border-radius:20px;padding:7px 10px}.tool097-files button{border:0;background:none;cursor:pointer}.tool097-master-add{display:flex;gap:8px;margin:12px 0}.tool097-master-add input{flex:1}.tool097-master-list{display:flex;flex-wrap:wrap;gap:8px}.tool097-master-list>span{display:flex;align-items:center;gap:8px;border:1px solid #dbe2e8;border-radius:10px;padding:8px 10px;background:#fff}.tool097-master-list button{border:0;background:none;color:#b42318;cursor:pointer}.tool097-detail-top{display:grid;grid-template-columns:160px 1fr 120px;gap:18px;align-items:center}.tool097-detail-photo{height:145px}.tool097-mini-qr,.tool097-qr-modal>div:first-child,.tool097-qr-placeholder{display:flex;justify-content:center;align-items:center}.tool097-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.tool097-info-grid>div{border:1px solid #e0e5ea;border-radius:10px;padding:12px;background:#fff}.tool097-info-grid span{display:block;color:#68747f;font-size:12px;margin-bottom:5px}.tool097-detail section{border-top:1px solid #e6eaee;padding-top:12px;margin-top:14px}.tool097-qr-modal{text-align:center}.tool097-qr-modal h3{margin:14px 0 4px}.tool097-qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}.tool097-qr-select{border:1px solid #dce3e8;border-radius:14px;padding:14px;text-align:center;background:#fff;position:relative}.tool097-qr-select>input{position:absolute;left:12px;top:12px}.tool097-qr-select b,.tool097-qr-select span{display:block;margin-top:6px}.tool097-qr-error{font-size:12px;color:#b42318;border:1px dashed #e5a7a2;padding:14px}.tool097-mobile{max-width:680px;margin:0 auto;padding:18px}.tool097-mobile-head{text-align:center;padding:24px 10px}.tool097-mobile-head h1{margin:8px 0}.tool097-mobile-photo{height:300px}.tool097-mobile-status{text-align:center;margin:16px}.tool097-mobile section p{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #edf0f2;padding:10px 0}.tool097-mobile section p span{text-align:right}.tool097-mobile>.btn{width:100%;margin-top:14px}@media(max-width:760px){.tool097-photo-grid{grid-template-columns:1fr}.tool097-detail-top{grid-template-columns:1fr;text-align:center}.tool097-detail-photo{height:220px}.tool097-info-grid{grid-template-columns:1fr}.tool097-mini-qr{margin:auto}.tool097-qr-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tool097-mobile-photo{height:240px}}

/* KMI PATCH 098 - ERP import and compact QR selection */
.tool098-import-note{margin:10px 0 14px;padding:10px 12px;border:1px solid #dbe5f2;border-radius:10px;background:#f7faff;color:#5c708b;font-size:12px;line-height:1.5}
.tool098-qr-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tool098-qr-list label{display:flex;align-items:center;gap:10px;border:1px solid #dce3e8;border-radius:10px;padding:11px 12px;background:#fff;cursor:pointer;min-width:0}
.tool098-qr-list input{width:16px;height:16px;flex:0 0 auto}
.tool098-qr-list span{display:flex;flex-direction:column;gap:3px;min-width:0}
.tool098-qr-list b,.tool098-qr-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tool098-qr-list small{color:#728096}
@media(max-width:900px){.tool098-qr-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.tool098-qr-list{grid-template-columns:1fr}}

/* KMI PATCH 099 - TOOL DELETE / BULK DELETE */
.tool099-check-col{width:42px;text-align:center!important}
.tool099-check-col input{width:16px;height:16px;cursor:pointer}
#tool099DeleteSelected:disabled{opacity:.45;cursor:not-allowed}

/* KMI PATCH 100 - FIELD ASSET QR FILTER */
.tool100-qr-toolbar{margin:14px 0 10px}.tool100-qr-toolbar input{min-width:260px}.tool100-selection-count{margin-left:auto;font-weight:700;color:#245fd6}

/* KMI PATCH 103 */
.tool103-table-wrap{overflow-x:auto}
.tool103-asset-table{min-width:1120px}
.tool103-asset-table th,.tool103-asset-table td{text-align:center;vertical-align:middle}
.tool103-asset-table td:nth-child(4),.tool103-asset-table td:nth-child(6),.tool103-asset-table td:nth-child(8){text-align:center}
.tool103-asset-table th:last-child,.tool103-asset-table td:last-child{min-width:220px}
.tool103-actions{display:flex;justify-content:center;gap:5px;flex-wrap:nowrap}
.tool103-actions button{white-space:nowrap}
