:root{--cream:#FFFFFF;--paper:#EEF3FA;--sage-deep:#022A61;--sage:#033982;--sage-soft:#5C7A9E;--kraft:#C7D6EA;--kraft-dark:#7C93AD;--ink:#0A1A2E;--gold:#033982}*{box-sizing:border-box}body{margin:0;background:var(--cream);font-family:Inter,sans-serif;color:var(--ink)}a{color:var(--sage-deep)}.page{max-width:520px;margin:0 auto;padding:32px 20px 80px}.center-page{text-align:center}.eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);font-weight:600}.script-heading{font-family:Alex Brush,cursive;font-size:52px;line-height:1.1;margin:10px 0 6px;color:var(--sage-deep);font-weight:400}.page-heading{font-family:Cormorant Garamond,serif;font-size:32px;font-weight:600;line-height:1.2;margin:6px 0;color:var(--sage-deep)}.muted{color:#4a6580;font-size:14px}.muted.small{font-size:12px}.script-heading+.link-btn,.page-heading+.link-btn,.muted+.link-btn{margin-top:10px}.guest-form{display:flex;flex-direction:column;gap:18px;margin-top:28px}.letter-page .guest-form{gap:26px;margin-top:32px}.guest-form label:not(.field-label){display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:600;color:var(--sage-deep)}.guest-form input:not(.field-input),.guest-form textarea:not(.field-input),.guest-form select:not(.field-input){font-family:Inter,sans-serif;font-size:15px;padding:13px 14px;border:1px solid #C7D6EA;border-radius:6px;background:var(--paper);color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}.guest-form input:not(.field-input):focus,.guest-form textarea:not(.field-input):focus,.guest-form select:not(.field-input):focus{outline:none;border-color:var(--sage);box-shadow:0 0 0 3px #0339821f}.primary-btn{align-self:center;background:var(--sage-deep);color:var(--cream);border:none;border-radius:6px;padding:13px 28px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s ease}.primary-btn:hover{opacity:.9}.primary-btn:disabled{opacity:.5;cursor:not-allowed}.guest-form>.primary-btn{align-self:stretch}.link-btn{display:inline-block;font-size:13px;font-weight:600;color:var(--sage-deep);text-decoration:underline;background:none;border:none;cursor:pointer;padding:0}.error{color:#a83232;font-size:13px}.letter-page{position:relative}.letter-page-deco{position:absolute;width:190px;height:190px;background-repeat:no-repeat;background-size:contain;pointer-events:none;z-index:0;opacity:.9}.letter-page-deco.tl{top:0;left:0;background-image:url(/deco-top-left.png);background-position:top left}.letter-page-deco.br{bottom:0;right:0;background-image:url(/deco-bottom-right.png);background-position:bottom right}.letter-page>*:not(.letter-page-deco){position:relative;z-index:1}.heart-divider{display:flex;align-items:center;justify-content:center;gap:10px;margin:10px 0 2px}.heart-divider .hd-line{width:56px;height:1px;background:linear-gradient(to right,transparent,#C7A96B)}.heart-divider .hd-line:last-child{background:linear-gradient(to left,transparent,#C7A96B)}.heart-divider .hd-heart{color:#c7a96b;font-size:13px}.date-strong{font-family:Inter,sans-serif;font-weight:600;font-size:16px;letter-spacing:.14em;color:var(--sage-deep);margin-top:6px}.intro-sub{font-size:14px;line-height:1.6;color:#5c7a9e;margin-top:12px}.sprig-divider{width:120px;height:20px;margin:14px auto 0;display:block}.field-label{display:flex;flex-direction:column;gap:9px}.field-label-text{display:flex;align-items:center;gap:7px;font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--sage-deep)}.field-label-text em{font-style:normal;font-weight:600;color:#8fa8c4}.leaf-mark{width:11px;height:11px;flex-shrink:0;background:#c7a96b;opacity:.75;clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%)}.field-input{font-family:Inter,sans-serif;font-size:15px;padding:15px 16px;border:1px solid #DCE6F2;border-radius:12px;background:#fcfdfe;color:var(--ink);box-shadow:0 2px 8px -4px #0339821f;transition:border-color .15s ease,box-shadow .15s ease;width:100%}.field-input::placeholder{color:#9daec2}.field-input:focus{outline:none;border-color:var(--sage);box-shadow:0 0 0 3px #0339821a}.field-textarea{resize:vertical;min-height:150px;line-height:30px}.field-textarea.ruled{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 29px,#E8EFF7 29px,#E8EFF7 30px);background-attachment:local;background-position:0 14px}.upload-card,.voice-card{display:flex;align-items:center;gap:14px;width:100%;padding:18px;border-radius:14px;cursor:pointer;text-align:left;font-family:Inter,sans-serif}.upload-card{border:1.5px dashed #B9CCE2;background:#f4f8fc}.voice-card{border:1px solid #DCE6F2;background:#fcfdfe;box-shadow:0 2px 8px -4px #0339821f}.upload-icon,.voice-mic{flex-shrink:0;width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center}.upload-icon{background:#e4edf7;color:var(--sage-deep)}.voice-mic{background:var(--sage-deep);color:#fff;box-shadow:0 0 0 5px #0339821a}.voice-mic.pulsing{background:#a83232;box-shadow:0 0 0 5px #a8323226;animation:voice-pulse 1.2s ease-in-out infinite}.voice-stop-square{width:14px;height:14px;border-radius:2px;background:#fff}.upload-card-text,.voice-card-text{display:flex;flex-direction:column;gap:3px}.upload-card-text strong,.voice-card-text strong{font-size:15px;font-weight:600;color:var(--sage-deep)}.upload-card-text em,.voice-card-text em{font-style:normal;font-size:12.5px;color:#7c95b0}.send-btn{display:flex;align-items:center;justify-content:center;gap:10px;border-radius:34px;padding:17px 28px;font-size:14px;letter-spacing:.14em;box-shadow:0 10px 24px -10px #0339828c}.send-btn-heart{color:#d8be86;font-size:16px}.reassurance{display:flex;align-items:flex-start;justify-content:center;gap:7px;text-align:center;font-size:12.5px;line-height:1.55;color:#7c95b0;margin-top:-4px}.reassurance-lock{color:#9daec2}.photo-capture{display:flex;flex-direction:column;align-items:center;gap:10px}.photo-preview{width:180px;height:180px;object-fit:cover;border-radius:8px;cursor:pointer;box-shadow:0 6px 16px -8px #0000004d}.retake-btn{font-size:12px;color:var(--sage);background:none;border:none;text-decoration:underline;cursor:pointer}.preview-block{margin-top:8px}.letter-canvas-preview,.final-preview{width:100%;max-width:320px;border-radius:8px;box-shadow:0 12px 30px -14px #03398266;display:block;margin:0 auto}.page-wide{max-width:640px}.view-switcher{display:flex;justify-content:center;gap:6px;margin:18px 0 28px}.view-switcher-btn{font-family:Inter,sans-serif;font-size:12.5px;font-weight:600;padding:8px 18px;border-radius:20px;border:1px solid #C7D6EA;background:var(--paper);color:#4a6580;cursor:pointer}.view-switcher-btn.active{background:var(--sage-deep);border-color:var(--sage-deep);color:var(--cream)}.book-view{display:flex;flex-direction:column;align-items:center;gap:18px}.book-page-wrap{perspective:1600px;width:100%;max-width:360px}.book-page{display:block;width:100%;border-radius:6px;box-shadow:0 20px 45px -18px #03398280;transform-origin:left center;transition:transform .22s ease,opacity .22s ease;backface-visibility:hidden}.book-page.flip-out-next{transform:rotateY(-95deg);opacity:.35}.book-page.flip-out-prev{transform:rotateY(95deg);opacity:.35}.book-page.flip-in-next{transform:rotateY(95deg);opacity:.35;transition:none}.book-page.flip-in-prev{transform:rotateY(-95deg);opacity:.35;transition:none}.book-page.flip-settled{transform:rotateY(0);opacity:1;transition:transform .24s ease,opacity .24s ease}.book-controls{display:flex;align-items:center;gap:18px}.book-nav-btn{font-family:Inter,sans-serif;font-size:13px;font-weight:600;padding:9px 16px;border-radius:6px;border:1px solid var(--sage-deep);background:var(--paper);color:var(--sage-deep);cursor:pointer}.book-nav-btn:disabled{opacity:.35;cursor:not-allowed}.book-counter{font-size:12.5px;color:#4a6580}.slideshow-view{display:flex;flex-direction:column;align-items:center;gap:18px}.slideshow-frame{width:100%;max-width:420px;border-radius:6px;overflow:hidden;box-shadow:0 24px 50px -20px #0339828c}.slideshow-photo{display:block;width:100%;animation:slideshow-fade .5s ease}@keyframes slideshow-fade{0%{opacity:0}to{opacity:1}}.slideshow-view.is-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;margin:0;z-index:100;background:#0a0a0a;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}.slideshow-view.is-fullscreen .slideshow-frame{width:auto;max-width:min(90vw,900px);max-height:78vh;border-radius:8px;box-shadow:0 40px 90px -30px #000c;display:flex;align-items:center;justify-content:center}.slideshow-view.is-fullscreen .slideshow-photo{width:auto;height:auto;max-width:min(90vw,900px);max-height:78vh;object-fit:contain;display:block;margin:0 auto}.slideshow-view.is-fullscreen .slideshow-controls{position:absolute;left:50%;bottom:24px;transform:translate(-50%);background:#ffffff14;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:14px 20px;border-radius:12px}.slideshow-view.is-fullscreen .book-nav-btn{background:#ffffff1a;color:#fff;border-color:#ffffff4d}.slideshow-view.is-fullscreen .slideshow-dot{background:#ffffff4d}.slideshow-view.is-fullscreen .slideshow-dot.active{background:#fff}.slideshow-controls{display:flex;flex-direction:column;align-items:center;gap:14px}.slideshow-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;max-width:320px}.slideshow-buttons{display:flex;gap:10px}.slideshow-dot{width:8px;height:8px;border-radius:50%;border:none;background:#c7d6ea;padding:0;cursor:pointer}.slideshow-dot.active{background:var(--sage-deep)}.portfolio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px 14px;margin-top:22px}.portfolio-item{display:flex;flex-direction:column;align-items:center;padding:0;border:none;background:none;cursor:pointer;text-align:center}.portfolio-photo-frame{position:relative;width:100%;background:#fff;padding:5px;border-radius:8px;border:1px solid #E4EDF7;box-shadow:0 3px 10px -5px #03398238;overflow:hidden;transition:box-shadow .18s ease,transform .18s ease}.portfolio-item:hover .portfolio-photo-frame{box-shadow:0 8px 20px -8px #03398252;transform:translateY(-2px)}.portfolio-photo-frame:before{content:"";display:block;padding-top:100%}.portfolio-thumb{position:absolute;top:5px;right:5px;bottom:5px;left:5px;width:calc(100% - 10px);height:calc(100% - 10px);object-fit:cover;border-radius:4px;display:block;transition:transform .15s ease}.portfolio-item:active .portfolio-thumb{transform:scale(.96)}.portfolio-name{font-family:Cormorant Garamond,serif;font-weight:600;font-size:15px;color:var(--sage-deep);margin-top:10px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.portfolio-caption{font-family:Inter,sans-serif;font-weight:600;font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:#9daec2;margin-top:4px}.qr-block{margin-top:20px;display:flex;flex-direction:column;align-items:center;gap:14px}.qr-image{width:220px;height:220px;border-radius:8px;box-shadow:0 12px 30px -14px #03398266;background:#fff;padding:12px}.admin-totals{display:flex;justify-content:center;gap:28px;margin-top:24px}.admin-stat{display:flex;flex-direction:column;align-items:center}.admin-stat-value{font-family:Cormorant Garamond,serif;font-size:30px;font-weight:600;color:var(--sage-deep);line-height:1.1}.admin-stat-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:#5c7a9e;margin-top:4px;white-space:nowrap}.admin-note{text-align:center;margin-top:18px}.admin-list{display:flex;flex-direction:column;gap:14px;margin-top:24px}.admin-row{background:var(--paper);border-radius:8px;padding:14px 16px}.admin-row-header{display:flex;justify-content:space-between;align-items:baseline;font-size:14px}.admin-links{display:flex;flex-direction:column;gap:3px;margin-top:8px;font-size:12px;word-break:break-all}.landing{padding-bottom:60px}.landing-hero{text-align:center;padding:20px 0 8px}.landing-title{font-size:56px;margin:10px 0 14px}.landing-tagline{font-family:Cormorant Garamond,serif;font-size:19px;color:#3a5578;max-width:420px;margin:0 auto 26px;line-height:1.5}.landing-cta{display:inline-block;width:auto;padding:14px 32px}.landing-section{margin-top:56px}.landing-section-title{font-family:Cormorant Garamond,serif;font-weight:600;font-size:24px;color:var(--sage-deep);text-align:center;margin-bottom:28px}.landing-steps{display:flex;flex-direction:column;gap:22px}.landing-step{display:flex;gap:16px;align-items:flex-start}.landing-step-number{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:var(--sage-deep);color:var(--cream);display:flex;align-items:center;justify-content:center;font-family:Cormorant Garamond,serif;font-weight:600;font-size:15px}.landing-step-title{font-family:Cormorant Garamond,serif;font-size:17px;font-weight:600;color:var(--ink);margin:0 0 4px}.landing-step-text{font-size:13.5px;color:#4a6580;margin:0;line-height:1.5}.landing-features{display:grid;grid-template-columns:1fr 1fr;gap:18px}.landing-feature{background:var(--paper);border-radius:8px;padding:16px}.landing-feature-title{font-family:Cormorant Garamond,serif;font-size:15.5px;font-weight:600;color:var(--sage-deep);margin:0 0 6px}.landing-feature-text{font-size:12.5px;color:#4a6580;margin:0;line-height:1.5}@media (max-width: 480px){.landing-features{grid-template-columns:1fr}.landing-title{font-size:44px}}.thankyou-actions{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:20px}.my-letter-actions{margin-top:24px;text-align:center}.my-letter-row{display:flex;flex-direction:column;align-items:center;gap:6px;margin:0}.guest-gallery-preview{margin-top:40px;padding-top:28px;border-top:1px solid #C7D6EA}.guest-gallery-preview .center-page{margin-top:20px}.guest-gallery-heading{display:flex;align-items:center;justify-content:center;gap:12px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:var(--sage-deep);margin-bottom:4px}.guest-gallery-heading:before,.guest-gallery-heading:after{content:"";width:34px;height:1px;background:#c7a96b;opacity:.6}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#033982b3;display:flex;align-items:center;justify-content:center;padding:20px;z-index:10}.modal{background:var(--paper);border-radius:8px;padding:16px;max-width:360px;text-align:center}.modal-actions{display:flex;flex-direction:column;gap:10px;align-items:center;margin-top:14px}.voice-recorder{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:4px}@keyframes voice-pulse{0%,to{opacity:1}50%{opacity:.6}}.voice-recorder-player,.voice-note-player{width:100%;max-width:320px;height:40px}.voice-note-player-small{width:200px;height:32px;margin-top:8px;display:block}.modal-photo{width:100%;border-radius:6px}.dashboard-list{display:flex;flex-direction:column;gap:14px;margin-top:24px}.dashboard-row{display:flex;gap:12px;background:var(--paper);border-radius:8px;padding:10px;align-items:flex-start}.dashboard-row img{width:64px;height:64px;object-fit:cover;border-radius:6px;flex-shrink:0}.dashboard-row-body{flex:1;min-width:0}.dashboard-row-body p{margin:4px 0;font-size:13px}.link-btn.danger.small{font-size:11.5px;margin-top:6px;display:inline-block}.dashboard-row-confirm{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}.danger-btn-small{background:#a83232;color:#fff;border:none;border-radius:4px;padding:5px 10px;font-size:11.5px;font-weight:600;cursor:pointer}.danger-btn-small:disabled{opacity:.5;cursor:not-allowed}.bg-music-hidden-player{position:fixed;width:1px;height:1px;opacity:0;pointer-events:none;bottom:0;left:0}.bg-music-toggle{position:fixed;bottom:20px;right:20px;width:52px;height:52px;border-radius:50%;border:none;background:var(--sage-deep);color:var(--cream);font-size:22px;box-shadow:0 8px 20px -8px #03398280;cursor:pointer;z-index:20;display:flex;align-items:center;justify-content:center}.bg-music-toggle:disabled{opacity:.5;cursor:default}.site-footer{text-align:center;padding:28px 20px 90px;opacity:.6}.site-footer-credit{font-size:11px;color:var(--sage-soft);margin:0 0 4px}.site-footer-links{font-size:11px;margin:0}.site-footer-links a{color:var(--sage-soft);text-decoration:none}.site-footer-links a:hover{text-decoration:underline}.site-footer-dot{margin:0 6px;color:var(--sage-soft)}.danger-zone{margin-top:40px;padding-top:28px;border-top:1px solid #C7D6EA}.link-btn.danger{color:#a83232}.danger-btn{background:#a83232;color:#fff;border:none;border-radius:6px;padding:13px;font-size:14px;font-weight:600;cursor:pointer}.danger-btn:disabled{opacity:.5;cursor:not-allowed}
