/* REHOBOAM v5 — Portal / Türen OS */
:root{
  --portal-accent:#00e5ff;
  --portal-accent-rgb:0,229,255;
  --portal-surface:#0d0d15;
  --portal-surface-2:#14141f;
}

body.portal-lobby-open{
  padding-bottom:0!important;
  overflow:hidden;
}
body.portal-lobby-open #sticky-header,
body.portal-lobby-open #main-content,
body.portal-lobby-open #bottom-tabs{
  display:none!important;
}

body[data-portal="hoes"].portal-guide-locked #bottom-tabs{
  display:none!important;
}

body[data-portal="hoes"].portal-guide-locked #main-content{
  padding-bottom:max(18px,var(--safe-bottom));
}
body.portal-active #global-mode-bar{display:none!important}
body.portal-active #main-content{
  max-width:1180px;
  margin:0 auto;
  padding-top:8px;
}
body.portal-active .panel{
  border-color:rgba(var(--portal-accent-rgb),.13);
  box-shadow:0 12px 34px rgba(0,0,0,.12);
}
body.portal-active .panel-header::before{
  background:linear-gradient(90deg,transparent,var(--portal-accent),transparent);
}
body.portal-active .panel-title-text,
body.portal-active .panel-collapse-icon{color:var(--portal-accent)}
body.portal-active .tab.active{
  background:rgba(var(--portal-accent-rgb),.11);
}
body.portal-active .tab.active::before{background:var(--portal-accent)}
body.portal-active .tab.active .tab-label{color:var(--portal-accent)}
body.portal-active .tab.active .tab-icon{
  filter:drop-shadow(0 0 5px rgba(var(--portal-accent-rgb),.75));
}
body[data-portal="hoes"]{
  --portal-accent:#ff267d;
  --portal-accent-rgb:255,38,125;
}
body[data-portal="finance"]{
  --portal-accent:#62f3ae;
  --portal-accent-rgb:98,243,174;
}
body[data-portal="tech"]{
  --portal-accent:#b987ff;
  --portal-accent-rgb:185,135,255;
}
body[data-portal="world"]{
  --portal-accent:#00dff7;
  --portal-accent-rgb:0,223,247;
}
body[data-portal="hoes"] #sticky-header .quick-stats,
body[data-portal="hoes"] #sticky-header > div:nth-last-child(2){
  display:none!important;
}
body[data-portal="hoes"] #sticky-header{
  background:rgba(11,9,17,.96);
  border-bottom-color:rgba(255,38,125,.18);
}
body[data-portal="hoes"] .header-top{height:52px}

/* Full-screen door lobby */
#portal-lobby{
  position:fixed;
  inset:0;
  z-index:4000;
  overflow:auto;
  overscroll-behavior:contain;
  background:
    radial-gradient(circle at 14% 12%,rgba(0,229,255,.11),transparent 30%),
    radial-gradient(circle at 85% 10%,rgba(255,38,125,.13),transparent 31%),
    radial-gradient(circle at 50% 100%,rgba(105,240,174,.08),transparent 42%),
    #07070c;
  color:#f6f7fb;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
#portal-lobby.hidden{display:none}
#portal-lobby::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  opacity:.2;
  background-image:
    linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);
  background-size:28px 28px;
  mask-image:linear-gradient(to bottom,#000,transparent 82%);
}
.portal-lobby-shell{
  width:min(100%,1040px);
  min-height:100dvh;
  margin:0 auto;
  padding:max(24px,env(safe-area-inset-top)) 18px max(30px,env(safe-area-inset-bottom));
  position:relative;
  z-index:1;
}
.portal-lobby-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-bottom:22px;
}
.portal-lobby-brand{
  font:900 clamp(18px,5vw,27px) var(--mono);
  letter-spacing:clamp(4px,1.8vw,8px);
  color:#fff;
}
.portal-lobby-brand span{color:#00e5ff}
.portal-live-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 9px;
  border:1px solid rgba(105,240,174,.22);
  border-radius:999px;
  color:#69f0ae;
  background:rgba(105,240,174,.06);
  font:800 8px var(--mono);
  letter-spacing:.7px;
}
.portal-live-pill::before{
  content:"";
  width:6px;height:6px;border-radius:50%;
  background:#69f0ae;
  box-shadow:0 0 9px #69f0ae;
}
.portal-screen{animation:portal-fade-in .24s ease both}
.portal-screen.hidden{display:none}
@keyframes portal-fade-in{
  from{opacity:0;transform:translateY(8px)}
  to{opacity:1;transform:none}
}
.portal-kicker{
  color:#777a89;
  font:800 9px var(--mono);
  letter-spacing:2px;
  text-transform:uppercase;
}
.portal-lobby-title{
  max-width:760px;
  margin:8px 0 8px;
  color:#fff;
  font-size:clamp(27px,8vw,54px);
  line-height:.98;
  letter-spacing:-1.8px;
}
.portal-lobby-copy{
  max-width:620px;
  margin:0 0 20px;
  color:#8d91a1;
  font-size:12px;
  line-height:1.55;
}
.portal-door-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px;
}
.portal-door{
  --door-color:#00e5ff;
  position:relative;
  min-height:164px;
  padding:15px;
  border:1px solid rgba(255,255,255,.09);
  border-radius:13px;
  overflow:hidden;
  text-align:left;
  color:#fff;
  background:
    linear-gradient(155deg,rgba(255,255,255,.045),rgba(255,255,255,.012)),
    #0e0e17;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.018),0 16px 35px rgba(0,0,0,.22);
  cursor:pointer;
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.portal-door::before{
  content:"";
  position:absolute;
  inset:9px 9px 0;
  border:1px solid color-mix(in srgb,var(--door-color) 32%,transparent);
  border-bottom:none;
  border-radius:8px 8px 0 0;
  opacity:.8;
  pointer-events:none;
}
.portal-door::after{
  content:"";
  position:absolute;
  width:120px;height:120px;
  right:-35px;bottom:-48px;
  border-radius:50%;
  background:var(--door-color);
  opacity:.09;
  filter:blur(15px);
  pointer-events:none;
}
.portal-door:hover,.portal-door:focus-visible{
  transform:translateY(-3px);
  border-color:color-mix(in srgb,var(--door-color) 55%,transparent);
  box-shadow:0 18px 44px rgba(0,0,0,.32),0 0 24px color-mix(in srgb,var(--door-color) 13%,transparent);
  outline:none;
}
.portal-door:active{transform:scale(.985)}
.portal-door.featured{
  grid-column:1/-1;
  min-height:194px;
  background:
    radial-gradient(circle at 84% 18%,rgba(255,38,125,.18),transparent 36%),
    linear-gradient(145deg,rgba(255,38,125,.075),rgba(255,255,255,.014)),
    #100c15;
}
.portal-door[data-door="hoes"]{--door-color:#ff267d}
.portal-door[data-door="finance"]{--door-color:#62f3ae}
.portal-door[data-door="world"]{--door-color:#00dff7}
.portal-door[data-door="tech"]{--door-color:#b987ff}
.portal-door[data-door="system"]{--door-color:#ffb74d}
.portal-door-no{
  display:block;
  position:relative;
  z-index:1;
  color:var(--door-color);
  font:800 8px var(--mono);
  letter-spacing:1.7px;
}
.portal-door-icon{
  position:absolute;
  z-index:1;
  right:20px;
  top:19px;
  font-size:25px;
  filter:drop-shadow(0 0 13px color-mix(in srgb,var(--door-color) 45%,transparent));
}
.portal-door-name{
  display:block;
  position:relative;
  z-index:1;
  margin-top:30px;
  color:#fff;
  font:950 clamp(17px,5vw,29px) var(--mono);
  letter-spacing:-.7px;
}
.portal-door-desc{
  display:block;
  position:relative;
  z-index:1;
  max-width:80%;
  margin-top:6px;
  color:#8f92a0;
  font-size:10px;
  line-height:1.45;
}
.portal-door-enter{
  position:absolute;
  z-index:1;
  right:18px;
  bottom:15px;
  color:var(--door-color);
  font:900 9px var(--mono);
  letter-spacing:.8px;
}
.portal-door-last{
  display:none;
  position:absolute;
  z-index:2;
  left:15px;
  bottom:15px;
  color:#c8cad4;
  font:700 7px var(--mono);
  letter-spacing:.6px;
}
.portal-door.was-last .portal-door-last{display:block}
.portal-utility-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-top:14px;
  color:#555b6b;
  font:700 8px var(--mono);
}
.portal-utility-button{
  border:1px solid rgba(255,255,255,.08);
  border-radius:7px;
  padding:7px 10px;
  background:rgba(255,255,255,.025);
  color:#858999;
  font:800 8px var(--mono);
  cursor:pointer;
}

/* HOES is a nested door: first choose the city */
.portal-city-picker-head{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:22px;
}
.portal-back-button{
  flex:0 0 auto;
  width:39px;height:39px;
  border:1px solid rgba(255,255,255,.1);
  border-radius:9px;
  background:rgba(255,255,255,.035);
  color:#fff;
  font-size:18px;
  cursor:pointer;
}
.portal-city-picker-box{
  border:1px solid rgba(255,38,125,.18);
  border-radius:15px;
  padding:15px;
  background:linear-gradient(145deg,rgba(255,38,125,.055),rgba(255,255,255,.018));
}
.portal-city-search{
  display:flex;
  gap:8px;
  margin:13px 0 14px;
}
.portal-city-search input{
  min-width:0;
  flex:1;
  min-height:48px;
  border:1px solid rgba(255,38,125,.28);
  border-radius:9px;
  padding:0 13px;
  background:#0b0b12;
  color:#fff;
  font-size:14px;
  outline:none;
}
.portal-city-search input:focus{
  border-color:#ff267d;
  box-shadow:0 0 0 3px rgba(255,38,125,.08);
}
.portal-city-search button{
  flex:0 0 auto;
  min-width:84px;
  border:0;
  border-radius:9px;
  padding:0 13px;
  background:#ff267d;
  color:#fff;
  font:900 9px var(--mono);
  cursor:pointer;
}
.portal-city-chips{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.portal-city-chip{
  min-height:64px;
  padding:9px 10px;
  border:1px solid rgba(255,255,255,.075);
  border-radius:9px;
  background:rgba(255,255,255,.025);
  color:#e9e9ef;
  text-align:left;
  cursor:pointer;
}
.portal-city-chip b{display:block;font-size:11px}
.portal-city-chip span{display:block;margin-top:3px;color:#656979;font:700 7px var(--mono)}
.portal-city-chip:hover,.portal-city-chip:focus-visible{
  border-color:rgba(255,38,125,.42);
  background:rgba(255,38,125,.07);
  outline:none;
}
.portal-location-button{
  width:100%;
  min-height:43px;
  margin-top:10px;
  border:1px solid rgba(0,229,255,.25);
  border-radius:9px;
  background:rgba(0,229,255,.055);
  color:#00e5ff;
  font:900 9px var(--mono);
  cursor:pointer;
}

/* Context bar inside a selected room */
#portal-context-bar{
  display:flex;
  align-items:center;
  gap:9px;
  min-height:51px;
  margin:0 0 10px;
  padding:7px;
  border:1px solid rgba(var(--portal-accent-rgb),.16);
  border-radius:10px;
  background:
    linear-gradient(135deg,rgba(var(--portal-accent-rgb),.065),rgba(255,255,255,.018)),
    rgba(12,12,19,.94);
  box-shadow:0 10px 28px rgba(0,0,0,.18);
}
.portal-context-doors{
  flex:0 0 auto;
  min-width:48px;
  min-height:36px;
  border:1px solid rgba(var(--portal-accent-rgb),.25);
  border-radius:7px;
  background:rgba(var(--portal-accent-rgb),.06);
  color:var(--portal-accent);
  font:900 8px var(--mono);
  cursor:pointer;
}
.portal-context-copy{min-width:0;flex:1}
.portal-context-label{
  color:var(--portal-accent);
  font:900 10px var(--mono);
  letter-spacing:1px;
}
.portal-context-sub{
  margin-top:2px;
  overflow:hidden;
  color:#696d7b;
  font:700 7px var(--mono);
  text-overflow:ellipsis;
  white-space:nowrap;
}
.portal-context-city{
  display:none;
  flex:0 1 132px;
  min-width:90px;
  min-height:36px;
  border:1px solid rgba(255,38,125,.24);
  border-radius:7px;
  padding:0 8px;
  background:#0a0a11;
  color:#fff;
  font:800 9px var(--mono);
  outline:none;
}
body[data-portal="hoes"] .portal-context-city{display:block}
.portal-context-radius{
  display:none;
  flex:0 0 67px;
  min-height:36px;
  border:1px solid rgba(0,229,255,.2);
  border-radius:7px;
  padding:0 4px;
  background:#0a0a11;
  color:#00e5ff;
  font:800 8px var(--mono);
  outline:none;
}
body[data-portal="hoes"] .portal-context-radius{display:block}

/* HOES city command center */
#portal-city-stage{padding-bottom:6px}
.portal-city-hero{
  position:relative;
  min-height:190px;
  padding:17px;
  border:1px solid rgba(255,38,125,.2);
  border-radius:14px;
  overflow:hidden;
  background:
    radial-gradient(circle at 86% 11%,rgba(255,38,125,.23),transparent 35%),
    radial-gradient(circle at 10% 110%,rgba(0,229,255,.09),transparent 45%),
    linear-gradient(145deg,#15101a,#0c0c13);
  box-shadow:0 18px 44px rgba(0,0,0,.25);
}
.portal-city-hero::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.24;
  background-image:linear-gradient(90deg,transparent 49%,rgba(255,255,255,.025) 50%,transparent 51%);
  background-size:26px 100%;
}
.portal-city-hero-top{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
.portal-city-tag{
  color:#ff6a9f;
  font:900 8px var(--mono);
  letter-spacing:1.5px;
}
.portal-city-clock{
  color:#d4d5de;
  font:800 8px var(--mono);
}
.portal-city-name{
  position:relative;
  z-index:1;
  margin:24px 0 3px;
  color:#fff;
  font:950 clamp(28px,9vw,48px) var(--mono);
  line-height:.92;
  letter-spacing:-2px;
  text-transform:uppercase;
}
.portal-city-country{
  position:relative;
  z-index:1;
  color:#777c8b;
  font:800 8px var(--mono);
  letter-spacing:1px;
}
.portal-city-actions{
  position:relative;
  z-index:1;
  display:flex;
  gap:7px;
  margin-top:23px;
}
.portal-city-actions input{
  min-width:0;
  flex:1;
  min-height:40px;
  border:1px solid rgba(255,38,125,.25);
  border-radius:8px;
  padding:0 10px;
  background:rgba(0,0,0,.35);
  color:#fff;
  font-size:11px;
  outline:none;
}
.portal-city-actions button{
  flex:0 0 auto;
  min-height:40px;
  border:1px solid rgba(255,38,125,.35);
  border-radius:8px;
  padding:0 12px;
  background:#ff267d;
  color:#fff;
  font:900 8px var(--mono);
  cursor:pointer;
}
.portal-city-actions .locate{
  width:42px;
  padding:0;
  border-color:rgba(0,229,255,.26);
  background:rgba(0,229,255,.07);
  color:#00e5ff;
  font-size:14px;
}
.portal-pulse-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
  margin:8px 0;
}
.portal-pulse-stat{
  min-width:0;
  padding:9px 5px;
  border:1px solid rgba(255,255,255,.075);
  border-radius:8px;
  background:#101018;
  text-align:center;
}
.portal-pulse-stat b{
  display:block;
  overflow:hidden;
  color:#fff;
  font:900 15px var(--mono);
  text-overflow:ellipsis;
}
.portal-pulse-stat span{
  display:block;
  margin-top:3px;
  color:#666a78;
  font:800 6px var(--mono);
  letter-spacing:.4px;
}
.portal-module-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin:16px 2px 7px;
  color:#e9eaf0;
  font:900 9px var(--mono);
  letter-spacing:1px;
}
.portal-module-title span{color:#5f6371;font-size:7px}
.portal-module-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.portal-module-card{
  --module-color:#ff267d;
  position:relative;
  min-height:102px;
  padding:12px;
  border:1px solid rgba(255,255,255,.075);
  border-radius:10px;
  overflow:hidden;
  background:linear-gradient(145deg,rgba(255,255,255,.036),rgba(255,255,255,.012)),#101018;
  color:#fff;
  text-align:left;
  cursor:pointer;
}
.portal-module-card::after{
  content:"";
  position:absolute;
  width:68px;height:68px;right:-24px;bottom:-29px;border-radius:50%;
  background:var(--module-color);opacity:.12;filter:blur(9px);
}
.portal-module-card:hover,.portal-module-card:focus-visible{
  border-color:color-mix(in srgb,var(--module-color) 38%,transparent);
  outline:none;
}
.portal-module-icon{font-size:18px}
.portal-module-card b{
  display:block;
  margin-top:11px;
  color:var(--module-color);
  font:900 9px var(--mono);
  letter-spacing:.5px;
}
.portal-module-card span{
  display:block;
  margin-top:4px;
  color:#747886;
  font-size:8px;
  line-height:1.35;
}
.portal-module-card[data-module="map"]{--module-color:#00e5ff}
.portal-module-card[data-module="finder"]{--module-color:#ff267d}
.portal-module-card[data-module="news"]{--module-color:#ffd600}
.portal-module-card[data-module="cams"]{--module-color:#ff6d00}
.portal-module-card[data-module="intel"]{--module-color:#b987ff}
.portal-module-card[data-module="alerts"]{--module-color:#ff4e62}
.portal-city-feed,
.portal-city-cam-grid{
  display:grid;
  gap:6px;
}
.portal-city-feed-item{
  display:block;
  padding:10px;
  border:1px solid rgba(255,255,255,.075);
  border-radius:8px;
  background:rgba(255,255,255,.02);
  color:#eee;
  text-decoration:none;
}
.portal-city-feed-meta{
  display:flex;
  justify-content:space-between;
  gap:8px;
  color:#ff6a9f;
  font:800 7px var(--mono);
}
.portal-city-feed-title{
  margin-top:5px;
  font-size:10px;
  font-weight:750;
  line-height:1.35;
}
.portal-city-feed-empty{
  padding:14px;
  border:1px dashed rgba(255,255,255,.1);
  border-radius:8px;
  color:#707483;
  font-size:9px;
  line-height:1.45;
}
.portal-city-cam-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.portal-cam-card{
  min-width:0;
  padding:9px;
  border:1px solid rgba(255,109,0,.16);
  border-radius:8px;
  background:linear-gradient(145deg,rgba(255,109,0,.05),rgba(255,255,255,.014));
  color:#fff;
  text-decoration:none;
}
.portal-cam-live{
  display:flex;
  align-items:center;
  gap:4px;
  color:#ff8b3d;
  font:900 6px var(--mono);
}
.portal-cam-live::before{
  content:"";
  width:5px;height:5px;border-radius:50%;
  background:#ff4e62;
  box-shadow:0 0 6px #ff4e62;
}
.portal-cam-card b{
  display:block;
  overflow:hidden;
  margin-top:7px;
  color:#fff;
  font-size:8px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.portal-cam-card span{
  display:block;
  margin-top:3px;
  color:#656978;
  font:700 6px var(--mono);
}
.portal-city-footnote{
  margin:10px 2px 0;
  color:#4e5260;
  font-size:7px;
  line-height:1.4;
}

/* City-filtered cam block in LIVE */
#portal-live-city-cams{
  margin-bottom:10px;
  padding:10px;
  border:1px solid rgba(255,38,125,.16);
  border-radius:9px;
  background:rgba(255,38,125,.035);
}
#portal-live-city-cams .portal-city-cam-grid{margin-top:7px}
body[data-portal="hoes"] .portal-legacy-cams{display:none!important}

/* Context-aware bottom navigation */
body.portal-active #bottom-tabs{
  justify-content:center;
  border-top-color:rgba(var(--portal-accent-rgb),.14);
  background:rgba(12,12,18,.965);
}
body.portal-active #bottom-tabs .tab{
  flex:1 1 64px;
  max-width:120px;
}
body.portal-active #bottom-tabs .tab-label{font-size:8px}
.portal-city-tab{display:none}
body.portal-lobby-open #finder-floating-button,
body.portal-active #finder-floating-button{display:none!important}

@media(min-width:760px){
  .portal-lobby-shell{padding-left:28px;padding-right:28px}
  .portal-door-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .portal-door.featured{grid-column:span 2;grid-row:span 2;min-height:338px}
  .portal-door:not(.featured){min-height:164px}
  .portal-city-chips{grid-template-columns:repeat(4,minmax(0,1fr))}
  .portal-module-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .portal-city-feed{grid-template-columns:repeat(2,minmax(0,1fr))}
  .portal-city-hero{min-height:230px}
  .portal-city-cam-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media(max-width:420px){
  .portal-lobby-shell{padding-left:12px;padding-right:12px}
  .portal-door{min-height:158px;padding:13px}
  .portal-door.featured{min-height:184px}
  .portal-door-name{font-size:20px}
  .portal-door-desc{max-width:88%;font-size:9px}
  #portal-context-bar{gap:6px}
  .portal-context-doors{min-width:43px}
  .portal-context-city{max-width:112px}
  .portal-context-radius{flex-basis:62px}
  .portal-city-cam-grid{grid-template-columns:1fr}
  .portal-cam-card{min-height:58px}
}

@media(prefers-reduced-motion:reduce){
  .portal-screen,.portal-door{animation:none!important;transition:none!important}
}
