:root{color:#1f2937;background:#f4f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--ink: #1f2937;--muted: #667085;--line: #dbe3ee;--panel: #ffffff;--primary: #0f766e;--primary-dark: #115e59;--accent: #c2410c;--blue: #2563eb;--soft-green: #e7f6f2;--soft-blue: #eaf2ff;--soft-orange: #fff2e8;--danger: #b42318;--shadow: 0 18px 45px rgba(31, 41, 55, .1)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(360px,500px) minmax(320px,1fr);background-image:linear-gradient(115deg,#0718269e,#0f766e2e),var(--login-background);background-position:center;background-size:cover;background-repeat:no-repeat}.login-panel{margin:auto 0 auto clamp(20px,6vw,84px);width:min(470px,calc(100vw - 40px));background:#fffffff2;border:1px solid rgba(219,227,238,.8);border-radius:8px;padding:clamp(24px,5vw,42px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.login-aside{color:#fff;display:flex;flex-direction:column;justify-content:flex-end;gap:34px;min-height:100vh;padding:clamp(28px,7vw,96px);text-shadow:0 2px 24px rgba(0,0,0,.4)}.login-aside h2{max-width:680px;margin:10px 0 0;font-size:clamp(36px,6vw,72px);line-height:1.06;letter-spacing:0}.aside-grid{display:grid;grid-template-columns:repeat(3,minmax(0,140px));gap:14px}.aside-grid div{padding:18px;border-radius:8px;border:1px solid rgba(255,255,255,.36);background:#0a18246b;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.aside-grid strong{display:block;font-size:30px}.aside-grid span{font-size:14px}.brand-lockup,.sidebar-brand,.section-title,.metric,.room-card-head{display:flex;align-items:center;gap:12px}.login-brand{align-items:center;gap:16px}.college-logo{width:82px;height:82px;border-radius:50%;object-fit:contain;object-position:center;background:#fff;border:1px solid rgba(79,99,166,.22);box-shadow:0 10px 22px #2b3a811f;flex:0 0 auto}.brand-mark{width:48px;height:48px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--primary),var(--blue))}.brand-lockup h1,.topbar h1{margin:0;font-size:clamp(24px,4vw,38px);letter-spacing:0}.brand-lockup p,.metric p,.booking-main p,.room-card p{margin:6px 0 0;color:var(--muted)}.login-form{display:grid;gap:16px;margin-top:32px}label{display:grid;gap:7px;color:var(--ink);font-weight:650;min-width:0}label span{color:#475467;font-size:14px}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:12px 13px;color:var(--ink);background:#fff;outline:none;transition:border-color .18s ease,box-shadow .18s ease}textarea{min-height:96px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0f766e29}.primary-button,.ghost-button,.nav-list button,.user-card button,.row-actions button{border:0;border-radius:8px;min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}.primary-button{color:#fff;background:var(--primary);padding:0 18px;font-weight:750}.primary-button:hover{background:var(--primary-dark)}.ghost-button{color:var(--ink);background:#eef3f8;padding:0 16px}.ghost-button:hover{background:#e2eaf3}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;padding:22px 16px;background:#172033;color:#fff;display:flex;flex-direction:column}.sidebar-brand{padding:5px 6px 24px}.sidebar-brand .brand-mark{width:42px;height:42px}.sidebar-brand strong,.sidebar-brand span{display:block}.sidebar-brand span{color:#aebdcc;margin-top:3px;font-size:13px}.nav-list{display:grid;gap:8px}.nav-list button{justify-content:flex-start;width:100%;padding:0 13px;color:#dce7f3;background:transparent}.nav-list button:hover,.nav-list button.active{background:#ffffff1c;color:#fff}.user-card{margin-top:auto;padding:14px;border-radius:8px;background:#ffffff14}.user-card strong,.user-card span{display:block}.user-card span{color:#bfd0e0;margin-top:4px;font-size:14px}.user-card button{margin-top:14px;width:100%;color:#172033;background:#fff}.content{min-width:0;padding:28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:22px}.sync-indicator{min-height:34px;display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;border:1px solid var(--line);border-radius:999px;padding:0 12px;color:var(--muted);background:#fff;box-shadow:0 6px 18px #1f29370d}.sync-indicator span{width:8px;height:8px;border-radius:999px;background:var(--muted)}.sync-indicator strong{font-size:13px;font-weight:750}.sync-indicator.cloud.ready{color:var(--primary-dark);border-color:#0f766e38;background:var(--soft-green)}.sync-indicator.cloud.ready span{background:var(--primary)}.sync-indicator.saving,.sync-indicator.syncing{color:var(--blue);border-color:#2563eb33;background:var(--soft-blue)}.sync-indicator.saving span,.sync-indicator.syncing span{background:var(--blue)}.sync-indicator.error{color:var(--danger);border-color:#b4231833;background:#fff0ef}.sync-indicator.error span{background:var(--danger)}.eyebrow{margin:0;color:var(--primary);font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:0}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:14px;margin-bottom:18px}.metric,.panel{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 10px 28px #1f29370f}.metric{padding:18px}.metric>span{color:var(--primary);background:var(--soft-green);width:42px;height:42px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.metric strong{font-size:26px}.metric p{font-size:14px}.data-screen{border:1px solid rgba(103,232,249,.2);border-radius:8px;padding:20px;margin-bottom:18px;color:#fff;background:linear-gradient(135deg,#0f766e47,#2563eb29),#111827;box-shadow:0 22px 56px #1118272e}.screen-head,.screen-panel-head,.history-summary,.usage-label{display:flex;align-items:center;gap:12px}.screen-head{justify-content:space-between;margin-bottom:16px}.screen-head h2{margin:4px 0 0;font-size:28px;letter-spacing:0}.data-screen .eyebrow{color:#67e8f9}.screen-clock{min-width:138px;border:1px solid rgba(255,255,255,.16);border-radius:8px;padding:10px 12px;text-align:right;background:#ffffff14}.screen-clock strong,.screen-clock span,.screen-kpi span,.screen-kpi p{display:block}.screen-clock strong{font-size:26px}.screen-clock span{margin-top:3px;color:#c8d7e6;font-size:13px}.screen-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(132px,1fr));gap:12px;margin-bottom:14px}.screen-kpi,.screen-panel{border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#ffffff14}.screen-kpi{min-height:132px;padding:14px}.screen-kpi span{color:#c8d7e6;font-size:13px;font-weight:750}.screen-kpi strong{display:block;margin-top:12px;font-size:34px;line-height:1}.screen-kpi p{margin:12px 0 0;color:#dce8f6;font-size:13px;overflow-wrap:anywhere}.screen-grid,.usage-board{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:14px;margin-bottom:18px}.screen-grid{align-items:stretch}.screen-panel{padding:15px;min-width:0}.screen-panel-head{margin-bottom:12px;color:#e9f5ff}.screen-panel-head strong{font-size:16px}.timeline-list,.usage-list,.room-status-grid{display:grid;gap:10px}.timeline-item{display:grid;grid-template-columns:auto 118px minmax(0,1fr);gap:10px;align-items:center;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:10px;background:#ffffff12}.timeline-item strong{color:#fff}.timeline-item span,.timeline-item p{margin:0;color:#d4e2ef;overflow-wrap:anywhere}.timeline-item p{margin-top:3px;color:#fff;font-weight:700}.booking-status{display:inline-flex;align-items:center;justify-content:center;min-height:26px;width:fit-content;border-radius:999px;padding:0 9px;font-size:12px;font-weight:800;color:var(--primary-dark);background:var(--soft-green)}.booking-status.active{color:#075985;background:#e0f2fe}.booking-status.upcoming{color:var(--primary-dark);background:var(--soft-green)}.booking-status.ended{color:#475467;background:#eef3f8}.date-chip .booking-status,.timeline-item .booking-status{font-size:12px}.room-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.room-status{min-height:96px;border:1px solid rgba(255,255,255,.14);border-left:4px solid #34d399;border-radius:8px;padding:12px;background:#ffffff12}.room-status.busy{border-left-color:#fb923c}.room-status div{display:flex;justify-content:space-between;align-items:center;gap:8px}.room-status strong{font-size:18px}.room-status span{color:#d4e2ef;font-size:13px;font-weight:750}.room-status p{margin:12px 0 0;color:#fff;font-size:13px;overflow-wrap:anywhere}.usage-board .panel{margin-bottom:0}.data-screen .usage-board{margin:0}.usage-chart .section-title{margin-bottom:14px}.usage-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center}.usage-rank{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--primary-dark);background:var(--soft-green);font-weight:800}.usage-chart.orange .usage-rank{color:#7a2e0e;background:var(--soft-orange)}.usage-main{min-width:0}.usage-label{justify-content:space-between;margin-bottom:7px}.usage-label strong,.usage-label span{overflow-wrap:anywhere}.usage-label span{color:var(--muted);font-size:13px}.usage-bar{height:10px;overflow:hidden;border-radius:999px;background:#eef3f8}.usage-bar span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.usage-chart.orange .usage-bar span{background:var(--accent)}.usage-count{min-width:36px;text-align:right;color:var(--ink);font-size:20px}.filter-grid{display:grid;grid-template-columns:1.4fr repeat(4,minmax(150px,1fr));gap:14px}.history-summary{justify-content:space-between;flex-wrap:wrap;margin-top:16px;border-top:1px solid var(--line);padding-top:16px}.history-summary div{min-width:160px}.history-summary strong,.history-summary span{display:block}.history-summary strong{font-size:24px}.history-summary span{margin-top:3px;color:var(--muted);font-size:13px}.panel{padding:20px;margin-bottom:18px}.section-title{justify-content:space-between;margin-bottom:18px}.section-title span{color:var(--primary);background:var(--soft-green);width:38px;height:38px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center}.section-title h2{margin:0 auto 0 0;font-size:20px;letter-spacing:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.booking-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.span-2{grid-column:span 2}.availability-field{grid-column:1 / -1;min-width:0;margin:0;border:1px solid var(--line);border-radius:8px;padding:12px}.availability-field legend{padding:0 6px;color:#475467;font-size:14px;font-weight:650}.weekday-toggle-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.weekday-option{min-width:0}.weekday-option input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.weekday-label{min-height:38px;border:1px solid var(--line);border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);background:#fff;font-size:14px;font-weight:750}.weekday-option.checked .weekday-label{color:var(--primary-dark);border-color:#0f766e52;background:var(--soft-green)}.availability-note{display:flex;align-items:center;gap:8px;margin-top:14px;border:1px solid rgba(15,118,110,.2);border-radius:8px;padding:10px 12px;color:var(--primary-dark);background:var(--soft-green);font-weight:650}.availability-note.warning{color:var(--accent);border-color:#c2410c38;background:var(--soft-orange)}.form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.split-layout{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(420px,1.18fr);gap:18px;align-items:start}.toolbar{display:flex;justify-content:flex-end;margin:0 0 12px}.search-box{width:min(100%,440px);display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 12px;color:var(--muted)}.search-box input{border:0;box-shadow:none;padding-left:0}.booking-list,.data-list,.room-grid{display:grid;gap:12px}.booking-item,.list-item{display:grid;grid-template-columns:148px minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:14px;background:#fff}.date-chip{align-self:stretch;border-radius:8px;background:var(--soft-blue);color:var(--blue);display:grid;place-content:center;gap:5px;text-align:center;padding:8px}.date-chip span,.booking-main span,.list-item span,.room-card span{color:var(--muted);font-size:14px}.booking-main{min-width:0}.booking-main strong,.list-item strong{display:block;color:var(--ink);overflow-wrap:anywhere}.booking-main p{overflow-wrap:anywhere}.row-actions{display:flex;gap:8px}.row-actions button{width:38px;height:38px;color:var(--ink);background:#eef3f8}.row-actions button:last-child{color:var(--danger);background:#fff0ef}.list-item{grid-template-columns:minmax(0,1fr) auto auto}.status-pill{display:inline-flex;align-items:center;justify-content:center;min-height:28px;border-radius:999px;padding:0 10px;font-size:13px;font-weight:750;color:var(--primary-dark);background:var(--soft-green)}.status-pill.disabled{color:#7a2e0e;background:var(--soft-orange)}.room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.room-card{border:1px solid var(--line);border-radius:8px;padding:15px;background:#fff}.room-card-head{justify-content:space-between;gap:10px}.room-card strong{font-size:22px}.room-availability{display:block;margin-top:8px;color:var(--primary-dark);font-weight:700}.room-card .row-actions{margin-top:14px}.empty-state{min-height:120px;border:1px dashed var(--line);border-radius:8px;display:grid;place-items:center;color:var(--muted);background:#fbfdff}.empty-state.compact{min-height:86px}.data-screen .empty-state.compact{color:#d4e2ef;border-color:#ffffff29;background:#ffffff0f}.dialog-backdrop{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:20px;background:#0f172a7a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.conflict-dialog,.feedback-dialog{width:min(680px,100%);max-height:min(760px,calc(100vh - 40px));overflow:auto;border-radius:8px;border:1px solid rgba(255,255,255,.72);background:#fff;box-shadow:0 28px 80px #0f172a47}.feedback-dialog{width:min(560px,100%)}.feedback-dialog.success .dialog-icon{color:var(--primary-dark);background:var(--soft-green)}.feedback-dialog.warning .dialog-icon{color:var(--accent);background:var(--soft-orange)}.dialog-head.feedback-head{border-bottom:0;padding-bottom:18px}.feedback-dialog .dialog-actions{border-top:1px solid var(--line);padding-top:18px}.dialog-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:start;padding:22px 22px 16px;border-bottom:1px solid var(--line)}.dialog-icon{width:46px;height:46px;border-radius:8px;color:var(--accent);background:var(--soft-orange);display:inline-flex;align-items:center;justify-content:center}.dialog-head h2{margin:0;font-size:22px;letter-spacing:0}.dialog-head p{margin:7px 0 0;color:var(--muted);line-height:1.55}.dialog-close{width:38px;height:38px;border:0;border-radius:8px;color:var(--muted);background:#eef3f8;display:inline-flex;align-items:center;justify-content:center}.dialog-close:hover{color:var(--ink);background:#e2eaf3}.conflict-list{display:grid;gap:12px;padding:18px 22px}.conflict-item{border:1px solid var(--line);border-radius:8px;background:#fbfdff;padding:14px}.conflict-time{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}.conflict-time strong{color:var(--primary-dark);font-size:18px}.conflict-time span{color:var(--ink);font-weight:700}.conflict-item dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}.conflict-item dl div{min-width:0}.conflict-item dt{margin:0 0 4px;color:var(--muted);font-size:13px;font-weight:750}.conflict-item dd{margin:0;color:var(--ink);overflow-wrap:anywhere}.dialog-actions{display:flex;justify-content:flex-end;padding:0 22px 22px}.toast{position:fixed;right:24px;bottom:24px;max-width:min(380px,calc(100vw - 40px));padding:14px 16px;border-radius:8px;color:#fff;background:#172033;box-shadow:var(--shadow);z-index:30}@media(max-width:1180px){.booking-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-layout,.screen-grid,.usage-board{grid-template-columns:1fr}.screen-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:860px){.login-shell,.app-shell{grid-template-columns:1fr}.login-shell{background-position:center}.login-panel{margin:22px auto}.login-aside{min-height:auto;padding:24px}.login-aside h2{font-size:36px}.aside-grid{grid-template-columns:repeat(3,1fr)}.sidebar{position:static;height:auto}.content{padding:18px}.topbar{align-items:flex-start;flex-direction:column}.sync-indicator{align-self:stretch;justify-content:center}.metric-grid,.screen-kpi-grid,.form-grid,.booking-grid,.room-grid,.room-status-grid,.filter-grid,.weekday-toggle-grid{grid-template-columns:1fr}.screen-head{align-items:flex-start;flex-direction:column}.screen-clock{width:100%;text-align:left}.span-2{grid-column:span 1}.booking-item,.list-item,.timeline-item{grid-template-columns:1fr}.date-chip{place-content:start;justify-items:start}.dialog-head,.conflict-item dl{grid-template-columns:1fr}.dialog-icon{display:none}.dialog-close{position:absolute;right:16px;top:16px}.conflict-dialog{position:relative}.conflict-time{align-items:flex-start;flex-direction:column}}@media(max-width:560px){.aside-grid{grid-template-columns:1fr}.brand-lockup{align-items:flex-start}.login-panel,.panel,.metric{padding:16px}.row-actions,.form-actions,.history-summary{width:100%}.row-actions button,.form-actions button,.history-summary button{flex:1 1 auto}.history-summary{align-items:stretch;flex-direction:column}}
