:root{--ink:#1f2937;--muted:#6b7280;--line:#e5e7eb;--bg:#f6f7f9;--nav:#17202a;--nav2:#222f3e;--accent:#9b6b43;--white:#fff;--green:#16855b;--red:#c44747}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:linear-gradient(180deg,var(--nav),var(--nav2));color:#fff;padding:28px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:grid;grid-template-columns:44px 1fr;column-gap:10px;align-items:center;margin-bottom:38px}.brand span{grid-row:1/3;width:44px;height:44px;border-radius:14px;background:#fff;color:var(--accent);display:grid;place-items:center;font:700 24px Georgia}.brand strong{font-size:19px}.brand small{opacity:.65}.sidebar nav{display:grid;gap:8px}.sidebar nav a{padding:13px 14px;text-decoration:none;border-radius:10px;display:flex;gap:12px;align-items:center;color:#dfe6e9}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.12);color:#fff}.sidebar-user{margin-top:auto;padding:16px;border-top:1px solid rgba(255,255,255,.12);display:grid;gap:4px}.sidebar-user small{opacity:.65}.link-button{background:none;border:0;color:#fff;padding:8px 0;text-align:left;cursor:pointer}.app-main{margin-left:250px;padding:34px;min-height:100vh}.public-main{min-height:100vh}.page-header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:24px}.page-header h1{font-size:30px;margin:4px 0 6px}.page-header p{margin:0;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:.15em;color:var(--accent);font-weight:700}.card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 30px rgba(20,30,45,.05)}.form-card{padding:28px;max-width:1050px}.form-card.narrow{max-width:650px}.form-grid{display:grid;gap:18px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}label{display:block;font-weight:600;margin:14px 0 7px}input,select,textarea{width:100%;padding:12px 13px;border:1px solid #cfd5dd;border-radius:9px;background:#fff;font:inherit;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid rgba(155,107,67,.18);border-color:var(--accent)}input[type=color]{height:46px;padding:4px}.form-actions{display:flex;gap:10px;margin-top:24px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:11px 17px;border-radius:9px;border:1px solid transparent;text-decoration:none;font-weight:700;cursor:pointer;font:inherit}.btn.primary{background:var(--accent);color:#fff}.btn.secondary{border-color:var(--line);background:#fff;color:var(--ink)}.btn.full{width:100%}.validation,[data-valmsg-for]:not(:empty){color:var(--red);font-size:13px}.alert{padding:14px 18px;border-radius:10px;margin-bottom:18px}.alert.success{background:#e9f8f1;color:#126845}.alert.error{background:#feecec;color:#962c2c}.alert.info{background:#eef5ff;color:#285b9d}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px}.stat span{display:block;color:var(--muted);font-size:13px}.stat strong{font-size:33px;display:block;margin-top:8px}.stat.positive{border-left:4px solid var(--green)}.stat.negative{border-left:4px solid var(--red)}.stat.accent{border-left:4px solid var(--accent)}.quick-flow{padding:24px}.quick-flow div{display:flex;gap:12px;align-items:center;flex-wrap:wrap;color:var(--muted)}.quick-flow span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff}.table-card{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:15px 17px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#fafafa}td strong,td small{display:block}td small{color:var(--muted);margin-top:4px}.badge{display:inline-block;padding:5px 9px;background:#eef1f4;border-radius:999px;font-size:12px}.badge.green{background:#e5f7ef;color:#14734f}.badge.red{background:#fde9e9;color:#a33333}.badge.gray{color:#68707a}.actions{display:flex;gap:8px;align-items:center;white-space:nowrap}.actions a,.actions button{border:0;background:none;color:#744a28;text-decoration:underline;cursor:pointer;padding:0;font:inherit}.actions form{display:inline}.empty{text-align:center;color:var(--muted);padding:40px}.design-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:24px}.tokens{background:#f7f2ed;border-radius:8px;padding:12px;font-size:13px;color:#6a4b32;margin-top:8px}.preview{min-height:650px;padding:40px;text-align:center;background-size:cover;background-position:center;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--text-font)}.preview>span{font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--primary)}.preview img{width:150px;height:150px;object-fit:cover;border-radius:50%;margin:20px}.preview h2{font:700 34px var(--title-font);color:var(--primary)}.preview p{line-height:1.7}.preview-qr{width:85px;height:85px;border:8px dotted var(--primary);display:grid;place-items:center;margin-top:20px}.login-page{display:grid;place-items:center;min-height:100vh;background:linear-gradient(135deg,#f7eee6,#eef2f7)}.login-card{width:min(430px,92vw);padding:34px;background:#fff;border-radius:18px;box-shadow:0 30px 80px rgba(30,30,40,.12)}.login-brand{color:var(--ink);margin-bottom:28px}.hint{font-size:12px;color:var(--muted);margin-top:20px}.mobile-menu{display:none}.invitation-body{min-height:100vh;background-size:cover;background-attachment:fixed;padding:40px 16px;font-family:var(--text-font)}.invitation-card{width:min(720px,100%);margin:auto;background:rgba(255,255,255,.94);border-radius:26px;padding:42px;text-align:center;box-shadow:0 30px 90px rgba(40,20,10,.15);border-top:7px solid var(--primary)}.couple-photo{width:180px;height:180px;border-radius:50%;object-fit:cover;border:7px solid var(--secondary)}.invited-name{display:block;text-transform:uppercase;letter-spacing:.18em;color:var(--primary);font-size:12px;margin-top:20px}.invitation-card h1{font:700 42px var(--title-font);color:var(--primary);margin:12px 0}.invitation-text{font-size:18px;line-height:1.8;white-space:pre-line}.event-details{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:28px 0}.event-details div{background:var(--secondary);padding:18px;border-radius:12px}.event-details span,.event-details small{display:block;color:#6d625b;font-size:12px}.event-details strong{display:block;margin:7px 0}.qr-public{width:180px;display:block;margin:28px auto 7px}.rsvp-form{text-align:left;border-top:1px solid var(--line);margin-top:28px;padding-top:24px}.rsvp-form h2{text-align:center}.radio-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.radio-row label{border:1px solid var(--line);border-radius:10px;padding:13px}.radio-row input{width:auto}.confirmation,.closed{padding:18px;border-radius:10px;margin-top:24px;background:#e9f8f1;color:#126845}.closed{background:#f2f2f2;color:#555}@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr)}.design-layout{grid-template-columns:1fr}.sidebar{transform:translateX(-100%);transition:.2s}.menu-open .sidebar{transform:none}.app-main{margin-left:0;padding:70px 18px 25px}.mobile-menu{display:block;position:fixed;top:14px;left:14px;z-index:30;border:0;border-radius:9px;background:var(--nav);color:#fff;padding:10px 13px}.form-grid.two{grid-template-columns:1fr}.span-2{grid-column:auto}.event-details{grid-template-columns:1fr}.invitation-card{padding:26px 18px}.page-header{flex-direction:column}.actions{flex-wrap:wrap}}@media(max-width:560px){.stats-grid{grid-template-columns:1fr}.radio-row{grid-template-columns:1fr}.invitation-card h1{font-size:32px}}
.header-actions{display:flex;gap:10px;flex-wrap:wrap}.table-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.reception-table-card{padding:22px;display:flex;flex-direction:column;gap:18px}.table-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.table-card-head h2{margin:5px 0;font-size:21px}.table-card-head small{color:var(--muted)}.table-number{font-size:11px;font-weight:800;letter-spacing:.13em;color:var(--accent);text-transform:uppercase}.capacity-line{height:9px;border-radius:999px;background:#edf0f3;overflow:hidden}.capacity-line>div{height:100%;background:linear-gradient(90deg,var(--accent),#c79b76);border-radius:inherit}.capacity-line.large{height:13px}.table-capacity{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;flex-wrap:wrap}.table-capacity strong{color:var(--ink);font-size:16px;margin-right:3px}.card-actions{display:flex;gap:9px;margin-top:auto}.card-actions .btn{flex:1}.empty-state{grid-column:1/-1;text-align:center;padding:52px 25px}.table-overview{padding:25px;margin-bottom:20px;display:grid;gap:16px}.table-overview>div:first-child{display:flex;justify-content:space-between;align-items:center}.table-overview>div:first-child span{color:var(--muted)}.table-overview>div:first-child strong{font-size:22px}.table-note{margin:0;padding:12px 14px;background:#faf7f3;border-radius:9px;color:#665446}.table-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;background:#f4ede7;color:#744a28;text-decoration:none;font-size:12px;font-weight:800}.table-pill span{font-weight:500;color:#7b6a5d}.guest-table-public{margin:25px auto 5px;padding:17px 22px;max-width:360px;border:1px solid color-mix(in srgb,var(--primary) 28%,white);border-radius:14px;background:var(--secondary)}.guest-table-public span,.guest-table-public small{display:block;color:#6d625b;font-size:12px}.guest-table-public strong{display:block;font:700 21px var(--title-font);color:var(--primary);margin:5px 0}.table-stats{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1150px){.table-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.table-grid,.table-stats{grid-template-columns:1fr}.header-actions,.card-actions{width:100%}.header-actions .btn{flex:1}.table-card-head{flex-direction:column}.table-overview>div:first-child{align-items:flex-start;flex-direction:column;gap:5px}}
.btn.disabled{background:#eef0f2;color:#8a9199;border-color:#e1e4e8;cursor:not-allowed;text-decoration:none}
.scanner-layout,.two-column-admin{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:20px;margin-bottom:22px}.scanner-card,.option-list{padding:24px}.scanner-card h2,.option-list h2{margin-top:0}#qr-reader{width:100%;min-height:260px;margin:16px 0;border:2px dashed var(--line);border-radius:12px;overflow:hidden}.attendance-list{margin-top:20px}.option-list{max-width:850px}.option-list h3{margin:22px 0 8px;color:var(--accent)}.option-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.option-row small{display:block;color:var(--muted);margin-top:4px}.danger-link{border:0;background:none;color:var(--red);text-decoration:underline;cursor:pointer;font:inherit}.marriage-list{margin-top:22px;max-width:1050px}.rsvp-options{margin:22px 0;padding:18px;background:var(--secondary);border-radius:14px}.rsvp-options h2{margin:0 0 15px;text-align:center}.rsvp-options h3{color:var(--primary);margin:20px 0 8px}.rsvp-option{background:#fff;border:1px solid var(--line);border-radius:11px;padding:13px;margin-bottom:10px}.rsvp-option>label{display:flex;gap:10px;align-items:flex-start;margin:0}.rsvp-option>label input{width:auto;margin-top:4px}.rsvp-option>label span{flex:1}.rsvp-option small{display:block;color:var(--muted);margin-top:3px}.rsvp-option>div{display:grid;grid-template-columns:90px 1fr;gap:8px 12px;align-items:center;margin-top:10px}.rsvp-option>div label{margin:0}.rsvp-option>div input{padding:8px}
/* Contexte du mariage dans le formulaire d’invitation */
.marriage-context {
    margin-bottom: 1.25rem;
    padding: 1rem;
    border: 1px solid rgba(139, 94, 60, .22);
    border-radius: 14px;
    background: rgba(246, 238, 231, .55);
}
.marriage-context small {
    display: block;
    margin-top: .45rem;
    color: #6f6259;
}
@media(max-width:850px){.scanner-layout,.two-column-admin{grid-template-columns:1fr}.rsvp-option>div{grid-template-columns:1fr}}
.actions .action-edit{display:inline-flex;padding:6px 10px;border-radius:7px;background:#f4ede7;color:#744a28;text-decoration:none;font-weight:700}.actions .action-delete{color:var(--red);font-weight:700}.check-line{display:flex;align-items:center;gap:9px}.check-line input{width:auto}.management-note{padding:13px 16px;background:#fff8e8;border:1px solid #ead7aa;border-radius:10px;color:#70551e}
.report-filters{padding:18px;display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:14px;align-items:end;margin-bottom:20px}.report-filters label{margin-top:0}.report-filter-actions{display:flex;gap:8px}.report-stats{grid-template-columns:repeat(6,minmax(0,1fr))}.print-title{display:none}@media(max-width:1200px){.report-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.report-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media print{.no-print,.sidebar,.mobile-menu{display:none!important}.app-main{margin:0;padding:0}.print-title{display:block;margin-bottom:18px}.report-stats{grid-template-columns:repeat(6,1fr)}.stat{padding:10px;box-shadow:none}.stat strong{font-size:20px}.card{box-shadow:none;border-radius:0}.report-table{overflow:visible}th,td{padding:7px;font-size:10px}.badge{padding:2px 5px}}

/* Gestion des médias de l'invitation dans l'administration */
.current-media{margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fafafa}
.current-media>img{display:block;width:100%;height:150px;object-fit:cover;border-radius:8px;margin-bottom:10px}
.current-media .remove-media{margin:0;color:var(--red);font-size:13px;cursor:pointer}
.current-media .remove-media input{width:auto}
.field-help{display:block;margin-top:6px;color:var(--muted);font-size:12px}

/* Invitation publique responsive : couverture, texte, RSVP */
.invitation-document{scroll-behavior:smooth;scroll-snap-type:y proximity;background:#eee8e1;overflow-x:hidden}
.invitation-public-body{margin:0;min-height:100%;padding:0;background:#eee8e1;font-family:var(--text-font);color:var(--ink);overflow-x:hidden;-webkit-text-size-adjust:100%}
.invitation-flow{width:min(820px,100%);margin:0 auto;background:#fff;box-shadow:0 0 55px rgba(46,31,20,.16)}
.invitation-page{width:100%;min-height:100vh;min-height:100svh;scroll-snap-align:start;scroll-snap-stop:normal}
.invitation-cover{display:flex;align-items:flex-start;justify-content:center;min-height:100vh;min-height:100svh;padding:0;background:#fff;overflow:hidden}
.invitation-cover-image{display:block;width:100%;height:auto;max-width:100%;max-height:200vh;max-height:200svh;object-fit:contain;object-position:center top}
.invitation-cover-fallback{width:100%;min-height:100svh;padding:48px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:linear-gradient(160deg,var(--secondary),#fff);border:12px solid color-mix(in srgb,var(--primary) 30%,white)}
.invitation-cover-fallback span,.rsvp-eyebrow{font-size:12px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--primary)}
.invitation-cover-fallback h1{margin:18px 0;font:700 clamp(38px,8vw,66px) var(--title-font);color:var(--primary)}
.cover-couple-photo{width:min(330px,78vw);aspect-ratio:1/1;object-fit:cover;border-radius:50%;border:8px solid rgba(255,255,255,.85);box-shadow:0 20px 55px rgba(0,0,0,.2);margin-bottom:30px}
.invitation-message-page{padding:40px 22px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#fff,var(--secondary))}
.invitation-content-card{width:100%;min-width:0;padding:44px 34px;text-align:center;background:rgba(255,255,255,.96);border-radius:22px;border-top:7px solid var(--primary);box-shadow:0 24px 65px rgba(40,20,10,.12);overflow-wrap:anywhere}
.invitation-content-card h1,.invitation-rsvp-card>h1{font:700 clamp(34px,7vw,48px) var(--title-font);color:var(--primary);margin:14px 0}
.invitation-content-card .btn{max-width:100%;white-space:normal;text-align:center}
.invitation-content-card .couple-photo{width:clamp(130px,28vw,180px);height:clamp(130px,28vw,180px)}
.invitation-content-card .event-details strong,.guest-table-public strong{overflow-wrap:anywhere}
.invitation-content-card .qr-public{width:clamp(145px,34vw,190px);height:auto;max-width:100%}
.qr-caption{display:block;color:var(--muted)}
.invitation-rsvp-page{padding:40px 22px;display:flex;align-items:flex-start;justify-content:center;background:#f7f2ed}
.invitation-rsvp-card{width:100%;min-width:0;padding:44px 34px;background:#fff;border-radius:22px;box-shadow:0 24px 65px rgba(40,20,10,.12);overflow-wrap:anywhere}
.invitation-rsvp-card>h1{text-align:center;margin-top:9px}
.invitation-rsvp-card>.rsvp-eyebrow{display:block;text-align:center}
.invitation-rsvp-card .rsvp-form{margin-top:24px}
.invitation-rsvp-card input,.invitation-rsvp-card select,.invitation-rsvp-card textarea{max-width:100%}
.invitation-rsvp-card button,.invitation-rsvp-card select,.invitation-rsvp-card input[type="number"],.invitation-rsvp-card input[type="text"]{min-height:44px}

/* Tablette */
@media(max-width:900px){
    .invitation-flow{width:min(760px,100%)}
    .invitation-message-page,.invitation-rsvp-page{padding:28px 18px}
    .invitation-content-card,.invitation-rsvp-card{padding:38px 28px}
}

/* Téléphone */
@media(max-width:600px){
    .invitation-document{scroll-snap-type:y proximity}
    .invitation-flow{width:100%;box-shadow:none}
    .invitation-cover{align-items:flex-start}
    .invitation-cover-image{width:100%;max-height:200svh}
    .invitation-message-page,.invitation-rsvp-page{padding:14px 10px;padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right))}
    .invitation-content-card,.invitation-rsvp-card{padding:28px 16px;border-radius:15px}
    .invitation-content-card h1,.invitation-rsvp-card>h1{font-size:clamp(30px,10vw,40px);line-height:1.1}
    .invited-name,.rsvp-eyebrow{letter-spacing:.12em}
    .invitation-text{font-size:16px;line-height:1.65}
    .event-details{grid-template-columns:1fr;gap:9px;margin:22px 0}
    .event-details div{padding:14px 12px}
    .radio-row{grid-template-columns:1fr}
    .radio-row label{min-height:48px;display:flex;align-items:center;gap:10px;margin:0}
    .radio-row input{flex:0 0 auto;width:20px;height:20px}
    .rsvp-option>div{grid-template-columns:1fr}
    .invitation-rsvp-card input,.invitation-rsvp-card select,.invitation-rsvp-card textarea{font-size:16px}
    .invitation-rsvp-card .btn{min-height:48px}
    .invitation-cover-fallback{min-height:100svh;padding:36px 18px;border-width:7px}
    .cover-couple-photo{width:min(270px,76vw);margin-bottom:24px}
}

/* Très petits téléphones */
@media(max-width:380px){
    .invitation-message-page,.invitation-rsvp-page{padding:8px 6px}
    .invitation-content-card,.invitation-rsvp-card{padding:24px 13px;border-radius:12px}
    .guest-table-public{padding:14px 12px}
    .rsvp-options{padding:12px}
}

/* Téléphone tenu horizontalement */
@media(max-height:600px) and (orientation:landscape){
    .invitation-page{min-height:100dvh}
    .invitation-cover{min-height:100dvh}
    .invitation-cover-image{max-height:200dvh}
    .invitation-message-page,.invitation-rsvp-page{align-items:flex-start;padding-top:16px;padding-bottom:16px}
    .invitation-content-card,.invitation-rsvp-card{padding-top:24px;padding-bottom:24px}
    .couple-photo{width:120px;height:120px}
}

/* Grand écran : conserver une invitation lisible, centrée et non étirée */
@media(min-width:1200px){
    .invitation-flow{width:900px}
    .invitation-message-page,.invitation-rsvp-page{padding:58px 48px}
    .invitation-content-card,.invitation-rsvp-card{padding:52px 48px}
}
