:root{color-scheme:dark;--bg:#0b0e1b;--panel:#141929;--line:#33374b;--text:#f6f0e8;--muted:#bbb9c9;--orange:#ffae62;--violet:#d09cff;--green:#b5e584}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 90% 25%,#30213966,transparent 42%),radial-gradient(ellipse at 5% 60%,#173b3938,transparent 35%),var(--bg);color:var(--text);font:16px/1.6 "Segoe UI",Arial,sans-serif}button,input,select,textarea{font:inherit}button,.button{cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:12px 19px;background:#22283a;color:var(--text);font-weight:650;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:12px}button:hover,.button:hover{filter:brightness(1.13);border-color:var(--orange)}button:disabled{opacity:.5;cursor:wait}a{color:var(--orange)}:focus-visible{outline:3px solid var(--violet);outline-offset:4px}h1,h2,h3,p{margin:0 0 14px}h1,h2{font-family:Georgia,"Times New Roman",serif;line-height:1.16}h1{font-size:clamp(32px,4.5vw,57px);font-weight:500;letter-spacing:-1.5px}h1 em{font-style:normal;color:var(--orange)}h2{font-size:28px}h3{font-size:19px}header{display:flex;align-items:center;justify-content:space-between;padding:18px max(24px,calc((100vw - 1200px)/2));border-bottom:1px solid var(--line);background:#0b0e1bcc}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text);font-family:Georgia,serif;font-size:26px;letter-spacing:4px}.brand img{object-fit:contain}.brand small{display:block;font:11px "Segoe UI",sans-serif;letter-spacing:1.2px;color:var(--muted)}.header-right{display:flex;align-items:center;gap:20px}.environment{font-size:12px;letter-spacing:.7px;border:1px solid #665033;padding:4px 11px;border-radius:20px;color:#ffd1a2}main{max-width:1200px;padding:0 28px 60px;margin:auto}.tabs{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:24px 0 40px}.tabs button,.tabs a{padding:9px 15px;font-size:14px}.tabs button[aria-current=page]{background:#392b24;color:#ffd2a0;border-color:#9f6c40}.tabs a{margin-left:auto;text-decoration:none}.intro{max-width:790px;margin-bottom:36px}.intro p:not(.eyebrow){color:var(--muted);font-size:18px;max-width:670px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--orange);font-weight:700;margin-bottom:16px}.scan-layout{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:60px}.panel{background:linear-gradient(145deg,#1a2032,#111522);border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 15px 60px #0003}.panel-heading{display:flex;gap:16px}.panel-heading h2{font-size:25px;margin-bottom:5px}.panel-heading p{font-size:14px;color:var(--muted)}.step-dot{width:42px;height:42px;background:#3e2d23;color:var(--orange);display:grid;place-items:center;border-radius:50%;flex:none}label{display:block;font-size:14px;margin:15px 0 7px;color:#ddd9e3}input,select,textarea{width:100%;background:#0b101d;border:1px solid #505168;border-radius:8px;padding:12px;color:var(--text);min-width:0}input[type=date]{min-height:50px}.viewfinder{height:325px;position:relative;margin:22px 0 14px;background:radial-gradient(ellipse at center,#2c3348,#0a0e18);border:1px dashed #635b66;border-radius:15px;overflow:hidden;display:grid;place-items:center}.viewfinder:before,.viewfinder:after{content:"";position:absolute;width:25px;height:25px;border-color:var(--orange);z-index:2;pointer-events:none}.viewfinder:before{top:14px;left:14px;border-top:2px solid;border-left:2px solid}.viewfinder:after{right:14px;bottom:14px;border-right:2px solid;border-bottom:2px solid}#preview{width:100%;height:100%;object-fit:contain;position:absolute}.paper{width:145px;background:#e9e0d1;color:#353134;padding:20px 15px;transform:rotate(-6deg);box-shadow:0 10px 35px #0008;margin:0 auto 20px;font-size:10px;clip-path:polygon(0 0,100% 0,100% 98%,94% 100%,88% 98%,82% 100%,76% 98%,70% 100%,64% 98%,58% 100%,52% 98%,46% 100%,40% 98%,34% 100%,28% 98%,22% 100%,16% 98%,10% 100%,0 98%)}.paper b{letter-spacing:1px}.paper i{display:block;height:3px;margin:12px 0;background:#acaa9e}.paper i:nth-child(3){width:70%}.paper span{display:flex;justify-content:space-between;margin:20px 0 15px}.barcode{height:25px;background:repeating-linear-gradient(90deg,#353134 0 2px,transparent 2px 4px,#353134 4px 5px,transparent 5px 8px)}#empty-photo p{font-size:12px;color:var(--muted);margin:0}.photo-actions{display:flex;gap:10px;flex-wrap:wrap}.photo-actions label{margin:0}.file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.file-input:focus-visible+label{outline:3px solid var(--violet)}.primary{color:#261606;background:linear-gradient(#ffc785,#ee9b50);border-color:#ffd19b;box-shadow:0 3px 0 #955c2f,0 5px 20px #da7e181c}.secondary{background:#22283a}.quiet{background:transparent;border-color:transparent;padding:8px;color:var(--muted);font-size:14px}.spell{position:relative;text-align:center;padding:15px 24px;align-self:start}.hero-card{display:block;width:210px;max-width:70%;margin:0 auto 34px;transform:rotate(5deg);border-radius:12px;box-shadow:0 0 90px #db772238,0 28px 45px #0009;position:relative}.orbit{position:absolute;font-size:320px;line-height:1;color:#8051292b;top:6px;left:50%;transform:translateX(-50%)}.spell h2{font-size:34px}.spell p{color:var(--muted)}.spell .eyebrow{color:var(--orange)}.example{display:flex;align-items:center;justify-content:center;gap:25px;margin:22px 0;font-size:26px;color:var(--orange)}.example span{font-size:20px;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}#receipt-form{margin-top:26px;border-top:1px solid var(--line);padding-top:22px}.xp-estimate{border:1px solid #695037;border-radius:12px;padding:14px 18px;margin:23px 0;display:flex;align-items:center;gap:20px}.xp-estimate span{font-size:13px}.xp-estimate strong{white-space:nowrap;font-size:27px;color:var(--orange);margin-left:auto}.notice{padding:16px 20px;border:1px solid #5e7859;border-radius:12px;background:#203423;margin-bottom:25px}.notice.error{background:#392029;border-color:#a26070}progress{width:100%;accent-color:var(--orange);height:8px}#ocr-progress{margin-top:16px;font-size:14px}#scan-beam{position:absolute;left:6%;right:6%;height:2px;background:var(--violet);box-shadow:0 0 16px 4px #b88bff66;animation:scan 3s ease-in-out infinite}@keyframes scan{0%,100%{top:10%}50%{top:90%}}footer{border-top:1px solid var(--line);max-width:1144px;margin:auto;padding:24px 0;display:flex;justify-content:space-between;font-size:13px;color:var(--muted)}dialog{background:#171d2e;color:var(--text);border:1px solid #6b526b;border-radius:18px;padding:32px;max-width:min(560px,94vw);width:100%;box-shadow:0 30px 150px #0009}dialog::backdrop{background:#060812cf;backdrop-filter:blur(6px)}.close{position:absolute;right:10px;top:6px;background:none;border:none;padding:4px 10px;font-size:26px}.close+h2{padding-right:28px}dialog .primary{margin-top:10px}#auth-error,#allocation-error{color:#ffb7b7;font-size:14px;margin-top:12px}#review-dialog{max-width:min(1000px,95vw)}.review-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.review-photo{width:100%;max-height:65vh;object-fit:contain;background:#090c14;border-radius:10px}.review-copy{white-space:pre-wrap;font:12px/1.5 monospace;max-height:160px;overflow:auto;background:#0b0f1b;padding:12px}.review-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.section-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.section-toolbar p{margin:0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}.stat{padding:20px;background:#171d2d;border:1px solid var(--line);border-radius:13px}.stat strong{display:block;font-size:30px;color:var(--orange)}.stat span{font-size:13px;color:var(--muted)}.campaign-list{display:grid;gap:15px;margin:20px 0}.campaign-item{padding:20px;border:1px solid var(--line);border-radius:12px;background:#151a29}.campaign-item h3{margin-bottom:5px}.campaign-link{display:block;overflow-wrap:anywhere;font-size:13px;margin:12px 0}.campaign-form{display:flex;align-items:end;gap:12px;margin-bottom:24px}.campaign-form>div{flex:1}.campaign-form button{white-space:nowrap}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse;background:#111625;font-size:14px}th,td{text-align:left;padding:15px;border-bottom:1px solid var(--line)}th{font-size:12px;color:var(--muted);font-weight:600}td small{display:block;color:var(--muted)}.status{padding:4px 9px;border-radius:15px;font-size:12px;white-space:nowrap;background:#332d42;color:#e3bfff}.status.approved{background:#25362a;color:#c3e9ac}.status.rejected{background:#402934;color:#ffc0c0}.empty{padding:32px;text-align:center;border:1px dashed var(--line);border-radius:15px;color:var(--muted)}.collection-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.reserve{border:1px solid #477055;border-radius:18px;background:radial-gradient(ellipse at bottom,#315840,#151f23);padding:20px 30px;text-align:center;min-width:170px;position:relative}.reserve strong{display:block;font-size:34px;color:#c5f8a3}.reserve span{font-size:13px;color:var(--violet)}.reserve:before{content:'●  ·  ●';color:#ca82ff;position:absolute;top:-10px;left:35%;animation:bubbles 2.8s ease-in-out infinite}@keyframes bubbles{50%{transform:translateY(-8px);text-shadow:0 0 9px #ca82ff}}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.card{display:flex;flex-direction:column;padding:13px;background:linear-gradient(#171c2d,#121725);border-radius:15px;border:1px solid var(--line);text-align:left;gap:7px}.card img{width:100%;border-radius:8px;transition:filter .8s}.card strong{font-size:15px}.card small{font-weight:400;color:var(--muted);font-size:12px}.card progress{height:10px;accent-color:var(--green)}.card:hover{box-shadow:0 0 25px #91d27617;transform:translateY(-2px)}.skip{position:fixed;top:-100px;z-index:10;padding:12px;background:#fff;color:#000}.skip:focus-visible{top:0}[hidden]{display:none!important}.login-callout{padding:25px;border:1px solid var(--line);border-radius:15px}.login-callout button{margin-top:10px}
@media(max-width:850px){.scan-layout{gap:25px;grid-template-columns:1.2fr .8fr}.spell{padding:10px 0}.spell h2{font-size:28px}.hero-card{width:180px}.cards{grid-template-columns:repeat(3,1fr)}.stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){header{padding:14px 18px}.brand{font-size:21px;letter-spacing:2px;gap:7px}.brand img{width:42px;height:42px}.brand small{font-size:9px}.environment{display:none}.header-right{gap:5px}main{padding:0 16px 40px}.tabs{gap:7px;margin:20px 0 30px}.tabs button,.tabs a{font-size:12px;padding:8px 9px}.tabs a{margin-left:0}.intro{margin-bottom:24px}.intro p:not(.eyebrow){font-size:16px}h1{letter-spacing:-.8px}.scan-layout{display:flex;flex-direction:column;gap:35px}.panel{padding:20px 17px}.viewfinder{height:290px}.photo-actions{display:grid;grid-template-columns:1fr}.spell{padding:10px 25px}.hero-card{width:170px}.orbit{font-size:280px}.form-grid{grid-template-columns:1fr}.xp-estimate{padding:13px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.card{padding:9px}.card strong{font-size:14px}.collection-top{align-items:start}.reserve{min-width:120px;padding:15px}.reserve strong{font-size:26px}.collection-top p{font-size:14px}.stats{gap:9px}.stat{padding:15px}.stat strong{font-size:25px}.campaign-form{display:block}.campaign-form button{margin-top:14px}.section-toolbar{align-items:start}.section-toolbar p{font-size:13px}.review-layout{grid-template-columns:1fr}dialog{padding:28px 19px}.review-photo{max-height:45vh}footer{margin:0 16px;gap:15px;flex-direction:column}.xp-estimate strong{font-size:24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.skip{top:0;left:0;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;padding:0}.skip:focus-visible{clip-path:none;width:auto;height:auto;padding:12px}.brand img{border-radius:8px}.photo-actions{margin-top:18px}
/* Album du joueur : collection, cartes restantes, réserve, puis scanner. */
.album-only{display:none}.album-open .album-only{display:block}.album-open #scan .intro,.album-open #scan .spell{display:none}.album-open #scan .scan-layout{display:block}.album-open #scan .scanner{max-width:800px;margin:auto}.album-open #scan{scroll-margin-top:24px;border-top:1px solid var(--line);padding-top:34px;margin-top:28px}.scan-heading p{color:var(--muted)}.album-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin:10px 0 30px}.album-heading h1{font-size:clamp(34px,4vw,50px)}.album-shortcuts{display:flex;flex-direction:column;gap:8px;align-items:center}.album-section{background:linear-gradient(135deg,#192031bb,#101522cc);border:1px solid #514332;border-radius:20px;padding:25px;margin-bottom:25px;scroll-margin-top:20px}.album-section-heading{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:24px}.album-section-heading p{color:var(--muted);font-size:14px;margin-bottom:4px}.album-section-heading .eyebrow{font-size:10px;color:var(--orange);margin-bottom:9px}.album-section-heading h2{margin:0;font-size:29px}.album-section-heading h2 span{font:13px 'Segoe UI',sans-serif;vertical-align:middle;background:#302b2b;color:#e3c29d;border-radius:20px;padding:5px 12px;margin-left:10px;white-space:nowrap}.empty-album{display:flex;align-items:center;justify-content:center;gap:24px;border:1px dashed #766046;border-radius:13px;padding:27px;background:radial-gradient(ellipse at left,#82613a22,transparent)}.empty-album>span{font:64px Georgia;color:#c9955a}.empty-album h3{margin-bottom:6px;font-family:Georgia,serif;font-weight:400;font-size:22px}.empty-album p{margin:0;color:var(--muted);font-size:14px}.acquired-card{margin:0;border-color:#827047;background:radial-gradient(ellipse at top,#5a45252b,#111521);cursor:default;padding:12px}.acquired-card:hover{transform:none;box-shadow:none}.acquired-card figcaption{width:100%;padding-top:5px}.acquired-card small{display:block;color:#d8bd87}.album-section .card img{aspect-ratio:822/1122;object-fit:contain}.remaining-section{border-color:#37394e}.pending-card:disabled{opacity:1;cursor:default}.pending-card:disabled:hover{transform:none;filter:none;border-color:var(--line);box-shadow:none}.pending-card strong small{display:block}.level-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.level-filters button{padding:7px 13px;font-size:12px}.level-filters button[aria-pressed=true]{border-color:var(--orange);background:#47332b;color:#ffe1bb}.album-pagination{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:18px}.album-pagination span{font-size:12px;color:var(--muted)}.album-pagination button{font-size:12px}.pending-receipts{display:flex;width:100%;justify-content:space-between;text-align:left;margin:0 0 22px;font-size:14px;background:#251f35;border-color:#564665;color:#dec9f6}.cauldron-section{display:flex;align-items:center;justify-content:space-between;gap:35px;padding:24px 34px;border:1px solid #485749;border-radius:20px;background:radial-gradient(ellipse at 80% 80%,#20433377,transparent 65%),#111822;margin:25px 0}.cauldron-section>div{max-width:560px}.cauldron-section p:not(.eyebrow){color:var(--muted);font-size:15px;margin-bottom:0}.cauldron-button{display:flex;flex-direction:column;gap:8px;min-width:220px;padding:15px 10px 8px;border:0;background:transparent;box-shadow:none}.cauldron-art{display:block;position:relative;width:180px;height:156px;padding-top:20px}.cauldron-bowl{position:absolute;inset:43px 9px 13px;background:radial-gradient(ellipse at 35% 20%,#548357,#234530 58%,#0e2118);border:3px solid #6c9d66;border-top:0;border-radius:20% 20% 45% 45%;box-shadow:inset -10px -10px 22px #0007,0 12px 25px #0008;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#e4ffb8;z-index:2}.cauldron-bowl strong{font:700 34px 'Segoe UI',sans-serif;line-height:1.2}.cauldron-bowl small{font-size:11px;font-weight:400;color:#d1e8c5}.cauldron-bowl:before,.cauldron-bowl:after{content:'';position:absolute;top:16px;border:4px solid #678c59;border-radius:50%;width:17px;height:26px;z-index:-1}.cauldron-bowl:before{left:-18px}.cauldron-bowl:after{right:-18px}.potion{position:absolute;top:25px;left:4px;width:172px;height:37px;border:5px solid #75985a;border-radius:50%;background:radial-gradient(ellipse,#e5b9ff,#9d3df2 65%,#59228a);box-shadow:0 -3px 22px #ba55ff77;z-index:3}.bubble{position:absolute;border-radius:50%;background:radial-gradient(circle at 30% 25%,#f6dbff,#bf70ff 40%,#632598);border:1px solid #e3b1ff;box-shadow:0 0 10px #bb5eff;z-index:4;animation:potion-bubble 3s ease-in-out infinite}.b1{width:15px;height:15px;left:45px;top:22px}.b2{width:10px;height:10px;left:100px;top:9px;animation-delay:-1s}.b3{width:20px;height:20px;left:118px;top:27px;animation-delay:-2s}.b4{width:8px;height:8px;left:75px;top:4px;animation-delay:-1.6s}.cauldron-caption{color:#dcc1ff;font-size:12px}.cauldron-button:hover .cauldron-bowl{border-color:#a7d37c}.cauldron-button:hover{filter:brightness(1.1)}@keyframes potion-bubble{0%,100%{transform:translateY(1px) scale(.85)}50%{transform:translateY(-13px) scale(1.1)}}
@media(max-width:640px){.album-heading{display:block}.album-heading h1{font-size:38px}.album-shortcuts{flex-direction:row;justify-content:space-between;margin-top:19px;gap:6px}.album-shortcuts button{font-size:12px;padding:10px}.album-section{padding:16px 12px;border-radius:15px}.album-section-heading{display:block;margin-bottom:18px}.album-section-heading p{margin-top:8px}.album-section-heading h2{font-size:25px}.album-section-heading h2 span{font-size:11px;padding:4px 7px;margin-left:5px}.empty-album{padding:20px 14px;gap:13px}.empty-album>span{font-size:44px}.empty-album h3{font-size:19px}.empty-album p{font-size:13px}.level-filters{gap:5px}.level-filters button{font-size:11px;padding:6px 8px}.album-pagination{gap:0}.album-pagination button{padding:9px 5px;font-size:11px}.cauldron-section{flex-direction:column;gap:2px;padding:24px;text-align:center}.cauldron-section h2{font-size:26px}.cauldron-section .eyebrow{font-size:10px}.cauldron-button{min-width:180px}.pending-receipts{font-size:12px}}
/* Album compact : garder les cartes et les commandes à portée de main. */
.album-open header{padding-top:10px;padding-bottom:10px}
.album-open .brand{font-size:22px}
.album-open .brand img{width:42px;height:42px}
.album-open .tabs{margin:14px 0 20px;gap:7px}
.album-open .tabs button,.album-open .tabs a{min-height:44px;padding:7px 12px}
.album-heading{gap:18px;margin:0 0 14px}
.album-heading h1{font-size:30px;letter-spacing:-.6px;margin-bottom:6px}
.album-heading h1 br{display:none}
.album-heading h1 em:before{content:' '}
.album-heading .eyebrow{margin-bottom:7px;font-size:10px}
.album-heading .muted{font-size:13px;margin:0}
.album-shortcuts{flex-direction:row;gap:8px}
.album-shortcuts button{font-size:13px;min-height:44px;padding:8px 12px}
.cauldron-section{gap:16px;padding:12px 20px;margin:14px 0;border-radius:15px}
.cauldron-section h2{font-size:23px;margin-bottom:6px}
.cauldron-section .eyebrow{font-size:10px;margin-bottom:5px;letter-spacing:1px}
.cauldron-section p:not(.eyebrow){font-size:13px;max-width:470px;line-height:1.45}
.cauldron-button{min-width:126px;padding:4px;gap:0;flex-shrink:0}
.cauldron-art{transform:scale(.65);margin:-27px -31px}
.cauldron-caption{font-size:11px}
.album-section{padding:16px;border-radius:15px;margin-bottom:16px}
.album-section-heading{margin-bottom:13px;gap:12px}
.album-section-heading .eyebrow{margin-bottom:5px;letter-spacing:1px}
.album-section-heading h2{font-size:23px}
.album-section-heading p{font-size:13px}
.album-section .cards{gap:12px}
.album-section .card{padding:9px;gap:4px;border-radius:11px}
.album-section .card img{max-height:180px}
.album-section .card strong{font-size:14px}
.album-section .card progress{height:8px;margin:2px 0}
.pending-card strong small{display:inline;margin-left:5px}
.empty-album{padding:15px;gap:16px}
.empty-album>span{font-size:38px}
.empty-album h3{font-size:18px}
.level-filters{gap:6px;margin-bottom:12px}
.level-filters button{min-height:40px;padding:6px 12px}
.album-pagination{margin-top:10px}
.album-pagination button{min-height:44px}
.pending-receipts{margin-bottom:14px;padding:10px 14px}
.album-open #scan{padding-top:20px;margin-top:20px}
.scan-heading .eyebrow{margin-bottom:6px}
.scan-heading h2{font-size:24px;margin-bottom:8px}
.scan-heading p{font-size:14px;margin-bottom:14px}
.album-open .scanner{padding:20px}
.album-open .viewfinder{height:240px;margin-top:14px}
@media(max-width:640px){
 .album-open header{padding:9px 12px}
 .album-open main{padding:0 12px 28px}
 .album-open .brand{font-size:19px}
 .album-open .brand img{width:36px;height:36px}
 .album-open .tabs{margin:10px 0 14px;gap:4px}
 .album-open .tabs button,.album-open .tabs a{font-size:12px;padding:7px 8px}
 .album-heading h1{font-size:26px}
 .album-heading .eyebrow{font-size:9px;letter-spacing:1px}
 .album-shortcuts{margin-top:10px;justify-content:flex-start;gap:6px}
 .album-shortcuts button{font-size:12px;padding:8px 10px}
 .cauldron-section{flex-direction:row;text-align:left;padding:12px;gap:8px}
 .cauldron-section>div{min-width:0}
 .cauldron-section .eyebrow{display:none}
 .cauldron-section h2{font-size:21px}
 .cauldron-section p:not(.eyebrow){font-size:12px}
 .cauldron-button{min-width:112px}
 .cauldron-art{transform:scale(.6);margin:-31px -36px}
 .cauldron-caption{font-size:10px}
 .album-section{padding:12px 10px}
 .album-section-heading{margin-bottom:10px}
 .album-section-heading h2{font-size:22px}
 .album-section-heading p{margin:5px 0 0;font-size:12px}
 .album-section .cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .album-section .card{padding:7px;gap:3px}
 .album-section .card img{max-height:145px}
 .album-section .card strong{font-size:13px}
 .pending-card strong small{display:block;margin-left:0;font-size:11px}
 .album-section .card small{font-size:11px}
 .level-filters{gap:4px}
 .level-filters button{padding:6px 9px;font-size:11px;min-height:44px}
 .album-open .scanner{padding:16px 12px}
 .album-open .viewfinder{height:225px}
 .album-open .panel-heading h2{font-size:21px}
}
/* Atelier : ticket animé et réserve, puis album et cartes acquises. */
.album-workbench{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:24px;align-items:center;margin:18px 0}
.ticket-simulation{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:12px;align-items:center;padding:18px 22px;border:1px solid #52405f;border-radius:16px;background:radial-gradient(ellipse at right,#46275a55,transparent 65%),#111725;min-height:245px}
.sim-copy h2{font-size:25px}.sim-copy .eyebrow{margin-bottom:6px}.sim-copy p:not(.eyebrow){font-size:13px;color:var(--muted);min-height:42px;margin-bottom:10px}.sim-copy button{font-size:13px;min-height:44px;padding:8px 14px}
.sim-viewport{position:relative;height:215px;border:1px solid #9278af;border-radius:12px;background:radial-gradient(ellipse,#6c458e44,transparent 70%);display:grid;place-items:center;overflow:hidden}
.sim-ticket{width:135px;padding:15px 11px;background:#eee4d1;color:#302b34;box-shadow:0 8px 30px #0008;transform:rotate(-5deg);transition:transform 1s,opacity 1s;clip-path:polygon(0 0,100% 0,100% 96%,90% 100%,80% 96%,70% 100%,60% 96%,50% 100%,40% 96%,30% 100%,20% 96%,10% 100%,0 96%)}
.sim-ticket b{display:block;text-align:center;letter-spacing:2px;font-size:14px}.sim-ticket>small{display:block;text-align:center;font-size:8px;margin-bottom:12px}.sim-ticket>span,.sim-ticket>strong{display:flex;justify-content:space-between;font-size:9px;margin:6px 0}.sim-ticket>strong{border-top:1px dashed #999;padding-top:8px}.sim-ticket i{font-style:normal}.sim-ticket .barcode{height:17px;margin:12px 0 7px}.sim-beam{position:absolute;left:8px;right:8px;height:2px;top:10%;background:#dcacff;box-shadow:0 0 15px 4px #b152eaaa;opacity:0}.scanning .sim-beam{opacity:1;animation:scan 3s ease-in-out 2}.scanning .sim-ticket{transform:rotate(0deg)}.sim-xp{position:absolute;opacity:0;transform:scale(.7);transition:opacity 1s,transform 1s;border:1px solid #e6c2ff;border-radius:50%;width:108px;height:108px;display:flex;align-items:center;justify-content:center;gap:5px;font-size:35px;font-weight:700;color:#f9eaff;background:radial-gradient(ellipse,#8941a6,#211328);box-shadow:0 0 38px #b64cff77}.sim-xp small{font-size:14px}.complete .sim-ticket{opacity:0;transform:translateY(-20px) scale(.9)}.complete .sim-xp{opacity:1;transform:scale(1)}
.reserve-cauldron{text-align:center;justify-self:center}.reserve-cauldron .cauldron-title{color:#d8b8ff;font-weight:700;font-size:17px;margin:0 0 5px;animation:reserve-glow 3s ease-in-out infinite}.reserve-cauldron .cauldron-art{display:block;position:relative;width:170px;height:145px;min-width:0;margin:0 auto;padding:0;transform:none;background:transparent;border:0;box-shadow:none}.reserve-cauldron svg{width:100%;height:100%;overflow:visible}.reserve-cauldron .cauldron-xp{position:absolute;top:69px;left:0;right:0;display:flex;justify-content:center;align-items:baseline;gap:5px;color:#eaffd3;pointer-events:none}.cauldron-xp strong{font-size:28px}.cauldron-xp span{font-size:12px}.reserve-cauldron .cauldron-caption{font-size:13px;color:#cfb6e7;line-height:1.4;margin:6px 0 0}.reserve-cauldron .potion-bubble{animation:potion-bubble 3s ease-in-out infinite}.reserve-cauldron .b2{animation-delay:-1s}.reserve-cauldron .b3{animation-delay:-2s}.reserve-cauldron .b4{animation-delay:-1.4s}@keyframes reserve-glow{50%{opacity:.6;text-shadow:0 0 12px #c879ff}}
.album-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}.album-columns .album-section{min-width:0}.album-columns .cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.album-columns .card img{max-height:142px}.album-columns .card strong{font-size:12px}.album-columns .card small{font-size:11px}.album-columns .card{min-width:0}.album-columns .owned-label{color:#c9e7a9}.album-columns .owned-slot{border-color:#536f42}.album-columns .empty-album{flex-direction:column;text-align:center;min-height:245px}.album-columns .album-section-heading h2{font-size:23px}.album-columns .album-section-heading h2 span{margin-left:4px;padding:4px 6px;font-size:11px}
@media(max-width:850px){.album-workbench{grid-template-columns:minmax(0,1fr) 165px;gap:12px}.ticket-simulation{grid-template-columns:minmax(0,1fr) 150px;padding:14px}.album-columns .cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.album-workbench{grid-template-columns:minmax(0,1fr) 114px;gap:10px;margin:14px 0}.ticket-simulation{display:flex;flex-direction:column-reverse;padding:10px;gap:10px;min-height:0}.sim-viewport{width:100%;height:175px}.sim-ticket{width:116px;padding:10px}.sim-copy h2{font-size:18px;margin-bottom:7px}.sim-copy .eyebrow{font-size:9px}.sim-copy p:not(.eyebrow){font-size:12px;min-height:0;line-height:1.4}.sim-copy button{width:100%;padding:8px;font-size:12px}.reserve-cauldron .cauldron-art{width:114px;height:97px}.reserve-cauldron .cauldron-title{font-size:14px}.reserve-cauldron .cauldron-xp{top:44px}.cauldron-xp strong{font-size:21px}.cauldron-xp span{font-size:10px}.reserve-cauldron .cauldron-caption{font-size:11px}.album-columns{grid-template-columns:minmax(0,1fr);gap:0}.album-columns .cards{grid-template-columns:repeat(2,minmax(0,1fr))}.album-columns .card img{max-height:125px}.album-columns .empty-album{min-height:130px}.album-columns .card strong{font-size:13px}}
/* Les 48 emplacements restent accessibles sans allonger toute la page. */
.album-columns .pending-cards{max-height:680px;overflow-y:auto;scrollbar-gutter:stable;padding:3px 7px 3px 3px;align-content:start;scrollbar-color:#8e6b9d #111725}
@media(max-width:640px){.album-columns .pending-cards{max-height:560px}}
/* Présentation du ticket demandée : titre seul, cadre à gauche, boucle au repos. */
.album-heading{justify-content:flex-end;margin-bottom:8px}
.ticket-simulation{display:flex;flex-direction:column;align-items:flex-start;gap:10px;justify-self:start;width:min(100%,330px);min-height:0;padding:0;border:0;background:none}
.ticket-simulation #sim-title{font-size:26px;letter-spacing:-.5px;margin:0;line-height:1.2}
.ticket-simulation .sim-viewport{width:100%;height:220px}
.ticket-simulation #simulate-ticket{min-height:44px;font-size:13px;padding:8px 16px}
.ticket-simulation #sim-status{margin:0;color:var(--muted);font-size:12px;line-height:1.4}
.ticket-simulation #sim-status:empty{display:none}
.ticket-simulation:not(.complete) .sim-beam{opacity:1;animation:scan 3s ease-in-out infinite}
.ticket-simulation:not(.scanning):not(.complete) .sim-ticket{animation:ticket-idle 4s ease-in-out infinite}
@keyframes ticket-idle{50%{transform:translateY(-5px) rotate(-2deg)}}
@media(max-width:640px){.ticket-simulation #sim-title{font-size:20px}.ticket-simulation .sim-viewport{height:185px}.ticket-simulation #simulate-ticket{padding:8px 10px;font-size:12px}.album-columns .album-section-heading h2{font-size:22px}.album-heading .album-shortcuts{margin-top:0}}
/* Aligner ticket et réserve sur les deux colonnes de l’album. */
@media(min-width:641px){
 .album-workbench{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
 .ticket-simulation{width:100%;max-width:none}
 .reserve-cauldron{justify-self:center}
}
/* Arrivée depuis l’affiche : directement le vrai scanner, avant le compte. */
.poster-intro,.poster-only,.poster-idle-beam{display:none}
.scan-guidance{order:-1;padding:12px 14px;margin:0 0 14px;border:1px solid #b78249;border-radius:12px;background:#352617;color:#f5e8d7;font-size:13px;line-height:1.45}
.scan-guidance h3{font:700 15px/1.3 "Segoe UI",Arial,sans-serif;color:#ffca8d;margin:0 0 7px}
.scan-guidance ul{padding-left:18px;margin:0}
.scan-guidance li+li{margin-top:5px}
.scan-guidance p{margin:8px 0 0;font-size:12px;color:#ffd6a9}
.scanner:has(#preview:not([hidden])) .scan-guidance{display:none}
.receipt-entry .environment,.receipt-entry #scan>.intro,.receipt-entry .spell,.receipt-entry .scanner>.panel-heading{display:none}
.receipt-entry header{padding-top:10px;padding-bottom:10px}
.receipt-entry .brand img{width:40px;height:40px}
.receipt-entry .brand{font-size:21px}
.receipt-entry main{max-width:760px;padding:0 20px 30px}
.receipt-entry .poster-intro{display:flex;flex-direction:column;justify-content:flex-end;min-height:205px;margin:0 -20px 0;padding:25px 32px 24px;background:linear-gradient(90deg,#100c1dbb,#100c1d22),url('/decor-halloween.webp') center 38%/cover;border-bottom:1px solid #6b426b;text-shadow:0 2px 15px #000}
.poster-intro>p{color:#ffb96c;font-family:Georgia,serif;font-weight:700;font-size:22px;letter-spacing:2px;margin-bottom:8px}
.poster-intro h1{font-size:32px;line-height:1.13;letter-spacing:-.6px;margin:0}
.receipt-entry .scan-layout{display:block}
.receipt-entry .scanner{display:flex;flex-direction:column;max-width:510px;margin:18px auto 0;padding:17px 20px;border-color:#614569;background:linear-gradient(145deg,#25192c,#111421)}
.receipt-entry .viewfinder{order:0;flex:none;height:240px;margin:0 0 14px;border:1px solid #ad83ba;background:radial-gradient(ellipse,#49345b,#100e1a 75%)}
.receipt-entry #empty-photo p{display:none}
.receipt-entry #empty-photo .paper{margin:0;font-size:10px;animation:ticket-idle 4s ease-in-out infinite}
.receipt-entry #viewfinder:has(#preview[hidden]) .poster-idle-beam{display:block;position:absolute;left:6%;right:6%;height:2px;background:#efc2ff;box-shadow:0 0 16px 4px #bd53f090;animation:scan 3.8s ease-in-out infinite;pointer-events:none}
.receipt-entry .photo-actions{order:2;display:flex;flex-wrap:wrap;margin:0;gap:8px}
.receipt-entry .photo-actions button{min-height:46px;flex:1;font-size:14px;padding:10px}
.receipt-entry .poster-only{display:inline}
.receipt-entry .standard-label{display:none}
.receipt-entry .scanner>label[for=campaign]{order:3;margin-top:16px}
.receipt-entry #campaign,.receipt-entry #no-campaign{order:4}
.receipt-entry #ocr-progress{order:1;margin:0 0 14px;padding:10px 12px;border:1px solid #79528e;border-radius:10px;background:#23182e}
.receipt-entry #ocr-message{margin:0 0 6px;color:#eed5ff;font-weight:650}
.receipt-entry #ocr-progress progress{display:block;accent-color:var(--violet)}
.receipt-entry #cancel-read{padding:5px 0 0;font-size:12px}
#retry-read{margin-top:8px}
#ocr-diagnostic{margin-top:10px;font-size:12px;color:var(--muted)}
#ocr-error-detail{margin:8px 0 0;overflow-wrap:anywhere}
.receipt-entry #receipt-form{order:3;margin-top:12px;padding-top:10px}
.receipt-entry .scanner>label[for=campaign]{order:4}
.receipt-entry #campaign,.receipt-entry #no-campaign{order:5}
.receipt-entry #receipt-form h3{font-size:16px;margin-bottom:3px}
.receipt-entry #read-note{font-size:11px;line-height:1.35;margin-bottom:6px}
.receipt-entry #receipt-form label{font-size:12px;line-height:1.3;margin:6px 0 3px}
.receipt-entry #receipt-form input{font-size:14px;padding:7px 9px;min-height:36px;height:36px;opacity:1;color:var(--text)}
.receipt-entry #receipt-form .form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 10px}
.receipt-entry #receipt-form .xp-estimate{margin:10px 0;padding:7px 10px;gap:12px}
.receipt-entry #receipt-form .xp-estimate strong{font-size:22px}
.receipt-entry #receipt-form .xp-estimate span{font-size:12px}
.receipt-entry #ocr-progress:has(progress[hidden]):not(:has(#retry-read:not([hidden]))){padding:5px 9px;margin-bottom:8px;font-size:12px}
.receipt-entry #ocr-progress:has(progress[hidden]) #ocr-message{margin:0}
.receipt-entry footer{max-width:720px;padding:16px 20px;font-size:12px}
@media(max-width:640px){.receipt-entry main{padding:0 14px 20px}.receipt-entry .poster-intro{margin:0 -14px;min-height:175px;padding:20px;background-position:60% 38%}.poster-intro>p{font-size:19px}.poster-intro h1{font-size:27px}.receipt-entry .scanner{margin-top:12px;padding:12px}.receipt-entry .viewfinder{height:220px}.receipt-entry .photo-actions{display:grid;grid-template-columns:1fr}.receipt-entry .photo-actions button{font-size:14px}.receipt-entry .brand{font-size:19px}}
/* Découverte des cartes immédiatement après le premier ticket. */
.discovery-open .tabs,.discovery-open .environment{display:none}
.discovery-open main{max-width:1060px}
.discovery-heading{text-align:center;margin:0 -28px 24px;padding:24px 20px;background:linear-gradient(#100d17aa,#100d17ee),url('/decor-halloween.webp') center 40%/cover;border-bottom:1px solid #624571}
.discovery-heading .eyebrow{margin-bottom:10px;font-size:14px;letter-spacing:3px;color:#ffc084}
.discovery-xp{display:flex;flex-direction:column;align-items:center;justify-content:center;width:96px;height:96px;border-radius:50%;border:1px solid #d2a4ed;background:radial-gradient(ellipse,#713589,#241732);box-shadow:0 0 25px #ac54d650;margin:0 auto 14px}
.discovery-xp strong{font-size:33px;line-height:1.1;color:#f5dfff}.discovery-xp span{font-size:11px;color:#efd8ff}
.discovery-heading h1{font-size:32px;margin-bottom:10px}.discovery-heading>p:not(.eyebrow){font-size:14px;color:var(--muted)}
.discovery-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.discovery-actions button{font-size:13px;min-height:44px;padding:8px 14px}
.discovery-tier{margin:22px 0 28px}.discovery-tier h2{font-size:23px;margin-bottom:14px}.discovery-cards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.discovery-card{position:relative;margin:0;padding:8px;border:1px solid #443750;border-radius:12px;background:#121321;text-align:center;min-width:0;color:#e8dbe9;display:flex;flex-direction:column;align-items:center;gap:7px;transition:border-color .2s,box-shadow .2s}
.discovery-xp.has-waiting-xp strong{animation:waiting-xp 1.8s ease-in-out infinite}
.xp-added{position:absolute;z-index:2;bottom:42px;left:50%;white-space:nowrap;padding:5px 12px;border:1px solid #f3caff;border-radius:18px;background:#412055;color:#fff0ff;font-weight:800;font-size:19px;text-shadow:0 0 9px #dd86ff;box-shadow:0 0 22px #d580ff99;pointer-events:none;transform:translateX(-50%);animation:xp-rise 2s ease-out both}
@keyframes waiting-xp{0%,100%{opacity:1;text-shadow:0 0 16px #e1a3ff}50%{opacity:.4;text-shadow:none}}
@keyframes xp-rise{0%{opacity:0;transform:translate(-50%,12px) scale(.8)}18%,70%{opacity:1;transform:translate(-50%,-12px) scale(1)}100%{opacity:0;transform:translate(-50%,-38px) scale(1.04)}}
.discovery-card:disabled{opacity:1;cursor:default}.discovery-card:not(:disabled){border-color:#6b9650;cursor:pointer}.discovery-card:not(:disabled):hover,.discovery-card:focus-visible{border-color:#c8f29c;box-shadow:0 0 17px #93cb5544}.discovery-card.has-xp{border-color:#ac7be0;box-shadow:0 0 14px #a754d633}.discovery-card strong{font-size:13px}.discovery-card small{font-size:12px}.discovery-card progress{width:100%;height:10px;margin:0;accent-color:#b575ef}.discovery-card.just-fed{animation:card-fed .9s ease-out}.discovery-feedback{min-height:1.4em;color:#ecc8ff!important;margin:12px 0 6px}
@keyframes card-fed{50%{box-shadow:0 0 35px #d8a2ff;border-color:#f1d7ff;transform:translateY(-4px)}}
@media(prefers-reduced-motion:reduce){.discovery-card.just-fed,.discovery-xp.has-waiting-xp strong,.xp-added{animation:none}}
.discovery-cards img{display:block;width:100%;height:auto;max-height:178px;object-fit:contain;filter:brightness(.38);border-radius:7px}
.discovery-cards figcaption{font-size:12px;margin-top:7px;color:#e8dbe9}
@media(max-width:850px){.discovery-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:640px){.discovery-heading{margin:0 -16px 20px;padding:20px 14px}.discovery-heading h1{font-size:27px}.discovery-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.discovery-cards img{max-height:155px}.discovery-tier h2{font-size:21px}}

.duplicate-warning{margin:16px 0;padding:14px;border:1px solid #edae44;border-radius:12px;background:#352815;color:#ffe6b0}.duplicate-warning p{font-size:14px}
/* Guest receipts and operator corrections use the existing compact panels. */
.guest-note{border:1px solid #77604b;border-radius:12px;padding:12px 16px;margin:0 0 16px;background:#171b28;font-size:.88rem;line-height:1.45}
.guest-note p{margin:0 0 4px}.guest-note .quiet{padding-left:0}
#correction-form .form-grid{margin:12px 0}#correction-form input{width:100%;min-width:0}
/* Keep the same compact, read-only customer result when scanning from the album. */
.album-open #scan .scanner{display:flex;flex-direction:column;max-width:510px;padding:17px 20px}
.album-open .viewfinder{order:0;flex:none;height:240px;margin:0 0 14px}
.album-open #ocr-progress{order:1;margin:0 0 8px;padding:5px 9px;font-size:12px}
.album-open #ocr-message{margin:0}
.album-open .photo-actions{order:2;display:flex;flex-wrap:wrap;margin:0;gap:8px}
.album-open .photo-actions button{min-height:46px;flex:1;font-size:14px;padding:10px}
.album-open #receipt-form{order:3;margin-top:12px;padding-top:10px}
.album-open .scanner>label[for=campaign]{order:4;margin-top:16px}
.album-open #campaign,.album-open #no-campaign{order:5}
.album-open #receipt-form h3{font-size:16px;margin-bottom:3px}
.album-open #read-note{font-size:11px;line-height:1.35;margin-bottom:6px}
.album-open #receipt-form label{font-size:12px;line-height:1.3;margin:6px 0 3px}
.album-open #receipt-form input{font-size:14px;padding:7px 9px;min-height:36px;height:36px;opacity:1;color:var(--text)}
.album-open #receipt-form .form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 10px}
.album-open #receipt-form .xp-estimate{margin:10px 0;padding:7px 10px;gap:12px}
.album-open #receipt-form .xp-estimate strong{font-size:22px}
.album-open #receipt-form .xp-estimate span{font-size:12px}
@media(max-width:640px){.album-open #scan .scanner{padding:12px}.album-open .viewfinder{height:220px}.album-open .photo-actions{display:grid;grid-template-columns:1fr}}
#correction-form button{margin:8px 0 12px}
/* Navigation disponible dès la première visite, avant le premier scan. */
.receipt-entry .tabs{display:flex;margin:12px 0}

/* The poster scenery fills the viewport, including the sides of the scanner. */
body.receipt-entry{min-height:100vh;min-height:100svh;isolation:isolate;background:#100c1b}
body.receipt-entry::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#0b081619 0%,#0b081630 55%,#0b081673 100%),url('/decor-halloween.webp') center center/cover no-repeat}
.receipt-entry header{background:#100c1b85;border-bottom-color:#ba86d22e;backdrop-filter:blur(4px)}
.receipt-entry .poster-intro{background:none;border-bottom:0;text-shadow:0 2px 12px #000,0 0 35px #08040f}
.receipt-entry .scanner{background:linear-gradient(145deg,#25192cf2,#111421f5);box-shadow:0 18px 65px #0008;border-color:#a176b486}
.receipt-entry footer{background:#100c1bce;border-color:#ba86d23d;border-radius:14px 14px 0 0}
@media(max-width:640px){body.receipt-entry::before{background-position:center,58% center}}
/* Desktop crop starts in the illuminated ruins, beyond the dark left margin. */
.xp-confirm-summary{list-style:none;margin:20px 0;padding:0;max-height:45vh;overflow:auto}.xp-confirm-summary li{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.xp-confirm-summary span{color:var(--orange);white-space:nowrap}.xp-confirm-actions{display:flex;gap:12px;flex-wrap:wrap}.xp-confirm-actions button{flex:1;min-width:160px}#xp-confirm-dialog{max-height:90vh;overflow:auto}
@media(min-width:1000px){body.receipt-entry::before{background-size:auto,max(145vw,150vh) auto;background-position:center,right top}}

/* A newly validated receipt arrives above the reserve, then enters the potion. */
.xp-arrival-stage{height:100px;position:relative;display:flex;justify-content:center;align-items:center;z-index:2;pointer-events:none}
.xp-arrival-bubble{width:140px;min-height:84px;padding:12px 9px;border:2px solid #eac887;border-radius:50%;background:radial-gradient(ellipse at 35% 20%,#775a98,#39214f 70%);box-shadow:0 0 22px #c079ff66,inset 0 1px 8px #fff3;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;color:#ffe6a6}
.xp-arrival-bubble strong{font-size:25px;white-space:nowrap;line-height:1.2}.xp-arrival-bubble small{font-size:11px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f5e6ff}
.xp-arrival-status{max-width:210px;margin:10px auto 0;font-size:13px;line-height:1.4;color:#f3d89c;overflow-wrap:anywhere}.xp-arrival-status:empty{display:none}
@media(max-width:640px){.xp-arrival-stage{height:82px}.xp-arrival-bubble{width:108px;min-height:70px;padding:9px 6px}.xp-arrival-bubble strong{font-size:20px}.xp-arrival-bubble small{font-size:10px}.xp-arrival-status{max-width:114px;font-size:11px}}
@media(prefers-reduced-motion:reduce){.reserve-cauldron .potion-bubble,.reserve-cauldron .cauldron-title{animation:none}}

.reserve-cauldron .cauldron-button:disabled{opacity:1;cursor:wait}

#receipt-sent-dialog{margin:auto;text-align:center;width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:32px 25px;border:2px solid #c99a61;border-radius:22px;background:radial-gradient(ellipse at top,#46304c,#161625 75%);box-shadow:0 15px 70px #0009}
.receipt-sent-icon{display:grid;place-items:center;width:60px;height:60px;margin:0 auto 18px;border:1px solid #e8c790;border-radius:50%;background:#9b652c33;color:#ffdaa0;font-size:35px}
#receipt-sent-dialog h2{font-size:clamp(24px,5vw,31px);line-height:1.2;margin-bottom:16px;color:#ffe2b3}
#receipt-sent-dialog p{font-size:16px;line-height:1.5;color:#e0d5e7}
#receipt-sent-ok{min-width:160px;min-height:48px;margin-top:12px}

/* Only the enlarged photo scrolls; its close button always stays visible. */
#receipt-photo-dialog{margin:auto;padding:0;width:min(1100px,96vw);max-width:96vw;height:92vh;height:92dvh;max-height:92dvh;overflow:hidden;background:#171d2e}
#receipt-photo-dialog[open]{display:flex;flex-direction:column}
.receipt-photo-toolbar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:#171d2e}
#receipt-photo-title{font-size:22px;margin:0}
.receipt-photo-actions{display:flex;gap:10px;flex-shrink:0}
.receipt-photo-actions button{min-height:44px;padding:9px 15px;margin:0}
#receipt-photo-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:12px;background:#090c14}
#receipt-photo-image{display:block;max-width:none;max-height:none;margin:0 auto}
#receipt-photo-status{padding:12px;color:var(--muted)}
.space-identity{margin:16px 0 0;padding:9px 14px;border:1px solid var(--line);border-radius:10px;background:#141929;color:var(--green);font-size:14px;overflow-wrap:anywhere}
.space-identity:empty{display:none}.space-identity.admin-identity{color:var(--orange);border-color:#795638;background:#292019}
.stats-secondary{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat-quality small{display:block;margin-top:8px;font-size:12px;color:var(--muted)}
@media(max-width:850px){.stats-secondary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.receipt-photo-toolbar{flex-wrap:wrap;padding:10px 12px;gap:8px}#receipt-photo-title{font-size:18px}.receipt-photo-actions{margin-left:auto}.receipt-photo-actions button{font-size:14px;padding:8px 12px}#receipt-photo-scroll{padding:8px}}

#admin-receipts{margin-top:30px}
.admin-receipt-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}
.admin-receipt-tabs [aria-pressed="true"]{background:#35273f;border-color:var(--orange);color:var(--orange)}
#admin-refresh-status{min-height:1.5em;margin:8px 0 12px}
#admin-refresh-status.error{color:#ffb4ab}

.table-wrap tr.receipt-similar td{background:#f6d96b;color:#29200b;border-color:#c6a43c}
.receipt-similar td small,.receipt-similar td a,.receipt-similar td .quiet{color:#443615}
.receipt-similar .similarity-label{font-weight:700;margin-top:6px}

.duplicate-match{overflow-wrap:anywhere}.duplicate-match + .duplicate-match{border-top:1px solid #80623a;margin-top:14px;padding-top:14px}.duplicate-match h4{margin:10px 0;font-size:16px}

.review-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.review-actions button{min-width:0;margin:0;padding:12px 10px;white-space:normal}.review-actions .review-reject{background:#402934;border-color:#a26070;color:#ffc0c0}

.review-actions [data-approve]:disabled{background:#343643;border-color:#555867;color:#aaa9af;box-shadow:none;opacity:1;cursor:not-allowed}
.player-receipt-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0}
.player-receipt-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:112px;padding:16px 10px;border:2px solid #8b784c;border-radius:14px;background:#30291d;color:#ffe1a0;text-align:center}
.player-receipt-tab strong{font-size:1.8rem;line-height:1.1}
.player-receipt-tab.approved{background:#203b2b;border-color:#649674;color:#d1f2cc}
.player-receipt-tab.rejected{background:#48262e;border-color:#b76d7a;color:#ffd4da}
.player-receipt-tab[aria-pressed="true"]{outline:2px solid currentColor;outline-offset:3px}
.player-receipt-tab:focus-visible{outline:3px solid #fff;outline-offset:4px}
@media(max-width:480px){.player-receipt-tabs{gap:10px}.player-receipt-tab{padding:12px 5px;font-size:.85rem;min-height:108px}.player-receipt-tab strong{font-size:1.5rem}}

/* The real XP reserve is the sole focus of the album workbench. */
.album-workbench{display:flex;justify-content:center;margin:24px 0 30px}
.album-workbench .reserve-cauldron{width:100%;max-width:360px}
.album-workbench .cauldron-title{font-size:22px}
.album-workbench .cauldron-art{width:280px;height:238px;max-width:100%}
.album-workbench .cauldron-xp{top:64%;left:20%;right:20%;transform:translateY(-50%);flex-direction:column;align-items:center;gap:0;line-height:1.1}
.album-workbench .cauldron-xp strong{font-size:42px}
.album-workbench .cauldron-xp span{font-size:18px}
.album-workbench .cauldron-caption{font-size:14px}
@media(max-width:640px){.album-workbench .cauldron-art{width:240px;height:204px}.album-workbench .cauldron-xp strong{font-size:36px}.album-workbench .cauldron-xp span{font-size:16px}}
.physical-cards-link{text-align:center;padding:20px 12px 28px}.physical-cards-link a{color:var(--orange);font-size:18px;text-underline-offset:5px}.physical-cards-link p{margin:12px 0 0}.physical-cards-link a:focus-visible{outline:2px solid var(--orange);outline-offset:5px}

.reading-issues{padding:16px;margin:16px 0;border:1px solid #aa8348;border-radius:12px;background:#342b20;color:#ffe2b6}.reading-issues p{margin:10px 0 0}.reading-issues ul{margin:8px 0;padding-left:22px}.receipt-review-actions{display:flex;gap:12px;flex-wrap:wrap}.receipt-review-actions button{flex:1 1 200px}

/* Preview remains available at every tier, independently of XP allocation. */
.album-section figure.pending-card{margin:0;cursor:default}
.card .card-preview{display:flex;flex-direction:column;width:100%;padding:0;background:none;border:0;gap:5px;cursor:zoom-in}
.card .card-preview span{font-size:12px;color:var(--violet)}
.card figcaption{width:100%;text-align:center}
.card .card-allocate{width:100%;font-size:12px;padding:7px 6px;margin-top:8px}
.card .card-allocate:disabled{cursor:default}
#card-preview-dialog{width:min(760px,96vw);max-width:96vw;max-height:96dvh;padding:16px;background:#101420;overflow:auto}
.card-preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;position:sticky;top:-16px;background:#101420;padding:8px 0;z-index:1}
.card-preview-toolbar h2{font-size:24px;margin:0;letter-spacing:0}
.card-preview-toolbar button{flex-shrink:0}
#card-preview-image{display:block;width:100%;height:auto;max-height:calc(96dvh - 110px);object-fit:contain;filter:none;margin:auto}

.card-preview-toolbar .card-preview-close{width:44px;height:44px;padding:0;font-size:26px;line-height:1;border-radius:8px}

/* A fixed scenic background fills the album on both short and long pages. */
body.album-open{min-height:100vh;min-height:100svh;isolation:isolate;background:#100c1b}
body.album-open::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#0c091630,#0c091650 65%,#0c091673),url('/decor-halloween.webp') center center/cover no-repeat}
body.album-open header{background:#0b0e1bcc}
body.album-open .album-section{background:linear-gradient(135deg,#192031d9,#101522cf)}
body.album-open .physical-cards-link{background:#100d1bbb;border-radius:14px}
@media(max-width:640px){body.album-open::before{background-position:center,58% center}}

/* Player ticket history: scenery inspired by the XP poster and Halloween flyer. */
body.history-open{min-height:100vh;min-height:100svh;isolation:isolate;background:#090f1d}
body.history-open::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#080d1920,#080d1940),url('/decor-tickets-halloween-v1.png') center center/cover no-repeat}
body.history-open header{background:#090e1be6}
body.history-open #history .intro{text-shadow:0 2px 12px #000}
body.history-open #history .section-toolbar{background:#0d1421dc;border:1px solid #69502f;border-radius:12px;padding:14px 18px}
body.history-open #history .section-toolbar p{margin:0}
body.history-open #player-receipt-list{background:#101725eb;border:1px solid #77603c;border-radius:16px;padding:20px}
body.history-open #player-receipt-list h2{color:#ffe1ad}
body.history-open #history .guest-note{background:#101725ed}
@media(max-width:640px){body.history-open::before{background-position:center,18% center}body.history-open #player-receipt-list{padding:14px 10px}body.history-open #history .section-toolbar{padding:12px}}

.album-columns .remaining-section{grid-column:1/-1}.album-columns .remaining-section .cards{grid-template-columns:repeat(6,minmax(0,1fr))}@media(max-width:850px){.album-columns .remaining-section .cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:640px){.album-columns .remaining-section .cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Le repère visiteur reste lisible pendant son clignotement doux. */
.space-identity.visitor-identity{text-align:center;font-weight:700;animation:visitor-label 2.4s ease-in-out infinite;}
@keyframes visitor-label{0%,100%{color:var(--green);text-shadow:none}50%{color:#e4ffc9;text-shadow:0 0 10px #b5e58480}}
