/* Kalam est la police locale déjà utilisée pour les enseignes de la ferme. */
@font-face{font-family:'FermeEntree';src:url('assets/fonts/kalam/Kalam-Bold.ttf') format('truetype');font-style:normal;font-weight:700;font-display:swap}
#world-loader{background-image:var(--farm-loading-image,url('assets/loading-domaine.jpg?v=20261030-mascotte'));background-position:center;background-size:cover;padding:24px 22px max(73px,calc(5vh + 45px));align-items:flex-end;z-index:3000}
#world-loader::before{background:linear-gradient(180deg,#14271736 0%,#18301d00 32%,#1027180d 48%,#102318b8 100%)}
#world-loader .world-loader-card{width:min(560px,calc(100% - 40px));padding:22px 18px 12px;border:0;border-radius:0;background:none;box-shadow:none;backdrop-filter:none}
#world-loader .world-loader-card h1.world-loader-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0;background:none;box-shadow:none}
#world-loader .world-loader-loading{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:9px;text-align:center}
#world-loader .world-loader-loading-copy{display:contents}
#world-loader .world-loader-loading-label{order:1;font-size:13px;letter-spacing:.035em;text-transform:none;color:#fff7df;text-shadow:0 2px 5px #132617}
#world-loader .world-loader-linear{order:2;display:flex;align-items:center;gap:11px;width:100%;height:auto;min-width:0}
#world-loader .world-loader-track{height:19px;flex:1;width:auto;margin:0;padding:3px;border:1px solid #f6edcf;border-radius:20px;background:#172b20b3;box-shadow:0 1px 6px #10221688;overflow:hidden}
#world-loader #world-loader-bar{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#3c701f,#91ac31 58%,#d6ce5c);box-shadow:0 0 6px #bed45988;transition:width .25s ease}
#world-loader #world-loader-percent{flex:none;min-width:34px;font:11px 'Segoe UI',Arial,sans-serif;color:#fff2c9;text-shadow:0 1px 4px #142918}
#world-loader #world-loader-status{order:3;margin:0;font-size:11px;min-height:14px;color:#eee8cf;text-shadow:0 1px 4px #142918}
/* La découpe appartient aux deux peaux décoratives : toute la boîte reste cliquable. */
#world-loader #world-loader-enter{--plank-edge:polygon(2.4% 6%,17% 3.5%,35% 4.5%,54% 2.8%,79% 4%,97% 6%,99% 17%,98.5% 48%,99.3% 82%,97% 94%,76% 96%,53% 94.5%,32% 97%,13% 95%,2.3% 94%,.8% 81%,1.4% 49%,.6% 18%);position:fixed;left:50%;top:min(calc(50% + 68px),calc(100% - 180px));z-index:2;transform:translate(-50%,-50%);transform-origin:50% 18%;display:flex;align-items:center;justify-content:center;gap:15px;width:min(430px,calc(100vw - 36px));min-height:96px;margin:0;padding:18px 28px;border:0;border-radius:15px;background:none;color:#452a18;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;filter:drop-shadow(4px 13px 12px #142a1e66);font:700 clamp(23px,2.3vw,28px)/1.2 'FermeEntree','Segoe Print',cursive;text-shadow:0 1px 0 #f1d6a8cc,0 -1px 1px #3a221a80;isolation:isolate;animation:farm-plank-sway 6.4s ease-in-out infinite;transition:filter .2s ease}
#world-loader #world-loader-enter::before{content:'';position:absolute;inset:0;z-index:-2;pointer-events:none;clip-path:var(--plank-edge);transform:translate(2px,6px);background:linear-gradient(100deg,#6e4a2b,#4d301d 55%,#765235)}
#world-loader #world-loader-enter::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;clip-path:var(--plank-edge);background-color:#b7925d;background-image:linear-gradient(110deg,#e8ba7626,#7e4e2320),url('assets/timber/color.jpg?v=20261101-surfaces-v1');background-size:auto 1100%;background-position:center 61%;background-repeat:no-repeat;box-shadow:inset 0 2px 3px #f7ddb075,inset 0 -4px 5px #6f462b70}
#world-loader #world-loader-enter:hover,#world-loader #world-loader-enter:focus-visible{animation:none;transform:translate(-50%,-50%);filter:drop-shadow(4px 15px 14px #142a1e77)}
#world-loader #world-loader-enter:active{animation:none;transform:translate(-50%,-50%);filter:drop-shadow(2px 7px 8px #142a1e66)}
#world-loader #world-loader-enter:focus-visible{outline:2px solid #f8e0a0;outline-offset:7px}
#world-loader #world-loader-enter .world-loader-tree{display:block;flex:none;width:39px;height:50px;background:#4b2f1b;-webkit-mask:url('assets/loading-ui/arbre-boiserie.png') center/contain no-repeat;mask:url('assets/loading-ui/arbre-boiserie.png') center/contain no-repeat;filter:drop-shadow(0 1px 0 #f4d8a7cc) drop-shadow(0 -1px 0 #3d251c80)}
#world-loader #world-loader-enter .world-loader-enter-text{position:relative;display:block;max-width:320px;padding-top:3px;text-align:left}
@keyframes farm-plank-sway{0%,100%{transform:translate(-50%,-50%) rotate(-.6deg)}50%{transform:translate(-50%,-50%) rotate(.6deg)}}
#world-loader #world-loader-note{font-size:11px;color:#f1e9cd;max-width:420px;min-height:16px;margin:13px auto 0;text-shadow:0 2px 4px #152b1b}
#world-loader .world-loader-guide{top:auto;right:28px;bottom:22px;width:225px;display:flex;flex-direction:column;transform:none}
#world-loader .world-loader-speech{width:100%;font-size:11px;padding:12px 13px;background:#f5ecd5;border-color:#b7a36f}
#world-loader .world-loader-speech strong{font-size:14px}
#world-loader .world-loader-mascot{width:210px;margin:6px 4px 0 0;max-height:46vh}
#world-loader[data-entered="true"] .world-loader-guide,#world-loader[data-entered="true"] .world-loader-orbit{display:none}
#world-loader.has-error .world-loader-loading-label{color:#ffe1a9}
@media(max-width:1000px){#world-loader .world-loader-guide{right:16px;bottom:16px;width:180px}#world-loader .world-loader-speech{font-size:10px}#world-loader .world-loader-mascot{width:170px;max-height:40vh}#world-loader .world-loader-card{width:min(490px,calc(100% - 40px));margin-right:90px}}
@media(max-width:850px){#world-loader .world-loader-guide{top:16px;bottom:auto}}
@media(max-width:850px) and (max-height:650px){#world-loader .world-loader-speech{display:none}#world-loader .world-loader-mascot{width:130px;max-height:25vh}}
@media(max-width:650px){#world-loader{padding:18px 12px max(70px,calc(env(safe-area-inset-bottom) + 45px));background-position:center}#world-loader .world-loader-card{width:calc(100% - 24px);margin:0;padding:16px 8px 8px}#world-loader .world-loader-guide{right:10px;bottom:auto;top:17px;width:120px}#world-loader .world-loader-speech{display:none}#world-loader .world-loader-mascot{width:120px;max-height:26vh;margin:0}#world-loader .world-loader-loading-label{font-size:12px}#world-loader #world-loader-note{font-size:10px;max-width:300px}#world-loader .world-loader-orbit{display:none}#world-loader #world-loader-enter{gap:13px;min-height:90px;padding:16px 24px;font-size:25px}#world-loader #world-loader-enter .world-loader-tree{width:36px;height:47px}}
@media(max-height:540px){#world-loader .world-loader-card{padding:10px;width:min(490px,calc(100% - 180px));margin-right:80px}#world-loader .world-loader-guide{top:12px;bottom:auto;width:120px}#world-loader .world-loader-speech{display:none}#world-loader .world-loader-mascot{width:120px;max-height:24vh}#world-loader #world-loader-note{display:none}#world-loader #world-loader-enter{min-height:84px;padding:13px 25px;font-size:26px}#world-loader #world-loader-enter .world-loader-tree{width:35px;height:46px}}
@media(max-width:650px) and (max-height:540px){#world-loader .world-loader-card{width:calc(100% - 20px);margin:0;padding:8px}#world-loader #world-loader-enter{min-height:82px;font-size:24px;gap:12px}#world-loader #world-loader-enter .world-loader-tree{width:34px;height:44px}}
@media(max-width:650px) and (max-height:360px){#world-loader .world-loader-guide{display:none}}
@media(max-width:380px){#world-loader #world-loader-enter{font-size:23px;padding:15px 23px;gap:11px}#world-loader #world-loader-enter .world-loader-tree{width:33px;height:43px}}
@media(prefers-reduced-motion:reduce){#world-loader,#world-loader #world-loader-bar,#world-loader #world-loader-enter{transition:none}#world-loader #world-loader-enter{animation:none;transform:translate(-50%,-50%)}}

/* Le panneau d'entrée reste statique : pas de recomposition continue de ses
   deux peaux découpées, d'une grande texture et de plusieurs ombres filtrées. */
#world-loader #world-loader-enter{animation:none;filter:none;transform:translate(-50%,-50%);transition:transform .16s ease}
#world-loader #world-loader-enter:hover,#world-loader #world-loader-enter:focus-visible{animation:none;filter:none;transform:translate(-50%,-50%) translateY(-2px)}
#world-loader #world-loader-enter:active{filter:none;transform:translate(-50%,-50%)}
#world-loader #world-loader-enter .world-loader-tree,#world-loader .world-loader-guide{filter:none}
#world-loader .world-loader-orbit span{animation:none;opacity:0}
