.hero-copy .m-h{font-size:clamp(46px,5.8vw,77px);margin:22px 0 26px}.hero-copy .m-sub{max-width:26em;margin-bottom:30px}[data-box] svg{width:100%;height:auto;display:block}.story-block>.m-label{grid-column:1/-1}.three-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;border-top:1px solid var(--line);padding:50px 0}.three-steps span{font-size:12px;letter-spacing:.15em;color:var(--mute)}.three-steps h3{font:600 22px/1.2 Syne,sans-serif}.three-steps p{font-size:15px;color:var(--ink-2)}.app-wrap{max-width:1100px;margin:auto;padding:24px}.app-wrap #app{padding:44px 0 20px;outline:none;min-height:65vh}.app-wrap h1{font:400 clamp(34px,5vw,54px)/1.1 var(--hand);margin:12px 0 15px}.app-wrap h2{font:400 30px/1.1 var(--hand)}.app-wrap .lead{max-width:35em;color:var(--ink-2);font-size:16px}.app-wrap button,.app-wrap .button{font:400 21px/1.15 var(--hand);border:1.5px solid var(--ink);border-radius:9px 12px 10px 8px;background:var(--ink);color:#fffdf8;padding:12px 22px;cursor:pointer;display:inline-block;text-decoration:none;min-height:46px}.app-wrap button.secondary,.app-wrap .button.secondary{background:transparent;color:var(--ink)}.app-wrap button:disabled{opacity:.5;cursor:wait}.app-wrap button:hover:not(:disabled){background:#48404f;color:white}.app-wrap :focus-visible{outline:3px solid #7461ac;outline-offset:5px}.app-wrap input,.app-wrap textarea,.app-wrap select{display:block;width:100%;font:400 20px/1.35 var(--hand);border:1px solid #b8b2ac;border-radius:7px;background:#fffdf8;padding:12px;color:var(--ink)}.app-wrap textarea{resize:vertical;min-height:120px}.app-wrap label{display:block;font-size:13px;margin:20px 0 8px}/* the language control in the top bar stays one row (globe,code,chevron); the form-label rule above made it a column (owner,9 Oct 2026: "looks squeezed") */
.app-wrap .m-nav .tm-language-control{display:inline-flex;margin:-16px 0}.app-wrap .eyebrow{font:500 11px/1.3 Manrope,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#716878}.shelf-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px 18px;margin:40px 0}.app-wrap button.companion{color:var(--ink);background:transparent;border:1px solid transparent;padding:14px 10px;text-align:center}.app-wrap button.companion:hover,.app-wrap button.companion[aria-pressed=true]{background:#e9e1ee;border-color:#a695b3}.companion svg{width:100%;height:auto}.companion strong{font-weight:400;display:block;margin:10px 0 5px}.companion small{font:12px/1.4 Manrope,sans-serif;display:block;color:#5b5760}.action-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:28px 0 0}.compose{display:grid;grid-template-columns:220px minmax(0,650px);gap:70px}.gift-summary{position:sticky;top:25px;align-self:start}.gift-summary p{text-align:center;font:24px/1.2 var(--hand)}.name-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.moment-tabs{display:flex;gap:10px;margin:35px 0 24px}.app-wrap .moment-tabs button{background:transparent;color:var(--ink);min-width:62px}.app-wrap .moment-tabs button[aria-selected=true]{background:#d8cbe9}.moment-card{background:#fffdf8;border:1px solid #ddd4c9;border-radius:9px;padding:24px}.moment-card h2{margin:0 0 15px}.moment-card .photo-preview{width:100%;max-height:270px;object-fit:contain;margin-top:16px;border-radius:5px}.moment-card audio{width:100%;margin-top:12px}.hint{font-size:12px!important;color:#746b76;line-height:1.5}.saved{font-size:12px;color:#626f5a}.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:30px 0}.review-moment{background:#fffdf8;padding:20px;border:1px solid #ddd4c9;border-radius:8px;min-width:0}.review-moment img{width:100%;height:180px;object-fit:cover}.review-moment p{font:22px/1.4 var(--hand);overflow-wrap:anywhere;white-space:pre-wrap}.review-moment audio{width:100%}.ticket{max-width:660px;margin:0 auto;text-align:center}.ticket [data-box]{width:180px;margin:20px auto}.ticket input{font:12px/1.5 monospace!important;word-break:break-all}.ticket .action-row{justify-content:center}.scene-wrap{--edge-fade:16px;width:min(100%,400px);aspect-ratio:400/711.111;margin:28px auto;border-radius:0;overflow:hidden;background:transparent;-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--edge-fade),#000 calc(100% - var(--edge-fade)),transparent),linear-gradient(to bottom,transparent,#000 var(--edge-fade),#000 calc(100% - var(--edge-fade)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--edge-fade),#000 calc(100% - var(--edge-fade)),transparent),linear-gradient(to bottom,transparent,#000 var(--edge-fade),#000 calc(100% - var(--edge-fade)),transparent);-webkit-mask-composite:source-in;mask-composite:intersect}.scene-wrap iframe{width:100%;height:100%;border:0}.app-wrap .moment-links button{padding:10px 15px;font-size:18px}.app-wrap dialog{border:1px solid #bbb1a3;border-radius:12px;background:#fffdf8;color:var(--ink);max-width:600px;width:calc(100% - 40px);max-height:85vh;padding:25px}.app-wrap dialog::backdrop{background:#211f2a99}.app-wrap dialog img{max-width:100%;max-height:40vh}.app-wrap dialog p{white-space:pre-wrap;overflow-wrap:anywhere;font:25px/1.4 var(--hand)}.app-wrap dialog audio{width:100%}.app-foot{display:flex;justify-content:center;flex-wrap:wrap;gap:22px;padding:40px 0 20px;border-top:1px solid var(--line);font-size:12px;color:#777}.app-foot a{text-decoration:none}#notice{font-size:14px;color:#8d352b;min-height:24px;overflow-wrap:anywhere}.narrow{max-width:680px;margin:auto}.text-link{font-size:13px;color:#666}.busy{opacity:.65;pointer-events:none}@media(max-width:800px){.three-steps{grid-template-columns:1fr;gap:24px}.three-steps h3{margin:12px 0}.compose{grid-template-columns:1fr;gap:20px}.gift-summary{display:none}.shelf-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.review-grid{grid-template-columns:1fr}.review-moment img{height:220px}}@media(max-width:480px){.app-wrap{padding:18px}.shelf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.name-row{grid-template-columns:1fr;gap:0}.moment-card{padding:18px}.action-row{align-items:stretch}.action-row button,.action-row a.button{flex-grow:1;text-align:center}.hero-copy .m-h{font-size:46px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.ticket-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;margin:32px 0}.ticket-card{background:#f5d7b5;border-radius:16px;overflow:hidden;break-inside:avoid}.ticket-actions{display:flex;gap:10px;flex-wrap:wrap}.app-wrap .ticket-actions button,.app-wrap .ticket-actions .button{font-size:17px;padding:10px 12px}@media(max-width:700px){.ticket-grid{grid-template-columns:1fr}}@media print{.ticket-grid{display:block}.ticket-card{width:460px;margin:20px auto;break-inside:avoid;print-color-adjust:exact;-webkit-print-color-adjust:exact}.app-wrap{padding:0}.app-wrap #app{padding:0}}.email-option{margin:26px 0;text-align:left;border-top:1px solid var(--line);padding-top:20px;max-width:600px}.email-option summary{cursor:pointer;font:23px/1.3 var(--hand)}.email-option form{padding:5px 0 15px}.email-option button{margin-top:14px}.email-option [data-email-status]{font-size:14px;line-height:1.5;color:#536747}.email-preview{font-size:14px;display:block;margin-top:10px}.delete-section{border-top:1px solid var(--line);margin-top:40px;padding-top:20px}.delete-section p{font-size:14px;max-width:35em}.app-wrap #demo-pay-form input{font:18px/1.4 Manrope,sans-serif}.app-wrap #demo-pay-form h2{margin-bottom:8px}.inline-error{background:#f7e0d8;color:#823f31;border:1px solid #d6a18e;border-radius:8px;padding:14px 16px;font-size:14px;line-height:1.5;margin:20px 0}@media(max-width:360px){.m-top{flex-wrap:wrap;gap:16px}.m-nav{margin-left:0}}.three-steps article{min-width:0}.step-illustration{width:100%;max-width:360px;aspect-ratio:360/280;margin:18px auto 22px}.step-illustration svg{display:block;width:100%;height:100%;overflow:visible}.three-steps h3{margin:0 0 18px}.three-steps p{margin:0}@media(max-width:800px){.three-steps{gap:42px}.step-illustration{max-width:320px;margin:12px auto 24px}.three-steps h3{margin:0 0 14px}}/* Gift-screen prose uses the same hand as the headings and controls. */
.app-wrap p{font-family:var(--hand)}.app-wrap .lead{font:400 24px/1.4 var(--hand)}.app-wrap .hint{font:400 18px/1.4 var(--hand)!important}.app-wrap .saved,.app-wrap .export-note{font:400 18px/1.4 var(--hand)}.showcase-embed,.showcase-embed body{background:var(--paper)}.showcase-embed .app-wrap{padding:0;max-width:none}.showcase-embed #app{padding:0;min-height:0}.showcase-embed #notice:empty{display:none}.showcase-embed .scene-wrap{margin:0 auto}.showcase-embed .receiver-layout{max-width:100%}.showcase-embed .ticket{padding:16px 18px 28px}.showcase-embed .ticket h1{font-size:clamp(34px,5vw,46px)}/* Browse first. The purchase belongs to the box you chose. */
.collection-intro{max-width:760px}.app-wrap .collection-count{font:400 23px/1.4 var(--hand);color:#7153b5;margin:20px 0 0}.collection-shelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:42px 30px;margin:44px 0 60px}.shop-box{display:flex;flex-direction:column;align-items:center;text-align:center;text-decoration:none;color:var(--ink);padding:12px 12px 28px;border-bottom:2px solid #d8cae7;min-width:0}.box-drawing{width:100%;max-width:210px;transition:transform .15s}.box-drawing svg,.box-portrait svg,.checkout-art svg{width:100%;height:auto;display:block}.shop-box:hover .box-drawing{transform:translateY(-6px)}.shop-box h2{font-size:27px;margin:14px 0 8px}.shop-box p{font-size:19px;margin:0 0 14px;max-width:17em}.shop-box span{font:12px/1.4 Manrope,sans-serif;color:#73657c;margin-top:auto}.shop-box b{font:400 18px/1.4 var(--hand);color:#7153b5;margin-top:12px}.box-detail{display:grid;grid-template-columns:minmax(0,380px) minmax(0,520px);gap:60px;align-items:start;margin:38px auto}.box-detail section{min-width:0}.box-detail p{font-size:23px}.box-portrait{padding:30px;position:sticky;top:40px;background:radial-gradient(ellipse,#e7dcf2,transparent 68%)}.app-wrap .box-price{font-size:38px;margin-bottom:20px}.box-price small{display:block;font:18px/1.5 var(--hand);color:#706578}.purchased-box>.lead{text-align:center}.checkout-art{width:130px;margin:0 auto}.app-wrap button:not(.secondary):not(.companion):not([role=tab]),.app-wrap .button:not(.secondary){background:#7153b5;border-color:#7153b5;color:#fffdf8}.app-wrap button:not(.secondary):not(.companion):not([role=tab]):hover,.app-wrap .button:not(.secondary):hover{background:#5f439c}.app-wrap .text-link{font:18px/1.4 var(--hand)}@media(max-width:700px){.collection-shelf{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 12px}.shop-box{padding:5px 2px 20px}.shop-box h2{font-size:24px}.shop-box p{font-size:18px}.shop-box b{font-size:17px}.shop-box span{font-size:11px}.box-detail{grid-template-columns:1fr;gap:24px;margin-top:20px}.box-portrait{position:static;max-width:260px;margin:auto;padding:10px 25px}}.app-wrap h1,.app-wrap h2,.app-wrap h3{text-transform:uppercase}/* The website frame uses the live museum header,independent of the piece's hand. */
.app-wrap{max-width:1180px;padding:22px 28px 80px}.showcase-embed .m-top{display:none}@media(max-width:640px){.app-wrap{padding:16px 18px 60px}}.showcase-embed .m-top,.showcase-embed .app-foot,.showcase-embed .receiver-heading{display:none}@media print{.m-top,.app-foot,#notice,.action-row,.ticket-actions,#app>p,#app>h1,#app>.eyebrow{display:none!important}}/* Drawn titles,clear reading and controls. */
.app-wrap p{font:400 16px/1.6 Manrope,sans-serif}.app-wrap .lead{font:400 18px/1.6 Manrope,sans-serif}.app-wrap .hint{font:400 14px/1.55 Manrope,sans-serif!important}.app-wrap .saved,.app-wrap .export-note{font:400 14px/1.55 Manrope,sans-serif}.app-wrap .collection-count{font:500 16px/1.6 Manrope,sans-serif}.app-wrap .collection-links,.app-wrap .text-link{font:500 14px/1.5 Manrope,sans-serif}.app-wrap button,.app-wrap .button{font:600 15px/1.35 Manrope,sans-serif}.app-wrap input,.app-wrap textarea,.app-wrap select{font:400 16px/1.5 Manrope,sans-serif}.app-wrap .shop-box p{font:400 15px/1.6 Manrope,sans-serif}.app-wrap .shop-box b{font:500 14px/1.5 Manrope,sans-serif}.app-wrap .box-detail p,.app-wrap .later-invite p,.app-wrap .coming-shelf p{font:400 16px/1.6 Manrope,sans-serif}.app-wrap .box-price{font:600 30px/1.3 Manrope,sans-serif}.app-wrap .box-price small,.app-wrap .coming-box small{font:400 14px/1.5 Manrope,sans-serif}.app-wrap .pack-choice strong{font:600 36px/1.2 Manrope,sans-serif}.app-wrap .email-option summary,.app-wrap .coming-shelf summary{font:500 17px/1.4 Manrope,sans-serif}.app-wrap .order-summary>span{font:500 18px/1.4 Manrope,sans-serif}.app-wrap .order-summary strong{font:600 26px/1.2 Manrope,sans-serif}.app-wrap .gift-tag span,.app-wrap .gift-tag p{font:400 18px/1.5 Manrope,sans-serif}.app-wrap .review-moment p,.app-wrap dialog p{font:400 17px/1.6 Manrope,sans-serif}/* Companion labels stay in the drawn title style. */
.app-wrap .companion strong,.app-wrap .gift-summary p{font:400 24px/1.2 var(--hand)}/* Shop surfaces use the museum's paper{display:flex;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);padding:0 0 18px;font:500 14px/1.4 Manrope,sans-serif}.app-wrap .basket-feedback{min-height:22px;margin:12px 0 26px;font:400 14px/1.5 Manrope,sans-serif;color:var(--ink)}.shop-box-detail{display:flex;flex-direction:column;align-items:center;text-decoration:none;color:inherit;flex:1}.shop-box-detail .box-drawing{margin:0 auto;height:200px;display:flex;align-items:flex-end;justify-content:center}/* a fixed slot for the drawing: a long name below never moves it (owner,9 Oct 2026) */
.shop-box-detail .box-drawing svg{width:auto;max-width:100%;max-height:100%}.shop-box-detail h2{min-height:2.3em;display:flex;align-items:center;justify-content:center;line-height:1.1}/* two lines reserved,so every card's price and basket sit at the same height */.shop-box-buy{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:26px;width:100%;flex-wrap:wrap}.shop-box-buy>span{font:500 16px/1 Manrope,sans-serif;color:var(--ink);margin:0}.app-wrap button.soft-action,.app-wrap a.soft-action{position:relative;isolation:isolate;border:0;border-radius:999px;background:transparent!important;color:#1f1f24!important;font:600 15px/1 Manrope,sans-serif;letter-spacing:.02em;padding:15px 22px;min-height:45px;box-shadow:none;text-decoration:none;white-space:nowrap}.app-wrap .soft-action::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;opacity:.72;filter:blur(3.5px);background:linear-gradient(110deg,#9DBDE6 0%,#E6F27A 30%,#429A50 55%,#9DBDE6 80%,#E6F27A 100%);background-size:200% 100%;animation:shop-colour 14s ease-in-out infinite alternate;pointer-events:none}.app-wrap .soft-action:hover::before{filter:blur(5px)}@keyframes shop-colour{to{background-position:100% 50%}}.later-choices>.hint{margin-top:26px}.basket-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:70px;margin-top:34px}.basket-item{display:grid;grid-template-columns:90px minmax(0,1fr);gap:25px;padding:24px 0;border-bottom:1px solid var(--line)}.basket-item:first-child{padding-top:0}.basket-item:last-of-type{margin-bottom:30px}.basket-item h2{font-size:25px;margin:0}.app-wrap .basket-item p{font-size:14px;max-width:26em;margin:10px 0 16px}.basket-art svg{width:100%;height:auto;display:block}.later-symbol{display:grid;place-items:center;height:116px;font:60px/1 var(--hand);background:radial-gradient(ellipse,#d8cbe9,transparent 70%)}.quantity{display:flex;align-items:center;gap:14px}.app-wrap .quantity button.secondary{width:36px;height:36px;min-height:36px;padding:0;border:1px solid var(--line);border-radius:50%;font-size:18px}.quantity>span{font:14px/1 Manrope,sans-serif}.app-wrap button.remove-item,.app-wrap button.add-later{background:transparent!important;color:var(--ink)!important;border:0;min-height:36px;padding:0;text-decoration:underline;text-underline-offset:4px;font:500 13px/1.5 Manrope,sans-serif}.quantity .remove-item{margin-left:8px}.basket-summary{align-self:start;border-top:1px solid var(--line);padding-top:24px}.basket-summary h2{margin:0 0 20px}.basket-totals{font:400 15px/1.5 Manrope,sans-serif;margin:24px 0}.basket-totals>div{display:flex;justify-content:space-between;gap:20px;padding:7px 0}.basket-totals dd{margin:0}.basket-saving,.app-wrap .saving-note{color:#456941}.app-wrap .saving-note{font-size:14px}.basket-totals .basket-total{font-weight:600;font-size:21px;border-top:1px solid var(--line);padding-top:18px;margin-top:12px}.bundle-nudge{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;margin:24px 0 32px}.app-wrap .bundle-nudge p{font-size:15px;margin:0 0 10px}.bundle-nudge>a{font:500 13px/1.5 Manrope,sans-serif;display:block;margin-bottom:8px;text-underline-offset:4px}.basket-summary>.hint{margin-top:26px}.basket-empty{padding:35px 0 70px}.checkout-items{margin:26px 0}.checkout-items p{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:15px 0;margin:0}@media(max-width:760px){.basket-layout{grid-template-columns:1fr;gap:35px}.basket-summary{padding-top:26px}.basket-item{grid-template-columns:70px minmax(0,1fr);gap:18px}.basket-item h2{font-size:23px}.shop-box-buy{gap:12px}.app-wrap .shop-box-buy .soft-action{font-size:13px;padding:13px 15px;min-height:40px}}/* A broad,curved feather dissolves the scene into the surrounding paper. */
.scene-wrap{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 711'%3E%3Cdefs%3E%3Cfilter id='f' x='-30%25' y='-30%25' width='160%25' height='160%25'%3E%3CfeGaussianBlur stdDeviation='16'/%3E%3C/filter%3E%3C/defs%3E%3Crect x='22' y='22' width='356' height='667' rx='35' fill='white' filter='url(%23f)'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 711'%3E%3Cdefs%3E%3Cfilter id='f' x='-30%25' y='-30%25' width='160%25' height='160%25'%3E%3CfeGaussianBlur stdDeviation='16'/%3E%3C/filter%3E%3C/defs%3E%3Crect x='22' y='22' width='356' height='667' rx='35' fill='white' filter='url(%23f)'/%3E%3C/svg%3E");-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.app-wrap .box-entry h1{font-size:42px;line-height:1.15;margin:18px 0}.app-wrap .box-entry .lead{font-size:16px;line-height:1.65}.app-wrap #box-code-form label{margin:0 0 12px;font:500 14px/1.5 Manrope,sans-serif}.app-wrap #start-code{font:400 14px/1.5 Manrope,sans-serif;letter-spacing:.015em;border:1px solid #bdbab4;border-radius:3px;background:transparent;padding:13px 12px;min-height:48px;width:100%}.app-wrap #start-code[aria-invalid=true]{border-color:#9c4c3e}.app-wrap #start-code[aria-invalid=true]+#ticket-date{color:#9c4c3e}@media(max-width:700px){.app-wrap .box-entry h1{font-size:34px}.box-entry-copy>.eyebrow{display:block}.app-wrap #start-code{font-size:16px;letter-spacing:0}}/* Purchased cards: one independent box,its artwork and its direct entrance. */
.purchase-receipt{max-width:1040px;margin:auto}.purchase-receipt>.lead{max-width:700px}.purchase-receipt>p:not(.lead){max-width:740px}.app-wrap .text-action{background:none;border:0;border-radius:0;padding:3px 0;color:var(--ink,#1f1f24);font:400 14px/1.5 'Manrope',sans-serif;text-decoration:underline;text-underline-offset:5px;box-shadow:none}.ticket-grid{gap:36px;margin:36px 0 48px;align-items:start}.ticket-grid.single-card{max-width:520px;grid-template-columns:minmax(0,1fr)}.ticket-card{background:transparent;border:1px solid #d4d0ca;border-radius:0;overflow:visible}.ticket-face .eyebrow{font-size:10px}.app-wrap .ticket-face h2{font:400 28px/1.2 var(--hand);text-transform:uppercase;max-width:none;margin:12px 0}.app-wrap .ticket-face p{font:400 14px/1.6 'Manrope',sans-serif;max-width:300px;margin:12px auto 0}.card-qr{display:block;background:white;line-height:0}.card-qr svg{display:block;width:100%;height:auto}.card-access .eyebrow{font-size:10px;letter-spacing:1px}.card-access .hint{font-size:12px;line-height:1.6;margin:8px 0 12px}.ticket-actions{display:flex;align-items:flex-start;flex-direction:column;gap:22px;margin-top:24px}.app-wrap .ticket-actions .soft-action{font:500 15px/1 'Manrope',sans-serif;padding:15px 22px}.app-wrap .ticket-actions .text-action{font:400 13px/1.5 'Manrope',sans-serif;padding:3px 0}.card-picker .lead,.card-picker>.hint{max-width:740px}@media print{body:has(.purchase-receipt) .m-top,body:has(.purchase-receipt) .app-foot,body:has(.purchase-receipt) #notice,.purchase-receipt>.shop-nav,.purchase-receipt>.receipt-actions,.purchase-receipt>.email-option,.purchase-receipt .card-save-actions{display:none!important}.ticket-card{width:460px;max-width:100%;border-color:#bbb}.card-qr{print-color-adjust:exact}.ticket-actions .soft-action{background:none}}.app-wrap button.secondary.text-action,.app-wrap button.secondary.text-action:hover:not(:disabled){background:transparent;border:0;color:#1f1f24;border-radius:0;box-shadow:none}/* Keep the shopping controls available without competing with the museum wordmark. */
.app-back{margin:28px 0 0;line-height:1.5}.app-wrap #app{padding-top:12px}.basket-link{display:inline-flex;align-items:center;gap:8px;min-height:36px;min-width:48px;justify-content:center;text-decoration:none}.basket-link svg{width:25px;height:25px}.shop-box-buy{width:100%;gap:12px}.box-buy-control{min-height:76px;display:grid;align-content:center;justify-items:center;gap:5px}.in-basket-label{font:400 11px/1.3 Manrope,sans-serif!important;color:#777!important}.box-quantity{display:flex;align-items:center;gap:12px;border-bottom:1px solid #1f1f24}.app-wrap .box-quantity button.secondary{border:0;border-radius:0;background:none;color:#1f1f24;min-width:36px;min-height:40px;padding:4px;font:400 24px/1 Manrope,sans-serif}.box-quantity output{min-width:30px;text-align:center;font:500 17px/1.3 Manrope,sans-serif}.box-detail .box-buy-control{justify-items:start}.shop-box{border-bottom:1px solid #d4d0ca}.app-wrap .shop-box b{color:#1f1f24}/* Quiet ink controls for making and opening a gift. */
.app-wrap button:not(.secondary):not(.companion):not([role=tab]):not(.soft-action),.app-wrap .button:not(.secondary):not(.soft-action){background:#1f1f24;border-color:#1f1f24;color:#fffdf8}.app-wrap button:not(.secondary):not(.companion):not([role=tab]):not(.soft-action):hover{background:#38383b}.app-wrap button.secondary{border-color:#c3bfb7;border-radius:0}.app-wrap .moment-tabs{gap:22px;border-bottom:1px solid #d4d0ca;scroll-margin-top:20px;margin:26px 0 24px}.app-wrap .moment-tabs button[role=tab]{position:relative;min-width:38px;min-height:42px;border:0;border-radius:0;padding:8px 4px;background:transparent;color:#777;font:500 18px/1.4 Manrope,sans-serif}.app-wrap .moment-tabs button[aria-selected=true]{color:#1f1f24;border-bottom:2px solid #1f1f24;background:transparent}.moment-card,.review-moment{background:transparent;border:0;border-radius:0;padding:0}.moment-card h2{margin-top:0}.gift-summary{position:static}.app-wrap .gift-summary p{font:400 17px/1.4 var(--hand)}.app-wrap button.companion[aria-pressed=true]{background:#eceae3;border-color:#1f1f24}.app-wrap button.companion:hover{background:#eeece6;border-color:#aaa}.receiver-tools .action-row{justify-content:center}.app-wrap .moment-links button.secondary{border:0;border-bottom:1px solid #1f1f24;border-radius:0;padding:6px 0;font:400 14px/1.4 Manrope,sans-serif}@media(max-width:800px){.gift-summary{display:grid;grid-template-columns:60px 1fr;gap:4px 16px;align-items:center}.gift-summary>svg{width:60px;grid-row:1/3}.app-wrap .gift-summary p{text-align:left;margin:0}.gift-summary #change{justify-self:start}.compose{gap:24px}}/* The bounded print image is exactly the downloadable PNG. Controls sit outside. */
.ticket-card{border:0;background:transparent;overflow:visible;border-radius:0;box-shadow:none}.card-print.card-qr{display:block;width:100%;max-width:450px;margin:0 auto;background:transparent}.card-print img{display:block;width:100%;height:auto;aspect-ratio:3/4;border:0}.card-print .card-fallback{display:block;box-sizing:border-box;aspect-ratio:3/4;padding:22% 10%;background:#fff}.card-print .card-fallback svg{display:block;width:100%;height:auto}.ticket-actions{padding:22px 0;text-align:center}.email-dialog{padding:0;width:min(660px,100%);max-width:100vw;height:92dvh;max-height:100dvh;border:1px solid #ccc;background:#f4f3ef;color:#202024}.email-dialog::backdrop{background:#20202480}.email-envelope{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:14px 18px;font:14px/1.5 Manrope,sans-serif;border-bottom:1px solid #d8d5ce}.email-envelope button{background:transparent;border:0;text-decoration:underline;font:inherit;padding:8px;cursor:pointer}.email-dialog iframe{display:block;width:100%;height:calc(100% - 80px);border:0}@media print{.ticket-actions,.email-option,.shop-bar,.app-back{display:none!important}.ticket-card{break-inside:avoid}.card-print{max-width:360px!important}}/* Receipt: each image and its download form one unit. */
.purchase-receipt .ticket-grid{margin-top:24px}.purchase-receipt .ticket-grid.single-card{max-width:450px}.purchase-receipt .ticket-actions{max-width:450px;margin:14px auto 0;padding:0 6px;gap:20px;text-align:left;align-items:flex-start}.purchase-receipt .card-save-actions{align-items:center;justify-content:flex-start;gap:16px 24px}.purchase-receipt .card-save-actions a{font:400 14px/1.5 Manrope,sans-serif}.purchase-receipt .ticket-actions .email-option{width:100%;margin:0;padding:0;border:0}.purchase-receipt .ticket-actions .email-option summary{font-size:14px}.receipt-save-all{display:flex;flex-wrap:wrap;gap:16px 28px;align-items:baseline;margin:0 0 40px;padding-top:22px;border-top:1px solid #d4d0ca}.receipt-save-all .email-option{margin:0;padding:0;border:0}.receipt-save-all .email-option[open]{flex-basis:100%}@media print{.receipt-save-all{display:none!important}}/* Sender: the drawing is the choice,with a quiet ink underline. */
.app-wrap .companion,.app-wrap .companion[aria-pressed=true]{border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;padding:16px 8px 24px;color:var(--ink)}.companion svg{transition:transform .2s;max-width:155px;margin:auto}.companion[aria-pressed=true] svg{transform:translateY(-6px)}.companion strong{display:inline-block!important;padding-bottom:8px;border-bottom:2px solid transparent}.companion[aria-pressed=true] strong{border-bottom-color:currentColor}.companion small{display:block;margin-top:6px}.shelf-grid{padding-bottom:90px;gap:28px 18px}.picker-dock,.editor-dock{position:sticky;bottom:0;z-index:8;display:flex;align-items:center;justify-content:space-between;gap:18px;background:#f4f3ef;padding:16px 0 calc(16px + env(safe-area-inset-bottom));border-top:1px solid #d7d4ce;box-shadow:0 -12px 20px #f4f3ef}.picker-dock{position:fixed;left:0;right:0;padding-left:max(18px,calc((100vw - 1124px)/2));padding-right:max(18px,calc((100vw - 1124px)/2));}.picker-dock p{margin:0;font-size:14px}.picker-dock #choose{min-width:140px}.picker-dock span{font:24px var(--hand)}.gift-summary{display:flex!important;align-items:center;gap:22px;text-align:left}.gift-summary svg{width:82px;flex:none;margin:0!important}.app-wrap .gift-summary p{font:36px/1.15 var(--hand);margin:0}.compose{display:block;max-width:700px;margin:auto}.compose>section>h1{margin-top:36px}.moment-tabs{display:grid!important;grid-template-columns:repeat(3,1fr);gap:0!important;width:100%;margin:30px 0 24px!important}.app-wrap .moment-tabs button{width:100%;padding:16px 0!important;border-radius:0!important;border:0!important;border-bottom:2px solid transparent!important;font:22px Manrope!important}.app-wrap .moment-tabs button[aria-selected=true]{border-bottom-color:#202024!important}.moment-card{padding:0!important;border:0!important;background:transparent!important}.photo-row{display:flex;align-items:center;gap:16px;padding:18px 0;border-top:1px solid #d7d4ce;border-bottom:1px solid #d7d4ce;margin-bottom:28px}.photo-row img{width:74px;height:74px;object-fit:contain;background:#eae8df}.photo-row>div{flex:1}.photo-row span{display:block;font:16px Manrope}.photo-row small{font-size:12px;color:#79767b;margin-left:6px}.photo-row .photo-symbol{width:74px;height:74px;display:grid;place-items:center;font-size:30px;background:#eae8df}.file-action{display:inline-block!important;text-decoration:underline;text-underline-offset:4px;font:14px Manrope!important;cursor:pointer;margin:8px 0!important}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0!important}.file-action:has(+input:focus-visible){outline:2px solid #202024;outline-offset:4px}.note-heading{display:flex;justify-content:space-between;align-items:center}.note-heading label{margin:0 0 8px}.note-heading output{font:12px Manrope;color:#78757b}textarea#text{min-height:160px;resize:vertical}textarea:disabled{opacity:.4;background:#eeede7}.either-or{display:flex;align-items:center;gap:14px;color:#8a878c;font:13px Manrope;margin:18px 0}.either-or:before,.either-or:after{content:'';height:1px;background:#d7d4ce;flex:1}.voice-row{border:0;padding:0;margin:0;min-width:0}.voice-row legend{padding:0 0 12px;font:16px Manrope}.voice-row[disabled]{opacity:.35}.voice-row[disabled] .file-action{pointer-events:none}.voice-row .file-action{margin-left:18px!important}.voice-row audio{display:block;width:100%}.draft-warning{font-size:12px!important;color:#69666e;margin-top:30px}.editor-dock{flex-wrap:wrap;margin-top:30px}.editor-dock #save-status:empty{display:none}.editor-dock #save-status{flex-basis:100%;font:13px Manrope}.editor-dock #next{margin-left:auto;min-width:140px}.review-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.app-wrap button.edit-moment{background:transparent!important;border:0!important;padding:8px;min-height:44px;color:#202024!important}.edit-moment svg{width:23px;height:23px}.review-grid{display:block;max-width:700px}.review-moment{padding:28px 0;border-bottom:1px solid #d7d4ce;background:transparent}.review-moment img{display:block;width:100%;height:auto!important;max-height:none!important;aspect-ratio:auto!important;object-fit:contain!important}.review-moment audio{width:100%}.review-moment p{white-space:pre-wrap;overflow-wrap:anywhere}.app-wrap :focus-visible{outline-color:#202024!important}.sent-card{max-width:510px;margin:auto}.sent-card #gift-card-image{display:block;width:100%;height:auto;margin:28px 0 18px}.sent-card .action-row{justify-content:flex-start}.app-wrap .download-keepsake img{object-fit:contain;background:#eeede7}.app-wrap .download-keepsake span{background:#e5e5d9}body.world-active{overflow:hidden;background:#f4f3ef}.world-active .m-top,.world-active .app-back,.world-active .app-foot,.world-active #notice{display:none}.world-active .app-wrap{padding:0;max-width:none}.world-active #app{padding:0;min-height:0}.world-active .scene-wrap{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;aspect-ratio:auto;margin:0;padding:0;border:0;border-radius:0;mask:none!important;-webkit-mask:none!important;filter:none;background:transparent}.world-active .scene-wrap iframe{width:100%;height:100%;display:block;border:0;border-radius:0;mask:none!important}.world-active #scene-status{position:fixed;bottom:0}body.card-only{margin:0;overflow:hidden}.card-only .app-wrap{padding:0}.card-only .m-top,.card-only .app-back,.card-only .app-foot,.card-only #notice,.card-only .sent-card>*:not(#gift-card-image){display:none}.card-only #app{padding:0;min-height:0}.card-only .sent-card{max-width:none}.card-only #gift-card-image{margin:0}/* Keep a clear gap for the fixed selection dock and visible focus on upload controls. */
.card-picker{padding-bottom:80px}.app-wrap button:disabled{cursor:not-allowed}.voice-row[disabled] .file-action{cursor:not-allowed}.name-row{grid-template-columns:1fr 1fr;gap:16px}.review-grid{margin-left:auto;margin-right:auto}.app-wrap .review-moment{border-bottom:1px solid #d7d4ce;padding:24px 0}.app-wrap .review-title .eyebrow{margin:0}.keepsake-page [hidden]{display:none!important}.gift-code-option{margin:18px 0 32px}.gift-code-row{display:flex;gap:12px;align-items:center}.gift-code-row input{min-width:0;flex:1;margin:0}.gift-code-row button{margin:0;flex:none}.gift-code-option form{max-width:420px}.gift-code-option label{font-size:14px}/* Passive artwork uses pre-rendered images,so shelf scrolling runs no SVG filters. */
.companion-icon{display:block;width:100%;height:auto;object-fit:contain}.companion .companion-icon{max-width:155px;margin:auto;transition:transform .2s}.companion[aria-pressed=true] .companion-icon{transform:translateY(-6px)}.gift-summary>.companion-icon{width:82px;flex:none;margin:0!important}/* Sender navigation and save feedback stay together on narrow phone screens. */
.sender-dock{display:block;padding-top:12px}.sender-dock .moment-navigation,.draft-save-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.sender-dock .moment-navigation{width:100%}.sender-dock #next{min-width:0;margin-left:auto}.draft-save-row{margin-top:10px;align-items:baseline}.sender-dock #save-status{flex:1;font:12px/1.4 Manrope;color:#69666e}.sender-dock #save-draft{font:600 15px/1 Manrope,sans-serif;letter-spacing:.01em;min-height:46px;white-space:nowrap;padding:0 20px;background:#fffdf8;color:#1f1f24;border:1.5px solid #d7d1c8;border-radius:999px;text-decoration:none}.sender-dock #save-draft:hover:not(:disabled){background:#f1eee6;color:#1f1f24}.sender-dock #save-draft.saved{color:#2f6b39;border-color:#b9d98c;background:#f3f8ea}.sender-dock #save-draft.saved::before{content:'✓ '}.sender-dock #compose-error{margin:0 0 10px;font:13px/1.5 Manrope;color:#8d352b}.sender-dock #compose-error:empty{display:none}.moment-heading{font:400 21px/1.3 Manrope!important;margin:0 0 18px!important}.app-wrap [aria-invalid=true]{border-color:#8d352b}.app-wrap [hidden]{display:none!important}/* Honest progress: measured upload parts,indeterminate network/processing waits. */
.entry-loading{max-width:420px;padding:24px 0}.entry-loading p{margin:0 0 14px;font-size:16px}progress{display:block;width:100%;height:4px;border:0;border-radius:8px;overflow:hidden;background:#dedbd3;accent-color:#44473e}progress::-webkit-progress-bar{background:#dedbd3;border-radius:8px}progress::-webkit-progress-value{background:#44473e;border-radius:8px}progress::-moz-progress-bar{background:#44473e;border-radius:8px}progress:indeterminate{background:linear-gradient(90deg,#dedbd3 0 35%,#686b5b 45% 55%,#dedbd3 65% 100%);background-size:240% 100%;animation:piece-loading 1.4s ease-in-out infinite}button[aria-busy=true]{position:relative;overflow:hidden;cursor:wait;opacity:.8}button[aria-busy=true]::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,transparent 0 35%,currentColor 45% 55%,transparent 65% 100%);background-size:240% 100%;animation:piece-loading 1.4s ease-in-out infinite}#save-status progress{margin-top:8px}#seal-hint,.action-status{flex-basis:100%;margin:0!important}.action-status .entry-loading{padding:6px 0;width:100%;max-width:none}.action-status .entry-loading p{font-size:13px}.action-status[hidden],#seal-hint[hidden]{display:none!important}@keyframes piece-loading{from{background-position:100% 0}to{background-position:0 0}}@media(prefers-reduced-motion:reduce){progress:indeterminate,button[aria-busy=true]::after{animation:none;background-position:50% 0}}progress:indeterminate{appearance:none;-webkit-appearance:none}progress:indeterminate::-webkit-progress-bar{background:transparent}/* Keep an honest loading state over the scene until its first complete frame. */
#world-loading{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:28px;background:var(--paper,#f4f3ef);color:#1f1f24}#world-loading .entry-loading{width:100%}/* the world's corner (owner,9 Oct 2026): start again,3D,how to play; the scene's own sound button keeps the corner itself */
.scene-wrap{position:relative}.scene-wrap .round,.world3d .round{width:40px;height:40px;min-width:0;min-height:0;border-radius:50%;border:1.5px solid rgba(31,31,36,.55)!important;background:rgba(253,251,247,.82)!important;color:#1f1f24!important;font:400 14px/1 "Post Office Letters",cursive;display:grid;place-items:center;cursor:pointer;padding:0;margin:0;letter-spacing:.03em;box-shadow:none;-webkit-tap-highlight-color:transparent}/* the same round as the scene's own sound button,so the corner reads as one row; the app's button rule is stronger,hence !important */
.scene-wrap .round:hover,.world3d .round:hover{background:#fdfbf7!important}.world3d{position:fixed;inset:0;z-index:30;background:#1f1f24}.world3d iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.world3d-bar{position:absolute;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));z-index:31;display:flex;gap:8px}.world3d-loading{position:absolute;left:0;right:0;bottom:max(80px,env(safe-area-inset-bottom));text-align:center;color:#fdfbf7;font:400 16px/1.3 "Post Office Letters",cursive;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.5)}body.in-3d{overflow:hidden}/* The chosen companion sits on a soft purple airbrush,like the box portrait; no underline,and the button hover rule no longer
/* the 2D's record button and its running time, as 3D has them (owner, 10 Oct 2026): a red dot left of the three squares and level with them (--foot-center, set by the page from the drawing's frame), a square while it records, and the time in a red pill at the top, under the corner's buttons as in 3D */
.scene-wrap .round.rec-button{position:absolute;left:max(14px,env(safe-area-inset-left));top:calc(var(--foot-center,88%) - 22px);z-index:6;width:44px;height:44px;border:1.6px solid #1f1f24!important;background:rgba(253,251,247,.94)!important}.scene-wrap .round.rec-button[hidden]{display:none}.scene-wrap .round.rec-button:disabled{opacity:.45;cursor:default}.scene-wrap .rec-button .dot{width:18px;height:18px;border-radius:50%;background:#cf3f2a;transition:border-radius .2s,transform .2s}.scene-wrap .rec-button.on .dot{border-radius:4px;transform:scale(.8)}.scene-wrap .rec-live{position:absolute;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);height:36px;display:flex;align-items:center;z-index:5;padding:0 14px;border-radius:999px;background:#cf3f2a;color:#fff;font:400 14px/1 "Post Office Letters",cursive;letter-spacing:.04em;pointer-events:none}.scene-wrap .rec-live[hidden]{display:none}
   paints its name white (on a phone the hover state stays after the tap) (owner,9 Oct 2026) */
.app-wrap button.companion:hover:not(:disabled),.app-wrap button.companion[aria-pressed=true]{color:var(--ink)}.app-wrap .companion{position:relative;isolation:isolate}.app-wrap .companion[aria-pressed=true] strong{border-bottom-color:transparent}.app-wrap .companion[aria-pressed=true]::before{content:'';position:absolute;inset:2% -2%;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,#cbb9e4 0,#d8cbe9 35%,transparent 72%);filter:blur(10px);pointer-events:none}/* The gift link as a field with a copy icon at its end; "Link copied!" shows in green for a moment (owner,9 Oct 2026) */
.app-wrap .link-field{position:relative;margin:14px 0 0}.app-wrap .link-field input{padding-right:52px;font:400 14px/1.5 Manrope,sans-serif;text-overflow:ellipsis;color:#4a474f}.app-wrap .link-field .copy-icon{position:absolute;right:6px;top:6px;bottom:6px;width:40px;padding:0;border:0;border-radius:6px;background:transparent!important;color:var(--ink)!important;display:grid;place-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}.app-wrap .link-field .copy-icon:hover{background:#eceae3!important}.app-wrap .link-field .copy-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.app-wrap .link-field .copied{position:absolute;right:52px;top:50%;transform:translateY(-50%);padding:4px 10px;border-radius:999px;background:#fffdf8;color:#2e8b4a;font:600 13px/1 Manrope,sans-serif;pointer-events:none;animation:copied-in .18s ease-out}.app-wrap .link-field .copied[hidden]{display:none}@keyframes copied-in{from{opacity:0;transform:translateY(-50%) translateX(6px)}to{opacity:1;transform:translateY(-50%)}}/* The basket bar at the foot of the shop pages (owner,9 Oct 2026): what is in the basket and the next bundle step; the one-line
   bundle offer when it is empty. The "All boxes" strip at the top is gone. */
.app-wrap .shop-bar{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--paper,#f4f3ef);border-top:1px solid #d4d0ca;padding:12px max(16px,env(safe-area-inset-left)) calc(14px + env(safe-area-inset-bottom));box-shadow:0 -6px 18px rgba(31,31,36,.06)}.app-wrap .shop-bar p{margin:0;font:400 14px/1.4 Manrope,sans-serif;color:var(--ink)}.app-wrap .shop-bar .shop-bar-line{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:960px;margin:0 auto}.app-wrap .shop-bar .shop-bar-basket{display:inline-flex;align-items:center;gap:8px}.app-wrap .shop-bar .shop-bar-basket svg{width:22px;height:22px;flex:none}.app-wrap .shop-bar .shop-bar-basket b{font-weight:600}.app-wrap .shop-bar .shop-bar-offer{color:#4a474f}.app-wrap .shop-bar .shop-bar-next{max-width:960px;margin:8px auto 0;color:#456941;font-size:13px}.app-wrap .shop-bar .per-box,.app-wrap .bundle-nudge .per-box{color:#6a676f}.app-wrap .shop-bar .soft-action{font-size:14px;padding:12px 18px;min-height:40px;flex:none}.app-wrap .shop-bar[hidden]{display:none}body:has(.app-wrap .shop-bar:not([hidden])) #app{padding-bottom:132px}.app-wrap .bundle-line{font:400 14px/1.5 Manrope,sans-serif;color:#456941;margin:18px 0 6px}.app-wrap .shop-return{margin:0 0 18px;font:500 13px/1.5 Manrope,sans-serif}.app-wrap .shop-return a{text-decoration:none}.app-wrap .bundle-nudge p,.app-wrap .bundle-nudge p .per-box{font:400 15px/1.5 Manrope,sans-serif}.app-wrap .bundle-nudge p .per-box{display:inline;color:#6a676f}/* The receiver's cover and the loading page before the world are flat pages: no top bar,no back link,no footer (owner,9 Oct 2026) */
body:has(#app>.gift-cover) .app-back,body:has(#app>.gift-cover) .app-foot,body:has(#app>.entry-loading) .app-back,body:has(#app>.entry-loading) .app-foot{display:none}/* the cover fits one screen: no head space,the drawing scales to the screen's height,nothing to scroll (owner,9 Oct 2026) */
.app-wrap .gift-cover{min-height:0;display:flex;flex-direction:column;justify-content:flex-start;padding-top:0}.app-wrap .gift-cover [data-box]{width:min(44vw,170px);margin:18px auto 16px}.app-wrap .gift-cover [data-box] svg,.app-wrap .gift-cover [data-box] img{display:block;width:100%;height:auto;max-height:none;transform:translateX(-4.5%)}/* the box sits centred and small with air above and below: the picture is as wide as its frame, and the drawing inside every box icon sits 18 of 400 px right of the square's centre, so it is pulled back by that much (owner,9 Oct 2026) */.app-wrap .gift-cover h1{margin:10px 0 8px}.app-wrap .gift-cover .lead{margin:0 0 8px}.app-wrap .gift-cover .hint{margin:0 0 14px}body:has(#app>.entry-loading) #app{min-height:100dvh;display:grid;place-content:center}/* Deleting is red (owner,9 Oct 2026) */
.app-wrap #confirm-delete{background:#c0392b!important;border-color:#c0392b!important;color:#fffdf8!important}/* One button style across the app (owner,9 Oct 2026): every button is a pill in Manrope. A main action wears the airbrush,a secondary
   action is an outlined cream pill,a text action stays an underlined line,and the one destructive action is a red pill. The small
   round world buttons,the quantity steppers,the copy icon and the tabs keep their own shapes. */
.app-wrap button:not(.secondary):not(.round):not(.companion):not([role=tab]):not(.copy-icon):not(.edit-moment):not(.remove-item):not(.text-action),.app-wrap .button:not(.secondary){position:relative;isolation:isolate;border:0;border-radius:999px;background:transparent!important;color:#1f1f24!important;font:600 15px/1 Manrope,sans-serif;letter-spacing:.02em;padding:15px 22px;min-height:45px;box-shadow:none;text-decoration:none;white-space:nowrap;text-align:center}.app-wrap button:not(.secondary):not(.round):not(.companion):not([role=tab]):not(.copy-icon):not(.edit-moment):not(.remove-item):not(.text-action)::before,.app-wrap .button:not(.secondary)::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;opacity:.72;filter:blur(3.5px);background:linear-gradient(110deg,#9DBDE6 0%,#E6F27A 30%,#429A50 55%,#9DBDE6 80%,#E6F27A 100%);background-size:200% 100%;animation:shop-colour 14s ease-in-out infinite alternate;pointer-events:none}.app-wrap button:not(.secondary):not(.round):not(.companion):not([role=tab]):not(.copy-icon):not(.edit-moment):not(.remove-item):not(.text-action):hover::before,.app-wrap .button:not(.secondary):hover::before{filter:blur(5px)}.app-wrap button:not(.secondary):not(.round):not(.companion):not([role=tab]):not(.copy-icon):not(.edit-moment):not(.remove-item):not(.text-action):disabled{opacity:.5}.app-wrap button.secondary:not(.text-action):not(.round),.app-wrap .button.secondary{border:1.6px solid #1f1f24;border-radius:999px;background:#fdfbf7;color:#1f1f24;font:600 15px/1 Manrope,sans-serif;letter-spacing:.02em;padding:14px 22px;min-height:45px;box-shadow:none;white-space:nowrap;text-align:center}.app-wrap button.secondary:not(.text-action):not(.round):hover:not(:disabled),.app-wrap .button.secondary:hover{background:#f1ede4;color:#1f1f24}.app-wrap .quantity button.secondary,.app-wrap .quantity button.secondary:hover:not(:disabled){width:36px;height:36px;min-height:36px;padding:0;border:1px solid var(--line);border-radius:50%;background:#fdfbf7;font:400 18px/1 Manrope,sans-serif}.app-wrap .box-quantity button.secondary,.app-wrap .box-quantity button.secondary:hover:not(:disabled){border:0;border-radius:0;background:none;color:#1f1f24;min-width:36px;min-height:40px;padding:4px;font:400 24px/1 Manrope,sans-serif}.app-wrap button.secondary.text-action,.app-wrap button.secondary.text-action:hover:not(:disabled){background:transparent;border:0;color:#1f1f24;border-radius:0;box-shadow:none;padding:0;min-height:36px;font:500 14px/1.5 Manrope,sans-serif;text-decoration:underline;text-underline-offset:4px;white-space:normal}.app-wrap #confirm-delete{background:#c0392b!important;color:#fffdf8!important;border:0}.app-wrap #confirm-delete::before{display:none}.app-wrap .shop-box-buy button:not(.secondary){font-size:13px;padding:13px 15px;min-height:40px}.app-wrap dialog:focus{outline:none}.app-wrap button:focus-visible{outline-offset:3px}/* Inside a gift,receiving or making it (#r #g #s #ticket): no site logo,nav links,back link or footer; only the language control
   stays,top right,on every page except the world itself (owner,9 Oct 2026) */
.receiver-side .m-top .m-logo,.receiver-side .m-nav > a,.receiver-side .app-back,.receiver-side .app-foot{display:none}.receiver-side .m-top{justify-content:flex-end;min-height:44px}.receiver-side #app{padding-top:8px}/* The bundle offer as an airbrush panel with a white card per tier (owner,9 Oct 2026) */
.app-wrap .bundle-panel{position:relative;isolation:isolate;border-radius:18px;padding:14px 14px 12px;margin:20px 0 8px;max-width:520px;overflow:hidden}.app-wrap .bundle-panel::before{content:'';position:absolute;inset:-24px;z-index:-1;opacity:.6;filter:blur(14px);background:linear-gradient(110deg,#9DBDE6 0%,#E6F27A 30%,#429A50 55%,#9DBDE6 80%,#E6F27A 100%);background-size:200% 100%;animation:shop-colour 14s ease-in-out infinite alternate;pointer-events:none}.app-wrap .bundle-panel .bundle-title{margin:0 0 10px;font:600 13px/1.4 Manrope,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#1f1f24}.app-wrap .bundle-tiers{display:grid;grid-template-columns:1fr 1fr;gap:10px}.app-wrap .bundle-tier{background:rgba(255,253,248,.84);border-radius:12px;padding:12px 10px;text-align:center;display:flex;flex-direction:column;gap:2px}.app-wrap .bundle-tier b{font:600 15px/1.3 Manrope,sans-serif;color:#1f1f24}.app-wrap .bundle-tier span{font:400 26px/1.1 var(--hand);color:#1f1f24}.app-wrap .bundle-tier small{font:400 12px/1.4 Manrope,sans-serif;color:#5b5760}.app-wrap .bundle-panel .bundle-note{margin:10px 0 0;font:400 13px/1.4 Manrope,sans-serif;color:#1f1f24}/* a card on the receipt: the same shape as the sent-gift page,a full-width download pill and the link in a field with its copy icon (owner,9 Oct 2026) */
.app-wrap .ticket-actions > .soft-action{display:block;width:100%;font-size:15px;padding:15px 22px;min-height:45px}.app-wrap .ticket-actions .link-field{margin:-10px 0 0;flex:1 0 100%;width:100%}/* 12px under the pill,like the sent-gift page */
.app-wrap .ticket-actions .card-save-actions{margin:12px 0 0}/* a line between the receipt's cards,so each card's download and link read as its own (owner,9 Oct 2026) */
@media screen{.app-wrap .ticket-card + .ticket-card{border-top:1px solid #d4d0ca;padding-top:28px;margin-top:32px}}/* inside a gift the page is one screen: no 60px tail under the app,no empty notice line (owner,9 Oct 2026) */
.receiver-side .app-wrap{padding-bottom:12px}.receiver-side #notice:empty{display:none}.receiver-side #app{padding-bottom:8px}.scene-wrap .round[hidden],.world3d .round[hidden]{display:none}

/* Every world a companion can carry, shown in the shop as its own pictures; the one in front turns (owner, 14 Oct 2026: no blind box). The
   pictures are the lite render's portrait frames (540 x 1080) on the site's wall colour, so they sit on the page with no edge; a card shows their middle. */
.worlds{margin:10px 0 70px}.worlds h2{margin:0 0 6px}.worlds .hint{margin:0 0 18px}
.world-shelf{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 4px 18px;margin:0 -4px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.world-card{flex:0 0 min(72vw,260px);scroll-snap-align:center;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;min-width:0;color:var(--ink);border:0;background:none}
.world-card h3{margin:0;font:500 .95rem/1.3 Manrope,sans-serif;display:flex;align-items:center;gap:8px;max-width:100%;white-space:nowrap}.world-card h3>span:last-child,.world-card h3{overflow:hidden;text-overflow:ellipsis}.world-number{font:600 .8rem/1 Manrope,sans-serif;color:#716878}.world-check{display:none;font-weight:700}
.world-view{width:100%;aspect-ratio:5/7;overflow:hidden;background:var(--wall,#F4F2EE);touch-action:pan-x pan-y;position:relative}   /* the frames are 1:2 with the world between 5% and 83% of their height: 5:7 at 35% shows it whole */
.world-view .world-poster{width:100%!important;height:100%!important;max-width:none;object-fit:cover;object-position:50% 35%;display:block;user-select:none;-webkit-user-drag:none;position:absolute;inset:0}
.world-view.turning{cursor:grab}.world-view.turning:active{cursor:grabbing}
.world-card .box-buy-control{min-height:0}
.world-shelf.picker .world-card{cursor:pointer}.world-shelf.picker .world-card[aria-pressed=true] h3{font-weight:700;text-decoration:underline;text-underline-offset:6px}.world-shelf.picker .world-card[aria-pressed=true] .world-check{display:inline}.world-shelf.picker .world-card[aria-pressed=false] .world-view{opacity:.82}
.world-line{margin:-6px 0 22px}.gift-summary .world-name{display:block;color:var(--muted,#6b6670)}
@media (min-width:860px){.world-card{flex-basis:230px}.world-shelf{gap:22px;scroll-snap-type:none}}   /* one row on every screen, scrolled sideways */
/* The quantity stepper (owner, 14 Oct 2026: "this +- button looks bad ... need more compact perfectly center button"): one small pill (the basket page’s lines and the shelf alike), the
   minus and plus as centred glyphs inside it, the count between; nothing of the page's general button paint reaches it. */
.app-wrap .box-quantity,.app-wrap .quantity{display:inline-flex;align-items:center;gap:0;height:34px;padding:0;border:1.5px solid #1f1f24;border-radius:999px;background:transparent}
.app-wrap .box-quantity button.secondary:not(.round):not(.text-action),.app-wrap .quantity button.secondary:not(.round):not(.text-action),.app-wrap .box-quantity button.secondary:not(.round):not(.text-action):hover:not(:disabled),.app-wrap .quantity button.secondary:not(.round):not(.text-action):hover:not(:disabled),.app-wrap .box-quantity button.secondary:not(.round):not(.text-action):disabled,.app-wrap .quantity button.secondary:not(.round):not(.text-action):disabled{all:unset;box-sizing:border-box;display:grid;place-items:center;width:34px;height:31px;border-radius:999px;color:#1f1f24;font:400 19px/1 Manrope,sans-serif;cursor:pointer;-webkit-tap-highlight-color:transparent}
.app-wrap .box-quantity button.secondary:not(.round):not(.text-action):hover:not(:disabled),.app-wrap .quantity button.secondary:not(.round):not(.text-action):hover:not(:disabled){background:#1f1f2414}
.app-wrap .box-quantity button.secondary:not(.round):not(.text-action):disabled,.app-wrap .quantity button.secondary:not(.round):not(.text-action):disabled{opacity:.35;cursor:default}
.app-wrap .box-quantity button.secondary:not(.round):not(.text-action):focus-visible,.app-wrap .quantity button.secondary:not(.round):not(.text-action):focus-visible{outline:2px solid #1f1f24;outline-offset:2px}
.app-wrap .box-quantity output,.app-wrap .quantity>span{display:grid;place-items:center;min-width:26px;height:31px;text-align:center;font:500 15px/1 Manrope,sans-serif;color:#1f1f24}
/* The worlds one at a time on a phone (owner, 14 Oct 2026: "side obj parts seep in weirdly"): each card is the shelf's full width and snaps,
   so no neighbour shows at the edges; the number is set like the name ("the number and name should be the same font size and style"). */
.app-wrap .world-number{font:inherit;color:inherit}
@media (max-width:859px){.app-wrap .world-shelf{scroll-snap-type:x mandatory;gap:0;padding:6px 0 18px;margin:0}.app-wrap .world-card{flex:0 0 100%;scroll-snap-align:center;scroll-snap-stop:always}}
.app-wrap .quantity+.remove-item{margin-left:14px}
/* the shelf card: the price above the control, both centred, whether the control is Add to basket or the stepper (owner, 14 Oct 2026) */
.app-wrap .shop-box-buy{flex-direction:column;gap:10px}.app-wrap .shop-box .box-buy-control{justify-items:center;gap:6px}
/* the shelf's Add to basket is the small size (the general button rule outranks .shop-box-buy by its many :not()s, so these carry !important) */
.app-wrap .shop-box-buy .soft-action{font-size:13px!important;padding:13px 15px!important;min-height:40px!important}
@media (max-width:359px){.app-wrap .shop-box-buy .soft-action{padding:12px 9px!important;font-size:12px!important}.app-wrap .shop-box .box-buy-control{max-width:100%}}   /* a 320 px screen: the two columns keep their buttons inside */

/* A note OR your voice: one choice of two, the chosen one filled; switching a filled one asks first, nothing is removed by a tap
   (owner, 17 Oct 2026: "unclear on add note OR voice ... auto delete another filled one ... very bad") */
.add-choices{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:22px 0 4px}
.add-or{font:400 15px/1 var(--hand,'Gochi Hand',cursive);color:#8a878c}
.app-wrap button.add-choice{font:600 15px/1.2 Manrope,sans-serif;border:1.5px solid #d7d1c8;border-radius:999px;background:#fffdf8;color:#1f1f24;padding:13px 12px;min-height:0;text-align:center}
.app-wrap button.add-choice:hover:not(:disabled){background:#f1eee6;color:#1f1f24}
.app-wrap button.add-choice[aria-checked=true],.app-wrap button.add-choice[aria-checked=true]:hover{background:#1f1f24;border-color:#1f1f24;color:#fffdf8}
.add-hint{margin:6px 0 0!important;text-align:center}
.switch-ask{margin:14px 0 0;padding:14px 16px;border-radius:16px;background:#fff6dd;border:1px solid #efd9a0}
.switch-ask p{margin:0 0 10px!important;font:500 15px/1.45 Manrope,sans-serif!important;color:#1f1f24}
.switch-ask div{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}
.app-wrap .switch-ask button.switch-yes{font:600 14px/1.2 Manrope,sans-serif;background:#1f1f24;color:#fffdf8;border:0;border-radius:999px;padding:11px 16px;min-height:0}
.add-panel{margin-top:16px}
/* The dock: Save progress at the left (it saves to the ticket link), the way on at the right */
.dock-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sender-dock .dock-row .moment-navigation{width:auto;gap:10px}
.app-wrap button.back-moment{font:600 18px/1 Manrope,sans-serif;width:46px;height:46px;min-height:0;padding:0;border:1.5px solid #d7d1c8;border-radius:50%;background:#fffdf8;color:#1f1f24}
.app-wrap button.back-moment:hover:not(:disabled){background:#f1eee6;color:#1f1f24}

/* The box page fits beside its box (owner, 17 Oct 2026: "make this smaller so it fit with the box ... the box doesnt need to move with
   scroll"): the column centred against the drawing, the facts small, the bundle offer one compact block */
@media(min-width:761px){.box-detail{align-items:center}.box-portrait{position:static}}
.box-detail .hint{font-size:14px!important;line-height:1.5;margin:6px 0 0}
.box-detail .bundle-panel{padding:10px 10px 9px;margin:16px 0 0;border-radius:16px;max-width:460px}
.box-detail .bundle-title{font-size:11px;margin:0 0 8px}
.box-detail .bundle-tiers{gap:8px}
.box-detail .bundle-tier{padding:8px 8px 9px;border-radius:11px;gap:1px}
.box-detail .bundle-tier b{font-size:13px}.box-detail .bundle-tier span{font-size:21px}.box-detail .bundle-tier small{font-size:11px}
.box-detail .bundle-note{font-size:12px!important;margin:8px 2px 0}
/* a world's name under its world: whole, centred, on two lines if it needs them, never over the world or the next one */
.world-card h3{display:block;white-space:normal;overflow:visible;text-overflow:clip;text-align:center;text-wrap:balance;padding:8px 14px 0;line-height:1.25}.world-card h3>span:not(.world-check){display:inline}.world-card h3>span:first-child{margin-right:.45em}
.world-card h3>span:last-child{overflow:visible;text-overflow:clip}

/* The box page's column, tight (owner, 17 Oct 2026: "not utilise space well"): the name and its line, then the price and the button on one
   row, one short line of facts, the bundle offer */
.box-detail h1{margin:0 0 4px}.box-detail .lead{margin:0}
.buy-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px 24px;margin:22px 0 10px}
.buy-row .box-price{margin:0;font:600 30px/1.05 Manrope,sans-serif}
.buy-row .box-price small{display:block;margin-top:3px;font:400 13px/1.3 Manrope,sans-serif;color:#706578}
.buy-row .box-buy-control{min-height:0;justify-items:start}
/* each world whole in its frame, never cropped (owner, 17 Oct 2026: "its still get cut"): its pictures are taller than the frame, so
   they are fitted, not filled, which also leaves air round the world and under it before its name */
/* (measured over all 123 worlds' pictures: something is drawn between 5.4% and 83.6% of their height; the frame shows 4% to 85%, so the
   tallest world keeps its top and the name sits under the island, not under empty floor; owner 17 Oct 2026: "name is not too far down") */
.world-view{aspect-ratio:100/113.4}
.world-view .world-poster{object-fit:contain!important;object-position:50% 50%!important;height:123.5%!important;top:-4.94%!important;bottom:auto!important}

/* The photo is the moment (owner, 17 Oct 2026): a large tile to fill, then one line offering a note or a voice to go with it */
.photo-hero{margin:4px 0 0;padding:0 0 4px}
.photo-hero img{display:block;width:100%;max-height:340px;object-fit:cover;border-radius:18px;background:#eae8df}
.photo-empty{display:grid;place-items:center;align-content:center;gap:8px;width:100%;aspect-ratio:4/3;max-height:300px;border:1.5px dashed #b9b3a8;border-radius:18px;background:#f7f5ef;cursor:pointer;color:#1f1f24}
.photo-empty .photo-symbol{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-size:28px;background:#1f1f24;color:#fffdf8}
.photo-empty b{font:600 16px/1.2 Manrope,sans-serif}
.photo-empty:hover{background:#f1eee6}
.photo-actions{display:flex;justify-content:space-between;align-items:center;margin-top:10px}
.tag-along{margin:22px 0 0!important;font:500 16px/1.45 Manrope,sans-serif!important;color:#1f1f24;text-align:center}
.add-choices{margin-top:12px}
/* (the site's rules for .secondary buttons and labels are stronger: these name them in full) */
.app-wrap .add-choices button.secondary.add-choice{border:1.5px solid #d7d1c8;background:#fffdf8;color:#1f1f24;padding:13px 12px;font:600 15px/1.2 Manrope,sans-serif;letter-spacing:0}
.app-wrap .add-choices button.secondary.add-choice[aria-checked=true],.app-wrap .add-choices button.secondary.add-choice[aria-checked=true]:hover:not(:disabled){background:#1f1f24;border-color:#1f1f24;color:#fffdf8}
.app-wrap .switch-ask button.secondary.switch-yes:not(.text-action),.app-wrap .switch-ask button.secondary.switch-yes:not(.text-action):hover:not(:disabled){background:#1f1f24;border-color:#1f1f24;color:#fffdf8;font:600 14px/1.2 Manrope,sans-serif;padding:11px 16px}
.app-wrap .photo-empty{display:grid;margin:0;font-size:inherit}
.app-wrap .photo-actions label{display:inline;margin:0}
