/* 3D Museum: everything laid over the canvas (storage/gifts/museum-3d.html). */
:root{--mu-accent:#B08D57;--mu-glass:rgba(24,20,24,.62);--mu-line:rgba(255,255,255,.14)}
html,body{margin:0;height:100%;overflow:hidden;background:#14121A;color:#fff;font-family:'DM Sans',system-ui,sans-serif;-webkit-text-size-adjust:100%;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none !important}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;touch-action:manipulation}
#muStage{position:fixed;inset:0;width:100%;height:100%;display:block;outline:0}

.mu-lens{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 46%,rgba(0,0,0,0) 55%,rgba(18,10,12,.3) 100%)}
.mu-load{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:#14121A}
.mu-load-in{text-align:center}
.mu-load svg{width:56px;fill:#D8BC78;animation:muPulse 1.5s ease-in-out infinite}
.mu-load p{margin:12px 0 0;font:500 20px 'Playfair Display',serif;color:#EDE3D2}
@keyframes muPulse{50%{opacity:.45;transform:translateY(-3px)}}

/* in front of the gate */
.mu-gatebox{position:fixed;z-index:50;left:0;right:0;bottom:0;padding:90px 22px calc(26px + env(safe-area-inset-bottom));text-align:center;background:linear-gradient(to top,rgba(12,8,12,.92) 0,rgba(12,8,12,.74) 52%,rgba(12,8,12,0) 100%);transition:opacity .5s,transform .5s;animation:muRise .9s cubic-bezier(.2,.9,.3,1) both}
@keyframes muRise{from{opacity:0;transform:translateY(22px)}}
.mu-gatebox.is-gone{opacity:0;transform:translateY(26px);pointer-events:none}
.mu-gatebox small{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#E9CF98}
.mu-gatebox h1{margin:10px auto 6px;max-width:560px;font:600 clamp(30px,8.6vw,46px)/1.1 'Playfair Display',serif;color:#FFF7E6;overflow-wrap:anywhere}
.mu-gatebox p{margin:0;color:rgba(255,247,230,.76);font-size:15px}
.mu-gatebox button{display:block;width:min(100%,340px);margin:18px auto 0;padding:16px 20px;border-radius:999px;background:linear-gradient(180deg,#F2D78F,#D8AE5A);color:#2A1C0B;font-weight:700;font-size:17px;box-shadow:0 10px 30px rgba(216,174,90,.42);animation:muGlow 2.4s ease-in-out infinite}
.mu-gatebox button:active{transform:scale(.98)}
@keyframes muGlow{50%{box-shadow:0 10px 44px rgba(242,215,143,.8)}}
.mu-gatebox em{display:block;margin-top:10px;font-style:normal;font-size:12px;color:rgba(255,247,230,.6)}
.mu-skip{position:fixed;z-index:45;right:14px;top:calc(14px + env(safe-area-inset-top));padding:9px 15px;border-radius:999px;background:var(--mu-glass);border:1px solid var(--mu-line);font-size:13px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .4s}
html.mu-intro .mu-skip{opacity:1;pointer-events:auto}

.mu-fade{position:fixed;inset:0;z-index:30;background:#100D12;opacity:0;pointer-events:none;transition:opacity .3s}
.mu-fade.is-on{opacity:1}

/* top row */
.mu-top{position:fixed;z-index:20;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:calc(12px + env(safe-area-inset-top)) 12px 0;pointer-events:none}
.mu-top>*{pointer-events:auto}
.mu-chip{display:flex;align-items:center;gap:8px;max-width:calc(100vw - 80px);height:40px;padding:0 15px 0 5px;border-radius:999px;background:var(--mu-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--mu-line);font-weight:600;font-size:14px}
.mu-chip b{display:grid;place-items:center;min-width:30px;height:30px;padding:0 6px;border-radius:999px;background:var(--mu-accent);color:#fff;font-size:12px}
.mu-chip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mu-ic{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--mu-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--mu-line)}
.mu-ic svg{width:21px;height:21px;fill:#fff}

/* the dock */
.mu-dock{position:fixed;z-index:20;right:10px;bottom:calc(26px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:2px;padding:4px;border-radius:16px;background:var(--mu-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--mu-line)}
.mu-dock button{width:48px;padding:6px 0 5px;border-radius:13px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;font-weight:600;color:#F2ECE2}
.mu-dock button svg{width:19px;height:19px;fill:currentColor}
.mu-dock button:active{background:rgba(255,255,255,.14)}
.mu-dock button.is-on{background:var(--mu-accent);color:#fff}

/* sheets */
.mu-sheet{position:fixed;z-index:25;right:68px;bottom:calc(26px + env(safe-area-inset-bottom));width:min(calc(100vw - 92px),252px);max-height:64vh;overflow:auto;padding:10px;border-radius:18px;background:rgba(22,18,22,.86);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--mu-line);touch-action:pan-y}
.mu-sheet h3{margin:4px 6px 8px;font:600 16px 'Playfair Display',serif}
.mu-row{display:flex;align-items:center;gap:8px;width:100%;padding:11px 10px;border-radius:11px;text-align:left;font-size:14px;font-weight:500}
.mu-row:active,.mu-row.is-on{background:rgba(255,255,255,.14)}
.mu-row b{font-size:11px;color:#FFE2A8;min-width:22px}
.mu-row span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mu-row small{opacity:.65;font-size:11px;white-space:nowrap}
.mu-row--off{margin-top:6px;border-top:1px solid var(--mu-line);border-radius:0 0 11px 11px;opacity:.85}

/* joystick */
.mu-joy{position:fixed;z-index:20;left:calc(22px + env(safe-area-inset-left));bottom:calc(30px + env(safe-area-inset-bottom));width:124px;height:124px;border-radius:50%;background:rgba(20,16,20,.34);border:2px solid rgba(255,255,255,.34);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;touch-action:none}
.mu-joy.is-on{background:rgba(20,16,20,.48)}
.mu-knob{width:54px;height:54px;border-radius:50%;background:rgba(255,255,255,.9);box-shadow:0 5px 16px rgba(0,0,0,.28);pointer-events:none}

/* tour bar */
.mu-tourbar{position:fixed;z-index:22;left:50%;transform:translateX(-50%);bottom:calc(24px + env(safe-area-inset-bottom));display:none;align-items:center;gap:3px;padding:5px;border-radius:999px;background:var(--mu-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--mu-line)}
.mu-tourbar button{min-width:42px;height:40px;padding:0 10px;border-radius:999px;display:grid;place-items:center;font-size:13px;font-weight:700}
.mu-tourbar svg{width:18px;height:18px;fill:#fff}
.mu-tourbar button.is-on{background:#fff;color:#2B2622}
.mu-tourbar .mu-stop{background:#D0404F;color:#fff;padding:0 15px}

/* the card that comes up by a photo */
.mu-card{position:fixed;z-index:19;left:50%;bottom:calc(168px + env(safe-area-inset-bottom));transform:translate(-50%,16px);width:min(calc(100vw - 40px),340px);padding:11px 16px;border-radius:15px;background:rgba(255,251,243,.94);color:#2B2622;text-align:center;opacity:0;pointer-events:none;transition:opacity .28s,transform .28s;box-shadow:0 14px 30px rgba(0,0,0,.24)}
.mu-card.is-on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.mu-card strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;font:600 16px/1.25 'Playfair Display',serif;overflow-wrap:anywhere}
.mu-card small{display:block;margin-top:3px;color:#8A7A62;font-size:12px}
html.mu-touring .mu-card{bottom:calc(84px + env(safe-area-inset-bottom))}

.mu-hint{position:fixed;z-index:18;left:50%;top:calc(66px + env(safe-area-inset-top));transform:translateX(-50%);width:min(calc(100vw - 32px),330px);margin:0;padding:9px 14px;border-radius:13px;background:var(--mu-glass);font-size:12.5px;line-height:1.35;text-align:center;pointer-events:none;transition:opacity .6s;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.mu-hint.is-gone{opacity:0}
.mu-toast{position:fixed;z-index:21;left:50%;top:32%;transform:translate(-50%,8px);max-width:calc(100vw - 40px);padding:11px 20px;border-radius:14px;background:rgba(20,16,20,.7);font:600 19px 'Playfair Display',serif;text-align:center;opacity:0;pointer-events:none;transition:opacity .35s,transform .35s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mu-toast.is-on{opacity:1;transform:translate(-50%,0)}
.mu-empty{position:fixed;z-index:18;left:50%;top:calc(62px + env(safe-area-inset-top));transform:translateX(-50%);margin:0;padding:7px 13px;border-radius:999px;background:var(--mu-glass);font-size:12px;text-align:center;white-space:nowrap;max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis}

/* what is hidden when */
.mu-top,.mu-dock,.mu-joy,.mu-hint{opacity:0;pointer-events:none;transition:opacity .5s}
html.mu-in .mu-top,html.mu-in .mu-dock,html.mu-in .mu-joy,html.mu-in .mu-hint{opacity:1}
html.mu-in .mu-dock,html.mu-in .mu-joy{pointer-events:auto}
html.mu-in .mu-hint{pointer-events:none}
html.mu-in .mu-hint.is-gone{opacity:0}
html.mu-focus .mu-top,html.mu-focus .mu-dock,html.mu-focus .mu-joy,html.mu-focus .mu-hint,html.mu-focus .mu-card,
html.mu-reading .mu-dock,html.mu-reading .mu-joy,html.mu-reading .mu-hint{opacity:0;pointer-events:none}
html.mu-touring .mu-joy,html.mu-touring .mu-hint{opacity:0;pointer-events:none}
html.mu-touring .mu-tourbar{display:flex}
html.mu-live .mu-hint,html.mu-live #muFull{display:none}
html.mu-live .mu-dock{flex-direction:column;right:6px;bottom:8px;left:auto;gap:0;padding:2px;border-radius:13px}
html.mu-live .mu-dock button{width:32px;padding:6px 0}
html.mu-live .mu-dock button span{display:none}
html.mu-live .mu-joy{left:10px;bottom:12px;width:76px;height:76px}
html.mu-live .mu-knob{width:34px;height:34px}
html.mu-live .mu-chip{height:32px;font-size:12px;padding:0 11px 0 4px}
html.mu-live .mu-chip b{min-width:24px;height:24px;font-size:10px}
html.mu-live .mu-sheet{right:44px;bottom:8px;width:min(calc(100vw - 56px),210px)}
html.mu-live .mu-card{bottom:96px}
html.mu-live #dscPreviewMark{display:none !important}
#dscPreviewMark{top:auto !important;bottom:max(6px,env(safe-area-inset-bottom)) !important;opacity:.8 !important}
html.mu-focus .mu-empty,html.mu-reading .mu-empty{opacity:0}

/* the builder's little phone is about 200px wide: everything over the canvas shrinks to fit it */
html.mu-live{--mu-t:clamp(12.5px,3.9vw,15px)}
html.mu-live .mu-top{padding:8px 8px 0}
html.mu-live .mu-chip{max-width:calc(100vw - 16px)}
html.mu-live .mu-ic{width:30px;height:30px}
html.mu-live .mu-ic svg{width:15px;height:15px}
html.mu-live .mu-empty{top:46px;width:max-content;max-width:calc(100vw - 16px);padding:4px 10px;border-radius:10px;font-size:10px;line-height:1.3;white-space:normal}
html.mu-live .mu-card{left:8px;right:46px;bottom:96px;width:auto;transform:translateY(12px);padding:6px 10px;border-radius:11px}
html.mu-live .mu-card.is-on{transform:none}
html.mu-live .mu-card strong{font-size:var(--mu-t);-webkit-line-clamp:2}
html.mu-live .mu-card small{margin-top:1px;font-size:10px}
html.mu-live.mu-touring .mu-card{right:8px;bottom:46px}
html.mu-live.mu-touring .mu-dock{opacity:0;pointer-events:none}
html.mu-live .mu-tourbar{left:50%;bottom:8px;gap:1px;padding:3px}
html.mu-live .mu-tourbar button{min-width:30px;height:28px;padding:0 5px;font-size:11.5px}
html.mu-live .mu-tourbar svg{width:13px;height:13px}
html.mu-live .mu-tourbar .mu-stop{padding:0 10px}
html.mu-live .mu-toast{top:26%;width:max-content;max-width:calc(100vw - 24px);padding:6px 12px;border-radius:10px;font-size:13.5px;white-space:normal}
html.mu-live .mu-sheet{padding:6px;border-radius:13px}
html.mu-live .mu-sheet h3{margin:3px 5px 5px;font-size:13.5px}
html.mu-live .mu-row{padding:7px 6px;gap:5px;font-size:12px}
html.mu-live .mu-row b{min-width:18px;font-size:9.5px}
html.mu-live .mu-row small{display:none}
html.mu-live .mu-view-x{top:8px;right:8px}
html.mu-live .mu-view-p{left:6px}
html.mu-live .mu-view-n{right:6px}
html.mu-live .mu-view-t{bottom:8px;width:calc(100vw - 16px);padding:7px 10px;border-radius:12px}
html.mu-live .mu-view-t small{font-size:8.5px}
html.mu-live .mu-view-t strong{margin-top:2px;font-size:var(--mu-t)}
html.mu-live .mu-view-t span{font-size:10.5px}
html.mu-live .mu-view-t em{margin-top:2px;font-size:9.5px}
html.mu-live .mu-letter{padding:10px}
html.mu-live .mu-letter-paper{max-height:calc(100dvh - 20px);padding:16px 14px 12px}
html.mu-live .mu-letter-to{margin-bottom:7px;font-size:14.5px}
html.mu-live .mu-letter-body{font-size:12.5px;line-height:1.5}
html.mu-live .mu-letter-from{margin-top:10px;font-size:12.5px}
html.mu-live .mu-letter-btns{gap:6px;margin-top:12px}
html.mu-live .mu-letter-btns button,html.mu-live .mu-snap button{min-width:100%;padding:8px 10px;font-size:12px}
html.mu-live .mu-snap{gap:9px;padding:10px}
html.mu-live .mu-snap img{border-width:5px}

/* close-up */
.mu-view{position:fixed;inset:0;z-index:24;pointer-events:none}
.mu-view>*{pointer-events:auto}
.mu-view-x{position:absolute;top:calc(12px + env(safe-area-inset-top));right:12px}
.mu-view-p,.mu-view-n{position:absolute;top:50%;transform:translateY(-50%)}
.mu-view-p{left:10px}
.mu-view-n{right:10px}
.mu-view-t{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(22px + env(safe-area-inset-bottom));width:min(calc(100vw - 28px),430px);padding:13px 18px;border-radius:17px;background:rgba(255,251,243,.95);color:#2B2622;text-align:center;box-shadow:0 14px 30px rgba(0,0,0,.26);pointer-events:none}
.mu-view-t small{display:block;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#8A7A62}
.mu-view-t strong{display:block;margin-top:3px;font:600 18px/1.28 'Playfair Display',serif;overflow-wrap:anywhere}
.mu-view-t span{display:block;margin-top:2px;font-size:13px;color:#6F6559}
.mu-view-t em{display:block;margin-top:5px;font-style:normal;font-size:11px;color:#9A8E7E}

/* letter */
.mu-letter{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:18px;background:rgba(14,11,16,.56);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow:auto;touch-action:pan-y}
.mu-letter-paper{width:min(100%,430px);max-height:calc(100dvh - 36px);overflow:auto;padding:30px 26px 22px;border-radius:12px;background:#FFFBF0;color:#322B27;box-shadow:0 30px 70px rgba(0,0,0,.45);animation:muTicketIn .7s cubic-bezier(.2,.9,.3,1.1) both;-webkit-user-select:text;user-select:text;touch-action:pan-y}
.mu-letter-to{margin:0 0 12px;font:600 21px 'Playfair Display',serif;overflow-wrap:anywhere}
.mu-letter-body{margin:0;white-space:pre-wrap;font:500 17.5px/1.62 'Playfair Display',serif;overflow-wrap:anywhere}
.mu-letter-from{margin:18px 0 0;text-align:right;font:italic 500 17px 'Playfair Display',serif;overflow-wrap:anywhere}
.mu-letter-btns{display:flex;gap:8px;margin-top:22px;flex-wrap:wrap}
.mu-letter-btns button,.mu-snap button{flex:1;min-width:120px;padding:12px 14px;border-radius:999px;background:#2B2622;color:#FFF7E8;font-weight:700;font-size:14px}
.mu-letter-btns .is-ghost{background:none;color:#2B2622;box-shadow:inset 0 0 0 1.5px #CBBFAB}

/* snapshot */
.mu-snap{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:18px;background:rgba(14,11,16,.82)}
.mu-snap img{max-width:100%;max-height:72dvh;border:9px solid #fff;border-radius:6px;box-shadow:0 22px 50px rgba(0,0,0,.5)}
.mu-snap div{display:flex;gap:8px;flex-wrap:wrap;width:min(100%,420px)}
.mu-snap button{background:#fff;color:#2B2622}
.mu-snap .is-ghost{background:none;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.5)}

/* phones turned sideways: the dock runs along the right in less height */
@media (max-height:480px) and (orientation:landscape){
  .mu-dock{flex-direction:row;bottom:calc(12px + env(safe-area-inset-bottom));right:12px}
  .mu-sheet{bottom:76px;right:12px;max-height:60vh}
  .mu-joy{width:104px;height:104px;bottom:calc(14px + env(safe-area-inset-bottom))}
  .mu-card{bottom:calc(16px + env(safe-area-inset-bottom));width:min(44vw,300px);left:42%}
  .mu-tourbar{left:calc(14px + env(safe-area-inset-left));transform:none;bottom:calc(12px + env(safe-area-inset-bottom))}
  html.mu-touring .mu-card{bottom:calc(76px + env(safe-area-inset-bottom));left:calc(14px + env(safe-area-inset-left));transform:none}
}
/* phones held upright: the card and the tour bar sit clear of the dock on the right */
@media (max-width:480px) and (orientation:portrait){
  .mu-card{left:12px;right:72px;width:auto;transform:translateY(16px)}
  .mu-card.is-on{transform:none}
  html.mu-touring .mu-card{bottom:calc(92px + env(safe-area-inset-bottom))}
  .mu-tourbar{left:calc(50% - 34px);bottom:calc(32px + env(safe-area-inset-bottom));gap:2px;padding:4px}
  .mu-tourbar button{min-width:38px;padding:0 8px}
  .mu-tourbar .mu-stop{padding:0 12px}
}
@media (min-width:900px){
  .mu-joy{opacity:.0;pointer-events:none}
  html.mu-in .mu-joy{opacity:.75;pointer-events:auto}
  .mu-card{bottom:32px}
  .mu-hint{top:auto;bottom:32px;width:auto;max-width:520px}
}

/* no WebGL: a plain, scrolling gallery */
html.mu-flat,html.mu-flat body{overflow:auto;height:auto;touch-action:auto;-webkit-user-select:text;user-select:text;background:#FFFBF3;color:#2B2622}
html.mu-flat #muStage,html.mu-flat .mu-top,html.mu-flat .mu-dock,html.mu-flat .mu-joy{display:none}
.mu-flat{max-width:560px;margin:0 auto;padding:30px 18px 60px}
.mu-flat h1{font:600 34px/1.15 'Playfair Display',serif;margin:0 0 8px;text-align:center}
.mu-flat h2{font:600 24px 'Playfair Display',serif;margin:34px 0 12px}
.mu-flat figure{margin:0 0 18px;padding:10px;background:#fff;box-shadow:0 8px 24px rgba(0,0,0,.08);border-radius:6px}
.mu-flat img{display:block;width:100%;height:auto}
.mu-flat figcaption{margin-top:8px;font-size:14px;color:#6F6559;text-align:center}
.mu-flat blockquote{margin:30px 0 8px;font:500 19px/1.6 'Playfair Display',serif;white-space:pre-wrap}
