/* Responsive LIMS extension: desktop styles remain in each page. */
[hidden]{display:none!important}
.m-bar,.m-bottom{display:none}
.m-menu{color:#1b2433;background:#fff;border:0;border-radius:22px 22px 0 0;padding:0;width:min(100%,540px);max-width:100%;max-height:85vh;max-height:85dvh;margin:auto auto 0;box-shadow:0 -12px 60px #142b4933}
.m-menu::backdrop{background:#0e213b99}
.m-menu-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 20px 12px;border-bottom:1px solid #e3e8ee}
.m-menu-head h2{font-size:20px;margin:0}.m-menu-head button{background:#edf2f6;color:#1b2a47;border:0;border-radius:12px;min-height:44px;padding:0 14px;font:inherit;cursor:pointer}
.m-menu-body{padding:8px 16px calc(20px + env(safe-area-inset-bottom));overflow:auto}
.m-menu-group{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#64748b;margin:18px 6px 8px}
.m-menu-link{display:flex;align-items:center;gap:12px;background:none;border:0;color:#263b52;width:100%;min-height:48px;padding:12px;border-radius:12px;text-align:left;font:inherit;cursor:pointer}
.m-menu-link svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;flex:none}
.m-menu-link[aria-current=page]{background:#e5f5f0;color:#126e62;font-weight:600}
.m-account-name{font-size:14px;line-height:1.6;color:#526274;overflow-wrap:anywhere;margin:8px 12px}
.m-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.m-scroll:focus-visible{outline:2px solid #2a8a7c;outline-offset:3px}
.m-menu button:focus-visible,.m-bar button:focus-visible,.m-bottom button:focus-visible{outline:3px solid #50b5a4;outline-offset:-3px}
@media(max-width:900px){
 body[data-portal]{font-size:16px;background:#f2f5f8;--muted:#586879}
 body[data-portal] .app{display:block;min-height:100svh}
 body[data-portal] .side,body[data-portal=client]>header{display:none}
 .m-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;z-index:6;padding:calc(12px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left));background:#1b2a47;color:white;border-bottom:1px solid #ffffff14}
 .m-brand{min-width:0;display:flex;flex-direction:column;gap:2px}.m-brand strong{font-size:17px;font-weight:600;overflow-wrap:anywhere;line-height:1.3}.m-brand span{font-size:12px;color:#bed0e1}
 .m-menu-toggle{border:1px solid #ffffff36;background:#ffffff0c;color:#fff;border-radius:12px;min-width:48px;min-height:48px;padding:10px;display:grid;place-items:center;cursor:pointer;flex:none}
 .m-menu-toggle svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8}
 body[data-portal] .main{width:100%;max-width:100%;padding:22px max(16px,env(safe-area-inset-right)) calc(108px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));margin:0}
 body[data-portal] h1{font-size:26px;line-height:1.2;letter-spacing:-.5px;overflow-wrap:anywhere}
 body[data-portal] .top{gap:14px;margin-bottom:20px}.top>.actions{width:100%}
 body[data-portal] .btn,body[data-portal] .btn.sm{min-height:44px;padding:10px 14px;font-size:14px;white-space:normal;line-height:1.4}
 body[data-portal] .top>.btn{width:100%}
 body[data-portal] .actions>.btn{flex:1 1 130px}
 body[data-portal] input:not([type=checkbox]):not([type=radio]),body[data-portal] select,body[data-portal] textarea{font-size:16px;min-height:48px;max-width:100%;border-radius:10px;padding:11px 12px;scroll-margin-top:90px}
 body[data-portal] input[type=checkbox],body[data-portal] input[type=radio]{width:22px;height:22px;flex:none;accent-color:#2a8a7c}
 body[data-portal] input#q{width:100%!important}
 body[data-portal] label,body[data-portal] .form label{font-size:14px}
 body[data-portal] .grid,body[data-portal] .grid2{grid-template-columns:minmax(0,1fr);gap:0}
 body[data-portal] .tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:22px}
 body[data-portal] .tile{padding:17px 14px;border-radius:14px;min-height:108px;display:flex;flex-direction:column;justify-content:space-between;gap:10px}
 body[data-portal] .tile b{font-size:30px}.tile span{line-height:1.4}body[data-portal] .tile span{font-size:14px}
 body[data-portal] .panel{padding:18px 16px;border-radius:16px;overflow-wrap:anywhere;box-shadow:0 3px 12px #192b4204;margin-bottom:16px}
 body[data-portal] .panel h2{font-size:17px;flex-wrap:wrap;align-items:center;gap:10px;line-height:1.4}
 body[data-portal] .panel h2 small{font-size:13px}.panel h2 .btn{flex-shrink:0}
 body[data-portal] .tabs{gap:6px;max-width:100%;overflow-x:auto;padding-bottom:8px;border:0;scrollbar-width:thin;align-items:center}
 body[data-portal] .tab{flex:none;white-space:nowrap;min-height:44px;border:1px solid #dce3eb;border-radius:999px;background:white;padding:10px 16px;font-size:14px;margin:0}
 body[data-portal] .tab.on{background:#1b2a47;border-color:#1b2a47;color:white}
 body[data-portal] table{font-size:14px}body[data-portal] th{font-size:13px}body[data-portal] td{padding:12px 10px}
 body[data-portal] .tag{font-size:13px;padding:4px 9px;white-space:normal;line-height:1.4}
 body[data-portal] .steps{overflow-x:auto;padding-bottom:6px}.steps div{min-width:90px}
 body[data-portal] .kv{grid-template-columns:minmax(90px,35%) minmax(0,1fr);gap:10px;font-size:14px}
 body[data-portal] .kv dd{overflow-wrap:anywhere}
 body[data-portal] .qr{flex-wrap:wrap}.qr>div{min-width:0;max-width:100%}
 body[data-portal] .chk{grid-template-columns:minmax(0,1fr)}body[data-portal] .chk label{min-height:62px;padding:12px;border-radius:12px}
 body[data-portal] .hint{font-size:14px;line-height:1.6}
 body[data-portal] .feed li{grid-template-columns:minmax(0,1fr);gap:4px;padding:12px 0}
 body[data-portal] .stats{gap:12px;font-size:14px}body[data-portal] .bar-l{font-size:12px;gap:3px}
 body[data-portal] .sheet{padding:0;align-items:flex-end;z-index:30}
 body[data-portal] .form{width:100%;max-width:640px;max-height:94vh;max-height:94dvh;border-radius:22px 22px 0 0;padding:24px 20px calc(20px + env(safe-area-inset-bottom));overscroll-behavior:contain}
 body[data-portal] .form h2{font-size:20px;padding-bottom:8px}
 body[data-portal] .form .row{position:sticky;bottom:calc(-20px - env(safe-area-inset-bottom));background:white;padding:16px 0 calc(16px + env(safe-area-inset-bottom));margin-bottom:calc(-20px - env(safe-area-inset-bottom));border-top:1px solid #e4e9ef;z-index:1}
 body[data-portal] .form .row .btn{flex:1}
 body[data-portal] .toast{left:16px;right:16px;bottom:calc(90px + env(safe-area-inset-bottom));max-width:none;z-index:40;font-size:14px;border-radius:12px;box-shadow:0 8px 24px #142b4926}
 .m-bottom{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;bottom:0;left:0;right:0;z-index:8;height:auto;background:#fff;border-top:1px solid #dce3eb;padding:8px max(6px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));box-shadow:0 -4px 24px #20334c08}
 .m-bottom button{font:inherit;font-size:12px;min-width:0;min-height:54px;padding:7px 2px;border:0;border-radius:12px;background:transparent;color:#586879;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;line-height:1.3}
 .m-bottom button svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.8;flex:none}
 .m-bottom button[aria-current=page]{background:#e5f5f0;color:#146f63;font-weight:600}
 .m-bottom button:disabled{opacity:.45;cursor:wait}
 body.m-modal-open{overflow:hidden}
 /* Client lists use labelled cards; dense staff tables stay scrollable. */
 body[data-portal=client] table.m-cards,body[data-portal=client] .m-cards tbody{display:block;width:100%}
 body[data-portal=client] .m-cards tr{display:block;padding:12px;border:1px solid #e1e7ed;border-radius:12px;margin-bottom:12px;background:#fff}
 body[data-portal=client] .m-cards tr.m-head{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0;margin:-1px;border:0}
 body[data-portal=client] .m-cards td{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:10px;border:0;padding:7px 0;text-align:left;min-width:0;overflow-wrap:anywhere;align-items:start}
 body[data-portal=client] .m-cards td:before{content:attr(data-label);color:#627184;font-weight:400;font-size:13px}
 body[data-portal=client] .m-cards td[colspan]{display:block}.m-cards td[colspan]:before{display:none}
 body[data-portal=client] .m-cards td a{display:inline-block;min-height:44px;padding:10px 0;grid-column:2;margin-left:0!important}
}
@media(max-width:800px){
 body[data-portal=login]{background:#f3f6f8}
 body[data-portal=login] .entry{padding:calc(20px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom));min-height:100svh}
 body[data-portal=login] .topbar{gap:12px;align-items:flex-start}
 body[data-portal=login] .form-wrap{margin:24px auto;padding:26px 22px;background:#fff;border:1px solid #e0e7eb;border-radius:22px;box-shadow:0 8px 28px #183a4a06}
 body[data-portal=login] .form-wrap h2{font-size:31px;letter-spacing:-1px}
 body[data-portal=login] .portal-box{min-height:76px}
 body[data-portal=login] .field-row{grid-template-columns:1fr;gap:0}
 body[data-portal=login] .link-button,body[data-portal=login] .help-button{min-height:44px}
 body[data-portal=login] .field-head{align-items:center}
 body[data-portal=login] .field-head .link-button{padding-bottom:0;min-width:94px;text-align:right}
 body[data-portal=login] .field input{height:54px;border-radius:12px}
 body[data-portal=login] .primary{min-height:54px;border-radius:12px;font-size:16px}
 body[data-portal=login] .field-hint,body[data-portal=login] .portal-description{font-size:13px}
 body[data-portal=login] .entry-footer{margin-top:auto;flex-wrap:wrap;gap:8px;justify-content:center}
}
@media(max-width:360px){body[data-portal=login] .entry{padding-left:12px;padding-right:12px}body[data-portal=login] .form-wrap{padding:22px 16px}body[data-portal] .main{padding-left:12px;padding-right:12px}.m-bottom button{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
