:root{
  --asphalt-950:#0A0D12;--asphalt-900:#0F141C;--asphalt-800:#171E29;--asphalt-700:#212B3A;
  --paper:#F4F5F7;--paper-alt:#ECEEF2;--ink:#0F1420;--muted:#69707E;--muted-2:#8A93A6;
  --cyan:#33E2C6;--cyan-dim:#1D8F7C;--yellow:#C9A227;--ok:#2FD186;--warn:#FFB020;--danger:#FF6B6B;
  --radius-lg:24px;--radius-md:16px;--radius-sm:12px;--ease:cubic-bezier(.16,1,.3,1);
  --shadow-soft:0 20px 50px rgba(10,13,18,.10);--shadow-deep:0 30px 80px rgba(10,13,18,.45);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Inter',Arial,sans-serif;background:var(--paper);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none}
img{max-width:100%;display:block}
.mono{font-family:'JetBrains Mono',monospace}
.display{font-family:'Space Grotesk',sans-serif}
.container{width:min(1220px,92%);margin:0 auto}
.hidden{display:none !important}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:13px 22px;border-radius:12px;font-weight:700;font-size:14.5px}
.btn-primary{background:var(--yellow);color:var(--asphalt-950);box-shadow:0 10px 26px rgba(255,198,41,.28)}
.btn-primary:hover{filter:brightness(1.06)}
.btn-ghost{background:rgba(255,255,255,.06);color:#fff;border:1px solid rgba(255,255,255,.18)}
.btn-ghost:hover{background:rgba(255,255,255,.12)}
.btn-dark{background:var(--asphalt-950);color:#fff}
.btn-dark:hover{background:#000}
.btn-cyan{background:var(--cyan);color:var(--asphalt-950)}
.btn-block{width:100%}
.btn-sm{padding:9px 14px;font-size:13px;border-radius:9px}

/* =================== PUBLIC HEADER =================== */
header{position:sticky;top:0;z-index:1000;background:rgba(10,13,18,.72);backdrop-filter:blur(16px) saturate(140%);border-bottom:1px solid rgba(255,255,255,.07)}
.nav{display:flex;align-items:center;justify-content:space-between;height:78px;color:#fff}
.logo{display:flex;align-items:center;gap:12px;font-family:'Space Grotesk';font-weight:800;font-size:20px;color:#fff}
.logo img.logo-img{height:46px;width:auto;display:block}
.logo .mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(150deg,var(--asphalt-700),var(--asphalt-900));border:1px solid rgba(51,226,198,.4);color:var(--cyan);font-size:18px}
.logo small{display:block;font-family:'JetBrains Mono';font-size:10px;color:var(--muted-2);font-weight:500;letter-spacing:.08em}
nav.links ul{display:flex;gap:28px;list-style:none;font-weight:600;font-size:14.5px;color:#c7ccd6}
nav.links a:hover{color:#fff}
section[id]{scroll-margin-top:88px}

/* mobile hamburger */
.menu-toggle{display:none;width:42px;height:42px;border-radius:10px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);color:#fff;font-size:17px;align-items:center;justify-content:center}
.nav-actions{display:flex;gap:10px;align-items:center}
.mobile-menu{display:none;position:absolute;top:78px;left:0;right:0;background:rgba(10,13,18,.98);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.1);padding:18px 0;z-index:999}
.mobile-menu.open{display:block}
.mobile-menu .container{display:flex;flex-direction:column;gap:4px}
.mobile-menu a{padding:13px 4px;font-weight:700;font-size:15px;color:#fff;border-bottom:1px solid rgba(255,255,255,.06)}
.mobile-menu button{margin-top:10px}

/* responsive table wrapper */
.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.table-scroll table.resa{min-width:560px}

/* =================== HERO =================== */
.hero{position:relative;overflow:hidden;background:radial-gradient(700px 400px at 82% -10%,rgba(51,226,198,.16),transparent 60%),radial-gradient(600px 400px at 5% 110%,rgba(255,198,41,.10),transparent 60%),linear-gradient(180deg,var(--asphalt-950),#080A0E 90%);color:#fff;padding:88px 0 70px}
.eyebrow{display:inline-flex;align-items:center;gap:9px;padding:7px 14px 7px 10px;border-radius:999px;background:rgba(51,226,198,.12);border:1px solid rgba(51,226,198,.35);color:var(--cyan);font-family:'JetBrains Mono';font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.eyebrow .led{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 10px var(--cyan);animation:blink 1.6s infinite}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:50px;align-items:center}
h1{font-family:'Space Grotesk';font-weight:800;font-size:clamp(34px,4.4vw,54px);line-height:1.06;margin:20px 0 18px}
h1 em{font-style:normal;color:var(--cyan)}
.hero p.lead{font-size:17.5px;color:#B7BEC9;max-width:520px;margin-bottom:28px}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}
.langs{display:flex;gap:10px;flex-wrap:wrap}
.lang-chip{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);font-size:13px;font-weight:700;color:#fff}
.lang-chip .flag{width:18px;height:13px;border-radius:2px;object-fit:cover}

.hero-card{background:linear-gradient(165deg,var(--asphalt-800),var(--asphalt-900));border:1px solid rgba(255,255,255,.08);border-radius:26px;padding:26px;box-shadow:var(--shadow-deep)}
.hero-card h3{font-family:'Space Grotesk';font-size:16px;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.mini-step{display:flex;gap:14px;align-items:flex-start;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.07)}
.mini-step:last-child{border-bottom:none}
.mini-step .num{width:26px;height:26px;border-radius:8px;background:rgba(51,226,198,.14);color:var(--cyan);display:grid;place-items:center;font-family:'JetBrains Mono';font-size:12px;font-weight:700;flex:none}
.mini-step b{display:block;font-size:14px;margin-bottom:3px}
.mini-step span{font-size:12.5px;color:var(--muted-2)}

/* =================== STAT SIGNS =================== */
.stats{background:var(--paper);padding:64px 0 36px}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px}
.sign{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px}
.sign .plate{width:96px;height:96px;border-radius:50%;background:#fff;border:6px solid #D6002B;display:grid;place-items:center;box-shadow:0 14px 30px rgba(214,0,43,.14)}
.sign .plate b{font-family:'Space Grotesk';font-weight:800;font-size:22px;color:var(--ink)}
.sign span{font-weight:700;color:var(--muted);font-size:13.5px}

/* =================== SECTION SHELL =================== */
section{padding:80px 0}
.section-title{max-width:640px;margin:0 auto 44px;text-align:center}
.section-title .eyebrow{margin-bottom:16px;background:#fff;border-color:#E7E9EE;color:var(--ink)}
.section-title h2{font-family:'Space Grotesk';font-weight:800;font-size:clamp(26px,3.2vw,38px);letter-spacing:-.01em;margin-bottom:12px}
.section-title p{color:var(--muted);font-size:16px}

/* =================== SERVICES =================== */
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.svc-card{background:#fff;border:1px solid #E7E9EE;border-radius:var(--radius-md);padding:28px;box-shadow:var(--shadow-soft);position:relative;transition:transform .3s var(--ease)}
.svc-card:hover{transform:translateY(-5px)}
.svc-card.featured::before{content:"Le plus choisi";position:absolute;top:0;right:0;background:var(--yellow);color:var(--ink);font-size:11px;font-weight:800;padding:6px 14px;border-bottom-left-radius:10px;font-family:'JetBrains Mono'}
.svc-icon{width:50px;height:50px;border-radius:13px;display:grid;place-items:center;background:var(--paper-alt);font-size:19px;margin-bottom:18px}
.svc-card h3{font-family:'Space Grotesk';font-size:19px;margin-bottom:7px}
.svc-card p{color:var(--muted);font-size:14px;margin-bottom:14px}
.svc-price{font-family:'Space Grotesk';font-weight:800;font-size:28px;margin-bottom:14px}
.svc-price span{font-family:'Inter';font-weight:500;font-size:12.5px;color:var(--muted)}
.svc-langs{display:flex;gap:6px;flex-wrap:wrap}
.mini-tag{font-size:11.5px;font-weight:700;color:var(--cyan-dim);background:rgba(51,226,198,.12);padding:4px 9px;border-radius:999px}

/* =================== BOOKING ================= */
.booking{background:var(--paper-alt)}
.form-card{background:#fff;border:1px solid #E7E9EE;border-radius:var(--radius-lg);padding:32px;box-shadow:var(--shadow-soft)}
.field{margin-bottom:17px}
.field label{display:block;font-weight:700;font-size:13.5px;margin-bottom:8px}
.field input,.field select,.field textarea{width:100%;padding:13px 14px;border-radius:12px;border:1.5px solid #E1E4EA;font-size:14.5px;font-family:inherit;background:var(--paper);transition:border-color .2s}
.field input:focus,.field select:focus{outline:none;border-color:var(--ink);background:#fff}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.choice-row{display:flex;gap:10px;flex-wrap:wrap}
.choice{flex:1;min-width:120px;padding:13px;border-radius:12px;border:1.5px solid #E1E4EA;text-align:center;font-weight:700;font-size:13.5px;cursor:pointer;transition:.2s}
.choice.active{border-color:var(--ink);background:var(--ink);color:#fff}
.avail-hint{font-size:12.5px;color:var(--muted);margin-top:8px;font-family:'JetBrains Mono'}
.avail-hint b{color:var(--cyan-dim)}

.ticket{background:var(--asphalt-950);color:#fff;border-radius:var(--radius-lg);padding:30px;position:relative;overflow:hidden;box-shadow:var(--shadow-deep)}
.ticket::before{content:"";position:absolute;inset:0;background:radial-gradient(400px 220px at 100% 0%,rgba(51,226,198,.14),transparent 60%)}
.ticket-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;position:relative}
.ticket-head span{font-family:'JetBrains Mono';font-size:12px;color:#8A93A6;text-transform:uppercase;letter-spacing:.07em}
.ticket-status{padding:5px 12px;border-radius:999px;font-size:11.5px;font-weight:700;background:rgba(255,176,32,.16);color:var(--warn)}
.ticket-status.ok{background:rgba(47,209,134,.16);color:var(--ok)}
.ticket-body p{color:#B7BEC9;font-size:14.5px;margin-bottom:6px;position:relative}
.ticket-ref{font-family:'JetBrains Mono';font-size:13px;color:var(--cyan);margin-top:12px;display:block}
.lane{height:3px;width:100%;background:repeating-linear-gradient(90deg,var(--yellow) 0 26px,transparent 26px 46px);opacity:.28;margin:20px 0}
.ticket-perks{list-style:none;display:flex;flex-direction:column;gap:9px;font-size:13.5px;color:#B7BEC9}
.ticket-perks i{color:var(--cyan);width:16px}

/* =================== TARIFS / HORAIRES / DOCUMENTS =================== */
.price-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #E7E9EE;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-soft)}
.price-table th{text-align:left;background:var(--ink);color:#fff;font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:12px 16px}
.price-table td{padding:12px 16px;border-bottom:1px solid #EEF0F3;font-size:14px}
.price-table tr:last-child td{border-bottom:none}
.price-table td.amount{text-align:right;font-weight:800;font-family:'Space Grotesk';white-space:nowrap}
.price-table tr.total td{background:var(--paper-alt);font-weight:800}
.price-table caption{caption-side:top;text-align:left;padding:16px 16px 4px;font-family:'Space Grotesk';font-weight:800;font-size:15px;color:var(--ink)}

.doc-dl-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;background:#fff;border:1px solid #E7E9EE;border-radius:14px;margin-bottom:10px;transition:border-color .2s}
.doc-dl-row:hover{border-color:var(--ink)}
.doc-dl-left{display:flex;align-items:center;gap:14px}
.doc-dl-ico{width:40px;height:40px;border-radius:10px;background:#FDECEF;color:#E23554;display:grid;place-items:center;font-size:16px;flex:none}
.doc-dl-name{font-weight:700;font-size:14px}
.doc-dl-cat{font-size:11.5px;color:var(--muted);font-family:'JetBrains Mono'}
.doc-dl-btn{width:36px;height:36px;border-radius:9px;background:var(--paper-alt);display:grid;place-items:center;color:var(--ink);flex:none;transition:background .2s}
.doc-dl-row:hover .doc-dl-btn{background:var(--yellow)}
.doc-group-title{font-family:'Space Grotesk';font-weight:800;font-size:15px;margin:24px 0 12px;color:var(--ink)}
.doc-group-title:first-child{margin-top:0}

.legal-strip{background:var(--paper-alt);padding:16px 0;font-size:11.5px;color:var(--muted);text-align:center;border-top:1px solid #E7E9EE}
.legal-strip span{margin:0 8px}
footer{background:var(--asphalt-950);color:#8A93A6;padding:50px 0 26px}
.foot-grid{display:flex;justify-content:space-between;flex-wrap:wrap;gap:22px;margin-bottom:30px}
.foot-brand p{font-size:13px;color:#8A93A6;margin-top:10px;max-width:320px}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:22px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;flex-wrap:wrap;gap:10px}

/* =================== PORTAL (login + dashboards) =================== */
#portalSite{background:var(--asphalt-950);color:#fff;min-height:100vh}
.topbar{position:sticky;top:0;z-index:200;background:rgba(10,13,18,.9);backdrop-filter:blur(14px);border-bottom:1px solid rgba(255,255,255,.08)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;height:72px}
.who{display:flex;align-items:center;gap:14px}
.who .avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid var(--cyan)}
.who .info b{display:block;font-size:13.5px}
.who .info span{font-size:11px;color:var(--muted-2);font-family:'JetBrains Mono'}

.login-screen{min-height:calc(100vh - 72px);display:flex;align-items:center;justify-content:center;padding:60px 0;position:relative;overflow:hidden}
.login-screen::before{content:"";position:absolute;inset:0;background:radial-gradient(700px 400px at 85% 0%,rgba(51,226,198,.14),transparent 60%),radial-gradient(600px 400px at 5% 100%,rgba(255,198,41,.08),transparent 60%)}
.login-wrap{position:relative;text-align:center;max-width:960px;width:100%}
.login-wrap h1{font-family:'Space Grotesk';font-weight:800;font-size:clamp(26px,3.4vw,40px);margin-bottom:12px;color:#fff}
.login-wrap p.lead{color:#9AA2AF;max-width:540px;margin:0 auto 40px;font-size:15.5px}
.role-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;text-align:left}
.role-card{background:linear-gradient(165deg,var(--asphalt-800),var(--asphalt-900));border:1px solid rgba(255,255,255,.09);border-radius:var(--radius-md);padding:22px;cursor:pointer;transition:transform .25s var(--ease),border-color .25s;position:relative}
.role-card:hover{transform:translateY(-5px);border-color:rgba(51,226,198,.5)}
.role-card.admin{border-color:rgba(255,198,41,.35)}
.role-card.admin:hover{border-color:var(--yellow)}
.role-card img{width:54px;height:54px;border-radius:14px;object-fit:cover;margin-bottom:13px}
.role-card h3{font-family:'Space Grotesk';font-size:16px;margin-bottom:4px}
.role-card span.role-tag{display:inline-block;font-size:10.5px;font-weight:700;color:var(--cyan-dim);background:rgba(51,226,198,.12);padding:4px 9px;border-radius:999px;margin-bottom:9px}
.role-card.admin span.role-tag{color:#B8860B;background:rgba(255,198,41,.14)}
.role-card p{font-size:12px;color:var(--muted-2)}
.role-card .langs-mini{display:flex;gap:5px;margin-top:10px;flex-wrap:wrap}
.role-card .langs-mini span{font-size:10px;background:rgba(255,255,255,.07);padding:3px 7px;border-radius:999px;color:#C7CCD6}
.login-note{margin-top:30px;font-size:12px;color:var(--muted-2);font-family:'JetBrains Mono'}

.role-card{cursor:pointer}
.role-card.selected{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(51,226,198,.25)}
.role-card.admin.selected{border-color:var(--yellow);box-shadow:0 0 0 2px rgba(201,162,39,.3)}

.password-panel{max-width:420px;margin:32px auto 0;text-align:left}
.password-card{background:linear-gradient(165deg,var(--asphalt-800),var(--asphalt-900));border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:24px}
.password-who{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.password-who img{width:44px;height:44px;border-radius:12px;object-fit:cover}
.password-who b{display:block;font-size:14.5px}
.password-who span{font-size:11.5px;color:var(--muted-2);font-family:'JetBrains Mono'}
.password-card input{width:100%;padding:13px 14px;border-radius:12px;border:1.5px solid rgba(255,255,255,.16);background:rgba(255,255,255,.05);color:#fff;font-size:14.5px;font-family:inherit;margin-bottom:12px}
.password-card input:focus{outline:none;border-color:var(--cyan)}
.password-error{color:var(--danger);font-size:12.5px;margin-top:10px;display:flex;align-items:center;gap:7px}

.dash{padding:36px 0 70px}
.dash-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;margin-bottom:28px}
.dash-head h1{font-family:'Space Grotesk';font-weight:800;font-size:clamp(22px,2.6vw,32px)}
.dash-head p{color:#9AA2AF;font-size:14px;margin-top:6px}
.scope-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:999px;background:rgba(51,226,198,.12);border:1px solid rgba(51,226,198,.35);color:var(--cyan);font-family:'JetBrains Mono';font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.scope-pill.admin-scope{background:rgba(255,198,41,.14);border-color:rgba(255,198,41,.4);color:var(--yellow)}

.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:26px}
.kpi{background:linear-gradient(165deg,var(--asphalt-800),var(--asphalt-900));border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:19px}
.kpi span{font-size:11.5px;color:var(--muted-2);font-weight:600}
.kpi b{display:block;font-family:'Space Grotesk';font-size:26px;margin:7px 0 3px}
.kpi .delta{font-size:11px;font-family:'JetBrains Mono';color:var(--ok)}

.panel-grid{display:grid;grid-template-columns:1.5fr .8fr;gap:22px}
.panel{background:linear-gradient(165deg,var(--asphalt-800),var(--asphalt-900));border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:24px}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;flex-wrap:wrap;gap:10px}
.panel-head h3{font-family:'Space Grotesk';font-size:15.5px}
.select-filter{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);color:#fff;padding:8px 11px;border-radius:9px;font-size:12.5px;font-family:inherit}

table.resa{width:100%;border-collapse:collapse;font-size:13px}
table.resa th{text-align:left;color:var(--muted-2);font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;padding-bottom:11px;border-bottom:1px solid rgba(255,255,255,.09)}
table.resa td{padding:12px 8px 12px 0;border-bottom:1px solid rgba(255,255,255,.06);vertical-align:middle}
table.resa tr:last-child td{border-bottom:none}
.mon-chip{display:flex;align-items:center;gap:8px}
.mon-chip img{width:24px;height:24px;border-radius:50%;object-fit:cover}
.pill{padding:4px 9px;border-radius:999px;font-size:10.5px;font-weight:700;white-space:nowrap}
.pill.ok{background:rgba(47,209,134,.16);color:var(--ok)}
.pill.wait{background:rgba(255,176,32,.16);color:var(--warn)}
.pill.cancel{background:rgba(255,107,107,.16);color:var(--danger)}
.pill.lang{background:rgba(255,255,255,.08);color:#C7CCD6}
.row-actions{display:flex;gap:6px}
.icon-btn{width:28px;height:28px;border-radius:8px;background:rgba(255,255,255,.06);display:grid;place-items:center;color:#fff;font-size:11px}
.icon-btn.done:hover{background:rgba(47,209,134,.25);color:var(--ok)}
.icon-btn.cancel:hover{background:rgba(255,107,107,.25);color:var(--danger)}
.empty-state{padding:30px 10px;text-align:center;color:var(--muted-2);font-size:13px}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px;font-size:11.5px;color:var(--muted-2)}
.legend span{display:flex;align-items:center;gap:6px}
.legend .dotc{width:8px;height:8px;border-radius:50%}

@media(max-width:980px){
  nav.links{display:none}
  .menu-toggle{display:flex}
  .hero-grid,.grid-2,.panel-grid{grid-template-columns:1fr}
  .stat-grid,.grid-3,.kpi-grid{grid-template-columns:repeat(2,1fr)}
  .role-grid{grid-template-columns:repeat(2,1fr)}
  .field-row{grid-template-columns:1fr}
  .who .info{display:none}
  .who{gap:8px}
}
@media(max-width:560px){
  .stat-grid,.grid-3,.kpi-grid,.role-grid{grid-template-columns:1fr}
  .hero{padding:64px 0 46px}
  section{padding:56px 0}
  .who span.btn-sm{padding:9px 11px}
  .panel{padding:18px}
  .form-card{padding:22px}
}
@media(max-width:400px){
  .who .btn-sm i{margin:0}
  .who .btn-sm{font-size:0}
  .who .btn-sm i{font-size:14px}
}
