@import url('https://fonts.googleapis.com/css2?family=Bodoni+Moda:opsz,wght@6..96,400;6..96,600&family=Cinzel:wght@400;500&family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&family=DM+Sans:wght@400;500;600&family=DM+Serif+Display:ital@0;1&family=Fraunces:opsz,wght@9..144,400;9..144,600&family=Italiana&family=Karla:wght@400;500;600&family=Lato:wght@400;700&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Manrope:wght@400;500;600&family=Marcellus&family=Montserrat:wght@400;500;600&family=Playfair+Display:ital,wght@0,400;0,600;1,400&family=Prata&family=Raleway:wght@400;500;600&family=Source+Sans+3:wght@400;500;600&display=swap');

:root {
  --ink: #25302b;
  --muted: #69736e;
  --paper: #fffdf8;
  --sage: #728878;
  --sage-soft: #e9eee9;
  --line: #dfe5df;
  --shadow: 0 22px 60px rgba(47, 62, 54, .12);
  --wash-a: rgba(194, 207, 195, .45);
  --wash-b: rgba(225, 210, 190, .4);
  --page: #f5f2eb;
  --display-font: "Italiana", serif;
  --body-font: "DM Sans", sans-serif;
}

:root[data-font="cinema-italiano"] { --display-font:"Italiana",serif;--body-font:"DM Sans",sans-serif; }
:root[data-font="villa-borghese"] { --display-font:"Bodoni Moda",serif;--body-font:"Montserrat",sans-serif; }
:root[data-font="palazzo"] { --display-font:"Cormorant Garamond",serif;--body-font:"Karla",sans-serif; }
:root[data-font="la-scala"] { --display-font:"Playfair Display",serif;--body-font:"Lato",sans-serif; }
:root[data-font="grand-tour"] { --display-font:"Cinzel",serif;--body-font:"Raleway",sans-serif; }
:root[data-font="riviera"] { --display-font:"Prata",serif;--body-font:"Manrope",sans-serif; }
:root[data-font="osteria"] { --display-font:"DM Serif Display",serif;--body-font:"Source Sans 3",sans-serif; }
:root[data-font="lago-di-como"] { --display-font:"Marcellus",serif;--body-font:"Montserrat",sans-serif; }
:root[data-font="notte-romana"] { --display-font:"Libre Baskerville",serif;--body-font:"Karla",sans-serif; }
:root[data-font="estate-italiana"] { --display-font:"Fraunces",serif;--body-font:"DM Sans",sans-serif; }

:root[data-theme="limoncello"] { --ink:#26372d;--muted:#68756c;--paper:#fffdf1;--sage:#7b8d4e;--sage-soft:#f2f3d8;--line:#dde2c5;--wash-a:rgba(240,214,80,.30);--wash-b:rgba(104,145,92,.26);--page:#fbf6df; }
:root[data-theme="capri"] { --ink:#17334a;--muted:#617386;--paper:#fffdf7;--sage:#2477a7;--sage-soft:#e0f1f7;--line:#cddfe7;--wash-a:rgba(30,133,181,.28);--wash-b:rgba(245,195,88,.27);--page:#f5f2e8; }
:root[data-theme="positano"] { --ink:#3d2c2b;--muted:#806b68;--paper:#fffaf3;--sage:#d46e53;--sage-soft:#fae2d8;--line:#ead5cb;--wash-a:rgba(226,112,83,.28);--wash-b:rgba(239,184,80,.25);--page:#fbefe3; }
:root[data-theme="toscane"] { --ink:#3c3328;--muted:#746b5e;--paper:#fffaf0;--sage:#8b734a;--sage-soft:#eee5d4;--line:#ded3bf;--wash-a:rgba(158,119,71,.25);--wash-b:rgba(112,129,83,.22);--page:#f2eadc; }
:root[data-theme="bellagio"] { --ink:#203532;--muted:#667a76;--paper:#fbfffc;--sage:#477c76;--sage-soft:#dceceb;--line:#cedfdd;--wash-a:rgba(80,145,139,.28);--wash-b:rgba(179,202,188,.35);--page:#edf4f0; }
:root[data-theme="portofino"] { --ink:#203c42;--muted:#637a7e;--paper:#fffdf8;--sage:#d07152;--sage-soft:#f7e0d7;--line:#ded9cf;--wash-a:rgba(36,117,126,.27);--wash-b:rgba(223,120,82,.25);--page:#f4eee4; }
:root[data-theme="sicilia"] { --ink:#402d31;--muted:#7e676a;--paper:#fff9ec;--sage:#b35d4c;--sage-soft:#f5dfc9;--line:#e5d0bd;--wash-a:rgba(177,76,55,.25);--wash-b:rgba(228,162,50,.31);--page:#f7ead3; }
:root[data-theme="amalfi"] { --ink:#17364a;--muted:#647786;--paper:#fffef6;--sage:#3d83a8;--sage-soft:#deedf4;--line:#cbdde5;--wash-a:rgba(46,140,188,.30);--wash-b:rgba(252,207,70,.30);--page:#f5f0dc; }
:root[data-theme="roma"] { --ink:#402c26;--muted:#7c6961;--paper:#fffaf2;--sage:#a56a49;--sage-soft:#eddfd2;--line:#dfd1c5;--wash-a:rgba(153,92,59,.24);--wash-b:rgba(203,172,124,.30);--page:#efe5d9; }
:root[data-theme="dolce-rosa"] { --ink:#432d34;--muted:#806a71;--paper:#fff9f7;--sage:#b76f7f;--sage-soft:#f5e0e4;--line:#ead3d8;--wash-a:rgba(211,139,153,.27);--wash-b:rgba(226,188,155,.28);--page:#f8ece9; }

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  color: var(--ink);
  background:
    radial-gradient(circle at 12% 8%, var(--wash-a), transparent 28rem),
    radial-gradient(circle at 90% 38%, var(--wash-b), transparent 26rem),
    var(--page);
  font-family: var(--body-font);
}

:root[data-pattern="sans-rayures"] body { background-image:radial-gradient(circle at 12% 8%,var(--wash-a),transparent 28rem),radial-gradient(circle at 90% 38%,var(--wash-b),transparent 26rem); }
:root[data-pattern="riviera-douce"] body { background-image:linear-gradient(90deg,transparent 0 50%,var(--sage-soft) 50% 100%),radial-gradient(circle at 12% 8%,var(--wash-a),transparent 28rem);background-size:72px 100%,auto; }
:root[data-pattern="cabana"] body { background-image:linear-gradient(90deg,var(--page) 0 38px,var(--sage-soft) 38px 76px);background-size:76px 100%; }
:root[data-pattern="parasols"] body { background-image:linear-gradient(90deg,var(--page) 0 64px,var(--sage-soft) 64px 128px);background-size:128px 100%; }
:root[data-pattern="filet-italien"] body { background-image:repeating-linear-gradient(90deg,var(--page) 0 22px,var(--sage-soft) 22px 25px); }
:root[data-pattern="palazzo"] body { background-image:repeating-linear-gradient(90deg,var(--page) 0 46px,var(--line) 46px 48px,var(--sage-soft) 48px 92px,var(--line) 92px 94px); }
:root[data-pattern="soleil"] body { background-image:linear-gradient(90deg,var(--page) 0 32px,var(--sage-soft) 32px 48px,var(--page) 48px 80px);background-size:80px 100%; }

.page-shell { position:relative;width: min(1060px, calc(100% - 32px)); margin: 0 auto; padding: 72px 0 40px; }
.hero { position:relative;z-index:1;max-width: 720px; margin: 0 auto 50px; text-align: center; }
.eyebrow, .section-label { margin: 0 0 16px; color: var(--sage); font-size: .75rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
h1 { display: flex; align-items: center; justify-content: center; gap: 22px; margin: 0; font-family: var(--display-font); font-size: clamp(3.4rem, 10vw, 6.6rem); font-weight: 400; line-height: .9; }
h1 i { color: var(--sage); font-size: .48em; font-weight: 400; }
.date-line { display: flex; justify-content: center; align-items: center; gap: 18px; margin: 32px auto 22px; color: var(--muted); font-size: .82rem; letter-spacing: .14em; text-transform: uppercase; }
.date-line::before, .date-line::after { content: ""; width: 48px; height: 1px; background: #b5c0b7; }
.date-line strong { color: var(--ink); font-weight: 600; }
.intro { max-width: 570px; margin: 0 auto; color: var(--muted); font-family: var(--display-font); font-size: 1.35rem; line-height: 1.6; }

.rsvp-card { position:relative;z-index:1;max-width: 720px; margin: 0 auto; padding: clamp(28px, 6vw, 58px); border: 1px solid rgba(114, 136, 120, .18); border-radius: 6px; background: rgba(255, 253, 248, .94); box-shadow: var(--shadow); }
.decor-layer { position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible; }
.decor-layer-background { z-index:0; }
.decor-layer-foreground { z-index:3; }
.decor-item { position:absolute;width:clamp(105px,16vw,190px);height:auto;filter:drop-shadow(0 8px 14px rgba(47,62,54,.08)); }
.decor-item.decor-free { left:var(--decor-x);top:var(--decor-y);width:var(--decor-size);max-width:none;transform:translate(-50%,-50%) rotate(var(--decor-rotate,0deg)); }
.decor-citrons { width:clamp(115px,18vw,220px); }
.decor-citron-fleuri { width:clamp(90px,13vw,155px); }
.decor-rondelles-citron { width:clamp(130px,20vw,240px); }
.decor-branche-citronnier { width:clamp(100px,15vw,180px); }
.decor-grappe-citrons { width:clamp(120px,18vw,220px); }
.decor-guirlande-citrons { width:clamp(280px,52vw,560px); }
.decor-orange-fleurie { width:clamp(90px,13vw,155px); }
.decor-rondelles-orange { width:clamp(130px,20vw,240px); }
.decor-orange-fleurie-deux-moitie { width:clamp(125px,19vw,230px); }
.decor-grappe-oranges { width:clamp(120px,18vw,220px); }
.decor-branche-oranger { width:clamp(100px,15vw,180px); }
.decor-bande-citron-orange-legere,.decor-frise-citron-orange,.decor-bande-citron-orange-fleurie { width:clamp(300px,58vw,620px); }
.decor-bougainvillier { width:clamp(95px,14vw,165px); }
.decor-olivier { width:clamp(100px,15vw,180px); }
.decor-soleil { width:clamp(90px,13vw,150px);opacity:.88; }
.decor-haut-gauche { top:18px;left:-70px;transform:rotate(-8deg); }
.decor-haut-droite { top:28px;right:-65px;transform:rotate(8deg); }
.decor-milieu-gauche { top:38%;left:-95px;transform:rotate(-12deg); }
.decor-milieu-droite { top:38%;right:-90px;transform:rotate(12deg); }
.decor-bas-gauche { bottom:30px;left:-70px;transform:rotate(7deg); }
.decor-bas-droite { right:-65px;bottom:25px;transform:rotate(-7deg); }
.decor-bandeau-haut { top:-48px;left:50%;transform:translateX(-50%); }
.decor-bandeau-questionnaire { top:390px;left:50%;transform:translateX(-50%); }
:root[data-frame="sans-lisere"] .rsvp-card { border-color:transparent; }
:root[data-frame="filet-sottile"] .rsvp-card { border:2px solid var(--sage); }
:root[data-frame="doppio"] .rsvp-card { border:1px solid var(--sage);box-shadow:0 0 0 5px var(--paper),0 0 0 7px var(--sage),var(--shadow); }
:root[data-frame="palazzo"] .rsvp-card { border:1px solid var(--ink);outline:3px double var(--sage);outline-offset:7px; }
:root[data-frame="riviera"] .rsvp-card { border:0;border-left:7px solid var(--sage);border-right:7px solid var(--sage);box-shadow:inset 3px 0 var(--sage-soft),inset -3px 0 var(--sage-soft),var(--shadow); }
:root[data-frame="perle"] .rsvp-card { border:3px dotted var(--sage);outline:1px solid var(--sage);outline-offset:4px; }
:root[data-frame="cinema"] .rsvp-card { border:1px solid var(--ink);box-shadow:inset 0 0 0 4px var(--paper),inset 0 0 0 6px var(--sage),inset 0 0 0 10px var(--paper),var(--shadow); }
:root[data-frame="ondulato"] .rsvp-card { border:0;border-radius:10px 5px 12px 6px; }
:root[data-frame="ondulato"] .rsvp-card::before { content:"";position:absolute;inset:-5px -7px -6px -5px;border:2px solid var(--sage);border-radius:11px 5px 13px 7px;transform:rotate(.22deg);pointer-events:none; }
:root[data-frame="fatto-a-mano"] .rsvp-card { border:0;border-radius:5px 11px 6px 9px; }
:root[data-frame="fatto-a-mano"] .rsvp-card::before { content:"";position:absolute;inset:-4px -6px -7px -4px;border:2px dashed var(--sage);border-radius:6px 12px 7px 10px;transform:rotate(-.18deg);pointer-events:none; }
:root[data-frame="doppio-irregolare"] .rsvp-card { border:1px solid var(--sage);border-radius:8px 4px 10px 5px; }
:root[data-frame="doppio-irregolare"] .rsvp-card::before { content:"";position:absolute;inset:-7px -5px -6px -8px;border:1.5px solid var(--sage);border-radius:5px 10px 6px 12px;transform:rotate(.16deg);pointer-events:none; }
:root[data-frame="doppio-irregolare"] .rsvp-card::after { content:"";position:absolute;inset:-11px -9px -10px -12px;border:1px solid var(--sage-soft);border-radius:12px 6px 14px 7px;transform:rotate(-.12deg);pointer-events:none; }
.rsvp-card h2 { margin: 0 0 12px; font-family: var(--display-font); font-size: clamp(2rem, 5vw, 3rem); font-weight: 400; }
.rsvp-card p { color: var(--muted); line-height: 1.6; }
form { margin-top: 34px; }
fieldset { margin: 0 0 26px; padding: 0; border: 0; }
legend, label:not(.choice) { display: block; margin: 22px 0 9px; font-size: .88rem; font-weight: 600; }
label span { color: var(--muted); font-weight: 400; }
.choice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.choice { position: relative; cursor: pointer; }
.choice input { position: absolute; opacity: 0; }
.choice span { display: block; min-height: 96px; padding: 22px; border: 1px solid var(--line); border-radius: 4px; transition: .2s ease; }
.choice b, .choice small { display: block; }
.choice b { margin-bottom: 5px; color: var(--ink); }
.choice small { color: var(--muted); }
.choice input:checked + span { border-color: var(--sage); background: var(--sage-soft); box-shadow: inset 0 0 0 1px var(--sage); }
.choice input:focus-visible + span { outline: 3px solid rgba(114,136,120,.28); outline-offset: 2px; }
select, textarea { width: 100%; padding: 13px 14px; border: 1px solid var(--line); border-radius: 4px; color: var(--ink); background: white; font: inherit; resize: vertical; }
input[type="email"] { width: 100%; padding: 13px 14px; border: 1px solid var(--line); border-radius: 4px; color: var(--ink); background: white; font: inherit; }
select:focus, textarea:focus { outline: 2px solid rgba(114,136,120,.32); border-color: var(--sage); }
button { width: 100%; margin-top: 28px; padding: 15px 22px; border: 1px solid var(--ink); border-radius: 3px; color: white; background: var(--ink); font: 600 .9rem var(--body-font); cursor: pointer; transition: .2s ease; }
button:hover { transform: translateY(-1px); background: #37453e; }
.privacy { margin: 12px 0 0; text-align: center; font-size: .75rem; }
.field-help { margin: -3px 0 22px !important; font-size: .75rem; }.retrieve-box { margin: -12px 0 34px; padding: 17px 19px; border: 1px solid var(--line); border-radius: 4px; background: #f7f8f5; }.retrieve-box summary { cursor: pointer; font-size: .88rem; font-weight: 600; }.retrieve-box form { margin-top: 18px; }.retrieve-box label { margin-top: 0; }
.confirmation { padding: 26px 0 4px; text-align: center; }
.confirmation > div { display: grid; width: 54px; height: 54px; margin: 0 auto 20px; border-radius: 50%; place-items: center; color: white; background: var(--sage); font-size: 1.5rem; }
.secondary { width: auto; color: var(--ink); background: transparent; }
footer { padding: 20px 16px 36px; color: var(--muted); text-align: center; font-size: .78rem; letter-spacing: .08em; }

.landing-body { overflow-x: hidden; }
.landing-shell { display: grid; grid-template-columns: minmax(340px, .9fr) 1.1fr; min-height: 100vh; }
.brand-panel { display: flex; flex-direction: column; justify-content: space-between; min-height: 100vh; padding: clamp(32px, 5vw, 72px); color: #fdfbf5; background: #2c3a33; }
.brand { color: inherit; font-family: "Italiana", serif; font-size: 1.55rem; text-decoration: none; }.brand span { color: #b8c9bb; }
.brand-copy { max-width: 550px; margin: 80px 0; }.brand-copy .eyebrow { color: #b8c9bb; }.brand-copy h1 { display: block; margin-bottom: 30px; text-align: left; font-size: clamp(3.3rem, 6vw, 6rem); line-height: 1; }.brand-copy h1 i { color: #cbd8cd; font-size: .8em; }.brand-copy > p:last-child { max-width: 460px; color: #c7cec9; font-size: 1.05rem; line-height: 1.8; }
.brand-foot { margin: 0; color: #9eaaa3; font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; }
.access-panel { display: grid; min-height: 100vh; padding: 40px; place-items: center; }.access-card { width: min(520px, 100%); }.access-card h2 { margin: 0 0 14px; font-family: "Italiana", serif; font-size: clamp(2.6rem, 5vw, 4rem); font-weight: 400; }.access-card > p { color: var(--muted); line-height: 1.7; }.access-card form { margin-top: 42px; }.code-control { display: grid; grid-template-columns: 1fr auto; }.code-control input { min-width: 0; padding: 16px; border: 1px solid #cfd7d1; border-radius: 4px 0 0 4px; font: inherit; font-size: 1rem; }.code-control input:focus { z-index: 1; outline: 2px solid rgba(114,136,120,.35); border-color: var(--sage); }.code-control button { width: auto; margin: 0; border-radius: 0 4px 4px 0; }.code-control button span { margin-left: 12px; }.code-error { margin: 10px 0 0; color: #9b3d37 !important; font-size: .85rem; }.access-help { margin-top: 36px; padding-top: 24px; border-top: 1px solid var(--line); font-size: .82rem; }

@media (max-width: 600px) {
  .page-shell { padding-top: 48px; }
  h1 { flex-direction: column; gap: 3px; }
  h1 i { margin: -4px 0; }
  .choice-grid { grid-template-columns: 1fr; }
  .date-line { gap: 10px; font-size: .72rem; }
  .date-line::before, .date-line::after { width: 20px; }
  .decor-item { width:95px;opacity:.72; }
  .decor-item.decor-free { width:min(var(--decor-size),42vw); }
  .decor-haut-gauche,.decor-milieu-gauche,.decor-bas-gauche { left:-42px; }
  .decor-haut-droite,.decor-milieu-droite,.decor-bas-droite { right:-42px; }
  .decor-guirlande-citrons { width:min(92vw,430px); }
  .decor-bandeau-questionnaire { top:410px; }
}

@media (max-width: 800px) { .landing-shell { grid-template-columns: 1fr; }.brand-panel { min-height: 48vh; }.brand-copy { margin: 70px 0 30px; }.brand-foot { display: none; }.access-panel { min-height: 52vh; padding: 54px 24px; } }
@media (max-width: 430px) { .code-control { grid-template-columns: 1fr; gap: 10px; }.code-control input, .code-control button { border-radius: 4px; }.code-control button { width: 100%; } }
