:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#0f172a;background:#edf2f8;
  --nav:#0f172a;--blue:#2563eb;--cyan:#0891b2;--muted:#64748b;--line:#d9e2ee;--paper:#fff}
*{box-sizing:border-box}html{min-height:100%;-webkit-text-size-adjust:100%}
body{margin:0;min-width:280px}button,input,textarea{font:inherit}button{cursor:pointer}
button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #38bdf8;outline-offset:2px}
button:disabled{opacity:.55;cursor:not-allowed}p{line-height:1.6}
.app{width:min(100%,750px);margin:auto;min-height:100dvh;background:#f4f7fb;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.top{display:flex;align-items:center;justify-content:space-between;background:var(--nav);padding:14px 17px;color:#fff;gap:12px;min-height:74px}
.brand{display:flex;align-items:center;gap:11px}.brand img{border-radius:11px;background:#fff;object-fit:contain}
.brand strong{display:block;font-size:16px;white-space:nowrap;letter-spacing:-.3px}.brand strong span{color:#67e8f9}
.brand small{display:block;color:#9ab2d5;font-size:9px;letter-spacing:1.8px;margin-top:3px}
.top-status{font-size:11px;padding:7px 9px;border-radius:15px;background:#334155;color:#cbd5e1;max-width:122px;text-align:center;line-height:1.4}
.top-status.live{background:#124834;color:#b4fbd3}.top-status.offline{background:#5a2a25;color:#ffe0d6}
main{padding:0 15px 20px}
.welcome{background:linear-gradient(130deg,#152a4c,#0f172a 65%,#164e63);margin:0 -15px;padding:24px 18px 22px;color:#fff}
.eyebrow{font-size:10px;font-weight:800;color:#93c5fd;letter-spacing:1.35px}
h1{font-size:clamp(26px,6vw,36px);line-height:1.1;letter-spacing:-1px;margin:9px 0 12px}
h1 span{color:#67e8f9}.welcome>p{color:#d8e6f8;font-size:13px;margin:0 0 15px;max-width:540px}
.notice{background:#203653;border:1px solid #46617c;border-radius:11px;color:#e2e8f0;padding:11px 13px;font-size:12px;line-height:1.5}
.notice.warning{background:#482d27;border-color:#955040;color:#fff4ed}
.page{margin:23px 0}.page[hidden],.result[hidden],button[hidden],video[hidden],form[hidden]{display:none!important}
.section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:9px;margin-bottom:14px}
.section-title h2{font-size:19px;margin:0 0 4px;letter-spacing:-.3px}
.section-title p{font-size:11px;margin:0;color:var(--muted);max-width:200px;text-align:right}
.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:17px;margin:0 0 12px;box-shadow:0 4px 15px #0f172a0a}
.card h3{font-size:14px;margin:0 0 10px}.card p{font-size:13px;margin:7px 0 0;color:#475569}
.metric{min-height:112px;margin-bottom:12px}.metric span{display:block;font-size:11px;font-weight:650;color:#64748b}
.metric strong{display:block;font-size:27px;margin:10px 0 3px}.metric small{font-size:10px;color:#64748b}
.guide{border-left:3px solid var(--blue)}.guide p{margin-top:9px}
.fine{font-size:11px!important;color:#64748b!important;line-height:1.55}
.stack{display:grid;gap:10px}.stack .card{margin:0}
.empty{color:#64748b;font-size:13px;line-height:1.6}
.primary,.secondary,#camera-stop{border:1px solid #b8c8e5;padding:12px 16px;border-radius:10px;font-size:13px;font-weight:750;min-height:43px}
.primary{background:var(--blue);border-color:var(--blue);color:white}
.primary:not(:disabled):hover{background:#1d4ed8}
.secondary{background:#eef5ff;color:#17479b}
.row{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}
label{font-size:12px;font-weight:650;color:#334155;display:block;margin-bottom:7px}
input,textarea{width:100%;background:#fff;border:1px solid #b5c2d5;border-radius:9px;padding:11px;color:#0f172a;min-width:0}
textarea{resize:vertical;line-height:1.5}
#qr-form{margin-top:14px}#qr-form button{width:100%;margin-top:12px}
#camera-preview{width:100%;height:215px;object-fit:cover;border-radius:9px;background:#020617}
.scan-card{margin-top:12px}.total{display:flex;justify-content:space-between;font-size:14px;border-top:1px solid var(--line);padding-top:14px;margin-top:14px}
.result{border-radius:10px;padding:11px 12px;background:#eaf2ff;color:#17479b;font-size:13px;line-height:1.5}
.result.ok{background:#defbe8;color:#075e2b}.result.error{background:#ffe7e5;color:#8f241c}
.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,750px);background:#fff;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:7px 3px calc(7px + env(safe-area-inset-bottom));border-top:1px solid #dce5f0;box-shadow:0 -5px 20px #10204014;z-index:10}
.bottom-nav button{min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:0;color:#64748b;font-size:10px;padding:2px;white-space:nowrap}
.bottom-nav span{font-size:22px;line-height:1}.bottom-nav button[aria-current="page"]{color:#1d4ed8;font-weight:800}
.bottom-nav button[aria-current="page"] span{background:#e9f2ff;padding:1px 10px;border-radius:12px}
@media(min-width:550px){main{padding-left:24px;padding-right:24px}.welcome{margin-left:-24px;margin-right:-24px;padding:29px 24px}.page{margin-top:26px}.card{padding:22px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* ALL Solutions Hub: tokens repris des sources ALL Sollutions/app/styles.css.
   Le pied de page reprend le logo officiel et la signature du Hub. */
:root{--nav:#082355;--blue:#0875f5;--line:#d6e5fb;--muted:#496183;--paper:#f8fbff}
body{background:linear-gradient(125deg,#a4cef4,#eff7ff 53%,#62ade7)}
.app{background:linear-gradient(130deg,rgba(255,255,255,.98),rgba(240,247,255,.98))}
.top{background:linear-gradient(110deg,#06265c,#082355 65%,#04397b)}
.welcome{background:linear-gradient(115deg,#00132d,#04397b 75%,#00162f)}
.card{border-color:#d2e2fb;box-shadow:0 4px 15px #2561ad0b}
.primary{background:linear-gradient(180deg,#1688ff,#0768f0);border-color:#0060e6;color:#fff}
.primary:not(:disabled):hover{background:linear-gradient(180deg,#0e7ef4,#0759d5)}
.secondary{background:#e5efff;border-color:#bfd5f7;color:#0650df}
.bottom-nav{border-color:#d6e5fb}
.all-footer{margin:16px 15px 0;padding:16px 12px 21px;border-top:1px solid #d6e5fb;
 display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#40618c}
.all-footer-brand{display:flex;align-items:center;gap:9px;min-width:0}
.all-footer-brand img{width:45px;height:45px;object-fit:contain}
.all-footer-brand strong{display:block;color:#133879;font-weight:800;font-size:14px}
.all-footer-brand small{display:block;color:#496183;font-size:10px;line-height:1.4;margin-top:2px}
.all-footer p{font-size:11px;line-height:1.65;margin:0}
.all-footer-version{font-size:10px;width:100%;color:#587399}
@media(max-width:380px){.all-footer{align-items:flex-start;flex-direction:column;gap:7px}}
.field[hidden],#account-identity[hidden]{display:none!important}
.field{margin:16px 0;line-height:1.8}
.field select{width:100%;margin-top:5px;min-height:44px;border:1px solid #b5c2d5;border-radius:9px;background:#fff;padding:10px;color:#0f172a}
#event-list .card button{margin-top:11px;width:100%}
#sale-event h3{margin:0 0 11px}
#sale-event p{padding-top:7px;border-top:1px solid #d2e2fb}
#account-identity{font-weight:700;color:#17479b}

.qr-ticket svg{width:auto;max-width:100%;height:auto;background:#fff;image-rendering:pixelated}.qr-ticket p{overflow-wrap:anywhere;font-size:10px}.field select{width:100%;min-height:44px}#reservation-detail{margin-top:16px}input[type=checkbox]{width:auto;margin:8px}

.qr-ticket code{display:block;overflow-wrap:anywhere;font-size:10px;margin-top:8px} .qr-ticket summary{cursor:pointer}

.qr-ticket{scroll-margin-block:100px}html{scroll-padding-bottom:100px}
