/* office-campus.js base styles. A real file, not an injected <style>: the CSP blocks inline styles,
   and without these rules the canvas shows at device-pixel size (2-3x zoomed and cropped on phones). */
.oc-viewport{position:relative;overflow:hidden;background:#0f1714;isolation:isolate}
  .oc-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab;outline:none}
  .oc-canvas.dragging{cursor:grabbing}.oc-canvas.hovering{cursor:pointer}
  .oc-toolbar{position:absolute;top:12px;left:12px;right:12px;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;border-radius:12px;background:#0b1119e6;border:1px solid #26364a;backdrop-filter:blur(8px);color:#d6dfeb;font:12px system-ui,sans-serif;box-shadow:0 8px 24px #0006}
  .oc-toolbar input,.oc-toolbar select,.oc-toolbar button{height:32px;width:auto;padding:0 10px;border-radius:8px;border:1px solid #2a3a4f;background:#141d29;color:#eef3f9;font:12px system-ui,sans-serif;max-width:220px}
  .oc-toolbar input{width:170px}.oc-toolbar button{cursor:pointer}.oc-toolbar button:hover,.oc-toolbar select:hover{border-color:#3ee6a2;filter:none}
  .oc-toolbar .oc-primary{background:#3ee6a2;color:#03150d;border-color:#3ee6a2;font-weight:700}
  .oc-toolbar .oc-floor{background:#223a2d;border-color:#3ee6a2;font-weight:700}
  .oc-zoom{display:flex;align-items:center;gap:4px;margin-left:auto}.oc-zoom span{min-width:44px;text-align:center;color:#8e9bb0}
  .oc-toolbar .oc-zoom button{width:32px;padding:0}
  .oc-status{position:absolute;left:12px;bottom:12px;z-index:20;display:flex;gap:6px;flex-wrap:wrap}
  .oc-status span{padding:6px 10px;border-radius:999px;background:#0b1119d9;border:1px solid #26364a;color:#d6dfeb;font:11px system-ui,sans-serif}
  .oc-status b{color:#3ee6a2}
  .oc-call{position:absolute;left:50%;transform:translateX(-50%);z-index:22;display:flex;align-items:center;gap:10px;padding:8px 8px 8px 14px;border-radius:999px;background:#8a6d2f;color:#fff;font:600 13px system-ui,sans-serif;box-shadow:0 8px 24px #0008;max-width:calc(100% - 24px)}
  .oc-call span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .oc-call .oc-call-close{background:transparent;color:#fff;width:30px;padding:0;font-size:18px}
  .oc-call button{height:30px;padding:0 14px;border-radius:999px;border:0;background:#fff;color:#4a3a14;font:700 12px system-ui,sans-serif;cursor:pointer;flex:none}
  .oc-minimap{position:absolute;right:12px;bottom:12px;z-index:20;border-radius:10px;border:1px solid #2a3a4f;background:#0b1119;box-shadow:0 8px 24px #0007;cursor:pointer}
  .oc-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:30;padding:10px 16px;border-radius:10px;background:#0b1119e6;color:#eef3f9;font:600 13px system-ui,sans-serif;pointer-events:none}
  .oc-detail{position:absolute;right:12px;top:72px;z-index:21;width:min(300px,calc(100% - 24px));padding:14px;border-radius:14px;background:#0b1119f0;border:1px solid #2a3a4f;color:#eef3f9;font:12px system-ui,sans-serif;box-shadow:0 10px 30px #0008}
  .oc-detail .oc-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}
  .oc-detail .oc-avatar{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-weight:800;color:#13200f;flex:none}
  .oc-detail strong{display:block;font-size:14px}.oc-detail small{color:#8e9bb0}
  .oc-detail .oc-head button{margin-left:auto;width:28px;height:28px;padding:0;border-radius:8px;border:1px solid #2a3a4f;background:#141d29;color:#eef3f9;cursor:pointer}
  .oc-detail .oc-desk-button{margin-top:12px;width:100%;height:34px;border-radius:8px;border:1px solid #3ee6a2;background:#3ee6a2;color:#03150d;font:700 12px system-ui,sans-serif;cursor:pointer}
  .oc-detail dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0}.oc-detail dt{color:#8e9bb0}.oc-detail dd{margin:0;text-align:right}
  @media(max-width:700px){.oc-hide-sm{display:none}.oc-toolbar{gap:6px;padding:6px}.oc-toolbar input{width:110px}.oc-toolbar select{max-width:130px}}
  /* elevator picker: shared here so the control center (no office-experience.css) gets it too */
  .oc-elevator{position:absolute;z-index:34;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translate(-50%,20px);opacity:0;width:min(420px,calc(100% - 24px));max-height:calc(100% - 90px);display:flex;flex-direction:column;border-radius:22px;background:linear-gradient(180deg,#26302c,#131b17);border:2px solid #56655d;box-shadow:0 24px 60px #000c;color:var(--ox-ink,#eef3f9);overflow:hidden;transition:transform .25s cubic-bezier(.2,1.2,.4,1),opacity .2s;font-family:'DM Sans',system-ui,sans-serif}
  .oc-elevator.open{transform:translate(-50%,0);opacity:1}
  .oc-elevator-head{display:flex;align-items:center;gap:12px;padding:14px;border-bottom:1px solid #3b4842}
  .oc-elevator-head>b{min-width:58px;height:44px;border-radius:10px;background:#0a0f0d;color:#f2b84b;font:800 24px 'Courier New',monospace;display:grid;place-items:center;text-shadow:0 0 10px #f2b84b88}
  .oc-elevator-head>div{flex:1;display:grid}.oc-elevator-head small{color:var(--ox-muted,#8e9bb0);font-size:12px}
  .oc-elevator-head button{width:40px;height:40px;padding:0;border-radius:12px;font-size:20px}
  .oc-elevator-floors{overflow-y:auto;padding:10px;display:grid;gap:8px}
  .oc-elevator-floors button{display:flex;align-items:center;gap:12px;min-height:64px;padding:10px 12px;border-radius:16px;border:1px solid #3b4842;background:#1b2521;color:var(--ox-ink,#eef3f9);text-align:left;cursor:pointer;touch-action:manipulation;transition:transform .12s,border-color .12s}
  .oc-elevator-floors button:hover{border-color:var(--ox-accent,#3ee6a2);filter:none}
  .oc-elevator-floors button:active{transform:scale(.98)}
  .oc-elevator-floors button.current{border-color:#f2b84b;background:#2a2515}
  .oc-elevator-num{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;background:#0a0f0d;border:2px solid #56655d;font:800 18px system-ui,sans-serif;color:#f2b84b;box-shadow:inset 0 0 12px #f2b84b33}
  .oc-elevator-floors span:not(.oc-elevator-num){flex:1;display:grid;min-width:0}
  .oc-elevator-floors strong{font-size:14px}.oc-elevator-floors small{font-size:12px;color:var(--ox-muted,#8e9bb0)}
  .oc-elevator-floors em{font-style:normal;font-size:11px;font-weight:700;padding:4px 8px;border-radius:999px;background:#ffffff12;color:var(--ox-accent,#3ee6a2);white-space:nowrap}
  .oc-elevator[hidden]{display:none}
  @media(prefers-reduced-motion:reduce){.oc-elevator{transition:none}}
  @media (pointer:coarse){.oc-toolbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:#0b1119f2}}
