:root{--bg:#f4f7fb;--panel:#fff;--ink:#10213f;--muted:#72819a;--line:#e4eaf2;--blue:#2166f3;--blue2:#0d4fd7;--nav:#06295b;--nav2:#0b356f;--good:#22a75a;--warn:#f59e0b;--bad:#e53935;--shadow:0 12px 34px rgba(16,33,63,.08)}
*{box-sizing:border-box}html{background:var(--bg)}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}body{background:var(--bg);overflow-x:hidden}a{color:inherit}.ui-icon{width:22px;height:22px;display:block;flex:none}
.topbar{height:74px;background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:40;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;min-width:0}.brand img{width:42px;height:42px;object-fit:contain}.brand-copy{display:flex;flex-direction:column;line-height:1}.brand-copy strong{font-size:15px;letter-spacing:.03em}.brand-copy small{font-size:11px;color:var(--blue);font-weight:800;letter-spacing:.06em;margin-top:4px}.userchip{display:flex;align-items:center;gap:10px}.userchip>span:last-child{display:flex;flex-direction:column}.userchip strong{font-size:13px}.userchip small{font-size:11px;color:var(--muted);margin-top:2px}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#e9f0ff;color:var(--blue);font-weight:900}.menu-toggle{display:none;border:0;background:transparent;padding:8px;color:var(--ink)}
.shell{display:grid;grid-template-columns:245px minmax(0,1fr);min-height:calc(100vh - 74px)}.sidebar{background:linear-gradient(180deg,var(--nav),#08234b);padding:18px 14px 20px;color:#fff}.sidebar nav{position:sticky;top:92px;display:flex;flex-direction:column;min-height:calc(100vh - 112px)}.sidebar a{display:flex;align-items:center;gap:12px;color:#dce8f9;text-decoration:none;padding:12px 14px;border-radius:11px;margin:3px 0;font-size:14px;font-weight:650}.sidebar a:hover{background:rgba(255,255,255,.08);color:#fff}.sidebar a.active{background:linear-gradient(135deg,#2f72ff,#1d58d8);box-shadow:0 8px 20px rgba(0,0,0,.18);color:#fff}.sidebar .ui-icon{width:21px;height:21px}.navlabel{color:#67a2ff;text-transform:uppercase;font-size:10px;font-weight:900;letter-spacing:.12em;margin:22px 14px 6px}.nav-spacer{flex:1;min-height:28px}.logout-link{margin-top:auto!important;border-top:1px solid rgba(255,255,255,.14);border-radius:0!important;padding-top:18px!important}.mobile-drawer-head{display:none}
.content{padding:28px;max-width:1500px;width:100%;margin:auto}.pagehead{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.pagehead h1{margin:0;font-size:28px;letter-spacing:-.02em}.pagehead p,.card p{margin:5px 0 0;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}.stat,.card,.machinecard{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.stat{padding:18px;display:flex;align-items:flex-start;gap:13px;min-height:124px}.stat-icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:900}.stat span{display:block;color:var(--muted);font-size:12px;font-weight:700}.stat strong{font-size:30px;display:block;margin-top:2px;line-height:1}.stat small{font-size:11px;color:var(--muted);display:block;margin-top:6px}.stat-good{background:linear-gradient(145deg,#fff,#f3fcf6)}.stat-good .stat-icon{background:#e8f8ee;color:var(--good)}.stat-warn{background:linear-gradient(145deg,#fff,#fff9ec)}.stat-warn .stat-icon{background:#fff2d6;color:var(--warn)}.stat-bad{background:linear-gradient(145deg,#fff,#fff3f3)}.stat-bad .stat-icon{background:#fdeaea;color:var(--bad)}.stat-blue{background:linear-gradient(145deg,#fff,#f1f6ff)}.stat-blue .stat-icon{background:#e8f0ff;color:var(--blue)}
.grid2{display:grid;grid-template-columns:1.05fr .95fr;gap:18px}.card{padding:20px;margin-bottom:18px}.card h2{margin:0 0 14px;font-size:18px}.cardhead{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px}.list{display:flex;flex-direction:column}.listrow,.issuerow{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 4px;border-bottom:1px solid var(--line)}.listrow:last-child,.issuerow:last-child{border-bottom:0}.listrow small,td small,.issuerow small{display:block;color:var(--muted);margin-top:3px}.issuerow{align-items:flex-start}.issuerow p{margin:7px 0}.empty{padding:28px;text-align:center;color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:11px 15px;border:1px solid #cbd5e1;background:#fff;color:var(--ink);border-radius:10px;font-weight:800;text-decoration:none;cursor:pointer;transition:.18s ease}.btn:hover{transform:translateY(-1px);box-shadow:0 7px 15px rgba(16,33,63,.08)}.btn.primary{background:linear-gradient(135deg,#2b6ffc,var(--blue2));border-color:var(--blue);color:#fff}.btn.small{padding:7px 10px;font-size:12px}.btn.wide{width:100%;margin-top:14px}.dangerbtn{color:var(--bad)}
.alert{padding:13px 15px;border-radius:12px;margin-bottom:16px}.alert.success{background:#ecfdf5;color:#166534}.alert.danger{background:#fef2f2;color:#991b1b}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:900}.badge.good{background:#e8f8ee;color:#168447}.badge.warn{background:#fff2d6;color:#b86a00}.badge.bad{background:#fdeaea;color:#c52b2b}.badge.neutral{background:#eef2f7;color:#65738a}
.formgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:end}.formgrid .span2{grid-column:span 2}label{font-size:12px;font-weight:800;display:block;margin-bottom:6px}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #cfd8e6;border-radius:10px;background:#fff;color:var(--ink);font:inherit;outline:none;transition:.15s ease}input:focus,select:focus,textarea:focus{border-color:#7fa7ff;box-shadow:0 0 0 3px rgba(33,102,243,.10)}textarea{resize:vertical}.tablewrap{overflow:auto;border-radius:10px}table{width:100%;border-collapse:collapse;min-width:700px}th,td{text-align:left;padding:13px;border-bottom:1px solid var(--line);font-size:13px}th{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#7a879c;background:#f9fbfd}
.machinegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.machinecard{padding:22px;text-decoration:none;display:flex;flex-direction:column;gap:6px;transition:.18s ease}.machinecard:hover{border-color:#93b4ff;transform:translateY(-2px)}.machinecard small{color:var(--muted)}.typeicon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#e9f0ff;color:var(--blue);font-weight:900;margin-bottom:8px}.checkitem{padding:16px 0;border-bottom:1px solid var(--line)}.checklabel{display:grid;grid-template-columns:1fr 260px;gap:14px;align-items:center;margin-bottom:10px}.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.seg label{margin:0}.seg input{position:absolute;opacity:0;pointer-events:none}.seg span{display:block;text-align:center;border:1px solid #d4ddea;border-radius:10px;padding:10px 6px;cursor:pointer;font-weight:800}.seg label:nth-child(1) input:checked+span{background:#e8f8ee;border-color:#9bd6ae;color:#168447}.seg label:nth-child(2) input:checked+span{background:#fff2d6;border-color:#f5c76d;color:#b86a00}.seg label:nth-child(3) input:checked+span{background:#fdeaea;border-color:#efaaaa;color:#c52b2b}
.login-page{display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top right,#174c9d 0,#08295c 35%,#041a39 100%);min-height:100vh}.login-card{width:min(430px,100%);background:#fff;border-radius:24px;padding:32px;box-shadow:0 30px 80px rgba(0,0,0,.28)}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.login-brand img{width:52px;height:52px;object-fit:contain}.login-brand div{display:flex;flex-direction:column}.login-brand strong{font-size:17px}.login-brand span{color:var(--blue);font-size:12px;font-weight:900;letter-spacing:.08em}.login-card h1{font-size:26px;margin:0}.login-card p{color:var(--muted);margin:7px 0 22px}.login-card label{margin-top:12px}.mobilebar,.menu-overlay{display:none}
@media(max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}.machinegrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){body.menu-open{overflow:hidden}.topbar{height:68px;padding:0 14px;background:linear-gradient(180deg,#06295b,#08234b);color:#fff}.menu-toggle{display:block;color:#fff}.topbar .brand{margin-left:2px;margin-right:auto}.topbar .brand img{width:38px;height:38px;filter:brightness(0) invert(1)}.topbar .brand-copy strong{font-size:14px}.topbar .brand-copy small{color:#6ca7ff}.userchip{display:none}.shell{display:block;min-height:calc(100vh - 68px)}.sidebar{position:fixed;top:0;bottom:0;left:0;width:min(84vw,330px);z-index:70;transform:translateX(-104%);transition:transform .24s ease;padding:0 14px 18px;box-shadow:20px 0 55px rgba(0,0,0,.25)}.sidebar.open{transform:translateX(0)}.sidebar nav{position:static;min-height:calc(100vh - 82px);padding-top:10px}.mobile-drawer-head{height:76px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.14);margin:0 -2px 8px}.drawer-brand{display:flex;align-items:center;gap:10px}.drawer-brand img{width:40px;height:40px;object-fit:contain;filter:brightness(0) invert(1)}.drawer-brand span{display:flex;flex-direction:column}.drawer-brand strong{font-size:14px}.drawer-brand small{font-size:10px;color:#70a8ff;font-weight:900;letter-spacing:.08em}.mobile-drawer-head button{border:0;background:transparent;color:#fff;padding:8px}.menu-overlay{position:fixed;inset:0;background:rgba(2,12,28,.52);z-index:65}.menu-overlay.show{display:block}.content{padding:18px 14px 100px}.pagehead{align-items:flex-start}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:15px;min-height:112px}.stat strong{font-size:27px}.grid2,.machinegrid{grid-template-columns:1fr}.formgrid{grid-template-columns:1fr 1fr}.mobilebar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);padding:8px 6px calc(8px + env(safe-area-inset-bottom));z-index:50;box-shadow:0 -10px 26px rgba(16,33,63,.07)}.mobilebar a{text-decoration:none;text-align:center;color:#5f6d82;font-size:18px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;padding:3px 0}.mobilebar .ui-icon{width:21px;height:21px}.mobilebar span{display:block;font-size:10px;font-weight:700}.mobilebar a.active{color:var(--blue)}.checklabel{grid-template-columns:1fr}.seg span{font-size:12px}.nav-spacer{min-height:12px}}
@media(max-width:560px){.topbar{padding:0 10px}.brand-copy strong{font-size:13px!important}.brand-copy small{font-size:9px}.content{padding-left:12px;padding-right:12px}.pagehead{flex-direction:column;margin-bottom:16px}.pagehead h1{font-size:25px}.pagehead p{font-size:14px}.pagehead .btn{width:100%}.stats{grid-template-columns:1fr 1fr}.stat{min-height:108px;display:block}.stat-icon{width:32px;height:32px;font-size:18px;margin-bottom:10px}.stat strong{font-size:26px}.stat small{font-size:10px}.card{padding:16px;border-radius:14px}.formgrid{grid-template-columns:1fr}.formgrid .span2{grid-column:auto}.seg{gap:5px}.seg span{padding:10px 2px}.login-card{padding:26px 22px}.mobilebar span{font-size:9px}.mobilebar a{gap:3px}}

/* Sprint 1.2.1 mobile hardening */
img{max-width:100%;height:auto}.topbar .brand img,.drawer-brand img,.login-brand img{display:block;flex:0 0 auto}.menu-toggle{width:42px;height:42px;align-items:center;justify-content:center;border-radius:10px}.menu-toggle .ui-icon{width:22px!important;height:22px!important;max-width:22px!important;max-height:22px!important}.mobilebar .ui-icon{width:22px!important;height:22px!important;max-width:22px!important;max-height:22px!important}@media(max-width:900px){.menu-toggle{display:flex}.topbar{gap:8px}.topbar .brand{overflow:hidden}.topbar .brand img{width:36px!important;height:36px!important;max-width:36px!important;max-height:36px!important}.drawer-brand img{width:38px!important;height:38px!important;max-width:38px!important;max-height:38px!important}.mobilebar{min-height:68px}.mobilebar a{min-width:0}.mobilebar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}}
@media(max-width:390px){.topbar .brand-copy strong{font-size:12px!important}.topbar .brand-copy small{font-size:8px}.topbar{padding-left:8px;padding-right:8px}.mobilebar{padding-left:2px;padding-right:2px}}

/* Sprint 2 */
.detailgrid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;margin-bottom:18px}
.kv{display:grid;grid-template-columns:140px 1fr;gap:12px 18px;align-items:center}
.kv span{color:#718096}.textbad{color:#dc2626}.textok{color:#16a34a}
.qrbox{text-align:center}.qrbox img{width:190px;height:190px;max-width:100%;display:block;margin:12px auto;border-radius:14px}
.issuephoto{display:block;width:120px;height:90px;object-fit:cover;border-radius:12px;margin-top:10px;border:1px solid #e2e8f0}
.muted{color:#718096}
@media(max-width:760px){.detailgrid{grid-template-columns:1fr}.kv{grid-template-columns:110px 1fr}.qrbox img{width:170px;height:170px}.issuephoto{width:100px;height:75px}}

/* Sprint 3 */
.sprint3-alert{border-left:4px solid #f59e0b}
.chiplist{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.machinechip{display:flex;flex-direction:column;gap:3px;padding:14px;border:1px solid #e2e8f0;border-radius:14px;text-decoration:none;color:#111827;background:#fff}
.machinechip:hover{border-color:#2563eb}.machinechip small{color:#718096}.machinechip span{color:#2563eb;font-size:.85rem;font-weight:700;margin-top:4px}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.actions form{margin:0}
.resolveform{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.resolveform input{min-width:220px}
@media(max-width:760px){.chiplist{grid-template-columns:1fr 1fr}.resolveform input{width:100%;min-width:0}.pagehead .actions{width:100%}.pagehead .actions .btn{flex:1}}

/* Sprint 4 */
.analyticsgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}
.metricrow{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.metricrow>div{padding:14px;border-radius:14px;background:#f8fafc;text-align:center}.metricrow strong{font-size:1.6rem;display:block;color:#0f2747}.metricrow span{font-size:.78rem;color:#64748b}
.countpill{min-width:30px;height:30px;border-radius:999px;background:#eef4ff;color:#1d4ed8;display:grid;place-items:center;font-weight:800}
.filtergrid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:12px;align-items:end}.filterbutton{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:900px){.filtergrid{grid-template-columns:1fr 1fr}.analyticsgrid{grid-template-columns:1fr}}
@media(max-width:560px){.filtergrid{grid-template-columns:1fr}.metricrow{grid-template-columns:1fr 1fr 1fr}.filterbutton .btn{flex:1}}
@media print{.topbar,.sidebar,.mobilebar,.noprint,.pagehead,.formcard,.alert{display:none!important}.app-shell,.content{display:block!important;margin:0!important;padding:0!important}.card{box-shadow:none!important;border:0!important}.printreport{display:block!important}body{background:#fff!important}}

/* Sprint 4.1 - iPhone form & date fixes */
input,select,textarea,button{box-sizing:border-box}
input[type="date"],input[type="datetime-local"],input[type="time"]{
  display:block;
  width:100%;
  max-width:100%;
  min-width:0;
  height:46px;
}
.performed-by{margin:0 0 18px}
.performed-by label{display:block;margin-bottom:7px}
.performed-by select{width:100%}
@media(max-width:760px){
  input:not([type="radio"]):not([type="checkbox"]),
  select,textarea{
    font-size:16px !important;
    line-height:1.3;
    width:100%;
    max-width:100%;
    min-width:0;
  }
  input[type="date"],input[type="datetime-local"],input[type="time"]{
    font-size:16px !important;
    -webkit-appearance:none;
    appearance:none;
    min-height:46px;
  }
  .formgrid>div,.filtergrid>div{min-width:0}
}

/* Sprint 4.3 */
.login-choice small{display:block;margin-top:8px;color:#64748b}
.login-seg{max-width:420px}
.login-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.login-fields[hidden]{display:none!important}
.login-fields>div{min-width:0}
@media(max-width:760px){
  .login-fields{grid-template-columns:1fr}
  .login-seg{max-width:none}
}

/* Sprint 4.4 - iPhone horizontal scroll fix */
html,body{
  width:100%;
  max-width:100%;
  overflow-x:clip;
}
body{
  position:relative;
}
.topbar,.shell,.content,main,.pagehead,.card,.formcard,.formgrid,.filtergrid,.analyticsgrid,.tablewrap{
  min-width:0;
  max-width:100%;
}
.shell,.content,main{
  width:100%;
}
.content{
  overflow-x:hidden;
}
.card,.formcard{
  overflow:hidden;
}
.tablewrap{
  width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
.formgrid>*,
.filtergrid>*,
.login-fields>*{
  min-width:0;
  max-width:100%;
}
input,select,textarea{
  min-width:0;
  max-width:100%;
}
@media(max-width:560px){
  .content{
    width:100%;
    max-width:100vw;
    padding-left:12px;
    padding-right:12px;
  }
  .card,.formcard{
    width:100%;
    max-width:100%;
  }
  .staff-add-form,
  .staff-add-form .span2{
    width:100%;
    max-width:100%;
  }
  .login-seg{
    width:100%;
    grid-template-columns:1fr 1fr;
  }
  .login-seg span{
    white-space:normal;
  }
}

/* Sprint 5 */
.today-board{margin-top:18px}
.progresspill{background:#e8f2ff;color:#0b4da2;font-weight:800;padding:8px 12px;border-radius:999px}
.today-machine-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.today-machine{display:flex;align-items:center;gap:11px;padding:13px;border:1px solid #e1e8f1;border-radius:14px;text-decoration:none;color:inherit;min-width:0}
.today-machine>div{min-width:0;flex:1}.today-machine strong,.today-machine small{display:block}.today-machine small{color:#64748b;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.today-dot{width:11px;height:11px;border-radius:50%;background:#f59e0b;flex:none}.today-machine.done.ok .today-dot{background:#16a34a}.today-machine.done.attention .today-dot{background:#f59e0b}.today-machine.done.fail .today-dot{background:#dc2626}
.today-machine.pending{background:#fffaf0}.today-machine.done.ok{background:#f3fbf5}.today-machine.done.fail{background:#fff4f4}
.today-action{font-size:.8rem;font-weight:800;color:#53657c;flex:none}.critical-card{border-left:4px solid #dc2626;margin-top:18px}
.machine-dossier-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 18px}.machine-dossier-strip>div{background:#fff;border:1px solid #e1e8f1;border-radius:14px;padding:13px}.machine-dossier-strip span{display:block;font-size:.78rem;color:#64748b}.machine-dossier-strip strong{display:block;font-size:1.25rem;margin-top:3px;color:#0f2747}
@media(max-width:650px){.today-machine-grid{grid-template-columns:1fr}.machine-dossier-strip{grid-template-columns:repeat(3,1fr)}.machine-dossier-strip>div{padding:10px}.machine-dossier-strip strong{font-size:1rem}}

/* Sprint 5.1 - controlebord voortgang */
.progresspill{
  min-width:0;
  height:auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:8px 12px;
  border-radius:999px;
  white-space:nowrap;
  font-size:.78rem;
  line-height:1.2;
}
.progresspill.complete{
  background:#eaf8ee;
  color:#15803d;
}
@media(max-width:560px){
  .today-board .cardhead{
    align-items:flex-start;
    gap:10px;
  }
  .progresspill{
    font-size:.72rem;
    padding:7px 10px;
  }
}

/* Sprint 5.2 - rustiger controlebord */
.today-board .cardhead{display:block}
.today-board .cardhead p{margin-top:6px}
.today-machine.done.ok .today-action{color:#15803d}
.today-machine.done.attention .today-action{color:#b45309}
.today-machine.done.fail .today-action{color:#b91c1c}

/* Sprint 6 - Machineopvolging */
.machine-quick-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 18px}
.machine-action,.machine-action-form .machine-action{width:100%;height:100%;display:flex;align-items:center;gap:11px;padding:13px 14px;background:#fff;border:1px solid #e1e8f1;border-radius:14px;text-decoration:none;color:#17243a;text-align:left;font:inherit;cursor:pointer}
.machine-action>span{width:34px;height:34px;border-radius:10px;background:#eef4fb;display:grid;place-items:center;font-weight:900;color:#174f91;flex:none}
.machine-action strong,.machine-action small{display:block}.machine-action small{color:#64748b;margin-top:2px}.machine-action.primary-action{background:#edf5ff;border-color:#cfe2fb}.machine-action.danger-action{background:#fff6f6;border-color:#f3cccc}.machine-action.danger-action>span{background:#fee2e2;color:#b91c1c}.machine-action-form{margin:0}
.oos-warning{display:flex;justify-content:space-between;align-items:center;gap:15px;border-left:4px solid #dc2626;background:#fff7f7;margin-bottom:18px}.oos-warning strong{color:#b91c1c;font-size:1.05rem}.oos-warning p{margin:4px 0 0;color:#64748b}
.timeline{position:relative}.timeline-item{display:grid;grid-template-columns:38px 1fr;gap:11px;padding:0 0 17px;position:relative}.timeline-item:not(:last-child):before{content:"";position:absolute;left:18px;top:36px;bottom:0;width:2px;background:#e6ebf2}.timeline-icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#eaf8ee;color:#15803d;font-weight:900;z-index:1}.timeline-item.water .timeline-icon{background:#e8f3ff;color:#1769aa}.timeline-item.issue .timeline-icon{background:#fff3df;color:#b45309}.timeline-content{min-width:0;padding-top:2px}.timeline-head{display:flex;justify-content:space-between;gap:10px}.timeline-head time{font-size:.78rem;color:#64748b;white-space:nowrap}.timeline-content p{margin:5px 0 0;color:#53657c;font-size:.88rem}.timeline-resolution{padding:8px 10px;background:#f3fbf5;border-radius:9px}
@media(max-width:800px){.machine-quick-actions{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.machine-quick-actions{grid-template-columns:1fr}.machine-action{min-height:58px}.oos-warning{align-items:flex-start;flex-direction:column}.oos-warning .btn{width:100%}.timeline-head{align-items:flex-start}}
/* Sprint 6.1 - QR afdrukpagina */
.qr-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.qr-print-toolbar{max-width:760px;margin:0 auto 16px;display:flex;justify-content:space-between;gap:10px}.qr-print-sheet{max-width:680px;margin:0 auto;background:#fff;border:1px solid #e0e7ef;border-radius:20px;padding:42px;text-align:center;box-shadow:0 12px 35px rgba(22,43,70,.08)}.qr-print-brand{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:28px}.qr-print-brand img{max-width:190px;max-height:52px;object-fit:contain}.qr-print-brand span{font-weight:900;letter-spacing:.12em;color:#163a63}.qr-print-sheet h1{font-size:2rem;margin:0}.qr-machine-type{color:#64748b;margin:7px 0 24px}.qr-print-code{width:min(420px,90%);height:auto;display:block;margin:0 auto 24px}.qr-print-sheet h2{margin:0 0 8px}.qr-print-sheet>p:not(.qr-machine-type){max-width:500px;margin:0 auto;color:#53657c}.qr-print-footer{margin-top:30px;padding-top:18px;border-top:1px solid #e5eaf0;color:#7a8797;font-size:.85rem}@media(max-width:600px){.qr-print-sheet{padding:25px 18px;border-radius:14px}.qr-print-toolbar{flex-wrap:wrap}.qr-print-toolbar .btn{flex:1}.qr-print-brand{flex-direction:column}.qr-print-sheet h1{font-size:1.65rem}}@media print{body{background:#fff!important}.sidebar,.mobilebar,.topbar,.no-print{display:none!important}.main,.content,.pagecontent{margin:0!important;padding:0!important;width:100%!important;max-width:none!important}.qr-print-sheet{border:0!important;box-shadow:none!important;max-width:none!important;padding:10mm!important;page-break-inside:avoid}.qr-print-code{width:105mm!important;max-width:105mm!important}@page{size:A4;margin:12mm}}

/* Sprint 6.1.1 - machine detail rechtstreeks openen */
.machine-name-link{color:inherit;text-decoration:none}
.machine-name-link:hover{text-decoration:underline}
.machine-detail-btn{white-space:nowrap}

/* Sprint 6.2 */
.action-needed{border-left:4px solid #f59e0b}.all-good{background:#eaf8ee;color:#15803d;padding:7px 10px;border-radius:999px;font-size:.8rem;font-weight:800}.empty-good{padding:13px;background:#f0faf3;border-radius:12px;color:#15803d;font-weight:700}.action-needed-list{display:grid;gap:8px}.action-needed-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 12px;border:1px solid #e5eaf0;border-radius:12px;text-decoration:none;color:inherit}.action-needed-row strong,.action-needed-row small{display:block}.action-needed-row small{color:#64748b;margin-top:2px}.action-needed-row>span{font-size:.82rem;color:#9a5b00;text-align:right}.check-fastbar{display:flex;align-items:center;gap:12px;padding:11px 12px;margin-bottom:12px;background:#f3f8fe;border:1px solid #dce9f8;border-radius:12px}.check-fastbar span{font-size:.82rem;color:#607086}.all-ok-btn{font-weight:800;white-space:nowrap}.already-checked{display:flex;justify-content:space-between;align-items:center;gap:15px;border-left:4px solid #22a35a;background:#f5fcf7}.already-checked strong{color:#15803d}.already-checked p{margin:4px 0 0;color:#64748b}@media(max-width:650px){.action-needed-row,.already-checked,.check-fastbar{align-items:flex-start;flex-direction:column}.action-needed-row>span{text-align:left}.already-checked .actions,.all-ok-btn{width:100%}.already-checked .actions .btn{flex:1}}

/* Sprint 6.3 - e-mailmeldingen */
.notification-settings{max-width:900px}.toggleline{display:flex;gap:11px;align-items:flex-start;padding:12px;border:1px solid #e4eaf1;border-radius:12px;margin-bottom:10px}.toggleline input{margin-top:3px;width:18px;height:18px}.toggleline strong,.toggleline small{display:block}.toggleline small{margin-top:3px;color:#64748b}.notification-types{margin:15px 0}.testmail-form{margin-top:10px}.mail-note{margin-top:18px;padding:13px 14px;background:#f4f8fc;border-radius:12px;color:#53657c}.mail-note p{margin:5px 0 0}.nav-mail-icon{width:22px;text-align:center}

/* Sprint 6.4 VAPID Web Push */
.section-sep{border:0;border-top:1px solid #e6ebf1;margin:24px 0}.muted{color:#64748b}
.push-device-card{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px;margin:12px 0 16px;border:1px solid #dce7f3;background:#f5f9fd;border-radius:14px}.push-device-card strong,.push-device-card small{display:block}.push-device-card small{margin-top:4px;color:#64748b}
@media(max-width:650px){.push-device-card{align-items:stretch;flex-direction:column}.push-device-card .btn{width:100%}}

/* Sprint 6.4.1 - compacte meldingenpagina */
.compact-settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}
.compact-settings .toggleline{margin:0;padding:10px 12px}
.settings-actions{display:flex;gap:8px;align-items:center;margin-top:12px}
.settings-actions form{margin:0}
.notification-settings h2{margin-top:0}
@media(max-width:650px){
  .compact-settings{grid-template-columns:1fr}
  .settings-actions{align-items:stretch;flex-direction:column}
  .settings-actions .btn,.settings-actions form{width:100%}
}

/* Sprint 6.5 */
.check-photo-box{margin:14px 0;padding:12px;border:1px dashed #cfd9e6;border-radius:12px;background:#f8fbfe}.check-photo-box[hidden]{display:none}.check-photo-box small{display:block;margin-top:4px;color:#64748b}
.machine-search-wrap{margin:0 0 14px}.machine-search-wrap input{width:100%;max-width:520px}
.mini-count{display:inline-block;margin-left:8px;padding:4px 8px;border-radius:999px;background:#eef5fb;color:#41617f;font-size:.72rem;vertical-align:middle}
.smart-action-card .action-needed-row{transition:background .15s ease}.smart-action-card .action-needed-row:hover{background:#fafcff}

/* Sprint 6.5.1 - techniekerbedrijven & aandachtspunten */
.inline-company-form{display:flex;gap:8px;max-width:620px}.inline-company-form input{flex:1}
.company-chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.company-chips span,.technician-tag{display:inline-block;padding:5px 9px;border-radius:999px;background:#eef5fb;color:#315a7d;font-size:.78rem;font-weight:700}
.issue-filterbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.issue-filterbar select{min-width:180px}
.issue-actions{display:flex;gap:7px;align-items:flex-start;flex-wrap:wrap}.issue-actions form{margin:0}
.resolution-box{margin-top:10px;padding:10px 12px;border-radius:10px;background:#f3f8f4}.resolution-box p{margin:4px 0 0}
.remove-photo{display:block;margin-top:8px;font-size:.85rem}
@media(max-width:650px){.inline-company-form,.issue-filterbar,.issue-actions{align-items:stretch;flex-direction:column}.inline-company-form .btn,.issue-filterbar .btn,.issue-filterbar select,.issue-actions .btn,.issue-actions form{width:100%}}

/* Sprint 6.5.2 - machine bewerken */
.edit-machine-card{border-left:4px solid #2f7dbd}
.machine-active-toggle{margin:0}

/* Sprint 6.5.3 - QR zoeken */
.machine-search-bar{display:flex;gap:8px;align-items:center;max-width:680px}
.machine-search-bar input{flex:1;max-width:none}
.qr-scan-btn{white-space:nowrap}
.qr-scan-modal{position:fixed;inset:0;z-index:2500;background:rgba(7,20,35,.72);display:flex;align-items:center;justify-content:center;padding:18px}
.qr-scan-modal[hidden]{display:none}
.qr-scan-panel{width:min(100%,460px);background:#fff;border-radius:18px;padding:16px;box-shadow:0 24px 70px rgba(0,0,0,.28)}
.qr-scan-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.qr-scan-head strong,.qr-scan-head small{display:block}
.qr-scan-head small{margin-top:3px;color:#64748b}
.qr-close-btn{border:0;background:#eef3f7;border-radius:10px;width:38px;height:38px;font-size:24px;line-height:1;cursor:pointer}
#qr-reader{overflow:hidden;border-radius:13px;background:#0c1724}
#qr-reader video{border-radius:12px}
.qr-scan-status{text-align:center;margin-top:11px;color:#52667c;font-size:.88rem}
@media(max-width:650px){
 .machine-search-bar{align-items:stretch;flex-direction:column}
 .machine-search-bar .btn{width:100%}
 .qr-scan-modal{padding:10px}
 .qr-scan-panel{padding:13px}
}

/* Sprint 6.6 - branded rapporten */
.report-sheet{background:#fff;border:1px solid #e1e7ee;border-radius:14px;padding:18px}.report-brand{display:flex;align-items:center;gap:14px;padding-bottom:12px;margin-bottom:12px;border-bottom:2px solid #dce5ee}.report-brand img{width:150px;max-height:52px;object-fit:contain;object-position:left center}.report-brand strong,.report-brand span{display:block}.report-brand span{margin-top:3px;color:#64748b;font-size:.88rem}.report-period{margin-bottom:14px;color:#53657a;font-size:.88rem}.report-table{width:100%;border-collapse:collapse}.report-table th,.report-table td{padding:9px 8px;border-bottom:1px solid #e4e9ef;text-align:left;font-size:.9rem}.issue-report-list{display:grid;gap:10px}.issue-report-row{border:1px solid #dfe6ee;border-radius:12px;padding:12px;break-inside:avoid}.issue-report-top{display:flex;justify-content:space-between;gap:12px}.issue-report-top span{font-size:.82rem;color:#64748b}.issue-report-meta{display:flex;gap:6px;flex-wrap:wrap;margin:7px 0}.issue-report-meta span{background:#eef4f8;border-radius:999px;padding:4px 7px;font-size:.75rem;color:#466078}.issue-report-row p{margin:8px 0 0}.report-resolution{margin-top:9px;padding:9px 10px;border-radius:9px;background:#f2f8f3}.report-issue-photo{display:block;max-width:220px;max-height:160px;object-fit:cover;border-radius:9px;margin-top:10px}
@media print{
 @page{size:A4;margin:12mm}
 body{background:#fff!important}
 .sidebar,.mobilebar,.topbar,.noprint,.menu-overlay{display:none!important}
 .shell,.content{display:block!important;margin:0!important;padding:0!important;width:100%!important;max-width:none!important}
 .report-sheet{border:0!important;border-radius:0!important;padding:0!important;box-shadow:none!important}
 .report-brand img{width:145px!important}
 .report-table th,.report-table td{font-size:9.5pt;padding:6px}
 .issue-report-row{page-break-inside:avoid}
}
@media(max-width:650px){.report-brand img{width:120px}.issue-report-top{flex-direction:column}}

/* Sprint 6.6.1 - mobiel scrollbaar waterrapport */
.report-table-scroll{
  width:100%;
  max-width:100%;
  overflow-x:auto;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  touch-action:pan-x pan-y;
}
.report-table-scroll .report-table{
  min-width:760px;
  width:100%;
}
@media(max-width:650px){
  .report-sheet{
    min-width:0;
    overflow:hidden;
  }
  .report-table-scroll{
    display:block;
    width:100%;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  .report-table-scroll .report-table{
    min-width:760px;
  }
}
@media print{
  .report-table-scroll{
    overflow:visible!important;
  }
  .report-table-scroll .report-table{
    min-width:0!important;
    width:100%!important;
  }
}
