/* Marche ou Crève — parchment invitation */
:root{--night:#271e18;--wood:#382b21;--parchment:#ead6ae;--paper:#f3e5c9;--ink:#33271f;--muted:#76634d;--rule:rgba(106,76,44,.32);--red:#833d31;--gold:#ad824b;--serif:Georgia,"Palatino Linotype","Book Antiqua",serif;--ui:ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:#382b21}
body{margin:0}
button,input,textarea{font:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
.invitation-body{background:radial-gradient(ellipse at 50% 0%,#67503c 0%,#382b21 50%,#211916 100%);background-attachment:fixed;color:var(--ink);font-family:var(--serif);padding:50px 24px 80px;min-height:100vh}
.invitation-body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.23;background-image:repeating-linear-gradient(32deg,transparent 0px,transparent 37px,rgba(0,0,0,.12) 38px,transparent 39px),repeating-linear-gradient(-32deg,transparent 0px,transparent 37px,rgba(255,255,255,.07) 38px,transparent 39px)}
.sheet{width:min(100%,968px);margin:auto;position:relative;isolation:isolate;padding:0 clamp(24px,7.5vw,88px) 46px;box-shadow:0 40px 95px rgba(0,0,0,.55),0 5px 18px rgba(0,0,0,.3),inset 0 0 40px rgba(110,62,22,.22);border:1px solid #d0b487;background-color:var(--parchment);background-image:radial-gradient(ellipse at 0% 0%,rgba(115,69,31,.25),transparent 30%),radial-gradient(ellipse at 100% 98%,rgba(92,46,19,.23),transparent 38%),radial-gradient(ellipse at 93% 16%,rgba(157,115,56,.15),transparent 24%),radial-gradient(ellipse at 35% 45%,rgba(255,251,232,.7),transparent 62%),repeating-linear-gradient(0deg,rgba(78,45,24,.022) 0px,rgba(78,45,24,.022) 1px,transparent 1px,transparent 4px)}
.sheet:before{content:"";pointer-events:none;position:absolute;inset:15px;border:1px solid rgba(117,75,37,.28);z-index:-1}
.sheet:after{content:"";pointer-events:none;position:absolute;inset:25px;border:1px solid rgba(117,75,37,.095);z-index:-1}
.filigree{text-align:center;color:#967341;letter-spacing:.5em;font-size:12px}
.filigree--top{padding:34px 0 4px}
.filigree--bottom{padding:26px 0 0}
.hero{text-align:center;padding:16px 0 38px}
.hero__crest{width:87px;height:98px;margin:auto;color:var(--red)}
.hero__crest svg{width:100%;height:100%}
.eyebrow{font:700 11px var(--ui);letter-spacing:.23em;text-transform:uppercase;color:var(--red)}
.hero .eyebrow{margin:13px 0 24px}
.document-type{font:600 10px var(--ui);text-transform:uppercase;letter-spacing:.22em;color:#827056;margin:0 0 12px}
.hero h1{font-size:clamp(48px,7.8vw,89px);line-height:1.01;letter-spacing:-.06em;margin:0;color:#3d291f;font-weight:700;text-wrap:balance;text-shadow:0 1px 0 rgba(255,255,255,.5)}
.hero__or{color:var(--red);font-size:.63em;letter-spacing:-.08em;vertical-align:.07em}
.hero__subtitle{font-style:italic;font-size:clamp(16px,2.4vw,20px);color:#725846;margin:18px 0 25px}
.hero__divider{display:flex;align-items:center;justify-content:center;gap:18px;color:#956d46;font-size:18px}
.hero__divider span{display:block;height:1px;flex:1;max-width:140px;background:linear-gradient(90deg,transparent,#9f7d50)}
.hero__divider span:last-child{transform:rotate(180deg)}
.hero__intro{max-width:665px;margin:28px auto 0;font-size:18px;line-height:1.78;text-wrap:pretty}
.hero__intro strong{color: inherit; font-weight: inherit}
.brief{border-top:2px solid #8e673d;border-bottom:2px solid #8e673d;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:21px 10px 14px;margin:0 0 65px;position:relative;background:rgba(255,245,218,.17)}
.brief:before,.brief:after{content:"";position:absolute;left:0;right:0;height:1px;background:#b39469}
.brief:before{top:3px}.brief:after{bottom:3px}
.brief__item{text-align:center}
.brief__label{font:700 10px var(--ui);text-transform:uppercase;letter-spacing:.18em;color:#866344;margin-bottom:10px}
.brief__value{font-size:20px;font-weight:700;line-height:1.45}
.brief__value span{display:block;font-weight:400;color:#6e543b;font-size:16px}
.brief__ornament{font-size:28px;color:#a07b4e}
.brief__note{grid-column:1/-1;text-align:center;font:600 11px var(--ui);letter-spacing:.08em;color:#785f44;margin-top:6px}
.chapter{margin:0 0 66px}
.chapter__top{display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--rule);padding-bottom:9px;color:var(--red);font:700 10px var(--ui);letter-spacing:.2em;text-transform:uppercase;margin-bottom:21px}
.chapter h2{font-size:clamp(28px,4.3vw,40px);font-weight:400;margin:0 0 19px;line-height:1.15;letter-spacing:-.04em;color:#3f2b1f}
.chapter p{font-size:16px;line-height:1.83;margin:0 0 16px}
.chapter p strong{color:#633c2b}
.chapter--intro{margin-bottom:72px}
.chapter__instruction{color:#66513e;max-width:730px}
.character-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:27px}
.character{position:relative;border:1px solid #bfa17c;padding:19px 22px 0;display:flex;flex-direction:column;min-height:277px;background:linear-gradient(135deg,rgba(255,251,234,.65),rgba(246,225,187,.26));transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;cursor:pointer;overflow:hidden}
.character:before{content:"";position:absolute;inset:5px;border:1px solid rgba(166,127,75,.2);pointer-events:none}
.character:hover{transform:translateY(-2px);border-color:#9c6845;box-shadow:0 6px 20px rgba(93,55,31,.13)}
.character:has(input:checked){border-color:var(--red);box-shadow:inset 0 0 0 2px rgba(131,61,49,.2),0 8px 20px rgba(78,39,23,.12);background:linear-gradient(145deg,rgba(255,244,215,.85),rgba(236,209,165,.6))}
.character__input{position:absolute;opacity:0;width:1px;height:1px}
.character:has(input:focus-visible){outline:3px solid var(--red);outline-offset:3px}
.character__no{font:700 9px var(--ui);letter-spacing:.15em;color:#946e47;position:absolute;right:20px;top:18px}
.character__medallion{display:flex;align-items:center;justify-content:center;color:#714835;background:rgba(147,91,47,.09);border:1px solid rgba(141,85,45,.34);border-radius:50%;width:52px;height:52px;font-size:27px;margin:0 0 15px}
.character__name{font-size:27px;font-weight:700;line-height:1.1}
.character__details{font:700 10px var(--ui);color:var(--red);letter-spacing:.11em;text-transform:uppercase;margin:8px 0 14px}
.character__details span{margin:0 4px;color:#b29b79}
.character__description{color:#634f3e;font-style:italic;font-size:14px;line-height:1.6;margin-bottom:20px;display:block;flex-grow:1}
.character__select{display:flex;align-items:center;gap:10px;min-height:47px;border-top:1px solid rgba(114,79,46,.24);font:700 11px var(--ui);color:#775c45}
.character__circle{height:18px;width:18px;border:1px solid #9a7f61;border-radius:50%;display:inline-block;position:relative;flex:none}
.character:has(input:checked) .character__circle{border:2px solid var(--red)}
.character:has(input:checked) .character__circle:after{content:"";position:absolute;inset:3px;background:var(--red);border-radius:50%}
.character:has(input:checked) .character__select{color:var(--red)}
.legend{display:flex;gap:25px;flex-wrap:wrap;margin:22px 0 30px;font:500 12px var(--ui);color:#79614b}
.legend span{display:flex;align-items:center;gap:8px}
.legend i{display:inline-block;width:20px;height:20px;position:relative}
.legend__circle{border:2px solid #7e4b31;border-radius:47% 53% 48% 52%;transform:rotate(-10deg)}
.legend__strike:before{content:"";position:absolute;top:50%;left:0;width:100%;height:2px;transform:rotate(-13deg);background:#933e35}
.legend__neutral{border-bottom:1px solid #a58a69}
.tone-grid{display:flex;justify-content:center;flex-wrap:wrap;column-gap:14px;row-gap:15px;padding:15px 0 10px}
.tone{font-family:var(--serif);font-style:italic;background:transparent;border:1px solid transparent;border-radius:50%;min-height:50px;padding:10px 15px;color:#463225;font-size:18px;position:relative;transition:transform .15s,color .15s;white-space:nowrap}
.tone:hover{transform:translateY(-2px);color:#874431}
.tone:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.tone[data-state="liked"]{border:2px solid #814b37;border-radius:49% 51% 46% 54%/54% 49% 51% 46%;transform:rotate(-3deg);padding:9px 14px}
.tone[data-state="liked"]:nth-child(even){transform:rotate(3deg)}
.tone[data-state="disliked"]{color:#963f35}
.tone[data-state="disliked"]:after{content:"";position:absolute;left:5%;right:5%;height:2px;top:51%;background:#963f35;transform:rotate(-9deg)}
textarea,input[type=text],input[type=password]{color:#39291e;border:1px solid #b99b76;border-radius:0;display:block;width:100%;background:rgba(255,248,230,.55);padding:15px 16px;outline:none;font-size:16px;transition:border-color .15s,box-shadow .15s}
textarea{resize:vertical;min-height:125px;line-height:1.7}
textarea:focus,input[type=text]:focus,input[type=password]:focus{border-color:var(--red);box-shadow:0 0 0 2px rgba(131,61,49,.12)}
textarea::placeholder,input::placeholder{color:#a59074;font-style:italic}
.field-label{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:15px;font-weight:700;margin:19px 0 10px}
.field-label span{font:500 11px var(--ui);color:#927960;text-transform:uppercase;letter-spacing:.08em}
.signature-fields{display:grid;grid-template-columns:1fr 1fr;gap:19px;margin-top:25px}
.sign-title{margin-top:30px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:15px;font-weight:700}
.text-button{background:none;border:0;color:var(--red);font:700 12px var(--ui);text-decoration:underline;text-underline-offset:3px;padding:4px}
.signature-frame{position:relative;min-height:135px;border:1px solid #b99b76;background:rgba(255,248,230,.55)}
.signature-frame canvas{width:100%;height:auto;aspect-ratio:960/216;display:block;cursor:crosshair;touch-action:none;position:relative;z-index:2}
.signature-placeholder{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;font:italic 17px var(--serif);color:#b39d7f;z-index:1}
.signature-rule{position:absolute;bottom:17%;left:8%;width:84%;height:1px;background:#bca684;pointer-events:none}
.field-error{margin-top:12px!important;color:#9a342d;font-size:13px!important;font-family:var(--ui)}
.honeypot{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.chapter--signature{margin-bottom:0}
.privacy-note{margin-top:25px!important;color:#7d674f;font:12px/1.7 var(--ui)!important;max-width:650px}
.submit-button{border:1px solid #4b2a22;display:flex;align-items:center;justify-content:center;gap:18px;width:min(100%,440px);margin:32px auto 0;padding:19px 22px;background:linear-gradient(160deg,#8f4738,#662d28);color:#fff3d6;box-shadow:0 5px 0 #512a21,0 9px 15px rgba(56,33,19,.2);font:700 12px var(--ui);letter-spacing:.17em;text-transform:uppercase;transition:transform .15s,box-shadow .15s,filter .15s}
.submit-button:hover{transform:translateY(-2px);box-shadow:0 7px 0 #512a21,0 12px 20px rgba(56,33,19,.24);filter:brightness(1.05)}
.submit-button:disabled{opacity:.65;cursor:wait;box-shadow:none;transform:none}
.submit-button__icon{font-size:15px;font-weight:400;opacity:.75}
.submit-status{text-align:center;font:700 13px var(--ui);margin-top:19px;min-height:18px;color:#50673c}
.submit-status--error{color:#9b332c}
.sheet__footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:42px 0 0;margin:30px 0 0;border-top:1px solid rgba(96,66,39,.24);font:italic 12px var(--serif);color:#79634d}
.sheet__seal{height:70px;width:70px;border-radius:50%;background:radial-gradient(circle at 30% 28%,#ad6454,#81372e 55%,#5c2722);border:4px double rgba(255,206,162,.28);box-shadow:0 5px 10px rgba(73,38,26,.3),inset 0 0 10px rgba(48,18,15,.6);display:flex;align-items:center;justify-content:center;gap:4px;color:#f2bf93;font-size:24px;font-style:normal}
.sheet__seal span{font-size:15px}
.modal-open{overflow:hidden}
.success-overlay{position:fixed;z-index:20;inset:0;background:rgba(20,14,12,.82);display:grid;place-items:center;padding:25px}
.success-paper{max-width:550px;width:100%;text-align:center;background:var(--parchment);padding:52px 45px 45px;box-shadow:0 20px 60px #0008;position:relative;border:8px double rgba(144,96,53,.5);font-family:var(--serif);color:var(--ink)}
.success-seal{width:90px;height:90px;margin:0 auto 30px;display:grid;place-items:center;border-radius:50%;background:var(--red);color:#ead1ad;font-size:45px;border:7px double #c88c76;box-shadow:0 6px 15px #0003}
.success-paper h2{font-size:40px;font-weight:400;margin:16px 0 20px}
.success-paper p:not(.eyebrow){font-size:17px;line-height:1.75}
.success-close{background:none;border:none;border-bottom:1px solid var(--red);padding:9px 0;font:700 12px var(--ui);color:var(--red);margin-top:16px}
/* Admin / registries */
.admin-body{min-height:100vh;background:#f2eee7;color:#352a22;font-family:var(--ui)}
.login-card{width:min(100% - 30px,440px);margin:min(13vh,100px) auto 30px;padding:42px;background:#fffaf0;border:1px solid #d8c9b5;box-shadow:0 25px 70px #3b291522}
.login-card__emblem{text-align:center;font-size:40px;color:var(--red);margin-bottom:8px}
.login-card .eyebrow{text-align:center}
.login-card h1{text-align:center;font:400 34px var(--serif);margin:14px 0}
.login-card p:not(.eyebrow){font-size:14px;line-height:1.6;text-align:center;color:#746454}
.login-card input{margin-top:11px}
.admin-button{display:inline-flex;justify-content:center;align-items:center;gap:10px;background:#713d31;color:#fff8ec!important;border:1px solid #713d31;padding:11px 15px;text-decoration:none;white-space:nowrap;font:700 12px var(--ui);letter-spacing:.02em}
.admin-button:hover{background:#8b4836}
.login-card .admin-button{width:100%;margin-top:20px;padding:14px}
.back-link{display:block;text-align:center;margin-top:24px;font-size:13px;color:#7a4436;text-underline-offset:3px}
.admin-error{padding:12px;background:#f8dfda;border:1px solid #c99186;font-size:13px;color:#8d352d;margin:17px 0}
.admin-header{background:#332821;color:#ffefd8;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:28px max(25px,calc((100vw - 1180px)/2))}
.admin-header .eyebrow{color:#d5ac75}
.admin-header h1{font:400 clamp(27px,3vw,39px) var(--serif);margin:8px 0 0}
.admin-header__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.admin-header__actions>a:not(.admin-button){color:#e6d1b4;text-decoration:none;font-size:13px;padding:12px}
.admin-button--light{background:transparent;border-color:#a28971}
.admin-content{max-width:1220px;margin:0 auto;padding:35px 20px 80px}
.admin-overview{display:flex;align-items:center;gap:25px;margin-bottom:27px}
.admin-stat{background:#fffaf3;border:1px solid #ded0bc;padding:23px 32px;min-width:200px}
.admin-stat__label{font-size:12px;color:#7e6651;letter-spacing:.09em;text-transform:uppercase}
.admin-stat__number{font:400 52px var(--serif);color:#803f31}
.admin-stat__note{color:#746250;font-size:14px;line-height:1.6;max-width:500px}
.admin-analytics{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-bottom:25px}
.admin-panel{background:#fffaf3;padding:26px 29px;border:1px solid #ded0bc;box-shadow:0 7px 25px #52391d0c}
.admin-panel h2{font:400 27px var(--serif);margin:0 0 7px}
.admin-panel>p{margin:0 0 26px;font-size:13px;color:#806f5d;line-height:1.6}
.admin-bars{display:flex;flex-direction:column;gap:19px}
.admin-bar{display:grid;align-items:center;grid-template-columns:83px 1fr 26px;gap:14px;font-size:13px}
.admin-bar__track{height:10px;background:#eee2d3;overflow:hidden;border-radius:10px}
.admin-bar__fill{height:100%;background:#874739;border-radius:10px;min-width:0}
.admin-bar b{font-size:14px;text-align:right;color:#703b30}
.admin-tone-stats{display:grid;grid-template-columns:1fr 1fr;column-gap:25px;row-gap:9px}
.admin-tone-stat{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:9px;font-size:12px;border-bottom:1px solid #eee3d3;padding:4px 0}
.small-positive{color:#427747;font-weight:700}
.small-negative{color:#aa4d43;font-weight:700}
.admin-panel__heading{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:20px}
.admin-panel__heading span{font-size:13px;color:#856c55}
.admin-responses{padding-bottom:30px}
.admin-empty{border:1px dashed #c6b59d;text-align:center;padding:55px 20px;color:#907861}
.response-card{margin-bottom:12px;border:1px solid #decfba;background:#fffdf9}
.response-card>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:15px;padding:18px 20px;font-size:13px;flex-wrap:wrap}
.response-card>summary::-webkit-details-marker{display:none}
.response-card__id{font:700 11px var(--ui);color:#9e8063}
.response-card>summary strong{font:700 18px var(--serif);min-width:115px}
.response-card__least{color:#85473a;flex:1}
.response-card time{font-size:11px;color:#86725f}
.response-card__chevron{font-size:25px;line-height:0;color:#8f6b4e;transform:translateY(-3px)}
.response-card[open] .response-card__chevron{transform:rotate(180deg) translateY(5px)}
.response-card__content{padding:12px 23px 22px;border-top:1px solid #e7dac8}
.response-columns{display:grid;grid-template-columns:1fr 1.2fr;gap:40px}
.response-card h3{font:700 11px var(--ui);color:#82664c;text-transform:uppercase;letter-spacing:.09em;margin:23px 0 8px}
.response-card p{font-size:14px;line-height:1.6;margin:0}
.response-note{white-space:pre-wrap;overflow-wrap:anywhere}
.admin-chip{display:inline-block;padding:5px 9px;margin:0 6px 6px 0;font-size:11px;border:1px solid}
.admin-chip--positive{color:#4a7547;border-color:#bad4b1;background:#f2f9ef}
.admin-chip--negative{color:#ad5247;border-color:#dfb6ae;background:#fff4f1}
.muted{color:#95816c;font-style:italic}
.admin-signature{border:1px solid #d7cab8;background:#fcf8f0;max-width:370px}
.admin-signature img{display:block;width:100%;height:auto;max-height:150px;object-fit:contain}
.response-delete{text-align:right;margin-top:18px}
.danger-button{background:transparent;border:1px solid #c9948c;color:#a3453b;padding:10px 13px;font-size:12px}
.danger-button:hover{background:#fff1ed}
@media(max-width:780px){.invitation-body{padding:14px 10px 32px}.sheet{padding:0 27px 28px}.filigree--top{padding-top:26px}.hero{padding-top:12px}.hero__crest{width:66px;height:75px}.hero h1{font-size:clamp(45px,9vw,68px)}.hero__intro{font-size:16px}.brief{gap:10px;margin-bottom:55px}.brief__value{font-size:16px}.brief__value span{font-size:14px}.character{padding:16px 16px 0}.character__name{font-size:23px}.admin-header{padding:24px}.admin-analytics{grid-template-columns:1fr}.admin-tone-stats{grid-template-columns:1fr 1fr}.admin-header{align-items:flex-start;flex-direction:column}}
@media(max-width:560px){.sheet{padding:0 23px 25px}.sheet:before{inset:9px}.sheet:after{inset:16px}.hero h1{font-size:clamp(37px,10vw,56px)}.hero__or{font-size:.6em}.hero__intro{font-size:16px}.brief{grid-template-columns:1fr;gap:15px}.brief__ornament{display:none}.brief__note{grid-column:auto}.chapter{margin-bottom:52px}.chapter h2{font-size:30px}.character-grid,.signature-fields,.response-columns{grid-template-columns:1fr}.character{min-height:230px}.legend{gap:12px}.tone-grid{gap:7px}.tone{font-size:16px;min-height:44px;padding:9px}.sheet__footer{font-size:10px;text-align:center}.sheet__seal{flex:none;width:58px;height:58px;font-size:19px}.success-paper{padding:38px 25px}.success-paper h2{font-size:31px}.admin-content{padding:20px 12px 40px}.admin-panel{padding:22px 16px}.admin-overview{align-items:flex-start;flex-direction:column;gap:13px}.admin-tone-stats{grid-template-columns:1fr}.response-card>summary{gap:10px}.response-card time{width:100%}.response-card__content{padding:12px 15px}.admin-header__actions{gap:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
