:root{--bg:#f6f1ea;--ink:#2b2a33;--muted:#6f6a73;--accent:#7a8f6b;--accent2:#c98b6b;--card:#fffdf9;--line:#e4dbcf}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 "Lora",Georgia,serif}
h1,h2,h3{font-family:"Cormorant Garamond",Georgia,serif;font-weight:600;letter-spacing:.01em;margin:.2em 0}
h1{font-size:2.6rem}a{color:var(--accent)}
.top{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;max-width:960px;margin:auto}
.brand{font-family:"Cormorant Garamond",serif;font-size:1.6rem;color:var(--ink);text-decoration:none}.brand b{color:var(--accent2)}
.wrap{max-width:760px;margin:0 auto;padding:12px 20px 48px}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px;margin:18px 0;box-shadow:0 8px 30px rgba(60,40,20,.06)}
label{display:block;font-size:.9rem;color:var(--muted);margin:12px 0 4px}
input,textarea,select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff}
.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:600px){.row{grid-template-columns:1fr}h1{font-size:2rem}}
.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:999px;padding:12px 22px;font:600 1rem system-ui,sans-serif;cursor:pointer;text-decoration:none}
.btn.alt{background:transparent;color:var(--accent);border:1.5px solid var(--accent)}.btn.sm{padding:7px 14px;font-size:.85rem}
.q{display:flex;gap:8px;align-items:center;margin:6px 0}.q input{flex:1}
.hero{text-align:center;padding:30px 10px}.hero .names{font-size:3rem;color:var(--ink)}.hero .when{color:var(--accent2);font-style:italic}
.choice{display:flex;gap:10px}.choice label{flex:1;border:1.5px solid var(--line);border-radius:12px;padding:12px;text-align:center;cursor:pointer;color:var(--ink)}
.choice input{display:none}.choice input:checked+span{color:var(--accent);font-weight:700}
.msg{padding:10px 14px;border-radius:10px;background:#eef3ea;margin:12px 0}.err{background:#f8e5e0}
.warn{background:#fff6e0;border:1px solid #f0d99a;padding:12px;border-radius:10px;font-size:.92rem}
table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--line)}
.stats{display:flex;gap:12px;flex-wrap:wrap}.stat{flex:1;min-width:120px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center}.stat b{display:block;font-size:1.8rem}
.disc{font-size:.8rem;color:var(--muted);text-align:center;max-width:640px;margin:20px auto}
.foot{font-size:.75rem;color:#a39e99;text-align:center;padding:16px}.foot a{color:#a39e99}
code{word-break:break-all;background:#f1ebe2;padding:2px 6px;border-radius:6px;font-size:.82rem}
/* ---- v2: themes + studio ---- */
.small{font-size:.85rem;color:var(--muted)}
body.wide .wrap{max-width:1240px}
.studio{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:22px;align-items:start}
.pvw{position:sticky;top:12px}.pvbar{display:flex;justify-content:space-between;align-items:center;margin:18px 0 8px;font:600 .85rem system-ui,sans-serif;color:var(--muted)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}.seg button{border:0;background:#fff;padding:6px 12px;font:inherit;cursor:pointer;color:var(--muted)}.seg .on{background:var(--accent);color:#fff}
.pvframe{border:1px solid var(--line);border-radius:18px;overflow:auto;max-height:calc(100vh - 90px);box-shadow:0 12px 40px rgba(0,0,0,.12);background:#fff;transition:max-width .25s;margin:auto}
.pvframe.phone{max-width:390px}.pvframe .inv{min-height:600px;padding:0 0 24px}
@media(max-width:900px){.studio{grid-template-columns:1fr}.pvw{position:static;order:-1}.pvframe{max-height:70vh}}
h3{font:600 1rem system-ui,sans-serif;margin:18px 0 8px;color:var(--ink)}
.tpls{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px}
.tpl{border:2px solid var(--line);border-radius:12px;padding:0;background:var(--b);cursor:pointer;overflow:hidden;text-align:center}
.tpl .tp{display:block;margin:10px 10px 0;padding:12px 0;background:var(--c);color:var(--a);font-size:1.5rem;border-radius:8px 8px 0 0;border-bottom:3px solid var(--a)}
.tpl small{display:block;padding:6px 4px;font:600 .72rem system-ui,sans-serif;color:var(--i);background:var(--c)}.tpl.on{border-color:var(--accent);box-shadow:0 0 0 3px #7a8f6b44}
.colors{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.cf{position:relative}
.sw-btn{display:flex;gap:8px;align-items:center;width:100%;border:1px solid var(--line);border-radius:10px;background:#fff;padding:7px;cursor:pointer}.sw{width:24px;height:24px;border-radius:6px;border:1px solid #0002}
.pop{position:absolute;z-index:20;top:100%;left:0;width:300px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;box-shadow:0 12px 30px rgba(0,0,0,.18)}
.pal{display:grid;grid-template-columns:repeat(12,1fr);gap:3px}.pal button{aspect-ratio:1;border:1px solid #0001;border-radius:4px;cursor:pointer;padding:0}.pal button:hover{transform:scale(1.25)}
.cust{display:flex;gap:6px;margin-top:8px;align-items:center}.cust input[type=color]{width:44px;height:36px;padding:2px}.cust .hx{flex:1}
.toggles{display:flex;flex-wrap:wrap;gap:8px}.tg{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:6px 12px;margin:0;color:var(--ink);cursor:pointer}.tg input{width:auto}
.sx{border-left:3px solid var(--accent);padding-left:12px;margin-top:10px}.photo-row{display:flex;gap:8px;align-items:center}
/* themed invitation */
.themed{color:var(--ink);font-family:var(--fb),Georgia,serif}
.themed h1,.themed h2,.themed .names{font-family:var(--fh),Georgia,serif;color:var(--ink)}
.themed .tc{background:var(--card);color:var(--ink);border-radius:18px;padding:26px;margin:18px auto;max-width:720px;box-shadow:0 8px 30px rgba(0,0,0,.08);border:1px solid color-mix(in srgb,var(--ink) 12%,transparent)}
.themed .inv-body{padding:0 16px}.themed .hero.tc{text-align:center}.themed .hero .when{color:var(--accent2);font-style:italic}.themed .kind{text-transform:uppercase;letter-spacing:.18em;font-style:normal!important;font-size:.8rem}
.themed .hero .names{font-size:clamp(2.2rem,6vw,3.6rem);line-height:1.1}
.themed .ph{height:clamp(220px,40vw,380px);background-size:cover;background-position:center;border-radius:0}
.themed[data-layout=top] .ph{max-width:720px;margin:18px auto 0;border-radius:18px}
.themed[data-layout=full] .ph{height:clamp(300px,60vh,560px);margin:0 0 -90px}
.themed[data-layout=full] .hero.tc{position:relative}
.themed[data-layout=side] .hero.tc{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center;text-align:left;padding:14px}.themed[data-layout=side] .ph{height:100%;min-height:260px;border-radius:12px}
@media(max-width:620px){.themed[data-layout=side] .hero.tc{grid-template-columns:1fr;text-align:center}}
.pvframe.phone .themed[data-layout=side] .hero.tc{grid-template-columns:1fr;text-align:center}.pvframe.phone .row{grid-template-columns:1fr}
.themed label{color:color-mix(in srgb,var(--ink) 65%,transparent)}.themed input,.themed select,.themed textarea{background:#fff;color:#222}
.themed .btn{background:var(--accent);color:var(--card);font-family:var(--fb),system-ui,sans-serif}.themed .btn.alt{background:transparent;color:var(--accent);border:1.5px solid var(--accent)}
.themed[data-btn=rounded] .btn{border-radius:10px}.themed[data-btn=square] .btn{border-radius:0;letter-spacing:.08em;text-transform:uppercase}.themed[data-btn=outline] .btn{background:transparent;color:var(--accent);border:2px solid var(--accent)}
.themed .choice label{border-color:color-mix(in srgb,var(--ink) 20%,transparent);color:var(--ink)}.themed .choice input:checked+span{color:var(--accent)}
.themed .choice label:has(input:checked){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.sched{list-style:none;padding:0;margin:0}.sched li{display:flex;gap:16px;padding:8px 0;border-bottom:1px dashed color-mix(in srgb,var(--ink) 20%,transparent)}.sched b{min-width:90px;color:var(--accent)}
.themed details{border-bottom:1px solid color-mix(in srgb,var(--ink) 15%,transparent);padding:8px 0}.themed summary{cursor:pointer;font-weight:600}
.themed .custom{font-size:1.1rem;text-align:center;margin:0}.themed .sec{text-align:center}.themed .sec .sched,.themed .sec details{text-align:left}
.themed .small{color:color-mix(in srgb,var(--ink) 60%,transparent)}
body.guest .top,body.guest .disc,body.guest .foot{background:color-mix(in srgb,var(--card) 88%,transparent);border-radius:12px}
body.guest .top a,body.guest .brand{color:var(--ink)}body.guest .disc{padding:10px 14px;color:var(--ink)}body.guest .foot{max-width:400px;margin:0 auto 16px}
body.guest .wrap{max-width:none;padding:0 0 30px}
