:root{color:#17201a;background:#f6f7f4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{border:0;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}a{color:inherit}.app-shell{display:grid;min-height:100vh;grid-template-columns:240px minmax(0,1fr)}.mobile-app-header,.mobile-menu-backdrop{display:none}.mobile-menu-close{display:none!important}.sidebar{position:sticky;top:0;display:flex;height:100vh;flex-direction:column;gap:24px;align-self:start;overflow-y:auto;border-right:1px solid #d9ddd4;background:#fff;padding:24px 16px}.brand{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:2px 10px}.brand img{grid-row:1 / 3;width:38px;height:38px;border-radius:50%;object-fit:contain}.brand span,.eyebrow{color:#5d6a5f;font-size:12px;font-weight:700;letter-spacing:0;text-transform:uppercase}.brand strong{min-width:0;overflow:hidden;font-size:18px;text-overflow:ellipsis;white-space:nowrap}.sidebar nav{display:grid;gap:6px}.sidebar .operations-nav{border-top:1px solid #d9ddd4;padding-top:16px}.nav-link{display:flex;align-items:center;gap:10px;min-height:40px;border-radius:8px;color:#4d594f;padding:0 10px;text-decoration:none}.nav-link:hover,.nav-link.active{background:#edf3e9;color:#213c25}.language-switch{display:flex;min-height:40px;align-items:center;gap:8px;margin-top:auto}.auth-form button,.sign-out-button{border-radius:8px;background:#265b31;color:#fff;font-weight:700}.language-switch button{position:relative;display:grid;width:40px;height:40px;flex:0 0 40px;place-items:center;border-radius:8px}.language-globe-button{background:#265b31;color:#fff}.language-flag-button,.language-close-button{border:1px solid #d4d9d2;background:#fff;color:#59615b}.language-flag-button:hover,.language-flag-button:focus-visible,.language-flag-button[aria-pressed=true]{border-color:#65836a;background:#edf3e9}.language-close-button:hover,.language-close-button:focus-visible{background:#eceeed;color:#303832}.language-flag{display:block;width:27px;height:24px;border-radius:4px;object-fit:cover}.language-tooltip{position:absolute;bottom:calc(100% + 7px);left:50%;z-index:4;width:max-content;max-width:130px;border-radius:6px;background:#252c27;color:#fff;padding:5px 7px;font-size:11px;font-weight:700;line-height:1.2;opacity:0;pointer-events:none;transform:translate(-50%,4px);transition:opacity .15s ease,transform .15s ease}.language-flag-button:hover .language-tooltip,.language-flag-button:focus-visible .language-tooltip{opacity:1;transform:translate(-50%)}.account-summary{display:grid;gap:3px;border-top:1px solid #e6e9e2;padding-top:16px}.account-summary span{overflow:hidden;color:#17201a;font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.account-summary strong{color:#647067;font-size:12px}.sign-out-button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px}.main-content{min-width:0;padding:32px}.page{display:grid;width:100%;gap:24px;max-width:1040px;margin-inline:auto}.operations-dashboard-page{max-width:1440px}.dashboard-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.dashboard-metrics article{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:5px 10px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;padding:16px}.dashboard-metrics article>svg{grid-row:1 / 3;color:#59675d}.dashboard-metrics article span{color:#667168;font-size:12px}.dashboard-metrics article strong{font-size:23px}.dashboard-metrics .pending strong{color:#8a5b13}.dashboard-metrics .approved strong{color:#286337}.dashboard-metrics .rejected strong{color:#8a2b24}.dashboard-overview-grid,.operations-panel-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);align-items:start;gap:16px}.operations-panel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-operations-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);align-items:start;gap:16px}.approval-stack{display:grid;min-width:0;gap:16px}.dashboard-panel{display:grid;min-width:0;align-content:start;gap:14px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;padding:18px}.dashboard-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.dashboard-panel-header>div{display:grid;min-width:0;gap:5px}.dashboard-panel-header span{color:#6b766d;font-size:11px;font-weight:700;line-height:1.25;text-transform:uppercase}.dashboard-panel-header h2{margin:0;font-size:18px;line-height:1.22}.dashboard-booking-rows,.dashboard-review-list,.lab-card-list{display:grid;gap:8px}.dashboard-booking-rows article{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;border-top:1px solid #eceeea;padding:11px 0 3px}.dashboard-booking-rows article>div{display:grid;min-width:0;gap:2px}.dashboard-booking-rows article>div span,.dashboard-booking-rows time{color:#68736b;font-size:12px}.dashboard-empty{color:#68736b;padding:24px 10px;text-align:center}.equipment-summary-panel>div:not(.dashboard-panel-header){display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;border-top:1px solid #eceeea;padding-top:14px}.equipment-summary-panel>div>svg{color:#477250}.equipment-summary-panel>div>span{color:#5f6b62;font-size:13px}.equipment-summary-panel>div>strong{font-size:22px}.review-queue-panel,.lab-management-panel{max-height:calc(100vh - 64px);overflow-y:auto}.dashboard-review-item{display:grid;gap:11px;border-top:1px solid #e4e7e1;padding-top:14px}.dashboard-review-item h3{margin:0 0 3px;font-size:15px}.dashboard-review-item p{margin:0;color:#657067;font-size:12px}.compact-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.compact-meta div{display:grid;gap:2px}.compact-meta dt{color:#6b766d;font-size:11px;font-weight:700}.compact-meta dd{margin:0;font-size:12px}.compact-review-form{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-review-form .button-row{grid-column:1 / -1}.compact-review-form textarea{min-height:42px}.lab-summary-card{display:grid;grid-template-columns:66px minmax(0,1fr) auto;align-items:center;gap:11px;border-top:1px solid #e7eae5;padding-top:10px}.lab-summary-card>img,.lab-image-placeholder{width:66px;height:58px;border-radius:6px;object-fit:cover;background:#edf3e9}.lab-image-placeholder{display:grid;place-items:center;color:#31563a;font-weight:800}.lab-summary-card h3{margin:0 0 3px;font-size:14px}.lab-summary-card p{display:flex;align-items:center;gap:4px;margin:0 0 3px;color:#657067;font-size:11px}.lab-summary-card>div>span{display:-webkit-box;overflow:hidden;color:#657067;font-size:11px;-webkit-box-orient:vertical;-webkit-line-clamp:2}.lab-editor-form{border:0;padding:0}.lab-image-editor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.lab-image-editor-grid button{position:relative;overflow:hidden;aspect-ratio:1;border-radius:6px;background:#edf3e9;color:#fff}.lab-image-editor-grid img{width:100%;height:100%;object-fit:cover;transition:filter .16s ease}.lab-image-editor-grid button>svg{position:absolute;top:50%;left:50%;opacity:0;transform:translate(-50%,-50%)}.lab-image-editor-grid button>span{position:absolute;right:4px;bottom:4px;left:4px;overflow:hidden;font-size:9px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.lab-image-editor-grid button:hover img,.lab-image-editor-grid button.removed img{filter:brightness(.48)}.lab-image-editor-grid button:hover>svg,.lab-image-editor-grid button.removed>svg{opacity:1}.lab-image-editor-grid button.removed{box-shadow:0 0 0 2px #a84339}.compact-dropzone{min-height:86px}.lab-map-link{display:inline-flex;align-items:center;gap:6px;color:#265b31;font-size:12px;font-weight:700}.booking-workspace-page{--booking-panel-width: clamp(340px, 31vw, 440px);display:grid;width:100%;min-width:0;grid-template-columns:minmax(0,1fr) 0;align-items:start;gap:0;overflow-x:clip;transition:grid-template-columns .3s ease,gap .3s ease}.booking-workspace-page.panel-open{grid-template-columns:minmax(0,1fr) var(--booking-panel-width);gap:24px}.booking-form-pane{grid-column:1;min-width:0}.booking-machine-field{display:grid;gap:6px;color:#465149;font-size:13px;font-weight:700}.machine-selection-button{display:flex;width:100%;min-height:66px;align-items:center;justify-content:space-between;gap:12px;border:1px solid #bcc7ba;border-radius:8px;background:#f9fbf8;color:#27362b;padding:12px 14px;text-align:left}.machine-selection-button:not(.has-selection){justify-content:flex-start}.machine-selection-button>div{display:grid;gap:3px}.machine-selection-button span{color:#657168;font-size:12px}.machine-selection-button>span{color:#265b31;font-weight:700}.machine-selection-button .machine-selection-prompt{color:#27362b;font-size:13px;font-weight:400}.booking-machine-panel{grid-column:2;position:sticky;top:32px;width:100%;height:calc(100vh - 64px);overflow-y:auto;border:1px solid transparent;border-radius:8px;background:#fff;opacity:0;pointer-events:none;transform:translate(24px);visibility:hidden;transition:opacity .2s ease,transform .28s ease,visibility 0s linear .28s}.booking-workspace-page.panel-open .booking-machine-panel{border-color:#d9ddd4;box-shadow:0 12px 28px #17201a1a;opacity:1;pointer-events:auto;transform:translate(0);visibility:visible;transition-delay:0s}.booking-machine-panel-content{animation:machine-content-in .2s ease both}.machine-selector-header-actions{display:flex;gap:7px}.booking-machine-list-view,.booking-machine-detail{display:grid;gap:14px;padding:18px}.compact-filter{padding-bottom:7px}.booking-machine-card-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.booking-machine-card{min-width:0;overflow:hidden;border:1px solid #d9ddd4;border-radius:7px;background:#fff;color:#263029;padding:0;text-align:left}.booking-machine-card:hover{border-color:#739078;box-shadow:0 4px 12px #17201a17}.booking-machine-card>img,.booking-machine-placeholder{width:100%;aspect-ratio:16 / 9;object-fit:cover;background:#edf3e9}.booking-machine-placeholder{display:grid;place-items:center;color:#56705b}.booking-machine-card>div:last-child{display:grid;gap:2px;padding:9px}.booking-machine-card span,.booking-machine-card small{overflow:hidden;color:#68736b;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.booking-machine-card small{color:#265b31}.booking-machine-gallery{position:relative;overflow:hidden;width:100%;aspect-ratio:4 / 3;border-radius:7px;background:#edf3e9}.booking-machine-gallery>img,.booking-machine-detail-placeholder{width:100%;height:100%;border-radius:7px;object-fit:cover;background:#edf3e9}.booking-machine-detail-placeholder{display:grid;place-items:center;color:#56705b}.machine-selection-actions{display:flex;justify-content:space-between;gap:8px;border-top:1px solid #e3e6e1;padding-top:14px}.machine-selection-actions button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;border-radius:8px;padding:0 12px;font-weight:700}.page-header{display:grid;align-items:start;gap:14px}.page-header>div{display:grid;min-width:0;gap:8px}.page-header .eyebrow,.auth-card .eyebrow{margin:0 0 2px;line-height:1.25}.page-header h1,.auth-card h1{margin:0;font-size:clamp(30px,4vw,44px);line-height:1.12}.page-header p,.auth-card p{max-width:680px;margin:0;color:#5d6a5f;line-height:1.55}.page-header h1+p,.auth-card h1+p{margin-top:2px}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.status-grid article{display:grid;gap:6px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;padding:18px}.status-grid span{color:#647067;font-size:13px}.status-grid strong{font-size:20px}.auth-page{display:grid;min-height:100vh;place-items:center;padding:24px}.auth-card{display:grid;width:min(100%,460px);gap:24px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;padding:28px}.auth-card-header{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:start;gap:16px}.auth-logo{width:58px;height:58px;border-radius:50%;object-fit:contain}.auth-form{display:grid;gap:14px}.data-form{display:grid;gap:16px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;padding:18px}.data-form h2{margin:0;font-size:20px}.data-form label{display:grid;gap:6px;color:#465149;font-size:13px;font-weight:700}.data-form input,.data-form select,.data-form textarea{min-height:42px;border:1px solid #ccd2c8;border-radius:8px;background:#fff;color:#17201a;padding:0 12px}.data-form textarea{min-height:84px;padding:10px 12px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.auth-form.compact{gap:10px}.auth-form label{display:grid;gap:6px;color:#465149;font-size:13px;font-weight:700}.auth-form input,.auth-form select,.auth-form textarea{min-height:42px;border:1px solid #ccd2c8;border-radius:8px;background:#fff;color:#17201a;padding:0 12px}.auth-form textarea{min-height:84px;padding:10px 12px;resize:vertical}.auth-form button{min-height:44px;margin-top:4px}.auth-links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;color:#265b31;font-size:14px;font-weight:700}.row-header{align-items:start;grid-template-columns:minmax(0,1fr) auto;column-gap:18px}.secondary-button,.approve-button,.reject-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;border-radius:8px;padding:0 14px;font-weight:700}.secondary-button{border:1px solid #cfd7cb;background:#fff;color:#213c25}.approval-list{display:grid;gap:14px}.approval-card,.record-card{display:grid;gap:16px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;padding:18px}.approval-main,.record-main{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.approval-main h2{margin:0 0 4px;font-size:20px}.record-main h2{margin:0 0 4px;font-size:18px}.approval-main p,.approval-reason,.record-main p{margin:0;color:#5d6a5f}.role-pill,.status-pill{border-radius:999px;background:#edf3e9;color:#213c25;padding:6px 10px;font-size:12px;font-weight:700;white-space:nowrap}.status-maintenance,.status-offline,.status-rejected_by_admin,.status-rejected_by_technician,.status-payment_rejected,.status-cancelled,.status-expired{background:#fff0ee;color:#8a2b24}.status-pending_technician,.status-pending_admin,.status-awaiting_payment,.status-payment_submitted{background:#fff7e8;color:#7a4b0d}.status-available,.status-technician_approved,.status-admin_approved,.status-payment_verified,.status-confirmed,.status-completed{background:#edf8e8;color:#213c25}.record-list{display:grid;gap:14px}.cleanup-warning{display:grid;gap:6px;margin-top:16px;border:1px solid #ead499;border-radius:8px;background:#fff7d9;color:#634d11;padding:14px;font-size:13px;line-height:1.45}.cleanup-warning strong{display:inline-flex;align-items:center;gap:7px}.machines-page{--machine-panel-width: clamp(320px, 30vw, 420px);display:grid;width:100%;min-width:0;max-width:none;grid-template-columns:minmax(0,1fr) 0;align-items:start;gap:0;overflow-x:clip;transition:grid-template-columns .32s ease,gap .32s ease}.machines-page.panel-open{grid-template-columns:minmax(0,1fr) var(--machine-panel-width);gap:24px}.machine-list-pane{grid-column:1;grid-row:1;display:grid;width:min(100%,1040px);min-width:0;align-content:start;justify-self:center;gap:24px;padding-bottom:72px;transition:width .32s ease}.machine-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.machine-card{display:grid;align-content:start;min-width:0;overflow:hidden;border:1px solid #d9ddd4;border-radius:8px;background:#fff;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.machine-card:hover,.machine-card.selected{border-color:#9cad99;box-shadow:0 8px 20px #17201a17}.machine-card.selected{box-shadow:0 0 0 1px #638060}.machine-view-target{display:grid;min-width:0;background:transparent;color:inherit;padding:0;text-align:left}.machine-card-media{position:relative;aspect-ratio:16 / 9;background:#edf3e9}.machine-card-placeholder{display:grid;width:100%;height:100%;place-items:center;background:#edf3e9;color:#213c25;font-size:28px;font-weight:800}.machine-thumbnail{width:100%;height:100%;object-fit:cover;background:#edf3e9;transition:filter .18s ease,transform .24s ease}.machine-card-media .status-pill{position:absolute;top:10px;right:10px;z-index:2;box-shadow:0 1px 4px #17201a2e}.machine-view-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:grid;place-items:center;background:#1118138f;color:#fff;font-size:15px;font-weight:800;opacity:0;transition:opacity .18s ease}.machine-view-target:hover .machine-view-overlay,.machine-view-target:focus-visible .machine-view-overlay{opacity:1}.machine-view-target:hover .machine-thumbnail,.machine-view-target:focus-visible .machine-thumbnail{filter:brightness(.72);transform:scale(1.025)}.machine-card-summary{display:grid;gap:14px;padding:16px}.machine-card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.machine-card-heading h2{margin:0 0 3px;font-size:18px}.machine-card-heading p,.machine-card-description{margin:0;color:#5d6a5f}.machine-card-heading p{font-size:13px}.machine-card-heading strong{flex:0 0 auto;color:#265b31;font-size:13px;white-space:nowrap}.machine-card-description{min-height:42px;font-size:14px;line-height:1.5}.machine-edit-button{width:100%}.machine-card-actions{padding:0 16px 16px}.machine-empty-state{display:grid;min-height:220px;place-items:center;border:1px dashed #c7cec3;border-radius:8px;color:#647067;text-align:center}.machine-lab-filter{display:flex;min-width:0;flex-wrap:wrap;align-items:center;border-bottom:1px solid #d9ddd4;padding-bottom:8px}.machine-lab-filter button{position:relative;min-height:34px;border-right:1px solid #cfd5cc;background:transparent;color:#455148;padding:0 13px;font-size:13px;font-weight:700}.machine-lab-filter button:first-child{padding-left:0}.machine-lab-filter button:hover,.machine-lab-filter button.active{color:#1f522b}.machine-lab-filter button.active:after{position:absolute;right:12px;bottom:-9px;left:12px;height:2px;background:#2e6a39;content:""}.machine-lab-filter button:first-child.active:after{left:0}.machine-lab-filter .more-labs-button{color:#7a827c;font-weight:600}.machine-lab-filter .more-labs-button:hover,.machine-lab-filter .more-labs-button.active-more{color:#536159}.machine-fab{position:fixed;right:28px;bottom:28px;z-index:3;display:inline-flex;align-items:center;gap:8px;min-height:48px;border-radius:8px;box-shadow:0 8px 22px #17201a38;background:#265b31;color:#fff;padding:0 18px;font-weight:700;transition:right .28s ease,transform .18s ease,box-shadow .18s ease}.machine-fab:hover{box-shadow:0 10px 26px #17201a47;transform:translateY(-2px)}.machines-page.panel-open .machine-fab{right:calc(var(--machine-panel-width) + 56px)}.machine-side-panel{grid-column:2;grid-row:1;position:sticky;top:32px;width:100%;min-width:0;height:calc(100vh - 64px);align-self:start;justify-self:end;overflow-y:auto;overscroll-behavior:contain;border:1px solid transparent;border-radius:8px;background:#fff;box-shadow:none;opacity:0;pointer-events:none;transform:translate(26px);visibility:hidden;transition:opacity .22s ease,transform .28s ease,visibility 0s linear .28s}.machines-page.panel-open .machine-side-panel{border-color:#d9ddd4;box-shadow:0 12px 28px #17201a1a;opacity:1;pointer-events:auto;transform:translate(0);visibility:visible;transition-delay:0s}.machine-side-panel-content{min-height:100%;min-width:0;animation:machine-content-in .2s ease both;transition:opacity .18s ease,transform .18s ease}.machine-side-panel-content.is-exiting{opacity:0;transform:translate(20px)}@keyframes machine-content-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.machine-side-panel-header{position:sticky;top:0;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid #e6e9e2;background:#fff;padding:20px 22px}.machine-side-panel-header h2{margin:2px 0 0;font-size:22px;overflow-wrap:anywhere}.icon-button{display:grid;width:40px;height:40px;flex:0 0 40px;place-items:center;border-radius:8px;background:#eceeed;color:#59615b}.icon-button:hover:not(:disabled){background:#dfe2df;color:#2f3731}.machine-panel-form{border:0;border-radius:0;padding:22px}.machine-panel-form .form-grid{grid-template-columns:1fr}.machine-image-manager{display:grid;gap:12px;border-top:1px solid #e1e5de;padding-top:16px}.machine-image-manager-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.machine-image-manager-heading>div{display:grid;gap:3px}.machine-image-manager-heading strong{color:#354139;font-size:13px}.machine-image-manager-heading span,.machine-image-empty{color:#68736b;font-size:12px;line-height:1.4}.machine-image-manager-heading .pending-image-count{max-width:150px;color:#8a2b24;text-align:right}.machine-image-editor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:112px;gap:8px}.machine-image-editor-entry{display:grid;min-width:0;height:112px;grid-template-columns:minmax(0,1fr)}.machine-image-editor-entry.confirming{grid-column:1 / -1;grid-template-columns:minmax(180px,1fr) 112px;gap:8px}.machine-image-editor-item{position:relative;width:100%;height:100%;min-width:0;overflow:hidden;border:1px solid #d9ddd4;border-radius:6px;background:#edf3e9}.machine-image-editor-item img{width:100%;height:100%;object-fit:cover;transition:filter .16s ease,opacity .16s ease}.machine-image-editor-item button{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:grid;place-items:center;background:#141b1699;color:#fff;opacity:0;transition:opacity .16s ease}.machine-image-editor-item:hover button,.machine-image-editor-item:focus-within button,.machine-image-editor-item.pending-removal button{opacity:1}.machine-image-editor-item:hover img,.machine-image-editor-item:focus-within img,.machine-image-editor-item.pending-removal img{filter:brightness(.52)}.machine-image-editor-item.pending-removal img{opacity:.65}.machine-image-editor-item>span{position:absolute;right:5px;bottom:5px;left:5px;z-index:2;overflow:hidden;color:#fff;font-size:10px;font-weight:700;text-align:center;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.machine-image-editor-item.new-image>span{right:auto;left:5px;border-radius:4px;background:#265b31e0;padding:3px 5px}.image-delete-confirmation{display:grid;min-width:0;height:100%;align-content:center;gap:10px;border:1px solid #d5aaa5;border-radius:6px;background:#fff5f3;color:#632620;padding:10px 12px;animation:image-confirmation-in .16s ease both}.image-delete-confirmation>span{font-size:12px;font-weight:700;line-height:1.35}.image-delete-confirmation>div{display:flex;gap:7px}.image-delete-confirmation button{display:grid;width:32px;height:30px;place-items:center;border-radius:6px}.image-delete-confirmation button.confirm{background:#265b31;color:#fff}.image-delete-confirmation button.cancel{border:1px solid #c9ceca;background:#fff;color:#59615b}@keyframes image-confirmation-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.machine-image-empty{margin:0;border:1px dashed #cbd1c8;border-radius:6px;padding:14px;text-align:center}.machine-image-dropzone{display:grid;width:100%;min-height:112px;place-items:center;gap:4px;border:1px dashed #9eaaa0;border-radius:6px;background:#f8faf7;color:#526057;padding:16px;text-align:center;transition:border-color .16s ease,background .16s ease,color .16s ease}.machine-image-dropzone:hover,.machine-image-dropzone:focus-visible,.machine-image-dropzone.dragging{border-color:#3f7048;background:#edf5eb;color:#214a2a}.machine-image-dropzone>*{pointer-events:none}.machine-image-dropzone strong{font-size:13px}.machine-image-dropzone span{color:#748078;font-size:11px}.machine-image-error{margin:-4px 0 0;color:#8a2b24;font-size:12px}.machine-panel-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #e6e9e2;padding-top:16px}.machine-detail-panel{display:grid;gap:18px;padding:22px}.machine-gallery{position:relative;overflow:hidden;aspect-ratio:4 / 3;border-radius:8px;background:#edf3e9}.machine-gallery-image{width:100%;height:100%;object-fit:cover;opacity:1;transition:opacity .1s ease}.machine-gallery-image.is-fading{opacity:0}.machine-gallery-placeholder{display:grid;width:100%;height:100%;place-items:center;color:#213c25;font-size:38px;font-weight:800}.gallery-arrow{position:absolute;top:50%;z-index:1;display:grid;width:36px;height:36px;place-items:center;border-radius:50%;background:#ffffffe0;color:#213c25;transform:translateY(-50%)}.gallery-arrow.previous{left:10px}.gallery-arrow.next{right:10px}.gallery-dots{position:absolute;right:0;bottom:12px;left:0;z-index:1;display:flex;justify-content:center;gap:7px}.gallery-dots button{width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 1px #0000002e;background:#ffffff9e;padding:0}.gallery-dots button.active{background:#fff;transform:scale(1.35)}.machine-detail-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.machine-detail-heading strong{color:#265b31;font-size:14px}.machine-detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0}.machine-detail-list div{display:grid;min-width:0;gap:4px}.machine-detail-list .wide{grid-column:1 / -1;border-top:1px solid #e6e9e2;padding-top:14px}.machine-detail-list dt{color:#647067;font-size:12px;font-weight:700}.machine-detail-list dd{margin:0;overflow-wrap:anywhere;line-height:1.5}.booking-date-field{display:grid;gap:6px;color:#465149;font-size:13px;font-weight:700}.booking-slot-form{width:min(100%,760px)}.booking-slot-field{display:grid;gap:9px;margin:0;border:0;padding:0}.booking-slot-field legend{margin-bottom:6px;color:#465149;font-size:13px;font-weight:700}.booking-slot-button{display:flex;width:100%;align-items:center;justify-content:space-between;gap:16px;border:1px solid #cfd7cb;border-radius:8px;background:#fff;color:#213c25;padding:13px 15px;text-align:left}.booking-slot-button>span{display:grid;gap:3px}.booking-slot-button small{color:#647067}.booking-slot-button em{border-radius:999px;background:#edf8e8;color:#265b31;padding:5px 9px;font-size:11px;font-style:normal;font-weight:700}.booking-slot-button:hover:not(:disabled),.booking-slot-button.selected{border-color:#3f7048;box-shadow:0 0 0 1px #3f7048}.booking-slot-button.selected em{background:#265b31;color:#fff}.booking-slot-button.unavailable,.booking-slot-button:disabled{cursor:not-allowed;border-color:#ead0cc;background:#fff8f7;color:#8a2b24;opacity:1}.booking-slot-button.unavailable em{background:#fff0ee;color:#8a2b24}.review-summary-card{display:grid;width:min(100%,760px);gap:22px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;padding:22px}.review-summary-card section{display:grid;gap:10px}.review-summary-card section+section{border-top:1px solid #e4e8e1;padding-top:20px}.review-summary-card h2{margin:0;font-size:18px}.review-summary-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0}.review-summary-card dl div{display:grid;gap:4px}.review-summary-card dt{color:#647067;font-size:12px;font-weight:700}.review-summary-card dd{margin:0;overflow-wrap:anywhere}.review-summary-card .wide{grid-column:1 / -1}.month-calendar{width:min(100%,680px);overflow:hidden;justify-self:center;border:1px solid #d8ddd6;border-radius:8px;background:#fff}.month-switcher{display:grid;min-height:58px;grid-template-columns:34px minmax(58px,1fr) minmax(150px,2fr) minmax(58px,1fr) 34px;align-items:center;border-bottom:1px solid #e1e5df;padding:0 8px}.month-switcher button{min-width:0;background:transparent;color:#637067}.month-arrow{display:grid;width:32px;height:32px;place-items:center;border-radius:50%}.month-arrow:hover{background:#edf3e9;color:#244d2c}.adjacent-month{overflow:hidden;padding:8px 4px;font-size:10px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.adjacent-month:hover{color:#265b31}.current-month{display:grid;overflow:hidden;color:#1d2d21;justify-items:center;text-align:center;text-overflow:ellipsis;white-space:nowrap}.current-month span{overflow:hidden;max-width:100%;font-size:20px;font-weight:800;text-overflow:ellipsis}.current-month small{color:#748078;font-size:10px;font-weight:600}.month-enter-right{animation:month-enter-right .22s ease both}.month-enter-left{animation:month-enter-left .22s ease both}@keyframes month-enter-right{0%{opacity:0;transform:translate(28px) scale(.5)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes month-enter-left{0%{opacity:0;transform:translate(-28px) scale(.5)}to{opacity:1;transform:translate(0) scale(1)}}.month-weekdays,.month-date-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-weekdays{border-bottom:1px solid #dfe3dd;background:#f8faf7}.month-weekdays span{padding:8px 4px;color:#69736b;font-size:10px;font-weight:700;text-align:center;text-transform:uppercase}.month-date{position:relative;display:grid;min-width:0;min-height:44px;place-items:center;border-right:1px solid #e4e7e2;border-bottom:1px solid #e4e7e2;background:#fff;color:#27352b;font-size:12px;font-weight:600}.month-date:nth-child(7n){border-right:0}.month-date:nth-last-child(-n+7){border-bottom:0}.month-date:hover:not(:disabled){z-index:1;background:#eef5eb;box-shadow:inset 0 0 0 1px #718e73}.month-date.selected{z-index:1;background:#2f6238;color:#fff;box-shadow:inset 0 0 0 1px #234c2b}.month-date.selected:hover:not(:disabled){background:#2f6238;color:#fff;box-shadow:inset 0 0 0 1px #234c2b}.month-date.today:not(.selected):after{position:absolute;bottom:6px;width:4px;height:4px;border-radius:50%;background:#3c7245;content:""}.month-date.outside-month{background:#fafbfa;color:#b4bbb5}.month-date.weekend{background:#f3f4f2;color:#a8afa9}.month-date:disabled{cursor:not-allowed;opacity:.72}.calendar-machine-prompt{display:flex;min-height:38px;align-items:center;justify-content:center;gap:7px;border-top:1px solid #e1e5df;color:#657168;padding:8px 12px;font-size:11px;font-weight:600}.time-panel-content{min-height:100%}.booking-time-panel{display:grid;gap:14px;padding:18px}.time-selection-overview{display:grid;grid-template-columns:28px repeat(2,minmax(0,1fr));align-items:center;gap:10px;border-bottom:1px solid #e2e6df;padding-bottom:14px;color:#315f38}.time-selection-overview>div{display:grid;gap:2px}.time-selection-overview span{color:#6b756d;font-size:10px;font-weight:700;text-transform:uppercase}.time-selection-overview strong{color:#1f3023;font-size:17px}.time-slot-list{overflow:hidden;border:1px solid #d8ddd6;border-radius:7px}.time-slot-row{display:grid;width:100%;min-height:34px;grid-template-columns:52px minmax(16px,1fr) 92px;align-items:center;gap:8px;border-bottom:1px solid #e5e8e3;background:#fff;color:#26332a;padding:0 10px;text-align:left}.time-slot-row:last-child{border-bottom:0}.time-slot-row>span:first-child{font-size:11px;font-weight:800}.time-slot-row small{color:#738077;font-size:10px;text-align:right}.time-slot-rule{height:1px;background:#dce1da}.time-slot-row:hover:not(:disabled){background:#eef5eb}.time-slot-row.break-time{background:#e2e4e1;color:#7e8680}.time-slot-row.break-time .time-slot-rule{background:#c5cac5}.time-slot-row.booked-time{background:#f5ecea;color:#8a4a43}.time-slot-row.day-end-time{background:#f8faf7;color:#667168}.time-slot-row:disabled{cursor:not-allowed}.time-slot-row.selected{border-bottom-color:#44774c;background:#2f6238;color:#fff;box-shadow:inset 3px 0 #173d20,inset -3px 0 #173d20}.time-slot-row.selected small{color:#e5f0e2}.time-slot-row.selected .time-slot-rule{background:#7ea584}.time-slot-row.selection-start{box-shadow:inset 3px 0 #173d20,inset -3px 0 #173d20,inset 0 3px #173d20}.time-slot-row.selection-end{box-shadow:inset 3px 0 #173d20,inset -3px 0 #173d20,inset 0 -3px #173d20}.time-slot-row.selection-start.selection-end{box-shadow:inset 0 0 0 3px #173d20}.time-panel-actions{display:flex;justify-content:space-between;gap:8px;border-top:1px solid #e2e6df;padding-top:14px}.approval-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}.approval-meta div{display:grid;gap:4px}.approval-meta dt{color:#647067;font-size:12px;font-weight:700}.approval-meta dd{margin:0;color:#17201a}.approval-actions{display:grid;gap:10px}.approval-actions textarea,.review-form textarea,.review-form input,.review-form select{min-height:72px;border:1px solid #ccd2c8;border-radius:8px;padding:10px 12px}.review-form input,.review-form select{min-height:42px}.approval-actions textarea,.review-form textarea{resize:vertical}.review-form{display:grid;gap:12px;border-top:1px solid #e6e9e2;padding-top:14px}.review-form label{display:grid;gap:6px;color:#465149;font-size:13px;font-weight:700}.detail-block{display:grid;gap:4px;border-radius:8px;background:#f8faf6;padding:12px}.detail-block strong{font-size:13px}.detail-block p{margin:0;color:#5d6a5f}.button-row{display:flex;flex-wrap:wrap;gap:8px}.approve-button{background:#265b31;color:#fff}.reject-button{background:#8a2b24;color:#fff}.notice{border-radius:8px;font-size:14px;line-height:1.45;padding:12px}.notice.success{border:1px solid #9bc78a;background:#edf8e8;color:#213c25}.notice.info{border:1px solid #bac6d9;background:#eef4fb;color:#24364d}.notice.danger{border:1px solid #e2a6a0;background:#fff0ee;color:#8a2b24}.system-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:grid;place-items:center;background:#1118136b;padding:20px;animation:loaded-content-in .1s ease-out both}.system-dialog{display:grid;width:min(100%,360px);justify-items:center;gap:12px;border:1px solid #d9ddd4;border-radius:8px;background:#fff;box-shadow:0 18px 42px #11181338;padding:24px;text-align:center}.system-dialog-icon{display:grid;width:48px;height:48px;place-items:center;border-radius:50%;background:#edf8e8;color:#265b31}.system-dialog h2{margin:0;color:#1f3023;font-size:19px;line-height:1.25}.loading-state{display:inline-flex;min-height:36px;width:fit-content;align-items:center;gap:9px;color:#5d6960;font-size:13px;font-weight:700}.loading-spinner{flex:0 0 auto;color:#34643e;animation:loading-spin .7s linear infinite}.screen-loading-state{min-height:100vh;margin-inline:auto}.load-fade-in{animation:loaded-content-in .1s ease-out both}@keyframes loading-spin{to{transform:rotate(360deg)}}@keyframes loaded-content-in{0%{opacity:0}to{opacity:1}}.screen-status{display:grid;min-height:100vh;place-items:center;color:#5d6a5f;font-weight:700}@media(max-width:820px){.app-shell{min-height:100dvh;grid-template-columns:1fr;padding-top:calc(64px + env(safe-area-inset-top,0px))}.mobile-app-header{position:fixed;top:0;right:0;left:0;z-index:70;display:flex;min-height:64px;align-items:center;gap:12px;border-bottom:1px solid #d9ddd4;background:#fff;padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;box-shadow:0 4px 14px #17201a12}.mobile-app-header .brand{min-width:0}.mobile-menu-button{display:grid;width:42px;height:42px;flex:0 0 42px;place-items:center;border-radius:8px;background:#265b31;color:#fff}.mobile-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:block;background:#1018125c;opacity:0;pointer-events:none;transition:opacity .18s ease}.app-shell.mobile-menu-open .mobile-menu-backdrop{opacity:1;pointer-events:auto}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:90;width:min(86vw,330px);height:100dvh;overflow-y:auto;border-right:1px solid #d9ddd4;border-bottom:0;box-shadow:18px 0 34px #17201a2e;opacity:0;pointer-events:none;transform:translate(-104%);transition:opacity .18s ease,transform .24s ease}.app-shell.mobile-menu-open .sidebar{opacity:1;pointer-events:auto;transform:translate(0)}.sidebar>.brand{padding-right:48px}.mobile-menu-close{position:absolute;top:16px;right:16px;display:grid!important}.sidebar nav{grid-template-columns:1fr}.main-content{min-height:calc(100dvh - 64px);padding:20px 16px 28px}.app-shell .screen-loading-state,.app-shell .screen-status{min-height:calc(100dvh - 64px)}.status-grid{grid-template-columns:1fr}.dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-overview-grid,.operations-panel-grid,.admin-operations-grid{grid-template-columns:1fr}.review-queue-panel,.lab-management-panel{max-height:none;overflow-y:visible}.booking-workspace-page,.booking-workspace-page.panel-open{grid-template-columns:minmax(0,1fr);gap:0}.booking-form-pane{grid-column:1;grid-row:auto}.booking-machine-panel{display:none;position:fixed;top:calc(64px + env(safe-area-inset-top,0px));right:0;bottom:0;left:0;z-index:75;width:100%;height:calc(100dvh - 64px - env(safe-area-inset-top,0px));max-height:calc(100dvh - 64px - env(safe-area-inset-top,0px));overflow-y:auto;border:0;border-radius:0;box-shadow:none;opacity:1;pointer-events:auto;transform:none;visibility:visible;transition:none}.booking-workspace-page.panel-open .booking-machine-panel{display:block;border-color:transparent;box-shadow:none;transform:none}.row-header,.approval-meta,.form-grid{grid-template-columns:1fr}.approval-main,.record-main{display:grid}.month-calendar{width:100%}.machines-page,.machines-page.panel-open{grid-template-columns:minmax(0,1fr);gap:0}.machine-list-pane,.machines-page.panel-open .machine-list-pane{grid-column:1;grid-row:auto;width:100%;transform:none}.machine-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.machine-side-panel{display:none;position:fixed;top:calc(64px + env(safe-area-inset-top,0px));right:0;bottom:0;left:0;z-index:75;width:100%;height:calc(100dvh - 64px - env(safe-area-inset-top,0px));max-height:calc(100dvh - 64px - env(safe-area-inset-top,0px));overflow-y:auto;border:0;border-radius:0;box-shadow:none;opacity:1;pointer-events:auto;transform:none;visibility:visible;transition:none;justify-self:stretch}.machines-page.panel-open .machine-side-panel{display:block;border-color:transparent;box-shadow:none;transform:none}.machine-fab,.machines-page.panel-open .machine-fab{right:16px;bottom:16px}.machine-side-panel-header,.machine-panel-form,.machine-detail-panel{padding:18px}.booking-machine-panel-content,.machine-side-panel-content{min-height:calc(100dvh - 64px - env(safe-area-inset-top,0px));background:#fff;padding-bottom:env(safe-area-inset-bottom,0px)}}@media(max-width:480px){.dashboard-metrics,.booking-machine-card-list,.compact-review-form{grid-template-columns:1fr}.dashboard-booking-rows article{grid-template-columns:1fr}.month-switcher{grid-template-columns:30px minmax(42px,1fr) minmax(110px,2fr) minmax(42px,1fr) 30px;padding:0 4px}.current-month span{font-size:17px}.adjacent-month{font-size:9px}.month-date{min-height:39px}.month-weekdays span{padding-inline:2px;font-size:9px}.booking-time-panel{padding:14px}.time-slot-row{grid-template-columns:48px minmax(12px,1fr) 82px;padding-inline:8px}.machine-grid{grid-template-columns:1fr}.machine-card-heading{display:grid}.machine-panel-actions{align-items:stretch;flex-direction:column-reverse}.machine-panel-actions>span{display:none}.machine-panel-actions button{width:100%}}@media(min-width:821px)and (max-width:1180px){.machines-page{--machine-panel-width: 360px}.machines-page.panel-open .machine-fab{right:410px}}@media(prefers-reduced-motion:reduce){.load-fade-in,.loading-spinner,.machines-page,.machine-list-pane,.machine-side-panel,.machine-side-panel-content,.machine-gallery-image,.machine-fab{animation:none;transition:none}}
