/* September revision: travel map, local icons, chat companion. */
.gallery-row{align-items:flex-start}
body:has(#sec-ai.active) .to-core{display:none}
.city-hologram button:focus-visible,.map-city-list button:focus-visible,.map-controls button:focus-visible,.robot-pet:focus-visible{outline:2px solid var(--orange);outline-offset:4px}
.media-event{flex:0 0 100%;width:100%;grid-column:1/-1;display:flex;align-items:center;gap:20px;margin:22px 0 8px;color:var(--orange);font:600 15px var(--f-body);letter-spacing:.12em}
.media-event::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,var(--orange),transparent)}
.media-event:first-child{margin-top:0}
#sec-ai .ai-body{position:relative;padding-right:71px}
#sec-ai .ai-chat{border-color:var(--cyan);box-shadow:0 0 24px #38e8ff18,inset 0 0 40px #38e8ff08}
#sec-ai .ai-toolbar{border-bottom-color:#38e8ff66}
#sec-ai .ai-input textarea{min-width:0;border-color:#38e8ff80}
#sec-ai .ai-status:empty{display:none}
.robot-pet{position:absolute;right:18px;bottom:14px;width:106px;border:0;padding:0;background:none;filter:drop-shadow(0 0 12px #38e8ff45);z-index:5;cursor:pointer}
.robot-pet svg{display:block;width:100%;overflow:visible}
.bot-float{animation:botHover 3.3s ease-in-out infinite;transform-origin:55px 80px}
.bot-eyes{animation:botBlink 5s infinite;transform-origin:55px 52px}
.bot-shadow{fill:#38e8ff22;animation:botShadow 3.3s ease-in-out infinite;transform-origin:center}
.bot-arm{transform-origin:32px 90px}
.robot-pet:hover .bot-arm,.robot-pet.greeting .bot-arm{animation:botWave .4s ease-in-out 6 alternate}
.bot-bubble{position:absolute;right:0;bottom:100%;width:155px;color:var(--cyan);background:#061321;border:1px solid #38e8ff80;padding:9px;font:11px var(--f-mono);opacity:0;transition:opacity .2s;pointer-events:none}
.robot-pet.greeting .bot-bubble{opacity:1}
.ai-thinking .bot-signal{animation:aiBlink .6s infinite}
.ai-thinking .bot-float{animation-duration:1.2s}
@keyframes botHover{50%{transform:translateY(-7px) rotate(2deg)}}
@keyframes botBlink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}
@keyframes botShadow{50%{transform:scaleX(.8);opacity:.5}}
@keyframes botWave{to{transform:rotate(65deg)}}
.map-body{display:flex;flex-direction:column;gap:16px}
.map-heading,.map-footer{display:flex;justify-content:space-between;align-items:center;gap:16px}
.map-kicker{color:var(--orange);font:10px var(--f-mono);letter-spacing:.18em}
.map-heading h3{font:600 clamp(18px,2vw,25px) var(--f-body);margin-top:7px}
#mapCount,.map-footer{font:11px var(--f-mono);color:var(--muted)}
.travel-map{position:relative;flex:1;min-height:420px;overflow:hidden;border:1px solid #38e8ff55;background:radial-gradient(ellipse at 50% 45%,#12334b88,transparent 65%),#040e1bbb;box-shadow:inset 0 0 55px #38e8ff09;touch-action:none;outline:none;cursor:grab}
.travel-map:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.travel-map.dragging{cursor:grabbing}
.travel-map svg{display:block;width:100%;height:100%;position:absolute;inset:0}
.map-land{fill:#103346;stroke:#38e8ff;stroke-width:1.2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px #38e8ff33)}
.map-grid{stroke:#38e8ff15;stroke-width:.7;fill:none;vector-effect:non-scaling-stroke}
.map-label{fill:#51798c;font:12px var(--f-mono);letter-spacing:5px;pointer-events:none}
.map-marker{cursor:pointer;outline:none}
.map-marker .pin{fill:#ff9f1c;stroke:#ffda96;stroke-width:1.2}
.map-marker .pulse{fill:none;stroke:#ff9f1c;animation:mapPing 2.5s ease-out infinite;transform-box:fill-box;transform-origin:center}
.map-marker text{fill:#d8edf6;stroke:#03111e;stroke-width:4;paint-order:stroke;font:600 13px var(--f-body)}
.map-compact .map-marker text{display:none}
.map-compact .map-marker:focus text,.map-compact .map-marker:hover text{display:block}
.map-marker:hover .pin,.map-marker:focus .pin{fill:#fff;stroke:#38e8ff;filter:drop-shadow(0 0 6px #38e8ff)}
@keyframes mapPing{0%{r:8;opacity:.9}100%{r:22;opacity:0}}
.map-controls{position:absolute;right:16px;top:16px;display:grid;gap:6px;z-index:2}
.map-controls button,.map-city-list button{border:1px solid #38e8ff55;background:#061421e8;color:var(--cyan);font:13px var(--f-mono);padding:10px 14px;cursor:pointer}
.map-controls button:hover,.map-city-list button:hover{border-color:var(--orange);color:var(--orange)}
.map-controls button:disabled{opacity:.3;cursor:default}
.map-scale{position:absolute;bottom:14px;left:16px;color:#75a2b6;font:10px var(--f-mono);pointer-events:none}
.map-empty{position:absolute;left:20px;top:18px;width:min(270px,55%);font:12px/1.6 var(--f-body);color:var(--muted);pointer-events:none}
.map-city-list{display:flex;gap:8px;flex-wrap:wrap}
.city-hologram{width:min(1080px,calc(100% - 36px));max-height:88%;padding:26px;margin:auto;color:var(--text);background:#071425f5;border:1px solid var(--cyan);box-shadow:0 0 60px #38e8ff33;overflow:auto}
.city-hologram[open]{animation:cityHologram .65s cubic-bezier(.2,.8,.3,1) both}
.city-hologram::backdrop{background:#010710b8;backdrop-filter:blur(7px)}
.city-head{display:flex;justify-content:space-between;gap:15px;align-items:center;border-bottom:1px solid #38e8ff55;padding-bottom:18px}
.city-head h3{font:700 28px var(--f-body);margin-top:8px;color:var(--cyan)}
.city-head button,.city-viewer button{color:var(--cyan);border:1px solid #38e8ff66;padding:8px 12px;background:#061421;cursor:pointer}
#cityDescription{color:var(--muted);margin:18px 0;line-height:1.6}
.city-hologram .tile{cursor:pointer;background:#06101c}
.city-hologram .tile img{width:100%;height:100%;object-fit:cover}
.city-viewer{position:fixed;inset:0;background:#020913fa;z-index:20;display:flex;align-items:center;justify-content:center;gap:14px;padding:60px 20px 30px}
.city-viewer[hidden]{display:none}
.city-viewer figure{max-width:82%;text-align:center;margin:0}
.city-viewer img{max-width:100%;max-height:65vh;object-fit:contain}
.city-viewer figcaption{font:12px var(--f-body);margin-top:12px}
.city-viewer .viewer-close{position:absolute;right:18px;top:16px}
@keyframes cityHologram{from{opacity:0;transform:perspective(1200px) rotateY(22deg) scale(.88)}to{opacity:1;transform:perspective(1200px) rotateY(0deg) scale(1)}}
@media(max-width:767px){#sec-ai .ai-body{padding-right:20px;padding-bottom:65px}.robot-pet{width:54px;bottom:0;right:20px}.map-heading,.map-footer{align-items:flex-start;flex-direction:column}.map-coords{display:none}.travel-map{min-height:320px}.city-hologram{padding:15px}.city-head h3{font-size:23px}.ai-input{gap:6px}#sec-ai .ai-input button{padding:0 10px;font-size:10px}.hero-stats{display:none}}
@media(prefers-reduced-motion:reduce){.bot-float,.bot-eyes,.bot-shadow,.bot-arm,.map-marker .pulse,.city-hologram[open]{animation:none!important}}

/* AI Chat adjustments */
.robot-pet.wide-eyes .eye-open { display: none !important; }
.robot-pet.wide-eyes .eye-normal { display: block !important; }

/* Hologram Dialog Animation */
.city-hologram[open] {
  animation: holoDialogIn 0.55s cubic-bezier(0.2, 0.9, 0.25, 1.2) forwards;
}
.city-hologram.closing {
  animation: holoDialogOut 0.55s ease forwards;
}
@keyframes holoDialogIn {
  0% { opacity: 0; transform: scale(0.9) translateY(20px); filter: brightness(2) contrast(1.5) hue-rotate(90deg) blur(4px); }
  100% { opacity: 1; transform: scale(1) translateY(0); filter: brightness(1) contrast(1) hue-rotate(0) blur(0); }
}
@keyframes holoDialogOut {
  0% { opacity: 1; transform: scale(1) translateY(0); }
  100% { opacity: 0; transform: scale(0.9) translateY(20px); filter: brightness(1.5) blur(4px); }
}

/* Fix cursor for map gallery */
.city-viewer, .city-viewer *, #cityGallery { cursor: auto !important; }
