/* Self-hosted, SIL Open Font License 1.1 (Google Fonts, read 2026-10-23). */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400 700;font-display:block;src:url(fonts/Montserrat-var.woff2) format('woff2')}
@font-face{font-family:'Libre Baskerville';font-style:normal;font-weight:700;font-display:block;src:url(fonts/LibreBaskerville-700.woff2) format('woff2')}

  /* The approved mobile immersive gallery (T13_MOCKUP_IMMERSIVE_GALLERY_MOBILE_v1), as the WordPress page template.
     Sizes are rem on a 390 px phone: 1rem = 16px at 390 wide, so the same layout fills any portrait screen. */
  :root{
    --night:#07000F; --plum:#130030; --plum-2:#22094A; --line:#2A1150;
    --orchid:#DE85F7; --blue:#4782C6; --slate:#617BA5; --chalk:#FAF8F6; --mist:#E9EAEE;
    --ease-out:cubic-bezier(.16,1,.3,1);
  }
  html{font-size:min(calc(100vw / 24.375), calc(100vh / 52.75));background:var(--night);color:var(--chalk);
       -webkit-tap-highlight-color:transparent}
  body{margin:0;height:100vh;height:100dvh;overflow:hidden;font-family:Montserrat,sans-serif;touch-action:none;user-select:none}
  ::selection{background:var(--orchid);color:var(--plum)}
  button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
  button:focus-visible{outline:.125rem solid var(--orchid);outline-offset:.1875rem}
  svg{display:block;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}

  #stage{position:fixed;inset:0;width:100%;height:100%;display:block}
  .ui{position:fixed;inset:0;pointer-events:none}
  .ui > *{pointer-events:auto}

  /* top bar */
  .top{position:absolute;left:1rem;right:1rem;top:3.25rem;display:flex;align-items:center;gap:.625rem}
  .round{width:2.75rem;height:2.75rem;border-radius:50%;display:grid;place-items:center;
         background:rgb(19 0 48 / .72);box-shadow:inset 0 0 0 .0625rem rgb(250 248 246 / .2);backdrop-filter:blur(.75rem)}
  .round svg{width:1.25rem;height:1.25rem}
  .grow{flex:1}
  .cart{height:2.75rem;padding:0 1.125rem;border-radius:1.375rem;background:var(--orchid);color:var(--plum);
        font-weight:700;font-size:.875rem;display:flex;align-items:center;gap:.5rem;transition:transform .25s var(--ease-out)}
  .cart svg{width:1.125rem;height:1.125rem}
  .cart.bump{transform:scale(1.12)}
  .hud{position:absolute;left:0;right:0;top:6.75rem;text-align:center;pointer-events:none}
  .hud b{display:block;font-size:.75rem;letter-spacing:.1875rem;font-weight:700}
  .hud span{display:block;margin-top:.3125rem;font-size:.75rem;color:var(--orchid);transition:opacity .3s}

  /* lower controls */
  .lower{position:absolute;left:1rem;right:1rem;bottom:1.5rem;display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;transition:transform .5s var(--ease-out),opacity .35s}
  .lower.away{transform:translateY(2rem);opacity:0;pointer-events:none}
  .row{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:.75rem}
  .pill{height:2.25rem;padding:0 .875rem;border-radius:1.125rem;display:flex;align-items:center;gap:.5rem;font-size:.8125rem;font-weight:600;
        background:rgb(19 0 48 / .72);box-shadow:inset 0 0 0 .0625rem rgb(250 248 246 / .2);backdrop-filter:blur(.75rem)}
  .pill svg{width:1rem;height:1rem}
  .hint{font-size:.75rem;font-weight:500;color:var(--mist);text-shadow:0 .0625rem .5rem rgb(7 0 15 / .9)}
  .rooms{height:3rem;border-radius:1.5rem;display:flex;align-items:center;gap:.25rem;padding:0 .375rem;
         background:rgb(19 0 48 / .8);box-shadow:inset 0 0 0 .0625rem rgb(250 248 246 / .2);backdrop-filter:blur(1rem)}
  .rooms .step{width:2rem;height:2rem;flex:none;border-radius:50%;background:var(--plum-2);display:grid;place-items:center}
  .rooms .step svg{width:1rem;height:1rem}
  .chips{flex:1;min-width:0;display:flex;gap:.25rem;overflow-x:auto;scrollbar-width:none;scroll-behavior:smooth;
         mask-image:linear-gradient(90deg,transparent 0,#000 .5rem,#000 calc(100% - 1.5rem),transparent)}
  .chips::-webkit-scrollbar{display:none}
  .chip{flex:none;height:2rem;padding:0 .875rem;border-radius:1rem;font-size:.8125rem;font-weight:500;color:var(--mist);
        transition:background .3s,color .3s}
  .chip[aria-current="true"]{background:var(--orchid);color:var(--plum);font-weight:600}
  .note{font-size:.75rem;text-align:center;color:var(--slate)}

  /* bottom sheet */
  .sheet{position:absolute;left:0;right:0;bottom:0;padding:.625rem 1.25rem 1.5rem;border-radius:1.5rem 1.5rem 0 0;
         background:rgb(19 0 48 / .94);box-shadow:0 -.75rem 2.5rem rgb(7 0 15 / .6),inset 0 .0625rem 0 rgb(222 133 247 / .4);
         backdrop-filter:blur(1.5rem);transform:translateY(105%);transition:transform .55s var(--ease-out)}
  .sheet.open{transform:none}
  .handle{width:2.5rem;height:.25rem;border-radius:.125rem;background:var(--slate);margin:0 auto 1rem}
  .sheet .close{position:absolute;right:.75rem;top:.75rem;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;color:var(--mist)}
  .sheet .close svg{width:1.125rem;height:1.125rem}
  .where{font-size:.75rem;font-weight:600;letter-spacing:.09375rem;color:var(--orchid);text-transform:uppercase}
  .sheet h2{margin:.5rem 0 .375rem;font-size:1.5rem;font-weight:700;letter-spacing:.02rem;line-height:1.1;text-wrap:balance}
  .by{font-size:.875rem;font-weight:500;color:var(--mist)}
  .desc{margin:.75rem 0 .5rem;font-size:.8125rem;line-height:1.45;color:var(--mist);max-width:34ch}
  .facts{font-size:.75rem;color:var(--slate)}
  .price{margin:.875rem 0 .875rem;font-size:1.625rem;font-weight:700;color:var(--orchid);font-variant-numeric:tabular-nums}
  .add{width:100%;height:3.25rem;border-radius:1.625rem;background:var(--orchid);color:var(--plum);font-weight:700;font-size:.9375rem;letter-spacing:.0625rem;
       box-shadow:0 .5rem 1.25rem rgb(7 0 15 / .55);transition:transform .2s var(--ease-out)}
  .add:active{transform:scale(.98)}
  .pair{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.75rem}
  .ghost{height:2.75rem;border-radius:1.375rem;box-shadow:inset 0 0 0 .09375rem var(--chalk);font-weight:600;font-size:.875rem;
         display:flex;align-items:center;justify-content:center;gap:.5rem}
  .ghost svg{width:1rem;height:1rem}
  .ghost[aria-pressed="true"]{background:var(--chalk);color:var(--plum)}

  /* map */
  .map{position:absolute;left:1rem;right:1rem;top:13rem;padding:1rem;border-radius:1.25rem;background:rgb(19 0 48 / .92);
       box-shadow:0 1rem 2.5rem rgb(7 0 15 / .55),inset 0 0 0 .0625rem rgb(250 248 246 / .2);backdrop-filter:blur(1rem);
       transform-origin:1.5rem 100%;transform:scale(.9) translateY(1rem);opacity:0;pointer-events:none;transition:transform .45s var(--ease-out),opacity .3s}
  .map.open{transform:none;opacity:1;pointer-events:auto}
  .map h3{margin:0 0 .75rem;font-size:.75rem;font-weight:600;letter-spacing:.125rem;color:var(--mist)}
  .grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}
  .cell{min-width:0;font-size:.6875rem !important;letter-spacing:-.01em;text-align:left;line-height:1.15}
  .cell{aspect-ratio:1;border-radius:.5rem;background:var(--plum-2);box-shadow:inset 0 0 0 .0625rem var(--slate);
        display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;padding:.375rem;font-size:.75rem;font-weight:600;color:var(--mist);position:relative}
  .cell[aria-current="true"]{background:var(--orchid);color:var(--plum);box-shadow:none}
  .cell[aria-current="true"]::before{content:"";position:absolute;left:.4375rem;top:.4375rem;width:.625rem;height:.625rem;border-radius:50%;
        background:var(--plum);box-shadow:0 0 0 .125rem var(--chalk)}

  /* toast */
  .toast{position:absolute;left:50%;top:13rem;transform:translate(-50%,-.75rem);opacity:0;padding:.75rem 1.125rem;border-radius:1.375rem;
         background:var(--chalk);color:var(--plum);font-size:.8125rem;font-weight:600;white-space:nowrap;display:flex;gap:.5rem;align-items:center;
         box-shadow:0 .5rem 1.5rem rgb(7 0 15 / .5);transition:transform .45s var(--ease-out),opacity .3s;pointer-events:none}
  .toast svg{width:1rem;height:1rem;color:var(--orchid);stroke-width:2.25}
  .toast.on{transform:translate(-50%,0);opacity:1}

  /* entry portal */
  .portal{position:fixed;inset:0;display:grid;place-items:center;align-content:center;gap:2.25rem;padding:0 1.5rem;
          background:radial-gradient(circle at 50% 42%, #3B1470 0, #130030 45%, var(--night) 80%);transition:opacity .9s var(--ease-out)}
  .portal.gone{opacity:0;pointer-events:none}
  .rings{width:16rem;height:16rem;position:relative;transition:transform 1.1s cubic-bezier(.7,0,.84,0)}
  .portal.gone .rings{transform:scale(9)}
  .rings i{position:absolute;inset:0;margin:auto;border-radius:50%;border:.75rem solid var(--chalk);animation:breathe 4s var(--ease-out) infinite}
  .rings i:nth-child(2){width:74%;height:74%;border-color:var(--orchid);animation-delay:.25s}
  .rings i:nth-child(3){width:48%;height:48%;animation-delay:.5s}
  .rings i:nth-child(4){width:24%;height:24%;border-color:var(--orchid);background:var(--plum);border-width:.5625rem;animation-delay:.75s}
  .rings em{position:absolute;inset:0;display:grid;place-items:center;font-style:normal;font-weight:700;font-size:1.375rem}
  @keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
  .portal h1{margin:0;font-family:'Libre Baskerville',serif;font-weight:700;font-size:2.625rem;line-height:1.08;letter-spacing:-.06rem;text-align:center}
  .portal p{margin:-1rem 0 0;font-size:.9375rem;line-height:1.5;color:var(--mist);text-align:center;max-width:20rem}
  .enter{height:3.25rem;padding:0 2rem;border-radius:1.625rem;background:var(--orchid);color:var(--plum);font-weight:700;letter-spacing:.0625rem;font-size:.9375rem;
         box-shadow:0 .75rem 2rem rgb(7 0 15 / .6)}
  .loading{font-size:.75rem;color:var(--slate)}

  @media (prefers-reduced-motion: reduce){ *{animation:none!important;transition-duration:.01s!important} }

  /* WordPress: the admin bar sits over the top bar; keep the gallery full screen under it. */
  body.admin-bar .top{top:calc(3.25rem + 32px)} body.admin-bar .hud{top:calc(6.75rem + 32px)}
  .sample{display:inline-block;margin-left:.375rem;padding:.0625rem .375rem;border-radius:.25rem;background:var(--plum-2);color:var(--orchid);font-weight:600}
  .add[disabled]{background:var(--plum-2);color:var(--mist);box-shadow:none;cursor:default}
  .error{position:fixed;inset:auto 1rem 2rem;padding:1rem;border-radius:1rem;background:var(--chalk);color:var(--plum);font-size:.875rem}
  /* The page's own colours, whatever the theme sets on body. */
  body.t13g-page{margin:0;background:var(--night);color:var(--chalk);font-family:Montserrat,sans-serif}
  .t13g-page :where(h1,h2,h3,p,b,span){color:inherit}
  /* Zoom viewer */
  .zv{position:fixed;inset:0;z-index:50;background:var(--night);opacity:0;transition:opacity .45s var(--ease-out);touch-action:none}
  .zv.on{opacity:1}
  .zv-stage{position:absolute;inset:6.5rem 0 7rem;display:grid;place-items:center;overflow:hidden;cursor:zoom-in}
  .zv.zoomed .zv-stage{cursor:zoom-out}
  .zv-img{max-width:none;max-height:none;transform-origin:50% 50%;will-change:transform;user-select:none;-webkit-user-drag:none}
  .zv-close{position:absolute;top:3.25rem;right:1rem}
  .zv-bar{position:absolute;left:50%;bottom:3.25rem;transform:translateX(-50%);display:flex;align-items:center;gap:.5rem;padding:.375rem;border-radius:1.75rem;
    background:rgb(19 0 48 / .85);box-shadow:inset 0 0 0 .0625rem rgb(250 248 246 / .2)}
  .zv-btn{width:2.75rem;height:2.75rem;border-radius:50%;display:grid;place-items:center;font-size:1.375rem;font-weight:600;color:var(--chalk);background:var(--plum-2)}
  .zv-btn[disabled]{opacity:.35;cursor:default}
  .zv-close.zv-btn{font-size:1rem}
  .zv-level{min-width:3.5rem;text-align:center;font-size:.875rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--mist)}
  .zv-hint{position:absolute;left:1rem;right:1rem;bottom:1.25rem;margin:0;text-align:center;font-size:.75rem;color:var(--mist);transition:opacity .3s}
  .zv-hint.gone{opacity:0}
