DARMASTER Platform · Layout Standard

3-Column Multi-Device Layout

The single, controlling layout structure every DARMASTER platform page follows (skin manager, document registry, and any page with side panels). Reference implementation: __darmaster/08/skin2.php.

GOLD RULE — never break: the header nav and the PageContentArea are LINED UP at every window width. The header occupies the column w1; the PageContentArea is centered inside it at w1 − 40px, so the content band's visible edges sit just inside the nav's tab row. The PageContentArea is derived from w1 and is never wider than the header — in CSS it uses width:100%; max-width:calc(var(--w1) - 40px), never a hard width.

This standard reflects an audit of the live page (__darmaster/08/skin2.php, 2026-06-19). The values below are measured, not aspirational.

1. The three zones

Every page is a header band (width w1) above three side-by-side zones:

Wide window — all three zones visible

HEADER — width w1
Lpfixed Lw
PageContentArea = w1 − 40pxcentered inside the header, lined up in the tab row
Rpfixed Rw

Narrow window — panels hide off-canvas behind edge handles

HEADER — width w1
PageContentArea = w1 − 40pxstays lined up; gutters freed for the page

Lp / Rp are hidden (slid off-canvas); a thin handle reveals each one over the content on demand.

2. w1 — the responsive header column

w1 is the header width. The PageContentArea is tied to it but sits 40px narrower (centered inside it). w1 is fluid between a minimum and a maximum, set from the window:

--w1: clamp(MIN, calc(100vw - GUTTERS), MAX);

Current skin2.php values: --w1: clamp(640px, calc(100vw - 560px), 640px) — i.e. min 640px, max 640px (effectively fixed at 640px; shrinks to fit windows narrower than 640px). The PageContentArea is therefore 640 − 40 = 600px. Change MIN/MAX to open up a fluid range; the −40px content inset rides along automatically.

3. Side panels — fixed width, hide (never shrink)

4. Multi-device behaviour

WindowHeader (w1)PageContentArea (w1 − 40)Lp / Rp
Wide (gutters fit the panels)w1 at/near MAX, centered40px inside the header, centeredVisible in the gutters
Medium (gutters too tight, ≤ breakpoint)w1, gutters reclaimedstill w1 − 40, centeredHidden off-canvas; handles shown
Narrow (< w1 MIN)Shrinks to the windowShrinks with it, stays 40px inside & lined upHidden; handles shown

5. Audited values (skin2.php · window 1245px)

Elementleftrightwidthrule
Header nav (.darx-nav-top/-sections)295935640max-width: var(--w1)
PageContentArea (.s2-wrap / .s2-main / save bar)315915600max-width: calc(var(--w1) - 40px)
Left rail (gutter)55299244fixed, margin-left:-260px
Right preview (gutter)9311175244fixed, margin-right:-260px

The header (640) and the content column (600) share the same centre; the content is inset exactly 20px on each side (295→315 and 935→915), landing it inside the nav's tab row.

6. CSS implementation

/* w1 drives the HEADER; the content sits 40px inside it */
:root { --w1: clamp(640px, calc(100vw - 560px), 640px); }

/* header (shared section nav) = w1 */
.darx-nav-top, .darx-nav-sections { max-width: var(--w1) !important; }

/* PageContentArea: w1 minus 40px, centered, NEVER wider than the header (GOLD RULE) */
.wrap { width: 100%; max-width: calc(var(--w1) - 40px); margin: 0 auto; }

/* fixed-width side panels in the gutters */
.left-panel  { float: left;  width: 244px; margin-left:  -260px; }
.right-panel { float: right; width: 244px; margin-right: -260px; }

/* below the fit breakpoint: panels off-canvas + handle, w1 reclaims gutters
   (the content stays w1 - 40, still lined up) */
@media (max-width: 1199px) {
  :root { --w1: clamp(640px, calc(100vw - 28px), 640px); }
  .wrap { max-width: calc(var(--w1) - 40px); }
  .left-panel, .right-panel { position: fixed; transform: translateX(-100%/100%); }
  .left-handle, .right-handle { display: flex; }
}

7. Do / Don't


DARMASTER Platform · Internal layout standard · 2026-06-19 · revised from live-page audit