*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--font-display: "Cormorant Garamond", Georgia, serif;--font-script: "Great Vibes", cursive;--font-body: "Lato", sans-serif;--color-bg: #FDFAF6;--color-surface: #FFFFFF;--color-orange: #C8622A;--color-orange-hover: #A84E20;--color-orange-pale: #FDF0E6;--color-orange-border: #EAC4A8;--color-text: #2C1810;--color-text-muted: #8C7060;--color-border: #EAE0D8;--color-card-bg: #FFFCF8}body{font-family:var(--font-body);background-color:var(--color-bg);color:var(--color-text);min-height:100vh;overflow-x:hidden}.floating-particles{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.fp-petal,.fp-sparkle{position:absolute;top:-5%;will-change:transform,opacity;animation:fpDrift linear infinite}.fp-sparkle{font-style:normal;line-height:1;-webkit-user-select:none;user-select:none}@keyframes fpDrift{0%{transform:translateY(0) translate(0) rotate(0);opacity:0}8%{opacity:1}88%{opacity:1}to{transform:translateY(110vh) translate(var(--fp-drift-x)) rotate(var(--fp-rot));opacity:0}}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(ellipse at 20% 50%,rgba(200,98,42,.04) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(200,98,42,.03) 0%,transparent 50%),radial-gradient(ellipse at 60% 80%,rgba(180,130,80,.04) 0%,transparent 50%);pointer-events:none;z-index:0}#root{position:relative;z-index:1}.hero{text-align:center;padding:4.5rem 1rem 2.5rem;max-width:760px;margin:0 auto}.hero-eyebrow{font-family:var(--font-script);font-size:2rem;color:var(--color-orange);display:block;margin-bottom:.25rem;opacity:.9}.hero-title{font-family:var(--font-display);font-size:clamp(3rem,9vw,5.5rem);font-weight:300;font-style:italic;color:var(--color-text);line-height:1.05;letter-spacing:-.01em;margin-bottom:1.25rem}.hero-divider{display:flex;align-items:center;gap:1rem;justify-content:center;margin-bottom:1.25rem}.hero-divider-line{height:1px;width:60px;background:var(--color-orange-border)}.hero-divider-ornament{font-family:var(--font-script);font-size:1.4rem;color:var(--color-orange);line-height:1}.hero-subtitle{font-family:var(--font-display);font-size:clamp(1.05rem,2.5vw,1.2rem);font-weight:400;font-style:italic;color:var(--color-text-muted);letter-spacing:.01em}.splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:var(--color-bg);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer}.splash--exit{animation:splashExit .75s cubic-bezier(.4,0,.6,1) forwards;pointer-events:none}@keyframes splashExit{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-48px) scale(.98)}}.splash-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 35%,rgba(253,250,246,.65) 100%);pointer-events:none;z-index:1}.splash-petals{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.splash-petal{position:absolute;will-change:transform,opacity;animation:petalFloat linear forwards}@keyframes petalFloat{0%{opacity:0;transform:translate(0) rotate(0) scale(1)}6%{opacity:var(--peak-opacity)}88%{opacity:calc(var(--peak-opacity) * .5)}to{opacity:0;transform:translate(var(--drift-x),-108vh) rotate(var(--rot)) scale(.6)}}.splash-content{position:relative;z-index:2;text-align:center;cursor:default;padding:1rem}.splash-eyebrow{font-family:var(--font-script);font-size:clamp(1.8rem,5vw,2.4rem);color:var(--color-orange);display:block;margin-bottom:.3rem;opacity:0;animation:splashFadeUp .7s ease .2s forwards}.splash-title{margin:0;line-height:1.05}.splash-line{display:block;font-family:var(--font-display);font-weight:300;font-style:italic;opacity:0}.splash-line--1{font-size:clamp(2rem,7vw,4.2rem);color:var(--color-text);animation:splashSlideUp .8s cubic-bezier(.16,1,.3,1) .6s forwards}.splash-line--2{font-size:clamp(3.2rem,11vw,7rem);color:var(--color-orange);animation:splashPop .75s cubic-bezier(.16,1,.3,1) 1.05s forwards;letter-spacing:-.01em}@keyframes splashSlideUp{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes splashPop{0%{opacity:0;transform:translateY(20px) scale(.88)}65%{opacity:1;transform:translateY(-5px) scale(1.03)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes splashFadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.splash-ornament{display:flex;align-items:center;justify-content:center;gap:1rem;margin:1.4rem 0 1rem;opacity:0;animation:splashFadeUp .6s ease 1.65s forwards}.splash-ornament-line{height:1px;width:55px;background:var(--color-orange-border)}.splash-ornament-dot{font-family:var(--font-script);font-size:1.3rem;color:var(--color-orange);line-height:1}.splash-subtitle{font-family:var(--font-display);font-size:clamp(.95rem,2.5vw,1.15rem);font-style:italic;color:var(--color-text-muted);margin:0;opacity:0;animation:splashFadeUp .6s ease 2s forwards}.splash-skip{position:absolute;bottom:2rem;right:2rem;background:transparent;border:none;font-family:var(--font-body);font-size:.72rem;font-weight:300;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-muted);cursor:pointer;opacity:0;animation:splashFadeUp .5s ease 1.8s forwards;z-index:3;transition:color .2s}.splash-skip:hover{color:var(--color-orange)}.view-toggle-wrapper{display:flex;justify-content:center;margin:0 0 2rem;padding:0 1rem;overflow-x:auto}.view-toggle{position:relative;display:flex;width:min(680px,100%);border:1.5px solid var(--color-orange);padding:4px;gap:0;flex-shrink:0}.view-toggle-indicator{position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px)/4);background:var(--color-orange);transition:transform .35s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:0;transform:translate(calc(var(--tab-index, 0) * 100%))}.view-toggle-btn{position:relative;z-index:1;flex:1 1 0;min-width:0;font-family:var(--font-display);font-size:.88rem;font-weight:500;font-style:italic;letter-spacing:.03em;padding:.55rem .5rem;background:transparent;border:none;color:var(--color-orange);cursor:pointer;transition:color .35s ease;white-space:nowrap;text-align:center}.view-toggle-btn.active{color:#fff}.view-panel{animation-duration:.38s;animation-timing-function:cubic-bezier(.4,0,.2,1);animation-fill-mode:both}.view-panel--from-right{animation-name:slideFromRight}.view-panel--from-left{animation-name:slideFromLeft}@keyframes slideFromRight{0%{opacity:0;transform:translate(36px)}to{opacity:1;transform:translate(0)}}@keyframes slideFromLeft{0%{opacity:0;transform:translate(-36px)}to{opacity:1;transform:translate(0)}}.add-btn-wrapper{display:flex;justify-content:center;margin:2rem 0 3rem}.add-btn{font-family:var(--font-display);font-size:1.1rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.85rem 2.5rem;border:1.5px solid var(--color-orange);border-radius:0;background:transparent;color:var(--color-orange);cursor:pointer;transition:background .2s ease,color .2s ease,transform .15s ease;position:relative}.add-btn:before,.add-btn:after{content:"";position:absolute;background:var(--color-orange);transition:transform .2s ease}.add-btn:before{top:4px;left:4px;right:-4px;bottom:-4px;z-index:-1;opacity:.12;border:1px solid var(--color-orange-border)}.add-btn:hover{background:var(--color-orange);color:#fff;transform:translate(-2px,-2px)}.add-btn:active{transform:translate(0)}.feed-container{max-width:1200px;margin:0 auto;padding:0 2rem 6rem}.feed-heading{font-family:var(--font-display);font-size:1.1rem;font-weight:400;letter-spacing:.15em;text-transform:uppercase;color:var(--color-text-muted);text-align:center;margin-bottom:2.5rem}.feed-grid{columns:3 270px;column-gap:1.75rem}.card-wrapper{break-inside:avoid;-webkit-column-break-inside:avoid;margin-bottom:1.75rem;display:block}.bday-card{border-radius:2px;padding:1.75rem 1.6rem 1.5rem;position:relative;background:var(--color-card-bg);border:1px solid var(--color-border);box-shadow:0 1px 3px #2c18100f,0 6px 20px #2c181012,3px 3px #2c18100a;transition:transform .25s ease,box-shadow .25s ease}.bday-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-orange);opacity:.7;border-radius:2px 2px 0 0}.bday-card-tape{position:absolute;top:-10px;left:50%;transform:translate(-50%);width:38px;height:15px;background:#c8622a2e;border-radius:1px;box-shadow:0 1px 3px #0000001a}.bday-card:hover{transform:translateY(-4px) rotate(0)!important;box-shadow:0 2px 6px #2c181014,0 12px 32px #2c18101f,4px 4px #2c18100d}.card-photo{width:100%;border-radius:1px;object-fit:cover;margin-bottom:1rem;display:block;border:1px solid var(--color-border)}.card-message{font-family:var(--font-display);font-size:1.05rem;font-weight:400;font-style:italic;color:var(--color-text);line-height:1.65;margin-bottom:1.1rem;white-space:pre-wrap;word-break:break-word}.card-author{font-family:var(--font-body);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--color-orange);margin-bottom:.35rem}.card-date{font-family:var(--font-body);font-size:.7rem;font-weight:300;color:var(--color-text-muted);letter-spacing:.04em}.empty-state{text-align:center;padding:5rem 1rem;color:var(--color-text-muted)}.empty-script{font-family:var(--font-script);font-size:2.5rem;color:var(--color-orange);display:block;margin-bottom:1rem;opacity:.6}.empty-state p{font-family:var(--font-display);font-size:1.15rem;font-style:italic;font-weight:400}.loading-state{text-align:center;padding:5rem;font-family:var(--font-script);font-size:2rem;color:var(--color-orange);opacity:.6;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.4}50%{opacity:.9}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#140a0580;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:100;display:flex;align-items:center;justify-content:center;padding:1rem;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--color-surface);border-radius:2px;border:1px solid var(--color-border);border-top:3px solid var(--color-orange);padding:2.5rem 2.25rem;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #2c181033,6px 6px #c8622a14;animation:slideUp .25s ease;position:relative}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.modal-close{position:absolute;top:1.1rem;right:1.1rem;background:transparent;border:1px solid var(--color-border);border-radius:50%;width:32px;height:32px;font-size:.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);transition:border-color .15s,color .15s;font-family:var(--font-body)}.modal-close:hover{border-color:var(--color-orange);color:var(--color-orange)}.modal-eyebrow{font-family:var(--font-script);font-size:1.8rem;color:var(--color-orange);display:block;margin-bottom:.1rem;opacity:.85}.modal-title{font-family:var(--font-display);font-size:1.75rem;font-weight:500;font-style:italic;color:var(--color-text);margin-bottom:1.75rem;padding-right:2rem;line-height:1.15}.form-group{margin-bottom:1.25rem}.form-label{display:block;font-family:var(--font-body);font-size:.7rem;font-weight:700;color:var(--color-text-muted);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.12em}.form-input,.form-textarea{width:100%;font-family:var(--font-display);font-size:1rem;font-weight:400;font-style:italic;padding:.75rem 1rem;border:1px solid var(--color-border);border-radius:1px;outline:none;transition:border-color .2s;color:var(--color-text);background:var(--color-card-bg)}.form-input:focus,.form-textarea:focus{border-color:var(--color-orange);background:#fff}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-muted);opacity:.6;font-style:italic}.form-textarea{resize:vertical;min-height:110px}.file-upload-area{border:1px dashed var(--color-orange-border);border-radius:1px;padding:1.4rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:var(--color-card-bg)}.file-upload-area:hover{border-color:var(--color-orange);background:var(--color-orange-pale)}.file-upload-area input{display:none}.file-upload-label{font-family:var(--font-body);font-size:.82rem;font-weight:300;color:var(--color-text-muted);letter-spacing:.04em;cursor:pointer}.file-upload-label strong{font-weight:700;color:var(--color-orange)}.file-preview{width:100%;max-height:160px;object-fit:cover;border-radius:1px;border:1px solid var(--color-border)}.submit-btn{width:100%;font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:.9rem;border:1.5px solid var(--color-orange);border-radius:0;background:var(--color-orange);color:#fff;cursor:pointer;margin-top:.75rem;transition:background .2s ease,transform .15s ease}.submit-btn:hover:not(:disabled){background:var(--color-orange-hover);transform:translateY(-1px)}.submit-btn:disabled{opacity:.55;cursor:not-allowed}.form-error{font-family:var(--font-body);font-size:.82rem;font-weight:400;color:#b94040;margin-bottom:.75rem;padding:.6rem .9rem;background:#fdf0f0;border-left:2px solid #B94040}.toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);background:var(--color-text);color:#fdfaf6;font-family:var(--font-body);font-weight:400;font-size:.875rem;letter-spacing:.05em;padding:.8rem 1.75rem;border-radius:0;z-index:999;animation:toastIn .3s ease,toastOut .3s ease 2.5s forwards;white-space:nowrap;border-top:2px solid var(--color-orange)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toastOut{0%{opacity:1}to{opacity:0}}.bday-card--overlay{box-shadow:0 24px 64px #2c181040,0 6px 16px #2c18101f,5px 5px #2c18100f;cursor:grabbing}.card-drag-handle{position:absolute;top:.6rem;left:.6rem;width:22px;height:22px;background:transparent;border:none;border-radius:3px;cursor:grab;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;--dot: rgba(140, 112, 96, .5)}.card-drag-handle:before{content:"";display:block;width:6px;height:10px;background-image:radial-gradient(circle,var(--dot) 1.2px,transparent 1.2px);background-size:3px 3.5px}.bday-card:hover .card-drag-handle{opacity:1}.card-drag-handle:active{cursor:grabbing}.card-edit-btn{position:absolute;top:.65rem;right:.65rem;background:transparent;border:1px solid var(--color-border);border-radius:50%;width:26px;height:26px;font-size:.85rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);opacity:0;transition:opacity .15s,border-color .15s,color .15s}.bday-card:hover .card-edit-btn{opacity:1}.card-edit-btn:hover{border-color:var(--color-orange);color:var(--color-orange)}.card-edit-form{display:flex;flex-direction:column;gap:.5rem}.card-edit-input{font-family:var(--font-body);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-orange);padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:1px;outline:none;background:#fff;width:100%}.card-edit-input:focus{border-color:var(--color-orange)}.card-edit-textarea{font-family:var(--font-display);font-size:1.05rem;font-style:italic;font-weight:400;color:var(--color-text);line-height:1.6;padding:.5rem .6rem;border:1px solid var(--color-border);border-radius:1px;outline:none;background:#fff;width:100%;resize:vertical}.card-edit-textarea:focus{border-color:var(--color-orange)}.card-edit-error{font-family:var(--font-body);font-size:.75rem;color:#b94040}.card-edit-actions{display:flex;gap:.5rem;margin-top:.25rem}.card-edit-save{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem 1rem;background:var(--color-orange);color:#fff;border:none;border-radius:1px;cursor:pointer;transition:background .15s}.card-edit-save:hover:not(:disabled){background:var(--color-orange-hover)}.card-edit-save:disabled{opacity:.5;cursor:not-allowed}.card-edit-cancel{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .9rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:1px;cursor:pointer;transition:border-color .15s,color .15s}.card-edit-cancel:hover{border-color:var(--color-text-muted);color:var(--color-text)}.card-delete-btn{position:absolute;bottom:.75rem;right:.75rem;width:22px;height:22px;border-radius:50%;border:1px solid var(--color-border);background:transparent;color:var(--color-text-muted);font-size:.65rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,border-color .15s,color .15s,background .15s;line-height:1}.bday-card:hover .card-delete-btn{opacity:1}.card-delete-btn:hover{border-color:#b94040;color:#b94040;background:#fdf0f0}.card-delete-confirm{padding:.5rem 0}.card-delete-confirm-text{font-family:var(--font-display);font-style:italic;font-size:.95rem;color:var(--color-text);margin-bottom:.75rem}.card-delete-confirm-actions{display:flex;gap:.5rem}.card-delete-confirm-yes{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .9rem;background:#b94040;color:#fff;border:none;border-radius:1px;cursor:pointer;transition:background .15s}.card-delete-confirm-yes:hover:not(:disabled){background:#962f2f}.card-delete-confirm-yes:disabled{opacity:.55;cursor:not-allowed}.card-delete-confirm-no{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .9rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:1px;cursor:pointer}.card-edit-photo{margin-bottom:.5rem}.card-edit-photo-preview{width:100%;max-height:140px;object-fit:cover;border-radius:1px;border:1px solid var(--color-border);display:block;margin-bottom:.4rem}.card-edit-photo-btns{display:flex;gap:.5rem}.card-edit-photo-action{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .7rem;background:transparent;border:1px solid var(--color-border);border-radius:1px;color:var(--color-text-muted);cursor:pointer;transition:border-color .15s,color .15s}.card-edit-photo-action:hover{border-color:var(--color-orange);color:var(--color-orange)}.card-edit-photo-action--remove:hover{border-color:#b94040;color:#b94040}.card-edit-photo-upload{width:100%;font-family:var(--font-body);font-size:.75rem;font-weight:400;letter-spacing:.04em;padding:.6rem;background:var(--color-card-bg);border:1px dashed var(--color-orange-border);border-radius:1px;color:var(--color-text-muted);cursor:pointer;transition:border-color .15s,background .15s}.card-edit-photo-upload:hover{border-color:var(--color-orange);background:var(--color-orange-pale)}.descriptor-section{max-width:960px;margin:0 auto;padding:1rem 1rem 4rem;text-align:center}.descriptor-header{margin-bottom:2.5rem}.descriptor-eyebrow{font-family:var(--font-script);font-size:1.75rem;color:var(--color-orange);display:block;margin-bottom:.2rem;opacity:.85}.descriptor-title{font-family:var(--font-display);font-size:clamp(1.8rem,5vw,2.6rem);font-weight:300;font-style:italic;color:var(--color-text);margin-bottom:.75rem;line-height:1.1}.descriptor-subtitle{font-family:var(--font-display);font-size:1rem;font-style:italic;color:var(--color-text-muted);line-height:1.55}.descriptor-cloud{display:flex;flex-wrap:wrap;align-items:flex-start;gap:1rem 1.5rem;padding:1rem 1.5rem;margin-bottom:3rem;visibility:hidden;min-height:120px}.descriptor-cloud--placed{display:block;position:relative;visibility:visible;padding:0;overflow:visible}.descriptor-cloud--placed .word-wrapper{position:absolute}.word-wrapper{position:relative}.word-actions{position:absolute;top:-8px;right:-8px;display:flex;gap:3px;opacity:0;transition:opacity .15s;z-index:5}.word-wrapper:hover .word-actions{opacity:1}.word-action-btn{width:20px;height:20px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-card-bg);color:var(--color-text-muted);font-size:.65rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;box-shadow:0 1px 4px #2c18101a;transition:border-color .15s,color .15s,background .15s}.word-action-btn:hover{border-color:var(--color-orange);color:var(--color-orange);background:#fff}.word-action-btn--delete:hover{border-color:#b94040;color:#b94040}.word-popup{position:absolute;bottom:calc(100% + .65rem);left:50%;transform:translate(-50%);background:var(--color-card-bg);border:1px solid var(--color-orange-border);border-radius:4px;padding:.55rem .85rem .6rem;min-width:110px;max-width:220px;box-shadow:0 4px 18px #2c181024,0 1px 4px #2c18100f;z-index:10;text-align:center;white-space:nowrap}.word-popup:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--color-orange-border)}.word-popup-label{font-family:var(--font-body);font-size:.58rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:.45rem}.word-popup-names{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:center}.word-popup-name{font-family:var(--font-display);font-style:italic;font-size:.85rem;color:var(--color-text);background:var(--color-orange-pale);border-radius:2px;padding:.1em .45em}.word-edit-inline{background:var(--color-card-bg);border:1px solid var(--color-orange-border);border-radius:4px;padding:.65rem .8rem;display:flex;flex-direction:column;gap:.45rem;min-width:170px;box-shadow:0 4px 16px #2c18101f}.word-edit-input{font-family:var(--font-display);font-style:italic;font-size:.95rem;padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:1px;outline:none;background:#fff;color:var(--color-text);width:100%}.word-edit-input:focus{border-color:var(--color-orange)}.word-action-error{font-family:var(--font-body);font-size:.72rem;color:#b94040}.word-edit-actions{display:flex;gap:.4rem}.word-edit-save{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .8rem;background:var(--color-orange);color:#fff;border:none;border-radius:1px;cursor:pointer;transition:background .15s}.word-edit-save:hover:not(:disabled){background:var(--color-orange-hover)}.word-edit-save:disabled{opacity:.5;cursor:not-allowed}.word-edit-cancel{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .65rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:1px;cursor:pointer}.word-delete-confirm{background:var(--color-card-bg);border:1px solid #EAC4C4;border-radius:4px;padding:.65rem .8rem;display:flex;flex-direction:column;gap:.45rem;min-width:170px;box-shadow:0 4px 16px #2c18101f}.word-delete-confirm-text{font-family:var(--font-display);font-style:italic;font-size:.88rem;color:var(--color-text)}.word-delete-actions{display:flex;gap:.4rem}.word-delete-yes{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .8rem;background:#b94040;color:#fff;border:none;border-radius:1px;cursor:pointer;transition:background .15s}.word-delete-yes:hover:not(:disabled){background:#962f2f}.word-delete-yes:disabled{opacity:.5;cursor:not-allowed}.word-delete-no{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .65rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:1px;cursor:pointer}.descriptor-tag{display:inline-block;font-family:var(--font-display);font-style:italic;line-height:1.15;padding:.28em .6em;border-radius:3px;cursor:pointer;white-space:nowrap;transform:rotate(var(--rotation, 0deg));transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease;will-change:transform}.descriptor-tag:hover{transform:rotate(var(--rotation, 0deg)) scale(1.22);box-shadow:0 4px 16px #0000001f;z-index:2}.descriptor-tag--active{box-shadow:0 0 0 2px #c8622a59,0 4px 16px #0000001f;z-index:4}.descriptor-add-wrapper{display:flex;justify-content:center}.descriptor-form{max-width:520px;margin:0 auto;text-align:left}.descriptor-form-row{display:flex;flex-direction:column;gap:.6rem;margin-bottom:.75rem}.descriptor-input{width:100%;font-family:var(--font-display);font-style:italic;font-size:.95rem;padding:.7rem 1rem;border:1px solid var(--color-border);border-radius:1px;outline:none;background:var(--color-card-bg);color:var(--color-text);transition:border-color .2s}.descriptor-input--main{font-size:1.05rem}.descriptor-input:focus{border-color:var(--color-orange);background:#fff}.descriptor-input::placeholder{color:var(--color-text-muted);opacity:.6}.descriptor-error{font-family:var(--font-body);font-size:.8rem;color:#b94040;margin-bottom:.6rem;padding:.5rem .75rem;background:#fdf0f0;border-left:2px solid #B94040}.descriptor-form-actions{display:flex;gap:.65rem;justify-content:center}.descriptor-submit{font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.75rem 2rem;background:var(--color-orange);color:#fff;border:1.5px solid var(--color-orange);border-radius:0;cursor:pointer;transition:background .2s ease}.descriptor-submit:hover:not(:disabled){background:var(--color-orange-hover)}.descriptor-submit:disabled{opacity:.5;cursor:not-allowed}.descriptor-cancel{font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.75rem 1.5rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:0;cursor:pointer;transition:border-color .15s,color .15s}.descriptor-cancel:hover{border-color:var(--color-text-muted);color:var(--color-text)}.descriptor-empty{font-family:var(--font-display);font-style:italic;color:var(--color-text-muted);margin-bottom:2rem}.letters-section{max-width:860px;margin:0 auto;padding:1rem 2rem 5rem}.letters-header{text-align:center;margin-bottom:2rem}.letters-eyebrow{font-family:var(--font-script);font-size:1.75rem;color:var(--color-orange);display:block;margin-bottom:.2rem;opacity:.85}.letters-title{font-family:var(--font-display);font-size:clamp(1.8rem,5vw,2.6rem);font-weight:300;font-style:italic;color:var(--color-text);margin-bottom:.75rem;line-height:1.1}.letters-subtitle{font-family:var(--font-display);font-size:1rem;font-style:italic;color:var(--color-text-muted);line-height:1.55}.letters-add-wrapper{display:flex;justify-content:center;margin-bottom:2.5rem}.letters-empty{font-family:var(--font-display);font-style:italic;color:var(--color-text-muted);text-align:center;margin-top:2rem}.letter-compose-wrap{margin-bottom:2.5rem}.letter-compose-paper{background:#fffef9;border:1px solid #e8dcc8;padding:2.5rem 2.5rem 1.5rem;position:relative;box-shadow:0 2px 8px #2c18100f,0 8px 24px #2c18100f;background-image:repeating-linear-gradient(transparent,transparent 31px,rgba(180,140,100,.12) 31px,rgba(180,140,100,.12) 32px);background-attachment:local}.letter-compose-paper:before{content:"";position:absolute;top:0;bottom:0;left:3.5rem;width:1px;background:#c8622a2e}.letter-compose-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1.5rem;padding-left:1.5rem}.letter-compose-name{font-family:Caveat,cursive;font-size:1.2rem;font-weight:500;color:var(--color-text);border:none;border-bottom:1px solid rgba(180,140,100,.3);outline:none;background:transparent;width:55%;padding:.1rem 0}.letter-compose-name::placeholder{color:var(--color-text-muted);opacity:.5}.letter-compose-date-display{font-family:Caveat,cursive;font-size:1rem;color:var(--color-text-muted)}.letter-compose-salutation{font-family:Caveat,cursive;font-size:1.3rem;color:var(--color-text);padding-left:1.5rem;margin-bottom:.5rem}.letter-compose-body{font-family:Caveat,cursive;font-size:1.25rem;font-weight:400;line-height:2rem;color:var(--color-text);border:none;outline:none;background:transparent;width:100%;resize:none;padding-left:1.5rem;min-height:320px}.letter-compose-body::placeholder{color:var(--color-text-muted);opacity:.45}.letter-compose-footer-row{display:flex;justify-content:space-between;align-items:baseline;padding-left:1.5rem;margin-top:1rem}.letter-compose-sign{font-family:Caveat,cursive;font-size:1.15rem;color:var(--color-text-muted)}.letter-compose-char-count{font-family:var(--font-body);font-size:.68rem;color:var(--color-text-muted)}.letter-compose-notice{font-family:var(--font-body);font-size:.78rem;color:var(--color-text-muted);background:var(--color-orange-pale);border-left:2px solid var(--color-orange-border);padding:.5rem .8rem;margin:.9rem 0}.letter-form-error{font-family:var(--font-body);font-size:.8rem;color:#b94040;margin-bottom:.75rem;padding:.55rem .85rem;background:#fdf0f0;border-left:2px solid #B94040}.letter-compose-actions{display:flex;gap:.65rem}.letter-form-submit{font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.72rem 2rem;background:var(--color-orange);color:#fff;border:1.5px solid var(--color-orange);border-radius:0;cursor:pointer;transition:background .2s ease}.letter-form-submit:hover:not(:disabled){background:var(--color-orange-hover)}.letter-form-submit:disabled{opacity:.5;cursor:not-allowed}.letter-form-cancel{font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.72rem 1.5rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:0;cursor:pointer;transition:border-color .15s,color .15s}.letter-form-cancel:hover{border-color:var(--color-text-muted);color:var(--color-text)}.envelopes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2rem;align-items:start}.envelope-card{position:relative;cursor:pointer;background-color:#f2e8d5;background-image:linear-gradient(to bottom-right,transparent calc(50% - .5px),rgba(160,120,70,.18) 50%,transparent calc(50% + .5px)),linear-gradient(to bottom-left,transparent calc(50% - .5px),rgba(160,120,70,.18) 50%,transparent calc(50% + .5px));border:1px solid #c9ad86;box-shadow:0 2px 8px #2c18101a,0 6px 20px #2c181014;overflow:hidden;transition:box-shadow .25s ease,transform .25s ease;outline:none}.envelope-card:hover{box-shadow:0 4px 14px #2c181026,0 10px 32px #2c18101f;transform:translateY(-3px)}.envelope-card:focus-visible{box-shadow:0 0 0 3px #c8622a59}.envelope-delete-btn{position:absolute;top:.55rem;right:.55rem;z-index:10;width:22px;height:22px;border-radius:50%;border:1px solid #c9ad86;background:#f2e8d5e6;color:#8a6840;font-size:.6rem;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s,border-color .15s,color .15s;line-height:1;padding:0}.envelope-card:hover .envelope-delete-btn{opacity:1}.envelope-delete-btn:hover{border-color:#b94040;color:#b94040;background:#fff}.envelope-delete-confirm{padding:2rem 1.5rem 1.5rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.65rem}.envelope-delete-confirm-text{font-family:var(--font-display);font-style:italic;font-size:1rem;color:#4a3018}.envelope-delete-error{font-family:var(--font-body);font-size:.75rem;color:#b94040}.envelope-delete-confirm-actions{display:flex;gap:.5rem}.envelope-delete-yes{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .9rem;background:#b94040;color:#fff;border:none;cursor:pointer;transition:background .15s}.envelope-delete-yes:hover:not(:disabled){background:#962f2f}.envelope-delete-yes:disabled{opacity:.55;cursor:not-allowed}.envelope-delete-no{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .75rem;background:transparent;color:#8a6840;border:1px solid #c9ad86;cursor:pointer}.envelope-flap{position:absolute;top:0;left:0;right:0;height:0;z-index:2;pointer-events:none;transition:opacity .35s ease}.envelope-flap-inner{width:100%;height:0;border-left:200px solid transparent;border-right:200px solid transparent;border-top:90px solid rgba(200,98,42,.13);border-left-width:50vw;border-right-width:50vw}.envelope-card--open .envelope-flap{opacity:0}.envelope-face{padding:2.5rem 1.75rem 2rem;text-align:center;transition:opacity .25s ease,transform .35s ease;transform-origin:center top}.envelope-card--open .envelope-face{opacity:0;transform:translateY(-6px);pointer-events:none;position:absolute;width:100%}.envelope-ornament{display:block;font-size:1.5rem;color:var(--color-orange);margin-bottom:.9rem;opacity:.7}.envelope-from{font-family:var(--font-display);font-size:1.15rem;font-weight:500;font-style:italic;color:#4a3018;margin-bottom:.3rem}.envelope-date{font-family:var(--font-body);font-size:.7rem;font-weight:300;color:#8a6840;letter-spacing:.06em;margin-bottom:1.2rem}.envelope-hint{font-family:var(--font-body);font-size:.62rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:#a08060;opacity:.7}.envelope-letter-reveal{position:relative;max-height:0;overflow:hidden;opacity:0;transition:max-height .55s cubic-bezier(.4,0,.2,1),opacity .4s ease .15s}.envelope-card--open .envelope-letter-reveal{max-height:600px;opacity:1}.letter-paper{background:#fffef9;margin:1rem;padding:1.5rem 1.75rem;border:1px solid rgba(180,140,100,.25);box-shadow:0 1px 4px #2c181014;background-image:repeating-linear-gradient(transparent,transparent 27px,rgba(180,140,100,.1) 27px,rgba(180,140,100,.1) 28px)}.letter-paper--blurred .letter-paper-body,.letter-paper--blurred .letter-paper-salutation,.letter-paper--blurred .letter-paper-sign{filter:blur(6px);-webkit-user-select:none;user-select:none;pointer-events:none}.letter-paper-salutation{font-family:Caveat,cursive;font-size:1.15rem;color:var(--color-text);margin-bottom:.75rem;transition:filter .3s ease}.letter-paper-body{font-family:Caveat,cursive;font-size:1.15rem;line-height:1.85;color:var(--color-text);white-space:pre-wrap;margin-bottom:1.25rem;transition:filter .3s ease}.letter-paper-sign{font-family:Caveat,cursive;font-size:1.1rem;color:var(--color-text-muted);text-align:right;transition:filter .3s ease}.letter-blur-shield{position:absolute;top:1rem;right:1rem;bottom:1rem;left:1rem;display:flex;align-items:center;justify-content:center;background:#f2e8d58c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.letter-blur-shield-text{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#8a6840;background:#f2e8d5e6;padding:.3rem .85rem;border:1px solid #c9ad86}.letters-open-grid{display:flex;flex-direction:column;gap:2rem}.letter-paper-card{background:#fffef9;border:1px solid #e8dcc8;box-shadow:0 2px 8px #2c18100d,0 8px 24px #2c18100f;overflow:hidden}.letter-paper-card-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:1rem 2rem;background:#c8622a0f;border-bottom:1px solid rgba(180,140,100,.2)}.letter-paper-card-from{font-family:var(--font-display);font-size:1rem;font-weight:500;font-style:italic;color:var(--color-orange)}.letter-paper-card-date{font-family:var(--font-body);font-size:.68rem;font-weight:300;color:var(--color-text-muted);letter-spacing:.04em;white-space:nowrap}.letter-paper-card .letter-paper{margin:0;border:none;box-shadow:none;padding:2rem 2.5rem;background-image:repeating-linear-gradient(transparent,transparent 31px,rgba(180,140,100,.1) 31px,rgba(180,140,100,.1) 32px)}.hero-route-link{margin-top:1.5rem}.route-link{font-family:var(--font-body);font-size:.78rem;font-weight:400;letter-spacing:.06em;color:var(--color-text-muted);text-decoration:none;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}.route-link:hover{color:var(--color-orange);border-bottom-color:var(--color-orange)}.songs-section{max-width:900px;margin:0 auto;padding:1rem 2rem 5rem}.songs-header{text-align:center;margin-bottom:2rem}.songs-eyebrow{font-family:var(--font-script);font-size:1.75rem;color:var(--color-orange);display:block;margin-bottom:.2rem;opacity:.85}.songs-title{font-family:var(--font-display);font-size:clamp(1.8rem,5vw,2.6rem);font-weight:300;font-style:italic;color:var(--color-text);margin-bottom:.75rem;line-height:1.1}.songs-subtitle{font-family:var(--font-display);font-size:1rem;font-style:italic;color:var(--color-text-muted);line-height:1.55}.songs-add-wrapper{display:flex;justify-content:center;margin-bottom:2.5rem}.songs-empty{font-family:var(--font-display);font-style:italic;color:var(--color-text-muted);text-align:center;margin-top:2rem}.song-form{background:var(--color-card-bg);border:1px solid var(--color-border);padding:1.75rem 2rem;margin-bottom:2.5rem;box-shadow:0 2px 12px #2c18100f}.song-form-fields{display:flex;flex-direction:column;gap:1rem;margin-bottom:.75rem}.song-form-group{display:flex;flex-direction:column;gap:.4rem}.song-form-label{font-family:var(--font-body);font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-muted)}.song-form-optional{font-weight:400;text-transform:none;letter-spacing:0}.song-form-required{color:var(--color-orange)}.song-form-input{font-family:var(--font-display);font-style:italic;font-size:.95rem;padding:.65rem 1rem;border:1px solid var(--color-border);border-radius:1px;outline:none;background:#fff;color:var(--color-text);transition:border-color .2s;width:100%}.song-form-input:focus{border-color:var(--color-orange)}.song-form-input::placeholder{color:var(--color-text-muted);opacity:.6}.song-form-textarea{font-family:var(--font-display);font-style:italic;font-size:.95rem;padding:.65rem 1rem;border:1px solid var(--color-border);border-radius:1px;outline:none;background:#fff;color:var(--color-text);transition:border-color .2s;width:100%;resize:vertical}.song-form-textarea:focus{border-color:var(--color-orange)}.song-form-textarea::placeholder{color:var(--color-text-muted);opacity:.6}.song-platform-detected{font-family:var(--font-body);font-size:.75rem;font-weight:700}.song-form-error{font-family:var(--font-body);font-size:.8rem;color:#b94040;margin-bottom:.75rem;padding:.55rem .85rem;background:#fdf0f0;border-left:2px solid #B94040}.song-form-actions{display:flex;gap:.65rem}.song-form-submit{font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.72rem 2rem;background:var(--color-orange);color:#fff;border:1.5px solid var(--color-orange);border-radius:0;cursor:pointer;transition:background .2s ease}.song-form-submit:hover:not(:disabled){background:var(--color-orange-hover)}.song-form-submit:disabled{opacity:.5;cursor:not-allowed}.song-form-cancel{font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:.72rem 1.5rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:0;cursor:pointer;transition:border-color .15s,color .15s}.song-form-cancel:hover{border-color:var(--color-text-muted);color:var(--color-text)}.songs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.5rem;align-items:start}.song-card{background:var(--color-card-bg);border:1px solid var(--color-border);border-left:3px solid var(--platform-color, var(--color-orange));padding:1.4rem 1.5rem 1.2rem;position:relative;box-shadow:0 1px 3px #2c18100d,0 4px 14px #2c18100f;transition:transform .22s ease,box-shadow .22s ease}.song-card:hover{transform:translateY(-3px);box-shadow:0 2px 6px #2c181014,0 10px 28px #2c18101c}.song-card-actions{position:absolute;top:.65rem;right:.65rem;display:flex;gap:4px;opacity:0;transition:opacity .15s}.song-card:hover .song-card-actions{opacity:1}.song-card-action-btn{width:24px;height:24px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-card-bg);color:var(--color-text-muted);font-size:.7rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;transition:border-color .15s,color .15s,background .15s;box-shadow:0 1px 3px #2c181014}.song-card-action-btn:hover{border-color:var(--color-orange);color:var(--color-orange);background:#fff}.song-card-action-btn--delete:hover{border-color:#b94040;color:#b94040}.song-edit-form{display:flex;flex-direction:column;gap:.65rem}.song-card-edit-actions{display:flex;gap:.5rem}.song-edit-save{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem 1rem;background:var(--color-orange);color:#fff;border:none;border-radius:1px;cursor:pointer;transition:background .15s}.song-edit-save:hover:not(:disabled){background:var(--color-orange-hover)}.song-edit-save:disabled{opacity:.5;cursor:not-allowed}.song-edit-cancel{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .9rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:1px;cursor:pointer}.song-delete-confirm{padding:.25rem 0}.song-delete-confirm-text{font-family:var(--font-display);font-style:italic;font-size:.95rem;color:var(--color-text);margin-bottom:.75rem}.song-delete-confirm-actions{display:flex;gap:.5rem}.song-delete-yes{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .9rem;background:#b94040;color:#fff;border:none;border-radius:1px;cursor:pointer;transition:background .15s}.song-delete-yes:hover:not(:disabled){background:#962f2f}.song-delete-yes:disabled{opacity:.55;cursor:not-allowed}.song-delete-no{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.4rem .9rem;background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:1px;cursor:pointer}.song-card-top{margin-bottom:.85rem}.song-platform-badge{font-family:var(--font-body);font-size:.65rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.song-note{font-family:var(--font-display);font-style:italic;font-size:1.05rem;font-weight:400;color:var(--color-text);line-height:1.6;margin-bottom:1.2rem}.song-card-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:.75rem}.song-card-meta{display:flex;flex-direction:column;gap:.15rem}.song-author{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-orange)}.song-date{font-family:var(--font-body);font-size:.68rem;font-weight:300;color:var(--color-text-muted);letter-spacing:.03em}.song-open-btn{font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.35rem .85rem;border:1.5px solid var(--platform-color, var(--color-orange));color:var(--platform-color, var(--color-orange));background:transparent;border-radius:1px;text-decoration:none;white-space:nowrap;transition:background .18s ease,color .18s ease;flex-shrink:0}.song-open-btn:hover{background:var(--platform-color, var(--color-orange));color:#fff}.site-footer{text-align:center;padding:2rem 1rem 2.5rem;font-family:var(--font-body);font-size:.8rem;font-weight:300;color:var(--color-text-muted);letter-spacing:.04em}.footer-heart{color:var(--color-orange);font-size:.75rem}.footer-credit{display:block;margin-top:.35rem;font-size:.65rem;color:var(--color-text-muted);opacity:.45;letter-spacing:.06em}@media (max-width: 500px){.modal{padding:2rem 1.5rem}.hero{padding:3rem 1rem 2rem}}
