:root { --app-h:100dvh; --bg:#0b0d10; --card:rgba(22,25,31,.92); --text:#f5f7fb; --muted:#aeb6c4; --line:rgba(255,255,255,.12); --shadow:0 20px 60px rgba(0,0,0,.35); }
*{box-sizing:border-box} html,body{margin:0;width:100%;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overscroll-behavior:none} body{min-height:var(--app-h);overflow:hidden} button,a{-webkit-tap-highlight-color:transparent}.hidden{display:none!important}.screen{position:fixed;inset:0;width:100%;height:var(--app-h)}
.landing{display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));overflow-y:auto;background:radial-gradient(circle at 50% 10%,rgba(255,255,255,.08),transparent 38%),linear-gradient(180deg,#11141a 0%,#090b0e 100%)}
.hero-card{width:min(560px,100%);max-height:calc(var(--app-h) - 36px);overflow-y:auto;padding:clamp(22px,5vw,42px);border:1px solid var(--line);border-radius:28px;background:var(--card);box-shadow:var(--shadow);text-align:center}.brand{font-size:.78rem;letter-spacing:.24em;font-weight:800;color:var(--muted)}h1{margin:14px 0 10px;font-size:clamp(1.8rem,7vw,3rem);line-height:1.05}.subtle{margin:0 auto 24px;color:var(--muted);line-height:1.5}
.primary-btn,.page-url{display:inline-flex;align-items:center;justify-content:center;min-height:54px;border:0;border-radius:999px;padding:0 24px;background:#fff;color:#0b0d10;text-decoration:none;font:inherit;font-weight:800;cursor:pointer}.primary-btn.small{min-height:48px;width:100%}
.handoff{margin-top:18px;display:grid;justify-items:center;gap:10px}.handoff h2{margin:6px 0 0}.handoff p{color:var(--muted);margin:0}.qr-box{width:232px;height:232px;display:grid;place-items:center;background:#fff;padding:12px;border-radius:20px}.qr-box img,.qr-box canvas{max-width:100%;height:auto!important}.page-url{min-height:40px;max-width:100%;padding:0 16px;font-size:.82rem;overflow-wrap:anywhere;margin-top:4px}.compat-warning{margin-top:18px;padding:14px 16px;border:1px solid rgba(255,186,73,.35);background:rgba(255,186,73,.08);color:#ffd99b;border-radius:16px;line-height:1.45;text-align:left}
.ar-screen{background:transparent!important;overflow:hidden;touch-action:none}#xr-canvas{position:absolute;inset:0;width:100%;height:100%;background:transparent!important}#xr-overlay{position:absolute;inset:0;pointer-events:none;touch-action:none}.gesture-surface{position:absolute;inset:0;pointer-events:auto;touch-action:none}.stabilization{position:absolute;left:50%;top:max(68px,calc(env(safe-area-inset-top) + 42px));transform:translateX(-50%);width:min(88vw,440px);z-index:6;display:grid;justify-items:center;gap:12px;pointer-events:none}.stabilization p{margin:0;background:rgba(0,0,0,.58);backdrop-filter:blur(12px);padding:10px 16px;border-radius:999px;text-align:center;font-size:.92rem}.scan-orbit{width:48px;height:48px;border:3px solid rgba(255,255,255,.28);border-top-color:#fff;border-radius:50%;animation:spin 1.15s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.ar-topbar{position:absolute;top:max(14px,env(safe-area-inset-top));left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));z-index:10;display:flex;justify-content:space-between;pointer-events:none}.round-btn{width:54px;height:54px;border:1px solid rgba(255,255,255,.22);border-radius:50%;background:rgba(0,0,0,.48);color:#fff;backdrop-filter:blur(12px);font-size:1.5rem;display:grid;place-items:center;pointer-events:auto;cursor:pointer}.ar-controls{position:absolute;left:50%;bottom:max(18px,calc(env(safe-area-inset-bottom) + 10px));transform:translateX(-50%);display:flex;gap:22px;z-index:10;pointer-events:none}.control-btn{pointer-events:auto;width:60px;height:60px}.exit-ar{position:absolute;right:max(14px,env(safe-area-inset-right));bottom:max(96px,calc(env(safe-area-inset-bottom) + 88px));z-index:10;pointer-events:auto;border:0;border-radius:999px;padding:10px 14px;background:rgba(0,0,0,.48);color:#fff;backdrop-filter:blur(12px)}.toast{position:absolute;left:50%;bottom:max(104px,calc(env(safe-area-inset-bottom) + 96px));transform:translateX(-50%);width:min(90vw,520px);z-index:20;padding:12px 16px;background:rgba(0,0,0,.74);border:1px solid rgba(255,255,255,.18);border-radius:14px;text-align:center;pointer-events:none}
.tutorial{position:absolute;inset:0;z-index:30;display:grid;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:rgba(0,0,0,.55);backdrop-filter:blur(10px);pointer-events:auto;overflow-y:auto}.tutorial-card{width:min(470px,100%);max-height:calc(var(--app-h) - 36px);overflow-y:auto;background:rgba(20,22,27,.96);border:1px solid var(--line);border-radius:26px;padding:clamp(20px,5vw,34px);box-shadow:var(--shadow)}.tutorial-card h2{margin:8px 0}.tutorial-card p{color:var(--muted);line-height:1.55}.tutorial-icon{font-size:2.5rem}@media(max-height:620px){.hero-card{padding:18px;border-radius:20px}h1{font-size:1.7rem}.qr-box{width:180px;height:180px}.round-btn{width:48px;height:48px}.control-btn{width:52px;height:52px}}




/* iOS: keep the Quick Look handoff as close as possible to Apple's canonical
   <a rel="ar"><img ...></a> markup. The image is visible and directly tapped. */
.ios-ar-direct {
  display: inline-block;
  width: min(100%, 420px);
  border-radius: 999px;
  overflow: hidden;
  text-decoration: none;
  line-height: 0;
}

.ios-ar-direct > img {
  display: block;
  width: 100%;
  height: auto;
  border: 0;
}


/* Android WebXR camera passthrough fix:
   only #xr-overlay is used as DOM overlay; all XR surfaces must remain transparent. */
html.xr-active,
body.xr-active {
  background: transparent !important;
}

body.xr-active {
  overflow: hidden;
}

body.xr-active #ar-screen,
body.xr-active #xr-canvas,
body.xr-active #xr-overlay,
body.xr-active .gesture-surface {
  background: transparent !important;
}

#xr-overlay {
  background: transparent !important;
}


/* Android native-like AR photo preview */
.photo-preview{
  position:absolute;
  inset:0;
  z-index:100;
  display:flex;
  flex-direction:column;
  background:#000;
  pointer-events:auto;
  touch-action:manipulation;
}
.photo-preview-stage{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#000;
}
.photo-preview-stage img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  background:#000;
}
.photo-close{
  position:absolute;
  top:max(14px,env(safe-area-inset-top));
  right:max(14px,env(safe-area-inset-right));
  z-index:2;
  width:48px;
  height:48px;
  border:0;
  border-radius:50%;
  background:rgba(0,0,0,.58);
  color:#fff;
  font-size:2rem;
  line-height:1;
}
.photo-preview-actions{
  flex:0 0 auto;
  display:flex;
  gap:12px;
  padding:14px 18px max(18px,env(safe-area-inset-bottom));
  background:#0b0d10;
}
.photo-action{
  flex:1;
  min-height:52px;
  border-radius:999px;
  font:inherit;
  font-weight:800;
  letter-spacing:.02em;
}
.photo-action.secondary{
  border:1px solid rgba(255,255,255,.3);
  background:transparent;
  color:#fff;
}
.photo-action.primary{
  border:0;
  background:#fff;
  color:#111;
}


/* v4.1: prevent Android text selection / callout while holding rotate buttons */
#rotate-left,
#rotate-right,
#rotate-left *,
#rotate-right * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-touch-callout: none !important;
  touch-action: none !important;
}


/* v4.2 Surveyhands branding */
.powered-by-wrap{
  width:min(100%, 420px);
  margin:14px auto 0;
  display:flex;
  justify-content:center;
  align-items:center;
  padding:2px 8px 0;
}

.powered-by-logo{
  display:block;
  width:min(100%, 390px);
  height:auto;
  object-fit:contain;
  -webkit-user-select:none;
  user-select:none;
  -webkit-touch-callout:none;
  pointer-events:none;
}


/* v4.3: shared Surveyhands footer */
.shared-powered-by{
  margin-top:16px;
}


/* v4.5: keep Android AR controls above Chrome's bottom system hint */
.ar-controls{
  bottom:max(145px, calc(env(safe-area-inset-bottom) + 125px)) !important;
}

.exit-ar{
  bottom:max(215px, calc(env(safe-area-inset-bottom) + 195px)) !important;
}
