diff --git a/src/apps/epic/static/apps/epic/room.js b/src/apps/epic/static/apps/epic/room.js index 9f144df..99a2544 100644 --- a/src/apps/epic/static/apps/epic/room.js +++ b/src/apps/epic/static/apps/epic/room.js @@ -1,5 +1,5 @@ (function () { - var SCENE_W = 360, SCENE_H = 300; + var SCENE_W = 360, SCENE_H = 320; function scaleTable() { var scene = document.querySelector('.room-table-scene'); diff --git a/src/static_src/scss/_room.scss b/src/static_src/scss/_room.scss index dcfaf62..a436d54 100644 --- a/src/static_src/scss/_room.scss +++ b/src/static_src/scss/_room.scss @@ -337,7 +337,7 @@ html.sea-open #id_aperture_fill { align-items: stretch; gap: 2rem; width: 100%; - max-height: 80vh; + height: 100%; align-self: stretch; } @@ -345,24 +345,22 @@ html.sea-open #id_aperture_fill { // // .table-hex: regular pointy-top hexagon. // clip-path polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%) -// on a 160×185 container gives equal-length sides (height = width × 2/√3). +// on a 200×231 container gives equal-length sides (height = width × 2/√3). // // Seats use absolute positioning from the .room-table centre. -// $seat-r = 130px — radius to seat centroid -// $seat-r-x = round(130px × sin60°) = 113px — horizontal component -// $seat-r-y = round(130px × cos60°) = 65px — vertical component -// // Clockwise from top: slots 1→2→3→4→5→6. -$seat-r: 130px; -$seat-r-x: round($seat-r * 0.866); // 113px -$seat-r-y: round($seat-r * 0.5); // 65px +$seat-r: 140px; +$seat-r-x: round($seat-r * 0.866); // 121px +$seat-r-y: round($seat-r * 0.5); // 70px // Seat edge-midpoint geometry (pointy-top hex). -// Apothem ≈ 80px + 30px clearance = 110px total push from centre. -$pos-d: 110px; -$pos-d-x: round($pos-d * 0.5); // 55px -$pos-d-y: round($pos-d * 0.866); // 95px +// 200×231 hex → apothem = 100px; $pos-d = 140 leaves 40px design-units of +// chair clearance radially. $pos-d-x / $pos-d-y are the x/y components for +// diagonal seats (cos/sin of 60° from horizontal). +$pos-d: 140px; +$pos-d-x: round($pos-d * 0.5); // 70px +$pos-d-y: round($pos-d * 0.866); // 121px // ─── Position strip ──────────────────────────────────────────────────────── // Numbered gate-slot circles sit above the gate backdrop/overlay (z 130 > 120 @@ -482,10 +480,12 @@ html:has(.gate-backdrop) .position-strip .gate-slot button { pointer-events: aut } // Fixed design-size scene; JS scales it to fill .room-table via transform: scale(). -// Design dims: seat reach is ±110px H / ±95px V from centre + seat element size. +// Design dims: seat reach is ±140px H / ±121px V from centre + seat element size. +// scene H of 320 leaves vertical headroom at large landscape so the rem-scaled +// chair icons + labels don't clip the aperture top/bottom edges. .room-table-scene { width: 360px; - height: 300px; + height: 320px; position: relative; display: flex; align-items: center; @@ -496,8 +496,8 @@ html:has(.gate-backdrop) .position-strip .gate-slot button { pointer-events: aut // Hex border: clip-path clips CSS borders, so the ring is a wrapper with the // same hex polygon at a slightly larger size. 0.25rem each side — subtle only. .table-hex-border { - width: calc(160px + 0.5rem); - height: calc(185px + 0.5rem); + width: calc(200px + 0.5rem); + height: calc(231px + 0.5rem); clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); background: rgba(var(--quaUser), 1); filter: drop-shadow(0 0 6px rgba(var(--quaUser), 0.5)); @@ -507,8 +507,8 @@ html:has(.gate-backdrop) .position-strip .gate-slot button { pointer-events: aut } .table-hex { - width: 160px; - height: 185px; + width: 200px; + height: 231px; clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); // Six gradients — one per hex face — each perpendicular to that face so the // shadows follow the hex geometry rather than the rectangular bounding box.