:root{--brand-red: #dc2626;--brand-red-dark: #991b1b;--ink: #111827;--ink-soft: #334155;--muted: #64748b;--line: #e5e7eb;--line-strong: #d1d5db;--surface: #ffffff;--surface-muted: #f8fafc;--surface-warm: #fff7f7;--nav: #111827;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 16px 40px rgba(15, 23, 42, .1);--shadow-lg: 0 26px 70px rgba(15, 23, 42, .14);color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:#f6f7fb}*,*:before,*:after{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth}body{margin:0;min-height:100vh;background:linear-gradient(rgba(15,23,42,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(15,23,42,.035) 1px,transparent 1px),linear-gradient(180deg,#f8fafc,#f1f5f9 48%,#fff);background-size:36px 36px,36px 36px,auto;overflow-x:hidden}button,input,select{font:inherit}.app-shell{width:100%;min-height:100dvh;display:flex;flex-direction:column;background:transparent}.app-nav{position:sticky;top:0;z-index:10;width:100%;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 2.5rem;background:#111827f0;color:#f8fafc;border-bottom:1px solid rgba(255,255,255,.1);box-shadow:0 16px 38px #0f172a2e;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.nav-brand{display:inline-flex;align-items:center;gap:.8rem;min-width:0;color:#fff;font-weight:800;letter-spacing:.01em;white-space:nowrap}.nav-brand img{width:36px;height:36px;object-fit:contain;border-radius:6px;background:#fff;padding:2px;box-shadow:var(--shadow-sm)}.nav-links{display:flex;align-items:stretch;justify-content:flex-end;gap:.25rem;min-height:68px;flex-wrap:nowrap}.nav-link{position:relative;min-height:68px;display:inline-flex;align-items:center;justify-content:center;padding:0 1.15rem;color:#cbd5e1;font-weight:750;text-decoration:none;overflow:hidden;isolation:isolate;transition:color .18s ease}.nav-link:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(28px 16px at 12px 100%,rgba(248,113,113,.35) 42%,transparent 45%) 0 100% / 48px 18px repeat-x,linear-gradient(180deg,#dc262614,#dc26264d);opacity:0;transform:translateY(100%);transition:opacity .18s ease,transform .26s ease}.nav-link:after{content:"";position:absolute;left:.65rem;right:.65rem;bottom:0;height:4px;background:var(--brand-red);opacity:0;transform:scaleX(.35);transform-origin:center;transition:opacity .18s ease,transform .18s ease}.nav-link:hover,.nav-link.active{color:#fff}.nav-link:hover:before,.nav-link.active:before{opacity:1;transform:translateY(0);animation:navWave 1.15s linear infinite}.nav-link:hover:after,.nav-link.active:after{opacity:1;transform:scaleX(1)}.app-header{position:relative;min-height:360px;display:grid;grid-template-columns:minmax(280px,.9fr) minmax(280px,1fr);align-items:end;gap:2rem;width:100%;padding:5rem clamp(1rem,5vw,4rem) 3.5rem;overflow:hidden;background:#111827;color:#fff}.header-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:.34;filter:saturate(.85) contrast(1.04)}.app-header:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#111827fa,#111827c7 46%,#1118277a),linear-gradient(180deg,#1118270a,#111827d6);pointer-events:none}.brand-panel,.hero-copy{position:relative;z-index:1}.brand-panel{display:flex;align-items:center;gap:1.2rem}.brand-logo{width:86px;min-width:86px;border-radius:8px;background:#fff;padding:.25rem;box-shadow:var(--shadow-lg)}.brand-text{display:grid;gap:.55rem}.eyebrow{margin:0;font-size:.76rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#ef4444}.app-header h1{margin:0;max-width:760px;font-size:clamp(2.6rem,6vw,5.4rem);line-height:.95;letter-spacing:0}.hero-copy{justify-self:end;max-width:620px;padding:1.4rem 0 0 2rem;border-left:3px solid var(--brand-red)}.hero-text{margin:0;color:#e5e7eb;font-size:1.04rem;line-height:1.8}.app-main{flex:1;width:min(100%,1240px);margin:0 auto;padding:2rem clamp(1rem,3vw,2rem) 4rem}.page-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-md);padding:clamp(1.25rem,3vw,2rem)}.page-card h2,.page-card h3,.page-card h4,.page-card h5{margin:0 0 .75rem;letter-spacing:0}.page-card h2{color:var(--ink);font-size:clamp(1.9rem,3vw,2.7rem);line-height:1.08}.page-card h3{color:var(--ink);font-size:1.15rem}.page-card p{margin:0;line-height:1.7;color:var(--muted)}.home-card,.building-page,.buildings-page,.campus-page{display:grid;gap:1.5rem}.home-intro,.building-header,.section-heading{padding-bottom:1.25rem;border-bottom:1px solid var(--line)}.home-intro,.split-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.stats-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.stat-card{min-height:112px;display:grid;align-content:center;gap:.35rem;padding:1.15rem;border-radius:8px;background:linear-gradient(180deg,#fff,#fff7f7);border:1px solid #fecaca;box-shadow:var(--shadow-sm)}.stat-card strong{color:var(--brand-red-dark);font-size:clamp(1.8rem,4vw,2.7rem);line-height:1}.stat-card span{color:var(--muted);font-weight:750}.home-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.feature-tile{position:relative;min-height:190px;display:grid;grid-template-columns:1fr auto;align-items:start;gap:1.2rem;padding:1.25rem;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#fff,#f8fafc);box-shadow:var(--shadow-sm);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.feature-tile:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,var(--brand-red),#fb7185)}.feature-tile:hover{transform:translateY(-4px);border-color:#dc26264d;box-shadow:var(--shadow-md)}.feature-tile h3{margin-top:1.25rem;color:var(--ink);font-size:1.2rem}.feature-tile p{color:var(--ink-soft)}.feature-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:8px;background:#fee2e2;border:1px solid #fecaca}.feature-icon svg{width:22px;height:22px;fill:var(--brand-red-dark)}.qr-showcase{min-height:clamp(240px,32vw,380px);display:grid;place-items:center;padding:1rem;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:linear-gradient(rgba(15,23,42,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(15,23,42,.045) 1px,transparent 1px),#fff;background-size:30px 30px}.scan-panel{position:relative;display:grid;place-items:center;width:min(100%,420px);min-height:clamp(220px,28vw,320px);overflow:hidden;border-radius:8px;background:#111827;border:1px solid rgba(15,23,42,.16)}.scan-panel:before{content:"";width:clamp(116px,16vw,178px);aspect-ratio:1;border:12px solid #ffffff;border-radius:8px;box-shadow:inset 0 0 0 18px #111827,inset 0 0 0 28px #fff}.scan-panel:after{content:"";position:absolute;left:12%;right:12%;height:3px;background:#ef4444;box-shadow:0 0 24px #ef4444e6;animation:scanLine 2.5s ease-in-out infinite}.scan-panel span{position:absolute;width:22px;height:22px;border:4px solid #ffffff}.scan-panel span:nth-child(1){top:18%;left:18%;border-right:0;border-bottom:0}.scan-panel span:nth-child(2){top:18%;right:18%;border-left:0;border-bottom:0}.scan-panel span:nth-child(3){bottom:18%;left:18%;border-right:0;border-top:0}.campus-map-frame{position:relative;width:min(100%,1050px);margin:0 auto;padding:clamp(.55rem,2vw,1rem);border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-lg)}.campus-map-image{width:100%;display:block;aspect-ratio:1200 / 760;object-fit:contain;border-radius:8px;background:#f8fafc;border:1px solid var(--line)}.campus-pin{position:absolute;transform:translate(-50%,-50%);min-width:46px;min-height:46px;display:grid;place-items:center;border-radius:50%;background:var(--brand-red);color:#fff;font-size:.82rem;font-weight:900;text-decoration:none;box-shadow:0 0 0 8px #dc262624,0 16px 30px #0f172a38;animation:pinPulse 1.8s ease-in-out infinite}.campus-pin:hover{background:var(--brand-red-dark)}.building-list{display:grid;gap:1rem;padding:1.25rem;border-radius:8px;background:var(--surface-muted);border:1px solid var(--line)}.building-list h3{color:var(--ink)}.building-filter{width:min(100%,320px);display:grid;gap:.5rem;color:var(--ink);font-weight:800}.building-filter input{min-height:46px;width:100%;border-radius:8px;border:1px solid var(--line-strong);padding:0 .9rem;color:var(--ink);background:#fff;box-shadow:var(--shadow-sm)}.building-filter input:focus{outline:none;border-color:var(--brand-red);box-shadow:0 0 0 4px #dc26261f}.building-items{display:grid;gap:.85rem}.building-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:1rem;padding:1rem;border-radius:8px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.building-card:hover{transform:translateY(-2px);border-color:#dc262647;box-shadow:var(--shadow-md)}.building-card strong{display:block;margin-bottom:.2rem;color:var(--ink);font-size:1.02rem}.empty-state{padding:1.25rem;border-radius:8px;background:#fff;border:1px dashed var(--line-strong);text-align:center}.building-link,.error-home-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:.7rem 1rem;border-radius:8px;background:var(--brand-red);color:#fff;font-size:.92rem;text-decoration:none;font-weight:800;box-shadow:0 12px 22px #dc262633;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.building-link:hover,.error-home-btn:hover{transform:translateY(-2px);background:#b91c1c;box-shadow:0 18px 30px #dc262642}.building-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.building-header h2{color:var(--ink)}.building-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.8fr);gap:1rem;align-items:start}.building-map-panel,.building-sidebar,.step-by-step{border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-sm)}.building-map-panel{padding:1rem;min-height:420px}.map-placeholder{min-height:390px;display:grid;place-items:center;padding:2rem;border-radius:8px;border:1px dashed var(--line-strong);background:linear-gradient(135deg,rgba(220,38,38,.06) 0 25%,transparent 25% 50%,rgba(220,38,38,.06) 50% 75%,transparent 75% 100%),#f8fafc;background-size:26px 26px;color:var(--muted);text-align:center}.room-map{width:100%;min-height:390px;max-height:560px;object-fit:contain;display:block;border-radius:8px;background:#f8fafc;border:1px solid var(--line)}.building-sidebar{display:grid;gap:1rem;padding:1rem;position:sticky;top:92px}.search-section{display:flex;flex-direction:column;gap:.5rem}.search-section label{color:var(--ink);font-weight:850}.search-section>p{color:var(--muted);font-size:.88rem;font-weight:750}.room-search-row{display:flex;gap:.5rem}.room-search{width:100%;min-height:48px;padding:0 1rem;border-radius:8px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font-weight:650;font-size:.95rem;box-shadow:var(--shadow-sm);transition:border-color .18s ease,box-shadow .18s ease}.floor-filter{width:100%;min-height:46px;padding:0 .9rem;border-radius:8px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font-weight:750;box-shadow:var(--shadow-sm)}.floor-filter:focus{outline:none;border-color:var(--brand-red);box-shadow:0 0 0 4px #dc26261f}.room-search::placeholder{color:#94a3b8}.room-search:focus{outline:none;border-color:var(--brand-red);box-shadow:0 0 0 4px #dc26261f}.clear-search{min-height:48px;padding:0 .85rem;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--brand-red-dark);font-weight:850;cursor:pointer;transition:background .16s ease,border-color .16s ease}.clear-search:hover{background:#fff7f7;border-color:#fecaca}.room-list{display:grid;gap:.55rem;max-height:430px;overflow-y:auto;padding-right:.25rem}.room-list::-webkit-scrollbar{width:8px}.room-list::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px}.room-item{min-height:44px;padding:.75rem .9rem;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink-soft);font-weight:750;font-size:.95rem;text-align:left;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease,color .16s ease}.room-item:hover{transform:translate(3px);border-color:#dc262659;color:var(--brand-red-dark);background:#fff7f7}.room-item.active{border-color:var(--brand-red);background:var(--brand-red);color:#fff}.no-rooms{padding:1.25rem;border:1px dashed var(--line-strong);border-radius:8px;background:var(--surface-muted);text-align:center}.room-purpose{display:grid;gap:.35rem;padding:1rem;border-radius:8px;background:linear-gradient(180deg,#fff7f7,#fff);border:1px solid #fecaca}.room-purpose .eyebrow,.room-purpose h3{margin-bottom:.1rem}.room-tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.35rem}.room-tags span{display:inline-flex;align-items:center;min-height:30px;padding:.3rem .6rem;border-radius:999px;background:#fff;border:1px solid #fecaca;color:var(--brand-red-dark);font-size:.82rem;font-weight:850}.room-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.65rem}.room-actions button{min-height:40px;border:1px solid #fecaca;border-radius:8px;background:#fff;color:var(--brand-red-dark);cursor:pointer;font-weight:850;transition:background .16s ease,transform .16s ease}.room-actions button:hover:not(:disabled){transform:translateY(-1px);background:#fee2e2}.room-actions button:disabled{cursor:not-allowed;opacity:.55}.copy-status{margin-top:.35rem;font-size:.85rem;font-weight:800;color:var(--brand-red-dark);overflow-wrap:anywhere}.saved-room-panels{display:grid;gap:.75rem}.saved-room-panels section{display:grid;gap:.45rem;padding:1rem;border-radius:8px;background:#fff;border:1px solid var(--line)}.saved-room-panels h4{margin:0;color:var(--ink)}.saved-room-panels a{display:block;padding:.55rem .65rem;border-radius:8px;background:var(--surface-muted);color:var(--ink-soft);font-size:.9rem;font-weight:750;text-decoration:none}.saved-room-panels a:hover{color:var(--brand-red-dark);background:#fff7f7}.step-by-step{padding:1.25rem}.step-by-step h4{color:var(--ink);font-size:1.35rem}.step-by-step h5{color:var(--muted);font-size:.9rem;font-weight:650}.step-by-step ol{margin:1rem 0 0;padding:0;display:grid;gap:.85rem;list-style:none;counter-reset:directions}.step-by-step li{counter-increment:directions;display:grid;grid-template-columns:34px 1fr;align-items:start;gap:.8rem;padding:1rem;border-radius:8px;border:1px solid var(--line);background:var(--surface-muted);color:var(--ink-soft);line-height:1.65}.step-by-step li:before{content:counter(directions);width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:#fee2e2;color:var(--brand-red-dark);font-weight:850}.step-by-step>p{margin-top:1rem;padding:1rem;border-radius:8px;background:var(--surface-muted);border:1px solid var(--line)}.app-footer{width:100%;padding:1.25rem 0;background:#111827;border-top:1px solid rgba(255,255,255,.08)}.footer-content{width:min(100%,1240px);margin:0 auto;padding:0 clamp(1rem,3vw,2rem);display:flex;align-items:center;justify-content:center;gap:1rem}.footer-copy{margin:0;color:#cbd5e1;font-size:.9rem;font-weight:800;letter-spacing:0;text-transform:none}.error-page{display:grid;place-items:center;min-height:60vh}.error-container{max-width:680px;text-align:center}.error-icon{font-size:3rem;margin-bottom:1rem}.error-heading{font-size:clamp(2rem,4vw,3rem)}.error-code{color:var(--brand-red)}.error-message{font-size:1.05rem}.error-details{margin:1.5rem 0;padding:1.25rem;text-align:left;border:1px solid var(--line);border-radius:8px;background:var(--surface-muted)}.error-details ul{margin:0;padding:0;list-style:none}.error-details li{position:relative;padding:.45rem 0 .45rem 1.4rem;color:var(--muted)}.error-details li:before{content:"x";position:absolute;left:0;color:var(--brand-red);font-weight:900}@keyframes navWave{0%{background-position:0 100%,0 0}to{background-position:48px 100%,0 0}}@keyframes nodeFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes routePulse{0%,to{opacity:.35;filter:saturate(.8)}50%{opacity:1;filter:saturate(1.4)}}@keyframes scanLine{0%,to{top:18%}50%{top:82%}}@keyframes pinPulse{0%,to{box-shadow:0 0 0 7px #dc262624,0 16px 30px #0f172a38}50%{box-shadow:0 0 0 13px #dc262614,0 16px 30px #0f172a38}}@media (max-width: 1024px){.app-header{grid-template-columns:1fr;align-items:start}.hero-copy{justify-self:start;padding-left:1.25rem}.home-grid,.building-grid,.qr-showcase{grid-template-columns:1fr}.home-intro,.split-heading{flex-direction:column}.building-filter{width:100%}.building-sidebar{position:static}}@media (max-width: 720px){.app-nav{min-height:auto;padding:.65rem 1rem 0;align-items:center;flex-wrap:wrap}.nav-brand span{display:none}.nav-links{order:2;width:100%;min-height:60px;justify-content:center}.nav-link{min-height:52px;flex:1;min-width:0}.nav-link{padding:0 .45rem;font-size:.88rem}.app-header{min-height:440px;padding:3rem 1rem 2rem}.brand-panel{align-items:flex-start;flex-direction:column}.brand-logo{width:72px;min-width:72px}.hero-copy{padding:1rem 0 0 1rem}.building-card,.stats-row{grid-template-columns:1fr}.room-search-row{flex-direction:column}.room-actions{grid-template-columns:1fr}.building-link{width:100%}.footer-content{text-align:center}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}html,body,#root{min-height:100%}html,body{width:100%;margin:0;padding:0}body{min-width:320px;min-height:100vh}#root{width:100%;min-height:100%}
