:root{--paper: #fbf6ee;--paper-2: #f6efe4;--ink: #2b2622;--muted: #8c8076;--rose: #b4596b;--rose-deep: #8e3d52;--rose-soft: #e7c6cd;--gold: #b08a4f;--gold-soft: #d8c39a;--line: rgba(43, 38, 34, .12);--shadow: 0 18px 50px rgba(80, 50, 45, .12);--shadow-lg: 0 34px 90px rgba(80, 45, 45, .2);--serif: "Newsreader", ui-serif, Georgia, serif;--display: "Fraunces", ui-serif, Georgia, serif;--grotesk: "Hanken Grotesk", ui-sans-serif, system-ui, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{margin:0;color:var(--ink);font-family:var(--serif);font-size:1.06rem;line-height:1.7;background:var(--paper);position:relative;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-3;background:radial-gradient(38% 48% at 16% 14%,#f6dfe2 0%,transparent 62%),radial-gradient(42% 52% at 86% 18%,#f3e6cd 0%,transparent 62%),radial-gradient(48% 58% at 78% 90%,#efd9df 0%,transparent 62%),radial-gradient(44% 54% at 10% 88%,#f4ead4 0%,transparent 62%),var(--paper);background-size:180% 180%;animation:bgShift 32s ease-in-out infinite}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E")}@keyframes bgShift{0%,to{background-position:0% 0%,100% 0%,100% 100%,0% 100%,0 0}50%{background-position:18% 26%,72% 18%,82% 74%,18% 82%,0 0}}.motes{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;overflow:hidden}.mote{position:absolute;bottom:-6%;border-radius:50%;filter:blur(1px);will-change:transform;animation-name:floatUp;animation-timing-function:linear;animation-iteration-count:infinite}.mote.warm{background:radial-gradient(circle,#d8c39ae6,#b08a4f00 70%)}.mote.rose{background:radial-gradient(circle,#e7c6cde6,#b4596b00 70%)}@keyframes floatUp{0%{transform:translateY(0) translate(0)}to{transform:translateY(-116vh) translate(var(--drift, 40px))}}.eyebrow{font-family:var(--grotesk);text-transform:uppercase;letter-spacing:.32em;font-size:.72rem;font-weight:600;color:var(--gold);margin:0}.rule{display:flex;align-items:center;justify-content:center;gap:.7rem;margin:1.1rem 0}.rule span{display:block;height:1px;width:64px}.rule span:first-child{background:linear-gradient(90deg,transparent,var(--gold))}.rule span:last-child{background:linear-gradient(90deg,var(--gold),transparent)}.rule b{color:var(--gold);font-size:.8rem;font-style:normal;font-weight:400}.page{max-width:960px;margin:0 auto;padding:3rem 1.5rem 6rem}.hero{text-align:center;padding:2rem 0 2.4rem;animation:rise .9s cubic-bezier(.2,.8,.2,1) both}.hero .eyebrow{animation:fade 1.2s .2s both}.wordmark{font-family:var(--display);font-optical-sizing:auto;font-weight:400;font-size:clamp(3rem,9vw,5.2rem);line-height:.98;letter-spacing:-.015em;margin:.6rem 0 0;color:var(--ink)}.wordmark em{font-style:italic;font-weight:300;background:linear-gradient(100deg,var(--rose-deep),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}.subtitle{font-family:var(--serif);font-style:italic;font-size:1.12rem;color:var(--muted);max-width:540px;margin:0 auto}.identity-card{display:grid;grid-template-columns:minmax(180px,.65fr) minmax(0,1.35fr);gap:1.4rem;align-items:end;margin:0 0 1.4rem;padding:1.4rem;background:#fffdfac7;border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);animation:rise .8s .05s both}.section-kicker{margin:0 0 .25rem;font-family:var(--grotesk);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--rose-deep)}.identity-card h2{margin:0;font-family:var(--display);font-size:clamp(1.45rem,3.6vw,2.1rem);line-height:1.05;font-weight:400}.identity-form{margin-top:0}.dropzone{position:relative;border:1px solid var(--line);background:#fffdfab3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:6px;padding:3.4rem 1.5rem;text-align:center;cursor:pointer;transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s,border-color .4s,background .4s;animation:rise .8s .1s both}.dropzone:before{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border:1px solid var(--line);border-radius:3px;pointer-events:none;transition:inset .4s ease,border-color .4s}.dropzone:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--gold-soft)}.dropzone:hover:before{top:6px;right:6px;bottom:6px;left:6px;border-color:var(--gold-soft)}.dropzone.disabled{opacity:.55;pointer-events:none}.dropzone-icon{color:var(--rose);display:inline-flex;animation:floaty 4.5s ease-in-out infinite}.dropzone-title{font-family:var(--display);font-size:1.5rem;font-weight:400;margin:.9rem 0 .3rem}.dropzone-title b{color:var(--rose-deep);font-weight:500}.hint{color:var(--muted);font-family:var(--grotesk);font-size:.8rem;letter-spacing:.04em;text-transform:uppercase}.grid-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.1rem;margin-top:1.6rem}.thumb{position:relative;margin:0;background:#fff;padding:7px;border-radius:4px;box-shadow:var(--shadow);transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s;animation:rise .6s both}.thumb:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}.thumb img{width:100%;height:150px;object-fit:cover;display:block;border-radius:2px}.thumb.milestone{box-shadow:0 0 0 1px var(--gold),var(--shadow)}.thumb.milestone:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:4px;pointer-events:none;box-shadow:inset 0 0 0 2px var(--gold-soft);animation:glow 3s ease-in-out infinite}.thumb figcaption{font-family:var(--serif);font-style:italic;font-size:.82rem;color:var(--muted);padding:.5rem .4rem .2rem}.thumb .tag{position:absolute;top:14px;left:14px;background:var(--ink);color:var(--paper);font-family:var(--grotesk);font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;padding:.25rem .55rem;border-radius:2px;animation:pop .5s .2s backwards}.thumb .tag:before{content:""}.thumb .tag.warn{top:auto;bottom:14px;background:#8a2f24}.thumb .tag.warn:before{content:""}.thumb .remove{position:absolute;top:12px;right:12px;width:26px;height:26px;border:none;border-radius:50%;background:#140f0e99;color:#fff;font-size:1.1rem;cursor:pointer;line-height:1;opacity:0;transform:scale(.8);transition:opacity .2s,transform .2s,background .2s}.thumb:hover .remove{opacity:1;transform:scale(1)}.thumb .remove:hover{background:var(--rose-deep)}.identity-card{margin-top:1.6rem;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.4rem 2.2rem;background:#fffdfad1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:6px;padding:1.7rem 1.9rem;box-shadow:var(--shadow);animation:rise .7s .05s both}.section-kicker{font-family:var(--grotesk);text-transform:uppercase;letter-spacing:.22em;font-size:.66rem;font-weight:600;color:var(--gold);margin:0 0 .4rem}.identity-card h2{font-family:var(--display);font-weight:400;font-size:1.5rem;line-height:1.15;margin:0;color:var(--ink)}.identity-form{flex:1 1 440px;margin-top:0!important}.panel{margin-top:1.8rem;background:#fffdfad1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:6px;padding:2rem;box-shadow:var(--shadow);animation:rise .7s both}.summary{font-family:var(--grotesk);font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:1rem}.summary strong{color:var(--rose-deep)}.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.1rem;margin-top:1.8rem}.form label{display:flex;flex-direction:column;gap:.4rem;font-family:var(--grotesk);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.form input,.form select{padding:.7rem .8rem;border:1px solid var(--line);border-radius:4px;font-size:1rem;font-family:var(--serif);background:#fff;transition:border-color .25s,box-shadow .25s}.form input:focus,.form select:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px #d8c39a66}.actions{display:flex;gap:.9rem;justify-content:flex-end;margin-top:1.8rem;flex-wrap:wrap}.btn{position:relative;overflow:hidden;font-family:var(--grotesk);font-weight:600;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;padding:.85rem 1.7rem;border-radius:3px;border:none;cursor:pointer;transition:transform .15s,box-shadow .3s,background .3s,color .3s}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--rose-deep);color:var(--paper);box-shadow:0 10px 26px #8e3d5252}.btn.primary:hover{background:var(--rose);transform:translateY(-2px);box-shadow:0 16px 34px #8e3d5266}.btn.primary:disabled{background:#cdbfc2;color:#fff;cursor:not-allowed;box-shadow:none}.btn.primary:after{content:"";position:absolute;top:0;left:-120%;width:55%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:skew(-20deg);transition:left .7s ease}.btn.primary:hover:after{left:140%}.btn.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}.btn.ghost:hover{border-color:var(--gold);color:var(--rose-deep)}.loading{text-align:center;margin-top:2.6rem;animation:rise .5s both}.loader-ring{width:46px;height:46px;margin:0 auto;border-radius:50%;border:2px solid var(--line);border-top-color:var(--gold);border-right-color:var(--rose);animation:spin 1s linear infinite}.loading-text{font-family:var(--display);font-style:italic;font-size:1.2rem;color:var(--rose-deep);margin:1rem 0 0}.loading-text .dots span{animation:blink 1.4s infinite}.loading-text .dots span:nth-child(2){animation-delay:.2s}.loading-text .dots span:nth-child(3){animation-delay:.4s}.loading-bar{height:2px;width:240px;margin:1.1rem auto 0;background:var(--line);overflow:hidden}.loading-bar:before{content:"";display:block;height:100%;width:42%;background:linear-gradient(90deg,var(--gold),var(--rose));animation:slide 1.5s ease-in-out infinite}.alert{background:#fbeae8;color:#8a2f24;border:1px solid #e6c3bd;padding:.9rem 1.1rem;border-radius:4px;margin-bottom:1rem;font-family:var(--grotesk);font-size:.9rem;animation:shake .4s both}.book{max-width:820px;margin:0 auto;padding:2.4rem 1.5rem 6rem}.book-actions{display:flex;justify-content:space-between;margin-bottom:1.8rem;animation:rise .5s both}.story{position:relative;background:linear-gradient(180deg,#fffdfa,#fdf8f1);border:1px solid var(--line);border-radius:4px;padding:0;box-shadow:var(--shadow-lg);overflow:hidden;animation:rise .9s cubic-bezier(.2,.8,.2,1) both}.cover{position:relative;text-align:center;padding:4.5rem 2.8rem 3.6rem;border-bottom:1px solid var(--line)}.cover:before{content:"";position:absolute;top:18px;right:18px;bottom:18px;left:18px;border:1px solid var(--gold-soft);border-radius:2px;pointer-events:none}.cover .eyebrow{animation:fade 1.4s .3s both}.cover-title{font-family:var(--display);font-optical-sizing:auto;font-weight:400;font-size:clamp(2.4rem,6.5vw,4rem);line-height:1.04;letter-spacing:-.02em;margin:1.1rem auto .4rem;max-width:14ch;color:var(--ink)}.cover-byline{font-family:var(--grotesk);font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-top:1.4rem}.story-body{padding:3.2rem clamp(1.6rem,5vw,4rem) 3.6rem}.sblock{animation:revealBlock .9s cubic-bezier(.2,.8,.2,1) both;margin:0 0 1.3rem}.sblock.dedication{font-family:var(--display);font-style:italic;font-weight:300;font-size:1.4rem;line-height:1.5;color:var(--rose-deep);text-align:center;max-width:30ch;margin:0 auto 2.6rem}.chapter-head{margin:2.8rem 0 1.1rem}.chapter-head:first-child{margin-top:0}.chapter-num{font-family:var(--grotesk);font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);display:block;margin-bottom:.5rem}.sblock.heading h2{font-family:var(--display);font-weight:400;font-size:clamp(1.6rem,3.5vw,2.1rem);line-height:1.15;margin:0;color:var(--ink)}.sblock.paragraph{font-size:1.14rem;line-height:1.78;color:#3a342f}.sblock.paragraph.lead:first-letter{font-family:var(--display);font-weight:500;font-size:3.6em;line-height:.72;float:left;padding:.05em .12em 0 0;color:var(--rose-deep)}.chapter-photos{display:grid;gap:1rem;margin:1.4rem 0 1.8rem}.chapter-photos.count-1{grid-template-columns:1fr}.chapter-photos.count-2{grid-template-columns:1fr 1fr}.chapter-photos.count-3{grid-template-columns:repeat(3,1fr)}.plate{margin:0}.plate .frame{background:#fff;padding:8px;border-radius:3px;box-shadow:var(--shadow);overflow:hidden}.plate img{width:100%;height:300px;object-fit:cover;display:block;border-radius:1px;transition:transform 6s ease}.count-2 .plate img,.count-3 .plate img{height:210px}.plate:hover img{transform:scale(1.06)}.plate figcaption{font-family:var(--grotesk);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:center;margin-top:.6rem}.sblock.closing-line{text-align:center;margin:2.8rem auto 0;max-width:32ch;font-family:var(--display);font-style:italic;font-weight:300;font-size:1.34rem;line-height:1.5;color:var(--rose-deep)}.sblock.closing-line:before{content:"❦";display:block;color:var(--gold);font-size:1.5rem;margin-bottom:.9rem;font-style:normal}.writing{text-align:center;font-family:var(--grotesk);font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:1.2rem 0 0}.writing .caret{display:inline-block;width:2px;height:.9em;background:var(--rose);margin-left:6px;vertical-align:-1px;animation:blink 1s step-end infinite}.story-controls{text-align:center;margin-top:1.4rem}@keyframes rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes revealBlock{0%{opacity:0;transform:translateY(20px);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes glow{0%,to{box-shadow:inset 0 0 0 2px var(--gold-soft)}50%{box-shadow:inset 0 0 0 2px var(--gold),inset 0 0 18px #b08a4f59}}@keyframes pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes blink{50%{opacity:.25}}@keyframes slide{0%{transform:translate(-130%)}to{transform:translate(380%)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}@media (max-width: 640px){.identity-card{grid-template-columns:1fr;align-items:start}.story-body{padding:2.2rem 1.4rem 2.6rem}.cover{padding:3.2rem 1.5rem 2.6rem}.chapter-photos.count-2,.chapter-photos.count-3{grid-template-columns:1fr}.count-2 .plate img,.count-3 .plate img{height:280px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}.motes{display:none}}@media print{@page{size:A4 portrait;margin:0}.no-print,.motes,.book-actions,.story-controls,.writing{display:none!important}body:before,body:after{display:none}html,body{background:#fff}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}.book{margin:0;padding:0;max-width:none}.story{box-shadow:none;border:none;border-radius:0;background:#fff;animation:none;overflow:visible}.sblock{animation:none}.cover{min-height:100vh;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:28mm;border:none;background:linear-gradient(165deg,#fbeede,#f5dfe4 60%,#efd6dd);break-after:page}.cover:before{top:12mm;right:12mm;bottom:12mm;left:12mm;border:1px solid var(--gold)}.cover-title{font-size:32pt;max-width:16ch}.cover .eyebrow{font-size:10pt}.story-body{padding:0}.sblock.dedication{min-height:92vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:26mm;margin:0;font-size:20pt;break-after:page}.chapter-head{break-before:page;padding:22mm 22mm 0;margin:0}.chapter-num{font-size:9pt}.sblock.heading h2{font-size:24pt}.chapter-photos{grid-template-columns:1fr!important;gap:8mm;padding:6mm 18mm 0;break-inside:avoid;margin:8mm 0}.plate{break-inside:avoid}.plate .frame{padding:4mm;box-shadow:0 4mm 12mm #50322d2e}.plate img{height:150mm}.plate figcaption{font-size:9pt}.sblock.paragraph{padding:0 22mm;break-inside:avoid;font-size:13pt;line-height:1.7}.sblock.paragraph.lead:first-letter{color:var(--rose-deep)}.sblock.closing-line{break-before:page;min-height:88vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:26mm;font-size:19pt;max-width:none}}
