الواجهات الكاملة · متجر أثاث
واجهة متجر
رأس ومرشّحات وشبكة منتجات وسلّة — صفحة تصفّح كاملة تعمل بالاتّجاهين
<div class="iface ifs">
<header class="if-top">
<span class="brand" data-ar="دار" data-en="Dar">دار</span>
<nav>
<a href="#" aria-current="page"><span data-ar="الكلّ" data-en="All">الكلّ</span></a>
<a href="#"><span data-ar="غرف المعيشة" data-en="Living">غرف المعيشة</span></a>
<a href="#"><span data-ar="المكاتب" data-en="Office">المكاتب</span></a>
<a href="#"><span data-ar="الإضاءة" data-en="Lighting">الإضاءة</span></a>
</nav>
<span class="grow"></span>
<button class="if-btn ghost ifs-cart">
<span data-ar="السلّة" data-en="Cart">السلّة</span><b class="num">3</b></button>
</header>
<div class="if-body">
<div class="if-h">
<h1 data-ar="غرف المعيشة" data-en="Living rooms">غرف المعيشة</h1>
<p><span class="num">48</span> <span data-ar="قطعة" data-en="items">قطعة</span></p>
</div>
<div class="ifs-filters">
<button class="chip on" data-ar="الكلّ" data-en="All">الكلّ</button>
<button class="chip" data-ar="كنب" data-en="Sofas">كنب</button>
<button class="chip" data-ar="طاولات" data-en="Tables">طاولات</button>
<button class="chip" data-ar="سجّاد" data-en="Rugs">سجّاد</button>
<span class="grow"></span>
<select class="ifs-sort" aria-label="الترتيب">
<option data-ar="الأحدث" data-en="Newest">الأحدث</option>
<option data-ar="الأقلّ سعرًا" data-en="Price: low to high">الأقلّ سعرًا</option>
</select>
</div>
<ul class="ifs-grid">
<li class="if-card"><div class="ph a"></div>
<h3 data-ar="كنبة ثلاثية · كتّان" data-en="Three-seater · linen">كنبة ثلاثية · كتّان</h3>
<div class="row"><b class="num">$740</b>
<span class="stock" data-ar="متوفّر" data-en="In stock">متوفّر</span></div></li>
<li class="if-card"><div class="ph b"></div>
<h3 data-ar="طاولة وسط · بلوط" data-en="Coffee table · oak">طاولة وسط · بلوط</h3>
<div class="row"><b class="num">$210</b>
<span class="stock" data-ar="متوفّر" data-en="In stock">متوفّر</span></div></li>
<li class="if-card"><div class="ph c"></div>
<h3 data-ar="سجّادة يدوية 2×3" data-en="Handmade rug 2×3">سجّادة يدوية 2×3</h3>
<div class="row"><b class="num">$390</b>
<span class="stock low" data-ar="قطعتان" data-en="2 left">قطعتان</span></div></li>
<li class="if-card"><div class="ph d"></div>
<h3 data-ar="مكتبة جدارية" data-en="Wall shelving">مكتبة جدارية</h3>
<div class="row"><b class="num">$520</b>
<span class="stock" data-ar="متوفّر" data-en="In stock">متوفّر</span></div></li>
<li class="if-card"><div class="ph b"></div>
<h3 data-ar="كرسي مفرد · مخمل" data-en="Armchair · velvet">كرسي مفرد · مخمل</h3>
<div class="row"><b class="num">$285</b>
<span class="stock" data-ar="متوفّر" data-en="In stock">متوفّر</span></div></li>
<li class="if-card"><div class="ph a"></div>
<h3 data-ar="طاولة جانبية · رخام" data-en="Side table · marble">طاولة جانبية · رخام</h3>
<div class="row"><b class="num">$165</b>
<span class="stock low" data-ar="قطعة واحدة" data-en="1 left">قطعة واحدة</span></div></li>
</ul>
</div>
</div>
.iface{min-height:100%;background:var(--pt-bg-base);color:var(--pt-text-primary);
font-family:inherit;display:flex;flex-direction:column}
.iface *,.iface *::before,.iface *::after{box-sizing:border-box}
.iface h1,.iface h2,.iface h3,.iface h4,.iface p,.iface ul,.iface ol{margin:0}
.iface ul{list-style:none;padding:0}
.iface a{color:inherit;text-decoration:none}
.iface button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
.iface button:focus-visible,.iface a:focus-visible,.iface input:focus-visible,
.iface select:focus-visible{outline:2px solid var(--pt-focus-ring);outline-offset:2px}
/* الرأس المشترك */
.if-top{display:flex;align-items:center;gap:var(--pt-space-4);
padding:var(--pt-space-3) var(--pt-space-5);
border-block-end:1px solid var(--pt-border-subtle);background:var(--pt-bg-raised)}
.if-top .brand{font-weight:700;font-size:var(--pt-font-size-sm)}
.if-top .grow{flex:1}
.if-top nav{display:flex;gap:var(--pt-space-4);font-size:var(--pt-font-size-xs);
color:var(--pt-text-muted)}
.if-top nav a[aria-current]{color:var(--pt-accent);font-weight:600}
.if-avatar{width:26px;height:26px;border-radius:50%;background:var(--pt-bg-inset);
border:1px solid var(--pt-border-default);display:grid;place-items:center;
font-size:10px;color:var(--pt-text-secondary)}
.if-btn{padding:var(--pt-space-2) var(--pt-space-4);border-radius:var(--pt-radius-md);
background:var(--pt-accent);color:var(--pt-on-accent);font-weight:700;
font-size:var(--pt-font-size-xs)}
.if-btn.ghost{background:transparent;color:var(--pt-text-secondary);
border:1px solid var(--pt-border-default);font-weight:500}
.if-body{flex:1;padding:var(--pt-space-5);display:flex;flex-direction:column;
gap:var(--pt-space-5)}
.if-h{display:flex;align-items:baseline;gap:var(--pt-space-3);flex-wrap:wrap}
.if-h h1{font-size:var(--pt-font-size-xl);font-weight:700}
.if-h p{font-size:var(--pt-font-size-xs);color:var(--pt-text-muted)}
.if-card{border:1px solid var(--pt-border-subtle);border-radius:var(--pt-radius-lg);
background:var(--pt-bg-raised);padding:var(--pt-space-4)}
.num{font-variant-numeric:tabular-nums}
/* الرقم بإشارته: عزلٌ باتّجاه لاتيني.
«−» و«+» محارف محايدة في خوارزمية الاتّجاه. وفي سطر عربي تُقذَف إلى
طرف النصّ، فيقرأ الزائر «0.6-» بدل «-0.6» — وهي قراءة معكوسة للمعنى
لا مجرّد فرق شكل. والعزل يجعل المحتوى يُحلّ اتّجاهه وحده. */
.sig{unicode-bidi:isolate;direction:ltr;font-variant-numeric:tabular-nums;
/* العرض بقدر المحتوى: العنصر داخل عمودٍ مرن يمتدّ افتراضيًّا، وباتّجاه
لاتيني يهاجر نصّه إلى الطرف الآخر — فيبقى مكانه بتقييد عرضه. */
inline-size:fit-content}
.ifs-cart{display:flex;align-items:center;gap:var(--pt-space-2)}
.ifs-cart b{min-inline-size:18px;padding:0 5px;border-radius:99px;
background:var(--pt-accent);color:var(--pt-on-accent);font-size:10px;line-height:18px;
text-align:center}
.ifs-filters{display:flex;align-items:center;gap:var(--pt-space-2);flex-wrap:wrap}
.ifs-filters .grow{flex:1}
.chip{padding:var(--pt-space-2) var(--pt-space-4);border-radius:99px;
border:1px solid var(--pt-border-default);font-size:var(--pt-font-size-xs);
color:var(--pt-text-muted);background:transparent}
.chip.on{border-color:var(--pt-accent);color:var(--pt-accent);font-weight:600}
.ifs-sort{padding:var(--pt-space-2) var(--pt-space-3);border-radius:var(--pt-radius-md);
border:1px solid var(--pt-border-default);background:var(--pt-bg-raised);
color:var(--pt-text-secondary);font:inherit;font-size:var(--pt-font-size-xs)}
.ifs-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--pt-space-4)}
@media(max-width:820px){.ifs-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.ifs-grid{grid-template-columns:1fr}}
.ifs-grid .if-card{display:flex;flex-direction:column;gap:var(--pt-space-3);padding:var(--pt-space-3)}
.ifs-grid h3{font-size:var(--pt-font-size-xs);font-weight:600;line-height:1.6}
.ifs-grid .row{display:flex;align-items:center;justify-content:space-between;gap:var(--pt-space-2)}
.ifs-grid b{font-size:var(--pt-font-size-base);color:var(--pt-accent)}
.stock{font-size:11px;color:var(--pt-text-muted)}
.stock.low{color:var(--pt-color-warning-400)}
.ph{block-size:112px;border-radius:var(--pt-radius-md);border:1px solid var(--pt-border-subtle)}
.ph.a{background:linear-gradient(140deg,#3a3352,#6b5f8f 60%,#a99cc9)}
.ph.b{background:linear-gradient(140deg,#2f4048,#4f7180 60%,#8fb0bd)}
.ph.c{background:linear-gradient(140deg,#4a3a2e,#8a6a4c 60%,#c4a583)}
.ph.d{background:linear-gradient(140deg,#2d4a44,#5c8478 60%,#a9c4b3)}