<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>دليل المقاسات - متجر هايدي</title>
<style>
/* == كل شيء داخل #heidi-sizes حتى لا يؤثر على المتجر == */
#heidi-sizes{
--brand:#ad7b8e; --brand-dark:#8a5a6b; --gold:#c498a8;
--bg:#fff; --text:#0f172a; --muted:#64748b; --bor:#e2e8f0;
--r:12px; --sh:0 4px 12px rgba(0,0,0,.06);
font-family:"Segoe UI",Tahoma,Arial,sans-serif; color:var(--text)
}
#heidi-sizes .wrap{max-width:720px;margin:14px auto;padding:0 10px}
#heidi-sizes h1{margin:0 0 10px;font-size:18px;color:var(--brand);text-align:center;font-weight:900}
#heidi-sizes .card{background:#fff;border:1px solid var(--bor);border-radius:var(--r);box-shadow:var(--sh);padding:10px}
/* مبدّل الوحدات */
#heidi-sizes .unit-switch{display:flex;width:100%;max-width:320px;margin:0 auto 10px;border:1px solid var(--bor);border-radius:10px;overflow:hidden;background:#fff}
#heidi-sizes .unit-switch input{display:none}
#heidi-sizes .unit-switch label{flex:1;text-align:center;padding:8px 6px;cursor:pointer;user-select:none;font-weight:800;font-size:13px;color:var(--text);line-height:1}
#heidi-sizes .unit-switch input:checked+label{background:var(--brand);color:#fff}
/* زر غرفة القياس */
#heidi-sizes .fit-wrap{display:flex;justify-content:center;margin:8px 0 12px}
#heidi-sizes .fit-btn{display:inline-flex;align-items:center;gap:8px;background:var(--brand);color:#fff;font-weight:800;border:1px solid var(--brand-dark);border-radius:10px;padding:10px 12px;font-size:13px;cursor:pointer;box-shadow:0 6px 14px rgba(173,123,142,.18)}
#heidi-sizes .fit-btn:hover{filter:brightness(.95)}
/* الجدول */
#heidi-sizes .table-wrap{overflow:auto;border:1px solid var(--bor);border-radius:10px}
#heidi-sizes table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12px}
#heidi-sizes thead th{background:#fdfafb;border-bottom:1px solid var(--bor);padding:8px 4px;text-align:center;font-weight:800;white-space:nowrap;color:var(--brand)}
#heidi-sizes tbody td{padding:7px 4px;text-align:center;border-bottom:1px solid #f1f5f9;white-space:nowrap}
#heidi-sizes tbody tr:last-child td{border-bottom:none}
#heidi-sizes tbody tr:nth-child(even){background:#fcfdff}
#heidi-sizes .note{margin:8px 0 0;color:var(--muted);font-size:11px;text-align:center}
/* الشرح */
#heidi-sizes .guide{margin-top:12px;background:#fff;border:1px solid var(--bor);border-radius:12px;padding:12px;box-shadow:var(--sh)}
#heidi-sizes .guide h2{font-size:15px;color:var(--brand-dark);margin:0 0 6px;text-align:center}
#heidi-sizes .guide p{font-size:13px;line-height:1.7;margin:6px 0;color:var(--text)}
/* المودال (مصغّر للجوال) */
#heidi-sizes .modal{position:fixed;inset:0;background:rgba(2,6,23,.55);display:none;align-items:center;justify-content:center;z-index:9999}
#heidi-sizes .modal.show{display:flex}
#heidi-sizes .sheet{width:min(94vw,520px);background:#fff;border-radius:14px;border:1px solid var(--bor);box-shadow:0 20px 50px rgba(0,0,0,.18);padding:10px}
#heidi-sizes .sheet header{display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--bor);padding-bottom:8px}
#heidi-sizes .sheet h3{margin:0;font-size:15px;color:var(--brand-dark)}
#heidi-sizes .x{border:none;border-radius:10px;padding:8px 12px;cursor:pointer;background:var(--gold);color:#fff;font-weight:800;font-size:12px}
#heidi-sizes .content{display:grid;grid-template-columns:1fr;gap:10px;margin-top:10px}
#heidi-sizes .measure-form{display:grid;gap:10px}
#heidi-sizes .row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}
#heidi-sizes .row label{font-weight:800;font-size:13px}
#heidi-sizes .row input{width:100%;border:1px solid var(--bor);border-radius:10px;padding:10px 12px;font-size:14px;outline:none}
#heidi-sizes .row input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #f4eaef}
#heidi-sizes .unit-mini{display:inline-flex;border:1px solid var(--bor);border-radius:999px;overflow:hidden}
#heidi-sizes .unit-mini input{display:none}
#heidi-sizes .unit-mini label{padding:6px 10px;font-size:12px;cursor:pointer}
#heidi-sizes .unit-mini input:checked+label{background:var(--brand);color:#fff}
#heidi-sizes .action-bar{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}
#heidi-sizes .btn-primary{background:var(--brand);color:#fff;border:none;border-radius:10px;padding:10px 12px;font-weight:800;cursor:pointer}
#heidi-sizes .btn-secondary{background:#fff;border:1px solid var(--bor);border-radius:10px;padding:10px 12px;font-weight:800;color:var(--text);cursor:pointer}
#heidi-sizes .result{border:1px solid var(--bor);border-radius:12px;padding:10px;background:linear-gradient(180deg,#fff,#fafafa);display:grid;gap:8px}
#heidi-sizes .result h4{margin:0;color:var(--brand-dark);font-size:14px;text-align:center}
#heidi-sizes .pill{display:inline-block;background:#fff;border:1px solid var(--bor);border-radius:999px;padding:6px 10px;font-size:12px}
#heidi-sizes .kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
#heidi-sizes .rec-size{font-size:26px;font-weight:900;color:var(--gold);text-align:center;line-height:1}
#heidi-sizes .muted{color:var(--muted);font-size:12px;text-align:center}
</style>
</head>
<body>
دليل المقاسات للفساتين النسائية – متجر هايدي
<input type="radio" name="unit" id="unit-in" value="in" checked>
<input type="radio" name="unit" id="unit-cm" value="cm">
<button class="fit-btn" id="openFit" type="button" aria-haspopup="dialog" aria-controls="fitModal">
غرفة القياس الذكية
</button>
| الورك |
الخصر |
الصدر |
المقاس |
UK |
| 36 إنش | 26 إنش | 32 إنش | S | 6 |
| 38 إنش | 28 إنش | 34 إنش | M | 8 |
| 40 إنش | 30 إنش | 36 إنش | L | 10 |
| 42 إنش | 32 إنش | 38 إنش | XL | 12 |
| 44 إنش | 34 إنش | 40 إنش | XXL | 14 |
| 46 إنش | 36 إنش | 42 إنش | 3XL | 16 |
| 48 إنش | 38 إنش | 44 إنش | 4XL | 18 |
| 50 إنش | 40 إنش | 46 إنش | 5XL | 20 |
| 52 إنش | 42 إنش | 48 إنش | 6XL | 22 |
| 54 إنش | 44 إنش | 50 إنش | 7XL | 24 |
قد تختلف المقاسات قليلًا حسب قصة الموديل ونوع القماش.
كيفية أخذ القياسات
الصدر: حول أكثر جزء امتلاءً مع إبقاء الشريط أفقيًا.
الخصر: عند أضيق نقطة طبيعية دون شدّ الشريط.
الأرداف: حول أعرض نقطة مع بقاء الشريط موازيًا للأرض.
غرفة القياس الذكية - متجر هايدي
<button class="x" id="closeFit" type="button" aria-label="إغلاق">إغلاق</button>
<form class="measure-form" id="fitForm">
<input id="bust" type="number" step="0.1" min="10" max="90" placeholder="مثال: 40">
<input type="radio" name="fitUnit" id="fit-in" value="in" checked>
<input type="radio" name="fitUnit" id="fit-cm" value="cm">
<input id="waist" type="number" step="0.1" min="10" max="90" placeholder="مثال: 34">
<input id="hip" type="number" step="0.1" min="10" max="110" placeholder="مثال: 44">
<button class="btn-primary" type="submit">التالي</button>
<button class="btn-secondary" type="button" id="resetForm">بداية جديدة</button>
</form>
النتيجة
—
المقاس الموصى به (تقديري)
الصدر: —
الخصر: —
الورك: —
أدخلي القياسات ثم اضغطي التالي.
{
const inches = parseFloat(td.dataset.in);
if (!isFinite(inches)) return;
if(unit==='cm'){
td.textContent = Math.round(inches * 2.54) + ' سم';
}else{
td.textContent = inches + ' إنش';
}
});
}
inRadio.addEventListener('change', ()=> render('in'));
cmRadio.addEventListener('change', ()=> render('cm'));
/* مبدئيًا القيم مكتوبة إنش نصيًا، فلا حاجة لاستدعاء render هنا */
/* المودال */
const modal = root.querySelector('#fitModal');
root.querySelector('#openFit').addEventListener('click', ()=> {
// مزامنة وحدة المودال مع اختيار الجدول
const unitIsCm = cmRadio.checked;
root.querySelector('#fit-' + (unitIsCm ? 'cm' : 'in')).checked = true;
modal.classList.add('show');
});
root.querySelector('#closeFit').addEventListener('click', ()=> modal.classList.remove('show'));
modal.addEventListener('click', (e)=>{ if(e.target===modal) modal.classList.remove('show'); });
/* قراءة جدول المقاسات (إنش كأساس) */
function tableData(){
return Array.from(tbody.querySelectorAll('tr')).map(r=>{
const t = r.querySelectorAll('td');
return {
hip: parseFloat(t[0].dataset.in),
waist: parseFloat(t[1].dataset.in),
bust: parseFloat(t[2].dataset.in),
size: (t[3].textContent || '').trim(),
uk: (t[4].textContent || '').trim()
};
});
}
/* التوصية: أول صف يساوي/أكبر من قياسات المستخدم */
function recommend(user, data){
for(const row of data){
if(row.bust >= user.bust && row.waist >= user.waist && row.hip >= user.hip){
return row;
}
}
// لو أكبر من كل الصفوف، نوصي بأكبر مقاس وننوّه
const last = data[data.length-1];
last._overflow = true;
return last;
}
/* نموذج غرفة القياس */
const fitForm = root.querySelector('#fitForm');
const out = {
size: root.querySelector('#recSize'),
bust: root.querySelector('#outBust'),
waist: root.querySelector('#outWaist'),
hip: root.querySelector('#outHip'),
note: root.querySelector('#fitNote')
};
root.querySelector('#resetForm').addEventListener('click', ()=>{
fitForm.reset();
out.size.textContent = '—';
out.bust.textContent = out.waist.textContent = out.hip.textContent = '—';
out.note.textContent = 'أدخلي القياسات ثم اضغطي التالي.';
});
fitForm.addEventListener('submit', (e)=>{
e.preventDefault();
const unit = fitForm.querySelector('input[name="fitUnit"]:checked').value; // in/cm
const toIn = v => unit==='cm' ? (v/2.54) : v;
const bust = parseFloat(fitForm.querySelector('#bust').value);
const waist = parseFloat(fitForm.querySelector('#waist').value);
const hip = parseFloat(fitForm.querySelector('#hip').value);
if([bust,waist,hip].some(v=>!v || v<=0)){
out.note.textContent = 'يرجى إدخال جميع القياسات.';
return;
}
const userIn = { bust:toIn(bust), waist:toIn(waist), hip:toIn(hip) };
const rec = recommend(userIn, tableData());
const fmt = v => unit==='cm' ? Math.round(v) + ' سم' : (Math.round(v*10)/10).toString().replace(/\.0$/,'') + ' إنش';
out.size.textContent = rec.uk || rec.size || '—';
out.bust.textContent = fmt(bust);
out.waist.textContent = fmt(waist);
out.hip.textContent = fmt(hip);
out.note.textContent = rec._overflow
? 'أكبر مقاس متاح حاليًا. يفضّل التواصل لخياطة/بديل مناسب.'
: 'تقدير تقريبي حسب جدول متجر هايدي وقد يختلف حسب قصة الموديل والقماش.';
});
})();
</body>
</html>