.walker{position:absolute;width:0;height:0;pointer-events:none;z-index:8;--walker-height:76px}.walker-sprite{position:absolute;bottom:0;left:0;width:calc(var(--walker-height)*.64706);height:var(--walker-height);background-image:url('assets/traveler-walk-v1.webp');background-size:400% 100%;background-position:33.333% 0;background-repeat:no-repeat;transform:translateX(-50%);filter:drop-shadow(2px 2px 2px #17202250)}.walker.face-left .walker-sprite{transform:translateX(-50%) scaleX(-1)}.walker.walking .walker-sprite{animation:traveler-step .72s steps(1,end) infinite}.walker-shadow{position:absolute;width:calc(var(--walker-height)*.48);height:calc(var(--walker-height)*.1);bottom:-2px;left:0;transform:translateX(-50%);background:#1a201f75;border-radius:50%;filter:blur(2px)}.walker-label{position:absolute;bottom:calc(var(--walker-height) + 4px);left:0;transform:translateX(-50%);padding:2px 7px;border:1px solid #ffffff70;border-radius:99px;background:#182332df;color:white;font:600 11px/1.5 'Segoe UI',sans-serif;white-space:nowrap}.walker[data-appearance=amber] .walker-label{background:#70431b;border-color:#ffc872}.walker[data-appearance=amber] .walker-shadow{outline:2px solid #f7b957;outline-offset:2px;background:#6a411c50}@keyframes traveler-step{0%{background-position:0 0}25%{background-position:33.333% 0}50%{background-position:66.666% 0}75%{background-position:100% 0}}
.walk-tools{position:absolute;left:22px;bottom:76px;max-width:305px;padding:17px 18px;background:#162437df;backdrop-filter:blur(10px);color:white;border:1px solid #ffffff65;border-radius:12px;z-index:11}.walk-tools h2{font:24px Georgia,serif;margin:3px 0 9px}.walk-tools p{font-size:11px;line-height:1.65;margin:7px 0;color:#e3eaf3}.walk-tools .walk-controls{display:flex;gap:6px;margin:11px 0}.walk-tools button{min-width:44px;min-height:44px;border-radius:6px;background:#f8fbff;color:#162437;font-size:18px}.walk-tools .walk-exit{width:100%;font-size:11px;min-height:38px;background:#ffffff20;color:white;border:1px solid #ffffff40}.walk-path-point{position:absolute;width:32px;height:32px;border-radius:50%;transform:translate(-50%,-50%) scale(var(--inverse-zoom));background:#f8fbff55;border:2px solid #fff;color:#152333;pointer-events:auto;z-index:7;box-shadow:0 2px 10px #132e3777}.walk-path-point:hover{background:#ffdd95}.walk-path-point::after{content:'';display:block;width:7px;height:7px;background:#293d54;border-radius:50%;margin:auto}.walk-entry{margin:14px 0 3px;background:#244a6a;color:white}.room-entry{text-decoration:none;display:flex;justify-content:space-between;align-items:center;width:100%;padding:14px 15px;min-height:48px;border-radius:6px;background:#244a6a;color:white;font-size:12px;font-weight:600;margin-top:20px}.room-entry:hover{background:#173b58}.masthead .learning-entry{display:flex;gap:6px;align-items:center;min-height:44px;text-decoration:none;font-size:12px;font-weight:650;color:#22364d}.masthead .learning-entry small{font-size:11px;font-weight:500}.walk-mode .map-caption{display:none}@media(max-width:650px){.walk-tools{left:12px;right:62px;bottom:57px;max-width:300px;padding:13px 16px}.walk-tools h2{font-size:21px}.walk-tools p{font-size:12px}.walk-mode .map-controls{right:10px}.masthead .learning-entry{font-size:11px}.masthead .learning-entry small{display:none}.masthead .brand small{display:none}.masthead .brand{font-size:15px}}
@media(prefers-reduced-motion:reduce){.walker.walking .walker-sprite{animation:none}}
.walk-mode #markers{visibility:visible}
.walk-tools{max-width:260px;bottom:130px;padding:15px 17px;background:#162437b8}
.walk-tools h2{font-size:22px;margin-right:27px}
.walk-tools .walk-close{position:absolute;right:6px;top:6px;background:transparent;color:white;font-size:24px}
.walk-tools .walk-note{font-size:12px;opacity:.85}
.selected-active .walk-tools{display:none}
@media(max-width:650px){.walk-tools{bottom:115px;padding:11px 14px;max-width:245px}.walk-tools p{margin:4px 0}.walk-tools .walk-controls{margin:7px 0}.walk-tools .walk-note{display:none}}
.walker-sprite{width:var(--walker-height);background-size:100% 100%;background-position:center;transform-origin:50% 95%;bottom:calc(var(--walker-height)*-.045);filter:drop-shadow(1px 2px 1px #17202230)}
.walker.walking .walker-sprite{animation:avatar-stride .38s ease-in-out infinite alternate}
.walker.face-left.walking .walker-sprite{animation-name:avatar-stride-left}
.walker.reduced-motion .walker-sprite{animation:none}
@keyframes avatar-stride{from{transform:translate(-50%,0) rotate(-2deg)}to{transform:translate(-50%,-3%) rotate(2deg)}}
@keyframes avatar-stride-left{from{transform:translate(-50%,0) scaleX(-1) rotate(-2deg)}to{transform:translate(-50%,-3%) scaleX(-1) rotate(2deg)}}
@media(prefers-reduced-motion:reduce){.walker.walking .walker-sprite{animation:none}}
.masthead{background:#f7faff;color:#182332;border-bottom-color:#d5dee7}.masthead .header-center{color:#4f6175}.masthead .monogram{border-color:#aebdca}.masthead .monogram i{color:#b77533}

/* Presence is permanent. Closing controls must never hide or pause the avatar. */
#plaza-walking{position:absolute;inset:0;pointer-events:none}
.arrival-card{position:absolute;z-index:10;left:50%;bottom:76px;transform:translateX(-50%);display:flex;align-items:center;gap:20px;max-width:calc(100% - 150px);padding:10px 15px;border:1px solid var(--ui-line,#ffffff70);border-radius:12px;background:var(--ui-glass,#17253891);backdrop-filter:blur(8px);color:#fff;text-shadow:0 1px 4px #000}
.arrival-card[hidden]{display:none}.arrival-card strong{font-size:13px}.arrival-card a{min-height:44px;display:flex;align-items:center;padding:8px 12px;border-radius:8px;background:#15233285;color:#ffe1aa;font-size:13px;white-space:nowrap;text-decoration:none;border:1px solid #ffe1aa60}
.selected-active .arrival-card,.walking-controls-open .arrival-card{visibility:hidden}
#plaza-walking .entrance-point{font:700 22px Georgia;color:#ffe1aa;text-shadow:0 1px 3px #000;opacity:1}
#plaza-walking .entrance-point:after{display:none}
@media(max-width:650px){.arrival-card{bottom:142px;left:12px;right:65px;transform:none;max-width:none;gap:6px;flex-wrap:wrap;padding:9px 11px}.arrival-card strong{font-size:12px}.arrival-card a{font-size:12px;margin-left:auto}}
@media(prefers-reduced-transparency:reduce),(prefers-contrast:more){.arrival-card{background:#182332;backdrop-filter:none}}
#plaza-walking .walker{transform:scale(clamp(.65,var(--inverse-zoom),1.5));transform-origin:0 0}
#plaza-walking .walk-path-point{width:44px;height:44px;background:transparent;border:0;box-shadow:none;opacity:.7;pointer-events:none} /* free walking: a tap goes to the spot itself, not to the nearest old stop */
/* The yellow path dots are gone (user, 24 Eylül): the points stay as invisible tap targets and keyboard stops; a dot shows only on keyboard focus. */
#plaza-walking .walk-path-point:after{width:6px;height:6px;background:#f6d294;border:1px solid #3f301b;box-shadow:0 0 0 3px #ffedc342;visibility:hidden}
#plaza-walking .walk-path-point:focus-visible{opacity:1;outline:2px solid #ffe5b0;outline-offset:-7px}
#plaza-walking .walk-path-point:focus-visible:after{visibility:visible}
.walk-tools .walk-pad{display:grid;grid-template-columns:repeat(4,44px);grid-template-rows:repeat(2,44px);gap:5px;justify-content:center}
.walk-pad .up{grid-area:1/2}.walk-pad .left{grid-area:2/1}.walk-pad .down{grid-area:2/2}.walk-pad .right{grid-area:2/3}.walk-pad .locate{grid-area:1/4}
.walk-tools .walk-note{display:block;font-size:12px;opacity:1}
.walking-controls-open .map-caption{display:none}
@media(max-width:650px){.walk-tools{max-width:none;left:12px;right:62px;bottom:132px;padding:9px 10px}.walk-tools h2{font-size:18px}.walk-tools .walk-pad{grid-template-columns:repeat(4,44px)}.walk-tools p{font-size:12px}.walk-tools .walk-note{display:none}}
@media(max-height:520px){.walk-tools{left:12px;right:auto;bottom:70px;width:240px;max-height:145px;overflow:auto}.walk-tools h2,.walk-tools p{display:none}.walk-tools .walk-pad{margin:3px 0}.walk-tools .walk-close{right:1px;top:0;width:30px;min-width:30px}}
/* 22 Eylül: kapısına yürünebilen ama iç mekânı hazırlanan yapılar. */
.arrival-card [hidden]{display:none}
.arrival-card .arrival-state{font-size:12px;color:#f6dcb1;opacity:.9}
.arrival-card .arrival-info{min-height:44px;padding:8px 12px;border-radius:8px;border:1px dashed #ffe1aa80;background:#15233270;color:#ffe1aa;font-size:13px;white-space:nowrap;cursor:pointer}
.arrival-card .arrival-info:hover,.arrival-card .arrival-info:focus-visible{background:#ffe1aa26}
#plaza-walking .entrance-point.planned{opacity:.72;font-size:19px;color:#f3dcbc}
@media(max-width:650px){.arrival-card .arrival-info{font-size:12px;margin-left:auto}.arrival-card .arrival-state{font-size:11px}}
/* 23 Eylül: dört yönlü yürüme (design/yurume-v1). While walking, a character with a walk sheet shows the row for its
   direction (toward the viewer, side, away) and steps through six frames; the side row is mirrored for walking left and
   the other rows are never mirrored. Characters without a sheet keep the idle portrait's sway above. */
.walker.has-walk.walking .walker-sprite{background-image:var(--walk-sheet)!important;background-size:600% 300%;background-position:0 0;animation:walk-cycle var(--walk-cycle,.7s) steps(6) infinite}
.walker.has-walk.walking[data-dir=side] .walker-sprite{background-position-y:50%}
.walker.has-walk.walking[data-dir=back] .walker-sprite{background-position-y:100%}
.walker.has-walk.walking:not([data-dir=side]) .walker-sprite{transform:translateX(-50%)}
.walker.has-walk.face-left.walking[data-dir=side] .walker-sprite{transform:translateX(-50%) scaleX(-1);animation-name:walk-cycle}
@keyframes walk-cycle{to{background-position-x:120%}}
