:root{--bg: #17131c;--panel: #221c2a;--panel2: #2c2436;--text: #eee7f5;--muted: #a99bb8;--accent: #e0573c;--gold: #f1c24b;--ok: #5fbf77;--bete: #6b8f3a;--paysan: #b07a3a;--moine: #4f6fb0;--demon: #a3324a;--sceau: #7a5aa8;--radius: 10px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}#app{max-width:1200px;margin:0 auto;padding:16px}h1{font-size:1.5rem;margin:0 0 12px}h2{font-size:1.05rem;margin:0 0 8px;color:var(--muted);font-weight:600}button{background:var(--panel2);color:var(--text);border:1px solid #ffffff22;border-radius:8px;padding:8px 14px;font:inherit;cursor:pointer}button:hover:not(:disabled){border-color:var(--gold)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);font-weight:600}input{background:var(--panel2);color:var(--text);border:1px solid #ffffff22;border-radius:8px;padding:8px;font:inherit}.panel{background:var(--panel);border-radius:var(--radius);padding:12px;margin-bottom:12px}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.topbar{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;justify-content:space-between;margin-bottom:12px}.topbar h1{margin:0}.dice{display:flex;gap:6px}.die{width:40px;height:40px;border-radius:8px;background:#fff;color:#222;font-weight:700;font-size:1.3rem;display:grid;place-items:center}.sum{font-size:1.4rem;font-weight:700;color:var(--gold)}.cards{display:flex;flex-wrap:wrap;gap:8px}.card{width:150px;min-height:120px;background:var(--panel2);border-radius:8px;border-top:5px solid var(--muted);padding:8px;font-size:.82rem;display:flex;flex-direction:column;gap:4px;position:relative}.card.bete{border-color:var(--bete)}.card.paysan{border-color:var(--paysan)}.card.moine{border-color:var(--moine)}.card.demon{border-color:var(--demon)}.card.sceau{border-color:var(--sceau)}.card .name{font-weight:700;font-size:.9rem;padding-right:30px}.card .num{position:absolute;top:6px;right:8px;font-weight:700;color:var(--gold)}.card .meta{color:var(--muted);font-size:.75rem}.card .cond{color:var(--accent);font-size:.78rem}.card.clickable{cursor:pointer}.card.clickable:hover{outline:2px solid var(--gold)}.card.selected{outline:3px solid var(--ok)}.card.hit{box-shadow:0 0 0 2px var(--gold),0 0 14px var(--gold)}.players{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}.player.active{outline:2px solid var(--accent)}.log{max-height:220px;overflow:auto;font-size:.85rem;color:var(--muted)}.log div:last-child{color:var(--text)}#modal[hidden]{display:none}#modal{position:fixed;top:0;right:0;bottom:0;left:0;background:transparent;z-index:40;display:flex;align-items:flex-end;justify-content:center;padding:16px 16px 104px}#modal .box,#selbar{background:var(--panel);border:2px solid var(--accent);border-radius:var(--radius);padding:14px 18px;max-width:520px;width:100%;box-shadow:0 8px 30px #000c}#modal .box.wide{max-width:940px;max-height:calc(100vh - 140px);overflow:auto}.opt-cards{margin-top:12px;justify-content:center}.opt-wrap{display:flex;flex-direction:column;align-items:center;gap:4px}.opt-owner{font-size:.8rem;color:var(--muted)}#modal .who{color:var(--accent);font-weight:700}#modal .opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}#selbar{position:fixed;left:50%;bottom:104px;transform:translate(-50%);width:calc(100% - 32px);z-index:9;display:flex;flex-direction:column;gap:10px}.blink{animation:blink .45s ease 2}@keyframes blink{50%{border-color:var(--gold);box-shadow:0 0 0 4px var(--gold),0 8px 30px #000c}}#app{padding-bottom:130px}.winner{font-size:1.3rem;color:var(--gold);font-weight:700}.hint{color:var(--muted);font-size:.85rem}.card .art{display:flex;justify-content:center;align-items:center;height:68px;margin:2px -8px;background:#0003}.card .art .sprite{width:60px;height:60px}.help-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;font-size:.9rem}.help-item{display:flex;gap:10px;align-items:flex-start}.help-item .sprite{flex:none}.tag{padding:0 6px;border-radius:4px;font-size:.8rem;color:#fff}.tag.bete{background:var(--bete)}.tag.paysan{background:var(--paysan)}.tag.moine{background:var(--moine)}.etal-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}.etal-head h2{margin:0}.deck{width:34px;height:44px;border-radius:5px;background:repeating-linear-gradient(45deg,var(--demon) 0 4px,#5a1a2a 4px 8px);border:2px solid var(--gold);display:grid;place-items:center;font-weight:700;font-size:.8rem;text-shadow:0 1px 2px #000;box-shadow:2px 2px #0008,4px 4px #0005}.souls{display:inline-flex;align-items:center;gap:4px}.die.rolling{animation:tumble .14s linear infinite}@keyframes tumble{0%{transform:rotate(0) translateY(0)}50%{transform:rotate(180deg) translateY(-6px)}to{transform:rotate(360deg) translateY(0)}}.soul-particle{position:fixed;pointer-events:none;z-index:30;filter:drop-shadow(0 0 4px #3fb0a8)}.souls-delta{position:fixed;pointer-events:none;z-index:31;font-weight:800;font-size:1.2rem;text-shadow:0 2px 4px #000}.souls-delta.gain{color:var(--gold)}.souls-delta.loss{color:#ff6b5b}.card.hit{animation:pulse 1s ease-in-out 2}@keyframes pulse{50%{box-shadow:0 0 0 3px var(--gold),0 0 24px var(--gold)}}.summon-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;cursor:pointer;background:radial-gradient(circle at center,#3a0d16ee,#0b0610f5 70%);animation:fadein .3s ease}.summon-overlay>*{grid-area:1 / 1}.pentagram{width:min(80vmin,560px);height:min(80vmin,560px);animation:spin 12s linear infinite;filter:drop-shadow(0 0 10px #ff3b3b) drop-shadow(0 0 30px #b3001b)}.pentagram circle,.pentagram polyline{fill:none;stroke:#ff4a3d;stroke-width:1.2;stroke-dasharray:100;stroke-dashoffset:100;animation:draw 1s ease forwards}.pentagram circle:nth-child(2){animation-delay:.2s}.pentagram polyline{animation-delay:.45s;stroke-linejoin:round}.summon-demon{animation:rise 1s 1.1s cubic-bezier(.2,1.4,.4,1) both;filter:drop-shadow(0 0 20px #ff3b3b)}.summon-demon .sprite{width:min(30vmin,200px);height:min(30vmin,200px)}.summon-text{align-self:end;margin-bottom:8vh;text-align:center;animation:fadein .5s 1.6s both;padding:0 16px}.summon-who{color:var(--muted)}.summon-name{font-size:2rem;font-weight:800;color:var(--gold);text-shadow:0 0 12px #ff3b3b}.summon-effect{max-width:420px;margin:4px auto 0}.summon-skip{align-self:start;justify-self:end;margin:16px;color:var(--muted);font-size:.8rem}@keyframes draw{to{stroke-dashoffset:0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{transform:scale(0) rotate(-30deg);opacity:0}to{transform:none;opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.pentagram,.card.hit{animation:none}}.dock{position:fixed;left:0;right:0;bottom:0;z-index:35;background:#120e17f2;border-top:2px solid var(--accent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:10px 16px;min-height:88px}.dock-name{font-weight:700;font-size:1.05rem;display:flex;align-items:center;gap:10px}.dock-souls{display:inline-flex;align-items:center;gap:3px;color:var(--gold)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.chip{font-size:.78rem;padding:2px 8px;border-radius:999px;background:var(--panel2);color:var(--muted)}.chip.done{background:#2d4a33;color:#bff0c8}.dock-dice{display:flex;align-items:center;gap:10px;justify-self:end}.die.empty{background:#ffffff14;border:2px dashed #ffffff33}.dock-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center}.dock-actions button.on{border-color:var(--gold);color:var(--gold)}button.big{padding:12px 20px;font-size:1.05rem}@media (max-width: 760px){.dock{grid-template-columns:1fr auto}.dock-who{grid-column:1;grid-row:1}.dock-dice{grid-column:2;grid-row:1}.dock-actions{grid-column:1 / -1;grid-row:2;justify-content:stretch}.dock-actions button.big{flex:1}#app{padding-bottom:190px}#modal{padding-bottom:200px}#selbar{bottom:200px}}.souls{display:flex;flex-wrap:wrap;gap:2px 8px;min-height:22px;margin-bottom:8px;align-items:center}.soul-group{display:inline-flex;gap:1px}.soul-group .sprite{filter:drop-shadow(0 0 2px #3fb0a888)}.no-souls{color:var(--muted);font-size:.8rem;font-style:italic}.player-name{color:var(--text);display:flex;align-items:center;gap:8px}.badge{font-size:.7rem;font-weight:600;padding:1px 7px;border-radius:999px;background:#3fb0a833;color:#9fe3dc}.home{max-width:1000px;margin:0 auto}.title{display:flex;align-items:center;gap:12px;font-size:2rem;margin:12px 0 18px}.home-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:12px}.home-grid .panel{margin:0}.code-input{text-transform:uppercase;letter-spacing:.25em;font-weight:700;width:120px;text-align:center}.link-input{flex:1;min-width:0}.room-code{color:var(--gold);letter-spacing:.15em}.lobby-players{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:6px}.lobby-players li{display:flex;align-items:center;gap:8px;background:var(--panel2);padding:6px 10px;border-radius:8px}.lobby-players li button{margin-left:auto}button.small{padding:2px 8px;font-size:.8rem}.lobby-start{justify-content:center;margin:16px 0}.error{background:#5a1a2a;border:1px solid var(--accent);padding:10px 14px;border-radius:8px;margin-bottom:12px}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:60;background:#5a1a2a;border:1px solid var(--accent);padding:10px 16px;border-radius:8px;box-shadow:0 6px 20px #000a;max-width:calc(100% - 32px)}.waiting{position:fixed;left:50%;bottom:104px;transform:translate(-50%);z-index:9;background:var(--panel);border:1px solid #ffffff22;border-radius:999px;padding:8px 16px;font-size:.9rem;box-shadow:0 6px 20px #000a;max-width:calc(100% - 32px)}.gallery-tools{position:sticky;top:0;z-index:5}.gallery-tools input{flex:1;min-width:160px}.gallery-tools button.on{border-color:var(--gold);color:var(--gold)}.copies{position:absolute;bottom:6px;right:8px;font-size:.75rem;color:var(--muted);font-weight:700}.card .copies+*{margin-bottom:0}a{color:var(--gold)}.victory-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;cursor:pointer;overflow:hidden;background:radial-gradient(circle at center,#4a3608ee,#0b0610f5 70%);animation:fadein .3s ease}.victory-overlay>*{grid-area:1 / 1}.victory-rays{position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;opacity:.35;animation:spin 20s linear infinite,fadein 1s ease;background:repeating-conic-gradient(from 0deg,#f1c24b 0deg 6deg,transparent 6deg 18deg);-webkit-mask:radial-gradient(circle,#000 0%,transparent 35%);mask:radial-gradient(circle,#000 0%,transparent 35%)}.victory-ring{width:min(70vmin,480px);height:min(70vmin,480px);filter:drop-shadow(0 0 10px #f1c24b)}.victory-ring circle{fill:none;stroke:#f1c24b;stroke-width:1.2;stroke-dasharray:100;stroke-dashoffset:100;animation:draw 1s ease forwards}.victory-ring circle:nth-child(2){animation-delay:.25s;stroke-dasharray:2 3}.victory-cup{animation:rise 1s .7s cubic-bezier(.2,1.4,.4,1) both,bob 2.4s 1.7s ease-in-out infinite;filter:drop-shadow(0 0 24px #f1c24b)}.victory-cup .sprite{width:min(32vmin,220px);height:min(32vmin,220px)}.victory-name{font-size:2.6rem;text-shadow:0 0 16px #f1c24b,0 2px 0 #000}.victory-overlay .summon-text{animation-delay:1.2s}.victory-overlay .summon-who{color:var(--gold);font-size:1.2rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700}.victory-spark{position:absolute;top:0;pointer-events:none}@keyframes bob{50%{transform:translateY(-10px)}}@media (prefers-reduced-motion: reduce){.victory-rays,.victory-cup{animation:none}}#modal .opts button.back,#modal .opts button.cancel{margin-left:auto}#modal .opts button.back+button.cancel{margin-left:0}#modal .opts button.back,#modal .opts button.cancel{color:var(--muted);border-style:dashed}#modal .opts button.cancel:hover{color:#ff8a7a;border-color:#ff8a7a}
