MSPACEZDesign System v1.1
Downloads
Components

Containers for facts.

The coded components of the system: 22 live previews from the package, their rules, their markup and a live reference of every .msz-* class in components/bundle.css. Build only from tokens and .msz-* components.

Live class reference

Rendered here with the package’s own components/bundle.css and tokens.css. Click a class name to copy the markup.

.msz-btn
Read the guide →
.msz-btn
FurnishedPrivate officeAvailable now
.msz-chip
.msz-marker
OverviewPricingBranches
.msz-tabs
AvailableConfirmedLimitedFully booked
.msz-status
.msz-field
Enter a full email address
.msz-input.error
Team
1–20+
Access
24/7
Setup
None
.msz-spec
ServicePrivate office
Book →
.msz-info
6.4 m
.msz-dim
Light, then decisive.
.msz-display
<link rel="stylesheet" href="tokens.css">
<link rel="stylesheet" href="components/bundle.css">

<body class="msz">              <!-- Latin: Montserrat -->
<section class="msz" dir="rtl">  <!-- Arabic: Alexandria, mirrored -->

Components

22 coded components from the package, each with its rules, live preview and markup.

Component · 01

Article Card

Photo, kicker, title, read link — EN and AR

Photo, kicker, title, read link — EN and AR. No excerpt and no date on cards. Kicker = series · reading time.

.msz-card.msz-label.msz-h4.msz-btn
View markup
<div class="row" style="align-items:stretch">
  <div class="msz-card" style="width:300px">
    <div class="media" style="background-image:var(--p-large-office-north90);background-position:50% 55%;background-size:cover;background-repeat:no-repeat;"></div>
    <div class="body">
      <div class="msz-label" style="color:#6B6B6B">Growth notes · 5 min</div>
      <div class="msz-h4" style="margin-top:8px">How SMEs scale without moving office</div>
      <a class="msz-btn text" style="margin-top:12px">Read →</a>
    </div>
  </div>
  <div class="msz-card" dir="rtl" style="width:300px;font-family:var(--font-arabic)">
    <div class="media" style="background-image:var(--p-office-10th-b);background-position:55% 50%;background-size:cover;background-repeat:no-repeat;"></div>
    <div class="body">
      <div class="msz-label" style="color:#6B6B6B">مقالات النمو · 4 دقائق</div>
      <div class="msz-h4" style="margin-top:8px">متى تنتقل إلى مكتب خاص؟</div>
      <a class="msz-btn text" style="margin-top:12px">اقرأ ←</a>
    </div>
  </div>
</div>
Component · 02

Branch Card

Photo, market label, name, live status

Photo, market label, name, live status. 4:3 photo from that branch only. Status reflects live availability.

.msz-card.msz-label.msz-h4.msz-status
View markup
<div class="msz-card" style="width:300px">
  <div class="media" style="background-image:var(--p-exterior-10th);background-position:50% 50%;background-size:cover;background-repeat:no-repeat;"></div>
  <div class="body">
    <div class="msz-label" style="color:#6B6B6B">Branch · Egypt</div>
    <div class="msz-h4" style="margin-top:6px">10th of Ramadan</div>
    <div style="margin-top:10px">
      <span class="msz-status available">Offices available</span>
    </div>
  </div>
</div>
Component · 03

Button

Primary, secondary, campaign, text, on-dark, disabled, focus, Arabic

Primary, secondary, campaign, text, on-dark, disabled, focus, Arabic. Height 44 px (48 mobile), radius 0, label 13 px / 600 / caps (Arabic 14 px, no caps). One primary per view. Campaign (red, black label) only inside campaign surfaces; never white text on red.

.msz-btn
View markup
<div class="row">
  <div>
    <div class="lbl">Primary</div>
    <button class="msz-btn">Book a tour →</button>
  </div>
  <div>
    <div class="lbl">Secondary</div>
    <button class="msz-btn secondary">Get a quote</button>
  </div>
  <div>
    <div class="lbl">Campaign</div>
    <button class="msz-btn campaign">Claim offer →</button>
  </div>
  <div>
    <div class="lbl">Text</div>
    <a class="msz-btn text">Read the guide →</a>
  </div>
  <div>
    <div class="lbl">Disabled</div>
    <button class="msz-btn" disabled>Book a tour</button>
  </div>
  <div>
    <div class="lbl">Focus</div>
    <button class="msz-btn" style="outline:2px solid #000;outline-offset:3px">Book a tour →</button>
  </div>
  <div>
    <div class="lbl">On dark</div>
    <div style="background:#000;padding:12px">
      <button class="msz-btn on-dark">Book a tour →</button>
    </div>
  </div>
  <div>
    <div class="lbl">Arabic</div>
    <button class="msz-btn" dir="rtl">احجز جولة ←</button>
  </div>
</div>
Component · 04

Chip

Information chips: default, active, available, unavailable, Arabic

Information chips: default, active, available, unavailable, Arabic. Chips carry facts that are true for that branch. Max 4 on a photo. Radius 2 px. The red square inside a chip is the surface’s one marker.

.msz-chip.msz-marker
View markup
<div class="row">
  <span class="msz-chip">Furnished</span>
  <span class="msz-chip active">Private office</span>
  <span class="msz-chip">
    <span class="msz-marker"></span>Available now
  </span>
  <span class="msz-chip" style="color:#A6A6A6;border-color:#D9D9D9">Unavailable</span>
  <span class="msz-chip" dir="rtl">مجهّز</span>
  <div style="background:#1C1C1C;padding:10px">
    <span class="msz-chip on-photo">On photo</span>
  </div>
</div>
Component · 05

Colour Field

Partial red field with off-white display type (Campaign mode)

Partial red field with off-white display type (Campaign mode). Red takes ≤ 60% of the surface. Display type on red is off-white (Light → Bold); body copy stays black on off-white. One per 6–9 posts.

.msz-label
View markup
<div style="width:300px;height:375px;background:var(--paper);position:relative">
  <div style="height:215px;background:var(--brand-red);padding:18px">
    <div class="msz-label" style="font-size:8px;color:#000">Offer · sample</div>
    <div style="font:300 21px/1.1 var(--font-sans);color:var(--paper);margin-top:108px">Book three hours, <b style="font-weight:700">the fourth is on us.</b>
    </div>
  </div>
  <div style="padding:14px 18px;font:400 10px/1.5 var(--font-sans);color:var(--graphite)">Meeting rooms in every Egypt branch. Terms in caption.</div>
  <div style="position:absolute;left:18px;bottom:16px;background:#000;color:#fff;font:600 8px var(--font-sans);padding:7px 10px">BOOK →</div>
</div>
Component · 06

Dimension Line

A measured line with end ticks and a label

A measured line with end ticks and a label. Labels a span of time, space or capacity. Never an invented measurement. One per surface.

.msz-dim
View markup
<div style="max-width:560px;padding-top:14px">
  <div class="msz-dim">
    <span>2014 → today</span>
  </div>
</div>
<div style="max-width:560px;padding-top:34px" dir="rtl">
  <div class="msz-dim">
    <span>8 مقاعد</span>
  </div>
</div>
Component · 07

Empty State

Plan drawing, message, one action

Plan drawing, message, one action. Explain what will appear and offer the one action that fills it.

.msz-h4.msz-small.msz-btn
View markup
<div style="max-width:560px;border:1px dashed #A6A6A6;padding:28px;display:grid;grid-template-columns:140px 1fr;gap:24px;align-items:center">
  <div style="height:110px"><svg viewBox="0 0 200 160" width="140" height="110" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#A6A6A6" stroke-width="1.2" stroke-linecap="square" /><rect x="55" y="58.0" width="90" height="44" fill="none" stroke="#A6A6A6" stroke-width="0.96" /><circle cx="66" cy="46.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><circle cx="66" cy="114.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><circle cx="89" cy="46.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><circle cx="89" cy="114.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><circle cx="112" cy="46.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><circle cx="112" cy="114.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><circle cx="135" cy="46.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><circle cx="135" cy="114.0" r="7" fill="none" stroke="#A6A6A6" stroke-width="0.96"/><path d="M178 50.0V110.0" fill="none" stroke="#A6A6A6" stroke-width="1.2" stroke-linecap="square" stroke-width="3.5999999999999996"/><rect x="94" y="74.0" width="12" height="12" fill="#F05C49"/></svg>
  </div>
  <div>
    <div class="msz-h4">No bookings yet.</div>
    <div class="msz-small" style="color:#404040;margin-top:6px">Meeting rooms in every branch, by the hour.</div>
    <button class="msz-btn" style="margin-top:14px">Book a room</button>
  </div>
</div>
Component · 08

End Card

Video end cards A brand · B service · C branch · D lead · E social

Video end cards A brand · B service · C branch · D lead · E social. Duration 2.5–3.5 s: build 500 ms, hold ≥ 2 s, cut. Off-white is the default ground. The master logo sits only on off-white (or an off-white plate/base on black or red) — no recoloured logo; an official white master is an owner asset. Red only for lead generation, with off-white type.

.msz-label
View markup
<!-- Logo/symbol sprite: see assets/Logo (masters) -->
<div class="row" style="gap:14px;align-items:flex-start">
  <div style="width:150px;height:267px;background:var(--paper);display:grid;place-items:center"><svg class="lg " viewBox="0 0 3247 677" style="width:110px;height:22.94px;" aria-label="MSPACEZ"><use href="#msz-logo" width="3247" height="677"/></svg>
  </div>
  <div style="width:150px;height:267px;background:var(--paper);position:relative;padding:18px 14px">
    <div class="msz-label" style="font-size:8px;color:#000">Private offices</div>
    <div style="font:300 19px/1.1 var(--font-sans);margin-top:8px">Your office, <b style="font-weight:700">ready on day one.</b>
    </div>
    <div style="position:absolute;left:14px;right:14px;bottom:44px;background:#000;color:#fff;font:600 8px var(--font-sans);letter-spacing:.06em;padding:8px">BOOK A TOUR →</div>
    <div style="position:absolute;left:14px;bottom:18px"><svg class="lg " viewBox="0 0 3247 677" style="width:70px;height:14.6px;" aria-label="MSPACEZ"><use href="#msz-logo" width="3247" height="677"/></svg>
    </div>
  </div>
  <div style="width:150px;height:267px;background:var(--paper);position:relative">
    <div style="height:125px;background-image:var(--p-reception-north90);background-position:50% 55%;background-size:cover;background-repeat:no-repeat;"></div>
    <div style="padding:10px 14px;font:300 24px var(--font-sans)">North 90</div>
    <div style="position:absolute;left:14px;right:14px;bottom:44px;background:#000;color:#fff;font:600 8px var(--font-sans);padding:8px">BOOK A TOUR →</div>
    <div style="position:absolute;left:14px;bottom:18px"><svg class="lg " viewBox="0 0 3247 677" style="width:70px;height:14.6px;" aria-label="MSPACEZ"><use href="#msz-logo" width="3247" height="677"/></svg>
    </div>
  </div>
  <div style="width:150px;height:267px;background:var(--brand-red);position:relative;padding:18px 14px">
    <div style="font:300 19px/1.1 var(--font-sans);color:var(--paper)">An official address, <b style="font-weight:700">without walls.</b>
    </div>
    <div style="position:absolute;left:14px;right:14px;bottom:70px;background:var(--paper);font:600 8px var(--font-sans);padding:8px">GET STARTED →</div>
    <div style="position:absolute;left:0;right:0;bottom:0;height:56px;background:var(--paper);display:flex;align-items:center;padding-left:14px"><svg class="lg " viewBox="0 0 3247 677" style="width:70px;height:14.6px;" aria-label="MSPACEZ"><use href="#msz-logo" width="3247" height="677"/></svg>
    </div>
  </div>
  <div style="width:150px;height:267px;background:#000;display:grid;place-items:center">
    <div style="background:var(--paper);padding:6px 9px;line-height:0"><svg class="lg " viewBox="0 0 3247 677" style="width:100px;height:20.85px;" aria-label="MSPACEZ"><use href="#msz-logo" width="3247" height="677"/></svg>
    </div>
  </div>
</div>
Component · 09

Field

Label, input, focus, error, disabled, Arabic

Label, input, focus, error, disabled, Arabic. Error = 2 px red border + black message with red “!” square. Never red text.

.msz-field.msz-label.msz-input
View markup
<div style="display:grid;grid-template-columns:repeat(3,260px);gap:6px 24px">
  <label class="msz-field">
    <span class="msz-label">Default</span>
    <input class="msz-input" placeholder="Company name">
  </label>
  <label class="msz-field">
    <span class="msz-label">Focus</span>
    <input class="msz-input focus" value="MSPACEZ">
  </label>
  <label class="msz-field">
    <span class="msz-label">Error</span>
    <input class="msz-input error" value="salma@">
    <span class="msg">Enter a full email address</span>
  </label>
  <label class="msz-field">
    <span class="msz-label">Disabled</span>
    <input class="msz-input" disabled value="North 90" style="background:#EFEEEB;color:#6B6B6B;border-color:#D9D9D9">
  </label>
  <label class="msz-field" dir="rtl">
    <span class="msz-label">الاسم</span>
    <input class="msz-input" style="font-family:var(--font-arabic)" value="سلمى حسن">
  </label>
</div>
Component · 10

Headline

Light, then decisive — EN and AR

Light, then decisive — EN and AR. Light 300 lead-in + one Bold 700 phrase. ≤ 10 words. Never all caps, never red body-size text.

.msz-h1
View markup
<div class="msz-h1">Offices that <b>grow with you.</b>
</div>
<div class="msz-h1" dir="rtl" style="font-family:var(--font-arabic);margin-top:14px">مكاتب <b>تكبر معك.</b>
</div>
Component · 11

Info Block

The signature strip: symbol · service · place · detail · CTA

The signature strip: symbol · service · place · detail · CTA. Sits on the bottom margin of every post, slide, document and page. Replaces the logo on social posts. Height 8.6% of canvas width (56–64 px in UI). Inverse on black, photo and red grounds.

.msz-info
View markup
<!-- Logo/symbol sprite: see assets/Logo (masters) -->
<div class="msz-info" style="max-width:760px">
  <div><svg class="lg " viewBox="0 0 1657 1591" style="width:26px;height:24.96px;" aria-label="MSPACEZ symbol"><use href="#msz-icon" width="1657" height="1591"/></svg>
  </div>
  <div>
    <span class="k">Service</span>
    <span class="v">Private office</span>
  </div>
  <div>
    <span class="k">Branch</span>
    <span class="v">North 90</span>
  </div>
  <div>
    <span class="k">Team</span>
    <span class="v">4 people</span>
  </div>
  <div class="cta">Book a tour →</div>
</div>
<div class="msz-info inverse" style="max-width:760px;margin-top:16px">
  <div>
    <span class="lgp" style="display:inline-block;background:#F7F5F2;padding:4.2px;line-height:0"><svg class="lg " viewBox="0 0 1657 1591" style="width:26px;height:24.96px;" aria-label="MSPACEZ symbol"><use href="#msz-icon" width="1657" height="1591"/></svg>
    </span>
  </div>
  <div>
    <span class="k">Service</span>
    <span class="v">Meeting rooms</span>
  </div>
  <div>
    <span class="k">Market</span>
    <span class="v">Egypt</span>
  </div>
  <div class="cta">Book →</div>
</div>
Component · 12

Lower Third

Video lower-third family — person, branch, service, location, info, price

Video lower-third family — person, branch, service, location, info, price. Marker bar (12 px @1080) + plate. Plates: off-white (default on footage), black (dark footage), clean (no plate, soft shadow, calm footage). Width auto (360–820 px @1080); one or two lines. Motion: marker 150 ms → plate expands 250 ms → text reveals 300 ms · hold 3–4 s · slide out 250 ms. RTL mirrors fully. Zone y 1180–1330 on 9:16.

View markup
<div class="row" style="background:#6B6B6B;padding:22px;gap:22px">
  <div style="display:flex;align-items:stretch">
    <div style="width:4px;background:var(--brand-red)"></div>
    <div style="background:var(--paper);padding:8px 12px 9px">
      <div style="font:600 15px/1.2 var(--font-sans);color:#000;white-space:nowrap">Salma H.</div>
      <div class=msz-label style=font-size:9px;margin-top:4px;color:var(--gray)>Founder · sample</div>
    </div>
  </div>
  <div style="display:flex;align-items:stretch">
    <div style="width:4px;background:var(--brand-red)"></div>
    <div style="background:#000;padding:8px 12px 9px">
      <div style="font:600 15px/1.2 var(--font-sans);color:#fff;white-space:nowrap">North 90</div>
      <div class=msz-label style=font-size:9px;margin-top:4px;color:var(--silver)>New Cairo · Egypt</div>
    </div>
  </div>
  <div style="display:flex;align-items:stretch">
    <div style="width:4px;background:var(--brand-red)"></div>
    <div style="background:var(--paper);padding:8px 12px 9px">
      <div style="font:600 15px/1.2 var(--font-sans);color:#000;white-space:nowrap">Private office</div>
      <div class=msz-label style=font-size:9px;margin-top:4px;color:var(--gray)>Teams of 1–20+</div>
    </div>
  </div>
  <div style="display:flex;align-items:stretch">
    <div style="width:4px;background:var(--brand-red)"></div>
    <div style="background:#000;padding:8px 12px 9px">
      <div style="font:600 15px/1.2 var(--font-sans);color:#fff;white-space:nowrap">Road 90 · New Cairo</div>
    </div>
  </div>
  <div style="display:flex;align-items:stretch">
    <div style="width:4px;background:var(--brand-red)"></div>
    <div style="background:var(--paper);padding:8px 12px 9px">
      <div style="font:300 15px/1.2 var(--font-sans);color:#000;white-space:nowrap">EGP 0,000 / month</div>
      <div class=msz-label style=font-size:9px;margin-top:4px;color:var(--gray)>Sample</div>
    </div>
  </div>
  <div style="display:flex;align-items:stretch" dir=rtl>
    <div style="width:4px;background:var(--brand-red)"></div>
    <div style="background:#000;padding:8px 12px 9px">
      <div style="font:600 15px/1.2 var(--font-arabic);color:#fff;white-space:nowrap">North 90</div>
      <div class=msz-label style=font-size:9px;margin-top:4px;color:var(--silver)>القاهرة الجديدة</div>
    </div>
  </div>
</div>
Component · 13

Marker

The one red square per surface

The one red square per surface. Exactly one per surface; 2.4% of canvas width on social, 12 px in UI. Marks the one fact that matters. Black when the ground is red.

.msz-marker.msz-label
View markup
<div class="row">
  <div>
    <div class="lbl">Default 12 px</div>
    <span class="msz-marker"></span>
  </div>
  <div>
    <div class="lbl">Large 24 px</div>
    <span class="msz-marker lg"></span>
  </div>
  <div>
    <div class="lbl">On red (black)</div>
    <div style="background:#F05C49;padding:14px">
      <span class="msz-marker" style="background:#000"></span>
    </div>
  </div>
  <div>
    <div class="lbl">In a label</div>
    <span class="msz-label" style="display:inline-flex;gap:8px;align-items:center">
      <span class="msz-marker" style="width:9px;height:9px"></span>Available
    </span>
  </div>
</div>
Component · 14

Navigation

Desktop bar with active item

Desktop bar with active item. Logo top-start, five items max, language switch, one primary action.

.msz-small.msz-btn
View markup
<!-- Logo/symbol sprite: see assets/Logo (masters) -->
<div style="display:flex;align-items:center;gap:26px;height:64px;padding:0 24px;border-bottom:1px solid #D9D9D9;max-width:1100px"><svg class="lg " viewBox="0 0 3247 677" style="width:120px;height:25.02px;" aria-label="MSPACEZ"><use href="#msz-logo" width="3247" height="677"/></svg>
  <span style="width:10px"></span>
  <a class="msz-small" style="font-weight:500;box-shadow:inset 0 -3px 0 #F05C49;padding:22px 0">Private offices</a>
  <a class="msz-small" style="font-weight:500;">Virtual office</a>
  <a class="msz-small" style="font-weight:500;">Meeting rooms</a>
  <a class="msz-small" style="font-weight:500;">Branches</a>
  <a class="msz-small" style="font-weight:500;">Growth notes</a>
  <span style="flex:1"></span>
  <a class="msz-small" style="color:#6B6B6B">عربي</a>
  <button class="msz-btn">Book a tour</button>
</div>
Component · 15

Pricing Module

Price, basis, inclusions, action

Price, basis, inclusions, action. Prices only from Finance; placeholders marked. Currency before the number (EGP / SAR).

.msz-label.msz-marker.msz-num.msz-caption.msz-small.msz-btn
View markup
<div style="width:340px;border-top:1.5px solid #000;background:var(--paper);padding:22px">
  <div style="display:flex;justify-content:space-between">
    <span class="msz-label" style="color:#6B6B6B">Private office · 2 people</span>
    <span class="msz-marker"></span>
  </div>
  <div class="msz-num" style="font-size:48px;margin-top:12px">EGP 0,000</div>
  <div class="msz-caption">per month · placeholder (N-11)</div>
  <div style="border-top:1px solid #D9D9D9;padding:9px 0;display:flex;justify-content:space-between" class="msz-small">
    <span>Furniture</span>
    <span>Included</span>
  </div>
  <div style="border-top:1px solid #D9D9D9;padding:9px 0;display:flex;justify-content:space-between" class="msz-small">
    <span>Internet</span>
    <span>Included</span>
  </div>
  <div style="border-top:1px solid #D9D9D9;padding:9px 0;display:flex;justify-content:space-between" class="msz-small">
    <span>Setup fees</span>
    <span>None</span>
  </div>
  <button class="msz-btn" style="width:100%;justify-content:center;margin-top:10px">Get a quote</button>
</div>
Component · 16

Service Card

Plan, label, title, fact chips, link

Plan, label, title, fact chips, link. White card, 1.5 px black top rule, 1 px line inset. No shadow, no radius.

.msz-card.msz-label.msz-h4.msz-chip.msz-btn
View markup
<div class="row" style="align-items:stretch">
  <div class="msz-card" style="width:260px;padding:20px">
    <div style="height:110px"><svg viewBox="0 0 200 160" width="220" height="110" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H120 M80 140H20V20" fill="none" stroke="#000" stroke-width="1.2222222222222223" stroke-linecap="square" /><path d="M80 140 A40 40 0 0 1 120 100" fill="none" stroke="#000" stroke-width="1.2222222222222223" stroke-linecap="square" stroke-dasharray="3 3"/><path d="M60 20H140" fill="none" stroke="#000" stroke-width="1.2222222222222223" stroke-linecap="square" stroke-width="3.666666666666667"/><rect x="40" y="45" width="50" height="26" fill="none" stroke="#000" stroke-width="0.9777777777777779" /><circle cx="65" cy="83" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><rect x="110" y="45" width="50" height="26" fill="none" stroke="#000" stroke-width="0.9777777777777779" /><circle cx="135" cy="83" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><rect x="40" y="95" width="50" height="26" fill="none" stroke="#000" stroke-width="0.9777777777777779" /><circle cx="65" cy="133" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><rect x="110" y="95" width="50" height="26" fill="none" stroke="#000" stroke-width="0.9777777777777779" /><circle cx="135" cy="133" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><rect x="154" y="50" width="12" height="12" fill="#F05C49"/></svg>
    </div>
    <div class="msz-label" style="color:#6B6B6B;margin-top:14px">Service</div>
    <div class="msz-h4" style="margin-top:6px">Private offices</div>
    <div style="display:flex;gap:6px;margin-top:12px">
      <span class="msz-chip">1–20+</span>
      <span class="msz-chip">24/7</span>
    </div>
    <a class="msz-btn text" style="margin-top:14px">Explore →</a>
  </div>
  <div class="msz-card" style="width:260px;padding:20px">
    <div style="height:110px"><svg viewBox="0 0 200 160" width="220" height="110" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#000" stroke-width="1.2222222222222223" stroke-linecap="square" stroke-dasharray="6 6"/><path d="M100 106.0c0 0 22-19 22-37a22 22 0 0 0-44 0c0 18 22 37 22 37z" fill="none" stroke="#000" stroke-width="1.2222222222222223"/><circle cx="100" cy="69.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><rect x="36" y="102" width="34" height="24" fill="none" stroke="#000" stroke-width="0.9777777777777779" /><path d="M36 102 53 116 70 102" fill="none" stroke="#000" stroke-width="1.2222222222222223" stroke-linecap="square" /><rect x="130" y="100" width="30" height="28" fill="none" stroke="#000" stroke-width="0.9777777777777779" /></svg>
    </div>
    <div class="msz-label" style="color:#6B6B6B;margin-top:14px">Service</div>
    <div class="msz-h4" style="margin-top:6px">Virtual office</div>
    <div style="display:flex;gap:6px;margin-top:12px">
      <span class="msz-chip">Address</span>
      <span class="msz-chip">Mail</span>
    </div>
    <a class="msz-btn text" style="margin-top:14px">Explore →</a>
  </div>
  <div class="msz-card" style="width:260px;padding:20px">
    <div style="height:110px"><svg viewBox="0 0 200 160" width="220" height="110" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#000" stroke-width="1.2222222222222223" stroke-linecap="square" /><rect x="55" y="58.0" width="90" height="44" fill="none" stroke="#000" stroke-width="0.9777777777777779" /><circle cx="66" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><circle cx="66" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><circle cx="89" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><circle cx="89" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><circle cx="112" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><circle cx="112" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><circle cx="135" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><circle cx="135" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.9777777777777779"/><path d="M178 50.0V110.0" fill="none" stroke="#000" stroke-width="1.2222222222222223" stroke-linecap="square" stroke-width="3.666666666666667"/></svg>
    </div>
    <div class="msz-label" style="color:#6B6B6B;margin-top:14px">Service</div>
    <div class="msz-h4" style="margin-top:6px">Meeting rooms</div>
    <div style="display:flex;gap:6px;margin-top:12px">
      <span class="msz-chip">4–20</span>
      <span class="msz-chip">Hourly</span>
    </div>
    <a class="msz-btn text" style="margin-top:14px">Explore →</a>
  </div>
</div>
Component · 17

Service Plan

Top-down plan pictograms, one per service

Top-down plan pictograms, one per service. Line weight = canvas width / 180. Explains a service without photography. Red only on the one element that matters (and only if no other marker).

View markup
<div class="row">
  <div>
    <div class="lbl">Office</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H120 M80 140H20V20" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><path d="M80 140 A40 40 0 0 1 120 100" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" stroke-dasharray="3 3"/><path d="M60 20H140" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" stroke-width="3.5999999999999996"/><rect x="40" y="45" width="50" height="26" fill="none" stroke="#000" stroke-width="0.96" /><circle cx="65" cy="83" r="7" fill="none" stroke="#000" stroke-width="0.96"/><rect x="110" y="45" width="50" height="26" fill="none" stroke="#000" stroke-width="0.96" /><circle cx="135" cy="83" r="7" fill="none" stroke="#000" stroke-width="0.96"/><rect x="40" y="95" width="50" height="26" fill="none" stroke="#000" stroke-width="0.96" /><circle cx="65" cy="133" r="7" fill="none" stroke="#000" stroke-width="0.96"/><rect x="110" y="95" width="50" height="26" fill="none" stroke="#000" stroke-width="0.96" /><circle cx="135" cy="133" r="7" fill="none" stroke="#000" stroke-width="0.96"/><rect x="154" y="50" width="12" height="12" fill="#F05C49"/></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Meeting</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><rect x="55" y="58.0" width="90" height="44" fill="none" stroke="#000" stroke-width="0.96" /><circle cx="66" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="66" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="89" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="89" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="112" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="112" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="135" cy="46.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="135" cy="114.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><path d="M178 50.0V110.0" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" stroke-width="3.5999999999999996"/></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Virtual</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" stroke-dasharray="6 6"/><path d="M100 106.0c0 0 22-19 22-37a22 22 0 0 0-44 0c0 18 22 37 22 37z" fill="none" stroke="#000" stroke-width="1.2"/><circle cx="100" cy="69.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/><rect x="36" y="102" width="34" height="24" fill="none" stroke="#000" stroke-width="0.96" /><path d="M36 102 53 116 70 102" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><rect x="130" y="100" width="30" height="28" fill="none" stroke="#000" stroke-width="0.96" /></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Training</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><path d="M60 30H140" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" stroke-width="3.5999999999999996"/><rect x="85" y="42" width="30" height="14" fill="none" stroke="#000" stroke-width="0.96" /><rect x="34" y="64" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="62" y="64" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="90" y="64" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="118" y="64" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="146" y="64" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="34" y="84" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="62" y="84" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="90" y="84" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="118" y="84" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="146" y="84" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="34" y="104" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="62" y="104" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="90" y="104" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="118" y="104" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="146" y="104" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="34" y="124" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="62" y="124" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="90" y="124" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="118" y="124" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /><rect x="146" y="124" width="20" height="8" fill="none" stroke="#000" stroke-width="0.96" /></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Desks</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><rect x="40" y="42" width="120" height="26" fill="none" stroke="#000" stroke-width="0.96" /><path d="M100 42V68" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><circle cx="55" cy="33" r="6" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="85" cy="77" r="6" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="115" cy="33" r="6" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="145" cy="77" r="6" fill="none" stroke="#000" stroke-width="0.96"/><rect x="40" y="94" width="120" height="26" fill="none" stroke="#000" stroke-width="0.96" /><path d="M100 94V120" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><circle cx="55" cy="85" r="6" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="85" cy="129" r="6" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="115" cy="85" r="6" fill="none" stroke="#000" stroke-width="0.96"/><circle cx="145" cy="129" r="6" fill="none" stroke="#000" stroke-width="0.96"/></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Address</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><rect x="40" y="40" width="120" height="80" fill="none" stroke="#000" stroke-width="0.96" /><path d="M40 40 100 80.0 160 40" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Building</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M40 140V40H160V140" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><path d="M20 140H180" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><rect x="52" y="52" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="79" y="52" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="106" y="52" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="133" y="52" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="52" y="80" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="79" y="80" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="106" y="80" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="133" y="80" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="52" y="108" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="79" y="108" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="106" y="108" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /><rect x="133" y="108" width="16" height="18" fill="none" stroke="#000" stroke-width="0.96" /></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Route</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M30 48.0 C 80 48.0, 90 112.0, 170 112.0" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" stroke-dasharray="5 5"/><circle cx="30" cy="48.0" r="7" fill="none" stroke="#000" stroke-width="0.96"/></svg>
    </div>
  </div>
  <div>
    <div class="lbl">Lounge</div>
    <div style="width:150px;height:120px"><svg viewBox="0 0 200 160" width="150" height="120" preserveAspectRatio="xMidYMid meet" style="display:block;overflow:visible"><path d="M20 20H180V140H20Z" fill="none" stroke="#000" stroke-width="1.2" stroke-linecap="square" /><rect x="40" y="40" width="70" height="26" fill="none" stroke="#000" stroke-width="0.96" /><rect x="40" y="40" width="14" height="60" fill="none" stroke="#000" stroke-width="0.96" /><circle cx="140" cy="70" r="16" fill="none" stroke="#000" stroke-width="0.96"/><rect x="120" y="100" width="50" height="24" fill="none" stroke="#000" stroke-width="0.96" /></svg>
    </div>
  </div>
</div>
Component · 18

Sign Off

Light sign-off — symbol + one line

Light sign-off — symbol + one line. The organic signature: symbol (on an off-white plate on dark, red or photo grounds) + one short line, bottom-start. Replaces the info block when there is no action to take. Never together with an info block.

.msz-label
View markup
<!-- Logo/symbol sprite: see assets/Logo (masters) -->
<div class="row" style="gap:30px">
  <div style="background:var(--paper);padding:18px 22px;display:flex;gap:10px;align-items:center"><svg class="lg " viewBox="0 0 1657 1591" style="width:24px;height:23.04px;" aria-label="MSPACEZ symbol"><use href="#msz-icon" width="1657" height="1591"/></svg>
    <span class="msz-label">North 90 · Private offices</span>
  </div>
  <div style="padding:18px 22px;display:flex;gap:10px;align-items:center;background-image:var(--p-lounge-north90);background-position:50% 50%;background-size:cover;background-repeat:no-repeat;">
    <span style="background:var(--paper);padding:4px;line-height:0"><svg class="lg " viewBox="0 0 1657 1591" style="width:20px;height:19.2px;" aria-label="MSPACEZ symbol"><use href="#msz-icon" width="1657" height="1591"/></svg>
    </span>
    <span class="msz-label" style="color:#fff">North 90 · Lounge</span>
  </div>
  <div style="background:var(--brand-red);padding:18px 22px;display:flex;gap:10px;align-items:center">
    <span style="background:var(--paper);padding:4px;line-height:0"><svg class="lg " viewBox="0 0 1657 1591" style="width:20px;height:19.2px;" aria-label="MSPACEZ symbol"><use href="#msz-icon" width="1657" height="1591"/></svg>
    </span>
    <span class="msz-label">Offer · sample</span>
  </div>
</div>
Component · 19

Spec Cells

Measured facts in 2–5 cells, one may carry the marker

Measured facts in 2–5 cells, one may carry the marker. Numbers in Light with tabular figures; words at a smaller size. Real, verifiable facts only.

.msz-spec.msz-marker
View markup
<div class="msz-spec" style="--cols:4;max-width:760px">
  <div>
    <div class="k">Team</div>
    <div class="v">1–20+</div>
  </div>
  <div>
    <div class="k">Move in <span class="msz-marker" style="width:9px;height:9px"></span>
    </div>
    <div class="v">Day one</div>
  </div>
  <div>
    <div class="k">Access</div>
    <div class="v">24/7</div>
  </div>
  <div>
    <div class="k">Setup fees</div>
    <div class="v">None</div>
  </div>
</div>
Component · 20

Status

Available · confirmed · limited · full

Available · confirmed · limited · full. Square + text; colour is never the only signal. Success/warning are UI-only colours.

.msz-status
View markup
<div class="row">
  <span class="msz-status available">Available</span>
  <span class="msz-status confirmed">Confirmed</span>
  <span class="msz-status limited">Limited</span>
  <span class="msz-status full">Fully booked</span>
</div>
Component · 21

Subtitle

Caption modes A clean · B highlight · C contrast — EN and AR

Caption modes A clean · B highlight · C contrast — EN and AR. Montserrat 500 46 px / Alexandria 500 48 px @1080 · max 2 lines · ≤ 32 (EN) / 28 (AR) characters · centred in the subtitle zone (y 1340–1520). Mode B: one keyword per 2–3 captions (Bold + optional red underline). Mode C: black 78% plate. Never word-by-word colour, bouncing or emoji.

View markup
<div class="row" style="gap:16px">
  <div style="width:300px;height:170px;background:#6B6B6B center/cover;background-image:var(--p-lounge-north90);background-position:50% 50%;background-size:cover;background-repeat:no-repeat;;display:flex;align-items:flex-end;justify-content:center;padding:14px;text-align:center">
    <span style="font:500 14px/1.35 var(--font-sans);color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5)">The lounge is open all day</span>
  </div>
  <div style="width:300px;height:170px;background:#6B6B6B center/cover;background-image:var(--p-lounge-north90);background-position:50% 50%;background-size:cover;background-repeat:no-repeat;;display:flex;align-items:flex-end;justify-content:center;padding:14px;text-align:center">
    <span style="font:500 14px/1.35 var(--font-sans);color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5)">The lounge is open <b style="font-weight:700;text-decoration:underline;text-decoration-color:#F05C49;text-decoration-thickness:2px;text-underline-offset:3px">all day</b>
    </span>
  </div>
  <div style="width:300px;height:170px;background:#6B6B6B center/cover;background-image:var(--p-lounge-north90);background-position:50% 50%;background-size:cover;background-repeat:no-repeat;;display:flex;align-items:flex-end;justify-content:center;padding:14px;text-align:center">
    <span style="font:500 14px/1.35 var(--font-sans);color:#fff;background:rgba(0,0,0,.78);padding:3px 8px">Training rooms for up to twenty people</span>
  </div>
  <div style="width:300px;height:170px;background:#6B6B6B center/cover;background-image:var(--p-lounge-north90);background-position:50% 50%;background-size:cover;background-repeat:no-repeat;;display:flex;align-items:flex-end;justify-content:center;padding:14px;text-align:center">
    <span style="font:500 14px/1.35 var(--font-arabic);color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5)" dir=rtl>الاستراحة مفتوحة طول اليوم</span>
  </div>
</div>
Component · 22

Tabs

Active tab = 4 px red inset

Active tab = 4 px red inset. One active tab. Labels 12 px caps.

.msz-tabs
View markup
<div class="msz-tabs" style="max-width:520px">
  <span>Overview</span>
  <span class="on">Pricing</span>
  <span>Branches</span>
  <span>FAQ</span>
</div>