:root{font-family:Arial,Helvetica,sans-serif;color:#1f2937;background:#f4f6f8}
*{box-sizing:border-box}body{margin:0;background:#f4f6f8}.shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
aside{background:#fff;border-right:1px solid #e5e7eb;padding:22px}.brand{font-size:22px;font-weight:800}.role{color:#667085;margin:4px 0 22px}
nav button{display:block;width:100%;text-align:left;padding:11px 12px;border:0;border-radius:8px;background:transparent;margin:4px 0;cursor:pointer}
nav button:hover{background:#f2f4f7}.content{padding:24px}header{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:18px}
.card{background:#fff;border-radius:14px;padding:18px;margin:12px 0;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.metric{font-size:28px;font-weight:800}.muted,.label{color:#667085;font-size:13px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}input,select,textarea,button{padding:10px 12px;border:1px solid #d0d5dd;border-radius:8px;background:white}
button{cursor:pointer;font-weight:700}table{width:100%;border-collapse:collapse;background:white}th,td{padding:10px;border-bottom:1px solid #eee;text-align:left;font-size:14px}
.badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#f2f4f7;font-size:12px}.error{color:#b42318}.ok{color:#067647}
.login{max-width:420px;margin:8vh auto;background:white;padding:28px;border-radius:16px}.login input,.login button{width:100%;margin:7px 0}
@media(max-width:850px){.shell{grid-template-columns:1fr}aside{display:flex;gap:8px;overflow:auto;padding:10px;border-right:0;border-bottom:1px solid #ddd}.brand,.role{display:none}nav{display:flex;gap:6px}nav button{min-width:max-content}.content{padding:14px}header{display:block}}


.install-btn{white-space:nowrap}
@media(max-width:850px){
  body{padding-bottom:env(safe-area-inset-bottom)}
  aside{
    position:sticky;
    top:0;
    z-index:20;
    padding-top:max(10px,env(safe-area-inset-top));
  }
  .content{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}
  table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  th,td{white-space:nowrap}
  button,input,select,textarea{min-height:44px}
}


.session-banner{
  margin:0 0 12px 0;
  padding:10px 12px;
  border-radius:10px;
  background:#fff3cd;
  border:1px solid #ffe69c;
  color:#664d03;
  font-size:14px;
}
.session-banner[data-kind="offline"]{
  position:sticky;
  top:0;
  z-index:15;
}
