:root{--bg:#0f172a;--panel:#fff;--line:#e2e8f0;--muted:#64748b;--blue:#2563eb;--red:#dc2626;--green:#16a34a;--orange:#ea580c;--text:#0f172a}
*{box-sizing:border-box} body{margin:0;font-family:Inter,Arial,sans-serif;background:#f1f5f9;color:var(--text)}
.app{display:flex;min-height:100vh}.sidebar{width:280px;background:linear-gradient(180deg,#0f172a,#020617);color:#fff;padding:22px;position:fixed;inset:0 auto 0 0}
.brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.logo{width:48px;height:48px;border-radius:15px;background:linear-gradient(135deg,#2563eb,#22c55e);display:grid;place-items:center;font-weight:900}.logo.big{width:66px;height:66px;font-size:24px}
.brand h2{margin:0;font-size:20px}.brand span,.side-card p{color:#cbd5e1}.side-card{position:absolute;left:22px;right:22px;bottom:22px;background:#ffffff12;border:1px solid #ffffff18;border-radius:16px;padding:14px}
nav{display:grid;gap:8px}.nav{background:transparent;color:#cbd5e1;border:1px solid transparent;padding:12px 14px;border-radius:12px;text-align:left;font-weight:900;cursor:pointer}.nav.active,.nav:hover{background:#ffffff14;color:white;border-color:#ffffff25}
.content{margin-left:280px;width:calc(100% - 280px);padding:22px}.top{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:18px}.top h1{margin:0;font-size:30px}.top p{margin:4px 0 0;color:var(--muted)}
.top-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}button{border:0;border-radius:12px;background:#e2e8f0;color:#0f172a;padding:10px 13px;font-weight:900;cursor:pointer}button:disabled{opacity:.65;cursor:not-allowed}button.primary{background:var(--blue);color:white}button.danger{background:var(--red);color:white}.ghost{background:#fee2e2!important;color:#991b1b!important}
body[data-active-view="inventory"] .global-work-control{display:none!important}
input,select,textarea{border:1px solid var(--line);border-radius:11px;padding:10px;background:white;color:var(--text);font:inherit}textarea{min-height:90px;resize:vertical}.view{display:none}.view.active{display:block}.hidden{display:none!important}
.badge{padding:9px 12px;background:#ecfeff;border:1px solid #a5f3fc;color:#155e75;border-radius:999px;font-weight:900;font-size:13px}
.sync-note{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;padding:11px 13px;border-radius:14px;font-size:13px;font-weight:900;margin-bottom:14px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;margin-bottom:14px}.kpi,.panel,.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:0 10px 25px #0f172a08}.kpi span{color:var(--muted);font-size:13px;font-weight:900;text-transform:uppercase}.kpi strong{display:block;font-size:32px;margin-top:5px}.kpi small{display:block;color:var(--muted);font-weight:800;margin-top:2px}
.grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:14px;margin-bottom:14px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.panel-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:14px}.panel-head h3{margin:0}.panel-head span{color:var(--muted);font-size:13px}.bars,.suggestions,.mini-chart,.list,.cards{display:grid;gap:10px}
.bar-row{display:grid;grid-template-columns:140px 1fr 150px;gap:10px;align-items:center}.bar-row small{display:block;color:var(--muted);font-weight:800;margin-top:4px}.bar{height:18px;background:#e2e8f0;border-radius:999px;overflow:hidden}.bar span{display:block;height:100%;background:linear-gradient(90deg,#22c55e,#2563eb);border-radius:999px}.bar.warn span{background:linear-gradient(90deg,#facc15,#f97316)}.bar.bad span{background:linear-gradient(90deg,#fb7185,#dc2626)}
.suggestion{border-radius:14px;padding:12px;border:1px solid var(--line);background:#f8fafc}.suggestion.good{border-left:6px solid #16a34a}.suggestion.warn{border-left:6px solid #ea580c}.suggestion.bad{border-left:6px solid #dc2626}.suggestion p{margin:0;color:#334155;font-size:13px}.suggestion strong{display:block;margin-bottom:4px}
.chart-row{display:grid;grid-template-columns:100px 1fr 40px;gap:8px;align-items:center;font-size:13px}.chart-track{height:12px;background:#e2e8f0;border-radius:999px;overflow:hidden}.chart-track span{display:block;height:100%;background:#2563eb;border-radius:999px}
.board-toolbar{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;margin-bottom:14px;display:flex;justify-content:space-between;gap:12px;align-items:center}.board-toolbar span{display:block;color:var(--muted);font-size:13px;margin-top:3px}.toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.active-toggle{background:#2563eb!important;color:white!important}.range-pill{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;border-radius:999px;padding:9px 12px;font-weight:900}
.table-wrap{max-height:calc(100vh - 170px);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 10px 25px #0f172a08}table{width:100%;border-collapse:separate;border-spacing:0;min-width:1200px}th,td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top}th{background:#0f172a;color:white;padding:10px;position:sticky;top:0;z-index:10}.date-cell{position:sticky;left:0;z-index:5;width:90px;background:#f8fafc;font-weight:900;text-align:center;padding:10px}.day-row.weekend td,.day-row.weekend .date-cell{background:#111827;color:#cbd5e1}.day-row.past td,.day-row.past .date-cell{background:#f1f5f9;color:#94a3b8}.day-row.today .date-cell{box-shadow:inset 4px 0 0 var(--blue)}th:first-child{left:0;z-index:15}.member-head{z-index:12!important}
.member-cell{min-width:310px;padding:10px;background:#fff}.cell-stack{display:grid;gap:8px}.category-bar{display:flex;justify-content:space-between;align-items:center;padding:7px 9px;border-radius:12px;background:#e2e8f0;font-size:12px;font-weight:900;color:#334155}.project-card{border-radius:12px;padding:8px;border:1px solid var(--line);background:#fff;text-align:left;cursor:pointer}.project-card:hover{outline:2px solid #60a5fa}.project-card h4{margin:0 0 4px;font-size:13px}.project-card p{margin:0;font-size:11px;color:#475569}.project-card.done{opacity:.78;border-color:#86efac;box-shadow:inset 4px 0 0 #16a34a}.c1{background:#dcfce7!important}.c2{background:#bfdbfe!important}.c3{background:#fef08a!important}.c4{background:#fed7aa!important}.c5{background:#fecaca!important}.add-mini{width:100%;padding:8px;border-radius:10px;background:#eef2ff;color:#1d4ed8;border:1px dashed #93c5fd}.off-card{border-radius:12px;padding:8px;background:#e9d5ff;color:#581c87;font-weight:900;font-size:12px}.locked{opacity:.72;cursor:not-allowed!important}.tag{display:inline-block;padding:3px 7px;border-radius:999px;background:#e0f2fe;font-size:11px;font-weight:900;margin-left:4px}
.search{width:100%;margin:0}.filters{display:grid;grid-template-columns:190px 1fr 160px 160px auto;gap:10px;margin-bottom:14px}.result-count{font-weight:900;color:#334155;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0}.list-item{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:12px;background:#f8fafc}.list-item.urgent{border-left:6px solid #dc2626;background:#fff7ed}.list-item h4{margin:0 0 4px}.list-item p{margin:0;color:var(--muted);font-size:13px}.cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.card h3{margin:0 0 8px}.card p{margin:4px 0;color:#334155}.swatch{width:18px;height:18px;border-radius:6px;display:inline-block;vertical-align:-3px;margin-right:6px}
.modal{position:fixed;inset:0;background:#0f172acc;display:grid;place-items:center;z-index:100;padding:20px}.modal-card{background:white;border-radius:22px;width:min(850px,100%);max-height:90vh;overflow:auto;box-shadow:0 30px 80px #0005}.modal-card.small{width:min(460px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:16px 18px}.modal-head h3{margin:0}.modal-head button{font-size:22px;padding:4px 10px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:18px}.form-grid.one{grid-template-columns:1fr}.form-grid label{display:grid;gap:6px;font-weight:900;font-size:13px}.form-grid .full{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding:16px 18px}.field-note{color:var(--muted);margin:-8px 18px 4px;font-weight:800}
.login-screen{position:fixed;inset:0;z-index:9999;background:radial-gradient(circle at top left,#2563eb66,transparent 32%),linear-gradient(135deg,#0f172a,#020617);display:flex;align-items:center;justify-content:center;padding:20px}.login-card{width:min(430px,100%);background:white;border-radius:24px;padding:28px;box-shadow:0 35px 90px #0008}.login-card h1{margin:0}.login-card p{color:var(--muted)}.login-card label{display:grid;gap:6px;font-weight:900;margin:12px 0;font-size:13px}.login-card button{width:100%;margin-top:8px}.error{color:#dc2626!important;font-weight:900;min-height:18px}.error.ok{color:#166534!important}.remember-row{display:flex!important;grid-template-columns:none!important;align-items:center;gap:8px!important;color:#334155}.remember-row input{width:auto!important}
.hidden-by-role{display:none!important}
@media(max-width:980px){.sidebar{position:static;width:100%}.app{display:block}.content{margin:0;width:100%}.top{display:block}.top-actions{justify-content:flex-start;margin-top:12px}.grid-2,.grid-3,.kpis{grid-template-columns:1fr}}
@media print{.sidebar,.top,.no-print,#dashboard,#mywork,#calendar,#projects,#team,#users,#audit{display:none!important}.content{margin:0;width:100%;padding:0}#reports{display:block!important}.report-page{border:0;box-shadow:none;padding:0}.report-table th,.report-table td{font-size:9px;padding:5px}.report-cards{grid-template-columns:repeat(3,1fr)}@page{size:landscape;margin:.25in}}

.pto-block{
  background:#fee2e2!important;
  color:#991b1b!important;
  border:1px solid #fca5a5!important;
}
.blocked-day{
  background:#fef2f2!important;
}
.smart-alert{
  border-radius:14px;
  padding:12px;
  border:1px solid #fed7aa;
  background:#fff7ed;
  color:#9a3412;
  font-weight:800;
  margin-bottom:8px;
}
.week-highlight td,.week-highlight .date-cell{
  box-shadow:inset 0 0 0 2px #2563eb55;
}

.hosting-error{
  position:fixed;
  left:20px;
  right:20px;
  bottom:20px;
  background:#fee2e2;
  border:1px solid #fca5a5;
  color:#991b1b;
  padding:12px 14px;
  border-radius:12px;
  z-index:99999;
  font-weight:900;
}

/* V11 Login Lock Fix */
body.auth-locked .app{
  display:none!important;
}
body.auth-locked #loginScreen{
  display:flex!important;
}
body.logged-in #loginScreen{
  display:none!important;
}
body.logged-in .app{
  display:flex!important;
}
#loginScreen{
  position:fixed!important;
  inset:0!important;
  z-index:99999!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:radial-gradient(circle at top left,#2563eb66,transparent 32%),linear-gradient(135deg,#0f172a,#020617)!important;
  padding:20px!important;
}
#loginScreen .login-card{
  background:#fff!important;
  color:#0f172a!important;
  border-radius:24px!important;
  padding:28px!important;
  width:min(430px,92vw)!important;
  box-shadow:0 35px 90px rgba(0,0,0,.45)!important;
}
#loginScreen input{
  width:100%!important;
}
#loginScreen button{
  width:100%!important;
  margin-top:8px!important;
}

.server-status{
  padding:8px 11px;
  border-radius:999px;
  background:#ecfdf5;
  border:1px solid #bbf7d0;
  color:#166534;
  font-size:12px;
  font-weight:900;
}
.server-status.offline{
  background:#fef2f2;
  border-color:#fecaca;
  color:#991b1b;
}
.segmented{display:flex;gap:8px;margin:-4px 0 14px;flex-wrap:wrap}
.segmented button{padding:8px 12px}

.alert-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(160px,1fr));
  gap:14px;
  margin-bottom:14px;
}
.alert-card{
  background:#fff;
  border:1px solid var(--line);
  border-left:6px solid #2563eb;
  border-radius:16px;
  padding:14px;
  box-shadow:0 10px 25px #0f172a08;
}
.alert-card.good{border-left-color:#16a34a}
.alert-card.warn{border-left-color:#ea580c}
.alert-card.bad{border-left-color:#dc2626}
.alert-card b{display:block;color:#475569;text-transform:uppercase;font-size:12px}
.alert-card strong{display:block;font-size:30px;margin:3px 0}
.alert-card span,.alert-card p{display:block;margin:4px 0 0;color:var(--muted);font-size:12px;font-weight:800}
.done-tag{background:#dcfce7;color:#166534}
.mywork-filters{
  grid-template-columns:1fr;
  margin-bottom:10px;
}
.personal-calendar-wrap table,
#myWorkCalendarTable,
.compact-calendar{
  min-width:0!important;
}
.personal-calendar-wrap .member-cell,
.compact-calendar .member-cell{
  min-width:0;
}
.quick-done{
  width:100%;
  margin-top:7px;
  padding:8px;
  border-radius:10px;
  background:#dcfce7;
  color:#166534;
  border:1px solid #86efac;
}
.history-box{
  border-top:1px solid var(--line);
  padding:14px 18px;
}
.history-box h4{margin:0 0 10px}
.history-row{
  border:1px solid var(--line);
  background:#f8fafc;
  border-radius:12px;
  padding:10px;
  margin-bottom:8px;
}
.history-row span{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.history-row p{margin:6px 0 0;color:#334155;font-size:13px}
.import-summary{
  padding:18px;
  color:#334155;
}
.kpi-lite{
  border:1px solid var(--line);
  background:#f8fafc;
  border-radius:14px;
  padding:14px;
}
.kpi-lite p{margin:8px 0 0}
.report-page{
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
  padding:22px;
  box-shadow:0 10px 25px #0f172a08;
}
.report-title{
  border-bottom:2px solid var(--line);
  margin-bottom:16px;
  padding-bottom:12px;
}
.report-title h2{margin:0}
.report-title p{margin:6px 0 0;color:var(--muted);font-weight:800}
.report-cards{
  display:grid;
  grid-template-columns:repeat(3,minmax(140px,1fr));
  gap:10px;
  margin-bottom:14px;
}
.report-card{
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px;
  background:#f8fafc;
}
.report-card span{display:block;color:var(--muted);font-size:12px;font-weight:900;text-transform:uppercase}
.report-card strong{display:block;font-size:28px;margin-top:4px}
.report-card small{display:block;color:#475569;font-weight:800}
.report-table{
  width:100%;
  border-collapse:collapse;
  min-width:0;
}
.report-table th,.report-table td{
  border:1px solid var(--line);
  padding:8px;
  text-align:left;
  vertical-align:top;
  font-size:12px;
}
.report-table th{
  background:#0f172a;
  color:#fff;
  position:static;
}
@media(max-width:980px){
  .filters,.alert-grid,.report-cards{grid-template-columns:1fr}
  .board-toolbar{display:block}
  .toolbar-actions{margin-top:10px}
}

/* Responsive hardening 2026-06-28 */
html,body{
  max-width:100%;
  overflow-x:hidden;
}
button,input,select,textarea{
  max-width:100%;
}
.app,.content,.top,.panel,.card,.kpi,.list-item,.project-card,.report-page{
  min-width:0;
}
.top > div:first-child{
  min-width:0;
}
.top-actions select,.top-actions input,.top-actions button{
  min-height:40px;
}
.table-wrap{
  width:100%;
  -webkit-overflow-scrolling:touch;
}
.project-card h4,.project-card p,.list-item h4,.list-item p,.card p,.suggestion p{
  overflow-wrap:anywhere;
}
.report-page{
  overflow-x:auto;
}
.report-table{
  min-width:720px;
}

@media(max-width:1280px){
  .content{
    padding:18px;
  }
  .top{
    align-items:flex-start;
  }
  .top-actions{
    max-width:760px;
  }
  .kpis{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .alert-grid,.grid-3{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .filters{
    grid-template-columns:180px minmax(220px,1fr) 150px 150px auto;
  }
}

@media(max-width:1100px){
  .grid-2{
    grid-template-columns:1fr;
  }
  .bar-row{
    grid-template-columns:130px 1fr 120px;
  }
  .filters,.report-filters{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .filters button,.report-filters button{
    width:100%;
  }
}

@media(max-width:980px){
  body.logged-in .app{
    display:block!important;
  }
  .sidebar{
    position:sticky;
    top:0;
    z-index:60;
    width:100%;
    inset:auto;
    padding:12px;
    border-bottom:1px solid #1e293b;
  }
  .brand{
    margin-bottom:10px;
  }
  .brand .logo{
    width:38px;
    height:38px;
    border-radius:11px;
  }
  .brand h2{
    font-size:16px;
  }
  .brand span{
    display:none;
  }
  .side-card{
    display:none;
  }
  nav{
    display:flex;
    gap:8px;
    overflow-x:auto;
    padding-bottom:3px;
    scrollbar-width:none;
    -ms-overflow-style:none;
  }
  nav::-webkit-scrollbar{display:none}
  .nav{
    flex:0 0 auto;
    padding:10px 12px;
    white-space:nowrap;
  }
  .content{
    margin:0;
    width:100%;
    padding:14px;
  }
  .top{
    display:grid;
    gap:12px;
    margin-bottom:14px;
  }
  .top h1{
    font-size:26px;
  }
  .top-actions{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
    max-width:none;
    justify-content:stretch;
    margin-top:0;
  }
  .top-actions > *{
    width:100%;
    min-width:0;
  }
  .badge,.server-status{
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    min-height:40px;
  }
  .sync-note{
    font-size:12px;
    line-height:1.35;
  }
  .grid-2,.grid-3,.kpis,.alert-grid,.report-cards{
    grid-template-columns:1fr;
  }
  .board-toolbar{
    display:grid;
    gap:12px;
  }
  .toolbar-actions{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
    margin-top:0;
    align-items:stretch;
  }
  .toolbar-actions > *{
    width:100%;
    min-width:0;
  }
  .toolbar-actions .range-pill{
    grid-column:1/-1;
    text-align:center;
  }
  .panel-head{
    display:grid;
    gap:8px;
  }
  .panel-head button{
    width:100%;
  }
  .filters,.report-filters{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .filters > *,.report-filters > *{
    width:100%;
    min-width:0;
  }
  .table-wrap{
    max-height:65vh;
    border-radius:14px;
  }
  table{
    min-width:900px;
  }
  #calendarTable{
    min-width:980px;
  }
  .personal-calendar-wrap table{
    min-width:620px;
  }
  .member-cell{
    min-width:225px;
    padding:8px;
  }
  .date-cell{
    width:78px;
    padding:8px;
  }
  th{
    padding:8px;
  }
  .form-grid{
    grid-template-columns:1fr;
    padding:14px;
  }
  .form-grid .full{
    grid-column:auto;
  }
  .modal{
    padding:10px;
    align-items:start;
    place-items:start center;
  }
  .modal-card,.modal-card.small{
    width:100%;
    max-height:calc(100vh - 20px);
    border-radius:16px;
  }
  .modal-head{
    padding:13px 14px;
  }
  .modal-actions{
    flex-wrap:wrap;
    padding:13px 14px;
  }
  .modal-actions button{
    flex:1 1 140px;
  }
  .history-box{
    padding:12px 14px;
  }
  .list-item{
    grid-template-columns:1fr;
  }
  .list-item button{
    width:100%;
  }
  .cards{
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  }
}

@media(max-width:720px){
  .top-actions,.toolbar-actions,.filters,.report-filters{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .top h1{
    font-size:24px;
  }
  .panel,.card,.kpi,.report-page{
    border-radius:14px;
    padding:13px;
  }
  .kpi strong,.alert-card strong,.report-card strong{
    font-size:26px;
  }
  .bar-row{
    grid-template-columns:1fr;
    gap:7px;
    align-items:stretch;
  }
  .bar-row b{
    text-align:left;
  }
  .chart-row{
    grid-template-columns:80px 1fr 34px;
  }
  table{
    min-width:760px;
  }
  #calendarTable{
    min-width:860px;
  }
  .personal-calendar-wrap table{
    min-width:520px;
  }
  .member-cell{
    min-width:205px;
  }
  .project-card h4{
    font-size:12px;
  }
  .project-card p{
    font-size:10px;
  }
  .report-table{
    min-width:640px;
  }
  .report-table th,.report-table td{
    font-size:11px;
    padding:6px;
  }
}

@media(max-width:520px){
  .content{
    padding:10px;
  }
  .top-actions,.toolbar-actions,.filters,.report-filters{
    grid-template-columns:1fr;
  }
  .brand{
    gap:9px;
  }
  .brand h2{
    font-size:15px;
  }
  .nav{
    padding:9px 11px;
    font-size:13px;
  }
  .top h1{
    font-size:22px;
  }
  .top p{
    font-size:13px;
  }
  button,input,select,textarea{
    min-height:42px;
  }
  .segmented{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .segmented button{
    width:100%;
    padding:9px 8px;
  }
  .board-toolbar,.panel,.card,.kpi,.report-page,.alert-card{
    border-radius:12px;
    padding:12px;
  }
  .table-wrap{
    max-height:62vh;
  }
  #calendarTable{
    min-width:800px;
  }
  .personal-calendar-wrap table{
    min-width:480px;
  }
  .date-cell{
    width:72px;
  }
  .member-cell{
    min-width:190px;
  }
  .modal-actions button{
    flex-basis:100%;
  }
  .login-card,#loginScreen .login-card{
    padding:22px!important;
    border-radius:18px!important;
  }
}

/* Inventory module */
.inventory-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) 360px;
  gap:14px;
  align-items:start;
}
.inventory-more-tools{
  position:relative;
}
.inventory-more-tools summary{
  list-style:none;
  min-height:40px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 13px;
  border-radius:12px;
  background:#e2e8f0;
  color:#0f172a;
  font-weight:900;
  cursor:pointer;
  user-select:none;
}
.inventory-more-tools summary::-webkit-details-marker{display:none}
.inventory-more-tools summary::after{content:"+";margin-left:7px;font-size:12px}
.inventory-more-tools[open] summary::after{content:"-"}
.inventory-more-menu{
  position:absolute;
  right:0;
  top:calc(100% + 7px);
  z-index:80;
  width:210px;
  padding:8px;
  display:grid;
  gap:7px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:0 16px 38px #0f172a24;
}
.inventory-more-menu button{width:100%;text-align:left}
.inventory-side{
  display:grid;
  gap:14px;
}
.inventory-subpanel{
  box-shadow:none;
}
.inventory-item{
  content-visibility:auto;
  contain-intrinsic-size:150px;
  display:grid;
  grid-template-columns:96px minmax(0,1fr) auto;
  gap:12px;
  align-items:start;
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px;
  background:#f8fafc;
}
.inventory-photo{
  width:96px;
  aspect-ratio:1;
  border-radius:12px;
  border:1px solid var(--line);
  background:#e2e8f0;
  color:#64748b;
  display:grid;
  place-items:center;
  font-size:12px;
  font-weight:900;
  overflow:hidden;
  text-align:center;
  cursor:pointer;
}
.inventory-photo.empty{
  cursor:default;
}
.inventory-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.inventory-photo.empty{
  background:#f1f5f9;
}
.inventory-photo-preview{
  display:none;
  border:1px solid var(--line);
  border-radius:12px;
  background:#f8fafc;
  padding:10px;
}
.inventory-photo-preview.active{
  display:flex;
  align-items:center;
  gap:12px;
}
.inventory-photo-preview img{
  width:96px;
  height:96px;
  object-fit:cover;
  border-radius:10px;
  border:1px solid var(--line);
}
.inventory-photo-preview span{
  color:#475569;
  font-weight:900;
  overflow-wrap:anywhere;
}
.image-modal-card{
  width:min(980px,100%);
}
.image-viewer{
  padding:14px;
  background:#020617;
  display:grid;
  place-items:center;
}
.image-viewer img{
  display:block;
  max-width:100%;
  max-height:78vh;
  object-fit:contain;
  border-radius:12px;
  background:#fff;
}
.inventory-main h4{
  margin:0 0 5px;
}
.inventory-main p{
  margin:3px 0;
  color:#475569;
  font-size:13px;
}
.stock-chips{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:8px;
}
.stock-chip{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:5px 8px;
  border-radius:999px;
  background:#ecfdf5;
  border:1px solid #bbf7d0;
  color:#166534;
  font-size:12px;
  font-weight:900;
}
.stock-chip.empty{
  background:#f1f5f9;
  border-color:#e2e8f0;
  color:#64748b;
}
.inventory-actions{
  display:grid;
  gap:8px;
  min-width:120px;
}
.inventory-actions button{
  width:100%;
}
.compact-list{
  gap:8px;
}
.mini-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:8px;
}
.mini-actions button{
  padding:8px 10px;
}
.stock-edit-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:10px;
}
.stock-edit-grid label{
  display:grid;
  gap:6px;
  font-weight:900;
  font-size:13px;
}
.inline-note{
  display:block;
  margin:8px 0 0;
}
.inventory-report-filters{
  grid-template-columns:1fr;
  margin:0 0 10px;
}
.inventory-report-row strong{
  display:block;
  font-size:14px;
}
.inventory-report-row .stock-chip{
  margin-top:6px;
}
.inventory-top-btn{
  position:fixed;
  right:18px;
  bottom:18px;
  z-index:120;
  display:none;
  border:0;
  border-radius:999px;
  padding:12px 16px;
  background:#0f172a;
  color:#fff;
  font-weight:900;
  box-shadow:0 14px 34px #0f172a3a;
}
.inventory-top-btn.show{
  display:block;
}

@media(max-width:1180px){
  .inventory-layout{
    grid-template-columns:1fr;
  }
}

@media(max-width:760px){
  #inventory .board-toolbar{
    display:grid;
    gap:10px;
  }
  #inventory .toolbar-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }
  #inventory .toolbar-actions button{
    min-height:44px;
    width:100%;
  }
  #inventory .toolbar-actions .primary{
    grid-column:1/-1;
    min-height:50px;
    font-size:16px;
  }
  #inventory .inventory-more-tools{
    grid-column:1/-1;
  }
  #inventory .inventory-more-tools summary{
    min-height:44px;
  }
  #inventory .inventory-more-menu{
    position:static;
    width:100%;
    margin-top:8px;
    box-shadow:none;
  }
  .inventory-filters{
    grid-template-columns:1fr;
    gap:8px;
  }
  .inventory-filters > *{
    width:100%;
    min-height:44px;
  }
  .inventory-side{
    gap:10px;
  }
  .inventory-subpanel{
    padding:12px;
  }
  .inventory-item{
    grid-template-columns:74px minmax(0,1fr);
    gap:10px;
    padding:12px;
  }
  .inventory-photo{
    width:74px;
  }
  .inventory-main h4{
    font-size:16px;
    line-height:1.25;
  }
  .stock-chips{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .stock-chip{
    justify-content:space-between;
    border-radius:10px;
    min-height:34px;
  }
  .inventory-actions{
    grid-column:1/-1;
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .inventory-actions button{
    min-height:44px;
  }
}

/* V17 project history and field operations. These modules intentionally do not
   reuse calendar classes so their records cannot appear in assignment views. */
.history-intro{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;margin-bottom:16px;border:1px solid #bfdbfe;border-radius:18px;background:linear-gradient(135deg,#eff6ff,#f8fafc)}
body[data-active-view="masterProjects"] .global-work-control,body[data-active-view="fieldOperations"] .global-work-control{display:none!important}
.history-intro div{display:flex;flex-direction:column;gap:4px}.history-intro b{font-size:18px;color:#0f172a}.history-intro span{color:#475569}
.safe-pill{display:inline-flex!important;flex:none;padding:7px 11px;border:1px solid #86efac;border-radius:999px;background:#f0fdf4;color:#166534!important;font-size:12px;font-weight:900;white-space:nowrap}
.history-kpis{margin-bottom:16px}.history-row,.field-operation-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:15px 16px;border:1px solid #e2e8f0;border-radius:16px;background:#fff;margin-bottom:10px;transition:.15s ease}
.history-row{cursor:pointer}.history-row:hover,.field-operation-row:hover{border-color:#93c5fd;box-shadow:0 8px 24px rgba(15,23,42,.07);transform:translateY(-1px)}
.history-row-main{min-width:0}.history-row-main>div:first-child{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.history-row-main b{font-size:15px;color:#0f172a}.history-row-main small{display:block;margin-top:4px;color:#64748b}.history-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px;color:#475569;text-align:right}.history-row-side small{color:#64748b}
.history-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.history-tags span{display:inline-block;padding:4px 7px;border-radius:8px;background:#f1f5f9;color:#334155;font-size:11px;font-weight:700}
.status-chip{display:inline-flex;padding:4px 7px;border-radius:999px;background:#e0f2fe;color:#075985;font-size:11px;font-weight:900}.status-chip.done{background:#dcfce7;color:#166534}.status-chip.warn{background:#fef3c7;color:#92400e}.status-chip.bad{background:#fee2e2;color:#991b1b}
.history-pagination{display:flex;justify-content:flex-end;align-items:center;gap:10px;padding-top:10px}.history-pagination span{min-width:140px;text-align:center;color:#64748b;font-size:12px;font-weight:800}
.import-panel{margin-top:16px}.import-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0 14px}.import-steps span{padding:10px;border-radius:10px;background:#f8fafc;color:#334155;font-size:12px;font-weight:800;text-align:center}.import-actions{justify-content:flex-start;margin-top:12px}.import-progress{min-height:20px;margin-top:10px;color:#475569;font-weight:800}.import-progress.ok{color:#166534}.import-progress.error{color:#b91c1c}.import-review{margin-top:14px}
.dryrun-banner{display:flex;flex-direction:column;gap:4px;padding:13px 15px;border-radius:14px;margin-bottom:12px}.dryrun-banner.ready{background:#ecfdf5;border:1px solid #86efac;color:#166534}.dryrun-banner.blocked{background:#fff7ed;border:1px solid #fdba74;color:#9a3412}.dryrun-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.dryrun-grid>div{display:flex;flex-direction:column;padding:11px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0}.dryrun-grid span{font-size:11px;color:#64748b}.dryrun-grid b{margin-top:3px;font-size:18px;color:#0f172a}.match-review{max-height:280px;overflow:auto;margin-top:8px}.match-review>div{display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid #e2e8f0}.match-review span{font-size:12px;color:#64748b}
.field-tabs{margin:0 0 12px}.field-operation-filters{grid-template-columns:minmax(220px,2fr) 1fr 1fr auto}.field-operation-row{grid-template-columns:90px minmax(0,1fr) auto}.operation-type{align-self:stretch;display:flex;align-items:center;justify-content:center;padding:10px 6px;border-radius:12px;font-size:11px;font-weight:950;text-align:center;text-transform:uppercase;letter-spacing:.04em}.operation-type.startup{background:#dbeafe;color:#1d4ed8}.operation-type.visit{background:#ede9fe;color:#6d28d9}
.history-detail-card{width:min(1000px,95vw);max-height:90vh;overflow:auto}.master-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.master-overview>div{display:flex;flex-direction:column;gap:4px;padding:11px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0}.master-overview .wide{grid-column:span 2}.master-overview span{font-size:11px;color:#64748b;font-weight:800;text-transform:uppercase}.master-overview b{font-size:13px;color:#0f172a;overflow-wrap:anywhere}.detail-section{margin-top:18px}.detail-section h4{display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid #e2e8f0}.detail-section h4 span{padding:3px 7px;border-radius:999px;background:#e2e8f0;font-size:11px}.timeline-row{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;padding:12px 0}.timeline-row:not(:last-child):before{content:"";position:absolute;left:6px;top:25px;bottom:-9px;width:2px;background:#dbeafe}.timeline-dot{position:relative;z-index:1;width:14px;height:14px;margin-top:3px;border:3px solid #bfdbfe;border-radius:50%;background:#2563eb}.timeline-dot.field{border-color:#ddd6fe;background:#7c3aed}.timeline-row small{display:block;color:#64748b;margin-top:2px}
.project-link-field{position:relative}.project-match-list{position:absolute;z-index:15;left:0;right:0;top:70px;max-height:250px;overflow:auto;background:#fff;border:1px solid #cbd5e1;border-radius:12px;box-shadow:0 16px 35px rgba(15,23,42,.18)}.project-match-list:empty{display:none}.project-match-list button{display:flex;width:100%;flex-direction:column;align-items:flex-start;padding:10px 12px;border:0;border-bottom:1px solid #e2e8f0;border-radius:0;background:#fff;text-align:left}.project-match-list button:hover{background:#eff6ff}.project-match-list small{color:#64748b}.field-note.selected{color:#166534;font-weight:900}.error-box{color:#b91c1c!important}
.phase-identifier-table{overflow:hidden;border:1px solid #dbeafe;border-radius:14px}.phase-identifier-table>div{display:grid;grid-template-columns:1.1fr 1.1fr 1fr 110px;gap:10px;align-items:center;padding:9px 11px;border-bottom:1px solid #e2e8f0}.phase-identifier-table>div:last-child{border-bottom:0}.phase-identifier-table .phase-identifier-head{background:#eff6ff;color:#1e3a8a;font-size:11px;font-weight:900;text-transform:uppercase}.phase-identifier-table strong{color:#0f172a}.phase-identifier-table span{color:#475569;font-size:12px}
.resolver-panel{margin-top:14px;padding:12px;border:1px solid #fdba74;border-radius:14px;background:#fffbeb}.resolver-panel summary{cursor:pointer;font-weight:900;color:#9a3412}.resolver-list{max-height:520px;overflow:auto;margin:10px 0}.resolver-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(260px,1.5fr);gap:12px;align-items:center;padding:9px;border-bottom:1px solid #fde68a}.resolver-row>span{display:flex;flex-direction:column}.resolver-row small{color:#78716c}.resolver-row select{width:100%;background:#fff}
@media(max-width:900px){.history-intro{align-items:flex-start;flex-direction:column}.import-steps,.dryrun-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.master-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.field-operation-filters{grid-template-columns:1fr 1fr}.field-operation-row{grid-template-columns:76px minmax(0,1fr)}}
@media(max-width:620px){.history-row,.field-operation-row,.resolver-row{grid-template-columns:1fr}.history-row-side{align-items:flex-start;text-align:left}.field-operation-row .history-row-side{align-items:stretch}.operation-type{justify-self:start;align-self:auto}.import-steps,.dryrun-grid,.master-overview,.field-operation-filters{grid-template-columns:1fr}.master-overview .wide{grid-column:span 1}.safe-pill{white-space:normal}.phase-identifier-table>div{grid-template-columns:1fr 1fr}.phase-identifier-table .phase-identifier-head{display:none}}

@media(max-width:520px){
  #inventory .toolbar-actions{
    grid-template-columns:1fr;
  }
  .inventory-item{
    grid-template-columns:1fr;
    background:#fff;
  }
  .inventory-photo{
    width:100%;
    max-width:180px;
  }
  .stock-chips{
    grid-template-columns:1fr;
  }
  .inventory-actions{
    grid-template-columns:1fr;
  }
  .inventory-top-btn{
    right:12px;
    bottom:12px;
    padding:13px 17px;
    font-size:15px;
  }
  .inventory-photo-preview.active{
    display:grid;
  }
  .inventory-photo-preview img{
    width:120px;
    height:120px;
  }
  .image-viewer{
    padding:8px;
  }
  .image-viewer img{
    max-height:72vh;
    border-radius:10px;
  }
}

/* Field technician phone experience */
.field-session .brand{
  margin-bottom:8px;
}
.field-session .inventory-only.nav{
  background:#ffffff18;
  color:#fff;
  border-color:#ffffff25;
}
.field-session #inventory .board-toolbar b{
  font-size:18px;
}
.field-session #inventory .board-toolbar span{
  line-height:1.35;
}
.field-session #inventorySearch{
  font-size:16px;
}
.field-session .inventory-actions .primary{
  box-shadow:0 8px 18px #2563eb22;
}

@media(max-width:720px){
  .field-session .top{
    gap:8px;
  }
  .field-session .top-actions{
    grid-template-columns:1fr 1fr;
  }
  .field-session .top-actions .badge,
  .field-session .top-actions .server-status{
    grid-column:1/-1;
  }
  .field-session #inventory .toolbar-actions{
    grid-template-columns:1fr 1fr;
  }
  .field-session #inventory .toolbar-actions .primary{
    grid-column:1/-1;
    min-height:52px;
    font-size:16px;
  }
  .field-session .inventory-filters{
    grid-template-columns:1fr;
    position:sticky;
    top:112px;
    z-index:25;
    background:#fff;
    border:1px solid var(--line);
    border-radius:12px;
    padding:10px;
    box-shadow:0 10px 22px #0f172a12;
  }
  .field-session .inventory-item{
    gap:10px;
    padding:14px;
    background:#fff;
  }
  .field-session .inventory-main h4{
    font-size:17px;
    line-height:1.25;
  }
  .field-session .inventory-main p{
    font-size:13.5px;
    line-height:1.35;
  }
  .field-session .stock-chips{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .field-session .stock-chip{
    justify-content:space-between;
    min-height:36px;
    border-radius:10px;
    font-size:12.5px;
  }
  .field-session .inventory-actions{
    grid-template-columns:1fr 1fr;
  }
  .field-session .inventory-actions .primary{
    grid-column:1/-1;
    min-height:50px;
    font-size:16px;
  }
}

@media(max-width:430px){
  .field-session .content{
    padding:8px;
  }
  .field-session .top h1{
    font-size:24px;
  }
  .field-session .top-actions{
    grid-template-columns:1fr;
  }
  .field-session #inventory .toolbar-actions{
    grid-template-columns:1fr;
  }
  .field-session .inventory-filters{
    top:104px;
  }
  .field-session .stock-chips{
    grid-template-columns:1fr;
  }
  .field-session .inventory-actions{
    grid-template-columns:1fr;
  }
  .field-session .inventory-photo{
    max-width:150px;
  }
}

/* Inventory ledger synchronization r7 */
.inventory-audit-filters{
  grid-template-columns:minmax(0,1fr) auto;
  margin:0 0 10px;
}
.inventory-audit-row p{
  line-height:1.45;
  overflow-wrap:anywhere;
}
.correction-reason-label{
  margin-top:10px;
}
.correction-reason-label textarea{
  min-height:72px;
}
.inv-stock-input[data-original]{
  font-variant-numeric:tabular-nums;
}
@media(max-width:760px){
  .inventory-audit-filters{
    grid-template-columns:1fr;
  }
  .inventory-audit-filters > *{
    width:100%;
  }
  .inventory-actions{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

/* Quoter request queue */
.request-filters{grid-template-columns:minmax(260px,1fr) 190px 190px auto}
.request-list{display:grid;gap:12px}
.request-card{border:1px solid #dbe4f0;border-radius:16px;padding:16px;background:#fff;box-shadow:0 6px 20px rgba(15,23,42,.05)}
.request-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.request-card-head>div:first-child{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:1.02rem}
.request-card-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.request-meta,.request-details-grid{display:flex;gap:8px 18px;flex-wrap:wrap;margin-top:10px;color:#475569;font-size:.9rem}
.request-details-grid{padding-top:10px;border-top:1px solid #edf2f7}
.request-q-change{color:#9a3412;font-weight:700}
.request-notes{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:#f8fafc;white-space:pre-wrap}
.request-history{margin-top:10px}
.request-history summary{cursor:pointer;color:#334155;font-weight:700}
.request-history ol{margin:10px 0 0;padding-left:20px;display:grid;gap:8px}
.request-history li span,.request-history li small{display:block;color:#64748b;font-size:.82rem}
.request-modal-card{width:min(850px,96vw);max-height:92vh;overflow:auto}
.request-mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px;padding:5px;border-radius:12px;background:#eef2f7}
.request-mode-switch button{border:0;background:transparent}
.request-mode-switch button.active{background:#fff;color:#0f4c81;box-shadow:0 2px 8px rgba(15,23,42,.12)}
.duplicate-review{border-radius:12px}
.duplicate-block{padding:12px;border-radius:12px;border:1px solid #cbd5e1;background:#f8fafc}
.duplicate-block.exact{border-color:#fca5a5;background:#fff1f2;color:#991b1b}
.duplicate-block.similar{border-color:#fdba74;background:#fff7ed;color:#9a3412}
.duplicate-block.clear{border-color:#86efac;background:#f0fdf4;color:#166534}
.duplicate-block p{margin:5px 0 10px}
.duplicate-block.similar>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid rgba(154,52,18,.15)}
.duplicate-block.similar>div small{color:inherit}
.confirm-different{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:9px;margin-top:12px;padding-top:10px;border-top:1px solid rgba(154,52,18,.2)}
.confirm-different input{width:auto!important;margin-top:3px}
.quoter-session #projects .panel-head .staff-only{display:none!important}

@media(max-width:760px){
  .request-filters{grid-template-columns:1fr}
  .request-card-head{display:block}
  .request-card-actions{justify-content:flex-start;margin-top:10px}
  .request-mode-switch{grid-template-columns:1fr}
  .duplicate-block.similar>div{display:block}
}
