All changes are gated behind max-md:/md:hidden so the >=768px desktop layout is untouched (verified with lint + build + live checks at 375px). - globals.css: one mobile block — 16px inputs (no iOS auto-zoom), units sidebar stacks above content, wizard item rows become 2-col (text fields full-width, delete button full-width), dd-panels / flow diagram / conv-form stack, larger touch targets - ui/dialog.tsx: dialogs become full-width bottom sheets on mobile (all modals inherit it); desktop keeps the centered dialog - Header: sticky on mobile only + PageLayout bottom clearance - New MobileTabBar: role-aware bottom tabs (office admin/manager, inventory PM, inventory admin); hidden on /wizard - Wizard step 4: TouchSensor (150ms delay) so touch drag works without stealing scroll - JalaliDatePicker: dropdown capped to viewport; bigger day cells and time inputs on mobile - PWA: manifest.webmanifest + 192/512 icons (scripts/gen-pwa-icons.ps1) + theme-color/manifest links in index.html - New docs/mobile-responsive.md documenting the full change set
789 lines
19 KiB
CSS
789 lines
19 KiB
CSS
@import "tailwindcss";
|
|
|
|
/* ============================================================
|
|
طراحی بر اساس ui-ux-pro-max: Flat Design — وباپ سازمانی
|
|
اصول: خطوط تمیز، بدون سایههای سنگین، تایپوگرافی منظم،
|
|
ترنزیشنهای کوتاه، آیکونهای SVG (Lucide)
|
|
============================================================ */
|
|
|
|
@theme {
|
|
--color-bg: #f3f5f9;
|
|
--color-panel: #ffffff;
|
|
--color-ink: #0f172a;
|
|
--color-muted: #64748b;
|
|
--color-line: #e5e9f0;
|
|
--color-accent: #4f46e5;
|
|
--color-accent-dark: #4338ca;
|
|
--color-accent-bg: #eef2ff;
|
|
--color-green: #16a34a;
|
|
--color-green-bg: #dcfce7;
|
|
--color-amber: #d97706;
|
|
--color-amber-bg: #fef3c7;
|
|
--color-red: #dc2626;
|
|
--color-red-bg: #fee2e2;
|
|
--color-blue-bg: #dbeafe;
|
|
--color-slate-bg: #f1f5f9;
|
|
--font-sans: "Vazirmatn", system-ui, -apple-system, sans-serif;
|
|
}
|
|
|
|
html {
|
|
direction: rtl;
|
|
}
|
|
|
|
body {
|
|
@apply bg-bg text-ink antialiased;
|
|
font-family: var(--font-sans);
|
|
font-size: 14px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* نشانگر دست روی همهی عناصر قابل کلیک */
|
|
button:not(:disabled),
|
|
[role="button"]:not(:disabled),
|
|
select:not(:disabled),
|
|
a[href],
|
|
label[for],
|
|
input[type="checkbox"]:not(:disabled),
|
|
input[type="radio"]:not(:disabled) {
|
|
cursor: pointer;
|
|
}
|
|
button:disabled {
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* احترام به prefers-reduced-motion */
|
|
@media (prefers-reduced-motion: reduce) {
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
transition-duration: 0.01ms !important;
|
|
animation-duration: 0.01ms !important;
|
|
animation-iteration-count: 1 !important;
|
|
}
|
|
}
|
|
|
|
/* ---------- تایپوگرافی ---------- */
|
|
.num-words {
|
|
@apply text-muted;
|
|
font-size: 0.82em;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ---------- نمودار جریان (Flow) ---------- */
|
|
.flow {
|
|
@apply relative bg-slate-bg/70 px-4 py-3;
|
|
}
|
|
.flow-cols {
|
|
@apply grid grid-cols-2 gap-10;
|
|
}
|
|
.flow-col {
|
|
@apply flex flex-col gap-2;
|
|
}
|
|
.flow-col-h {
|
|
@apply mb-0.5 flex items-center gap-1 text-[11px] font-bold text-muted;
|
|
}
|
|
.flow-box {
|
|
@apply relative rounded-lg border border-line bg-panel px-3 py-2 text-sm;
|
|
}
|
|
.flow-box.rejected {
|
|
@apply border-dashed opacity-55;
|
|
}
|
|
.flow-box.deal {
|
|
@apply border-green bg-green-bg/40;
|
|
}
|
|
/* کارت ترمشیت: پذیرفته = آبی، رسیده = سبز */
|
|
.flow-ts.ts-accepted {
|
|
@apply border-[#bfdbfe] bg-[#eff6ff];
|
|
}
|
|
.flow-ts.ts-arrived {
|
|
@apply border-green/40 bg-green-bg/40;
|
|
}
|
|
.fb-name {
|
|
@apply flex items-center gap-1 text-[12.5px] font-semibold leading-5;
|
|
}
|
|
.fb-meta {
|
|
@apply mt-0.5 flex items-center gap-1 text-[11px] text-muted;
|
|
}
|
|
.fb-nums {
|
|
@apply mt-1 flex flex-wrap gap-x-3 gap-y-0.5 text-[12px] tabular-nums;
|
|
}
|
|
.fb-total {
|
|
@apply font-semibold;
|
|
}
|
|
.fb-conv {
|
|
@apply mt-0.5 flex items-center gap-1 text-[10.5px] text-muted;
|
|
}
|
|
/* رسید جزیی — شکست نمایشی قلم به «رسید شده» (سبز زمردی) و «در راه» (کهربایی) */
|
|
.pill-recvd {
|
|
@apply inline-flex items-center gap-1 rounded-full border border-emerald-200 bg-emerald-50 px-1.5 py-px text-[10.5px] font-bold text-emerald-700;
|
|
}
|
|
.pill-pend {
|
|
@apply inline-flex items-center gap-1 rounded-full border border-amber-200 bg-amber-50 px-1.5 py-px text-[10.5px] font-bold text-amber-700;
|
|
}
|
|
.pill-recvd-mini {
|
|
@apply inline-flex items-center rounded-md bg-emerald-50 px-1 py-px text-[10px] font-bold text-emerald-700;
|
|
}
|
|
.fb-receipt-meta {
|
|
@apply mt-1 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[10.5px] text-muted;
|
|
}
|
|
.fb-fully-received {
|
|
@apply border-emerald-300 bg-emerald-50/30;
|
|
}
|
|
.fb-inv {
|
|
@apply mt-0.5 inline-flex items-center gap-1 text-[11px] text-accent underline underline-offset-2;
|
|
}
|
|
.fb-badge {
|
|
@apply ms-1 rounded-full px-1.5 py-px text-[9.5px] font-bold leading-4;
|
|
}
|
|
/* پیشنهاد = نارنجی، پذیرفته = آبی، رسیده = سبز، رد شده = قرمز، منقضی = خاکستری */
|
|
.fb-badge.offered {
|
|
@apply bg-amber-bg text-amber;
|
|
}
|
|
.fb-badge.accepted {
|
|
@apply bg-blue-bg text-[#1d4ed8];
|
|
}
|
|
.fb-badge.arrived {
|
|
@apply bg-green text-white;
|
|
}
|
|
.fb-badge.rejected {
|
|
@apply bg-red-bg text-red;
|
|
}
|
|
.fb-badge.expired {
|
|
@apply bg-slate-bg text-muted;
|
|
}
|
|
.fb-ms-list {
|
|
@apply mt-1 flex flex-col gap-0.5;
|
|
}
|
|
.fb-ms {
|
|
@apply flex items-center gap-1 text-[11px] text-muted;
|
|
}
|
|
.flow-lines {
|
|
@apply pointer-events-none absolute inset-0 h-full w-full;
|
|
}
|
|
.flow-line {
|
|
fill: none;
|
|
stroke: #cbd5e1;
|
|
stroke-width: 1.5;
|
|
}
|
|
.flow-line.accepted {
|
|
stroke: #2563eb;
|
|
stroke-width: 2;
|
|
}
|
|
.flow-rejected-h {
|
|
@apply mt-3 flex items-center gap-1 text-[11px] font-bold text-muted;
|
|
}
|
|
.flow-rejected-hint {
|
|
@apply text-[10.5px] text-muted mt-1;
|
|
}
|
|
.flow-attach {
|
|
@apply mt-3 flex flex-wrap gap-2;
|
|
}
|
|
.detail-item {
|
|
@apply text-[11.5px];
|
|
}
|
|
.detail-link {
|
|
@apply inline-flex items-center gap-1 text-accent underline underline-offset-2;
|
|
}
|
|
.detail-chip {
|
|
@apply text-muted;
|
|
}
|
|
|
|
/* هشدار «واحد جدید» در جدول دفتر */
|
|
.unit-warn {
|
|
@apply ms-1 inline-flex items-center gap-0.5 rounded bg-amber-bg px-1.5 py-px text-[10px] font-medium text-amber no-underline;
|
|
}
|
|
|
|
/* ردیف منقضی در دفتر */
|
|
.stale-row td {
|
|
@apply bg-amber-bg/25;
|
|
}
|
|
|
|
/* چیپ اقدامات در جدول دفتر */
|
|
.chip {
|
|
@apply inline-flex cursor-pointer items-center gap-0.5 rounded-full border border-line bg-panel px-2.5 py-1 text-[11px] font-medium text-ink transition-colors hover:bg-slate-bg;
|
|
}
|
|
.chip-act {
|
|
@apply border-accent/30 bg-accent-bg text-accent-dark hover:bg-accent-bg/70;
|
|
}
|
|
.chip-arrive {
|
|
@apply border-green/30 bg-green-bg text-green hover:bg-green-bg/70;
|
|
}
|
|
.chip-expand {
|
|
@apply border-transparent bg-transparent px-1.5 text-muted hover:bg-slate-bg hover:text-ink;
|
|
}
|
|
|
|
/* برگههای quick-chip ویزارد */
|
|
.quick-chip {
|
|
@apply inline-flex cursor-pointer items-center gap-1 rounded-full border border-line bg-panel px-3 py-1 text-xs transition-colors hover:border-accent/40 hover:bg-accent-bg/60;
|
|
}
|
|
.quick-chip.selected {
|
|
@apply border-accent bg-accent-bg text-accent-dark;
|
|
}
|
|
.qc-sub {
|
|
@apply text-[10px] text-muted;
|
|
}
|
|
.chip-divider {
|
|
@apply text-xs text-muted;
|
|
}
|
|
|
|
/* spec chips */
|
|
.spec-chip {
|
|
@apply inline-flex items-center gap-1 rounded-full bg-slate-bg px-2 py-0.5 text-[11px] font-medium;
|
|
}
|
|
.spec-chip-x {
|
|
@apply cursor-pointer text-muted hover:text-red;
|
|
}
|
|
|
|
/* کارتهای termsheet در ویزارد/مودالها */
|
|
.variant-card {
|
|
@apply rounded-lg border border-line bg-panel p-3;
|
|
}
|
|
.variant-head {
|
|
@apply mb-2 flex items-center justify-between;
|
|
}
|
|
.variant-num {
|
|
@apply text-sm font-bold;
|
|
}
|
|
.variant-x {
|
|
@apply cursor-pointer rounded p-0.5 text-muted hover:text-red;
|
|
}
|
|
.milestone-row {
|
|
@apply flex items-center gap-2;
|
|
}
|
|
.ms-amount-wrap {
|
|
@apply flex-1;
|
|
}
|
|
.ms-x {
|
|
@apply cursor-pointer text-muted hover:text-red;
|
|
}
|
|
.calc-pill {
|
|
@apply mt-0.5 text-[10.5px] text-muted;
|
|
}
|
|
.calc-pill.empty {
|
|
@apply hidden;
|
|
}
|
|
.ts-items-box {
|
|
@apply mt-2 rounded-md bg-slate-bg/60 p-2;
|
|
}
|
|
.ts-items-title {
|
|
@apply mb-1.5 text-[11.5px] font-bold text-muted;
|
|
}
|
|
.ts-items-empty {
|
|
@apply text-[11.5px] text-muted;
|
|
}
|
|
.ts-item-label {
|
|
@apply flex cursor-pointer items-center gap-1.5 py-0.5 text-[12px];
|
|
}
|
|
.ts-cb-label {
|
|
@apply flex cursor-pointer items-center gap-1.5 py-0.5 text-[12px];
|
|
}
|
|
.e-restore {
|
|
@apply font-medium text-green;
|
|
}
|
|
|
|
/* درگاندروپ پروژهها (مرحله ۴ ویزارد) */
|
|
.dd-panels {
|
|
@apply grid grid-cols-2 gap-4;
|
|
}
|
|
.dd-col {
|
|
@apply rounded-lg border border-line bg-panel p-3;
|
|
}
|
|
.dd-item {
|
|
@apply mb-2 flex cursor-grab items-center justify-between gap-2 rounded-md border border-line bg-panel px-3 py-2 text-[12.5px] transition-colors hover:border-accent/40;
|
|
}
|
|
.dd-item.dd-unassigned {
|
|
@apply border-red/40;
|
|
}
|
|
.dd-item.picked {
|
|
@apply border-accent bg-accent-bg/60;
|
|
}
|
|
.dd-item.dragging {
|
|
@apply opacity-50;
|
|
}
|
|
.dd-count {
|
|
@apply text-[10.5px] text-muted;
|
|
}
|
|
.dd-project {
|
|
@apply mb-2 rounded-md border border-dashed border-line p-2 transition-colors;
|
|
}
|
|
.dd-project.drop-hover {
|
|
@apply border-accent bg-accent-bg/40;
|
|
}
|
|
.dp-name {
|
|
@apply mb-1 flex items-center gap-1 text-[12.5px] font-bold;
|
|
}
|
|
.dp-tags {
|
|
@apply flex flex-wrap gap-1;
|
|
}
|
|
.dd-tag {
|
|
@apply inline-flex items-center gap-1 rounded-full bg-slate-bg px-2 py-0.5 text-[10.5px];
|
|
}
|
|
.dd-tag-x {
|
|
@apply cursor-pointer text-muted hover:text-red;
|
|
}
|
|
.dd-proj-empty {
|
|
@apply text-[11px] text-muted;
|
|
}
|
|
.dd-empty {
|
|
@apply rounded-lg border border-dashed border-line p-6 text-center text-sm text-muted;
|
|
}
|
|
|
|
/* لیست فاکتورها */
|
|
.inv-empty {
|
|
@apply mb-1 text-[12px] text-muted;
|
|
}
|
|
.inv-row {
|
|
@apply mb-1 flex items-center gap-2 rounded-md border border-line bg-panel px-2 py-1.5 text-[12px];
|
|
}
|
|
.inv-name {
|
|
@apply flex flex-1 items-center gap-1 truncate;
|
|
}
|
|
.inv-open {
|
|
@apply text-accent no-underline;
|
|
}
|
|
.inv-x {
|
|
@apply cursor-pointer text-muted hover:text-red;
|
|
}
|
|
|
|
/* فایلها در ویزارد */
|
|
.file-warn {
|
|
@apply mt-0.5 text-[11px] text-amber;
|
|
}
|
|
.file-x {
|
|
@apply cursor-pointer text-muted hover:text-red;
|
|
}
|
|
|
|
/* آیتمهای ورودی عددی */
|
|
.num-input {
|
|
text-align: left;
|
|
direction: ltr;
|
|
}
|
|
.num-pill {
|
|
@apply mt-0.5 block text-[11.5px] font-semibold text-ink/80;
|
|
}
|
|
.num-pill.empty {
|
|
@apply hidden;
|
|
}
|
|
|
|
/* ردیفهای اقلام در ویزارد/ویرایش */
|
|
.item-row {
|
|
@apply grid items-start gap-2;
|
|
}
|
|
.wizard-item-row {
|
|
grid-template-columns: 1.1fr 1.1fr 0.7fr 0.8fr 0.8fr 0.9fr 0.9fr 28px;
|
|
}
|
|
.e-item-row {
|
|
grid-template-columns: 1.1fr 1.1fr 0.7fr 0.8fr 0.8fr 0.9fr 0.9fr auto 28px;
|
|
}
|
|
.item-row-head {
|
|
@apply text-[11px] font-bold text-muted;
|
|
}
|
|
.e-item-rejected td {
|
|
opacity: 0.55;
|
|
}
|
|
.spec-cell {
|
|
@apply relative;
|
|
}
|
|
.spec-trigger {
|
|
@apply flex h-9 w-full cursor-pointer items-center justify-between rounded-md border border-line bg-panel px-3 text-[12px] text-ink;
|
|
}
|
|
.spec-trigger-label {
|
|
@apply text-[12px] font-medium;
|
|
}
|
|
.spec-trigger-label.muted {
|
|
@apply text-muted;
|
|
}
|
|
.spec-drawer {
|
|
@apply absolute right-0 left-0 z-20 hidden rounded-md border border-line bg-panel p-2 shadow-md;
|
|
}
|
|
.spec-drawer.open {
|
|
@apply block;
|
|
}
|
|
.spec-add-row {
|
|
@apply mt-1.5 flex items-center gap-1;
|
|
}
|
|
.spec-add-btn {
|
|
@apply cursor-pointer rounded bg-accent px-2 py-1 text-[12px] font-bold text-white;
|
|
}
|
|
.spec-chips {
|
|
@apply flex flex-wrap gap-1;
|
|
}
|
|
|
|
/* بخش واحدها */
|
|
.units-layout {
|
|
@apply grid grid-cols-[220px_1fr] gap-4;
|
|
}
|
|
.units-tree {
|
|
@apply rounded-lg border border-line bg-panel p-3;
|
|
}
|
|
.tree-head {
|
|
@apply mb-2 flex items-center justify-between;
|
|
}
|
|
.ut-cat {
|
|
@apply flex cursor-pointer items-center justify-between rounded-md px-2.5 py-2 text-[12.5px] transition-colors hover:bg-slate-bg;
|
|
}
|
|
.ut-cat.selected {
|
|
@apply bg-accent-bg font-bold text-accent-dark;
|
|
}
|
|
.ut-ref {
|
|
@apply rounded bg-slate-bg px-1.5 py-px text-[10.5px] text-muted;
|
|
}
|
|
.units-panel {
|
|
@apply rounded-lg border border-line bg-panel p-4;
|
|
}
|
|
.ref-unit-box {
|
|
@apply rounded-md bg-slate-bg/60 p-3;
|
|
}
|
|
.ref-title {
|
|
@apply flex items-center gap-1 text-[13px] font-bold;
|
|
}
|
|
.ref-hint {
|
|
@apply mt-0.5 text-[11px] text-muted;
|
|
}
|
|
.ref-controls {
|
|
@apply mt-2 flex items-center gap-2;
|
|
}
|
|
.sec-title {
|
|
@apply mb-2 mt-4 flex items-center gap-1 text-[13px] font-bold;
|
|
}
|
|
.conv-empty {
|
|
@apply text-[12px] text-muted;
|
|
}
|
|
.cg-head {
|
|
@apply mt-3 mb-1 text-[11.5px] font-bold text-muted;
|
|
}
|
|
.conv-row {
|
|
@apply mb-1 flex items-center gap-2 rounded-md border border-line bg-panel px-2.5 py-1.5 text-[12px];
|
|
}
|
|
.cv-brand {
|
|
@apply w-28 shrink-0 text-[11.5px] text-muted;
|
|
}
|
|
.cv-factor {
|
|
@apply font-bold tabular-nums;
|
|
}
|
|
.cv-arrow {
|
|
@apply text-muted;
|
|
}
|
|
.cv-unit {
|
|
@apply font-medium;
|
|
}
|
|
.conv-actions {
|
|
@apply ms-auto flex items-center gap-1.5;
|
|
}
|
|
.conv-actions button {
|
|
@apply cursor-pointer text-muted transition-colors hover:text-ink;
|
|
}
|
|
.add-conv {
|
|
@apply mt-4 rounded-md border border-dashed border-line p-3;
|
|
}
|
|
.conv-form {
|
|
@apply grid grid-cols-[1.2fr_0.6fr_1fr_0.8fr_auto] items-end gap-2;
|
|
}
|
|
.conv-live {
|
|
@apply mt-2 text-[11.5px] text-muted;
|
|
}
|
|
.unknown-row {
|
|
@apply mb-1 flex items-center gap-2 rounded-md border border-amber/40 bg-amber-bg/40 px-2.5 py-1.5 text-[12px];
|
|
}
|
|
.uk-unit {
|
|
@apply font-bold;
|
|
}
|
|
.uk-count {
|
|
@apply text-[11px] text-muted;
|
|
}
|
|
.conv-hint {
|
|
@apply mt-2 text-[11px] text-muted;
|
|
}
|
|
|
|
/* کارتهای تاپیک */
|
|
.topic-card {
|
|
@apply flex cursor-pointer flex-col items-center gap-1.5 rounded-lg border border-line bg-panel p-3 text-center transition-colors hover:border-accent/50;
|
|
}
|
|
.topic-card.selected {
|
|
@apply border-accent bg-accent-bg/50;
|
|
}
|
|
.topic-card img {
|
|
@apply h-11 w-11 object-contain;
|
|
}
|
|
.t-name {
|
|
@apply text-[12.5px] font-bold leading-5;
|
|
}
|
|
.t-count {
|
|
@apply text-[10.5px] text-muted;
|
|
}
|
|
|
|
/* کارتهای تأمینکننده */
|
|
.sup-card {
|
|
@apply rounded-lg border border-line bg-panel p-3 transition-colors hover:border-accent/40;
|
|
}
|
|
.sc-head {
|
|
@apply flex items-center justify-between;
|
|
}
|
|
.sc-name-link {
|
|
@apply text-[13.5px] font-bold text-accent no-underline hover:underline;
|
|
}
|
|
.sup-del {
|
|
@apply cursor-pointer rounded px-1 text-muted transition-colors hover:text-red;
|
|
}
|
|
.sc-meta {
|
|
@apply mt-2 flex flex-col gap-0.5 text-[12px] text-muted;
|
|
}
|
|
.sc-meta span {
|
|
@apply flex items-center;
|
|
}
|
|
.sc-actions {
|
|
@apply mt-2;
|
|
}
|
|
|
|
/* پنل افزودن */
|
|
.add-panel {
|
|
@apply rounded-lg border border-line bg-panel p-4;
|
|
}
|
|
.add-panel h4 {
|
|
@apply mb-3 flex items-center gap-1 text-[13.5px] font-bold;
|
|
}
|
|
|
|
/* پروژهها */
|
|
.proj-item {
|
|
@apply mb-1.5 flex cursor-pointer items-center gap-2 rounded-md border border-line bg-panel px-3 py-2.5 text-[13px] transition-colors hover:border-accent/50;
|
|
}
|
|
.proj-item.open {
|
|
@apply border-accent bg-accent-bg/50;
|
|
}
|
|
.proj-count {
|
|
@apply ms-auto text-[11px] text-muted;
|
|
}
|
|
.pj-col {
|
|
@apply rounded-lg border border-line bg-panel p-3;
|
|
}
|
|
.pj-col-h {
|
|
@apply mb-2 flex items-center gap-1 text-[12.5px] font-bold;
|
|
}
|
|
.pj-row {
|
|
@apply mb-2 rounded-md border border-line bg-panel px-2.5 py-2 text-[12px];
|
|
}
|
|
.pj-main {
|
|
@apply flex items-center gap-1 font-bold;
|
|
}
|
|
.pj-meta {
|
|
@apply mt-0.5 text-[11px] text-muted;
|
|
}
|
|
.pj-side {
|
|
@apply mt-1 text-[11px];
|
|
}
|
|
.pj-chip {
|
|
@apply ms-1 inline-block rounded-full px-1.5 py-px text-[10px] font-bold;
|
|
}
|
|
.pj-chip.red {
|
|
@apply bg-red-bg text-red;
|
|
}
|
|
.pj-chip.amber {
|
|
@apply bg-amber-bg text-amber;
|
|
}
|
|
.pj-chip.green {
|
|
@apply bg-green-bg text-green;
|
|
}
|
|
.pj-conv {
|
|
@apply text-[10px] text-muted;
|
|
}
|
|
.pj-sup-link {
|
|
@apply text-accent no-underline hover:underline;
|
|
}
|
|
.pj-empty {
|
|
@apply text-[12px] text-muted;
|
|
}
|
|
|
|
/* گزینههای مودال پذیرش */
|
|
.modal-variant {
|
|
@apply mb-2 rounded-lg border border-line bg-panel p-3;
|
|
}
|
|
.modal-variant-head {
|
|
@apply mb-2 flex items-center justify-between;
|
|
}
|
|
.accept-item-assign-row {
|
|
@apply mb-2 flex items-center gap-2;
|
|
}
|
|
.accept-item-assign-row.rejected {
|
|
@apply opacity-55;
|
|
}
|
|
.arrive-row {
|
|
@apply flex cursor-pointer items-center gap-2 rounded-md border border-line px-3 py-2 text-[13px];
|
|
}
|
|
.arrive-row.arrived {
|
|
@apply border-green bg-green-bg/40;
|
|
}
|
|
.arrive-meta {
|
|
@apply ms-auto text-[11.5px] text-muted;
|
|
}
|
|
|
|
/* ستون ورودیهای فرم */
|
|
.field label {
|
|
@apply mb-1 block text-[12.5px] font-medium text-ink;
|
|
}
|
|
.field .hint {
|
|
@apply mt-1 text-[11px] text-muted;
|
|
}
|
|
.field.invalid input {
|
|
@apply border-red ring-1 ring-red/50;
|
|
}
|
|
|
|
/* کلاسهای عمومی */
|
|
.empty {
|
|
@apply py-8 text-center text-sm text-muted;
|
|
}
|
|
.empty .big {
|
|
@apply mb-1 text-3xl;
|
|
}
|
|
.btn-line-file {
|
|
@apply inline-flex cursor-pointer items-center gap-1.5 rounded-md border border-line bg-panel px-3 py-1.5 text-xs font-medium text-ink transition-colors hover:bg-slate-bg;
|
|
}
|
|
.review-row {
|
|
@apply flex items-center justify-between border-b border-line/60 py-1.5 text-[12.5px];
|
|
}
|
|
.review-row .r-label {
|
|
@apply font-bold text-muted;
|
|
}
|
|
.review-warn {
|
|
@apply text-amber;
|
|
}
|
|
|
|
/* ---------- سابقه خرید تأمینکننده (صفحه اطلاعات تماس) ---------- */
|
|
.ph-card {
|
|
@apply rounded-xl border border-line bg-panel p-5 shadow-sm;
|
|
}
|
|
.ph-head {
|
|
@apply mb-3 flex items-center gap-2;
|
|
}
|
|
.ph-title {
|
|
@apply text-[14px] font-bold;
|
|
}
|
|
.ph-count {
|
|
@apply rounded-full bg-accent-bg px-2 py-px text-[11px] font-bold text-accent-dark;
|
|
}
|
|
.ph-row {
|
|
@apply mb-2 rounded-lg border border-line bg-panel px-3 py-2.5;
|
|
}
|
|
.ph-row.stale {
|
|
@apply bg-amber-bg/25;
|
|
}
|
|
.ph-top {
|
|
@apply flex flex-wrap items-center gap-x-2 gap-y-1;
|
|
}
|
|
.ph-date {
|
|
@apply text-[12.5px] font-bold tabular-nums;
|
|
}
|
|
.ph-project {
|
|
@apply text-[11.5px] text-muted;
|
|
}
|
|
.ph-items {
|
|
@apply mt-1 text-[12px] text-ink;
|
|
}
|
|
.ph-total {
|
|
@apply mt-1 text-[12px] font-bold tabular-nums;
|
|
}
|
|
.ph-attach {
|
|
@apply mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 border-t border-line/60 pt-1.5 text-[11.5px];
|
|
}
|
|
.ph-attach-loading {
|
|
@apply text-[11px] text-muted;
|
|
}
|
|
.ph-empty {
|
|
@apply py-6 text-center;
|
|
}
|
|
.ph-empty-text {
|
|
@apply text-[13px] text-muted;
|
|
}
|
|
|
|
/* ============================================================
|
|
موبایل — فقط زیر 768px؛ دسکتاپ هرگز این استایلها را نمیبیند
|
|
============================================================ */
|
|
@media (max-width: 767.98px) {
|
|
/* جلوگیری از زوم خودکار iOS: ورودیها حداقل ۱۶px */
|
|
input:not([type="checkbox"]):not([type="radio"]),
|
|
select,
|
|
textarea {
|
|
font-size: 16px !important;
|
|
}
|
|
|
|
/* واحدها: سایدبار دستهها بالای پنل محتوا قرار میگیرد */
|
|
.units-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
/* ردیف اقلام ویزارد: هدر ستونها حذف (placeholderها برچسباند)؛
|
|
فیلدهای متنی تمامعرض، عددها دوستونه، دکمهی حذف تمامعرض */
|
|
.item-row-head {
|
|
display: none;
|
|
}
|
|
.wizard-item-row {
|
|
grid-template-columns: 1fr 1fr;
|
|
row-gap: 0.5rem;
|
|
}
|
|
.wizard-item-row > :nth-child(-n + 3) {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.wizard-item-row > :last-child {
|
|
grid-column: 1 / -1;
|
|
justify-self: center;
|
|
min-width: 44px;
|
|
min-height: 40px;
|
|
}
|
|
|
|
/* پنلهای درگاندروپ پروژهها (مرحله ۴): تکستونه */
|
|
.dd-panels {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
/* نمودار جریان: باکسها روی هم؛ خطوط اتصال روی موبایل معنی ندارند */
|
|
.flow-cols {
|
|
grid-template-columns: 1fr;
|
|
gap: 0.75rem;
|
|
}
|
|
.flow-lines {
|
|
display: none;
|
|
}
|
|
|
|
/* فرم تبدیل واحد: ستونی */
|
|
.conv-form {
|
|
grid-template-columns: 1fr;
|
|
align-items: stretch;
|
|
}
|
|
.conv-row {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
/* اهداف لمسی بزرگتر (دستکم ~۴۰px) */
|
|
.chip {
|
|
padding-inline: 0.85rem;
|
|
padding-block: 0.55rem;
|
|
}
|
|
.quick-chip {
|
|
padding-block: 0.55rem;
|
|
}
|
|
.spec-chip {
|
|
padding-inline: 0.65rem;
|
|
padding-block: 0.4rem;
|
|
}
|
|
.dd-item {
|
|
padding-block: 0.65rem;
|
|
}
|
|
.ut-cat {
|
|
padding-block: 0.65rem;
|
|
}
|
|
.btn-line-file {
|
|
padding-block: 0.6rem;
|
|
}
|
|
.spec-chip-x,
|
|
.dd-tag-x,
|
|
.inv-x,
|
|
.ms-x,
|
|
.variant-x,
|
|
.file-x,
|
|
.sup-del {
|
|
padding: 0.4rem;
|
|
}
|
|
.conv-actions button {
|
|
padding: 0.45rem;
|
|
}
|
|
}
|