:root{--bg: #f3f5f8;--surface: #ffffff;--ink: #1d2939;--muted: #667085;--line: #d0d5dd;--brand: #0f4c5c;--brand-soft: #d8eef3;--ok: #0f766e;--warn: #b54708;--danger: #b42318;--reserved: #c2410c;--occupied: #4b5563;--available: #0284c7;--selected: #16a34a}*{box-sizing:border-box}body{margin:0;font-family:IBM Plex Sans,Segoe UI,sans-serif;color:var(--ink);background:radial-gradient(circle at top,#e7edf8 10%,#f4f7fb 60%,#eef2f7)}button,input,select{font:inherit}.app-shell{min-height:100vh;padding:1rem}.topbar{display:flex;justify-content:space-between;gap:1rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1rem 1.25rem;margin-bottom:1rem}.topbar h1{margin:0;font-size:1.3rem}.topbar p{margin:.3rem 0 0;color:var(--muted)}.mode-switch{background:#edf1f7;border-radius:10px;padding:.25rem;display:flex;gap:.25rem}.mode-switch button{border:0;border-radius:8px;padding:.5rem .75rem;color:#344054;background:transparent;cursor:pointer}.mode-switch button.active{background:#fff;color:#111827;box-shadow:0 1px 2px #1018281a}.page-grid{display:grid;grid-template-columns:260px 1fr 320px;gap:1rem}.sidebar,.main-content,.booking-panel,.card{background:var(--surface);border:1px solid var(--line);border-radius:14px}.sidebar{padding:1rem}.sidebar h2{margin:0 0 .6rem;font-size:1rem}.library-list{display:flex;flex-direction:column;gap:.5rem}.library-item{text-align:left;border:1px solid var(--line);background:#fbfcfd;border-radius:10px;padding:.55rem;cursor:pointer;display:flex;flex-direction:column;gap:.2rem}.library-item span{color:var(--muted);font-size:.9rem}.library-item.active{border-color:var(--brand);background:var(--brand-soft)}.main-content{padding:1rem}.page-heading h1{margin:0;font-size:1.2rem}.page-heading p{margin:.3rem 0 0;color:var(--muted)}.filters-bar{margin-top:1rem;display:flex;gap:.75rem}.filters-bar label{font-size:.9rem;display:flex;flex-direction:column;gap:.35rem}.filters-bar select,.card input,.card select{border:1px solid var(--line);border-radius:8px;padding:.45rem .55rem;background:#fff}.legend{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.8rem}.legend-item{display:flex;align-items:center;gap:.35rem;color:#344054;font-size:.9rem}.dot{width:14px;height:14px;border-radius:50%;border:1px solid rgba(0,0,0,.15)}.dot.available{background:var(--available)}.dot.selected{background:var(--selected)}.dot.reserved{background:var(--reserved)}.dot.occupied{background:var(--occupied)}.seat-map-wrapper{margin-top:1rem;background:linear-gradient(180deg,#f8fafc,#f1f5f9);border:1px dashed #cbd5e1;border-radius:12px;padding:.8rem}.seat-map{display:grid;gap:.45rem}.seat{border:0;border-radius:8px;min-height:40px;color:#fff;cursor:pointer;font-size:.85rem}.seat.available{background:var(--available)}.seat.selected{background:var(--selected)}.seat.reserved{background:var(--reserved);cursor:not-allowed;opacity:.85}.seat.occupied{background:var(--occupied);cursor:not-allowed;opacity:.85}.booking-panel{padding:1rem;position:sticky;top:1rem;height:fit-content}.booking-panel h3{margin:0}.meta{margin:.35rem 0;color:var(--muted)}.stats-grid{margin:.8rem 0;display:grid;grid-template-columns:1fr 1fr;gap:.4rem;font-size:.92rem}.selected-list{padding:.7rem;border:1px solid var(--line);border-radius:10px;background:#fafbfc}.selected-list p{margin:.4rem 0 0;color:#344054}.alert{margin:.8rem 0;border-radius:8px;padding:.55rem;font-size:.92rem}.alert.error{background:#fef3f2;color:var(--danger);border:1px solid #fecdca}.alert.success{background:#ecfdf3;color:var(--ok);border:1px solid #abefc6}.panel-actions{display:grid;gap:.5rem}.btn{border:0;border-radius:10px;padding:.55rem .8rem;background:var(--brand);color:#fff;cursor:pointer}.btn.light{background:#e5e7eb;color:#111827}.admin-page{display:grid;gap:1rem}.admin-page>h1{margin:0}.admin-page>p{margin:0;color:var(--muted)}.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.card{padding:1rem}.card h3{margin-top:0}.card form,.card{display:grid;gap:.5rem}.hint{color:var(--muted);margin:0;font-size:.92rem}.seat-override-grid{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:.5rem;display:grid;gap:.4rem}.override-row{display:flex;justify-content:space-between;align-items:center;gap:.6rem}.reservation-list{display:grid;gap:.5rem}.reservation-item{border:1px solid var(--line);border-radius:10px;padding:.55rem;display:grid;gap:.2rem;font-size:.92rem}.empty{padding:1rem;color:var(--muted)}@media (max-width: 1024px){.page-grid{grid-template-columns:1fr}.booking-panel{position:static}.admin-grid{grid-template-columns:1fr}}
