/* ===================================================================
   Capora Function Grapher — style.css
   این فایل مکمل articles/style.css و charts/style.css است (کلاس‌های
   مشترک مثل cm-panel، tpl-grid، export-btn، preview-card از آن‌جا
   به ارث می‌رسند). اینجا فقط اجزای اختصاصی رسم‌کننده‌ی تابع است.
   =================================================================== */

/* لیست چند تابع (تا ۴ تا) */
#modeRow{ margin-bottom:14px; }
.func-row{ margin-bottom:10px; }
.func-row-top{ display:flex; align-items:center; gap:8px; direction:ltr; }
/* ---------------------------------------------------------------------------
   ⚠️ چرا bidi-override و نه plaintext؟  (ریشه‌ی باگ معکوس‌شدن پرانتز)

   کل صفحه RTL است (<html dir="rtl">). ویژگی `unicode-bidi: plaintext` به مرورگر
   می‌گوید ویژگی `direction` را **نادیده بگیر** و جهت پایه را از روی خودِ محتوا و
   با قاعده‌ی P2/P3 یونیکد (اولین کاراکتر strong) تشخیص بده.

   محتوای فیلد فرمول اغلب هیچ کاراکتر strong ندارد — پرانتز، عملگر و رقم همگی
   neutral یا weak هستند. مثلاً وقتی کاربر روی دکمه‌ی «(» می‌زند و محتوا فقط «(»
   است، heuristic هیچ کاراکتر strong پیدا نمی‌کند و به جهت پاراگراف والد یعنی
   RTL برمی‌گردد. در جهت پایه‌ی RTL، قاعده‌ی L4 الگوریتم یونیکد روی کاراکترهای
   دارای خاصیت Bidi_Mirrored اعمال می‌شود و «(» با گلیفِ «)» رسم می‌شود.

   یعنی رشته‌ی ذخیره‌شده همیشه درست بوده و فقط *نمایش* معکوس می‌شده — به همین
   دلیل تلاش‌های قبلی برای اصلاح منطق درج (v23) این باگ را حل نکرد.

   نکته‌ی کلیدی: `dir="ltr"` هم کمکی نمی‌کند، چون plaintext طبق تعریف آن را
   بی‌اثر می‌کند. راه‌حل درست `bidi-override` است که هر کاراکتر را strong LTR
   در نظر می‌گیرد و هم بازچینش و هم آینه‌شدن را کاملاً خاموش می‌کند — دقیقاً
   همان کاری که <bdo> در ردیف پیش‌نمایش پایین می‌کرد و همیشه درست بود.
   --------------------------------------------------------------------------- */
.func-label{
  font-family:'Courier New', monospace; font-size:13px; font-weight:800; color:var(--secondary);
  flex-shrink:0; white-space:nowrap; direction:ltr; text-align:left; unicode-bidi:bidi-override;
}
.func-input{
  flex:1; min-width:0; border:1.5px solid var(--border); background:var(--card); border-radius:10px;
  padding:9px 11px; font-family:'Courier New', monospace; font-size:14px; font-weight:700;
  color:var(--primary); text-align:left; direction:ltr; unicode-bidi:bidi-override;
}
.func-input:focus{ outline:none; border-color:var(--primary); }
.func-color{
  width:30px; height:30px; padding:0; border:none; border-radius:50%; cursor:pointer; flex-shrink:0;
}
.func-remove{
  border:1px solid var(--border); background:var(--surface); color:var(--secondary); border-radius:8px;
  width:28px; height:28px; flex-shrink:0; cursor:pointer; font-size:12px;
}
.func-remove:hover{ border-color:var(--red); color:var(--red); }

.func-row-error{
  display:none; font-size:11px; color:var(--red); background:rgba(239,68,68,.08);
  border-radius:8px; padding:7px 9px; margin-top:6px; line-height:1.8;
}
.func-row-error.show{ display:block; }

.func-preview{
  font-size:11px; color:var(--secondary); margin-top:5px; padding-inline-start:2px;
  direction:rtl; text-align:right;
}
.func-preview bdo{
  font-family:'Courier New', monospace; font-weight:800; color:var(--primary); unicode-bidi:bidi-override;
}

.graph-select{
  width:100%; border:1.5px solid var(--border); background:var(--card); color:var(--text);
  font-family:inherit; font-size:12.5px; font-weight:700; padding:9px 11px; border-radius:10px; cursor:pointer;
}

/* کیبورد ریاضی */
.keypad{
  display:grid; grid-template-columns:repeat(6,1fr); gap:6px; margin-top:12px;
}
/* ---------------------------------------------------------------------------
   ⚠️ ریشه‌ی واقعی باگ «پرانتز برعکس» (بالاخره v33)

   مشکل هیچ‌وقت در فیلد فرمول یا در منطق درج نبود — در برچسب خودِ
   دکمه‌ها بود. یک پرانتزِ تنها داخل <button> در صفحه‌ی RTL یک کاراکتر
   neutral است، پس قاعده‌ی L4 یونیکد آن را آینه رسم می‌کند.

   یعنی دکمه‌ای که روی صفحه «(» دیده می‌شد، در واقع دکمه‌ی «)» بود و
   درست هم کار می‌کرد. به همین دلیل تایپ با کیبورد همیشه درست بود و
   فقط دکمه‌ها «برعکس» عمل می‌کردند.

   ماشین‌حساب اصلی اپ از قبل ایمن بود چون .calc-btn همین دو خاصیت را دارد؛
   کیپد این صفحه جا مانده بود.

   نکته: bidi-override روی <button> (یک المان معمولی) درست کار می‌کند —
   برخلاف <input> که بعضی موتورها آن را روی مقدار داخلی اعمال نمی‌کنند.
   --------------------------------------------------------------------------- */
.keypad button{
  direction:ltr; unicode-bidi:bidi-override;
  border:1px solid var(--border); background:var(--card); color:var(--text);
  font-family:inherit; font-size:12.5px; font-weight:800; padding:10px 2px; border-radius:10px; cursor:pointer;
}
.keypad button:hover{ border-color:var(--primary); color:var(--primary); }
.keypad button.keypad-back{ color:var(--red); }
.keypad button.keypad-back:hover{ border-color:var(--red); color:var(--red); }

/* ناحیه‌ی رسم نمودار */
.plot-wrap{ position:relative; width:100%; }
#plotCanvas{
  width:100%; height:420px; display:block; border-radius:14px; border:1px solid var(--border);
  background:#fff; cursor:grab; touch-action:none;
}
#plotCanvas:active{ cursor:grabbing; }

.zoom-controls{
  position:absolute; left:10px; bottom:10px; display:flex; flex-direction:column; gap:6px;
}
.zoom-controls button{
  width:34px; height:34px; border-radius:10px; border:1px solid var(--border); background:var(--surface);
  color:var(--text); font-size:16px; font-weight:800; cursor:pointer; box-shadow:var(--shadow);
}
.zoom-controls button:hover{ border-color:var(--primary); color:var(--primary); }

@media (max-width:520px){
  .keypad{ grid-template-columns:repeat(4,1fr); }
  #plotCanvas{ height:340px; }
  .func-label{ font-size:11px; }
}

/* نقاط تلاقی و جدول مقادیر */
.graph-info-row{
  display:flex; flex-direction:column; gap:8px; margin-top:14px; padding-top:14px;
  border-top:1px dashed var(--border);
}
.roots-box{ margin-top:10px; }
.roots-line{
  font-size:11.5px; color:var(--text); background:var(--card); border-radius:8px;
  padding:8px 10px; margin-bottom:6px; line-height:1.8; direction:ltr; text-align:right;
}
.value-table-box{ margin-top:10px; }
table.value-table{ width:100%; border-collapse:collapse; font-size:11.5px; direction:ltr; }
table.value-table th, table.value-table td{
  padding:6px 8px; text-align:center; border-bottom:1px solid var(--border); white-space:nowrap;
}
table.value-table th{ color:var(--secondary); font-weight:800; }
table.value-table td:first-child, table.value-table th:first-child{ font-weight:800; color:var(--text); }
