/* Game frame: the canvas owns the table; the console owns all interface text.
   No game controls use scene coordinates or overlap the WebGL viewport. */
.gdy-3d {
  --table-accent:#315b4b;
  background:#eee9df;
  color:#253d35;
  margin-top:76px;
  padding:28px clamp(16px,3vw,48px) 48px;
  scroll-margin-top:76px;
}
.gdy-3d .gdy-inner { max-width:1560px; margin:auto; }
.gdy-3d .gdy-head { display:block; margin:0 0 24px; }
.gdy-3d .gdy-title { font-size:38px; line-height:1.1; margin:0 0 8px; color:#253d35; }
.gdy-3d .gdy-title em { color:inherit; background:none; }
.gdy-3d .gdy-lede { max-width:70ch; font-size:14px; line-height:1.6; margin:0; color:#4d594c; }
.gdy-3d .gdy-meta,.gdy-3d .gdy-howto-audio { display:none; }
.gdy-3d.dy-playing .gdy-lede { display:none; }
.dy-game-layout { display:grid; grid-template-columns:minmax(0,1fr) 344px; gap:24px; align-items:start; }
.dy-stage,.dy-game-panel { min-width:0; }
.dy-stage { background:#f8f4eb; border-radius:12px; overflow:hidden; }
.dy-table-tools { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px; border-bottom:1px solid #ddd4c4; }
.dy-table-tools a { display:inline-flex; align-items:center; min-height:44px; font-size:12px; color:#315b4b; text-decoration:underline; text-underline-offset:4px; }
.dy-camera-controls { display:flex; flex-wrap:wrap; gap:8px; }
.dy-table-tools button { min-height:44px; padding:10px 14px; border:1px solid #d3cbbb; border-radius:6px; background:transparent; color:#253d35; font:inherit; font-size:12px; cursor:pointer; }
.dy-table-tools button:hover { background:#e4e8da; }
.dy-table-tools button[aria-pressed="true"] { background:#e0e6d8; border-color:#82927a; }
.dy-table { position:relative; width:100%; height:clamp(440px,55vw,680px); background:#b69c76; overflow:hidden; }
.dy-table canvas { display:block; width:100%; height:100%; touch-action:pan-y; }
.dy-loading { position:absolute; inset:0; display:grid; place-items:center; padding:32px; margin:0; text-align:center; color:#253d35; background:#f5efdf; }
.dy-table-hint { margin:0; padding:12px 16px; min-height:44px; font-size:12px; line-height:1.6; color:#53604e; text-align:center; }
.dy-hint-mobile { display:none; }
.gdy-3d:not(.dy-playing) .dy-table-hint { display:none; }
.dy-game-panel { background:#f8f4eb; border-radius:12px; padding:24px; }
.gdy-3d .gdy-setup,.gdy-3d .gdy-ending { width:auto; margin:0; }
.gdy-3d .gdy-card-setup,.gdy-3d .gdy-card-ending { padding:0; background:none; border:0; box-shadow:none; border-radius:0; }
.gdy-3d .gdy-eyebrow { display:none; }
.gdy-3d .gdy-setup-heading,.gdy-3d .gdy-ending-heading { font-size:30px; color:#253d35; }
.gdy-3d .gdy-setup-lede,.gdy-3d .gdy-ending-lede,.gdy-3d .gdy-ending-after { font-size:14px; margin:12px 0 20px; }
.gdy-3d .gdy-modes { display:flex; flex-direction:column; gap:8px; margin:0 0 20px; }
.gdy-3d .gdy-mode { display:block; padding:14px; min-height:0; background:transparent; border:1px solid #d3cbbb; border-radius:6px; box-shadow:none; }
.gdy-3d .gdy-mode[aria-pressed="true"] { background:#e4e8da; border-color:#82927a; box-shadow:none; }
.gdy-3d .gdy-mode-swatch,.gdy-3d .gdy-mode-text { display:none; }
.gdy-3d .gdy-mode-label { font-size:14px; margin:0 0 4px; }
.gdy-3d .gdy-mode-sub { font-family:var(--font-body); font-size:12px; letter-spacing:0; text-transform:none; margin:0; color:#596250; }
.gdy-3d .gdy-btn { font-family:var(--font-body); text-transform:none; letter-spacing:0; font-size:14px; min-height:44px; border-radius:6px; padding:12px 16px; }
.gdy-3d .gdy-btn-primary { background:#315b4b; color:#fff8e7; border-color:#315b4b; box-shadow:none; }
.gdy-3d .gdy-btn-primary:hover { background:#234333; border-color:#234333; }
.gdy-3d .gdy-btn-ghost { background:transparent; border-color:#d3cbbb; color:#253d35; }
.gdy-3d .gdy-btn-big { width:100%; min-width:0; }
.gdy-3d .gdy-room { padding:16px; }
.gdy-3d .gdy-room-row { flex-wrap:wrap; }
.gdy-3d .gdy-room-input { width:100%; min-width:0; }
.gdy-3d .gdy-board { display:flex; flex-direction:column; gap:16px; margin:0; padding:0; max-width:none; background:none; border:0; border-radius:0; box-shadow:none; }
.gdy-3d .gdy-track { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; padding:0; margin:0; }
.gdy-3d .gdy-level { flex:none; display:block; min-width:0; min-height:64px; padding:10px 6px; border:1px solid #d3cbbb; border-radius:6px; text-align:center; background:transparent; opacity:1; }
.gdy-3d .gdy-level.is-current { background:#e4e8da; border-color:#82927a; box-shadow:none; }
.gdy-3d .gdy-level-ring { display:none; }
.gdy-3d .gdy-level-name { font-family:var(--font-body); font-size:12px; line-height:1.4; }
.gdy-3d .gdy-level-state { font-family:var(--font-body); font-size:10px; line-height:1.5; letter-spacing:0; text-transform:none; color:#596250; }
.gdy-3d .gdy-statusbar { display:flex; flex-direction:column; align-items:stretch; gap:8px; margin:0; }
.gdy-3d .gdy-turn { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:0; padding:0; border:0; background:none; }
.gdy-3d .gdy-turn-side { padding:10px; border-radius:6px; background:#ececdf; }
.gdy-3d .gdy-turn-side.is-asking { background:#e0e6d8; }
.gdy-3d .gdy-turn-who { display:block; margin:0 0 2px; color:#53604e; font-family:var(--font-body); font-size:11px; letter-spacing:0; }
.gdy-3d .gdy-turn-role { display:block; color:#315b4b; font-size:16px; }
.gdy-3d .gdy-turnhelp { font-size:12px; line-height:1.6; text-align:left; color:#53604e; margin:0; }
.gdy-3d .gdy-roomtag,.gdy-3d .gdy-solo-tag { margin:0; font-family:var(--font-body); font-size:12px; letter-spacing:0; color:#315b4b; }
.gdy-3d .gdy-controls { display:grid; grid-template-columns:auto minmax(0,1fr); gap:8px; margin:0; }
.gdy-3d .gdy-controls .gdy-btn { width:auto; min-width:0; }
.gdy-3d .gdy-btn-levelup { grid-column:1/-1; }
.gdy-3d .gdy-stack { max-width:none; margin:0; padding:0; perspective:none; }
.gdy-3d .gdy-shadowcard { display:none; }
.gdy-3d .gdy-card-face::before,.gdy-3d .gdy-card-face::after { display:none; }
.gdy-3d .gdy-card-face { min-height:0; padding:0; background:none; box-shadow:none; border:0; border-radius:0; outline:0; animation:none; transform:none; }
/* Only the semantic duplicate of the physical card is visually hidden. */
.gdy-3d:not(.dy-no-webgl) .gdy-face-head,.gdy-3d:not(.dy-no-webgl) .gdy-prompt,.gdy-3d:not(.dy-no-webgl) .gdy-wild { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.gdy-3d .gdy-face-foot { position:static; margin:0; padding:0; }
.gdy-3d .gdy-face-foot .gdy-btn { width:100%; }
.gdy-3d .gdy-dig { margin:0 0 12px; padding:16px; background:#e4e8da; border-radius:6px; }
.gdy-3d .gdy-dig-need { color:#315b4b; font-size:25px; }
.gdy-3d .gdy-levelnote { margin:0; padding:16px 0 0; border:0; border-top:1px solid #ddd4c4; background:none; }
.gdy-3d .gdy-levelnote-text { font-size:13px; line-height:1.6; }
.gdy-3d .gdy-progress { margin:0; font-size:11px; color:#596250; }
.gdy-3d .gdy-shufflenote { margin:0; font-size:12px; line-height:1.6; color:#53604e; }
.gdy-3d .gdy-audiobar { margin:0; padding:16px 0 0; border:0; border-top:1px solid #ddd4c4; border-radius:0; background:none; justify-content:flex-start; gap:12px; }
.gdy-3d .gdy-audiotoggle-label { font-size:12px; color:#53604e; }
.gdy-3d .game-guide { margin:0; padding:0; background:none; border:0; }
.gdy-3d .game-guide-replay { background:none; }
.gdy-3d .game-guide-content { max-height:none; overflow:visible; }
.gdy-3d .game-guide-steps,.gdy-3d .game-guide-rules { grid-template-columns:1fr; }
.gdy-3d .gdy-restart { align-self:flex-start; margin:0; padding:10px 0; min-height:44px; color:#53604e; font-family:var(--font-body); font-size:12px; letter-spacing:0; text-transform:none; }
.gdy-3d :is(button,a,[tabindex]):focus-visible { outline:3px solid #315b4b; outline-offset:3px; }
.gdy-3d.dy-no-webgl .dy-table { height:auto; min-height:140px; }
.gdy-3d.dy-no-webgl .dy-loading { position:static; min-height:140px; }
.gdy-3d.dy-no-webgl .dy-table canvas,.gdy-3d.dy-no-webgl .dy-camera-controls,.gdy-3d.dy-no-webgl .dy-table-hint { display:none; }
.gdy-3d.dy-no-webgl .gdy-prompt { font-size:25px; margin:16px 0; }
@media(max-width:1050px) {
  .dy-game-layout { grid-template-columns:minmax(0,1fr) 300px; gap:16px; }
  .dy-game-panel { padding:18px; }
}
@media(max-width:800px) {
  .gdy-3d { padding:20px 16px 32px; }
  .gdy-3d .gdy-title { font-size:32px; }
  .gdy-3d .gdy-head { margin-bottom:16px; }
  .dy-game-layout { grid-template-columns:minmax(0,1fr); gap:16px; }
  .dy-table { height:360px; }
  .gdy-3d:not(.dy-playing) .dy-table { height:260px; }
  .dy-table-tools { padding:10px 12px; gap:8px; }
  .dy-table-tools button { padding:10px; font-size:11px; }
  .dy-table-tools a { font-size:11px; }
  .dy-camera-controls { gap:6px; }
  .dy-hint-desktop { display:none; }
  .dy-hint-mobile { display:inline; }
  .dy-table-hint { font-size:11px; padding:10px 12px; }
  .dy-game-panel { padding:20px; }
}
@media(prefers-reduced-motion:reduce) {
  .gdy-3d * { scroll-behavior:auto!important; animation:none!important; transition:none!important; }
}
.gdy-3d.dy-compact-table .dy-hint-desktop { display:none; }
.gdy-3d.dy-compact-table .dy-hint-mobile { display:inline; }
