:root{--paper: #f3e6d0;--paper-2: #ead7b6;--paper-3: #dfc79a;--forest: #1e3a2f;--forest-deep: #121f19;--forest-mid: #2a4a3c;--berry: #9c2f2f;--berry-dark: #7a2323;--ink: #2a1d16;--ink-soft: #5c463a;--gold: #b08d4f;--gold-soft: #c9ad74;--rule: rgba(156, 47, 47, .38);--shadow: 0 18px 50px rgba(8, 14, 11, .45);--serif: "Fraunces", "Iowan Old Style", "Palatino Linotype", Palatino, serif;--sans: "Source Sans 3", "Source Sans Pro", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}html{background:var(--forest-deep)}body{margin:0;color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.5;background:radial-gradient(1200px 500px at 50% -10%,#355747 0%,transparent 55%),var(--forest-deep)}body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(circle,rgba(243,230,208,.18) 1px,transparent 1.5px);background-size:42px 42px;opacity:.35}a{color:var(--berry)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.shell{position:relative;z-index:1;width:min(760px,calc(100% - 32px));margin:0 auto;padding:28px 0 64px}.shell.wide{width:min(920px,calc(100% - 32px))}.brand{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px;color:var(--paper)}.brand-links{display:flex;gap:16px;flex-wrap:wrap;justify-content:flex-end}.brand a{color:inherit;text-decoration:none}.brand-mark{display:flex;align-items:center;gap:10px;letter-spacing:.28em;text-transform:uppercase;font-size:12px;font-weight:600}.brand-mark svg{display:block}.muted-link{color:var(--gold-soft);text-decoration:none;font-size:14px}.muted-link:hover{text-decoration:underline}.letter{position:relative;background:var(--paper);color:var(--ink);border-radius:2px;box-shadow:var(--shadow);padding:36px 36px 40px;overflow:hidden}.letter.lined{background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 31px,rgba(42,29,22,.06) 32px);background-position:0 8px}.letter:after{content:"";position:absolute;inset:10px;border:1px solid rgba(176,141,79,.35);pointer-events:none}.letter>*{position:relative;z-index:1}.kicker{margin:0 0 8px;color:var(--berry);letter-spacing:.28em;text-transform:uppercase;font-size:12px;font-weight:700}h1,h2,h3{font-family:var(--serif);font-weight:650;letter-spacing:-.02em;line-height:1.15}h1{font-size:clamp(2.1rem,5vw,3.1rem);margin:0 0 14px;font-optical-sizing:auto}h2{font-size:1.55rem;margin:0 0 10px}h3{font-size:1.2rem;margin:0 0 8px}.lede{font-family:var(--serif);font-size:1.15rem;font-style:italic;color:var(--ink-soft);margin:0 0 22px;max-width:38rem}.rule{height:1px;border:0;background:var(--rule);margin:22px 0}.stack{display:grid;gap:14px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.field{display:grid;gap:6px;flex:1;min-width:160px}.field.grow{flex:2}label,.lbl{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft)}input,select,textarea{width:100%;font:inherit;color:var(--ink);background:#ffffff59;border:1px solid rgba(42,29,22,.18);border-radius:0;padding:10px 12px}textarea{min-height:96px;resize:vertical}.btn{appearance:none;border:0;cursor:pointer;font:inherit;font-weight:700;letter-spacing:.03em;padding:11px 18px;background:var(--berry);color:var(--paper);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{background:var(--berry-dark)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px #2a1d1640}.btn.ghost:hover{background:#2a1d160d}.btn.gold{background:var(--forest);color:var(--paper)}.btn.gold:hover{background:var(--forest-mid)}.btn.small{padding:7px 12px;font-size:14px}.check{display:flex;align-items:center;gap:10px;font-size:16px;text-transform:none;letter-spacing:0;font-weight:400;color:var(--ink)}.check input{width:auto}.error{background:#f6d6d0;color:var(--berry-dark);padding:10px 12px;font-size:15px}.warn{background:#efe0b8;color:#5a4316;padding:10px 12px;font-size:15px}.ok{background:#d7e4d6;color:var(--forest);padding:10px 12px;font-size:15px}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 24px}.step{border:0;background:transparent;padding:8px 0 10px;cursor:pointer;font:inherit;color:var(--ink-soft);border-bottom:2px solid rgba(42,29,22,.12);text-align:left}.step strong{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase}.step.on{color:var(--berry);border-bottom-color:var(--berry)}.people-list,.exclude-list,.cycle-list,.wish-list,.msg-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.person,.exclude-row,.wish,.msg{background:#ffffff47;padding:10px 12px;display:grid;gap:4px}.person{grid-template-columns:1fr auto;align-items:center;gap:10px}.person .meta,.quiet{color:var(--ink-soft);font-size:14px}.cycle-item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;background:#ffffff47;padding:10px 12px}.cycle-item .ord{font-family:var(--serif);color:var(--berry);font-size:1.2rem;width:1.6rem;text-align:center}.arrow{text-align:center;color:var(--gold);letter-spacing:.3em;font-size:12px;padding:2px 0}.stamp{position:absolute;top:22px;right:22px;width:86px;height:86px;opacity:.9;transform:rotate(12deg);pointer-events:none;z-index:2}.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.card-block{background:#ffffff38;padding:16px}.msg.from-them{border-left:3px solid var(--gold)}.msg.from-me{border-left:3px solid var(--forest)}footer.tiny{margin-top:22px;color:var(--gold-soft);font-size:13px;text-align:center}.party-footer{margin-top:28px}.party-footer .kicker{color:var(--gold-soft);text-align:center;margin-bottom:4px}.party-strip{display:flex;gap:14px;overflow-x:auto;padding:16px 6px 28px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.party-strip figure{flex:0 0 auto;margin:0;background:var(--paper);padding:7px 7px 16px;box-shadow:0 10px 28px #080e0b73;scroll-snap-align:start}.party-strip figure:nth-child(odd){transform:rotate(-1.8deg)}.party-strip figure:nth-child(2n){transform:rotate(1.6deg)}.party-strip figure:nth-child(3n){transform:rotate(-.8deg)}.party-strip img{display:block;height:148px;width:auto;max-width:230px;object-fit:cover}.party-strip a{display:block}.csv-box{min-height:120px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px}.holly{display:flex;justify-content:center;margin:8px 0 18px}.preview{display:grid;gap:28px}.preview-heading{color:var(--paper);margin:8px 0 0}.preview-note{color:var(--gold-soft);margin:0;font-size:15px}.preview-nav{display:flex;flex-wrap:wrap;gap:16px}.preview-nav a{font-weight:700}.email-grid{display:grid;gap:22px}.email-card{margin:0;background:var(--paper);box-shadow:var(--shadow);padding:16px 16px 0}.email-card figcaption{display:grid;gap:4px;padding:0 4px 12px}.email-card iframe{display:block;width:100%;height:420px;border:0;background:#14261f}@media(max-width:640px){.shell{width:calc(100% - 16px);padding-top:16px}.letter{padding:26px 18px 28px}.letter:after{inset:7px}.stamp{width:64px;height:64px;top:14px;right:12px}.two,.steps{grid-template-columns:1fr}.row{flex-direction:column;align-items:stretch}.field{min-width:0;width:100%}.person{grid-template-columns:1fr}h1{padding-right:48px}.brand-links{gap:10px}.email-card iframe{height:480px}}
