/* A real architectural model: one lit stage and one readable explanation.
   Loaded last on the homepage; no selectors reach the other page components. */
.viewer-presentation.viewer-shell { margin-top:30px;min-height:0;border:1px solid #78859238;border-radius:18px;background:#202c36;overflow:hidden; }
.viewer-presentation.viewer-shell::before { display:none; }
.viewer-presentation .ev { display:grid;grid-template-columns:340px minmax(0,1fr);grid-template-rows:auto minmax(620px,auto);height:auto;margin:0;border-radius:0;background:#202c36;--bg:#202c36;--text:#edf0ec;--muted:#adbac5; }
.viewer-presentation .ev[hidden] { display:none; }
.viewer-presentation .ev__layers { grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;padding:0 30px;background:#18232d;border-bottom:1px solid #96a5b22c; }
.viewer-presentation .ev__layers button { display:grid;grid-template-columns:30px 1fr;gap:7px 14px;align-content:center;min-height:100px;padding:19px 24px;border:0;border-bottom:2px solid transparent;margin:0;color:#8e9eac;text-align:left; }
.viewer-presentation .ev__layers button+button { border-left:1px solid #96a5b219; }
.viewer-presentation .ev__layers button b { grid-row:1/3;margin:3px 0 0;font:12px/1.5 var(--sans);letter-spacing:.05em;opacity:1; }
.viewer-presentation .ev__layers .ev__layer-name { font-size:18px;line-height:1.4;letter-spacing:0; }
.viewer-presentation .ev__layers .ev__layer-name>span { font:inherit;letter-spacing:inherit; }
.viewer-presentation .ev__layers button small { grid-column:2;font-size:12px;line-height:1.5;color:#8395a4; }
.viewer-presentation .ev__layers button.on { border-bottom-color:var(--gold);background:color-mix(in srgb,var(--gold) 2.75%,transparent);color:#f0efe9; }
.viewer-presentation .ev__layers button.on b,.viewer-presentation .ev__layers button.on small { color:var(--gold); }
.viewer-presentation .ev__layers button:hover { color:#edf0ec;background:#ffffff04; }
.viewer-presentation .ev__stage { grid-column:2;grid-row:2;position:relative;min-width:0;min-height:620px;overflow:hidden;background:radial-gradient(ellipse at 48% 40%,#475864 0%,#2c3d49 45%,#202c36 83%); }
.viewer-presentation .ev__gl { inset:0;width:100%;height:100%;border-radius:0;touch-action:pan-y; }
.viewer-presentation .ev__gl:focus-visible { outline:2px solid var(--gold);outline-offset:-4px; }
.viewer-presentation .ev__stage-heading { position:absolute;z-index:2;inset:24px 28px auto;display:flex;justify-content:space-between;gap:15px;pointer-events:none;font-size:11px;line-height:1.7;letter-spacing:.025em;color:#b3c1c9; }
.viewer-presentation .ev__stage-mode { color:var(--gold); }
.viewer-presentation .ev__stage-legend { position:absolute;z-index:2;bottom:24px;left:28px;max-width:calc(100% - 140px);display:flex;align-items:center;gap:10px;margin:0;pointer-events:none;font-size:12px;line-height:1.6;color:#d4d4c9; }
.viewer-presentation .ev__legend-mark { width:21px;height:2px;background:var(--gold);flex:none; }
.viewer-presentation .ev__panel { position:relative;grid-column:1;grid-row:2;inset:auto;width:auto;height:auto;min-width:0;display:flex;padding:30px 27px 24px;background:#202c36;border-right:1px solid #96a5b21c;border-radius:0;pointer-events:auto; }
.viewer-presentation .ev__panel::before { display:none; }
.viewer-presentation .ev__eyebrow { margin:0 0 12px;color:#8fa2b0;font:11px/1.7 var(--sans);letter-spacing:.04em; }
.viewer-presentation .ev__focus-title { margin:0 0 13px;color:#eceee8;font:500 25px/1.45 var(--sans);letter-spacing:-.015em; }
.viewer-presentation .ev__outcome { min-height:0;margin:0 0 25px;color:#b9c5cc;font-size:15px;line-height:1.8; }
.viewer-presentation .ev__systems-label { margin:0 0 11px;color:#8fa2b0;font-size:11px;line-height:1.7; }
.viewer-presentation .ev__rows { border-top:1px solid #b9c5cc26; }
.viewer-presentation .ev__row { min-height:0;padding:0;border-color:#b9c5cc26; }
.viewer-presentation .ev__row button { min-height:45px;padding:10px 8px 10px 0;gap:12px; }
.viewer-presentation .ev__row .ev__zh { font-size:15px;line-height:1.6; }
.viewer-presentation .ev__row .ev__dot { width:3px;height:16px;border-radius:0;background:#8092a050; }
.viewer-presentation .ev__row.on { color:var(--gold);background:color-mix(in srgb,var(--gold) 2.75%,transparent); }
.viewer-presentation .ev__row.on .ev__dot { box-shadow:none;background:var(--gold); }
.viewer-presentation .ev__system-detail { margin:15px 0 20px;color:#aebdc7;font-size:13px;line-height:1.8;min-height:70px; }
.viewer-presentation .ev__sim { min-height:45px;padding:11px 0;color:var(--gold);font-size:13px;line-height:1.6;border-top:1px solid #b9c5cc26;border-bottom:1px solid #b9c5cc26; }
.viewer-presentation .ev__sim::before { width:0;height:0;border-radius:0;background:none;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:7px solid var(--gold); }
.viewer-presentation .ev__sim:hover { background:color-mix(in srgb,var(--gold) 2.75%,transparent);color:var(--gold); }
.viewer-presentation .ev__stages { margin-top:11px; }
.viewer-presentation .ev__stages li { font-size:11px; }
.viewer-presentation .ev__panel-foot { margin-top:auto;padding-top:22px; }
.viewer-presentation .ev__hint { margin:0;padding:0;color:#8196a6;font-size:11px;line-height:1.7; }
.viewer-presentation .viewer-reset { margin:10px 0 0;padding:2px 0;font-size:12px;line-height:1.8;color:#bdcad1;border-color:#899eac66; }
.viewer-presentation .ev__note .ev__row { padding:12px 0; }
.viewer-presentation .ev__note .ev__hold { margin:15px 0 0;font-size:14px;line-height:1.85;color:#b9c5cc; }
.viewer-presentation .ev__note .ev__hold--dim { color:#8fa2b0;font-size:12px; }
.viewer-presentation .ev__zoom { right:24px;bottom:20px;gap:7px; }
.viewer-presentation .ev__zoom button { width:38px;height:38px;border-radius:50%;background:#1c2b35cc;border-color:#b1c2cb55;color:#d4dee0; }
.viewer-presentation .viewer-fallback { min-height:620px;padding:36px 28px;background:radial-gradient(ellipse at 50% 45%,#354753,#202c36 75%); }
.viewer-presentation .viewer-fallback .viewer-fallback__eyebrow { color:var(--gold);font-size:12px;letter-spacing:.05em; }
.viewer-presentation.viewer-loading .ev { opacity:0; }
.viewer-presentation.viewer-loading .viewer-fallback { height:100%; }
.viewer-presentation button:focus-visible { outline:2px solid var(--gold);outline-offset:3px; }
@media(max-width:1050px) {
  .viewer-presentation .ev { grid-template-columns:295px minmax(0,1fr); }
  .viewer-presentation .ev__panel { padding:25px 22px; }
  .viewer-presentation .ev__layers { padding-inline:15px; }
  .viewer-presentation .ev__layers button { padding-inline:18px; }
  .viewer-presentation .ev__stage-heading { inset-inline:20px; }
  .viewer-presentation .ev__stage-heading>span:first-child { max-width:15em; }
}
@media(max-width:800px) {
  .viewer-presentation .ev { display:flex;flex-direction:column;grid-template-columns:none;height:auto;margin:0;overflow:hidden; }
  .viewer-presentation .ev__layers { order:0;padding:0 15px; }
  .viewer-presentation .ev__layers button { display:flex;flex-direction:column;gap:7px;min-height:104px;padding:15px 10px; }
  .viewer-presentation .ev__layers button b { margin:0;font-size:10px; }
  .viewer-presentation .ev__layers .ev__layer-name { font-size:15px; }
  .viewer-presentation .ev__layers button small { display:none; }
  .viewer-presentation .ev__stage { order:1;height:390px;min-height:390px; }
  .viewer-presentation .ev__panel { order:2;position:relative;top:auto;left:auto;bottom:auto;width:100%;height:auto;border-right:0;border-top:1px solid #96a5b22c;display:flex;padding:26px;background:#202c36; }
  .viewer-presentation .ev__outcome { margin-bottom:21px; }
  .viewer-presentation .ev__system-detail { min-height:0;margin-bottom:20px;font-size:14px; }
  .viewer-presentation .ev__panel-foot { padding-top:20px; }
  .viewer-presentation .ev__stage-heading { font-size:10px; }
  .viewer-presentation .ev__stage-mode { display:none; }
}
@media(max-width:500px) {
  .viewer-presentation.viewer-shell { border-radius:14px; }
  .viewer-presentation .ev__stage { height:320px;min-height:320px; }
  .viewer-presentation .ev__panel { padding:24px 20px; }
  .viewer-presentation .ev__layers { padding-inline:8px; }
  .viewer-presentation .ev__layers button { min-height:93px;padding:13px 9px; }
  .viewer-presentation .ev__layers .ev__layer-name { font-size:14px; }
  .viewer-presentation .ev__focus-title { font-size:24px; }
  .viewer-presentation .ev__stage-heading { inset:17px 17px auto; }
  .viewer-presentation .ev__stage-legend { left:17px;bottom:18px;font-size:10px; }
  .viewer-presentation .ev__zoom { right:13px;bottom:12px; }
  .viewer-presentation .ev__zoom button { width:33px;height:33px; }
  .viewer-presentation .viewer-fallback { min-height:460px;padding:27px 20px; }
}
@media(prefers-reduced-motion:reduce) {
  .viewer-presentation * { animation:none!important;transition:none!important; }
}

/* 0908: actual-location captions and deliberate front/rear/entrance views. */
.viewer-presentation .ev__viewpoints{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 16px;padding:0}
.viewer-presentation .ev__viewpoints[hidden]{display:none}
.viewer-presentation .ev__viewpoints button{border:1px solid rgba(210,180,127,.3);border-radius:5px;padding:9px 11px;background:transparent;color:#b9c4cc;font:inherit;font-size:12px;line-height:1.35;min-height:36px;cursor:pointer}
.viewer-presentation .ev__viewpoints button[aria-pressed="true"]{color:var(--gold);border-color:var(--gold);background:rgba(210,180,127,.09)}
.viewer-presentation .ev__viewpoints button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.viewer-presentation .ev__site-marker{position:absolute;z-index:4;pointer-events:none;transform:translate(-50%,calc(-100% - 20px));padding:6px 9px;max-width:170px;border:1px solid rgba(225,192,136,.64);border-radius:4px;background:rgba(24,35,45,.94);color:var(--gold);font-size:12px;font-weight:500;line-height:1.4;letter-spacing:.02em;text-align:center;box-shadow:0 3px 12px rgba(9,18,26,.14)}
.viewer-presentation .ev__site-marker[hidden]{display:none}
.viewer-presentation .ev__site-marker:before{content:"";position:absolute;left:50%;top:100%;height:16px;width:1px;background:var(--gold)}
.viewer-presentation .ev__site-marker:after{content:"";position:absolute;left:calc(50% - 3px);top:calc(100% + 16px);width:6px;height:6px;border:1px solid #ffedc8;border-radius:50%;background:var(--gold);box-shadow:0 0 8px rgba(235,198,128,.48)}
@media(max-width:800px){.viewer-presentation .ev__viewpoints button{min-height:40px;font-size:13px}.viewer-presentation .ev__site-marker{font-size:11px;max-width:145px;padding:5px 7px}}
.viewer-presentation .ev__site-marker.is-side[data-align="left"]{transform:translate(calc(-100% - 20px),-50%)}
.viewer-presentation .ev__site-marker.is-side[data-align="left"]:before{left:100%;top:50%;height:1px;width:16px}
.viewer-presentation .ev__site-marker.is-side[data-align="left"]:after{left:calc(100% + 16px);top:calc(50% - 3px)}
.viewer-presentation .ev__site-marker.is-side[data-align="right"]{transform:translate(20px,-50%)}
.viewer-presentation .ev__site-marker.is-side[data-align="right"]:before{left:auto;right:100%;top:50%;height:1px;width:16px}
.viewer-presentation .ev__site-marker.is-side[data-align="right"]:after{left:auto;right:calc(100% + 16px);top:calc(50% - 3px)}
/* Short desktop screens keep the complete model and controls in one section. */
@media(min-width:901px) and (max-height:950px){
  .viewer-presentation .ev{grid-template-columns:420px minmax(0,1fr);grid-template-rows:auto minmax(500px,auto)}
  .viewer-presentation .ev__layers{padding-inline:12px}
  .viewer-presentation .ev__layers button{min-height:64px;padding:9px 17px;gap:2px 10px}
  .viewer-presentation .ev__layers .ev__layer-name{font-size:16px}
  .viewer-presentation .ev__layers button small{font-size:11px;line-height:1.3}
  .viewer-presentation .ev__stage{min-height:500px}
  .viewer-presentation .ev__panel{padding:16px 18px}
  .viewer-presentation .ev__eyebrow{margin-bottom:5px;font-size:10px;line-height:1.4}
  .viewer-presentation .ev__focus-title{font-size:22px;line-height:1.25;margin-bottom:9px}
  .viewer-presentation .ev__outcome{font-size:14px;line-height:1.55;margin-bottom:12px}
  .viewer-presentation .ev__systems-label{margin-bottom:6px;line-height:1.4}
  .viewer-presentation [data-ev="rows"]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}
  .viewer-presentation .ev__row button{min-height:35px;padding:7px 0;gap:7px}
  .viewer-presentation .ev__row .ev__zh{font-size:14px;line-height:1.4;letter-spacing:0}
  .viewer-presentation .ev__system-detail{min-height:0;font-size:14px;line-height:1.55;margin:10px 0 0}
  .viewer-presentation .ev__viewpoints{margin:10px 0 0;gap:7px}
  .viewer-presentation .ev__viewpoints button{font-size:14px;min-height:32px;padding:6px 9px}
  .viewer-presentation .ev__sim{min-height:35px;margin-top:12px;padding:7px 0}
  .viewer-presentation .ev__panel-foot{padding-top:10px}
  .viewer-presentation .ev__hint{font-size:11px;line-height:1.45}
  .viewer-presentation .viewer-reset{font-size:12px;margin-top:5px;line-height:1.45}
  .viewer-presentation .ev__note .ev__row{padding:8px 0}
  .viewer-presentation .ev__note .ev__hold{font-size:14px;line-height:1.55;margin-top:10px}
  .viewer-presentation .ev__note .ev__hold--dim{font-size:12px}
  .viewer-presentation .viewer-fallback{min-height:500px}
}

/* 0909: the fallback illustration is reserved for failure. While the model is
   on its way the shell holds its own height and shows only the status line, so
   nothing is drawn and then replaced under the reader. */
.viewer-presentation .viewer-fallback { display:none; }
.viewer-presentation.viewer-manual .viewer-fallback,
.viewer-presentation.viewer-failed .viewer-fallback { display:flex; }
.viewer-presentation .viewer-fallback[hidden] { display:none; }
/* The stage holds its height from the first painted frame, before the deferred
   script has run, so a slow connection shows a waiting stage rather than a
   collapsed section that later pushes the page down. */
.viewer-presentation.viewer-shell { min-height:720px; }
.viewer-presentation.viewer-ready,
.viewer-presentation.viewer-manual,
.viewer-presentation.viewer-failed { min-height:0; }
.viewer-presentation.viewer-pending,
.viewer-presentation.viewer-loading { position:relative;background:radial-gradient(ellipse at 48% 42%,#2f404c,#202c36 78%); }
.viewer-presentation #viewer-status { margin:0;color:#a9b8c1;font-size:13px;line-height:1.8;text-align:center; }
.viewer-presentation.viewer-pending #viewer-status,
.viewer-presentation.viewer-loading #viewer-status { position:absolute;z-index:6;inset:auto 32px 50%;transform:translateY(50%);pointer-events:none; }
.viewer-presentation.viewer-ready #viewer-status { display:none; }
.viewer-presentation .ev { transition:opacity .45s ease; }
.viewer-presentation.viewer-ready .ev { opacity:1; }
/* The text layer summary stands in for the model; keep it out while the model
   is arriving so it is not shown and then withdrawn. */
.viewer-pending~.home-layer-strip,
.viewer-loading~.home-layer-strip { display:none; }
@media(max-width:800px) { .viewer-presentation.viewer-shell { min-height:620px; } }
@media(max-width:500px) { .viewer-presentation.viewer-shell { min-height:540px; } }
@media(min-width:901px) and (max-height:950px) { .viewer-presentation.viewer-shell { min-height:600px; } }
