@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap');
:root{--wine:#732942;--ink:#29242a;--muted:#736e73;--line:#e8e1e1;--paper:#faf8f6;--serif:'Playfair Display',Georgia,serif}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:16px 'DM Sans',sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #c0872f;outline-offset:3px}header{height:88px;padding:0 40px;display:flex;align-items:center;justify-content:space-between;background:white;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font:32px var(--serif)}.brandmark{background:var(--wine);color:white;width:44px;height:44px;display:grid;place-content:center;border-radius:50%;font-style:italic}.brandnote{font:11px 'DM Sans',sans-serif;letter-spacing:2px;margin:5px 0 0 18px;color:var(--muted)}.prototype{font-size:13px;padding:8px 13px;border:1px solid var(--line);border-radius:20px}.notice{font-size:13px;text-align:center;padding:9px 20px;background:#f1e8eb;color:#66394a;line-height:1.6}.shell{display:grid;grid-template-columns:245px 1fr;min-height:calc(100vh - 126px)}aside{padding:36px 24px;border-right:1px solid var(--line);background:#fff;display:flex;flex-direction:column}.event-label,.eyebrow{font-size:12px;letter-spacing:2px;font-weight:600;color:var(--wine)}.event-title{font:24px var(--serif);margin:12px 0 8px;overflow-wrap:anywhere}.event-date{font-size:14px;color:var(--muted)}nav{display:grid;gap:8px;margin-top:36px}nav a{padding:15px;border-radius:8px;font-size:13px;display:flex;gap:18px;color:var(--muted)}nav a span{font-size:15px;font-weight:500}nav a.active{background:#f5e9ee;color:var(--wine)}.aside-bottom{margin-top:auto;padding-top:90px}.aside-bottom strong{font:24px var(--serif)}.aside-bottom p{font-size:14px;line-height:1.7;color:var(--muted)}.text-btn{background:transparent;border:0;padding:10px 0;text-decoration:underline;color:var(--muted);font-size:13px}main{padding:34px 42px;min-width:0;max-width:1500px;width:100%;margin:auto}.heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:30px}h1{font:38px var(--serif);margin:8px 0}h2{font:26px var(--serif);margin:0 0 16px}p{line-height:1.6}.heading p{margin:8px 0 0;color:var(--muted);font-size:15px}.primary,.secondary{border:1px solid var(--wine);padding:12px 20px;border-radius:7px;font-size:14px;font-weight:600}.primary{background:var(--wine);color:white}.secondary{background:white;color:var(--wine)}.editorgrid{display:grid;grid-template-columns:minmax(300px,1fr) minmax(320px,1.12fr);gap:32px;align-items:start}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:20px}.paneltitle{display:flex;justify-content:space-between;align-items:center}.paneltitle h2{font-size:23px}.count{font-size:12px;color:var(--muted)}.themes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.theme{border:1px solid var(--line);background:white;border-radius:8px;padding:7px;min-width:0}.theme.selected{border:2px solid var(--wine);padding:6px}.swatch{height:84px;border-radius:4px;display:flex;align-items:center;justify-content:center;font:26px var(--serif);margin-bottom:8px}.theme span:last-child{font-size:13px}.swatch.cream{background:#f6eddf;color:#725e42}.swatch.rose{background:#f3dfe5;color:#6d2940}.swatch.night{background:#202d47;color:#eee1bd}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.span2{grid-column:1/-1}label{display:block;font-size:14px;font-weight:500}input,select,textarea{display:block;width:100%;margin-top:7px;padding:11px 12px;border:1px solid #dcd6d8;border-radius:6px;background:#fff;color:var(--ink);min-width:0}input:focus,textarea:focus,select:focus{outline:2px solid #c898a9;border-color:var(--wine)}textarea{resize:vertical;min-height:85px}.helper,.muted{font-size:13px;color:var(--muted);line-height:1.6}.preview-area{position:sticky;top:22px}.preview-top{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);letter-spacing:1px;padding:0 4px 14px}.invitation{--card-bg:#f8f0e3;--card-ink:#5d4a36;position:relative;background:var(--card-bg);color:var(--card-ink);text-align:center;border-radius:180px 180px 12px 12px;padding:66px 34px 44px;box-shadow:0 18px 55px #33282d13;border:1px solid #e4d8c6;overflow:hidden;min-height:650px}.invitation.rose{--card-bg:#f8e8ed;--card-ink:#732942;border-color:#e5cbd5}.invitation.night{--card-bg:#202d47;--card-ink:#f2e4c8;border-color:#465777}.invitation:before{content:'';position:absolute;inset:14px;border:1px solid currentColor;opacity:.25;border-radius:170px 170px 6px 6px;pointer-events:none}.invite-kicker{font-size:11px;letter-spacing:3px;margin:0 0 20px}.invite-name{font:italic 48px/1.2 var(--serif);margin:15px 0;overflow-wrap:anywhere}.invite-line{width:46px;height:1px;background:currentColor;opacity:.45;margin:24px auto}.invite-photo{width:150px;height:150px;border-radius:90px 90px 6px 6px;object-fit:cover;margin:0 auto 20px;display:block}.invitation h3{font:23px var(--serif);margin:15px 0 8px}.invitation p{font-size:14px;margin:8px 0}.invitation .intro{font-size:15px;max-width:300px;margin:20px auto}.invite-date{font:23px var(--serif);margin:20px 0!important}.preview-foot{font-size:13px;text-align:center;color:var(--muted);margin:18px 0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--line);padding:22px;border-radius:10px}.stat span{font-size:14px;color:var(--muted)}.stat strong{display:block;font:32px var(--serif);margin-top:10px}.stat.accent{background:var(--wine);color:white;border-color:var(--wine)}.stat.accent span{color:#ecd5dd}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{font-size:12px;color:var(--muted);font-weight:500;padding:14px 10px;background:var(--paper)}td{padding:17px 10px;border-bottom:1px solid var(--line);font-size:14px}.badge{border-radius:20px;padding:5px 9px;font-size:12px}.confirmed{color:#356247;background:#edf4ed}.pending{color:#815e24;background:#fcf3df}.declined{color:#855665;background:#f5e9ee}.delete{border:0;background:none;color:#823449;font-size:14px}.budgetgrid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.costrow{display:flex;justify-content:space-between;padding:15px 0;border-bottom:1px solid var(--line);gap:15px;font-size:15px}.costrow.total{font-weight:700;border-bottom:0;font-size:18px;color:var(--wine)}.inlineform{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;align-items:end}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.empty{padding:36px;text-align:center;color:var(--muted)}dialog{border:0;border-radius:14px;padding:22px;width:min(630px,94vw);max-height:94vh;background:var(--paper)}dialog::backdrop{background:#261924aa}.dialogbar{display:flex;justify-content:space-between;gap:15px;align-items:center;font-size:14px;margin-bottom:22px}.rsvp{padding:30px 10px 10px}.rsvp label{margin-bottom:14px}.rsvp h2{font-size:30px}.rsvp .formgrid{grid-template-columns:repeat(3,1fr)}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);background:#30232a;color:white;padding:13px 22px;border-radius:8px;opacity:0;pointer-events:none;transition:.2s;z-index:10;font-size:14px}#toast.show{opacity:1;transform:translate(-50%,0)}.saved{font-size:12px;color:#6b7469;margin-top:14px}.budgetNote{padding:16px 20px;background:#f0e8eb;border-radius:8px;font-size:14px;line-height:1.7}
@media(min-width:1500px){main{padding:42px 60px}.invitation{min-height:700px}}@media(max-width:1050px){.shell{grid-template-columns:195px 1fr}main{padding:28px 22px}aside{padding:28px 16px}.editorgrid{gap:20px;grid-template-columns:1fr 1fr}.panel{padding:18px}.stats{grid-template-columns:repeat(2,1fr)}.invite-name{font-size:38px}.invitation{padding:55px 24px 35px}.brandnote{display:none}}@media(max-width:780px){header{height:72px;padding:0 20px}.shell{display:block}aside{padding:15px 20px;border-right:0;border-bottom:1px solid var(--line)}.event-label,.event-title,.event-date,.aside-bottom{display:none}nav{margin:0;display:flex;gap:5px}nav a{flex:1;justify-content:center;padding:12px 8px;gap:7px}.editorgrid,.budgetgrid{grid-template-columns:1fr}.preview-area{position:static;max-width:500px;width:100%;margin:0 auto}.heading{align-items:flex-start;flex-wrap:wrap}h1{font-size:32px}.heading .primary{width:100%}main{padding:24px 18px}.inlineform{grid-template-columns:1fr 1fr}.inlineform label:first-child{grid-column:1/-1}.invitation{min-height:620px}.notice{font-size:12px}.brand{font-size:28px}.prototype{font-size:12px}.stat{padding:17px}.stat strong{font-size:27px}.rsvp .formgrid{grid-template-columns:1fr}.dialogbar{align-items:flex-start}}
/* Seating plan */
.seat-create{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.seat-create label{flex:1;min-width:140px}.seating-error{margin:10px 0 0;color:#a53024;font-size:14px}.seating-error:empty{display:none}.seating-layout{display:grid;grid-template-columns:minmax(270px,.8fr) minmax(300px,1.4fr);gap:26px;align-items:start}.seating-assign .paneltitle{display:block}.seating-assign .count{font-size:12px}.seat-help{font-size:14px;color:var(--muted);line-height:1.65}.seat-family{padding:22px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.seat-family:first-of-type{margin-top:20px}.seat-family strong{font-size:16px}.seat-family>p{font-size:13px;color:var(--muted);margin:7px 0 15px}.seat-family-controls{display:grid;gap:12px}.seat-family label,.seat-create label,.seat-table-edit label{font-size:14px;display:grid;gap:8px}.seat-family input,.seat-family select,.seat-create input,.seat-table-edit input{width:100%;min-width:0;padding:11px;border:1px solid #d8cdd1;border-radius:6px;background:white;color:var(--ink)}.seat-total{display:block;font-size:13px;margin-top:12px;color:var(--wine)}.seat-map-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:5px;margin-bottom:15px}.seat-map-head h2{margin:0}.seat-map-head p{font-size:13px;color:var(--muted)}.seat-key{display:inline-block;width:10px;height:10px;border:1px solid #ae949d;border-radius:3px;margin:0 3px 0 8px;background:white}.seat-key.occupied{background:var(--wine);border-color:var(--wine)}.seat-tables{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}.seat-table{border:1px solid var(--line);border-radius:14px;background:white;padding:16px;text-align:center;min-width:0}.seat-table.overfull{border-color:#bd4435;background:#fffafa}.table-diagram{width:100%;max-width:250px;display:block;margin:auto}.table-svg-label{font:12px 'DM Sans',sans-serif;fill:#6d545b;letter-spacing:.8px}.table-svg-number{font:38px Georgia,serif;fill:#732942}.seat-availability{font-size:14px;color:var(--wine);margin:0 0 20px}.overfull .seat-availability{color:#a53024;font-weight:600}.seat-table-edit{display:grid;grid-template-columns:1fr 1fr;gap:12px;text-align:left}.seat-table ul{list-style:none;padding:0;margin:20px 0 0;text-align:left}.seat-table li{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:14px;overflow-wrap:anywhere}.seat-table li b{color:var(--wine)}.seat-table .text-btn{font-size:14px;margin-top:10px}.seating-warning{padding:15px 20px;background:#fff0ed;border:1px solid #e4b4ad;border-radius:8px;color:#922c21;font-size:15px}.seat-empty{padding:45px 25px;text-align:center;border:1px dashed #cfb8c0;border-radius:14px;background:#fcf5f5}.seat-empty>span{font:48px var(--serif);color:#bd91a0}.seat-empty h3{font:25px var(--serif)}.seat-empty p{color:var(--muted);font-size:15px}@media(max-width:1100px){.seating-layout{grid-template-columns:1fr}.seat-family-controls{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}@media(max-width:600px){.seat-tables{grid-template-columns:1fr}.seat-create{display:grid;grid-template-columns:1fr 1fr}.seat-create label{min-width:0}.seat-create button{grid-column:1/-1}.seat-family-controls{grid-template-columns:1fr}.seating-layout{gap:10px}}
.menu-layout{display:grid;grid-template-columns:minmax(290px,.9fr) minmax(300px,1.1fr);gap:32px;align-items:start}.menu-formats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.menu-formats button{background:#fff;border:1px solid var(--line);border-radius:8px;padding:16px 5px;color:var(--ink)}.menu-formats .selected{border:2px solid var(--wine);background:#fbf0f3;padding:15px 4px}.menu-formats strong{display:block;font:25px var(--serif);margin-bottom:8px}.menu-formats span{font-size:12px}.menu-fields{display:grid;gap:18px}.menu-fields label{font-size:14px}.menu-preview{min-width:0;background:#eee8e4;border-radius:12px;padding:20px}.menu-preview .preview-top{gap:12px;flex-wrap:wrap}.menu-preview .helper{font-size:13px}.menu-preview iframe{display:block;border:0;transform-origin:top left;box-shadow:0 8px 25px #38232718;max-width:none}#menuPaperWrap{position:relative;width:100%;overflow:hidden;margin:18px auto}.primary:disabled{opacity:.5;cursor:not-allowed}@media(max-width:1000px){.menu-layout{grid-template-columns:1fr}.menu-preview{max-width:700px;width:100%;margin:auto}}@media(max-width:600px){.menu-preview{padding:12px}.menu-formats span{font-size:11px}}
/* SofInvite identity */
header{height:auto;min-height:112px;padding-top:8px;padding-bottom:8px}.brand .sofinvite-logo{display:block;width:200px;height:auto;border-radius:6px}.shell{min-height:calc(100vh - 150px)}@media(max-width:600px){header{gap:12px;padding:8px 16px;min-height:90px}.brand .sofinvite-logo{width:145px}.prototype{font-size:12px;padding:8px 10px;text-align:center}}
.invite-event{padding:20px 0 8px;margin-top:18px;border-top:1px solid currentColor}.invitation .invite-section-label{font:12px 'DM Sans',sans-serif;text-transform:uppercase;letter-spacing:2px;margin:0 0 12px}.invitation .invite-event h3{margin:8px 0;font-size:23px}.invitation .invite-event p{overflow-wrap:anywhere}.invitation .invite-schedule{font-size:15px;margin-top:12px}.invitation .invite-people{margin:20px 0;font-size:16px}.invite-people span{font-size:14px}.invitation .invite-deadline{font-size:15px;line-height:1.7}.event-warning{font-size:14px;color:#8b422e;background:#fff1e7;padding:12px;border-radius:6px}.event-warning:empty{display:none}.invitation .intro{white-space:pre-line}
