*{box-sizing:border-box;margin:0;padding:0}body{color:#0f172a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f1f5f9;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}#root{min-height:100vh}.login-container{background-color:#0f172a;min-height:100vh;display:flex}.login-visual{flex:1;display:none;position:relative;overflow:hidden}.login-visual-img{object-fit:cover;object-position:center;width:100%;height:100%;position:absolute;inset:0}.login-visual-overlay{background:linear-gradient(#0f172a4d 0%,#0f172a1a 45%,#0f172a99 100%);position:absolute;inset:0}.login-visual-content{color:#fff;padding:48px;position:absolute;bottom:0;left:0;right:0}.login-visual-icon{margin-bottom:16px;font-size:28px;line-height:1}.login-visual-content h2{color:#fff;margin-bottom:8px;font-size:26px;font-weight:700}.login-visual-content p{color:#e2e8f0e6;margin:0;font-size:15px}.login-panel{background-color:#f8fafc;justify-content:center;align-items:center;width:100%;max-width:520px;display:flex}.login-form{width:100%;max-width:380px;padding:32px 24px}.login-form-header{margin-bottom:28px}.login-form-header h1{color:#0f172a;margin:0 0 6px;font-size:24px;font-weight:700}.login-form-header p{color:#64748b;margin:0;font-size:14px}.login-field{margin-bottom:16px}.login-field label{color:#334155;margin-bottom:6px;font-size:14px;font-weight:500;display:block}.login-field input{color:#0f172a;box-sizing:border-box;background-color:#fff;border:1px solid #e2e8f0;border-radius:10px;width:100%;padding:12px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s}.login-field input::placeholder{color:#94a3b8}.login-field input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.password-wrapper{position:relative}.password-wrapper input{padding-right:44px}.password-toggle{cursor:pointer;color:#64748b;background:0 0;border:none;justify-content:center;align-items:center;width:44px;height:100%;padding:0;transition:color .15s;display:flex;position:absolute;top:0;right:0}.password-toggle:hover{color:#334155}.password-toggle:focus-visible{color:#2563eb;outline:none}.login-btn{color:#fff;cursor:pointer;background-color:#2563eb;border:none;border-radius:10px;width:100%;margin-top:8px;padding:12px;font-size:14px;font-weight:600;transition:background-color .15s,box-shadow .15s}.login-btn:hover{background-color:#1d4ed8;box-shadow:0 2px 8px #2563eb40}.login-btn:disabled{cursor:not-allowed;box-shadow:none;background-color:#93c5fd}.error{color:#991b1b;background-color:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:14px}.success{color:#065f46;background-color:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:14px}.loading{color:#64748b;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100vh;font-size:14px;display:flex}.loading-inline{color:#64748b;justify-content:center;align-items:center;gap:12px;padding:48px 0;font-size:14px;display:flex}.spinner{border:2.5px solid #e2e8f0;border-top-color:#2563eb;border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.empty-message{color:#94a3b8;text-align:center;padding:32px 24px;font-size:14px}.page-container{min-height:100vh}.page-main{max-width:1200px;margin:0 auto;padding:32px 24px}.page-main h2{color:#0f172a;margin-bottom:8px;font-size:22px;font-weight:600}.subtitle{color:#64748b;margin-bottom:24px;font-size:14px}.page-header{color:#fff;z-index:10;background-color:#0f172a;justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:relative;box-shadow:0 1px 3px #0000001a}.page-header h1{white-space:nowrap;font-size:18px;font-weight:600}.header-title-wrap{position:relative}.header-selector{color:#fff;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;margin:0 -10px;padding:6px 10px;font-family:inherit;font-size:18px;font-weight:600;transition:background-color .15s;display:inline-flex}.header-selector:hover{background-color:#ffffff14}.header-selector.open{background-color:#ffffff1f}.header-selector-caret{color:#94a3b8;font-size:11px;transition:transform .15s}.header-selector.open .header-selector-caret{transform:rotate(180deg)}.header-menu{z-index:100;background:#fff;border:1px solid #e2e8f0;border-radius:10px;min-width:220px;padding:6px;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 12px 32px #0f172a2e}.header-menu-item{text-align:left;color:#0f172a;cursor:pointer;background:0 0;border:none;border-radius:6px;width:100%;padding:10px 12px;font-family:inherit;font-size:14px;font-weight:500;transition:background-color .15s,color .15s;display:block}.header-menu-item:hover{background-color:#f1f5f9}.header-menu-item.active{color:#4338ca;background-color:#eef2ff;font-weight:600}.header-left{align-items:center;gap:32px;display:flex}.header-nav{align-items:center;gap:2px;display:flex}.nav-link{color:#94a3b8;border-bottom:2px solid #0000;padding:20px 12px 16px;font-size:14px;font-weight:500;text-decoration:none;transition:color .15s}.nav-link:hover{color:#e2e8f0}.nav-link.active{color:#fff;border-bottom-color:#60a5fa}.header-right{align-items:center;gap:16px;font-size:14px;display:flex}.header-email{color:#94a3b8;font-size:13px}.header-right button{color:#94a3b8;cursor:pointer;background-color:#0000;border:1px solid #ffffff26;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:color .15s,border-color .15s,background-color .15s}.header-right button:hover{color:#fff;background-color:#ffffff14;border-color:#ffffff4d}.page-title-row{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.page-title-row h2{margin-bottom:0}.stats-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px;display:grid}.stat-card{background:#fff;border-left:4px solid #e2e8f0;border-radius:10px;flex-direction:column;gap:4px;padding:24px 20px;transition:box-shadow .2s;display:flex;box-shadow:0 1px 3px #0000000a}.stat-card:hover{box-shadow:0 4px 12px #0000000f}.stat-card.available{border-left-color:#059669}.stat-card.borrowed{border-left-color:#d97706}.stat-card.overdue{border-left-color:#dc2626}.stat-number{color:#0f172a;font-size:32px;font-weight:700;line-height:1.1}.stat-card.available .stat-number{color:#059669}.stat-card.borrowed .stat-number{color:#d97706}.stat-card.overdue .stat-number{color:#dc2626}.stat-label{color:#64748b;font-size:13px;font-weight:500}.movements-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:24px;padding:24px;box-shadow:0 1px 3px #0000000a}.movements-section h3{color:#0f172a;margin-bottom:16px;font-size:16px;font-weight:600}.nav-cards{flex-wrap:wrap;gap:16px;display:flex}.nav-card{color:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex:1;min-width:200px;padding:24px;text-decoration:none;transition:box-shadow .2s,border-color .2s;display:block;box-shadow:0 1px 3px #0000000a}.nav-card:hover{border-color:#cbd5e1;box-shadow:0 4px 12px #0000000f}.nav-card h3{color:#0f172a;margin-bottom:4px;font-size:16px;font-weight:600}.nav-card p{color:#64748b;font-size:13px}.content-grid{grid-template-columns:350px 1fr;align-items:start;gap:32px;display:grid}.form-section,.list-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:24px;box-shadow:0 1px 3px #0000000a}.form-section h2,.list-section h2{color:#0f172a;margin:0;font-size:16px;font-weight:600}.list-section>h2{margin-bottom:16px}.list-search{margin-bottom:16px;position:relative}.list-search .search-icon{color:#94a3b8;pointer-events:none;display:flex;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.list-search input{color:#0f172a;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;width:100%;padding:10px 14px 10px 38px;font-size:14px;transition:border-color .15s,box-shadow .15s}.list-search input::placeholder{color:#94a3b8}.list-search input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.list-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;display:flex}.organize-actions{gap:8px;display:flex}.form-section label,.modal-body label{color:#334155;margin-bottom:6px;font-size:14px;font-weight:500;display:block}.char-count{float:right;color:#94a3b8;font-size:12px;font-weight:400}.form-section input,.modal-body select,.modal-body input{color:#0f172a;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;width:100%;margin-bottom:16px;padding:10px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s}.form-section input::placeholder,.modal-body input::placeholder{color:#94a3b8}.form-section input:focus,.modal-body select:focus,.modal-body input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.input-error{border-color:#dc2626!important}.input-error:focus{box-shadow:0 0 0 3px #dc26261a!important}.field-error{color:#dc2626;margin-top:-10px;margin-bottom:14px;font-size:12px;display:block}.student-note{color:#92400e;background-color:#fef3c7;border:1px solid #fcd34d;border-radius:8px;align-items:center;gap:10px;margin-bottom:16px;padding:10px 12px;font-size:13px;line-height:1.4;display:flex}.student-badge{color:#fff;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;background-color:#f59e0b;border-radius:999px;flex-shrink:0;padding:3px 8px;font-size:11px;font-weight:600}.withdrawal-form .searchable-select{margin-bottom:16px}.withdrawal-form input[type=date]{margin-bottom:0}.withdrawal-form .segmented-control{margin-bottom:16px}.withdrawal-section{border-top:1px solid #eef2f6;padding:14px 0}.withdrawal-section:first-of-type{border-top:none}.withdrawal-section-head{align-items:center;gap:8px;margin-bottom:12px;display:flex}.withdrawal-step{color:#2563eb;background-color:#dbeafe;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;font-weight:700;display:inline-flex}.withdrawal-section-title{color:#334155;letter-spacing:.2px;margin:0;font-size:13px;font-weight:600}.segmented-control{background-color:#f1f5f9;border:1px solid #e2e8f0;border-radius:10px;gap:4px;width:100%;padding:4px;display:flex}.segmented-control-item{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:8px 12px;font-size:13px;font-weight:500;transition:background-color .15s,color .15s,box-shadow .15s}.segmented-control-item:hover{color:#334155}.segmented-control-item.active{color:#2563eb;background-color:#fff;font-weight:600;box-shadow:0 1px 3px #0000001f}.withdrawal-footer{border-top:1px solid #eef2f6;justify-content:flex-end;align-items:center;gap:8px;margin-top:4px;padding-top:16px;display:flex}.withdrawal-footer button{min-width:120px}.withdrawal-footer button[type=submit]{min-width:200px}.form-buttons{gap:8px;display:flex}.form-buttons button,.modal-body .form-buttons button{cursor:pointer;border:none;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:500;transition:background-color .15s,box-shadow .15s}.form-buttons button[type=submit],.modal-body .form-buttons button[type=submit]{color:#fff;background-color:#2563eb}.form-buttons button[type=submit]:hover,.modal-body .form-buttons button[type=submit]:hover{background-color:#1d4ed8;box-shadow:0 2px 8px #2563eb40}.form-buttons button:disabled,.modal-body .form-buttons button:disabled{cursor:not-allowed;box-shadow:none;background-color:#93c5fd}.btn-cancel{color:#475569;background-color:#f1f5f9}.btn-cancel:hover{background-color:#e2e8f0}.btn-primary{color:#fff;cursor:pointer;background-color:#2563eb;border:none;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:500;transition:background-color .15s,box-shadow .15s}.btn-primary:hover{background-color:#1d4ed8;box-shadow:0 2px 8px #2563eb40}.btn-organize{color:#fff;cursor:pointer;background-color:#2563eb;border:1px solid #2563eb;border-radius:6px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.btn-organize:hover:not(:disabled){background-color:#1d4ed8;border-color:#1d4ed8}.btn-organize:disabled{cursor:not-allowed;background-color:#93c5fd;border-color:#93c5fd}.btn-save-organize{color:#fff;cursor:pointer;background-color:#059669;border:1px solid #059669;border-radius:6px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.btn-save-organize:hover{background-color:#047857;border-color:#047857}.btn-cancel-organize{color:#475569;cursor:pointer;background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.btn-cancel-organize:hover{background-color:#f1f5f9;border-color:#cbd5e1}.btn-icon{font-size:13px;line-height:1}.keys-list-sortable .key-card{cursor:default}.drag-zone{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;background-color:#f8fafc;border:1px dashed #cbd5e1;border-radius:6px;flex-shrink:0;align-items:center;gap:8px;padding:8px 14px;transition:background-color .15s,border-color .15s;display:flex}.drag-zone:hover{background-color:#f1f5f9;border-color:#94a3b8}.drag-zone:active{cursor:grabbing;background-color:#e2e8f0;border-color:#64748b}.drag-zone-grip{color:#94a3b8;letter-spacing:-2px;font-size:16px;line-height:1}.drag-zone:hover .drag-zone-grip{color:#475569}.drag-zone-label{color:#94a3b8;white-space:nowrap;font-size:12px}.drag-zone:hover .drag-zone-label{color:#64748b}.key-card-dragging{background-color:#f8fafc;border-color:#2563eb;box-shadow:0 4px 12px #2563eb26}.keys-list{flex-direction:column;gap:8px;display:flex}.list-section .keys-list{overscroll-behavior:contain;max-height:440px;overflow-y:auto}.key-card{border:1px solid #e2e8f0;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;transition:border-color .15s,background-color .15s;display:flex}.key-card:hover{background-color:#f8fafc;border-color:#cbd5e1}.key-info{flex-direction:column;gap:2px;min-width:0;display:flex}.key-info strong{color:#0f172a;font-size:14px;font-weight:600}.key-info span{color:#64748b;font-size:13px}.key-desc{color:#94a3b8;font-style:italic}.key-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.key-card.overdue{background-color:#fef2f2;border-color:#fecaca}.overdue-tag{color:#dc2626;text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:600}.status-badge{white-space:nowrap;border-radius:20px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:500;display:inline-flex}.status-badge:before{content:"";background-color:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.status-badge.available{color:#065f46;background-color:#ecfdf5}.status-badge.borrowed{color:#92400e;background-color:#fffbeb}.status-badge.overdue{color:#991b1b;background-color:#fef2f2}.btn-edit,.btn-delete{cursor:pointer;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:background-color .15s}.btn-edit{color:#4338ca;background-color:#eef2ff}.btn-edit:hover{background-color:#e0e7ff}.btn-delete{color:#b91c1c;background-color:#fef2f2}.btn-delete:hover{background-color:#fee2e2}.btn-return{cursor:pointer;color:#047857;background-color:#ecfdf5;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:background-color .15s}.btn-return:hover{background-color:#d1fae5}.modal-overlay{z-index:1000;background-color:#0f172a80;justify-content:center;align-items:center;padding:20px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#fff;border-radius:12px;width:100%;max-width:520px;max-height:90vh;animation:.2s slideUp;overflow-y:auto;box-shadow:0 20px 60px #00000026}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-header h2{color:#0f172a;margin:0;font-size:18px;font-weight:600}.modal-close{cursor:pointer;color:#94a3b8;background:0 0;border:none;border-radius:6px;padding:4px;font-size:20px;line-height:1;transition:color .15s,background-color .15s}.modal-close:hover{color:#0f172a;background-color:#f1f5f9}.modal-body{padding:24px}.searchable-select{margin-bottom:16px;position:relative}.searchable-select-field{position:relative}.searchable-select-field input{color:#0f172a;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;width:100%;margin-bottom:0;padding:10px 14px 10px 36px;font-size:14px;transition:border-color .15s,box-shadow .15s}.searchable-select-search-icon{color:#94a3b8;pointer-events:none;z-index:1;align-items:center;height:fit-content;margin:auto 0;display:flex;position:absolute;top:0;bottom:0;left:11px}.searchable-select-field input::placeholder{color:#94a3b8}.searchable-select-field input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.searchable-select-field input[readonly]{color:#0f172a;cursor:pointer;background-color:#fff}.searchable-select-caret{color:#94a3b8;pointer-events:none;flex-shrink:0;font-size:12px}.searchable-select-display{color:#0f172a;cursor:pointer;text-align:left;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:10px;width:100%;padding:10px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s;display:flex}.searchable-select-display:hover{border-color:#cbd5e1}.searchable-select-display .searchable-select-value-icon{flex:none}.searchable-select-display:hover .searchable-select-caret{color:#475569}.searchable-select-value-icon{text-align:center;flex-shrink:0;justify-content:center;align-items:center;width:20px;font-size:15px;display:inline-flex}.searchable-select-value-text{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:14px;font-weight:500;overflow:hidden}.searchable-select-list{z-index:20;background:#fff;border:1px solid #e2e8f0;border-radius:8px;max-height:300px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.searchable-select-item{cursor:pointer;border-radius:6px;align-items:center;gap:10px;padding:8px 10px;display:flex}.searchable-select-item.highlighted{background-color:#eef2ff}.searchable-select-item-icon{text-align:center;flex-shrink:0;justify-content:center;align-self:flex-start;align-items:center;width:20px;margin-top:2px;font-size:15px;display:inline-flex}.searchable-select-item-text{flex-direction:column;gap:1px;min-width:0;display:flex}.searchable-select-item-title{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.searchable-select-item-sub{color:#64748b;white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.searchable-select-empty{color:#94a3b8;text-align:center;padding:12px 14px;font-size:14px}.cabinet-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:24px;padding:24px;box-shadow:0 1px 3px #0000000a}.cabinet-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.cabinet-header h3{color:#0f172a;margin-bottom:4px;font-size:16px;font-weight:600}.cabinet-header p{color:#64748b;font-size:13px}.cabinet-legend{color:#475569;flex-wrap:wrap;justify-content:flex-end;gap:16px;font-size:13px;display:flex}.legend-item{white-space:nowrap;align-items:center;gap:6px;font-weight:500;display:inline-flex}.legend-item:before{content:"";background-color:currentColor;border-radius:50%;width:10px;height:10px}.legend-available,.legend-available:before{color:#059669}.legend-borrowed,.legend-borrowed:before{color:#d97706}.legend-overdue,.legend-overdue:before{color:#dc2626}.cabinet{background-color:#0f172a;border:1px solid #1e293b;border-radius:12px;padding:24px 20px;position:relative}.cabinet-empty{color:#94a3b8;text-align:center;padding:24px;font-size:14px}.cabinet-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:28px 16px;display:grid}.cabinet-slot{border-radius:2px;flex-direction:column;align-items:center;min-width:0;padding:10px 6px 8px;transition:background-color .15s,transform .15s;display:flex;position:relative}.cabinet-slot:hover{background-color:#94a3b814;transform:translateY(-1px)}.slot-label{background-color:#475569;border-radius:2px;align-items:center;gap:6px;margin-bottom:2px;padding:3px 8px;display:inline-flex}.slot-number{color:#f8fafc;font-variant-numeric:tabular-nums;letter-spacing:.04em;font-size:11px;font-weight:600;line-height:1}.slot-status-dot{background-color:currentColor;border-radius:1px;flex-shrink:0;width:7px;height:7px}.cabinet-slot.available .slot-status-dot{color:#059669}.cabinet-slot.borrowed .slot-status-dot{color:#d97706}.cabinet-slot.overdue .slot-status-dot{color:#dc2626}.slot-peg{background-color:#94a3b8;flex-shrink:0;width:2px;height:14px;margin-bottom:4px;display:block}.key-icon{color:#94a3b8;background-color:currentColor;width:48px;height:48px;transition:transform .15s;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.cabinet-slot:hover .key-icon{transform:scale(1.1)}.cabinet-slot.available .key-icon{color:#059669}.cabinet-slot.borrowed .key-icon{color:#d97706}.cabinet-slot.overdue .key-icon{color:#dc2626}.cabinet-slot-name{color:#e2e8f0;white-space:nowrap;text-overflow:ellipsis;max-width:100%;margin-top:6px;font-size:13px;font-weight:600;overflow:hidden}.cabinet-slot-location{color:#94a3b8;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:12px;overflow:hidden}.cabinet-tooltip{color:#e2e8f0;opacity:0;visibility:hidden;z-index:50;pointer-events:none;text-align:left;white-space:nowrap;background-color:#1e293b;border:1px solid #334155;border-radius:8px;flex-direction:column;gap:3px;width:max-content;min-width:160px;max-width:240px;padding:10px 12px;font-size:12px;transition:opacity .15s,visibility .15s;display:flex;position:absolute;box-shadow:0 8px 24px #00000080}.cabinet-tooltip.visible{opacity:1;visibility:visible}.cabinet-tooltip strong,.cabinet-tooltip span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.cabinet-tooltip strong{color:#fff;margin-bottom:2px;font-size:12px}.cabinet-tooltip:after{content:"";top:100%;left:calc(50% + var(--arrow-x,0px));border:5px solid #0000;border-top-color:#1e293b;position:absolute;transform:translate(-50%)}.cabinet-tooltip.below:after{border-top-color:#0000;border-bottom-color:#1e293b;top:auto;bottom:100%}.history-filters{background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:20px;padding:20px 24px;box-shadow:0 1px 3px #0000000a}.filter-row{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.filter-group{flex-direction:column;gap:6px;min-width:180px;display:flex}.filter-search{flex:1;min-width:220px}.filter-group .list-search{margin-bottom:0}.filter-group .list-search input[type=text]{padding-left:38px}.filter-group label{color:#334155;font-size:13px;font-weight:500}.filter-group input[type=text],.filter-group input[type=date]{color:#0f172a;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s}.filter-group input::placeholder{color:#94a3b8}.filter-group input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.btn-clear-filters{color:#475569;cursor:pointer;background-color:#f1f5f9;border:none;border-radius:8px;padding:10px 20px;font-size:14px;font-weight:500;transition:background-color .15s,color .15s}.btn-clear-filters:hover{color:#0f172a;background-color:#e2e8f0}.history-main{max-width:1600px}.history-main .history-filters{max-width:100%}.history-table-wrapper{overscroll-behavior:contain;background:#fff;border:1px solid #e2e8f0;border-radius:10px;max-height:480px;overflow:auto;box-shadow:0 1px 3px #0000000a}.history-table{border-collapse:separate;border-spacing:0;width:100%;min-width:1080px;font-size:14px}.history-table th{text-align:left;color:#475569;white-space:nowrap;z-index:1;background-color:#f8fafc;border-bottom:2px solid #e2e8f0;padding:12px 16px;font-size:13px;font-weight:600;position:sticky;top:0}.history-table td{color:#334155;border-bottom:1px solid #f1f5f9;padding:12px 16px}.history-table td.nowrap{white-space:nowrap}.truncate-cell{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.history-table .truncate-cell.key-name{max-width:320px}.history-table .truncate-cell.person-name{max-width:280px}.history-table tbody tr:nth-child(2n){background-color:#f8fafc}.history-table tbody tr:hover{background-color:#f1f5f9}.history-table .row-overdue{background-color:#fef2f2}.history-table .row-overdue:hover{background-color:#fee2e2}.history-pagination-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:12px;padding:0 2px;display:flex}.pagination-info{color:#64748b;font-size:13px}.pagination{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.pagination button{color:#334155;cursor:pointer;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;min-width:34px;height:34px;padding:0 10px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}.pagination button:hover:not(:disabled){background-color:#f1f5f9;border-color:#cbd5e1}.pagination button:disabled{opacity:.45;cursor:not-allowed}.pagination button.pagination-item.active{color:#fff;background-color:#2563eb;border-color:#2563eb;font-weight:600}@media (width>=769px){.login-visual{display:block}}@media (width<=768px){.login-panel{max-width:none}.login-form{max-width:420px;padding:40px 24px}.page-header{padding:12px 16px}.header-left{flex-direction:column;align-items:flex-start;gap:8px}.header-nav{gap:2px}.nav-link{border-bottom:none;border-radius:6px;padding:8px 10px;font-size:13px}.nav-link.active{background-color:#ffffff1a;border-bottom-color:#0000}.page-main{padding:24px 16px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px}.content-grid{grid-template-columns:1fr}.list-section .keys-list{max-height:320px}.history-table-wrapper{max-height:360px}.nav-cards{flex-direction:column}.nav-card{min-width:auto}.page-title-row{flex-direction:column;align-items:flex-start;gap:12px}.key-card{flex-direction:column;align-items:flex-start}.key-actions{justify-content:flex-end;width:100%}.drag-zone{justify-content:center;width:100%}.history-filters{padding:16px}.cabinet-header{flex-direction:column;align-items:flex-start}.cabinet-legend{justify-content:flex-start}.cabinet{padding:30px 12px 20px}.cabinet-grid{grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:22px 10px}.filter-row{flex-direction:column;align-items:stretch;gap:12px}.filter-group,.filter-search{min-width:0}.btn-clear-filters{width:100%}}.rooms-panel{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:20px;overflow:hidden;box-shadow:0 1px 3px #0000000d}.rooms-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 24px 18px;display:flex}.rooms-panel-titles h2{color:#0f172a;margin:0 0 4px;font-size:22px;font-weight:700}.rooms-panel-subtitle{color:#64748b;margin:0;font-size:14px}.rooms-weekbar{background-color:#fbfcfd;border-top:1px solid #eef2f7;flex-direction:column;align-items:center;gap:12px;padding:16px 24px 18px;display:flex}.rooms-weekbar-label{color:#1e293b;font-size:14px;font-weight:600}.rooms-weekbar-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.rooms-week-btn{color:#475569;cursor:pointer;background-color:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}.rooms-week-btn:hover:not(:disabled){background-color:#f1f5f9;border-color:#94a3b8}.rooms-week-btn:disabled{opacity:.55;cursor:not-allowed}.rooms-week-btn-current{color:#fff;background-color:#2563eb;border-color:#2563eb}.rooms-week-btn-current:hover:not(:disabled){background-color:#1d4ed8;border-color:#1d4ed8}.rooms-page-main{max-width:1600px}.rooms-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:12px;max-width:100%;overflow-x:auto;box-shadow:0 1px 3px #0000000d}.rooms-table{border-collapse:separate;border-spacing:0;width:100%;min-width:max-content;font-size:12.5px}.rooms-table th,.rooms-table td{text-align:center;vertical-align:middle;border:1px solid #e6ebf1;padding:10px 12px}.rooms-table thead th{color:#475569;z-index:1;background-color:#f8fafc;font-weight:600;position:sticky;top:0}.rooms-table thead .rooms-corner{z-index:5;text-align:left;white-space:nowrap;color:#334155;letter-spacing:.4px;text-transform:uppercase;background-color:#f1f5f9;font-size:12px;font-weight:700;position:sticky;top:0;left:0}.rooms-room-col{vertical-align:top;white-space:nowrap;width:160px;min-width:160px;max-width:240px;padding:12px 10px;overflow:hidden}.rooms-room-name{text-overflow:ellipsis;white-space:nowrap;color:#0f172a;font-size:13px;font-weight:700;display:block;overflow:hidden}.rooms-room-location{text-overflow:ellipsis;white-space:nowrap;color:#94a3b8;margin-top:3px;font-size:11px;font-weight:400;display:block;overflow:hidden}.rooms-table .rooms-day-col{z-index:4;color:#334155;white-space:nowrap;vertical-align:middle;text-align:left;background-color:#f8fafc;width:104px;padding:8px 12px;font-weight:600;position:sticky;left:0}.rooms-table .rooms-shift-col{z-index:4;color:#64748b;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap;background-color:#f1f5f9;width:72px;font-size:11px;font-weight:700;position:sticky;left:104px}.rooms-day-name{color:#1e293b;text-transform:uppercase;letter-spacing:.3px;font-size:12.5px;font-weight:700;display:block}.rooms-day-date{color:#64748b;margin-top:3px;font-size:11.5px;font-weight:500;display:block}.rooms-table .rooms-cell{z-index:0;vertical-align:middle;white-space:nowrap;width:160px;min-width:160px;max-width:240px;height:52px;font-weight:600;position:relative;overflow:hidden}.rooms-cell.available{color:#065f46;background-color:#ecfdf5}.rooms-cell.occupied{color:#92400e;background-color:#fffbeb}.rooms-cell.maintenance{color:#991b1b;background-color:#fef2f2}.rooms-cell.unknown{color:#94a3b8;background-color:#f1f5f9}.rooms-cell-content{flex-direction:column;align-items:center;gap:2px;min-width:0;display:inline-flex}.rooms-cell-note{text-overflow:ellipsis;white-space:nowrap;max-width:140px;color:inherit;opacity:.85;font-size:11px;font-weight:400;overflow:hidden}.btn-schedule{cursor:pointer;color:#0e7490;background-color:#ecfeff;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:background-color .15s}.btn-schedule:hover{background-color:#cffafe}.schedule-editor-hint{color:#64748b;margin:0 0 16px;font-size:13px}.schedule-editor-limit{color:#92400e;background-color:#fffbeb;border:1px solid #fcd34d;border-radius:8px;margin:0 0 16px;padding:10px 12px;font-size:13px}.range-fields{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}@media (width<=768px){.range-fields{grid-template-columns:1fr}}.range-preview{color:#334155;background-color:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin:0 0 16px;padding:10px 12px;font-size:13px}.schedule-mode-toggle{gap:8px;margin-bottom:16px;display:flex}.schedule-mode-toggle button{color:#475569;cursor:pointer;background-color:#f8fafc;border:1px solid #cbd5e1;border-radius:8px;flex:1;padding:8px 12px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}.schedule-mode-toggle button:hover:not(:disabled):not(.schedule-mode-active){background-color:#e2e8f0;border-color:#94a3b8}.schedule-mode-toggle button.schedule-mode-active{color:#fff;background-color:#2563eb;border-color:#2563eb}.schedule-mode-toggle button:disabled{opacity:.55;cursor:not-allowed}.schedule-editor-wrap{border:1px solid #e2e8f0;border-radius:8px;overflow-x:auto}.schedule-editor-table{border-collapse:collapse;width:100%;font-size:13px}.schedule-editor-table th,.schedule-editor-table td{text-align:center;vertical-align:middle;border:1px solid #e2e8f0;padding:10px}.schedule-editor-table thead th{color:#475569;white-space:nowrap;background-color:#f8fafc;font-weight:600}.schedule-editor-table .schedule-day{color:#475569;white-space:nowrap;background-color:#f8fafc;flex-direction:column;align-items:center;gap:2px;font-weight:600;display:flex}.schedule-day-date{color:#64748b;white-space:nowrap;font-size:11px;font-weight:400}.schedule-cell{flex-direction:column;gap:8px;min-width:180px;display:flex}.schedule-editor .schedule-sel{cursor:pointer;color:#0f172a;background-color:#f8fafc;border:1px solid #cbd5e1;border-radius:8px;width:100%;margin:0;padding:8px 10px;font-size:13px;font-weight:500}.schedule-editor .schedule-sel:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.schedule-editor .schedule-sel.available{color:#065f46;background-color:#ecfdf5}.schedule-editor .schedule-sel.occupied{color:#92400e;background-color:#fffbeb}.schedule-editor .schedule-sel.maintenance{color:#991b1b;background-color:#fef2f2}.schedule-editor .schedule-notes{color:#0f172a;box-sizing:border-box;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;width:100%;margin:0;padding:8px 10px;font-size:13px}.schedule-editor .schedule-notes:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 3px #2563eb1a}.schedule-editor-footer{justify-content:flex-end;align-items:center;gap:8px;margin-top:16px;display:flex}.schedule-editor-footer .btn-schedule-cancel{color:#475569;cursor:pointer;background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.schedule-editor-footer .btn-schedule-cancel:hover:not(:disabled){background-color:#f1f5f9;border-color:#cbd5e1}.schedule-editor-footer .btn-reset-schedule{color:#b91c1c;cursor:pointer;background-color:#fef2f2;border:1px solid #fecaca;border-radius:6px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.schedule-editor-footer .btn-reset-schedule:hover:not(:disabled){background-color:#fee2e2;border-color:#fca5a5}.schedule-editor-footer button:disabled{opacity:.55;cursor:not-allowed}@media (width<=768px){.rooms-panel-head{padding:18px 16px}.rooms-weekbar{padding:14px 16px 16px}.rooms-weekbar-controls{gap:6px}.rooms-week-btn{padding:7px 10px;font-size:12px}.rooms-room-col,.rooms-cell{min-width:140px;max-width:180px}.rooms-table{font-size:11.5px}.rooms-cell-note{max-width:120px}}@media (width<=480px){.login-container{background-color:#f8fafc}.login-form{padding:32px 16px}.stats-grid{grid-template-columns:1fr}.header-email{display:none}.stat-card{padding:16px}.stat-number{font-size:28px}}
