/* v0.8: lo importante conserva tamaño y significado. Scroll es preferible a recorte.
   48 px es nuestro suelo de botón; controles amplios busca 56 px. No certifica WCAG. */
:root{--access-ink:#193e35;--access-focus:#154d9b}
[hidden]{display:none!important}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--access-focus)!important;outline-offset:3px!important;scroll-margin:14px;box-shadow:0 0 0 6px #fff!important}
#dialog-title:focus-visible{outline-offset:2px!important;box-shadow:none!important}
.dialog{scroll-padding:16px}.dialog .close-dialog{position:sticky!important;top:0!important;align-self:flex-end;margin-bottom:-50px;z-index:30;background:#fff9e9!important;color:#153d31!important;border:2px solid #426a58;border-radius:18px}
.dialog h2{min-height:48px;padding-right:56px!important;flex:none}
.child-ui button:not(.world-landmark):not(.habitat-spot):not(.map-cell),.child-dialog button{min-width:48px!important;min-height:48px!important}
.game-actions,.game-help-actions{flex-wrap:wrap!important}
.parent-tabs{flex-wrap:wrap!important;height:auto!important;overflow:visible!important;gap:6px}
.parent-tabs .tab{min-height:44px;white-space:normal}
body:not(.adult-mode) .topbar{height:auto;min-height:68px;flex-wrap:wrap;row-gap:8px}
.top-tools{flex-wrap:wrap;justify-content:flex-end}
.dialog .example-play-preview{flex:none;min-height:220px;max-height:none;height:auto;overflow:auto}
.example-play-preview .play-world{zoom:1!important}
/* Solo decoraciones sin información: no esconder gráficas, números o feedback. */
body.access-calm .world-ornament,body.access-calm .scene-sky,body.access-calm .habitat-sun,body.access-calm .habitat-distant,body.access-calm .modal-stars{visibility:hidden}
body.access-calm .play-world,body.access-calm .world-scene{box-shadow:0 3px 0 #91ae9c}
body.access-motion-off *,body.access-motion-off *:before,body.access-motion-off *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
body.access-motion-off button:is(:hover,:active)>.button-art,body.access-motion-off button:is(:hover,:active)>.toy-face,body.access-motion-off button:is(:hover,:active)>.landmark-visual{transform:none!important;translate:none!important;scale:none!important}
.access-panel{max-width:100%;color:#24463d}
.access-intro{display:flex;align-items:center;gap:18px}.access-intro h2{margin:0}.access-intro p{margin:7px 0}
.access-emblem{display:grid;place-items:center;width:68px;height:68px;flex:none;background:#e6efdc;border-radius:24px}.access-emblem .icon{width:35px;height:35px}
.access-presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:22px 0}
.access-preset{display:block;min-width:0;border:2px solid #b2c8b9;border-radius:22px;background:#f4f7ec;color:#214537;cursor:pointer;padding:15px;text-align:left}
.access-preset>.toy-face{display:flex;flex-direction:column;gap:9px;min-height:170px;align-items:flex-start;font-family:inherit}
.access-preset strong{font-size:17px}.access-preset span:not(.toy-face):not(.access-preset-icon){font-size:14px;line-height:1.5}.access-preset-icon{padding:7px;background:#e4ead0;border-radius:15px;display:block}.access-preset-icon .icon{width:29px;height:29px}
.access-preset[data-preset=reading]{background:#eef2ff;border-color:#c6c6e2}.access-preset[data-preset=touch]{background:#fff1da;border-color:#d8c197}.access-preset[data-preset=calm]{background:#e3f0e9}
.access-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:16px 0}.access-tools .btn{max-width:100%;white-space:normal}
.access-status{font-size:14px;background:#edf4ed;padding:13px 16px;border-left:4px solid #52785b;border-radius:0 14px 14px 0;line-height:1.55}
.access-setting{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 0;border-bottom:1px solid #dce7dc;cursor:pointer}.access-setting strong{font-size:16px}.access-setting small{display:block;line-height:1.5;font-size:14px;color:#40594b;margin-top:5px}.access-setting input[type=checkbox]{width:26px;height:26px;flex:none;accent-color:#287361}
.access-form{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0}.access-form label{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:15px}.access-form .input{width:100%;min-width:0;max-width:100%;font-family:inherit;font-size:16px}.access-form-wide{grid-column:1/-1}.access-form textarea{resize:vertical;line-height:1.5}
.access-observation{border:1px solid #bacdbd;background:#f8fbf5;border-radius:16px;padding:18px;margin:12px 0}.access-observation h3{font-size:17px;margin:0}.access-observation p{font-size:14px}.access-note{white-space:pre-wrap;overflow-wrap:anywhere}.access-observation summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.access-observation details{margin:10px 0}
.access-phrase{border-radius:3px;padding:1px 0}.access-phrase.active{background:#ffedaa;color:#183b30;box-shadow:0 2px 0 #bc8c29}
.access-reading-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin:2px 0 12px;flex:none;color:#25493a;font-size:14px}.access-reading-nav button{background:#e7f0e1;color:#25493a;border:2px solid #587761;border-radius:16px;font-size:23px;cursor:pointer;min-width:48px;min-height:48px}.access-reading-nav button:disabled{opacity:.4;cursor:default}
.access-preview{font-family:var(--font-child);background:#f1f7ed;border:2px solid #a3bfaa;border-radius:22px;padding:22px;line-height:1.65;color:#1b4939}.access-preview-controls{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin-top:12px}.access-preview-status{font-size:14px!important}
/* Alto contraste conserva colores didácticos y añade texto/bordes no ambiguos. */
body.high-contrast .child-ui,body.high-contrast .child-dialog{color:#172f26}
body.high-contrast .landmark-plaque,body.high-contrast .mission-badge,body.high-contrast .work-order>span{background:#fffbed!important;color:#172f26!important;border-color:#35523e!important}
body.high-contrast .play-button>.button-art,body.high-contrast .btn.kid-action>.toy-face{color:#172f26!important;border:2px solid #35523e!important}
body.high-contrast .play-button[aria-pressed=true]>.button-art,body.high-contrast .play-button.selected>.button-art{background:#ceeacb!important;color:#172f26!important;outline:2px solid #35523e}
body.high-contrast .world-bottom,body.high-contrast .habitat-caption,body.high-contrast .kid-label,body.high-contrast .work-label,body.high-contrast .mission-badge small{color:#172f26!important}
/* Acceso grande o ventana de zoom: flujo vertical, no escala inversa. */
body.large-text:not(.adult-mode) .workspace,body.access-large-targets:not(.adult-mode) .workspace{height:auto!important;min-height:var(--view-height)}
body.large-text:not(.adult-mode) .main,body.access-large-targets:not(.adult-mode) .main{flex:1 0 auto;min-height:0}
body.large-text .game-shell,body.access-large-targets .game-shell{flex:none;min-height:360px}
body.large-text .game-shell>.play-world,body.access-large-targets .game-shell>.play-world{height:auto!important;min-height:360px!important;flex:none}
body.large-text .game-shell .play-content,body.access-large-targets .game-shell .play-content{flex:none;min-height:285px!important;gap:14px}
body.large-text .child-ui p,body.large-text .child-dialog>p,body.large-text .school-paper>p,body.large-text .access-preview-text{font-size:22px!important;line-height:1.65!important}
body.large-text .mission-badge small,body.large-text .work-label,body.large-text .world-bottom,body.large-text .habitat-caption{font-size:16px!important;line-height:1.45!important}
body.large-text .mission-badge strong{font-size:24px!important}
body.large-text .child-ui .kid-label,body.large-text .child-dialog .kid-label{font-size:17px!important;line-height:1.4!important}
body.access-large-targets .child-ui button:not(.world-landmark):not(.habitat-spot),body.access-large-targets .child-dialog button{min-width:56px!important;min-height:56px!important;height:auto}
body.access-large-targets .work-seabed{grid-template-columns:repeat(6,minmax(56px,1fr));width:100%;max-width:100%;overflow:auto;justify-content:start}
body.access-large-targets .work-seabed .work-plot{height:60px!important}
body.access-large-targets .work-tools{flex-wrap:wrap}
body.access-large-targets .program-tools{grid-template-columns:repeat(3,minmax(56px,1fr));max-width:380px}
body.access-large-targets .program-strip{flex-wrap:wrap}.program-strip{overflow:visible}
body.access-large-targets .world-scene,body.large-text .world-scene{flex:none;min-height:460px!important}
body.access-large-targets .habitat-scene,body.large-text .habitat-scene{flex:none;min-height:400px}
/* Un tablero espacial conserva relaciones: scroll bidimensional SOLO dentro del tablero. */
.game-shell .play-content:has(.garden-tiles),.game-shell .play-content:has(.expedition-map){overflow:auto;max-width:100%}
body.access-large-targets .game-shell .garden-tiles{width:max-content!important;grid-template-columns:repeat(var(--cols),56px)!important;grid-template-rows:repeat(var(--rows),56px)!important;max-height:none!important;aspect-ratio:auto;max-width:none;margin-left:0}
body.access-large-targets .game-shell .expedition-map{width:calc(var(--n) * 58px)!important;height:calc(var(--n) * 58px)!important;max-width:none;max-height:none}
body.access-large-targets .game-shell .expedition-layout{max-width:100%;overflow:auto;align-items:flex-start}
@media(max-width:680px){
 .access-presets{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.access-preset{padding:12px}.access-preset>.toy-face{min-height:160px}.access-preset strong{font-size:15px}.access-preset span:not(.toy-face):not(.access-preset-icon){font-size:13px}
 .access-form{grid-template-columns:1fr}.access-intro{align-items:flex-start}.access-emblem{width:48px;height:48px}.access-tools .btn{width:100%;justify-content:center}.access-setting{gap:12px}
 .game-help-actions{gap:7px!important;justify-content:flex-start!important}.game-actions{gap:10px!important}
 body.access-large-targets .game-help-actions{flex:1 1 100%}.show-button-labels .game-help-actions{flex-wrap:wrap!important}
 body.large-text .game-top{flex-wrap:wrap;height:auto;gap:8px}.top-tools{gap:6px}
 body.access-large-targets .work-seabed{grid-template-columns:repeat(6,minmax(56px,1fr));max-width:100%;min-width:0}
 .dialog{padding:18px 16px;border-radius:24px}.access-reading-nav{gap:10px}
}
@media(max-width:360px),(max-height:580px){
 body:not(.adult-mode) .workspace{height:auto!important;min-height:var(--view-height)}
 body:not(.adult-mode) .main{flex:none;min-height:0}.home-v043{min-height:400px;flex:none}
 body:not(.adult-mode) .game-shell{flex:none;min-height:400px}.game-shell>.play-world{min-height:400px!important;flex:none}.game-shell .play-content{min-height:300px!important}
 .world-scene{flex:none;min-height:440px!important}.habitat-scene{flex:none;min-height:350px}
 .home-brand small,.pill.gold{display:none}.home-brand strong{font-size:16px}.home-logo,.home-logo img{width:36px;height:36px}.topbar{padding:8px!important}
 .world-horizons{flex-wrap:wrap;gap:9px!important}.horizon-control{min-width:92px;max-width:none;width:96px}
 .world-heading{flex-wrap:wrap}.world-heading h1{overflow-wrap:anywhere}.game-top .step-dots{display:none}
}
@media(forced-colors:active){
 .child-ui button,.child-dialog button,.access-preset{border:2px solid ButtonText!important;background:ButtonFace!important;color:ButtonText!important}
 .landmark-plaque,.mission-badge,.work-order>span{border:2px solid CanvasText!important;background:Canvas!important;color:CanvasText!important}
 [aria-pressed=true]{outline:3px solid Highlight!important}.access-phrase.active{outline:2px solid Highlight}
}
.access-demo-control{border:2px solid #41755b;border-radius:28px;background:#d9eace;color:#245d46;width:88px;min-height:88px;cursor:pointer;padding:12px;box-shadow:0 5px 0 #7eab83;font:600 16px var(--font-child)}
.access-demo-control>.toy-face{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px}.access-demo-control .icon{width:36px;height:36px}
body.access-large-targets .access-demo-control{width:104px;min-height:104px}
body.large-text .access-preview-text{font-size:22px!important}
body.high-contrast .access-preview{background:#fffbed;color:#172f26;border-color:#35523e}

.dialog-audio-stop{position:sticky;bottom:-4px;display:flex;justify-content:center;padding:8px;background:#fff9ef;z-index:12;border-top:2px solid #96b29c;flex:none}.dialog-audio-stop .btn{min-height:48px}

/* Unidades espaciales con tamaño estable, dentro de un visor desplazable.
   32 px normal / 56 ampliado en mapas y baldosas; no omitir datos ni invertir zoom. */
.game-shell{--access-cell:32px;--access-work-cell:48px}
body.access-large-targets .game-shell{--access-cell:56px;--access-work-cell:56px}
.access-board-scroll{max-width:100%;min-width:0;overflow:auto;overscroll-behavior:contain;scroll-padding:8px;touch-action:pan-x pan-y;border-radius:18px;flex:none;position:relative}
.game-shell .play-content{overflow:visible}
.game-shell .play-content:has(.garden-tiles),.game-shell .play-content:has(.expedition-map){overflow:visible}
.game-shell .access-board-scroll{max-height:300px;max-height:clamp(190px,42vh,360px);margin:4px auto;padding:3px}
.game-shell .area-board,.game-shell .map-board{width:max-content;max-width:100%}
.game-shell .expedition-layout{flex-wrap:wrap;max-width:100%;width:100%;overflow:visible!important;justify-content:center;align-items:center!important}
.game-shell .expedition-map{width:max-content!important;height:max-content!important;max-width:none!important;max-height:none!important;grid-template-columns:repeat(var(--n),var(--access-cell))!important;grid-template-rows:repeat(var(--n),var(--access-cell))!important;gap:2px!important;margin:0!important;overflow:visible}
.game-shell .garden-tiles{width:max-content!important;height:max-content!important;max-width:none!important;max-height:none!important;grid-template-columns:repeat(var(--cols),var(--access-cell))!important;grid-template-rows:repeat(var(--rows),var(--access-cell))!important;gap:2px!important;aspect-ratio:auto!important;margin:0!important}
.child-ui .game-shell .access-board-scroll .map-cell,.child-ui .game-shell .access-board-scroll .garden-tiles .play-button{min-width:var(--access-cell)!important;min-height:var(--access-cell)!important;width:var(--access-cell)!important;height:var(--access-cell)!important}
.game-shell .crystal-board{width:100%;overflow:auto;max-width:100%;padding-bottom:9px}
.game-shell .crystal-whole{grid-template-columns:repeat(var(--parts),var(--access-cell))!important;grid-template-rows:auto!important;width:max-content!important;gap:3px!important;margin:0 auto}
.child-ui .game-shell .access-board-scroll .crystal-whole .play-button{min-width:var(--access-cell)!important;width:var(--access-cell)!important;min-height:48px!important}
.game-shell .work-board{width:100%;max-width:560px;overflow:auto;padding:3px 3px 12px}
.game-shell .work-seabed{grid-template-columns:repeat(6,minmax(var(--access-work-cell),1fr))!important;width:max-content!important;min-width:100%!important;max-width:none!important;overflow:visible!important;padding:9px!important;gap:6px!important;margin:0!important}
.game-shell .work-seabed .work-plot{width:var(--access-work-cell)!important;height:60px!important;min-width:var(--access-work-cell)!important}
.dialog{animation:access-dialog-fade 140ms ease-out both!important;transform:none!important}
.modal-leaving .dialog{animation:access-dialog-out 120ms ease-in both!important;transform:none!important}
@keyframes access-dialog-fade{from{opacity:0}to{opacity:1}}
@keyframes access-dialog-out{from{opacity:1}to{opacity:0}}
body.access-motion-off .dialog,body.access-motion-off .modal-leaving .dialog{animation:none!important}
.app-footer{flex-wrap:wrap;overflow-wrap:anywhere;gap:8px}

/* Un ancestro recortado no debe convertirse en otro scroller al enfocar una pieza. */
.game-shell>.play-world{overflow:clip!important}
.access-board-scroll{scrollbar-gutter:stable}
/* Etiquetas largas o espaciado personalizado: crecer/refluir, nunca recortar. */
.show-button-labels .kid-label{overflow-wrap:anywhere!important;max-width:100%!important}
body.large-text.show-button-labels .game-top-tools .btn.kid-action{min-width:116px!important;width:116px!important;max-width:100%}
.game-top-tools{flex-wrap:wrap;max-width:100%}

.garden-tiles .play-button.filled .floor-tile:after{content:'✓';display:grid;place-items:center;width:100%;height:100%;font:700 19px/1 sans-serif;color:#5b3a15}
.large-text .map-coordinate{font-size:12px!important;line-height:1.2!important;color:#193e35!important}

/* Coherence correction: one owner for each preference, vertical section navigation. */
.access-layout{display:grid;grid-template-columns:minmax(170px,220px) minmax(0,1fr);gap:20px;align-items:start;max-width:100%;min-width:0}
.access-section-nav{display:flex;flex-direction:column;gap:8px;position:sticky;top:14px;min-width:0;padding:12px;background:var(--paper,#fffaf0);border:1px solid #c9d7ce;border-radius:18px}
.access-section-nav button{display:block;width:100%;text-align:left;white-space:normal;overflow-wrap:anywhere;min-height:48px;padding:12px 14px;border:1px solid transparent;border-radius:12px;background:transparent;color:inherit;font:inherit;cursor:pointer}
.access-section-nav button:hover{background:#edf3ed}.access-section-nav button[aria-current=page]{background:#e1eee7;border-color:#5e8a79;font-weight:750}.access-section-nav button:focus-visible{outline:3px solid #39745f;outline-offset:2px}
.access-section-content{min-width:0}.access-section-content>.panel{margin:0}.access-font-setting{display:flex;flex-direction:column;gap:10px;margin:18px 0}.access-font-setting .input{max-width:100%}
.settings-destinations{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:18px}.settings-destinations article{padding:18px;border:1px solid #cad6cc;border-radius:16px;background:#f6f7ef}.settings-destinations p{overflow-wrap:anywhere}
.high-contrast .access-section-nav button[aria-current=page]{color:#111;background:#fff;border:3px solid #111}
@media(max-width:700px){.access-layout{grid-template-columns:minmax(0,1fr);gap:14px}.access-section-nav{position:static;padding:8px;gap:4px}.access-section-nav button{min-height:48px;padding:10px 12px}.access-section-content>.panel{padding:18px 14px}.access-section-content .access-setting{gap:10px}}
