:root{--jmuPurple:#450084;--jmuGold:#cbb677;--mediumPurple:#b599ce;--slateGray:#333;--darkGray:#595959;--darkBlue:#3c738b;--lightGray:#888;--mediumGreen:#adcc23;--mediumBlue:#5498b6;--jmuRed:#a4232b;--lightBlue:#42d7f5;--isFull:#e10000;--isIdle:#d8ca02;--isEmpty:#00c200;--page-bg:lightgray;--text-primary:#fff;--text-on-accent:#fff;--header-bg:var(--jmuPurple);--content-surface:var(--mediumPurple);--overlay-surface:#b599ced9;--surface-default:#fff;--surface-muted:#f8f9fa;--border-default:#e0e0e0;--text-default:var(--slateGray);--text-muted:#888;--interactive-text:var(--jmuPurple);--interactive-text-hover:var(--mediumPurple);--interactive-hover-bg:#f0f4ff;--interactive-active-bg:#e6ecff;--card-bg:var(--lightGray);--card-title:#fff;--card-description:var(--jmuPurple);--card-hover-border:var(--jmuPurple);--card-hover-shadow:#cbb67733;--status-badge-bg:#333;--button-outline:var(--jmuGold);--button-outline-text:var(--jmuGold);--room-border:#000;--room-surface:#fff3;--board-bg:#fff;--board-text:gray;--door-bg:saddlebrown;--door-text:#fff;--seat-border:#000;--landing-overlay:#45008459;--breadcrum-item:var(--jmuPurple)}:root[data-theme=dark]{--page-bg:#1b1427;--text-primary:#f4efe1;--text-on-accent:#f4efe1;--header-bg:#2a0f48;--content-surface:#312046;--overlay-surface:#312046e6;--surface-default:#241833;--surface-muted:#2d2240;--border-default:#4a3d60;--text-default:#f4efe1;--text-muted:#c2b5d4;--interactive-text:#cbb677;--interactive-text-hover:#d8c48b;--interactive-hover-bg:#3a2b53;--interactive-active-bg:#4a3967;--card-bg:var(--darkGray);--card-title:#f4efe1;--card-description:#cbb677;--card-hover-border:#cbb677;--card-hover-shadow:#cbb67740;--status-badge-bg:#433055;--button-outline:#cbb677;--button-outline-text:#f4efe1;--room-border:#cbb677;--room-surface:#241833bf;--board-bg:#e8deca;--board-text:#2a0f48;--door-bg:#654327;--door-text:#f4efe1;--seat-border:#cbb677;--landing-overlay:#1b142780;--breadcrum-item:var(--lightBlue)}html{background-color:var(--page-bg);height:100%}body{color:var(--text-primary);background-color:var(--page-bg);width:100%;height:100%;margin:0;padding:0;font-family:Verdana,Geneva,Tahoma,sans-serif;transition:background-color .25s,color .25s;overflow:hidden auto}#root{min-height:100dvh}.main{flex-direction:column;min-height:100dvh;display:flex;overflow:hidden}.top{flex:none;display:flex}.left{flex:none;min-width:0;display:flex}.center{flex-wrap:nowrap;flex:auto;align-items:stretch;gap:0;width:100%;min-width:0;min-height:0;display:flex;overflow:hidden}.aside-center{background-image:linear-gradient(#45008400,#45008459),url(/assets/EastCampus-CEi2Yqrx.png);background-position:50%;background-repeat:no-repeat;background-size:cover;justify-content:center;align-items:center}.aside-left{justify-content:center;width:min(100%,1100px)}.screen{flex:auto;min-width:0;min-height:0;display:flex;overflow:auto}@media (width<=720px){.main{overflow:visible}.center{flex-direction:column}.center,.screen,.left,.aside-left{width:100%}}.aside{background-color:var(--mediumPurple);box-sizing:border-box;flex-direction:column;justify-content:flex-start;width:clamp(220px,22vw,280px);padding:20px;transition:background-color .25s;display:flex}.aside ul li a{color:var(--text-default);font-weight:200;list-style-type:none}.aside-left .aside{background-color:var(--overlay-surface);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:15px;width:min(100%,clamp(520px,56vw,860px));height:auto;padding:clamp(1rem,2vw,2rem)}.aside-left .breadcrumb-header{border-radius:15px;justify-content:center;padding:clamp(1rem,1.8vw,1.5rem) clamp(1rem,2vw,2rem);font-size:clamp(1.35rem,1.6vw,2rem)}.aside-left .contents-view{flex-direction:column;flex:1;justify-content:center;gap:clamp(.75rem,1.4vw,1.25rem);padding:clamp(.9rem,1.8vw,1.75rem) clamp(.6rem,1.2vw,1rem);display:flex}.aside-left .location-item{text-align:center;justify-content:center;padding:clamp(.85rem,1.8vw,1.75rem) clamp(.75rem,1.5vw,1.5rem);font-size:clamp(1.1rem,1.5vw,2rem)}.aside-left .chevron-right{margin-left:0}.aside-left .empty-location{font-size:1.5rem}.selector-container{border:1px solid var(--border-default);background-color:var(--surface-default);border-radius:8px;width:100%;max-width:460px;font-family:Helvetica,Arial,sans-serif;overflow:hidden;box-shadow:0 2px 8px #0000000d}.breadcrumb-header{background-color:var(--surface-muted);border-bottom:1px solid var(--border-default);align-items:center;padding:12px 16px;font-size:14px;display:flex}.breadcrumb-item{cursor:pointer;color:var(--text-default);transition:color .2s}.breadcrumb-item:hover{color:var(--mediumPurple);text-decoration:underline}.breadcrumb-item.active{color:var(--text-default);pointer-events:none;font-weight:600;text-decoration:none}.breadcrumb-separator{color:var(--text-muted);margin:0 8px;font-size:12px}.contents-view{padding:8px}.location-item{cursor:pointer;color:var(--text-default);border-radius:6px;align-items:center;gap:12px;padding:12px;font-size:15px;transition:background-color .15s,transform .1s;display:flex}.location-item:hover{background-color:var(--interactive-hover-bg)}.location-item:active{transform:scale(.99)}.location-item.active{color:var(--jmuPurple);background-color:#e6ecff;font-weight:600}.chevron-right{color:var(--text-muted);margin-left:auto;font-size:12px}.empty-location{color:var(--text-muted);text-align:center;padding:16px;font-size:14px;font-style:italic}@media (width<=720px){.aside{align-items:center;width:100%;max-width:none;padding:14px;display:flex}.aside-left .aside,.aside-left .breadcrumb-header{padding:16px}.aside-left .contents-view{gap:14px;padding:18px 8px}.aside-left .location-item{padding:18px 14px;font-size:1.1rem}}.title{text-align:center;margin:0;font-size:clamp(2rem,5vw,3.625rem);position:absolute;left:50%;transform:translate(-50%)}header.app-header{background-color:var(--header-bg);width:100%;min-width:0;min-height:100px;color:var(--text-on-accent);box-sizing:border-box;justify-content:space-between;align-items:center;padding:.75rem 1rem;transition:background-color .25s;display:flex;position:relative}.header-logo-button{flex:none}.header-icon-button,.header-logo-button{background:0 0;border:0;justify-content:center;align-items:center;padding:0;line-height:0;display:inline-flex}.header-icon-button:hover,.header-logo-button:hover{cursor:pointer}.header-actions{flex:none;justify-content:flex-end;align-items:center;gap:1rem;margin-left:auto;display:flex}.logo:hover{cursor:pointer;transform:scale(1.1)}.logo{width:clamp(72px,10vw,100px);height:auto;display:block}.graph,.settings-icon{width:clamp(44px,7vw,75px);height:auto;display:block}.graph{filter:brightness(0)invert()}.logo:hover,.graph:hover,.settings-icon:hover{transform:scale(1.1)}.theme-toggle{align-items:center;display:flex}.theme-toggle-button{cursor:pointer;background:0 0;border:none;padding:0}.theme-toggle-button:hover{transform:scale(1.05)}.settings-icon{filter:brightness(0)invert()}@media (width<=720px){header.app-header{min-height:auto;padding:.75rem}.title{font-size:clamp(1.75rem,9vw,2.5rem)}}@media (width<=480px){header.app-header{grid-template-columns:auto 1fr auto;grid-template-areas:"logo title actions";gap:.5rem;display:grid}.header-logo-button{grid-area:logo;justify-self:start}.title{grid-area:title;justify-self:center;position:static;transform:none}.header-actions{grid-area:actions;gap:.5rem}.logo{width:clamp(72px,22vw,100px)}}.container{flex-flow:wrap;place-content:flex-start center;align-items:stretch;gap:clamp(.75rem,1.8vw,1.25rem);margin:clamp(.75rem,2vw,1.25rem) clamp(.75rem,2vw,1.25rem) 0;display:flex}.hero-card{background-color:var(--card-bg);text-align:left;border:none;border-radius:12px;width:clamp(240px,30vw,350px);min-height:clamp(8rem,12vw,9rem);padding:24px;font-family:sans-serif;transition:all .3s;box-shadow:0 4px 6px #0000004d}.hero-card:hover{box-shadow:0 10px 20px var(--card-hover-border);cursor:pointer;transform:translateY(-5px)}.room{color:var(--card-title);margin:0 0 12px;font-size:1.25rem;font-weight:600}.description{color:var(--card-description);margin-bottom:20px;font-size:.85rem;line-height:1.5}.badge{background:var(--status-badge-bg);text-transform:uppercase;letter-spacing:1px;border-radius:4px;padding:4px 10px;font-size:.75rem;display:inline-block}.button{border:1px solid var(--button-outline);color:var(--button-outline-text);cursor:pointer;background:0 0;border-radius:4px;padding:8px 16px}@media (width<=720px){.container{gap:16px;margin:16px}.hero-card{width:100%;max-width:520px;min-height:8.5rem;padding:20px}}@media (width<=480px){.container{margin:12px}.hero-card{min-height:8rem;padding:18px}}.block{border:2px solid #000;border-radius:10px;width:3em;height:3em;margin:.3em;padding:.3em}.block p{justify-content:center;align-items:center;height:100%;margin:0;font-size:1.15em;font-weight:600;display:flex}.seat.empty{background:#11d011}.seat.idle{background:#ffd900}.seat.full{background:red}.roomContainer{box-sizing:border-box;background-color:#fff3;border:2px solid #000;flex-direction:column;justify-content:center;align-items:stretch;gap:clamp(.8rem,1.8vw,1.5rem);width:fit-content;max-width:min(92vw,90rem);margin:0 auto;padding:clamp(.75rem,2vw,1.25rem);font-size:clamp(.72rem,.6vw + .45rem,1rem);display:flex}.room-seats{justify-content:space-evenly;align-items:center;gap:.65rem;margin:1rem;display:flex}.row{border:3px solid #000}.col{flex-direction:column;flex:1 1 0;justify-content:center;display:flex}.vert-board{color:gray;writing-mode:vertical-rl;text-orientation:mixed;background-color:#fff;justify-content:center;align-items:center;width:3rem;min-height:8.2rem;display:flex}.doorway{background-color:#8b4513;min-width:4.25rem}.doorway p{color:#fff;margin:0}.boards{justify-content:center;gap:.65rem;display:flex}.back-row{grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;display:grid}.front-row{justify-content:center;align-items:center;gap:.65rem;display:flex}.hor-board{color:gray;text-align:center;background-color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:11em;display:flex}.room-body{align-items:stretch;gap:clamp(.8rem,1.8vw,1.5rem);display:flex}.left-wall,.seat-columns{gap:clamp(.45rem,1vw,1rem);display:flex}.left-wall,.right-wall{flex-direction:column;justify-content:center;gap:clamp(.8rem,1.8vw,1.5rem);display:flex}.seat-stack{flex-direction:column;display:flex}.back-row .doorway{justify-self:start}.back-boards{justify-self:center}.back-wall-spacer{min-width:4.25rem}.back-row-right-door .doorway{justify-self:end}.room-body-2037{justify-content:center}.room-seats-2037{margin:0}@media (width<=1440px){.roomContainer{font-size:clamp(.68rem,.5vw + .42rem,.94rem)}.room-2020{padding:16px}.room-2020 .front-row,.room-2020 .boards,.room-2020 .room-body-2020,.room-2020 .left-wall,.room-2020 .right-wall,.room-2020 .seat-columns{gap:.75rem}.room-2020 .room-seats{margin:14px}}@media (width<=720px){.roomContainer{background-color:#fff3;border:2px solid #000;width:fit-content;min-width:max-content;max-width:none;padding:.75rem;font-size:clamp(.58rem,1.15vw + .24rem,.8rem)}.back-row{gap:.55rem}}.lab-room-layout{box-sizing:border-box;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:clamp(.75rem,1.8vw,1.5rem);width:100%;min-width:0;min-height:100%;padding:clamp(.75rem,2vw,2rem);display:flex;overflow:hidden}.room-scroll-shell{box-sizing:border-box;-webkit-overflow-scrolling:touch;flex:auto;width:100%;min-width:0;max-width:100%;min-height:0;padding-bottom:.5rem;overflow:auto}.room-scroll-content{justify-content:flex-start;align-items:flex-start;width:max-content;min-width:100%;display:flex}.room-scroll-content>*{flex:none}.back-button{background-color:var(--interactive-text);color:var(--text-on-accent);cursor:pointer;border:none;border-radius:4px;align-self:flex-start;padding:.5rem .9rem;font-size:1rem;transition:background-color .2s}.back-button:hover{background-color:var(--interactive-text-hover)}.back-button:active{background-color:var(--interactive-active-bg)}.chart-container{box-sizing:border-box;width:min(100%,960px);height:520px;margin:0 auto;padding:1.5rem}.graph-meta{color:#4b5563;margin:.5rem 0 0;font-size:.95rem}.graph-error{color:#b91c1c}.graph-toggle-wrap{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:1rem;display:flex}.graph-toggle-btn{appearance:none;color:#1f2937;cursor:pointer;background:#fff;border:1px solid #94a3b8;border-radius:999px;padding:.45rem 1rem;font-size:.9rem;font-weight:600;transition:all .2s}.graph-toggle-btn:hover{color:#1d4ed8;border-color:#2563eb}.graph-toggle-btn.active{color:#fff;background:#2563eb;border-color:#2563eb}
