/* Compact nonmodal atlas invitation. */
.battle-popup{position:fixed;inset:auto 24px 24px auto;width:min(390px,calc(100vw - 32px));max-height:calc(100dvh - 100px);margin:0;padding:0;border:1px solid #bb985b;border-radius:5px;background:#221c14;color:#fff1d1;overflow:auto;overscroll-behavior:contain;box-shadow:0 12px 40px #0007;font-family:inherit;z-index:100}
.battle-popup::backdrop{background:transparent}
.battle-shell{padding:8px 20px 0;background:linear-gradient(#20190edb,#1c1a13ed),url('assets/atlas-menu-paper.webp') center/cover;position:relative}
.battle-shell:before{content:'';position:absolute;inset:5px;border:1px solid #ba97592b;pointer-events:none}
.battle-top{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;letter-spacing:.12em;color:#dabc7d}
.battle-top button,.battle-footer button{min-height:44px;padding:6px 0 6px 12px;background:none;border:0;color:#d7c7a9;font:inherit;cursor:pointer;letter-spacing:0}
.battle-popup h2{margin:1px 0 0;text-align:center;font-size:25px;line-height:1.3;letter-spacing:-.05em;color:#ffedc4;font-weight:700}
.battle-popup h2 i{font-family:Georgia,serif;color:#b89860;font-weight:400;font-size:.75em;letter-spacing:0}
.battle-invitation{margin:6px 0 8px;text-align:center;color:#bdaa86;font-size:11px}
.battle-contenders{display:grid;grid-template-columns:1fr 25px 1fr;align-items:center;gap:3px;position:relative}
.battle-chef{text-align:center;min-width:0}
.battle-map{display:block;width:100%;height:102px;overflow:hidden;filter:saturate(.85);mask-image:radial-gradient(ellipse,#000 40%,transparent 73%)}
.battle-giuseppe .battle-map{filter:hue-rotate(22deg) saturate(.85)}
.battle-dish{margin:0;font-size:21px;font-weight:700;line-height:1.4;letter-spacing:-.06em;color:#f2d29a;text-shadow:0 1px 4px #000}
.battle-giuseppe .battle-dish{color:#c9dba5}
.battle-country{margin:4px 0 0;font-size:9px;letter-spacing:.03em;color:#baaa8c}
.battle-versus{position:relative;margin-top:-20px;color:#dcba7b;font:italic 18px Georgia,serif;text-align:center}
.battle-versus:before,.battle-versus:after{content:'';position:absolute;left:50%;width:1px;height:32px;background:linear-gradient(transparent,#b59457)}
.battle-versus:before{bottom:30px;transform:rotate(18deg)}
.battle-versus:after{top:30px;transform:rotate(18deg);background:linear-gradient(#b59457,transparent)}
.battle-live{display:flex;justify-content:center;align-items:center;gap:6px;margin:14px 0 12px;font-size:10px;color:#cfc2a7}
.battle-live span{width:5px;height:5px;border-radius:50%;background:#b6c88e}
.battle-actions{display:grid;grid-template-columns:1.3fr 1fr;gap:8px;position:relative}
.battle-actions a{display:flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:8px 5px;border-radius:3px;font-size:11px;text-decoration:none;font-weight:700;text-align:center}
.battle-watch{color:#211a11;background:#e3c18a;border:1px solid #e3c18a}
.battle-reserve{color:#d9c5a1;border:1px solid #ae8c5059;background:#ffffff03}
.battle-footer{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px;border-top:1px solid #bb97592b;font-size:10px;color:#b5a78e}
.battle-footer label{display:flex;align-items:center;gap:5px;min-height:44px;cursor:pointer}
.battle-footer input{width:14px;height:14px;margin:0;accent-color:#d6b47b}
.battle-popup :focus-visible{outline:2px solid #f0cc8f;outline-offset:3px}
body.battle-popup-open .visit-dock{display:none!important}
@media(max-width:700px){.battle-popup{inset:auto 16px 16px auto;width:min(360px,calc(100vw - 32px));max-height:min(58dvh,410px)}.battle-shell{padding:4px 15px 0}.battle-popup h2{font-size:23px}.battle-map{height:78px}.battle-invitation{margin:4px 0}.battle-dish{font-size:19px}.battle-live{margin:10px 0}.battle-footer{margin-top:6px}}
@media(max-height:600px){.battle-popup{max-height:calc(100dvh - 90px)}.battle-map{height:60px}.battle-shell{padding-top:0}.battle-invitation{margin:3px 0}.battle-live{margin:8px 0}.battle-footer{margin-top:6px}}
/* Food and whole-face portraits take priority over the atlas texture. */
.battle-chef{position:relative}
.battle-map{position:absolute;inset:0;width:100%;height:100%;opacity:.2;z-index:0;filter:saturate(.6);mask-image:linear-gradient(#000,transparent)}
.battle-portrait{position:relative;display:flex;align-items:center;justify-content:center;gap:7px;margin:3px 0 7px;font-size:11px;color:#e8d6b3}
.battle-portrait svg{width:39px;height:46px;display:block;border:1px solid #ad8a4e80;border-radius:4px;overflow:hidden}
.battle-food{position:relative;display:block;width:100%;height:110px;object-fit:cover;object-position:center 47%;border:1px solid #b5975b55;border-radius:5px;margin-bottom:7px}
.battle-dish,.battle-country{position:relative}
.battle-versus{margin-top:14px}
@media(max-width:700px){.battle-food{height:94px}.battle-portrait{margin-top:0;margin-bottom:5px}.battle-portrait svg{height:40px;width:34px}.battle-popup{max-height:min(58dvh,440px)}}
@media(max-height:650px){.battle-food{height:78px}.battle-portrait svg{height:34px;width:29px}.battle-popup{max-height:calc(100dvh - 90px)}}
.battle-food{height:112px;object-position:center 50%}
@media(max-width:700px){.battle-food{height:108px}}
@media(max-height:650px){.battle-food{height:100px}}
@media(max-width:700px){.battle-popup{max-height:min(58dvh,480px)}}
/* Larger, tightly framed real dishes. */
.battle-popup{width:min(420px,calc(100vw - 32px))}
.battle-food-frame{position:relative;height:144px;margin:0 0 8px;overflow:hidden;border:1px solid #c7a56a70;border-radius:7px;background:#11130f;box-shadow:0 6px 18px #0004}
.battle-food-frame .battle-food{width:100%;height:100%;max-width:none;object-fit:cover;object-position:center 48%;border:0;border-radius:0;margin:0;transform:scale(1.45)}
.battle-giuseppe .battle-food-frame .battle-food{transform:scale(1.4);object-position:center 50%}
.battle-dish{font-size:22px}
@media(max-width:700px){.battle-popup{width:min(360px,calc(100vw - 32px))}.battle-food-frame{height:132px}.battle-invitation{display:none}.battle-portrait{margin-top:6px}.battle-dish{font-size:19px}}
@media(max-height:650px){.battle-food-frame{height:112px}.battle-invitation{display:none}}
.battle-heinz .battle-food-frame .battle-food{transform:translateX(-6%) scale(1.4)}
/* Keep the atlas battle visible on mobile; frame only the food itself. */
.battle-shell{background:linear-gradient(#21190ed0,#1c1a13ee),url('assets/atlas-menu-paper.webp') center/cover}
.battle-cartography{display:grid;grid-template-columns:1fr 22px 1fr;align-items:center;height:72px;margin:5px 0 0;border-top:1px solid #d6b47b30;border-bottom:1px solid #d6b47b30;background:#140f0860}
.battle-cartography svg{width:100%;height:72px;display:block;overflow:hidden;mask-image:radial-gradient(ellipse,#000 38%,transparent 75%)}
.battle-cartography span{text-align:center;color:#d1ac6b;font:22px Georgia,serif}
.battle-chef>.battle-map{display:none}
.battle-portrait{margin:8px 0 7px}
.battle-food-frame{height:116px;border-color:#d3b57485;border-radius:5px}
.battle-food-macro{display:block;width:100%;height:100%;overflow:hidden}
.battle-popup{max-height:calc(100dvh - 90px)}
@media(max-width:700px){.battle-popup{max-height:min(64dvh,510px)}.battle-cartography,.battle-cartography svg{height:58px}.battle-portrait svg{height:32px;width:28px}.battle-food-frame{height:102px}.battle-live{display:none}.battle-portrait{margin:6px 0}.battle-country{font-size:8px}.battle-actions a{font-size:10px}.battle-actions{grid-template-columns:1.4fr 1fr}}
@media(max-height:650px){.battle-cartography,.battle-cartography svg{height:46px}.battle-food-frame{height:92px}.battle-popup{max-height:calc(100dvh - 80px)}}
/* Mobile atlas: make the two territories the visual backdrop, without shrinking food or faces. */
@media(max-width:700px){
  .battle-cartography{height:118px;margin:8px -10px 0;grid-template-columns:1fr 26px 1fr;background:linear-gradient(110deg,#7a2d252b,transparent 48%,#687b382b);border-color:#d6b47b66;box-shadow:inset 0 0 24px #100c0750}
  .battle-cartography svg{height:118px;mask-image:radial-gradient(ellipse,#000 62%,#000d 78%,transparent 98%);filter:saturate(1.15) brightness(1.15)}
  .battle-cartography span{font-size:27px;text-shadow:0 0 12px #dfb56a80}
  .battle-shell{background:linear-gradient(#21190eb8,#1c1a13e0),url('assets/atlas-menu-paper.webp') center/cover}
  .battle-popup{max-height:min(70dvh,550px)}
}
@media(max-width:700px) and (max-height:650px){.battle-cartography,.battle-cartography svg{height:90px}.battle-popup{max-height:calc(100dvh - 80px)}}
/* Shorter mobile invitation: keep food and portraits, reclaim duplicate labels and spacing. */
@media(max-width:700px){
  .battle-shell{padding-top:0}
  .battle-popup h2{font-size:21px;line-height:1.2;margin:0}
  .battle-cartography{height:94px;margin-top:3px}
  .battle-cartography svg{height:94px}
  .battle-portrait{margin:3px 0}
  .battle-country{display:none}
  .battle-footer{margin-top:0}
  .battle-food-frame{margin-bottom:4px}
}
@media(max-width:700px) and (max-height:650px){.battle-cartography,.battle-cartography svg{height:76px}}
/* Medieval armies clash on a relief map, within the existing compact banner. */
.battle-cartography{display:block;position:relative;isolation:isolate;overflow:hidden;background:#3b3226;border-color:#b9955a88}
.battle-cartography .medieval-battle-art{display:block;width:100%;height:100%;object-fit:cover;object-position:center 57%;filter:saturate(.9) contrast(1.06);animation:battlefield-breath 14s ease-in-out infinite alternate}
.battle-cartography:after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 16px #170c0780;background:linear-gradient(90deg,#6d15151a,transparent 40%,transparent 60%,#103b1a22)}
.battlefield-embers{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 65%,#ffab3925,transparent 24%);animation:battlefield-glow 5s ease-in-out infinite alternate}
.battle-versus{position:relative;height:68px;margin-top:12px}
.battle-versus:before{content:'';position:absolute;left:50%;top:0;bottom:0;width:3px;height:auto;background:linear-gradient(transparent,#d46b2b,#f5c477,#bf5421,transparent);transform:rotate(10deg);box-shadow:0 0 8px #bd572c77}
.battle-versus:after{content:'';position:absolute;left:50%;top:31px;width:14px;height:14px;background:radial-gradient(#ffeab3,#e3833255,transparent 70%);transform:translate(-50%,-50%);border:0}
@keyframes battlefield-breath{from{transform:scale(1)}to{transform:scale(1.035)}}
@keyframes battlefield-glow{from{opacity:.35}to{opacity:.85}}
@media(prefers-reduced-motion:reduce){.medieval-battle-art,.battlefield-embers{animation:none!important}}

/* Clear dish matchup label. */
.battle-versus{display:flex;align-items:center;justify-content:center;height:68px;margin-top:12px;color:#e4c58d;font:700 19px/1 Georgia,serif;letter-spacing:-.06em;text-shadow:0 2px 5px #000}
.battle-versus:before,.battle-versus:after{content:none;display:none}

/* Reuse existing space for the invitation, without changing popup dimensions. */
.battle-choice{color:#f0d29a;font-weight:700}
@media(max-width:700px){.battle-choice{display:block;position:absolute;top:17px;left:50%;transform:translateX(-50%);margin:0;font-size:11px;line-height:14px;white-space:nowrap}}

/* Quiet brass plaque between the chefs, matching the atlas palette. */
.chef-battle-burst{position:absolute;z-index:3;left:50%;top:17px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;width:84px;height:25px;box-sizing:border-box;border:1px solid #ad8b526b;border-radius:2px;background:linear-gradient(135deg,#30291ff5,#1e1b15f5);color:#d8bf90;font-size:10px;font-weight:600;line-height:1;letter-spacing:.02em;white-space:nowrap;box-shadow:inset 0 0 0 2px #d1af6510,0 2px 5px #0003}
@media(max-width:700px){.chef-battle-burst{top:8px;width:78px;height:23px;font-size:10px}.battle-heinz .battle-portrait{transform:translateX(-10px)}.battle-giuseppe .battle-portrait{transform:translateX(10px)}}

.chef-battle-burst{width:112px;height:36px;top:11px;display:block;padding:5px 3px;font-size:9px;line-height:1.35;font-weight:400;letter-spacing:0;text-align:center}.chef-battle-burst strong{font-size:11px;font-weight:700;color:#edce98}
@media(max-width:700px){.chef-battle-burst{width:105px;height:32px;top:3px;padding:3px;font-size:9px}.chef-battle-burst strong{font-size:10px}.battle-heinz .battle-portrait{transform:translateX(-10px)}.battle-giuseppe .battle-portrait{transform:translateX(10px)}}

/* Light parchment separates the invitation from the dark opening stage. */
.battle-popup{background:#f2e7d1;color:#392e20;border-color:#c7aa71;box-shadow:0 18px 55px #0009,0 0 0 3px #efddbb33}
.battle-shell{background:linear-gradient(145deg,#f9f2e4f5,#ebdcc0f7),url('assets/atlas-menu-paper.webp') center/cover}
.battle-shell:before{border-color:#99774733}
.battle-top{color:#785b32}.battle-top button,.battle-footer button{color:#65523a}
.battle-popup h2{color:#352a1d}.battle-popup h2 i{color:#8b382c}
.battle-invitation{color:#75634b}
.battle-portrait{color:#453923}.battle-portrait svg{border-color:#99774780}
.battle-dish{color:#85362b;text-shadow:none}.battle-giuseppe .battle-dish{color:#385135}
.battle-country{color:#74654d}.battle-versus{color:#88683a;text-shadow:none}
.battle-food-frame{border-color:#9b805a80;box-shadow:0 4px 12px #3b2e161c}
.battle-live,.battle-choice{color:#813529}
.battle-watch{background:#8c352b;color:#fff5df;border-color:#8c352b}
.battle-reserve{background:#faf4e966;color:#3d5035;border-color:#88774d88}
.battle-footer{color:#77664c;border-top-color:#94794b3d}
.battle-popup :focus-visible{outline-color:#8c352b}
.battle-popup .battle-versus{color:#88683a;text-shadow:none}

/* Round chef portraits retain the existing row height. */
.battle-popup .battle-portrait svg{width:46px;height:46px;flex:none;box-sizing:border-box;padding:2px;overflow:hidden;border:1px solid #9e4a40;border-radius:50%;background:#ead3c3;box-shadow:0 0 0 2px #9e4a401a}
.battle-popup .battle-giuseppe .battle-portrait svg{border-color:#4c6a47;background:#d9e1c8;box-shadow:0 0 0 2px #4c6a471a}
@media(max-width:700px){.battle-popup .battle-portrait svg{width:32px;height:32px}}

/* National flags and a restrained battle banner. */
.battle-popup h2{display:flex;align-items:center;justify-content:center;gap:10px}.battle-nationality{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.battle-flag{display:block;width:24px;height:18px;flex:none;box-shadow:0 1px 3px #35251533;border-radius:1px}.battle-flag-swiss{width:18px}
.chef-battle-burst{width:120px;height:38px;top:10px;padding:5px 5px;background:linear-gradient(130deg,#8a352c,#5d211e);border:1px solid #b59357;border-radius:2px;color:#f0d9aa;box-shadow:inset 0 0 0 2px #d5b87820,0 3px 7px #3d241a30;line-height:1.2}
.battle-burst-overline{display:block;font-size:9px;line-height:1.25;margin-bottom:2px;letter-spacing:-.02em}
.chef-battle-burst strong{display:block;font-size:13px;line-height:1.05;color:#fff1d2;font-weight:800;letter-spacing:-.03em;text-shadow:0 1px 1px #0005}
@media(max-width:700px){.battle-popup h2{gap:8px}.battle-nationality{gap:6px}.battle-flag{width:21px;height:16px}.battle-flag-swiss{width:16px}.chef-battle-burst{width:112px;height:34px;top:2px;padding:4px}.battle-burst-overline{font-size:8px;margin-bottom:2px}.chef-battle-burst strong{font-size:12px}}

/* Larger faces, with the added height reclaimed from surrounding spacing. */
.battle-popup .battle-portrait{margin:4px 0 3px}
.battle-popup .battle-portrait svg{width:54px;height:54px}
.battle-heinz .battle-portrait{transform:translateX(-8px)}.battle-giuseppe .battle-portrait{transform:translateX(8px)}
.chef-battle-burst{top:12px}
@media(max-width:700px){.battle-popup .battle-portrait{margin:1px 0}.battle-popup .battle-portrait svg{width:40px;height:40px}.battle-popup .battle-food-frame{margin-bottom:0}.battle-heinz .battle-portrait{transform:translateX(-10px)}.battle-giuseppe .battle-portrait{transform:translateX(10px)}.chef-battle-burst{top:4px}}
@media(max-width:360px){.battle-popup .battle-portrait{height:40px;font-size:9px;gap:4px}.battle-popup .battle-portrait svg{width:36px;height:36px}.battle-heinz .battle-portrait{transform:translateX(-12px)}.battle-giuseppe .battle-portrait{transform:translateX(12px)}.chef-battle-burst{width:100px}.battle-burst-overline{font-size:7.5px}.chef-battle-burst strong{font-size:11px}}
@media(max-width:360px){.battle-choice{left:56%;font-size:10px;letter-spacing:-.04em}}

/* One clear name beneath each portrait; compact the top row to retain the card size. */
.battle-popup .battle-top{height:22px}
.battle-popup .battle-top button{position:absolute;right:-5px;top:0;min-width:44px;min-height:44px;padding:0;z-index:2}
.battle-popup h2{box-sizing:border-box;width:100%;padding-right:32px}
.battle-popup .battle-portrait{flex-direction:column;justify-content:center;gap:2px;height:auto;min-height:76px;transform:none;font-size:18px;font-weight:800;line-height:20px;letter-spacing:-.03em;color:#81392c}
.battle-popup .battle-portrait>span{display:block;line-height:20px}
.battle-popup .battle-giuseppe .battle-portrait{color:#345432}
@media(max-width:700px){.battle-popup .battle-portrait{min-height:62px;font-size:16px;gap:2px;line-height:20px}.battle-choice{top:4px;left:54%}}
@media(max-width:360px){.battle-popup .battle-portrait{min-height:62px;font-size:16px;gap:2px}.battle-choice{top:4px;left:60%;font-size:10px;letter-spacing:-.04em}.battle-top{font-size:9px;letter-spacing:0}.battle-popup h2{font-size:19px;line-height:25.2px;gap:6px}.battle-nationality{gap:4px}}
