:root{--bg:#f5f4ee;--ink:#173a2e;--muted:#727b70;--line:#dcded2;--lime:#d9f28a;--green:#214c3b}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}header{max-width:1360px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:26px 5%;gap:20px;border-bottom:1px solid var(--line)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,.button{border:0;border-radius:7px;background:var(--green);color:white;padding:12px 20px;cursor:pointer;display:inline-block}button:hover,.button:hover{filter:brightness(1.12)}button.secondary,.button.secondary{background:transparent;color:var(--ink);border:1px solid var(--line)}button.small{padding:6px 10px;font-size:12px}.brand{font-weight:800;letter-spacing:1px;font-size:14px}.brand-icon{font-size:30px;margin-right:10px}.brand small{display:block;letter-spacing:3px;font-size:9px;margin-left:44px;color:var(--muted)}nav{display:flex;gap:22px;align-items:center;font-size:13px}nav a.active{border-bottom:2px solid var(--green)}main{max-width:1200px;padding:32px 28px 60px;margin:auto;min-height:65vh}.eyebrow{font-size:11px;letter-spacing:2.5px;text-transform:uppercase;font-weight:700;color:var(--muted)}hero{display:grid;grid-template-columns:1.15fr 1fr;gap:45px;align-items:center;padding:28px 0 48px}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,serif;font-size:68px;line-height:1.04;font-weight:400;letter-spacing:-2px;margin:18px 0 24px}h1 em{color:#5e8053}h2{font-family:Georgia,serif;font-size:32px;font-weight:400}h3{font-size:20px}.intro{max-width:480px;color:var(--muted);font-size:16px}.scene{height:350px;background:radial-gradient(circle at 76% 18%,#f6f2ce 0 14px,transparent 15px),radial-gradient(ellipse at 40% 110%,#50775a 0 42%,transparent 43%),radial-gradient(ellipse at 90% 110%,#324d3a 0 55%,transparent 56%),linear-gradient(160deg,#112a29,#193c3a 55%,#63806a);border-radius:100px 10px 10px 10px;position:relative;overflow:hidden}.scene:before{content:'·     ✦          ·      ✧        ·';white-space:pre;position:absolute;color:#c4d7bc;top:30px;left:30px;font-size:26px}.flag{position:absolute;left:57%;top:120px;width:3px;height:140px;background:#f3f0d6;transform:rotate(6deg)}.flag:before{content:'';position:absolute;border-left:55px solid var(--lime);border-bottom:28px solid transparent}.scene-label{position:absolute;bottom:20px;left:25px;color:#e3ebcf;font-size:11px;letter-spacing:2px}.notice{background:#e9eddf;border:1px solid #d5deca;border-radius:8px;padding:14px 20px;font-size:13px;margin-bottom:28px}.section-title{display:flex;align-items:baseline;justify-content:space-between}.section-title small{color:var(--muted)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:27px;position:relative}.tour-number{position:absolute;right:25px;top:15px;font-family:Georgia,serif;font-size:66px;color:#eef1e7}.badge{display:inline-block;background:#edf1e5;border-radius:20px;padding:3px 10px;font-size:11px;margin-bottom:15px}.card h2{margin:6px 0 2px}.card .date{font-size:17px;margin-bottom:20px}.capacity{display:flex;justify-content:space-between;font-size:12px}.track{height:5px;background:#eceee7;border-radius:4px;margin:9px 0 18px}.track span{display:block;height:5px;background:#82a36f;border-radius:4px}.activities{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:22px}.finale{background:var(--ink);color:#faf9ed;padding:26px 30px;border-radius:12px;margin-top:24px;display:flex;gap:30px;align-items:center;justify-content:space-between}.finale h2{margin:5px 0;font-size:28px}.finale p{margin:0;color:#c3cfbc;font-size:13px}.finale .eyebrow{color:var(--lime)}.login{max-width:440px;margin:45px auto}.login h1{font-size:48px}label{display:block;font-size:13px;margin:14px 0 6px}input,select,textarea{width:100%;background:white;border:1px solid #cdd4c8;border-radius:6px;padding:10px;color:var(--ink)}textarea{min-height:110px}input[type=checkbox]{width:auto;accent-color:var(--green);margin-right:9px}.check{display:flex;align-items:baseline}.check input{flex-shrink:0}.form{max-width:800px}.form .grid{gap:18px}.form h3{margin:24px 0 5px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.muted{color:var(--muted);font-size:13px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:13px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;text-transform:uppercase;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:24px}.stats .card{padding:18px}.stats b{display:block;font-size:30px}.tabs{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.content{white-space:pre-line}.error{color:#aa3931}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;border-radius:8px;max-width:90%;padding:14px 24px;display:none;z-index:10}footer{border-top:1px solid var(--line);padding:24px 5%;font-size:11px;letter-spacing:1px;display:flex;justify-content:space-between;gap:20px;color:var(--muted)}.companion{background:#f3f5ed;padding:15px;border-radius:8px;margin:12px 0}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px}@media(max-width:760px){header{align-items:flex-start;flex-direction:column}nav{gap:14px;flex-wrap:wrap}main{padding:22px 18px}hero{grid-template-columns:1fr;gap:15px;padding:12px 0 28px}h1{font-size:50px}.scene{height:220px;border-top-left-radius:60px}.flag{top:65px;height:110px}.grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.finale{align-items:flex-start;flex-direction:column;gap:12px}footer{flex-direction:column;gap:5px}.section-title{display:block}}
/* Identité issue de l’affiche et de l’emblème LIV Saint-Jean fournis par les organisateurs. */
:root{--bg:#050f1c;--ink:#f4f7f8;--muted:#a7b8c9;--line:#263c50;--lime:#c5ff29;--green:#c5ff29}body{background:radial-gradient(ellipse at 85% 5%,#102d4b 0,transparent 50%),var(--bg);color:var(--ink)}header{border-color:#263c50}.brand{display:flex;align-items:center;gap:14px}.club-logo{width:66px;height:66px;border-radius:50%;background:#fff;object-fit:contain}.brand small{margin:4px 0 0;font-size:8px;letter-spacing:2px}nav a.active{border-color:var(--lime);color:var(--lime)}button,.button{color:#071522;font-weight:700;background:var(--lime)}button.secondary,.button.secondary{color:var(--ink);border-color:#40576b;background:#0b1d2c}h1{font-family:Impact,'Arial Black',sans-serif;font-size:88px;font-weight:900;line-height:.98;text-transform:uppercase;letter-spacing:-2px}h1 em{color:var(--lime);font-style:italic;text-shadow:0 0 32px #baff1722}h2{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-weight:750;letter-spacing:-.7px}.eyebrow{color:var(--lime)}hero{grid-template-columns:1.05fr 1fr;gap:52px;padding-top:30px}.intro{color:#b7c8d6}.campaign-scene{height:420px;border-radius:14px;background-image:linear-gradient(0deg,#020b1670,transparent 65%),url('/assets/affiche-nocturne.png');background-size:cover;background-position:center bottom;border:1px solid #4d6e41;box-shadow:0 20px 75px #0006}.campaign-scene:before{display:none}.campaign-scene .scene-label{top:22px;bottom:auto;left:23px;background:#051322dd;padding:15px 19px;border-left:3px solid var(--lime);color:white;font-size:13px;letter-spacing:2px}.scene-label strong{color:var(--lime)}.notice{background:#10251e;border-color:#3c5928;color:#dfedcf}.card{background:linear-gradient(145deg,#102438,#0b1929);border-color:#294057;box-shadow:0 9px 30px #0002}.tour-number{color:#294055}.badge{background:#203b36;color:#d3efb5}.track{background:#203548}.track span{background:var(--lime)}.finale{background:linear-gradient(120deg,#122d3d,#0c201c);border:1px solid #526d30;color:white}.finale p{color:#b7c8d6}.finale .eyebrow{color:var(--lime)}input,select,textarea{background:#081727;border-color:#40536b;color:#f4f7f8}input[type=checkbox]{accent-color:var(--lime)}.companion{background:#112c3b}.error{color:#ffaaa0}#toast{background:var(--lime);color:#071522}footer{background:#040d17}.login h1{font-size:58px}.login{border-top:2px solid var(--lime);padding-top:24px}.stats b{color:var(--lime)}hr{border:0;border-top:1px solid var(--line);margin:30px 0}@media(max-width:760px){h1{font-size:62px}hero{grid-template-columns:1fr;gap:26px}.campaign-scene{height:320px}.club-logo{width:56px;height:56px}.login h1{font-size:50px}}
.campaign-scene{background-size:auto 1550px;background-position:left bottom}
.campaign-scene{background-position:left 80%}
.activity-cell{text-align:center;min-width:110px}.participation-line{min-height:29px;line-height:29px;white-space:nowrap}.participation-mark{color:var(--lime);font-size:24px;font-weight:800}th.activity-cell{white-space:normal;line-height:1.4}
.full-activity{padding:18px 8px 6px;margin:12px 0 18px}.full-stamp{display:inline-block;transform:rotate(-9deg);border:3px solid #ff5555;border-radius:5px;padding:7px 12px;color:#ff6666;font-weight:900;font-size:20px;text-transform:uppercase;letter-spacing:1.5px;line-height:1.15;box-shadow:inset 0 0 0 2px #ff55552b;text-align:center}.availability-note{margin:24px 0 8px;color:#ff6666;font-size:13px;line-height:1.5}.full-label{color:#ff7777;font-weight:700}.tour-full-banner{padding:14px 0 12px;margin:18px 0;border-top:1px solid #ff55554d;border-bottom:1px solid #ff55554d}.tour-full-banner .full-stamp{font-size:19px}.tour-full-banner .availability-note{margin-top:22px}
.liv-title{font-size:70px}.liv-title span{font-size:.58em;letter-spacing:0}@media(max-width:760px){.liv-title{font-size:52px}}
/* Ne conserver que le parcours de l’affiche, à l’écart de ses textes intégrés. */
.campaign-scene{background-size:auto 2600px;background-position:12% 80%}
.campaign-scene .scene-label{background:#051322;max-width:calc(100% - 46px)}
.availability-note{font-size:19px;font-weight:700;line-height:1.5}
.column-total{display:block;color:var(--lime);font-size:28px;line-height:1.2;font-weight:800;margin-bottom:8px}
button.danger{background:#7f2429;color:#fff;border:1px solid #e86767;margin:5px 0}
.admin-search{max-width:540px;margin:0 0 20px}.admin-search input{margin-top:7px}
.comment-cell{min-width:240px}.comment-cell textarea{min-height:85px;font-size:13px}.comment-cell button{margin-top:6px}
.email-cell{min-width:210px;overflow-wrap:anywhere}.email-cell a{color:var(--lime)}
.price-banner{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 34px;padding:22px 26px;border:1px solid #67872c;border-radius:12px;background:#12271d}.price-banner strong{font-size:34px;color:var(--lime)}.price-banner strong small{font-size:15px}.price-banner p{margin:2px 0 0;color:#d7e8cc}.partner-card{display:grid;grid-template-columns:260px 1fr;gap:36px;margin-top:30px}.partner-wordmark{background:#f3f5ec;color:#18372e;border-radius:10px;text-align:center;padding:50px 20px;font-weight:850;font-size:60px;letter-spacing:5px;align-self:start}.partner-wordmark span{display:block;font-size:12px;letter-spacing:0;font-weight:600}.legal-details{display:grid;grid-template-columns:180px 1fr;gap:10px 20px;font-size:14px}.legal-details dt{color:var(--muted)}.legal-details dd{margin:0}.source-link{color:var(--lime);text-decoration:underline}nav{flex-wrap:wrap}@media(max-width:760px){.price-banner{align-items:flex-start;flex-direction:column}.partner-card{grid-template-columns:1fr}.legal-details{grid-template-columns:1fr;gap:4px}.legal-details dd{margin-bottom:12px}}
.duplicate-warning{margin-top:20px;padding:20px;border:2px solid #e8b75a;border-radius:8px;background:#2d2515;color:#fff0cc}.duplicate-warning p{margin-bottom:12px}button:disabled{opacity:.55;cursor:wait}

.mail-message{white-space:pre-wrap;overflow-wrap:anywhere;padding:1.2rem;border-left:3px solid var(--lime,#d5fa55);margin:1rem 0}#mailHistory button{margin-right:.5rem}#mailPreview details,#mailResult details{margin:1rem 0}#mailPreview ul,#mailResult ul{overflow-wrap:anywhere}button:disabled{opacity:.5;cursor:not-allowed}

.mail-toolbar{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.mail-editor-label{font-weight:700;margin-top:20px}.mail-editor{min-height:260px;max-height:700px;overflow:auto;background:#fff;color:#17263a;border:2px solid #738396;border-radius:8px;padding:18px;line-height:1.65;overflow-wrap:anywhere}.mail-editor:focus{outline:2px solid #d4ff32;outline-offset:2px}.mail-editor:empty:before{content:"Bonjour à toutes et à tous,…";color:#65758a}.mail-html-preview{width:100%;height:600px;border:1px solid #718397;border-radius:8px;background:#fff;margin:16px 0}.mail-editor a{color:#0057c8;text-decoration:underline}
