*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#03101a;color:#f3fbff;font-family:Inter,"Segoe UI",Arial,sans-serif}button,a{font:inherit}#campus{position:fixed;inset:0;width:100%;height:100%;touch-action:none;outline:0}body:after{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(2,12,20,.62),transparent 44%),linear-gradient(180deg,rgba(2,12,20,.16),transparent 35%,rgba(2,12,20,.36));z-index:4}
#loading{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 50% 20%,#153e54 0,#071c2a 48%,#020b12 100%);display:grid;place-items:center;padding:24px;transition:opacity .55s}.campus-loader-card{width:min(620px,92vw);display:flex;flex-direction:column;align-items:center;gap:12px;padding:34px 38px 30px;border:1px solid rgba(94,243,202,.32);border-radius:24px;background:linear-gradient(145deg,rgba(7,29,43,.94),rgba(4,18,29,.9));box-shadow:0 30px 100px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.05);backdrop-filter:blur(18px);text-align:center}.campus-loader-logo{width:78px;height:78px;border-radius:20px;background:#fff;padding:8px;display:grid;place-items:center;box-shadow:0 15px 38px rgba(0,0,0,.3)}.campus-loader-logo img{width:100%;height:100%;object-fit:contain}.campus-loader-kicker{margin:4px 0 0;color:#67ecc0;font-size:11px;font-weight:850;letter-spacing:.18em}.loader-ring{width:48px;height:48px;border:3px solid #1d4558;border-top-color:#46e7b1;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.campus-loader-card strong{font-size:18px;letter-spacing:.1em}.campus-loader-card>span{min-height:20px;color:#abc4cf;font-size:12px;line-height:1.55}.campus-progress-row{width:100%;display:grid;grid-template-columns:1fr 52px;gap:12px;align-items:center}.loading-track{height:9px;background:#173747;border-radius:99px;overflow:hidden}.loading-track i{display:block;width:0;height:100%;background:linear-gradient(90deg,#22bdff,#43e7ad);transition:width .2s}.campus-progress-row b{color:#71f0c5;font-size:13px;text-align:right}.campus-loader-steps{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.campus-loader-steps span{padding:10px 8px;border:1px solid rgba(94,220,185,.2);border-radius:10px;background:rgba(16,53,68,.45);color:#89aab7;font-size:10px;letter-spacing:.08em}
header{position:fixed;z-index:30;top:18px;left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}.brand,nav{pointer-events:auto}.brand{display:flex;align-items:center;gap:12px}.mark{width:52px;height:52px;display:grid;place-items:center;border:1px solid rgba(74,233,187,.4);background:#fff;border-radius:14px;padding:5px;box-shadow:0 12px 32px rgba(0,0,0,.28)}.mark img{width:100%;height:100%;object-fit:contain}.brand-copy{display:flex;flex-direction:column;gap:3px}.brand-copy strong{font-size:13px;letter-spacing:.12em}.brand-copy span{font-size:9px;color:#81a5b5;letter-spacing:.18em}nav{display:flex;gap:8px}nav a,nav button,.hero-actions a,.hero-actions button{min-height:42px;border:1px solid rgba(103,229,190,.34);background:rgba(4,22,34,.74);color:#eefafa;padding:0 15px;border-radius:11px;text-decoration:none;font-weight:800;font-size:11px;letter-spacing:.06em;cursor:pointer;backdrop-filter:blur(14px);transition:.2s}nav a{display:flex;align-items:center;gap:9px;background:linear-gradient(135deg,#42dea9,#2cbf91);color:#031721;border-color:transparent}nav a:hover,nav button:hover,.hero-actions a:hover,.hero-actions button:hover{transform:translateY(-1px);box-shadow:0 10px 28px rgba(0,0,0,.24)}
main{position:fixed;inset:0;z-index:24;pointer-events:none}#hero{position:absolute;left:3.4vw;top:16vh;width:min(540px,42vw);padding:30px 32px 28px;border:1px solid rgba(111,227,198,.25);border-left:3px solid #44e0ae;border-radius:4px 22px 22px 4px;background:linear-gradient(140deg,rgba(3,18,29,.88),rgba(5,26,38,.64));box-shadow:0 30px 80px rgba(0,0,0,.3);backdrop-filter:blur(16px);pointer-events:auto}.eyebrow{display:flex;align-items:center;gap:10px;margin:0 0 18px;color:#71edc2;font-size:10px;font-weight:850;letter-spacing:.18em}.eyebrow i{display:block;width:28px;height:1px;background:#71edc2;box-shadow:0 0 12px #71edc2}h1{margin:0;line-height:.93;letter-spacing:-.045em;text-wrap:balance}h1 span{display:block;font-size:clamp(38px,4vw,62px);font-weight:820;color:#f6fbff}h1 strong{display:block;margin-top:8px;font-size:clamp(58px,6vw,92px);font-weight:930;color:transparent;-webkit-text-stroke:1px rgba(236,251,255,.9);background:linear-gradient(95deg,#f5fbff 5%,#75e8ff 54%,#5cf0bd);-webkit-background-clip:text;background-clip:text}.contact-lines{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:24px;padding-top:18px;border-top:1px solid rgba(129,190,211,.18)}.contact-lines a{color:#bdd2dc;text-decoration:none;font-size:13px;font-weight:650}.contact-lines a:hover{color:#79efc5}.hero-actions{display:flex;gap:10px;margin-top:22px}.hero-actions a,.hero-actions button{display:inline-flex;align-items:center;justify-content:center}.hero-actions .primary{background:linear-gradient(135deg,#4be0b0,#31c797);color:#041a22;border-color:transparent}.hero-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:20px}.hero-meta span{padding:10px 8px;border:1px solid rgba(104,214,184,.16);border-radius:10px;background:rgba(9,34,47,.46);color:#7599a8;font-size:8px;letter-spacing:.08em;text-align:center}.hero-meta b{display:block;margin-bottom:3px;color:#eafcff;font-size:15px;letter-spacing:.02em}
#roomDock{position:fixed;z-index:28;left:50%;bottom:45px;transform:translateX(-50%);display:flex;gap:6px;padding:7px;border:1px solid rgba(88,222,180,.24);border-radius:15px;background:rgba(3,18,29,.78);backdrop-filter:blur(15px);box-shadow:0 16px 42px rgba(0,0,0,.25)}#roomDock a{display:grid;grid-template-columns:32px auto;align-items:center;gap:7px;min-width:105px;padding:8px 10px;border:1px solid transparent;border-radius:10px;color:#a9c5d0;text-decoration:none;transition:.2s}#roomDock a:hover{border-color:rgba(75,229,181,.34);background:rgba(17,57,70,.7);color:#fff;transform:translateY(-2px)}#roomDock b{color:#55e9b7;font-size:18px}#roomDock span{font-size:9px;font-weight:800;letter-spacing:.08em}
.hotspot{position:fixed;z-index:18;transform:translate(-50%,-50%);width:43px;height:43px;border:1px solid #63eab9;border-radius:50%;background:rgba(4,25,38,.88);color:#83f5ca;display:grid;place-items:center;font-weight:900;cursor:pointer;box-shadow:0 0 0 0 rgba(99,234,185,.48),0 10px 24px rgba(0,0,0,.28);animation:pulse 2.2s infinite;transition:.2s}.hotspot:hover{transform:translate(-50%,-50%) scale(1.12);background:#52ddab;color:#041820}.hotspot:after{content:attr(data-label);position:absolute;left:50%;top:48px;transform:translateX(-50%);white-space:nowrap;padding:6px 8px;border:1px solid rgba(91,225,183,.24);border-radius:8px;background:rgba(3,18,29,.9);color:#cce0e7;font-size:8px;letter-spacing:.07em;opacity:0;pointer-events:none;transition:.2s}.hotspot:hover:after{opacity:1}@keyframes pulse{70%{box-shadow:0 0 0 17px rgba(99,234,185,0),0 10px 24px rgba(0,0,0,.28)}}
footer{position:fixed;z-index:26;left:24px;right:24px;bottom:16px;display:flex;justify-content:space-between;color:#678895;font-size:9px;letter-spacing:.07em;pointer-events:none}.load-error{background:#190d14!important}.load-error .loader-ring{display:none}.load-error strong{color:#ffb1ad}
@media(max-width:1050px){#hero{width:min(500px,48vw)}#roomDock a{min-width:74px;grid-template-columns:1fr;text-align:center;gap:2px}#roomDock span{display:none}}
@media(max-width:760px){header{top:9px;left:9px;right:9px}.brand-copy{display:none}.mark{width:44px;height:44px}nav [data-action="tour"]{display:none}nav a{min-height:40px;padding:0 11px;font-size:9px}#hero{left:12px;top:13vh;width:calc(100vw - 24px);padding:24px 22px;background:linear-gradient(140deg,rgba(3,18,29,.88),rgba(5,26,38,.55))}h1 span{font-size:38px}h1 strong{font-size:62px}.hero-meta{display:none}.contact-lines{margin-top:18px}.hero-actions button{display:none}#roomDock{bottom:40px;width:calc(100vw - 20px);justify-content:space-between}#roomDock a{min-width:0;flex:1;padding:7px 4px}footer span:first-child{display:none}.hotspot:after{display:none}}

/* v2.7.2 · corrected identity and balanced contact card */
#hero{width:min(530px,42vw);padding:28px 30px 26px}
#hero .eyebrow{margin-bottom:14px}
#hero h1{max-width:100%}
#hero h1 span{font-size:clamp(35px,3.25vw,52px);line-height:1;letter-spacing:-.028em;white-space:nowrap}
#hero h1 strong{margin-top:7px;font-size:clamp(52px,5.1vw,78px);line-height:.94;letter-spacing:-.035em}
#hero .contact-lines{display:grid;grid-template-columns:minmax(138px,.8fr) minmax(250px,1.55fr);gap:10px;margin-top:20px;padding-top:16px}
#hero .contact-item{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:11px 13px;border:1px solid rgba(107,224,194,.18);border-radius:11px;background:rgba(8,31,43,.48);text-decoration:none;transition:.2s}
#hero .contact-item:hover{border-color:rgba(99,235,195,.45);background:rgba(12,43,56,.7);transform:translateY(-1px)}
#hero .contact-item small{color:#6f9dac;font-size:8px;font-weight:850;letter-spacing:.15em}
#hero .contact-item b{min-width:0;color:#edfaff;font-size:13px;font-weight:750;line-height:1.3;letter-spacing:.01em;overflow-wrap:anywhere}
#hero .contact-phone b{font-size:15px;letter-spacing:.045em}
@media(max-width:900px){#hero{width:min(500px,48vw)}#hero .contact-lines{grid-template-columns:1fr}}
@media(max-width:760px){#hero{width:calc(100vw - 24px)}#hero h1 span{white-space:normal}#hero .contact-lines{grid-template-columns:1fr}}

/* v2.8.0 · mobile portrait/landscape viewport and touch layout */
html,body{height:var(--app-height,100dvh);min-height:var(--app-height,100dvh);overscroll-behavior:none}
#campus,main,#loading{height:var(--app-height,100dvh)}
header{top:calc(18px + var(--safe-top));left:calc(22px + var(--safe-left));right:calc(22px + var(--safe-right))}
#roomDock{bottom:calc(45px + var(--safe-bottom))}
footer{bottom:calc(16px + var(--safe-bottom));left:calc(24px + var(--safe-left));right:calc(24px + var(--safe-right))}
#hero{-webkit-overflow-scrolling:touch}
.is-touch button,.is-touch a{-webkit-tap-highlight-color:transparent}
.is-touch .hotspot{touch-action:manipulation}

@media (max-width:760px) and (orientation:portrait){
  body:after{background:linear-gradient(180deg,rgba(2,12,20,.12),transparent 33%,rgba(2,12,20,.28))}
  header{top:calc(7px + var(--safe-top));left:calc(9px + var(--safe-left));right:calc(9px + var(--safe-right));gap:8px}
  .mark{width:42px;height:42px;border-radius:12px}
  nav{margin-left:auto}
  nav a{min-height:40px;padding:0 12px;border-radius:10px;font-size:9px;white-space:nowrap}
  main{inset:0;height:var(--app-height,100dvh)}
  #hero{left:calc(10px + var(--safe-left));right:calc(10px + var(--safe-right));top:calc(62px + var(--safe-top));width:auto!important;max-height:min(45vh,390px);padding:15px 16px 14px;border-radius:4px 17px 17px 4px;background:linear-gradient(145deg,rgba(3,18,29,.91),rgba(7,34,47,.73));box-shadow:0 18px 56px rgba(0,0,0,.3);overflow:auto}
  #hero .eyebrow{margin:0 0 8px;font-size:8px;gap:8px}.eyebrow i{width:22px}
  #hero h1 span{font-size:clamp(25px,7.5vw,34px)!important;line-height:1!important;white-space:nowrap!important;letter-spacing:-.025em}
  #hero h1 strong{margin-top:4px;font-size:clamp(43px,13.2vw,61px)!important;line-height:.9!important}
  #hero .contact-lines{grid-template-columns:minmax(88px,.82fr) minmax(0,1.48fr)!important;gap:6px;margin-top:11px;padding-top:10px}
  #hero .contact-item{gap:3px;padding:8px 9px;border-radius:9px;min-height:49px}
  #hero .contact-item small{font-size:6.5px;letter-spacing:.11em}
  #hero .contact-item b{font-size:10px;line-height:1.22;letter-spacing:0}
  #hero .contact-phone b{font-size:12px;letter-spacing:.02em;white-space:nowrap}
  #hero .contact-email b{font-size:9.5px;overflow-wrap:anywhere}
  .hero-actions{margin-top:10px}.hero-actions a{width:100%;min-height:39px;padding:0 12px;font-size:10px}.hero-actions button{display:none!important}
  .hero-meta{display:none!important}
  #roomDock{left:calc(10px + var(--safe-left));right:calc(10px + var(--safe-right));bottom:calc(10px + var(--safe-bottom));transform:none;width:auto;height:58px;padding:5px;border-radius:14px;gap:2px}
  #roomDock a{display:flex;justify-content:center;min-width:0;flex:1;padding:5px 2px;border-radius:9px}
  #roomDock b{font-size:20px}#roomDock span{display:none!important}
  footer{display:none}
  .hotspot{width:39px;height:39px;font-size:12px}.hotspot:after{display:none}
  .campus-loader-card{width:calc(100vw - 24px);max-height:calc(var(--app-height) - 28px - var(--safe-top) - var(--safe-bottom));overflow:auto;padding:22px 18px;border-radius:18px}.campus-loader-logo{width:62px;height:62px}.campus-loader-card strong{font-size:14px}.campus-loader-steps span{font-size:8px;padding:8px 4px}
}

@media (max-width:360px) and (orientation:portrait){
  #hero{top:calc(57px + var(--safe-top));padding:12px 13px;max-height:min(47vh,350px)}
  #hero h1 span{font-size:24px!important}#hero h1 strong{font-size:43px!important}
  #hero .contact-lines{grid-template-columns:1fr!important}
  #hero .contact-item{min-height:40px;padding:6px 8px}
  #hero .contact-email b{font-size:10px}
  nav a{padding:0 9px;font-size:8px}
}

@media (max-width:1000px) and (max-height:560px) and (orientation:landscape){
  header{top:calc(5px + var(--safe-top));left:calc(7px + var(--safe-left));right:calc(7px + var(--safe-right))}
  .mark{width:38px;height:38px;border-radius:10px}.brand-copy strong{font-size:10px}.brand-copy span{display:none}
  nav a,nav button{min-height:36px;padding:0 10px;font-size:8px}
  #hero{left:calc(8px + var(--safe-left));top:calc(51px + var(--safe-top));width:min(330px,43vw)!important;max-height:calc(var(--app-height) - 112px - var(--safe-top) - var(--safe-bottom));padding:13px 14px 12px;border-radius:4px 15px 15px 4px;overflow:auto}
  #hero .eyebrow{margin-bottom:6px;font-size:7px}
  #hero h1 span{font-size:clamp(22px,3.6vw,30px)!important;white-space:nowrap!important}#hero h1 strong{font-size:clamp(37px,6vw,52px)!important;margin-top:3px}
  #hero .contact-lines{grid-template-columns:.82fr 1.45fr!important;gap:5px;margin-top:8px;padding-top:7px}
  #hero .contact-item{min-height:38px;padding:5px 7px;gap:2px}.contact-item small{font-size:6px!important}.contact-item b{font-size:8px!important}.contact-phone b{font-size:10px!important}
  .hero-actions{margin-top:7px}.hero-actions a{min-height:34px;padding:0 10px;font-size:8px}.hero-actions button,.hero-meta{display:none!important}
  #roomDock{bottom:calc(6px + var(--safe-bottom));height:44px;padding:4px}#roomDock a{padding:3px 8px}#roomDock b{font-size:15px}#roomDock span{display:none!important}
  footer{display:none}
  .hotspot{width:35px;height:35px;font-size:10px}.hotspot:after{display:none}
}

@media (min-width:761px) and (max-width:1180px){
  #hero{top:14vh;width:min(470px,46vw)}
}
