/* Jodfay-owned experience chrome and resilient public error pages.
   Branded demos, iframe documents and their 3D scenes retain their own design. */
@font-face{font-family:JFPublicKufi;src:url("../fonts/droid-arabic-kufi-regular.9af6cf067289.woff2") format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:JFPublicKufi;src:url("../fonts/droid-arabic-kufi-bold.f07864b5ce86.woff2") format('woff2');font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:JFPublicNoto;src:url("../fonts/jodfay-noto-sans-regular.01fd6ce3533c.woff2") format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:JFPublicNoto;src:url("../fonts/jodfay-noto-sans-bold.d55ec7288ad7.woff2") format('woff2');font-style:normal;font-weight:700;font-display:swap}

.jf-public-error,.jf-unified.jf-experience-viewer,.jf-unified.lv-page,.jf-tamdon-shell .powered-by{
  --ui-paper:#f5f2fa;--ui-ink:#1c1429;--ui-night:#08031a;--ui-purple:#6840bb;
  --ui-lavender:#c4b5fd;--ui-muted:#655a74;--ui-dim:#d8cfe6;--ui-line:#d8cfe6;
  --ui-experience-font:JFPublicKufi,Arial,sans-serif;
}
html[lang^=en] :is(.jf-public-error,.jf-experience-viewer,.lv-page),
html[lang^=fr] :is(.jf-public-error,.jf-experience-viewer,.lv-page){--ui-experience-font:JFPublicNoto,Arial,sans-serif}

/* The wrapper uses a single flex layout so long/localized labels cannot push
   the scene below the screen or overlap its controls. */
.jf-unified.jf-experience-viewer{
  display:flex;flex-direction:column;height:100vh;height:100dvh;min-height:0;
  background:var(--ui-night);color:var(--ui-paper);font:400 16px/1.7 var(--ui-experience-font);
}
.jf-unified .jf-experience-bar{
  height:auto;min-height:88px;flex:none;gap:24px;
  padding:14px max(24px,3.5vw);padding-top:max(14px,env(safe-area-inset-top));
  background:var(--ui-night);border-bottom:1px solid #c4b5fd40;
}
.jf-unified .jf-experience-back{color:var(--ui-paper);font-size:14px;gap:14px;min-height:44px}
.jf-unified .jf-experience-back>.jf-viewer-logo{width:104px;height:48px}
.jf-unified .jf-experience-back>svg:not(.jf-viewer-logo){width:20px;height:20px;flex-shrink:0}
.jf-unified .jf-experience-label>strong{font-size:16px;line-height:1.6;font-weight:700}
.jf-unified .jf-experience-label>span{font-size:12px;line-height:1.7;color:var(--ui-dim);margin-top:5px}
.jf-unified .jf-experience-label i{background:var(--ui-lavender);width:6px;height:6px;flex-shrink:0}
.jf-unified .jf-experience-switch{font-size:14px;min-width:160px;flex-shrink:0}
.jf-unified .jf-experience-switch>summary{
  min-height:46px;align-items:center;padding:10px 16px;background:var(--ui-ink);
  border:1px solid #c4b5fd66;border-radius:30px;color:var(--ui-paper);
}
.jf-unified .jf-experience-switch>summary::-webkit-details-marker{display:none}
.jf-unified .jf-experience-switch[open]>summary{border-color:var(--ui-lavender)}
.jf-unified .jf-experience-switch nav{
  width:min(330px,calc(100vw - 32px));min-width:0;max-height:min(440px,65dvh);overflow-y:auto;
  padding:8px;background:var(--ui-paper);border:1px solid var(--ui-line);border-radius:16px;
  box-shadow:0 16px 48px #08031a33;
}
.jf-unified .jf-experience-switch nav a{
  font-size:14px;line-height:1.7;min-height:48px;display:flex;align-items:center;
  padding:11px 14px;color:var(--ui-ink);border-radius:10px;
}
.jf-unified .jf-experience-switch nav a:hover{background:var(--ui-dim);color:var(--ui-ink)}
.jf-unified .jf-experience-switch nav a[aria-current]{background:var(--ui-purple);color:var(--ui-paper)}
.jf-unified .jf-experience-stage{height:auto;min-height:0;flex:1;width:100%;background:var(--ui-night)}
.jf-unified .jf-experience-stage iframe{height:100%;background:var(--ui-night)}
.jf-unified .jf-experience-bar :focus-visible{outline:2px solid var(--ui-lavender);outline-offset:4px}
.jf-unified .jf-experience-switch nav :focus-visible{outline-color:var(--ui-purple);outline-offset:-2px}

/* Lavana: the Jodfay introduction and controls only. Model materials,
   environment, exposure and scene background are intentionally untouched. */
.jf-unified.lv-page{background:var(--ui-paper)}
.jf-unified.lv-page .lv-shell{
  max-width:1800px;margin-inline:auto;padding:clamp(120px,11vw,170px) clamp(20px,5vw,88px) 72px;
  color:var(--ui-ink);font-family:var(--ui-experience-font);
}
.jf-unified.lv-page .lv-intro{gap:40px;margin-bottom:32px;align-items:end}
.jf-unified.lv-page .lv-intro h1{font-size:clamp(32px,3.8vw,56px);line-height:1.5;color:var(--ui-ink)}
.jf-unified.lv-page .lv-back{font-size:14px;color:var(--ui-muted);margin-bottom:20px}
.jf-unified.lv-page .lv-eyebrow{font-size:12px;color:var(--ui-purple);line-height:1.8;margin-bottom:14px}
.jf-unified.lv-page .lv-intro>p{font-size:21px;line-height:1.8;color:var(--ui-ink)}
.jf-unified.lv-page .lv-intro>p span{font-size:16px;line-height:1.9;color:var(--ui-muted)}
.jf-unified.lv-page .lv-experience{border-color:var(--ui-line);border-radius:24px;box-shadow:0 16px 48px #08031a08}
.jf-unified.lv-page .lv-bar{background:var(--ui-night);color:var(--ui-paper);padding:18px 24px}
.jf-unified.lv-page .lv-label,.jf-unified.lv-page .lv-live{font-size:12px;line-height:1.6;color:var(--ui-dim)}
.jf-unified.lv-page .lv-cover{background:radial-gradient(ellipse at 50% 0,#c4b5fd55,transparent 70%),var(--ui-paper);gap:14px}
.jf-unified.lv-page .lv-cube{color:var(--ui-purple)}
.jf-unified.lv-page .lv-cover-kicker{font-size:12px;color:var(--ui-muted);letter-spacing:3px}
.jf-unified.lv-page .lv-cover h2{font-size:clamp(27px,3vw,40px);line-height:1.5;color:var(--ui-ink)}
.jf-unified.lv-page .lv-cover p{font-size:16px;line-height:1.9;color:var(--ui-muted);max-width:540px}
.jf-unified.lv-page .lv-cover small{font-size:12px;line-height:1.8;color:var(--ui-muted)}
.jf-unified.lv-page .lv-start{
  min-height:48px;padding:12px 26px;border-radius:30px;background:var(--ui-purple);color:var(--ui-paper);
  font-family:var(--ui-experience-font);font-size:14px;line-height:1.8;font-weight:700;
}
.jf-unified.lv-page .lv-start:hover{background:var(--ui-ink)}
.jf-unified.lv-page .lv-cover progress{accent-color:var(--ui-purple)}
.jf-unified.lv-page .lv-controls{border-color:var(--ui-line);background:var(--ui-paper)}
.jf-unified.lv-page .lv-controls button{border-color:var(--ui-line);background:#fff;color:var(--ui-ink);font-size:14px;min-height:44px;min-width:44px;border-radius:12px}
.jf-unified.lv-page .lv-controls button:is(:hover,[aria-pressed=true]){background:var(--ui-purple);color:var(--ui-paper);border-color:var(--ui-purple)}
.jf-unified.lv-page .lv-tools button[data-zoom]{font-size:24px}
.jf-unified.lv-page .lv-status{font-size:12px;color:var(--ui-muted);border-color:var(--ui-line)}
.jf-unified.lv-page .lv-notes{font-size:14px;color:var(--ui-muted);gap:24px;line-height:1.9;margin-top:24px}
.jf-unified.lv-page .lv-notes a{color:var(--ui-purple)}
.jf-unified.lv-page .lv-shell :focus-visible{outline:2px solid var(--ui-purple);outline-offset:4px}
.jf-unified.lv-page .lv-experience:is(:fullscreen,.lv-expanded){border-radius:0}

/* Tamdon is a client-branded presentation. Only its Jodfay signature uses
   the public identity; no selectors reach the Tamdon header, scene or player. */
body.jf-unified.jf-tamdon-shell{line-height:1.7}
body.jf-unified.jf-tamdon-shell :focus-visible{outline:2px solid var(--gold);outline-offset:5px}
.jf-tamdon-shell .powered-by{
  min-height:36px;border-radius:20px;border-color:#c4b5fd66;background:var(--ui-night);
  color:var(--ui-paper);box-shadow:none;
}
.jf-tamdon-shell .powered-label{color:var(--ui-dim);font-family:JFPublicNoto,Arial,sans-serif}
.jf-tamdon-shell .powered-arrow{color:var(--ui-lavender)}
.jf-tamdon-shell .powered-by:is(:hover,:focus-visible){background:var(--ui-ink);border-color:var(--ui-lavender);box-shadow:none}
body.jf-unified.jf-tamdon-shell .powered-by:focus-visible{outline:2px solid var(--ui-lavender);outline-offset:3px}

/* Public HTTP errors in the normal page shell. */
body.jf-unified.tr-error-page{background:var(--ui-paper);min-height:100svh}
.jf-unified.tr-error-page .tr-err{background:var(--ui-paper);color:var(--ui-ink);padding:clamp(72px,10vw,140px) clamp(20px,5vw,88px);min-height:72svh}
.jf-unified.tr-error-page .tr-err__inner{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(0,1.3fr);align-items:center;gap:clamp(28px,6vw,100px);max-width:1300px;margin:auto;padding:0}
.jf-unified.tr-error-page .tr-err__code{font:700 clamp(84px,14vw,190px)/1.1 JFPublicNoto,Arial,sans-serif;color:var(--ui-purple);background:none;-webkit-text-fill-color:currentColor;letter-spacing:-.06em;opacity:1}
.jf-unified.tr-error-page .tr-err__eyebrow{font-size:12px;color:var(--ui-muted);display:block;margin-bottom:20px;letter-spacing:.1em}
.jf-unified.tr-error-page .tr-err h1{font-size:clamp(32px,3.8vw,56px);line-height:1.5;color:var(--ui-ink);margin:0 0 24px}
.jf-unified.tr-error-page .tr-err p{font-size:16px;line-height:1.9;color:var(--ui-muted);max-width:620px;margin:0 0 32px}
.jf-unified.tr-error-page .tr-err__actions{display:flex;flex-wrap:wrap;gap:12px}
.jf-unified.tr-error-page .tr-err__link{display:inline-flex;align-items:center;justify-content:center;min-height:48px;border:1px solid var(--ui-purple);padding:12px 24px;border-radius:30px;background:var(--ui-purple);color:var(--ui-paper);font-size:14px;font-weight:700;text-decoration:none;line-height:1.8}
.jf-unified.tr-error-page .tr-err__link--ghost{background:transparent;color:var(--ui-ink);border-color:var(--ui-line)}
.jf-unified.tr-error-page .tr-err__link:hover{background:var(--ui-ink);border-color:var(--ui-ink);color:var(--ui-paper)}

/* Standalone 500/CSRF pages must work even when database-backed navigation
   or normal context processors cannot be rendered. */
.jf-public-error{
  margin:0;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;
  background:var(--ui-paper);color:var(--ui-ink);font:400 16px/1.9 var(--ui-experience-font);
}
.jf-public-error *{box-sizing:border-box}
.jf-public-error__header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px clamp(20px,5vw,88px);border-bottom:1px solid var(--ui-line)}
.jf-public-error__brand{display:inline-flex;align-items:center;text-decoration:none}
.jf-public-error__brand img{width:140px;height:auto;display:block}
.jf-public-error__header>a:last-child{color:var(--ui-muted);font-size:14px;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.jf-public-error__main{flex:1;display:flex;align-items:center;width:100%;padding:clamp(40px,8vw,96px) clamp(20px,5vw,88px)}
.jf-public-error__content{width:min(100%,1100px);margin:auto;display:grid;grid-template-columns:minmax(140px,.65fr) minmax(0,1.35fr);align-items:center;gap:clamp(24px,6vw,88px)}
.jf-public-error__code{font:700 clamp(84px,14vw,180px)/1.1 JFPublicNoto,Arial,sans-serif;color:var(--ui-purple);letter-spacing:-.06em}
.jf-public-error h1{font-size:clamp(32px,3.8vw,56px);line-height:1.55;font-weight:700;margin:0 0 24px;text-wrap:balance}
.jf-public-error__main p{font-size:16px;line-height:1.95;color:var(--ui-muted);margin:0 0 32px;max-width:630px}
.jf-public-error__action{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:48px;padding:12px 26px;border:1px solid var(--ui-purple);border-radius:30px;background:var(--ui-purple);color:var(--ui-paper);font-size:14px;font-weight:700;text-decoration:none;line-height:1.8}
.jf-public-error__action:hover{background:var(--ui-ink);border-color:var(--ui-ink)}
.jf-public-error :focus-visible{outline:2px solid var(--ui-purple);outline-offset:5px}
.jf-public-error__footer{padding:20px clamp(20px,5vw,88px);border-top:1px solid var(--ui-line);font-size:12px;color:var(--ui-muted)}

@media(max-width:760px){
  .jf-unified .jf-experience-bar{min-height:104px;padding:12px 16px;gap:10px 16px;flex-wrap:wrap}
  .jf-unified .jf-experience-back{font-size:14px;gap:10px}
  .jf-unified .jf-experience-back>span{display:none}
  .jf-unified .jf-experience-back>.jf-viewer-logo{width:84px;height:38px}
  .jf-unified .jf-experience-switch{min-width:135px;font-size:12px}
  .jf-unified .jf-experience-switch>summary{padding:9px 14px;min-height:44px}
  .jf-unified .jf-experience-label{order:3;flex-basis:100%;display:flex;justify-content:space-between;align-items:center;gap:8px 16px;text-align:start;flex-wrap:wrap}
  .jf-unified .jf-experience-label>strong{font-size:14px;max-width:100%;white-space:normal}
  .jf-unified .jf-experience-label>span{font-size:12px;margin:0}
  .jf-unified.lv-page .lv-shell{padding:120px 20px 48px}
  .jf-unified.lv-page .lv-intro{display:block;margin-bottom:24px}
  .jf-unified.lv-page .lv-intro>p{margin-top:20px;font-size:21px}
  .jf-unified.lv-page .lv-intro>p span{font-size:16px}
  .jf-unified.lv-page .lv-experience{border-radius:16px}
  .jf-unified.lv-page .lv-bar{padding:14px 16px;flex-wrap:wrap;gap:8px}
  .jf-unified.lv-page .lv-label{letter-spacing:1px}
  .jf-unified.lv-page .lv-cover{padding:22px 18px;gap:12px}
  .jf-unified.lv-page .lv-controls{padding:14px 12px}
  .jf-unified.lv-page .lv-notes{display:block;font-size:14px}
  .jf-unified.lv-page .lv-notes a{margin-top:16px}
  .jf-unified.tr-error-page .tr-err__inner,.jf-public-error__content{grid-template-columns:1fr;gap:28px}
  .jf-unified.tr-error-page .tr-err__code,.jf-public-error__code{font-size:88px}
  .jf-public-error__brand img{width:112px}
  .jf-public-error__header{padding-block:18px}
}
@media(max-width:380px){
  .jf-unified .jf-experience-label>span{flex-basis:100%;justify-content:flex-start}
  .jf-unified.lv-page .lv-shell{padding-inline:16px}
  .jf-public-error__header>a:last-child{font-size:12px}
}
@media(prefers-reduced-motion:reduce){
  .jf-unified .jf-experience-bar *,.jf-unified.lv-page .lv-controls button,.jf-tamdon-shell .powered-by{transition:none}
}

/* Public navigation and footer surround each presentation. Only the iframe
   owns a fixed viewport; the document must scroll to its shared footer. */
body.jf-unified.jf-experience-viewer,
body.jf-unified.jf-tamdon-shell{
  display:block;margin:0;height:auto;min-height:100vh;min-height:100svh;
  overflow-x:clip;overflow-y:visible;background:#08031a;
  --footer-edge-background:#08031a;
}
body.jf-unified.jf-tamdon-shell{font:400 16px/1.9 JFPublicKufi,Arial,sans-serif}
body.jf-unified:is(.jf-experience-viewer,.jf-tamdon-shell,.jf-public-error){padding-top:88px}
.jf-experience-main,.jf-tamdon-viewer{width:100%;min-width:0}
.jf-unified .jf-experience-stage{
  flex:none;width:100%;height:clamp(540px,82svh,1100px);min-height:540px;
}
.jf-unified .jf-experience-label>h1{
  margin:0;font:700 16px/1.6 var(--ui-experience-font);color:var(--ui-paper);
}
.jf-tamdon-viewer>iframe{
  display:block;width:100%;height:clamp(620px,90svh,1200px);
  border:0;background:#0d2630;
}
.jf-tamdon-viewer>noscript p{padding:24px;color:#f5f2fa}
.jf-tamdon-viewer>noscript a{color:#c4b5fd}
.jf-public-error__main{min-height:55svh}
@media(max-width:760px){
  body.jf-unified:is(.jf-experience-viewer,.jf-tamdon-shell,.jf-public-error){padding-top:78px}
  .jf-unified .jf-experience-label>h1{font-size:14px;line-height:1.7;max-width:100%}
  .jf-unified .jf-experience-stage{height:78svh;min-height:520px}
  .jf-tamdon-viewer>iframe{height:88svh;min-height:620px}
}
