:root{
  --campus-bg:rgba(6,15,27,.72);
  --campus-line:rgba(255,255,255,.12);
  --campus-text:#f4f9ff;
  --campus-muted:#9eb3c8;
  --campus-cyan:#67dcff;
}
html:has(body.campus-page),
body.user-shell.campus-page{
  height:100vh;
  height:100dvh;
  max-height:100vh;
  max-height:100dvh;
  overflow:hidden;
  background:#b5d9ef;
}
body.campus-page button,
body.campus-page #campusCta,
body.campus-page #bagBtn,
body.campus-page #campusFriendsBtn,
body.campus-page .campusShortcut{
  font-family: var(--font-body, "Manrope", "Segoe UI", system-ui, sans-serif);
}
#world{display:block;position:absolute;inset:0;width:100%;height:100%;touch-action:none}
#world.hidden{display:none}
body.user-shell.campus-page main.viewport.campus-viewport,
body.campus-page.shell-topbar-pinned main.viewport.campus-viewport{
  position:relative;
  overflow:hidden;
}
.glass{
  background:linear-gradient(180deg,rgba(14,32,53,.79),rgba(5,16,29,.76));
  border:1px solid var(--campus-line);
  box-shadow:0 18px 45px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.07);
  backdrop-filter:blur(17px) saturate(1.2);
  -webkit-backdrop-filter:blur(17px) saturate(1.2);
}
#campusDock{
  position:absolute;left:16px;bottom:16px;z-index:60;
  display:flex;flex-direction:column;align-items:flex-start;gap:8px;
  pointer-events:none;overflow:visible
}
#campusDockRow{
  display:flex;align-items:center;gap:8px;pointer-events:none;overflow:visible
}
#campusCta,.campusShortcut,#campusFriendsBtn,#bagBtn{
  appearance:none;border:0;cursor:pointer;font:inherit;
  font-family: var(--font-body, "Manrope", "Segoe UI", system-ui, sans-serif);
  pointer-events:auto
}
body.user-shell.campus-page #campusCta,
body.user-shell.campus-page #campusFriendsBtn,
body.user-shell.campus-page #bagBtn{
  border-radius:14px;padding:8px 12px;color:#fff;font-weight:800;
  font-size:12px !important;line-height:1.2 !important;
  background:linear-gradient(135deg,#277dff,#55cfff);box-shadow:0 12px 32px rgba(47,145,255,.34)
}
body.user-shell.campus-page #campusFriendsBtn{
  position:relative;
  overflow:visible
}
.campus-friends-dock-bell{
  position:absolute;top:-9px;right:-9px;z-index:2;
  width:22px;height:22px;border-radius:999px;padding:0;
  display:grid;place-items:center;pointer-events:none;
  color:#fff;background:linear-gradient(180deg,#ff5d5d,#e02323);
  border:2px solid #fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 3px 0 #9b1414,0 8px 16px rgba(224,35,35,.35)
}
.campus-friends-dock-bell[hidden]{display:none !important}
.campus-friends-dock-bell svg{
  width:12px;height:12px;display:block;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round
}
@media (prefers-reduced-motion: no-preference) {
  #campusFriendsBtn.has-alert .campus-friends-dock-bell{
    animation: campus-friends-bell-pop .9s ease-in-out infinite
  }
}
@keyframes campus-friends-bell-pop{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.08)}
}
#propMenu{
  position:fixed;z-index:72;display:flex;gap:6px;transform:translate(-50%,-110%);
  pointer-events:auto
}
#propMenu[hidden]{display:none !important}
#propMenu button{
  appearance:none;border:1px solid rgba(255,255,255,.16);cursor:pointer;font:inherit;
  border-radius:10px;padding:6px 11px;color:#fff;font-weight:800;font-size:11px;
  background:rgba(8,18,32,.9);box-shadow:0 10px 24px rgba(0,0,0,.32)
}
#propMenu button[data-act="delete"]{background:rgba(176,42,54,.92)}
#campusShortcuts{
  display:flex;flex-direction:column;gap:6px;min-width:228px;max-width:280px;
  padding:8px;border-radius:18px;pointer-events:auto
}
#campusShortcuts[hidden]{display:none !important}
.campusShortcut{
  text-align:left;border-radius:12px;padding:10px 12px;color:#e8f4ff;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1)
}
.campusShortcut b{display:block;font-size:12px}
.campusShortcut span{
  display:block;margin-top:3px;font-size:10px;color:#9eb3c8;line-height:1.35
}
.campusShortcut.active{border-color:#55c9ff;background:rgba(54,151,255,.24)}
.primary,.secondary,.fallbackCard{
  appearance:none;border:0;cursor:pointer;font:inherit;color:inherit
}
#miniWrap{
  position:absolute;right:16px;bottom:16px;width:164px;height:164px;border-radius:20px;z-index:24;padding:7px;pointer-events:none
}
#mini{width:150px;height:150px;border-radius:14px}
.overlay{
  position:fixed;inset:0;z-index:80;display:none;place-items:center;padding:20px;
  background:rgba(2,8,15,.55)
}
.overlay.open{display:grid}
.portalCard,.card{
  position:relative;
  width:min(470px,92vw);border-radius:23px;padding:20px;text-align:left;color:#fff
}
.card.wide{width:min(720px,94vw)}
.portalCard h2,.card h2,.card h1{margin:9px 0 5px;font-size:21px}
.card h1{font-size:clamp(28px,4vw,42px);letter-spacing:-1.5px}
.lead,.portalCard p{margin:0 0 12px;font-size:12px;color:#a8bdd0;line-height:1.58}
.primary{
  border-radius:13px;padding:12px 17px;color:#fff;font-weight:850;font-size:11px;
  background:linear-gradient(135deg,#277dff,#55cfff);box-shadow:0 12px 32px rgba(47,145,255,.34)
}
.secondary{
  border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:10px 13px;
  background:rgba(255,255,255,.06);color:#e8f4ff;font-size:9px
}
.overlay-close{
  position:absolute;top:12px;right:12px;width:32px;height:32px;padding:0;
  border:1px solid rgba(255,255,255,.18);border-radius:10px;
  background:rgba(255,255,255,.08);color:#e8f4ff;font-size:20px;line-height:1;cursor:pointer
}
.tag{display:inline-block;padding:5px 8px;border-radius:999px;background:rgba(67,181,255,.11);color:#6bdcff;font-size:8px;font-weight:900}
.route,code{
  padding:10px 11px;border-radius:11px;background:rgba(255,255,255,.055);
  border:1px solid rgba(255,255,255,.09);font:9px ui-monospace,Consolas,monospace;color:#d7f2ff;display:block
}
.fallback-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:16px 0}
.fallbackCard{
  text-align:left;border-radius:16px;padding:14px;background:rgba(255,255,255,.06);border:1px solid var(--campus-line);color:#fff
}
.fallbackCard b{display:block;margin-bottom:6px}
.fallbackCard span{color:var(--campus-muted);font-size:12px}
.text-link{color:var(--campus-cyan)}
#toast{
  position:fixed;left:50%;top:calc(var(--shell-topbar-h, 42px) + 16px);transform:translate(-50%,-8px);z-index:95;opacity:0;color:white;
  padding:9px 12px;border-radius:12px;font-size:9px;pointer-events:none;transition:.18s
}
#toast.show{opacity:1;transform:translate(-50%,0)}
.campus-visit-bar{
  position:absolute;left:16px;top:12px;z-index:62;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:7px 10px;border-radius:14px;pointer-events:auto;
  color:#e8f4ff;font-size:12px;font-weight:700
}
.campus-visit-bar[hidden]{display:none !important}
#campusVisitHome,#campusShareLink{
  appearance:none;border:0;cursor:pointer;font:inherit;
  border-radius:10px;padding:5px 9px;color:#fff;font-weight:800;font-size:11px;
  background:linear-gradient(135deg,#277dff,#55cfff);text-decoration:none
}
#campusVisitHome[hidden],#campusShareLink[hidden]{display:none !important}
#campusFriendsLayer{
  position:absolute;left:0;right:0;bottom:0;z-index:78;display:grid;place-items:center;
  top:var(--shell-topbar-h, 42px);
  padding:20px 24px 24px;pointer-events:auto;background:rgba(15,41,66,.38)
}
#campusFriendsLayer[hidden]{display:none !important}
#campusFriendsPanel{
  width:min(880px,100%);height:min(600px,100%);
  margin:0 auto;justify-self:center;align-self:center;
  border-radius:22px;padding:0;pointer-events:auto;overflow:hidden;
  color:#0f2942;color-scheme:light;
  background:linear-gradient(165deg,#ffffff 0%,#f4f8ff 56%,#fff4ec 100%);
  border:1px solid rgba(47,107,255,.18);
  box-shadow:
    inset 0 1px 0 #fff,
    0 3px 0 rgba(47,107,255,.12),
    0 22px 48px rgba(15,41,66,.22)
}
#campusFriendsPanel[hidden]{display:none !important}
.campus-friends-split{
  min-height:0;height:100%;display:grid;grid-template-columns:280px 1fr
}
.campus-friends-side{
  min-width:0;min-height:0;display:flex;flex-direction:column;gap:8px;
  padding:12px 10px 12px 12px;
  background:linear-gradient(180deg,#f7faff 0%,#eef4ff 100%);
  border-right:1px solid #d5e2f4
}
.campus-friends-bar{
  position:relative;flex:none;
  display:grid;grid-template-columns:minmax(0,1fr) 40px 40px 40px;gap:6px;align-items:center
}
#campusFriendsQuery{
  width:100%;min-width:0;height:40px;border:1px solid #c5d4ea;border-radius:12px;
  padding:0 12px;background:#fff;color:#0f2942 !important;-webkit-text-fill-color:#0f2942;
  caret-color:#0f2942;font:inherit;font-size:14px !important;font-weight:600;
  box-shadow:inset 0 1px 0 #fff,0 2px 0 rgba(15,41,66,.05)
}
#campusFriendsQuery::placeholder{color:#5a7194;opacity:1}
#campusFriendsShare,#campusFriendsBell,#campusFriendsClose{
  appearance:none;border:1px solid #c5d4ea;cursor:pointer;
  position:relative;width:40px;height:40px;border-radius:12px;padding:0;
  color:#2f6bff;background:linear-gradient(180deg,#fff,#eef4ff);
  box-shadow:inset 0 1px 0 #fff,0 3px 0 rgba(47,107,255,.12)
}
#campusFriendsShare:active,#campusFriendsBell:active,#campusFriendsClose:active{transform:translateY(1px);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(47,107,255,.12)}
#campusFriendsShare svg,#campusFriendsBell svg{width:18px;height:18px;display:block;margin:auto}
#campusFriendsClose{font-size:22px;line-height:1;color:#0f2942}
#campusFriendsBadge{
  position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;
  border-radius:999px;background:#e02323;color:#fff;font-size:11px;font-weight:800;
  display:grid;place-items:center;border:2px solid #fff
}
#campusFriendsBadge[hidden]{display:none !important}
#campusFriendsHits,#campusFriendsRequests{
  position:absolute;top:calc(100% + 6px);z-index:5;
  border-radius:14px;padding:10px;background:#fff;
  border:1px solid #d5e2f4;
  box-shadow:inset 0 1px 0 #fff,0 16px 36px rgba(15,41,66,.18)
}
#campusFriendsHits{left:0;width:min(320px,100%)}
#campusFriendsRequests{right:0;width:min(260px,100%)}
#campusFriendsHits[hidden],#campusFriendsRequests[hidden]{display:none !important}
#campusFriendsList{
  min-height:0;flex:1;overflow:auto;display:flex;flex-direction:column;gap:6px
}
.campus-friends-row{
  display:flex;align-items:center;gap:10px;text-align:left;border-radius:14px;padding:10px;
  color:#0f2942;background:#fff;border:1px solid #dce7f5;
  box-shadow:inset 0 1px 0 #fff,0 3px 0 rgba(15,41,66,.05);
  font-size:14px !important
}
.campus-friends-row:hover{border-color:#9bb8e8}
.campus-friends-row.is-active{
  border-color:#2f6bff;background:linear-gradient(180deg,#eef4ff,#fff);
  box-shadow:inset 0 1px 0 #fff,0 3px 0 rgba(47,107,255,.16)
}
.campus-friends-row.has-unread .campus-friends-meta b{color:#d35412}
.campus-friends-unread{
  width:10px;height:10px;border-radius:999px;flex:none;background:#e02323;
  box-shadow:0 0 0 2px #fff
}
.campus-friends-ava{
  width:36px;height:36px;border-radius:12px;display:grid;place-items:center;flex:none;
  background:linear-gradient(180deg,#5b8cff,#2f6bff);color:#fff;font-size:15px;font-weight:800;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 3px 0 rgba(31,79,209,.28)
}
.campus-friends-meta{min-width:0;display:flex;flex-direction:column;gap:2px;flex:1}
.campus-friends-meta b{font-size:15px;font-weight:800;color:#0f2942}
.campus-friends-meta span,.campus-friends-empty{
  font-size:13px;color:#5a7194;line-height:1.35;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.campus-friends-empty{white-space:normal;padding:8px 4px}
.campus-friends-thread{
  min-width:0;min-height:0;display:flex;flex-direction:column;
  background:linear-gradient(180deg,#f3f8ff 0%,#fff 42%,#fff7f0 100%)
}
#campusFriendsThreadHead{
  display:flex;align-items:center;gap:8px;padding:12px 14px;
  background:linear-gradient(180deg,#fff,#f4f8ff);
  border-bottom:1px solid #d5e2f4;
  box-shadow:inset 0 1px 0 #fff
}
#campusFriendsThreadHead b{flex:1;font-size:16px;color:#0f2942}
.campus-friends-back,#campusFriendsThreadHead a,.campus-friends-hit-actions a,.campus-friends-hit-actions button,.campus-friends-invite button{
  appearance:none;border:0;cursor:pointer;font:inherit;text-decoration:none;
  border-radius:11px;padding:8px 12px;color:#fff;font-weight:800;font-size:13px !important;
  background:linear-gradient(180deg,#5b8cff,#2f6bff);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 3px 0 #1f4fd1
}
.campus-friends-back:active,#campusFriendsThreadHead a:active,#campusFriendsCompose button:active{
  transform:translateY(1px)
}
.campus-friends-back,.campus-friends-invite button.is-ghost{
  color:#1a3a5c;background:linear-gradient(180deg,#fff,#eef4ff);
  border:1px solid #c5d4ea;box-shadow:inset 0 1px 0 #fff,0 3px 0 rgba(15,41,66,.08)
}
#campusFriendsThreadHead a{
  background:linear-gradient(180deg,#ff9a5c,#ff7a3d);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 3px 0 #d45e24
}
#campusFriendsThreadLog{
  flex:1;overflow:auto;display:flex;flex-direction:column;gap:8px;padding:14px
}
.campus-friends-bubble{
  max-width:78%;margin:0;padding:10px 12px;border-radius:16px 16px 16px 6px;
  background:#fff;color:#0f2942;font-size:15px;line-height:1.45;white-space:pre-wrap;
  border:1px solid #dce7f5;
  box-shadow:inset 0 1px 0 #fff,0 3px 0 rgba(15,41,66,.05)
}
.campus-friends-bubble.is-mine{
  align-self:flex-end;border-radius:16px 16px 6px 16px;color:#fff;border-color:transparent;
  background:linear-gradient(180deg,#5b8cff,#2f6bff);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 3px 0 #1f4fd1
}
#campusFriendsCompose{
  display:flex;gap:8px;align-items:center;padding:12px 14px;
  background:#fff;border-top:1px solid #d5e2f4
}
#campusFriendsPanel:not(.has-thread) #campusFriendsCompose{display:none}
#campusFriendsDraft{
  flex:1;min-width:0;height:44px;border:1px solid #c5d4ea;border-radius:14px;
  padding:0 14px;background:#fff !important;color:#0f2942 !important;
  -webkit-text-fill-color:#0f2942;caret-color:#0f2942;
  font:inherit;font-size:15px !important;font-weight:600;
  box-shadow:inset 0 1px 0 #fff,0 2px 0 rgba(15,41,66,.05)
}
#campusFriendsDraft::placeholder{color:#5a7194;opacity:1;-webkit-text-fill-color:#5a7194}
#campusFriendsCompose button{
  height:44px;border:0;cursor:pointer;border-radius:14px;padding:0 16px;
  color:#fff;font-weight:800;font-size:15px !important;
  background:linear-gradient(180deg,#ff9a5c,#ff7a3d);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 3px 0 #d45e24
}
.campus-friends-hit,.campus-friends-invite{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px;color:#0f2942
}
.campus-friends-hit b,.campus-friends-invite b{flex:1;font-size:14px}
.campus-friends-hit-actions{display:flex;gap:6px;align-items:center}
@media(max-width:760px){
  #campusDock{left:10px;bottom:10px}
  #campusShortcuts{min-width:196px}
  #miniWrap{width:118px;height:118px;right:10px;bottom:10px}
  #mini{width:104px;height:104px}
  .campus-visit-bar{left:10px;right:10px;top:8px}
  #campusFriendsPanel{width:min(100%, 880px);height:min(78dvh, 600px);max-height:100%}
  .campus-friends-split{grid-template-columns:1fr}
  #campusFriendsPanel.has-thread .campus-friends-side{display:none}
}
