.cloud-signed-out>.app-shell,.cloud-signed-out>header,.cloud-signed-out>#cloudBar{display:none!important}#cloudGate{max-width:470px;margin:7vh auto;padding:28px;background:#fff;border:1px solid #d9e0e7;border-radius:14px;box-shadow:0 10px 30px #17324d12}#cloudGate h1{font-size:23px;color:#17324d;margin:0 0 10px}#cloudGate p{font-size:13px;line-height:1.6;color:#64748b}#cloudGate label{display:block;font-size:13px;font-weight:700;margin:18px 0 6px}#cloudGate input{width:100%;padding:11px;border:1px solid #cbd5e1;border-radius:8px;box-sizing:border-box}#cloudGate button{margin-top:20px;width:100%}.cloud-message{white-space:pre-wrap;font-size:13px;line-height:1.5;color:#175a86;padding:10px 0}.cloud-message.error{color:#a32929}#cloudBar{position:sticky;top:0;z-index:30;display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:9px 18px;background:#eef5f9;border-bottom:1px solid #bbd1df;font-size:12px}#cloudIdentity{font-weight:700;color:#17324d}#cloudStatus{flex:1;min-width:190px;color:#175a86}#cloudStatus.error{color:#a32929;font-weight:700}#cloudBar button{font-size:12px;padding:7px 10px}body:not(.cloud-signed-out)>header{top:49px}#cloudDemoNotice{background:#fff4d6;color:#795600;padding:8px 18px;font-size:12px;font-weight:700}button:disabled{cursor:not-allowed;opacity:.48}dialog.cloud-dialog{width:min(850px,90vw);border:1px solid #cbd5e1;border-radius:12px;padding:20px}dialog.cloud-dialog::backdrop{background:#17324d55}dialog.cloud-dialog pre{white-space:pre-wrap;max-height:55vh;overflow:auto;background:#f8fafc;padding:12px;font-size:12px}dialog.cloud-dialog select,dialog.cloud-dialog input{padding:9px;border:1px solid #cbd5e1;border-radius:7px;margin:6px;max-width:95%}.cloud-note{font-size:12px;line-height:1.6;color:#64748b}.cloud-phase-banner{background:#eef5f9;color:#174c6b;font-size:12px;padding:8px 18px;border-bottom:1px solid #d8e6ee}@media(max-width:800px){#cloudBar{position:relative}body:not(.cloud-signed-out)>header{top:0}.cloud-dialog{max-width:90vw}}

.cloud-permissions{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:8px;background:#f5f8fc;padding:12px;border-radius:8px}.cloud-permissions label{font-size:13px}.cloud-permissions input{margin-right:7px}dialog.cloud-dialog>label{display:inline-flex;align-items:center;gap:6px;margin:8px}

#kpamsEnvironmentNotice{position:relative;z-index:50;background:#e2f1fd;color:#134975;font-size:12px;font-weight:700;padding:8px 16px;border-bottom:1px solid #9ac3e0}#kpamsEnvironmentNotice.blocked{background:#ffdddd;color:#8b1717;border-color:#d78989}

/* Phase8 Patch4: diagnosis button follows existing admin toolbar styles. */

/* Phase8 uniform modal close button. Does not alter native browser alerts. */
dialog.kpams-has-close-x, .stage-modal.kpams-has-close-x, .reviewer-modal.kpams-has-close-x{position:relative!important;padding-top:max(28px,3.2rem)!important;}
.kpams-modal-x{position:absolute!important;top:10px!important;right:12px!important;z-index:2!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;width:34px!important;height:34px!important;min-width:34px!important;padding:0!important;margin:0!important;font-size:23px!important;font-weight:500!important;line-height:1!important;color:#334155!important;background:#fff!important;border:1px solid #d4dce5!important;border-radius:8px!important;cursor:pointer!important;box-shadow:none!important;}
.kpams-modal-x:hover{background:#eef4f8!important;}
.kpams-modal-x:focus-visible{outline:3px solid #1e7da3!important;outline-offset:2px!important;}
.reviewer-modal-head .kpams-original-close-x{position:absolute!important;}
@media(max-width:600px){.kpams-modal-x{right:8px!important;top:8px!important;}}

/* Phase8 Patch13: per-user effective permission readout */
.cloud-my-permission-table {width:100%;border-collapse:collapse;margin:12px 0;font-size:13px;}
.cloud-my-permission-table th,.cloud-my-permission-table td {padding:9px 12px;border-bottom:1px solid #dbe5ed;text-align:left;}
.cloud-my-permission-table thead {background:#16344f;color:#fff;}
.cloud-my-permission-table tr:nth-child(even) {background:#f3f7fa;}
@media(max-width:600px){.cloud-my-permission-table th,.cloud-my-permission-table td{padding:8px 5px;font-size:12px;}}

/* Phase8 Patch14: restrained, unified management interface. Pure presentation. */
:root{--kp-ui-navy:#152e49;--kp-ui-navy-2:#203d5a;--kp-ui-accent:#087f86;--kp-ui-text:#20334a;--kp-ui-line:#d8e2ea;--kp-ui-subtle:#f2f6f9}
/* App-wide table header legibility. Explicit cell colors override legacy selectors. */
.app-shell table:not(.calendar-grid) thead th,
.app-shell table:not(.calendar-grid) thead td,
dialog.cloud-dialog table thead th,
.stage-modal table thead th,
.reviewer-modal table thead th {
 background:var(--kp-ui-navy)!important;color:#fff!important;font-weight:750!important;
 border-bottom:2px solid #087f86!important;text-shadow:none!important;opacity:1!important;
 padding:10px 12px!important;line-height:1.4!important;
}
.app-shell table:not(.calendar-grid) tbody td,
dialog.cloud-dialog table tbody td {border-bottom:1px solid var(--kp-ui-line);line-height:1.55;}
.app-shell table:not(.calendar-grid) tbody tr:nth-child(even):not(.selected),
dialog.cloud-dialog table tbody tr:nth-child(even) {background-color:#f2f6f9;}
/* Modal visual hierarchy applies without replacing workflow logic. */
dialog.cloud-dialog{color:var(--kp-ui-text);background:#fff;box-shadow:0 20px 56px #11263e35;border:1px solid #cbd9e5;border-radius:14px;max-height:88vh;overflow:auto;box-sizing:border-box;}
dialog.cloud-dialog>h2{font-size:21px;line-height:1.4;letter-spacing:-.025em;color:var(--kp-ui-navy);font-weight:800;margin:0 45px 12px 0;}
dialog.cloud-dialog>.cloud-note{color:#52677b;font-size:12.5px;line-height:1.7;}
dialog.cloud-dialog button:not(.kpams-modal-x){border-radius:8px;min-height:34px;}
dialog.cloud-dialog button:not(.secondary):not(.kpams-modal-x){background:#266b91;color:#fff;}
dialog.cloud-dialog button.secondary:not(.kpams-modal-x){background:#eaf0f4;color:#20374c;}
dialog.cloud-dialog :is(input,select,textarea):focus-visible{outline:2px solid #008b95;outline-offset:1px;}
/* Self permission readout: strong contrast even when legacy stylesheet targets th. */
dialog.cloud-dialog table.cloud-my-permission-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;border:1px solid var(--kp-ui-line);border-radius:10px;overflow:hidden;}
dialog.cloud-dialog table.cloud-my-permission-table thead th{color:#fff!important;background:#152e49!important;opacity:1!important;font-size:13.5px!important;letter-spacing:0!important;}
dialog.cloud-dialog table.cloud-my-permission-table thead th:first-child{width:54%;}
dialog.cloud-dialog table.cloud-my-permission-table tbody td{color:#24364b;font-size:13px;}
dialog.cloud-dialog table.cloud-my-permission-table tbody td:first-child{font-weight:650;}
dialog.cloud-dialog table.cloud-my-permission-table td.kpams-permission-value{font-weight:700;text-align:center;vertical-align:middle;}
dialog.cloud-dialog table.cloud-my-permission-table td.kpams-permission-yes{color:#126451;}
dialog.cloud-dialog table.cloud-my-permission-table td.kpams-permission-no{color:#8b4050;}
dialog.cloud-dialog table.cloud-my-permission-table td.kpams-permission-value::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:7px;vertical-align:middle;}
dialog.cloud-dialog p.kpams-permission-summary{color:#21495a;font-weight:700;background:#edf6f6;border:1px solid #c7e2df;border-radius:9px;padding:12px 14px;margin:14px 0;}
/* Shared forms and non-modal tables remain compact but legible. */
.app-shell :is(input,select,textarea),dialog.cloud-dialog :is(input,select,textarea){accent-color:#087f86;}
.app-shell :is(button,input,select,textarea):focus-visible,dialog.cloud-dialog button:focus-visible{outline:2px solid #087f86;outline-offset:2px;}
@media(max-width:600px){dialog.cloud-dialog{width:95vw;max-width:95vw;padding:18px 12px;}dialog.cloud-dialog>h2{font-size:18px;}dialog.cloud-dialog table.cloud-my-permission-table thead th,dialog.cloud-dialog table.cloud-my-permission-table tbody td{font-size:12px!important;padding:9px 7px!important;}}

/* Phase8 Patch15: business, calendar, review screen polish.
   Presentation-only: existing status/KPI/review colors and functionality are retained. */
#page-ongoing,#page-calendar,#page-quality{--kp-work-border:#d6e1e9;--kp-work-ink:#19344d;--kp-work-soft:#f4f8fa}
:is(#page-ongoing,#page-calendar,#page-quality) .page-head{gap:12px;align-items:flex-start;padding-bottom:13px;margin-bottom:14px;border-bottom:1px solid var(--kp-work-border)}
:is(#page-ongoing,#page-calendar,#page-quality) .page-head h2{color:var(--kp-work-ink)!important;letter-spacing:-.035em;line-height:1.32;margin-bottom:5px}
:is(#page-ongoing,#page-calendar,#page-quality) .page-head p{color:#50677b!important;line-height:1.7!important;max-width:900px}
:is(#page-ongoing,#page-calendar,#page-quality) .sheet-tag{max-width:100%;white-space:normal;line-height:1.5;overflow-wrap:anywhere}
:is(#page-ongoing,#page-calendar,#page-quality) .card{border:1px solid var(--kp-work-border);border-radius:12px;box-shadow:0 2px 9px #17324d0c}
:is(#page-ongoing,#page-calendar,#page-quality) :is(.page-note,.quality-policy-note){color:#37546c;background:var(--kp-work-soft);border:1px solid #dbe6ee;border-radius:9px;line-height:1.75;padding:12px 14px;overflow-wrap:anywhere}
#page-ongoing .business-tabs{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
#page-ongoing .business-tabs button{line-height:1.45;min-height:34px;border-radius:8px;white-space:nowrap}
#page-ongoing .new-project-panel .np-section-title{color:var(--kp-work-ink);font-weight:800;line-height:1.5}
#page-ongoing .new-project-panel .field label{color:#36516a;font-weight:700;line-height:1.5}
#page-ongoing .business-detail-side{border-color:var(--kp-work-border);border-radius:12px;overflow-wrap:anywhere}
#page-ongoing .business-detail-side :is(h2,h3){color:var(--kp-work-ink);line-height:1.4;overflow-wrap:anywhere}
#page-ongoing .business-detail-side .detail-item{min-width:0}
#page-ongoing .business-detail-side .detail-item b{overflow-wrap:anywhere;line-height:1.5}
#page-calendar .calendar-toolbar{min-width:0;row-gap:10px}
#page-calendar .calendar-toolbar button{border-radius:8px;min-height:32px}
#page-calendar .calendar-event{overflow-wrap:anywhere;line-height:1.4}
#page-quality .quality-card{border-radius:12px}
#page-quality .quality-toolbar{gap:10px;flex-wrap:wrap}
#page-quality .quality-table thead th{line-height:1.45!important;white-space:normal!important;overflow-wrap:anywhere;vertical-align:middle}
#page-quality .quality-table tbody td{vertical-align:middle;line-height:1.55}
#page-quality .review-pipeline{max-width:100%}
:is(#page-ongoing,#page-calendar,#page-quality) :is(input,select,textarea):focus-visible{outline:2px solid #087f86;outline-offset:1px}
@media(max-width:760px){
 :is(#page-ongoing,#page-calendar,#page-quality) .page-head{flex-wrap:wrap}
 :is(#page-ongoing,#page-calendar,#page-quality) .sheet-tag{width:auto}
 #page-ongoing .business-tabs{gap:5px}
 #page-quality .quality-toolbar{align-items:flex-start}
}


/* Phase8 Patch16: DPI/zoom-safe responsive layout, presentation only.
   No existing color/status semantics, read/write controls or JS behavior changed. */
.app-shell,.app-shell main,.app-shell .page,.app-shell .card{min-width:0}
.app-shell :is(.table-wrap,.module-table-wrap,.ongoing-table-wrap,.operation-table-wrap,.change-log-wrap){max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}
.app-shell :is(input,select,textarea){max-width:100%}
#cloudBar{min-width:0;row-gap:6px}
#cloudBar button{flex:0 0 auto;white-space:nowrap}
body:not(.cloud-signed-out)>header{min-width:0}
body:not(.cloud-signed-out)>header .header-brand{min-width:0;flex:1 1 auto}
body:not(.cloud-signed-out)>header .header-brand-text{min-width:0}
body:not(.cloud-signed-out)>header h1{overflow-wrap:anywhere}
dialog.cloud-dialog{max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto}
@media(max-width:1600px){
 #page-ongoing .business-shell{grid-template-columns:minmax(0,1fr) minmax(300px,340px);gap:12px}
 #page-ongoing .business-main{min-width:0}
 #page-ongoing .ongoing-table-wrap{overflow-x:auto}
 #page-quality .module-table-wrap:has(.quality-table){overflow-x:auto}
 #page-quality .quality-table{min-width:1080px!important}
 #page-quality .review-pipeline{min-width:610px}
}
@media(max-width:1280px){
 /* Keep main content useful at 125/150% browser zoom; sidebar remains visible or follows legacy horizontal nav. */
 #page-ongoing .business-shell{grid-template-columns:minmax(0,1fr)}
 #page-ongoing .business-detail-side{position:static;max-height:none;width:100%;min-width:0}
 #page-ongoing .ongoing-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
 #page-ongoing .ongoing-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}
 #page-operation .operation-overview-grid{grid-template-columns:minmax(0,1fr)}
 #page-quality .quality-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
 .app-shell .page-head{flex-wrap:wrap;align-items:flex-start}
}
@media(max-width:1000px){
 /* Built-in horizontal nav from legacy CSS is retained instead of hiding menus. */
 .app-shell{grid-template-columns:minmax(0,1fr)}
 .app-shell>.sidebar{max-width:100vw;min-width:0;overflow-x:auto}
 .app-shell>main{padding:12px;min-width:0}
 #cloudBar{padding:8px 12px}
 body:not(.cloud-signed-out)>header{flex-wrap:wrap;gap:8px;padding:12px 14px}
 body:not(.cloud-signed-out)>header .header-right{align-items:flex-start;text-align:left}
 #page-calendar .calendar-grid{min-width:720px}
 #page-calendar .calendar-shell>div:first-child{min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
}
@media(max-width:700px){
 .app-shell>main{padding:9px}
 .app-shell .card{padding:12px}
 #cloudBar{gap:6px}
 #cloudIdentity,#cloudStatus{flex-basis:100%;min-width:0;overflow-wrap:anywhere}
 #cloudBar button{white-space:normal;max-width:100%;line-height:1.3}
 body:not(.cloud-signed-out)>header h1{font-size:clamp(15px,3.4vw,20px)}
 #page-ongoing .ongoing-kpis,#page-quality .quality-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
 #page-ongoing .ongoing-toolbar{grid-template-columns:minmax(0,1fr)}
 #page-ongoing .business-tabs button[data-mode="new"]{margin-left:0}
 #page-ongoing .business-detail-side .detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 #page-calendar .calendar-grid{min-width:680px}
 #page-quality .quality-table{min-width:1040px!important}
 dialog.cloud-dialog{width:calc(100vw - 16px);max-width:calc(100vw - 16px);padding:44px 12px 16px}
 .cloud-permissions{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:430px){
 #page-ongoing .ongoing-kpis{gap:5px}
 #page-ongoing .ongoing-kpi{padding:8px 5px;min-width:0}
 #page-ongoing .business-detail-side .detail-grid{grid-template-columns:minmax(0,1fr)}
}

/* Phase8 Patch16 Fix1: override older !important business-layout/scroll locks.
   Zoom changes the CSS viewport width; dense columns retain their real width and
   scroll INSIDE the business list, rather than being clipped or squashed. */
#page-ongoing .business-main { min-width:0; max-width:100%; }
#page-ongoing .ongoing-table-wrap {
  display:block;
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:auto !important;
  overflow-y:auto !important;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
}
#page-ongoing .ongoing-table-wrap > table.ongoing-table {
  min-width:1340px !important;
  width:max(100%,1340px) !important;
  table-layout:fixed !important;
}
@media(max-width:1600px) {
  #page-ongoing .business-shell {
    grid-template-columns:minmax(0,1fr) !important;
    gap:14px !important;
  }
  #page-ongoing .business-detail-side {
    position:static !important;
    width:100%;
    max-height:none !important;
    min-width:0;
  }
}

/* Phase8 Patch16 Fix2: legible review and personal performance tables.
   Scope strictly to these two tables; preserve KPI/review stage colors and data behavior. */
#page-quality .module-table-wrap:has(> .quality-table),
#page-personal .personal-table-wrap {
  display:block;
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:auto !important;
  overflow-y:auto;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
}
#page-quality .module-table-wrap > .quality-table {
  table-layout:fixed !important;
  width:1760px !important;
  min-width:1760px !important;
  max-width:none !important;
}
#page-quality .quality-table thead th {
  white-space:nowrap !important;
  overflow-wrap:normal !important;
  word-break:keep-all !important;
  text-overflow:clip !important;
  vertical-align:middle;
}
#page-quality .quality-table th,
#page-quality .quality-table td {
  box-sizing:border-box;
  padding-left:9px !important;
  padding-right:9px !important;
}
/* Columns: stage, agency, project, amount, leader, coauthor, reviewer, PM,
   writing period, PT, review pipeline. Fixed pixel widths override legacy percentages. */
#page-quality .quality-table :is(th,td):nth-child(1){width:96px !important;}
#page-quality .quality-table :is(th,td):nth-child(2){width:140px !important;}
#page-quality .quality-table :is(th,td):nth-child(3){width:235px !important;}
#page-quality .quality-table :is(th,td):nth-child(4){width:145px !important;}
#page-quality .quality-table :is(th,td):nth-child(5){width:115px !important;}
#page-quality .quality-table :is(th,td):nth-child(6){width:110px !important;}
#page-quality .quality-table :is(th,td):nth-child(7){width:110px !important;}
#page-quality .quality-table :is(th,td):nth-child(8){width:85px !important;}
#page-quality .quality-table :is(th,td):nth-child(9){width:122px !important;}
#page-quality .quality-table :is(th,td):nth-child(10){width:70px !important;}
#page-quality .quality-table :is(th,td):nth-child(11){width:532px !important;}
#page-quality .quality-table tbody td:nth-child(3){white-space:normal !important;overflow-wrap:anywhere;line-height:1.55;}
#page-quality .quality-table tbody td:nth-child(4){white-space:nowrap !important;text-overflow:clip !important;font-variant-numeric:tabular-nums;text-align:right;}
#page-quality .quality-table tbody td:nth-child(11){overflow:visible !important;}

#page-personal .personal-layout{min-width:0;}
#page-personal .personal-layout > div:first-child{min-width:0;}
#page-personal .personal-table {
  table-layout:fixed !important;
  width:1600px !important;
  min-width:1600px !important;
  max-width:none !important;
}
#page-personal .personal-table thead th {
  white-space:nowrap !important;
  overflow-wrap:normal !important;
  word-break:keep-all !important;
  text-overflow:clip !important;
}
#page-personal .personal-table :is(th,td){
  box-sizing:border-box;
  padding:10px 8px !important;
}
/* Name, affiliation, title, role, wins, losses, evaluation, results,
   writing, total, win rate, cumulative amount, current status. */
#page-personal .personal-table :is(th,td):nth-child(1){width:115px !important;}
#page-personal .personal-table :is(th,td):nth-child(2){width:140px !important;}
#page-personal .personal-table :is(th,td):nth-child(3){width:100px !important;}
#page-personal .personal-table :is(th,td):nth-child(4){width:155px !important;}
#page-personal .personal-table :is(th,td):nth-child(5){width:78px !important;}
#page-personal .personal-table :is(th,td):nth-child(6){width:78px !important;}
#page-personal .personal-table :is(th,td):nth-child(7){width:112px !important;}
#page-personal .personal-table :is(th,td):nth-child(8){width:112px !important;}
#page-personal .personal-table :is(th,td):nth-child(9){width:90px !important;}
#page-personal .personal-table :is(th,td):nth-child(10){width:118px !important;}
#page-personal .personal-table :is(th,td):nth-child(11){width:92px !important;}
#page-personal .personal-table :is(th,td):nth-child(12){width:225px !important;}
#page-personal .personal-table :is(th,td):nth-child(13){width:185px !important;}
#page-personal .personal-table tbody td.person-name,
#page-personal .personal-table tbody td:nth-child(4),
#page-personal .personal-table tbody td:nth-child(13){
  white-space:normal !important;
  overflow-wrap:anywhere;
  text-overflow:clip !important;
}
#page-personal .personal-table tbody td.personal-win-amount{
  white-space:nowrap !important;
  text-overflow:clip !important;
  font-variant-numeric:tabular-nums;
}

/* Phase8 Patch16 Fix3: fluid personal-results table when there is enough REAL
   column space. At zoomed/narrow sizes, Fix2's 1600px scroll remains intact.
   Container queries follow available table space, not a guessed zoom level. */
#page-personal .personal-table-wrap {container-type:inline-size;}
@container (min-width: 1100px) {
  #page-personal .personal-table {
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
    table-layout:fixed !important;
  }
  #page-personal .personal-table :is(th,td) {
    padding:9px 4px !important;
  }
  #page-personal .personal-table thead th {
    white-space:normal !important;
    overflow-wrap:normal !important;
    word-break:keep-all !important;
    line-height:1.4 !important;
  }
  #page-personal .personal-table :is(th,td):nth-child(1){width:9% !important;}
  #page-personal .personal-table :is(th,td):nth-child(2){width:9% !important;}
  #page-personal .personal-table :is(th,td):nth-child(3){width:7% !important;}
  #page-personal .personal-table :is(th,td):nth-child(4){width:12% !important;}
  #page-personal .personal-table :is(th,td):nth-child(5){width:5% !important;}
  #page-personal .personal-table :is(th,td):nth-child(6){width:5% !important;}
  #page-personal .personal-table :is(th,td):nth-child(7){width:6% !important;}
  #page-personal .personal-table :is(th,td):nth-child(8){width:6% !important;}
  #page-personal .personal-table :is(th,td):nth-child(9){width:6% !important;}
  #page-personal .personal-table :is(th,td):nth-child(10){width:8% !important;}
  #page-personal .personal-table :is(th,td):nth-child(11){width:7% !important;}
  #page-personal .personal-table :is(th,td):nth-child(12){width:12% !important;}
  #page-personal .personal-table :is(th,td):nth-child(13){width:8% !important;}
}

/* Integrated audit readable table */
dialog.kpams-audit-dialog{width:min(1160px,96vw)!important;}
.kpams-audit-scroll{max-height:62vh;overflow:auto;border:1px solid #d7e1eb;border-radius:9px;}
.kpams-audit-table{border-collapse:collapse;width:100%;font-size:12.5px;min-width:820px;}
.kpams-audit-table :is(th,td){border-bottom:1px solid #e3eaf1;text-align:left;padding:10px 12px;vertical-align:top;white-space:normal;overflow-wrap:anywhere;}
.kpams-audit-table th{position:sticky;top:0;background:#17324d;color:#fff;font-weight:700;z-index:1;}
.kpams-audit-table tr:nth-child(even) td{background:#f5f8fb;}

/* Shared pilot toolbar: no change to RPC permissions */
#cloudBar .kpams-admin-tools{position:relative}#cloudBar .kpams-admin-tools[hidden]{display:none!important}#cloudBar .kpams-admin-tools>summary{cursor:pointer;list-style:none;display:inline-block;padding:8px 12px;background:#e5edf5;border:1px solid #a7bcd0;border-radius:7px;color:#17324d;font-weight:700}#cloudBar .kpams-admin-tools>summary::-webkit-details-marker{display:none}#cloudBar .kpams-admin-tools>summary:after{content:" ▾"}#cloudBar .kpams-admin-tools[open]>summary:after{content:" ▴"}#cloudBar .kpams-admin-items{position:absolute;right:0;top:calc(100% + 6px);min-width:220px;z-index:120;background:white;border:1px solid #b5c6d6;border-radius:10px;box-shadow:0 9px 22px #17324d29;padding:8px;display:flex;flex-direction:column;gap:6px}#cloudBar .kpams-admin-items button{width:100%;text-align:left;white-space:nowrap}#cloudBar .kpams-admin-items button[hidden]{display:none!important}@media(max-width:620px){#cloudBar .kpams-admin-items{left:0;right:auto}}


/* V4 Pilot: readable review and personnel layouts — remove old fixed-width regressions. */
#page-quality .quality-toolbar{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(370px,45%)!important;gap:16px!important;align-items:end!important}
#page-quality .quality-toolbar>div{min-width:0!important}
#page-quality .quality-toolbar>div:last-child{display:flex!important;align-items:flex-end!important;justify-content:flex-end!important;gap:10px!important;flex-wrap:nowrap!important}
#page-quality .quality-toolbar .field{flex:1 1 auto!important;min-width:0!important;width:auto!important}
#page-quality #qualitySearch{box-sizing:border-box;width:100%!important;min-width:0!important}
#page-quality #qualityReset{flex:0 0 auto!important;white-space:nowrap!important;align-self:end!important}
#page-quality .module-table-wrap:has(> .quality-table){max-width:100%!important;overflow-x:hidden!important}
#page-quality .module-table-wrap>.quality-table{width:100%!important;min-width:0!important;max-width:100%!important;table-layout:fixed!important}
#page-quality .quality-table :is(th,td){box-sizing:border-box!important;min-width:0!important;max-width:none!important;padding:8px 4px!important;white-space:normal!important;overflow-wrap:anywhere!important;word-break:keep-all!important;text-overflow:clip!important;vertical-align:middle!important}
#page-quality .quality-table :is(th,td):nth-child(1){width:6%!important}
#page-quality .quality-table :is(th,td):nth-child(2){width:7%!important}
#page-quality .quality-table :is(th,td):nth-child(3){width:11%!important}
#page-quality .quality-table :is(th,td):nth-child(4){width:9%!important}
#page-quality .quality-table :is(th,td):nth-child(5){width:7%!important}
#page-quality .quality-table :is(th,td):nth-child(6){width:6%!important}
#page-quality .quality-table :is(th,td):nth-child(7){width:7%!important}
#page-quality .quality-table :is(th,td):nth-child(8){width:6%!important}
#page-quality .quality-table :is(th,td):nth-child(9){width:7%!important}
#page-quality .quality-table :is(th,td):nth-child(10){width:4%!important}
#page-quality .quality-table :is(th,td):nth-child(11){width:30%!important;overflow:visible!important}
#page-quality .review-pipeline{display:flex!important;flex-wrap:wrap!important;gap:4px 3px!important;min-width:0!important;width:100%!important;align-items:flex-start!important}
#page-quality .review-step-wrap{flex:1 1 56px!important;width:auto!important;min-width:48px!important;max-width:85px!important}
#page-quality .review-step{box-sizing:border-box!important;width:100%!important;min-width:0!important;padding:5px 3px!important;font-size:10px!important}
#page-quality .review-arrow{flex:0 0 5px!important;font-size:10px!important}
#page-manpower .manpower-wrap{overflow-x:hidden!important;max-width:100%!important}
#page-manpower .manpower-table{display:block!important;width:100%!important;min-width:0!important;max-width:100%!important;white-space:normal!important;table-layout:auto!important}
#page-manpower .manpower-table thead{display:none!important}
#page-manpower .manpower-table tbody{display:block!important}
#page-manpower .manpower-table tbody tr{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:0!important;margin:8px 0 12px!important;border:1px solid #d6e2ed!important;border-radius:9px!important;overflow:hidden!important;background:#fff!important}
#page-manpower .manpower-table tbody td{display:block!important;width:auto!important;min-width:0!important;max-width:none!important;box-sizing:border-box!important;white-space:normal!important;overflow-wrap:anywhere!important;text-overflow:clip!important;min-height:54px!important;padding:8px!important;border-right:1px solid #e5edf3!important;border-bottom:1px solid #e5edf3!important;text-align:left!important}
#page-manpower .manpower-table tbody td::before{display:block!important;color:#61758b!important;font-size:11px!important;font-weight:700!important;margin-bottom:4px!important;white-space:normal!important}
#page-manpower .manpower-table tbody td:nth-child(1)::before{content:"재직상태"}
#page-manpower .manpower-table tbody td:nth-child(2)::before{content:"성명"}
#page-manpower .manpower-table tbody td:nth-child(3)::before{content:"세부소속"}
#page-manpower .manpower-table tbody td:nth-child(4)::before{content:"직위·직책"}
#page-manpower .manpower-table tbody td:nth-child(5)::before{content:"만나이"}
#page-manpower .manpower-table tbody td:nth-child(6)::before{content:"계약형태"}
#page-manpower .manpower-table tbody td:nth-child(7)::before{content:"기술자격"}
#page-manpower .manpower-table tbody td:nth-child(8)::before{content:"근무년차"}
#page-manpower .manpower-table tbody td:nth-child(9)::before{content:"현재상태"}
#page-manpower .manpower-table tbody td:nth-child(10)::before{content:"작성중"}
#page-manpower .manpower-table tbody td:nth-child(11)::before{content:"제안작성"}
#page-manpower .manpower-table tbody td:nth-child(12)::before{content:"Sub작성"}
#page-manpower .manpower-table tbody td:nth-child(13)::before{content:"총괄수행능력"}
#page-manpower .manpower-table tbody td:nth-child(14)::before{content:"전문분야"}
#page-manpower .manpower-table tbody td:nth-child(15)::before{content:"비고"}

#page-manpower .manpower-table tbody tr:has(.empty-row){display:block!important}
#page-manpower .manpower-table tbody .empty-row{min-height:48px!important}
@media(max-width:1370px){#page-manpower .manpower-table tbody tr{grid-template-columns:repeat(3,minmax(0,1fr))!important}#page-quality .quality-toolbar{grid-template-columns:minmax(0,1fr) minmax(300px,45%)!important}}
@media(max-width:950px){#page-quality .quality-toolbar{grid-template-columns:1fr!important}#page-quality .quality-toolbar>div:last-child{justify-content:stretch!important}#page-quality .quality-table thead{display:none!important}#page-quality .quality-table,#page-quality .quality-table tbody{display:block!important}#page-quality .quality-table tbody tr{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;border:1px solid #d6e2ed!important;border-radius:8px!important;margin:8px 0!important;padding:5px!important}#page-quality .quality-table tbody td{display:block!important;width:auto!important;max-width:none!important;padding:6px!important}#page-quality .quality-table tbody td:nth-child(11){grid-column:1/-1!important}#page-manpower .manpower-table tbody tr{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:540px){#page-quality .quality-toolbar>div:last-child{align-items:stretch!important}#page-quality .quality-table tbody tr{grid-template-columns:repeat(2,minmax(0,1fr))!important}#page-manpower .manpower-table tbody tr{grid-template-columns:1fr!important}}

/* V4 review timeline priority: 10 columns, PT condition removed (PT stage retained). */
#page-quality .module-table-wrap:has(> .quality-table){overflow-x:hidden!important}
#page-quality .module-table-wrap>.quality-table{table-layout:fixed!important;width:100%!important;min-width:0!important;max-width:100%!important}
#page-quality .quality-table :is(th,td):nth-child(1){width:5.5%!important}
#page-quality .quality-table :is(th,td):nth-child(2){width:7%!important}
#page-quality .quality-table :is(th,td):nth-child(3){width:11%!important}
#page-quality .quality-table :is(th,td):nth-child(4){width:7%!important}
#page-quality .quality-table :is(th,td):nth-child(5){width:6%!important}
#page-quality .quality-table :is(th,td):nth-child(6){width:5.5%!important}
#page-quality .quality-table :is(th,td):nth-child(7){width:6%!important}
#page-quality .quality-table :is(th,td):nth-child(8){width:4.5%!important}
#page-quality .quality-table :is(th,td):nth-child(9){width:3.5%!important}
#page-quality .quality-table :is(th,td):nth-child(10){width:44%!important;overflow:visible!important}
#page-quality .quality-table tbody td:nth-child(4){font-variant-numeric:tabular-nums!important;font-size:11px!important;letter-spacing:-.25px!important}
#page-quality .quality-table .review-pipeline{display:flex!important;flex-wrap:wrap!important;justify-content:flex-start!important;align-items:flex-start!important;gap:5px 3px!important;min-width:0!important;width:100%!important}
#page-quality .quality-table .review-step-wrap{flex:0 1 68px!important;min-width:58px!important;max-width:86px!important;white-space:normal!important}
#page-quality .quality-table .review-step{width:100%!important;padding:5px 2px!important;white-space:normal!important;overflow-wrap:anywhere!important}
#page-quality .quality-table .review-step-date{display:block!important;text-align:center!important;white-space:nowrap!important;font-size:10px!important}
#page-quality .quality-table .review-arrow{flex:0 0 auto!important;align-self:flex-start!important;margin-top:9px!important}
@media(max-width:950px){#page-quality .quality-table tbody td:nth-child(10){grid-column:1/-1!important;width:100%!important}#page-quality .quality-table tbody td:nth-child(10)::before{content:'리뷰 일정';display:block;font-size:11px;font-weight:700;color:#526579;margin-bottom:5px}}

/* V4 Local Rev237 reference alignment: 100% desktop scale, seven stages in ONE row.
   PT condition column stays removed; PT/rehearsal review milestones stay present.
   This overrides former forced-wrap responsive rules without changing review data. */
@media (min-width:951px) {
 #page-quality .module-table-wrap:has(> .quality-table){overflow-x:hidden!important}
 #page-quality .module-table-wrap>.quality-table{table-layout:fixed!important;width:100%!important;min-width:0!important}
 #page-quality .quality-table :is(th,td){padding-left:3px!important;padding-right:3px!important}
 #page-quality .quality-table :is(th,td):nth-child(1){width:5%!important}
 #page-quality .quality-table :is(th,td):nth-child(2){width:7.5%!important}
 #page-quality .quality-table :is(th,td):nth-child(3){width:12%!important}
 #page-quality .quality-table :is(th,td):nth-child(4){width:6%!important}
 #page-quality .quality-table :is(th,td):nth-child(5){width:5%!important}
 #page-quality .quality-table :is(th,td):nth-child(6){width:5%!important}
 #page-quality .quality-table :is(th,td):nth-child(7){width:5%!important}
 #page-quality .quality-table :is(th,td):nth-child(8){width:4.5%!important}
 #page-quality .quality-table :is(th,td):nth-child(9){width:5%!important}
 #page-quality .quality-table :is(th,td):nth-child(10){width:45%!important;overflow:visible!important}
 #page-quality .quality-table tbody td:nth-child(3){white-space:normal!important;overflow-wrap:break-word!important;word-break:keep-all!important;line-height:1.4!important}
 #page-quality .quality-table tbody td:nth-child(4){font-size:11px!important;white-space:nowrap!important}
 #page-quality .quality-table .review-pipeline{display:flex!important;flex-wrap:nowrap!important;align-items:flex-start!important;justify-content:flex-start!important;gap:2px!important;min-width:0!important;width:100%!important;max-width:100%!important;white-space:nowrap!important}
 #page-quality .quality-table .review-step-wrap{flex:1 1 0!important;min-width:0!important;max-width:82px!important;width:auto!important;white-space:nowrap!important}
 #page-quality .quality-table .review-step{box-sizing:border-box!important;width:100%!important;min-width:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;overflow-wrap:normal!important;word-break:keep-all!important;padding:7px 2px!important;font-size:clamp(9px,.7vw,11px)!important;line-height:1.2!important}
 #page-quality .quality-table .review-step-date{white-space:nowrap!important;overflow:hidden!important;text-overflow:clip!important;text-align:center!important;font-size:10px!important}
 #page-quality .quality-table .review-arrow{flex:0 0 6px!important;min-width:6px!important;font-size:10px!important;align-self:flex-start!important;margin-top:0!important;padding-top:7px!important}
}
/* Narrow/mobile screens retain the existing stacked responsive layout. */


/* UI consistency patch: restore dense Local Rev237 personnel table at desktop widths. */
#page-manpower .manpower-table-wrap,
#page-manpower .manpower-wrap{max-width:100%!important;overflow-x:auto!important;overflow-y:auto!important}
#page-manpower .manpower-table{display:table!important;width:100%!important;min-width:1320px!important;max-width:none!important;table-layout:auto!important;border-collapse:collapse!important;white-space:normal!important}
#page-manpower .manpower-table thead{display:table-header-group!important}
#page-manpower .manpower-table tbody{display:table-row-group!important}
#page-manpower .manpower-table tbody tr,
#page-manpower .manpower-table tbody tr:has(.empty-row){display:table-row!important;border:0!important;border-radius:0!important;margin:0!important;background:transparent!important}
#page-manpower .manpower-table tbody td,
#page-manpower .manpower-table tbody .empty-row{display:table-cell!important;box-sizing:border-box!important;min-height:0!important;width:auto!important;max-width:none!important;padding:8px 6px!important;border-right:0!important;text-align:center!important;vertical-align:middle!important;white-space:normal!important;overflow-wrap:normal!important}
#page-manpower .manpower-table tbody td::before{content:none!important;display:none!important}
#page-manpower .manpower-table thead th{display:table-cell!important;position:sticky!important;top:0!important;z-index:2!important;white-space:nowrap!important;padding:9px 5px!important}
#page-manpower .manpower-table td:nth-child(2),#page-manpower .manpower-table td:nth-child(3),#page-manpower .manpower-table td:nth-child(14),#page-manpower .manpower-table td:nth-child(15){text-align:left!important}
#page-manpower .manpower-table td:nth-child(14){min-width:150px!important}
/* Review edit dialog: keep checkboxes beside labels, not floating in separate grid cells. */
dialog:has(.review-form-grid){box-sizing:border-box!important;width:min(850px,96vw)!important;max-height:90vh!important;padding:20px 24px!important}
dialog:has(.review-form-grid) .review-form-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px 18px!important;align-items:start!important}
dialog:has(.review-form-grid) .review-form-grid>label{min-width:0!important;line-height:1.45!important}
dialog:has(.review-form-grid) .review-form-grid>label:has(> input[type=checkbox]){display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:9px!important;min-height:32px!important;white-space:normal!important;cursor:pointer!important}
dialog:has(.review-form-grid) .review-form-grid>label>input[type=checkbox]{display:inline-block!important;flex:0 0 16px!important;width:16px!important;height:16px!important;min-width:16px!important;margin:0!important;padding:0!important;vertical-align:middle!important;appearance:auto!important}
dialog:has(.review-form-grid) .review-form-grid input:not([type=checkbox]),dialog:has(.review-form-grid) .review-form-grid textarea{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;margin:5px 0 0!important}
dialog:has(.review-form-grid) form>div:last-of-type:has(button){gap:12px!important;align-items:center!important;flex-wrap:wrap!important}
dialog:has(.review-form-grid) form>div:last-of-type button{margin:0!important;min-width:82px!important}
/* Shared form/action button groups, including review and personnel toolbars. */
#page-manpower .card>div:first-child:has(#mpAddPerson){gap:10px!important;flex-wrap:wrap!important}
#page-manpower .module-toolbar{column-gap:10px!important;row-gap:10px!important}
@media(max-width:760px){dialog:has(.review-form-grid) .review-form-grid{grid-template-columns:1fr!important}dialog:has(.review-form-grid){padding:15px!important}}

/* V4 review dialog form control alignment: explicit class instead of :has-only inference. */
dialog.kpams-review-dialog{box-sizing:border-box!important;width:min(850px,96vw)!important;max-height:90vh!important;padding:22px 24px!important}
dialog.kpams-review-dialog .review-form-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:15px 20px!important;align-items:start!important}
dialog.kpams-review-dialog .review-form-grid>label{min-width:0!important;line-height:1.5!important}
dialog.kpams-review-dialog .review-form-grid>label.review-check-option{display:flex!important;flex-direction:row!important;justify-content:flex-start!important;align-items:center!important;gap:10px!important;min-height:38px!important;padding:5px 2px!important;white-space:normal!important;cursor:pointer!important}
dialog.kpams-review-dialog .review-form-grid>label.review-check-option>input[type=checkbox]{display:block!important;position:static!important;float:none!important;flex:0 0 17px!important;width:17px!important;height:17px!important;min-width:17px!important;max-width:17px!important;margin:0!important;padding:0!important;appearance:auto!important;box-sizing:border-box!important}
dialog.kpams-review-dialog .review-check-option .review-check-label{display:inline!important;flex:1 1 auto!important;min-width:0!important;font-size:13px!important;line-height:1.45!important}
dialog.kpams-review-dialog .review-form-grid input:not([type=checkbox]),dialog.kpams-review-dialog .review-form-grid textarea,dialog.kpams-review-dialog .review-form-grid select{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;margin:6px 0 0!important}
dialog.kpams-review-dialog .review-dialog-actions{display:flex!important;justify-content:flex-end!important;align-items:center!important;gap:12px!important;flex-wrap:wrap!important;margin-top:18px!important}
dialog.kpams-review-dialog .review-dialog-actions>button{display:inline-flex!important;justify-content:center!important;align-items:center!important;min-width:106px!important;min-height:36px!important;padding:8px 14px!important;margin:0!important;white-space:nowrap!important}
@media(max-width:760px){dialog.kpams-review-dialog{padding:15px!important}dialog.kpams-review-dialog .review-form-grid{grid-template-columns:1fr!important}}

.ongoing-kpi.stage-flow-renotice{background:#fff0e0!important;border:1px solid #efcfab!important;color:#96540c!important}

/* Patch: 사업관리 KPI 10개를 한 줄로 표시하고 결과대기는 보라색으로 통일 */
#page-ongoing .ongoing-kpis-inline{display:grid!important;grid-template-columns:repeat(9,minmax(0,1fr)) minmax(100px,1.50fr)!important;gap:4px!important;flex-wrap:nowrap!important;width:100%!important;min-width:0!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi{box-sizing:border-box!important;min-width:0!important;min-height:43px!important;padding:6px 2px!important;text-align:center!important;margin:0!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi b{font-size:clamp(11px,1.03vw,16px)!important;white-space:nowrap!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi span{font-size:clamp(8px,.69vw,10px)!important;letter-spacing:-.45px!important;white-space:nowrap!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi[data-summary-kpi="amount"] span{font-size:clamp(7px,.62vw,9px)!important}
#page-ongoing .ongoing-kpis-inline .ongoing-kpi[data-kpi="waiting"],
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting{background:#eee6ff!important;border-color:#d4c1f4!important;color:#60369a!important}
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting b,
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting span{color:#60369a!important}
#page-ongoing .ongoing-kpis-inline .stage-flow-waiting:hover{background:#e4d8fa!important;border-color:#c4adee!important}
#page-ongoing .badge.status-waiting, #page-ongoing .status-waiting,
#page-quality .badge.status-waiting, #page-quality .status-waiting{background:#eee6ff!important;border-color:#d4c1f4!important;color:#60369a!important}
@media (max-width:780px){#page-ongoing .ongoing-kpis-inline{overflow-x:auto!important;grid-template-columns:repeat(9,minmax(58px,1fr)) minmax(105px,1.5fr)!important}}

/* Review dialog: fixed PDF control positions and visible close action */
dialog.kpams-review-dialog {position:relative!important;}
dialog.kpams-review-dialog .review-dialog-close {position:sticky;top:0;float:right;z-index:12;width:32px;height:32px;min-width:32px;padding:0!important;display:grid!important;place-items:center;border:1px solid #c5d2dc;border-radius:7px;background:#f1f5f9;color:#243b53;font-size:23px;line-height:1;cursor:pointer;margin:-8px -8px 3px 8px;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-file-row {display:flex;align-items:center;gap:10px;min-width:0;margin-top:9px;flex-wrap:wrap;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-file-row input[type=file] {max-width:265px;min-width:180px;flex:0 1 265px;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-info {flex:1 1 225px;min-width:0;overflow-wrap:anywhere;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions {display:flex!important;align-items:center;justify-content:flex-start;gap:10px;flex-wrap:nowrap;margin-top:10px;}
dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions button {flex:0 0 90px;min-width:90px;max-width:110px;text-align:center;white-space:nowrap;padding:7px 8px;}
@media(max-width:440px){dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions{gap:5px;}dialog.kpams-review-dialog .kpams-review-attachment .kpams-minutes-actions button{flex:1 1 0;min-width:0;}}
