/* One local teaching stage. The established warm palette remains authoritative. */
iris-experience { --journey-good:var(--success,#82b99c); --journey-wait:var(--warning,#d6b276); --journey-bad:var(--error,#cf8182); display:flex; flex-direction:column; max-width:1280px; margin:30px auto 0; min-width:0; background:var(--paper); border-block:1px solid var(--line); color:var(--ink); }
iris-experience [hidden] { display:none !important; }
iris-experience button { color:var(--ink); font:inherit; font-size:13px; cursor:pointer; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
iris-experience :is(button,a,summary,select,textarea):focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
.world-stage { position:relative; flex:none; min-height:0; height:390px; }
.world-stage > iris-world { max-width:none; height:100%; display:grid; grid-template-rows:minmax(0,1fr) 82px; background:color-mix(in srgb,var(--fern) 25%,var(--paper)); }
iris-world[data-guided] .iris-world__stage { height:100%; min-height:0; }
iris-world[data-guided] :is(.iris-world__controls,.iris-world__lesson) { display:none; }
.journey-desk { display:flex; flex-direction:column; min-height:0; height:var(--journey-dock-height,400px); border-top:0; }
.journey-resize { position:relative; flex:0 0 14px; height:14px; min-width:0; background:var(--paper); border-block:1px solid var(--line-strong); cursor:row-resize; touch-action:none; user-select:none; z-index:4; }
.journey-resize::after { content:""; position:absolute; width:44px; height:3px; top:4px; left:calc(50% - 22px); background:var(--muted); }
.journey-resize:hover::after,.journey-resize:focus-visible::after { background:var(--accent); }
.journey-resize:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
.journey-run { min-width:0; min-height:0; display:flex; flex-direction:column; overflow:hidden; background:var(--paper); flex:1; }
.journey-current { padding:10px 16px; overflow:auto; min-height:0; flex:1; }.journey-current h2 { font-size:18px; line-height:1.3; margin:4px 0 8px; font-family:var(--font-ui); }.journey-current > p { font-size:13px; line-height:1.5; margin:0; }
.journey-state { color:var(--accent); font:12px var(--font-mono); }.journey-current[data-state="done"] .journey-state { color:var(--journey-good); }.journey-current[data-state="paused"] .journey-state { color:var(--journey-wait); }
.journey-current > .journey-event { margin-top:8px; font:11px/1.5 var(--font-mono); color:var(--muted); border-top:1px solid var(--line); padding-top:8px; }
.journey-plan { box-sizing:border-box; min-height:86px; min-width:0; overflow:auto; padding:6px 16px; flex:0 0 var(--journey-plan-height,180px); background:color-mix(in srgb,var(--bark,#665345) 36%,var(--paper)); border-bottom:0; }.journey-history > summary { display:flex; justify-content:space-between; align-items:center; min-height:36px; color:var(--ink); cursor:pointer; font-size:14px; }.journey-history > summary span { font:11px var(--font-mono); color:var(--muted); }
.journey-chapter { border-top:1px solid var(--line); }.journey-chapter > summary { display:flex; align-items:center; gap:10px; cursor:pointer; padding:12px 0; min-height:44px; font-size:13px; list-style:none; }.journey-chapter small { margin-left:auto; color:var(--muted); font:10px var(--font-mono); }
.journey-marker { width:16px; flex:none; color:var(--muted); }.journey-chapter[data-state="active"] .journey-marker { color:var(--journey-wait); }.journey-chapter[data-state="done"] .journey-marker { color:var(--journey-good); }
.journey-marker svg,.journey-step > summary > span svg { display:block; width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:6; stroke-linecap:square; stroke-linejoin:miter; }
.journey-step { margin:0 0 4px 25px; }.journey-step > summary { display:flex; align-items:center; gap:8px; list-style:none; cursor:pointer; font-size:12px; min-height:32px; padding:4px 0; }.journey-step > summary b { font-weight:400; }.journey-step > summary > span { width:12px; flex:none; color:var(--muted); }.journey-step[data-state="done"] > summary { color:var(--muted); text-decoration:line-through; }.journey-step[data-state="done"] > summary > span { color:var(--journey-good); }.journey-step[data-state="done"] [data-fresh] { color:var(--journey-good); text-decoration:none; }.journey-step[data-state="active"] > summary > span { color:var(--journey-wait); }.journey-step p { color:var(--muted); font-size:12px; line-height:1.6; margin:6px 0; }.journey-step small { display:block; font:10px/1.6 var(--font-mono); margin-bottom:8px; }
.journey-inspect { padding:12px 16px; min-height:0; overflow:auto; flex:1; }.journey-inspect h2 { font:28px/1.15 var(--font-pixel); margin:0 0 12px; }.journey-inspect h3 { font-size:16px; }.journey-inspect p { font-size:13px; color:var(--muted); line-height:1.6; }.journey-inspect small { font-size:11px; color:var(--muted); }.journey-inspect button,.journey-inspect a { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:40px; padding:7px 12px; border:1px solid var(--line); border-radius:var(--r-xs); background:transparent; color:var(--ink); font-size:12px; }.journey-inspect a { text-decoration:none; }.journey-inspect details { border-top:1px solid var(--line); padding-block:10px; }.journey-inspect summary { cursor:pointer; min-height:32px; padding:6px 0; font-size:13px; }.journey-inspect pre { white-space:pre; overflow:auto; font:11px/1.6 var(--font-mono); background:color-mix(in srgb,var(--paper) 94%,var(--ink)); border:1px solid var(--line); padding:12px; max-height:240px; }.world-links { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
/* Signs are grounded on a nearer terrace, below Iris's path. Their posts are
   real elements; no floating hit targets and no obstruction of her movement. */
.journey-signs { position:relative; z-index:6; display:flex; gap:12px; justify-content:center; padding-inline:12px; height:82px; align-items:flex-start; container-type:inline-size; background:color-mix(in srgb,var(--fern) 25%,var(--paper)); }
.journey-sign { position:relative; flex:1; min-width:0; max-width:170px; height:60px; margin:8px 0 0; padding:0; border:0; background:transparent; animation:journey-plant .7s cubic-bezier(.2,.8,.3,1) both; animation-delay:calc(var(--sign-order,4)*.1s); }
.journey-sign > span { display:grid; place-items:center; position:relative; z-index:1; min-height:44px; padding:5px 8px; border:2px solid var(--bark,#665345); background:color-mix(in srgb,var(--bark,#665345) 65%,var(--paper)); box-shadow:0 3px 0 color-mix(in srgb,var(--bark,#665345) 55%,var(--paper)); color:var(--ink); font:600 clamp(12px,3cqw,16px)/1.2 var(--font-pixel); white-space:nowrap; }
.journey-sign > i { position:absolute; left:calc(50% - 3px); width:6px; height:26px; top:42px; background:var(--bark,#665345); }.journey-sign::before,.journey-sign::after { content:""; position:absolute; bottom:-7px; width:9px; height:5px; background:var(--stone,#8b8073); left:calc(50% - 12px); }.journey-sign::after { left:calc(50% + 5px); width:6px; height:7px; }
.journey-sign[data-done] > span::after { content:""; position:absolute; inset:7px 8px; pointer-events:none; background:linear-gradient(19deg,transparent 44%,var(--journey-bad) 45% 51%,transparent 52%),linear-gradient(-17deg,transparent 44%,var(--journey-bad) 45% 51%,transparent 52%); opacity:.8; }.journey-sign[data-done] > span { color:var(--muted); }.journey-sign--join > span { color:var(--paper); background:var(--accent); }.journey-sign:hover > span { transform:translateY(-2px); border-color:var(--accent); }
.journey-wipe { display:grid; grid-template-columns:repeat(12,1fr); position:absolute; inset:0; z-index:15; pointer-events:none; overflow:hidden; visibility:hidden; }.journey-wipe i { background:var(--accent); transform:translateY(103%); opacity:.95; }.journey-wipe i:nth-child(3n) { background:var(--bark,#665345); }.journey-wipe i:nth-child(2n) { opacity:.86; }:is(iris-experience,.learn-layout)[data-transition] .journey-wipe { visibility:visible; }:is(iris-experience,.learn-layout)[data-transition="out"] .journey-wipe i { animation:journey-cover .48s both; animation-delay:calc(mod(var(--tile),4)*.025s); }:is(iris-experience,.learn-layout)[data-transition="in"] .journey-wipe i { animation:journey-uncover .48s both; animation-delay:calc(mod(var(--tile),4)*.025s); }
@keyframes journey-cover { to { transform:translateY(0); } }@keyframes journey-uncover { from { transform:translateY(0); }to { transform:translateY(-103%); } }@keyframes journey-plant { 0% { transform:translateY(65px); opacity:0; }60% { transform:translateY(-5px); opacity:1; }100% { transform:translateY(0); } }
/* Focus mode is a presentation layer for this one component, not a new route. */
body:has(iris-experience[data-focused]) { overflow:hidden; }
iris-experience[data-focused] { position:fixed; z-index:1000; inset:0; width:100%; max-width:none; height:100dvh; margin:0; border:0; padding-top:env(safe-area-inset-top); padding-bottom:env(safe-area-inset-bottom); }
iris-experience[data-focused] .world-stage { height:auto; min-height:280px; flex:1; }iris-experience[data-focused] iris-world,iris-experience[data-focused] .iris-world__stage { height:100%; }iris-experience[data-focused] .journey-desk { height:var(--journey-dock-height,46dvh); flex:none; }
.iris-world__place { position:absolute; top:16px; left:20px; z-index:3; color:var(--muted); font-family:var(--font-pixel); font-size:18px; pointer-events:none; }
.world-object { position:absolute; z-index:5; bottom:66px; width:96px; min-height:100px; padding:0; border:0; background:transparent; color:var(--accent); cursor:pointer; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
.world-object[data-side="left"] { left:2%; }.world-object[data-side="right"] { right:2%; }
.world-object svg { width:72px; height:72px; margin:auto; display:block; fill:color-mix(in srgb,var(--accent) 14%,var(--paper)); stroke:currentColor; stroke-width:3; stroke-linecap:square; stroke-linejoin:miter; }
.world-object > span { display:block; padding:5px 2px; color:var(--ink); font-size:12px; font-family:var(--font-ui); line-height:1.3; }
.world-object:hover svg { transform:translateY(-3px); color:var(--ink); }
.world-object:active svg { transform:translateY(1px); }
.world-object:focus-visible { outline:2px dashed var(--accent); outline-offset:4px; }
.world-object > i { position:absolute; width:5px; height:5px; background:var(--accent); top:6px; right:10px; opacity:.65; animation:iris-object-signal 4s ease-in-out infinite; }
.world-object--library[data-count="0"] > i { opacity:0; animation:none; }
.world-object--workbench svg { width:88px; }
.world-constellation { position:absolute; top:48px; left:28%; right:28%; height:110px; pointer-events:none; color:var(--accent); opacity:.6; }
.world-constellation svg { width:100%; height:100%; overflow:visible; }
.world-constellation path { stroke:var(--line-strong); stroke-width:1; fill:none; stroke-dasharray:3 6; }
.world-constellation rect { fill:var(--paper); stroke:var(--accent); stroke-width:2; transition:fill .3s; }
.world-constellation rect.is-complete { fill:var(--accent); }
.world-orbit { position:absolute; top:24px; right:8%; width:110px; height:82px; pointer-events:none; animation:iris-cloud 18s ease-in-out infinite alternate; }
.world-orbit svg { width:100%; height:100%; shape-rendering:crispEdges; }.world-orbit__planet { fill:color-mix(in srgb,var(--accent) 38%,var(--paper)); }.world-orbit__ring { fill:var(--accent); }.world-orbit__shade { fill:color-mix(in srgb,var(--accent) 20%,var(--paper)); }
iris-world[data-world="stream"] .iris-world__moon { opacity:.4; }
iris-world[data-world="lantern"] .iris-world__mail { display:none; }
iris-world[data-world="lantern"] .iris-world__lamp { right:3%; }
.world-finished { display:none; position:absolute; bottom:70px; left:calc(50% + 88px); color:var(--accent); pointer-events:none; }
iris-world[data-example-complete] .world-finished { display:block; }
.world-finished > span { display:grid; place-items:center; width:32px; height:32px; background:var(--paper); border:2px solid var(--accent); }
.world-finished i { position:absolute; width:4px; height:4px; top:-20px; left:0; background:var(--accent); animation:iris-object-signal 3s ease-in-out 3; }
.world-finished i:nth-child(3) { left:30px; top:-30px; animation-delay:.3s; }.world-finished i:nth-child(4) { left:44px; top:-4px; animation-delay:.6s; }
.world-plan,.world-dependencies,.world-events { list-style:none; padding:0; margin:16px 0; }
.world-plan li,.world-dependencies li,.world-events li { display:flex; align-items:flex-start; gap:14px; padding:14px 0; border-bottom:1px solid var(--line); }
.world-plan li > div,.world-dependencies li > div,.world-events li > div { min-width:0; flex:1; }
.world-step-number,.world-dependencies li > span,.world-events li > span { flex:none; min-width:24px; color:var(--accent); font-family:var(--font-mono); font-size:13px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.world-plan li[data-step-status="completed"] .world-step-number::after { content:" ✓"; }
.world-plan li[data-step-status="in_progress"] { border-color:var(--accent); }
.world-plan li p,.world-dependencies li p,.world-events li p { margin:5px 0; }
.world-events strong { font:12px var(--font-mono); overflow-wrap:anywhere; }
.world-permission { padding:16px; border:1px dashed var(--accent); margin-top:16px; }
.world-terminal { border:2px solid var(--line-strong); border-bottom:5px solid var(--line-strong); background:color-mix(in srgb,var(--paper) 92%,var(--ink)); margin-block:18px; }
.world-terminal__bar { display:flex; justify-content:space-between; gap:12px; padding:8px 12px; font-size:11px; border-bottom:1px solid var(--line); color:var(--muted); }
.world-terminal ol { list-style:none; margin:0; padding:12px; font-family:var(--font-mono); font-size:12px; }
.world-terminal li { display:flex; gap:12px; margin:10px 0; line-height:1.6; }.world-terminal li > span { color:var(--accent); flex:none; }
.world-files { list-style:none; padding:0; margin:16px 0; }
.world-files button { width:100%; justify-content:space-between; text-align:left; border:0; border-bottom:1px solid var(--line); padding:12px 2px; }
.world-files button span { overflow-wrap:anywhere; }.world-files button small { flex:none; }
.world-files button[aria-pressed="true"] { color:var(--accent); }
.world-file-heading { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; }
.world-file-heading strong { font:13px var(--font-mono); overflow-wrap:anywhere; }
.journey-inspect pre { white-space:pre; overflow:auto; font:12px/1.7 var(--font-mono); padding:16px; background:color-mix(in srgb,var(--paper) 94%,var(--ink)); border:1px solid var(--line); max-height:340px; }
.world-evidence { display:grid; grid-template-columns:1fr 1fr; gap:0 20px; }
.world-evidence > div { padding:12px 0; border-bottom:1px solid var(--line); }.world-evidence dt { color:var(--muted); font-size:12px; }.world-evidence dd { margin:6px 0 0; font-size:14px; }
.world-patch { list-style:none; padding:0; }.world-patch li { display:grid; grid-template-columns:1fr auto; gap:4px 12px; border-bottom:1px solid var(--line); padding-block:12px; }.world-patch li > span { color:var(--accent); font:12px var(--font-mono); }.world-patch p { grid-column:1 / -1; margin:0; }
.journey-inspect form { display:grid; gap:12px; margin-block:12px; }.journey-inspect label { display:grid; gap:8px; font-size:13px; }.journey-inspect :is(select,textarea) { background:var(--paper); color:var(--ink); border:1px solid var(--line-strong); border-radius:3px; font:14px var(--font-ui); padding:10px; width:100%; }.journey-inspect textarea { min-height:80px; resize:vertical; }
.world-dependencies button { display:flex; width:fit-content; margin-top:8px; font-size:12px; border:0; border-bottom:1px solid var(--line); padding-inline:0; }
.world-output { border-top:2px solid var(--line); margin-top:20px; padding-top:20px; }.world-preview-controls { display:grid; grid-template-columns:1fr 1fr; gap:12px; }.world-forecast { display:flex; gap:16px; justify-content:space-between; border-block:1px solid var(--line); margin-top:16px; padding:16px 0; }.world-forecast > div { display:flex; flex-direction:column; gap:8px; font-size:13px; }.world-forecast strong { font-size:24px; font-weight:500; color:var(--accent); }

/* All new character motion is grounded. No head bob or per-step wave. */
iris-world[data-guided] .iris-world__actor { bottom:97px; width:104px; height:113px; }
iris-world[data-guided] :is(.iris-world__tree,.iris-world__grass,.iris-world__flowers,.iris-world__hills,.iris-world__lamp) { bottom:96px; }
iris-world[data-guided] .iris-world__ground { height:100px; }iris-world[data-guided] .iris-world__bridge { bottom:82px; }iris-world[data-guided] .iris-world__river { height:92px; }
iris-world[data-guided] .world-object { bottom:98px; width:82px; min-height:85px; }.world-object--request { display:none; }
iris-world[data-guided] .iris-world__sleep { bottom:155px; }
iris-world[data-guided][data-active]:not([data-walking]):not([data-jumping]) iris-mascot[data-pose="awake"] { animation:journey-breathe 4.2s ease-in-out infinite; }
@keyframes journey-breathe { 50% { transform:scale(1.006,1.012); } }
iris-world[data-guided][data-working] .world-object--workbench svg { color:var(--journey-good); filter:drop-shadow(0 0 5px color-mix(in srgb,var(--journey-good) 35%,transparent)); }
/* Compact scene icons stay above the play field; navigation lives in the
   explanation dock. Targets remain 40px even when their artwork is smaller. */
.journey-scene-actions { position:absolute; z-index:8; top:8px; right:10px; display:flex; gap:6px; }
.journey-scene-actions button,.journey-utilities button { position:relative; display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; padding:7px; border:2px solid var(--bark,#665345); border-radius:2px; background:color-mix(in srgb,var(--bark,#665345) 35%,var(--paper)); box-shadow:2px 2px 0 var(--line-soft); color:var(--accent); }
.journey-scene-actions button:first-child { border-color:var(--accent); }
.journey-scene-actions svg,.journey-utilities svg { display:block; width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:4; stroke-linecap:square; stroke-linejoin:miter; }
.journey-scene-actions button:hover,.journey-utilities button:hover { border-color:var(--ink); }
.journey-scene-actions button:active,.journey-utilities button:active { transform:translateY(1px); box-shadow:none; }
.journey-action-label { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.journey-scene-actions button:is(:focus-visible,:hover)::after { content:attr(aria-label); position:absolute; top:calc(100% + 5px); right:0; padding:5px 8px; background:var(--paper); border:1px solid var(--line-strong); color:var(--ink); font:11px var(--font-ui); white-space:nowrap; pointer-events:none; }
.journey-utilities { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:44px; padding:2px 10px; border-top:1px solid var(--line); flex:none; }
.journey-utilities small { font:10px var(--font-ui); color:var(--muted); }.journey-utilities > div { display:flex; gap:4px; }.journey-utilities button { border:0; background:transparent; box-shadow:none; width:40px; height:40px; padding:9px; }
.journey-paused { color:var(--journey-wait); font-size:11px; margin-left:25px; }
iris-world[data-guided] .iris-world__tree { width:108px; height:170px; }iris-world[data-guided] .iris-world__tree--right { width:85px; height:135px; }
iris-world[data-guided] .world-object { bottom:224px; width:60px; min-height:64px; }iris-world[data-guided] .world-object svg { width:46px; height:46px; }iris-world[data-guided] .world-object > span { font-size:10px; }
@media(max-width:720px) {
  iris-experience { margin-top:18px; }.world-stage { height:350px; }.iris-world__place { top:12px; left:12px; font-size:15px; }
  .world-stage > iris-world { grid-template-rows:minmax(0,1fr) 82px; }
  .journey-desk { height:var(--journey-dock-height,380px); }.journey-current { padding:8px 12px; }.journey-current h2 { font-size:16px; margin:4px 0 6px; }.journey-current > p { font-size:12px; line-height:1.45; }.journey-current > .journey-event { font-size:10px; line-height:1.4; margin-top:6px; padding-top:6px; }.journey-state { font-size:10px; }
  .journey-plan { padding:4px 12px; }.journey-history > summary { min-height:28px; font-size:12px; }.journey-chapter > summary { min-height:30px; padding:5px 0; font-size:12px; }.journey-step > summary { min-height:28px; font-size:11px; }.journey-step p { font-size:11px; }.journey-chapter small { font-size:9px; }
  .journey-signs { gap:7px; padding-inline:10px; height:82px; }.journey-sign > span { font-size:12px; padding-inline:2px; }.journey-signs:has(.journey-sign--join:not([hidden])) { gap:4px; }.journey-signs:has(.journey-sign--join:not([hidden])) .journey-sign > span { font-size:12px; padding-inline:0; }
  iris-world[data-guided] .iris-world__actor { width:80px; height:87px; }
  iris-world[data-guided] .world-object { bottom:196px; width:48px; min-height:55px; }iris-world[data-guided] .world-object svg { width:36px; height:36px; }
  iris-experience[data-focused] .world-stage { height:auto; min-height:280px; flex:1; }iris-experience[data-focused] .journey-desk { min-height:200px; }.journey-inspect { padding:10px 12px; }.journey-inspect h2 { font-size:20px; }
}
@media(max-height:660px) and (max-width:720px) { iris-experience[data-focused] .world-stage { height:auto; min-height:280px; }.journey-current > .journey-event { display:none; }.journey-current h2 { font-size:15px; } }
@media(max-height:520px) and (min-width:721px) { iris-experience[data-focused] { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); grid-template-rows:minmax(0,1fr); }iris-experience[data-focused] .world-stage { height:100%; min-height:0; }iris-experience[data-focused] .journey-desk { height:100%; min-height:0; border-top:0; border-left:1px solid var(--line); }.journey-plan { flex:0 0 var(--journey-plan-height,45%); } }
@media(prefers-reduced-motion:reduce) { .journey-sign,.journey-wipe i,iris-world[data-guided] iris-mascot { animation:none !important; }.journey-sign:hover > span { transform:none; }.journey-wipe { display:none; } }

.journey-keypad { display:none; position:absolute; z-index:3; left:calc(var(--work-x,60%) + 36px); bottom:97px; width:26px; height:23px; border:3px solid var(--bark,#665345); border-bottom-width:9px; background:var(--line); box-shadow:3px 0 0 var(--bark,#665345); }
.journey-keypad i { display:block; width:8px; height:5px; background:var(--accent); margin:3px auto; animation:journey-keypress 1.56s steps(1,end) infinite; }
iris-world[data-working] .journey-keypad { display:block; }
@keyframes journey-keypress { 45%,65% { transform:translateY(2px); background:var(--journey-good); box-shadow:0 0 12px var(--journey-good); } }
/* A grounded wooden dialogue inset has its own foreground space. It never
   follows the actor or switches off because of message length or viewport. */
iris-world[data-guided] .iris-world__note { position:absolute; z-index:7; inset:auto 16px 6px; margin-inline:auto; width:auto; max-width:760px; height:86px; transform:none; padding:7px 10px; border:4px solid var(--bark); background:color-mix(in srgb,var(--paper) 92%,var(--accent)); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 55%,var(--bark)),0 3px 0 color-mix(in srgb,var(--bark) 70%,var(--paper)); text-align:left; font:14px/1.45 var(--font-ui); cursor:auto; animation:journey-dialogue-in .16s ease-out; }
iris-world[data-guided] .iris-world__note::after { content:none; }
.iris-world__words { height:100%; min-height:0; overflow-y:auto; overflow-wrap:anywhere; scrollbar-width:thin; scrollbar-color:var(--bark) transparent; overscroll-behavior:contain; touch-action:pan-y; }
.iris-world__words:focus-visible { outline:1px dashed var(--accent); outline-offset:2px; }
iris-experience:has(iris-world:not([hidden]) [data-world-note]:not([hidden])) :is([data-narration],.journey-spoken) { display:none; }
@keyframes journey-dialogue-in { from { opacity:0; translate:0 4px; } to { opacity:1; translate:0 0; } }
.journey-current code,.journey-spoken code,.iris-world__note code { font: .9em var(--font-mono); color:var(--accent); background:var(--line-soft); padding:1px 4px; border-radius:2px; overflow-wrap:anywhere; }
.journey-current strong,.journey-spoken strong,.iris-world__note strong { font-weight:600; }
.journey-spoken { margin:0 0 16px; padding-bottom:12px; border-bottom:1px solid var(--line); font:14px/1.6 var(--font-ui); overflow-wrap:anywhere; }
@media(max-width:720px) { .journey-keypad { left:calc(var(--work-x,60%) + 28px); width:21px; height:19px; } }
@media(max-width:720px) { iris-world[data-guided] .iris-world__note { inset-inline:10px; padding:6px 9px; font-size:12px; line-height:1.4; } }

@media(prefers-reduced-motion:reduce) { iris-world[data-guided] .iris-world__note { animation:none; } }
@media(prefers-reduced-motion:reduce) { .journey-keypad i { animation:none; } }

.journey-share { display:flex; align-items:center; gap:10px; margin-block:16px; font-size:12px; }.journey-share input { width:18px; height:18px; accent-color:var(--accent); }
.journey-step[data-state="skipped"] > summary > span,.journey-step[data-state="skipped"] > summary small { color:var(--journey-wait); }
/* Grounded onward signs share the existing wooden-sign treatment. */
.journey-learning-signs { display:flex; justify-content:center; gap:16px; padding:12px 18px 0; }
.journey-learning-signs .journey-sign { width:150px; color:var(--ink); text-decoration:none; min-height:56px; }
iris-experience[data-focused] .journey-learning-signs { display:none; }
