/* CESIO 2027 - public site styles (index + merci) */
:root{
  --navy:#2e3a8c; --navy-dk:#1f2766; --ink:#1c2340; --ink-2:#4b5470; --muted:#7c84a0;
  --red:#e3202a; --red-dk:#c0141d; --lav:#e9ecf8; --lav-2:#f4f5fc; --sky:#5aa7e0;
  --line:#dfe3f0; --line-2:#c9cfe4; --bg:#f3f4f9; --card:#fff;
  --ok:#1b7f47; --ok-bg:#e6f5ec; --warn:#7a5400; --warn-bg:#fff4d6; --err:#c0141d; --err-bg:#fdecee;
  --head:"Poppins",system-ui,sans-serif; --body:"Work Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:10px; --sh:0 1px 2px rgba(28,35,64,.05),0 2px 8px rgba(28,35,64,.05); --sh-lg:0 14px 34px -12px rgba(28,35,64,.25);
}
*{box-sizing:border-box}
html{overflow-anchor:none;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--body);-webkit-font-smoothing:antialiased}
a{color:var(--navy)}
h1,h2,h3{font-family:var(--head);color:var(--navy);letter-spacing:-.01em}
.hidden{display:none!important}
.ribbon{background:var(--warn-bg);color:var(--warn);text-align:center;font-size:13px;padding:6px 12px;border-bottom:1px solid #ecd28a}

/* Banner */
.banner{background:#fff;border-bottom:1px solid var(--line)}
.banner-inner{max-width:1100px;margin:0 auto}
.banner img{display:block;width:100%;height:auto;aspect-ratio:1920/954}
.infobar{background:var(--navy);color:#fff;font-size:14px}
.infobar .in{max-width:1180px;margin:0 auto;padding:10px 24px;display:flex;flex-wrap:wrap;gap:6px 26px;justify-content:center}
.infobar span{display:inline-flex;align-items:center;gap:8px;opacity:.95}
.infobar span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--red)}
.infobar a{color:#fff}

/* Layout */
.wrap{max-width:1180px;margin:0 auto;padding:28px 24px 80px;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}
@media(max-width:960px){.wrap{grid-template-columns:1fr;padding:18px 14px 120px}}

/* Stepper */
.stepper{display:flex;gap:6px;margin:0 0 20px;padding:0;list-style:none;counter-reset:s}
.stepper li{flex:1;min-width:0}
.stepper button{width:100%;background:none;border:0;padding:0;cursor:pointer;text-align:left;font:inherit;color:var(--muted)}
.stepper .bar{display:block;height:5px;border-radius:3px;background:var(--line);margin-bottom:8px;transition:background .2s}
.stepper .lbl{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stepper .lbl::before{counter-increment:s;content:counter(s) ". "}
.stepper li.done .bar{background:var(--sky)} .stepper li.done button{color:var(--ink-2)}
.stepper li.active .bar{background:var(--navy)} .stepper li.active button{color:var(--navy)}
.stepper button:disabled{cursor:default}
@media(max-width:640px){.stepper .lbl{font-size:0}.stepper .lbl::before{font-size:12px}}

/* Panels */
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:30px 32px}
@media(max-width:640px){.panel{padding:22px 18px}}
.panel h2{font-size:22px;margin:0 0 4px;text-transform:uppercase;letter-spacing:.02em}
.panel .lead{color:var(--ink-2);margin:0 0 22px;font-size:15px}
.panel h3{font-size:15px;text-transform:uppercase;letter-spacing:.04em;margin:28px 0 12px;padding-bottom:8px;border-bottom:2px solid var(--lav)}
.step{animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Fields */
.row{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));margin-bottom:14px}
.row.r-sal{grid-template-columns:120px repeat(auto-fit,minmax(min(200px,100%),1fr))}
@media(max-width:640px){.row.r-sal{grid-template-columns:1fr}}
.f label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:5px;text-transform:uppercase;letter-spacing:.03em}
.f label .req{color:var(--red)}
.f .hint{font-size:13px;color:var(--muted);margin-top:5px}
input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;min-height:46px;padding:11px 13px;font:15px var(--body);color:var(--ink);background:var(--lav-2);border:1px solid var(--line-2);border-radius:8px;transition:border-color .15s,box-shadow .15s,background .15s}
textarea{min-height:90px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;background:#fff;border-color:var(--navy);box-shadow:0 0 0 3px rgba(46,58,140,.15)}
.f.invalid input,.f.invalid select,.f.invalid textarea{border-color:var(--err);background:var(--err-bg)}
.f .err{display:none;color:var(--err);font-size:13px;margin-top:4px}
.f.invalid .err{display:block}
select{appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3e%3cpath fill='none' stroke='%232e3a8c' stroke-width='2' d='M1 1l5 5 5-5'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}

/* Checks / toggles */
.check{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;margin-bottom:10px;transition:border-color .15s,background .15s}
.check:hover{border-color:var(--line-2)}
.check input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--navy);flex:0 0 20px;cursor:pointer}
.check .t{font-weight:600;color:var(--ink)} .check .d{display:block;font-size:14px;color:var(--muted);font-weight:400}
.check .price{margin-left:auto;font-family:var(--head);font-weight:600;color:var(--navy);white-space:nowrap}
.check:has(input:checked){border-color:var(--navy);background:var(--lav-2)}
.subfields{margin:-4px 0 14px 0;padding:16px 16px 4px;border-left:3px solid var(--lav);background:#fbfbfe;border-radius:0 8px 8px 0}

/* Category cards */
.cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.cat{position:relative;display:flex;flex-direction:column;gap:4px;padding:16px 16px 14px;border:2px solid var(--line);border-radius:10px;background:#fff;cursor:pointer;transition:all .15s}
.cat:hover{border-color:var(--sky);transform:translateY(-1px);box-shadow:var(--sh)}
.cat input{position:absolute;opacity:0;pointer-events:none}
.cat .n{font-family:var(--head);font-weight:600;font-size:16px;color:var(--navy);padding-right:24px}
.cat .p{font-family:var(--head);font-weight:700;font-size:22px;color:var(--red);line-height:1.2}
.cat .p small{font-size:12px;color:var(--muted);font-weight:500;font-family:var(--body)}
.cat .p.free{color:var(--ok);font-size:18px}
.cat .s{font-size:13px;color:var(--muted)}
.cat::after{content:"";position:absolute;top:14px;right:14px;width:18px;height:18px;border-radius:50%;border:2px solid var(--line-2);background:#fff}
.cat:has(input:checked){border-color:var(--navy);background:var(--lav-2);box-shadow:0 0 0 3px rgba(46,58,140,.12)}
.cat:has(input:checked)::after{border-color:var(--navy);background:radial-gradient(circle,var(--navy) 45%,#fff 50%)}
.cat.skeleton{min-height:104px;background:linear-gradient(90deg,#f1f2f8,#fafbff,#f1f2f8);background-size:200% 100%;animation:sk 1.2s infinite;border-color:var(--line)}
@keyframes sk{to{background-position:-200% 0}}

.included{margin-top:18px;border-top:4px solid var(--sky);background:var(--lav-2);border-radius:0 0 10px 10px;padding:20px 22px;display:grid;grid-template-columns:200px 1fr;gap:20px}
@media(max-width:640px){.included{grid-template-columns:1fr}}
.included .k{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2)}
.included .big{font-family:var(--head);font-weight:700;font-size:24px;color:var(--navy);line-height:1.2;margin:4px 0 14px}
.included .fee{font-family:var(--head);font-weight:700;font-size:30px;color:var(--red)}
.included ul{list-style:none;margin:6px 0 0;padding:0}
.included li{padding:8px 0 8px 18px;border-bottom:1px solid var(--line);position:relative;font-size:15px}
.included li::before{content:"";position:absolute;left:2px;top:16px;width:6px;height:6px;border-radius:50%;background:var(--sky)}
.included .note{font-size:13px;font-style:italic;color:var(--muted);margin-top:10px}

/* Choice pills (abstract speaker) */
.pills{display:flex;gap:10px;flex-wrap:wrap}
.pill{flex:1;min-width:200px}

/* Notices */
.notice{padding:12px 16px;border-radius:8px;font-size:14px;margin:0 0 16px;display:flex;gap:10px}
.notice.info{background:var(--lav);color:var(--navy-dk)}
.notice.ok{background:var(--ok-bg);color:var(--ok)}
.notice.warn{background:var(--warn-bg);color:var(--warn)}
.notice.err{background:var(--err-bg);color:var(--err)}
.invite{background:linear-gradient(120deg,var(--navy),#4655b8);color:#fff;border-radius:var(--r);padding:20px 24px;margin-bottom:18px}
.invite h2{color:#fff;margin:0 0 4px;font-size:20px}
.invite p{margin:0;opacity:.95}

/* VAT check */
.vatline{display:flex;gap:10px}
.vatline input{flex:1}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 22px;border-radius:8px;border:0;font:600 15px var(--head);cursor:pointer;transition:all .15s;text-decoration:none;white-space:nowrap}
.btn-primary{background:var(--navy);color:#fff} .btn-primary:hover{background:var(--navy-dk)}
.btn-red{background:var(--red);color:#fff} .btn-red:hover{background:var(--red-dk)}
.btn-ghost{background:#fff;color:var(--navy);border:1px solid var(--line-2)} .btn-ghost:hover{border-color:var(--navy);background:var(--lav-2)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn .spin{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:rot .7s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}
.vatres{margin-top:8px;font-size:14px;padding:10px 12px;border-radius:8px}

/* Nav buttons */
.nav{display:flex;justify-content:space-between;gap:12px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.nav .btn-primary{min-width:180px}

/* Review */
.review{display:grid;gap:14px}
.rv{border:1px solid var(--line);border-radius:8px;overflow:hidden}
.rv h4{margin:0;padding:10px 14px;background:var(--lav-2);font:600 13px var(--head);text-transform:uppercase;letter-spacing:.04em;color:var(--navy);display:flex;justify-content:space-between;align-items:center}
.rv h4 button{background:none;border:0;color:var(--navy);font:600 13px var(--body);cursor:pointer;text-decoration:underline;text-transform:none}
.rv dl{margin:0;padding:6px 14px 10px;display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:4px 14px;font-size:14px}
.rv dt{color:var(--muted)} .rv dd{margin:0;color:var(--ink);font-weight:500;word-break:break-word}

/* Summary sidebar */
.summary{position:sticky;top:18px;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}
.summary .hd{background:var(--navy);color:#fff;padding:14px 18px;font:600 14px var(--head);text-transform:uppercase;letter-spacing:.05em}
.summary .bd{padding:16px 18px}
.summary .who{font-size:14px;color:var(--ink-2);margin-bottom:10px}
.summary table{width:100%;border-collapse:collapse;font-size:14px}
.summary td{padding:7px 0;border-bottom:1px solid var(--line);vertical-align:top}
.summary td:last-child{text-align:right;white-space:nowrap;padding-left:10px;font-weight:500}
.summary .sub td{color:var(--muted);border:0;padding:4px 0}
.summary .tot td{border-top:2px solid var(--navy);border-bottom:0;padding-top:10px;font:700 18px var(--head);color:var(--navy)}
.summary .empty{color:var(--muted);font-size:14px}
.summary .foot{font-size:12px;color:var(--muted);padding:12px 18px;background:var(--lav-2);line-height:1.5}
.mobilebar{display:none}
@media(max-width:960px){
  .summary{display:none}
  .mobilebar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(28,35,64,.1);padding:10px 14px calc(10px + env(safe-area-inset-bottom));align-items:center;gap:12px}
  .mobilebar .amt{flex:1;font:700 18px var(--head);color:var(--navy);line-height:1.2}
  .mobilebar .amt small{display:block;font:500 12px var(--body);color:var(--muted)}
}

/* Modal */
dialog{border:0;border-radius:12px;padding:0;max-width:640px;width:92vw;box-shadow:var(--sh-lg)}
dialog::backdrop{background:rgba(28,35,64,.55)}
dialog .mh{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-bottom:1px solid var(--line)}
dialog .mh h3{margin:0;font-size:18px}
dialog .mh button{background:none;border:0;font-size:26px;cursor:pointer;color:var(--muted)}
dialog .mb{padding:10px 22px 22px;max-height:65vh;overflow:auto;font-size:15px;color:var(--ink-2)}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:var(--navy);text-decoration:underline;cursor:pointer}

footer.site{text-align:center;color:var(--muted);font-size:13px;padding:26px 16px;border-top:1px solid var(--line);background:#fff}
footer.site .tag{color:var(--red);font-weight:600;margin-top:4px}

/* Thank-you / status page */
.single{max-width:760px;margin:0 auto;padding:28px 20px 60px}
.status{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:600}
.status.paid{background:var(--ok-bg);color:var(--ok)} .status.pending{background:var(--warn-bg);color:var(--warn)} .status.free{background:var(--lav);color:var(--navy)}
.bank{display:grid;grid-template-columns:140px 1fr;gap:4px 12px;font-size:15px;background:var(--lav-2);border-radius:8px;padding:14px 16px;margin:10px 0}
.bank dt{color:var(--muted)} .bank dd{margin:0;font-weight:600}
.linkbox{display:flex;gap:8px;margin:8px 0}
.linkbox input{flex:1;font-family:ui-monospace,Menlo,monospace;font-size:13px}

/* Proof of status upload */
input[type=file]{cursor:pointer;padding:8px 10px}
input[type=file]::file-selector-button{font:600 14px var(--body);color:var(--navy);background:#fff;border:1px solid var(--line-2);border-radius:6px;padding:7px 12px;margin-right:12px;cursor:pointer}
.proof-st{margin-top:8px;font-size:14px;display:flex;gap:8px;align-items:center;color:var(--ink-2)}
.proof-st.ok{color:var(--ok)}
.proof-st.bad{color:var(--err)}
.proof-st .spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:rot .7s linear infinite}
