:root,[data-theme=heirloom]{--ground: #ece6db;--ground-deep: #e2dacc;--paper: #f9f5ee;--paper-shade: #efe9dd;--ink: #3e2237;--ink-60: rgba(62, 34, 55, .6);--ink-38: rgba(62, 34, 55, .38);--ink-14: rgba(62, 34, 55, .14);--rose: #bd8d86;--rose-deep: #a97970;--olive: #7d7b5a;--olive-38: rgba(125, 123, 90, .38);--font-display: "Fraunces", "Georgia", serif;--font-message: "Cormorant Garamond", "Georgia", serif;--font-label: "Jost", "Avenir Next", sans-serif;--page-margin: 7.5%;--page-gutter: 12px;--page-radius: 3px;--shadow-lift: 0 1px 2px rgba(62, 34, 55, .08), 0 8px 28px rgba(62, 34, 55, .12);--shadow-page: 0 1px 1px rgba(62, 34, 55, .06), 0 10px 34px rgba(62, 34, 55, .16)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}#root{min-height:100%}body{background:var(--ground);color:var(--ink);font-family:var(--font-display);font-weight:400;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}img{display:block;max-width:100%}.label{font-family:var(--font-label);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 28px;border-radius:2px;font-family:var(--font-label);font-size:12px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;transition:background .18s ease,color .18s ease,opacity .18s ease;text-decoration:none}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:#55304c}.btn-primary:disabled{opacity:.45;cursor:default}.btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink-38)}.btn-ghost:hover{box-shadow:inset 0 0 0 1px var(--ink)}.btn-ghost:disabled{opacity:.4;cursor:default}.btn-quiet{color:var(--ink-60);min-height:44px;padding:0 16px;font-family:var(--font-label);font-size:11px;letter-spacing:.16em;text-transform:uppercase}.btn-quiet:hover{color:var(--ink)}.rule{height:1px;background:var(--ink-14);border:none}.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--paper);box-shadow:var(--shadow-lift);font-family:var(--font-label);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);white-space:nowrap}.chip .dot{width:6px;height:6px;border-radius:50%;background:var(--olive)}.field{display:flex;flex-direction:column;gap:8px}.field>label{font-family:var(--font-label);font-size:10.5px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-60)}.field input[type=text],.field input[type=date],.field input[type=email],.field textarea{font-family:var(--font-display);font-size:17px;font-weight:400;color:var(--ink);background:transparent;border:none;border-bottom:1px solid var(--ink-38);border-radius:0;padding:6px 2px 10px;outline:none;transition:border-color .18s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.field input:focus,.field textarea:focus{border-bottom-color:var(--ink)}.field textarea{font-family:var(--font-message);font-style:italic;font-size:19px;line-height:1.5;resize:none}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:26px;background:transparent}input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--ink-38)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:var(--ink);margin-top:-10px}input[type=range]::-moz-range-track{height:2px;background:var(--ink-38)}input[type=range]::-moz-range-thumb{width:22px;height:22px;border:none;border-radius:50%;background:var(--ink)}.screen{min-height:100%;display:flex;flex-direction:column;align-items:center;padding:max(20px,env(safe-area-inset-top)) 20px max(28px,env(safe-area-inset-bottom))}.screen-narrow{width:100%;max-width:560px;margin:0 auto}.wordmark{font-family:var(--font-display);font-weight:300;font-style:italic;font-size:22px;letter-spacing:.02em;color:var(--ink);text-decoration:none}.demo-banner{position:fixed;bottom:0;left:0;right:0;z-index:60;text-align:center;padding:6px 12px calc(6px + env(safe-area-inset-bottom));background:var(--olive);color:var(--paper);font-family:var(--font-label);font-size:10px;letter-spacing:.14em;text-transform:uppercase}.hero{text-align:center;padding:9vh 0 5vh}.hero .brand{font-family:var(--font-display);font-weight:300;font-style:italic;font-size:clamp(44px,9vw,72px);line-height:1.05}.hero .tagline{margin-top:18px;font-family:var(--font-message);font-style:italic;font-size:clamp(19px,3.4vw,23px);color:var(--ink-60);line-height:1.45}.hero .ornament{margin-top:26px;color:var(--rose);font-weight:300;font-size:18px;letter-spacing:.5em}.setup{width:100%;max-width:460px;margin:0 auto;display:flex;flex-direction:column;gap:26px;padding-bottom:60px}.setup h1{font-family:var(--font-display);font-weight:400;font-size:30px;text-align:center;margin-top:2vh}.names-row{display:flex;align-items:flex-end;gap:14px}.names-row .field{flex:1}.names-row .amp{font-family:var(--font-message);font-style:italic;font-size:24px;color:var(--rose);padding-bottom:8px}.derived-sentence{font-family:var(--font-message);font-style:italic;font-size:18px;color:var(--olive);text-align:center}.theme-pick{display:flex;gap:12px}.theme-card{flex:1;border:1px solid var(--ink-14);padding:14px;text-align:left;display:flex;flex-direction:column;gap:10px;border-radius:3px;transition:border-color .15s ease}.theme-card.selected{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.theme-card.soon{opacity:.45;cursor:default}.theme-card .swatches{display:flex;gap:6px}.theme-card .swatches i{width:18px;height:18px;border-radius:50%;display:block}.theme-card .theme-name{font-family:var(--font-display);font-size:16px}.theme-card .theme-tag{font-family:var(--font-label);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-60)}.book-screen{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.book-chrome-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:max(14px,env(safe-area-inset-top)) 18px 10px}.book-chrome-top .names{font-family:var(--font-label);font-size:11px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-60);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-stage{flex:1;display:flex;align-items:center;justify-content:center;padding:8px 16px;touch-action:pan-y;user-select:none;-webkit-user-select:none;min-height:0;overflow:hidden}.book-fit{flex:1;align-self:stretch;min-width:0;display:flex;align-items:center;justify-content:center}.flipbook{flex:none;min-width:0!important;min-height:0!important}.stf__parent{position:relative;display:block;box-sizing:border-box;transform:translateZ(0);touch-action:pan-y}.stf__wrapper{position:relative;width:100%;height:100%;box-sizing:border-box}.stf__block{position:absolute;top:0;right:0;bottom:0;left:0;box-sizing:border-box;perspective:2600px}.stf__item{display:none;position:absolute;transform-style:preserve-3d}.stf__outerShadow,.stf__innerShadow,.stf__hardShadow,.stf__hardInnerShadow{position:absolute;left:0;top:0;pointer-events:none}.pf-page{background:var(--paper);overflow:hidden;box-shadow:0 1px 2px #3e22371a,0 14px 28px #3e223724}.pf-page.--right{border-radius:0 var(--page-radius) var(--page-radius) 0}.pf-page.--left{border-radius:var(--page-radius) 0 0 var(--page-radius)}.pf-page.--left:not([data-density=hard]):after,.pf-page.--right:not([data-density=hard]):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.pf-page.--left:not([data-density=hard]):after{background:linear-gradient(to left,rgba(62,34,55,.13),transparent 8%)}.pf-page.--right:not([data-density=hard]):after{background:linear-gradient(to right,rgba(62,34,55,.13),transparent 8%)}.page{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--paper);container-type:size;display:flex;flex-direction:column;padding:var(--page-margin) var(--page-margin) 4.5%}.page-ornament{height:11cqh;flex:none;display:flex;align-items:center;justify-content:center;margin-bottom:2.4cqh}.page-ornament .mark{font-family:var(--font-display);font-weight:300;font-size:4.4cqw;color:var(--rose);letter-spacing:.4em}.page-places{flex:1;min-height:0;display:flex;flex-direction:column;gap:var(--page-gutter)}.page-row{flex:1;min-height:0;display:flex;gap:var(--page-gutter)}.page-footer{flex:none;padding-top:2.6cqh;text-align:center;font-family:var(--font-display);font-size:2.6cqw;color:var(--ink-38);letter-spacing:.12em}.place{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;text-align:left}.polaroid{flex:1;min-height:0;display:flex;flex-direction:column;background:#fffdf9;padding:2.1cqw 2.1cqw 0;border-radius:1px;box-shadow:0 .4cqw .9cqw #3e223729,0 1.4cqw 2.6cqw #3e223721;transition:transform .2s ease}.polaroid.empty{box-shadow:0 .3cqw .7cqw #3e22371f,0 1cqw 2cqw #3e22371a}.polaroid.empty .place-caption:after{content:"";display:block;margin:4cqh 8% 0;height:1px;background:var(--ink-14)}.place.open:hover .polaroid,.place.mine:hover .polaroid{transform:translateY(-.6cqh)}.place-photo{flex:1;min-height:0;position:relative;overflow:hidden;background:var(--paper-shade)}.place-photo img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.place-caption{flex:none;padding:1.4cqh .4cqw 1.9cqh;min-height:11cqh}.place-caption .message{font-family:var(--font-message);font-style:italic;font-size:3.4cqw;line-height:1.35;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.place-caption .signer{margin-top:.9cqh;font-family:var(--font-label);font-size:2.1cqw;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-60)}.place.open .place-photo,.place.claimed .place-photo{background:var(--paper-shade);display:flex;align-items:center;justify-content:center}.place.open .place-photo:after,.place.claimed .place-photo:after{content:"";position:absolute;top:5%;right:5%;bottom:5%;left:5%;box-shadow:inset 0 0 0 1px var(--ink-14);pointer-events:none}.place-invite{position:relative;z-index:1;text-align:center;padding:6%}.place-invite .big{font-family:var(--font-message);font-style:italic;font-size:3.8cqw;color:var(--ink-60)}.place-invite .small{margin-top:1cqh;font-family:var(--font-label);font-size:2cqw;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--rose-deep)}.place.claimed .place-invite .small{color:var(--olive)}.place.open{cursor:pointer}.place.mine .place-invite .small{color:var(--rose-deep)}.polaroid.deco{flex:none;height:100%;padding-bottom:1.6cqw}.polaroid.deco .place-photo{flex:none;height:100%;aspect-ratio:4 / 3}.cover{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--ink);container-type:size;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--paper);border-radius:var(--page-radius);cursor:pointer}.cover:before{content:"";position:absolute;top:4.5%;right:4.5%;bottom:4.5%;left:4.5%;box-shadow:inset 0 0 0 1px #bd8d868c;pointer-events:none}.cover:after{content:"";position:absolute;top:5.5%;right:5.5%;bottom:5.5%;left:5.5%;box-shadow:inset 0 0 0 1px #bd8d8647;pointer-events:none}.cover .ornament{font-size:5cqw;color:var(--rose);letter-spacing:.4em;font-weight:300}.cover-portrait{flex:none;width:36cqw;aspect-ratio:1;border-radius:50%;overflow:hidden;position:relative;margin-bottom:1cqh;box-shadow:0 0 0 .7cqw var(--paper),0 0 0 1.1cqw var(--rose),0 1.6cqw 3cqw #0006}.cover-portrait img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.cover .names{margin:5cqh 8% 0;font-family:var(--font-display);font-weight:300;font-size:9.5cqw;line-height:1.18;text-align:center}.cover .amp{font-style:italic;color:var(--rose);font-size:7cqw;display:block;margin:.6cqh 0}.cover .date{margin-top:5cqh;font-family:var(--font-label);font-size:2.6cqw;font-weight:400;letter-spacing:.34em;text-transform:uppercase;color:#f9f5eebf}.cover .brand{position:absolute;bottom:7%;font-family:var(--font-display);font-style:italic;font-weight:300;font-size:2.8cqw;color:#f9f5ee80}.cover .open-hint{position:absolute;bottom:13%;font-family:var(--font-label);font-size:2.2cqw;letter-spacing:.3em;text-transform:uppercase;color:var(--rose)}.cover.back{cursor:default;justify-content:center}.cover.back .ornament{opacity:.55}.inside-cover{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--paper);container-type:size;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.4cqh;padding:var(--page-margin)}.inside-cover .mark{font-family:var(--font-display);font-weight:300;font-size:5cqw;color:var(--rose);letter-spacing:.4em}.inside-cover .note{font-family:var(--font-message);font-style:italic;font-size:3.6cqw;color:var(--ink-60);text-align:center;max-width:78%;line-height:1.5;white-space:pre-wrap}.inside-cover.welcome .note{color:var(--ink);font-size:4cqw}.polaroid.welcome-photo{flex:none;width:44cqw;max-width:60%}.polaroid.welcome-photo{padding-bottom:5cqw}.polaroid.welcome-photo .place-photo{flex:none;aspect-ratio:1}.welcome-from{font-family:var(--font-label);font-size:2.2cqw;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--rose-deep)}.book-chrome-bottom{flex:none;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 18px max(14px,env(safe-area-inset-bottom))}.page-indicator{font-family:var(--font-label);font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-60);min-width:130px;text-align:center}.nav-arrow{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink);font-size:20px;font-family:var(--font-display);transition:opacity .15s ease}.nav-arrow:disabled{opacity:.25;cursor:default}.nav-arrow:hover:not(:disabled){background:var(--ink-14)}.thumb-strip{flex:none;overflow-x:auto;display:flex;gap:10px;padding:6px 18px 14px;scrollbar-width:none}.thumb-strip::-webkit-scrollbar{display:none}.thumb{flex:none;width:46px;aspect-ratio:3 / 4;background:var(--paper);border-radius:2px;box-shadow:0 1px 4px #3e223726;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;position:relative;transition:transform .12s ease}.thumb:hover{transform:translateY(-2px)}.thumb.active{outline:2px solid var(--ink);outline-offset:2px}.thumb.is-cover{background:var(--ink)}.thumb .num{position:absolute;bottom:3px;font-family:var(--font-label);font-size:7px;letter-spacing:.1em;color:var(--ink-38)}.thumb .mini-dot{width:9px;height:9px;border-radius:1px;background:var(--paper-shade);box-shadow:inset 0 0 0 1px var(--ink-14)}.thumb .mini-dot.signed{background:var(--rose);box-shadow:none}.deco-btn{position:absolute;top:4%;right:4%;z-index:6;background:var(--ink);color:var(--paper);font-family:var(--font-label);font-size:9px;letter-spacing:.14em;text-transform:uppercase;padding:7px 10px;border-radius:2px;opacity:.92}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#3e22376b;display:flex;align-items:flex-end;justify-content:center;animation:overlay-in .2s ease}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.sheet{background:var(--paper);width:100%;max-width:520px;max-height:92dvh;overflow-y:auto;border-radius:10px 10px 0 0;padding:26px 24px calc(26px + env(safe-area-inset-bottom));animation:sheet-up .26s cubic-bezier(.22,.61,.36,1);position:relative}@media (min-width: 640px){.overlay{align-items:center}.sheet{border-radius:10px;padding-bottom:28px}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}.sheet-close{position:absolute;top:12px;right:12px;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink-60);font-size:20px}.sheet-close:hover{color:var(--ink);background:var(--ink-14)}.sheet h2{font-family:var(--font-display);font-weight:400;font-size:26px;line-height:1.2;margin-bottom:6px;padding-right:36px}.sheet .sub{font-family:var(--font-message);font-style:italic;font-size:18px;color:var(--ink-60);margin-bottom:20px;line-height:1.4}.tries{display:inline-flex;align-items:center;gap:7px;margin-bottom:18px}.tries .pip{width:9px;height:9px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--ink-38)}.tries .pip.left{background:var(--olive);box-shadow:none}.tries .label-text{font-family:var(--font-label);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-60);margin-left:4px}.camera-drop{border:1px solid var(--ink-14);outline:1px solid var(--ink-14);outline-offset:-7px;padding:40px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px;margin-bottom:20px}.camera-drop .hint{font-family:var(--font-message);font-style:italic;font-size:18px;color:var(--ink-60)}.preview-photo{width:100%;aspect-ratio:4 / 3;object-fit:cover;margin-bottom:16px;box-shadow:var(--shadow-lift)}.flow-actions{display:flex;flex-direction:column;gap:10px;margin-top:18px}.flow-actions .btn{width:100%}.char-count{font-family:var(--font-label);font-size:10px;letter-spacing:.12em;color:var(--ink-38);text-align:right;margin-top:4px}.char-count.over{color:var(--rose-deep)}.error-note{background:#bd8d8629;border-left:2px solid var(--rose-deep);padding:12px 14px;font-family:var(--font-message);font-style:italic;font-size:16px;color:var(--ink);margin-bottom:14px}.success-mark{text-align:center;padding:26px 0 8px}.success-mark .glyph{font-family:var(--font-display);font-weight:300;font-size:44px;color:var(--rose);letter-spacing:.3em;display:block;margin-bottom:14px}.spinner{width:22px;height:22px;border-radius:50%;border:2px solid var(--ink-14);border-top-color:var(--ink);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:calc(76px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:70;background:var(--ink);color:var(--paper);padding:12px 20px;border-radius:2px;font-family:var(--font-message);font-style:italic;font-size:16px;animation:overlay-in .2s ease;max-width:88vw;text-align:center}.admin-cards{width:100%;max-width:640px;display:flex;flex-direction:column;gap:18px;margin-top:22px}.card{background:var(--paper);box-shadow:var(--shadow-lift);border-radius:4px;padding:24px}.card h3{font-family:var(--font-display);font-weight:400;font-size:21px;margin-bottom:4px}.card .card-sub{font-family:var(--font-message);font-style:italic;font-size:16.5px;color:var(--ink-60);margin-bottom:16px;line-height:1.4}.stat-row{display:flex;gap:26px;flex-wrap:wrap}.stat .n{font-family:var(--font-display);font-weight:300;font-size:34px;line-height:1.1}.stat .t{font-family:var(--font-label);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-60)}.personalize-row{display:flex;align-items:flex-start;gap:16px}.personalize-actions{flex:1;min-width:0}.btn-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.btn-row .btn{min-height:40px;padding:0 18px}.avatar-frame,.welcome-thumb{flex:none;width:92px;height:92px;position:relative;overflow:hidden;background:var(--paper-shade);display:flex;align-items:center;justify-content:center;color:var(--rose);font-family:var(--font-display);font-size:22px}.avatar-frame{border-radius:50%;box-shadow:inset 0 0 0 1px var(--ink-14),0 0 0 3px var(--paper),0 0 0 4px var(--rose)}.welcome-thumb{background:#fffdf9;padding:5px 5px 14px;box-shadow:0 1px 3px #3e223729,0 6px 14px #3e22371f}.welcome-thumb img,.avatar-frame img{width:100%;height:100%;object-fit:cover}.link-line{display:flex;align-items:center;gap:10px;background:var(--paper-shade);padding:10px 14px;border-radius:2px;margin-bottom:12px}.link-line .url{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-label);font-size:12px;letter-spacing:.02em;color:var(--ink)}.qr-box{display:flex;justify-content:center;padding:8px 0 16px}.qr-box canvas{border:12px solid #fff;box-shadow:var(--shadow-lift)}.tier{display:flex;align-items:baseline;justify-content:space-between;gap:12px;width:100%;padding:16px 4px;border-bottom:1px solid var(--ink-14);text-align:left}.tier:hover{background:var(--paper-shade)}.tier .tier-name{font-family:var(--font-display);font-size:19px}.tier .tier-desc{font-family:var(--font-message);font-style:italic;font-size:15.5px;color:var(--ink-60)}.tier .tier-price{font-family:var(--font-display);font-weight:500;font-size:19px;white-space:nowrap}.demo-reveal{margin-top:14px;background:#7d7b5a1f;border-left:2px solid var(--olive);padding:12px 14px;font-size:13px;font-family:var(--font-label);letter-spacing:.04em;word-break:break-all;color:var(--ink)}.demo-reveal .tag{display:block;font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--olive);margin-bottom:6px}
