:root{--paper:#fff8ed;--paper-deep:#f7dccf;--ink:#3c2a25;--muted:#7d6259;--rose:#e8849a;--rose-deep:#bf536c;--blush:#ffe1e8;--cream:#fffaf3;--shadow:0 24px 80px #5e302a2e}*{box-sizing:border-box}html{background:radial-gradient(circle at top left, #ffcedacc, transparent 32rem), radial-gradient(circle at bottom right, #f7dccfe6, transparent 28rem), var(--paper);min-height:100%}body{min-height:100%;color:var(--ink);margin:0;font-family:ui-rounded,SF Pro Rounded,Avenir Next,system-ui,sans-serif}.cursor-wand-active,.cursor-wand-active a,.cursor-wand-active button,.cursor-wand-active label,.cursor-wand-active input,.cursor-wand-active textarea{cursor:none}a{color:inherit}button,input,textarea{font:inherit}.cursor-sparkle{z-index:9999;pointer-events:none;transform:translate(-50%, -50%) rotate(var(--sparkle-rotation));animation:.72s ease-out forwards sparkle-drift;position:fixed}.cursor-wand{z-index:10000;object-fit:contain;pointer-events:none;width:54px;height:54px;transition:transform 42ms linear;position:fixed;top:0;left:0;transform:translate(-120px,-120px)}.tap-dog-stamp{z-index:10000;object-fit:contain;pointer-events:none;width:58px;height:58px;transform:translate(-50%, -50%) rotate(var(--tap-stamp-rotation)) scale(.8);animation:1.8s ease-out forwards tap-dog-stamp;position:fixed}.cursor-sparkle:before,.cursor-sparkle:after{content:"";background:linear-gradient(135deg,#fff7fb,#e8849a 45%,#ffd7e2);border-radius:999px;position:absolute;inset:0}.cursor-sparkle:after{transform:rotate(90deg)scaleX(.32)}.cursor-sparkle:before{transform:scaleX(.32)}@keyframes sparkle-drift{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--sparkle-rotation)) scale(.35)}25%{opacity:1}to{opacity:0;transform:translate(-50%, -110%) rotate(calc(var(--sparkle-rotation) + 55deg)) scale(.9)}}@keyframes tap-dog-stamp{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--tap-stamp-rotation)) scale(.6)}12%{opacity:1;transform:translate(-50%, -50%) rotate(var(--tap-stamp-rotation)) scale(1)}72%{opacity:.92}to{opacity:0;transform:translate(-50%, -58%) rotate(var(--tap-stamp-rotation)) scale(.88)}}.page-shell,.landing-shell,.admin-shell{width:min(1120px,100%);margin:0 auto;padding:28px 16px 44px}.page-shell{grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);align-items:start;gap:20px;display:grid}.landing-shell{place-items:center;min-height:100vh;display:grid}.postcard,.admin-table-card,.stat-card,.admin-header{box-shadow:var(--shadow);background:linear-gradient(135deg,#ffffff85,#fff8ede6),repeating-linear-gradient(0deg,#3c2a2506,#3c2a2506 1px,#0000 1px 6px);border:1px solid #bf536c33}.postcard{border-radius:34px;padding:clamp(24px,5vw,46px);position:relative;overflow:hidden}.invite-card:after{content:"";border:28px solid #e8849a29;border-radius:50%;width:240px;height:240px;position:absolute;bottom:-90px;right:-80px}.invite-hero{padding-top:184px;padding-right:0}.sender-stamp{border-left:4px solid var(--rose);color:var(--muted);gap:5px;padding:8px 0 8px 14px;display:grid;position:absolute;top:28px;left:28px}.sender-stamp span{color:var(--rose-deep);letter-spacing:.16em;text-transform:uppercase;font-size:.72rem;font-weight:900}.sender-stamp strong{font-size:1.02rem}.stamp{border:2px dashed var(--rose-deep);width:152px;height:152px;color:var(--rose-deep);letter-spacing:.15em;border-radius:18px;place-items:center;font-size:.8rem;font-weight:800;display:grid;position:absolute;top:24px;right:24px;transform:none}.photo-stamp{outline-offset:4px;background:#fff;border:7px solid #fffaf3f5;outline:2px dashed #bf536cbf;width:148px;height:148px;overflow:hidden;transform:rotate(3deg)translateZ(0);box-shadow:0 18px 36px #5e302a2e}.photo-stamp img{object-fit:cover;width:100%;height:100%;display:block}.eyebrow{color:var(--rose-deep);letter-spacing:.18em;text-transform:uppercase;margin:0 0 10px;font-size:.78rem;font-weight:900}h1,h2{letter-spacing:-.04em;margin:0;line-height:.95}h1{max-width:620px;font-family:Georgia,Times New Roman,serif;font-size:clamp(3.2rem,10vw,7.5rem);font-weight:700}.invite-hero h1{max-width:560px;font-size:clamp(2.45rem,6.2vw,4.75rem)}h2{font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,5vw,3.6rem)}.lede{max-width:560px;color:var(--muted);margin:18px 0 0;font-size:clamp(1.08rem,2vw,1.28rem);line-height:1.55}.details-grid,.stats-grid{gap:12px;display:grid}.details-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:36px}.detail-card,.stat-card{background:#ffffff8f;border:1px solid #bf536c3d;border-radius:22px;padding:16px}.detail-card-link{text-decoration:none;transition:border-color .16s,transform .16s,background .16s;display:block;position:relative}.detail-card-link:hover{background:#ffffffc2;border-color:#bf536c6b;transform:translateY(-1px)}.detail-card-link strong{color:var(--rose-deep);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px}.detail-card span,.stat-card span{color:var(--rose-deep);letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px;font-size:.76rem;font-weight:900;display:block}.detail-card strong,.stat-card strong{font-size:1.03rem;line-height:1.35}.dress-note,.gift-note{border-left:4px solid var(--rose);color:var(--muted);margin:22px 0 0;padding:12px 0 12px 16px;font-weight:700}.dress-note span{color:var(--rose-deep);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;margin-bottom:4px;font-size:.76rem;font-weight:900;display:flex}.gift-note span{color:#e8849ab8;letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;font-size:.76rem;font-weight:900;display:flex}.dress-note p{margin:0}.gift-note{border-left-color:#e8849a73;grid-template-columns:1fr auto;align-items:center;gap:12px;margin-top:10px;font-weight:600;display:grid}.gift-note p{grid-column:1;margin:0}.inline-registry-link{z-index:1;color:var(--rose-deep);text-underline-offset:4px;background:#ffffffb8;border:1px solid #bf536c3d;border-radius:999px;flex:none;grid-area:1/2/span 2;padding:9px 13px;font-size:.84rem;font-weight:900;text-decoration:underline;text-decoration-thickness:2px;position:relative}.inline-registry-link:hover{color:#9f4057}.action-row,.button-row{flex-wrap:wrap;gap:12px;margin-top:26px;display:flex}.primary-button,.secondary-button{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:0 20px;font-weight:900;text-decoration:none;display:inline-flex}.primary-button{background:var(--rose-deep);color:#fff}.secondary-button{color:var(--rose-deep);background:#ffffff9e;border:1px solid #bf536c42}.rsvp-card{background:#fffaf3e6}.rsvp-heading{gap:8px;display:grid}.preview-pill,.saved-pill{background:var(--blush);color:var(--rose-deep);border-radius:999px;justify-self:start;padding:7px 12px;font-size:.78rem;font-weight:900}.saved-pill{color:#2f7a55;background:#ffffffb8}.success-toast{z-index:11000;color:#19683f;background:linear-gradient(135deg,#e0f5e8f2,#ffffffbd);border:1px solid #2f7a5538;border-left:5px solid #3da66b;border-radius:20px;justify-content:space-between;align-items:center;gap:4px;width:min(420px,100% - 28px);padding:14px 16px;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #2f7a551f}.success-toast div{gap:4px;display:grid}.success-toast button{color:#19683f;cursor:pointer;background:#ffffffb8;border:0;border-radius:999px;flex:none;width:34px;height:34px;font-size:1.3rem;font-weight:900;line-height:1}.success-toast strong{font-size:1rem}.success-toast span{color:#2f7a55;font-size:.92rem;line-height:1.35}.rsvp-form{gap:16px;margin-top:24px;display:grid}.guest-fieldset{background:#ffffff8c;border:1px solid #bf536c29;border-radius:24px;margin:0;padding:16px}.guest-fieldset legend{align-items:center;gap:8px;padding:0 6px;font-weight:900;display:flex}.guest-fieldset legend span{background:var(--blush);color:var(--rose-deep);border-radius:999px;padding:4px 8px;font-size:.72rem}.status-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;display:grid}.status-options label{cursor:pointer}.status-options input{opacity:0;position:absolute}.status-options span{min-height:44px;color:var(--muted);text-transform:capitalize;background:#fff;border:1px solid #bf536c2e;border-radius:999px;place-items:center;padding:0 18px;font-weight:900;display:grid}.status-options input:checked+span{border-color:var(--rose-deep);background:var(--blush);color:var(--rose-deep)}.note-label{color:var(--muted);gap:8px;font-weight:900;display:grid}textarea{resize:vertical;width:100%;color:var(--ink);background:#ffffffb8;border:1px solid #bf536c2e;border-radius:18px;padding:14px}input[type=password]{width:100%;min-height:48px;color:var(--ink);background:#ffffffb8;border:1px solid #bf536c2e;border-radius:999px;padding:0 16px}.admin-spreadsheet input:not([type=checkbox]),.admin-spreadsheet select{width:100%;min-width:140px;min-height:38px;color:var(--ink);background:#ffffffc7;border:1px solid #bf536c2e;border-radius:10px;padding:0 10px}.fine-print,.admin-link{color:var(--muted);font-size:.9rem}.admin-link{margin-top:10px;display:inline-block}.landing-card{max-width:760px}.not-found-card{grid-column:1/-1;align-content:center;min-height:420px;display:grid}.admin-shell{gap:18px;width:min(1680px,100%);display:grid}.auth-shell{place-items:center;min-height:100vh}.auth-card{width:min(720px,100%)}.auth-form{gap:16px;margin-top:28px;display:grid}.error-text{color:var(--rose-deep);margin:0;font-weight:900}.admin-header,.admin-table-card{border-radius:28px;padding:24px}.admin-header h1{font-size:clamp(2.5rem,7vw,5rem)}.admin-header p:last-child{color:var(--muted)}.admin-title-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.stats-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.stat-card strong{font-size:2rem}.admin-table-header,.guest-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.admin-table-header h2{font-size:2rem}.admin-table-header p{color:var(--muted);margin:8px 0 0}.guest-table{gap:8px;margin-top:20px;display:grid}.admin-note,.empty-card p{color:var(--muted)}.admin-save-banner{background:#ffffffb8;border-radius:999px;padding:8px 12px;font-weight:900;display:inline-block;color:#2f7a55!important}.admin-spreadsheet-card{padding:0;position:relative;overflow:hidden}.autosave-status{z-index:4;width:max-content;color:var(--muted);background:#ffffffdb;border-bottom-left-radius:14px;margin-left:auto;padding:8px 14px;font-size:.82rem;font-weight:900;position:sticky;top:0}.admin-spreadsheet-card .admin-table-header{padding:22px 24px}.spreadsheet-scroll{border-top:1px solid #bf536c29;overflow-x:auto}.admin-spreadsheet{border-collapse:separate;border-spacing:0;width:100%;min-width:1120px;font-size:.9rem}.admin-spreadsheet thead{z-index:6;position:sticky;top:0}.admin-spreadsheet th,.admin-spreadsheet td{text-align:left;vertical-align:middle;border-bottom:1px solid #bf536c24;border-right:1px solid #bf536c1a;padding:8px}.admin-spreadsheet th{color:var(--rose-deep);letter-spacing:.08em;text-transform:uppercase;background:#ffeef2;font-size:.72rem;font-weight:900}.admin-spreadsheet tr:nth-child(2n) td{background:#ffffff52}.admin-spreadsheet tr.section-dev-preview td,.admin-spreadsheet tr.section-anne td,.admin-spreadsheet tr.section-ziquan td,.admin-spreadsheet tr.section-family td,.admin-spreadsheet tr.section-other td{border-left:5px solid #0000}.admin-spreadsheet tr.section-dev-preview td{border-left-color:#7d8aa8}.admin-spreadsheet tr.section-anne td{border-left-color:#e8849a}.admin-spreadsheet tr.section-ziquan td{border-left-color:#7da7c8}.admin-spreadsheet tr.section-family td{border-left-color:#c19a5b}.admin-spreadsheet tr.section-other td{border-left-color:var(--muted)}.section-row td{z-index:2;color:#fff;letter-spacing:.14em;text-transform:uppercase;font-size:.78rem;font-weight:900;position:sticky;left:0;padding:11px 12px!important}.section-toggle{width:100%;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;padding:0;display:flex}.section-toggle span{letter-spacing:.08em;background:#ffffff38;border-radius:999px;padding:5px 10px;font-size:.68rem}.section-row.section-dev-preview td{background:#7d8aa8!important}.section-row.section-anne td{background:#e8849a!important}.section-row.section-ziquan td{background:#7da7c8!important}.section-row.section-family td{background:#c19a5b!important}.section-row.section-other td{background:var(--muted)!important}.rsvp-cell.rsvp-yes,.rsvp-cell.rsvp-yes select{color:#19683f;background:#e0f5e8;font-weight:900}.admin-spreadsheet tr.rsvp-row-yes td{background:linear-gradient(90deg,#e0f5e8f2,#ffffff70);box-shadow:inset 0 0 0 999px #e0f5e81a,inset 7px 0 #3da66b}.admin-spreadsheet a{color:var(--rose-deep);font-weight:900}.copy-link-button{color:var(--rose-deep);white-space:nowrap;cursor:pointer;background:#ffffffc7;border:1px solid #bf536c38;border-radius:999px;padding:8px 12px;font-size:.82rem;font-weight:900}.add-invitee-button{color:#19683f;white-space:nowrap;cursor:pointer;background:#e0f5e8c7;border:1px solid #3da66b42;border-radius:999px;padding:8px 12px;font-size:.82rem;font-weight:900}.add-invitee-button:hover:not(:disabled){background:#e0f5e8;border-color:#3da66b80}.add-invitee-button:disabled{cursor:wait;opacity:.72}.copy-link-button:hover{background:#fff;border-color:#bf536c75}.checkbox-cell{text-align:center!important}.checkbox-hit-area{cursor:pointer;place-items:center;width:100%;min-width:48px;min-height:38px;display:grid}.checkbox-hit-area input{cursor:pointer;width:22px;height:22px;accent-color:var(--rose-deep)}.guest-row{background:#fff9;border-radius:16px;padding:12px 14px}.guest-row span:first-child{font-weight:900}@media (max-width:860px){.page-shell{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.page-shell,.landing-shell,.admin-shell{padding:12px 10px 32px}.postcard,.admin-header,.admin-table-card{border-radius:26px;padding:22px}.stamp{width:124px;height:124px;margin-bottom:18px;margin-left:auto;position:static}.sender-stamp{margin-bottom:18px;position:static}.photo-stamp{width:124px;height:124px}.invite-hero{padding-top:0;padding-right:0}.details-grid,.status-options{grid-template-columns:1fr}.admin-table-header,.guest-row{flex-direction:column;align-items:stretch}}
