@font-face{font-family:FiatLuxSerif;src:url('/joueur/fiatlux/alegreya.woff2')} .fl{position:fixed;inset:0;margin:auto;width:100vw;max-width:520px;height:100dvh;min-height:568px;overflow:auto;background:radial-gradient(circle at 50% -8%,#ffd98a 0,#ef8b72 18%,#236e88 46%,#102d5c 78%,#081735 100%);color:#fff7df;font-family:FiatLuxSerif,Georgia,serif;padding:18px 16px;box-shadow:inset 0 0 90px #ffcf6b33;box-sizing:border-box}.fl header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.fl h1{font-size:27px;margin:0;letter-spacing:.04em}.fl button{font:inherit;border:1px solid #a88b49;border-radius:8px;background:#19254a;color:#f6edcf;padding:8px 12px}.fl .sub{color:#fff1c2;text-shadow:0 2px 8px #153b62aa;text-align:center;margin:4px 0 14px}.fl .card{background:#151f40cc;border:1px solid #605b53;border-radius:16px;padding:14px;margin:10px 0}.fl .levels{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.fl .levels button{padding:10px 0}.fl .levels button.done{background:#8e7133}.fl .levels button.locked{opacity:.35}.fl .board{display:grid;width:100%;max-width:none;margin:14px auto;border:4px solid #7d693f;box-shadow:0 0 30px #e6bd4b22}.fl .cell{aspect-ratio:1;border:0;border-radius:0;padding:0;position:relative;background:linear-gradient(145deg,#fff5c7,#eac56c);color:#152042;box-shadow:inset 0 0 0 1px #fff8c966;font-size:18px}.fl .cell.black{background:linear-gradient(145deg,#17325c,#0a1b43);color:#ffd978;box-shadow:inset 0 0 0 1px #6ec6d055}.fl .cell.lit{background:radial-gradient(circle at 50% 45%,#fff9cf 0,#f8dc72 46%,#eaa54b 100%);box-shadow:inset 0 0 16px #fff6a8aa}.fl .cell.error{box-shadow:inset 0 0 0 3px #c65258}.fl .cell.bulb:before{content:'✦';font-size:27px;color:#b17a24;text-shadow:0 0 10px #fff3a0}.fl .cell.mark:before{content:'·';font-size:32px;color:#876f43}.fl .actions{display:flex;gap:7px;justify-content:center}.fl .message{text-align:center;min-height:26px;color:#f5d879}.fl .rules{line-height:1.45;color:#e0d5b4}.fl .primary{background:#d8a83d;color:#101936;border:0;font-weight:bold}.fl .small{font-size:13px;color:#b9af91}.fl .back{font-size:22px;padding:3px 10px}

@font-face{font-family:FLDisplay;src:url('/joueur/filling/grenzegotisch-600.woff2') format('woff2');font-weight:600;font-display:swap}
.fl h1{font-family:FLDisplay,Georgia,serif;font-size:34px;letter-spacing:.07em;color:#fff4c2;text-shadow:0 2px 0 #7c4527,0 0 18px #ffd66b}
.fl .board{box-sizing:border-box;border:5px solid #edb958;border-radius:5px;overflow:hidden;background:#071b36;box-shadow:0 5px 0 #6e3f27,0 12px 35px #03102999,0 0 34px #ffd66b55}
.fl .cell{isolation:isolate;overflow:hidden;transition:background .16s ease,box-shadow .16s ease,filter .16s ease}
.fl .cell:not(.black):not(.lit){background-color:#315d6b;background-image:repeating-linear-gradient(0deg,#ffffff0a 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,#071b3633 0 1px,transparent 1px 5px),linear-gradient(145deg,#477887,#244c61);box-shadow:inset 0 0 0 1px #90c2c755,inset 2px 2px 7px #b8e4d733,inset -3px -3px 8px #06172f88}
.fl .cell.lit{background-color:#ffd865;background-image:repeating-linear-gradient(0deg,#fff9ca22 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,#b56a1e12 0 1px,transparent 1px 5px),radial-gradient(circle at 45% 40%,#fffde4 0,#ffe88d 42%,#efa43d 100%);box-shadow:inset 0 0 16px #fffde0,inset 0 0 0 1px #fff5b8;filter:saturate(1.15)}
.fl .cell.black{background-color:#101d38;background-image:repeating-linear-gradient(35deg,#ffffff0a 0 1px,transparent 1px 6px),repeating-linear-gradient(-35deg,#00000020 0 1px,transparent 1px 7px),linear-gradient(145deg,#25365b,#0c1733);box-shadow:inset 0 0 0 1px #7187a244,inset 3px 3px 7px #8290a51f,inset -3px -3px 8px #020817}
.fl .cell.clue{font-family:FLDisplay,Georgia,serif;font-size:clamp(22px,7vw,32px);font-weight:600;line-height:1;color:#ffe69a;text-shadow:0 2px 0 #30160d,0 0 10px #e8a83888}
.fl .cell.bulb:before{color:#fff6ad;text-shadow:0 0 3px #fff,0 0 10px #fff27a,0 0 22px #ffb53f;font-size:clamp(24px,8vw,38px)}
.fl .cell.mark:before{color:#d3e3d9;text-shadow:0 1px 2px #07162d;font-size:clamp(28px,9vw,42px)}
.fl .cell.error{z-index:2;box-shadow:inset 0 0 0 4px #ff304f,inset 0 0 18px #ff183caa;animation:fl-impossible .72s ease-in-out infinite alternate}
.fl .cell.error.bulb:before{color:#fff;text-shadow:0 0 4px #fff,0 0 12px #ff183c,0 0 24px #ff183c}
.fl .message.impossible{color:#fff;background:#a41632;border:1px solid #ff6c7f;border-radius:9px;padding:5px 8px;font-weight:800;text-shadow:0 1px 2px #5d0717;box-shadow:0 0 18px #ff244655}
@keyframes fl-impossible{from{filter:saturate(1)}to{filter:saturate(1.5) brightness(1.16)}}

.fl .cell.clue{container-type:inline-size;display:grid;place-items:center;padding:0}.fl .cell.clue .clue-number{display:block;font-size:clamp(34px,84cqi,54px);font-weight:600;line-height:.82;letter-spacing:-.04em;transform:translateY(-.015em)}
.fl .cell.bulb:before{content:'✦';position:absolute;inset:12%;z-index:3;display:grid;place-items:center;border-radius:50%;font-size:clamp(24px,8vw,38px);line-height:1;color:#fffbd0;background:radial-gradient(circle at 40% 32%,#fff 0 9%,#ffe66d 25%,#e57a20 66%,#713016 100%);border:2px solid #fff2a0;box-shadow:0 2px 5px #38130caa,0 0 0 2px #9e4b20,0 0 17px #fff073;text-shadow:0 1px 2px #9b3d13}
.fl .cell.error.bulb:before{background:radial-gradient(circle at 40% 32%,#fff 0 8%,#ff8c92 27%,#d9163d 67%,#620818 100%);border-color:#fff;box-shadow:0 0 0 3px #ff163f,0 0 18px #ff163f;color:#fff}
.fl .board.whatif{border-color:#c99cff;box-shadow:0 5px 0 #4b2e67,0 0 0 3px #8f5cc8,0 0 30px #ba79ff99}
.fl .actions{flex-wrap:wrap}.fl .actions .whatif{border-color:#d2adff;background:#533477;color:#fff}.fl .actions .whatif.keep{background:#9860c6}
.fl .message.hypothesis{color:#f0d8ff;font-weight:800;letter-spacing:.04em;text-shadow:0 0 12px #bd78ff}

/* Accueil, victoire et classements */
.fl .fl-hero{position:relative;display:flex;align-items:center;gap:16px;margin:8px 0 18px;padding:18px;border:1px solid #ffd97588;border-radius:22px;background:linear-gradient(145deg,#fff1b92b,#132d59cc);box-shadow:0 12px 35px #03102a88,inset 0 0 30px #ffc95d1c;overflow:hidden}
.fl .fl-hero:after{content:'';position:absolute;width:170px;height:170px;right:-75px;top:-95px;border-radius:50%;background:#ffd467;box-shadow:0 0 45px #ffd467aa;opacity:.75}
.fl .fl-hero img{position:relative;z-index:1;width:88px;height:88px;border-radius:21px;box-shadow:0 8px 20px #020b1e99,0 0 0 2px #ffe49a}
.fl .fl-hero>div{position:relative;z-index:1}.fl .fl-hero .eyebrow{font:600 10px FLDisplay,serif;letter-spacing:.16em;color:#ffd986}
.fl .fl-hero h2{margin:3px 0 0;font:600 44px/.9 FLDisplay,serif;color:#fff7d2;text-shadow:0 2px 0 #6e311b,0 0 16px #ffcf61}
.fl .fl-hero p{margin:8px 0 0;font-size:17px;color:#fff0bd;font-style:italic}
.fl .home-pitch{margin:0 8px 16px;text-align:center;font-size:16px;line-height:1.45;color:#fff7df;text-shadow:0 2px 8px #06152f}
.fl .home-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:14px}
.fl .home-stats span{display:flex;flex-direction:column;align-items:center;padding:10px 4px;border:1px solid #87cbd05c;border-radius:12px;background:#10284ecc}
.fl .home-stats b{font:600 26px/1 FLDisplay,serif;color:#ffe185}.fl .home-stats small{margin-top:5px;font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#b9d8d5;text-align:center}
.fl button.grand{width:100%;min-height:58px;font-size:18px;box-shadow:0 5px 0 #75451d,0 9px 24px #020a1f88}
.fl .home-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.fl .home-actions button{min-height:46px}
.fl .home-note{margin:14px 8px 0;text-align:center;font-size:12px;line-height:1.4;color:#cbded8}
.fl .levels.map{margin-top:6px}.fl .levels.map button{display:flex;flex-direction:column;align-items:center;gap:3px;font:600 20px FLDisplay,serif}.fl .levels.map small{font:10px Georgia,serif;color:#a9c8c9}.fl .levels.map button.done small{color:#fff0b8}

/* Onde de lumière sur la grille. */
.fl .board.victory{pointer-events:none;animation:fl-board-glory 1.25s ease-out both}
.fl .board.victory .cell.lit{animation:fl-cell-glory .9s cubic-bezier(.18,.8,.3,1) var(--d) both}
.fl .board.victory .cell.bulb:before{animation:fl-bulb-glory 1.15s cubic-bezier(.2,.8,.25,1) var(--d) both}
@keyframes fl-cell-glory{0%{filter:brightness(1)}45%{filter:brightness(2.1) saturate(1.3);transform:scale(.88)}100%{filter:brightness(1.15);transform:scale(1)}}
@keyframes fl-bulb-glory{0%{transform:scale(1) rotate(0)}45%{transform:scale(1.55) rotate(35deg);box-shadow:0 0 8px #fff,0 0 28px #fff36d,0 0 50px #ff9c2e}100%{transform:scale(1) rotate(90deg)}}
@keyframes fl-board-glory{0%{box-shadow:0 5px 0 #6e3f27,0 12px 35px #03102999}55%{box-shadow:0 0 0 5px #fff5ad,0 0 70px #ffe76e}100%{box-shadow:0 5px 0 #6e3f27,0 0 38px #ffe76eaa}}

/* Cartouche de victoire. */
.fl .win-veil,.fl .help-veil{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:22px;background:#071531dd;backdrop-filter:blur(7px);opacity:0;transition:opacity .35s ease}
.fl .win-veil.show,.fl .help-veil{opacity:1}.fl .win-rays{position:absolute;width:520px;height:520px;border-radius:50%;background:repeating-conic-gradient(from 0deg,#ffd75a33 0 8deg,transparent 8deg 18deg);animation:fl-rays 18s linear infinite}
@keyframes fl-rays{to{transform:rotate(360deg)}}
.fl .win-card{position:relative;width:min(330px,100%);padding:30px 20px 24px;text-align:center;border:2px solid #ffe59a;border-radius:24px;background:radial-gradient(circle at 50% 0,#fff4b8 0,#e99a48 21%,#163a68 58%,#0a1c3f 100%);box-shadow:0 0 0 5px #9c5828,0 20px 60px #000b;transform:translateY(28px) scale(.86);opacity:0;animation:fl-win-card .72s cubic-bezier(.16,.9,.25,1) .12s forwards}
@keyframes fl-win-card{to{transform:none;opacity:1}}
.fl .win-symbol{font-size:74px;line-height:1;color:#fffbd3;text-shadow:0 0 8px #fff,0 0 30px #ffe15d;animation:fl-star 1.4s ease-in-out infinite alternate}
@keyframes fl-star{to{transform:scale(1.1) rotate(12deg)}}
.fl .win-kicker,.fl .result-kicker{font:600 11px FLDisplay,serif;letter-spacing:.18em;color:#ffe08a}.fl .win-card h2{margin:7px 0;font:600 37px/1 FLDisplay,serif;color:#fff8dc}
.fl .win-time{margin:10px 0 20px;font:600 48px/1 FLDisplay,serif;color:#fff;text-shadow:0 0 16px #ffd866}

/* Résultat et classements. */
.fl .result-card{padding:18px;text-align:center;border:2px solid #ffe29a;border-radius:20px;background:linear-gradient(150deg,#1b4972,#0b2048);box-shadow:0 8px 0 #7c4b27,0 18px 38px #02091699}
.fl .result-time{font:600 58px/1 FLDisplay,serif;color:#fff6bd;text-shadow:0 0 18px #ffd35d;margin:7px 0}.fl .result-rank{font-size:15px;color:#d8eee9}
.fl .ranking-list{margin-top:16px;padding:13px;border:1px solid #82c6c966;border-radius:16px;background:#0b2145dd;box-shadow:0 10px 28px #02091988}
.fl .ranking-list h3{margin:0 0 10px;font:600 24px FLDisplay,serif;color:#ffe08a;text-align:center}
.fl .rank-row{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:8px;min-height:40px;padding:4px 8px;border-top:1px solid #8fc5c62c;color:#dcece8}
.fl .rank-row:first-of-type{border-top:0}.fl .rank-row b{font:600 20px FLDisplay,serif;color:#f4c85d}.fl .rank-row time{font-weight:800;color:#fff1b0}.fl .rank-row.mine{border-radius:8px;background:#e5a846;color:#13284a}.fl .rank-row.mine b,.fl .rank-row.mine time{color:#13284a}
.fl .ranking-list .empty{text-align:center;color:#b9cfcc}.fl .result-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px}.fl .result-actions .primary{grid-column:1/-1}
.fl .help-card{position:relative;width:min(340px,100%);box-shadow:0 18px 50px #000b}.fl .help-card h2{font:600 34px FLDisplay,serif;color:#ffe18a;margin:0}
@media (prefers-reduced-motion:reduce){.fl .board.victory,.fl .board.victory .cell,.fl .board.victory .cell.bulb:before,.fl .win-rays,.fl .win-card,.fl .win-symbol{animation-duration:.01s!important}}

/* Accueil compact : le tableau des médailles prend la place du texte de présentation */
.fl .fl-hero{gap:12px;margin:2px 0 10px;padding:10px 14px}.fl .fl-hero img{width:60px;height:60px;border-radius:15px}.fl .fl-hero h2{font-size:34px}.fl .fl-hero p{margin:4px 0 0;font-size:15px}
.fl .home-stats{margin-bottom:10px}.fl .home-stats span{padding:6px 4px}.fl .home-stats b{font-size:22px}.fl button.grand{min-height:50px}.fl .home-actions{margin-top:9px}.fl .home-actions button{min-height:42px}.fl .home-note{margin:8px 8px 0}
.fl .board{margin-left:auto;margin-right:auto}
@media (max-height:600px){.fl .home-note{display:none}}
/* Tutoriel */
.fl .tuto{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.fl .tuto .eyebrow{font:600 11px FLDisplay,serif;letter-spacing:.16em;color:#ffd986}
.fl .tuto .titre-tuto{margin:0;font:600 28px/1 FLDisplay,serif;color:#fff7d2;text-shadow:0 2px 0 #6e311b,0 0 14px #ffcf61}
.fl .tuto .tuto-texte{margin:2px 6px;font-size:15px;line-height:1.35;color:#fff7df;text-shadow:0 2px 8px #06152f}
.fl .tuto .points{display:flex;gap:7px}.fl .tuto .points i{width:8px;height:8px;border-radius:50%;background:#ffffff40}.fl .tuto .points i.on{background:#ffd467;box-shadow:0 0 8px #ffd467}
.fl .tuto .row{display:grid;grid-template-columns:1fr 1fr;gap:9px;width:100%}.fl .tuto .row button{min-height:44px}
.fl .board.mini{margin:6px auto}.fl .board.mini .cell{pointer-events:none}.fl .cell.focus{outline:3px solid #ffd467;outline-offset:-3px;z-index:2}
.fl button:disabled{opacity:.4}
/* Cases éteintes bien claires, murs presque noirs (demande de Stan, 2026-11-02). */
.fl .cell:not(.black):not(.lit){background-color:#6f9fac;background-image:repeating-linear-gradient(0deg,#ffffff10 0 1px,transparent 1px 4px),linear-gradient(145deg,#8ab9c3,#5a8c9b);box-shadow:inset 0 0 0 1px #d6f0f3aa,inset 2px 2px 6px #ffffff40,inset -2px -2px 6px #0a2a3a55}
.fl .cell.black{background-color:#05070e;background-image:linear-gradient(145deg,#0d1220,#02030a);box-shadow:inset 0 0 0 2px #000,inset 0 0 0 3px #3a4660}
.fl .cell.mark:before{color:#0d3140;text-shadow:0 1px 0 #ffffff66}
