VR / css /style.css
MikaFil's picture
Create css/style.css
911c400 verified
raw
history blame
4.66 kB
/* ===========================
Global overlay scaffolding
=========================== */
#xr-overlay-root {
position: fixed;
inset: 0;
z-index: 9999; /* Above site chrome */
pointer-events: none; /* Let underlying elements receive events unless explicitly enabled */
}
/* Message toast (bottom center) */
.pc-ar-msg {
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 16px;
z-index: 2;
padding: 10px 14px;
background: rgba(0, 0, 0, 0.65);
color: #fff;
border-radius: 12px;
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
font-size: 14px;
line-height: 1.3;
text-align: center;
max-width: min(90vw, 640px);
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
backdrop-filter: blur(4px);
pointer-events: none; /* Non-clickable */
user-select: none;
}
/* ===========================
AR Launch Button
=========================== */
#ar-launch-btn {
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 72px; /* Sits above the message toast */
z-index: 10001;
pointer-events: auto;
appearance: none;
border: none;
border-radius: 14px;
padding: 12px 18px;
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
font-size: 15px;
font-weight: 600;
color: #fff;
background: rgba(0, 0, 0, 0.85);
box-shadow: 0 6px 18px rgba(0,0,0,.25);
backdrop-filter: blur(6px);
cursor: pointer;
touch-action: manipulation;
-webkit-tap-highlight-color: transparent;
}
#ar-launch-btn:active { transform: translateX(-50%) scale(0.98); }
#ar-launch-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
/* Hidden anchor used for iOS Quick Look trigger (kept invisible) */
#ios-quicklook-anchor {
position: absolute !important;
width: 1px !important;
height: 1px !important;
overflow: hidden !important;
clip-path: inset(50%) !important;
pointer-events: none !important;
}
/* ===========================
Vertical Rotation Slider UI
=========================== */
/* Panel container */
.ar-ui {
position: absolute; /* inside #xr-overlay-root space */
right: 12px;
top: 50%;
transform: translateY(-50%);
z-index: 10000;
pointer-events: auto; /* Make this panel interactive */
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
width: 56px;
padding: 12px 10px;
border-radius: 16px;
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
color: #fff;
background: rgba(0, 0, 0, 0.55);
box-shadow: 0 6px 18px rgba(0,0,0,.25);
backdrop-filter: blur(6px);
touch-action: none; /* Prevent page scroll while sliding */
-webkit-tap-highlight-color: transparent;
user-select: none;
}
.ar-ui .label {
font-size: 12px;
text-align: center;
opacity: 0.95;
}
/* Big touch area for the slider */
.rotY-wrap {
position: relative;
width: 48px;
height: 200px;
display: flex;
align-items: center;
justify-content: center;
/* Critical: ensure slider grabs interactions and blocks scene drag beneath */
pointer-events: auto;
touch-action: none;
overflow: visible;
}
/* The vertical rail (full height) */
.rotY-rail {
position: absolute;
left: 50%;
transform: translateX(-50%);
width: 4px;
height: 100%;
background: rgba(255, 255, 255, 0.35);
border-radius: 2px;
pointer-events: none; /* visual only */
}
/* The knob — centered on the rail */
.rotY-knob {
position: absolute;
left: 50%;
transform: translate(-50%, -50%); /* perfectly centered */
top: 50%;
width: 24px;
height: 24px;
border-radius: 50%;
background: #ffffff;
box-shadow: 0 2px 8px rgba(0,0,0,.35);
will-change: top;
pointer-events: none; /* moved by JS, wrapper handles input */
}
/* Input range is hidden (we use it only to store the numeric value) */
.ar-ui input[type="range"].rotY {
position: absolute;
opacity: 0;
pointer-events: none;
width: 0;
height: 0;
}
/* Degree label below slider */
.ar-ui .val {
font-size: 12px;
opacity: 0.95;
}
/* ===========================
Optional: container hints
=========================== */
/* If you mount the canvas in a custom container (e.g., #my-ar), you can set a min height */
#ar-mount-fallback {
position: relative;
width: 100%;
min-height: 70vh; /* can be overridden inline on your site */
touch-action: manipulation;
-webkit-tap-highlight-color: transparent;
}
/* Make sure the canvas fills its mount container */
#ar-mount-fallback > #application-canvas,
#application-canvas {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
display: block;
}