/* The door photograph leads; controls occupy its lock and retain native focus. */
.journey-gate-view{color:var(--ink,#edf1ed)}
.journey-gate-stage{position:relative;width:100%;aspect-ratio:3/2;isolation:isolate;overflow:hidden;border-radius:12px;background:#152633}
.journey-gate-photo{display:block;width:100%;height:100%;object-fit:cover;user-select:none;pointer-events:none}
.journey-gate-photo[hidden]{display:none}
.journey-gate-touch,.journey-gate-code,.journey-gate-bell,.journey-gate-chalk-arrow,.journey-gate-disc{position:absolute;left:var(--lock-x);top:var(--lock-y);transform:translate(-50%,-50%)}
.journey-gate-touch{width:var(--lock-w);height:var(--lock-h);min-width:44px;min-height:44px;border:0;padding:0;background:transparent;color:#f4dfb4;cursor:pointer;touch-action:manipulation}
.journey-gate-touch-mark{position:absolute;left:50%;top:50%;width:16px;height:16px;border:2px solid currentColor;border-radius:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .16s ease}
.journey-gate-touch:hover .journey-gate-touch-mark,.journey-gate-touch:focus-visible .journey-gate-touch-mark{opacity:1}
.journey-gate-view button:focus-visible,.journey-gate-view input:focus-visible{outline:2px solid #f4dfb4;outline-offset:3px}
#journeyBody .journey-gate-caption{font-size:14px;line-height:1.7;margin:15px 0 8px}
#journeyBody .journey-gate-instruction{font-size:13px;line-height:1.7;color:#c7d0d6;margin:0 0 14px}
.journey-gate-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:17px}
.journey-gate-actions>.journey-button{min-width:0;flex:1 1 auto}
.journey-gate-code{width:var(--lock-w);min-width:94px;max-width:156px;display:grid;gap:5px;padding:7px;border-radius:7px;background:#25302f;box-shadow:0 3px 8px rgba(0,0,0,.35)}
.journey-gate-code input{box-sizing:border-box;min-width:0;width:100%;min-height:44px;padding:4px 8px;border:1px solid #788c86;border-radius:3px;background:#101b1c;color:#f2e3be;font:24px/1.2 Georgia,serif;font-variant-numeric:tabular-nums;text-align:center;letter-spacing:.17em;caret-color:#f2e3be}
.journey-gate-code input::selection{background:#e8d3a6;color:#101b1c}
.journey-gate-code-submit{min-height:44px;padding:7px 10px;border:1px solid #74837a;border-radius:3px;background:#34433b;color:#f1e8d3;font:inherit;font-size:12px;cursor:pointer;touch-action:manipulation}
.journey-gate-code-submit:hover{background:#43554a}
.journey-gate-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.journey-gate-chalk-arrow{width:calc(var(--lock-w) * .58);height:calc(var(--lock-h) * .45);color:#f3eed6;pointer-events:none;filter:drop-shadow(1px 2px 1px rgba(20,25,22,.6))}
.journey-gate-chalk-arrow::before{content:"";position:absolute;left:14%;top:10%;width:65%;height:70%;border-right:4px solid currentColor;transform:rotate(-30deg);transform-origin:top center;border-radius:2px}
.journey-gate-chalk-arrow::after{content:"";position:absolute;right:0;bottom:0;width:15px;height:15px;border-right:4px solid currentColor;border-bottom:4px solid currentColor;transform:rotate(15deg)}
.journey-gate-bell{min-width:64px;min-height:44px;width:var(--lock-w);padding:7px 6px;border:1px solid #8b7c60;border-radius:6px;background:#403d34;color:#f2e2bd;font:inherit;font-size:12px;line-height:1.3;box-shadow:0 3px 6px rgba(0,0,0,.28);cursor:pointer;touch-action:manipulation}
.journey-gate-bell:hover{background:#57503f}
.journey-gate-bell:active{background:#2d302b}
.journey-gate-disc{width:var(--lock-w);min-width:84px;max-width:170px;aspect-ratio:1;pointer-events:none}
.journey-gate-leaf-target,.journey-gate-leaf{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}
.journey-gate-leaf-target{transform:rotate(90deg);opacity:.42;filter:grayscale(1) brightness(1.7) drop-shadow(1px 1px 1px #e9e3bd)}
.journey-gate-leaf{opacity:.86;filter:drop-shadow(1px 3px 2px rgba(0,0,0,.35));transition:transform .2s ease-out}
.journey-gate-angle{display:block;margin-top:3px;font-size:12px;font-variant-numeric:tabular-nums;color:#b6c3cc}
@media(max-width:600px){
  .journey-gate-stage{border-radius:9px}
  .journey-gate-code{min-width:86px;padding:5px;gap:4px}
  .journey-gate-code input{font-size:21px}
  .journey-gate-actions{gap:7px;margin-top:14px}
  .journey-gate-actions>.journey-button{padding:10px 11px;font-size:12px}
  .journey-gate-bell{min-width:60px;font-size:11px}
}
@media(prefers-reduced-motion:reduce){.journey-gate-touch-mark,.journey-gate-leaf{transition:none}}
