:root{--olive:#757556;--olive-d:#5f5f45;--cream:#fffcf9;--stone:#edece8;--line:#dfdedb;--char:#585b5a;--ink:#333;--slate:#657174;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Jost',system-ui,sans-serif}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--stone);color:var(--ink);font:400 17px/1.55 var(--sans)}
a{color:var(--olive-d)}h1,h2,h3{font-family:var(--serif);font-weight:500;color:var(--ink);line-height:1.15;margin:.2em 0 .4em}h1{font-size:2.3rem}h2{font-size:1.7rem}h3{font-size:1.3rem}
main{max-width:1240px;margin:0 auto;padding:24px 20px 60px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 20px;background:var(--cream);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font:500 1.35rem var(--serif)}.brand img{width:40px;height:40px}.brand em{color:var(--olive)}
.topbar nav{display:flex;gap:4px;flex-wrap:wrap}.topbar nav a{text-decoration:none;color:var(--char);padding:8px 12px;border-radius:999px;font-size:.95rem}.topbar nav a:hover{background:var(--stone)}
.panel{background:var(--cream);border:1px solid var(--line);border-radius:14px;padding:24px;margin-bottom:20px}
.narrow{max-width:520px;margin-left:auto;margin-right:auto}.center{text-align:center}
.muted{color:var(--slate)}.small{font-size:.85rem}.lead{font-size:1.1rem;color:var(--char)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--olive);color:#fff;border:1px solid var(--olive);border-radius:999px;padding:11px 22px;font:500 .95rem var(--sans);letter-spacing:.03em;text-decoration:none;cursor:pointer;min-height:46px}
.btn:hover{background:var(--olive-d)}.btn.ghost{background:transparent;color:var(--olive-d)}.btn.ghost:hover{background:var(--stone)}.btn.big{padding:14px 30px;font-size:1.05rem;min-height:54px}
.link{background:none;border:0;color:var(--olive-d);cursor:pointer;font:inherit;padding:6px;text-decoration:underline}.danger{color:#9a4a3a}
.stack{display:grid;gap:14px}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.f{display:grid;gap:6px;font-weight:500;color:var(--char);margin-bottom:14px}.f small{display:block;font-weight:400;color:var(--slate);font-size:.88rem}
input,select,textarea{font:400 1.05rem var(--sans);color:var(--ink);background:#fff;border:1px solid #cfcdc7;border-radius:10px;padding:12px 14px;width:100%;min-height:50px}
textarea{resize:vertical;line-height:1.5}input:focus,select:focus,textarea:focus{outline:2px solid var(--olive);outline-offset:1px;border-color:var(--olive)}
.check{display:flex;align-items:center;gap:10px;font-weight:400}.check input{width:22px;height:22px;min-height:0}
code{background:var(--stone);padding:2px 6px;border-radius:6px}
.error{background:#f6e7e3;color:#7a3527;padding:10px 14px;border-radius:10px}.flash{background:#eef0e4;border:1px solid #cfd3b8;padding:12px 16px;border-radius:12px;margin-bottom:16px}
.pill{display:inline-block;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;padding:3px 10px;border-radius:999px;background:var(--stone);color:var(--char);vertical-align:middle;font-family:var(--sans)}
.pill.yes{background:#e6e9d6;color:#4c4c35}.pill.no{background:#f1e6e2;color:#7a3527}.pill.draft{background:#eee;color:#666}.pill.sample{background:#f3ead5;color:#7a5d1f}
.hello{margin-top:40px}.hello-mark{width:170px;border-radius:12px;margin-bottom:8px}
/* admin */
.grid-2{display:grid;grid-template-columns:380px 1fr;gap:20px;align-items:start}.add-couple{position:sticky;top:84px}
.couple-card{display:grid;grid-template-columns:1fr auto;gap:10px 16px;padding:16px 0;border-top:1px solid var(--line)}.couple-card:first-of-type{border-top:0}
.couple-card h3{margin:0}.couple-card p{margin:.2em 0}.cc-stats{text-align:center;min-width:80px}.cc-stats b{display:block;font:500 2rem var(--serif);color:var(--olive-d)}.cc-stats span,.cc-stats small{display:block;font-size:.8rem;color:var(--slate)}
.cc-actions{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}.cc-actions form{margin:0}.cc-actions .btn{min-height:40px;padding:8px 16px;font-size:.88rem}
.linkbox{display:flex;gap:10px;align-items:end;background:var(--cream);border:1px solid var(--olive);border-radius:14px;padding:16px;margin-bottom:20px}.linkbox .f{flex:1;margin:0}
/* rsvp board */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:16px 0 20px}.stat{background:var(--cream);border:1px solid var(--line);border-radius:14px;padding:18px;text-align:center}.stat b{display:block;font:500 2.4rem var(--serif);color:var(--olive-d)}.stat span{color:var(--slate);font-size:.9rem}
.meal-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.meal-list li{display:flex;justify-content:space-between;background:var(--stone);padding:10px 14px;border-radius:10px}
.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.rtable{width:100%;border-collapse:collapse;font-size:.95rem}.rtable th{text-align:left;font-weight:500;color:var(--slate);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);padding:8px}.rtable td{border-bottom:1px solid var(--line);padding:10px 8px;vertical-align:top}
.mail pre{white-space:pre-wrap;font:400 .95rem/1.5 var(--sans);background:#fff;padding:14px;border-radius:10px;border:1px solid var(--line)}
/* editor */
.editor-page main{max-width:1400px}
.editor{display:grid;grid-template-columns:minmax(0,560px) minmax(0,1fr);gap:28px;align-items:start}
.wizard{background:var(--cream);border:1px solid var(--line);border-radius:18px;padding:26px 28px}
.progress{margin-bottom:14px}.bar{height:6px;background:var(--stone);border-radius:9px;overflow:hidden}.bar span{display:block;height:100%;background:var(--olive);transition:width .3s}
.step-num{margin:0;color:var(--olive);font-size:.8rem;text-transform:uppercase;letter-spacing:.14em;font-weight:500}.wizard h1{font-size:2.2rem;margin:.1em 0 .2em}.hint{color:var(--char);margin:0 0 20px;font-size:1.02rem}
.wiz-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.save{font-size:.85rem;color:var(--slate);text-align:center}.save.ok{color:#5a6b2f}.save.err{color:#9a4a3a}.save.busy{color:var(--slate)}
.stepper{list-style:none;padding:0;margin:20px 0 0;display:flex;flex-wrap:wrap;gap:6px}.stepper button{background:var(--stone);border:0;border-radius:999px;padding:6px 12px;font:400 .8rem var(--sans);color:var(--char);cursor:pointer}.stepper li.on button{background:var(--olive);color:#fff}
.switch{display:flex;align-items:center;gap:14px;cursor:pointer;margin:6px 0 16px;font-weight:500;color:var(--ink)}.switch input{position:absolute;opacity:0;width:1px;height:1px}
.knob{flex:none;width:54px;height:32px;border-radius:99px;background:#cfcdc7;position:relative;transition:.2s}.knob:after{content:'';position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch input:checked+.knob{background:var(--olive)}.switch input:checked+.knob:after{left:26px}.switch input:focus-visible+.knob{outline:2px solid var(--olive);outline-offset:2px}.sw-text small{display:block;font-weight:400;color:var(--slate);font-size:.88rem}
.gated.off{opacity:.35;pointer-events:none;filter:grayscale(1)}
details.more{margin:6px 0 14px;border-top:1px dashed var(--line);padding-top:8px}details.more summary{cursor:pointer;color:var(--olive-d);font-size:.92rem;padding:6px 0;list-style:none}details.more summary:before{content:'+ '}details.more[open] summary:before{content:'− '}.more-body{padding-top:8px}
.rep-item{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px 4px;margin-bottom:12px}.rep-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;color:var(--char)}.rep-head b{font-weight:500}
.add{width:100%;border-style:dashed}.inline{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.photo-pick{display:flex;gap:16px;align-items:center;margin-bottom:12px}.photo-pick img,.ph-empty{width:150px;height:110px;object-fit:cover;border-radius:10px;background:var(--stone);display:flex;align-items:center;justify-content:center;color:var(--slate);font-size:.85rem}.pp-actions{display:flex;gap:8px;flex-wrap:wrap}
.mini-label{font-size:.88rem;color:var(--slate);margin:4px 0 6px}.gm-photos{display:flex;gap:8px;margin-bottom:18px}.gm-photo{border:2px solid transparent;padding:0;border-radius:10px;overflow:hidden;cursor:pointer;width:84px;height:62px;background:none}.gm-photo img{width:100%;height:100%;object-fit:cover;display:block}.gm-photo.on{border-color:var(--olive)}
.themes{display:grid;gap:12px}.theme-card{display:grid;grid-template-columns:70px 1fr;grid-template-rows:auto auto;gap:2px 14px;text-align:left;background:#fff;border:2px solid var(--line);border-radius:14px;padding:14px;cursor:pointer;font:inherit;color:var(--ink)}.theme-card.on{border-color:var(--olive);box-shadow:0 0 0 3px #e6e9d6}
.theme-card .swatch{grid-row:1/3;width:70px;height:54px;border-radius:8px}.theme-card b{font:500 1.25rem var(--serif)}.theme-card small{color:var(--slate)}
.t-classic .swatch{background:linear-gradient(90deg,#fffcf9 60%,#757556 60%);border:1px solid var(--line)}.t-grove .swatch{background:linear-gradient(90deg,#757556 60%,#fffcf9 60%)}.t-garden .swatch{background:linear-gradient(90deg,#edece8 50%,#585b5a 50%)}
.thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.thumb{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--stone)}.thumb img{width:100%;height:100%;object-fit:cover}.thumb button{position:absolute;top:6px;right:6px;width:30px;height:30px;border-radius:50%;border:0;background:rgba(255,255,255,.92);cursor:pointer;font-size:1.1rem}
.add-thumb{display:flex;align-items:center;justify-content:center;border:2px dashed #cfcdc7;cursor:pointer;color:var(--olive-d);font-weight:500}
.share-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:12px}.muted-box{opacity:.7}
.preview{position:sticky;top:84px;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;height:calc(100vh - 110px)}.preview-bar{display:flex;justify-content:space-between;padding:10px 16px;font-size:.85rem;color:var(--slate);border-bottom:1px solid var(--line);background:var(--cream)}.preview iframe{width:100%;height:calc(100% - 42px);border:0}
@media (max-width:1000px){.editor{grid-template-columns:1fr}.preview{display:none}.grid-2{grid-template-columns:1fr}.add-couple{position:static}}
@media (max-width:640px){body{font-size:16px}main{padding:16px 12px 50px}h1{font-size:1.9rem}.wizard{padding:20px 16px;border-radius:14px}.wizard h1{font-size:1.85rem}.two{grid-template-columns:1fr;gap:0}
 .topbar{padding:8px 12px}.brand{font-size:1.15rem}.brand img{width:32px;height:32px}.topbar nav{width:100%;overflow-x:auto;flex-wrap:nowrap}.topbar nav a{white-space:nowrap;padding:6px 10px;font-size:.88rem}
 .wiz-nav{flex-wrap:wrap}.wiz-nav .save{order:-1;width:100%}.wiz-nav .btn{flex:1}
 .stats{grid-template-columns:1fr 1fr}.linkbox{flex-direction:column;align-items:stretch}.panel{padding:18px}
 .rtable thead{display:none}.rtable tr{display:block;border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin-bottom:10px;background:#fff}.rtable td{display:flex;justify-content:space-between;gap:12px;border:0;padding:5px 0;text-align:right}.rtable td:before{content:attr(data-l);color:var(--slate);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;text-align:left}
 .photo-pick{flex-direction:column;align-items:flex-start}.photo-pick img,.ph-empty{width:100%;height:180px}}
.feature-toggle{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
