Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
HTML
<style>
/* MEDIQ V48 - New workspaces and consolidated request dialog */
#mediq-dashboard .mq-v48-title{display:flex;align-items:center;justify-content:space-between;gap:12px}
#mediq-dashboard .mq-v48-title h3{font-size:19px!important;color:#176b96!important}
#mediq-dashboard .mq-v48-title p{font-size:12px;color:#6a879d}
#mediq-dashboard .mq-v48-filters{margin:18px 0!important}
#mediq-dashboard .mq-v48-warning{padding:22px;border:1px dashed #d7ab77;background:#fffaf2;color:#835321;border-radius:12px;line-height:2}
#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.mm-request-box .mm-request-body{background:linear-gradient(#f7fbff,#fff 240px)!important}
.mm-request-box .mm-form-section{box-shadow:0 4px 18px rgba(26,90,130,.06)!important}
.mm-request-box .mq-v47-action{border-top:3px solid #3997c8!important}
.mm-request-box .mm-transition-tile{cursor:pointer!important;transition:transform .18s,box-shadow .18s,background .18s!important}
.mm-request-box .mm-transition-tile:hover,.mm-request-box .mm-transition-tile:focus-visible{transform:translateY(-4px)!important;box-shadow:0 9px 24px #227eaa30!important}
.mm-request-box .mm-transition-tile.chosen{border-color:#148acc!important}
.mm-request-box #mmEditPriority{display:none!important}
.mm-request-box .mm-compact-attachments{align-self:stretch;min-width:0}
#mediq-dashboard #mufRoot .muf-stats{margin-top:16px!important}
#mediq-dashboard #mufRoot .muf-tabs{margin-top:16px!important}
#mediq-dashboard #mufRoot .mq-v47-newfault{animation:mqV48Signal 3s ease-in-out infinite}
#mediq-dashboard #mufRoot .mq-v47-newfault:hover{animation:none;transform:translateY(-4px) rotate(-1deg)!important}
@keyframes mqV48Signal{0%,85%,100%{box-shadow:0 0 0 0 #de424b00}90%{box-shadow:0 0 0 7px #de424b22}}
@media(max-width:930px){#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:600px){#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:1fr!important}.mq-v48-title{flex-direction:column;align-items:flex-start!important}}
@media(prefers-reduced-motion:reduce){#mediq-dashboard #mufRoot .mq-v47-newfault{animation:none!important}}

/* MEDIQ V49.16 - user-fault focused layout */
#mediq-dashboard #mufRoot .muf-list-shell{grid-template-columns:minmax(0,1.45fr) minmax(310px,.85fr)!important;gap:12px!important}
#mediq-dashboard #mufRoot .muf-side-panel{padding:10px!important;min-height:0!important;max-height:calc(100vh - 205px);overflow:auto}
#mediq-dashboard #mufRoot .muf-side-box{margin-top:7px!important;padding:9px!important}
#mediq-dashboard #mufRoot .muf-side-title.compact{margin:6px 0!important}
#mediq-dashboard #mufRoot .muf-user-fault-facts{gap:6px!important}
#mediq-dashboard #mufRoot .muf-user-fault-facts>div{padding:7px!important;min-height:38px!important}
#mediq-dashboard #mufRoot .muf-user-fault-facts small{display:block;color:#7692a6}
#mediq-dashboard #mufRoot .muf-desc-readonly{white-space:normal;line-height:1.8;max-height:120px;overflow:auto}
#mediq-dashboard #mufRoot .muf-asset-ref{display:block;margin-top:6px}
#mediq-dashboard #mufRoot #mufTechnicianMessage{display:block;width:100%;box-sizing:border-box;min-height:76px;border:1px solid #cde0ed;border-radius:9px;padding:9px;font:inherit;resize:vertical}
#mediq-dashboard #mufRoot .muf-hint{color:#68889d;font-size:11px;line-height:1.7;margin:5px 0}
#mediq-dashboard #mufRoot .muf-close-action{background:#e34b58!important;color:#fff!important;border-color:#e34b58!important}
#mediq-dashboard #mufRoot .muf-csat-info{padding:9px;border-radius:9px;background:#f0f7fd;color:#48738a;font-size:11px;line-height:1.8;margin-top:8px}
#mediq-dashboard #mufRoot .muf-create-row{grid-template-columns:minmax(180px,1.1fr) minmax(270px,1.6fr) minmax(120px,.7fr) minmax(220px,1.25fr) auto!important;align-items:end!important}
#mediq-dashboard #mufRoot .muf-create-row>label,#mediq-dashboard #mufRoot .muf-urgency-picker{min-width:0;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-end;gap:5px}
#mediq-dashboard #mufRoot .muf-create-row textarea{box-sizing:border-box;min-height:48px!important;height:48px!important;margin:0!important}
#mediq-dashboard #mufRoot .muf-urgency-picker>span{font-weight:700;font-size:12px;color:#275775}
#mediq-dashboard #mufRoot .muf-priority-choices{display:flex;align-items:stretch;gap:4px;border:1px solid #cee2f0;border-radius:10px;padding:4px;background:#f6fbff;min-height:48px;box-sizing:border-box}
#mediq-dashboard #mufRoot .muf-priority-choice{border:1px solid transparent;background:transparent;border-radius:7px;cursor:pointer;flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px 1px;transition:transform .2s,background .2s,border-color .2s}
#mediq-dashboard #mufRoot .muf-priority-choice:hover{transform:translateY(-3px);background:#e4f4ff}
#mediq-dashboard #mufRoot .muf-priority-choice.active{background:#def1fc;border-color:#409fd2;box-shadow:0 0 0 1px #409fd233}
#mediq-dashboard #mufRoot .muf-priority-choice img{height:21px;width:21px;object-fit:contain}
#mediq-dashboard #mufRoot .muf-priority-choice small{font-size:9px;white-space:nowrap;color:#35617d}
@media(max-width:1200px){#mediq-dashboard #mufRoot .muf-create-row{grid-template-columns:1fr 1.5fr!important}#mediq-dashboard #mufRoot .muf-list-shell{grid-template-columns:1fr!important}#mediq-dashboard #mufRoot .muf-side-panel{max-height:none!important}}
@media(max-width:620px){#mediq-dashboard #mufRoot .muf-create-row{grid-template-columns:1fr!important}#mediq-dashboard #mufRoot .muf-priority-choices{flex-wrap:wrap}}


/* MEDIQ V49.29 - User-scoped read acknowledgments */
#mediq-dashboard .mq-handover-row-actions{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:165px}
#mediq-dashboard .mq-handover-row-actions .mq-assets-btn{width:100%;max-width:205px;font-size:11px;white-space:normal;line-height:1.7}
#mediq-dashboard .mq-handover-row-actions .mq-mark-read{background:#f0fbf6;border-color:#8bd4af;color:#087c54}
#mediq-dashboard .mq-handover-row-actions .mq-handover-read-ok{font-size:11px;color:#087c54;font-weight:700}
#mediq-dashboard .mq-v50-new-badge{background:#e4404c!important;color:white!important}

/* MEDIQ CSAT Candylio integration */
#mediq-dashboard .mq-csat-categories{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
#mediq-dashboard .mq-csat-choice{display:flex;align-items:center;gap:6px;padding:7px 10px;border:1px solid #c5dff0;border-radius:8px;background:#f6fbff;color:#315873;font-size:12px;cursor:pointer}
#mediq-dashboard .mq-csat-choice input{width:15px;height:15px;min-height:0;margin:0;accent-color:#298dc2}
#mediq-dashboard .mq-v4928-rating button{font-size:26px!important}
</style>
<style>
/* V38.20 - clickable KPI cards, activity-aligned detail panel, live workflow pulse */
#mediq-dashboard #mmContent .mm-kpi-card{background:#fff;border:1px solid #cbdfea;border-radius:16px;padding:30px;display:flex;flex-direction:column;gap:12px;cursor:pointer;transition:border-color .18s,background .18s,box-shadow .18s;text-align:right;font:inherit;color:inherit}
#mediq-dashboard #mmContent .mm-kpi-card strong{font-size:30px;color:#318fbd}
#mediq-dashboard #mmContent .mm-kpi-card:hover{border-color:#3595c4;background:#f5fbff}
#mediq-dashboard #mmContent .mm-kpi-card.active{border:2px solid #328fc2;background:#eaf6ff;box-shadow:0 0 0 2px #d6edf9 inset}
#mediq-dashboard #mmContent .mm-kpi-card:focus-visible{outline:3px solid #2e92ca;outline-offset:2px}
#mediq-dashboard #mmContent.mm-with-fixed-side{display:block!important}
#mediq-dashboard #mmContent .mm-permanent-panel{float:left!important;position:sticky!important;top:16px!important;left:auto!important;bottom:auto!important;display:block;width:315px!important;max-height:calc(100vh - 34px)!important;margin:0 14px 18px 0!important;box-sizing:border-box;z-index:3;border:1px solid #cee0ee;border-radius:14px;box-shadow:none;padding:14px;overflow:auto}
#mediq-dashboard #mmContent .mm-permanent-panel[hidden]{display:none!important}
#mediq-dashboard #mmContent.mm-with-fixed-side #mmRows,#mediq-dashboard #mmContent.mm-with-fixed-side .mm-actionbar{margin-left:330px!important;min-width:0}
#mediq-dashboard .mm-workflow .mm-stage.current:before{animation:mediqV3820Pulse 1.1s ease-in-out infinite!important;will-change:box-shadow,transform;}
@keyframes mediqV3820Pulse{0%,100%{box-shadow:0 0 0 3px #dff1fc,0 0 0 5px rgba(30,145,199,.72);transform:scale(1);opacity:1}50%{box-shadow:0 0 0 3px #dff1fc,0 0 0 15px rgba(30,145,199,0);transform:scale(1.18);opacity:.52}}
@media(max-width:900px){#mediq-dashboard #mmContent .mm-permanent-panel{float:none!important;position:relative!important;width:100%!important;max-height:none!important;top:0!important;margin:0 0 12px!important}#mediq-dashboard #mmContent.mm-with-fixed-side #mmRows,#mediq-dashboard #mmContent.mm-with-fixed-side .mm-actionbar{margin-left:0!important}}

/* MediQ V39: visual refresh while retaining brand colors */
#mediq-dashboard .mm-category-icon{width:74px!important;height:74px!important;background:#e7f4fc!important;color:#2688bd!important;border-radius:18px!important}
#mediq-dashboard .mm-category-icon svg{width:46px!important;height:46px!important;stroke-width:2!important}
#mediq-dashboard .mm-category-card{border-color:#c5e2f3!important;box-shadow:0 9px 28px rgba(32,103,146,.08)!important}
#mediq-dashboard .mm-category-card:hover{box-shadow:0 16px 36px rgba(32,103,146,.15)!important}
#mediq-dashboard .mm-kpi-card{position:relative;border-radius:16px!important;border:1px solid #c8dfed!important;box-shadow:0 5px 16px rgba(22,85,124,.07)!important;text-align:right!important;direction:rtl!important;transition:transform .14s,box-shadow .14s!important}
#mediq-dashboard .mm-kpi-card:hover{transform:translateY(-3px);box-shadow:0 9px 24px rgba(26,91,128,.13)!important}
#mediq-dashboard .mm-kpi-card.active{background:#e9f6ff!important;border-color:#3197cc!important}
#mediq-dashboard .mm-kpi-card strong{color:#208ac2!important;font-size:29px!important}
#mediq-dashboard #mmContent .mm-two-pane{direction:rtl}
#mediq-dashboard #mmContent th{background:#eaf4fb!important;color:#245978!important}
#mediq-dashboard #mmContent tr:hover td{background:#f2f9fe}
#mediq-dashboard .mm-issue-overlay .mm-permanent-panel,#mediq-dashboard #mmPermanentIssue{width:min(46vw,610px)!important;max-width:calc(100vw - 20px)!important;box-shadow:0 8px 28px rgba(24,70,100,.13)!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card{border-color:#c6e2f1!important;box-shadow:0 3px 9px rgba(20,85,125,.04)}
.mm-request-box .mm-request-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.mm-request-box .mm-form-section{box-shadow:0 3px 14px rgba(32,91,126,.06);border-color:#cce4f3!important}
.mm-request-box .mm-form-section h4{font-size:16px!important;color:#136b9e!important}
.mm-request-box .mm-transition-tiles{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.mm-request-box .mm-transition-tile{border:1px solid #b9dced;border-radius:11px;background:#f4faff;color:#245d7c;font:inherit;font-weight:750;padding:10px 16px;cursor:pointer}
.mm-request-box .mm-transition-tile.chosen{border-color:#208cc6;background:#d7efff;color:#075b8e;box-shadow:0 0 0 2px #c5e8fc}
.mm-request-box .mm-current-stage{background:#e7f6ef;border:1px solid #bce3d1;color:#177453;font-weight:800;border-radius:10px;padding:10px 12px}
.mm-discard-overlay[hidden]{display:none!important}.mm-discard-overlay{position:absolute;inset:0;background:#1b3c5299;display:grid;place-items:center;z-index:10;border-radius:14px}
.mm-discard-card{background:white;direction:rtl;text-align:right;border-radius:15px;padding:26px;max-width:380px;box-shadow:0 20px 55px #11374b44}
.mm-discard-card strong{font-size:17px;color:#125f8f}.mm-discard-card>div{display:flex;gap:8px}
@media(max-width:850px){#mediq-dashboard #mmPermanentIssue{width:min(95vw,520px)!important}.mm-request-box .mm-request-grid{grid-template-columns:1fr!important}}
/* V39 last-in-cascade responsive layout fixes */
#mediq-dashboard .mm-category-icon{width:74px!important;height:74px!important;border-radius:18px!important;background:#e6f5fd!important}
#mediq-dashboard .mm-category-icon svg{width:46px!important;height:46px!important}
#mediq-dashboard #mmContent .mm-permanent-panel{width:560px!important;max-width:44%!important;float:left!important;top:0!important;margin:0 14px 16px 0!important;max-height:calc(100vh - 26px)!important}
#mediq-dashboard #mmContent.mm-with-fixed-side #mmRows,#mediq-dashboard #mmContent.mm-with-fixed-side .mm-actionbar{margin-left:580px!important}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type .mm-detail-line{min-width:0}
#mediq-dashboard .mm-kpi-card{direction:rtl!important;text-align:right!important;border-radius:16px!important;box-shadow:0 5px 16px #20678c12!important}
@media(max-width:1040px){#mediq-dashboard #mmContent .mm-permanent-panel{width:42%!important;max-width:42%!important}#mediq-dashboard #mmContent.mm-with-fixed-side #mmRows,#mediq-dashboard #mmContent.mm-with-fixed-side .mm-actionbar{margin-left:44%!important}}
@media(max-width:760px){#mediq-dashboard #mmContent .mm-permanent-panel{position:relative!important;width:100%!important;max-width:100%!important;float:none!important;max-height:70vh!important}#mediq-dashboard #mmContent.mm-with-fixed-side #mmRows,#mediq-dashboard #mmContent.mm-with-fixed-side .mm-actionbar{margin-left:0!important}}</style>
<style>
/* MEDIQ: vertical workflow timeline, same asset-status visual language */
#mediq-dashboard .mm-stage-grid{display:flex!important;flex-direction:column!important;gap:0!important;margin:14px 0!important;direction:rtl}
#mediq-dashboard .mm-stage{position:relative;display:flex!important;align-items:center;gap:12px;min-height:60px;text-align:right!important;padding:7px 5px!important;border:0!important;border-radius:0!important;background:transparent!important;color:#758e9f!important;font-size:12px!important;line-height:1.7}
#mediq-dashboard .mm-stage:before{content:'';display:block;width:19px;height:19px;flex:0 0 19px;border-radius:50%;background:#e0eaf0;border:2px solid #c9dbe6;box-shadow:0 0 0 3px #fff;position:relative;z-index:2}
#mediq-dashboard .mm-stage:not(:last-child):after{content:'';position:absolute;right:15px;top:40px;bottom:-20px;width:3px;background:#d7e5ed;z-index:0}
#mediq-dashboard .mm-stage.done{color:#23865e!important;font-weight:700}
#mediq-dashboard .mm-stage.done:before{content:'✓';background:#1aaf68;color:white;border-color:#1aaf68;text-align:center;font-size:13px;line-height:17px}
#mediq-dashboard .mm-stage.done:after{background:#1aaf68}
#mediq-dashboard .mm-stage.current{color:#147fac!important;font-weight:900!important}
#mediq-dashboard .mm-stage.current:before{background:#168bc0;border:5px solid #b5e4f8;box-shadow:0 0 0 4px #e7f5fc}

/* V38.18: pulse only the CURRENT maintenance workflow stage, matching asset timeline */
#mediq-dashboard .mm-workflow .mm-stage.current::before{
  animation:mediqMaintenanceCurrentPulse 1.55s ease-in-out infinite;
  transform-origin:center center;
}
@keyframes mediqMaintenanceCurrentPulse{
  0%,100%{box-shadow:0 0 0 4px #e7f5fc,0 0 0 7px rgba(22,139,192,.28);opacity:1}
  50%{box-shadow:0 0 0 4px #e7f5fc,0 0 0 15px rgba(22,139,192,0);opacity:.72}
}
@media(prefers-reduced-motion:reduce){
  #mediq-dashboard .mm-workflow .mm-stage.current::before{animation:none}
}

#mediq-dashboard .mm-workflow .mm-hint{font-size:11px;line-height:1.9}
</style>
<style>
/* MediQ V38.16: sidebar parity and workflow summary */
#mediq-dashboard .mq-tree-v31 .v32-tree-children .mq-tree-row.level-2{font-size:14px!important;font-weight:650!important;min-height:42px!important;line-height:1.75!important}
#mediq-dashboard .mm-stage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:12px 0}
#mediq-dashboard .mm-stage{padding:10px 7px;border-radius:9px;text-align:center;background:#f2f7fa;color:#54768d;border:1px solid #d5e4ee;font-size:12px}
#mediq-dashboard .mm-stage.current{border-color:#318fc3;background:#dff2ff;color:#11577f;font-weight:800}
#mediq-dashboard .mm-workflow h4{font-size:15px;margin-bottom:9px}
#mediq-dashboard .mm-request-box button{font-family:inherit;font-size:14px;border-radius:8px}
#mediq-dashboard .mm-request-box .mm-actions .mq-assets-btn{min-height:38px;padding:9px 16px}
@media(max-width:650px){#mediq-dashboard .mm-stage-grid{grid-template-columns:1fr 1fr}}

/* MEDIQ PRESENTATION: focused and polished request editor */
.mm-request-modal{z-index:1000100!important;padding:18px!important}
.mm-request-box{width:min(980px,96vw)!important;max-height:90vh!important;display:flex!important;flex-direction:column!important;padding:0!important;overflow:hidden!important;border:1px solid #c9dfed!important;border-radius:17px!important;direction:rtl!important;text-align:right!important}
.mm-request-box>header{padding:19px 24px!important;position:sticky;top:0;background:#fff;z-index:3;flex-shrink:0;box-shadow:0 3px 12px #184d6409}
.mm-request-box>header h3{font-size:18px!important;margin:0!important}
.mm-request-body{padding:6px 24px 24px;overflow-y:auto;flex:1;min-height:0;scrollbar-width:thin}
.mm-request-box .mm-form-section{padding:19px!important;margin:16px 0!important;border-radius:12px!important;background:#fff!important}
.mm-request-box .mm-form-section h4{font-size:15px!important;margin:0 0 18px!important}
.mm-request-box .mm-request-grid{gap:17px!important;align-items:start}
.mm-request-box .mm-request-grid label{display:flex!important;flex-direction:column!important;gap:5px;font-size:13px!important;color:#245574!important}
.mm-request-box .mm-request-grid input,.mm-request-box .mm-request-grid select,.mm-request-box .mm-request-grid textarea{min-height:43px!important;font-size:13px!important;margin:0!important;text-align:right!important;direction:rtl!important}
.mm-request-box .mm-request-grid textarea{min-height:100px!important;line-height:1.8!important}
.mm-request-box .mm-actions button,.mm-request-box #mmSendComment{border:1px solid #328fbe!important;border-radius:9px!important;min-height:40px!important;padding:9px 16px!important;background:#3997c8!important;color:white!important;font-weight:700!important;cursor:pointer!important}
.mm-request-box .mm-actions button:disabled{opacity:.55!important;cursor:wait!important}
.mm-request-box #mmSaveIssueResult,.mm-request-box #mmCommentResult{font-size:12px!important;line-height:1.9!important;margin:10px 0 0!important}
.mm-request-box .mm-user-menu{position:absolute;top:calc(100% - 1px);left:0;right:0;box-shadow:0 8px 24px #12345622;border-radius:9px;z-index:10}
.mm-request-box .mm-request-grid label{position:relative}
.mm-request-box .mm-documents{display:flex;flex-wrap:wrap;gap:8px}
.mm-request-box .mm-doc-pill{width:auto!important;margin:0!important}
@media(max-width:690px){.mm-request-modal{padding:6px!important}.mm-request-box{max-height:98vh!important;width:100%!important}.mm-request-body{padding:4px 12px 16px}.mm-request-box .mm-request-grid{grid-template-columns:1fr!important}.mm-request-box>header{padding:15px!important}}
</style>
<style>
/* MediQ V38.22 — Activity detail panel refinements */
#mediq-dashboard #mmContent.mm-with-fixed-side{
 display:grid!important;grid-template-columns:minmax(0,1fr) minmax(285px,310px)!important;
 column-gap:18px!important;row-gap:12px!important;align-items:start!important;
 min-width:0!important;overflow:visible!important;
}
#mediq-dashboard #mmContent.mm-with-fixed-side>.v-stats,
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmActivitiesHeading{
 grid-column:1/-1!important;min-width:0!important;
}
#mediq-dashboard #mmContent.mm-with-fixed-side>.v-stats{grid-row:1!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmActivitiesHeading{grid-row:2!important;margin:8px 0 0!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{
 grid-column:2!important;grid-row:3/span 2!important;float:none!important;
 position:sticky!important;top:12px!important;left:auto!important;right:auto!important;bottom:auto!important;
 width:100%!important;min-width:0!important;max-width:100%!important;
 max-height:calc(100vh - 28px)!important;margin:0!important;padding:0 12px 16px!important;
 overflow-x:hidden!important;overflow-y:auto!important;
 background:linear-gradient(180deg,#f2f9fe 0,#fff 160px)!important;
 border:1px solid #b8d8ed!important;border-radius:17px!important;
 box-shadow:0 9px 30px rgba(25,83,123,.12)!important;
 color:#174866!important;font-size:13px!important;line-height:1.85!important;
 box-sizing:border-box!important;isolation:isolate;
}
#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{
 grid-column:1!important;grid-row:3!important;margin:0!important;min-width:0!important;
}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{
 grid-column:1!important;grid-row:4!important;margin:0!important;min-width:0!important;
 width:100%!important;overflow-x:auto!important;
}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows .mq-tbl{width:100%!important;max-width:100%!important}
#mediq-dashboard #mmPermanentIssue *,#mediq-dashboard #mmPermanentIssue *::before,#mediq-dashboard #mmPermanentIssue *::after{box-sizing:border-box}
#mediq-dashboard #mmPermanentIssue>header{
 position:sticky;top:0;z-index:5;margin:0 -12px 15px!important;padding:14px 14px!important;
 background:linear-gradient(115deg,#e1f1fb,#f3faff)!important;border-bottom:1px solid #c5e1f1!important;
 display:flex;gap:10px;align-items:center;justify-content:space-between;
}
#mediq-dashboard #mmPermanentIssue>header strong{font-size:14px!important;font-weight:850!important;color:#075b8b!important;overflow-wrap:anywhere}
#mediq-dashboard #mmPermanentIssue>header button{flex:0 0 auto;width:30px;height:30px;padding:0!important;font-size:21px!important;background:#fff!important;color:#326b91!important;border:1px solid #cfe2ee!important}
#mediq-dashboard #mmPermanentIssue>h3{font-size:14px!important;line-height:1.9!important;font-weight:850!important;color:#174a6d!important;margin:4px 2px 12px!important;overflow-wrap:anywhere;word-break:normal}
#mediq-dashboard #mmPermanentIssue .mm-detail-card{
 margin:12px 0!important;padding:14px 12px!important;background:#fff!important;
 border:1px solid #d1e5f3!important;border-right:3px solid #4ca5d1!important;border-radius:12px!important;
 box-shadow:0 4px 12px rgba(21,84,124,.045)!important;min-width:0!important;
}
#mediq-dashboard #mmPermanentIssue .mm-detail-card h4{font-size:14px!important;font-weight:850!important;color:#0b628f!important;margin:0 0 12px!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line{align-items:flex-start!important;gap:9px!important;padding:11px 0!important;font-size:12.5px!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line span{color:#687f92!important;flex:0 0 82px!important;font-weight:650!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line strong{color:#163e5a!important;text-align:left!important;flex:1;min-width:0;font-size:13px!important;font-weight:850!important;overflow-wrap:anywhere}
#mediq-dashboard #mmPermanentIssue .mm-detail-line:first-child strong{color:#087bb0!important}
#mediq-dashboard #mmPermanentIssue input,#mediq-dashboard #mmPermanentIssue textarea{
 width:100%!important;min-width:0!important;max-width:100%!important;
 border:1px solid #c4dff0!important;background:#fbfdff!important;border-radius:9px!important;
 padding:10px!important;direction:rtl!important;text-align:right!important;
 font-size:13px!important;color:#204b67!important;
}
#mediq-dashboard #mmPermanentIssue label{font-size:12px!important;font-weight:750!important;color:#2a6488!important}
#mediq-dashboard #mmPermanentIssue button.mq-assets-btn{max-width:100%!important;white-space:normal!important;line-height:1.6!important;font-weight:800!important;border-radius:9px!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage{font-size:12.5px!important;font-weight:700!important;min-width:0!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage.current{font-weight:900!important;color:#0a77ae!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-hint{font-size:11px!important;line-height:1.8!important;color:#7891a3!important}
#mediq-dashboard #mmPermanentIssue .mm-user-menu,#mediq-dashboard #mmPermanentIssue .mm-cal{max-width:min(100%,300px)!important}
@media(max-width:1000px){
 #mediq-dashboard #mmContent.mm-with-fixed-side{grid-template-columns:minmax(0,1fr)!important}
 #mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{grid-column:1!important;grid-row:3!important;position:relative!important;top:0!important;max-height:470px!important}
 #mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{grid-column:1!important;grid-row:4!important}
 #mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{grid-column:1!important;grid-row:5!important}
}

</style>
<style>
/* MEDIQ V47: action dialog refresh – presentation only */
.mm-request-box .mq-v47-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.mm-request-box .mq-v47-product-image{display:block;width:min(240px,100%);height:130px;object-fit:contain;background:#f6fbfe;border:1px solid #d8e8f2;border-radius:12px;margin:8px auto}
.mm-request-box .mq-v47-priority{display:flex;align-items:center;gap:8px;min-height:43px;border:1px solid #cfe3f0;border-radius:10px;padding:8px 13px;background:#f3f9fe;color:#245574;font-size:13px}
.mm-request-box .mq-v47-priority b{font-size:19px}
.mm-request-box input[readonly],.mm-request-box textarea[readonly]{background:#f4f8fb!important;color:#315873!important;cursor:default}
.mm-request-box .mq-v47-status{border:1px solid #d0e4f1;border-radius:10px;padding:9px 13px;display:flex;flex-direction:column;gap:5px;background:#f5faff;font-size:12px}
.mm-request-box .mq-v47-status span{color:#7290a5}.mm-request-box .mq-v47-status strong{color:#176b9b}
.mm-request-box .mq-v47-device{grid-column:1/-1;margin:3px 0!important;padding:12px!important}
.mm-request-box .mq-v47-help{color:#7290a5;font-size:12px;margin:0 0 12px}
.mm-request-box .mq-v47-actions-container{display:flex;flex-direction:column;gap:10px}
.mm-request-box .mq-v47-action .mm-transition-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.mm-request-box .mq-v47-action .mm-transition-tile{min-height:62px;text-align:center;font-size:14px;border:1px solid #add4e9!important;border-radius:13px!important;transition:transform .2s,box-shadow .2s,background .2s!important}
.mm-request-box .mq-v47-action .mm-transition-tile:hover{transform:translateY(-4px);background:#e6f5ff!important;box-shadow:0 12px 24px #1b82b626!important}
.mm-request-box .mq-v47-action .mm-transition-tile.chosen{background:#d6efff!important;box-shadow:0 0 0 2px #b8e2fa!important}
.mm-request-box .mq-v47-self{border:0;background:transparent;color:#1682b7;text-decoration:underline;text-align:right;align-self:flex-start;cursor:pointer;font:inherit}
.mm-request-box .mq-v47-notes{display:flex;flex-direction:column;gap:10px}
.mm-request-box .mq-v47-notes #mmCommentList{order:5}
.mm-request-box .mq-v47-notes h5{order:4;margin:10px 0 0;color:#176b9b}
.mm-request-box .mq-v47-notes .mm-comment-actions{order:2}
.mm-request-box .mq-v47-notes #mmCommentResult{order:3}
.mm-request-box .mq-v47-notes>label{order:1}
.mm-request-box .mq-v47-notes>h4{order:0}
@media(max-width:650px){.mm-request-box .mq-v47-action .mm-transition-tiles{grid-template-columns:1fr 1fr}}
</style>
<style>
/* V47: creation next to refresh, appearance only */
#mediq-dashboard #mufRoot .mq-v47-newfault{background:#dc464d!important;color:#fff!important;border:1px solid #cf3f49!important;border-radius:9px!important;cursor:pointer!important;font-weight:850!important;padding:11px 16px!important;transition:transform .18s,box-shadow .18s!important}
#mediq-dashboard #mufRoot .mq-v47-newfault:hover{transform:translateY(-4px) rotate(-1deg)!important;box-shadow:0 12px 24px #d73d4a44!important;background:#bd303b!important}
#mediq-dashboard #mufRoot .muf-heading{gap:12px;flex-wrap:wrap}
</style>
<style id="mediq-v49-precise-overrides">
/* V49 — refinement on the user's exact V48 source; no replacement of core routing */
.mm-request-box{width:min(1000px,97vw)!important;max-height:94vh!important}
.mm-request-box>header{padding:13px 20px!important}
.mm-request-body{padding:5px 16px 14px!important}
.mm-request-box .mm-form-section{margin:9px 0!important;padding:13px!important}
.mm-request-box .mm-form-section h4{margin:0 0 10px!important}
.mm-request-box .mm-request-grid{gap:10px!important}
.mm-request-box .mm-request-grid textarea{min-height:68px!important;max-height:130px!important}
.mm-request-box .mm-request-grid input{min-height:39px!important}
.mm-request-box .mm-compact-attachments{grid-column:1;min-width:0;margin:0!important;padding:0!important}
.mm-request-box .mq-v47-device{padding:9px!important;margin:0!important}
.mm-request-box .mq-v47-product-image{height:110px!important;width:min(170px,100%)!important}
.mm-request-box .mq-v47-action{border-top:3px solid #258fc5!important;background:linear-gradient(145deg,#fff,#f7fbfe)!important}
.mm-request-box .mq-v49-flow{display:flex;align-items:center;flex-wrap:wrap;gap:9px;padding:9px 12px;border:1px solid #d7e9f4;background:#eef8fe;border-radius:10px;color:#2a607f;font-size:12px;margin-bottom:10px}
.mm-request-box .mq-v49-now{display:inline-flex;align-items:center;gap:7px}
.mm-request-box .mq-v49-now i{width:9px;height:9px;background:#1397cb;border-radius:50%;box-shadow:0 0 0 3px #c7ecfa;animation:mqV49Pulse 1.6s ease-in-out infinite}
.mm-request-box .mq-v49-flow-arrow{font-size:21px;color:#3794be}
.mm-request-box .mq-v49-next{font-weight:800;color:#166f9e}
.mm-request-box .mq-v47-action .mm-transition-tiles{margin:8px 0!important;gap:9px!important}
.mm-request-box .mq-v47-action .mm-transition-tile{min-height:51px!important;border:1px solid #a6d3ec!important;background:#fff!important;box-shadow:0 3px 10px #246e9612!important;position:relative}
.mm-request-box .mq-v47-action .mm-transition-tile:not(.chosen):hover{transform:translateY(-4px) scale(1.015)!important;background:#e6f6ff!important;box-shadow:0 11px 20px #1b82b62e!important}
.mm-request-box .mq-v47-action .mm-transition-tile.chosen{background:#def2ff!important;border-color:#158ac3!important}
.mm-request-box .mq-v47-help{margin-bottom:6px!important}
.mm-request-box .mq-v47-notes{gap:8px!important}
.mm-request-box .mq-v47-notes #mmCommentList{max-height:220px;overflow:auto;border-top:1px solid #e5edf3;margin-top:6px}
.mm-request-box .mm-documents{max-height:110px;overflow:auto}
#mediq-dashboard #mufRoot .muf-heading{display:flex!important;gap:10px!important;align-items:center!important;flex-wrap:wrap!important}
#mediq-dashboard #mufRoot .muf-kpi{transition:transform .18s,box-shadow .18s!important;cursor:pointer!important}
#mediq-dashboard #mufRoot .muf-kpi:hover{transform:translateY(-4px)!important;box-shadow:0 12px 28px #276b9b24!important}
#mediq-dashboard #mufRoot .muf-kpi.selected{box-shadow:0 0 0 2px #59b0dd inset,0 7px 20px #276b9b14!important}
#mediq-dashboard #mufRoot .mq-v47-newfault{background:#dc414e!important;color:#fff!important}
#mediq-dashboard #mufRoot .mq-v47-newfault:hover{transform:translateY(-4px) rotate(-1deg)!important;box-shadow:0 12px 26px #b9273d55!important}
#mediq-dashboard #mufRoot .muf-urgency-icon{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:9px;background:#e8f3fc;font-size:18px;vertical-align:middle}
#mediq-dashboard #mufRoot .muf-urgency-icon[data-level=high]{background:#fff3e2}
#mediq-dashboard #mufRoot .muf-urgency-icon[data-level=critical]{background:#ffedf0}
#mediq-dashboard .mm-handover-card{font-family:inherit!important}
@keyframes mqV49Pulse{50%{box-shadow:0 0 0 9px #1397cb00;transform:scale(1.15)}}
@media(max-width:690px){.mm-request-box .mm-request-grid{grid-template-columns:1fr!important}.mm-request-box .mm-compact-attachments{grid-column:1!important}.mm-request-box .mq-v49-flow-arrow{display:none}}
@media(prefers-reduced-motion:reduce){.mm-request-box .mq-v49-now i{animation:none}}
</style>
<style id="mediq-v49-25-patches">
/* MEDIQ V49.25 -- concise cards, active navigation, accessible calendars */
#mediq-dashboard .mm-category-card[data-mq-v48-property]{position:relative;overflow:visible!important;padding:17px!important;min-height:155px!important}
#mediq-dashboard .mq-v50-new-badge{position:absolute;top:-10px;left:-10px;display:flex;align-items:center;justify-content:center;width:31px;height:31px;border-radius:50%;color:#fff;background:#e23d4c;border:3px solid white;font:bold 15px Tahoma,Arial,sans-serif;box-shadow:0 4px 14px #d93a4f55;z-index:4}
#mediq-dashboard #mmTreeChildren [data-mm-tree].active{background:rgba(255,255,255,.22)!important;color:#fff!important;border-right:3px solid white!important;border-radius:8px;font-weight:850!important}
#mediq-dashboard #mqTree .v32-tree-children .mq-tree-row.active{background:#2b83b7!important;color:#fff!important;font-weight:850!important}
#mediq-dashboard [data-fin-filter].active,#mediq-dashboard [data-handover-filter].active{background:#e7f4ff!important;border:2px solid #2e94c8!important;box-shadow:inset 0 0 0 1px #d4eafd!important}
.mm-t-screen-overlay .mm-date-line{position:relative;display:block}
.mm-t-screen-overlay .mm-cal,.mm-request-modal .mm-cal{box-sizing:border-box!important;width:310px!important;max-width:calc(100vw - 28px)!important;border-radius:14px!important;padding:12px!important;background:#fff!important;box-shadow:0 16px 40px rgba(22,64,96,.2)!important;border:1px solid #b8d8ed!important}
.mm-t-screen-overlay .mm-cal-days,.mm-request-modal .mm-cal-days{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:5px!important;direction:rtl!important}
.mm-t-screen-overlay .mm-cal-days>*,.mm-request-modal .mm-cal-days>*{display:flex!important;align-items:center!important;justify-content:center!important;min-width:0!important;height:34px!important;padding:3px!important;font-size:12px!important;border-radius:7px!important;line-height:1.4!important}
.mm-t-screen-overlay .mm-cal-days button,.mm-request-modal .mm-cal-days button{background:#f0f8ff!important;color:#215a7c!important;border:1px solid transparent!important;cursor:pointer!important}
.mm-t-screen-overlay .mm-cal-days button:hover,.mm-request-modal .mm-cal-days button:hover{background:#3295c7!important;color:white!important}
.mm-t-screen-overlay .mm-cal-head,.mm-request-modal .mm-cal-head{display:flex!important;justify-content:space-between!important;align-items:center!important;gap:8px!important;margin-bottom:10px!important}
.mm-t-screen-overlay .mm-cal-head button,.mm-request-modal .mm-cal-head button{width:auto!important;min-height:33px!important;font-size:11px!important;border-radius:8px!important;border:1px solid #cce2ef!important;background:#f3faff!important;color:#23668b!important}
</style>
<div id="mediq-dashboard" dir="rtl">
<style>
/* MediQ V38.6 — spacing, compact forms and integrated combobox */
#mediq-dashboard #mmContent .v-fields{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:12px!important;align-items:end}
#mediq-dashboard #mmContent .v-fields>label{min-width:0;text-align:right;direction:rtl}
#mediq-dashboard #mmContent .v-fields input,#mediq-dashboard #mmContent .v-fields select{width:100%;min-width:0;box-sizing:border-box}
#mediq-dashboard #mmContent .v-fields textarea{min-height:42px}
#mediq-dashboard #mmContent .mm-search-spaced{margin:22px 0 15px}
#mediq-dashboard #mmContent #mmEquipSearch{margin:22px 0 15px!important}
#mediq-dashboard .mm-combo{position:relative;min-width:0}
#mediq-dashboard .mm-combo-menu{position:absolute;z-index:1001;top:calc(100% + 4px);right:0;left:0;max-height:240px;overflow:auto;background:#fff;border:1px solid #cfe2ed;border-radius:9px;box-shadow:0 12px 26px #143a531f;padding:5px}
#mediq-dashboard .mm-combo-menu[hidden]{display:none!important}
#mediq-dashboard .mm-combo-menu button{display:block;text-align:right;direction:rtl;width:100%;background:#fff;color:#23536e;border:0;border-radius:6px;padding:9px;cursor:pointer;font:inherit}
#mediq-dashboard .mm-combo-menu button:hover{background:#eaf5fb}
#mediq-dashboard .mm-combo-empty{display:block;padding:10px;color:#668197}
#mediq-dashboard .mm-attachment-label small{display:block;font-size:10px;color:#69849a;margin-top:4px}
#mediq-dashboard .mm-attachment-label input[type=file]{font-size:11px;direction:rtl;border:1px dashed #bcd8e8;border-radius:8px;padding:6px;background:#f8fcfe}
@media(max-width:1250px){#mediq-dashboard #mmContent .v-fields{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:760px){#mediq-dashboard #mmContent .v-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:480px){#mediq-dashboard #mmContent .v-fields{grid-template-columns:1fr!important}}

/* MEDIQ V38.8 - maintenance refinements */
#mediq-dashboard #mmContent .mq-tbl th,#mediq-dashboard #mmContent .mq-tbl td{text-align:center;vertical-align:middle}
#mediq-dashboard #mmContent .mm-plan-form .mq-preview{margin-top:10px!important}
#mediq-dashboard #mmContent .mq-preview{min-height:unset;box-shadow:none}
#mediq-dashboard #mmContent .v-fields>label{min-width:0;display:flex;flex-direction:column;gap:7px;text-align:right;font-size:13px;font-weight:650}
#mediq-dashboard #mmContent .v-fields input,#mediq-dashboard #mmContent .v-fields select,#mediq-dashboard #mmContent .v-fields textarea{height:42px;min-height:42px;font-size:13px;border-radius:10px;background:#fff;width:100%;box-sizing:border-box}
#mediq-dashboard #mmContent .v-fields textarea{height:42px;resize:vertical;min-height:42px;padding:11px}
#mediq-dashboard #mmContent .v-fields>label:focus-within{color:#2476a3}
#mediq-dashboard #mmContent .v-fields input:focus,#mediq-dashboard #mmContent .v-fields select:focus,#mediq-dashboard #mmContent .v-fields textarea:focus{outline:2px solid #b8e3fa;outline-offset:1px;border-color:#409cc7}
#mediq-dashboard #mmContent .mm-combo{position:relative;width:100%;min-width:0}
#mediq-dashboard #mmContent .mm-combo-menu{position:absolute;top:calc(100% + 4px);right:0;left:0;max-height:260px;overflow:auto;background:#fff;box-shadow:0 14px 28px rgba(20,62,92,.16);border:1px solid #c7dfe9;border-radius:10px;z-index:600;padding:5px}
#mediq-dashboard #mmContent .mm-combo-menu[hidden]{display:none}
#mediq-dashboard #mmContent .mm-combo-menu button{display:block;width:100%;border:0;background:transparent;color:#194b6a;text-align:right;padding:9px 10px;white-space:normal;cursor:pointer;font-size:12px;border-radius:7px}
#mediq-dashboard #mmContent .mm-combo-menu button:hover{background:#eaf6fc}
#mediq-dashboard #mmContent .mm-plan-form .v-fields{grid-template-columns:repeat(6,minmax(0,1fr))!important}
#mediq-dashboard .mm-issue-drawer{width:min(510px,95vw)}
#mediq-dashboard .mm-issue-drawer .mm-issue-fields{border:1px solid #d7e7f0;border-radius:12px;padding:16px;background:#fff}
#mediq-dashboard .mm-issue-drawer .mm-issue-fields>div{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #e7eff4}
#mediq-dashboard .mm-issue-drawer .mm-issue-fields>div:last-child{border-bottom:0}
#mediq-dashboard .mm-issue-drawer .mm-issue-fields span{color:#608099}
#mediq-dashboard .mm-issue-drawer .mm-issue-fields strong{color:#154d71;text-align:left}
#mediq-dashboard .mm-issue-drawer .mm-issue-actions{margin-top:16px}
#mediq-dashboard #mmContent .mm-attachment-label{justify-content:flex-start}
@media(max-width:1250px){#mediq-dashboard #mmContent .mm-plan-form .v-fields{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:670px){#mediq-dashboard #mmContent .mm-plan-form .v-fields{grid-template-columns:1fr!important}}

#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:repeat(7,minmax(0,1fr))}
#mediq-dashboard #mmContent .mq-tbl th,#mediq-dashboard #mmContent .mq-tbl td{text-align:center;vertical-align:middle}
#mediq-dashboard #mmContent .mq-tbl tbody tr:has([data-mm-issue]):hover{background:#f0f8fd}
#mediq-dashboard .mm-attachment-label input[type=file]{width:100%}
@media(max-width:1150px){#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:1fr}}

#mediq-dashboard .mm-edit-identity{padding:12px 16px;margin:10px 0;border:1px solid #8cc6e6;background:#eef8fd;border-radius:10px;font-weight:800;color:#175c81;text-align:right;}
#mediq-dashboard .mm-edit-identity[hidden]{display:none!important}
#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:repeat(4,minmax(0,1fr));}
@media(max-width:950px){#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:560px){#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:1fr;}}

/* MediQ V38.12: aligned forms and full row edit selection */
#mediq-dashboard .mm-plan-row-selected, #mediq-dashboard .mm-plan-row-selected td{background:#e1f3fe!important;color:#14587e!important;}
#mediq-dashboard .mm-plan-row-selected td:first-child{box-shadow:inset -4px 0 0 #318fc3;}
#mediq-dashboard .mm-plan-row-selected td{border-top:1px solid #80c2e9!important;border-bottom:1px solid #80c2e9!important;}
#mediq-dashboard .mm-main, #mediq-dashboard .mm-main form, #mediq-dashboard #mmContent, #mediq-dashboard #mmContent input, #mediq-dashboard #mmContent textarea, #mediq-dashboard #mmContent select, #mediq-dashboard #mmContent table{direction:rtl;text-align:right;}
#mediq-dashboard #mmContent .mq-tbl th,#mediq-dashboard #mmContent .mq-tbl td{text-align:right;}

#mediq-dashboard .mm-main,#mediq-dashboard .mm-main input,#mediq-dashboard .mm-main select,#mediq-dashboard .mm-main button,#mediq-dashboard .mm-main textarea{font-size:14px;direction:rtl}
#mediq-dashboard .mm-main th,#mediq-dashboard .mm-main td{text-align:right;vertical-align:middle}
#mediq-dashboard .mm-issue-drawer{font-size:14px;direction:rtl}
#mediq-dashboard .mm-report-form{border:1px solid #d5e6f0;border-radius:12px;padding:14px;margin-top:14px}
#mediq-dashboard .mm-report-form h4{margin:0 0 12px;font-size:16px}
#mediq-dashboard .mm-report-form label{display:block;margin:8px 0}
#mediq-dashboard .mm-report-form input,#mediq-dashboard .mm-report-form textarea{display:block;width:100%;box-sizing:border-box;border:1px solid #cde0ed;border-radius:8px;padding:10px;font:inherit;direction:rtl}
#mediq-dashboard .mm-report-form p{font-size:12px;color:#627e91}

#mediq-dashboard .mm-permanent-panel{position:fixed;left:0;top:104px;bottom:0;width:min(395px,35vw);z-index:8000;overflow-y:auto;background:#fff;border-right:1px solid #cee0ee;box-shadow:8px 0 22px #173b5517;padding:18px;direction:rtl;text-align:right;color:#194965;font-size:13px}
#mediq-dashboard .mm-permanent-panel[hidden]{display:none}
#mediq-dashboard .mm-permanent-panel header,.mm-request-box header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #d9e8f2;padding-bottom:12px}
#mediq-dashboard .mm-permanent-panel header button,.mm-request-box header button{border:0;border-radius:8px;background:#edf6fb;font-size:23px;cursor:pointer;padding:3px 11px}
#mediq-dashboard .mm-detail-card{border:1px solid #d1e6f3;border-radius:12px;padding:13px;margin:11px 0;background:#fff}
#mediq-dashboard .mm-detail-card label,.mm-request-box label{display:block;font-weight:650;margin:10px 0;position:relative}
#mediq-dashboard .mm-detail-card input,#mediq-dashboard .mm-detail-card textarea,.mm-request-box input,.mm-request-box textarea{display:block;width:100%;box-sizing:border-box;border:1px solid #cfe3f0;border-radius:8px;padding:10px;font:inherit;margin-top:5px}
#mediq-dashboard .mm-detail-line{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid #e4edf3}
#mediq-dashboard .mm-detail-line span{color:#668399}#mediq-dashboard .mm-detail-line strong{overflow-wrap:anywhere}
#mediq-dashboard .mm-user-menu{max-height:180px;overflow:auto;background:white;border:1px solid #c9dfea;position:relative;z-index:5}.mm-user-menu button{display:block;width:100%;padding:8px;text-align:right;background:#fff;border:0;cursor:pointer}.mm-user-menu button:hover{background:#eaf4fb}
.mm-request-modal{position:fixed;inset:0;z-index:999999;display:flex;align-items:center;justify-content:center}.mm-request-backdrop{position:absolute;inset:0;background:#183c5d80}.mm-request-box{position:relative;width:min(850px,94vw);max-height:90vh;overflow:auto;background:white;border-radius:16px;padding:24px;box-sizing:border-box;box-shadow:0 14px 65px #1237}.mm-request-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mm-request-grid label:last-child{grid-column:1/-1}.mm-comment{border-bottom:1px solid #dae7ef;padding:10px}
@media(max-width:800px){#mediq-dashboard .mm-permanent-panel{width:min(92vw,410px);top:0}.mm-request-grid{grid-template-columns:1fr}}

/* V38.15 - fixed dashboard column, compact modal and floating receipt calendar */
#mediq-dashboard #mmContent.mm-with-fixed-side{display:grid;grid-template-columns:minmax(0,1fr) 315px;gap:14px;align-items:start}
#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-permanent-panel{grid-column:2;grid-row:1/20;position:sticky;top:16px;left:auto;bottom:auto;width:auto;max-height:calc(100vh - 40px);z-index:2;box-shadow:none;border:1px solid #cee0ee;border-radius:14px;padding:14px;overflow:auto}
#mediq-dashboard #mmContent.mm-with-fixed-side>:not(.mm-permanent-panel){grid-column:1;min-width:0}
#mediq-dashboard .mm-receipt-date{position:relative}
#mediq-dashboard .mm-receipt-date>.mm-cal{position:absolute!important;top:calc(100% + 5px)!important;right:0;left:auto!important;z-index:300;max-width:310px;width:310px;box-sizing:border-box}
#mediq-dashboard .mm-receipt-date>.mm-cal[hidden]{display:none!important}
.mm-request-box{width:min(850px,95vw);max-height:86vh;padding:20px 24px;font-size:14px;direction:rtl;text-align:right}
.mm-request-box h3,.mm-request-box h4{margin:0 0 14px;color:#19577e}
.mm-form-section{border:1px solid #d4e5f0;background:#fff;border-radius:12px;padding:16px;margin:15px 0}
.mm-request-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.mm-request-grid .mm-wide{grid-column:1/-1}
.mm-request-box label{margin:0;font-weight:600}
.mm-request-box input,.mm-request-box select,.mm-request-box textarea{font:inherit;width:100%;border:1px solid #c9dfed;border-radius:8px;padding:10px;box-sizing:border-box;background:white;min-height:42px;margin-top:6px}
.mm-readonly{background:#edf5fa;border-radius:8px;padding:12px;margin-top:6px}
.mm-actions{display:flex;gap:9px;justify-content:flex-start;margin-top:12px}
.mm-asset-button,.mm-related-ticket,.mm-doc-pill{display:block;text-align:right;background:#eff7fc;color:#135a83;border:1px solid #c7e2f2;padding:10px;border-radius:9px;margin:5px 0;cursor:pointer;width:100%;font:inherit}
.mm-hint{color:#6a8190}.mm-doc-pill{display:inline-block;width:auto;text-decoration:none}
@media(max-width:900px){#mediq-dashboard #mmContent.mm-with-fixed-side{grid-template-columns:minmax(0,1fr)}#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-permanent-panel{position:relative;grid-row:auto;grid-column:1;top:auto;max-height:none}#mediq-dashboard #mmContent.mm-with-fixed-side>:not(.mm-permanent-panel){grid-column:1}.mm-request-grid{grid-template-columns:1fr}}
</style>
<style>
#mediq-dashboard .mm-nav{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
#mediq-dashboard #mmContent{min-height:350px;padding:20px}
#mediq-dashboard #mmContent h3{font-size:14px;margin:18px 0 12px;color:#20577b}
#mediq-dashboard #mmContent .v-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
#mediq-dashboard #mmContent .v-fields label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700}
#mediq-dashboard #mmContent .v-fields input,#mediq-dashboard #mmContent .v-fields select,#mediq-dashboard #mmContent .v-fields textarea{padding:10px;border:1px solid #d5e7f2;border-radius:8px;background:white;min-width:0;width:100%;font:inherit}
#mediq-dashboard #mmContent .mq-tbl-wrap{overflow:auto;max-height:490px}
@media(max-width:850px){#mediq-dashboard #mmContent .v-fields{grid-template-columns:1fr}}

/* Maintenance V37.4 */
#mediq-dashboard .mm-date-line{display:flex;gap:8px;align-items:center}
#mediq-dashboard .mm-date-line input{flex:1;min-width:0;cursor:pointer}
#mediq-dashboard .mm-cal{display:block;max-width:340px;padding:12px;background:#fff;border:1px solid #cadfec;border-radius:12px;margin-top:8px;box-shadow:0 12px 30px #17456520}
#mediq-dashboard .mm-cal[hidden]{display:none!important}
#mediq-dashboard .mm-cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
#mediq-dashboard .mm-cal-head button{border:1px solid #cde1ed;background:#f1f7fc;border-radius:7px;padding:6px;color:#20577b;cursor:pointer}
#mediq-dashboard .mm-cal-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;text-align:center}
#mediq-dashboard .mm-cal-days b{font-size:11px;color:#507890}
#mediq-dashboard .mm-cal-days button{border:0;border-radius:7px;padding:6px 0;background:#eef6fb;color:#174565;cursor:pointer}
#mediq-dashboard .mm-cal-days button:hover{background:#3997c8;color:#fff}
#mediq-dashboard .mm-chart-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:15px;margin:15px 0}
#mediq-dashboard .mm-chart-card{border:1px solid #d5e7f2;border-radius:14px;padding:20px;background:#fbfdff;display:flex;flex-direction:column;align-items:center;gap:15px}
#mediq-dashboard .mm-donut{width:176px;height:176px;border-radius:50%;display:grid;place-items:center}
#mediq-dashboard .mm-donut>div{width:120px;height:120px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;flex-direction:column;font-size:25px;font-weight:800;color:#20577b}
#mediq-dashboard .mm-donut small{font-size:11px;color:#7890a2}
#mediq-dashboard .mm-chart-legend{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
#mediq-dashboard .mm-chart-legend span{display:flex;gap:5px;align-items:center;font-size:11px}
#mediq-dashboard .mm-chart-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}

/* V37.6: Floating Jalali picker and maintenance hierarchy. */
#mediq-dashboard .mm-cal{position:fixed!important;z-index:2147482000!important;max-width:none!important;margin:0!important;box-shadow:0 18px 52px rgba(20,56,81,.23)!important;direction:rtl;overflow-y:auto;max-height:calc(100vh - 16px)}
#mediq-dashboard .mm-cal[hidden]{display:none!important}
#mediq-dashboard .mm-date-line input{cursor:pointer!important;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%234c7793' stroke-width='1.7'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M7 3v4m10-4v4M3 10h18'/%3E%3C/svg%3E") no-repeat 12px center!important;padding-left:38px!important}
#mediq-dashboard .mm-category-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:14px 0}
#mediq-dashboard .mm-category-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:11px;text-align:right;min-height:175px;padding:22px;border:1px solid #d2e4ef;border-radius:16px;background:#fff;color:#20577b;cursor:pointer;font-family:inherit;transition:transform .15s,box-shadow .15s}
#mediq-dashboard .mm-category-card:hover{transform:translateY(-2px);box-shadow:0 14px 28px rgba(32,87,123,.10);border-color:#74b7d7}
#mediq-dashboard .mm-category-icon{display:grid;place-items:center;width:52px;height:52px;background:#edf6fb;border-radius:12px;color:#467a9a}
#mediq-dashboard .mm-category-icon svg{width:30px;height:30px}
#mediq-dashboard .mm-category-card strong{font-size:14px}
#mediq-dashboard .mm-category-card>span:not(.mm-category-icon){font-size:11px;color:#788e9c;line-height:1.8}
#mediq-dashboard .mm-category-card i{position:absolute;left:16px;bottom:15px;font-style:normal;font-size:18px;color:#4d96b8}
#mediq-dashboard .mm-subgrid{grid-template-columns:repeat(3,minmax(0,1fr))}
#mediq-dashboard .mm-subgrid .mm-category-card{min-height:142px}
#mediq-dashboard .mm-breadcrumb-nav{align-items:center}.mm-nav-separator{color:#8ca1b0;font-size:16px}
#mediq-dashboard .mm-category-intro{font-size:12px;color:#6c8695}
@media(max-width:900px){#mediq-dashboard .mm-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){#mediq-dashboard .mm-category-grid{grid-template-columns:1fr}}

/* MEDIQ V38 - UI only, existing palette */
#mediq-dashboard .mm-category-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:20px 0}
#mediq-dashboard .mm-category-card{min-height:178px;font-size:15px;box-shadow:0 6px 20px rgba(29,82,115,.06)}
#mediq-dashboard .mm-category-card strong{font-size:17px}
#mediq-dashboard #mmContent,#mediq-dashboard #mmContent h3{font-size:15px}
#mediq-dashboard #mmContent .v-fields label{font-size:13px}
#mediq-dashboard #mmContent input,#mediq-dashboard #mmContent select,#mediq-dashboard #mmContent textarea{font-size:14px}
#mediq-dashboard .mm-actionbar{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0;align-items:center}
#mediq-dashboard .mm-actionbar input,#mediq-dashboard .mm-actionbar select{border:1px solid #cfe2ed;border-radius:9px;padding:11px;min-width:145px;background:white;color:#234b66;max-width:100%}
#mediq-dashboard .mm-two-pane{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:16px;align-items:start}
#mediq-dashboard .mm-sidebar{grid-column:2;grid-row:1;border:1px solid #cfe2ed;background:#fff;border-radius:13px;padding:15px;position:sticky;top:12px}
#mediq-dashboard .mm-sidebar button{display:block;width:100%;text-align:right;border:0;background:transparent;color:#225b7f;padding:12px 8px;cursor:pointer;border-radius:8px;font:inherit;font-weight:700}
#mediq-dashboard .mm-sidebar button:hover{background:#eff7fc}
#mediq-dashboard .mm-main{grid-column:1;grid-row:1;min-width:0}
#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:repeat(4,minmax(0,1fr))!important}
#mediq-dashboard .mm-priority-high{color:#b54831;font-weight:800}
#mediq-dashboard .mm-priority-normal{color:#1f7092}
#mediq-dashboard .mm-stats-block{margin-bottom:18px}
#mediq-dashboard .mm-table-panel{max-width:100%;overflow-x:auto}
@media(max-width:1050px){#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:800px){#mediq-dashboard .mm-two-pane{display:block}#mediq-dashboard .mm-sidebar{position:static;margin-bottom:12px}#mediq-dashboard .mm-sidebar button{display:inline-block;width:auto}#mediq-dashboard .mm-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:550px){#mediq-dashboard .mm-category-grid{grid-template-columns:1fr}#mediq-dashboard .mm-plan-form .v-fields{grid-template-columns:1fr!important}#mediq-dashboard .mm-actionbar input,#mediq-dashboard .mm-actionbar select{width:100%}}


/* V38.4 - Five actual maintenance landing cards */
#mediq-dashboard .mm-card-home{direction:rtl;text-align:right;padding:10px 2px 24px}
#mediq-dashboard .mm-card-home h2{font-size:19px;font-weight:800;color:#225b7f;margin:5px 0 20px}
#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
#mediq-dashboard .mm-card-home .mm-category-card{align-items:flex-start;text-align:right;min-height:188px;border-radius:17px}
#mediq-dashboard .mm-crumb{background:transparent;border:0;color:#225b7f;font:inherit;cursor:pointer;padding:5px 2px}
#mediq-dashboard .mm-crumb:hover{text-decoration:underline}
@media(max-width:900px){#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:1fr}}
/* MEDIQ V38.3 - top-level maintenance navigation */
#mediq-dashboard .mm-route-nav{display:flex;direction:rtl;align-items:center;justify-content:flex-start;gap:10px;flex-wrap:wrap;margin:13px 0 17px;color:#54758d;font-size:13px;font-weight:600}
#mediq-dashboard .mm-route-nav strong{color:#1d628b;font-weight:800}
#mediq-dashboard .mm-route-separator{opacity:.55;font-size:19px}
#mediq-dashboard .mm-top-tabs{display:flex;direction:rtl;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 14px;border-bottom:1px solid #cfe2ed;padding-bottom:10px}
#mediq-dashboard .mm-top-tab{appearance:none;border:1px solid #cfe2ed;border-radius:10px;background:#fff;color:#225b7f;padding:12px 19px;font:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}
#mediq-dashboard .mm-top-tab.active{background:#348fbe;border-color:#348fbe;color:#fff}
#mediq-dashboard .mm-top-tab:focus-visible{outline:2px solid #167cac;outline-offset:2px}
#mediq-dashboard .mm-top-tab:not(.active):hover{background:#eef7fc}
@media(max-width:550px){#mediq-dashboard .mm-top-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}#mediq-dashboard .mm-top-tab{padding:12px 8px;font-size:12px}}
/* MEDIQ V38.2 scoped improvements */
#mediq-dashboard .mm-full-width{display:block!important}
#mediq-dashboard .mm-full-width .mm-main{width:100%}
#mediq-dashboard #mmContent{text-align:right;direction:rtl}
#mediq-dashboard #mmContent .v-fields{direction:rtl}
#mediq-dashboard .mm-tree-children{display:none;direction:rtl;padding:4px 14px 8px 4px}
#mediq-dashboard .mm-tree-children.open{display:block}
#mediq-dashboard .mm-tree-children button{display:block;width:100%;border:0;background:transparent;color:#eaf5ff;text-align:right;padding:11px 12px;font:inherit;cursor:pointer;border-radius:8px}
#mediq-dashboard .mm-tree-children button.active,#mediq-dashboard .mm-tree-children button:hover{background:rgba(255,255,255,.16);font-weight:700}
#mediq-dashboard .mm-tree-arrow{margin-right:auto;padding:0 4px}
#mediq-dashboard .mm-issue-link{background:none;border:0;color:#0872ba;cursor:pointer;font:inherit;font-weight:700}
#mediq-dashboard .mm-issue-overlay{position:fixed;inset:0;z-index:99999}
#mediq-dashboard .mm-issue-scrim{position:absolute;inset:0;background:rgba(22,52,75,.34)}
#mediq-dashboard .mm-issue-drawer{position:absolute;top:0;left:0;height:100%;width:min(480px,94vw);background:#fff;box-shadow:8px 0 30px rgba(20,50,80,.18);overflow:auto;padding:22px;color:#1f4f6b;text-align:right}
#mediq-dashboard .mm-issue-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #dce9f3;padding-bottom:14px}
#mediq-dashboard .mm-issue-top button{border:0;background:#eaf4fa;border-radius:8px;font-size:24px;cursor:pointer}
#mediq-dashboard .mm-issue-drawer dl{display:grid;grid-template-columns:120px 1fr;gap:14px;border-top:1px solid #e0edf3;padding-top:15px}
#mediq-dashboard .mm-issue-drawer dt{color:#6b879b}#mediq-dashboard .mm-issue-drawer dd{margin:0}
#mediq-dashboard .mm-cal button[disabled]{opacity:.28;pointer-events:none;cursor:not-allowed}
#mediq-dashboard #mm_targetSearch{margin-bottom:5px}
@media(max-width:600px){#mediq-dashboard .mm-tree-children button{padding:10px}#mediq-dashboard .mm-issue-drawer{width:96vw}}
</style>

<style>
#mediq-dashboard .mq-list-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:14px 0;font-size:12px}
#mediq-dashboard .mq-list-controls select{border:1px solid #cce2f0;border-radius:8px;padding:7px 12px;background:white;color:#315873}
#mediq-dashboard .mq-assets-btn:disabled{opacity:.4;cursor:default}
#mediq-dashboard .mq-jcalendar{padding:12px;border:1px solid #cce2f0;border-radius:10px;background:#fff;margin-top:7px;max-width:340px}
#mediq-dashboard .mq-jcalendar[hidden]{display:none!important}
#mediq-dashboard .mq-jcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center;margin:10px 0}
#mediq-dashboard .mq-jcal-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
#mediq-dashboard .mq-jcalendar button{border:1px solid #d5e7f2;border-radius:6px;padding:5px;background:#f1f8fd;color:#315873;cursor:pointer;font:inherit}
#mediq-dashboard .mq-jcalendar button:hover{background:#e0f0fa}


/* ============================================================
   MEDIQ DASHBOARD - SUPPLY
   PRESENTATION VERSION
   ============================================================ */

#mediq-dashboard,
#mediq-dashboard * {
    box-sizing: border-box;
}

#mediq-dashboard {

    --navy: #20577b;
    --navy-dark: #174565;

    --primary: #3997c8;
    --primary-dark: #277eaf;

    --text: #24475f;
    --muted: #7c99ae;

    --border: #d5e7f2;

    --bg: #f1f7fc;
    --white: #ffffff;

    position: fixed;

    inset: 0;

    width: 100vw;
    height: 100vh;

    z-index: 9999;

    overflow: hidden;

    direction: rtl;

    font-family:
        Tahoma,
        Arial,
        sans-serif;

    color: var(--text);

    background:
        radial-gradient(
            circle at 12% 4%,
            rgba(57,151,200,.09),
            transparent 27%
        ),
        #f1f7fc;
}


/* ============================================================
   HIDE CONFLUENCE
   ============================================================ */

html,
body,
#page,
#full-height-container,
#main,
#content,
#main-content,
.aui-page-panel,
.aui-page-panel-inner,
.aui-page-panel-content,
.content-body {

    width: 100% !important;
    height: 100% !important;

    max-width: none !important;

    margin: 0 !important;
    padding: 0 !important;
}

html,
body {
    overflow: hidden !important;
}

#footer,
footer,
.aui-footer,
#header,
#main-header,
.breadcrumbs,
#breadcrumbs,
.page-metadata {

    display: none !important;
}


/* ============================================================
   APP
   ============================================================ */

.mq-app {

    width: 100%;
    height: 100%;

    display: grid;

    grid-template-columns:
        minmax(0,1fr)
        255px;

    direction: ltr;
}


/* ============================================================
   SIDEBAR - LEAD GRAY THEME
   ============================================================ */

.mq-sidebar {

    grid-column: 2;

    height: 100vh;

    padding:
        24px
        17px;

    direction: rtl;

    color: #fff;

    display: flex;
    flex-direction: column;

    background:
        linear-gradient(
            180deg,
            #4b9dca 0%,
            #337fae 45%,
            #23658f 100%
        );

    box-shadow:
        -12px 0 38px
        rgba(43,49,56,.18);

    border-left:
        1px solid
        rgba(255,255,255,.04);
}


/* LOGO */

.mq-logo {

    width: 100%;

    text-align: center;

    padding:
        3px
        5px
        22px;

    border-bottom:
        1px solid
        rgba(255,255,255,.08);
}

.mq-logo img {

    width: 174px;

    max-width: 92%;

    height: auto;

    filter:
        drop-shadow(0 2px 10px rgba(0,0,0,.08));
}


/* USER */

.mq-user {

    margin-top: 17px;

    padding:
        14px
        15px;

    border-radius: 14px;

    background:
        rgba(255,255,255,.06);

    border:
        1px solid
        rgba(255,255,255,.08);

    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.04);
}

.mq-user-name {

    font-size: 12px;

    font-weight: 900;

    color: #ffffff;
}

.mq-user-role {

    margin-top: 6px;

    color:
        rgba(255,255,255,.64);

    font-size: 9px;

    font-weight: 600;
}


/* ============================================================
   LIFE CYCLE
   ============================================================ */

.mq-life-title {

    margin:
        26px
        7px
        9px;

    color:
        rgba(255,255,255,.42);

    font-size: 9px;

    font-weight: 700;

    letter-spacing: .2px;
}


.mq-life {

    display: flex;

    flex-direction: column;

    gap: 7px;
}


.mq-life-item {

    position: relative;

    min-height: 46px;

    padding:
        0
        13px;

    border-radius: 12px;

    display: flex;

    align-items: center;

    gap: 10px;

    color:
        rgba(255,255,255,.76);

    font-size: 11px;

    font-weight: 800;

    cursor: pointer;

    user-select: none;

    border:
        1px solid
        transparent;

    transition:
        background .18s ease,
        color .18s ease,
        transform .18s ease,
        border-color .18s ease,
        box-shadow .18s ease;
}


.mq-life-item:hover {

    color: #fff;

    background:
        rgba(255,255,255,.08);

    border-color:
        rgba(255,255,255,.07);
}


.mq-life-item.active {

    color: #ffffff;

    background:
        linear-gradient(
            90deg,
            #3997c8 0%,
            #2e85b5 100%
        );

    border-color:
        rgba(255,255,255,.10);

    box-shadow:
        0 12px 24px rgba(35,40,46,.24);
}

.mq-life-item.active::before {

    content: "";

    position: absolute;

    right: 10px;
    top: 50%;

    width: 6px;
    height: 6px;

    border-radius: 50%;

    background: #ffffff;

    transform: translateY(-50%);

    box-shadow:
        0 0 0 4px rgba(255,255,255,.10);
}


.mq-life-icon {

    width: 28px;
    height: 28px;

    border-radius: 8px;

    display: flex;

    align-items: center;

    justify-content: center;

    background:
        rgba(255,255,255,.06);

    border:
        1px solid
        rgba(255,255,255,.05);
}


.mq-life-item.active .mq-life-icon {

    background:
        rgba(255,255,255,.14);

    border-color:
        rgba(255,255,255,.10);
}


.mq-life-icon svg {

    width: 16px;
    height: 16px;

    fill: none;

    stroke: currentColor;

    stroke-width: 1.9;

    stroke-linecap: round;
    stroke-linejoin: round;
}


/* ============================================================
   LOGOUT
   ============================================================ */

.mq-sidebar-bottom {

    margin-top: auto;

    padding-top: 14px;

    border-top:
        1px solid
        rgba(255,255,255,.07);
}


.mq-logout {

    min-height: 43px;

    padding:
        0
        13px;

    border-radius: 11px;

    display: flex;

    align-items: center;

    gap: 9px;

    color:
        rgba(255,255,255,.72);

    font-size: 10px;

    font-weight: 700;

    cursor: pointer;

    border:
        1px solid
        transparent;

    transition:
        background .18s ease,
        color .18s ease,
        border-color .18s ease;
}


.mq-logout:hover {

    color: #fff;

    background:
        rgba(255,255,255,.07);

    border-color:
        rgba(255,255,255,.07);
}


/* ============================================================
   MAIN
   ============================================================ */

.mq-main {

    grid-column: 1;

    height: 100vh;

    direction: rtl;

    overflow-y: auto;

    padding:
        0
        clamp(25px,4vw,55px)
        45px;
}


/* ============================================================
   HEADER
   ============================================================ */

.mq-header {

    min-height: 88px;

    border-bottom:
        1px solid
        var(--border);

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 20px;
}


.mq-header-right {

    min-width: 0;
}


.mq-page-title {

    color:
        var(--navy);

    font-size: 20px;

    font-weight: 900;
}


.mq-page-description {

    margin-top: 6px;

    color:
        var(--muted);

    font-size: 10px;

    font-weight: 600;
}


/* CENTER */

.mq-center {

    padding:
        10px
        14px;

    border:
        1px solid
        var(--border);

    border-radius: 11px;

    background: #fff;

    color:
        #536f84;

    font-size: 10px;

    font-weight: 700;
}


/* ============================================================
   BREADCRUMB
   ============================================================ */

.mq-breadcrumb {

    min-height: 54px;

    display: flex;

    align-items: center;

    gap: 7px;

    flex-wrap: wrap;
}


.mq-bread-item {

    color:
        #8197a8;

    font-size: 10px;

    font-weight: 700;
}


.mq-bread-current {

    color:
        var(--primary-dark);

    font-weight: 900;
}


.mq-bread-separator {

    color:
        #b6c4cf;
}


/* ============================================================
   HERO
   ============================================================ */

.mq-hero {

    position: relative;

    overflow: hidden;

    min-height: 112px;

    padding:
        21px
        24px;

    border-radius: 18px;

    color: #fff;

    display: flex;

    align-items: center;

    justify-content: space-between;

    background:
        linear-gradient(
            105deg,
            #24475f,
            #277eaf
        );

    box-shadow:
        0 15px 35px
        rgba(7,53,83,.10);
}


.mq-hero::before {

    content: "";

    position: absolute;

    width: 250px;
    height: 250px;

    left: -70px;
    top: -150px;

    border-radius: 50%;

    background:
        rgba(107,119,131,.14);
}


.mq-hero-title {

    position: relative;

    z-index: 2;

    font-size: 16px;

    font-weight: 900;
}


.mq-hero-desc {

    position: relative;

    z-index: 2;

    margin-top: 6px;

    color:
        rgba(255,255,255,.70);

    font-size: 10px;
}


.mq-back-btn {

    position: relative;

    z-index: 2;

    display: none;

    min-width: 88px;
    height: 36px;

    padding:
        0
        13px;

    border:
        1px solid
        rgba(255,255,255,.25);

    border-radius: 10px;

    background:
        rgba(255,255,255,.10);

    color: #fff;

    font-family:
        inherit;

    font-size: 10px;

    font-weight: 800;

    cursor: pointer;
}


.mq-back-btn:hover {

    background:
        rgba(255,255,255,.16);
}


/* ============================================================
   CONTENT
   ============================================================ */

.mq-view {

    margin-top: 23px;

    animation:
        mqFade
        .22s ease;
}


@keyframes mqFade {

    from {
        opacity: 0;
        transform: translateY(5px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}


/* ============================================================
   SECTION HEADER
   ============================================================ */

.mq-section-head {

    margin-bottom: 14px;

    display: flex;

    align-items: center;

    justify-content: space-between;
}


.mq-section-title {

    color:
        var(--navy);

    font-size: 14px;

    font-weight: 900;
}


.mq-section-desc {

    margin-top: 4px;

    color:
        var(--muted);

    font-size: 9px;
}


/* ============================================================
   MODULE CARDS
   ============================================================ */

.mq-card-grid {

    display: grid;

    grid-template-columns:
        repeat(4,minmax(0,1fr));

    gap: 14px;
}


.mq-module-card {

    position: relative;

    min-height: 176px;

    padding:
        18px;

    border:
        1px solid
        var(--border);

    border-radius: 17px;

    background: #fff;

    cursor: pointer;

    box-shadow:
        0 9px 26px
        rgba(19,65,90,.035);

    transition:
        transform .17s ease,
        box-shadow .17s ease,
        border-color .17s ease;
}


.mq-module-card:hover {

    transform:
        translateY(-4px);

    border-color:
        rgba(87,96,106,.45);

    box-shadow:
        0 18px 40px
        rgba(19,65,90,.08);
}


.mq-module-icon {

    width: 48px;
    height: 48px;

    margin-bottom: 17px;

    border-radius: 14px;

    display: flex;

    align-items: center;

    justify-content: center;

    color:
        var(--primary-dark);

    background:
        linear-gradient(
            145deg,
            #eaf4fb,
            #e0f0fa
        );
}


.mq-module-icon svg {

    width: 24px;
    height: 24px;

    fill: none;

    stroke: currentColor;

    stroke-width: 1.8;

    stroke-linecap: round;
    stroke-linejoin: round;
}


.mq-module-name {

    color:
        var(--navy);

    font-size: 12px;

    font-weight: 900;

    line-height: 1.8;
}


.mq-module-arrow {

    position: absolute;

    left: 18px;
    bottom: 17px;

    width: 29px;
    height: 29px;

    border-radius: 8px;

    display: flex;

    align-items: center;

    justify-content: center;

    color:
        #8ea5b5;

    background:
        #f3f7f9;

    font-size: 18px;
}


.mq-module-card:hover
.mq-module-arrow {

    color: #fff;

    background:
        var(--primary);
}


/* ============================================================
   LARGE ACTION CARDS
   ============================================================ */

.mq-action-grid {

    display: grid;

    grid-template-columns:
        repeat(2,minmax(0,1fr));

    gap: 15px;
}


.mq-action-card {

    min-height: 155px;

    padding:
        19px;

    border:
        1px solid
        var(--border);

    border-radius: 17px;

    background: #fff;

    cursor: pointer;

    display: flex;

    align-items: center;

    gap: 16px;

    transition: .17s;
}


.mq-action-card:hover {

    border-color:
        rgba(87,96,106,.45);

    transform:
        translateY(-2px);

    box-shadow:
        0 15px 35px
        rgba(24,74,98,.06);
}


.mq-action-icon {

    flex: 0 0 auto;

    width: 54px;
    height: 54px;

    border-radius: 15px;

    display: flex;

    align-items: center;

    justify-content: center;

    color:
        var(--primary-dark);

    background:
        #f0f7fc;
}


.mq-action-icon svg {

    width: 25px;
    height: 25px;

    fill: none;

    stroke: currentColor;

    stroke-width: 1.8;

    stroke-linecap: round;

    stroke-linejoin: round;
}


.mq-action-title {

    color:
        var(--navy);

    font-size: 13px;

    font-weight: 900;
}


.mq-action-sub {

    margin-top: 6px;

    color:
        var(--muted);

    font-size: 9px;
}


/* ============================================================
   ASSET LIST MENU
   ============================================================ */

.mq-list-layout {

    display: grid;

    grid-template-columns:
        330px
        minmax(0,1fr);

    gap: 16px;

    direction: ltr;
}


.mq-list-menu,
.mq-preview {

    direction: rtl;

    border:
        1px solid
        var(--border);

    border-radius: 18px;

    background: #fff;

    box-shadow:
        0 10px 28px
        rgba(19,65,90,.035);
}


.mq-list-menu {

    padding: 13px;
}


.mq-list-option {

    min-height: 52px;

    margin-bottom: 5px;

    padding:
        0
        13px;

    border-radius: 10px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    color:
        #536f84;

    font-size: 10px;

    font-weight: 800;

    cursor: pointer;

    transition: .15s;
}


.mq-list-option:hover {

    color:
        var(--primary-dark);

    background:
        #f3f9fd;
}


.mq-list-option.active {

    color:
        #2b5672;

    background:
        #eaf4fc;
}


.mq-option-badge {

    width: 26px;
    height: 26px;

    border-radius: 7px;

    display: flex;

    align-items: center;

    justify-content: center;

    background:
        rgba(87,96,106,.09);

    color:
        var(--primary-dark);
}


/* ============================================================
   PREVIEW
   ============================================================ */

.mq-preview {

    min-height: 390px;

    padding:
        23px;
}


.mq-preview-title {

    color:
        var(--navy);

    font-size: 14px;

    font-weight: 900;
}


.mq-preview-description {

    margin-top: 7px;

    color:
        var(--muted);

    font-size: 9px;
}


/* MOCK CONTENT */

.mq-demo-box {

    margin-top: 23px;

    padding: 20px;

    border:
        1px dashed
        #bdd4df;

    border-radius: 14px;

    background:
        #f8fbfc;
}


.mq-demo-icon {

    width: 48px;
    height: 48px;

    margin:
        0
        auto
        12px;

    border-radius: 14px;

    display: flex;

    align-items: center;

    justify-content: center;

    color:
        var(--primary-dark);

    background:
        #eaf4fc;
}


.mq-demo-text {

    color:
        #4d84a8;

    text-align: center;

    font-size: 10px;

    line-height: 2;
}


.mq-demo-button {

    display: block;

    min-width: 125px;

    height: 38px;

    margin:
        17px
        auto
        0;

    border: 0;

    border-radius: 9px;

    background:
        linear-gradient(
            90deg,
            #409fd1,
            #2c88bb
        );

    color: #fff;

    font-family: inherit;

    font-size: 10px;

    font-weight: 800;

    cursor: pointer;
}


/* ============================================================
   PLACEHOLDER LIFE CYCLE
   ============================================================ */

.mq-empty-cycle {

    min-height: 350px;

    border:
        1px dashed
        #c7dce5;

    border-radius: 18px;

    display: flex;

    align-items: center;

    justify-content: center;

    flex-direction: column;

    background:
        rgba(255,255,255,.65);

    color:
        #7890a2;
}


.mq-empty-cycle strong {

    color:
        var(--navy);

    font-size: 15px;
}


.mq-empty-cycle span {

    margin-top: 8px;

    font-size: 10px;
}


/* ============================================================
   TOAST
   ============================================================ */

.mq-toast {

    position: fixed;

    left: 30px;
    bottom: 27px;

    z-index: 10020;

    min-width: 260px;

    max-width: 360px;

    padding:
        13px
        16px;

    border-radius: 11px;

    color: #fff;

    background:
        #073b5c;

    box-shadow:
        0 16px 40px
        rgba(0,0,0,.15);

    font-size: 10px;

    font-weight: 700;

    opacity: 0;

    transform:
        translateY(12px);

    pointer-events: none;

    transition:
        .2s;
}


.mq-toast.show {

    opacity: 1;

    transform:
        translateY(0);
}


/* ============================================================
   RESPONSIVE
   ============================================================ */

@media(max-width:1300px) {

    .mq-card-grid {
        grid-template-columns:
            repeat(2,minmax(0,1fr));
    }

}


@media(max-width:1000px) {

    .mq-app {
        grid-template-columns:
            minmax(0,1fr)
            210px;
    }

    .mq-list-layout {
        grid-template-columns:
            280px
            minmax(0,1fr);
    }

}


@media(max-width:800px) {

    .mq-sidebar {
        display: none;
    }

    .mq-app {
        display: block;
    }

    .mq-main {
        width: 100%;
    }

    .mq-card-grid,
    .mq-action-grid,
    .mq-list-layout {
        grid-template-columns:
            1fr;
    }

}


/* ============================================================
   MEDIQ SIDEBAR NAVIGATION TREE
   ============================================================ */

.mq-life-title,
.mq-life {
    display: none !important;
}

.mq-tree-title {
    margin: 22px 7px 9px;
    color: rgba(255,255,255,.39);
    font-size: 9px;
    font-weight: 700;
}

.mq-tree {
    display: flex;
    flex-direction: column;
    gap: 5px;
    overflow-y: auto;
    overflow-x: hidden;
    padding-left: 2px;
    scrollbar-width: thin;
}

.mq-tree::-webkit-scrollbar {
    width: 4px;
}
.mq-tree::-webkit-scrollbar-thumb {
    background: rgba(255,255,255,.15);
    border-radius: 10px;
}

.mq-tree-row {
    min-height: 38px;
    padding: 0 10px;
    border-radius: 9px;
    display: flex;
    align-items: center;
    gap: 8px;
    color: rgba(255,255,255,.70);
    font-size: 10px;
    font-weight: 800;
    cursor: pointer;
    user-select: none;
    transition: background .15s ease, color .15s ease;
}

.mq-tree-row:hover {
    color: #fff;
    background: rgba(255,255,255,.07);
}

.mq-tree-row.active {
    color: #fff;
    background: linear-gradient(90deg,#3997c8,#277eaf);
}

.mq-tree-row.parent-active:not(.active) {
    color: #fff;
    background: rgba(255,255,255,.055);
}

.mq-tree-row.level-1 { padding-right: 10px; }
.mq-tree-row.level-2 { padding-right: 23px; font-size: 9.5px; }
.mq-tree-row.level-3 { padding-right: 36px; font-size: 9px; }
.mq-tree-row.level-4 { padding-right: 49px; font-size: 8.7px; color: rgba(255,255,255,.60); }

.mq-tree-dot {
    width: 6px;
    height: 6px;
    flex: 0 0 6px;
    border-radius: 50%;
    background: rgba(255,255,255,.32);
}

.mq-tree-row.active .mq-tree-dot {
    background: #fff;
}

.mq-tree-arrow {
    margin-right: auto;
    color: rgba(255,255,255,.45);
    font-size: 13px;
    transition: transform .18s ease;
}

.mq-tree-row.open > .mq-tree-arrow {
    transform: rotate(90deg);
}

.mq-tree-children {
    display: none;
    margin-top: 2px;
}

.mq-tree-children.open {
    display: block;
}

.mq-tree-separator {
    height: 1px;
    margin: 8px 9px;
    background: rgba(255,255,255,.08);
}


/* ============================================================
   MEDIQ UI POLISH - LARGER TYPOGRAPHY + TOP WELCOME
   ============================================================ */
#mediq-dashboard .mq-user-name { font-size: 15px; }
#mediq-dashboard .mq-user-role { font-size: 12px; }
#mediq-dashboard .mq-tree-title { font-size: 12px; }
#mediq-dashboard .mq-tree-row { font-size: 13px; min-height: 42px; }
#mediq-dashboard .mq-tree-row.level-2 { font-size: 12.5px; }
#mediq-dashboard .mq-tree-row.level-3 { font-size: 12px; }
#mediq-dashboard .mq-tree-row.level-4 { font-size: 11.7px; }
#mediq-dashboard .mq-logout { font-size: 13px; }
#mediq-dashboard .mq-page-title { font-size: 23px; }
#mediq-dashboard .mq-page-description { font-size: 13px; }
#mediq-dashboard .mq-center { font-size: 13px; }
#mediq-dashboard .mq-bread-item { font-size: 13px; }
#mediq-dashboard .mq-hero-title { font-size: 19px; }
#mediq-dashboard .mq-hero-desc { font-size: 13px; }
#mediq-dashboard .mq-back-btn { font-size: 13px; }
#mediq-dashboard .mq-section-title { font-size: 17px; }
#mediq-dashboard .mq-section-desc { font-size: 12px; }
#mediq-dashboard .mq-module-name { font-size: 15px; }
#mediq-dashboard .mq-action-title { font-size: 16px; }
#mediq-dashboard .mq-action-sub { font-size: 12px; }
#mediq-dashboard .mq-list-option { font-size: 13px; }
#mediq-dashboard .mq-preview-title { font-size: 17px; }
#mediq-dashboard .mq-preview-description,
#mediq-dashboard .mq-demo-text { font-size: 12px; }
#mediq-dashboard .mq-demo-button { font-size: 13px; }
#mediq-dashboard .mq-empty-cycle strong { font-size: 18px; }
#mediq-dashboard .mq-empty-cycle span { font-size: 13px; }
#mediq-dashboard .mq-toast { font-size: 13px; }

#mediq-dashboard .mq-header-welcome {
    display:flex; align-items:center; gap:9px; padding:9px 14px;
    border:1px solid rgba(87,96,106,.20); border-radius:999px;
    background:rgba(255,255,255,.82); box-shadow:0 7px 22px rgba(7,53,83,.055);
    color:#587287; font-size:13px; font-weight:700; white-space:nowrap;
}
#mediq-dashboard .mq-header-welcome strong { color:var(--navy); font-size:14px; font-weight:900; }
#mediq-dashboard .mq-welcome-dot { width:8px; height:8px; border-radius:50%; background:var(--primary); box-shadow:0 0 0 4px rgba(87,96,106,.10); }
#mediq-dashboard .mq-header-left { display:flex; align-items:center; gap:10px; }

#mediq-dashboard .mq-edit-page-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    min-height:38px;
    padding:0 14px;
    border:1px solid #cfe1e8;
    border-radius:12px;
    background:#fff;
    color:#34414d !important;
    font-family:inherit;
    font-size:12px;
    font-weight:900;
    text-decoration:none !important;
    cursor:pointer;
    box-shadow:0 6px 18px rgba(3,53,83,.06);
    transition:.18s ease;
}

#mediq-dashboard .mq-edit-page-btn:hover{
    background:#eaf4fb;
    border-color:#b8bec5;
    color:#326588 !important;
    transform:translateY(-1px);
}

#mediq-dashboard .mq-edit-page-btn svg{
    width:15px;
    height:15px;
    stroke:currentColor;
    stroke-width:2;
    fill:none;
}

#mediq-dashboard .mq-module-card { box-shadow:0 10px 30px rgba(19,65,90,.05); }
#mediq-dashboard .mq-module-card:hover { transform:translateY(-5px); box-shadow:0 20px 45px rgba(19,65,90,.10); }
#mediq-dashboard .mq-hero { box-shadow:0 18px 42px rgba(7,53,83,.12); }


/* ===== FINAL UI REFINEMENTS ===== */
#mediq-dashboard .mq-header { min-height: 92px; }
#mediq-dashboard .mq-header-left { margin-right:auto; }
#mediq-dashboard .mq-header-welcome { padding:10px 16px; }
#mediq-dashboard .mq-breadcrumb { min-height:46px; }
#mediq-dashboard .mq-hero { margin-top:14px; }
#mediq-dashboard .mq-tree { scrollbar-width:none; -ms-overflow-style:none; }
#mediq-dashboard .mq-tree::-webkit-scrollbar { display:none !important; width:0 !important; }
#mediq-dashboard .mq-sidebar { overflow:hidden; }


#mediq-dashboard .mq-bread-link {
    cursor: pointer;
    transition: color .15s ease, background .15s ease;
    border-radius: 7px;
    padding: 4px 6px;
}
#mediq-dashboard .mq-bread-link:hover {
    color: var(--primary) !important;
    background: rgba(87,96,106,.08);
}

/*    MEDIQ - REAL PURCHASED ASSETS LIST (table)
   ============================================================ */
#mediq-dashboard .mq-assets-head {
    margin-top: 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
#mediq-dashboard .mq-assets-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
#mediq-dashboard .mq-assets-btn {
    min-height: 38px;
    padding: 0 15px;
    border: 1px solid #d8e7ed;
    border-radius: 9px;
    background: #fff;
    color: #47677d;
    font-family: inherit;
    font-size: 12px;
    font-weight: 800;
    cursor: pointer;
}
#mediq-dashboard .mq-assets-btn.primary {
    border-color: transparent;
    color: #fff;
    background: linear-gradient(90deg,#409fd1,#2c88bb);
}
#mediq-dashboard .mq-assets-host {
    margin-top: 14px;
    min-height: 140px;
}
#mediq-dashboard .mq-assets-host > table,
#mediq-dashboard .mq-assets-host table {
    width: 100% !important;
    border-collapse: collapse !important;
    direction: rtl !important;
    background: #fff !important;
    border: 1px solid #d7dde2 !important;
    border-radius: 12px !important;
    overflow: hidden !important;
}
#mediq-dashboard .mq-assets-host th {
    padding: 12px 14px !important;
    text-align: right !important;
    background: #f5f9fd !important;
    color: #47677d !important;
    border-bottom: 1px solid #d7dde2 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
}
#mediq-dashboard .mq-assets-host td {
    padding: 12px 14px !important;
    text-align: right !important;
    color: #294e68 !important;
    border-bottom: 1px solid #e5f0f9 !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}
#mediq-dashboard .mq-assets-message {
    min-height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 22px;
    border: 1px dashed #c5dce5;
    border-radius: 12px;
    background: #f8fbfc;
    color: #6f8799;
    text-align: center;
    font-size: 12px;
    font-weight: 700;
}



#mediq-dashboard .mq-cf-delete-proxy {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-width: 58px;
    min-height: 30px;
    padding: 0 10px !important;
    border: 1px solid #f1c9c9 !important;
    border-radius: 8px !important;
    background: #fff7f7 !important;
    color: #b42318 !important;
    text-decoration: none !important;
    font-family: inherit !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    cursor: pointer !important;
}
#mediq-dashboard .mq-cf-delete-proxy:hover {
    background: #ffeded !important;
    border-color: #e8aaaa !important;
}

#mediq-dashboard .mq-cf-edit-proxy {
    min-width: 50px !important;
    height: 28px !important;
    padding: 0 11px !important;
    margin-left: 6px !important;
    border: 1px solid rgba(87,96,106,.30) !important;
    border-radius: 8px !important;
    background: #f4f4f5 !important;
    color: #434a51 !important;
    font-family: inherit !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    cursor: pointer !important;
    text-decoration: none !important;
}

#mediq-dashboard .mq-cf-edit-proxy:hover {
    background: #eaebec !important;
    border-color: rgba(87,96,106,.55) !important;
}

/* ============================================================
   DEDICATED EDIT ASSET WORKSPACE
   ============================================================ */
#mediq-dashboard .mq-edit-wrap {
    border: 1px solid var(--border);
    border-radius: 18px;
    background: #fff;
    padding: 24px;
    box-shadow: 0 10px 28px rgba(19,65,90,.035);
}
#mediq-dashboard .mq-edit-toolbar {
    margin-top: 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
#mediq-dashboard .mq-edit-search {
    width: min(390px, 100%);
    min-height: 40px;
    padding: 0 14px;
    border: 1px solid #d8e7ed;
    border-radius: 10px;
    outline: none;
    background: #fff;
    color: #294e68;
    direction: rtl;
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
}
#mediq-dashboard .mq-edit-search:focus {
    border-color: rgba(87,96,106,.65);
    box-shadow: 0 0 0 3px rgba(87,96,106,.08);
}
#mediq-dashboard .mq-edit-help {
    color: #71899a;
    font-size: 12px;
    font-weight: 700;
}
#mediq-dashboard .mq-edit-host {
    margin-top: 14px;
}
#mediq-dashboard .mq-edit-host table {
    width: 100% !important;
    border-collapse: collapse !important;
    direction: rtl !important;
    background: #fff !important;
    border: 1px solid #d7dde2 !important;
}
#mediq-dashboard .mq-edit-host th {
    padding: 12px 14px !important;
    text-align: right !important;
    background: #f5f9fd !important;
    color: #47677d !important;
    border-bottom: 1px solid #d7dde2 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
}
#mediq-dashboard .mq-edit-host td {
    padding: 12px 14px !important;
    text-align: right !important;
    color: #294e68 !important;
    border-bottom: 1px solid #e5f0f9 !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}

#mediq-dashboard{
    --navy:#347da8 !important;
    --navy-dark:#215b83 !important;
    --primary:#3997c8 !important;
    --primary-dark:#277eaf !important;
    --text:#315873 !important;
    --muted:#7e9bae !important;
    --border:#d5e7f2 !important;
    --bg:#f1f7fc !important;
}

#mediq-dashboard{background:#f1f7fc !important;}

#mediq-dashboard .mq-sidebar{
    background:linear-gradient(180deg,#58a4cf 0%,#3d89b7 52%,#23658f 100%) !important;
    box-shadow:-12px 0 42px rgba(27,32,42,.18) !important;
}

#mediq-dashboard .mq-life-item.active{
    background:linear-gradient(90deg,#409fd1,#2c88bb) !important;
    box-shadow:0 10px 24px rgba(39,126,175,.22) !important;
}

#mediq-dashboard .mq-hero{
    background:linear-gradient(105deg,#388cbc 0%,#64b2db 62%,#3997c8 135%) !important;
    box-shadow:0 16px 40px rgba(38,44,58,.14) !important;
}

#mediq-dashboard .mq-hero::before{background:rgba(169,218,246,.13) !important;}
#mediq-dashboard .mq-welcome-dot{background:#3997c8 !important;box-shadow:0 0 0 4px rgba(64,159,209,.12) !important;}

#mediq-dashboard .mq-action-card:hover,
#mediq-dashboard .mq-card:hover{
    border-color:#a5d1eb !important;
    box-shadow:0 16px 34px rgba(39,126,175,.09) !important;
}

#mediq-dashboard .mq-edit-page-btn:hover{
    border-color:#a5d1eb !important;
    color:#277eaf !important;
}

/* ===== MediQ code-only wizard (standalone) ===== */
#mqWz,#mqDetail{position:fixed;inset:0;z-index:11000;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(28,33,43,.58);backdrop-filter:blur(4px);direction:rtl}
#mqWz.open,#mqDetail.open{display:flex}
#mqWz *,#mqDetail *{box-sizing:border-box;font-family:Tahoma,Arial,sans-serif}
.wz-dialog{width:min(820px,94vw);max-height:90vh;display:flex;flex-direction:column;background:#fff;border:1px solid #d5e7f2;border-radius:20px;box-shadow:0 28px 90px rgba(22,27,38,.34);overflow:hidden;color:#24475f}
.wz-head{padding:18px 22px 14px;border-bottom:1px solid #e5e7ef;flex:0 0 auto}
.wz-head-top{display:flex;align-items:center;justify-content:space-between;gap:14px}
.wz-title{font-size:18px;font-weight:900;color:#204969}
.wz-close{width:36px;height:36px;border:0;border-radius:10px;background:#f2f4f8;color:#6d91ab;font:700 21px/36px Tahoma;cursor:pointer}
.wz-close:hover{background:#e5f0f9;color:#277eaf}
.wz-steps{margin-top:14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.wz-step{min-height:40px;padding:7px 9px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid #e2e6ee;border-radius:10px;background:#f5f9fd;color:#91aabd;font-size:11px;font-weight:800}
.wz-step b{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#e3eff8;color:#6d91ab;font-size:10px}
.wz-step.active{border-color:#3997c8;background:#3997c8;color:#fff}
.wz-step.active span{color:#fff}
.wz-step.active b{background:#3997c8;color:#fff}
.wz-step.done{background:#edf6fc;color:#4f86aa}
.wz-body{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:20px 22px 14px}
.wz-label{margin:0 2px 8px;font-size:12px;font-weight:900;color:#355e79}
.wz-selected{margin:0 0 10px;padding:9px 12px;border:1px dashed #cce2f0;border-radius:10px;background:#f5f9fd;color:#819eaf;font-size:12px;font-weight:800}
.wz-selected.has{border-style:solid;color:#2b5672;background:#e7f2fb}
.wz-picker{border:1px solid #cce2f0;border-radius:12px;overflow:hidden;background:#fff}
.wz-search{display:block;width:100%;height:42px;padding:0 13px;border:0;border-bottom:1px solid #e4e7e9;background:#f1f8fd;font-size:12px;color:#2b5672;outline:none;direction:rtl}
.wz-list{max-height:230px;overflow-y:auto;padding:6px}
.wz-item{display:block;width:100%;min-height:38px;padding:8px 11px;border:0;border-radius:8px;background:#fff;color:#315873;text-align:right;font-size:12px;font-weight:700;cursor:pointer}
.wz-item:hover{background:#e5f0f9}
.wz-item.sel{background:#3997c8;color:#fff}
.wz-empty,.wz-loading{padding:18px 12px;color:#7e9bae;text-align:center;font-size:12px;font-weight:700}
.wz-link{margin-top:12px;min-height:38px;padding:0 14px;border:1px solid #cce2f0;border-radius:10px;background:#fff;color:#277eaf;font-size:12px;font-weight:900;cursor:pointer}
.wz-link:hover{background:#e9f4fc}
.wz-create{margin-top:14px;padding:14px;border:1px solid #d5e7f2;border-radius:14px;background:#f5f9fd}
.wz-create[hidden]{display:none}
.wz-create>strong{display:block;margin-bottom:12px;font-size:13px;color:#2b506b}
.wz-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.wz-field{margin:0 0 12px;min-width:0}
.wz-field label{display:block;margin:0 0 6px;font-size:12px;font-weight:800;color:#2b506b}
.wz-field input,.wz-field select{display:block;width:100%;min-height:42px;padding:0 12px;border:1px solid #d2e5f1;border-radius:11px;background:#fff;color:#24475f;font-size:12px;direction:rtl;outline:none}
.wz-field input:focus,.wz-field select:focus{border-color:#409fd1;box-shadow:0 0 0 3px rgba(64,159,209,.12)}
.wz-inline{display:flex;gap:8px;align-items:center}
.wz-inline select{flex:1 1 auto}
.wz-plus{flex:0 0 42px;width:42px;height:42px;border:1px solid #b3d5e9;border-radius:11px;background:#eaf4fb;color:#326588;font:900 22px/40px Tahoma;cursor:pointer}
.wz-plus:hover{background:#3997c8;border-color:#3997c8;color:#fff}
.wz-mini{display:flex;gap:8px;margin:0 0 12px}
.wz-mini[hidden]{display:none}
.wz-mini input{flex:1 1 auto;min-height:40px;padding:0 12px;border:1px solid #d2e5f1;border-radius:10px;font-size:12px;direction:rtl}
.wz-static{margin:0 0 14px;padding:10px 12px;border:1px solid #d5e7f2;border-radius:10px;background:#f5f9fd;color:#487391;font-size:12px;font-weight:800}
.wz-msg{min-height:20px;padding:0 22px 6px;font-size:11px;font-weight:800;color:#6d91ab}
.wz-msg.err{color:#a33d3d}
.wz-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 22px 16px;border-top:1px solid #e2e6e9;background:#fff}
.wz-foot-r,.wz-foot-l{display:flex;gap:9px}
.wz-btn{min-height:42px;padding:0 20px;border-radius:10px;border:1px solid #d8dde7;background:#fff;color:#487391;font-size:12px;font-weight:900;cursor:pointer}
.wz-btn.primary,.wz-primary{border:1px solid #277eaf;background:linear-gradient(135deg,#3997c8,#277eaf);color:#fff;box-shadow:0 8px 18px rgba(39,126,175,.18);border-radius:10px;min-height:42px;padding:0 18px;font-size:12px;font-weight:900;cursor:pointer}
.wz-btn:disabled,.wz-primary:disabled,.wz-link:disabled{opacity:.55;cursor:not-allowed}
.wz-btn:focus-visible,.wz-primary:focus-visible,.wz-item:focus-visible,.wz-plus:focus-visible,.wz-link:focus-visible{outline:2px solid #409fd1;outline-offset:2px}
#mqDetail .wz-dialog{width:min(620px,94vw)}
.dt-row{display:flex;justify-content:space-between;gap:14px;padding:11px 2px;border-bottom:1px solid #e7f2fb;font-size:12px}
.dt-row span:first-child{color:#7e9bae;font-weight:800}
.dt-row span:last-child{color:#2b5672;font-weight:800;text-align:left}
.mq-tbl{width:100%;border-collapse:collapse;direction:rtl;background:#fff}
.mq-tbl th,.mq-tbl td{padding:12px 14px;text-align:right;font-size:12px;border-bottom:1px solid #e5f0f9;color:#294e68;font-weight:700}
.mq-tbl th{background:#ecf5fc;color:#47677d;font-weight:900}
.mq-tbl-wrap{border:1px solid #d7dde2;border-radius:14px;overflow:auto;background:#fff}
@media(max-width:760px){.wz-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.wz-grid{grid-template-columns:1fr}}

/* MediQ hospital-blue palette. */
#mediq-dashboard .mq-welcome-dot{background:#409fd1!important;box-shadow:0 0 0 4px rgba(64,159,209,.12)!important}
.wz-btn.primary,.wz-primary{background:linear-gradient(135deg,#4ca9d8,#328fc1);border-color:#328fc1;box-shadow:0 8px 18px rgba(64,159,209,.2)}
.wz-step.active{background:#368fbe;border-color:#368fbe;color:white}
.wz-step.active b{background:rgba(255,255,255,.18);color:white}
.wz-step.active span{color:white}
.wz-item.sel{background:#368fbe;color:white}

/* Large minimal duotone illustrations and structured wizard. */
#mediq-dashboard .mq-module-icon{width:110px;height:110px;border-radius:24px;background:#f2f6f8;color:#4e6979;margin-bottom:16px}
#mediq-dashboard .mq-module-icon svg{width:72px;height:72px;stroke-width:1.25}
#mediq-dashboard .mq-action-icon{width:108px;height:108px;border-radius:22px;background:#f2f6f8;color:#4e6979}
#mediq-dashboard .mq-action-icon svg{width:75px;height:75px;stroke-width:1.25}
#mediq-dashboard .mq-module-card{min-height:216px}
#mediq-dashboard .mq-action-card{min-height:148px}
.wz-step{flex-direction:column;gap:4px;min-height:65px}
.wz-step .wz-step-heading{display:flex;align-items:center;justify-content:center;gap:6px}
.wz-step .wz-step-value{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:600;color:inherit}
.wz-group-tree,.wz-group-tree ul{list-style:none;margin:0;padding:0 18px 0 0;position:relative}
.wz-group-tree{padding:4px 0}
.wz-group-tree ul{margin-right:15px;border-right:1px solid #bacbd5}
.wz-group-tree li{position:relative;margin:3px 0}
.wz-group-tree ul>li:before{content:"";position:absolute;right:-18px;top:19px;width:18px;border-top:1px solid #bacbd5}
.wz-tree-line{display:flex;align-items:center;gap:4px}
.wz-tree-line .wz-item{width:auto;flex:1;min-width:0;white-space:normal}
.wz-tree-toggle,.wz-tree-spacer{width:26px;flex:0 0 26px;height:30px}
.wz-tree-toggle{border:0;border-radius:6px;background:#edf2f5;color:#435c6d;cursor:pointer;font:700 17px Tahoma}
.wz-tree-toggle:focus-visible{outline:2px solid #69737d}
.wz-segment{padding:14px;margin:0 0 13px;border:1px solid #dce5eb;border-radius:13px;background:#fff;min-inline-size:0}
.wz-segment legend{padding:0 8px;color:#394e5e;font-size:12px;font-weight:900}
.wz-segment .wz-field:last-child{margin-bottom:0}
.wz-context{font-size:11px;font-weight:600;line-height:1.8;color:#6c8190;margin-top:8px}
@media(max-width:760px){#mediq-dashboard .mq-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#mediq-dashboard .mq-action-grid{grid-template-columns:1fr}.wz-step{padding:5px}.wz-step .wz-step-value{font-size:9px}}


.wz-segment-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 15px;padding-bottom:10px;border-bottom:1px solid #e2e7eb}
.wz-segment-tabs button{padding:9px 12px;border:1px solid #d4dfe6;border-radius:9px;background:#f5f8fa;color:#526777;font:700 11px Tahoma;cursor:pointer}
.wz-segment-tabs button.active{background:#69737d;color:white;border-color:#69737d}
.wz-segment[hidden]{display:none!important}

/* Float above the form without occupying a grid row or being clipped by form scroll. */
#mqWz .mq-jcalendar.mq-date-floating{position:fixed!important;z-index:50;margin:0!important;max-width:calc(100vw - 20px);padding:12px;background:#fff;border:1px solid #cce2f0;border-radius:12px;box-shadow:0 16px 48px rgba(23,65,86,.24);overflow:auto;direction:rtl}
:is(#mqWz,#vDialog) .mq-date-floating[hidden]{display:none!important}
:is(#mqWz,#vDialog) .mq-date-floating .mq-jcal-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
:is(#mqWz,#vDialog) .mq-date-floating .mq-jcal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center;margin:10px 0}
:is(#mqWz,#vDialog) .mq-date-floating button{border:1px solid #d5e7f2;border-radius:6px;padding:5px;background:#f1f8fd;color:#315873;cursor:pointer;font:inherit}
:is(#mqWz,#vDialog) .mq-date-floating button:hover{background:#e0f0fa}

/* V11 layout and accessible operation dialog */
#mediq-dashboard .mq-logo img{width:121.8px!important}
#mediq-dashboard .mq-list-layout{grid-template-columns:297px minmax(0,1fr)}
#mediq-dashboard .v-five{grid-template-columns:repeat(5,minmax(0,1fr))}
#mediq-dashboard button.mq-module-card{font:inherit;text-align:right;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start}
#mediq-dashboard .v-tag{display:inline-block;border-radius:8px;padding:5px 8px;font-size:11px;line-height:1.8}
#mediq-dashboard .v-tag.green{color:#17633d;background:#e5f5eb}
#mediq-dashboard .v-tag.orange{color:#8c4808;background:#fff0df}
#mediq-dashboard .v-active{display:block;color:#ab590c;font-size:10px}
#mediq-dashboard .v-summary-row{display:flex;flex-direction:column;gap:8px;padding:14px 0;border-bottom:1px solid #dce8ee;font-size:12px}
#mediq-dashboard .v-summary-row span{color:#6c8190}
#mediq-dashboard .v-summary-row b{line-height:1.8}
#mediq-dashboard .v-steps{display:flex;flex-direction:column;gap:8px}
#mediq-dashboard .v-steps>div{border-right:4px solid #dce8ee;padding:10px;background:#f4f8fb;border-radius:7px;font-size:11px}
#mediq-dashboard .v-steps>.current{background:#44525f;color:white;border-color:#44525f}
#mediq-dashboard .v-steps>.passed{background:#e5f5eb;border-color:#58a97a}
#mediq-dashboard .v-search{display:flex;gap:7px;flex-wrap:wrap}
#mediq-dashboard .v-search input{min-width:180px;border:1px solid #cbdfea;border-radius:8px;padding:10px;font:inherit}
#mediq-dashboard #vService{color:#9a5b10;font-size:11px}
#mediq-dashboard .v-overlay{position:fixed;inset:0;background:#122f4590;z-index:100100;display:flex;align-items:center;justify-content:center;padding:18px;direction:rtl}
#mediq-dashboard .v-overlay[hidden]{display:none}
#mediq-dashboard .v-dialog{width:min(920px,96vw);max-height:92vh;display:flex;flex-direction:column;background:#fff;border:1px solid #cbdfea;border-radius:18px;box-shadow:0 20px 80px #163d4950;overflow:hidden}
#mediq-dashboard .v-dialog header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid #dce8ee}
#mediq-dashboard .v-dialog header button{border:0;background:#edf5fa;border-radius:8px;width:35px;height:35px;font-size:24px;cursor:pointer}
#mediq-dashboard .v-dialog-body{overflow:auto;padding:20px;min-height:0}
#mediq-dashboard #vMessage{margin:0;padding:12px 20px;background:#f2f8fc;white-space:pre-wrap;line-height:1.8;font-size:12px}
#mediq-dashboard .v-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0}
#mediq-dashboard .v-fields label{display:flex;flex-direction:column;gap:8px;font-size:12px}
#mediq-dashboard .v-fields input,#mediq-dashboard .v-fields select,#mediq-dashboard .v-fields textarea,#mediq-dashboard #vProcessSearch{font:inherit;padding:10px;border:1px solid #cbdfea;border-radius:8px;background:white;width:100%;box-sizing:border-box}
#mediq-dashboard .v-choice{display:flex;align-items:center;gap:10px;padding:12px;border-bottom:1px solid #e7edf1;font-size:12px;cursor:pointer}
#mediq-dashboard .v-choice small{margin-right:auto;color:#789}
#mediq-dashboard .v-operation-choices{display:flex;flex-wrap:wrap;gap:8px}
#mediq-dashboard .v-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:20px}
#mediq-dashboard .v-stats>div{background:white;border:1px solid #cbdfea;padding:30px;display:flex;flex-direction:column;gap:12px;border-radius:16px}
#mediq-dashboard .v-stats strong{font-size:30px;color:#318fbd}
@media(max-width:1100px){#mediq-dashboard .v-five{grid-template-columns:repeat(3,minmax(0,1fr))}#mediq-dashboard .mq-list-layout{grid-template-columns:230px minmax(0,1fr)}}
@media(max-width:760px){#mediq-dashboard .v-five{grid-template-columns:repeat(2,minmax(0,1fr))}#mediq-dashboard .mq-list-layout{grid-template-columns:1fr}#mediq-dashboard .v-fields{grid-template-columns:1fr}#mediq-dashboard .v-choice{flex-wrap:wrap}}

#mediq-dashboard .v-attribute-list{max-height:220px;overflow:auto;border:1px solid #cbdfea;border-radius:8px;margin:12px 0;padding:12px;display:flex;flex-direction:column;gap:12px}#mediq-dashboard .v-attribute-list label[hidden]{display:none}

#mediq-dashboard .v-editor-tabs{display:flex;gap:6px;flex-wrap:wrap;position:sticky;top:-20px;z-index:2;background:white;padding:12px 0;border-bottom:1px solid #d4e5ee}
#mediq-dashboard .v-editor-tabs button{font:inherit;font-size:12px;cursor:pointer;border:1px solid #cbdfea;border-radius:9px;padding:10px;background:#f2f8fc;color:#385d73}
#mediq-dashboard .v-editor-tabs button.active{background:#485762;border-color:#485762;color:white}
#mediq-dashboard [data-edit-panel][hidden]{display:none}
#mediq-dashboard .v-editor-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;position:sticky;bottom:-20px;background:#fff;padding:14px 0;border-top:1px solid #d4e5ee;font-size:11px;z-index:2}
#mediq-dashboard .v-fields textarea{min-height:90px}
#mediq-dashboard .v-fields small{color:#7b8c98}
#mediq-dashboard #vDialog .mq-date-floating{position:fixed;z-index:100120;display:block;overflow:auto;background:white;border:1px solid #c3d9e5;border-radius:12px;padding:12px;box-shadow:0 14px 40px #203d5b30;box-sizing:border-box}
#mediq-dashboard #vDialog .mq-date-floating[hidden]{display:none}

#mediq-dashboard .v-live-timeline{direction:rtl;background:white;border:1px solid #d0e2ec;border-radius:14px;padding:18px 20px;margin:0 0 20px;min-width:0}
#mediq-dashboard .v-live-timeline header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px}
#mediq-dashboard .v-live-timeline header>div{display:flex;flex-direction:column;gap:7px;min-width:0}
#mediq-dashboard .v-live-timeline header span{font-size:11px;color:#6d8795;overflow-wrap:anywhere}
#mediq-dashboard .v-live-timeline header>small{font-size:10px;color:#698b8b;display:flex;align-items:center;gap:5px;white-space:nowrap}
#mediq-dashboard .v-live-timeline header>small>i{width:6px;height:6px;border-radius:50%;background:#16b66a;display:block}
#mediq-dashboard .v-live-timeline header>small.stale{color:#a46515}
#mediq-dashboard .v-live-timeline header>small.stale>i{background:#d58c30}
#mediq-dashboard .v-circle-track{list-style:none;margin:0;padding:0;display:flex;direction:rtl;align-items:flex-start}
#mediq-dashboard .v-circle-step{flex:1;min-width:0;text-align:center;position:relative;padding:0 6px;line-height:1.7}
#mediq-dashboard .v-circle-rail{position:relative;height:30px;margin-bottom:8px}
#mediq-dashboard .v-circle-node{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin:0 auto;border-radius:50%;border:2px solid #cadce5;background:#e0eaf0;box-shadow:0 0 0 4px white;box-sizing:border-box;color:white;font-size:15px;font-weight:bold}
#mediq-dashboard .v-circle-line{position:absolute;top:11px;right:50%;width:calc(100% + 12px);height:3px;background:#d9e5ec}
#mediq-dashboard .v-circle-step:last-child .v-circle-line{display:none}
#mediq-dashboard .v-circle-step.done .v-circle-node{background:#15b464;border-color:#15b464}
#mediq-dashboard .v-circle-line.done{background:#15b464}
#mediq-dashboard .v-circle-step.current .v-circle-node{border-color:#087eaa;background:white}
#mediq-dashboard .v-circle-step.current .v-circle-node>i{display:block;width:8px;height:8px;border-radius:50%;background:#087eaa;animation:v13-pulse 1.6s ease-in-out infinite}
#mediq-dashboard .v-circle-step strong{display:block;font-size:11px;color:#335e76;overflow-wrap:anywhere}
#mediq-dashboard .v-circle-step.current strong{color:#087eaa}
#mediq-dashboard .v-circle-step small,#mediq-dashboard .v-circle-step time{display:block;font-size:10px;color:#8ba0ae}
#mediq-dashboard .v-circle-step.current small{color:#087eaa;font-weight:bold}
#mediq-dashboard .v-live-timeline footer{display:flex;justify-content:space-between;gap:14px;border-top:1px solid #edf3f7;margin-top:20px;padding-top:12px;font-size:11px}
#mediq-dashboard .v-timeline-warning{font-size:11px;color:#a46515}
@keyframes v13-pulse{0%,100%{box-shadow:0 0 0 0 #087eaa40}50%{box-shadow:0 0 0 6px #087eaa10}}
@media(prefers-reduced-motion:reduce){#mediq-dashboard .v-circle-step.current .v-circle-node>i{animation:none}}
@media(max-width:760px){#mediq-dashboard .v-live-timeline header{flex-direction:column}#mediq-dashboard .v-circle-track{flex-direction:column;gap:0}#mediq-dashboard .v-circle-step{width:100%;text-align:right;padding:0 40px 22px 0;box-sizing:border-box}#mediq-dashboard .v-circle-rail{position:absolute;right:0;top:0;width:24px;height:100%;margin:0}#mediq-dashboard .v-circle-line{top:24px;right:11px;height:calc(100% - 12px);width:3px}#mediq-dashboard .v-circle-step:last-child{padding-bottom:0}}

/* Keep row actions together; status dashboard and restrained hospital-blue styling. */
#mediq-dashboard #vAssetDashboard{margin-bottom:20px;direction:rtl}
#mediq-dashboard .v-dashboard-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 2px 12px}
#mediq-dashboard .v-dashboard-heading>div{display:flex;flex-direction:column;gap:6px}
#mediq-dashboard .v-dashboard-heading strong{font-size:16px;color:#245574}
#mediq-dashboard .v-dashboard-heading span,#mediq-dashboard .v-dashboard-heading small{font-size:11px;color:#7893a5}
#mediq-dashboard .v-status-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
#mediq-dashboard .v-stat-card{--stat-color:#318ebe;--stat-tint:#edf7fd;position:relative;overflow:hidden;text-align:right;font:inherit;cursor:pointer;border:1px solid #d5e6ef;border-radius:17px;padding:18px 20px 16px;background:#fff;color:#345e78;display:grid;grid-template-columns:1fr 48px;gap:8px 12px;box-shadow:0 6px 22px #396a8a06;transition:border-color .16s,box-shadow .16s,transform .16s;min-width:0}
#mediq-dashboard .v-stat-card.active{--stat-color:#20996a;--stat-tint:#edf9f3}
#mediq-dashboard .v-stat-card.inactive{--stat-color:#d58a34;--stat-tint:#fff6e9}
#mediq-dashboard .v-stat-card.other{--stat-color:#7a88a3;--stat-tint:#f0f3f8}
#mediq-dashboard .v-stat-card:hover{transform:translateY(-2px);border-color:var(--stat-color);box-shadow:0 8px 26px #316b8a12}
#mediq-dashboard .v-stat-card.selected{border-color:var(--stat-color);box-shadow:inset 0 0 0 1px var(--stat-color),0 6px 22px #396a8a08}
#mediq-dashboard .v-stat-card:focus-visible{outline:3px solid #8dcced;outline-offset:3px}
#mediq-dashboard .v-stat-icon{grid-column:2;grid-row:1/span 2;width:46px;height:46px;display:flex;align-items:center;justify-content:center;border-radius:14px;background:var(--stat-tint);color:var(--stat-color)}
#mediq-dashboard .v-stat-icon svg{width:27px;height:27px}
#mediq-dashboard .v-stat-label{grid-column:1;grid-row:1;font-size:12px;color:#597b91;align-self:center}
#mediq-dashboard .v-stat-card>strong{grid-column:1;grid-row:2;font-size:28px;line-height:1.3;color:#244e68}
#mediq-dashboard .v-stat-bottom{grid-column:1/-1;font-size:10px;color:#8ba2b1;margin-top:5px}
#mediq-dashboard .v-stat-meter{grid-column:1/-1;height:4px;border-radius:5px;background:var(--stat-tint);overflow:hidden;margin-top:2px}
#mediq-dashboard .v-stat-meter>i{display:block;height:100%;background:var(--stat-color);border-radius:5px}
#mediq-dashboard #mqAssetsHost .mq-tbl{table-layout:auto!important;width:100%;border-collapse:separate;border-spacing:0}
#mediq-dashboard #mqAssetsHost .mq-tbl th{padding:14px 10px;background:#edf6fc;font-size:11px;line-height:1.7;color:#50738a;vertical-align:middle}
#mediq-dashboard #mqAssetsHost .mq-tbl td{padding:15px 10px;vertical-align:middle;border-bottom:1px solid #e8f0f5;font-size:11px;line-height:1.85}
#mediq-dashboard #mqAssetsHost .mq-tbl tr:last-child td{border-bottom:0}
#mediq-dashboard #mqAssetsHost .mq-tbl tbody tr{transition:background .15s;cursor:pointer}
#mediq-dashboard #mqAssetsHost .mq-tbl tbody tr:hover{background:#f6fbfe}
#mediq-dashboard #mqAssetsHost .mq-tbl th:last-child,#mediq-dashboard #mqAssetsHost .mq-tbl td:last-child{width:156px;min-width:156px;white-space:nowrap}
#mediq-dashboard .v-row-actions{display:inline-flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:center;justify-content:center;gap:6px;white-space:nowrap}
#mediq-dashboard .v-row-actions .mq-assets-btn{display:inline-flex!important;align-items:center;justify-content:center;gap:5px;min-width:66px;margin:0!important;padding:7px 9px!important;border-radius:9px;font-size:10px!important;white-space:nowrap;min-height:34px}
#mediq-dashboard .v-row-actions .mq-assets-btn svg{width:14px;height:14px;flex:0 0 14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
#mediq-dashboard .v-row-actions [data-detail]{background:#f1f8fd;border-color:#d5e6ef;color:#377caa}
#mediq-dashboard .v-row-actions [data-vedit]{background:#fff;border-color:#bdd8e8;color:#377caa}
#mediq-dashboard .v-row-actions button:disabled{opacity:.45;cursor:not-allowed}
#mediq-dashboard .v-status-pill{display:inline-flex;align-items:center;gap:5px;border-radius:8px;background:#f0f3f8;color:#65758f;padding:4px 8px;font-size:10px;white-space:nowrap}
#mediq-dashboard .v-status-pill:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}
#mediq-dashboard .v-status-pill.active{background:#ecf8f0;color:#27875b}
#mediq-dashboard .v-status-pill.inactive{background:#fff5e8;color:#a57532}
#mediq-dashboard .v-tag{max-width:210px;overflow-wrap:anywhere;line-height:1.8;padding:5px 9px;border:1px solid transparent}
#mediq-dashboard .v-tag.green{background:#edf8f1;color:#3b8060;border-color:#e2f0e7}
#mediq-dashboard .v-tag.orange{background:#fff4e8;color:#a57532;border-color:#faecd9}
#mediq-dashboard .mq-list-menu{border-color:#d5e6ef;box-shadow:0 6px 24px #396a8a05}
#mediq-dashboard .v-summary-row{padding:13px 0}
@media(max-width:1150px){#mediq-dashboard .v-status-cards{grid-template-columns:repeat(2,minmax(0,1fr))}#mediq-dashboard .mq-list-layout{grid-template-columns:240px minmax(0,1fr)}}
@media(max-width:900px){#mediq-dashboard .mq-list-layout{grid-template-columns:1fr}#mediq-dashboard #mqAssetsHost .mq-tbl th:last-child,#mediq-dashboard #mqAssetsHost .mq-tbl td:last-child{min-width:146px;width:146px}}
@media(max-width:600px){#mediq-dashboard .v-dashboard-heading{align-items:flex-start;flex-direction:column;gap:7px}#mediq-dashboard .v-stat-card{padding:14px;grid-template-columns:1fr 32px}#mediq-dashboard .v-stat-icon{width:32px;height:32px;border-radius:10px}#mediq-dashboard .v-stat-icon svg{width:21px;height:21px}#mediq-dashboard .v-stat-label{font-size:10px}#mediq-dashboard .v-stat-card>strong{font-size:24px}}


/* V15: dependent attribute values and compact vertical process under sidebar details. */
#mediq-dashboard .v-smart-filter{display:flex;flex-direction:column;gap:9px;direction:rtl}
#mediq-dashboard .v-smart-filter label{font-size:12px;font-weight:900;color:#315873}
#mediq-dashboard .v-smart-filter select,#mediq-dashboard .v-smart-filter input{width:100%;max-width:100%;min-height:39px;border:1px solid #cbdfea;border-radius:9px;padding:8px 11px;background:white;color:#315873;outline:none;font:12px Tahoma,Arial;box-sizing:border-box}
#mediq-dashboard .v-smart-filter select:focus,#mediq-dashboard .v-smart-filter input:focus{border-color:#3997c8;box-shadow:0 0 0 3px #3997c822}
#mediq-dashboard .v-smart-filter #vFilterDetails{display:flex;flex-direction:column;gap:9px;margin-top:8px}
#mediq-dashboard .v-smart-filter #vFilterDetails[hidden]{display:none!important}
#mediq-dashboard .v-smart-filter #vFilterValue{height:178px;overflow:auto}
#mediq-dashboard .v-smart-filter #vFilterValue option{padding:8px;white-space:normal}
#mediq-dashboard .v-smart-filter small,#mediq-dashboard .v-filter-hint{font-size:11px;color:#7995a7}
#mediq-dashboard .v-filter-actions{display:flex;justify-content:flex-start;margin-top:4px}
#mediq-dashboard .v-filter-chip{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:7px 0;padding:9px 11px;border:1px solid #d4e6f0;background:#f1f8fd;border-radius:9px;font-size:11px;color:#305b78;font-weight:700}
#mediq-dashboard .v-filter-chip button{border:0;background:#e5f6ee;color:#15986b;font-size:17px;font-weight:900;border-radius:6px;cursor:pointer;min-width:27px;min-height:27px}
#mediq-dashboard #vFilterList h4{font-size:12px;margin:15px 0 5px}
#mediq-dashboard .mq-list-menu #vLiveTimeline{margin:18px 0 0;padding:15px 5px 5px;border:0;border-top:1px solid #dce9f1;border-radius:0;box-shadow:none;background:transparent}
#mediq-dashboard .mq-list-menu #vLiveTimeline header{margin-bottom:17px}
#mediq-dashboard .mq-list-menu #vLiveTimeline header strong{font-size:13px;color:#245574}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-track{display:flex;flex-direction:column;align-items:stretch;gap:0}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-step{width:100%;min-height:69px;flex:none;text-align:right;padding:0 38px 18px 0}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-rail{position:absolute;right:0;top:0;width:27px;height:100%;margin:0}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-node{margin:0;width:24px;height:24px}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-line{position:absolute;top:24px;right:11px;width:3px;height:calc(100% - 20px)}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-step strong{font-size:11px}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-step small{font-size:10px}

/* Inline Jira Assets-style attribute filtering; never uses the dialog overlay. */
#mediq-dashboard .v-filter-anchor{position:relative;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#mediq-dashboard .v-inline-filters{position:absolute;top:calc(100% + 8px);right:0;z-index:80;width:min(610px,calc(100vw - 70px));max-height:min(560px,75vh);overflow:auto;direction:rtl;background:#fff;border:1px solid #cbd9e4;border-radius:8px;box-shadow:0 14px 40px rgba(21,55,75,.18);padding:12px;text-align:right}
#mediq-dashboard .v-filter-top{display:flex;align-items:center;justify-content:space-between;padding:3px 5px 12px;border-bottom:1px solid #e4edf3;font-size:13px;color:#245574}
#mediq-dashboard .v-filter-top button{border:0;background:transparent;font-size:23px;cursor:pointer;color:#55748a}
#mediq-dashboard .v-filter-columns{display:grid;grid-template-columns:minmax(160px,1fr) minmax(200px,1.2fr);gap:12px;padding-top:12px}
#mediq-dashboard .v-filter-attributes{border-left:1px solid #e4edf3;padding-left:10px;min-width:0}
#mediq-dashboard .v-filter-attributes input,#mediq-dashboard .v-filter-values input,#mediq-dashboard .v-filter-values select{width:100%;min-height:34px;max-width:100%;padding:7px 9px;border:1px solid #ccdce7;border-radius:5px;background:#fff;color:#315873;box-sizing:border-box;font:12px Tahoma}
#mediq-dashboard .v-attribute-list{max-height:290px;overflow-y:auto;margin-top:8px}
#mediq-dashboard .v-attribute-choice{display:flex;align-items:center;gap:9px;width:100%;min-height:34px;border:0;background:#fff;color:#315873;text-align:right;padding:6px;cursor:pointer;font:12px Tahoma}
#mediq-dashboard .v-attribute-choice:hover{background:#ecf5fc}
#mediq-dashboard .v-checkmark{display:inline-flex;justify-content:center;align-items:center;width:15px;height:15px;border:1px solid #a7b7c4;border-radius:2px;color:#247eaf;font-weight:bold;flex:none}
#mediq-dashboard .v-filter-values{min-width:0}
#mediq-dashboard .v-filter-values #vFilterDetails{display:flex;flex-direction:column;gap:8px}
#mediq-dashboard .v-filter-values #vFilterDetails[hidden],#mediq-dashboard .v-filter-values #vFilterPickHint[hidden]{display:none!important}
#mediq-dashboard .v-filter-values label{font-size:12px;font-weight:700;color:#345c74}
#mediq-dashboard .v-filter-values #vFilterValue{height:166px;overflow:auto}
#mediq-dashboard .v-filter-values #vFilterValue option{padding:7px}
#mediq-dashboard .v-filter-values small,#mediq-dashboard .v-filter-values p{font-size:11px;color:#7893a5}
#mediq-dashboard .v-inline-filters #vFilterList{border-top:1px solid #e5edf3;margin-top:10px;padding-top:6px}
@media(max-width:650px){#mediq-dashboard .v-filter-columns{grid-template-columns:1fr}#mediq-dashboard .v-filter-attributes{border-left:0;border-bottom:1px solid #e4edf3;padding-bottom:9px}#mediq-dashboard .v-attribute-list{max-height:155px}}

/* V18 - Inline checkbox selection, no separate active filter section */
#mediq-dashboard .v-filter-checklist{height:166px;overflow-y:auto;border:1px solid #ccdce7;border-radius:5px;background:white;padding:4px!important}
#mediq-dashboard .v-filter-check-option{display:flex!important;flex-direction:row!important;align-items:center;gap:9px;min-height:33px;margin:0!important;padding:5px 8px;cursor:pointer;color:#315873;font-size:12px;font-weight:600}
#mediq-dashboard .v-filter-check-option:hover{background:#eef7fc}
#mediq-dashboard .v-filter-check-option:has(input:checked){background:#e5f3fc;color:#20577b}
#mediq-dashboard .v-filter-check-option input[type=checkbox]{width:16px!important;height:16px!important;min-height:0!important;flex:0 0 16px;margin:0!important;accent-color:#3997c8;cursor:pointer}
#mediq-dashboard .v-filter-check-option span{flex:1;min-width:0}
#mediq-dashboard .v-filter-empty{margin:10px!important;text-align:center}

/* V19: simultaneous attribute filters and right-aligned checkboxes */
#mediq-dashboard .v-attribute-choice,
#mediq-dashboard .v-filter-check-option {
    direction:rtl !important;
    text-align:right !important;
    justify-content:flex-start !important;
    flex-direction:row !important;
}
#mediq-dashboard .v-attribute-choice { gap:9px !important; }
#mediq-dashboard .v-attribute-choice .v-attribute-tick {
    display:inline-flex;align-items:center;justify-content:center;
    width:16px;height:16px;min-width:16px;flex:0 0 16px;
    border:1px solid #9bbad0;border-radius:3px;
    background:#fff;color:#fff;font-size:12px;font-weight:900;
}
#mediq-dashboard .v-attribute-choice[aria-pressed="true"] .v-attribute-tick {
    background:#3997c8;border-color:#3997c8;color:#fff;
}
#mediq-dashboard .v-attribute-current{background:#eaf4fc!important;}
#mediq-dashboard .v-filter-check-option input[type="checkbox"]{
    order:0!important;margin:0!important;float:none!important;
    position:static!important;inset:auto!important;
    flex:0 0 16px!important;align-self:center!important;
}
#mediq-dashboard .v-filter-check-option span{order:1!important;flex:1 1 auto!important;text-align:right!important;}


/* ===== V26: scoped table alignment, purple department, hierarchy arrow ===== */
#mediq-dashboard .v-tag.purple{background:#f1e8ff!important;color:#773ab6!important;border:1px solid #e0c9ff!important}
#mediq-dashboard #mqAssetsHost .mq-tbl th:nth-child(n+4),
#mediq-dashboard #mqAssetsHost .mq-tbl td:nth-child(n+4){text-align:center!important;vertical-align:middle!important}
#mediq-dashboard #mqAssetsHost .mq-tbl td:nth-child(4) .v-tag,
#mediq-dashboard #mqAssetsHost .mq-tbl td:nth-child(5) .v-tag{margin:0 auto!important}
#mediq-dashboard .mq-module-card.mq-has-children{position:relative!important;padding-bottom:40px!important}
#mediq-dashboard .mq-module-card.mq-has-children .mq-hierarchy-arrow{position:absolute;bottom:12px;left:13px;width:25px;height:25px;display:flex;align-items:center;justify-content:center;border:1px solid #d6e4ed;border-radius:8px;background:#f1f7fb;color:#4484af;font:900 20px/1 Tahoma;pointer-events:none}


/* V27 — compact RTL filters and animated live workflow step */
#mediq-dashboard .v-inline-filters{
 width:min(510px,calc(100vw - 36px)) !important;
 max-height:min(500px,78vh) !important;
 padding:10px !important;
 direction:rtl !important;
 text-align:right !important;
}
#mediq-dashboard .v-filter-columns{
 grid-template-columns:minmax(0,1fr) minmax(0,1.04fr) !important;
 gap:9px !important;
 direction:rtl !important;
}
#mediq-dashboard .v-filter-attributes{
 min-width:0 !important;padding-left:8px !important;
}
#mediq-dashboard .v-filter-values,#mediq-dashboard .v-filter-values #vFilterDetails{
 direction:rtl !important;text-align:right !important;min-width:0 !important;
}
#mediq-dashboard .v-attribute-choice,
#mediq-dashboard .v-filter-check-option{
 display:grid !important;
 grid-template-columns:16px minmax(0,1fr) !important;
 column-gap:7px !important;
 justify-content:initial !important;
 align-items:center !important;
 direction:rtl !important;
 text-align:right !important;
 width:100% !important;
 padding:5px 4px !important;
 box-sizing:border-box !important;
}
#mediq-dashboard .v-attribute-choice .v-attribute-tick,
#mediq-dashboard .v-filter-check-option input[type="checkbox"]{
 grid-column:1 !important;
 grid-row:1 !important;
 justify-self:start !important;
 margin:0 !important;
 order:initial !important;
}
#mediq-dashboard .v-attribute-choice>span:last-child,
#mediq-dashboard .v-filter-check-option>span{
 grid-column:2 !important;grid-row:1 !important;
 text-align:right !important;min-width:0 !important;
 order:initial !important;flex:initial !important;
 line-height:1.8 !important;
}
#mediq-dashboard .v-filter-checklist{padding:4px !important;}
#mediq-dashboard .v-filter-values label,
#mediq-dashboard .v-filter-values input,
#mediq-dashboard .v-filter-values select{
 direction:rtl !important;text-align:right !important;
}
#mediq-dashboard .v-circle-step.current .v-circle-node{
 animation:mq-live-circle 1.65s ease-in-out infinite !important;
}
#mediq-dashboard .v-circle-step.current .v-circle-node>i{
 animation:mq-live-dot 1.65s ease-in-out infinite !important;
}
@keyframes mq-live-circle{
 0%,100%{box-shadow:0 0 0 3px #ffffff,0 0 0 4px rgba(8,126,170,.12);border-color:#087eaa}
 50%{box-shadow:0 0 0 4px #ffffff,0 0 0 10px rgba(8,126,170,.20);border-color:#0c9ac8}
}
@keyframes mq-live-dot{
 0%,100%{opacity:1;transform:scale(1)}
 50%{opacity:.32;transform:scale(.55)}
}

@media(max-width:540px){
 #mediq-dashboard .v-filter-columns{grid-template-columns:1fr !important}
 #mediq-dashboard .v-filter-attributes{border-left:0 !important;border-bottom:1px solid #e4edf3 !important;padding-bottom:8px !important}
}


/* V28 — visible live step + hierarchy corner indicator */
#mediq-dashboard .mq-card-grid.v-five .mq-module-card.mq-has-children{
 position:relative!important;padding-bottom:40px!important;
}
#mediq-dashboard .mq-card-grid.v-five .mq-hierarchy-arrow{
 position:absolute!important;left:13px!important;bottom:12px!important;
 display:flex!important;visibility:visible!important;opacity:1!important;
 width:27px!important;height:27px!important;align-items:center!important;justify-content:center!important;
 border:1px solid #bfd8e9!important;border-radius:8px!important;
 background:#eaf5fc!important;color:#257eaf!important;
 font:900 19px/1 Tahoma,Arial,sans-serif!important;
 pointer-events:none!important;z-index:3!important;
}
#mediq-dashboard .v-circle-step.current .v-circle-node{
 animation:mediq-v28-live 1.15s ease-in-out infinite!important;
 will-change:box-shadow,background-color,transform;
}
#mediq-dashboard .v-circle-step.current .v-circle-node>i{
 animation:mediq-v28-dot 1.15s ease-in-out infinite!important;
}
@keyframes mediq-v28-live{
 0%,100%{background:#fff;border-color:#087eaa;box-shadow:0 0 0 3px #fff,0 0 0 4px rgba(0,139,207,.15);transform:scale(1)}
 50%{background:#d8f1ff;border-color:#0077b6;box-shadow:0 0 0 4px #fff,0 0 0 10px rgba(0,139,207,.36);transform:scale(1.12)}
}
@keyframes mediq-v28-dot{
 0%,100%{opacity:1;transform:scale(1)}
 50%{opacity:.18;transform:scale(.4)}
}



/* V29 — strong, clearly visible active-workflow blink. */
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-step.current .v-circle-node,
#mediq-dashboard #vLiveTimeline .v-circle-step.current .v-circle-node {
  animation: mediq-v29-blink 1s steps(1,end) infinite !important;
  transform:none !important;
  will-change:background-color,box-shadow !important;
}
#mediq-dashboard .mq-list-menu #vLiveTimeline .v-circle-step.current .v-circle-node>i,
#mediq-dashboard #vLiveTimeline .v-circle-step.current .v-circle-node>i {
  animation: mediq-v29-dot 1s steps(1,end) infinite !important;
}
@keyframes mediq-v29-blink {
  0%, 100% { background:#fff; border-color:#087eaa; box-shadow:0 0 0 4px #fff,0 0 0 5px rgba(0,125,190,.18); }
  50% { background:#087eaa; border-color:#087eaa; box-shadow:0 0 0 4px #fff,0 0 0 11px rgba(0,125,190,.40); }
}
@keyframes mediq-v29-dot {
  0%,100% { background:#087eaa; opacity:1; }
  50% { background:#fff; opacity:1; }
}


/* V30 - focused UI refinements */
#mediq-dashboard .mq-header{display:none!important}
#mediq-dashboard .mq-hero{margin-top:18px!important;min-height:110px!important;overflow:visible!important}
#mediq-dashboard .mq-hero .mq-header-left{position:relative;z-index:3;display:flex!important;flex-wrap:wrap!important;margin:0!important}
#mediq-dashboard .mq-hero .mq-header-welcome{color:#37617c!important}
#mediq-dashboard .mq-breadcrumb{margin-top:14px!important;min-height:48px!important}
#mediq-dashboard .mq-tree-title{margin-top:8px!important}
#mediq-dashboard .mq-assets-actions{order:-1}
#mediq-dashboard .mq-assets-btn.primary,#mediq-dashboard #vProcess,#mediq-dashboard #mqAssetsNew,#mediq-dashboard #vReview,#mediq-dashboard #vCommit{background:#179967!important;border-color:#179967!important;color:#fff!important}
#mediq-dashboard .mq-assets-btn.primary:hover,#mediq-dashboard #vProcess:hover{background:#0c7c51!important}
#mediq-dashboard .v-process-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0}
#mediq-dashboard .v-process-controls label{font-size:12px;font-weight:700;color:#315873;display:flex;flex-direction:column;gap:7px}
#mediq-dashboard .v-process-controls select{width:100%;padding:9px;border:1px solid #cbdfea;border-radius:8px;background:#fff}
#mediq-dashboard .v-process-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:11px}
#mediq-dashboard .v-process-table th,#mediq-dashboard .v-process-table td{padding:10px 7px;border-bottom:1px solid #deebf3;text-align:center;vertical-align:middle}
#mediq-dashboard .v-process-table th{background:#edf6fc;color:#315873}
#mediq-dashboard .v-active-flag{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:5px;background:#16a46b}
#mediq-dashboard .v-active-flag.inactive{background:#e08c44}
#mediq-dashboard .v-process-searchline{margin-top:15px}
@media(max-width:750px){#mediq-dashboard .v-process-controls{grid-template-columns:1fr}#mediq-dashboard .mq-hero{flex-wrap:wrap;gap:10px}}


#mediq-dashboard .mq-tree-row.level-2,#mediq-dashboard .mq-tree-row.level-3,#mediq-dashboard .mq-tree-row.level-4,#mediq-dashboard .mq-tree-children,#mediq-dashboard .mq-tree-separator{display:none!important}
#mediq-dashboard .mq-tree-row.level-1{min-height:48px!important}
#mediq-dashboard .mq-tree-title{font-size:12px!important}


/* V31: five-item primary tree, no former cycle navigation */
#mediq-dashboard .mq-tree-v31{margin-top:18px;gap:8px;overflow-y:auto;}
#mediq-dashboard .mq-tree-v31 .mq-tree-row{min-height:48px;padding:0 13px;font-size:13px;white-space:normal;line-height:1.8;}
#mediq-dashboard .mq-tree-v31 .mq-tree-dot{flex:0 0 6px;}
#mediq-dashboard .mq-tree-v31 .mq-tree-row.active{background:linear-gradient(90deg,#3997c8,#277eaf);}


#mediq-dashboard .v32-review-top{display:inline-flex!important;margin:10px 0 14px!important;align-items:center;justify-content:center}
/* V32 - keep main navigation blue; only operational submit buttons soft green */
#mediq-dashboard .mq-assets-btn.primary,#mediq-dashboard #mqAssetsNew,#mediq-dashboard #vProcess{background:linear-gradient(135deg,#429ed0,#2c88bb)!important;border-color:#328fbe!important;color:#fff!important}
#mediq-dashboard #vReview,#mediq-dashboard #vCommit,#mediq-dashboard .v-dialog .mq-assets-btn.primary{background:#43a981!important;border-color:#43a981!important;color:#fff!important}
#mediq-dashboard #vReview:hover,#mediq-dashboard #vCommit:hover{background:#339671!important}
/* Real back button sits at the left edge of the hero, never in its center */
#mediq-dashboard .mq-hero{position:relative!important;padding-left:122px!important}
#mediq-dashboard #mqBack{position:absolute!important;left:20px!important;top:50%!important;transform:translateY(-50%)!important;margin:0!important;right:auto!important}
/* Hierarchy is revealed only for the currently selected branch */
#mediq-dashboard .mq-tree-v31 .v32-tree-children{display:none!important;margin:0 0 7px!important;padding-right:12px!important}
#mediq-dashboard .mq-tree-v31 .v32-tree-children.open{display:block!important}
#mediq-dashboard .mq-tree-v31 .v32-tree-children .mq-tree-row.level-2{display:flex!important;min-height:35px!important;font-size:11px!important;color:rgba(255,255,255,.85)}
#mediq-dashboard .mq-tree-v31 .v32-tree-children .mq-tree-row.level-2.active{background:#2b83b7!important;color:white!important}
#mediq-dashboard .mq-tree-v31 .mq-tree-row.level-1[data-tree-key="logistics"]:after,
#mediq-dashboard .mq-tree-v31 .mq-tree-row.level-1[data-tree-key="property"]:after{content:'⌄';margin-right:auto;color:#eaf4fa;font-size:16px}
/* Compact right-to-left feature picker: no horizontal scrollbar or overflowing labels */
#mediq-dashboard .v-inline-filters{width:min(485px,calc(100vw - 35px))!important;max-height:min(490px,75vh)!important;overflow-y:auto!important;overflow-x:hidden!important;text-align:right!important;direction:rtl!important}
#mediq-dashboard .v-filter-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:8px!important}
#mediq-dashboard .v-filter-attributes,#mediq-dashboard .v-filter-values{min-width:0!important;overflow:hidden!important}
#mediq-dashboard .v-attribute-list,#mediq-dashboard .v-filter-checklist{overflow-x:hidden!important;max-width:100%!important}
#mediq-dashboard .v-filter-check-option{display:flex!important;direction:rtl!important;flex-direction:row!important;justify-content:flex-start!important;align-items:center!important;gap:6px!important;text-align:right!important;padding:6px!important;min-width:0!important}
#mediq-dashboard .v-filter-check-option input[type=checkbox]{order:0!important;position:static!important;flex:0 0 15px!important;width:15px!important;height:15px!important;margin:0!important}
#mediq-dashboard .v-filter-check-option>span{order:1!important;flex:1 1 0!important;min-width:0!important;max-width:100%!important;overflow-wrap:anywhere!important;word-break:break-word!important;white-space:normal!important;text-align:right!important;line-height:1.7!important}
#mediq-dashboard .v-attribute-choice{white-space:normal!important;overflow-wrap:anywhere!important}
#mediq-dashboard #vFilterFind,#mediq-dashboard #vAttributeSearch{width:100%!important;min-width:0!important}
@media(max-width:520px){#mediq-dashboard .v-filter-columns{grid-template-columns:1fr!important}#mediq-dashboard .v-inline-filters{width:min(360px,calc(100vw - 20px))!important}}


/* V33 – button scope, statuses, request links and review placement */
#mediq-dashboard .mq-assets-btn.primary,
#mediq-dashboard #vProcess,
#mediq-dashboard #mqAssetsNew,
#mediq-dashboard #vEditSave,
#mediq-dashboard .v-dialog .mq-assets-btn.primary:not(#vReview):not(#vCommit){
 background:#3997c8!important;border-color:#3997c8!important;color:#fff!important;
}
#mediq-dashboard #vReview,#mediq-dashboard #vCommit{
 background:#54ae8b!important;border-color:#54ae8b!important;color:#fff!important;
}
#mediq-dashboard #vReview:hover,#mediq-dashboard #vCommit:hover{background:#439e7c!important;border-color:#439e7c!important;}
#mediq-dashboard #vReviewBox{margin:10px 0 16px;max-width:100%;}
#mediq-dashboard #vReviewBox:empty{display:none;}
#mediq-dashboard #vCommit{display:inline-flex;align-items:center;justify-content:center;margin-top:10px;}
#mediq-dashboard .v33-status-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:16px;height:16px;border-radius:50%;font-size:11px;font-weight:900;margin-left:5px;}
#mediq-dashboard .v33-status-icon.is-active{color:#13804a;background:#dbf4e7;border:1px solid #8dd7ab;}
#mediq-dashboard .v33-status-icon.is-inactive{color:#b34c38;background:#fff0ea;border:1px solid #f0b5a5;}
#mediq-dashboard .v33-status-icon.is-unknown{color:#688194;background:#eff4f6;border:1px solid #cbdce6;}
#mediq-dashboard .v33-request-link{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:7px 12px;border:1px solid #c3e0f2;border-radius:8px;background:#eff8ff;color:#176c9e!important;font-size:11px;font-weight:800;text-decoration:none!important;}
#mediq-dashboard .v33-request-link:hover{background:#dff1fc;}


/* V34 scoped visual fixes */
#mediq-dashboard #vProcess:hover,#mediq-dashboard #vProcess:focus-visible,
#mediq-dashboard #mqAssetsNew:hover,#mediq-dashboard #mqAssetsNew:focus-visible,
#mediq-dashboard .mq-assets-btn.primary:hover:not(#vReview):not(#vCommit){background:#287fae!important;border-color:#287fae!important;color:white!important;}
#mediq-dashboard .mq-logo{cursor:pointer}
#mediq-dashboard .mq-logo:focus-visible{outline:2px solid white;outline-offset:3px}
#mediq-dashboard .mq-hero:not(:has(#mqBack[style*="inline-block"])) {padding-left:24px!important}
#mediq-dashboard .mq-hero #mqBack[style*="none"]{display:none!important}
#mediq-dashboard .v-inline-filters{width:min(680px,calc(100vw - 42px))!important;max-height:min(520px,78vh)!important;overflow-x:hidden!important}
#mediq-dashboard .v-filter-columns{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr)!important;gap:14px!important}
#mediq-dashboard .v-filter-attributes,#mediq-dashboard .v-filter-values{overflow:visible!important;min-width:0!important}
#mediq-dashboard .v-filter-check-option,#mediq-dashboard .v-attribute-choice{display:flex!important;flex-direction:row!important;direction:rtl!important;align-items:center!important;justify-content:flex-start!important;gap:9px!important;min-width:0!important;white-space:nowrap!important;padding:6px 8px!important}
#mediq-dashboard .v-filter-check-option input[type=checkbox],#mediq-dashboard .v-attribute-choice .v-attribute-tick{position:static!important;order:0!important;display:inline-flex!important;flex:0 0 16px!important;min-width:16px!important;width:16px!important;height:16px!important;grid-column:auto!important;grid-row:auto!important;margin:0!important}
#mediq-dashboard .v-filter-check-option>span,#mediq-dashboard .v-attribute-choice>span:last-child{order:1!important;display:block!important;flex:1 1 0!important;min-width:0!important;max-width:none!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;word-break:normal!important;overflow-wrap:normal!important;text-align:right!important;grid-column:auto!important;grid-row:auto!important}
#mediq-dashboard .v-filter-checklist,#mediq-dashboard .v-attribute-list{overflow-x:hidden!important;overflow-y:auto!important;max-width:100%!important;scrollbar-width:thin}
#mediq-dashboard .v34-process-loading{min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:22px;text-align:center;color:#366784;border:1px solid #cce2ef;border-radius:12px;background:#f4faff;font-size:13px}
#mediq-dashboard .v34-process-loading small{font-size:11px;color:#61829a;line-height:1.8}
#mediq-dashboard .v34-spinner{width:34px;height:34px;border:4px solid #d2eaf6;border-top-color:#258fc6;border-radius:50%;animation:v34spin .8s linear infinite}
@keyframes v34spin{to{transform:rotate(360deg)}}
#mediq-dashboard #vProcessFilter[aria-busy="true"]{opacity:.65;cursor:progress}
@media(max-width:720px){#mediq-dashboard .v-filter-columns{grid-template-columns:1fr!important}}

</style>
<div class="mq-app">


    <!-- =====================================================
         MAIN
         ===================================================== -->

    <main class="mq-main">


        <!-- HEADER -->

        <header class="mq-header">

            <div class="mq-header-right">

                <div
                    id="mqPageTitle"
                    class="mq-page-title"
                >
                    تأمین
                </div>

                <div
                    id="mqPageDesc"
                    class="mq-page-description"
                >
                    مدیریت فرآیند تأمین تجهیزات پزشکی
                </div>

            </div>


            <div class="mq-header-left">

                <a
                    id="mqEditPageBtn"
                    class="mq-edit-page-btn"
                    href="/pages/editpage.action?pageId=177807112"
                    title="ویرایش صفحه داشبورد"
                >
                    <svg viewBox="0 0 24 24" aria-hidden="true">
                        <path d="M12 20h9"></path>
                        <path d="M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4Z"></path>
                    </svg>
                    <span>ویرایش صفحه</span>
                </a>

                <div class="mq-header-welcome">
                    <span class="mq-welcome-dot"></span>
                    <strong id="mqWelcomeUser">کاربر مدیکیو</strong>
                    <span>خوش آمدید</span>
                </div>
            </div>

        </header>



        <!-- HERO -->

        <section class="mq-hero">

            <div>

                <div
                    id="mqHeroTitle"
                    class="mq-hero-title"
                >
                    مدیریت تجهیزات
                </div>

                <div
                    id="mqHeroDesc"
                    class="mq-hero-desc"
                >
                    بخش موردنظر خود را انتخاب کنید.
                </div>

            </div>


            <button
                id="mqBack"
                class="mq-back-btn"
                type="button"
            >
                بازگشت
            </button>

        </section>



        <!-- BREADCRUMB -->

        <div
            id="mqBreadcrumb"
            class="mq-breadcrumb"
        ></div>



        <!-- DYNAMIC VIEW -->

        <div
            id="mqView"
            class="mq-view"
        >
            <div class="mq-section-head">
                <div>
                    <div class="mq-section-title">مدیریت تجهیزات</div>
                    <div class="mq-section-desc">یکی از حوزه‌های مدیریت تجهیزات را انتخاب کنید.</div>
                </div>
            </div>

            <div class="mq-card-grid">
                <div class="mq-module-card">
                    <div class="mq-module-icon">
                        <svg viewBox="0 0 24 24"><path d="M12 3l7 4-7 4-7-4 7-4z"></path><path d="M5 7v9l7 4 7-4V7"></path><path d="M12 11v9"></path></svg>
                    </div>
                    <div class="mq-module-name">مدیریت اموال</div>
                </div>

                <div class="mq-module-card">
                    <div class="mq-module-icon">
                        <svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="3"></circle><path d="M12 2v3"></path><path d="M12 19v3"></path><path d="M2 12h3"></path><path d="M19 12h3"></path></svg>
                    </div>
                    <div class="mq-module-name">مدیریت تعمیر و نگهداری</div>
                </div>

                <div class="mq-module-card">
                    <div class="mq-module-icon">
                        <svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"></circle><path d="M8 12h8"></path><path d="M12 8v8"></path></svg>
                    </div>
                    <div class="mq-module-name">مدیریت مالی و بهره‌وری</div>
                </div>

                <div class="mq-module-card" data-action="logistics">
                    <div class="mq-module-icon">
                        <svg viewBox="0 0 24 24"><path d="M4 7h16"></path><path d="M6 7l1 13h10l1-13"></path><path d="M9 4h6"></path></svg>
                    </div>
                    <div class="mq-module-name">مدیریت تأمین و لجستیک</div>
                    <div class="mq-module-arrow">‹</div>
                </div>
            </div>
        </div>


    </main>



    <!-- =====================================================
         SIDEBAR
         ===================================================== -->

    <aside class="mq-sidebar">


        <div class="mq-logo">

            <img
                src="/download/attachments/174855060/MediQ%20Heart%20Medical%20Logo.png"
                alt="MediQ"
            >

        </div>


        <div class="mq-life-title">
            چرخه عمر تجهیزات
        </div>


        <div class="mq-life">


            <div
                class="mq-life-item active"
                data-cycle="supply"
            >

                <div class="mq-life-icon">

                    <svg viewBox="0 0 24 24">

                        <path d="M4 7h16"></path>
                        <path d="M6 7l1 13h10l1-13"></path>
                        <path d="M9 4h6"></path>

                    </svg>

                </div>

                تأمین

            </div>



            <div
                class="mq-life-item"
                data-cycle="operation"
            >

                <div class="mq-life-icon">

                    <svg viewBox="0 0 24 24">

                        <circle
                            cx="12"
                            cy="12"
                            r="3"
                        ></circle>

                        <path d="M12 3v3"></path>
                        <path d="M12 18v3"></path>
                        <path d="M3 12h3"></path>
                        <path d="M18 12h3"></path>

                    </svg>

                </div>

                بهره‌برداری

            </div>



            <div
                class="mq-life-item"
                data-cycle="replacement"
            >

                <div class="mq-life-icon">

                    <svg viewBox="0 0 24 24">

                        <path d="M4 7h11"></path>
                        <path d="M12 4l3 3-3 3"></path>

                        <path d="M20 17H9"></path>
                        <path d="M12 14l-3 3 3 3"></path>

                    </svg>

                </div>

                جایگزینی

            </div>



            <div
                class="mq-life-item"
                data-cycle="maintenance"
            >

                <div class="mq-life-icon">

                    <svg viewBox="0 0 24 24">

                        <path
                            d="M14 6a4 4 0 0 0 4 4l-8 8-4-4 8-8z"
                        ></path>

                    </svg>

                </div>

                نگهداری

            </div>


        </div>




        <!-- MEDIQ V31 - FIVE PRIMARY NAVIGATION SECTIONS -->
        <nav class="mq-tree mq-tree-v31" id="mqTree" aria-label="منوی اصلی مدیکیو">
            <div class="mq-tree-row level-1" data-tree-action="equipmentMaintenance" data-tree-key="equipmentMaintenance"><span class="mq-tree-dot"></span><span>مدیریت تعمیر و نگهداری</span><span class="mm-tree-arrow">▾</span></div><div class="mm-tree-children" id="mmTreeChildren"><button type="button" data-mm-tree="overview">داشبورد فعالیت‌ها</button><button type="button" data-mm-tree="plans">برنامه‌ریزی پیشگیرانه</button><button type="button" data-mm-tree="em">ثبت و پیگیری خرابی</button><button type="button" data-mm-tree="suppliers">تعمیرکاران</button><button type="button" data-mm-tree="costing">مدیریت هزینه‌های نت</button><button type="button" data-mm-tree="risk">مدیریت ریسک</button></div>
            <div class="mq-tree-row level-1" data-tree-action="logistics" data-tree-key="logistics"><span class="mq-tree-dot"></span><span>مدیریت تأمین و لجستیک</span></div>
            <div class="mq-tree-children v32-tree-children" data-tree-group="logistics">
                <div class="mq-tree-row level-2" data-v32-nav="consumable"><span class="mq-tree-dot"></span><span>کالاهای مصرفی</span></div>
                <div class="mq-tree-row level-2" data-v32-nav="fixed"><span class="mq-tree-dot"></span><span>دارایی‌های ثابت</span></div>
                <div class="mq-tree-row level-2" data-v32-nav="suppliers"><span class="mq-tree-dot"></span><span>تأمین‌کننده‌ها</span></div>
            </div>
            <div class="mq-tree-row level-1" data-tree-action="property" data-tree-key="property"><span class="mq-tree-dot"></span><span>مدیریت اموال و دارایی‌ها</span></div>
            <div class="mq-tree-children v32-tree-children" data-tree-group="property">
                <div class="mq-tree-row level-2" data-v32-nav="assets"><span class="mq-tree-dot"></span><span>نمای کلی دارایی‌ها</span></div>
                <div class="mq-tree-row level-2" data-v32-nav="handover"><span class="mq-tree-dot"></span><span>اقدامات تحویل</span></div>
            </div>
            <div class="mq-tree-row level-1" data-tree-action="finance" data-tree-key="finance"><span class="mq-tree-dot"></span><span>مدیریت مالی و بهره‌وری</span></div>
            <div class="mq-tree-row level-1" data-tree-action="analysis" data-tree-key="analysis"><span class="mq-tree-dot"></span><span>تحلیل و آنالیز</span></div>
        </nav>

        <div class="mq-sidebar-bottom">

            <div
                id="mqLogout"
                class="mq-logout"
            >
                خروج از حساب کاربری
            </div>

        </div>


    </aside>


</div>

<div id="mqWz" aria-hidden="true">
  <div class="wz-dialog" role="dialog" aria-modal="true" aria-labelledby="wzTitle">
    <div class="wz-head">
      <div class="wz-head-top"><div class="wz-title" id="wzTitle">انتخاب گروه</div><button type="button" class="wz-close" id="wzClose" aria-label="بستن">×</button></div>
      <div class="wz-steps" id="wzSteps"></div>
    </div>
    <div class="wz-body" id="wzBody"></div>
    <div class="wz-msg" id="wzMsg" role="status"></div>
    <div class="wz-foot">
      <div class="wz-foot-r"><button type="button" class="wz-btn" id="wzPrev">مرحله قبل</button></div>
      <div class="wz-foot-l"><button type="button" class="wz-btn primary" id="wzNext">مرحله بعد</button></div>
    </div>
  </div>
</div>

<div id="mqDetail" aria-hidden="true">
  <div class="wz-dialog" role="dialog" aria-modal="true" aria-labelledby="mqDetailTitle">
    <div class="wz-head"><div class="wz-head-top"><div class="wz-title" id="mqDetailTitle">جزئیات دارایی</div><button type="button" class="wz-close" id="mqDetailClose" aria-label="بستن">×</button></div></div>
    <div class="wz-body" id="mqDetailBody"></div>
  </div>
</div>

<div id="mqToast" class="mq-toast"></div>
<style>
/* V38.24: left-column accordion with standalone request action */
#mediq-dashboard #mmContent.mm-with-fixed-side{display:grid!important;grid-template-columns:minmax(260px,290px) minmax(0,1fr)!important;gap:12px!important;align-items:start!important;min-width:0!important;direction:ltr!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>.v-stats,#mediq-dashboard #mmContent.mm-with-fixed-side>#mmActivitiesHeading{grid-column:1 / -1!important;min-width:0!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{float:none!important;grid-column:1!important;grid-row:3 / span 3!important;direction:rtl!important;position:sticky!important;top:12px!important;width:100%!important;min-width:0!important;max-width:100%!important;max-height:min(660px,calc(100vh - 40px))!important;overflow-y:auto!important;overflow-x:hidden!important;margin:0!important;padding:12px!important;box-sizing:border-box!important;z-index:3!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{grid-column:2!important;grid-row:3!important;direction:rtl!important;margin:0!important;min-width:0!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{grid-column:2!important;grid-row:4!important;direction:rtl!important;margin:0!important;min-width:0!important;width:100%!important;overflow:auto!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card{padding:0!important;margin:9px 0!important;overflow:visible!important;border-radius:12px!important;min-width:0!important}
#mediq-dashboard #mmPermanentIssue .mm-accordion-toggle{appearance:none;border:0;background:#f2f8fd;border-radius:11px;padding:12px 11px;width:100%;font-family:inherit;font-size:13px;font-weight:800;color:#125d85;cursor:pointer;display:flex;align-items:center;justify-content:space-between;text-align:right;min-height:43px}
#mediq-dashboard #mmPermanentIssue .mm-accordion-toggle[aria-expanded="true"]{background:#e6f4fc;color:#075b89;border-radius:11px 11px 0 0;border-bottom:1px solid #cbe5f4}
#mediq-dashboard #mmPermanentIssue .mm-accordion-chevron{font-size:21px;transition:transform .2s}
#mediq-dashboard #mmPermanentIssue .mm-accordion-toggle[aria-expanded="true"] .mm-accordion-chevron{transform:rotate(180deg)}
#mediq-dashboard #mmPermanentIssue .mm-accordion-body{padding:11px!important;min-width:0!important;overflow-wrap:anywhere}
#mediq-dashboard #mmPermanentIssue .mm-accordion-body[hidden]{display:none!important}
#mediq-dashboard #mmPermanentIssue .mm-standalone-request{padding:11px!important;background:#f4faff!important;border:1px solid #c6e3f5!important}
#mediq-dashboard #mmPermanentIssue .mm-standalone-request #mmShowRequest{width:100%!important;min-height:42px!important;font-weight:800!important}
#mediq-dashboard #mmPermanentIssue input,#mediq-dashboard #mmPermanentIssue textarea{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
#mediq-dashboard #mmPermanentIssue .mm-accordion-body .mm-stage-grid{max-width:100%!important}
@media(max-width:920px){#mediq-dashboard #mmContent.mm-with-fixed-side{grid-template-columns:minmax(0,1fr)!important}#mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{grid-column:1!important;grid-row:3!important;position:relative!important;max-height:460px!important}#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{grid-column:1!important;grid-row:4!important}#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{grid-column:1!important;grid-row:5!important}}
</style>
<style>
/* MEDIQ V49.8: uploaded original priority icons, embedded locally */
#mediq-dashboard .mq-real-priority-icon {display:inline-block;width:23px;height:23px;object-fit:contain;vertical-align:middle;flex:none}
#mediq-dashboard .muf-priority-badge{display:inline-flex;align-items:center;gap:7px}
#mediq-dashboard .muf-urgency-icon{display:inline-flex;align-items:center;justify-content:center}
#mediq-dashboard .muf-urgency-icon .mq-real-priority-icon{width:22px;height:22px}
#mediq-dashboard .mq-v494-icon{object-fit:contain}
</style>
<script>
(function () {

"use strict";

function mqShowFatal(msg){
    try{
        var d=document.getElementById("mqHeroDesc");
        if(d){d.textContent="خطای اسکریپت: "+msg;d.style.color="#ffb4b4";d.style.direction="ltr";d.style.textAlign="right";}
    }catch(e){}
}


/* ============================================================
   STATE
   ============================================================ */

var state = {

    cycle:
        "supply",

    screen:
        "equipment",

    selectedAssetSection:
        "purchased"

};



/* ============================================================
   ELEMENTS
   ============================================================ */

var view =
    document.getElementById(
        "mqView"
    );


var breadcrumb =
    document.getElementById(
        "mqBreadcrumb"
    );


var heroTitle =
    document.getElementById(
        "mqHeroTitle"
    );


var heroDesc =
    document.getElementById(
        "mqHeroDesc"
    );


var backButton =
    document.getElementById(
        "mqBack"
    );


var pageTitle =
    document.getElementById(
        "mqPageTitle"
    );


var pageDesc =
    document.getElementById(
        "mqPageDesc"
    );


var toast =
    document.getElementById(
        "mqToast"
    );



/* ============================================================
   ICONS
   ============================================================ */

var ICONS = {
    "supply": "<path fill=\"#e5edf1\" stroke=\"none\" d=\"M3 8h12v10H3z\"/><path d=\"M3 8h12v10H3zM15 11h4l3 4v3h-7M19 11v4h3M7 8V4h7v4M10.5 4v4\"/><circle cx=\"7\" cy=\"19\" r=\"2\" fill=\"#fff\"/><circle cx=\"18\" cy=\"19\" r=\"2\" fill=\"#fff\"/><path d=\"M6 12h6m-3-2v4\"/>",
    "maintenance": "<rect x=\"2\" y=\"3\" width=\"16\" height=\"12\" rx=\"2\" fill=\"#e5edf1\"/><path d=\"M4 10h3l2-4 3 7 2-3h2M8 15v4m-4 1h9\"/><path d=\"M21 11a4 4 0 0 1-4 5l-4 5-2-2 5-5a4 4 0 0 1 5-3z\" fill=\"#fff\"/>",
    "property": "<rect x=\"3\" y=\"4\" width=\"14\" height=\"17\" rx=\"2\" fill=\"#e5edf1\"/><rect x=\"7\" y=\"2\" width=\"6\" height=\"4\" rx=\"1\" fill=\"#fff\"/><path d=\"M6 9h8M6 12h4M6 16h3M6 18h3\"/><path d=\"M14 11h5l3 3-7 7-5-5z\" fill=\"#fff\"/><circle cx=\"17\" cy=\"14\" r=\".8\"/>",
    "finance": "<path fill=\"#e5edf1\" d=\"M3 3h13v16H3z\"/><path d=\"M6 15v-4m4 4V8m4 4V5M5 7l4-3 4 1 4-3\"/><ellipse cx=\"18\" cy=\"16\" rx=\"4\" ry=\"2\" fill=\"#fff\"/><path d=\"M14 16v4c0 3 8 3 8 0v-4M14 18c0 3 8 3 8 0\"/>",
    "purchase": "<path d=\"M3 4h3l2 12h11l3-9H7\" fill=\"#e5edf1\"/><circle cx=\"10\" cy=\"20\" r=\"1.5\" fill=\"#fff\"/><circle cx=\"18\" cy=\"20\" r=\"1.5\" fill=\"#fff\"/><path d=\"M10 10h8m-4-3v6M3 9H1M4 12H2\"/>",
    "newAsset": "<path d=\"M3 8l8-4 8 4-8 4z\" fill=\"#e5edf1\"/><path d=\"M3 8v11l8 4 8-4V8M11 12v11M7 6l8 4\"/><circle cx=\"19\" cy=\"5\" r=\"4\" fill=\"#fff\"/><path d=\"M19 3v4m-2-2h4\"/>",
    "edit": "<rect x=\"3\" y=\"3\" width=\"13\" height=\"18\" rx=\"2\" fill=\"#e5edf1\"/><path d=\"M6 7h7M6 11h4M6 15h2\"/><path d=\"M10 18l1-4L20 5l3 3-9 9z\" fill=\"#fff\"/><path d=\"M18 7l3 3M10 18l4-1\"/>",
    "consumable": "<path d=\"M3 11h18v11H3z\" fill=\"#e5edf1\"/><path d=\"M8 11V4h5v7M7 4h7M8 7h5M16 11V2h4v9M16 5h4M3 15h18\"/><path d=\"M10 17h4m-2-2v6\"/>"
};



/* ============================================================
   TOAST
   ============================================================ */

var toastTimer = null;


function showToast(message) {

    if (!toast) {
        return;
    }


    toast.textContent =
        publicMessage(message);


    toast.classList.add(
        "show"
    );


    window.clearTimeout(
        toastTimer
    );


    toastTimer =
        window.setTimeout(
            function () {

                toast.classList.remove(
                    "show"
                );

            },
            2200
        );

}



/* ============================================================
   BREADCRUMB
   ============================================================ */

function buildBreadcrumb(items) {
    items=(items||[]).filter(function(x){return x!=='تأمین';});

    if (!breadcrumb) {
        return;
    }

    var html = "";

    items.forEach(function (item, index) {

        var isLast = index === items.length - 1;

        html +=
            '<span class="' +
            (isLast ? 'mq-bread-item mq-bread-current' : 'mq-bread-item mq-bread-link') +
            '" data-bread-label="' + item + '">' +
            item +
            '</span>';

        if (!isLast) {
            html += '<span class="mq-bread-separator">/</span>';
        }
    });

    breadcrumb.innerHTML = html;

    var links = breadcrumb.querySelectorAll('.mq-bread-link');
    for (var i = 0; i < links.length; i++) {
        links[i].onclick = function () {
            var label = this.getAttribute('data-bread-label');

            if (label === 'تأمین' || label === 'مدیریت تجهیزات') {
                renderEquipment();
            }
            else if (label === 'مدیریت تأمین و لجستیک') {
                renderLogistics();
            }
            else if (label === 'ورود دارایی جدید') {
                state.selectedAssetSection = 'purchased';
                renderAssetSections('newAsset');
            }
            else if (label === 'ویرایش دارایی') {
                renderEditAssetWorkspace();
            }
        };
    }

}


/* ============================================================
   CARD
   ============================================================ */

function moduleCard(
    title,
    icon,
    action,
    clickable
) {

    return (

        '<div class="mq-module-card" ' +

            (
                clickable
                    ? 'data-action="' +
                      action +
                      '"'
                    : ''
            ) +

        '>' +

            '<div class="mq-module-icon">' +

                '<svg viewBox="0 0 24 24">' +

                    icon +

                '</svg>' +

            '</div>' +

            '<div class="mq-module-name">' +
                title +
            '</div>' +

            (
                clickable
                    ? '<div class="mq-module-arrow">‹</div>'
                    : ''
            ) +

        '</div>'

    );

}



/* ============================================================
   SCREEN : EQUIPMENT
   ============================================================ */

function renderEquipment() {

    state.screen =
        "equipment";


    pageTitle.textContent =
        "تأمین";


    pageDesc.textContent =
        "مدیریت فرآیند تأمین تجهیزات پزشکی";


    heroTitle.textContent =
        "مدیریت تجهیزات";


    heroDesc.textContent =
        "حوزه موردنظر را انتخاب کنید.";


    backButton.style.display =
        "none";


    buildBreadcrumb(
        [
            "تأمین",
            "مدیریت تجهیزات"
        ]
    );


    view.innerHTML =

        '<div class="mq-section-head">' +

            '<div>' +

                '<div class="mq-section-title">' +
                    'مدیریت تجهیزات' +
                '</div>' +

                '<div class="mq-section-desc">' +
                    'یکی از حوزه‌های مدیریت تجهیزات را انتخاب کنید.' +
                '</div>' +

            '</div>' +

        '</div>' +


        '<div class="mq-card-grid">' +


            moduleCard(
                "مدیریت تأمین و لجستیک",
                ICONS.supply,
                "logistics",
                true
            ) +


            moduleCard(
                "مدیریت تعمیر و نگهداری",
                ICONS.maintenance,
                "",
                false
            ) +


            moduleCard(
                "مدیریت اموال و دارایی‌ها",
                ICONS.property,
                "",
                false
            ) +


            moduleCard(
                "مدیریت مالی و بهره‌وری",
                ICONS.finance,
                "",
                false
            ) +


        '</div>';


    bindActions();
    mqTreeActivate("equipment");

}



/* ============================================================
   SCREEN : LOGISTICS
   ============================================================ */

function renderLogistics() {

    state.screen =
        "logistics";


    heroTitle.textContent =
        "مدیریت تأمین و لجستیک";


    heroDesc.textContent =
        "عملیات موردنظر را انتخاب کنید.";


    backButton.style.display =
        "inline-block";


    buildBreadcrumb(
        [
            "تأمین",
            "مدیریت تجهیزات",
            "مدیریت تأمین و لجستیک"
        ]
    );


    view.innerHTML =

        '<div class="mq-section-head">' +

            '<div>' +

                '<div class="mq-section-title">' +
                    'مدیریت تأمین و لجستیک' +
                '</div>' +

                '<div class="mq-section-desc">' +
                    'عملیات مرتبط با تأمین و لجستیک تجهیزات' +
                '</div>' +

            '</div>' +

        '</div>' +


        '<div class="mq-action-grid">' +


            actionCard(
                "خرید دارایی",
                "فرآیند خرید دارایی",
                ICONS.purchase,
                "purchase"
            ) +


            actionCard(
                "ورود دارایی جدید",
                "ثبت و تکمیل اطلاعات دارایی جدید",
                ICONS.newAsset,
                "newAsset"
            ) +


            actionCard(
                "ویرایش دارایی",
                "مشاهده و ویرایش اطلاعات دارایی موجود",
                ICONS.edit,
                "editAsset"
            ) +


            actionCard(
                "کالاهای مصرفی",
                "مدیریت کالاهای مصرفی",
                ICONS.consumable,
                "consumable"
            ) +


        '</div>';


    bindActions();
    mqTreeActivate("logistics");

}



function actionCard(
    title,
    subtitle,
    icon,
    action
) {

    return (

        '<div class="mq-action-card" data-action="' +
            action +
        '">' +

            '<div class="mq-action-icon">' +

                '<svg viewBox="0 0 24 24">' +

                    icon +

                '</svg>' +

            '</div>' +

            '<div>' +

                '<div class="mq-action-title">' +
                    title +
                '</div>' +

                '<div class="mq-action-sub">' +
                    subtitle +
                '</div>' +

            '</div>' +

        '</div>'

    );

}



/* ============================================================
   ASSET SECTION SCREEN
   ============================================================ */

function renderAssetSections(mode) {

    state.screen =
        mode;


    var isNew =
        mode ===
        "newAsset";


    var title =
        isNew
            ? "ورود دارایی جدید"
            : "ویرایش دارایی موجود";


    heroTitle.textContent =
        title;


    heroDesc.textContent =
        isNew
            ? "اطلاعات موردنیاز برای ورود دارایی را انتخاب کنید."
            : "بخش موردنظر برای ویرایش دارایی را انتخاب کنید.";


    backButton.style.display =
        "inline-block";


    buildBreadcrumb(
        [
            "تأمین",
            "مدیریت تجهیزات",
            "مدیریت تأمین و لجستیک",
            title
        ]
    );


    view.innerHTML =

        '<div class="mq-list-layout">' +


            '<div class="mq-list-menu">' +


                listOption(
                    "purchased",
                    "لیست دارایی‌ها"
                ) +


                listOption(
                    "technical",
                    "شناسنامه فنی"
                ) +


                listOption(
                    "financial",
                    "شناسنامه مالی"
                ) +


                listOption(
                    "maintenance",
                    "شناسنامه نگهداری و تعمیر"
                ) +


                listOption(
                    "commercial",
                    "شناسنامه بازرگانی"
                ) +


            '</div>' +


            '<div class="mq-preview">' +

                '<div id="mqPreviewContent"></div>' +

            '</div>' +


        '</div>';


    bindSectionOptions();


    renderPreview(
        state.selectedAssetSection
    );

    mqTreeActivate(mode + "-" + state.selectedAssetSection);

}



function listOption(
    key,
    title
) {

    return (

        '<div ' +
            'class="mq-list-option" ' +
            'data-section="' +
            key +
            '">' +

            '<span>' +
                title +
            '</span>' +

            '<span class="mq-option-badge">' +
                '‹' +
            '</span>' +

        '</div>'

    );

}



/* ============================================================
   PREVIEW CONTENT
   ============================================================ */

var SECTION_NAMES = {

    purchased:
        "لیست دارایی‌ها",

    technical:
        "شناسنامه فنی",

    financial:
        "شناسنامه مالی",

    maintenance:
        "شناسنامه نگهداری و تعمیر",

    commercial:
        "شناسنامه بازرگانی"

};


/* ============================================================
   SIMPLE PRESENTATION PAGES
   ============================================================ */

function renderSimplePage(
    title
) {

    heroTitle.textContent =
        title;


    heroDesc.textContent =
        "نمای پرزنت این بخش";


    backButton.style.display =
        "inline-block";


    buildBreadcrumb(
        [
            "تأمین",
            "مدیریت تجهیزات",
            "مدیریت تأمین و لجستیک",
            title
        ]
    );


    view.innerHTML =

        '<div class="mq-empty-cycle">' +

            '<strong>' +
                title +
            '</strong>' +

            '<span>' +
                'این بخش در ادامه فرآیند طراحی تکمیل می‌شود.' +
            '</span>' +

        '</div>';

}



/* ============================================================
   OTHER LIFE CYCLE TABS
   ============================================================ */

function renderOtherCycle(
    key,
    title
) {

    state.cycle =
        key;


    pageTitle.textContent =
        title;


    pageDesc.textContent =
        "چرخه عمر تجهیزات پزشکی";


    heroTitle.textContent =
        title;


    heroDesc.textContent =
        "نمای ساختار این بخش";


    backButton.style.display =
        "none";


    buildBreadcrumb(
        [
            title
        ]
    );


    view.innerHTML =

        '<div class="mq-empty-cycle">' +

            '<strong>' +
                title +
            '</strong>' +

            '<span>' +
                'ساختار این بخش در مرحله بعد طراحی می‌شود.' +
            '</span>' +

        '</div>';

}



/* ============================================================
   BIND MODULE ACTIONS
   ============================================================ */

function bindActions() {

    var elements =
        document.querySelectorAll(
            "#mediq-dashboard [data-action]"
        );


    for (
        var i = 0;
        i < elements.length;
        i++
    ) {

        elements[i].onclick =
            function () {

                var action =
                    this.getAttribute(
                        "data-action"
                    );


                if (
                    action ===
                    "logistics"
                ) {

                    renderLogistics();

                }


                else if (
                    action ===
                    "newAsset"
                ) {

                    renderAssetSections(
                        "newAsset"
                    );

                }


                else if (
                    action ===
                    "editAsset"
                ) {

                    renderEditAssetWorkspace();

                }


                else if (
                    action ===
                    "purchase"
                ) {

                    renderSimplePage(
                        "خرید دارایی"
                    );

                }


                else if (
                    action ===
                    "consumable"
                ) {

                    renderSimplePage(
                        "کالاهای مصرفی"
                    );

                }

            };

    }

}



/* ============================================================
   SECTION OPTIONS
   ============================================================ */

function bindSectionOptions() {

    var options =
        document.querySelectorAll(
            "#mediq-dashboard .mq-list-option"
        );


    for (
        var i = 0;
        i < options.length;
        i++
    ) {

        options[i].onclick =
            function () {

                renderPreview(
                    this.getAttribute(
                        "data-section"
                    )
                );

            };

    }

}



/* ============================================================
   BACK
   ============================================================ */

if (backButton) {

    backButton.onclick =
        function () {


            if (
                state.screen ===
                "logistics"
            ) {

                renderEquipment();

            }


            else if (
                state.screen ===
                "newAsset" ||
                state.screen ===
                "editAsset"
            ) {

                renderLogistics();

            }


            else if (
                state.screen === "property" ||
                state.screen === "equipmentMaintenance" ||
                state.screen === "finance"
            ) {

                renderEquipment();

            }

            else if (
                state.screen === "purchase" ||
                state.screen === "consumable"
            ) {

                renderLogistics();

            }

            else {

                renderLogistics();

            }

        };

}



/* ============================================================
   LIFE CYCLE BUTTONS
   ============================================================ */

var lifeItems =
    document.querySelectorAll(
        "#mediq-dashboard .mq-life-item"
    );


for (
    var i = 0;
    i < lifeItems.length;
    i++
) {

    lifeItems[i].onclick =
        function () {

            var cycle =
                this.getAttribute(
                    "data-cycle"
                );


            for (
                var x = 0;
                x < lifeItems.length;
                x++
            ) {

                lifeItems[x]
                    .classList
                    .remove(
                        "active"
                    );

            }


            this.classList.add(
                "active"
            );


            if (
                cycle ===
                "supply"
            ) {

                state.cycle =
                    "supply";


                renderEquipment();

            }


            else if (
                cycle ===
                "operation"
            ) {

                renderOtherCycle(
                    "operation",
                    "بهره‌برداری"
                );

            }


            else if (
                cycle ===
                "replacement"
            ) {

                renderOtherCycle(
                    "replacement",
                    "جایگزینی"
                );

            }


            else if (
                cycle ===
                "maintenance"
            ) {

                renderOtherCycle(
                    "maintenance",
                    "نگهداری"
                );

            }

        };

}



/* ============================================================
   LOGOUT
   ============================================================ */

var logout =
    document.getElementById(
        "mqLogout"
    );


if (logout) {

    logout.onclick =
        function () {

            window.location.href =
                "/logout.action";

        };

}



/* ============================================================
   CURRENT USER / FULL NAME
   ============================================================ */

(function loadMediQCurrentUser() {

    var fallbackUser = "";

    try {
        if (window.AJS && AJS.Meta) {
            fallbackUser = AJS.Meta.get("remote-user") || "";
        }
    } catch (e) {}

    function setWelcomeName(name) {
        var welcomeUser = document.getElementById("mqWelcomeUser");
        if (welcomeUser && name) {
            welcomeUser.textContent = name;
        }

        /* -------------------------------------------------
           Edit page button - use current Confluence page id
           ------------------------------------------------- */
        var editBtn = document.getElementById("mqEditPageBtn");

        if (editBtn) {

            var currentPageId = "";

            try {
                if (window.AJS && AJS.Meta) {
                    currentPageId = AJS.Meta.get("page-id") || "";
                }
            }
            catch (ignorePageMeta) {}

            if (!currentPageId) {
                try {
                    currentPageId =
                        new URL(window.location.href)
                            .searchParams
                            .get("pageId") || "";
                }
                catch (ignorePageUrl) {}
            }

            if (currentPageId) {
                editBtn.href =
                    "/pages/editpage.action?pageId=" +
                    encodeURIComponent(currentPageId);
            }
        }
    }

    setWelcomeName(fallbackUser || "کاربر مدیکیو");

    try {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "/rest/api/user/current", true);
        xhr.setRequestHeader("Accept", "application/json");
        xhr.onreadystatechange = function () {
            if (xhr.readyState !== 4 || xhr.status < 200 || xhr.status >= 300) return;
            try {
                var user = JSON.parse(xhr.responseText || "{}");
                setWelcomeName(user.displayName || user.fullName || fallbackUser || "کاربر مدیکیو");
            } catch (e) {}
        };
        xhr.send();
    } catch (e) {}

})();


/* ============================================================
   SIDEBAR TREE
   ============================================================ */

function mqTreeOpen(group, open) {
    var el = document.querySelector('#mediq-dashboard [data-tree-group="' + group + '"]');
    var row = document.querySelector('#mediq-dashboard [data-tree-key="' + group + '"]');
    if (el) el.classList.toggle("open", !!open);
    if (row) row.classList.toggle("open", !!open);
}

function mqTreeReset() {
    var rows = document.querySelectorAll("#mediq-dashboard .mq-tree-row");
    for (var i = 0; i < rows.length; i++) {
        rows[i].classList.remove("active");
        rows[i].classList.remove("parent-active");
    }
}

function mqTreeActivate(key) {
    mqTreeReset();
    var group=key;
    if(key==='newAsset'||key==='editAsset'||key==='fixed'||key==='property'||key==='newAsset-purchased'||key==='newAsset-all'||key.startsWith('newAsset-')||key.startsWith('editAsset-'))group='property';
    else if(key==='consumable'||key==='suppliers'||key==='purchase'||key==='logistics')group='logistics';
    else if(key==='propertyHome'||key==='propertyHandover'||key==='propertyAssets')group='property';
    else if(key==='maintenance'||key==='equipmentMaintenance'||key==='costing'||key==='risk'||key==='overview'||key==='plans'||key==='em')group='equipmentMaintenance';
    else if(key==='analysis')group='analysis';
    var active=document.querySelector('#mediq-dashboard #mqTree [data-tree-key="'+group+'"]');
    if(active)active.classList.add('active');
    document.querySelectorAll('#mqTree .mq-tree-row.active').forEach(function(el){if(el!==active)el.classList.remove('active');});
    var maintChildren=document.getElementById('mmTreeChildren');if(maintChildren)maintChildren.classList.toggle('open',group==='equipmentMaintenance');
    var logisticsOpen=group==='logistics', propertyOpen=group==='property';
    var lg=document.querySelector('#mqTree [data-tree-group="logistics"]'),pr=document.querySelector('#mqTree [data-tree-group="property"]');
    if(lg)lg.classList.toggle('open',logisticsOpen);
    if(pr)pr.classList.toggle('open',propertyOpen);
    var sub=key==='propertyHandover'?'handover':key==='propertyAssets'?'assets':key==='suppliers'?'suppliers':key==='consumable'?'consumable':key==='fixed'?'fixed':null;
    document.querySelectorAll('#mqTree [data-v32-nav]').forEach(function(el){el.classList.toggle('active',el.getAttribute('data-v32-nav')===sub);});
}

function mqTreeSimpleEquipmentPage(title, key) {
    state.screen = key;
    pageTitle.textContent = "تأمین";
    pageDesc.textContent = "مدیریت فرآیند تأمین تجهیزات پزشکی";
    heroTitle.textContent = title;
    heroDesc.textContent = "نمای پرزنت این بخش";
    backButton.style.display = "inline-block";
    buildBreadcrumb(["تأمین", "مدیریت تجهیزات", title]);
    view.innerHTML =
        '<div class="mq-empty-cycle">' +
            '<strong>' + title + '</strong>' +
            '<span>این بخش در ادامه فرآیند طراحی تکمیل می‌شود.</span>' +
        '</div>';
    mqTreeActivate(key);
}

function bindTree() {
    var rows = document.querySelectorAll('#mediq-dashboard #mqTree [data-tree-action]');
    rows.forEach(function(row){
        row.onclick=function(){
            var action=this.getAttribute('data-tree-action');
            if(action==='equipmentMaintenance')renderMediqMaintenance();
            else if(action==='logistics')renderLogistics();
            else if(action==='property')mqV48PropertyHome();
            else if(action==='finance')mqTreeSimpleEquipmentPage('مدیریت مالی و بهره‌وری','finance');
            else if(action==='analysis')vAnalysis();
        };
    });
}



/* ============================================================
   MEDIQ CODE-ONLY ENGINE  (standalone)
   Reads/writes through ScriptRunner REST endpoints only.
   ============================================================ */

var CTX = "";
try { if (window.AJS && typeof AJS.contextPath === "function") CTX = AJS.contextPath() || ""; } catch (e0) {}

var API = {
    read:  CTX + "/rest/scriptrunner/latest/custom/mediqGateway",
    write: CTX + "/rest/scriptrunner/latest/custom/mediqGatewayWrite",
    pages: CTX + "/rest/scriptrunner/latest/custom/mediqEnsureAssetPages"
};

var ATTR = {
    groupParent: 6663, titleGroup: 6668, modelTitle: 6626,
    manufacturer: 6627, modelType: 6629, modelGroup: 6630,
    groupPersian: 6683,
    devName: 6265, devId: 6267, assetNo: 6269, purchase: 6271,
    supplier: 6272, department: 6277, status: 6279, model: 6644
};

var STATUS_FA = { "active": "فعال", "inactive": "غیرفعال", "entered-in-error": "دارای خطا" };

function $id(id) { return document.getElementById(id); }
function esc(v) {
    var amp = String.fromCharCode(38);
    return String(v == null ? "" : v).replace(/[&<>"']/g, function (c) {
        var entities = {};
        entities[String.fromCharCode(38)] = amp + "amp;";
        entities[String.fromCharCode(60)] = amp + "lt;";
        entities[String.fromCharCode(62)] = amp + "gt;";
        entities[String.fromCharCode(34)] = amp + "quot;";
        entities[String.fromCharCode(39)] = amp + "#39;";
        return entities[c];
    });
}
function clean(v) { return String(v == null ? "" : v).trim(); }
function norm(v) { return clean(v).toLowerCase(); }

function jfetch(url, opts) {
    opts = opts || {};
    opts.credentials = "same-origin";
    opts.headers = opts.headers || {};
    opts.headers.Accept = "application/json";
    return fetch(url, opts).then(function (r) {
        return r.text().then(function (raw) {
            var data = null;
            try { data = raw ? JSON.parse(raw) : {}; }
            catch (e) { data = /^\d+$/.test(clean(raw)) ? { ok: true, id: clean(raw) } : { ok: r.ok, raw: raw }; }
            if (!r.ok || (data && data.ok === false)) {
                var err = new Error((data && data.message) || ("HTTP " + r.status + (raw ? " - " + raw.slice(0, 200) : "")));
                err.status = r.status;
                throw err;
            }
            return data || {};
        });
    });
}

var cache = {};
var mqPendingReads = {};
function apiGet(kind, force) {
    if(!force && cache[kind]) return Promise.resolve(cache[kind]);
    if(!force && mqPendingReads[kind]) return mqPendingReads[kind];
    function batch(offset,items){
        return jfetch(API.read+"?kind="+encodeURIComponent(kind)+"&limit=500&offset="+offset,{method:"GET"}).then(function(x){
            var next=x.items || [];items=items.concat(next);
            if(x.hasMore){
                if(!next.length) throw new Error("دریافت فهرست کامل نشد.");
                return batch(offset+next.length,items);
            }
            cache[kind]=items;return items;
        });
    }
    var promise=batch(0,[]);
    mqPendingReads[kind]=promise;
    var clearPending=function(){if(mqPendingReads[kind]===promise) delete mqPendingReads[kind];};
    promise.then(clearPending,clearPending);
    return promise;
}

function apiWrite(op, payload) {
    return jfetch(API.write + "?operation=" + encodeURIComponent(op), {
        method: "POST",
        headers: { "Content-Type": "application/json; charset=UTF-8", "X-Atlassian-Token": "no-check" },
        body: JSON.stringify(payload || {})
    });
}
function apiPages(payload) {
    return jfetch(API.pages, {
        method: "POST",
        headers: { "Content-Type": "application/json; charset=UTF-8", "X-Atlassian-Token": "no-check" },
        body: JSON.stringify(payload || {})
    });
}

function attrList(row, id) {
    if (!row || !row.attributes) return [];
    var v = row.attributes[String(id)];
    if (v == null) return [];
    return Array.isArray(v) ? v.map(String) : [String(v)];
}
function attr(row, id) { var l = attrList(row, id); return l.length ? l[0] : ""; }
function findRow(kind, id) {
    var rows = cache[kind] || [];
    for (var i = 0; i < rows.length; i++) if (String(rows[i].id) === String(id)) return rows[i];
    return null;
}
function labelOf(row) { return row ? (row.label || row.key || row.id) : ""; }
function groupLabel(row) {
    var p = attr(row, ATTR.groupPersian);
    return p ? (row.key ? row.key + " - " + p : p) : labelOf(row);
}

/* ---------------- Assets list / detail ---------------- */

function statusText(v) {
    v = clean(v);
    if (!v) return "—";
    if (STATUS_FA[norm(v)]) return STATUS_FA[norm(v)];
    return /^\d+$/.test(v) ? "—" : v;
}

var ASSET_PAGE = { page:1, size:"10", request:0 };
function filterAssetItems(items,query){
    query=searchNorm(query);
    return items.filter(function(row){
        if(!query) return true;
        var values=[row.key,row.label,row.id,statusText(attr(row,ATTR.status))];
        Object.keys(row.attributes || {}).forEach(function(k){values=values.concat(attrList(row,k));});
        return searchNorm(values.join(" ")).indexOf(query)>=0;
    });
}
function searchNorm(value){
    return latinDigits(value).replace(/ي/g,"ی").replace(/ك/g,"ک").toLowerCase().replace(/\s+/g," ").trim();
}
function assetPageSlice(items,page,size){
    var count=size==="all"?Math.max(items.length,1):Number(size), pages=Math.max(1,Math.ceil(items.length/count));
    page=Math.min(Math.max(1,page),pages);
    return {items:items.slice((page-1)*count,page*count),page:page,pages:pages,start:items.length?(page-1)*count+1:0,end:Math.min(page*count,items.length)};
}
function loadAssets(hostId, searchId) {
    var host=$id(hostId); if(!host) return;
    var request=++ASSET_PAGE.request;
    host.innerHTML='<div class="wz-loading">در حال دریافت اطلاعات دارایی‌ها...</div>';
    apiGet("equipment",true).then(function(items){
        if(request!==ASSET_PAGE.request || !$id(hostId)) return;
        var input=searchId?$id(searchId):null;
        function paint(){
            host=$id(hostId);if(!host) return;
            var filtered=filterAssetItems(items,input?input.value:""), part=assetPageSlice(filtered,ASSET_PAGE.page,ASSET_PAGE.size);
            ASSET_PAGE.page=part.page;
            host.innerHTML='<div class="mq-tbl-wrap"><table class="mq-tbl"><thead><tr><th>شناسه دستگاه</th><th>نام دستگاه</th><th>شماره اموال</th><th>وضعیت</th><th>عملیات</th></tr></thead><tbody>'+part.items.map(function(o){
                return '<tr><td>'+esc(attr(o,ATTR.devId)||o.key||o.id)+'</td><td>'+esc(attr(o,ATTR.devName)||o.label||"—")+'</td><td>'+esc(attr(o,ATTR.assetNo)||"—")+'</td><td>'+esc(statusText(attr(o,ATTR.status)))+'</td><td><button type="button" class="mq-assets-btn" data-detail="'+esc(o.id)+'">مشاهده</button></td></tr>';
            }).join("")+(filtered.length?'':'<tr><td colspan="5">موردی یافت نشد.</td></tr>')+'</tbody></table></div>'+
            '<div class="mq-list-controls"><label>تعداد نمایش <select id="mqPageSize">'+["10","20","50","all"].map(function(n){return '<option value="'+n+'"'+(n===ASSET_PAGE.size?' selected':'')+'>'+(n==="all"?'همه':n)+'</option>';}).join("")+'</select></label><span>'+part.start+' تا '+part.end+' از '+filtered.length+' نتیجه — کل دارایی‌ها: '+items.length+'</span></div>'+
            '<div class="mq-list-controls"><button type="button" class="mq-assets-btn" id="mqPagePrev"'+(part.page===1?' disabled':'')+'>قبلی</button><span>صفحه '+part.page+' از '+part.pages+'</span><button type="button" class="mq-assets-btn" id="mqPageNext"'+(part.page===part.pages?' disabled':'')+'>بعدی</button></div>';
            $id("mqPageSize").onchange=function(){ASSET_PAGE.size=this.value;ASSET_PAGE.page=1;paint();};
            $id("mqPagePrev").onclick=function(){ASSET_PAGE.page--;paint();};
            $id("mqPageNext").onclick=function(){ASSET_PAGE.page++;paint();};
        }
        if(input)input.oninput=function(){ASSET_PAGE.page=1;paint();};
        paint();
    }).catch(function(e){if(request===ASSET_PAGE.request && $id(hostId))$id(hostId).innerHTML='<div class="mq-assets-message">خطا در دریافت اطلاعات: '+esc(publicMessage(e.message))+'</div>';});
}

function refName(kind, id) {
    id = clean(id);
    if (!id) return "—";
    var r = findRow(kind, id);
    return r ? labelOf(r) : id;
}

function openDetail(id) {
    var row = findRow("equipment", id);
    if (!row) return;
    var box = $id("mqDetailBody");
    $id("mqDetailTitle").textContent = attr(row, ATTR.devName) || labelOf(row);
    box.innerHTML = '<div class="wz-loading">در حال بارگذاری...</div>';
    $id("mqDetail").classList.add("open");
    Promise.all([
        apiGet("supplier").catch(function () { return []; }),
        apiGet("department"),
        loadExtraEquipment(),
        apiGet("models").catch(function () { return []; })
    ]).then(function () {
        var data = [
            ["شناسه دستگاه", attr(row, ATTR.devId)],
            ["نام دستگاه", attr(row, ATTR.devName)],
            ["مدل", refName("models", attr(row, ATTR.model))],
            ["شماره اموال", attr(row, ATTR.assetNo)],
            ["تاریخ خرید", displayJalali(attr(row, ATTR.purchase), false)],
            ["فروشنده", refName("supplier", attr(row, ATTR.supplier))],
            ["بخش بهره‌بردار", refName("department", attr(row, ATTR.department))],
            ["وضعیت", statusText(attr(row, ATTR.status))],
            ["کد سامانه", row.key]
        ];
        EQUIPMENT_FIELDS.forEach(function(f){
            var values=attrList(row,f[0]);
            if(f[3]==="ref") values=values.map(function(x){return refName(f[4],x);});
            if(f[3]==="boolean") values=values.map(function(x){return x==="true"?"بله":x==="false"?"خیر":x;});
            if(f[3] === "date" || f[3] === "datetime-local") values=values.map(function(v){return displayJalali(v,f[3] === "datetime-local");});
            data.push([f[2],values.join("، ")]);
        });
        box.innerHTML = data.map(function (d) {
            return '<div class="dt-row"><span>' + esc(d[0]) + "</span><span>" + esc(d[1] || "—") + "</span></div>";
        }).join("");
    });
}
function closeDetail() { $id("mqDetail").classList.remove("open"); }

function renderEditAssetWorkspace() {
    state.selectedAssetSection = "purchased";
    renderAssetSections("editAsset");
}

function renderPreview(section) {
    state.selectedAssetSection = section;
    if (state.screen === "newAsset" || state.screen === "editAsset") mqTreeActivate(state.screen + "-" + section);
    var box = $id("mqPreviewContent");
    if (!box) return;
    var title = SECTION_NAMES[section] || "شناسنامه";
    var isNew = state.screen === "newAsset";
    if (section === "purchased") {
        box.innerHTML =
            '<div class="mq-preview-title">لیست دارایی‌ها</div>' +
            '<div class="mq-preview-description">دارایی‌های ثبت‌شده در سامانه</div>' +
            '<div class="mq-assets-head">' +
                '<input id="mqAssetSearch" class="mq-edit-search" type="search" placeholder="جستجو در دارایی‌ها…" aria-label="جستجو در دارایی‌ها">' +
                '<div class="mq-assets-actions">' +
                    '<button type="button" class="mq-assets-btn" id="mqAssetsRefresh">به‌روزرسانی لیست</button>' +
                    (isNew ? '<button type="button" class="mq-assets-btn primary" id="mqAssetsNew">ثبت دارایی جدید</button>' : "") +
                "</div></div>" +
            '<div id="mqAssetsHost" class="mq-assets-host"></div>';
        var nb = $id("mqAssetsNew"); if (nb) nb.onclick = openWizard;
        $id("mqAssetsRefresh").onclick = function () { loadAssets("mqAssetsHost", "mqAssetSearch"); };
        loadAssets("mqAssetsHost", "mqAssetSearch");
    } else {
        box.innerHTML =
            '<div class="mq-preview-title">' + esc(title) + "</div>" +
            '<div class="mq-preview-description">این بخش در حال آماده‌سازی است.</div>' +
            '<div class="mq-demo-box"><div class="mq-demo-icon">✓</div><div class="mq-demo-text">' + esc(title) + "</div></div>";
    }
    var opts = document.querySelectorAll("#mediq-dashboard .mq-list-option");
    for (var i = 0; i < opts.length; i++) opts[i].classList.toggle("active", opts[i].getAttribute("data-section") === section);
}

/* ---------------- Registration wizard ---------------- */

var W = { open: false, step: 0, busy: false, token: 0, sel: { group: "", title: "", model: "" }, draft: {} };

var STEPS = [
    { key: "group", kind: "groups", noun: "گروه",
      filter: function (r) { return true; }, label: groupLabel },
    { key: "title", kind: "titles", noun: "عنوان دستگاه",
      filter: function (r) { return !W.sel.group || attrList(r, ATTR.titleGroup).indexOf(String(W.sel.group)) >= 0; }, label: labelOf },
    { key: "model", kind: "models", noun: "مدل",
      filter: function (r) { return !W.sel.title || attrList(r, ATTR.modelTitle).indexOf(String(W.sel.title)) >= 0; }, label: labelOf }
];
var STEP_NAMES = ["گروه", "عنوان دستگاه", "مدل", "دستگاه"];

function publicMessage(value){
    return String(value == null ? "" : value).replace(/Jira\s*Assets?/gi,"سامانه دارایی‌ها").replace(/Confluence/gi,"سامانه مستندات").replace(/ScriptRunner/gi,"سرویس").replace(/\bAssets?\b/gi,"دارایی").replace(/\bJira\b/gi,"سامانه").replace(/جیرا|کانفلوئنس/g,"سامانه").replace(/\bEndpoint\b/gi,"سرویس");
}
function wzMsg(text, isErr) {
    var el = $id("wzMsg");
    if (!el) return;
    el.textContent = publicMessage(text);
    el.className = "wz-msg" + (isErr ? " err" : "");
}
function wzBusy(flag) {
    W.busy = !!flag;
    var b = document.querySelectorAll("#mqWz button:not(.wz-close)");
    for (var i = 0; i < b.length; i++) b[i].disabled = !!flag;
    if (!flag) wzHeader();
}
function wzHeader() {
    $id("wzTitle").textContent = W.step === 3 ? "ثبت دستگاه" : "انتخاب " + STEP_NAMES[W.step];
    $id("wzSteps").innerHTML = STEP_NAMES.map(function (n, i) {
        var c = i === W.step ? " active" : (i < W.step ? " done" : "");
        var chosen = i < 3 ? findRow(STEPS[i].kind,W.sel[STEPS[i].key]) : null;
        var chosenLabel = chosen ? STEPS[i].label(chosen) : (i === 3 ? clean(W.draft.deviceId) : "");
        return '<div class="wz-step' + c + '"><div class="wz-step-heading"><b>'+(i+1)+'</b><span>'+esc(n)+'</span></div><small class="wz-step-value" title="'+esc(chosenLabel)+'">'+esc(chosenLabel || "—")+'</small></div>';
    }).join("");
    var prev = $id("wzPrev"), next = $id("wzNext");
    prev.style.visibility = W.step === 0 ? "hidden" : "visible";
    next.textContent = W.step === 3 ? "ثبت دستگاه" : "مرحله بعد";
}

function openWizard() {
    W.open = true; W.step = 0; W.busy = false;
    W.sel = { group: "", title: "", model: "" }; W.draft = {}; W.segment=0;
    $id("mqWz").classList.add("open");
    $id("mqWz").setAttribute("aria-hidden", "false");
    wzPaint();
}
function closeWizard() {
    mqCloseDatePopover();
    W.open = false;
    $id("mqWz").classList.remove("open");
    $id("mqWz").setAttribute("aria-hidden", "true");
}


var JALALI_FORMAT = new Intl.DateTimeFormat("en-US-u-ca-persian-nu-latn",{year:"numeric",month:"numeric",day:"numeric",timeZone:"UTC"});
var JALALI_MONTHS=["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"];
function latinDigits(value){return String(value==null?"":value).replace(/[۰-۹]/g,function(c){return String(c.charCodeAt(0)-1776);}).replace(/[٠-٩]/g,function(c){return String(c.charCodeAt(0)-1632);});}
function jalaliToday(){var d=new Date();return persianParts(new Date(Date.UTC(d.getFullYear(),d.getMonth(),d.getDate())));}
function padDate(n){return String(n).padStart(2,"0");}
function persianParts(date){var p={};JALALI_FORMAT.formatToParts(date).forEach(function(x){if(x.type!=="literal")p[x.type]=Number(x.value);});return {y:p.year,m:p.month,d:p.day};}
function jalaliToISO(y,m,d){
    if(y<1200 || y>1600 || m<1 || m>12 || d<1 || d>31)throw new Error("تاریخ شمسی معتبر نیست.");
    var low=Math.floor(Date.UTC(y+621,0,1)/86400000),high=Math.floor(Date.UTC(y+623,0,1)/86400000),target=y*10000+m*100+d;
    while(low<=high){var middle=Math.floor((low+high)/2),date=new Date(middle*86400000),p=persianParts(date),key=p.y*10000+p.m*100+p.d;
        if(key===target)return date.toISOString().slice(0,10);
        if(key<target)low=middle+1;else high=middle-1;
    }
    throw new Error("روز انتخاب‌شده در این ماه وجود ندارد.");
}
function parseJalali(value,withTime){
    var raw=latinDigits(value).trim();if(!raw)return "";
    var match=raw.match(/^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})(?:[ T]+(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/);
    if(!match)throw new Error(withTime?"تاریخ و ساعت را مانند ۱۴۰۵/۰۷/۲۸ ۱۴:۳۰ وارد کنید.":"تاریخ را مانند ۱۴۰۵/۰۷/۲۸ وارد کنید.");
    var iso=jalaliToISO(Number(match[1]),Number(match[2]),Number(match[3]));
    if(withTime){var hh=Number(match[4]||0),mm=Number(match[5]||0),ss=Number(match[6]||0);if(hh>23 || mm>59 || ss>59)throw new Error("ساعت معتبر نیست.");return iso+"T"+padDate(hh)+":"+padDate(mm)+":"+padDate(ss);}
    if(match[4]!=null)throw new Error("این فیلد فقط تاریخ می‌پذیرد.");
    return iso;
}
function displayJalali(value,withTime){
    var raw=latinDigits(value).trim();if(!raw)return "";
    var match=raw.match(/^(\d{4})[-\/](\d{1,2})[-\/](\d{1,2})(?:[ T](\d{2}):(\d{2}))?/);
    if(!match)return raw;
    if(Number(match[1])<1700)return raw.replace(/-/g,"/");
    var date=new Date(Date.UTC(Number(match[1]),Number(match[2])-1,Number(match[3]))),p=persianParts(date);
    return p.y+"/"+padDate(p.m)+"/"+padDate(p.d)+(withTime?" "+(match[4]||"00")+":"+(match[5]||"00"):"");
}
function jalaliField(id,label,value,withTime,required){
    return '<div class="wz-field mq-jdate"><label for="'+id+'">'+esc(label)+(required?' *':'')+'</label><div class="wz-inline"><input type="text" dir="ltr" id="'+id+'" data-jalali="'+(withTime?'time':'date')+'" value="'+esc(displayJalali(value,withTime))+'" placeholder="'+(withTime?'۱۴۰۵/۰۷/۲۸ ۱۴:۳۰':'۱۴۰۵/۰۷/۲۸')+'" autocomplete="off"><button type="button" class="wz-plus" data-jcalendar="'+id+'" aria-label="انتخاب تاریخ شمسی">▦</button></div><div class="mq-jcalendar" id="'+id+'Calendar" hidden></div></div>';
}
function gregorianInput(id,withTime){var el=$id(id);return el?parseJalali(el.value,withTime):"";}
function validateJalaliInputs(){
    var inputs=document.querySelectorAll('#wzBody [data-jalali]');
    for(var i=0;i<inputs.length;i++)try{parseJalali(inputs[i].value,inputs[i].dataset.jalali==="time");inputs[i].setCustomValidity("");}catch(e){inputs[i].setCustomValidity(e.message);revealEquipmentField(inputs[i]);inputs[i].focus();wzMsg(e.message,true);return false;}
    return true;
}
var MQ_DATE_POPOVER = null;
function mqDatePopoverRect(anchor,width,height,bounds){
    var gap=7,pad=10,leftEdge=bounds.left+pad,rightEdge=bounds.right-pad,topEdge=bounds.top+pad,bottomEdge=bounds.bottom-pad;
    var available=Math.max(1,bottomEdge-topEdge),shownHeight=Math.min(height,available);
    var below=bottomEdge-anchor.bottom-gap,above=anchor.top-gap-topEdge;
    var top=anchor.bottom+gap;
    if(below<shownHeight && above>=shownHeight)top=anchor.top-gap-shownHeight;
    // If neither side fits, overlap the fields while retaining the full calendar height.
    top=Math.max(topEdge,Math.min(top,bottomEdge-shownHeight));
    return {left:Math.max(leftEdge,Math.min(anchor.right-width,rightEdge-width)),top:top,maxHeight:available};
}
function mqPositionDatePopover(){
    var active=MQ_DATE_POPOVER;if(!active)return;
    if(!active.anchor.isConnected || !active.box.isConnected){mqCloseDatePopover();return;}
    var body=active.anchor.closest("#vEditBody") || $id("wzBody"),area=body.getBoundingClientRect();
    var bounds={left:Math.max(0,area.left),right:Math.min(window.innerWidth,area.right),top:Math.max(0,area.top),bottom:Math.min(window.innerHeight,area.bottom)};
    var width=Math.min(330,Math.max(1,bounds.right-bounds.left-20));
    active.box.style.width=width+"px";
    active.box.style.maxHeight="none";
    var field=active.anchor.closest(".wz-inline") || active.anchor;
    var rect=mqDatePopoverRect(field.getBoundingClientRect(),width,active.box.scrollHeight+2,bounds);
    active.box.style.left=rect.left+"px";active.box.style.top=rect.top+"px";active.box.style.maxHeight=rect.maxHeight+"px";
}
function mqCloseDatePopover(){
    var active=MQ_DATE_POPOVER;if(!active)return;MQ_DATE_POPOVER=null;
    active.box.hidden=true;active.box.classList.remove("mq-date-floating");
    active.box.removeAttribute("style");active.anchor.setAttribute("aria-expanded","false");
    if(active.parent.isConnected)active.parent.appendChild(active.box);else active.box.remove();
}
function bindJalaliInputs(){
    document.querySelectorAll('#wzBody [data-jcalendar],#vEditBody [data-jcalendar]').forEach(function(button){
        button.setAttribute("aria-expanded","false");button.setAttribute("aria-controls",button.dataset.jcalendar+"Calendar");
        button.onclick=function(){
            var id=this.dataset.jcalendar,box=$id(id+'Calendar'),same=MQ_DATE_POPOVER && MQ_DATE_POPOVER.box===box;
            mqCloseDatePopover();if(same)return;
            var p=jalaliToday(),raw=latinDigits($id(id).value),match=raw.match(/^(\d{4})\/(\d{1,2})/);
            if(match && Number(match[1])>=1200 && Number(match[1])<=1600 && Number(match[2])>=1 && Number(match[2])<=12){p.y=Number(match[1]);p.m=Number(match[2]);}
            MQ_DATE_POPOVER={box:box,anchor:this,parent:box.parentNode};
            box.classList.add("mq-date-floating");(this.closest("#vDialog") ? this.closest(".v-dialog") : $id("mqWz")).appendChild(box);
            box.hidden=false;this.setAttribute("aria-expanded","true");
            paintJalaliCalendar(id,p.y,p.m);mqPositionDatePopover();
            box.onclick=function(){if(box.hidden)mqCloseDatePopover();else mqPositionDatePopover();};
        };
    });
}
document.addEventListener("pointerdown",function(e){var active=MQ_DATE_POPOVER;if(active && !active.box.contains(e.target) && !active.anchor.contains(e.target))mqCloseDatePopover();},true);
document.addEventListener("keydown",function(e){if(e.key==="Escape" && MQ_DATE_POPOVER){mqCloseDatePopover();e.preventDefault();e.stopImmediatePropagation();}},true);
document.addEventListener("scroll",function(e){var active=MQ_DATE_POPOVER;if(active && !active.box.contains(e.target))mqCloseDatePopover();},true);
window.addEventListener("resize",mqPositionDatePopover);
function paintJalaliCalendar(id,y,m){
    var box=$id(id+'Calendar'),first=new Date(jalaliToISO(y,m,1)+"T00:00:00Z"),offset=(first.getUTCDay()+1)%7,days=m<=6?31:30;
    if(m===12){try{jalaliToISO(y,12,30);}catch(e){days=29;}}
    box.innerHTML='<div class="mq-jcal-head"><button type="button" data-month="-1">ماه قبل</button><b>'+JALALI_MONTHS[m-1]+' '+y+'</b><button type="button" data-month="1">ماه بعد</button></div><div class="mq-jcal-grid">'+["ش","ی","د","س","چ","پ","ج"].map(function(x){return '<span>'+x+'</span>';}).join("")+Array(offset).fill('<span></span>').join("")+Array.from({length:days},function(_,i){return '<button type="button" data-day="'+(i+1)+'">'+(i+1)+'</button>';}).join("")+'</div><button type="button" data-today>امروز</button> <button type="button" data-clear>پاک کردن</button>';
    box.querySelectorAll('[data-month]').forEach(function(b){b.onclick=function(){var next=m+Number(this.dataset.month),year=y;if(next<1){next=12;year--;}if(next>12){next=1;year++;}if(year>=1200 && year<=1600)paintJalaliCalendar(id,year,next);};});
    function select(p){var el=$id(id),time=latinDigits(el.value).match(/[ T](\d{1,2}:\d{2}(?::\d{2})?)$/);el.value=p.y+'/'+padDate(p.m)+'/'+padDate(p.d)+(el.dataset.jalali==='time'?' '+(time?time[1]:'00:00'):'');el.setCustomValidity('');box.hidden=true;el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));}
    box.querySelectorAll('[data-day]').forEach(function(b){b.onclick=function(){select({y:y,m:m,d:Number(this.dataset.day)});};});
    box.querySelector('[data-today]').onclick=function(){select(jalaliToday());};
    box.querySelector('[data-clear]').onclick=function(){var el=$id(id);el.value='';el.setCustomValidity('');el.dispatchEvent(new Event('input',{bubbles:true}));el.dispatchEvent(new Event('change',{bubbles:true}));box.hidden=true;};
}

function field(id, label, value, type, req) {
    if (type === "date" || type === "datetime-local") return jalaliField(id,label,value,type === "datetime-local",req);
    return '<div class="wz-field"><label for="' + id + '">' + esc(label) + (req ? " *" : "") + '</label><input id="' + id + '" type="' + (type || "text") + '" value="' + esc(value || "") + '"></div>';
}
function selectOptions(rows, selected, labelFn) {
    return '<option value="">انتخاب کنید</option>' + rows.map(function (r) {
        return '<option value="' + esc(r.id) + '"' + (String(r.id) === String(selected) ? " selected" : "") + ">" + esc((labelFn || labelOf)(r)) + "</option>";
    }).join("");
}
function selectField(id, label, rows, selected, req, withPlus) {
    return '<div class="wz-field"><label for="' + id + '">' + esc(label) + (req ? " *" : "") + "</label>" +
        (withPlus ? '<div class="wz-inline"><select id="' + id + '">' + selectOptions(rows, selected) + '</select><button type="button" class="wz-plus" data-plus="' + id + '" title="ثبت جدید" aria-label="ثبت جدید">+</button></div>' +
                    '<div class="wz-mini" id="' + id + 'Mini" hidden><input type="text" id="' + id + 'MiniName" placeholder="نام جدید"><button type="button" class="wz-primary" data-miniok="' + id + '">ثبت</button></div>'
                  : '<select id="' + id + '">' + selectOptions(rows, selected) + "</select>") +
        "</div>";
}

function wzPaint() {
    mqCloseDatePopover();
    wzHeader();
    var body = $id("wzBody");
    var token = ++W.token;
    wzMsg("");
    if (W.step === 3) return paintEquipment(token);
    body.innerHTML = '<div class="wz-loading">در حال دریافت اطلاعات...</div>';
    var cfg = STEPS[W.step];
    var need = [apiGet(cfg.kind)];
    if (W.step === 0) need.push(Promise.resolve([])); 
    Promise.all(need).then(function (v) {
        if (token !== W.token) return;
        var all = v[0], rows = all.filter(cfg.filter);
        var html =
            '<div class="wz-label">' + esc(cfg.noun) + "</div>" +
            '<div class="wz-selected" id="wzSel"></div>' +
            '<div class="wz-picker" id="wzPicker"><input class="wz-search" id="wzSearch" type="text" placeholder="جستجو..." autocomplete="off"><div class="wz-list" id="wzList"></div></div>' +
            '<button type="button" class="wz-link" id="wzToggle">+ ثبت ' + esc(cfg.noun) + " جدید</button>" +
            '<div class="wz-create" id="wzCreate" hidden>' + createHtml(cfg) + "</div>";
        body.innerHTML = html;
        drawPicker(cfg, rows, "");
        $id("wzSearch").oninput = function () { drawPicker(cfg, rows, this.value); };
        $id("wzList").onclick = function (e) {
            var toggle=e.target.closest("[data-group-toggle]");
            if(toggle){var groupId=toggle.getAttribute("data-group-toggle");GROUP_COLLAPSED[groupId]=!GROUP_COLLAPSED[groupId];drawPicker(cfg,rows,$id("wzSearch").value);return;}
            if(W.busy)return;
            var b = e.target.closest(".wz-item"); if (!b) return;
            W.sel[cfg.key] = b.getAttribute("data-id");
            if (cfg.key === "group") { W.sel.title = ""; W.sel.model = ""; }
            if (cfg.key === "title") { W.sel.model = ""; }
            drawPicker(cfg, rows, $id("wzSearch").value);
            wzHeader();
        };
        $id("wzToggle").onclick = function () {
            var c = $id("wzCreate"); c.hidden = !c.hidden;
            if (!c.hidden) { var f = c.querySelector("input,select"); if (f) f.focus(); }
        };
        bindCreate(cfg);
    }).catch(function (e) { if (token === W.token) { body.innerHTML = ""; wzMsg(e.message, true); } });
}

var GROUP_COLLAPSED = {};
function groupTreeData(rows){
    var byId=Object.create(null), parent=Object.create(null), children=Object.create(null), roots=[];
    rows.forEach(function(r){byId[String(r.id)]=r;children[String(r.id)]=[];});
    rows.forEach(function(r){
        var id=String(r.id),p=attr(r,ATTR.groupParent),seen={};
        while(p && byId[p] && !seen[p]){seen[p]=true;p=attr(byId[p],ATTR.groupParent);}
        var direct=attr(r,ATTR.groupParent);
        if(!direct || !byId[direct] || seen[id] || (p && seen[p]))direct="";
        parent[id]=direct;
        if(direct)children[direct].push(r);else roots.push(r);
    });
    return {byId:byId,parent:parent,children:children,roots:roots};
}
function renderGroupTree(rows,query,selected){
    var tree=groupTreeData(rows),q=searchNorm(query),keep=Object.create(null);
    rows.forEach(function(r){if(!q || searchNorm(groupLabel(r)).indexOf(q)>=0){var id=String(r.id),seen={};while(id && !seen[id]){seen[id]=true;keep[id]=true;id=tree.parent[id];}}});
    function render(nodes){return nodes.filter(function(r){return keep[String(r.id)];}).map(function(r){
        var id=String(r.id),kids=tree.children[id].filter(function(x){return keep[String(x.id)];}),closed=!q && GROUP_COLLAPSED[id],has=kids.length>0;
        return '<li role="treeitem" aria-selected="'+(String(selected)===id?'true':'false')+'"'+(has?' aria-expanded="'+(!closed)+'"':'')+'><div class="wz-tree-line">'+
            (has?'<button type="button" class="wz-tree-toggle" data-group-toggle="'+esc(id)+'" aria-label="'+(closed?'باز کردن':'بستن')+' '+esc(groupLabel(r))+'">'+(closed?'+':'−')+'</button>':'<span class="wz-tree-spacer"></span>')+
            '<button type="button" class="wz-item'+(String(selected)===id?' sel':'')+'" data-id="'+esc(id)+'">'+esc(groupLabel(r))+'</button></div>'+
            (has && !closed?'<ul role="group">'+render(kids)+'</ul>':'')+'</li>';
    }).join("");}
    var body=render(tree.roots);
    return body?'<ul class="wz-group-tree" role="tree" aria-label="درخت گروه‌ها">'+body+'</ul>':'<div class="wz-empty">گروهی یافت نشد.</div>';
}
function drawPicker(cfg, rows, q) {
    var list = $id("wzList"); if (!list) return;
    q = norm(q);
    var sel = W.sel[cfg.key], html = "", n = 0;
    rows.forEach(function (r) {
        var l = cfg.label(r);
        if (q && norm(l).indexOf(q) < 0) return;
        n++;
        html += '<button type="button" class="wz-item' + (String(r.id) === String(sel) ? " sel" : "") + '" data-id="' + esc(r.id) + '">' + esc(l) + "</button>";
    });
    list.innerHTML = cfg.key === "group" ? renderGroupTree(rows,q,sel) : n ? html : '<div class="wz-empty">' + (rows.length ? "موردی با این عبارت پیدا نشد." : "موردی برای نمایش وجود ندارد؛ از دکمه‌ی ثبت جدید استفاده کنید.") + "</div>";
    var box = $id("wzSel"), cur = findRow(cfg.kind, sel);
    box.className = "wz-selected" + (cur ? " has" : "");
    box.textContent = cur ? "انتخاب‌شده: " + cfg.label(cur) : "هنوز " + cfg.noun + "ی انتخاب نشده است.";
}

function groupParentOptions(groups){
    var tree=groupTreeData(groups),out=[];
    function walk(rows,path){rows.forEach(function(r){var parts=path.concat([attr(r,ATTR.groupPersian)||labelOf(r)]);out.push({id:r.id,label:parts.join(" / ")});walk(tree.children[String(r.id)],parts);});}
    walk(tree.roots,[]);return out;
}
function createHtml(cfg) {
    if (cfg.key === "group") {
        var groups = cache.groups || [];
        return "<strong>ثبت گروه جدید</strong>" + field("wzName", "نام گروه", "", "text", true) +
            selectField("wzParent", "گروه والد", groupParentOptions(groups), "", false, false) +
            '<button type="button" class="wz-primary" id="wzCreateBtn">ثبت و انتخاب گروه</button>';
    }
    if (cfg.key === "title") {
        return "<strong>ثبت عنوان دستگاه جدید</strong>" + field("wzName", "عنوان دستگاه", "", "text", true) +
            '<div class="wz-static">گروه: ' + esc(groupLabel(findRow("groups", W.sel.group) || {})) + "</div>" +
            '<button type="button" class="wz-primary" id="wzCreateBtn">ثبت و انتخاب عنوان دستگاه</button>';
    }
    return '<strong>ثبت مدل جدید</strong><div class="wz-loading" id="wzModelLoading">در حال بارگذاری فرم...</div><div id="wzModelForm"></div>';
}

function bindCreate(cfg) {
    var btn = $id("wzCreateBtn");
    if (cfg.key === "group" && btn) btn.onclick = createGroup;
    if (cfg.key === "title" && btn) btn.onclick = createTitle;
    var nameInput = $id("wzName");
    if (nameInput) nameInput.onkeydown = function (e) { if (e.key === "Enter") { e.preventDefault(); (cfg.key === "group" ? createGroup : createTitle)(); } };
    if (cfg.key === "model") loadModelForm();
}

function afterCreate(kind, selKey, id, okText) {
    delete cache[kind];
    return apiGet(kind,true).then(function(){
        W.sel[selKey]=String(id);
        if(selKey === "group"){W.sel.title="";W.sel.model="";W.step=1;}
        if(selKey === "title"){W.sel.model="";W.step=2;}
        if(selKey !== "model")wzPaint();
        else wzHeader();
    });
}

function createGroup() {
    if (W.busy) return;
    var name = clean($id("wzName").value);
    if (!name) return wzMsg("نام گروه الزامی است.", true);
    var parent = $id("wzParent").value, values = {};
    values[String(ATTR.groupPersian)] = name;
    if (parent) values[String(ATTR.groupParent)] = parent;
    wzBusy(true); wzMsg("در حال ثبت گروه...");
    apiWrite("reference", { sourceAttributeId: ATTR.modelGroup, name: name, values: values })
        .then(function (r) { return afterCreate("groups", "group", r.id, "گروه ثبت شد."); })
        .catch(function (e) { wzMsg(e.message, true); })
        .then(function () { wzBusy(false); });
}

function createTitle() {
    if (W.busy) return;
    if (!W.sel.group) return wzMsg("ابتدا گروه را انتخاب کنید.", true);
    var name = clean($id("wzName").value);
    if (!name) return wzMsg("عنوان دستگاه الزامی است.", true);
    var values = {}; values[String(ATTR.titleGroup)] = W.sel.group;
    wzBusy(true); wzMsg("در حال ثبت عنوان دستگاه...");
    apiWrite("reference", { sourceAttributeId: ATTR.modelTitle, name: name, values: values })
        .then(function (r) { return afterCreate("titles", "title", r.id, "عنوان دستگاه ثبت شد."); })
        .catch(function (e) { wzMsg(e.message, true); })
        .then(function () { wzBusy(false); });
}

function loadModelForm() {
    Promise.all([apiGet("manufacturer"), apiGet("facility")]).then(function (v) {
        var host = $id("wzModelForm"); if (!host) return;
        var ld = $id("wzModelLoading"); if (ld) ld.parentNode.removeChild(ld);
        host.innerHTML = '<div class="wz-grid">' +
            selectField("wzManufacturer", "شرکت سازنده", v[0], "", true, true) +
            selectField("wzFacility", "نوع", v[1], "", false, true) +
            field("wzNature", "ماهیت دستگاه", "") +
            field("wzFunction", "کارکرد", "") +
            field("wzCriticality", "سطح اهمیت", "") +
            field("wzTechnology", "فناوری", "") +
            field("wzPower", "برق مصرفی", "") +
            field("wzWater", "آب مصرفی", "") +
            field("wzGas", "گاز مصرفی", "") +
            '<div class="wz-field"><label for="wzAvatar">آواتار مدل (PNG/JPEG، حداکثر ۲ مگابایت)</label><input type="file" id="wzAvatar" accept="image/png,image/jpeg"><img id="wzAvatarPreview" hidden style="width:80px;height:80px;object-fit:contain"></div>' +
            '</div><button type="button" class="wz-primary" id="wzCreateBtn">ثبت و انتخاب مدل</button>';
        $id("wzAvatar").onchange = function(){
            var file = this.files[0], preview = $id("wzAvatarPreview");
            if (preview.dataset.url) URL.revokeObjectURL(preview.dataset.url);
            preview.hidden = true;
            if (!file) return;
            if (file.size > 2097152 || !/^image\/(png|jpeg)$/.test(file.type)) { this.value=""; wzMsg("تصویر PNG/JPEG تا ۲ مگابایت انتخاب کنید.",true); return; }
            preview.dataset.url = URL.createObjectURL(file); preview.src = preview.dataset.url; preview.hidden = false;
        };
        $id("wzCreateBtn").onclick = createModel;
        bindMini();
    }).catch(function (e) { wzMsg(e.message, true); });
}

var MINI = { wzManufacturer: { attr: ATTR.manufacturer, kind: "manufacturer" }, wzFacility: { attr: ATTR.modelType, kind: "facility" } };

function bindMini() {
    var plus = document.querySelectorAll("#wzModelForm [data-plus]");
    for (var i = 0; i < plus.length; i++) plus[i].onclick = function () {
        var id = this.getAttribute("data-plus"), m = $id(id + "Mini");
        m.hidden = !m.hidden;
        if (!m.hidden) $id(id + "MiniName").focus();
    };
    var oks = document.querySelectorAll("#wzModelForm [data-miniok]");
    for (var j = 0; j < oks.length; j++) oks[j].onclick = function () { miniCreate(this.getAttribute("data-miniok")); };
}

function miniCreate(selId) {
    if (W.busy) return;
    var cfg = MINI[selId], name = clean($id(selId + "MiniName").value);
    if (!name) return wzMsg("نام را وارد کنید.", true);
    wzBusy(true); wzMsg("در حال ثبت...");
    apiWrite("reference", { sourceAttributeId: cfg.attr, name: name, values: {} })
        .then(function (r) {
            delete cache[cfg.kind];
            return apiGet(cfg.kind, true).then(function (rows) {
                var s = $id(selId);
                s.innerHTML = selectOptions(rows, r.id);
                $id(selId + "MiniName").value = "";
                $id(selId + "Mini").hidden = true;
                wzMsg("مقدار جدید ثبت و انتخاب شد.");
            });
        })
        .catch(function (e) { wzMsg(e.message, true); })
        .then(function () { wzBusy(false); });
}

function createModel() {
    if (W.busy) return;
    var modelName = "-", manufacturer = $id("wzManufacturer").value;
    if (!W.sel.title) return wzMsg("ابتدا عنوان دستگاه را انتخاب کنید.", true);
    if (!modelName) return wzMsg("سری / مدل دستگاه الزامی است.", true);
    if (!manufacturer) return wzMsg("شرکت سازنده الزامی است.", true);
    var payload = {
        modelName: modelName,
        deviceTitleObjectId: W.sel.title,
        manufacturerObjectId: manufacturer,
        typeObjectId: $id("wzFacility").value,
        groupObjectId: W.sel.group,
        nature: clean($id("wzNature").value),
        modelFunction: clean($id("wzFunction").value),
        criticality: clean($id("wzCriticality").value),
        technology: clean($id("wzTechnology").value),
        powerRequirement: clean($id("wzPower").value),
        waterRequirement: clean($id("wzWater").value),
        gasRequirement: clean($id("wzGas").value)
    };
    wzBusy(true); wzMsg("در حال ثبت مدل...");
    var newId = "";
    readAvatarFile($id("wzAvatar")).then(function(encoded){
        if(encoded) payload.avatarBase64 = encoded;
        return apiWrite("model", payload);
    }).then(function (r) {
        W.pageWarning = "";
        W.avatarWarning = r.avatarRequested && !r.avatarSaved ? ("مدل ثبت شد؛ آواتار ذخیره نشد: " + (r.avatarError || "خطای نامشخص")) : "";
        newId = String(r.id);
        return afterCreate("models", "model", newId, "مدل ثبت شد؛ در حال ساخت صفحه اطلاعات فنی...");
    }).then(function () {
        wzBusy(true);
        return apiPages({
            modelObjectId: newId,
            modelName: modelName,
            classificationName: groupLabel(findRow("groups", W.sel.group) || {}),
            equipmentTitleName: labelOf(findRow("titles", W.sel.title))
        }).then(function () {
            wzMsg(W.avatarWarning || "مدل و صفحه اطلاعات فنی ثبت شدند.", !!W.avatarWarning);
        }).catch(function (e) {
            W.pageWarning = "مدل ساخته شد ولی ساخت صفحه اطلاعات فنی کامل نشد: " + e.message;
        });
    }).then(function(){
        W.step=3;wzPaint();
        if(W.avatarWarning || W.pageWarning)showToast([W.avatarWarning,W.pageWarning].filter(Boolean).join("؛ "));
    }).catch(function (e) { wzMsg(e.message, true); })
      .then(function () { wzBusy(false); });
}


function readAvatarFile(input) {
    return new Promise(function(resolve,reject){
        var file=input && input.files && input.files[0];
        if(!file) return resolve("");
        if(file.size>2097152 || !/^image\/(png|jpeg)$/.test(file.type)) return reject(new Error("تصویر PNG/JPEG تا ۲ مگابایت انتخاب کنید."));
        var reader=new FileReader();
        reader.onerror=function(){reject(new Error("خواندن تصویر ناموفق بود."));};
        reader.onload=function(){resolve(String(reader.result).split(",")[1]);};
        reader.readAsDataURL(file);
    });
}
var EQUIPMENT_FIELDS = [[6268, "serialNumber", "شماره سریال", "text"], [6273, "purchaseValueRial", "ارزش ریالی خرید", "number"], [6274, "purchaseValueDollar", "ارزش دلاری خرید", "number"], [6275, "manufactureDate", "تاریخ تولید", "date"], [6276, "expiryDate", "تاریخ انقضا", "date"], [6392, "ownerDepartmentObjectId", "بخش (مالک)", "ref", "ownerDepartment"], [6280, "availability", "وضعیت دسترسی", "select"], [6281, "statusReason", "علت وضعیت فعلی", "text"], [6282, "responsibleObjectId", "مسئول بهره‌برداری", "ref", "responsible"], [6283, "recipientObjectId", "تحویل‌گیرنده", "ref", "recipient"], [6284, "accessoriesObjectIds", "متعلقات", "ref", "accessories"], [6285, "assembly", "نحوه ترکیب اجزا", "select"], [6286, "externalOutput", "آیا خروجی این جزء دستگاه ترکیبی ساقط می‌شود؟", "boolean"], [6400, "combinedFunction", "عملکرد در مجموعه‌های ترکیبی", "text"], [6287, "aggregateValue", "ارزش ریالی/دلاری تجمیع", "text"], [6288, "priority", "اولویت", "select"], [6289, "emergency", "فوریت", "select"], [6290, "portable", "قابل حمل", "boolean"], [6402, "portability", "قابلیت حمل", "text"], [6291, "clinicalUse", "کاربرد بالینی", "select"], [6365, "entryDateTime", "زمان ورود", "datetime-local"], [6390, "exitDateTime", "زمان خروج", "datetime-local"], [6396, "ownerCompanyObjectId", "مرکز (مالک)", "ref", "ownerCompany"], [6649, "installationDate", "تاریخ نصب", "date"], [6671, "repairCost", "هزینه تعمیرات", "text"], [6672, "downtimeDays", "روز خواب", "text"]];
var equipmentMetadata = {};
function loadExtraEquipment(){
    return jfetch(API.read+"?kind=metadata").then(function(r){
        equipmentMetadata = {};
        ((r.metadata.equipment || {}).attributes || []).forEach(function(a){equipmentMetadata[String(a.id)]=a;});
        return Promise.all(EQUIPMENT_FIELDS.filter(function(f){return f[3]==="ref";}).map(function(f){return apiGet(f[4]);}));
    });
}
function optionCaption(value){
    var key=String(value).toLowerCase();
    var names={active:"فعال",inactive:"غیرفعال","entered-in-error":"دارای خطا",lost:"گم شده",damaged:"آسیب دیده",destroyed:"از بین رفته",available:"در دسترس",high:"زیاد",medium:"متوسط",low:"کم",critical:"بحرانی",urgent:"فوری",normal:"عادی",routine:"معمول",emergency:"اورژانسی",portable:"قابل حمل",fixed:"ثابت",yes:"بله",no:"خیر"};
    return names[key] || value;
}
function extraEquipmentHtml(draft,onlyIds){
    return EQUIPMENT_FIELDS.filter(function(f){return !onlyIds || onlyIds.indexOf(f[0])>=0;}).map(function(f){
        var id="wzExtra"+f[0], m=equipmentMetadata[String(f[0])] || {}, value=draft[f[1]], rows;
        if(f[3]==="ref") rows=cache[f[4]] || [];
        if(f[3]==="boolean") rows=[{id:"true",label:"بله"},{id:"false",label:"خیر"}];
        if(f[3]==="select") rows=f[0]===6280?v33AccessOptions(m):String(m.options || "").split(/[,;\r\n]+/).map(function(x){return x.trim();}).filter(Boolean).map(function(x){return {id:x,label:optionCaption(x)};});
        
        if(rows){
            var multi=f[3]==="ref" && (Number(m.maximumCardinality)>1 || Number(m.maximumCardinality)===-1);
            var chosen=Array.isArray(value)?value.map(String):[String(value==null?"":value)];
            return '<div class="wz-field"><label for="'+id+'">'+esc(f[2])+'</label><select id="'+id+'"'+(multi?' multiple size="4"':'')+'>'+(!multi?'<option value="">'+(f[3]==="select" && !rows.length ? 'گزینه‌ای برای این فیلد تعریف نشده' : 'انتخاب کنید')+'</option>':'')+rows.map(function(r){return '<option value="'+esc(r.id)+'"'+(chosen.indexOf(String(r.id))>=0?' selected':'')+'>'+esc(labelOf(r))+'</option>';}).join("")+'</select></div>';
        }
        return field(id,f[2],value,f[3],Number(m.minimumCardinality)>0);
    }).join("");
}
function extraEquipmentValue(f){
    var el=$id("wzExtra"+f[0]);
    if(!el) return "";
    if(el.multiple) return Array.prototype.filter.call(el.options,function(x){return x.selected;}).map(function(x){return x.value;});
    return (f[3] === "date" || f[3] === "datetime-local") ? gregorianInput(el.id, f[3] === "datetime-local") : el.value;
}
function bindExtraEquipment(){
    EQUIPMENT_FIELDS.forEach(function(f){
        var el=$id("wzExtra"+f[0]);
        if(f[3]==="number") el.step="any";
        el.oninput=el.onchange=function(){W.draft[f[1]]=(f[3] === "date" || f[3] === "datetime-local") ? el.value : extraEquipmentValue(f);};
    });
}

function selectEquipmentSegment(index){
    mqCloseDatePopover();
    W.segment=Number(index);
    document.querySelectorAll("#wzBody [data-equipment-panel]").forEach(function(panel){panel.hidden=Number(panel.dataset.equipmentPanel)!==W.segment;});
    document.querySelectorAll("#wzBody [data-equipment-tab]").forEach(function(button){var active=Number(button.dataset.equipmentTab)===W.segment;button.classList.toggle("active",active);button.setAttribute("aria-pressed",String(active));});
}
function bindEquipmentSegments(){
    var body=$id("wzBody"), panels=body.querySelectorAll("[data-equipment-panel]"),nav=document.createElement("div");
    nav.className="wz-segment-tabs";nav.setAttribute("role","group");nav.setAttribute("aria-label","بخش‌های اطلاعات دارایی");
    nav.innerHTML=Array.prototype.map.call(panels,function(panel,i){return '<button type="button" data-equipment-tab="'+i+'">'+esc(panel.querySelector("legend").textContent)+'</button>';}).join("");
    body.insertBefore(nav,panels[0]);
    nav.onclick=function(e){var b=e.target.closest("[data-equipment-tab]");if(b && !W.busy)selectEquipmentSegment(b.dataset.equipmentTab);};
    selectEquipmentSegment(W.segment || 0);
}
function revealEquipmentField(el){var panel=el.closest("[data-equipment-panel]");if(panel)selectEquipmentSegment(panel.dataset.equipmentPanel);}
function paintEquipment(token) {
    var body = $id("wzBody");
    body.innerHTML = '<div class="wz-loading">در حال دریافت اطلاعات...</div>';
    Promise.all([
        apiGet("models"),
        apiGet("supplier").catch(function () { return []; }),
        apiGet("department"),
        loadExtraEquipment()
    ]).then(function (v) {
        if (token !== W.token) return;
        var d = W.draft;
        var statusRows = Object.keys(STATUS_FA).map(function (k) { return { id: k, label: STATUS_FA[k] }; });
        var segmentCounter=0;
        function segment(title,body){segmentCounter++;return '<fieldset class="wz-segment" data-equipment-panel="'+(segmentCounter-1)+'"><legend>'+esc(title)+'</legend><div class="wz-grid">'+body+'</div></fieldset>';}
        body.innerHTML =
            '<div class="wz-static">مدل انتخاب‌شده: '+esc(labelOf(findRow("models",W.sel.model)) || "—")+'</div>'+ 
            segment("مشخصات پایه",field("wzDevId","شناسه دستگاه",d.deviceId,"text",true)+field("wzAssetNo","شماره اموال",d.assetNumber)+extraEquipmentHtml(d,[6268]))+
            segment("مشخصات فنی و اجزا",extraEquipmentHtml(d,[6284,6285,6286,6400,6290,6402,6291]))+
            segment("اطلاعات مالی و خرید",field("wzPurchase","تاریخ خرید",d.purchaseDate,"date")+selectField("wzSupplier","فروشنده",v[1],d.supplierObjectId,false,false)+extraEquipmentHtml(d,[6273,6274,6287,6671]))+
            segment("موقعیت و مسئولان",selectField("wzDept","بخش بهره‌بردار",v[2],d.departmentObjectId,false,false)+extraEquipmentHtml(d,[6392,6282,6283,6396]))+
            segment("وضعیت و تاریخ‌ها",selectField("wzStatus","وضعیت",statusRows,d.status,false,false)+extraEquipmentHtml(d,[6280,6281,6288,6289,6275,6276,6365,6390,6649,6672]));
        var ids = ["wzDevId", "wzAssetNo", "wzPurchase", "wzSupplier", "wzDept", "wzStatus"];
        var keys = ["deviceId", "assetNumber", "purchaseDate", "supplierObjectId", "departmentObjectId", "status"];
        ids.forEach(function (id, i) {
            var el = $id(id);
            var save = function () { W.draft[keys[i]] = el.value; if(id === "wzDevId")wzHeader(); };
            el.oninput = save; el.onchange = save;
        });
        bindEquipmentSegments();
        bindExtraEquipment();
        bindJalaliInputs();
        $id("wzDevId").focus();
    }).catch(function (e) { if (token === W.token) { body.innerHTML = ""; wzMsg(e.message, true); } });
}

function saveEquipment() {
    if (W.busy) return;
    if (!W.sel.model) return wzMsg("مدل انتخاب نشده است.", true);
    if (!validateJalaliInputs()) return;
    var p = {
        modelObjectId: W.sel.model,
        deviceName: "دارایی " + clean($id("wzDevId").value),
        deviceId: clean($id("wzDevId").value),
        assetNumber: clean($id("wzAssetNo").value),
        purchaseDate: gregorianInput("wzPurchase", false),
        supplierObjectId: $id("wzSupplier").value,
        departmentObjectId: $id("wzDept").value,
        status: $id("wzStatus").value
    };
    EQUIPMENT_FIELDS.forEach(function(f){p[f[1]] = extraEquipmentValue(f);});
    
    if (!p.deviceId) { revealEquipmentField($id("wzDevId"));$id("wzDevId").focus();return wzMsg("شناسه دستگاه الزامی است.", true); }
    wzBusy(true); wzMsg("در حال ثبت دستگاه...");
    apiWrite("equipment", p).then(function (r) {
        wzMsg("دستگاه ثبت شد؛ در حال ساخت صفحه...");
        return apiPages({
            modelObjectId: W.sel.model,
            modelName: labelOf(findRow("models", W.sel.model)),
            assetObjectId: r.id,
            deviceName: p.deviceName,
            deviceId: p.deviceId,
            classificationName: groupLabel(findRow("groups", W.sel.group) || {}),
            equipmentTitleName: labelOf(findRow("titles", W.sel.title))
        }).then(function () { return true; }, function (e) {
            showToast("دستگاه ساخته شد ولی ساخت صفحه خطا داد: " + e.message);
            return true;
        });
    }).then(function () {
        delete cache.equipment;
        closeWizard();
        showToast("دستگاه با موفقیت ثبت شد.");
        if ($id("mqAssetsHost")) loadAssets("mqAssetsHost", "mqAssetSearch");
    }).catch(function (e) { wzMsg(e.message, true); })
      .then(function () { wzBusy(false); });
}

function wzNext() {
    if (W.busy) return;
    if (W.step < 3) {
        var cfg = STEPS[W.step];
        if (!W.sel[cfg.key]) return wzMsg("ابتدا " + cfg.noun + " را انتخاب کنید.", true);
        W.step++; return wzPaint();
    }
    saveEquipment();
}
function wzPrev() { if (W.busy || W.step === 0) return; W.step--; wzPaint(); }

$id("wzNext").onclick = wzNext;
$id("wzPrev").onclick = wzPrev;
$id("wzClose").onclick = closeWizard;
$id("mqWz").addEventListener("mousedown", function (e) { if (e.target === this) closeWizard(); });
$id("mqDetailClose").onclick = closeDetail;
$id("mqDetail").addEventListener("mousedown", function (e) { if (e.target === this) closeDetail(); });
document.addEventListener("click", function (e) {
    var b = e.target.closest ? e.target.closest("[data-detail]") : null;
    if (b) openDetail(b.getAttribute("data-detail"));
});
document.addEventListener("keydown", function (e) {
    if (e.key !== "Escape") return;
    if ($id("mqDetail").classList.contains("open")) closeDetail();
    else if (W.open && !W.busy) closeWizard();
});

window.MEDIQ = { version: "V14_ASSET_DASHBOARD", openWizard: openWizard, refresh: function () { loadAssets("mqAssetsHost", "mqAssetSearch"); } };

/* V11: operations interface. All current registration code is preserved. */
var V11={selected:{},states:{},attrs:{department:6277,responsible:6282,status:6279,availability:6280,location:0},ready:false,missing:[],filters:[],searchFields:[],row:null,request:0};
var OP_NAMES={handover:'تحویل و تحول کاربری',entry:'ورود دارایی به انبار',exit:'خروج دارایی از انبار',scrap:'اسقاط دارایی'};
function operations(p){return apiWrite('lifecycle',p);}
function vError(e){return publicMessage(e && e.message || e);}
function vRef(kind,row,aid){var ids=attrList(row,aid);return ids.map(function(id){return labelOf(findRow(kind,id))||id;}).join('، ')||'—';}
function vValues(row,key){
    if(key==='key')return [row.key||''];
    if(key==='label')return [row.label||''];
    var raw=attrList(row,key),field=EQUIPMENT_FIELDS.find(function(f){return String(f[0])===String(key);});
    var kind=String(key)==='6277'?'department':String(key)==='6644'?'models':field&&field[3]==='ref'?field[4]:null;
    if(kind)raw=raw.concat(attrList(row,key).map(function(id){return labelOf(findRow(kind,id));}));
    return raw.map(function(x){return optionCaption(x);});
}
function vFilter(items,query){
    var q=searchNorm(query);
    return items.filter(function(row){
        var all=V11.searchFields.length?[]:[row.key,row.label];(V11.searchFields.length?V11.searchFields:Object.keys(row.attributes||{})).forEach(function(k){all=all.concat(vValues(row,k));});
        if(q && searchNorm(all.join(' ')).indexOf(q)<0)return false;
        var grouped={};
        V11.filters.forEach(function(f){(grouped[String(f.key)]||(grouped[String(f.key)]=[])).push(f);});
        return Object.keys(grouped).every(function(key){
            var vals=vValues(row,key).map(searchNorm);
            return grouped[key].some(function(f){
                var wanted=searchNorm(f.value);
                if(f.op==='empty')return !attrList(row,key).length;
                if(f.op==='eq')return vals.some(function(v){return v===wanted;});
                if(f.op==='ne')return !vals.some(function(v){return v===wanted;});
                return vals.some(function(v){return v.indexOf(wanted)>=0;});
            });
        });
    });
}
function vReadStates(ids){
    return operations({action:'state',ids:ids}).then(function(r){V11.ready=r.ready;V11.missing=r.missing||[];Object.keys(r.states||{}).forEach(function(id){V11.states[id]=Object.assign({checked:true},r.states[id]);});Object.assign(V11.attrs,r.attributes||{});return r;});
}
function vState(row){return V11.states[String(row.id)]||{};}
function vPanel(id){
    var row=findRow('equipment',id),box=$id('v11Summary');if(!row||!box)return;
    V11.row=String(id);var s=vState(row),a=V11.attrs;
    var data=[['مسئول بهره‌بردار',vRef('responsible',row,a.responsible)],['بخش بهره‌بردار',vRef('department',row,a.department)],['موقعیت فعلی',a.location?vRef('location',row,a.location):'نیازمند تنظیم شناسه موقعیت'],['وضعیت',statusText(attr(row,a.status))],['وضعیت دسترسی',vAccessLabel(attr(row,a.availability))],['وضعیت اموال‌داری',s.active?(s.conflict?'چند فرایند فعال؛ نیازمند بررسی':'در حال '+(OP_NAMES[s.operation]||'پردازش')):s.checked?'پایدار':'در حال بررسی']];
    box.innerHTML='<strong>'+esc(attr(row,ATTR.devName)||row.label)+'</strong>'+data.map(function(d){return '<div class="v-summary-row"><span>'+esc(d[0])+'</span><b>'+(d[0]==='وضعیت'?vStatusMark(attr(row,a.status)):'')+esc(d[1])+'</b></div>';}).join('');
    if(s.active){
        var stages=s.stages||[],at=stages.findIndex(function(x){return String(x.id)===String(s.statusId);});
        box.innerHTML+='<h4>روند فرایند</h4><div class="v-steps">'+stages.map(function(x,i){return '<div class="'+(i===at?'current':i<at&&at>=0?'passed':'')+'">'+esc(x.name)+'</div>';}).join('')+'</div><p>'+esc(s.issueKey)+' — '+esc(s.statusName)+'</p>';
        if(!stages.length||at<0)box.innerHTML+='<p>مرحلهٔ جاری در مسیر تنظیم‌شده نیست؛ وضعیت واقعی بالا نمایش داده شده است.</p>';
    }
}
function loadAssets(hostId,searchId){
    var host=$id(hostId);if(!host)return;var ticket=++V11.request;
    host.innerHTML='<div class="wz-loading">در حال دریافت دارایی‌ها…</div>';
    Promise.all([apiGet('equipment'),apiGet('department'),apiGet('responsible')]).then(function(results){
        Promise.all([apiGet('models'),apiGet('location'),loadExtraEquipment()]).catch(function(e){if(window.console)console.warn('MediQ auxiliary data:',e);});
        if(ticket!==V11.request||!$id(hostId))return;
        var rows=results[0],input=$id(searchId);vRenderStatusDashboard(rows);
        function paint(){
            host=$id(hostId);if(!host||ticket!==V11.request)return;
            var processEl=$id('vProcessFilter'),processValue=processEl?processEl.value:'';
            var filtered=vFilter(rows,input?input.value:'').filter(function(row){return (V14_STATUS.filter==='all'||vAssetStatusGroup(row)===V14_STATUS.filter)&&(!processValue||(vState(row).checked&&vState(row).active&&String(vState(row).operation)===processValue));}),part=assetPageSlice(filtered,ASSET_PAGE.page,ASSET_PAGE.size);ASSET_PAGE.page=part.page;
            host.innerHTML='<div class="mq-tbl-wrap"><table class="mq-tbl"><thead><tr><th>انتخاب</th><th>شناسه دستگاه</th><th>نام دستگاه</th><th>بخش بهره‌بردار</th><th>مسئول بهره‌بردار</th><th>وضعیت</th><th>عملیات</th></tr></thead><tbody>'+part.items.map(function(row){var s=vState(row);return '<tr data-vrow="'+esc(row.id)+'"><td><input type="checkbox" data-vselect="'+esc(row.id)+'" aria-label="انتخاب '+esc(row.label)+'" '+(V11.selected[row.id]?'checked ':'')+(s.active?'disabled ':'')+'></td><td>'+esc(attr(row,ATTR.devId)||row.key)+'</td><td>'+esc(attr(row,ATTR.devName)||row.label)+'</td><td><span class="v-tag purple">'+esc(vRef('department',row,6277))+'</span></td><td><span class="v-tag orange">'+esc(vRef('responsible',row,6282))+'</span></td><td><span class="v-status-pill '+vAssetStatusGroup(row)+'">'+vStatusMark(attr(row,ATTR.status))+esc(statusText(attr(row,ATTR.status)))+'</span>'+(s.active?'<small class="v-active">'+esc(OP_NAMES[s.operation]||'فرایند فعال')+'</small>':'')+'</td><td><div class="v-row-actions"><button type="button" class="mq-assets-btn" data-detail="'+esc(row.id)+'"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12Z"/><circle cx="12" cy="12" r="3"/></svg>مشاهده</button><button type="button" class="mq-assets-btn" data-vedit="'+esc(row.id)+'" '+(s.active||!s.checked?'disabled':'')+'><svg viewBox="0 0 24 24" aria-hidden="true"><path d="m15 4 5 5M4 20l5-1L20 8a2 2 0 0 0-5-5L4 14Z"/></svg>ویرایش</button></div></td></tr>';}).join('')+(filtered.length?'':'<tr><td colspan="7">موردی یافت نشد.</td></tr>')+'</tbody></table></div><div class="mq-list-controls"><label>تعداد نمایش <select id="vPageSize">'+['10','20','50','all'].map(function(n){return '<option value="'+n+'" '+(ASSET_PAGE.size===n?'selected':'')+'>'+(n==='all'?'همه':n)+'</option>';}).join('')+'</select></label><span>'+part.start+' تا '+part.end+' از '+filtered.length+' — انتخاب‌شده: '+Object.keys(V11.selected).length+'</span></div><div class="mq-list-controls"><button class="mq-assets-btn" id="vPrev" '+(part.page===1?'disabled':'')+'>قبلی</button><span>صفحه '+part.page+' از '+part.pages+'</span><button class="mq-assets-btn" id="vNext" '+(part.page===part.pages?'disabled':'')+'>بعدی</button></div>';
            $id('vPageSize').onchange=function(){ASSET_PAGE.size=this.value;ASSET_PAGE.page=1;paint();};$id('vPrev').onclick=function(){ASSET_PAGE.page--;paint();};$id('vNext').onclick=function(){ASSET_PAGE.page++;paint();};
            host.querySelectorAll('[data-vselect]').forEach(function(b){b.onchange=function(){if(b.checked)V11.selected[b.dataset.vselect]=true;else delete V11.selected[b.dataset.vselect];paint();};});
            host.querySelectorAll('[data-vrow]').forEach(function(tr){tr.onclick=function(){vPanel(tr.dataset.vrow);};});
            host.querySelectorAll('[data-vedit]').forEach(function(b){b.onclick=function(){vEdit(b.dataset.vedit);};});
            if(V11.row)vPanel(V11.row);
            // Lazy status checks: one request per at most 50 rows, cached until refresh.
            var unknown=part.items.filter(function(r){return !vState(r).checked;}).map(function(r){return String(r.id);});
            if(unknown.length){
                var groups=[];for(var i=0;i<unknown.length;i+=50)groups.push(unknown.slice(i,i+50));
                groups.reduce(function(p,ids){return p.then(function(){return vReadStates(ids).then(function(r){ids.forEach(function(id){V11.states[id]=Object.assign({checked:true},r.states[id]);if(V11.states[id].active)delete V11.selected[id];});});});},Promise.resolve()).then(function(){if(ticket===V11.request)paint();}).catch(function(e){var warn=$id('vService');if(warn)warn.textContent='وضعیت فرایندها دریافت نشد: '+vError(e);});
            }
        }
        if(input)input.oninput=function(){ASSET_PAGE.page=1;paint();};V11.paint=paint;paint();
    }).catch(function(e){if(ticket===V11.request&&$id(hostId))host.innerHTML='<p>'+esc(vError(e))+'</p>';});
}
function vSearch(){
    // Attribute -> actual values, fetched from the complete Assets data already loaded.
    var defs=[{id:'key',name:'کد دارایی'},{id:'label',name:'نام دستگاه'}];
    Object.keys(equipmentMetadata).forEach(function(k){
        var a=equipmentMetadata[k];
        if([6270,6366,6401].indexOf(Number(k))<0)defs.push({id:k,name:publicMessage((EQUIPMENT_FIELDS.find(function(f){return String(f[0])===k;})||[])[2]||({'6265':'نام دستگاه','6267':'شناسه دستگاه','6269':'شماره اموال','6277':'بخش بهره‌بردار','6279':'وضعیت','6644':'مدل دستگاه'})[k]||a.name)});
    });
    var old=$id('vInlineFilters');
    if(old){old.remove();return;}
    var button=$id('vFilters');if(!button)return;
    var anchor=button.parentNode;
    anchor.classList.add('v-filter-anchor');
    var panel=document.createElement('div');panel.id='vInlineFilters';panel.className='v-inline-filters';
    panel.innerHTML='<div class="v-filter-top"><strong>فیلتر ویژگی‌ها</strong><button type="button" id="vFilterClose" aria-label="بستن">×</button></div>'+
        '<div class="v-filter-columns"><div class="v-filter-attributes"><input type="search" id="vAttributeSearch" placeholder="جست‌وجوی ویژگی…" autocomplete="off"><div id="vAttributeList" class="v-attribute-list"></div></div>'+
        '<div class="v-filter-values"><select id="vFilterKey" hidden><option value="">انتخاب ویژگی</option>'+defs.map(function(a){return '<option value="'+esc(a.id)+'">'+esc(a.name)+'</option>';}).join('')+'</select>'+
        '<div id="vFilterDetails" hidden><label for="vFilterOp">شرط فیلتر</label><select id="vFilterOp"><option value="eq">برابر باشد</option><option value="ne">برابر نباشد</option><option value="contains">شامل باشد</option><option value="empty">خالی باشد</option></select><label for="vFilterValue">مقدار ویژگی</label><input type="search" id="vFilterFind" placeholder="جست‌وجو در مقادیر…" autocomplete="off"><div id="vFilterValue" class="v-filter-checklist" role="group" aria-label="مقادیر ویژگی"></div><small id="vFilterCount"></small></div><p id="vFilterPickHint">یک ویژگی را از فهرست انتخاب کنید.</p></div></div>';
    anchor.appendChild(panel);
    $id('vFilterClose').onclick=function(){panel.remove();};
    var attributeSearch=$id('vAttributeSearch');
    function paintAttributes(){
        var q=searchNorm(attributeSearch.value);
        $id('vAttributeList').innerHTML=defs.filter(function(a){return !q||searchNorm(a.name).indexOf(q)>=0;}).map(function(a){
            var current=String($id('vFilterKey').value)===String(a.id);
            var selected=V11.filters.some(function(f){return String(f.key)===String(a.id);});
            return '<button type="button" class="v-attribute-choice'+(current?' v-attribute-current':'')+'" data-attribute="'+esc(a.id)+'" aria-pressed="'+(selected?'true':'false')+'"><span class="v-attribute-tick" aria-hidden="true">'+(selected?'✓':'')+'</span><span>'+esc(a.name)+'</span></button>';
        }).join('')||'<p>ویژگی پیدا نشد.</p>';
        $id('vAttributeList').querySelectorAll('[data-attribute]').forEach(function(b){b.onclick=function(){var sel=$id('vFilterKey');sel.value=b.getAttribute('data-attribute');sel.onchange();paintAttributes();$id('vFilterPickHint').hidden=true;};});
    }
    attributeSearch.oninput=paintAttributes;paintAttributes();
    var keyEl=$id('vFilterKey'),opEl=$id('vFilterOp'),valueEl=$id('vFilterValue'),findEl=$id('vFilterFind');
    var choices=[];
    function valuesFor(key){
        var found=Object.create(null),all=[];
        (cache.equipment||[]).forEach(function(row){
            vValues(row,key).forEach(function(raw){
                var display=String(raw==null?'':raw).trim();
                if(!display)return;
                var norm=searchNorm(display);
                if(!found[norm]){found[norm]=true;all.push(display);}
            });
        });
        var meta=equipmentMetadata[String(key)]||{};
        String(meta.options||'').split(/[,;\r\n]+/).forEach(function(v){
            v=v.trim();if(!v)return;var text=String(optionCaption(v)),norm=searchNorm(text);
            if(!found[norm]){found[norm]=true;all.push(text);}
        });
        return all.sort(function(a,b){return a.localeCompare(b,'fa',{numeric:true});});
    }
    function repaintTable(){ASSET_PAGE.page=1;if(V11.paint)V11.paint();}
    function paintChoices(){
        var q=searchNorm(findEl.value),matched=choices.filter(function(x){return !q||searchNorm(x).indexOf(q)>=0;}),shown=matched.slice(0,120);
        var key=keyEl.value,op=opEl.value;
        valueEl.innerHTML=shown.map(function(x){
            var checked=V11.filters.some(function(f){return String(f.key)===String(key)&&f.op===op&&String(f.value)===String(x);});
            return '<label class="v-filter-check-option"><input type="checkbox" data-filter-value="'+esc(x)+'" '+(checked?'checked':'')+' '+(op==='empty'?'disabled':'')+'><span>'+esc(x)+'</span></label>';
        }).join('')||'<p class="v-filter-empty">مقداری پیدا نشد.</p>';
        $id('vFilterCount').textContent=matched.length+' مقدار منطبق'+(matched.length>120?' — ۱۲۰ مورد اول نمایش داده شده؛ برای محدودکردن جست‌وجو کن':'');
        findEl.disabled=op==='empty';
        valueEl.querySelectorAll('[data-filter-value]').forEach(function(cb){cb.onchange=function(){
            var value=this.getAttribute('data-filter-value');
            V11.filters=V11.filters.filter(function(f){return !(String(f.key)===String(key)&&String(f.value)===value);});
            if(this.checked)V11.filters.push({key:key,op:op,value:value});
            repaintTable();
            paintAttributes();
        };});
    }
    keyEl.onchange=function(){
        var key=keyEl.value,detail=$id('vFilterDetails');detail.hidden=!key;
        if(!key)return;
        findEl.value='';
        var remembered=V11.filters.find(function(f){return String(f.key)===String(key);});
        opEl.value=remembered?remembered.op:'eq';
        choices=valuesFor(key);paintChoices();
    };
    opEl.onchange=function(){
        var key=keyEl.value,op=opEl.value;
        if(op==='empty'){
            V11.filters=V11.filters.filter(function(f){return String(f.key)!==String(key);});
            V11.filters.push({key:key,op:'empty',value:''});
            repaintTable();
        }else{
            V11.filters=V11.filters.filter(function(f){return !(String(f.key)===String(key)&&f.op==='empty');});
            repaintTable();
        }
        paintChoices();
        paintAttributes();
    };
    findEl.oninput=paintChoices;

}

/* V48.1 Property actions: separate overview from user handover requests. */
function mqV48PropertyHome(){
 state.screen='propertyHome';heroTitle.textContent='مدیریت اموال و دارایی‌ها';heroDesc.textContent='نمای کلی دارایی‌ها و اقدامات تحویل';
 backButton.style.display='inline-block';buildBreadcrumb(['مدیریت تجهیزات','مدیریت اموال و دارایی‌ها']);mqTreeActivate('property');
 var choices=[['assets','نمای کلی دارایی‌ها','لیست، وضعیت و فیلتر ویژگی‌های دارایی‌ها','files'],['handover','اقدامات تحویل','درخواست‌های تحویل و تحول مرتبط با حساب من','chart']];
 view.innerHTML='<section class="mm-card-home" dir="rtl"><h2>مدیریت اموال و دارایی‌ها</h2><div class="mm-category-grid">'+choices.map(function(a){return '<button type="button" class="mm-category-card" data-mq-v48-property="'+a[0]+'"><span class="mm-category-icon">'+mmCardIcon(a[3])+'</span><strong>'+a[1]+'</strong></button>';}).join('')+'</div></section>';
 view.querySelectorAll('[data-mq-v48-property]').forEach(function(b){b.onclick=function(){if(b.dataset.mqV48Property==='assets'){renderAssetSections('newAsset');mqTreeActivate('propertyAssets');}else mqV48Handover();};});
 mmApi('handover.mine').then(function(d){if(state.screen!=='propertyHome'||!Array.isArray(d.items))return;var btn=view.querySelector('[data-mq-v48-property="handover"]');if(btn){var count=d.items.filter(function(x){return x.isRead!==true;}).length;if(count>0){var number=document.createElement('span');number.className='mq-v50-new-badge';number.textContent=String(count);number.setAttribute('aria-label',count+' اقدام جدید');number.title=count+' اقدام جدید';btn.appendChild(number);}}}).catch(function(){});
}
function mqV48Handover(){
 state.screen='propertyHandover';heroTitle.textContent='مدیریت اموال و دارایی‌ها';heroDesc.textContent='اقدامات تحویل';
 buildBreadcrumb(['مدیریت تجهیزات','مدیریت اموال و دارایی‌ها','اقدامات تحویل']);mqTreeActivate('propertyHandover');
 view.innerHTML='<section class="mq-preview mq-handover-workspace" dir="rtl"><div class="mq-assets-head"><div></div><div class="mq-assets-actions"><button type="button" id="mqV48RequestHandover" class="mq-assets-btn primary">درخواست تحویل و تحول</button><button type="button" id="mqV48ReloadHandover" class="mq-assets-btn">به‌روزرسانی</button></div></div><div class="v-stats" id="mqV48HandoverSummary"></div><div class="mm-actionbar"><input id="mqV48HandoverSearch" type="search" placeholder="جست‌وجو در اقدامات و اسناد"></div><div id="mqV48HandoverRows" aria-live="polite">در حال دریافت...</div></section>';
 var list=[],handoverBucket='new',fetchToken=0;
 function isNew(r){return r.isRead!==true;}
 function docsHtml(r){
  var docs=Array.isArray(r.accountingEntries)?r.accountingEntries:[];
  if(!docs.length)return '';
  var items=docs.map(function(d){return '<div class="mq-handover-document"><strong>'+esc(d.title||d.key||'سند ثبت‌شده')+'</strong><span>'+esc(d.key||'')+(d.documentDate?' · '+esc(d.documentDate):'')+'</span><span>'+esc(d.debitAccount||'')+(d.amountRaw?' · '+esc(d.amountRaw)+' ریال':'')+'</span></div>';}).join('');
  return '<details class="mq-handover-documents"><summary>'+docs.length.toLocaleString('fa-IR')+' سند ثبت‌شده <span aria-hidden="true">⌄</span></summary>'+items+'</details>';
 }
 function paint(){
  var input=document.getElementById('mqV48HandoverSearch'),host=document.getElementById('mqV48HandoverRows');if(!host||!input)return;
  var q=searchNorm(input.value||'');
  var match=list.filter(function(r){return (handoverBucket==='all'||isNew(r))&&searchNorm([r.key,r.summary,r.status].concat((r.accountingEntries||[]).map(function(d){return d.title||d.key||'';})).join(' ')).includes(q);});
  host.innerHTML=match.length?'<div class="mq-handover-table-wrap">'+mmTable(['کلید','عنوان و اسناد ثبت‌شده','وضعیت','اقدام'],match.map(function(r){return [esc(r.key),'<div class="mq-handover-request-title">'+esc(r.summary||'—')+'</div>'+docsHtml(r),esc(r.status||'—'),'<div class="mq-handover-row-actions"><button class="mq-assets-btn" type="button" data-mq-v48-handover="'+esc(r.key)+'">مشاهده و اقدام</button>'+(r.isRead===true?'<span class="mq-handover-read-ok">✓ خوانده‌شده</span>':'<button class="mq-assets-btn mq-mark-read" type="button" data-mq-handover-read="'+esc(r.key)+'">✓ علامت‌گذاری به‌عنوان خوانده‌شده</button>')+'</div>'];}))+'</div>':'<div class="mq-v48-empty">'+(handoverBucket==='new'?'اقدام جدیدی برای شما وجود ندارد. برای دیدن موارد قبلی «تمام اقدامات» را انتخاب کنید.':'موردی مطابق جست‌وجوی شما پیدا نشد.')+'</div>';
  host.querySelectorAll('[data-mq-v48-handover]').forEach(function(b){b.onclick=function(){mmIssueDetail(b.dataset.mqV48Handover).then(mmOpenIssueModal).catch(function(e){alert(vError(e));});};});
  host.querySelectorAll('[data-mq-handover-read]').forEach(function(b){b.onclick=function(){
   var key=b.getAttribute('data-mq-handover-read');b.disabled=true;b.textContent='در حال ثبت...';
   mmWrite('handover.markRead',{key:key}).then(function(d){
    if(!d||d.ok!==true)throw Error((d&&d.message)||'ثبت وضعیت خوانده‌شده تأیید نشد.');
    var row=list.find(function(x){return x.key===key;});if(row){row.isRead=true;row.isNew=false;}
    paintCards();paint();
   }).catch(function(e){b.disabled=false;b.textContent='✓ علامت‌گذاری به‌عنوان خوانده‌شده';alert('تغییر وضعیت خوانده‌شدن انجام نشد: '+vError(e));});
  };});
 }
 function paintCards(){
  var summary=document.getElementById('mqV48HandoverSummary');if(!summary)return;
  var count=list.filter(isNew).length;
  summary.innerHTML='<button type="button" class="mm-kpi-card" data-handover-filter="all" aria-pressed="false"><span class="mq-handover-icon" aria-hidden="true">▦</span><strong>'+list.length.toLocaleString('fa-IR')+'</strong><span class="mq-handover-label">تمام اقدامات</span></button><button type="button" class="mm-kpi-card" data-handover-filter="new" aria-pressed="false"><span class="mq-handover-icon" aria-hidden="true">⚒</span><strong>'+count.toLocaleString('fa-IR')+'</strong><span class="mq-handover-label">اقدامات جدید</span></button>';
  summary.querySelectorAll('[data-handover-filter]').forEach(function(btn){btn.classList.toggle('active',btn.dataset.handoverFilter===handoverBucket);btn.setAttribute('aria-pressed',String(btn.dataset.handoverFilter===handoverBucket));btn.onclick=function(){handoverBucket=btn.dataset.handoverFilter;paintCards();paint();};});
 }
 function load(){
  var token=++fetchToken,host=document.getElementById('mqV48HandoverRows');if(host)host.textContent='در حال دریافت درخواست‌های من...';
  mmApi('handover.mine').then(function(d){if(token!==fetchToken||state.screen!=='propertyHandover')return;if(!d||!Array.isArray(d.items))throw Error('خروجی handover.mine شامل items نیست.');list=d.items.filter(function(r){return r&&/^MED-\d+$/.test(r.key||'');});paintCards();paint();}).catch(function(err){if(token===fetchToken&&host&&host.isConnected)host.innerHTML='<div class="mq-v48-warning">'+esc(vError(err))+'</div>';});
 }
 document.getElementById('mqV48RequestHandover').onclick=function(){renderAssetSections('newAsset');vProcess();};
 document.getElementById('mqV48ReloadHandover').onclick=load;
 document.getElementById('mqV48HandoverSearch').oninput=paint;
 load();
}
function renderAssetSections(mode){
    var previousFilter=$id('vInlineFilters');if(previousFilter)previousFilter.remove();
    state.screen=mode;state.selectedAssetSection='purchased';heroTitle.textContent='مدیریت اموال و دارایی‌ها';heroDesc.textContent='ثبت، ویرایش و پیگیری گردش دارایی‌ها';backButton.style.display='inline-block';
    buildBreadcrumb(['مدیریت تجهیزات','مدیریت اموال و دارایی‌ها']);
    view.innerHTML='<section id="vAssetDashboard" aria-label="نمای کلی وضعیت دارایی‌ها"></section><div class="mq-list-layout"><aside class="mq-list-menu"><h3>وضعیت دارایی</h3><div id="v11Summary">یک دارایی از لیست انتخاب کنید.</div></aside><div class="mq-preview"><div class="mq-preview-title">لیست دارایی‌ها</div><div class="mq-assets-head"><div class="v-search"><input id="mqAssetSearch" type="search" placeholder="جست‌وجو در دارایی‌ها…"><button class="mq-assets-btn" id="vFilters">فیلتر ویژگی‌ها</button><select id="vProcessFilter" class="mq-assets-btn" aria-label="فیلتر فرایند"><option value="">همه فرایندها</option><option value="handover">تحویل و تحول کاربری</option><option value="entry">ورود دارایی به انبار</option><option value="exit">خروج دارایی از انبار</option><option value="scrap">اسقاط دارایی</option></select></div><div class="mq-assets-actions"><button class="mq-assets-btn primary" id="mqAssetsNew">ثبت دارایی جدید</button><button class="mq-assets-btn primary" id="vProcess">تحویل و تحول دارایی</button><button class="mq-assets-btn" id="mqAssetsRefresh">به‌روزرسانی لیست</button></div></div><p id="vService" role="status"></p><div id="mqAssetsHost"></div></div></div>';
    $id('mqAssetsNew').onclick=openWizard;$id('vProcess').onclick=vProcess;$id('vFilters').onclick=vSearch;var pf=$id('vProcessFilter');if(pf)pf.onchange=function(){
        var selected=pf.value,info=$id('vService'),host=$id('mqAssetsHost');
        var all=cache.equipment||[],unknown=all.filter(function(r){return !vState(r).checked;}).map(function(r){return String(r.id);});
        var token=(V11.processFilterToken||0)+1;V11.processFilterToken=token;
        if(!selected){pf.disabled=false;if(info)info.textContent='';ASSET_PAGE.page=1;if(V11.paint)V11.paint();return;}
        var chunks=[];for(var i=0;i<unknown.length;i+=50)chunks.push(unknown.slice(i,i+50));
        function progress(done){if(token!==V11.processFilterToken)return;if(info)info.textContent='در حال بررسی فرایندها: '+done+' از '+unknown.length+' دارایی — لطفاً تا تکمیل بررسی صبر کنید';}
        pf.disabled=true;pf.setAttribute('aria-busy','true');
        if(host)host.innerHTML='<div class="v34-process-loading" role="status" aria-live="polite"><span class="v34-spinner" aria-hidden="true"></span><strong>در حال بررسی فرایند دارایی‌ها…</strong><small>لطفاً تا پایان بررسی صبر کنید. نتیجه پس از تکمیل نمایش داده می‌شود.</small></div>';
        progress(0);
        var pointer=0,done=0,workers=[];
        function worker(){if(token!==V11.processFilterToken||pointer>=chunks.length)return Promise.resolve();var ids=chunks[pointer++];return vReadStates(ids).then(function(){done+=ids.length;progress(done);return worker();});}
        for(var w=0;w<Math.min(3,chunks.length);w++)workers.push(worker());
        Promise.all(workers).then(function(){if(token!==V11.processFilterToken||!pf.isConnected)return;if(info)info.textContent='';ASSET_PAGE.page=1;if(V11.paint)V11.paint();}).catch(function(e){if(token!==V11.processFilterToken)return;if(info)info.textContent='خطا در دریافت وضعیت فرایندها: '+vError(e);if(V11.paint)V11.paint();}).finally(function(){if(token===V11.processFilterToken){pf.disabled=false;pf.removeAttribute('aria-busy');}});
    };
    $id('mqAssetsRefresh').onclick=function(){V11.states={};delete cache.equipment;loadAssets('mqAssetsHost','mqAssetSearch');};loadAssets('mqAssetsHost','mqAssetSearch');
}
function renderEquipment(){
    state.screen='equipment';heroTitle.textContent='مدیریت تجهیزات';heroDesc.textContent='حوزهٔ موردنظر را انتخاب کنید.';backButton.style.display='none';buildBreadcrumb(['مدیریت تجهیزات']);
    var cards=[['مدیریت تعمیر و نگهداری',ICONS.maintenance,'maintenance'],['مدیریت تأمین و لجستیک',ICONS.supply,'logistics'],['مدیریت اموال و دارایی‌ها',ICONS.property,'property'],['مدیریت مالی و بهره‌وری',ICONS.finance,'finance'],['تحلیل و آنالیز','<path d="M4 19h16M6 15V9m6 6V5m6 10v-4M5 7l6-4 7 5"/><circle cx="18" cy="8" r="2"/>','analysis']];
    view.innerHTML='<div class="mq-card-grid v-five">'+cards.map(function(c){var children=(c[2]==='property'||c[2]==='logistics'||c[2]==='maintenance');return '<button class="mq-module-card'+(children?' mq-has-children':'')+'" data-vmodule="'+c[2]+'"><span class="mq-module-icon"><svg viewBox="0 0 24 24">'+c[1]+'</svg></span><span class="mq-module-name">'+c[0]+'</span>'+(children?'<span class="mq-hierarchy-arrow" aria-hidden="true">↙</span>':'')+'</button>';}).join('')+'</div>';
    view.querySelectorAll('[data-vmodule]').forEach(function(b){b.onclick=function(){var k=b.dataset.vmodule;if(k==='property')mqV48PropertyHome();else if(k==='logistics')renderLogistics();else if(k==='analysis')vAnalysis();else if(k==='maintenance')renderMediqMaintenance();else mqTreeSimpleEquipmentPage(cards.find(function(c){return c[2]===k;})[0],k);};});mqTreeActivate('equipment');
}
function vAnalysis(){
    heroTitle.textContent='تحلیل و آنالیز';heroDesc.textContent='نمای آماری دارایی‌های ثبت‌شده';backButton.style.display='inline-block';
    view.innerHTML='<div class="wz-loading">در حال دریافت آمار…</div>';
    apiGet('equipment').then(function(rows){var counts={};rows.forEach(function(r){var key=statusText(attr(r,ATTR.status));counts[key]=(counts[key]||0)+1;});view.innerHTML='<div class="v-stats"><div><strong>'+rows.length+'</strong><span>کل دارایی‌ها</span></div>'+Object.keys(counts).map(function(k){return '<div><strong>'+counts[k]+'</strong><span>'+esc(k)+'</span></div>';}).join('')+'</div>';}).catch(function(e){view.textContent=vError(e);});
}
function vDialog(title,body){
    if(W.open || $id('mqDetail').classList.contains('open'))return false;
    var el=$id('vDialog');if(!el){el=document.createElement('div');el.id='vDialog';el.className='v-overlay';document.getElementById('mediq-dashboard').appendChild(el);}
    V11.editSession=(V11.editSession||0)+1;V11.focus=document.activeElement;
    el.innerHTML='<section class="v-dialog" role="dialog" aria-modal="true" aria-labelledby="vDialogTitle"><header><h3 id="vDialogTitle">'+esc(title)+'</h3><button id="vClose" aria-label="بستن">×</button></header><div class="v-dialog-body">'+body+'</div><p id="vMessage" role="status"></p></section>';
    el.hidden=false;$id('vClose').onclick=vClose;el.onmousedown=function(e){if(e.target===el)vClose();};$id('vClose').focus();return true;
}
function vClose(){if(V11.busy)return;V11.editSession=(V11.editSession||0)+1;mqCloseDatePopover();var el=$id('vDialog');if(el)el.hidden=true;if(V11.focus&&V11.focus.isConnected)V11.focus.focus();}
function vMessage(text){var el=$id('vMessage');if(el)el.textContent=publicMessage(text);}
function vEdit(id){
    var row=findRow('equipment',id);if(!row)return;
    if(!vDialog('ویرایش دارایی — '+(row.key||id),'<p>ویرایش مشخصات پایه؛ تغییر مسئول، بخش و موقعیت از تحویل‌وتحول انجام می‌شود.</p><div class="v-fields">'+[[6268,'شماره سریال'],[6269,'شماره اموال'],[6281,'علت وضعیت فعلی']].map(function(f){return '<label>'+f[1]+'<input id="vEdit'+f[0]+'" maxlength="500" value="'+esc(attr(row,f[0]))+'"></label>';}).join('')+'</div><button class="mq-assets-btn primary" id="vEditSave">ثبت اقدام</button>'))return;
    $id('vEditSave').onclick=function(){var vals={};[6268,6269,6281].forEach(function(k){if($id('vEdit'+k).value!==attr(row,k))vals[k]=$id('vEdit'+k).value;});if(!Object.keys(vals).length)return vMessage('تغییری وارد نشده است.');V11.busy=true;this.disabled=true;operations({action:'edit',id:id,values:vals}).then(function(){V11.busy=false;vClose();V11.states={};loadAssets('mqAssetsHost','mqAssetSearch');}).catch(function(e){vMessage(vError(e));}).finally(function(){V11.busy=false;if($id('vEditSave'))$id('vEditSave').disabled=false;});};
}
function vOptions(kind){return '<option value="">انتخاب کنید</option>'+(cache[kind]||[]).map(function(r){return '<option value="'+esc(r.id)+'">'+esc(labelOf(r))+'</option>';}).join('');}
(function(){var header=document.querySelector('#mediq-dashboard .mq-header-left'),hero=document.querySelector('#mediq-dashboard .mq-hero');if(header&&hero)hero.appendChild(header);})();
(function(){var logo=document.querySelector('#mediq-dashboard .mq-logo');if(logo){logo.setAttribute('role','link');logo.setAttribute('tabindex','0');logo.setAttribute('title','صفحه اصلی مدیکیو');logo.onclick=function(){renderEquipment();};logo.onkeydown=function(e){if(e.key==='Enter'||e.key===' '){e.preventDefault();renderEquipment();}};}})();
function vAccessLabel(v){var m={available:'در دسترس',damaged:'آسیب دیده',lost:'گم شده',destroyed:'از بین رفته'};return m[norm(v)]||optionCaption(v)||'—';}
function vStatusMark(value){
    var v=norm(value),ok=(v==='active'||v==='فعال');
    var off=(v==='inactive'||v==='غیرفعال'||v==='entered-in-error'||v==='ثبت اشتباه');
    return '<span class="v33-status-icon '+(ok?'is-active':off?'is-inactive':'is-unknown')+'" aria-hidden="true">'+(ok?'✓':off?'×':'•')+'</span>';
}
function vRequestLink(key){
    key=clean(key);if(!/^[A-Z][A-Z0-9_]*-\d+$/i.test(key))return '';
    return '<button type="button" class="v33-request-link mq-assets-btn" data-mq-internal-issue="'+esc(key)+'" aria-label="مشاهده درخواست '+esc(key)+' در مدیکیو">مشاهده درخواست</button>';
}
function v33AccessOptions(meta){
    var fixed=[{id:'lost',label:'گم شده'},{id:'damaged',label:'آسیب دیده'},{id:'destroyed',label:'از بین رفته'},{id:'available',label:'در دسترس'}];
    var allowed=String(meta&&meta.options||'').split(/[,;\r\n]+/).map(function(x){return norm(x);}).filter(Boolean);
    return fixed.map(function(item){
        var aliases={lost:['lost','گم شده','مفقود'],damaged:['damaged','آسیب دیده','آسیب‌دیده'],destroyed:['destroyed','از بین رفته','از رده خارج'],available:['available','در دسترس','موجود']};
        var match=allowed.find(function(opt){return aliases[item.id].indexOf(opt)>=0;});
        return {id:match||item.id,label:item.label};
    });
}

function vProcess(){
    if(!vDialog('مدیریت گردش دارایی','<div class="v-operation-choices">'+Object.keys(OP_NAMES).map(function(k){return '<button class="mq-assets-btn" data-vop="'+k+'">'+OP_NAMES[k]+'</button>';}).join('')+'</div><div id="vProcessContent">نوع عملیات را انتخاب کنید.</div>'))return;
    var selected=Object.assign({},V11.selected),op='',page=1,token=window.crypto&&crypto.randomUUID?crypto.randomUUID():String(Date.now())+'-'+Math.random().toString(36).slice(2),committed=false;
    function fieldSelect(id,label,kind){return '<label>'+label+'<select id="'+id+'">'+vOptions(kind)+'</select></label>';}
    function form(){
        var labels='';
        if(op==='entry')labels=fieldSelect('vTargetLocation','انبار مقصد','location');
        else if(op==='exit')labels=fieldSelect('vSourceLocation','انبار مبدأ','location')+fieldSelect('vTargetDepartment','بخش مقصد','department')+fieldSelect('vTargetResponsible','مسئول مقصد','responsible');
        else if(op==='scrap')labels=fieldSelect('vSourceLocation','انبار','location');
        else labels=fieldSelect('vSourceDepartment','بخش بهره‌بردار فعلی','department')+fieldSelect('vSourceResponsible','مسئول فعلی','responsible')+fieldSelect('vTargetDepartment','بخش مقصد','department')+fieldSelect('vTargetResponsible','مسئول مقصد','responsible');
        $id('vProcessContent').innerHTML='<h4>'+OP_NAMES[op]+'</h4><div class="v-fields">'+labels+'<label>علت / توضیحات<textarea id="vReason" maxlength="2000"></textarea></label></div>'+(op==='entry'?'<div class="v-process-controls">'+fieldSelect('vFilterDept','فیلتر بخش فعلی','department')+fieldSelect('vFilterUser','فیلتر مسئول فعلی','responsible')+'</div>':'')+'<div class="v-process-searchline"><input type="search" id="vProcessSearch" placeholder="جست‌وجو در دارایی‌ها"></div><div id="vProcessList"></div><div class="mq-list-controls"><button class="mq-assets-btn" id="vProcessPrev">قبلی</button><span id="vProcessCount"></span><button class="mq-assets-btn" id="vProcessNext">بعدی</button></div><p id="vConfigNotice"></p><button class="mq-assets-btn primary" id="vReview">بازبینی و ثبت</button><div id="vReviewBox"></div>';
        /* V36: the primary current-section, current-owner and warehouse controls filter the list. */
        if(op==='handover'||op==='exit'||op==='scrap'){
            $id('vProcessContent').querySelectorAll('.v-process-controls').forEach(function(node){node.remove();});
        }
        var reviewButton=$id('vReview'),filterBar=$id('vProcessList');
        if(reviewButton&&filterBar){reviewButton.classList.add('v32-review-top');filterBar.parentNode.insertBefore(reviewButton,filterBar);var reviewBox=$id('vReviewBox');if(reviewBox)reviewButton.insertAdjacentElement('afterend',reviewBox);}
        ['vProcessSearch','vFilterDept','vFilterUser','vFilterLocation','vSourceDepartment','vSourceResponsible','vSourceLocation'].forEach(function(id){var el=$id(id);if(el){el.addEventListener(id==='vProcessSearch'?'input':'change',function(){page=1;selected={};paint();});}});
        $id('vProcessPrev').onclick=function(){page--;paint();};$id('vProcessNext').onclick=function(){page++;paint();};$id('vReview').onclick=review;paint();
    }
    function matches(row){
        var dept=$id('vFilterDept'),user=$id('vFilterUser'),loc=$id('vFilterLocation'),sd=$id('vSourceDepartment'),su=$id('vSourceResponsible'),sl=$id('vSourceLocation');
        if(dept&&dept.value&&attrList(row,V11.attrs.department||ATTR.department).indexOf(dept.value)<0)return false;
        if(user&&user.value&&attrList(row,V11.attrs.responsible||6282).indexOf(user.value)<0)return false;
        if(sd&&sd.value&&attrList(row,V11.attrs.department||ATTR.department).indexOf(sd.value)<0)return false;
        if(su&&su.value&&attrList(row,V11.attrs.responsible||6282).indexOf(su.value)<0)return false;
        var locId=V11.attrs.location;if((loc&&loc.value)||(sl&&sl.value)){if(!locId)return false;var vals=attrList(row,locId);if(loc&&loc.value&&vals.indexOf(loc.value)<0)return false;if(sl&&sl.value&&vals.indexOf(sl.value)<0)return false;}
        if(op==='exit' || op==='scrap'){
            var meta=equipmentMetadata||{};var inStoreAttr=Object.keys(meta).find(function(k){return /^(instore|in store|در انبار)$/i.test(String(meta[k].name||meta[k].label||'').trim());});
            if(!inStoreAttr)return false;
            if(!attrList(row,inStoreAttr).some(function(x){return /^(true|yes|1)$/i.test(x);}))return false;
        }
        return true;
    }
    function paint(){
        if(!$id('vProcessList'))return;
        var rows=vFilter(cache.equipment||[],$id('vProcessSearch').value).filter(matches),part=assetPageSlice(rows,page,'20');page=part.page;
        $id('vProcessList').innerHTML='<div class="mq-tbl-wrap"><table class="v-process-table"><thead><tr><th>انتخاب</th><th>دارایی / عنوان</th><th>بخش فعلی</th><th>مسئول فعلی</th><th>وضعیت دسترسی</th></tr></thead><tbody>'+part.items.map(function(r){var st=vState(r);return '<tr><td><input type="checkbox" data-vpselect="'+esc(r.id)+'" '+(selected[r.id]?'checked ':'')+(st.active||!st.checked?'disabled ':'')+'></td><td>'+esc((attr(r,ATTR.devName)||r.label||r.key))+'</td><td>'+esc(vRef('department',r,V11.attrs.department||6277))+'</td><td>'+esc(vRef('responsible',r,V11.attrs.responsible||6282))+'</td><td>'+esc(vAccessLabel(attr(r,V11.attrs.availability||6280)))+'</td></tr>';}).join('')+(rows.length?'':'<tr><td colspan="5">دارایی مطابق فیلتر پیدا نشد.</td></tr>')+'</tbody></table></div>';
        $id('vProcessCount').textContent='صفحه '+part.page+' از '+part.pages+' — '+Object.keys(selected).length+' انتخاب';$id('vProcessPrev').disabled=page===1;$id('vProcessNext').disabled=page===part.pages;
        $id('vConfigNotice').textContent=V11.ready?'':'ثبت فرایند پس از تکمیل تنظیمات سرویس فعال می‌شود.';
        $id('vProcessList').querySelectorAll('[data-vpselect]').forEach(function(b){b.onchange=function(){if(b.checked)selected[b.dataset.vpselect]=true;else delete selected[b.dataset.vpselect];paint();};});
        var ids=part.items.filter(function(r){return !vState(r).checked;}).map(function(r){return String(r.id);});
        if(ids.length)vReadStates(ids).then(function(r){ids.forEach(function(id){if(V11.states[id]&&V11.states[id].active)delete selected[id];});if($id('vProcessList')&&!$id('vDialog').hidden)paint();}).catch(function(e){vMessage(vError(e));});
        if((op==='exit'||op==='scrap')&&!Object.keys(equipmentMetadata||{}).some(function(k){return /^(instore|in store|در انبار)$/i.test(String(equipmentMetadata[k].name||equipmentMetadata[k].label||'').trim());}))$id('vConfigNotice').textContent='شناسه فیلد InStore در متادیتا مشخص نیست؛ برای جلوگیری از خروج اشتباه، انتخاب دارایی تا تنظیم فیلد غیرفعال است.';
    }
    function review(){
        var ids=Object.keys(selected),responsible=$id('vTargetResponsible'),department=$id('vTargetDepartment'),location=$id('vTargetLocation'),source=$id('vSourceLocation');
        if(!ids.length)return vMessage('حداقل یک دارایی انتخاب کنید.');if(ids.length>50)return vMessage('حداکثر ۵۰ دارایی انتخاب کنید.');
        var target={responsible:responsible?responsible.value:'',department:department?department.value:'',location:location?location.value:(source?source.value:'')};
        if((op==='handover'||op==='exit')&&(!target.responsible||!target.department))return vMessage('مسئول و بخش مقصد الزامی است.');
        if((op==='entry'||op==='exit'||op==='scrap')&&!target.location)return vMessage('انتخاب انبار الزامی است.');
        if(op==='scrap'&&!$id('vReason').value.trim())return vMessage('علت اسقاط را بنویسید.');
        var reason=$id('vReason').value;
        $id('vReviewBox').innerHTML='<h4>بازبینی درخواست</h4><p>'+esc(OP_NAMES[op])+' — '+ids.length+' دارایی</p><ul>'+ids.map(function(id){return '<li>'+esc(labelOf(findRow('equipment',id)))+'</li>';}).join('')+'</ul><button class="mq-assets-btn primary" id="vCommit" '+(!V11.ready||committed?'disabled':'')+'>ثبت نهایی درخواست</button>';
        $id('vCommit').onclick=function(){if(committed||V11.busy)return;V11.busy=true;this.disabled=true;
            operations({action:'start',operation:op,ids:ids,target:target,reason:reason,dateLabel:new Intl.DateTimeFormat('fa-IR',{year:'numeric',month:'2-digit',day:'2-digit'}).format(new Date()),token:token}).then(function(r){committed=true;V11.selected={};V11.states={};$id('vProcessContent').innerHTML='<h3>درخواست '+esc(r.parentKey)+' ثبت شد</h3><p>'+esc(r.message)+'</p>'+vRequestLink(r.parentKey);loadAssets('mqAssetsHost','mqAssetSearch');}).catch(function(e){vMessage(vError(e));if($id('vCommit'))$id('vCommit').disabled=false;}).finally(function(){V11.busy=false;});
        };
    }
    $id('vDialog').querySelectorAll('[data-vop]').forEach(function(b){b.onclick=function(){if(V11.busy||committed)return;op=b.dataset.vop;$id('vDialog').querySelectorAll('[data-vop]').forEach(function(x){x.classList.toggle('primary',x===b);});Promise.all([apiGet('location').catch(function(){return [];}),apiGet('department'),apiGet('responsible'),loadExtraEquipment().catch(function(){return [];})]).then(function(){if(op)form();}).catch(function(e){vMessage(vError(e));});};});
    vReadStates([]).catch(function(e){vMessage(vError(e));});
}
document.addEventListener('keydown',function(e){var el=$id('vDialog');if(!el||el.hidden)return;if(e.key==='Escape')vClose();if(e.key==='Tab'){var list=Array.from(el.querySelectorAll('button:not([disabled]),input:not([disabled]),select,textarea')).filter(function(x){return x.offsetParent!==null;});if(!list.length)return;var first=list[0],last=list[list.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus();}}});

/* Full metadata-driven equipment editor, V12. */
function vEditDefinitions(){
    var excluded=[6265,6270,6366,6401];
    var captions={6261:'کد دارایی',6263:'تاریخ ایجاد',6264:'آخرین تغییر',6267:'شناسه دستگاه',6269:'شماره اموال',6271:'تاریخ خرید',6272:'فروشنده',6277:'بخش بهره‌بردار / موقعیت مکانی فعلی',6279:'وضعیت',6644:'مدل دستگاه',6698:'آزمایشی'};
    var segments=[['مشخصات پایه',[6261,6263,6264,6644,6267,6268,6269]],['فنی و اجزا',[6284,6285,6286,6400,6290,6402,6291]],['مالی و خرید',[6271,6272,6273,6274,6287,6671]],['موقعیت و مسئولان',[6277,6392,6282,6283,6396]],['وضعیت و تاریخ‌ها',[6279,6280,6281,6288,6289,6275,6276,6365,6390,6649,6672]]];
    var fields=Object.keys(equipmentMetadata).map(function(key){var m=equipmentMetadata[key],id=Number(key),known=EQUIPMENT_FIELDS.find(function(f){return f[0]===id;});
        var kind=m.objectReference||String(m.type)==='REFERENCED_OBJECT'?'ref':m.dateTimeType?'datetime-local':m.dateType?'date':m.booleanType?'boolean':m.numericType?'number':String(m.options||'').trim()||id===6279?'select':'text';
        var bucket=segments.findIndex(function(s){return s[1].indexOf(id)>=0;});
        return {id:id,meta:m,label:captions[id]||(known?known[2]:publicMessage(m.name)),kind:kind,segment:bucket<0?5:bucket,multi:Number(m.maximumCardinality)>1||Number(m.maximumCardinality)===-1,required:Number(m.minimumCardinality)>0,editable:[6261,6263,6264].indexOf(id)<0&&['DEFAULT','REFERENCED_OBJECT'].indexOf(String(m.type))>=0};
    }).filter(function(f){return excluded.indexOf(f.id)<0;}).sort(function(a,b){return a.segment-b.segment||a.id-b.id;});
    return {fields:fields,segments:segments.map(function(x){return x[0];}).concat(['سایر اطلاعات'])};
}
function vEdit(id){
    var row=findRow('equipment',id);if(!row)return;
    if(!vDialog('ویرایش دارایی — '+(row.key||id),'<div class="wz-loading">در حال دریافت تمام فیلدهای دارایی…</div>'))return;
    var session=++V11.editSession||1;V11.editSession=session;
    var dialog=$id('vDialog');
    jfetch(API.read+'?kind=metadata').then(function(r){
        if(dialog.hidden||session!==V11.editSession)return null;
        equipmentMetadata={};((r.metadata.equipment||{}).attributes||[]).forEach(function(a){equipmentMetadata[String(a.id)]=a;});
        var def=vEditDefinitions();
        return Promise.all(def.fields.filter(function(f){return f.kind==='ref';}).map(function(f){return apiGet('equipmentRef_'+f.id).then(function(rows){f.rows=rows;});})).then(function(){return def;});
    }).then(function(def){
        if(!def||dialog.hidden||session!==V11.editSession)return;
        var fields=def.fields,initial={},editing=true;
        function options(f){
            var rows=f.kind==='ref'?(f.rows||[]):f.kind==='boolean'?[{id:'true',label:'بله'},{id:'false',label:'خیر'}]:String(f.meta.options||'').split(/[,;\r\n]+/).map(function(s){return s.trim();}).filter(Boolean).map(function(v){return {id:v,label:optionCaption(v)};});
            if(f.id===6279&&!rows.length)rows=Object.keys(STATUS_FA).map(function(k){return {id:k,label:STATUS_FA[k]};});
            if(f.id===6280)rows=v33AccessOptions(f.meta);
            rows=rows.slice();attrList(row,f.id).forEach(function(v){if(!rows.some(function(r){return String(r.id)===String(v);}))rows.push({id:v,label:f.kind==='ref'?'مقدار ثبت‌شده: '+v:optionCaption(v)});});
            return rows;
        }
        function render(f){
            var cid='vAll'+f.id,values=attrList(row,f.id),value=values[0]||'',body='';
            if(f.id===6261)value=row.key||value;
            if(!f.editable)return '<div class="wz-field"><label>'+esc(f.label)+'</label><input readonly value="'+esc(f.kind==='date'||f.kind==='datetime-local'?displayJalali(value,f.kind==='datetime-local'):f.id===6261?value:values.join('، '))+'"></div>';
            if(['ref','select','boolean'].indexOf(f.kind)>=0){
                body='<select id="'+cid+'" '+(f.multi?'multiple size="5"':'')+' '+(f.required?'required':'')+'>'+(!f.multi?'<option value="">انتخاب کنید</option>':'')+options(f).map(function(r){return '<option value="'+esc(r.id)+'" '+(values.indexOf(String(r.id))>=0?'selected':'')+'>'+esc(labelOf(r))+'</option>';}).join('')+'</select>';
            }else if(f.kind==='date'||f.kind==='datetime-local')return jalaliField(cid,f.label,value,f.kind==='datetime-local',f.required);
            else if(f.multi)body='<textarea id="'+cid+'" rows="4" '+(f.required?'required':'')+'>'+esc(values.join('\n'))+'</textarea><small>هر مقدار در یک خط</small>';
            else body='<input id="'+cid+'" type="'+(f.kind==='number'?'number':'text')+'" '+(f.kind==='number'?'step="any"':'')+' '+(f.required?'required':'')+' value="'+esc(value)+'">';
            return '<div class="wz-field"><label for="'+cid+'">'+esc(f.label)+(f.required?' *':'')+'</label>'+body+'</div>';
        }
        dialog.querySelector('.v-dialog-body').id='vEditBody';
        var groups=def.segments.map(function(label,i){return {index:i,label:label,fields:fields.filter(function(f){return f.segment===i;})};}).filter(function(g){return g.fields.length;});
        $id('vEditBody').innerHTML='<div class="v-editor-tabs" role="tablist">'+groups.map(function(g,j){return '<button type="button" role="tab" id="vEditTab'+g.index+'" data-edit-tab="'+g.index+'" aria-controls="vEditPanel'+g.index+'" aria-selected="'+(j===0)+'">'+g.label+'</button>';}).join('')+'</div><div class="v-editor-sections">'+groups.map(function(g,j){return '<section role="tabpanel" id="vEditPanel'+g.index+'" aria-labelledby="vEditTab'+g.index+'" data-edit-panel="'+g.index+'" '+(j?'hidden':'')+'><h4>'+g.label+'</h4><div class="v-fields">'+g.fields.map(render).join('')+'</div></section>';}).join('')+'</div><div class="v-editor-footer"><span>فقط فیلدهای تغییرکرده ذخیره می‌شوند.</span><button type="button" class="mq-assets-btn primary" id="vEditSave">ثبت اقدام</button></div>';
        function tab(index){mqCloseDatePopover();dialog.querySelectorAll('[data-edit-panel]').forEach(function(p){p.hidden=p.dataset.editPanel!==String(index);});dialog.querySelectorAll('[data-edit-tab]').forEach(function(b){var active=b.dataset.editTab===String(index);b.classList.toggle('active',active);b.setAttribute('aria-selected',String(active));b.tabIndex=active?0:-1;});}
        dialog.querySelectorAll('[data-edit-tab]').forEach(function(b){b.onclick=function(){tab(b.dataset.editTab);};b.onkeydown=function(e){if(['ArrowLeft','ArrowRight','Home','End'].indexOf(e.key)<0)return;e.preventDefault();var buttons=Array.from(dialog.querySelectorAll('[data-edit-tab]')),i=buttons.indexOf(b);i=e.key==='Home'?0:e.key==='End'?buttons.length-1:(i+(e.key==='ArrowLeft'?1:-1)+buttons.length)%buttons.length;tab(buttons[i].dataset.editTab);buttons[i].focus();};});tab(groups[0].index);
        function raw(f){var el=$id('vAll'+f.id);return el.multiple?Array.from(el.selectedOptions).map(function(o){return o.value;}):el.value;}
        fields.filter(function(f){return f.editable;}).forEach(function(f){initial[f.id]=JSON.stringify(raw(f));});
        bindJalaliInputs();
        $id('vEditSave').onclick=function(){
            if(V11.busy||!editing)return;
            var values={},expected={};
            try{fields.filter(function(f){return f.editable;}).forEach(function(f){var el=$id('vAll'+f.id),value=raw(f);if(JSON.stringify(value)===initial[f.id])return;
                if(!el.checkValidity()){tab(f.segment);el.focus();el.reportValidity();throw new Error('مقدار «'+f.label+'» معتبر نیست.');}
                if(f.kind==='date'||f.kind==='datetime-local'){try{value=parseJalali(value,f.kind==='datetime-local');}catch(e){tab(f.segment);el.focus();throw e;}}
                else if(f.multi&&!el.multiple)value=String(value).split(/\r?\n/).map(function(v){return v.trim();}).filter(Boolean);
                values[String(f.id)]=value;expected[String(f.id)]=attrList(row,f.id);
            });}catch(e){vMessage(vError(e));return;}
            if(!Object.keys(values).length)return vMessage('تغییری وارد نشده است.');
            mqCloseDatePopover();V11.busy=true;this.disabled=true;
            operations({action:'edit',id:String(id),values:values,expected:expected}).then(function(){editing=false;V11.busy=false;vClose();V11.states={};loadAssets('mqAssetsHost','mqAssetSearch');}).catch(function(e){vMessage(vError(e));}).finally(function(){V11.busy=false;if($id('vEditSave'))$id('vEditSave').disabled=false;});
        };
    }).catch(function(e){if(!dialog.hidden&&session===V11.editSession){dialog.querySelector('.v-dialog-body').textContent='دریافت فرم ویرایش کامل نشد.';vMessage(vError(e));}});
}

/* Live process progress. The only polling action is state (read-only). */
var V13_LIVE={busy:false,sequence:0,lastAsset:null,error:'',updated:0};
function vTimelineStates(s){
    var path=s.stages||[],current=path.findIndex(function(step){return String(step.id)===String(s.statusId);});
    return path.map(function(step,i){
        var left=step.leftAt,entered=step.enteredAt,confirmed=!!(entered&&left&&left>=entered);
        var state=i===current?(s.active?'current':s.completed?'done':'pending'):(i<current&&confirmed?'done':'pending');
        return {id:step.id,label:step.name,state:state,enteredAt:entered||'',leftAt:left||''};
    });
}
function vTimelineHost(){
    var root=$id('v11Summary');if(!root)return null;
    var host=$id('vLiveTimeline');if(!host){host=document.createElement('section');host.id='vLiveTimeline';host.className='v-live-timeline';host.setAttribute('aria-label','روند فرایند دارایی');root.parentNode.appendChild(host);}
    return host;
}
function vRenderTimeline(row,s){
    var host=vTimelineHost();if(!host)return;
    host.innerHTML='<header><strong>'+(s.active?'روند فرایند':s.hasProcess?'آخرین فرایند':'روند فرایند')+'</strong></header>';
    if(!s.checked){host.innerHTML+='<p>در حال دریافت اطلاعات…</p>';return;}
    if(!s.hasProcess&&!s.issueKey){host.innerHTML+='<p>فرایند ثبت‌شده‌ای برای این دارایی یافت نشد.</p>';return;}
    var steps=vTimelineStates(s);
    host.innerHTML+='<ol class="v-circle-track" aria-label="مراحل فرایند">'+steps.map(function(step,i){return '<li class="v-circle-step '+step.state+'" '+(step.state==='current'?'aria-current="step"':'')+'><div class="v-circle-rail"><span class="v-circle-node" aria-hidden="true">'+(step.state==='done'?'✓':step.state==='current'?'<i></i>':'')+'</span><span class="v-circle-line '+(steps[i+1]&&step.state==='done'&&(steps[i+1].state==='done'||steps[i+1].state==='current')?'done':'')+'"></span></div><strong>'+esc(step.label)+'</strong><small>'+esc(step.state==='current'?'مرحلهٔ جاری':step.state==='done'?'انجام‌شده':step.enteredAt?'قبلاً طی شده':'در انتظار')+'</small></li>';}).join('')+'</ol>'+vRequestLink(s.issueKey);
    if(s.historyWarning)host.innerHTML+='<p class="v-timeline-warning">اطلاعات سابقهٔ مراحل کامل نیست.</p>';
    if(steps.length&&!steps.some(function(x){return String(x.id)===String(s.statusId);}))host.innerHTML+='<p class="v-timeline-warning">وضعیت جاری در مسیر نمایش تنظیم‌شده نیست.</p>';
}
function vPanel(id){
    var row=findRow('equipment',id),box=$id('v11Summary');if(!row||!box)return;
    if(V13_LIVE.lastAsset!==String(id)){V13_LIVE.sequence++;V13_LIVE.lastAsset=String(id);V13_LIVE.error='';V13_LIVE.updated=0;}
    V11.row=String(id);var s=vState(row),a=V11.attrs;
    var labels={handover:'در حال تحویل کاربری',entry:'در حال ورود به انبار',exit:'در حال خروج از انبار',scrap:'در حال اسقاط'};
    var data=[['مسئول بهره‌بردار',vRef('responsible',row,a.responsible)],['بخش بهره‌بردار',vRef('department',row,a.department)],['موقعیت فعلی',vRef('location',row,a.location||6277)],['وضعیت',statusText(attr(row,a.status))],['وضعیت دسترسی',vAccessLabel(attr(row,a.availability))],['وضعیت اموال‌داری',s.active?(s.conflict?'چند فرایند فعال؛ نیازمند بررسی':labels[s.operation]||'در حال پردازش'):s.checked?'پایدار':'در حال بررسی']];
    box.innerHTML='<strong>'+esc(attr(row,ATTR.devName)||row.label)+'</strong>'+data.map(function(d){return '<div class="v-summary-row"><span>'+esc(d[0])+'</span><b>'+(d[0]==='وضعیت'?vStatusMark(attr(row,a.status)):'')+esc(d[1])+'</b></div>';}).join('');
    vRenderTimeline(row,s);
}
function vLiveRefresh(){
    if(V13_LIVE.busy||V11.busy||document.hidden||!$id('v11Summary')||!V11.row)return;
    var id=String(V11.row),seq=V13_LIVE.sequence;V13_LIVE.busy=true;
    operations({action:'state',ids:[id]}).then(function(r){
        if(seq!==V13_LIVE.sequence||String(V11.row)!==id||!$id('v11Summary'))return;
        if(!r.states||!r.states[id])throw new Error('پاسخ بررسی وضعیت کامل نیست.');
        V11.states[id]=Object.assign({checked:true},r.states[id]);V13_LIVE.error='';V13_LIVE.updated=Date.now();
        V11.ready=r.ready;V11.missing=r.missing||[];Object.assign(V11.attrs,r.attributes||{});
        vPanel(id);
        document.querySelectorAll('[data-vselect="'+id+'"],[data-vedit="'+id+'"]').forEach(function(b){b.disabled=!!r.states[id].active;if(r.states[id].active&&b.type==='checkbox'){b.checked=false;delete V11.selected[id];}});
    }).catch(function(e){if(seq===V13_LIVE.sequence){V13_LIVE.error=vError(e);var row=findRow('equipment',id);if(row)vRenderTimeline(row,vState(row));}}).finally(function(){V13_LIVE.busy=false;});
}
setInterval(vLiveRefresh,5000);
document.addEventListener('visibilitychange',function(){if(!document.hidden)vLiveRefresh();});
window.addEventListener('focus',vLiveRefresh);

/* Equipment status summary is calculated over the complete equipment list. */
var V14_STATUS={filter:'all'};
function vAssetStatusGroup(row){
    var raw=searchNorm(attr(row,ATTR.status)).replace(/\s+/g,'');
    if(raw==='active'||raw==='فعال')return 'active';
    if(raw==='inactive'||raw==='غیرفعال'||raw==='غيرفعال')return 'inactive';
    return 'other';
}
function vAssetStatusCounts(rows){
    var counts={all:rows.length,active:0,inactive:0,other:0};
    rows.forEach(function(row){counts[vAssetStatusGroup(row)]++;});return counts;
}
function vRenderStatusDashboard(rows){
    var host=$id('vAssetDashboard');if(!host)return;
    var counts=vAssetStatusCounts(rows),fa=new Intl.NumberFormat('fa-IR');
    var icons={all:'<rect x="3" y="3" width="7" height="7" rx="2"/><rect x="14" y="3" width="7" height="7" rx="2"/><rect x="3" y="14" width="7" height="7" rx="2"/><rect x="14" y="14" width="7" height="7" rx="2"/>',active:'<circle cx="12" cy="12" r="9"/><path d="m8 12 3 3 5-6"/>',inactive:'<circle cx="12" cy="12" r="9"/><path d="M9 8v8m6-8v8"/>',other:'<path d="m12 3 10 17H2Z"/><path d="M12 9v4m0 3v1"/>'};
    var names={all:'کل دارایی‌ها',active:'دارایی‌های فعال',inactive:'دارایی‌های غیرفعال',other:'سایر وضعیت‌ها'};
    host.innerHTML='<div class="v-dashboard-heading"><div><strong>نمای کلی دارایی‌ها</strong><span>آمار کل دارایی‌ها؛ مستقل از جست‌وجو و صفحه‌بندی</span></div><small>برای فیلتر لیست، یک کارت را انتخاب کنید.</small></div><div class="v-status-cards">'+['all','active','inactive','other'].map(function(key){var value=counts[key],percent=counts.all?Math.round(value/counts.all*100):0;return '<button type="button" class="v-stat-card '+key+(V14_STATUS.filter===key?' selected':'')+'" data-status-card="'+key+'" aria-pressed="'+(V14_STATUS.filter===key)+'"><span class="v-stat-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+icons[key]+'</svg></span><span class="v-stat-label">'+names[key]+'</span><strong>'+fa.format(value)+'</strong><span class="v-stat-bottom">'+(key==='all'?'نمایش همهٔ وضعیت‌ها':fa.format(percent)+'٪ از کل دارایی‌ها')+'</span><span class="v-stat-meter" aria-hidden="true"><i style="width:'+percent+'%"></i></span></button>';}).join('')+'</div>';
    host.querySelectorAll('[data-status-card]').forEach(function(b){b.onclick=function(){V14_STATUS.filter=b.dataset.statusCard;ASSET_PAGE.page=1;vRenderStatusDashboard(rows);if(V11.paint)V11.paint();};});
}


/* V30 logistics navigation override: preserve existing backend routes. */
function renderLogistics(){
 state.screen='logistics';heroTitle.textContent='مدیریت تأمین و لجستیک';heroDesc.textContent='دسته موردنظر را انتخاب کنید.';backButton.style.display='inline-block';buildBreadcrumb(['مدیریت تجهیزات','مدیریت تأمین و لجستیک']);
 var options=[['کالاهای مصرفی','consumable',ICONS.consumable],['دارایی‌های ثابت','fixed',ICONS.property],['تأمین‌کننده‌ها','suppliers',ICONS.supply]];
 view.innerHTML='<div class="mq-card-grid">'+options.map(function(o){return '<button type="button" class="mq-module-card mq-has-children" data-logistic="'+o[1]+'"><span class="mq-module-icon"><svg viewBox="0 0 24 24">'+o[2]+'</svg></span><span class="mq-module-name">'+o[0]+'</span><span class="mq-hierarchy-arrow" aria-hidden="true">↙</span></button>';}).join('')+'</div>';
 view.querySelectorAll('[data-logistic]').forEach(function(btn){btn.onclick=function(){var k=btn.dataset.logistic;if(k==='suppliers')vSupplierScreen();else if(k==='fixed')renderAssetSections('newAsset');else{state.screen='consumable';renderSimplePage('کالاهای مصرفی');mqTreeActivate('consumable');}};});mqTreeActivate('logistics');
}
function vSupplierScreen(){
 state.screen='suppliers';heroTitle.textContent='تأمین‌کننده‌ها';heroDesc.textContent='فهرست تأمین‌کنندگان ثبت‌شده در سامانه دارایی‌ها';backButton.style.display='inline-block';buildBreadcrumb(['مدیریت تجهیزات','مدیریت تأمین و لجستیک','تأمین‌کننده‌ها']);
 mqTreeActivate('suppliers');view.innerHTML='<div class="mq-preview"><div class="mq-preview-title">تأمین‌کننده‌ها</div><div class="mq-assets-head"><input class="mq-edit-search" id="vSupplierSearch" placeholder="جست‌وجوی تأمین‌کننده"><button type="button" class="mq-assets-btn" id="vSupplierReload">به‌روزرسانی لیست</button></div><div id="vSupplierList" class="mq-assets-host"><div class="wz-loading">در حال دریافت اطلاعات…</div></div></div>';
 var rows=[];function paint(){var host=$id('vSupplierList');if(!host)return;var q=searchNorm($id('vSupplierSearch').value);var subset=rows.filter(function(r){return searchNorm([r.key,r.label,r.id].join(' ')).indexOf(q)>=0;}).slice(0,250);host.innerHTML='<div class="mq-tbl-wrap"><table class="mq-tbl"><thead><tr><th>شناسه</th><th>نام تأمین‌کننده</th></tr></thead><tbody>'+subset.map(function(r){return '<tr><td>'+esc(r.key||r.id)+'</td><td>'+esc(labelOf(r))+'</td></tr>';}).join('')+'</tbody></table></div><p>'+subset.length+' مورد نمایش داده شده</p>';}
 function load(force){apiGet('supplier',force).then(function(r){rows=r;paint();}).catch(function(e){$id('vSupplierList').textContent=vError(e);});}
 $id('vSupplierSearch').oninput=paint;$id('vSupplierReload').onclick=function(){load(true);};load(false);
}

/* MEDIQ MAINTENANCE V1 - dashboard embedded module */
var MM={tab:'overview',overview:null,plans:[],suppliers:[],equipment:[],activities:[]};
/* MediQ V37.2: maintenance requests always target Confluence root, not AJS.contextPath. */
var MM_PROXY_ROOT = window.location.protocol + '//' + window.location.host + '/rest/scriptrunner/latest/custom/';
function mmRequest(url, options) {
  return jfetch(url, options).catch(function(err) {
    var message = (err && err.message) ? err.message : String(err);
    var enriched = new Error(message + ' | آدرس درخواست: ' + url + ' | لطفاً نسخه صفحه و Network مرورگر را بررسی کنید.');
    enriched.status = err && err.status;
    throw enriched;
  });
}
function mmApi(action,values) {
  var q='?action='+encodeURIComponent(action);
  if(values&&values.type) q+='&type='+encodeURIComponent(values.type);
  return mmRequest(MM_PROXY_ROOT+'mediqMaintenanceProxy'+q,{method:'GET',cache:'no-store'});
}
function mmWrite(action,data) {
  return mmRequest(MM_PROXY_ROOT+'mediqMaintenanceProxyWrite',{
    method:'POST',headers:{'Content-Type':'application/json','X-Atlassian-Token':'no-check'},
    body:JSON.stringify(Object.assign({action:action},data||{}))
  });
}
function mmBtn(text,action){return '<button type="button" class="mq-assets-btn" data-mm="'+esc(action)+'">'+esc(text)+'</button>';}
function mmTable(headers,rows){return '<div class="mq-tbl-wrap"><table class="mq-tbl"><thead><tr>'+headers.map(function(h){return '<th>'+esc(h)+'</th>';}).join('')+'</tr></thead><tbody>'+(rows.length?rows.map(function(c){return '<tr>'+c.map(function(v){return '<td>'+v+'</td>';}).join('')+'</tr>';}).join(''):'<tr><td colspan="'+headers.length+'">موردی یافت نشد.</td></tr>')+'</tbody></table></div>';}
function mmSelect(id,label,items,placeholder){return '<label>'+label+'<select id="'+id+'"><option value="">'+(placeholder||'انتخاب کنید')+'</option>'+items.map(function(x){return '<option value="'+esc(x.key)+'">'+esc(x.label||x.name||x.key)+'</option>';}).join('')+'</select></label>';}
function mmField(id,label,type){return '<label>'+label+'<input id="'+id+'" type="'+(type||'text')+'"></label>';}
function mmTxt(id,label){return '<label>'+label+'<textarea id="'+id+'" rows="3"></textarea></label>';}
function mmVal(id){return clean(($id(id)||{}).value);}
function mmFaDate(raw){
 if(!raw)return '—';var s=String(raw).trim();var d=null;
 var iso=s.match(/^(\d{4})-(\d{2})-(\d{2})/);
 if(iso)d=new Date(Date.UTC(+iso[1],+iso[2]-1,+iso[3],12));
 else {var y=s.match(/(20\d{2})/), months={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};var en=s.match(/\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d{1,2})\b/);if(en&&y)d=new Date(Date.UTC(+y[1],months[en[1]],+en[2],12));else {var ts=Date.parse(s);if(!isNaN(ts))d=new Date(ts);}}
 if(!d||isNaN(d.getTime()))return 'تاریخ نامشخص';return new Intl.DateTimeFormat('fa-IR-u-ca-persian',{year:'numeric',month:'2-digit',day:'2-digit',timeZone:'UTC'}).format(d);
}
function mmIsoDate(v){var value=String(v||'').replace(/[۰-۹]/g,function(c){return String('۰۱۲۳۴۵۶۷۸۹'.indexOf(c));}).replace(/[٠-٩]/g,function(c){return String('٠١٢٣٤٥٦٧٨٩'.indexOf(c));});if(/^\d{4}-\d{2}-\d{2}$/.test(value))return value;var m=value.match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/);if(!m)throw new Error('تاریخ شمسی را به صورت ۱۴۰۵/۰۸/۰۹ وارد کنید.');var y=+m[1],mo=+m[2],day=+m[3];if(y<1300||y>1600||mo<1||mo>12||day<1||day>31)throw new Error('تاریخ شمسی معتبر نیست.');var fmt=new Intl.DateTimeFormat('en-US-u-ca-persian',{year:'numeric',month:'numeric',day:'numeric',timeZone:'UTC'});var target=y*10000+mo*100+day;var low=Date.UTC(y+620,0,1),high=Date.UTC(y+623,11,31),guess=null;while(low<=high){var mid=Math.floor((low+high)/2/86400000)*86400000;var parts=fmt.formatToParts(new Date(mid));var d={};parts.forEach(function(p){if(p.type==='year'||p.type==='month'||p.type==='day')d[p.type]=+p.value;});var n=d.year*10000+d.month*100+d.day;if(n===target){guess=new Date(mid).toISOString().slice(0,10);break;}if(n<target)low=mid+86400000;else high=mid-86400000;}if(!guess)throw new Error('تاریخ شمسی وارد شده معتبر نیست.');return guess;}
function mmPlanState(p){var end=p.end||p.endDate||p.expiryDate;if(end){/* expiration is enforced in Jira Assets by scheduled job, never a display-only status */}var x=String(p.stateName||p.state||'').trim().toUpperCase();if(x==='1'||x==='ACTIVE'||x==='فعال')return 'فعال';if(x==='6'||x==='2'||x==='INACTIVE'||x==='STOPPED'||x==='غیرفعال'||x==='غیرفعال شده')return 'غیرفعال';return x?('وضعیت تعریف‌نشده ('+x+')'):'نامشخص';}
function mmKind(k){return String(k||'').toUpperCase()==='INSPECTION'?'بازرسی':'نگهداری پیشگیرانه';}
function mmPlanToggleBtn(p){var active=mmPlanState(p)==='فعال';return '<button type="button" class="mq-assets-btn" data-mm-plan-toggle="'+esc(p.key)+'" data-mm-plan-state="'+(active?'inactive':'active')+'">'+(active?'غیرفعال‌کردن':'فعال‌کردن')+'</button>'; }
function mmJDateField(id,label){return '<label>'+label+'<span class="mm-date-line"><input id="'+id+'" type="text" inputmode="none" placeholder="برای انتخاب تاریخ کلیک کنید" dir="ltr" autocomplete="off" readonly aria-label="انتخاب تاریخ شمسی" aria-haspopup="dialog" aria-expanded="false"></span><span id="'+id+'_cal" class="mm-cal" role="dialog" aria-label="تقویم شمسی" hidden></span></label>';}
function mmCalendar(id){var input=$id(id),host=$id(id+'_cal');if(!input||!host)return;var wasOpen=!host.hidden;document.querySelectorAll('#mmContent .mm-cal').forEach(function(h){h.hidden=true;});if(wasOpen){input.setAttribute('aria-expanded','false');return;} var today=new Intl.DateTimeFormat('en-US-u-ca-persian',{year:'numeric',month:'numeric',day:'numeric',timeZone:'UTC'}).formatToParts(new Date());var p={};today.forEach(function(a){if(a.type==='year'||a.type==='month'||a.type==='day')p[a.type]=+a.value;});var match=String(input.value||'').replace(/[۰-۹]/g,function(c){return '۰۱۲۳۴۵۶۷۸۹'.indexOf(c);}).match(/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/);var year=match?+match[1]:p.year,month=match?+match[2]:p.month;var months=['فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند'];function render(){var count=month<=6?31:month<=11?30:30;try{mmIsoDate(year+'/'+month+'/30');}catch(e){if(month===12)count=29;}var html='<div class="mm-cal-head"><button type="button" data-cal-shift="-1">ماه قبل</button><strong>'+months[month-1]+' '+year.toLocaleString('fa-IR',{useGrouping:false})+'</strong><button type="button" data-cal-shift="1">ماه بعد</button></div><div class="mm-cal-days">'+['ش','ی','د','س','چ','پ','ج'].map(function(x){return '<b>'+x+'</b>';}).join('');var first=new Date(mmIsoDate(year+'/'+month+'/1')+'T12:00:00Z').getUTCDay();var offset=(first+1)%7;for(var i=0;i<offset;i++)html+='<i></i>';for(var day=1;day<=count;day++){var iso=mmIsoDate(year+'/'+month+'/'+day);var now=new Date(),todayIso=now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0');var disabled=id==='mm_start'&&iso<todayIso;html+='<button type="button" data-cal-day="'+day+'"'+(disabled?' disabled title="تاریخ گذشته مجاز نیست"':'')+'>'+day.toLocaleString('fa-IR')+'</button>';}html+='</div>';host.innerHTML=html;host.querySelectorAll('[data-cal-shift]').forEach(function(b){b.onclick=function(){month+=Number(b.dataset.calShift);if(month<1){month=12;year--;}if(month>12){month=1;year++;}render();};});host.querySelectorAll('[data-cal-day]').forEach(function(b){b.onclick=function(){var pad=function(n){return String(n).padStart(2,'0');};input.value=(year+'/'+pad(month)+'/'+pad(+b.dataset.calDay)).replace(/\d/g,function(n){return '۰۱۲۳۴۵۶۷۸۹'[+n];});host.hidden=true;input.setAttribute('aria-expanded','false');};});}host.hidden=false;input.setAttribute('aria-expanded','true');render();requestAnimationFrame(function(){if(host.hidden||!input.isConnected)return;var r=input.getBoundingClientRect(),w=Math.min(340,window.innerWidth-20),h=Math.min(host.offsetHeight,window.innerHeight-20);var top=r.bottom+8;if(top+h>window.innerHeight-8)top=Math.max(8,r.top-h-8);var left=Math.max(8,Math.min(window.innerWidth-w-8,r.right-w));host.style.top=top+'px';host.style.left=left+'px';host.style.width=w+'px';});}
function mmDonut(items,title){var sum=items.reduce(function(n,x){return n+x.n;},0);var angle=0,stops=[];items.forEach(function(x){var a=sum?x.n/sum*100:0;stops.push(x.color+' '+angle+'% '+(angle+a)+'%');angle+=a;});return '<div class="mm-chart-card"><strong>'+esc(title)+'</strong><div class="mm-donut" style="background:conic-gradient('+(stops.join(',')||'#dce9f2 0% 100%')+')"><div>'+sum.toLocaleString('fa-IR')+'<small>مجموع</small></div></div><div class="mm-chart-legend">'+items.map(function(x){return '<span><i style="background:'+x.color+'"></i>'+esc(x.label)+' <b>'+x.n.toLocaleString('fa-IR')+'</b></span>';}).join('')+'</div></div>';}
function mmEvaluationDashboard(rows){var scores=[1,2,3,4,5].map(function(v){return {label:v.toLocaleString('fa-IR')+' ستاره',n:rows.filter(function(r){return +r.score===v;}).length,color:['#e66b61','#f5a35d','#e4c45d','#57a8d3','#29a38b'][v-1]};});return '<div class="mm-chart-row">'+mmDonut(scores,'توزیع امتیازهای تعمیرکاران')+'</div>';}
function mmSupplyForm(){return mmForm(mmField('mm_name','نام شرکت / تعمیرکار')+mmField('mm_phone','تلفن')+mmField('mm_address','آدرس')+mmField('mm_contact','نام رابط')+mmField('mm_contactPhone','تلفن رابط')+'<label>گروه تأمین‌کننده<select id="mm_category"><option value="">انتخاب کنید</option><option value="(Consumables)">مصرفی</option><option value="(Capital)">سرمایه‌ای</option><option value="(Service)">سرویس</option><option value="(Spare Parts)">قطعات</option><option value="(Indirect)">زیرساخت</option></select></label>','supplier.create',['name','phone','address','contact','contactPhone','category']);}

function mmSave(action,fields){
 var button=$id('mmSubmit'),notice=$id('mmNotice'),fileInput=$id('mmLocalAttachment');
 if(!button||!notice)return;
 var payload={};fields.forEach(function(k){payload[k]=mmVal('mm_'+k);});
 try{if(action==='pm.create'||action==='contract.save'){if(payload.start)payload.start=mmIsoDate(payload.start);if(payload.end)payload.end=mmIsoDate(payload.end);if(payload.end&&payload.start&&payload.end<payload.start)throw new Error('تاریخ پایان پیش از شروع است.');}}
 catch(e){notice.textContent=e.message;return;}
 button.disabled=true;notice.textContent='در حال ثبت...';
 var file=fileInput&&fileInput.files&&fileInput.files[0];
 var work;
 if(action==='contract.save')work=mmCreateContractWithPage(payload,file);
 else if(action==='document.save')work=mmCreateDocumentWithPage(payload,file);
 else if(file)work=Promise.reject(new Error('پیوست این نوع فرم هنوز به فضای ذخیره متصل نیست. اطلاعات ثبت نشد.'));
 else work=mmWrite(action,payload);
 work.then(function(res){notice.textContent='با موفقیت ثبت شد'+(res.pageId?' — صفحه '+res.pageId:'');mmLoad(MM.tab);}).catch(function(err){notice.textContent=vError(err)||err.message;}).finally(function(){button.disabled=false;});
}
/* Confluence REST uses the current logged-in user and its native attachment permissions. */
function mmConfCall(path,options){return fetch(window.location.origin+'/rest/api/'+path,Object.assign({credentials:'same-origin',headers:{'Accept':'application/json'}},options||{})).then(async function(res){var raw=await res.text(),value={};try{value=raw?JSON.parse(raw):{};}catch(e){value={message:raw.slice(0,250)};}if(!res.ok)throw new Error('Confluence HTTP '+res.status+': '+(value.message||JSON.stringify(value).slice(0,350)));return value;});}
function mmConfJson(path,method,body){return mmConfCall(path,{method:method,headers:{'Content-Type':'application/json','Accept':'application/json','X-Atlassian-Token':'no-check'},body:JSON.stringify(body)});}
function mmConfClean(t){return String(t||'').replace(/[^\p{L}\p{N} _().،-]/gu,' ').trim().slice(0,120);}
function mmConfPage(id){return mmConfCall('content/'+encodeURIComponent(id)+'?expand=space,ancestors');}
function mmConfEnsure(parent,title,content){var space=parent.space.key,encoded=encodeURIComponent(title);return mmConfCall('content?spaceKey='+encodeURIComponent(space)+'&title='+encoded+'&limit=20').then(function(result){var match=(result.results||[]).find(function(p){return p.title===title;});if(match){var ancestors=match.ancestors;if(!ancestors)return mmConfPage(match.id).then(function(detail){if(!(detail.ancestors||[]).some(function(x){return String(x.id)===String(parent.id);}))throw new Error('صفحه هم‌نام در شاخه دیگری وجود دارد: '+title);return detail;});if(!(ancestors||[]).some(function(x){return String(x.id)===String(parent.id);}))throw new Error('صفحه هم‌نام در شاخه دیگری وجود دارد: '+title);return match;}
 return mmConfJson('content','POST',{type:'page',title:title,space:{key:space},ancestors:[{id:String(parent.id)}],body:{storage:{value:content||'<p> </p>',representation:'storage'}}});});}
function mmConfUpload(pageId,file){if(!file)return Promise.resolve(null);if(file.size>10*1024*1024)return Promise.reject(new Error('حداکثر حجم پیوست ۱۰ مگابایت است.'));var data=new FormData();data.append('file',file,file.name);data.append('minorEdit','true');return mmConfCall('content/'+encodeURIComponent(pageId)+'/child/attachment',{method:'POST',headers:{'X-Atlassian-Token':'no-check'},body:data});}
function mmConfText(s){return String(s==null?'':s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');}
function mmFaMonthYear(iso){var d=new Date(iso+'T12:00:00Z');if(isNaN(+d))throw new Error('تاریخ شروع قرارداد نامعتبر است.');var parts=new Intl.DateTimeFormat('en-US-u-ca-persian',{year:'numeric',month:'2-digit',timeZone:'UTC'}).formatToParts(d);var obj={};parts.forEach(function(x){if(x.type==='year'||x.type==='month')obj[x.type]=x.value;});var names=['فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند'];obj.monthName=names[Number(obj.month)-1]||obj.month;return obj;}
/* Contract list visibility is tied to the actual published Confluence page.
   Never delete underlying records on a failed request (403/5xx/network). */
function mmVisibleContracts(rows){
 return Promise.all((rows||[]).map(function(item){
   var id=String(item.pageId||item.pageID||'').trim();
   if(!id&&item.url){var match=String(item.url).match(/[?&]pageId=(\d+)/i);if(match)id=match[1];}
   if(!/^\d+$/.test(id))return Promise.resolve({item:item,visible:false,unlinked:true});
   return fetch(window.location.origin+'/rest/api/content/'+encodeURIComponent(id)+'?expand=version',{
     credentials:'same-origin',headers:{'Accept':'application/json'},cache:'no-store'
   }).then(function(response){
     if(response.status===404||response.status===410)return {item:item,visible:false};
     if(!response.ok)throw new Error('HTTP '+response.status);
     return response.json().then(function(page){return {item:item,visible:page.status==='current'&&page.type==='page'};});
   }).catch(function(error){return {item:item,visible:true,unverified:true};});
 })).then(function(results){
   return {items:results.filter(function(r){return r.visible;}).map(function(r){return r.item;}),
     unverified:results.filter(function(r){return r.unverified;}).length,
     unlinked:results.filter(function(r){return r.unlinked;}).length};
 });
}
function mmSupplierName(key){var s=(MM.suppliers||[]).find(function(x){return x.key===key;});return s?s.name:key;}
function mmCreateContractWithPage(p,file){if(!p.title||!p.supplier||!p.start||!p.contractType)return Promise.reject(new Error('عنوان، طرف قرارداد، نوع و تاریخ شروع الزامی است.'));
 var types={inspection:'بازرسی',maintenance:'نت',calibration:'کالیبراسیون'},name=types[p.contractType];if(!name)return Promise.reject(new Error('نوع قرارداد نامعتبر است.'));
 var ym=mmFaMonthYear(p.start),rootId='182714881';return mmConfPage(rootId).then(function(root){if(root.title!=='قراردادهای تعمیراتی')throw new Error('شناسه صفحه قراردادها نیاز به بررسی دارد.');return mmConfEnsure(root,'سال '+ym.year,'<p>قراردادهای سال '+ym.year+'</p>');}).then(function(year){return mmConfPage(year.id).then(function(yr){return mmConfEnsure(yr,ym.monthName,'<p>قراردادهای ماه '+ym.month+'</p>');});}).then(function(month){return mmConfPage(month.id).then(function(m){var title='قرارداد '+mmConfClean(p.number||p.title)+' - '+mmConfClean(p.title);var html='<h2>'+mmConfText(p.title)+'</h2><p>نوع: '+name+'</p><p>شماره: '+mmConfText(p.number)+'</p><p>شروع: '+mmConfText(p.start)+'</p><p>پایان: '+mmConfText(p.end)+'</p><p>طرف قرارداد: '+mmConfText(mmSupplierName(p.supplier))+'</p><p>'+mmConfText(p.coverage)+'</p>';return mmConfEnsure(m,title,html);});}).then(function(page){return mmConfUpload(page.id,file).then(function(){p.pageId=String(page.id);p.url=window.location.origin+'/pages/viewpage.action?pageId='+page.id;return mmWrite('contract.save',p).then(function(r){r.pageId=page.id;return r;});});});}
function mmFindDevicePage(key){
 key=String(key||'').trim();
 if(!/^[A-Za-z][A-Za-z0-9_]*-[0-9]+$/.test(key))return Promise.reject(new Error('شناسه دستگاه معتبر نیست.'));
 var cql='type=page and title~"'+key+'"';
 return mmConfCall('content/search?cql='+encodeURIComponent(cql)+'&limit=100').then(function(res){
   var choices=(res.results||[]).filter(function(x){return x.title&&x.title.indexOf(key)>=0;});
   if(choices.length===1)return mmConfPage(choices[0].id);
   if(choices.length>1)throw new Error('برای دستگاه '+key+' چند صفحه پیدا شد؛ باید یک صفحه مرجع مشخص شود.');
   return mmConfPage('182714881').then(function(contracts){
     var ancestor=(contracts.ancestors||[]).slice(-1)[0];
     if(!ancestor)throw new Error('صفحه والد کاتالوگ تجهیزات مشخص نیست.');
     return mmConfPage(ancestor.id).then(function(root){
       return mmConfEnsure(root,'کاتالوگ تجهیزات پزشکی','<p>فهرست تجهیزات و اسناد فنی مدیکیو</p>');
     });
   }).then(function(catalog){return mmConfPage(catalog.id);}).then(function(catalog){
     var row=(MM.equipment||[]).find(function(r){return r.key===key;});
     var caption=mmConfClean(row?labelOf(row):key);
     return mmConfEnsure(catalog,key+' - '+caption,'<h2>'+mmConfText(caption)+'</h2><p>شناسه دستگاه: '+mmConfText(key)+'</p>');
   }).then(function(page){return mmConfPage(page.id);});
 });
}
function mmCreateDocumentWithPage(p,file){if(!p.equipment||!p.title||!p.docType) return Promise.reject(new Error('دستگاه، عنوان و نوع سند الزامی است.'));var names={financial:'مالی',technical:'فنی',administrative:'اداری'},chosen=names[p.docType];if(!chosen)return Promise.reject(new Error('نوع سند نامعتبر است.'));
 return mmFindDevicePage(p.equipment).then(function(device){return Promise.all(['مالی','فنی','اداری'].map(function(title){return mmConfEnsure(device,title+' - '+p.equipment,'<p>اسناد '+title+' دستگاه '+mmConfText(p.equipment)+'</p>');}));}).then(function(pages){var folder=pages[['مالی','فنی','اداری'].indexOf(chosen)];return mmConfPage(folder.id);}).then(function(folder){return mmConfEnsure(folder,mmConfClean(p.title)+' - '+mmConfClean(p.equipment),'<h2>'+mmConfText(p.title)+'</h2><p>دستگاه: '+mmConfText(p.equipment)+'</p><p>نوع سند: '+chosen+'</p><p>درخواست: '+mmConfText(p.issue)+'</p>');}).then(function(page){return mmConfUpload(page.id,file).then(function(){p.pageId=String(page.id);p.url=window.location.origin+'/pages/viewpage.action?pageId='+page.id;return mmWrite('document.save',p).then(function(r){r.pageId=page.id;return r;});});});}
function mmForm(content,action,fields){var attachment='<label class="mm-attachment-label">پیوست فایل<input type="file" id="mmLocalAttachment" accept=".pdf,.jpg,.jpeg,.png,.doc,.docx,.xls,.xlsx,.zip,.txt"></label>';if(action==='supplier.create')attachment='';return '<div class="mq-preview" style="margin-top:12px"><div class="mq-preview-title">ثبت اطلاعات</div><div class="v-fields">'+content+attachment+'</div><p id="mmNotice" role="status"></p><button class="mq-assets-btn primary" id="mmSubmit" type="button">ثبت</button></div>';}
function mmNav(tab){
 MM.tab=tab;
 var group=(tab==='suppliers'||tab==='evaluations')?'تعمیرکاران':(tab==='contracts'||tab==='equipment')?'حقوقی و اداری':'';
 var items=group==='تعمیرکاران'?[['suppliers','فهرست تعمیرکاران'],['evaluations','ارزیابی تعمیرکاران']]:[];
 // The shared page breadcrumb is displayed above the content; do not render a duplicate.
 if(items.length){return '<div class="mm-top-tabs" role="tablist" aria-label="تعمیرکاران">'+items.map(function(item){var selected=item[0]===tab;return '<button type="button" role="tab" aria-selected="'+selected+'" class="mm-top-tab'+(selected?' active':'')+'" data-mm-side="'+item[0]+'">'+esc(item[1])+'</button>';}).join('')+'</div>';}
 return '';
}
function mmSyncBreadcrumb(tab){
 var labels={overview:'داشبورد فعالیت‌ها',activities:'فهرست فعالیت‌ها',plans:'برنامه‌ریزی پیشگیرانه',em:'ثبت و پیگیری خرابی',suppliers:'فهرست تعمیرکاران',evaluations:'ارزیابی تعمیرکاران',contracts:'قراردادهای تعمیراتی',equipment:'تجهیزات و اسناد',costing:'مدیریت هزینه‌های نت',risk:'مدیریت ریسک'};
 var path=['مدیریت تجهیزات','مدیریت نگهداری و تعمیرات'];
 if(tab==='suppliers'||tab==='evaluations')path.push('تعمیرکاران');
 if(tab==='contracts'||tab==='equipment')path.push('حقوقی و اداری');
 if(labels[tab])path.push(labels[tab]);
 buildBreadcrumb(path);
}
document.addEventListener('click',function(event){var b=event.target.closest('#mmTreeChildren [data-mm-tree]');if(b){event.preventDefault();var t=b.getAttribute('data-mm-tree');if(t==='contracts')mmLegalHome();else mmLoad(t);}},true);
document.addEventListener('click',function(event){var nav=event.target.closest('[data-mm-side]');if(nav){event.preventDefault();mmLoad(nav.getAttribute('data-mm-side'));}},true);
document.addEventListener('click',function(event){
 if(state.screen!=='maintenance')return;
 var n=event.target.closest('.mq-bread-item[data-bread-label]');if(!n)return;
 var label=n.getAttribute('data-bread-label');
 var routes={'مدیریت نگهداری و تعمیرات':'home','داشبورد فعالیت‌ها':'overview','فهرست فعالیت‌ها':'activities','برنامه‌ریزی پیشگیرانه':'plans','گزارش خرابی':'em','ثبت و پیگیری خرابی':'em','تعمیرکاران':'suppliers','فهرست تعمیرکاران':'suppliers','ارزیابی تعمیرکاران':'evaluations','حقوقی و اداری':'legal','قراردادهای تعمیراتی':'contracts','تجهیزات و اسناد':'equipment','مدیریت هزینه‌های نت':'costing','مدیریت ریسک':'risk'};
 if(label==='مدیریت تجهیزات'){event.preventDefault();event.stopPropagation();if(typeof renderHome==='function')renderHome();else mmHome();return;}
 if(Object.prototype.hasOwnProperty.call(routes,label)){event.preventDefault();event.stopPropagation();var route=routes[label];if(route==='home')mmHome();else if(route==='legal')mmLegalHome();else mmLoad(route);}
},true);
function mmTreeSync(tab){var box=document.getElementById('mmTreeChildren');if(!box)return;box.classList.toggle('open',state.screen==='maintenance');box.querySelectorAll('[data-mm-tree]').forEach(function(b){var t=b.dataset.mmTree;b.classList.toggle('active',t===tab||(t==='suppliers'&&tab==='evaluations')||(t==='contracts'&&tab==='equipment'));});}

/* MediQ V48 - connected financial/risk workspaces. Data requires Jira-side
   mediqMaintenance action costing.list/risk.list; never invent issue records. */
function mmFinanceRisk(tab,show,fail){
 var isCost=tab==='costing',title=isCost?'مدیریت هزینه‌های نت':'مدیریت ریسک';
 var action=isCost?'costing.list':'risk.list';
 var filters='<div class="mm-actionbar mq-v48-filters"><input type="search" id="mqV48Search" placeholder="جست‌وجوی عنوان، کلید و دستگاه"><select id="mqV48Status"><option value="all">همه مرحله‌ها</option></select><select id="mqV48Order"><option value="new">جدیدترین</option><option value="old">قدیمی‌ترین</option></select><button type="button" class="mq-assets-btn" id="mqV48Reload">به‌روزرسانی</button></div>';
 show('<div class="mq-v48-title"><h3>'+title+'</h3>'+(isCost?'':'<p>پیش از بستن ارزیابی، فرم ارزیابی لینک‌شده در یادداشت‌های درخواست را تکمیل کنید. بستن نهایی فقط در صورت مجاز بودن انتقال انجام می‌شود.</p>')+'</div><div id="mqV48Kpis" class="v-stats"></div>'+filters+'<div id="mqV48Rows" aria-live="polite">در حال دریافت اطلاعات...</div>');
 var rows=[],finBucket='all';
 var host=document.getElementById('mqV48Rows'),kpis=document.getElementById('mqV48Kpis');
 function draw(){
  if(!host||!host.isConnected)return;
  var q=searchNorm((document.getElementById('mqV48Search')||{}).value||'');
  var status=(document.getElementById('mqV48Status')||{}).value||'all';
  var order=(document.getElementById('mqV48Order')||{}).value||'new';
  var shown=rows.filter(function(r){return (!q||searchNorm([r.key,r.summary,r.equipment,r.status].join(' ')).includes(q))&&(status==='all'||r.status===status)&&(finBucket==='all'||(finBucket==='done'?!!r.done:!r.done));});
  shown.sort(function(a,b){return (order==='old'?1:-1)*(Date.parse(a.updated||a.created||0)-Date.parse(b.updated||b.created||0));});
  host.innerHTML=mmTable(['کلید','عنوان درخواست','وضعیت','مسئول','تاریخ','عملیات'],shown.map(function(r){return [esc(r.key),esc(r.summary)+(isCost&&r.entryCount?'<div class="mq-v4925-docs" style="margin-top:5px;color:#0b7865;font-size:12px"><strong>'+esc(String(r.entryCount))+' سند ثبت‌شده</strong> · مجموع: '+esc(Number(r.totalAmount||0).toLocaleString('fa-IR'))+' ریال</div><details style="margin-top:5px"><summary style="cursor:pointer">مشاهده اسناد</summary>'+((r.accountingEntries||[]).map(function(entry){return '<div style="padding:4px 0;border-top:1px solid #e2ebf3">'+esc(entry.title||entry.key||'سند')+' · '+esc(String(entry.amountRaw||entry.amount||'0'))+' ریال · '+esc(entry.debitAccount||'')+'</div>';}).join(''))+'</details>':'') ,esc(r.status),esc(r.assigneeName||r.assignee||'—'),esc(mmFaDate(r.created)), '<button type="button" class="mq-assets-btn" data-mq-v48-issue="'+esc(r.key)+'">'+(isCost?'مشاهده / ثبت سند':'مشاهده / اقدام')+'</button>'];}));
  host.querySelectorAll('[data-mq-v48-issue]').forEach(function(b){b.onclick=function(){mmIssueDetail(b.dataset.mqV48Issue).then(mmOpenIssueModal).catch(function(e){alert(vError(e));});};});
 }
 function fetchRows(){
  host.textContent='در حال دریافت اطلاعات...';
  mmApi(action).then(function(payload){
   if(payload&&payload.ok===false)throw Error(payload.message||'سرویس اطلاعات را برنگرداند.');
   if(!payload||!Array.isArray(payload.items))throw Error('خروجی '+action+' باید دارای آرایه items باشد. برای اتصال این صفحه، عملیات '+action+' را در سرویس مدیریت تعمیرات فعال کنید.');
   rows=payload.items.filter(function(r){return r&&/^MED-\d+$/.test(r.key||'');});
   var statuses=Array.from(new Set(rows.map(function(r){return r.status;}).filter(Boolean)));
   var select=document.getElementById('mqV48Status');
   select.innerHTML='<option value="all">همه مرحله‌ها</option>'+statuses.map(function(x){return '<option value="'+esc(x)+'">'+esc(x)+'</option>';}).join('');
   var current=rows.filter(function(r){return !r.done;}).length;
   kpis.innerHTML='<button type="button" class="mm-kpi-card active" data-fin-filter="all"><strong>'+rows.length+'</strong><span>کل درخواست‌ها</span></button><button type="button" class="mm-kpi-card" data-fin-filter="open"><strong>'+current+'</strong><span>در جریان</span></button><button type="button" class="mm-kpi-card" data-fin-filter="done"><strong>'+ (rows.length-current) +'</strong><span>تکمیل‌شده</span></button>';
   kpis.querySelectorAll('[data-fin-filter]').forEach(function(btn){btn.onclick=function(){finBucket=btn.dataset.finFilter;kpis.querySelectorAll('[data-fin-filter]').forEach(function(b){b.classList.toggle('active',b===btn);});draw();};});
   draw();
  }).catch(function(err){kpis.innerHTML='';host.innerHTML='<div class="mq-v48-warning"><strong>اطلاعات این بخش هنوز از بک‌اند قابل دریافت نیست.</strong><p>'+esc(vError(err))+'</p><small>برای Costing شناسه 10601 و برای Risk Assessment شناسه 10700 را در تنظیمات سرویس بررسی کنید. اطلاعات نمایشی ساختگی اضافه نشده است.</small></div>';});
 }
 document.getElementById('mqV48Search').oninput=draw;
 document.getElementById('mqV48Status').onchange=draw;
 document.getElementById('mqV48Order').onchange=draw;
 document.getElementById('mqV48Reload').onclick=fetchRows;
 fetchRows();
}

function mmHome(){
 MM.tab='home';state.screen='maintenance';
 heroTitle.textContent='مدیریت نگهداری و تعمیرات';
 heroDesc.textContent='داشبورد، برنامه‌ریزی نت، خرابی‌ها، تعمیرکاران و امور حقوقی';
 buildBreadcrumb(['مدیریت تجهیزات','مدیریت نگهداری و تعمیرات']);
 mqTreeActivate('maintenance');mmTreeSync('home');
 var cards=[
 ['overview','داشبورد فعالیت‌ها','آمار، فیلتر و گزارش فعالیت‌ها','chart'],
 ['plans','برنامه‌ریزی پیشگیرانه','برنامه‌ریزی پیشگیرانه و بازرسی تجهیزات','calendar'],
 ['em','ثبت و پیگیری خرابی','ثبت خرابی و مشاهده وضعیت درخواست‌ها','repair'],
 ['suppliers','تعمیرکاران','فهرست تعمیرکاران و ارزیابی تعمیرکاران','people'],
 ['costing','مدیریت هزینه‌های نت','ثبت و پیگیری اسناد هزینه','files'],
 ['risk','مدیریت ریسک','مشاهده و ارزیابی ریسک‌های تجهیزات','files']
 ];
 mmRenderCards(cards,'مدیریت نگهداری و تعمیرات');
}
function mmCardIcon(icon){
 var shapes={
 chart:'<path d="M4 19V12M10 19V7M16 19V4M3 21h18"/>',
 calendar:'<rect x="3" y="5" width="18" height="16" rx="2"/><path d="M7 3v4m10-4v4M3 10h18m-12 5 2 2 4-5"/>',
 repair:'<path d="M14 6a5 5 0 0 0 6 6l-9 9-5-5 9-9z"/><path d="M5 3l6 6"/>',
 people:'<circle cx="8" cy="8" r="3"/><path d="M2 20v-2a6 6 0 0 1 12 0v2M17 5a3 3 0 0 1 0 6m0 3a5 5 0 0 1 5 5"/>',
 files:'<path d="M4 4h8l3 3h5v13H4zM7 11h10M7 15h8"/>'
 };
 return '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'+(shapes[icon]||shapes.files)+'</svg>';
}
function mmRenderCards(cards,title){
 view.innerHTML='<section class="mm-card-home" dir="rtl"><h2>'+esc(title)+'</h2><div class="mm-category-grid">'+cards.map(function(c){return '<button type="button" class="mm-category-card" data-mm-card="'+esc(c[0])+'"><span class="mm-category-icon">'+mmCardIcon(c[3])+'</span><strong>'+esc(c[1])+'</strong><span>'+esc(c[2])+'</span><i aria-hidden="true">↙</i></button>';}).join('')+'</div></section>';
 view.querySelectorAll('[data-mm-card]').forEach(function(b){b.onclick=function(){if(b.dataset.mmCard==='legal')mmLegalHome();else mmLoad(b.dataset.mmCard);};});
}
function mmLegalHome(){
 MM.tab='legal';state.screen='maintenance';mqTreeActivate('maintenance');mmTreeSync('legal');
 heroTitle.textContent='حقوقی و اداری';heroDesc.textContent='مدیریت قراردادهای تعمیراتی و اسناد تجهیزات';
 buildBreadcrumb(['مدیریت تجهیزات','مدیریت نگهداری و تعمیرات','حقوقی و اداری']);
 mmRenderCards([
 ['contracts','قراردادهای تعمیراتی','ثبت، مدیریت و مشاهده قراردادها','files'],
 ['equipment','تجهیزات و اسناد','فهرست دستگاه‌ها و مدارک تعمیراتی','repair']
 ],'حقوقی و اداری');
}
function mmSide(tab){var a=tab==='contracts'?[['contracts','قراردادهای تعمیراتی'],['equipment','تجهیزات و اسناد']]:tab==='suppliers'?[['suppliers','فهرست تعمیرکاران'],['evaluations','ارزیابی تعمیرکاران']]:tab==='overview'?[['overview','داشبورد فعالیت‌ها']]:tab==='plans'?[['plans','برنامه‌ریزی پیشگیرانه']]:[['em','ثبت و پیگیری خرابی']];return '<aside class="mm-sidebar"><strong>بخش‌های مرتبط</strong>'+a.map(function(x){return '<button type="button" data-mm-side="'+x[0]+'">'+x[1]+'</button>';}).join('')+'</aside>';}
function mmIsPm(r){return /^PM\s*-/i.test(r.summary||'')||/برنامه بازرسی|^Inspection\s*-/i.test(r.summary||'');}
function mmActivityFilterUI(){return '<div class="mm-actionbar"><input id="mmSearch" placeholder="جست‌وجوی فعالیت و دستگاه"><select id="mmType"><option value="all">همه فعالیت‌ها</option><option value="pm">برنامه‌های پیشگیرانه</option><option value="em">فعالیت‌های اصلاحی</option></select><select id="mmStatus"><option value="all">همه مرحله‌ها</option><option value="open">باز</option><option value="done">تکمیل‌شده</option>'+Array.from(new Set((MM.activities||[]).map(function(r){return String(r.status||'').trim();}).filter(Boolean))).map(function(status){return '<option value="'+esc(status)+'">'+esc(status)+'</option>';}).join('')+'</select><select id="mmOrder"><option value="" selected>ترتیب نمایش</option><option value="new">جدیدترین</option><option value="old">قدیمی‌ترین</option><option value="priority">مهم‌ترین</option></select><select id="mmPriority"><option value="all">همه اهمیت‌ها</option><option value="مسدودکننده">مسدودکننده</option><option value="بسیار مهم">بسیار مهم</option><option value="مهم">مهم</option><option value="میانه">میانه</option><option value="پایین">پایین</option><option value="جزئی">جزئی</option><option value="ناچیز">ناچیز</option><option value="نامشخص">نامشخص</option></select></div><div id="mmRows"></div>';}
function mmPriorityText(r){
 var raw=String(r.priorityName||r.priority||r.importance||'').trim();
 if(!raw)return 'نامشخص';
 var k=raw.toLowerCase().replace(/[\s_-]+/g,'');
 if(/blocker|مسدودکننده|مسدود/.test(k))return 'مسدودکننده';
 if(/minor|جزئی|جزیی/.test(k))return 'جزئی';
 if(/critical|highest|بسیارمهم|خیلیزیاد|veryhigh/.test(k))return 'بسیار مهم';
 if(/major|high|important|مهم|بالا/.test(k))return 'مهم';
 if(/medium|normal|moderate|میانه|متوسط|عادی/.test(k))return 'میانه';
 if(/lowest|trivial|ناچیز/.test(k))return 'ناچیز';
 if(/low|پایین|کم/.test(k))return 'پایین';
 return raw;
}
function mmPriorityWeight(value){var ranks={'مسدودکننده':7,'بسیار مهم':6,'مهم':5,'میانه':4,'پایین':3,'جزئی':2,'ناچیز':1,'نامشخص':0};return ranks[mmPriorityText({priorityName:value})]||0;}
function mmIsOverdue(r){if(r.overdue===true||r.isOverdue===true)return true;var due=r.due||r.dueDate||r.deadline||r.nextExecutionDate||'';var date=Date.parse(due);return mmIsPm(r)&&!r.done&&Number.isFinite(date)&&date<Date.now();}
function mmWeekLate(r){if(r.done)return false;var date=Date.parse(r.created||r.createdDate||r.start||'');return Number.isFinite(date)&&Date.now()-date>7*86400000;}
function mmApplyCardFilter(r){var f=MM.cardFilter||'all';if(f==='all')return !r.done;if(f==='pm')return mmIsPm(r)&&!r.done;if(f==='em')return !mmIsPm(r)&&!r.done;if(f==='done')return !!r.done;if(f==='overdue')return mmWeekLate(r);return true;}
function mmEnsureDefaultPanel(){
 var host=document.getElementById('mmContent');if(!host||!document.getElementById('mmRows')||host.querySelector('#mmPermanentIssue'))return;
 host.classList.add('mm-with-fixed-side');
 var panel=document.createElement('aside');panel.id='mmPermanentIssue';panel.className='mm-permanent-panel';panel.dir='rtl';
 panel.innerHTML='<header><strong>جزئیات فعالیت</strong></header><div class="mm-panel-empty"><div class="mm-panel-empty-icon">▤</div><strong>یک فعالیت را انتخاب کنید</strong><p>مشخصات، روند فعالیت و اقدامات مرتبط در این قسمت نمایش داده می‌شوند.</p></div>';
 var heading=host.querySelector('#mmActivitiesHeading');if(heading)heading.insertAdjacentElement('afterend',panel);else{var bar=host.querySelector('.mm-actionbar');if(bar)bar.before(panel);}
}
function mmPaintActivities(){var host=$id('mmRows');if(!host)return;var q=($id('mmSearch')||{}).value||'',t=($id('mmType')||{}).value||'all',st=($id('mmStatus')||{}).value||'all',order=($id('mmOrder')||{}).value||'new',pri=($id('mmPriority')||{}).value||'all';var rows=(MM.activities||[]).filter(function(r){return mmApplyCardFilter(r)&&(r.key+' '+r.summary+' '+r.status).toLowerCase().includes(q.toLowerCase())&&(t==='all'||(t==='pm'===mmIsPm(r)))&&(st==='all'||(st==='done'?r.done:(st==='open'?!r.done:String(r.status||'')===st)))&&(pri==='all'||mmPriorityText(r)===pri);});if(order==='old')rows.sort(function(a,b){return Date.parse(a.created||0)-Date.parse(b.created||0);});else if(order==='new')rows.sort(function(a,b){return Date.parse(b.created||0)-Date.parse(a.created||0);});else if(order==='priority')rows.sort(function(a,b){return mmPriorityWeight(b.priorityName||b.priority)-mmPriorityWeight(a.priorityName||a.priority);});host.innerHTML=mmActivities(rows);host.querySelectorAll('tbody tr').forEach(function(tr){var k=tr.querySelector('[data-mm-issue]');if(k){tr.style.cursor='pointer';tr.onclick=function(e){if(e.target.closest('a,button'))return;mmOpenIssue(k.dataset.mmIssue);};}});}
function mmDateNotPast(){var inp=$id('mm_start');if(!inp||!inp.value)return true;try{var chosen=mmIsoDate(inp.value);var now=new Date();var local=[now.getFullYear(),String(now.getMonth()+1).padStart(2,'0'),String(now.getDate()).padStart(2,'0')].join('-');if(chosen<local){$id('mmNotice').textContent='تاریخ شروع نمی‌تواند قبل از امروز باشد.';return false;}}catch(e){$id('mmNotice').textContent=e.message;return false;}return true;}
function renderMediqMaintenance(){state.screen='maintenance';heroTitle.textContent='مدیریت نگهداری و تعمیرات';heroDesc.textContent='برنامه‌ریزی پیشگیرانه، تعمیرات EM، پیمانکاران، قراردادها و مستندات';buildBreadcrumb(['مدیریت تجهیزات','مدیریت نگهداری و تعمیرات']);mqTreeActivate('maintenance');mmHome();}

/* MEDIQ V45 - isolated self-service requests (no admin access, no internal links) */
var MUF={rows:[],notes:[],deviceRows:[],filter:'open',timer:null,lastSeen:0};
function mufFetch(action,key){
  var url=MM_PROXY_ROOT+'mediqUserFaultProxy?action='+encodeURIComponent(action||'list');
  if(key)url+='&key='+encodeURIComponent(key);
  return mmRequest(url,{method:'GET',cache:'no-store'});
}
function mufCloseRequest(key){
 return mmRequest(MM_PROXY_ROOT+'mediqUserFaultProxyWrite',{
  method:'POST',
  headers:{'Content-Type':'application/json','X-Atlassian-Token':'no-check'},
  body:JSON.stringify({action:'close',key:key})
 });
}
function mufCreate(payload){return mmRequest(MM_PROXY_ROOT+'mediqUserFaultProxyWrite',{
  method:'POST',headers:{'Content-Type':'application/json','X-Atlassian-Token':'no-check'},
  body:JSON.stringify(Object.assign({action:'create'},payload))
});}

function mufToTs(value){
 if(value==null||value==='')return 0;
 if(typeof value==='number')return isFinite(value)?value:0;
 var direct=Date.parse(String(value));
 if(!isNaN(direct))return direct;
 var numeric=Number(value);
 return isFinite(numeric)?numeric:0;
}
/* V49.17: Only the actual final workflow STATUS counts as closed.
   A delivery status or Jira statusCategory=Done is not a closure confirmation. */
function mufDone(r){
 if(!r)return false;
 var status=String(r.statusName||r.status||'').trim().replace(/[\u200c\u200e\u200f]/g,' ').replace(/\s+/g,' ');
 return /^(?:بسته شده|بسته|Closed|Done)$/i.test(status);
}
/* V49.18: The 'processed' filter includes Calculated, but actual closure remains separate. */
function mufProcessed(r){
 if(!r)return false;
 if(mufDone(r))return true;
 var status=String(r.statusName||r.status||'').trim().replace(/[\u200c\u200e\u200f]/g,' ').replace(/\s+/g,' ');
 return /^(?:محاسبه شده|Calculated)$/i.test(status);
}
function mufNormalizeRow(r){r=r||{};r.done=mufDone(r);r.processed=mufProcessed(r);r.createdTs=mufToTs(r.created||r.createdDate||r.createdAt);r.updatedTs=mufToTs(r.updated||r.updatedDate||r.updatedAt||r.created);r.priorityText=r.priorityName||r.priority||r.urgency||'عادی';return r;}
function mufPrettyDate(value){
 var ts=mufToTs(value);if(!ts)return '—';
 try{return new Intl.DateTimeFormat('fa-IR-u-ca-persian',{dateStyle:'medium',timeStyle:'short',timeZone:'Asia/Tehran'}).format(new Date(ts));}catch(e){return '—';}
}
function mufScoped(){return MM.tab==='em'&&state.screen==='maintenance'&&!!document.getElementById('mufRoot');}
function mufRows(){
 var q=searchNorm((document.getElementById('mufSearch')||{}).value||'');
 var f=(document.getElementById('mufStatus')||{}).value||'open';
 var sort=(document.getElementById('mufSort')||{}).value||'new';
 var rows=MUF.rows.filter(function(r){
  return (!q||searchNorm([r.key,r.summary,r.status,r.description].join(' ')).includes(q))&&
   (f==='all'||(f==='open'&&!r.processed)||(f==='closed'&&r.processed));
 });
 rows.sort(function(a,b){
  return sort==='old'?(a.createdTs-b.createdTs):sort==='priority'?String(b.priorityText||'').localeCompare(String(a.priorityText||'')):(b.updatedTs-a.updatedTs);
 });
 return rows;
}
var MQ_MEDIQ_PRIORITY_ASSETS={"critical":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAHa0lEQVR42u1aXYxUZxl+3vc7M7OzPxSx0FCXUmBppVAaGGJoqpklRmqTajRxTP0rIRiNmhjjvSmNF94Ze1P8CU0KsU120xsTtXoBO3phL9xUN7CWLRQWbWmplGV3dmZ3zvnex4szI8t0t3ZnZtkFz5OczOScme97//++AyRIkCBBggQJEiRIkOD/EbJcGxPQoXxeAaC/WDQB7LaXNgFhoeAI6HwCqT2T25FxZT4fzL03m8s9WMrteaac2/PsbC63+4bf5/PBfEK61VxAWCgoBgHBoAcA7t2brYTh4yAOGrm/ywUOAKbNU4ATZjhasvA360dGpgFgAHCFQgEYHDQBeEsIgIAM5fNuX7EY1e9N7NrVl6b7moFfzzrtA4Ep8yAZ/0Yk6FGFiqDs/RsCvBBZdPyOkZGxuVaBYtG3WxDSblOvBzMCOr1z92egPGTE4z0uyFbMMGPexzyLzt2fpAeAjKrrVIeSj2YA+Z2IHO3auvkPMlizojl7rCgBPAXo04C9u2vX3R0eTxB4MqP6UCDApDdYrG2tMb6wEEkDYCoS9DiFJxAaRwg7NuPkxbWvvvpWfa8VI4C6Vi7v2PmjVRr8MFBZXTWibN4AsFHbH3bZmjCkU51mVBAaJyYt+um6UyM/bpclSLs0X/p4bn3VRRfTqkHFfAiIE2lPJCdhAH1WXapKi9KZ4J7u4eG3nwKkVUtomcDDtWKm4qJv9DgXlCMfCiQFQEmgHRcAFUiqHPmwR11QqYQHALC+93JagBDAcC4X9Jarp7rU3VcxM8gS5XDCOlR1xvzZy+K3bx8dDWtMcFksgIWCCsANlfDTPerum/beACgYB4a2X4BWvPfd6vru8sGjAnAon3fL5gKDtU+L7DtKAKSRxFJfIBDRvgcA/f39tiwuUI/C433bt3SqjpowZfGCS1rLs2byAeBJPLh27NRrrWSE5i2gFoDSkIM9TtPe6EFIuwLfggGRgBl9t7igSn4LAIZaCIbSpBbi//Xu7XgrMzmWcdpbjXO2LpDCrDniRCCYz8ctBdEq7XIG1a13nj07SUCaCYZBk+p3gmJ0KVP63Crneq9570XENUrWk+xS1Q5xyiY0M0tDyYwq0qgonaH5NS5Yd9X4JQDPIZ93mNN/LLUFqAB2cfO2E6vU9U+ZmTRoygj2qEqZ9lcjXhKiShhV/reWKKpCBhR8vkvcI1NmVGmglfBdqjrl/fCG8//4BGILsCUXwADgvgz4S1u2bVfK36ukYh7iOlV11vjKe1n07xgdrTbrapc2b3u5Q3T/tJl/nzvU64LIP7xh/LVXCDgB/JK6QAEFAIMII3x/daBu1qJIIAEbqvgUREoW/XLH6Jnq+Y35jnvvxaLM88IFBDJenLnoccQF2E/yhmGR1BqnNEVnFD8A8ARqtN2EGABAmLZ6Xn5/FwOSUFFPQC4AGCoubvl+ZElAzouZUWGE6BzvYW0fI2lkCotmvUkBDNa2Ufpnyh4HSHHzRH6pmoHGgwIcx3hxpgnaIgC4aHLII86BbPQ0QkOawNvPYuu8eWlQBbDzvff/udvpIyWaCef4p8RBsFtVKuZPGmTAiKoCxIcIgkaoqASO/EJW9bFSPQhybqCE7xR1JfN/2/zPsdxhAM10hs2mQQWKJsDPlfikGW8sAGJvlSnv2a26LyWyb1EZuqaWSIAp76mIC6wGISHlABEeieWdD55G0W6WBQgAvH3Xzs5yUBnLiN69UCEE0KPJbi0ubuZxMYApEQlpVzSo9m0aH59othBqqoQUgEPIu/XvjEyDOJ6FwGgLNEJwJIJmLhBu/jXNd0FA8oVN4+MTJ5EPmm2JW26GXl+7pS8IdNQEQc1Ml/5gQ8AAsNDbQ1vfOXd6WZohAWwAcFvfPXc2pP2xGyJ2c9ph3w2RWbMTrTLf8jygUEs8JI/4mDjBTZgHkIAangWAIbQ2FmvPSAy5oHvdxOmsyNYZ0mSJjrUIWEZEZ2jnojs7Htg+OhrK9bpoWYaiBPJuD4ZDkEfT8VDIL53mzWcACHk07i/yDi2eFLU+FY5zr3QwfWzSW5SGpowMjbB2DUGMMCPDNDQ16c2bpZ8HIIebyPuNcK0uUIxp1I+U/z313c47kIHszop2ApCQtJh+yGLdrc67AegQ0S5RB/LaLOwnD1w591sCum8lHIw0HpCcWdP7MUjwVYE8mYHsEADTJAhGcbsq8sGMk3FLK0G3xNXvLHgakGPTrP5613v/enPFHY011ga178Hrqzc9RsE3AX62SzVdJlGl+dr4wDUGOIBMi7pOEZTMIgFeVsWvrl356O/3YDhs3GPFCaBevg4Bbh+u9/9n1mzcBsMBCL6Shd4TAZimEdcZ0S5RCQCUyTcV8qKKPN939Y1T9TVOAkE/sLKPx+dJkRo3bjGjY2v6VtGiLxp5SEU+1VFr8KogjPgLYM9VgZd2Xrt4ta7tGo23zgsSC7nGUBy0/msVoz0bH6bw2yJIOdFf3D9x4U8N2r79XpxibBXzvgj1Qc9uSwzEzDoCbqAN6ThBggQJEiRIkCBBggQJFoP/AEGTpp9Aadm8AAAAAElFTkSuQmCC","highest":"data:image/png;base64,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","high":"data:image/png;base64,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","normal":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACI0lEQVR42u3Yv2pUQRTH8e+ZuX+yLonkGSwE8wJiqyhYCqYTLEQljYJIwGYTbRRRbNPYaBWLlDbaiGCjoKBvoRZult27d+4cCzdBsMvOhbt4Pg/wm7nz58zMBWOMMcYYY4wxxhhjjDH/D2kzXBPly2HcgtBd/CJktrICFERms6UfyfmUoJM3qBdiC+gAJ9vE6dPyZl6yEYL2NSLIEdtRVBzqvEyaSp8Xd6ZPDtro3ADoZby8oqmflWezHm+ogZiwhR6Efb2U357u6S5e1mlSxGbJpv/U7FNjvIBKqCqCQJ4ovS4KvDZcBPb4lm7i0g3A2qxKR3mPcLdwZJroGFDwOHBR3y1EDage5VtZyfUmyJIqbq4OCtF5nTaBF8V+vQnQyRrwz2A8ps8KveFwvpxlgIZKNhmyKHSHXDVhgQXRnWT1pOWP1xZXVQvZWeoOiqCT+8XJsqdXQ8PxGI/ecREUB5lnNB7zUqT+ctBG5wZABzgEHT8oT/g8fqBgNWsShTsoGzaqh/lppP6a8jKUcgU4gVARr2Qlq5NfTETS5KsSlvocm4y4JnBLwc+uWd3aAgAa9ScIojjS7VmHgET50dl7gMKfnbnFcvD566zHmWSntYMw1s+ZD+e5x/fD+tC5i9DsJagDslD6cxJ0pZmzDngP6mSU1c1b2Wby92uzm8dgm5erFrKltY7u4pI9WtZQ1omySH+FjDHGGGOMMcYYY4wxxpju+Q3ioMyi7z2gLQAAAABJRU5ErkJggg==","low":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAElElEQVR42u2YW2hcRRjH/9/MnHM2m42bNC01BasvSm0FEQSx4iU+iPgmmEArWBApCSXSQNsItW4OfZDaeqPUVvFSqIomPvShzwbx1tq+FImVIoi2KqZkt0k2ezlnZj4fzuZSW6Uk2ySa+cHCHtj95jvf5f/NDOBwOBwOh8PhcDgcDofD4XA4HMsIqqu1jgGJ9R0EwCIkW1fbORYABH4YZAx2mqUXysTBf35eorbrVAFMALHaM3YfNTSu42pxWIfNZ8Cc2CfiuZllQj8IIVmVu3wvBZkNXJ78Ue/Nnppac76ei/pkh1juzh+AnznJVhyFTJ+WL43tAxGDiOeUsRwLkGCEZOWLYy9DNp5mK47Cz5yUu/MHgDnarWsFdLDEIBm5Z6KdgsznKI1ZMFsQCaSzAtXJz3TlwrPYf+cEckMKYbu+LrsDLNFJBj3nA5lte5tSmS2JbWtBQiCdFVwtPmr2Ng1N+bA4FbA+CSAZsxEMDbYGIAVmgWJBk9f4lPLXfum/MHIHwnaNHKvryLxCJ5lUX36tzK4ZEn5mC4oFDWYBCAW2BgxNxmyc7cPiBGADGADY0lmyUGQBshbEAIEUinlNwrubZeYbuWP0cYSkMcAy6d9r6EiOFULSqm/kISNT3wqRuh/FvCaQIgbIMpI1oNjS2dk+LJ4I1vpQlQrHqLFlM0oFA2YBEolttgbSlxCS2cS9el/2zeRlE3FLbOQE0A+EZL2dhefg+W+B4UGXDUjKmh0GyKCxRfHk6Cc63fo0AMx33FJdJgAnSq925HPkZ/qhy4CJk35N1NyCBJDKCkST78QNZ7YhbNfoYAkMYmque7suvwavqRfROMManvm/tRCS4DcR4uL++JXmXWCmWgMucgVMl2+SUW/7aCf84D2QyCAqaQihAAaYGYBBQ6tCtfhFXM5vxqFbfwcA9P66wpPNxxA0PYHyqAEgQEQAAWwMVFoCqMKUu+NXV36AHAuE4HqMwfruBGs97PWM3MN++lPyUrejUtAgMSN+bDVSzYpN9ReqlJ4kQSXrp4+TTK1DJX/1b4OsYlO9AF3apN9Y/XVtDQOA6+FyfQMwKwjoOb/K81Z/SH7TYyjnNcASoBld8DMScWkSYAM/cxOqEwYk5NQOCAyDdKvieOIrFY1vKh+85eK07SV7Fvjb/gDICW977+vkNT6Paq2vRa2vrbWQSgCU6IWYpRcgINUiEE+8H/12sRuDd0XznfcLG4DZ+/WQrNp2qUuo4CDACroyk+lEF5D0OwDmqYkBxJWd0aFVB66aGP+ZAMyIo0RIOuj+o92q9Mck/ZtRHb+y16f63W9SsLqAePKZ6EjbiSTrsPUQuxt3Fvj3+DJC0sixqh5uGxLlwkbEle8QrFCwNoa1tvaJEbQomOh76OID0ZG2E8ixSkr+xr38AgSgRkgaDw+p6ru3/RyNnHsElfGPKFjpkUgJEilBwUqPK8Xj0Z8/PRgdXnMuOTfUV+yW3J2Bv/VSX9BVGA668sP+1tG+Ky5V/t8wTd8TXHWnwIRlQwfLa35fhneSBIfD4XA4HA6Hw+FwOBwOh8PhcDgWhL8AvnIfxoIQFo0AAAAASUVORK5CYII=","lowest":"data:image/png;base64,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","urgent":"data:image/png;base64,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","minor":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEPElEQVR42u3YX4gVVRwH8O/vzJm5s/fuHwOh2sdegi49RPQgIq0k2GvSnRYCy6LMonYlLCrXuaMSirK1UNFabKzRH+YGPhQFvlSCBT6EBCtBBL4Zmu26e/fOv3POr4frmqnQ06xcPR+Yl8vMZX6/+Z1/P8CyLMuyLMuyLMuyLMuyLMtaHcxMzEy3VdBhyCIMv5fX/x7KRhw7t3LsdG2AB6bjoXc+Obbm2gQBq1cVtFqlTkQMAG+//+VD0nG3sjEbDOthggAJ+pMgfgaKo6/tGD157TM9nYBuIMD09BH5t7pj0nGcl6R0qSjy/9znui601tBKzSRy/uVo+/bOaiSBSo6eGkFLbNp0j7hY/P51rX9oc3txQUnXk0I4yLO0AJi9iu8xM/IsVQODa2RnuX1SJtnmdvuPpNlscplJEGXG32i1RKsV6PPpb5O12tDmpcX5pOJXpdHmx7zIn9DG1A3TfSpXW7RSx/2+mlxavJT2VfvXp9L5MIoiEwQt0ZMVEIYsoojM3qnPH3Cl+4sq8sLvq7pZlk3tfmV0/EbP7J/6Yp/nV3ZnSSev+FUvS/KHJ3aOnmjEsdMKAl3Ge8ryctsUAAzYPOdIB2BXpknn5MT4k+NhGApgRAA/mO69I6Jev8BBEEzsffezBz2v8igzs4HaAeBEA0Crx4YARVGkmZnA2FDkOYQQpFhNdqtuRETRRhVFkeleG9Xc3BwxM5HRh5mZiiIngNeFYewFQaDLWhpFOXMfAwAfPNIaZDZ3MTOSJCnA8jQA/vfLX1UvzaYmIu4kci7LsqXu/2At1qq13SHVpJ6bBJPOMhkGdRPC7JMw//eM5ykGG2ZmgJncPC91pSolAUSX33nh7CIY55kB16t4HVXc3937j4gbVIAThqEQDt0rXW+QDYMNXxyQl/4CgChqci9VAIdhKKMoMsaYn6SUbIxhEjxGRFyvX+AwDOXKYSiOY+fcuWGKoshobXYCBEdKZuDU2NhYFsexA5SzFyhtFThzpt59YRIfaa2fzbOsqPT1PbLn8Oy+IAgmul81WrldA9B7Ds3u8iqVx7I0Kfy+mstE0z29FW40YqfVCvTugzMz/QNrtrXbC6nvV/28yL9h5ve0EL+6SrERqBOcF1zXezzL0rRWG/CX25eO7X/9mS0r+4meTAAzU7PZJGDY1/3+8Wq1tn55abHwKhWXGVAqX2Jmdl1vkIRAnqZFtX/ATdPOaeGYjVg4u1j2VniVDkPErx46WquCP5DS3QoCVFFcmSyZGVK6ICIoVXyVF+3nD7zx4vxqHIZk6WOMiC8HsgzgqbcOzcw6JLexMes0850AIEhcUEqdAszsvl1Pf3e5QSKIyiv9m9EAo+4WeOWsEHtvTn56d3jw4+GpqW8rV3WGxC3dJms0Yie+QeurEcfOrd4Su250MF+piturMWpZlmVZlmVZlmVZlmVZlnWz/AMf0i8C5IeKOgAAAABJRU5ErkJggg=="};
function mqPriorityAsset(name){
 var v=String(name||'').toLowerCase().trim();
 if(/blocker|مسدود|بازدارنده/.test(v))return 'critical';
 if(/highest|بسیار مهم|خیلی بالا/.test(v))return 'highest';
 if(/urgent|فوری|اضطراری/.test(v))return 'urgent';
 if(/critical|بحرانی/.test(v))return 'critical';
 if(/minor/.test(v))return 'minor';
 if(/lowest|trivial|ناچیز|خیلی کم/.test(v))return 'lowest';
 if(/low|پایین|کم/.test(v))return 'low';
 if(/high|مهم|بالا/.test(v))return 'high';
 return 'normal';
}
function mqPriorityImageHtml(name, cssClass){
 var label=String(name||'نامشخص');
 return '<img class="'+(cssClass||'mq-real-priority-icon')+'" src="'+MQ_MEDIQ_PRIORITY_ASSETS[mqPriorityAsset(label)]+'" alt="'+esc(label)+'" title="'+esc(label)+'" />';
}
function mufPriorityIcon(name){return '<span class="muf-urgency-icon" title="'+esc(name||'نامشخص')+'" aria-label="فوریت '+esc(name||'نامشخص')+'">'+mqPriorityImageHtml(name,'mq-real-priority-icon')+'</span>';}
function mufIcon(kind){
 var icons={all:'▦',open:'🛠',closed:'✔',device:'🖥',priority:'⚑',status:'◉',notes:'🔔',user:'👤',time:'🕘'};
 return '<span class="muf-icon" aria-hidden="true">'+(icons[kind]||'•')+'</span>';
}
function mufWorkflowHtml(status){
 var current=mmMaintenanceStage(status);
 var steps=[['new','ثبت و شروع'],['work','در حال انجام'],['repair','تعمیر و پیگیری'],['handover','آماده تحویل / تحویل'],['close','بستن و محاسبه']];
 return '<div class="muf-workflow">'+steps.map(function(s){var cls='muf-work-step';if(s[0]===current)cls+=' current';else if(['new','work','repair','handover','close'].indexOf(s[0])<['new','work','repair','handover','close'].indexOf(current))cls+=' done';return '<div class="'+cls+'"><span class="muf-step-dot"></span><small>'+s[1]+'</small></div>';}).join('')+'</div>';
}
function mufPanelEmpty(){return '<div class="muf-panel-empty"><div class="muf-panel-empty-icon">▤</div><strong>یک درخواست را انتخاب کنید</strong><p>جزئیات درخواست، روند رسیدگی و پیام‌های مرتبط در این قسمت نمایش داده می‌شود.</p></div>';}
function mufFriendlyError(err){var msg=vError(err)||'';msg=String(msg).replace(/\s*\|\s*آدرس درخواست:.*/,'');return msg;}
function mufPaint(){
 if(!mufScoped())return;
 var rows=mufRows(), all=MUF.rows||[], closed=all.filter(function(r){return r.processed;}).length, open=all.length-closed;
 var activeTab=(MUF.tab||'list');
 var stats=document.getElementById('mufStats');
 if(stats){
  stats.hidden=activeTab!=='list';
  stats.innerHTML=[['all','کل درخواست‌ها',all.length,'#288cbf'],['open','خرابی‌های جاری',open,'#e18f35'],['closed','خرابی‌های رسیدگی‌شده',closed,'#18a077']].map(function(s){return '<button type="button" class="muf-kpi '+(MUF.filter===s[0]?'selected':'')+'" data-muf-kpi="'+s[0]+'" style="--kpi-color:'+s[3]+'">'+mufIcon(s[0])+'<span class="muf-kpi-text"><strong>'+s[2].toLocaleString('fa-IR')+'</strong><span>'+s[1]+'</span></span></button>';}).join('');
 }
 var list=document.getElementById('mufList');
 if(list){
  list.innerHTML=rows.length?rows.map(function(r){return '<button type="button" class="muf-ticket'+(MUF.currentKey===r.key?' active':'')+'" data-muf-issue="'+esc(r.key)+'"><span class="muf-ticket-main"><strong>'+esc(r.key)+'</strong><em>'+esc(r.summary||'—')+'</em></span><span class="muf-ticket-meta"><b class="'+(r.processed?'muf-done':'muf-open')+'">'+esc(r.status||'—')+'</b><small>'+esc(mufPrettyDate(r.updated||r.updatedTs))+'</small></span></button>';}).join(''):'<div class="muf-empty">درخواستی مطابق فیلترهای انتخاب‌شده وجود ندارد.</div>';
 }
 var unseen=MUF.notes.filter(function(x){return (x.at||0)>MUF.lastSeen;});
 var count=document.getElementById('mufUnread');if(count)count.textContent=unseen.length?'('+unseen.length.toLocaleString('fa-IR')+')':'';
 var notice=document.getElementById('mufNotes');if(notice){
  notice.innerHTML=MUF.notes.length?MUF.notes.slice(0,60).map(function(x){
   var row=(MUF.rows||[]).find(function(r){return r.key===x.issue;})||{};
   var kind=x.kind==='comment'?'پیام جدید':x.kind==='mention'?'اشاره به شما':'تغییر وضعیت';
   var summary=String(row.summary||'درخواست خرابی');
   return '<article class="muf-note mq-v4928-notice"><div class="mq-v4928-notice-top"><strong>'+esc(kind)+' — '+esc(x.issue||'')+'</strong><small>'+esc(mufPrettyDate(x.at))+'</small></div><div class="mq-v4928-notice-sub">'+esc(summary)+'</div><p>'+esc(x.body||x.title||'')+'</p><div class="mq-v4928-notice-actions"><button type="button" class="mq-assets-btn" data-mq-v4928-notice="'+esc(x.issue||'')+'">مشاهده جزئیات در مدیکیو</button></div></article>';
  }).join(''):'<div class="muf-empty">اعلان تازه‌ای برای نمایش وجود ندارد.</div>';
  notice.querySelectorAll('[data-mq-v4928-notice]').forEach(function(b){b.onclick=function(){
    var key=b.getAttribute('data-mq-v4928-notice');if(!/^MED-\d+$/.test(key))return;
    mufActivateTab('list');MUF.filter='all';var sel=document.getElementById('mufStatus');if(sel)sel.value='all';
    mufPaint();mufOpen(key);var side=document.getElementById('mufSidePanel');if(side)side.scrollIntoView({behavior:'smooth',block:'nearest'});
  };});
 }
 document.querySelectorAll('[data-muf-kpi]').forEach(function(b){b.onclick=function(){MUF.filter=b.dataset.mufKpi;var status=document.getElementById('mufStatus');if(status)status.value=MUF.filter==='all'?'all':MUF.filter==='open'?'open':'closed';mufPaint();};});
 document.querySelectorAll('[data-muf-issue]').forEach(function(b){b.onclick=function(){mufOpen(b.dataset.mufIssue);};});
 if(activeTab==='list' && rows.length && (!MUF.currentKey || !rows.some(function(r){return r.key===MUF.currentKey;}))){mufOpen(rows[0].key,true);} else if(activeTab!=='list'){var panel=document.getElementById('mufSidePanel');if(panel)panel.innerHTML='';}
}

function mufPriorityBadge(name){
 var txt=String(name||'نامشخص');
 return '<span class="muf-priority-badge" aria-label="فوریت '+esc(txt)+'">'+mqPriorityImageHtml(txt,'mq-real-priority-icon')+'<span>'+esc(txt)+'</span></span>';
}
function mufRenderSidePanel(data){
 var panel=document.getElementById('mufSidePanel');if(!panel)return;
 var r=mufNormalizeRow(data.issue||data.request||data.data||{});
 var comments=data.comments||data.messages||[];
 var asset=data.asset||{};
 if(!asset.key){var refs=String(r.summary||'').match(/MED-[0-9]+/g)||[];var found=refs.find(function(k){return k!==r.key;});if(found)asset={key:found,label:found};}
 var docs=(data.attachments||[]).map(function(x){
   var url=mqResolveIssueAttachmentUrl(x), label=esc(x.name||x.filename||'پیوست');
   return url?'<a class="mm-doc-pill" href="'+esc(url)+'" target="_blank" rel="noopener noreferrer">📎 '+label+'</a>':'<span class="mm-doc-pill">📎 '+label+'</span>';
 }).join('');
 var allTransitions=data.transitions||((data.issue||{}).transitions)||[];
 var closeActions=allTransitions.filter(function(t){
  return /^(?:بستن|بستن درخواست|بسته شدن|Close|Close Issue|Closed)$/i.test(String(t.name||'').trim());
 });
 var closed=mufDone(r) || (r.processed && /^(?:محاسبه شده|Calculated)$/i.test(String(r.statusName||r.status||'').trim()));
 var desc=esc(r.description||'شرحی ثبت نشده است.').replace(/\n/g,'<br>');
 panel.innerHTML=''+
  '<div class="muf-side-head"><strong>جزئیات درخواست</strong><button type="button" id="mufPanelClose" class="muf-close-mini" aria-label="بستن پنل">×</button></div>'+
  '<div class="muf-side-title compact"><h4>'+esc(r.key||'')+'</h4><p>'+esc(r.summary||'')+'</p></div>'+
  '<div class="muf-side-grid muf-user-fault-facts">'+
    '<div><small>وضعیت</small><strong>'+esc(r.status||'—')+'</strong></div>'+
    '<div><small>فوریت</small><strong>'+mufPriorityBadge(r.priorityText||'نامشخص')+'</strong></div>'+
    '<div><small>مسئول</small><strong>'+esc(r.assigneeName||r.assigneeDisplayName||r.assignee||'تخصیص داده نشده')+'</strong></div>'+
    '<div><small>آخرین تغییر</small><strong>'+esc(mufPrettyDate(r.updated||r.updatedTs))+'</strong></div>'+
  '</div>'+
  '<div class="muf-side-box muf-user-fault-compact"><h5>روند رسیدگی</h5>'+mufWorkflowHtml(r.status||'')+'</div>'+
  '<div class="muf-side-box muf-user-fault-compact"><h5>شرح خرابی</h5><div class="muf-desc-readonly">'+desc+'</div>'+(asset.key?'<small class="muf-asset-ref">دستگاه: '+esc(asset.label||asset.key)+'</small>':'')+'</div>'+
  (docs?'<div class="muf-side-box muf-user-fault-compact"><h5>پیوست‌ها</h5>'+docs+'</div>':'')+
  '<div class="muf-side-box muf-user-fault-compact"><h5>پیام به کارشناس تعمیرات</h5><p class="muf-hint">پیام شما به‌عنوان یادداشت داخلی روی همین درخواست ثبت می‌شود تا تیم تعمیرات آن را ببیند.</p><textarea id="mufTechnicianMessage" rows="3" placeholder="پیام خود را برای کارشناس تعمیرات بنویسید..."></textarea><div class="muf-inline-actions"><button class="mq-assets-btn primary" type="button" id="mufSendTechnician">ارسال پیام</button></div><p id="mufTechResult" role="status"></p></div>'+
  (!r.processed?'<div class="muf-side-box muf-user-fault-compact"><h5>بستن درخواست</h5>'+
   (closeActions.length?'<p class="muf-hint">در صورت تکمیل مراحل، می‌توانید درخواست را ببندید.</p><button type="button" class="mq-assets-btn muf-close-action" data-muf-close="1">بستن درخواست</button>':'<div class="muf-hint">در وضعیت فعلی امکان بستن درخواست وجود ندارد.</div>')+
   '<p id="mufCloseResult" role="status"></p></div>':'')+
  (closed?'<div class="muf-side-box muf-user-fault-compact mq-v4928-survey" style="display:none"><h5>رضایت‌سنجی خدمات تعمیرات</h5><p class="muf-hint" id="mqCsatQuestion">لطفاً میزان رضایت خود را ثبت کنید.</p><div class="mq-v4928-rating" role="group" aria-label="امتیاز رضایت">'+[1,2,3,4,5].map(function(n){return '<button type="button" data-mq-v4928-rate="'+n+'" aria-pressed="false" title="'+n+' از ۵">'+['😠','🙁','😐','🙂','😍'][n-1]+'</button>';}).join('')+'</div><div id="mqCsatSelectedLabel" class="mq-csat-selected-label" aria-live="polite">هنوز امتیازی انتخاب نشده است.</div><div id="mqCsatCategories" class="mq-csat-categories"></div><textarea id="mqV4928SurveyNote" rows="2" maxlength="255" placeholder="توضیح شما درباره تجربه دریافت خدمات"></textarea><button type="button" class="mq-assets-btn primary" id="mqV4928SurveySave" disabled>ثبت رضایت‌سنجی</button><p id="mqV4928SurveyMessage" role="status"></p></div>':'')+
  '<div class="muf-side-box muf-user-fault-compact"><h5>یادداشت‌ها</h5>'+(comments.length?comments.map(function(c){return '<div class="muf-note compact"><strong>'+esc(mmCleanFullName(c.authorName||c.author||'کاربر'))+'</strong><small>'+esc(mufPrettyDate(c.created||c.at))+'</small><p>'+esc(c.body||c.text||'')+'</p></div>';}).join(''):'<div class="muf-empty">یادداشتی ثبت نشده است.</div>')+'</div>';
 if(closed){
   var rating=0, csatConfig=null;
   var scoreButtons=panel.querySelectorAll('[data-mq-v4928-rate]');
   var submit=panel.querySelector('#mqV4928SurveySave');
   var feedback=panel.querySelector('#mqV4928SurveyMessage');
   var surveyBox=panel.querySelector('.mq-v4928-survey');
   var categoriesBox=panel.querySelector('#mqCsatCategories');
   var noteInput=panel.querySelector('#mqV4928SurveyNote');
   var selectedLabel=panel.querySelector('#mqCsatSelectedLabel');
   function paintRating(){
     scoreButtons.forEach(function(b){
       var on=Number(b.dataset.mqV4928RategetAttribute('data-mq-v4928-rate'))===rating;
       b.classList.toggle('selected',on);
       b.setAttribute('aria-pressed',String(on));
     });
     if(selectedLabel)selectedLabel.textContent=rating ? 'امتیاز انتخاب‌شده: '+Number(rating).toLocaleString('fa-IR')+' از ۵' : 'هنوز امتیازی انتخاب نشده است.';
   }
   scoreButtons.forEach(function(b){
     b.onclick=addEventListener('click',function(event){
       event.preventDefault();
       if(!csatConfig || csatConfig.state!=='ready')return;
       rating=Number(b.dataset.mqV4928Rate);getAttribute('data-mq-v4928-rate'));
       paintRating();
     });
   });
   function getCsat(){return mmRequest(MM_PROXY_ROOT+'mediqCsatProxy?key='+encodeURIComponent(r.key),{method:'GET',cache:'no-store'});}
   function csatMessage(text){if(feedback)feedback.textContent=text;}
   function loadCsat(retries){
     getCsat().then(function(x){
       if(!submit.isConnected)return;
       if(!x || x.ok!==true)throw new Error((x&&x.message)||'پاسخ افزونه رضایت‌سنجی معتبر نیست.');
       if(x.state==='submitted'){
         surveyBox.style.display='';submit.disabled=true;
         csatMessage('رضایت‌سنجی شما قبلاً در افزونه Jira ثبت شده است.'+(x.rating?' امتیاز: '+Number(x.rating).toLocaleString('fa-IR')+' از ۵':''));
         if(x.rating){rating=Number(x.rating);paintRating();}
         return;
       }
       if(x.state==='pending'&&retries>0){
         csatMessage('در حال آماده‌سازی فرم رضایت‌سنجی...');
         setTimeout(function(){if(submit.isConnected)loadCsat(retries-1);},1200);
         return;
       }
       if(x.state!=='ready'){
         surveyBox.style.display='';submit.disabled=true;
         csatMessage(x.state==='pending'?'فرم نظرسنجی هنوز در Jira آماده نشده است.':
             x.state==='notClosed'?'نظرسنجی پس از بستن درخواست فعال می‌شود.':
             'در حال حاضر ثبت نظرسنجی برای این درخواست فعال نیست.');
         return;
       }
       csatConfig=x;surveyBox.style.display='';
       submit.disabled=false;
       var question=panel.querySelector('#mqCsatQuestion');if(question)question.textContent=x.question||'میزان رضایت شما چقدر است؟';
       noteInput.maxLength=Math.min(255,Math.max(1,Number(x.commentLimit)||255));
       categoriesBox.innerHTML=(Array.isArray(x.categories)?x.categories:[]).map(function(c){
         return '<label class="mq-csat-choice"><input type="checkbox" data-csat-cat="'+Number(c.id)+'"><span>'+esc(c.category||'')+'</span></label>';
       }).join('');
       csatMessage('');
       if(sessionStorage.getItem('mediq.survey.open.'+r.key)==='1'){
         sessionStorage.removeItem('mediq.survey.open.'+r.key);
         surveyBox.scrollIntoView({behavior:'smooth',block:'center'});
       }
     }).catch(function(e){
       if(!submit.isConnected)return;
       surveyBox.style.display='';submit.disabled=true;
       csatMessage('دریافت اطلاعات نظرسنجی از Jira ناموفق بود: '+mufFriendlyError(e));
     });
   }
   // Only load the real Candylio status; never submit to MediQ's local survey storage.
   loadCsat(4);
   submit.onclick=function(){
     if(!csatConfig || csatConfig.state!=='ready')return;
     if(!rating){csatMessage('لطفاً میزان رضایت خود را انتخاب کنید.');return;}
     var comment=(noteInput.value||'').trim();
     if(rating<=Number(csatConfig.commentRequiredBelow||0) && !comment){
       csatMessage('برای این امتیاز، ثبت توضیحات الزامی است.');return;
     }
     var categories=Array.from(categoriesBox.querySelectorAll('[data-csat-cat]:checked')).map(function(el){
       var id=Number(el.getAttribute('data-csat-cat'));
       return (csatConfig.categories||[]).find(function(c){return Number(c.id)===id;});
     }).filter(Boolean).map(function(c){return {id:Number(c.id),category:String(c.category)};});
     submit.disabled=true;csatMessage('در حال ثبت در افزونه رضایت‌سنجی Jira...');
     var body={issueKey:r.key,rating:rating,token:csatConfig.token,type:csatConfig.type,
       comment:comment,answers:categories};
     mmRequest(MM_PROXY_ROOT+'mediqCsatProxyWrite',{
       method:'POST',headers:{'Content-Type':'application/json','X-Atlassian-Token':'no-check'},body:JSON.stringify(body)
     }).then(function(result){
       // Native CSAT endpoint may return success with an empty body; proxy normalizes it.
       if(result && result.ok===false)throw new Error(result.message||'خطای ثبت رضایت‌سنجی');
       return getCsat();
     }).then(function(verified){
       if(verified&&verified.state==='submitted'){
         csatConfig=null;csatMessage('رضایت‌سنجی شما با موفقیت در افزونه Jira ثبت شد.');submit.disabled=true;
       }else{
         csatMessage('پاسخ ثبت دریافت شد اما تأیید ذخیره‌سازی هنوز مشخص نیست. لطفاً بدون ثبت مجدد، صفحه را تازه‌سازی کنید.');
         submit.disabled=true;
       }
     }).catch(function(e){
       csatMessage('ثبت نظرسنجی تأیید نشد: '+mufFriendlyError(e));
       // A timeout does not prove failed storage; refuse blind duplicate retry.
       submit.disabled=true;csatConfig=null;
     });
   };
 }
 var close=panel.querySelector('#mufPanelClose');if(close)close.onclick=function(){MUF.currentKey='';panel.innerHTML=mufPanelEmpty();document.querySelectorAll('[data-muf-issue]').forEach(function(x){x.classList.remove('active');});};
 var msgBtn=panel.querySelector('#mufSendTechnician');
 if(msgBtn)msgBtn.onclick=function(){
  var text=(panel.querySelector('#mufTechnicianMessage').value||'').trim();var out=panel.querySelector('#mufTechResult');
  if(!text){out.textContent='متن پیام را وارد کنید.';return;}
  msgBtn.disabled=true;out.textContent='در حال ارسال پیام...';
  mmWrite('issue.comment',{key:r.key,body:text,visibility:'internal'}).then(function(){out.textContent='پیام ثبت شد.';mufOpen(r.key,true);}).catch(function(e){out.textContent='ثبت پیام انجام نشد: '+mufFriendlyError(e);}).finally(function(){msgBtn.disabled=false;});
 };
 panel.querySelectorAll('[data-muf-close]').forEach(function(button){button.onclick=function(){
  if(!window.confirm('آیا از بستن این درخواست اطمینان دارید؟'))return;
  var out=panel.querySelector('#mufCloseResult');button.disabled=true;out.textContent='در حال بررسی و ثبت بستن درخواست...';
  mufCloseRequest(r.key).then(function(result){
   if(!result || result.ok!==true || result.closed!==true)throw new Error((result&&result.message)||'تأیید بستن از سرور دریافت نشد.');
   // V49.30: Jira Fast-track moves Closed to Calculated immediately.
   // The authenticated write endpoint is authoritative, not the final status label.
   return mufFetch('detail',r.key).then(function(fresh){return {fresh:fresh,closeResult:result};}).catch(function(){return {fresh:{issue:Object.assign({},r,{status:result.status||'محاسبه شده'})},closeResult:result};});
  }).then(function(bundle){
   var fresh=bundle.fresh||{};
   var issue=fresh.issue||fresh.request||fresh.data||fresh;
   issue=Object.assign({},issue,{key:r.key});
   MUF.rows=MUF.rows.map(function(item){return item.key===r.key?mufNormalizeRow(Object.assign({},item,issue)):item;});
   MUF.filter='all';
   sessionStorage.setItem('mediq.survey.open.'+r.key,'1');
   var statusInput=document.getElementById('mufStatus');if(statusInput)statusInput.value='all';
   mufPaint();
   MUF.currentKey=r.key;
   mufRenderSidePanel(Object.assign({},fresh,{issue:issue}));
   mufRefresh();
   // Satisfaction is revealed only after survey.get verifies the close history.
   var box=document.querySelector('#mufSidePanel .mq-v4928-survey');
   if(box){box.scrollIntoView({behavior:'smooth',block:'center'});}
  }).catch(function(e){out.textContent='بستن درخواست انجام نشد: '+mufFriendlyError(e);button.disabled=false;});
 };});
}

function mufOpen(key,silent){
 MUF.currentKey=key;
 var panel=document.getElementById('mufSidePanel');if(panel)panel.innerHTML='<div class="muf-panel-loading">در حال دریافت جزئیات درخواست...</div>';
 document.querySelectorAll('[data-muf-issue]').forEach(function(x){x.classList.toggle('active',x.dataset.mufIssue===key);});
 mmIssueDetail(key).catch(function(){return mufFetch('detail',key);}).then(function(data){if(!mufScoped())return;mufRenderSidePanel(data||{});}).catch(function(err){if(panel)panel.innerHTML='<div class="muf-panel-loading muf-error">'+esc(mufFriendlyError(err))+'</div>';if(!silent){var host=document.getElementById('mufMessage');if(host)host.textContent=mufFriendlyError(err);}});
}
/* V49.21 - Assignee-scoped self-service inbox. Never infer ownership from reporter. */
function mufAccountKey(v){
 if(v==null)return '';
 if(typeof v==='object')return mufAccountKey(v.key||v.name||v.username||v.userKey||v.accountId||'');
 return String(v).trim().toLowerCase();
}
function mufAssignedIdentity(r){
 var f=r.fields||{};
 return mufAccountKey(r.assigneeKey||r.assigneeUserKey||r.assigneeUsername||r.assigneeNameKey||f.assignee||r.assignee);
}
function mufAssigneeDisplay(r){
 var f=r.fields||{};
 var a=f.assignee||r.assignee;
 return String(r.assigneeDisplayName||r.assigneeName||(a&&typeof a==='object'?(a.displayName||a.name):'')||'').trim();
}
function mufBelongsToUser(r,me){
 var f=r.fields||{};
 var assignee=f.assignee||r.assignee;
 var ids=[r.assigneeKey,r.assigneeUserKey,r.assigneeUsername,
          (assignee&&typeof assignee==='object'?assignee.key:''),
          (assignee&&typeof assignee==='object'?assignee.name:''),
          (assignee&&typeof assignee==='object'?assignee.accountId:'')]
          .map(mufAccountKey).filter(Boolean);
 var myIds=[me.key,me.name,me.username,me.userKey,me.accountId].map(mufAccountKey).filter(Boolean);
 if(ids.length)return ids.some(function(x){return myIds.indexOf(x)>=0;});
 // Display names are only a fallback when BOTH login identifiers are unavailable in the row.
 var display=mufAssigneeDisplay(r);
 return !!display && !!me.displayName && searchNorm(display)===searchNorm(me.displayName);
}
var mufRefreshSerial=0;
function mufRefresh(){
 if(!mufScoped())return;
 var serial=++mufRefreshSerial;
 var msg=document.getElementById('mufMessage');if(msg)msg.textContent='';
 // The self-service endpoint is server-side restricted to reporter=currentUser().
 // Do not filter these reporter-owned rows by assignee again: the technician may be different.
 mufFetch('list').then(function(x){
  if(!mufScoped()||serial!==mufRefreshSerial)return;
  if(!x||x.ok!==true||!Array.isArray(x.items))
   throw new Error((x&&x.message)||'پاسخ سرویس درخواست‌های من معتبر نیست.');
  MUF.rows=x.items.map(mufNormalizeRow);
  MUF.notes=(Array.isArray(x.notifications)?x.notifications:[]).map(function(n){n=n||{};n.at=mufToTs(n.at||n.created||n.updated);return n;});
  if(MUF.currentKey&&!MUF.rows.some(function(r){return r.key===MUF.currentKey;})){
   MUF.currentKey='';var panel=document.getElementById('mufSidePanel');if(panel)panel.innerHTML=mufPanelEmpty();
  }
  mufPaint();
 }).catch(function(e){
  if(serial!==mufRefreshSerial)return;
  MUF.rows=[];MUF.notes=[];mufPaint();
  var host=document.getElementById('mufMessage');if(host)host.textContent=mufFriendlyError(e);
 });
}
function mufActivateTab(t){
 MUF.tab=t;
 document.querySelectorAll('#mufRoot [data-muf-tab]').forEach(function(n){n.classList.toggle('active',n.dataset.mufTab===t);});
 [['list','mufPaneList'],['notes','mufPaneNotes'],['new','mufPaneNew']].forEach(function(p){var el=document.getElementById(p[1]);if(el)el.hidden=p[0]!==t;});
 var stats=document.getElementById('mufStats');if(stats)stats.hidden=t!=='list';
 var body=document.getElementById('mufBody');if(body)body.classList.toggle('show-side',t==='list');
 if(t==='notes' || t==='new'){var msg=document.getElementById('mufMessage');if(msg)msg.textContent='';}
 if(t==='list')mufPaint();
}
function mufBindDeviceSearch(){
 var inp=document.getElementById('mufDeviceSearch'), box=document.getElementById('mufDeviceResults'), sel=document.getElementById('mufDevice');
 if(!inp||!box||!sel)return;
 function paint(){
  var q=searchNorm(inp.value.trim());
  var hits=(MUF.deviceRows||[]).filter(function(x){return !q||searchNorm(labelOf(x)+' '+x.key).includes(q);}).slice(0,75);
  box.innerHTML=hits.map(function(x){return '<button type="button" data-muf-device="'+esc(x.key)+'">'+esc(labelOf(x))+'</button>';}).join('')||'<p>دستگاهی با این مشخصات یافت نشد.</p>';
  box.hidden=false;inp.setAttribute('aria-expanded','true');
  box.querySelectorAll('[data-muf-device]').forEach(function(b){b.onclick=function(){sel.value=b.dataset.mufDevice;inp.value=b.textContent;box.hidden=true;inp.setAttribute('aria-expanded','false');};});
 }
 inp.addEventListener('focus',paint);
 inp.addEventListener('input',function(){sel.value='';paint();});
 inp.addEventListener('keydown',function(e){if(e.key==='Escape'){box.hidden=true;inp.setAttribute('aria-expanded','false');}if(e.key==='Enter'&&!box.hidden){var first=box.querySelector('[data-muf-device]');if(first){e.preventDefault();first.click();}}});
 document.addEventListener('click',function(e){if(!inp.isConnected)return;if(!e.target.closest('.muf-device-combo')){box.hidden=true;inp.setAttribute('aria-expanded','false');}},true);
}
function mmUserFaultScreen(show,fail){
 if(MUF.timer){clearInterval(MUF.timer);MUF.timer=null;}
 MUF.filter='open';MUF.tab='list';
 try{MUF.lastSeen=Number(localStorage.getItem('mediq.userfault.notifications.lastseen')||0);}catch(e){MUF.lastSeen=0;}
 show('<section id="mufRoot" dir="rtl"><div class="muf-heading"><div><h3>ثبت و پیگیری خرابی</h3><p>وضعیت درخواست‌های ثبت‌شده، سوابق رسیدگی و اعلان‌های مرتبط را مشاهده کنید.</p></div><button id="mufRefresh" class="mq-assets-btn">به‌روزرسانی</button></div><div id="mufStats" class="muf-stats"></div><div class="muf-tabs"><button type="button" data-muf-tab="list" class="active">درخواست‌های من</button><button type="button" data-muf-tab="notes">اعلان‌ها <span id="mufUnread"></span></button><button type="button" data-muf-tab="new">ثبت خرابی جدید</button></div><div id="mufBody" class="muf-body show-side"><div id="mufPaneList"><div class="muf-filters"><input id="mufSearch" placeholder="جست‌وجوی درخواست یا دستگاه"><select id="mufStatus"><option value="open">خرابی‌های جاری</option><option value="closed">خرابی‌های گذشته</option><option value="all">همه درخواست‌ها</option></select><select id="mufSort"><option value="new">آخرین تغییرات</option><option value="old">قدیمی‌ترین</option><option value="priority">فوریت</option></select></div><div class="muf-list-shell"><div id="mufList" class="muf-list"><p>در حال دریافت درخواست‌ها...</p></div><aside id="mufSidePanel" class="muf-side-panel">'+mufPanelEmpty()+'</aside></div></div><div id="mufPaneNotes" hidden><button type="button" id="mufMarkRead" class="mq-assets-btn">علامت‌گذاری اعلان‌ها به‌عنوان خوانده‌شده</button><div id="mufNotes"></div></div><div id="mufPaneNew" hidden><div class="muf-create"><h3>ثبت گزارش خرابی</h3><div class="muf-create-row"><label class="muf-device-label">دستگاه<div class="muf-device-combo"><input id="mufDeviceSearch" type="text" autocomplete="off" role="combobox" aria-expanded="false" aria-controls="mufDeviceResults" placeholder="نام یا شناسه دستگاه را جست‌وجو کنید"><div id="mufDeviceResults" class="muf-device-results" hidden></div><select id="mufDevice" tabindex="-1" aria-label="دستگاه انتخاب‌شده" hidden><option value="">انتخاب دستگاه</option></select></div></label><div class="muf-urgency-picker"><span>فوریت</span><input type="hidden" id="mufUrgency" value="مهم"><div class="muf-priority-choices" role="group" aria-label="انتخاب فوریت">'+[['Blocker','مسدودکننده'],['بسیار مهم','بسیار مهم'],['مهم','مهم'],['میانه','میانه'],['پایین','پایین'],['ناچیز','ناچیز'],['Minor','جزئی']].map(function(v){return '<button type="button" class="muf-priority-choice'+(v[0]==='مهم'?' active':'')+'" data-muf-priority="'+esc(v[0])+'" title="'+esc(v[1])+'" aria-label="'+esc(v[1])+'" aria-pressed="'+(v[0]==='مهم'?'true':'false')+'">'+mqPriorityImageHtml(v[0],'mq-real-priority-icon')+'<small>'+esc(v[1])+'</small></button>';}).join('')+'</div></div><label>وضعیت دستگاه<select id="mufDeviceStatus"><option value="active">فعال</option><option value="down">خارج از سرویس</option></select></label><label class="muf-grow">شرح خرابی<textarea id="mufDescription" rows="2" placeholder="شرح خرابی و علائم مشاهده‌شده را وارد کنید."></textarea></label><button id="mufSubmit" type="button" class="mq-assets-btn primary">ثبت درخواست</button></div><p id="mufCreateMsg" role="status"></p></div></div></div><div id="mufMessage" role="status"></div></section>');
 var newFaultButton=document.querySelector('#mufRoot [data-muf-tab="new"]');
 var faultHeading=document.querySelector('#mufRoot .muf-heading');
 if(newFaultButton&&faultHeading){
   newFaultButton.classList.add('mq-v47-newfault');
   var updateButton=document.getElementById('mufRefresh');
   if(updateButton){
     var tools=document.createElement('div');tools.className='mq-v49-fault-toolbar';
     updateButton.parentNode.insertBefore(tools,updateButton);
     tools.appendChild(newFaultButton);tools.appendChild(updateButton);
   }
 }
 document.querySelectorAll('#mufRoot [data-muf-tab]').forEach(function(b){b.onclick=function(){mufActivateTab(b.dataset.mufTab);};});
 document.getElementById('mufRefresh').onclick=mufRefresh;
 document.getElementById('mufMarkRead').onclick=function(){MUF.lastSeen=Date.now();try{localStorage.setItem('mediq.userfault.notifications.lastseen',String(MUF.lastSeen));}catch(e){}mufPaint();};
 ['mufSearch','mufStatus','mufSort'].forEach(function(id){var x=document.getElementById(id);x.oninput=x.onchange=function(){if(id==='mufStatus')MUF.filter=x.value;mufPaint();};});
 document.querySelectorAll('#mufRoot [data-muf-priority]').forEach(function(btn){btn.onclick=function(){var inp=document.getElementById('mufUrgency');inp.value=btn.dataset.mufPriority;document.querySelectorAll('#mufRoot [data-muf-priority]').forEach(function(x){var selected=x===btn;x.classList.toggle('active',selected);x.setAttribute('aria-pressed',String(selected));});};});
 document.getElementById('mufSubmit').onclick=function(){
  var b=this,msg=document.getElementById('mufCreateMsg');
  var p={device:document.getElementById('mufDevice').value,urgency:document.getElementById('mufUrgency').value,deviceStatus:document.getElementById('mufDeviceStatus').value,description:document.getElementById('mufDescription').value.trim()};
  if(!p.device||!p.description){msg.textContent='لطفاً دستگاه و شرح خرابی را تکمیل کنید.';return;}
  b.disabled=true;msg.textContent='در حال ثبت درخواست...';
  mufCreate(p).then(function(r){msg.textContent='درخواست '+(r.key||'')+' ثبت شد.';document.getElementById('mufDescription').value='';mufActivateTab('list');mufRefresh();}).catch(function(e){msg.textContent=mufFriendlyError(e);}).finally(function(){b.disabled=false;});
 };
 mufRefresh();
 apiGet('equipment').then(function(rows){if(!mufScoped())return;MUF.deviceRows=rows;var select=document.getElementById('mufDevice');select.innerHTML='<option value="">انتخاب دستگاه</option>'+rows.map(function(r){return '<option value="'+esc(r.key)+'">'+esc(labelOf(r))+'</option>';}).join('');mufBindDeviceSearch();}).catch(function(e){var el=document.getElementById('mufCreateMsg');if(el)el.textContent='فهرست دستگاه‌ها بارگذاری نشد: '+mufFriendlyError(e);});
 MUF.timer=setInterval(function(){if(mufScoped()&&!document.hidden)mufRefresh();else if(!mufScoped()){clearInterval(MUF.timer);MUF.timer=null;}},30000);
}

function mmLoad(tab){MM.tab=tab;state.screen='maintenance';heroTitle.textContent='مدیریت نگهداری و تعمیرات';heroDesc.textContent='بخش '+({overview:'داشبورد فعالیت‌ها',plans:'برنامه‌ریزی پیشگیرانه',em:'ثبت و پیگیری خرابی',suppliers:'تعمیرکاران',evaluations:'ارزیابی تعمیرکاران',contracts:'قراردادهای تعمیراتی',equipment:'تجهیزات و اسناد',costing:'مدیریت هزینه‌های نت',risk:'مدیریت ریسک'}[tab]||'نگهداری و تعمیرات');mqTreeActivate('maintenance');mmTreeSync(tab);mmSyncBreadcrumb(tab);view.innerHTML=mmNav(tab)+'<div class="mm-two-pane">'+'<main class="mm-main"><div id="mmContent" class="mq-preview" style="margin-top:14px"><div class="wz-loading">در حال دریافت اطلاعات...</div></div></main></div>';view.querySelector('.mm-two-pane').classList.add('mm-full-width');view.querySelectorAll('[data-mm-side]').forEach(function(b){b.onclick=function(){mmLoad(b.dataset.mmSide);};});view.querySelectorAll('[data-mm-home]').forEach(function(b){b.onclick=mmHome;});view.querySelectorAll('[data-mm-legal]').forEach(function(b){b.onclick=function(){if(b.dataset.mmLegal==='1')mmLegalHome();else mmHome();};});var host=$id('mmContent');function show(html){if(host&&host.isConnected){host.innerHTML=html;mmBind();if($id('mmRows')){mmEnsureDefaultPanel();mmPaintActivities();}}}function fail(e){show('<p role="alert">'+esc(vError(e))+'</p>');}
 if(tab==='overview'||tab==='activities')mmApi('overview').then(function(x){MM.overview=x;MM.activities=x.activities||[];if(tab==='overview'){var cards=[['کل فعالیت‌های جاری',MM.activities.filter(function(r){return !r.done;}).length],['فعالیت‌های پیشگیرانه جاری',MM.activities.filter(function(r){return !r.done&&mmIsPm(r);}).length],['فعالیت‌های اصلاحی جاری',MM.activities.filter(function(r){return !r.done&&!mmIsPm(r);}).length],['فعالیت‌های تکمیل‌شده',MM.activities.filter(function(r){return !!r.done;}).length],['فعالیت‌های تأخیرشده (بیش از یک هفته)',MM.activities.filter(mmWeekLate).length]];MM.cardFilter='all';show('<div class="v-stats">'+cards.map(function(k,i){return '<button type="button" class="mm-kpi-card'+(i===0?' active':'')+'" data-mm-kpi="'+['all','pm','em','done','overdue'][i]+'" aria-pressed="'+(i===0?'true':'false')+'"><strong>'+k[1]+'</strong><span>'+k[0]+'</span></button>';}).join('')+'</div><h3 id="mmActivitiesHeading">فعالیت‌ها</h3>'+mmActivityFilterUI());}else show('<h3>فهرست فعالیت‌های PM و EM</h3>'+mmActivityFilterUI());}).catch(fail);
 else if(tab==='plans')mmApi('plans').then(function(x){MM.plans=(x.items||[]).slice().sort(function(a,b){var da=Date.parse(a.next||a.nextExecutionDate||''),db=Date.parse(b.next||b.nextExecutionDate||'');return (isNaN(da)?Infinity:da)-(isNaN(db)?Infinity:db);});show('<h3 id="mmPlanListHeading">برنامه‌های پیشگیرانه و بازرسی</h3>'+mmTable(['برنامه','عنوان','نوع','دوره (روز)','اجرای بعدی','وضعیت','عملیات'],MM.plans.map(function(p){return [esc(p.key),esc(p.name),esc(mmKind(p.kind)),esc(p.kind==='INSPECTION'?'یک‌بار':p.period),esc(mmFaDate(p.next)),esc(mmPlanState(p)),mmPlanToggleBtn(p)+' <button type="button" class="mq-assets-btn" data-mm-plan-edit="'+esc(p.key)+'">ویرایش</button>'];}))+'<h3 id="mmPlanFormHeading">ایجاد برنامه پیشگیرانه / بازرسی</h3><div class="mm-plan-form">'+mmForm('<label>نوع برنامه<select id="mm_kind"><option value="PM">برنامه پیشگیرانه</option><option value="INSPECTION">برنامه بازرسی</option></select></label><label>مبنای برنامه<select id="mm_scope"><option value="DEVICE">دستگاه خاص</option><option value="MODEL">بر اساس مدل</option><option value="TITLE">عنوان دستگاه</option><option value="GROUP">بر اساس گروه</option></select></label><label>انتخاب دارایی<div class="mm-combo"><input id="mm_targetQuery" type="search" autocomplete="off" placeholder="جست‌وجو یا انتخاب هدف" role="combobox" aria-expanded="false" aria-controls="mm_targetOptions"><div id="mm_targetOptions" class="mm-combo-menu" hidden></div><select id="mm_target" aria-label="هدف انتخاب‌شده" style="display:none"><option value="">انتخاب کنید</option></select></div></label>'+mmJDateField('mm_start','تاریخ شروع (شمسی)')+mmJDateField('mm_end','تاریخ پایان (شمسی)')+'<label>دوره<select id="mm_period"><option value="" disabled>انتخاب دوره</option><option value="1">روزانه</option><option value="7">هفتگی</option><option value="30">ماهانه (۳۰ روز)</option><option value="90">سه‌ماهه (۹۰ روز)</option><option value="180">شش‌ماهه (۱۸۰ روز)</option><option value="365">سالانه (۳۶۵ روز)</option></select></label><label>وضعیت برنامه<select id="mm_active"><option value="active">فعال</option><option value="inactive">غیرفعال</option></select></label><label>قرارداد مرتبط<select id="mm_contract"><option value="">بدون قرارداد</option></select></label>','pm.create',['kind','scope','target','start','end','period','active','contract'])+'</div>');mmScope();mmBindTargetCombo();mmApi('contracts').then(function(z){return mmVisibleContracts(z.items||[]);}).then(function(z){var s=$id('mm_contract');if(s){(z.items||[]).forEach(function(c){var op=document.createElement('option');op.value=c.id;op.textContent=c.title+' - '+(c.number||'');s.appendChild(op);});}}).catch(function(){});}).catch(fail);
 else if(tab==='costing'||tab==='risk')mmFinanceRisk(tab,show,fail);
 else if(tab==='suppliers')mmApi('suppliers').then(function(x){MM.suppliers=x.items||[];show('<h3>افزودن تعمیرکار</h3>'+mmSupplyForm()+'<h3>فهرست تأمین‌کنندگان و تعمیرکاران</h3><div class="mm-actionbar mm-search-spaced"><input id="mmSupplierSearch" placeholder="جست‌وجوی تعمیرکار"><select id="mmSupplierGroupFilter" aria-label="فیلتر گروه تأمین‌کننده"><option value="">همه گروه‌ها</option>'+Array.from(new Set(MM.suppliers.map(function(s){return String(s.category||'').trim();}).filter(Boolean))).map(function(c){return '<option value="'+esc(c)+'">'+esc(c)+'</option>';}).join('')+'</select></div><div id="mmSupplierRows">'+mmTable(['نام','گروه تأمین‌کننده','تلفن','رابط','تلفن رابط'],MM.suppliers.map(function(s){return [esc(s.name),esc(s.category),esc(s.phone),esc(s.contact),esc(s.contactPhone)];}))+'</div>');}).catch(fail);
 else if(tab==='em')mmUserFaultScreen(show,fail);
 else if(tab==='evaluations')Promise.all([mmApi('evaluations'),mmApi('suppliers'),mmApi('overview')]).then(function(v){MM.suppliers=v[1].items;MM.activities=v[2].activities;show('<h3>ارزیابی عملکرد تعمیرکاران برای هر درخواست</h3>'+mmEvaluationDashboard(v[0].items||[])+mmTable(['تسک','تعمیرکار','امتیاز از ۵','توضیحات'],v[0].items.map(function(r){return [esc(r.issue),esc(r.supplier),esc(r.score),esc(r.note)];}))+'<h3>ارزیابی جدید</h3>'+mmForm(mmSelect('mm_issue','تسک',MM.activities.map(function(r){return {key:r.key,label:r.key+' — '+r.summary};}))+mmSelect('mm_supplier','تعمیرکار',MM.suppliers.map(function(s){return {key:s.key,label:s.name};}))+mmField('mm_score','امتیاز ۱ تا ۵','number')+mmTxt('mm_note','توضیحات'),'evaluation.save',['issue','supplier','score','note']));}).catch(fail);
 else if(tab==='contracts')Promise.all([mmApi('contracts').then(function(z){return mmVisibleContracts(z.items||[]);}),mmApi('suppliers')]).then(function(v){MM.suppliers=v[1].items||[];show('<h3>ثبت قرارداد</h3>'+mmForm(mmField('mm_title','عنوان')+mmSelect('mm_contractType','نوع قرارداد',[{key:'inspection',label:'بازرسی'},{key:'maintenance',label:'نت'},{key:'calibration',label:'کالیبراسیون'}])+mmField('mm_number','شماره قرارداد')+mmSelect('mm_supplier','طرف قرارداد',v[1].items.map(function(s){return {key:s.key,label:s.name};}))+mmJDateField('mm_start','شروع قرارداد (شمسی)')+mmJDateField('mm_end','پایان قرارداد (شمسی)')+mmTxt('mm_coverage','تجهیزات/خدمات تحت پوشش'),'contract.save',['title','contractType','number','supplier','start','end','coverage'])+'<h3>قراردادهای نگهداری و تعمیرات</h3>'+mmTable(['عنوان','شماره','تأمین‌کننده','شروع','پایان','سند'],v[0].items.map(function(r){return [esc(r.title),esc(r.number),esc(mmSupplierName(r.supplier)),esc(r.start),esc(r.end),mmLink(r.url)];}))+((v[0].unverified||v[0].unlinked)?'<p class="mm-sync-note">'+(v[0].unverified?'تأیید وضعیت '+v[0].unverified+' صفحه به دلیل خطای دسترسی یا ارتباط ممکن نشد. ':'')+(v[0].unlinked?v[0].unlinked+' رکورد بدون شناسه صفحه از فهرست پنهان شد.':'')+'</p>':'') );}).catch(fail);
 else if(tab==='equipment')Promise.all([apiGet('equipment'),mmApi('documents')]).then(function(v){MM.equipment=v[0];var docs=v[1].items;show('<h3>ثبت سند تعمیراتی</h3>'+mmForm(mmSelect('mm_equipment','دستگاه',MM.equipment.map(function(r){return {key:r.key,label:labelOf(r)};}))+mmField('mm_title','عنوان سند')+mmSelect('mm_docType','نوع سند',[{key:'financial',label:'مالی'},{key:'technical',label:'فنی'},{key:'administrative',label:'اداری'}])+mmField('mm_issue','شماره درخواست مرتبط (اختیاری)'),'document.save',['equipment','title','docType','issue'])+'<h3>فهرست تجهیزات و اسناد تعمیراتی</h3><input id="mmEquipSearch" class="mq-edit-search" placeholder="جست‌وجوی دستگاه"><div id="mmEquipRows">'+mmEquipTable(MM.equipment,docs)+'</div>');MM.documents=docs;}).catch(fail);
}
function mmLink(url){return /^https:\/\//i.test(url||'')?'<a href="'+esc(url)+'" target="_blank" rel="noopener noreferrer">مشاهده سند</a>':'—';}
function mmActivities(rows){return mmTable(['کلید','فعالیت','اهمیت','وضعیت','مسئول','ایجاد'],rows.map(function(r){return ['<button type="button" class="mm-issue-link" data-mm-issue="'+esc(r.key)+'">'+esc(r.key)+'</button>',esc(r.summary),esc(mmPriorityText(r)),esc(r.status),esc(mmCleanFullName(r.assigneeName||r.assigneeDisplayName||r.assignee||'تخصیص داده نشده')),esc(mmFaDate(r.created))];}));}
function mmShamsiToday(){return new Intl.DateTimeFormat('fa-IR-u-ca-persian',{year:'numeric',month:'2-digit',day:'2-digit',timeZone:'Asia/Tehran'}).format(new Date()).replace(/\u200e/g,'');}
function mmDetailField(label,value){return '<div class="mm-detail-line"><span>'+esc(label)+'</span><strong>'+esc(value==null?'—':String(value))+'</strong></div>';}
function mmIssueDetail(key){return mmApi('issue.detail',{type:key});}
function mmIssueUserPicker(input,hidden){
 var menu=document.createElement('div');menu.className='mm-user-menu';input.parentNode.appendChild(menu);
 var requestNo=0;
 input.oninput=function(){var q=input.value.trim();hidden.value='';var n=++requestNo;if(q.length<2){menu.innerHTML='';return;}
  mmApi('issue.users',{type:q}).then(function(x){if(n!==requestNo)return;menu.innerHTML=(x.items||[]).map(function(u){return '<button type="button" data-user="'+esc(u.name)+'">'+esc(u.displayName||u.name)+'</button>';}).join('');menu.querySelectorAll('button').forEach(function(b){b.onclick=function(){hidden.value=b.dataset.user;input.value=b.textContent;menu.innerHTML='';};});}).catch(function(){menu.innerHTML='';});
 };
}
function mmOpenIssue(key){
 var r=(MM.activities||[]).find(function(x){return x.key===key;});if(!r)return;
 var base=document.getElementById('mediq-dashboard');if(!base)return;
 var old=base.querySelector('.mm-issue-overlay');if(old)old.remove();
 var panel=base.querySelector('#mmPermanentIssue');
 if(!panel){panel=document.createElement('aside');panel.id='mmPermanentIssue';panel.className='mm-permanent-panel';panel.dir='rtl';var content=document.getElementById('mmContent');if(content){content.classList.add('mm-with-fixed-side');var heading=content.querySelector('#mmActivitiesHeading');if(heading)heading.insertAdjacentElement('afterend',panel);else content.prepend(panel);}else base.appendChild(panel);}
 panel.hidden=false; panel.innerHTML='<header><strong>گزارش فعالیت '+esc(key)+'</strong><button type="button" id="mmClosePermanent" aria-label="بستن">×</button></header><p>در حال دریافت اطلاعات درخواست...</p>';
 panel.querySelector('#mmClosePermanent').onclick=function(){panel.innerHTML='<header><strong>جزئیات فعالیت</strong></header><div class="mm-panel-empty">یک فعالیت را انتخاب کنید.</div>';};
 mmIssueDetail(key).then(function(d){if(!panel.isConnected||panel.hidden)return;mmRenderPermanentIssue(panel,d);}).catch(function(e){panel.innerHTML='<header><strong>'+esc(key)+'</strong><button type="button" id="mmClosePermanent">×</button></header><p class="mm-error">'+esc(vError(e))+'</p>';panel.querySelector('button').onclick=function(){panel.hidden=true;};});
}
function mmMaintenanceStage(status){
 var x=String(status||'').trim();
 if(/محاسبه|بسته|بستن|closed|calculated/i.test(x))return 'close';
 if(/تحویل|ارسال به انبار|handover|deliver/i.test(x))return 'handover';
 if(/تعمیر|repair/i.test(x))return 'repair';
 if(/انجام|progress|working/i.test(x))return 'work';
 return 'new';
}

function mmMakePanelAccordion(panel){
 var cards=Array.prototype.slice.call(panel.querySelectorAll(':scope > .mm-detail-card'));
 cards.forEach(function(card,index){
  if(card.querySelector('#mmShowRequest')){card.classList.add('mm-standalone-request');return;}
  var h=card.querySelector(':scope > h4');
  var name=h?h.textContent.trim():(index===0?'خلاصه وضعیت':'بخش اطلاعات');
  if(h)h.remove();
  var body=document.createElement('div');body.className='mm-accordion-body';
  while(card.firstChild)body.appendChild(card.firstChild);
  var trigger=document.createElement('button');trigger.type='button';trigger.className='mm-accordion-toggle';
  trigger.innerHTML='<span>'+name+'</span><span class="mm-accordion-chevron" aria-hidden="true">⌄</span>';
  card.appendChild(trigger);card.appendChild(body);
  if(index<2){card.classList.add('mm-always-open');trigger.setAttribute('aria-expanded','true');body.hidden=false;trigger.disabled=true;if(index===0){trigger.remove();card.classList.add('mm-summary-card');}}
  else {trigger.setAttribute('aria-expanded','false');body.hidden=true;trigger.onclick=function(){body.hidden=!body.hidden;trigger.setAttribute('aria-expanded',String(!body.hidden));};}
 });
}
function mmCleanFullName(value){return String(value||'').replace(/\s*\([^()]*\)\s*$/,'').trim();}
function mmRenderPermanentIssue(panel,data){
 var r=data.issue||{}, key=r.key||'';
 var comments=(data.comments||[]).map(function(c){return '<div class="mm-comment"><b>'+esc(mmCleanFullName(c.author||''))+'</b><small>'+esc(mmFaDate(c.created||''))+'</small><p>'+esc(c.body||'')+'</p></div>';}).join('');
 var fields=(data.fields||[]).map(function(f){return mmDetailField(f.name,f.value);}).join('');
 var stage=mmMaintenanceStage(r.status);
 var flowHtml='<div class="mm-detail-card mm-workflow"><h4>روند فعالیت</h4><div class="mm-stage-grid">'+[['new','ثبت و شروع'],['work','در حال انجام'],['repair','تعمیر و پیگیری'],['handover','آماده تحویل / تحویل'],['close','بستن و محاسبه']].map(function(a,i,all){var pos=all.findIndex(function(z){return z[0]===stage;});return '<span class="mm-stage '+(i<pos?'done':(i===pos?'current':''))+'">'+a[1]+'</span>';}).join('')+'</div></div>';

 panel.innerHTML='<header><strong>گزارش فعالیت '+esc(key)+'</strong><button id="mmClosePermanent" type="button">×</button></header>'+
 '<h3 class="mm-panel-summary">'+esc(r.summary||'')+'</h3><div class="mm-detail-card mm-summary-fields">'+mmDetailField('وضعیت',r.status)+mmDetailField('مسئول',mmCleanFullName(r.assignee))+mmDetailField('اهمیت',r.priority)+mmDetailField('تاریخ ایجاد',mmFaDate(r.created))+'</div>'+
 flowHtml+
 '<div class="mm-detail-card mm-report-section"><h4>ثبت گزارش</h4><div class="mm-report-inner"><textarea id="mmPanelReport" rows="3" placeholder="شرح اقدامات و نتیجه بررسی را وارد کنید"></textarea><button type="button" id="mmPanelReportSave" class="mq-assets-btn primary">ثبت گزارش</button><div id="mmPanelReportStatus" role="status"></div></div></div>'+
 '<div class="mm-detail-card mm-handover-card"><h4>فرم تحویل دستگاه</h4><div class="mm-handover-grid"><label>نام دستگاه<input id="mmReceiptDevice" value="'+esc(r.device||r.summary||'')+'"></label><label>تاریخ تحویل<div class="mm-receipt-date"><input id="mmReceiptDate" readonly placeholder="انتخاب تاریخ" value="'+esc(mmShamsiToday())+'"><div id="mmReceiptDate_cal" class="mm-cal" hidden></div></div></label><label>تحویل‌دهنده<input id="mmReceiptFrom" autocomplete="off" placeholder="جست‌وجوی نام کاربر"><input type="hidden" id="mmReceiptFromId"></label><label>تحویل‌گیرنده<input id="mmReceiptTo" autocomplete="off" placeholder="جست‌وجوی نام کاربر"><input type="hidden" id="mmReceiptToId"></label></div><button id="mmPrintReceipt" type="button" class="mq-assets-btn primary">چاپ فرم تحویل</button></div>'+
 '<div class="mm-detail-card"><button type="button" id="mmShowRequest" class="mq-assets-btn primary">اقدام</button></div>';
 mmMakePanelAccordion(panel);
 panel.querySelector('#mmClosePermanent').onclick=function(){panel.innerHTML='<header><strong>جزئیات فعالیت</strong></header><div class="mm-panel-empty">یک فعالیت را انتخاب کنید.</div>';};
 panel.querySelector('#mmPanelReportSave').onclick=function(){var message=panel.querySelector('#mmPanelReport').value.trim(),out=panel.querySelector('#mmPanelReportStatus'),button=this;if(!message){out.textContent='متن گزارش را وارد کنید.';return;}button.disabled=true;mmWrite('issue.comment',{key:key,body:message,visibility:'public'}).then(function(){out.textContent='گزارش ثبت شد.';panel.querySelector('#mmPanelReport').value='';}).catch(function(e){out.textContent=vError(e);}).finally(function(){button.disabled=false;});};
 panel.querySelector('#mmReceiptDate').onclick=function(){mmReceiptCalendar();};
 mmIssueUserPicker(panel.querySelector('#mmReceiptFrom'),panel.querySelector('#mmReceiptFromId'));
 mmIssueUserPicker(panel.querySelector('#mmReceiptTo'),panel.querySelector('#mmReceiptToId'));

 panel.querySelector('#mmPrintReceipt').onclick=function(){var printKey='mediq.receipt.print.'+key;var n=Number(sessionStorage.getItem(printKey)||0);if(n>=2){alert('سقف مجاز چاپ این فرم از طریق این نشست به پایان رسیده است.');return;}var get=function(n){return panel.querySelector('#'+n).value.trim();};var device=get('mmReceiptDevice'),date=get('mmReceiptDate'),from=mmCleanFullName(get('mmReceiptFrom')),to=mmCleanFullName(get('mmReceiptTo'));if(!device||!date||!get('mmReceiptFromId')||!get('mmReceiptToId')){alert('دستگاه، تاریخ و هر دو کاربر را از فهرست انتخاب کنید.');return;}if(!confirm('توجه: از این فرم فقط می‌توانید ۲ بار چاپ بگیرید.\nآیا مایل به ادامه و باز کردن صفحه چاپ هستید؟'))return;var w=window.open('','_blank');if(!w){alert('مرورگر اجازه باز شدن پنجره چاپ را نداد. لطفاً Pop-up را مجاز کنید.');return;}w.document.write('<!doctype html><html lang="fa" dir="rtl"><meta charset="utf-8"><title>فرم تحویل</title><style>@page{size:A4;margin:16mm}@font-face{font-family:"MediQAttachedVazir";src:url("https://kb.h-soft.ir/download/attachments/174855060/Vazir-Regular.woff2") format("woff2"),url("https://kb.h-soft.ir/download/attachments/174855060/Vazir-Regular.woff") format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:"MediQAttachedVazir";src:url("https://kb.h-soft.ir/download/attachments/174855060/Vazir-Bold.woff2") format("woff2"),url("https://kb.h-soft.ir/download/attachments/174855060/Vazir-Bold.woff") format("woff");font-weight:700 900;font-style:normal;font-display:block}html,body,body *{font-family:"MediQAttachedVazir",Vazir,Tahoma,Arial,sans-serif!important;letter-spacing:normal!important}html{-webkit-print-color-adjust:exact;print-color-adjust:exact}body{font-size:15px}h2{font-size:22px}.statement{font-size:15px!important;line-height:2.65!important;word-spacing:normal!important}.sign b{font-size:14px!important}.sign p{font-size:14px!important}body{font-family:"MediQAttachedVazir",Vazir,Tahoma,Arial,sans-serif;direction:rtl;color:#16415c;line-height:2.5;margin:0;padding:28px;border:3px double #2b94bf;min-height:245mm;box-sizing:border-box}.brand{font-size:30px;font-weight:900;color:#268fbd;border-bottom:2px solid #d0e6f1;padding-bottom:15px}.sub{font-size:11px;color:#55788e}h2{text-align:center;margin:45px 0 35px}.statement{border:1px solid #c6deed;border-radius:12px;padding:20px;line-height:3}.sign{display:flex;gap:26px;margin-top:75px}.sign>div{flex:1;min-height:140px;border:1px solid #c6deed;border-radius:12px;padding:14px}.sign b{font-size:13px;color:#16415c}.sign p{margin-top:42px}.statement{text-align:justify;text-justify:inter-word;font-size:14px}.brand{text-align:right}.footer{font-size:10px;color:#66869a;border-top:1px solid #d1e3ed;margin-top:60px;padding-top:9px}</style><div class="brand">MediQ <span class="sub"> | مدیریت تجهیزات پزشکی</span></div><h2>صورت‌جلسه تحویل دستگاه</h2><p class="statement">در تاریخ '+esc(date)+' دستگاه '+esc(device)+' از خانم/آقای '+esc(from)+' تحویل گرفته شد و به خانم/آقای '+esc(to)+' تحویل داده شد.</p><div class="sign"><div><b>تحویل‌دهنده: '+esc(from)+'</b><p>امضا:</p></div><div><b>تحویل‌گیرنده: '+esc(to)+'</b><p>امضا:</p></div></div></html>');w.document.close();sessionStorage.setItem(printKey,String(n+1));if(n+1>=2)panel.querySelector('#mmPrintReceipt').disabled=true;w.focus();var runPrint=function(){if(!w.closed){w.focus();w.print();}};if(w.document.fonts&&w.document.fonts.ready){w.document.fonts.ready.then(runPrint).catch(runPrint);}else{runPrint();}};
 panel.querySelector('#mmShowRequest').onclick=function(){mmOpenIssueModal(data);};
}
/* MediQ V46.7: transitions are submitted ONLY after the modal validates its screen. */
function mmTransitionMeta(key){return mmRequest(MM_PROXY_ROOT+'mediqTransitionScreen?key='+encodeURIComponent(key),{method:'GET',cache:'no-store'});}
function mmTransitionExecute(key,transitionId,fields,comment){
 return mmRequest(MM_PROXY_ROOT+'mediqTransitionScreenWrite',{method:'POST',headers:{'Content-Type':'application/json','X-Atlassian-Token':'no-check'},body:JSON.stringify({key:key,transitionId:transitionId,fields:fields,comment:comment||''})});
}
function mmTIsAsset(m){return /rlabs-customfield-default-object|insight|assets/i.test((m.schema||{}).custom||'');}
function mmTField(name,meta){
 var sc=meta.schema||{}, type=sc.type||'string', items=meta.allowedValues||[], req=!!meta.required;
 var label='<label class="mm-transition-field" data-mm-field="'+esc(name)+'"><span>'+esc(meta.name||name)+(req?' <b class="mm-t-required">*</b>':'')+'</span>';
 var initial=meta.hasOwnProperty('value')?meta.value:null;
 if(mmTIsAsset(meta))return label+'<input data-mm-lookup="'+esc(name)+'" type="search" autocomplete="off" placeholder="نام یا شناسه را جست‌وجو کنید" value="'+esc(Array.isArray(initial)?initial.map(function(x){return x.label||x.name||x.key||'';}).join('، '):'')+'"><input data-mm-value="'+esc(name)+'" type="hidden"><div class="mm-t-asset-results" data-mm-results="'+esc(name)+'"></div></label>';
 if((sc.system||'')==='user'||/userpicker|multiuserpicker/i.test(sc.custom||''))return label+'<input type="search" data-mm-lookup="'+esc(name)+'" autocomplete="off" placeholder="جست‌وجوی نام فرد"><input type="hidden" data-mm-value="'+esc(name)+'"><div class="mm-t-asset-results" data-mm-results="'+esc(name)+'"></div></label>';
 if((sc.system||'')==='group'||/grouppicker/i.test(sc.custom||''))return label+'<input type="search" data-mm-lookup="'+esc(name)+'" autocomplete="off" placeholder="جست‌وجوی گروه"><input type="hidden" data-mm-value="'+esc(name)+'"><div class="mm-t-asset-results" data-mm-results="'+esc(name)+'"></div></label>';
 if(/cascadingselect/i.test(sc.custom||'')){
  var parents=items.map(function(v){return '<option value="'+esc(v.id||'')+'">'+esc(v.value||v.name||'')+'</option>';}).join('');
  return label+'<select data-mm-value="'+esc(name)+'" data-mm-cascade="'+esc(name)+'"><option value="">انتخاب گزینه اصلی</option>'+parents+'</select><select data-mm-child="'+esc(name)+'"><option value="">انتخاب گزینه فرعی</option></select></label>';
 }
 if(items.length){
  var isMulti=type==='array';
  if(isMulti)return label+'<div class="mm-t-checklist" data-mm-value="'+esc(name)+'">'+items.map(function(v){var id=String(v.id||v.key||v.value||v.name||'');return '<label><input type="checkbox" value="'+esc(id)+'"> '+esc(v.value||v.name||v.displayName||v.key||v.id||'')+'</label>';}).join('')+'</div></label>';
  return label+'<select data-mm-value="'+esc(name)+'"><option value="">انتخاب کنید</option>'+items.map(function(v){var id=String(v.id||v.key||v.value||v.name||'');return '<option value="'+esc(id)+'">'+esc(v.value||v.name||v.displayName||v.key||v.id||'')+'</option>';}).join('')+'</select></label>';
 }
 if(type==='array' || /select|checkboxes/i.test(sc.custom||''))return label+'<div class="mm-transition-error">گزینه‌های این فیلد در متادیتای مرحله ارائه نشده‌اند؛ ثبت مقدار بدون انتخاب معتبر انجام نمی‌شود.</div></label>';
 if(type==='boolean')return label+'<label class="mm-t-check"><input data-mm-value="'+esc(name)+'" type="checkbox"> بله</label></label>';
 if(type==='string'||type==='number'||type==='date'||type==='datetime'||!type){
  var large=/description|comment|توضیح|شرح/i.test(name+' '+(meta.name||''));
  if(type==='date'){
   var fid='mmTDate_'+String(name).replace(/[^a-z0-9]/gi,'_');
   return label+'<span class="mm-date-line"><input id="'+fid+'" data-mm-value="'+esc(name)+'" data-mm-jalali-date="1" type="text" inputmode="none" readonly autocomplete="off" dir="ltr" placeholder="انتخاب تاریخ شمسی"><span id="'+fid+'_cal" class="mm-cal" hidden></span></span></label>';
  }
  return label+(large?'<textarea rows="3" data-mm-value="'+esc(name)+'"></textarea>':'<input data-mm-value="'+esc(name)+'" type="'+(type==='number'?'number':type==='datetime'?'datetime-local':'text')+'">')+'</label>';
 }
 return label+'<div class="mm-transition-error">نوع این فیلد در رابط فعلی پشتیبانی نمی‌شود؛ از ثبت مقدار حدسی جلوگیری شد.</div></label>';
}
function mmTGather(overlay,tr){
 var values={}, fields=tr.fields||{};
 Object.keys(fields).forEach(function(name){
  if(name==='comment'||name==='attachment')return; // Attachment is uploaded separately; transition metadata has no set operation.
  var m=fields[name],sc=m.schema||{}, el=overlay.querySelector('[data-mm-value="'+name+'"]');
  if(!el){if(m.required)throw Error('فیلد الزامی «'+(m.name||name)+'» پشتیبانی نمی‌شود.');return;}
  var list=el.classList&&el.classList.contains('mm-t-checklist');
  var value=list?Array.from(el.querySelectorAll('input:checked')).map(function(c){return c.value;}):el.type==='checkbox'?el.checked:String(el.value||'').trim();
  if(m.required&&(value===''||value===null||(Array.isArray(value)&&!value.length)))throw Error('تکمیل فیلد «'+(m.name||name)+'» الزامی است.');
  if(value==='' || (Array.isArray(value)&&!value.length))return;
  if(/cascadingselect/i.test(sc.custom||'')){var child=overlay.querySelector('[data-mm-child="'+name+'"]');value={id:value};if(child&&child.value)value.child={id:child.value};}
  else if(mmTIsAsset(m))value=[{key:value}];
  else if((sc.system||'')==='user'||/userpicker/i.test(sc.custom||''))value=(sc.type==='array'?[{name:value}]:{name:value});
  else if((sc.system||'')==='group'||/grouppicker/i.test(sc.custom||''))value={name:value};
  else if(list)value=value.map(function(x){return (sc.items&&sc.items.type==='string')?x:{id:x};});
  else if(el.tagName==='SELECT')value={id:value};
  else if(sc.type==='number')value=Number(value);
  else if(el.hasAttribute('data-mm-jalali-date'))value=parseJalali(value,false);
  else if(sc.type==='datetime')value=value+':00.000+0330';
  values[name]=value;
 });
 return values;
}
function mmTransitionLookup(key,field,q){return mmRequest(MM_PROXY_ROOT+'mediqTransitionLookup?key='+encodeURIComponent(key)+'&field='+encodeURIComponent(field)+'&q='+encodeURIComponent(q),{method:'GET',cache:'no-store'});}
function mmOpenTransitionDialog(modal,meta,tid,issueKey,onAccept,inlineHost){
 document.querySelectorAll('.mm-t-screen-overlay').forEach(function(x){x.remove();});
 var tr=(meta.transitions||[]).find(function(x){return String(x.id)===String(tid);});
 if(!tr)throw Error('اطلاعات این مرحله از سرویس دریافت نشده است.');
 var fields=tr.fields||{},names=Object.keys(fields).filter(function(k){return k!=='comment' && k!=='attachment';});
 var overlay=document.createElement('div');overlay.className='mm-t-screen-overlay';overlay.dir='rtl';
 overlay.innerHTML='<div class="mm-t-screen-backdrop"></div><section class="mm-t-screen-card" role="dialog" aria-modal="true" aria-labelledby="mmTTitle"><header><div><strong id="mmTTitle">'+esc(tr.name)+'</strong><p>اطلاعات موردنیاز این مرحله را تکمیل کنید.</p></div><button class="mm-t-x" type="button" aria-label="بستن">×</button></header><div class="mm-t-screen-body">'+
  (names.length?'<div class="mm-transition-grid">'+names.map(function(k){return mmTField(k,fields[k]);}).join('')+'</div>':'<p class="mm-t-empty">برای این انتقال فیلد اضافی تعریف نشده است.</p>')+
  (fields.attachment?'<p class="mm-t-empty" style="font-size:12px;color:#53768b;margin:8px 0">پیوست فایل در این مرحله از طریق فرم انتقال قابل ثبت نیست. در صورت نیاز، فایل را از بخش پیوست‌های درخواست اضافه کنید.</p>':'')+
  '<label class="mm-transition-field mm-t-comment"><span>توضیحات انتقال '+(fields.comment&&fields.comment.required?'(الزامی)':'(اختیاری)')+'</span><textarea id="mmTransitionComment" rows="3" placeholder="در صورت نیاز، توضیحات مربوط به این اقدام را وارد کنید."></textarea></label><p class="mm-t-screen-error" role="alert"></p></div><footer><button class="mm-t-cancel" type="button">انصراف</button><button class="mm-t-ok" type="button">تأیید اطلاعات مرحله</button></footer></section>';
 if(inlineHost){overlay.classList.add('mq-v49-transition-inline');inlineHost.replaceChildren(overlay);}else{document.body.appendChild(overlay);}
 function close(){overlay.remove();}
 overlay.querySelector('.mm-t-x').onclick=close;overlay.querySelector('.mm-t-cancel').onclick=close;overlay.querySelector('.mm-t-screen-backdrop').onclick=close;
 overlay.querySelectorAll('[data-mm-jalali-date]').forEach(function(inp){
   inp.onclick=function(e){e.stopPropagation();mmCalendar(inp.id);};
   inp.onkeydown=function(e){if(e.key==='Enter'||e.key===' '){e.preventDefault();mmCalendar(inp.id);}};
 });
 overlay.querySelectorAll('[data-mm-cascade]').forEach(function(parent){
  var field=parent.getAttribute('data-mm-cascade'),child=overlay.querySelector('[data-mm-child="'+field+'"]');
  parent.onchange=function(){
   var m=fields[field]||{}, selected=(m.allowedValues||[]).find(function(v){return String(v.id)===parent.value;});
   child.innerHTML='<option value="">انتخاب گزینه فرعی</option>'+(selected&&selected.children||[]).map(function(v){return '<option value="'+esc(v.id||'')+'">'+esc(v.value||v.name||'')+'</option>';}).join('');
  };
 });
 overlay.querySelectorAll('[data-mm-lookup]').forEach(function(inp){
  var field=inp.getAttribute('data-mm-lookup'), result=overlay.querySelector('[data-mm-results="'+field+'"]'),hidden=overlay.querySelector('[data-mm-value="'+field+'"]'),serial=0,timer;
  function lookup(){var mine=++serial;hidden.value='';result.textContent='در حال دریافت فهرست...';
   mmTransitionLookup(issueKey,field,inp.value.trim()).then(function(d){
    if(!overlay.isConnected||mine!==serial)return;result.textContent='';var rows=d.items||[];
    if(!rows.length){result.textContent='موردی پیدا نشد.';return;}
    rows.slice(0,40).forEach(function(item){var btn=document.createElement('button');btn.type='button';btn.textContent=item.label||item.key;btn.onclick=function(){hidden.value=item.key;inp.value=item.label||item.key;result.textContent='';};result.appendChild(btn);});
   }).catch(function(e){if(mine===serial)result.textContent='جست‌وجو ناموفق بود: '+vError(e);});
  }
  inp.addEventListener('input',function(){hidden.value='';clearTimeout(timer);timer=setTimeout(lookup,280);});inp.addEventListener('focus',lookup);
 });
 overlay.querySelector('.mm-t-ok').onclick=function(){
  var err=overlay.querySelector('.mm-t-screen-error');err.textContent='';
  try{var values=mmTGather(overlay,tr),comment=overlay.querySelector('#mmTransitionComment').value.trim();if(fields.comment&&fields.comment.required&&!comment)throw Error('تکمیل توضیحات انتقال الزامی است.');onAccept(values,comment);close();}
  catch(e){err.textContent=e.message;}
 };
}

/* MEDIQ V49.10: resolve request attachment links on the file-owning server. */
function mqResolveIssueAttachmentUrl(a) {
  if (!a || typeof a !== 'object') return '';
  var raw = String(a.url || a.downloadUrl || a.content || '').trim();
  var id = String(a.id || '').trim();
  if (!/^\d+$/.test(id)) {
    var match = raw.match(/\/(?:secure\/attachment|rest\/api\/2\/attachment\/content)\/(\d+)(?:\/|[?#]|$)/i);
    if (match) id = match[1];
  }
  var name = String(a.name || a.filename || 'attachment').trim();
  if (/^\d+$/.test(id)) {
    return 'https://support.h-soft.ir/secure/attachment/' +
      encodeURIComponent(id) + '/' + encodeURIComponent(name);
  }
  // Never send attachment requests to the content portal by accident.
  if (/^https:\/\/support\.h-soft\.ir\/(?:secure\/attachment|rest\/api\/2\/attachment\/content)\//i.test(raw))
    return raw;
  return '';
}

function mmOpenIssueModal(data){
 var r=data.issue||{};
 document.querySelectorAll('.mm-request-modal').forEach(function(x){x.remove();});
 var modal=document.createElement('div');modal.className='mm-request-modal';modal.dir='rtl';
 var asset=data.asset||{};
 if(!asset.key){var refs=String(r.summary||'').match(/MED-[0-9]+/g)||[];var found=refs.find(function(k){return k!==r.key;});if(found){asset={key:found,label:found};}}
 var choices=(data.transitions||[]).map(function(t){return '<option value="'+esc(t.id)+'">'+esc(t.name)+'</option>';}).join('');
 var noTransitions=!((data.transitions||[]).length);
 var docs=(data.attachments||[]).map(function(a){
  var url=mqResolveIssueAttachmentUrl(a);
  var name=esc(a.name||a.filename||'فایل پیوست');
  return url
    ? '<a class="mm-doc-pill" target="_blank" rel="noopener noreferrer" href="'+esc(url)+'" title="نمایش پیوست">📎 '+name+'</a>'
    : '<span class="mm-doc-pill" title="نشانی معتبر برای این پیوست دریافت نشده است">📎 '+name+' (لینک نامعتبر)</span>';
 }).join('');
 modal.innerHTML='<div class="mm-request-backdrop"></div><section class="mm-request-box"><header><h3>مشخصات درخواست <span dir="ltr">'+esc(r.key)+'</span></h3><button id="mmCloseModal" type="button" aria-label="بستن">×</button></header><div class="mm-request-body">'+
 '<div class="mm-form-section"><h4>اطلاعات درخواست</h4><div class="mm-request-grid"><label>عنوان درخواست<input readonly id="mmEditSummary" value="'+esc(r.summary||'')+'"></label><label>مسئول<input id="mmEditAssignee" autocomplete="off" placeholder="جست‌وجوی نام مسئول"><input id="mmEditAssigneeId" type="hidden" value="'+esc(r.assigneeKey||'')+'"></label><label>اهمیت<select id="mmEditPriority"><option value="">بدون تغییر</option>'+((data.priorities||[]).map(function(p){return '<option value="'+esc(p.id)+'" '+(p.name===r.priority?'selected':'')+'>'+esc(p.name)+'</option>';}).join(''))+'</select></label><label>تغییر وضعیت<select id="mmNextTransition"><option value="">انتخاب تغییر وضعیت</option>'+choices+'</select></label><label class="mm-wide">شرح درخواست<textarea readonly id="mmEditDescription" rows="3">'+esc(r.description||'')+'</textarea></label></div><div class="mm-actions"><button id="mmSaveIssue" type="button" class="mq-assets-btn primary">ثبت اقدام</button></div><p id="mmSaveIssueResult" role="status"></p>'+''+'</div>'+
 '<div class="mm-form-section mm-related-asset"><h4>دستگاه</h4><button id="mmAssetButton" type="button" class="mm-asset-button" '+(!asset.key?'disabled':'')+'>'+esc(asset.label||asset.key||'دستگاه مرتبط ثبت نشده')+'</button><div id="mmAssetTickets" hidden></div></div>'+
 (String(r.issueTypeId||'')==='10700'&&noTransitions?'<div class="mm-form-section" role="status" style="background:#fff9ed;border-color:#f4d7a2"><strong>پیش‌نیاز بستن ارزیابی ریسک</strong><p>ابتدا فرم ارزیابی پیوندشده در یادداشت‌های پایین را تکمیل کنید. تا زمانی که مرحله بستن توسط گردش کار برای شما مجاز نشود، امکان بستن وجود ندارد.</p></div>':'')+
 '<div class="mm-form-section"><h4>یادداشت‌ها</h4><div id="mmCommentList">'+((data.comments||[]).map(function(c){var note=esc(c.body||'');note=note.replace(/https:\/\/[^\s<]+/g,function(link){return '<a href="'+link+'" target="_blank" rel="noopener noreferrer">'+link+'</a>';});return '<div class="mm-comment"><strong>'+esc(mmCleanFullName(c.author||''))+'</strong><p>'+note+'</p></div>';}).join('')||'')+'</div><label>ثبت یادداشت<textarea id="mmNewComment" rows="3" placeholder="متن پیام را وارد کنید"></textarea></label><input id="mmCommentVisibility" type="hidden" value="public"><div class="mm-comment-actions"><button id="mmSendCommentInternal" class="mq-assets-btn" type="button">ثبت یادداشت داخلی</button><button id="mmSendComment" class="mq-assets-btn primary" type="button">یادداشت برای مشتری</button></div><p id="mmCommentResult" role="status"></p></div>'+
 '<div class="mm-compact-attachments"><h4>پیوست‌ها</h4><div class="mm-documents">'+(docs||'<p class="mm-hint">پیوستی ثبت نشده است.</p>')+'</div><div class="mm-attach-controls"><label class="mm-attach-trigger"><span class="mm-file-label">انتخاب فایل</span><input id="mmIssueFile" type="file" aria-label="انتخاب فایل پیوست"></label><button id="mmUploadIssue" class="mq-assets-btn" type="button" disabled hidden>بارگذاری فایل</button></div></div></div></section>';
 document.body.appendChild(modal);
 var uploadInput=modal.querySelector('#mmIssueFile');
 var uploadButton=modal.querySelector('#mmUploadIssue');
 var uploadMessage=document.createElement('div');uploadMessage.className='mm-upload-message';uploadMessage.setAttribute('role','status');
 uploadButton.insertAdjacentElement('afterend',uploadMessage);
 uploadButton.hidden=false;uploadButton.disabled=true;uploadButton.textContent='افزودن پیوست';
 uploadInput.addEventListener('change',function(){
    uploadButton.disabled=!(uploadInput.files&&uploadInput.files.length);
    uploadMessage.textContent=uploadInput.files&&uploadInput.files[0]?'فایل انتخاب شد؛ برای بارگذاری «افزودن پیوست» را بزنید.':'';
 });
 uploadButton.onclick=function(){
  var file=uploadInput.files&&uploadInput.files[0];if(!file)return;
  if(file.size>6291456){uploadMessage.textContent='حجم فایل نباید بیشتر از ۶ مگابایت باشد.';return;}
  uploadButton.disabled=true;uploadMessage.textContent='در حال بارگذاری فایل...';
  var reader=new FileReader();
  reader.onerror=function(){uploadMessage.textContent='خواندن فایل ناموفق بود.';uploadButton.disabled=false;};
  reader.onload=function(){
   var content=String(reader.result||'').split(',')[1]||'';
   mmWrite('issue.attachment',{key:r.key,filename:file.name,contentType:file.type||'application/octet-stream',base64:content})
    .then(function(result){
      if(!result||result.ok!==true)throw Error(result&&result.message||'ثبت پیوست تأیید نشد.');
      uploadMessage.textContent='پیوست با موفقیت ثبت شد.';
      uploadInput.value='';
      return mmIssueDetail(r.key).then(function(fresh){
       if(!modal.isConnected)return;
       var list=modal.querySelector('.mm-documents');
       if(list)list.innerHTML=(fresh.attachments||[]).map(function(a){var url=mqResolveIssueAttachmentUrl(a);var name=esc(a.name||a.filename||'پیوست');return url?'<a class="mm-doc-pill" href="'+esc(url)+'" target="_blank" rel="noopener noreferrer">📎 '+name+'</a>':'<span class="mm-doc-pill">'+name+'</span>';}).join('')||'پیوستی ثبت نشده است.';
      });
    }).catch(function(err){uploadMessage.textContent='بارگذاری ناموفق بود: '+(err&&err.message?String(err.message).slice(0,180):'خطای ارتباط با سرویس');})
    .finally(function(){uploadButton.disabled=false;});
  };
  reader.readAsDataURL(file);
 };
 var formSections=modal.querySelectorAll('.mm-request-body > .mm-form-section');
 var attachSection=modal.querySelector('.mm-compact-attachments');
 var relatedSection=modal.querySelector('.mm-related-asset');
 if(attachSection&&relatedSection)relatedSection.parentNode.insertBefore(attachSection,relatedSection);
 var firstSection=modal.querySelector('.mm-request-body > .mm-form-section');if(attachSection&&firstSection){firstSection.querySelector('.mm-request-grid').appendChild(attachSection);}

 var originalFields={summary:r.summary||'',description:r.description||'',assignee:r.assigneeKey||'',priority:(modal.querySelector('#mmEditPriority')||{}).value||''};
 function hasUnsaved(){return modal.querySelector('#mmEditSummary').value!==originalFields.summary||modal.querySelector('#mmEditDescription').value!==originalFields.description||modal.querySelector('#mmEditAssigneeId').value!==originalFields.assignee||modal.querySelector('#mmEditPriority').value!==originalFields.priority||!!modal.querySelector('#mmNextTransition').value;}
 function safeClose(){var ask=modal.querySelector('#mmConfirmDiscard');if(ask){ask.hidden=false;}}
 modal.querySelector('#mmCloseModal').onclick=safeClose;modal.querySelector('.mm-request-backdrop').onclick=safeClose;
 var acts=modal.querySelector('.mm-actions');acts.insertAdjacentHTML('beforeend','<button id="mmCancelIssue" type="button" class="mq-assets-btn">انصراف</button>');modal.querySelector('#mmCancelIssue').onclick=safeClose;
 modal.querySelector('.mm-request-box').insertAdjacentHTML('beforeend','<div id="mmConfirmDiscard" class="mm-discard-overlay" hidden><div class="mm-discard-card"><strong>تغییرات ذخیره‌نشده</strong><p>تغییرات این فرم ذخیره نشده‌اند. آیا از بستن فرم بدون ذخیره تغییرات اطمینان دارید؟</p><div><button type="button" id="mmDiscardYes" class="mq-assets-btn">بستن بدون ذخیره</button><button type="button" id="mmDiscardNo" class="mq-assets-btn primary">ادامه ویرایش</button></div></div></div>');
 modal.querySelector('#mmDiscardYes').onclick=function(){modal.remove();};modal.querySelector('#mmDiscardNo').onclick=function(){modal.querySelector('#mmConfirmDiscard').hidden=true;};
 // Transition is selected in the existing action form; screen fields appear in a separate modal.
 var transitionSelect=modal.querySelector('#mmNextTransition');
 var cards=document.createElement('div');cards.className='mm-transition-tiles';
 cards.innerHTML=(data.transitions||[]).map(function(t){return '<button type="button" class="mm-transition-tile" data-transition-id="'+esc(t.id)+'">'+esc(t.name)+'</button>';}).join('');
 transitionSelect.parentNode.appendChild(cards);transitionSelect.style.display='none';
 var screenMeta=null,screenLoadToken=0,confirmedTransition=null;
 cards.querySelectorAll('[data-transition-id]').forEach(function(tile){tile.onclick=function(){
  var tid=tile.dataset.transitionId;transitionSelect.value=tid;confirmedTransition=null;
  cards.querySelectorAll('[data-transition-id]').forEach(function(x){x.classList.toggle('chosen',x===tile);});
  var token=++screenLoadToken;status('در حال دریافت فیلدهای مرحله...');
  mmTransitionMeta(r.key).then(function(meta){
   if(!modal.isConnected||token!==screenLoadToken)return;
   screenMeta=meta;status('');
   var host=modal.querySelector('#mqV49InlineStageFields');
   if(!host)return;
   mmOpenTransitionDialog(modal,meta,tid,r.key,function(values,comment){
    confirmedTransition={id:String(tid),fields:values,comment:comment};
    status('اطلاعات مرحله تأیید شد. برای اعمال وضعیت، «ثبت اقدام» را بزنید.');
   },host);
  }).catch(function(e){if(token===screenLoadToken){status('دریافت فیلدهای مرحله ناموفق بود: '+vError(e));transitionSelect.value='';tile.classList.remove('chosen');}});
 };});
 // MEDIQ V47.0 – presentation only; keep original identifiers and explicit save behavior.
 var infoSection=modal.querySelector('.mm-request-body > .mm-form-section');
 var infoGrid=infoSection.querySelector('.mm-request-grid');
 var priorityLabel=modal.querySelector('#mmEditPriority').closest('label');
 var priorityInput=modal.querySelector('#mmEditPriority');
 priorityInput.style.display='none';
 var importance=String(r.priority||'نامشخص');
 var MQ_V494_ICONS=MQ_MEDIQ_PRIORITY_ASSETS;
 var mqImportanceLevel=mqPriorityAsset(importance);
 var mqImportanceIcons=MQ_V494_ICONS;
 priorityLabel.firstChild.textContent='اهمیت : ';
 priorityLabel.insertAdjacentHTML('beforeend','<span class="mq-v47-priority" aria-label="اهمیت '+esc(importance)+'" title="'+esc(importance)+'"><img class="mq-v494-icon" src="'+mqImportanceIcons[mqImportanceLevel]+'" alt="'+esc(importance)+'"><span class="mq-v494-importance-text">'+esc(importance)+'</span></span>');
 var assetBox=modal.querySelector('.mm-related-asset');
 if(assetBox){
  assetBox.classList.add('mq-v47-device');infoGrid.appendChild(assetBox);
  var imageSource=String(asset.imageUrl||asset.avatarUrl||asset.thumbnailUrl||'');
  if(imageSource && (/^\/[^/]/.test(imageSource)||/^https:\/\/[^\s]+$/i.test(imageSource))){
   var image=document.createElement('img');image.className='mq-v47-product-image';image.alt='تصویر دستگاه';image.loading='lazy';image.src=imageSource;assetBox.insertBefore(image,assetBox.firstChild.nextSibling);
  }
 }
 var currentStatus=document.createElement('div');currentStatus.className='mq-v47-status';currentStatus.innerHTML='<span>وضعیت فعلی :</span><strong>'+esc(r.status||'نامشخص')+'</strong>';
 infoGrid.appendChild(currentStatus);
 var actionSection=document.createElement('div');actionSection.className='mm-form-section mq-v47-action';
 actionSection.innerHTML='<h4>اقدام</h4><p class="mq-v47-help">مرحله بعد را انتخاب کنید؛ تغییر فقط پس از ثبت اقدام اعمال می‌شود.</p>';
 var actionBox=document.createElement('div');actionBox.className='mq-v47-actions-container';actionSection.appendChild(actionBox);
 var workflow=document.createElement('div');workflow.className='mq-v497-flow mm-workflow';
 var workflowStages=[['new','ثبت و شروع'],['work','در حال انجام'],['repair','تعمیر و پیگیری'],['handover','آماده تحویل / تحویل'],['close','بستن و محاسبه']];
 var currentStage=mmMaintenanceStage(r.status||'');
 var currentStageIndex=workflowStages.findIndex(function(step){return step[0]===currentStage;});
 workflow.innerHTML='<h4>روند فعالیت</h4><div class="mm-stage-grid">'+workflowStages.map(function(step,index){
  var state=index===currentStageIndex?' current':index<currentStageIndex?' done':'';
  return '<span class="mm-stage'+state+'"'+(index===currentStageIndex?' aria-current="step"':'')+'>'+step[1]+'</span>';
 }).join('')+'</div>';
 actionBox.appendChild(workflow);

 var transitionLabel=transitionSelect.closest('label');
 var actionRow=document.createElement('div');actionRow.className='mq-v494-action-row';actionBox.appendChild(actionRow);
 if(transitionLabel){transitionLabel.classList.add('mq-v49-stage-label');transitionLabel.firstChild.textContent='تغییر وضعیت';actionRow.appendChild(transitionLabel);}
 var inlineFields=document.createElement('div');inlineFields.id='mqV49InlineStageFields';inlineFields.className='mq-v49-inline-stage-host';actionBox.appendChild(inlineFields);
 var assigneeLabel=modal.querySelector('#mmEditAssignee').closest('label');if(assigneeLabel)actionRow.appendChild(assigneeLabel);
 var selfAssign=document.createElement('button');selfAssign.type='button';selfAssign.className='mq-v47-self';selfAssign.textContent='ارجاع به خودم';
 selfAssign.onclick=function(){
  var btn=this;btn.disabled=true;
  mmApi('issue.me').then(function(me){
    if(!me||me.ok===false||!me.name)throw Error('حساب کاربر فعلی شناسایی نشد.');
    assigneeId.value=me.name;
    assignee.value=me.displayName||me.name;
    var menu=assignee.parentNode.querySelector('.mm-user-menu');if(menu)menu.innerHTML='';
    status('مسئول انتخاب شد. برای اعمال ارجاع، دکمه «ثبت اقدام» را بزنید.');
  }).catch(function(e){status('ارجاع به خودم: '+vError(e));}).finally(function(){btn.disabled=false;});
 };
 if(assigneeLabel)assigneeLabel.appendChild(selfAssign);
 var actionButtons=infoSection.querySelector('.mm-actions');if(actionButtons)actionSection.appendChild(actionButtons);
 var actionResult=infoSection.querySelector('#mmSaveIssueResult');if(actionResult)actionSection.appendChild(actionResult);
 infoSection.insertAdjacentElement('afterend',actionSection);
 var noteSection=modal.querySelector('#mmCommentList')?.closest('.mm-form-section');
 if(noteSection){noteSection.classList.add('mq-v47-notes');var noteButtons=noteSection.querySelector('.mm-comment-actions');if(noteButtons)noteButtons.insertAdjacentHTML('afterend','<h5>سوابق یادداشت</h5>');}
 modal.querySelector('#mmEditAssignee').closest('label').firstChild.textContent='ارجاع به';
 
 var assignee=modal.querySelector('#mmEditAssignee'),assigneeId=modal.querySelector('#mmEditAssigneeId');mmIssueUserPicker(assignee,assigneeId);assignee.value=mmCleanFullName(r.assignee||'');
 function status(t){modal.querySelector('#mmSaveIssueResult').textContent=t;}
 modal.querySelector('#mmSaveIssue').onclick=function(){
  var summary=modal.querySelector('#mmEditSummary').value.trim();
  var description=modal.querySelector('#mmEditDescription').value;
  var transitionId=modal.querySelector('#mmNextTransition').value;
  var transitionFields={};if(transitionId){if(!confirmedTransition||confirmedTransition.id!==String(transitionId)){status('ابتدا مرحله موردنظر را انتخاب و فرم آن را تأیید کنید.');return;}transitionFields=confirmedTransition.fields;}
  var b=this;
  b.disabled=true;
  status('در حال ذخیره تغییرات...');
  var changed=summary!==(r.summary||'')||description!==(r.description||'')||assigneeId.value!==(r.assigneeKey||'');
  (changed?mmWrite('issue.update',{
   key:r.key,summary:summary,description:description,
   assignee:assigneeId.value,
   priorityId:originalFields.priority
  }):Promise.resolve({ok:true})).then(function(updateResponse){
   if(updateResponse && updateResponse.ok === false){
    throw new Error(updateResponse.message || 'ثبت تغییرات تأیید نشد.');
   }
   if(!transitionId)return false;
   status('تغییرات ذخیره شد؛ در حال تغییر وضعیت...');
   return mmTransitionExecute(r.key,transitionId,transitionFields,confirmedTransition.comment).then(function(transitionResponse){
    if(transitionResponse && transitionResponse.ok === false){
     throw new Error(transitionResponse.message || 'تغییر وضعیت تأیید نشد.');
    }
    return true;
   });
  }).then(function(changedStatus){
   // Close the existing dialog ONLY after Jira has accepted all requested writes.
   if(modal.isConnected)modal.remove();
   // Refresh the selected activity panel without reopening the action modal.
   var panel=document.getElementById('mmPermanentIssue');
   if(panel && panel.isConnected && !panel.hidden){
    mmIssueDetail(r.key).then(function(d){
     if(panel.isConnected && !panel.hidden)mmRenderPermanentIssue(panel,d);
    }).catch(function(e){
     console.warn('MediQ: activity detail refresh failed after successful save',e);
    });
   }
   // Refresh KPI counts and the activity list; a refresh error must not undo success.
   mmApi('overview').then(function(x){
    MM.activities=x.activities||[];
    if(MM.tab==='overview'){
     // Preserve the existing dashboard renderer and current filters.
     mmPaintActivities();
    }
   }).catch(function(e){
    console.warn('MediQ: dashboard refresh failed after successful save',e);
   });
  }).catch(function(e){
   if(modal.isConnected)status('ذخیره یا انتقال وضعیت کامل نشد: '+vError(e));
  }).finally(function(){b.disabled=false;});
 };
 modal.querySelector('#mmSendComment').onclick=function(){var message=modal.querySelector('#mmNewComment').value.trim();if(!message){modal.querySelector('#mmCommentResult').textContent='متن پیام را وارد کنید.';return;}var b=this;b.disabled=true;mmWrite('issue.comment',{key:r.key,body:message,visibility:modal.querySelector('#mmCommentVisibility').value}).then(function(){modal.querySelector('#mmCommentResult').textContent='پیام ثبت شد.';modal.querySelector('#mmNewComment').value='';}).catch(function(e){modal.querySelector('#mmCommentResult').textContent=vError(e);}).finally(function(){b.disabled=false;});};
 modal.querySelector('#mmSendCommentInternal').onclick=function(){modal.querySelector('#mmCommentVisibility').value='internal';modal.querySelector('#mmSendComment').click();};
 modal.querySelector('#mmSendComment').addEventListener('click',function(e){if(e.isTrusted)modal.querySelector('#mmCommentVisibility').value='public';},true);
 modal.querySelector('#mmAssetButton').onclick=function(){var host=modal.querySelector('#mmAssetTickets');if(!asset.key)return;host.hidden=false;host.textContent='در حال بررسی درخواست‌های مرتبط...';mmApi('asset.tickets',{type:asset.key}).then(function(x){var items=x.items||[];host.innerHTML='<h4>درخواست‌های مرتبط با '+esc(asset.label||asset.key)+'</h4>'+(items.length?items.map(function(it){return '<button type="button" class="mm-related-ticket" data-related="'+esc(it.key)+'">'+esc(it.key)+' — '+esc(it.summary)+'</button>';}).join(''):'درخواستی با شناسه این دارایی پیدا نشد.');host.querySelectorAll('[data-related]').forEach(function(b){b.onclick=function(){mmIssueDetail(b.dataset.related).then(mmOpenIssueModal);};});}).catch(function(e){host.textContent=vError(e);});};
}
function mmReceiptCalendar(){
 var input=document.getElementById('mmReceiptDate'),host=document.getElementById('mmReceiptDate_cal');if(!input||!host)return;
 if(!host.hidden){host.hidden=true;return;}
 var parts=String(input.value).replace(/[۰-۹]/g,function(c){return '۰۱۲۳۴۵۶۷۸۹'.indexOf(c);}).match(/(\d{4})\/(\d{1,2})\/(\d{1,2})/);
 var now=new Intl.DateTimeFormat('en-US-u-ca-persian',{year:'numeric',month:'numeric',day:'numeric',timeZone:'Asia/Tehran'}).formatToParts(new Date()),today={};now.forEach(function(v){if(['year','month'].includes(v.type))today[v.type]=+v.value;});
 var y=parts?+parts[1]:today.year,m=parts?+parts[2]:today.month;
 var months=['فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند'];
 function render(){var len=m<7?31:m<12?30:29;if(m===12){try{mmIsoDate(y+'/12/30');len=30;}catch(e){}}
 var first=new Date(mmIsoDate(y+'/'+m+'/1')+'T12:00:00Z').getUTCDay(),offset=(first+1)%7;
 host.innerHTML='<div class="mm-cal-head"><button type="button" data-step="-1">قبل</button><strong>'+months[m-1]+' '+y+'</strong><button type="button" data-step="1">بعد</button></div><div class="mm-cal-days">'+['ش','ی','د','س','چ','پ','ج'].map(function(a){return '<b>'+a+'</b>';}).join('')+'<i></i>'.repeat(offset)+Array.from({length:len},function(_,i){return '<button type="button" data-day="'+(i+1)+'">'+(i+1).toLocaleString('fa-IR')+'</button>';}).join('')+'</div>';
 host.querySelectorAll('[data-step]').forEach(function(b){b.onclick=function(){m+=+b.dataset.step;if(m===0){m=12;y--;}if(m===13){m=1;y++;}render();};});host.querySelectorAll('[data-day]').forEach(function(b){b.onclick=function(){input.value=(y+'/'+String(m).padStart(2,'0')+'/'+String(+b.dataset.day).padStart(2,'0')).replace(/\d/g,function(d){return '۰۱۲۳۴۵۶۷۸۹'[+d];});host.hidden=true;};});}
 host.hidden=false;render();
}

function mmEquipTable(rows,docs){return mmTable(['شناسه','دستگاه','اسناد تعمیراتی'],rows.slice(0,500).map(function(r){var d=docs.filter(function(x){return x.equipment===r.key;});return [esc(r.key),esc(labelOf(r)),d.length?d.map(function(x){return mmLink(x.url)+' ('+esc(x.title)+')';}).join(' | '):'سندی ثبت نشده'];}));}
function mmScope(){var s=$id('mm_scope'),t=$id('mm_target');if(!s||!t)return;var load=function(){t.innerHTML='<option value="">در حال بارگذاری...</option>';mmApi('scope',{type:s.value}).then(function(x){if(!t.isConnected)return;t.innerHTML='<option value="">انتخاب کنید</option>'+x.items.map(function(o){return '<option value="'+esc(o.key)+'">'+esc(o.label)+'</option>';}).join('');}).catch(function(e){t.innerHTML='<option value="">'+esc(vError(e))+'</option>';});};s.onchange=load;load();var search=$id('mm_targetSearch');if(search){search.oninput=function(){var q=searchNorm(search.value);Array.from(t.options).forEach(function(o){o.hidden=!!q&&searchNorm(o.textContent).indexOf(q)<0;});};}t.onchange=function(){var key=t.value, text=t.options[t.selectedIndex]?t.options[t.selectedIndex].textContent:'';var table=document.querySelector('#mmContent .mq-tbl-wrap table');if(!table)return;Array.from(table.querySelectorAll('tbody tr')).forEach(function(tr){var hay=searchNorm(tr.textContent);tr.hidden=!!key&&hay.indexOf(searchNorm(key))<0&&hay.indexOf(searchNorm(text))<0;});};}
function mmBindTargetCombo(){
 var input=$id('mm_targetQuery'),menu=$id('mm_targetOptions'),select=$id('mm_target');if(!input||!menu||!select)return;
 function fill(){var term=searchNorm(input.value||'');var options=Array.from(select.options).filter(function(o){return o.value&&(!term||searchNorm(o.textContent).includes(term));}).slice(0,70);menu.innerHTML=options.length?options.map(function(o){return '<button type="button" data-target-key="'+esc(o.value)+'">'+esc(o.textContent)+'</button>';}).join(''):'<span class="mm-combo-empty">موردی یافت نشد</span>';menu.hidden=false;input.setAttribute('aria-expanded','true');}
 input.addEventListener('focus',fill);input.addEventListener('input',function(){select.value='';fill();});
 menu.addEventListener('click',function(e){var button=e.target.closest('[data-target-key]');if(!button)return;select.value=button.dataset.targetKey;input.value=select.options[select.selectedIndex].textContent;menu.hidden=true;input.setAttribute('aria-expanded','false');select.dispatchEvent(new Event('change',{bubbles:true}));});
 document.addEventListener('click',function(e){if(!input.isConnected)return;if(!e.target.closest('.mm-combo')){menu.hidden=true;input.setAttribute('aria-expanded','false');}},true);
 var scope=$id('mm_scope');if(scope)scope.addEventListener('change',function(){input.value='';menu.hidden=true;});
}
function mmAttachSearchSelect(id,filterCallback){
 var select=$id(id);if(!select||select.dataset.comboReady)return;select.dataset.comboReady='1';
 var parent=select.parentNode;var wrapper=document.createElement('div');wrapper.className='mm-combo mm-combo-device';parent.insertBefore(wrapper,select);
 var inp=document.createElement('input');inp.type='search';inp.autocomplete='off';inp.placeholder='برای جست‌وجو نام یا شناسه را تایپ کنید';inp.setAttribute('aria-label','جست‌وجو و انتخاب');
 var menu=document.createElement('div');menu.className='mm-combo-menu';menu.hidden=true;wrapper.appendChild(inp);wrapper.appendChild(menu);wrapper.appendChild(select);select.style.display='none';
 var opts=Array.from(select.options).filter(function(x){return x.value;}).map(function(x){return {value:x.value,text:x.textContent};});
 function paint(){var q=searchNorm(inp.value);var list=opts.filter(function(x){return !q||searchNorm(x.text).indexOf(q)>=0;}).slice(0,80);menu.innerHTML=list.length?list.map(function(x){return '<button type="button" data-combo-val="'+esc(x.value)+'">'+esc(x.text)+'</button>';}).join(''):'<span class="mm-combo-empty">موردی یافت نشد</span>';menu.hidden=false;}
 inp.addEventListener('focus',paint);inp.addEventListener('input',function(){select.value='';paint();if(filterCallback)filterCallback('','');});
 menu.addEventListener('click',function(e){var option=e.target.closest('[data-combo-val]');if(!option)return;select.value=option.getAttribute('data-combo-val');var entry=opts.find(function(x){return x.value===select.value;});inp.value=entry?entry.text:'';menu.hidden=true;select.dispatchEvent(new Event('change',{bubbles:true}));if(filterCallback)filterCallback(select.value,inp.value);});
 document.addEventListener('click',function(e){if(inp.isConnected&&!wrapper.contains(e.target))menu.hidden=true;},true);
}
function mmBind(){
 document.querySelectorAll('#mmContent [data-mm-kpi]').forEach(function(btn){btn.onclick=function(){MM.cardFilter=btn.getAttribute('data-mm-kpi');document.querySelectorAll('#mmContent [data-mm-kpi]').forEach(function(x){var selected=x===btn;x.classList.toggle('active',selected);x.setAttribute('aria-pressed',selected?'true':'false');});var t=$id('mmType'),st=$id('mmStatus');if(t)t.value='all';if(st)st.value='all';mmPaintActivities();};});
 if(MM.tab==='plans'){var form=document.querySelector('#mmContent .mm-plan-form'),table=document.querySelector('#mmContent .mq-tbl-wrap');if(form&&table&&table.parentElement){var formHeading=$id('mmPlanFormHeading'),listHeading=$id('mmPlanListHeading');if(formHeading)table.parentElement.insertBefore(formHeading,table);table.parentElement.insertBefore(form,table);if(listHeading)table.parentElement.insertBefore(listHeading,table);}}
 document.querySelectorAll('[data-mm-side]').forEach(function(btn){btn.onclick=function(){mmLoad(btn.getAttribute('data-mm-side'));};});
 if(MM.tab==='em')mmAttachSearchSelect('mm_device');
 if(MM.tab==='equipment')mmAttachSearchSelect('mm_equipment',function(key,label){var search=$id('mmEquipSearch');if(search){search.value=key||label||'';search.dispatchEvent(new Event('input',{bubbles:true}));}});
 if(MM.tab==='evaluations'){mmAttachSearchSelect('mm_issue');mmAttachSearchSelect('mm_supplier');}
 if(MM.tab==='contracts')mmAttachSearchSelect('mm_supplier');
 document.querySelectorAll('#mmContent .mm-date-line input').forEach(function(input){input.onclick=function(e){e.stopPropagation();mmCalendar(input.id);};input.onkeydown=function(e){if(e.key==='Enter'||e.key===' '){e.preventDefault();mmCalendar(input.id);}};});var b=$id('mmSubmit');if(b){var map={plans:['pm.create',['kind','scope','target','start','end','period','active','contract']],em:['em.create',['device','priority','downtime','description']],suppliers:['supplier.create',['name','phone','address','contact','contactPhone','category']],evaluations:['evaluation.save',['issue','supplier','score','note']],contracts:['contract.save',['title','contractType','number','supplier','start','end','coverage']],equipment:['document.save',['equipment','title','docType','issue']]};var f=map[MM.tab];if(f)b.onclick=function(){if(f[0]==='pm.create'&&!mmDateNotPast())return;mmSave(f[0],f[1]);};}
 document.querySelectorAll('[data-mm-plan-edit]').forEach(function(btn){btn.onclick=function(){var plan=(MM.plans||[]).find(function(p){return p.key===btn.dataset.mmPlanEdit;});if(!plan)return;var form=$id('mmPlanFormHeading');if(form)form.scrollIntoView({block:'start',behavior:'smooth'});var kind=$id('mm_kind'),scope=$id('mm_scope'),period=$id('mm_period'),status=$id('mm_active'),start=$id('mm_start'),end=$id('mm_end'),identity=$id('mmEditIdentity');document.querySelectorAll('#mmContent .mq-tbl tbody tr').forEach(function(tr){tr.classList.toggle('mm-plan-row-selected',!!tr.querySelector('button[data-mm-plan-edit=\"'+plan.key+'\"]'));});if(form)form.textContent='ویرایش برنامه '+plan.key;if(kind)kind.value=plan.kind||'PM';if(period){period.value='';var requested=String(plan.period==null?'':plan.period);if(Array.from(period.options).some(function(o){return o.value===requested;}))period.value=requested;else period.selectedIndex=0;}if(status)status.value=mmPlanState(plan)==='غیرفعال'?'inactive':'active';if(start)start.value=mmFaDate(plan.start||plan.next||'').replace(/\u200e/g,'');if(end)end.value=plan.end?mmFaDate(plan.end).replace(/\u200e/g,''):'';var contractSelect=$id('mm_contract');if(contractSelect){contractSelect.value=plan.contract||'';}if(scope)scope.value=plan.scope||scope.value;var submit=$id('mmSubmit');if(submit){submit.textContent='ذخیره ویرایش';submit.onclick=function(){var obj={key:plan.key,kind:mmVal('mm_kind'),scope:mmVal('mm_scope'),target:mmVal('mm_target'),period:mmVal('mm_period'),active:mmVal('mm_active'),end:mmVal('mm_end'),contract:mmVal('mm_contract')};try{obj.start=mmIsoDate(mmVal('mm_start'));if(obj.end)obj.end=mmIsoDate(obj.end);if(obj.end&&obj.end<obj.start)throw new Error('تاریخ پایان نمی‌تواند قبل از تاریخ شروع باشد.');if(!obj.period&&obj.kind==='PM')throw new Error('دوره این برنامه نامشخص است؛ دوره جدید را انتخاب کنید.');}catch(e){$id('mmNotice').textContent=e.message;return;}submit.disabled=true;mmWrite('pm.update',obj).then(function(){mmLoad('plans');}).catch(function(e){$id('mmNotice').textContent='ویرایش ثبت نشد: '+vError(e);}).finally(function(){submit.disabled=false;});};}};});
 document.querySelectorAll('[data-mm-plan-toggle]').forEach(function(btn){btn.onclick=function(){var key=btn.getAttribute('data-mm-plan-toggle'),next=btn.getAttribute('data-mm-plan-state');btn.disabled=true;mmWrite('pm.toggle',{key:key,state:next}).then(function(){mmLoad('plans');}).catch(function(err){btn.disabled=false;window.alert('تغییر وضعیت ثبت نشد: '+vError(err));});};});
  ['mmSearch','mmType','mmStatus','mmOrder','mmPriority'].forEach(function(id){var x=$id(id);if(x){x.oninput=mmPaintActivities;x.onchange=mmPaintActivities;}});var nameInput=$id('mm_name');if(nameInput)nameInput.oninput=function(){var search=$id('mmSupplierSearch');if(search){search.value=nameInput.value;search.dispatchEvent(new Event('input',{bubbles:true}));}};var sq=$id('mmSupplierSearch'),sg=$id('mmSupplierGroupFilter');var filterSuppliers=function(){var dest=$id('mmSupplierRows'),q=(sq?sq.value:'').toLowerCase(),group=sg?sg.value:'';if(dest)dest.innerHTML=mmTable(['نام','گروه تأمین‌کننده','تلفن','رابط','تلفن رابط'],MM.suppliers.filter(function(s){return (!group||String(s.category||'')===group)&&(s.name+' '+s.phone+' '+s.contact+' '+s.category).toLowerCase().includes(q);}).map(function(s){return [esc(s.name),esc(s.category),esc(s.phone),esc(s.contact),esc(s.contactPhone)];}));};if(sq)sq.oninput=filterSuppliers;if(sg)sg.onchange=filterSuppliers;var formGroup=$id('mm_category');if(formGroup)formGroup.addEventListener('change',function(){if(sg){sg.value=formGroup.value;filterSuppliers();}});var e=$id('mmEquipSearch');if(e)e.oninput=function(){$id('mmEquipRows').innerHTML=mmEquipTable(MM.equipment.filter(function(r){return (r.key+' '+labelOf(r)).toLowerCase().indexOf(e.value.toLowerCase())>=0;}),MM.documents||[]);};}

document.addEventListener('click',function(e){if(!e.target.closest('#mmContent .mm-date-line,#mmContent .mm-cal'))document.querySelectorAll('#mmContent .mm-cal').forEach(function(c){c.hidden=true;});},true);
/* V31: internal navigation history. Capture real entry routes, not hard-coded previous screens. */
var MQ_V31_HISTORY=[];
var MQ_V31_CURRENT=null;
var MQ_V31_REPLAY=false;
var MQ_V31_NESTING=0;
function mqV31Route(key,args){return {key:key,args:Array.prototype.slice.call(args||[])};}
function mqV31Equal(a,b){return !!a&&!!b&&a.key===b.key&&JSON.stringify(a.args)===JSON.stringify(b.args);}
function mqV31Track(key,fn){
    return function(){
        var next=mqV31Route(key,arguments),top=MQ_V31_NESTING===0;
        if(top&&!MQ_V31_REPLAY&&!mqV31Equal(MQ_V31_CURRENT,next)){
            if(MQ_V31_CURRENT)MQ_V31_HISTORY.push(MQ_V31_CURRENT);
            MQ_V31_CURRENT=next;
        }
        MQ_V31_NESTING++;
        try { return fn.apply(this,arguments); }
        finally { MQ_V31_NESTING--;mqV31BackVisibility(); }
    };
}
function mqV31BackVisibility(){
    if(backButton)backButton.style.display=MQ_V31_HISTORY.length?'inline-block':'none';
}
var MQ_V31_RENDERERS={
    equipment:renderEquipment,
    logistics:renderLogistics,
    property:renderAssetSections,
    simple:renderSimplePage,
    generic:mqTreeSimpleEquipmentPage,
    analysis:vAnalysis,
    suppliers:vSupplierScreen,
    cycle:renderOtherCycle,
    maintenance:renderMediqMaintenance
};
renderEquipment=mqV31Track('equipment',MQ_V31_RENDERERS.equipment);
renderLogistics=mqV31Track('logistics',MQ_V31_RENDERERS.logistics);
renderAssetSections=mqV31Track('property',MQ_V31_RENDERERS.property);
renderSimplePage=mqV31Track('simple',MQ_V31_RENDERERS.simple);
mqTreeSimpleEquipmentPage=mqV31Track('generic',MQ_V31_RENDERERS.generic);
vAnalysis=mqV31Track('analysis',MQ_V31_RENDERERS.analysis);
vSupplierScreen=mqV31Track('suppliers',MQ_V31_RENDERERS.suppliers);
renderOtherCycle=mqV31Track('cycle',MQ_V31_RENDERERS.cycle);
renderMediqMaintenance=mqV31Track('maintenance',MQ_V31_RENDERERS.maintenance);
backButton.onclick=function(){
    if(!MQ_V31_HISTORY.length)return;
    var prev=MQ_V31_HISTORY.pop(),renderer=MQ_V31_RENDERERS[prev.key];
    if(!renderer)return;
    MQ_V31_REPLAY=true;
    try { MQ_V31_CURRENT=prev;renderer.apply(null,prev.args); }
    finally { MQ_V31_REPLAY=false;mqV31BackVisibility(); }
};

/* ============================================================
   INITIAL
   ============================================================ */
function mqBoot(){
    try {
        bindTree();
        document.querySelectorAll('#mqTree [data-v32-nav]').forEach(function(el){el.onclick=function(){
          var k=this.getAttribute('data-v32-nav');
          if(k==='suppliers')vSupplierScreen();
          else if(k==='fixed'||k==='assets')renderAssetSections('newAsset');
          else if(k==='handover'){mqV48Handover();}
          else if(k==='consumable')renderSimplePage('کالاهای مصرفی');
          mqTreeActivate(k==='assets'?'propertyAssets':k==='handover'?'propertyHandover':k);
        };});
        renderEquipment();
    } catch (initErr) {
        mqShowFatal(initErr && initErr.message ? initErr.message : String(initErr));
        if (window.console && console.error) console.error("MEDIQ INIT ERROR", initErr);
    }
}

if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", mqBoot, { once: true });
} else {
    mqBoot();
}
})();

/* V49.28 — internal issue viewer, no direct Jira navigation for view-request links */
document.addEventListener('click',function(ev){
 var target=ev.target.closest('[data-mq-internal-issue],a[href*="support.h-soft.ir/browse/"]');
 if(!target||!document.getElementById('mediq-dashboard')?.contains(target))return;
 var key=target.getAttribute('data-mq-internal-issue')||((target.getAttribute('href')||'').match(/\bMED-\d+\b/)||[])[0];
 if(!/^MED-\d+$/.test(key))return;
 // Intercept explicit request-view links only; other intentional cross-system links remain unchanged.
 if(!target.hasAttribute('data-mq-internal-issue')&&!/مشاهده|درخواست|جزئیات/.test(target.textContent||''))return;
 ev.preventDefault();ev.stopImmediatePropagation();
 mmIssueDetail(key).then(mmOpenIssueModal).catch(function(err){showToast('نمایش جزئیات درخواست در مدیکیو ممکن نشد: '+vError(err));});
},true);
</script>
</div>
<style>
/* MediQ V40: stable dashboard and repaired fixed activity inspector */
#mediq-dashboard #mmContent .v-stats{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:14px!important;direction:rtl!important;grid-auto-flow:row!important;width:100%!important;clear:both!important}
#mediq-dashboard #mmContent .v-stats>.mm-kpi-card{width:100%!important;min-width:0!important;float:none!important;direction:rtl!important;text-align:right!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:center!important;min-height:126px!important;gap:9px!important;padding:19px!important}
#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(1){border-top:4px solid #218ccb!important}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(2){border-top:4px solid #21a77a!important}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(3){border-top:4px solid #ec9e3b!important}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(4){border-top:4px solid #5da3cd!important}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(5){border-top:4px solid #d66b6b!important}
#mediq-dashboard #mmContent .v-stats>.mm-kpi-card::before{content:'▦';position:absolute;left:16px;top:14px;font-size:24px;color:#258dc4;background:#e8f5fc;width:40px;height:40px;display:grid;place-items:center;border-radius:11px}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(2)::before{content:'✓';color:#158e6d;background:#e7f8f1}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(3)::before{content:'⚒';color:#bc7c25;background:#fff6e9}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(4)::before{content:'✔'}#mediq-dashboard #mmContent .v-stats>.mm-kpi-card:nth-child(5)::before{content:'!';color:#b85252;background:#fff0f0}
#mediq-dashboard #mmContent.mm-with-fixed-side{display:grid!important;grid-template-columns:minmax(350px,36%) minmax(0,1fr)!important;grid-template-rows:auto auto auto minmax(0,1fr)!important;column-gap:16px!important;row-gap:10px!important;direction:ltr!important;align-items:start!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>.v-stats{grid-column:1/-1!important;grid-row:1!important;direction:rtl!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmActivitiesHeading{grid-column:1/-1!important;grid-row:2!important;direction:rtl!important;margin:4px 0!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{grid-column:1!important;grid-row:3 / span 2!important;position:sticky!important;top:14px!important;float:none!important;width:100%!important;max-width:100%!important;min-width:0!important;height:auto!important;max-height:calc(100vh - 52px)!important;overflow-x:hidden!important;overflow-y:auto!important;margin:0!important;padding:13px!important;direction:rtl!important;display:block!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{grid-column:2!important;grid-row:3!important;margin:0!important;width:100%!important;min-width:0!important;direction:rtl!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{grid-column:2!important;grid-row:4!important;margin:0!important;width:100%!important;min-width:0!important;direction:rtl!important;overflow:auto!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card:first-of-type .mm-accordion-body{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:15px!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;gap:4px 10px!important;white-space:normal!important;word-break:normal!important;overflow-wrap:anywhere!important;width:100%!important;min-width:0!important;line-height:1.8!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line span{flex:0 1 auto!important;min-width:48px!important;max-width:100%!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line strong{flex:1 1 95px!important;text-align:right!important;min-width:0!important;word-break:break-word!important;overflow-wrap:anywhere!important}
#mediq-dashboard #mmPermanentIssue .mm-accordion-toggle{width:100%!important;min-width:0!important;direction:rtl!important}
#mediq-dashboard #mmPermanentIssue .mm-accordion-body{min-width:0!important;max-width:100%!important}
#mediq-dashboard .mm-panel-empty{min-height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;color:#527c98;background:#f4faff;border:1px dashed #c2dfef;border-radius:13px;padding:20px;font-size:13px}.mm-panel-empty-icon{font-size:28px;color:#268bbd}
#mediq-dashboard #mmContent .mm-permanent-panel[hidden]{display:block!important}
.mm-discard-overlay{position:absolute!important;inset:0!important;z-index:999!important;display:grid!important;place-items:center!important;background:rgba(21,53,78,.48)!important;backdrop-filter:blur(2px)}.mm-discard-overlay[hidden]{display:none!important}.mm-discard-card{width:min(90%,470px)!important;max-width:470px!important;box-sizing:border-box!important;padding:28px!important;border:1px solid #cbe3f2!important;border-radius:18px!important;background:#fff!important;box-shadow:0 22px 70px #193e5a40!important}.mm-discard-card strong{display:block;color:#11628e!important;font-size:18px!important;margin-bottom:11px}.mm-discard-card p{font-size:14px;line-height:2;color:#456c85}.mm-discard-card>div{gap:12px!important;margin-top:17px}
.mm-comment-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.mm-comment-actions button{background:#15976d!important;border-color:#15976d!important;color:white!important;border-radius:9px!important;padding:10px 17px!important;font-weight:800!important}
.mm-compact-attachments{padding:13px!important}.mm-compact-attachments .mm-documents{max-height:90px;overflow:auto}.mm-attach-trigger{display:inline-flex;align-items:center;gap:12px;max-width:100%;background:#f2fafc;border:1px solid #c9e3ee;border-radius:9px;padding:7px 12px}.mm-attach-trigger input{max-width:230px!important}
#mediq-dashboard #mmTreeChildren [data-mm-tree='contracts']{display:none!important}
@media(max-width:1000px){#mediq-dashboard #mmContent .v-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}#mediq-dashboard #mmContent.mm-with-fixed-side{grid-template-columns:minmax(0,1fr)!important}#mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{grid-column:1!important;grid-row:3!important;position:relative!important;max-height:440px!important}#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{grid-column:1!important;grid-row:4!important}#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{grid-column:1!important;grid-row:5!important}}
@media(max-width:600px){#mediq-dashboard #mmContent .v-stats{grid-template-columns:1fr!important}}

/* MediQ V41 panel and print presentation refinements */
#mediq-dashboard #mmContent.mm-with-fixed-side{grid-template-rows:auto auto auto minmax(0,1fr)!important}
#mediq-dashboard #mmPermanentIssue .mm-always-open .mm-accordion-toggle{background:transparent!important;border:0!important;pointer-events:none!important;color:#11608c!important;font-size:15px!important;font-weight:900!important;padding:12px 5px!important;text-align:right!important}
#mediq-dashboard #mmPermanentIssue .mm-always-open .mm-accordion-chevron{display:none!important}
#mediq-dashboard #mmPermanentIssue .mm-always-open .mm-accordion-body{display:block!important;visibility:visible!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card:first-of-type .mm-accordion-body{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px 12px!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line{display:flex!important;flex-direction:column!important;gap:3px!important;padding:10px!important;border:1px solid #e1edf4!important;border-radius:9px!important;align-items:flex-start!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line span,#mediq-dashboard #mmPermanentIssue .mm-detail-line strong{flex:none!important;width:100%!important;text-align:right!important;overflow-wrap:anywhere!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-line strong{font-size:13px!important;font-weight:800!important}
#mediq-dashboard #mmPermanentIssue .mm-handover-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;direction:rtl!important}
#mediq-dashboard #mmPermanentIssue .mm-handover-grid label{min-width:0!important;text-align:right!important}
#mediq-dashboard #mmPermanentIssue .mm-handover-grid input{width:100%!important;min-width:0!important;box-sizing:border-box!important}
#mediq-dashboard #mmPermanentIssue #mmPrintReceipt{background:#298dc3!important;color:#fff!important;border-radius:9px!important;margin-top:14px!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-accordion-body{display:block!important}
.mm-request-modal .mm-request-body,.mm-request-modal .mm-request-body label,.mm-request-modal .mm-form-section{direction:rtl!important;text-align:right!important}
.mm-request-modal #mmSaveIssue{background:#139c71!important;border-color:#139c71!important;color:white!important}
.mm-request-modal #mmCancelIssue{background:#d9515a!important;border-color:#d9515a!important;color:white!important}
.mm-request-modal .mm-comment-actions button{background:#16946d!important;border-color:#16946d!important;color:white!important}
.mm-request-modal .mm-comment-actions{justify-content:flex-start!important}
.mm-request-modal .mm-compact-attachments{background:#f3fbfe!important;border:1px solid #c9e2f1!important}
@media(max-width:690px){#mediq-dashboard #mmPermanentIssue .mm-handover-grid{grid-template-columns:1fr!important}}
</style>


<style>
/* MediQ V42 — horizontal workflow and clear header/overview */
#mediq-dashboard #mmPermanentIssue>header{background:#eaf6fd!important;border-bottom:1px solid #b9dbed!important;border-radius:12px 12px 0 0!important;min-height:46px!important;padding:10px 12px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;direction:rtl!important}
#mediq-dashboard #mmPermanentIssue>header strong{font-size:14px!important;font-weight:900!important;color:#075b8f!important}
#mediq-dashboard #mmPermanentIssue>h3{margin:10px 2px 12px!important;padding:0 3px!important;font-size:14px!important;line-height:2!important;color:#154c70!important;font-weight:850!important;text-align:right!important;direction:rtl!important;overflow-wrap:anywhere!important}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type{display:block!important}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type .mm-accordion-toggle{font-size:15px!important}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type .mm-accordion-body{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;padding:5px 9px 12px!important}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type .mm-detail-line{display:flex!important;flex-direction:column!important;min-height:74px!important;margin:0!important;justify-content:center!important;align-items:stretch!important;background:#fff!important;border:1px solid #cce3f0!important;border-radius:10px!important;padding:10px 12px!important;box-sizing:border-box!important}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type .mm-detail-line span{color:#738ca2!important;font-size:12px!important}
#mediq-dashboard #mmPermanentIssue>.mm-detail-card:first-of-type .mm-detail-line strong{color:#095e92!important;font-weight:850!important;line-height:1.8!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-accordion-body{min-width:0!important;overflow-x:auto!important;overflow-y:hidden!important;padding:6px 8px 12px!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage-grid{display:flex!important;flex-direction:row!important;align-items:flex-start!important;justify-content:space-between!important;direction:rtl!important;gap:0!important;margin:8px 0!important;min-width:485px!important;width:100%!important;box-sizing:border-box!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage{display:flex!important;flex:1 1 0!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;text-align:center!important;min-height:85px!important;gap:10px!important;padding:5px 2px!important;line-height:1.8!important;font-size:11px!important;white-space:normal!important;border:0!important;background:transparent!important;position:relative!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage::before{position:relative!important;right:auto!important;left:auto!important;top:auto!important;flex:0 0 19px!important;order:0!important;margin:0 auto!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage:not(:last-child)::after{content:''!important;position:absolute!important;right:calc(50% + 14px)!important;left:auto!important;top:15px!important;bottom:auto!important;width:calc(100% - 28px)!important;height:3px!important;background:#d4e4ed!important;z-index:0!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage.done:not(:last-child)::after{background:#17a873!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage.current::before{animation:mediqV3820Pulse 1.1s ease-in-out infinite!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-accordion-body>p{direction:rtl!important;text-align:right!important;line-height:1.9!important;margin:5px 3px!important}
@media(max-width:690px){#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage-grid{min-width:480px!important}}
@media(prefers-reduced-motion:reduce){#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage.current::before{animation:none!important}}
</style>


<style>
/* MEDIQ V43: alignment, compact forms, restored reporting & vivid horizontal workflow */
#mediq-dashboard .mm-card-home .mm-category-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:16px!important}
#mediq-dashboard .mm-card-home .mm-category-card{min-height:174px!important;padding:19px!important;box-sizing:border-box!important}
#mediq-dashboard .mm-card-home .mm-category-card strong{font-size:17px!important;line-height:1.8!important}
#mediq-dashboard .mm-card-home .mm-category-card .mm-category-icon{width:75px!important;height:75px!important}
#mediq-dashboard .mm-card-home .mm-category-card .mm-category-icon svg{width:45px!important;height:45px!important}
#mediq-dashboard #mmContent.mm-with-fixed-side{direction:ltr!important;grid-template-columns:minmax(370px,39%) minmax(0,1fr)!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{grid-column:1!important;grid-row:4!important;align-self:start!important;min-width:0!important;max-width:100%!important;overflow-x:hidden!important;box-sizing:border-box!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{grid-column:2!important;grid-row:3!important}
#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{grid-column:2!important;grid-row:4!important}
#mediq-dashboard #mmPermanentIssue{background:#fff!important;padding:13px!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card{min-width:0!important;overflow:hidden!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card:first-of-type{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;padding:12px!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card:first-of-type .mm-accordion-body{display:contents!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card:first-of-type .mm-accordion-toggle{grid-column:1/-1!important;display:block!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card:first-of-type .mm-detail-line{min-width:0!important;word-break:break-word!important;white-space:normal!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow{padding:12px!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-accordion-body{display:block!important;overflow:visible!important;padding:7px 0 0!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage-grid{display:flex!important;flex-flow:row nowrap!important;direction:rtl!important;justify-content:space-between!important;min-width:0!important;width:100%!important;gap:3px!important;padding:10px 0!important;overflow:visible!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage{flex:1 1 20%!important;min-width:0!important;min-height:68px!important;padding:3px 0!important;font-size:10px!important;font-weight:750!important;white-space:normal!important;overflow-wrap:anywhere!important;line-height:1.65!important;}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage::before{content:''!important;display:block!important;width:18px!important;height:18px!important;flex:0 0 18px!important;border-radius:50%!important;box-sizing:border-box!important;}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage.done::before{content:'✓'!important;line-height:16px!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage.current::before{animation:mediqV43Active 1.25s ease-in-out infinite!important;background:#199ad0!important;border:4px solid #b6e4fa!important;box-shadow:0 0 0 4px #e8f7ff!important;opacity:1!important}
@keyframes mediqV43Active{0%,100%{box-shadow:0 0 0 3px #e8f7ff,0 0 0 5px rgba(23,157,212,.65);transform:scale(1)}50%{box-shadow:0 0 0 3px #e8f7ff,0 0 0 13px rgba(23,157,212,0);transform:scale(1.17)}}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage:not(:last-child)::after{top:12px!important;right:calc(50% + 12px)!important;width:calc(100% - 24px)!important;height:3px!important;bottom:auto!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section .mm-report-inner{display:flex!important;flex-direction:column!important;gap:12px!important;padding:12px!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section textarea{display:block!important;width:100%!important;min-height:95px!important;box-sizing:border-box!important;border-radius:10px!important;border:1px solid #cbdfee!important;padding:12px!important;text-align:right!important;direction:rtl!important;font:inherit!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section button{align-self:flex-start!important;margin-top:8px!important;margin-bottom:3px!important;background:#328fbe!important;color:white!important}
#mediq-dashboard #mmPermanentIssue .mm-handover-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
#mediq-dashboard #mmPermanentIssue .mm-handover-grid label{min-width:0!important;overflow:hidden!important}
#mediq-dashboard #mmPermanentIssue .mm-handover-grid input{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
.mm-request-modal .mm-request-grid>.mm-compact-attachments{grid-column:1!important;grid-row:3!important;align-self:stretch!important;margin:0!important;padding:9px!important;min-width:0!important}
.mm-request-modal .mm-request-grid>.mm-compact-attachments h4{font-size:12px!important;margin:0 0 5px!important}
.mm-request-modal .mm-request-grid>.mm-compact-attachments .mm-documents{max-height:54px!important;overflow:auto!important;font-size:11px!important}
.mm-request-modal .mm-request-grid>.mm-compact-attachments .mm-attach-trigger{max-width:100%!important}
.mm-request-modal .mm-request-grid>.mm-wide{grid-column:2!important;grid-row:3!important;min-width:0!important}
.mm-request-modal #mmCancelIssue,.mm-request-modal #mmDiscardYes,.mm-request-modal #mmDiscardNo{background:#e8f4fc!important;color:#12699b!important;border:1px solid #afd4e8!important;border-radius:9px!important;font-weight:800!important}
.mm-request-modal .mm-discard-card button{font:inherit!important;padding:9px 16px!important;cursor:pointer!important}
@media(max-width:1150px){#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}#mediq-dashboard #mmContent.mm-with-fixed-side{grid-template-columns:minmax(320px,40%) minmax(0,1fr)!important}}
@media(max-width:850px){#mediq-dashboard #mmContent.mm-with-fixed-side{grid-template-columns:1fr!important}#mediq-dashboard #mmContent.mm-with-fixed-side>#mmPermanentIssue{grid-column:1!important;grid-row:4!important;position:relative!important;max-height:none!important}#mediq-dashboard #mmContent.mm-with-fixed-side>.mm-actionbar{grid-column:1!important;grid-row:3!important}#mediq-dashboard #mmContent.mm-with-fixed-side>#mmRows{grid-column:1!important;grid-row:5!important}.mm-request-modal .mm-request-grid>.mm-compact-attachments,.mm-request-modal .mm-request-grid>.mm-wide{grid-column:1!important;grid-row:auto!important}}
@media(max-width:550px){#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:1fr!important}#mediq-dashboard #mmPermanentIssue .mm-handover-grid{grid-template-columns:1fr!important}}
</style>

<style>
/* MediQ V44 - scoped visual fixes; existing endpoint identifiers remain unchanged */
#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
#mediq-dashboard .mm-card-home .mm-category-icon{width:88px!important;height:88px!important}
#mediq-dashboard .mm-card-home .mm-category-icon svg{width:54px!important;height:54px!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-card{padding:12px!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-card .mm-accordion-body{display:contents!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-card .mm-detail-line{min-width:0!important;border:1px solid #d1e4ee!important;border-radius:10px!important;padding:12px!important;background:#fff!important;overflow-wrap:anywhere!important}
#mediq-dashboard #mmPermanentIssue .mm-panel-summary{font-size:15px!important;line-height:1.9!important;margin:10px 2px!important;text-align:right!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section .mm-accordion-toggle{background:#e8f5fd!important;border:1px solid #b6dcef!important;color:#176890!important;border-radius:10px!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section .mm-report-inner{gap:14px!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section #mmPanelReportSave{margin-top:10px!important}
.mm-request-modal .mm-request-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;align-items:start!important;gap:15px!important}
.mm-request-modal .mm-request-grid > label,.mm-request-modal .mm-request-grid > div{min-width:0!important}
.mm-request-modal .mm-request-grid > .mm-wide{grid-column:2!important;grid-row:auto!important}
.mm-request-modal .mm-request-grid > .mm-compact-attachments{grid-column:1!important;grid-row:auto!important;align-self:stretch!important;background:#fff!important;border:1px solid #cbdfea!important;border-radius:10px!important;box-shadow:none!important;padding:10px!important;margin:0!important}
.mm-request-modal .mm-request-grid > .mm-compact-attachments .mm-attach-trigger{background:#fff!important;border:1px dashed #aacfe4!important;border-radius:9px!important;padding:8px!important}
.mm-request-modal .mm-request-grid > .mm-compact-attachments .mm-documents{max-height:112px!important;overflow:auto!important}
.mm-request-modal #mmCancelIssue{background:#e6525b!important;color:#fff!important;border:1px solid #c93f48!important}
.mm-request-modal #mmDiscardYes{background:#e6525b!important;color:#fff!important;border:1px solid #c93f48!important}
.mm-request-modal #mmDiscardNo{background:#e9f6ff!important;color:#12699b!important}
.mm-request-modal .mm-discard-overlay:not([hidden]){z-index:999!important;display:grid!important;position:absolute!important;inset:0!important;place-items:center!important;background:rgba(20,49,69,.55)!important}
.mm-request-modal .mm-discard-card{width:min(90%,450px)!important;padding:28px!important;box-sizing:border-box!important}
.mm-request-modal .mm-request-body,.mm-request-modal .mm-request-grid,.mm-request-modal .mm-form-section{direction:rtl!important;text-align:right!important}
@media(max-width:850px){.mm-request-modal .mm-request-grid{grid-template-columns:1fr!important}.mm-request-modal .mm-request-grid>.mm-wide,.mm-request-modal .mm-request-grid>.mm-compact-attachments{grid-column:1!important;grid-row:auto!important}#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:550px){#mediq-dashboard .mm-card-home .mm-category-grid{grid-template-columns:1fr!important}}

/* V44.1 — uniform accordion appearance: report matches device handover */
#mediq-dashboard #mmPermanentIssue .mm-report-section,
#mediq-dashboard #mmPermanentIssue .mm-handover-card {
  border:1px solid #d1e6f3!important;
  border-radius:12px!important;
  background:#fff!important;
  overflow:hidden!important;
}
#mediq-dashboard #mmPermanentIssue .mm-report-section > .mm-accordion-toggle,
#mediq-dashboard #mmPermanentIssue .mm-handover-card > .mm-accordion-toggle {
  background:#f2f8fd!important;
  border:0!important;
  border-radius:11px!important;
  color:#125d85!important;
  min-height:43px!important;
  padding:12px 11px!important;
  box-shadow:none!important;
  text-align:right!important;
}
#mediq-dashboard #mmPermanentIssue .mm-report-section > .mm-accordion-toggle[aria-expanded="true"],
#mediq-dashboard #mmPermanentIssue .mm-handover-card > .mm-accordion-toggle[aria-expanded="true"] {
  background:#e6f4fc!important;
  border-bottom:1px solid #cbe5f4!important;
  border-radius:11px 11px 0 0!important;
}
#mediq-dashboard #mmPermanentIssue .mm-report-section > .mm-accordion-body,
#mediq-dashboard #mmPermanentIssue .mm-handover-card > .mm-accordion-body {
  padding:11px!important;
  background:#fff!important;
}
#mediq-dashboard #mmPermanentIssue .mm-report-section .mm-report-inner {
  padding:0!important;
  gap:10px!important;
}
#mediq-dashboard #mmPermanentIssue .mm-report-section #mmPanelReportSave {
  margin-top:8px!important;
  margin-bottom:2px!important;
}
</style>

<style>
/* MEDIQ V45 - compact activity panel and self-service layout */
#mediq-dashboard #mmPermanentIssue{padding:9px!important;line-height:1.55!important}
#mediq-dashboard #mmPermanentIssue>header{min-height:43px!important;padding:7px 10px!important;margin:0 0 7px!important}
#mediq-dashboard #mmPermanentIssue>header strong{font-size:12px!important}
#mediq-dashboard #mmPermanentIssue>header button{width:28px!important;height:28px!important}
#mediq-dashboard #mmPermanentIssue>h3{font-size:12px!important;line-height:1.65!important;margin:4px 1px 7px!important}
#mediq-dashboard #mmPermanentIssue .mm-detail-card{margin:7px 0!important;padding:8px!important;border-radius:10px!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-fields,
#mediq-dashboard #mmPermanentIssue .mm-summary-card{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-fields .mm-detail-line,
#mediq-dashboard #mmPermanentIssue .mm-summary-card .mm-detail-line{display:flex!important;flex-flow:row wrap!important;align-items:center!important;justify-content:flex-start!important;gap:3px!important;min-height:34px!important;margin:0!important;padding:7px 8px!important;background:#fff!important;border:1px solid #d5e6f2!important;border-radius:8px!important;line-height:1.5!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-fields .mm-detail-line span,
#mediq-dashboard #mmPermanentIssue .mm-summary-card .mm-detail-line span{flex:0 0 auto!important;width:auto!important;min-width:0!important;font-size:11px!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-fields .mm-detail-line span::after,
#mediq-dashboard #mmPermanentIssue .mm-summary-card .mm-detail-line span::after{content:' :'!important}
#mediq-dashboard #mmPermanentIssue .mm-summary-fields .mm-detail-line strong,
#mediq-dashboard #mmPermanentIssue .mm-summary-card .mm-detail-line strong{flex:1 1 auto!important;width:auto!important;min-width:0!important;font-size:11px!important;text-align:right!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow{padding:9px 10px!important;min-height:0!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow h4{font-size:12px!important;margin:0 0 3px!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-accordion-body{padding:0!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage-grid{padding:2px 0!important;margin:3px 0 0!important;gap:0!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage{min-height:45px!important;padding:3px 1px!important;gap:4px!important;font-size:9px!important;line-height:1.5!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage::before{width:14px!important;height:14px!important;flex-basis:14px!important}
#mediq-dashboard #mmPermanentIssue .mm-workflow .mm-stage:not(:last-child)::after{top:10px!important;height:2px!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section,
#mediq-dashboard #mmPermanentIssue .mm-handover-card{padding:0!important}
#mediq-dashboard #mmPermanentIssue .mm-report-section>.mm-accordion-toggle,
#mediq-dashboard #mmPermanentIssue .mm-handover-card>.mm-accordion-toggle{min-height:42px!important;padding:8px 12px!important}
#mediq-dashboard #mmPermanentIssue .mm-standalone-request{padding:8px!important}
#mediq-dashboard #mmPermanentIssue .mm-standalone-request #mmShowRequest{min-height:37px!important}
#mediq-dashboard #mufRoot{direction:rtl;text-align:right}
#mediq-dashboard .muf-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
#mediq-dashboard .muf-heading h3{margin:0 0 3px!important}
#mediq-dashboard .muf-heading p{font-size:12px;color:#6b879a;margin:0}
#mediq-dashboard .muf-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0 16px}
#mediq-dashboard .muf-kpi{background:white;border:1px solid #cde2ee;border-top:3px solid var(--kpi-color);border-radius:12px;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:10px;font:inherit;color:#315873;cursor:pointer}
#mediq-dashboard .muf-kpi strong{font-size:23px;color:var(--kpi-color);line-height:1}
#mediq-dashboard .muf-kpi .muf-kpi-text{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}
#mediq-dashboard .muf-kpi .muf-kpi-text>span:last-child{font-size:13px;color:#547389}
#mediq-dashboard .muf-icon{display:inline-grid;place-items:center;min-width:34px;height:34px;border-radius:10px;background:#eef6fb;font-size:18px;line-height:1}
#mediq-dashboard .muf-kpi.selected{background:#f0f9fe;box-shadow:0 0 0 1px var(--kpi-color) inset}
#mediq-dashboard .muf-tabs{display:flex;gap:8px;border-bottom:1px solid #d5e6ef;margin-bottom:14px;padding-bottom:9px;flex-wrap:wrap}
#mediq-dashboard .muf-tabs button{border:1px solid #d0e2ee;border-radius:9px;background:#fff;color:#245f82;padding:9px 14px;font:inherit;font-weight:750;cursor:pointer}
#mediq-dashboard .muf-tabs button.active{background:#318fbe;color:#fff;border-color:#318fbe}
#mediq-dashboard .muf-filters{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}
#mediq-dashboard .muf-filters input{flex:2;min-width:190px}
#mediq-dashboard .muf-filters select{flex:1;min-width:145px}
#mediq-dashboard .muf-filters input,#mediq-dashboard .muf-filters select{border:1px solid #cfe2ed;border-radius:9px;background:white;padding:10px;color:#24506a;font:inherit;direction:rtl}
#mediq-dashboard .muf-list-shell{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:14px;align-items:start}
#mediq-dashboard .muf-list{min-width:0}
#mediq-dashboard .muf-ticket{width:100%;display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px 12px;background:white;border:1px solid #dbe8f0;border-radius:9px;text-align:right;direction:rtl;color:#234e68;cursor:pointer;font:inherit;margin:7px 0}
#mediq-dashboard .muf-ticket:hover,#mediq-dashboard .muf-ticket.active{background:#f2f9fd;border-color:#8fc6e1}
#mediq-dashboard .muf-ticket-main{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
#mediq-dashboard .muf-ticket strong{color:#1384b8}
#mediq-dashboard .muf-ticket em{font-style:normal;color:#36566b;white-space:normal}
#mediq-dashboard .muf-ticket-meta{white-space:nowrap;font-size:11px;color:#6c8798;display:flex;flex-direction:column;align-items:flex-end;gap:3px}
#mediq-dashboard .muf-open{color:#d48929}.muf-done{color:#189569}
#mediq-dashboard .muf-empty{padding:22px;border:1px dashed #cde1ee;border-radius:10px;background:#f8fcff;color:#68869a;text-align:center}
#mediq-dashboard .muf-create{padding:18px;border:1px solid #d1e6f2;border-radius:12px;background:#fff}
#mediq-dashboard .muf-create h3{margin:0 0 12px!important}
#mediq-dashboard .muf-create-row{display:grid;grid-template-columns:1.2fr .7fr .8fr 1.5fr auto;gap:12px;align-items:end}
#mediq-dashboard .muf-create label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:750;color:#2b607f;min-width:0}
#mediq-dashboard .muf-create .muf-grow{min-width:0}
#mediq-dashboard .muf-create input,#mediq-dashboard .muf-create select,#mediq-dashboard .muf-create textarea{padding:10px;border:1px solid #cfe2ee;border-radius:9px;background:#fff;font:inherit;min-width:0;direction:rtl;text-align:right}
#mediq-dashboard .muf-create textarea{resize:vertical;min-height:48px}
#mediq-dashboard .muf-create button{align-self:end;white-space:nowrap}
#mediq-dashboard .muf-note{border:1px solid #dae8f1;border-radius:10px;padding:12px;margin:9px 0;background:#fff}
#mediq-dashboard .muf-note.compact{padding:10px}
#mediq-dashboard .muf-note strong,#mediq-dashboard .muf-note small{display:block}
#mediq-dashboard .muf-note small{color:#7995a7;margin:5px 0}
#mediq-dashboard .muf-note p{margin:5px 0;white-space:pre-wrap}
#mediq-dashboard .muf-side-panel{position:sticky;top:16px;border:1px solid #d1e6f2;border-radius:14px;background:#fff;min-height:320px;padding:14px;box-shadow:0 12px 28px #0f39550f}
#mediq-dashboard .muf-panel-empty,#mediq-dashboard .muf-panel-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:250px;color:#67859a;gap:8px}
#mediq-dashboard .muf-panel-empty-icon{font-size:28px;color:#2d8dc0}
#mediq-dashboard .muf-side-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
#mediq-dashboard .muf-close-mini{border:1px solid #cfe2ee;background:#f2f8fc;color:#25678f;border-radius:9px;padding:4px 10px;cursor:pointer;font:inherit}
#mediq-dashboard .muf-side-title h4{margin:0;color:#167bb0}
#mediq-dashboard .muf-side-title p{margin:5px 0 0;color:#42657b;line-height:1.8}
#mediq-dashboard .muf-side-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
#mediq-dashboard .muf-side-grid>div{padding:10px;background:#f3f9fc;border:1px solid #d6e7f0;border-radius:9px;display:grid;grid-template-columns:34px 1fr;column-gap:8px;align-items:center}
#mediq-dashboard .muf-side-grid>div span{font-size:11px;color:#7891a2;display:block}
#mediq-dashboard .muf-side-grid>div strong{display:block;color:#244b63}
#mediq-dashboard .muf-side-grid>div .muf-icon{grid-row:1/span 2}
#mediq-dashboard .muf-side-box{margin-top:12px;border:1px solid #d8e8f1;border-radius:11px;padding:12px;background:#fbfdff}
#mediq-dashboard .muf-side-box h5{margin:0 0 8px!important;color:#225c7f}
#mediq-dashboard .muf-description{white-space:pre-wrap;line-height:1.9;margin:0}
#mediq-dashboard .muf-workflow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;align-items:start}
#mediq-dashboard .muf-work-step{text-align:center;position:relative;padding-top:4px}
#mediq-dashboard .muf-work-step:not(:last-child)::after{content:"";position:absolute;top:14px;left:-50%;width:100%;height:2px;background:#d9e8f2;z-index:0}
#mediq-dashboard .muf-work-step:first-child::after{display:none}
#mediq-dashboard .muf-step-dot{width:16px;height:16px;border-radius:50%;display:inline-block;background:#cfe1ec;border:3px solid #eef7fc;position:relative;z-index:1}
#mediq-dashboard .muf-work-step.done .muf-step-dot{background:#60bce8}
#mediq-dashboard .muf-work-step.current .muf-step-dot{background:#1e9dd9;box-shadow:0 0 0 0 rgba(30,157,217,.55);animation:mufPulse 1.4s infinite}
#mediq-dashboard .muf-work-step small{display:block;margin-top:8px;color:#567186;line-height:1.7}
#mediq-dashboard .muf-error{color:#b42e38}
#mediq-dashboard #mufRoot [hidden]{display:none!important}
@keyframes mufPulse{0%{box-shadow:0 0 0 0 rgba(30,157,217,.45)}70%{box-shadow:0 0 0 12px rgba(30,157,217,0)}100%{box-shadow:0 0 0 0 rgba(30,157,217,0)}}
@media(max-width:980px){#mediq-dashboard .muf-list-shell{grid-template-columns:1fr}#mediq-dashboard .muf-side-panel{position:static}#mediq-dashboard .muf-create-row{grid-template-columns:1fr 1fr}}
@media(max-width:700px){#mediq-dashboard .muf-stats{grid-template-columns:1fr}#mediq-dashboard .muf-create-row{grid-template-columns:1fr}#mediq-dashboard .muf-side-grid,#mediq-dashboard .muf-workflow{grid-template-columns:1fr}#mediq-dashboard .muf-ticket{flex-direction:column;align-items:flex-start}#mediq-dashboard .muf-ticket-meta{align-items:flex-start;white-space:normal}}

</style>

<style>
/* MediQ V46.3 — notification spacing and consistent dashboard workflow */
#mediq-dashboard #mufRoot #mufPaneNotes{
  padding:16px 14px 18px!important;
  margin-top:12px!important;
  background:#fff!important;
  border:1px solid #d5e7f2!important;
  border-radius:13px!important;
  box-sizing:border-box!important;
}
#mediq-dashboard #mufRoot #mufMarkRead{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:38px!important;
  margin:0 0 16px!important;
  padding:8px 15px!important;
}
#mediq-dashboard #mufRoot #mufNotes{margin-top:4px!important;clear:both!important;}
#mediq-dashboard #mufRoot #mufNotes>.muf-empty{
  margin:0!important;
  padding:20px 16px!important;
  min-height:75px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
#mediq-dashboard #mufRoot #mufNotes>.muf-note:first-child{margin-top:0!important;}
#mediq-dashboard #mufRoot .muf-side-panel{
  border-color:#c6e1f1!important;
  box-shadow:0 5px 18px rgba(25,83,123,.07)!important;
  min-height:0!important;
}
#mediq-dashboard #mufRoot .muf-side-box{margin-top:11px!important;padding:12px!important;background:#fff!important;}
#mediq-dashboard #mufRoot .muf-side-grid>div{padding:9px!important;}

#mediq-dashboard #mufRoot .muf-side-panel{padding:12px!important}
#mediq-dashboard #mufRoot .muf-side-title.compact{margin-bottom:8px!important}
#mediq-dashboard #mufRoot .muf-request-box{border:1px solid #d6e8f2;border-radius:12px;padding:10px;background:#fbfdff}
#mediq-dashboard #mufRoot .muf-request-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#mediq-dashboard #mufRoot .muf-field{border:1px solid #dbe8f0;border-radius:10px;padding:10px;background:#fff;min-width:0}
#mediq-dashboard #mufRoot .muf-field span{display:block;font-size:12px;color:#6f8a9d;margin-bottom:5px}
#mediq-dashboard #mufRoot .muf-field strong{display:block;color:#244b63;line-height:1.9}
#mediq-dashboard #mufRoot .muf-field p{margin:0;color:#37576d;line-height:1.9}
#mediq-dashboard #mufRoot .muf-field.muf-priority-inline strong{display:flex;align-items:center}
#mediq-dashboard #mufRoot .muf-priority-badge{display:inline-flex;align-items:center;gap:6px}
#mediq-dashboard #mufRoot .muf-attachments{grid-column:1}
#mediq-dashboard #mufRoot .muf-device{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center}
#mediq-dashboard #mufRoot .muf-device>span,#mediq-dashboard #mufRoot .muf-device>strong{grid-column:2}
#mediq-dashboard #mufRoot .muf-device-image{width:58px;height:58px;object-fit:cover;border-radius:12px;border:1px solid #d9e8f2;background:#f5fbff;grid-row:1/span 2}
#mediq-dashboard #mufRoot .muf-action-box .muf-workflow{margin-top:8px}
#mediq-dashboard #mufRoot .muf-inline-flow-head{margin-bottom:8px}
#mediq-dashboard #mufRoot .muf-mini-status{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:#eef8fd;border:1px solid #cae4f2;color:#205a79;font-size:12px}
#mediq-dashboard #mufRoot .muf-assign-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;margin-top:10px}
#mediq-dashboard #mufRoot .muf-assign-row label,#mediq-dashboard #mufRoot .muf-note-entry{display:block}
#mediq-dashboard #mufRoot .muf-assign-row input,#mediq-dashboard #mufRoot .muf-note-entry textarea{width:100%;box-sizing:border-box;padding:9px 10px;border:1px solid #cddfea;border-radius:10px;font:inherit}
#mediq-dashboard #mufRoot .muf-help-inline{display:block;margin-top:6px;color:#6a8597;line-height:1.8}
#mediq-dashboard #mufRoot .muf-transition-wrap{margin-top:10px}
#mediq-dashboard #mufRoot .muf-transition-wrap>span{display:block;font-size:12px;color:#6f8a9d;margin-bottom:6px}
#mediq-dashboard #mufRoot .muf-transition-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
#mediq-dashboard #mufRoot .muf-transition-tile{padding:10px 8px;border:1px solid #cfe3ef;border-radius:10px;background:#fff;color:#1f5978;font:inherit;cursor:pointer;transition:.18s ease}
#mediq-dashboard #mufRoot .muf-transition-tile:hover,#mediq-dashboard #mufRoot .muf-transition-tile.chosen{background:#eaf7ff;border-color:#49a6d8;transform:translateY(-1px)}
#mediq-dashboard #mufRoot .muf-note-entry{margin-top:10px}
#mediq-dashboard #mufRoot .muf-note-entry textarea{min-height:72px;resize:vertical}
#mediq-dashboard #mufRoot .muf-inline-actions{display:flex;gap:8px;justify-content:flex-start;flex-wrap:wrap;margin-top:10px}
#mediq-dashboard #mufRoot #mufInlineResult{margin:8px 0 0;color:#2b6787;line-height:1.8}
@media(max-width:980px){#mediq-dashboard #mufRoot .muf-request-grid{grid-template-columns:1fr}#mediq-dashboard #mufRoot .muf-device{grid-template-columns:1fr}#mediq-dashboard #mufRoot .muf-device>span,#mediq-dashboard #mufRoot .muf-device>strong{grid-column:1}#mediq-dashboard #mufRoot .muf-device-image{grid-row:auto;justify-self:start;margin-bottom:8px}#mediq-dashboard #mufRoot .muf-assign-row{grid-template-columns:1fr}}

#mediq-dashboard #mufRoot .muf-workflow{
  display:flex!important;
  flex-direction:row!important;
  direction:rtl!important;
  gap:0!important;
  width:100%!important;
  padding:9px 0 0!important;
  margin:0!important;
  align-items:flex-start!important;
}
#mediq-dashboard #mufRoot .muf-work-step{
  flex:1 1 0!important;
  min-width:0!important;
  padding:0 2px!important;
  text-align:center!important;
  position:relative!important;
}
#mediq-dashboard #mufRoot .muf-work-step::after{
  content:''!important;
  position:absolute!important;
  z-index:0!important;
  top:8px!important;
  right:calc(50% + 9px)!important;
  left:auto!important;
  width:calc(100% - 18px)!important;
  height:2px!important;
  background:#d3e5ef!important;
}
#mediq-dashboard #mufRoot .muf-work-step:first-child::after{display:block!important;}
#mediq-dashboard #mufRoot .muf-work-step:last-child::after{display:none!important;}
#mediq-dashboard #mufRoot .muf-step-dot{
  display:block!important;
  width:15px!important;
  height:15px!important;
  margin:0 auto!important;
  border-radius:50%!important;
  background:#e2edf3!important;
  border:2px solid #c7deeb!important;
  box-shadow:0 0 0 3px white!important;
  position:relative!important;
  z-index:2!important;
}
#mediq-dashboard #mufRoot .muf-work-step.done .muf-step-dot{
  background:#72bfdf!important;
  border-color:#72bfdf!important;
}
#mediq-dashboard #mufRoot .muf-work-step.current .muf-step-dot{
  background:#158fc9!important;
  border:3px solid #b8e7fb!important;
  animation:mediqUserFaultCurrentPulse 1.15s ease-in-out infinite!important;
  will-change:box-shadow,transform!important;
}
#mediq-dashboard #mufRoot .muf-work-step small{
  display:block!important;
  margin-top:9px!important;
  font-size:10px!important;
  line-height:1.65!important;
  color:#6e8da0!important;
  overflow-wrap:normal!important;
}
#mediq-dashboard #mufRoot .muf-work-step.current small{color:#097dae!important;font-weight:850!important;}
@keyframes mediqUserFaultCurrentPulse{
  0%,100%{box-shadow:0 0 0 3px #e6f5fc,0 0 0 5px rgba(28,150,210,.48);transform:scale(1);opacity:1;}
  50%{box-shadow:0 0 0 3px #e6f5fc,0 0 0 11px rgba(28,150,210,0);transform:scale(1.16);opacity:.65;}
}
@media(max-width:700px){
  #mediq-dashboard #mufRoot .muf-workflow{display:flex!important;flex-direction:row!important;}
  #mediq-dashboard #mufRoot .muf-work-step small{font-size:9px!important;}
  #mediq-dashboard #mufRoot #mufPaneNotes{padding:12px!important;}
}
@media(prefers-reduced-motion:reduce){
  #mediq-dashboard #mufRoot .muf-work-step.current .muf-step-dot{animation:none!important;}
}
</style>

<style>
/* MediQ V46.4 - isolated fixes */
#mediq-dashboard #mufRoot .muf-device-combo{position:relative;width:100%;min-width:0}
#mediq-dashboard #mufRoot #mufDeviceSearch{display:block;width:100%;min-height:43px;padding:10px 12px;border:1px solid #cfe2ee;border-radius:9px;background:white;box-sizing:border-box;font:inherit;text-align:right;direction:rtl}
#mediq-dashboard #mufRoot .muf-device-results{position:absolute;top:calc(100% + 3px);right:0;left:0;max-height:300px;overflow:auto;z-index:1005;padding:5px;border:1px solid #b9d9ec;background:white;border-radius:10px;box-shadow:0 12px 28px #123d5529}
#mediq-dashboard #mufRoot .muf-device-results[hidden]{display:none!important}
#mediq-dashboard #mufRoot .muf-device-results button{display:block;width:100%;padding:10px 9px;background:white;border:0;border-radius:7px;text-align:right;direction:rtl;font:inherit;font-size:12px;color:#215b7b;cursor:pointer;white-space:normal}
#mediq-dashboard #mufRoot .muf-device-results button:hover,#mediq-dashboard #mufRoot .muf-device-results button:focus{background:#e7f5fe}
#mediq-dashboard #mufRoot #mufPaneNew{overflow:visible!important}
#mediq-dashboard #mufRoot #mufNotes{margin-top:18px!important}
#mediq-dashboard #mqTree [data-tree-key="property"].parent-active,#mediq-dashboard #mqTree [data-tree-key="property"].active{background:#287fb1!important;color:white!important;box-shadow:inset -3px 0 0 #c7efff!important}
#mediq-dashboard #mmContent .v-stats>.mm-kpi-card{display:grid!important;grid-template-columns:minmax(0,1fr) 43px!important;grid-template-rows:auto auto!important;gap:5px 10px!important;min-height:106px!important;padding:14px!important;align-content:center!important}
#mediq-dashboard #mmContent .v-stats>.mm-kpi-card strong{grid-column:1!important;grid-row:1!important;font-size:26px!important;align-self:center}
#mediq-dashboard #mmContent .v-stats>.mm-kpi-card span{grid-column:1/-1!important;grid-row:2!important;font-size:12px!important}
#mediq-dashboard #mmContent .v-stats>.mm-kpi-card::before{grid-column:2!important;grid-row:1!important;position:static!important;display:grid!important;width:37px!important;height:37px!important;font-size:22px!important;align-self:center!important}
.mm-request-box .mm-form-section:first-child .mm-request-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:15px!important;align-items:start!important}
.mm-request-box .mm-form-section:first-child .mm-request-grid>label{display:flex!important;flex-direction:column!important;min-width:0!important;grid-column:auto!important}
.mm-request-box .mm-form-section:first-child .mm-request-grid>label.mm-wide{grid-column:1!important}
.mm-request-box .mm-compact-attachments{grid-column:2!important;grid-row:auto!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;align-self:stretch!important}
.mm-request-box .mm-compact-attachments .mm-attach-trigger{display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:center!important;width:100%!important;min-height:94px!important;background:#fff!important;border:1px solid #c7dfed!important}
.mm-request-box .mm-compact-attachments input[type=file]{max-width:100%!important;width:100%!important}
.mm-request-box .mm-request-grid textarea#mmEditDescription{min-height:94px!important}
.mm-request-box .mm-transition-screen{grid-column:1/-1;border:1px solid #d1e5f1;border-radius:10px;padding:14px;margin:10px 0;background:#f9fcff;min-width:0}
.mm-request-box .mm-transition-screen[hidden]{display:none!important}
.mm-request-box .mm-transition-screen h4{margin:0 0 12px!important;color:#17638c}
.mm-request-box .mm-transition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.mm-request-box .mm-transition-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.mm-request-box .mm-transition-field input,.mm-request-box .mm-transition-field select,.mm-request-box .mm-transition-field textarea{display:block;width:100%;min-width:0;font:inherit;font-size:13px;border:1px solid #bfdbe9;border-radius:8px;padding:9px;box-sizing:border-box;background:white}
.mm-request-box .mm-transition-error,.mm-request-box .mm-transition-unsupported{color:#b53c48;font-size:12px;line-height:1.9}
.mm-request-box .mm-actions{justify-content:flex-start!important;gap:9px!important}
@media(max-width:680px){.mm-request-box .mm-form-section:first-child .mm-request-grid,.mm-request-box .mm-transition-grid{grid-template-columns:1fr!important}.mm-request-box .mm-form-section:first-child .mm-request-grid>label.mm-wide,.mm-request-box .mm-compact-attachments{grid-column:1!important}}
</style>


<style id="mediq-v46-5-layout-fixes">
/* Correct action form: description and attachments share the same row. */
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid{
 display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
 gap:12px 14px!important;align-items:stretch!important;
}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label.mm-wide{
 grid-column:1!important;grid-row:3!important;margin:0!important;
 min-width:0!important;height:100%!important;
}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mm-compact-attachments{
 grid-column:2!important;grid-row:3!important;margin:0!important;
 min-width:0!important;padding:0!important;align-self:stretch!important;
 background:transparent!important;border:0!important;
 display:flex!important;flex-direction:column!important;justify-content:flex-end!important;
}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label.mm-wide textarea#mmEditDescription{
 width:100%!important;min-height:110px!important;height:110px!important;
 box-sizing:border-box!important;resize:vertical!important;
}
.mm-request-modal .mm-compact-attachments > h4{margin:0 0 5px!important;font-size:12px!important}
.mm-request-modal .mm-compact-attachments .mm-documents{
 margin:0 0 4px!important;max-height:35px!important;overflow-y:auto!important;font-size:11px!important;
}
.mm-request-modal .mm-compact-attachments .mm-attach-trigger{
 flex:1!important;min-height:64px!important;max-height:110px!important;
 background:#fff!important;border:1px dashed #a9d2e7!important;
 border-radius:9px!important;padding:8px!important;
 display:flex!important;justify-content:center!important;align-items:center!important;
}
.mm-request-modal .mm-compact-attachments input[type=file]{box-sizing:border-box!important;width:100%!important;max-width:100%!important}
.mm-request-modal .mm-transition-screen:empty{display:none!important}
.mm-request-modal .mm-transition-screen .mm-transition-note{display:none!important}
@media(max-width:700px){
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid{grid-template-columns:minmax(0,1fr)!important}
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label.mm-wide,
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mm-compact-attachments{
  grid-column:1!important;grid-row:auto!important;height:auto!important;
 }
}
</style>

<style>
/* MediQ V46.6 - independent workflow transition screen */
.mm-t-screen-overlay{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;padding:18px;font-family:Vazir,IRANSans,Tahoma,sans-serif;box-sizing:border-box;direction:rtl}
.mm-t-screen-backdrop{position:absolute;inset:0;background:rgba(14,45,67,.57);backdrop-filter:blur(3px)}
.mm-t-screen-card{position:relative;z-index:1;width:min(760px,96vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;border-radius:18px;border:1px solid #c4e1f2;box-shadow:0 22px 65px rgba(13,50,78,.25);background:#fff;color:#205477;text-align:right}
.mm-t-screen-card header{padding:20px 24px;background:#eef8ff;border-bottom:1px solid #d3e9f7;display:flex;align-items:flex-start;justify-content:space-between;gap:15px}
.mm-t-screen-card header strong{font-size:19px;color:#11668f}.mm-t-screen-card header p{font-size:12px;margin:7px 0 0;color:#718b9c}
.mm-t-screen-card button{cursor:pointer;font-family:inherit}.mm-t-x{background:#fff;border:1px solid #cce4f2;border-radius:10px;color:#25648b;padding:5px 12px;font-size:20px}
.mm-t-screen-body{padding:20px 24px;overflow:auto;min-height:75px}
.mm-t-screen-card .mm-transition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.mm-t-screen-card .mm-transition-field{display:flex;flex-direction:column;gap:8px;min-width:0;font-weight:700;font-size:13px}
.mm-t-screen-card .mm-transition-field>input:not([type=hidden]),.mm-t-screen-card .mm-transition-field>select,.mm-t-screen-card .mm-transition-field>textarea{width:100%;box-sizing:border-box;min-height:43px;border-radius:10px;border:1px solid #bedced;background:#fff;color:#254e67;padding:10px;font-family:inherit;font-size:13px}
.mm-t-screen-card .mm-transition-field>textarea{resize:vertical}.mm-t-required{color:#d43e54}
.mm-t-checklist{display:grid;gap:9px;padding:12px;border:1px solid #d8e7f0;border-radius:10px}.mm-t-checklist label{font-weight:500}
.mm-t-asset-results{max-height:185px;overflow:auto;display:flex;flex-direction:column;gap:4px}.mm-t-asset-results button{text-align:right;background:#f1f8fc;border:1px solid #dceaf3;border-radius:8px;padding:8px;color:#245b79}
.mm-t-asset-results button:hover{background:#dff2fd}.mm-t-screen-error,.mm-transition-error{color:#c33d4e;font-size:12px;line-height:1.8}
.mm-t-screen-card footer{display:flex;justify-content:flex-start;gap:10px;padding:15px 24px;border-top:1px solid #e1edf5;background:#fbfdff}
.mm-t-screen-card footer button{font-size:13px;font-weight:700;border:1px solid #bcddec;border-radius:10px;min-height:40px;padding:9px 19px;background:#eff8ff;color:#1b678f}
.mm-t-screen-card footer .mm-t-ok{color:#fff;background:#129b72;border-color:#129b72}
@media(max-width:650px){.mm-t-screen-card .mm-transition-grid{grid-template-columns:1fr}.mm-t-screen-card header,.mm-t-screen-body{padding:15px}}
</style>
<style id="mediq-v467-transition-style">
.mm-t-screen-card{width:min(830px,96vw)!important}
.mm-t-screen-card .mm-t-comment{margin-top:18px}
.mm-t-screen-card .mm-t-comment textarea{width:100%;min-height:86px;box-sizing:border-box;border:1px solid #bedced;border-radius:10px;padding:12px;font:inherit;color:#254e67;resize:vertical}
.mm-t-screen-card footer .mm-t-ok{background:#159b70!important;border-color:#159b70!important;color:#fff!important;font-weight:800}

/* V46.8: restore action footer hidden by the global Confluence-shell footer rule. */
.mm-t-screen-overlay .mm-t-screen-card > footer{
 display:flex!important;
 visibility:visible!important;
 opacity:1!important;
 flex-shrink:0!important;
 align-items:center!important;
 justify-content:flex-start!important;
 gap:12px!important;
 padding:14px 24px!important;
 background:#f6fbff!important;
 border-top:1px solid #d5e9f5!important;
 position:relative!important;
 z-index:2!important;
}
.mm-t-screen-overlay .mm-t-screen-card > footer > button{display:inline-flex!important;align-items:center;justify-content:center;min-height:42px}

.mm-t-screen-card .mm-t-screen-error:not(:empty){margin-top:12px;padding:10px;border:1px solid #edbbc2;border-radius:8px;background:#fff4f4}
.mm-t-screen-card .mm-transition-field{position:relative}
.mm-t-screen-card .mm-t-asset-results{max-height:185px;overflow:auto}
</style>


<style id="mediq-v49-3-ui-fix">
/* Preserve the original dashboard and tighten ONLY the existing request/action interfaces. */
#mediq-dashboard #mufRoot .muf-heading{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;flex-wrap:wrap!important}
#mediq-dashboard #mufRoot .muf-heading>div:first-child{margin-inline-start:0!important;margin-inline-end:auto!important}
#mediq-dashboard #mufRoot .mq-v49-fault-toolbar{display:flex!important;flex-direction:row!important;align-items:center!important;gap:9px!important;flex-shrink:0!important;margin-inline-start:auto!important}
#mediq-dashboard #mufRoot .mq-v49-fault-toolbar>button{position:static!important;margin:0!important;min-width:unset!important;white-space:nowrap!important}
#mediq-dashboard #mufRoot .mq-v49-fault-toolbar .mq-v47-newfault{background:#df4451!important;color:white!important;border-color:#df4451!important}
#mediq-dashboard #mufRoot .mq-v49-fault-toolbar .mq-v47-newfault:hover{background:#c72f3c!important;transform:translateY(-3px) rotate(-1deg)!important}
.mm-request-box .mm-request-body{padding-top:4px!important}
.mm-request-box .mm-form-section{padding:10px 12px!important;margin:7px 0!important}
.mm-request-box .mm-request-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px 10px!important}
.mm-request-box .mm-request-grid>label{min-width:0!important;margin:0!important}
.mm-request-box .mm-request-grid>label:has(#mmEditAssignee){display:none!important}
.mm-request-box .mm-request-grid .mq-v49-stage-label{grid-column:1/-1!important;order:15!important}
.mm-request-box .mq-v49-stage-label>select{display:none!important}
.mm-request-box .mq-v49-stage-label .mm-transition-tiles{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;margin:6px 0!important;gap:8px!important}
.mm-request-box .mq-v49-stage-label .mm-transition-tile{min-height:42px!important}
.mm-request-box .mm-request-grid .mq-v47-status{min-height:39px!important;padding:5px 9px!important;align-self:center!important}
.mm-request-box .mm-request-grid .mq-v47-priority{padding:5px 8px!important;min-height:35px!important}
.mm-request-box .mm-request-grid>label:has(#mmEditSummary){order:0!important}
.mm-request-box .mm-request-grid>label:has(#mmEditPriority){order:1!important}
.mm-request-box .mm-request-grid>label.mm-wide{order:5!important}
.mm-request-box .mm-request-grid .mm-compact-attachments{order:6!important}
.mm-request-box .mm-request-grid .mq-v47-device{order:8!important;grid-column:1/-1!important;margin:1px 0!important}
.mm-request-box .mm-request-grid>label:has(#mmEditDescription) textarea{min-height:55px!important;height:75px!important;resize:vertical!important}
.mm-request-box .mm-request-grid .mm-compact-attachments{border:0!important;box-shadow:none!important}
.mm-request-box .mq-v47-action .mq-v47-help{margin:4px 0!important}
.mm-request-box .mq-v47-action .mq-v47-actions-container{display:flex!important;flex-direction:column!important;gap:8px!important}
.mm-request-box .mq-v49-inline-stage-host:empty{display:none!important}
.mm-request-box .mq-v49-transition-inline{position:relative!important;inset:auto!important;z-index:auto!important;display:block!important;background:none!important;overflow:visible!important;padding:0!important}
.mm-request-box .mq-v49-transition-inline .mm-t-screen-backdrop{display:none!important}
.mm-request-box .mq-v49-transition-inline .mm-t-screen-card{position:relative!important;inset:auto!important;transform:none!important;display:block!important;max-height:none!important;overflow:visible!important;max-width:none!important;width:100%!important;margin:0!important;border:1px solid #c8e3f3!important;box-shadow:none!important;border-radius:10px!important}
.mm-request-box .mq-v49-transition-inline .mm-t-screen-card header{padding:9px 12px!important}
.mm-request-box .mq-v49-transition-inline .mm-t-screen-body{padding:10px!important;max-height:320px!important;overflow-y:auto!important}
.mm-request-box .mq-v49-transition-inline .mm-t-screen-card footer{padding:8px 10px!important}
.mm-request-box .mq-v49-transition-inline .mm-transition-grid{gap:8px!important}
@media(max-width:750px){.mm-request-box .mm-request-grid{grid-template-columns:1fr!important}.mm-request-box .mq-v49-stage-label .mm-transition-tiles{grid-template-columns:1fr!important}#mediq-dashboard #mufRoot .muf-heading{align-items:flex-start!important}}
</style>


<style id="mediq-v49-4-request-layout">
/* V49.4: precise rearrangement of existing nodes, retaining their IDs and save handlers */
.mm-request-box .mm-request-grid{grid-template-columns:minmax(0,1.8fr) minmax(0,1fr) minmax(0,.78fr)!important;gap:8px!important;align-items:end!important}
.mm-request-box .mm-request-grid>label:has(#mmEditSummary){grid-column:1!important;grid-row:1!important;order:0!important}
.mm-request-box .mm-request-grid>.mq-v47-status{grid-column:3!important;grid-row:1!important;order:0!important;min-height:40px!important;display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:7px!important;white-space:nowrap!important}
.mm-request-box .mm-request-grid>.mq-v47-status span{font-weight:700!important;font-size:12px!important}
.mm-request-box .mm-request-grid>.mq-v47-status strong{font-size:12px!important}
.mm-request-box .mm-request-grid>label:has(#mmEditPriority){grid-column:2!important;grid-row:1!important;order:0!important;min-height:40px!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:7px!important;margin:0!important;font-weight:750!important}
.mm-request-box .mm-request-grid>label:has(#mmEditPriority) .mq-v47-priority{display:inline-flex!important;min-height:36px!important;padding:2px 4px!important;gap:5px!important;background:transparent!important;border:0!important}
.mm-request-box .mq-v494-icon{display:block!important;width:32px!important;height:32px!important;object-fit:cover!important;border-radius:8px!important}
.mm-request-box .mq-v494-importance-text{font-size:11px!important;color:#52728b!important}
.mm-request-box .mm-request-grid>label:has(#mmEditDescription){grid-column:1/3!important;grid-row:2!important;order:0!important;align-self:stretch!important}
.mm-request-box .mm-request-grid>label:has(#mmEditDescription) textarea{height:92px!important;min-height:92px!important;max-height:105px!important}
.mm-request-box .mm-request-grid>.mm-compact-attachments{grid-column:3!important;grid-row:2!important;order:0!important;align-self:stretch!important;padding:0!important}
.mm-request-box .mm-request-grid>.mm-compact-attachments .mm-documents{max-height:35px!important;min-height:15px!important;margin:0 0 4px!important}
.mm-request-box .mm-request-grid>.mm-compact-attachments .mm-attach-trigger{margin-top:3px!important}
.mm-request-box .mq-v47-device{grid-column:1/-1!important;grid-row:3!important;order:0!important;min-height:66px!important;margin:0!important}
.mm-request-box .mq-v47-device .mq-v47-product-image{max-height:82px!important}
.mm-request-box .mq-v47-action{padding:11px 12px!important}
.mm-request-box .mq-v47-action .mq-v47-help{margin:0 0 8px!important}
.mm-request-box .mq-v494-action-row{display:grid!important;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)!important;gap:14px!important;align-items:start!important;direction:rtl!important}
.mm-request-box .mq-v494-action-row>label{min-width:0!important;margin:0!important}
.mm-request-box .mq-v494-action-row>.mq-v49-stage-label{grid-column:1!important;grid-row:1!important;order:0!important;display:block!important}
.mm-request-box .mq-v494-action-row>.mq-v49-stage-label>.mm-transition-tiles{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important;margin:6px 0!important}
.mm-request-box .mq-v494-action-row>.mq-v49-stage-label .mm-transition-tile{min-height:43px!important;cursor:pointer!important}
.mm-request-box .mq-v494-action-row>label:has(#mmEditAssignee){grid-column:2!important;grid-row:1!important;display:flex!important;flex-direction:column!important;gap:6px!important}
.mm-request-box .mq-v494-action-row .mq-v47-self{align-self:flex-start!important;padding:0!important;margin:0!important}
.mm-request-box .mq-v49-inline-stage-host{margin-top:4px!important}
.mm-request-box .mq-v47-action .mm-actions{margin-top:7px!important}
.mm-request-box .mq-v47-notes{margin-top:8px!important}
@media(max-width:780px){.mm-request-box .mm-request-grid{grid-template-columns:1fr 1fr!important}.mm-request-box .mm-request-grid>label:has(#mmEditSummary){grid-column:1/-1!important;grid-row:1!important}.mm-request-box .mm-request-grid>.mq-v47-status{grid-column:2!important;grid-row:2!important}.mm-request-box .mm-request-grid>label:has(#mmEditPriority){grid-column:1!important;grid-row:2!important}.mm-request-box .mm-request-grid>label:has(#mmEditDescription){grid-column:1/-1!important;grid-row:3!important}.mm-request-box .mm-request-grid>.mm-compact-attachments{grid-column:1/-1!important;grid-row:4!important}.mm-request-box .mq-v47-device{grid-row:5!important}.mm-request-box .mq-v494-action-row{grid-template-columns:1fr!important}.mm-request-box .mq-v494-action-row>.mq-v49-stage-label{grid-column:1!important;grid-row:1!important}.mm-request-box .mq-v494-action-row>label:has(#mmEditAssignee){grid-column:1!important;grid-row:2!important}}
</style>

<style id="mediq-v49-5-alignment-fix">
/* V49.5 - targeted layout correction only; no endpoint or event handler changes. */
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid{
 display:grid!important;
 grid-template-columns:repeat(6,minmax(0,1fr))!important;
 grid-template-rows:auto auto auto!important;
 column-gap:10px!important;row-gap:12px!important;
 align-items:stretch!important;direction:rtl!important;
}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditSummary){grid-column:1/3!important;grid-row:1!important;order:0!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditPriority){grid-column:3/5!important;grid-row:1!important;order:0!important;display:flex!important;flex-direction:row!important;justify-content:center!important;align-items:center!important;gap:8px!important;padding:8px 10px!important;min-height:70px!important;background:#f5faff!important;border:1px solid #c9e1f1!important;border-radius:9px!important;box-sizing:border-box!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mq-v47-status{grid-column:5/7!important;grid-row:1!important;order:0!important;display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:center!important;gap:7px!important;min-height:70px!important;height:auto!important;padding:8px 10px!important;box-sizing:border-box!important;background:#f5faff!important;border:1px solid #c9e1f1!important;border-radius:9px!important;white-space:normal!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditSummary){display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:stretch!important;gap:7px!important;min-height:70px!important;padding:7px 10px!important;box-sizing:border-box!important;background:#f5faff!important;border:1px solid #c9e1f1!important;border-radius:9px!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditSummary) input{width:100%!important;min-height:34px!important;margin:0!important;box-sizing:border-box!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditPriority) .mq-v47-priority{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:7px!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditPriority) .mq-v494-icon{width:28px!important;height:28px!important;object-fit:contain!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditDescription){grid-column:1/4!important;grid-row:2!important;order:0!important;display:flex!important;flex-direction:column!important;min-height:127px!important;height:127px!important;gap:6px!important;box-sizing:border-box!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditDescription) textarea#mmEditDescription{flex:1!important;display:block!important;min-height:0!important;height:100%!important;max-height:none!important;resize:none!important;box-sizing:border-box!important;width:100%!important;margin:0!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mm-compact-attachments{grid-column:4/7!important;grid-row:2!important;order:0!important;min-height:127px!important;height:127px!important;display:flex!important;flex-direction:column!important;justify-content:flex-start!important;box-sizing:border-box!important;margin:0!important;padding:0!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mm-compact-attachments > h4{margin:0 0 6px!important;line-height:20px!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mm-compact-attachments .mm-documents{flex:0 0 auto!important;min-height:19px!important;max-height:32px!important;overflow:auto!important;margin:0 0 5px!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mm-compact-attachments .mm-attach-trigger{flex:1!important;min-height:0!important;max-height:none!important;width:100%!important;box-sizing:border-box!important;margin:0!important;display:flex!important;justify-content:center!important;align-items:center!important;}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mq-v47-device{grid-column:1/7!important;grid-row:3!important;order:0!important;width:100%!important;box-sizing:border-box!important;min-height:62px!important;margin:0!important;padding:8px 10px!important;}
.mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;align-items:start!important;gap:12px!important;direction:rtl!important;}
.mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row > .mq-v49-stage-label{grid-column:1!important;grid-row:1!important;min-width:0!important;display:flex!important;flex-direction:column!important;gap:6px!important;align-items:stretch!important;margin:0!important;}
.mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row > label:has(#mmEditAssignee){grid-column:2!important;grid-row:1!important;min-width:0!important;display:flex!important;flex-direction:column!important;gap:6px!important;align-items:stretch!important;margin:0!important;}
.mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row > label:has(#mmEditAssignee) input#mmEditAssignee{box-sizing:border-box!important;width:100%!important;min-height:42px!important;margin:0!important;}
.mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row .mm-transition-tiles{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;margin:0!important;}
.mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row .mm-transition-tile{min-height:42px!important;margin:0!important;}
.mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row .mq-v47-self{margin-top:1px!important;align-self:flex-start!important;}
@media(max-width:700px){
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditSummary){grid-column:1/3!important;grid-row:1!important;}
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditPriority){grid-column:1!important;grid-row:2!important;}
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mq-v47-status{grid-column:2!important;grid-row:2!important;}
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > label:has(#mmEditDescription){grid-column:1/3!important;grid-row:3!important;}
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mm-compact-attachments{grid-column:1/3!important;grid-row:4!important;}
 .mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid > .mq-v47-device{grid-column:1/3!important;grid-row:5!important;}
 .mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row{grid-template-columns:1fr!important;}
 .mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row > .mq-v49-stage-label{grid-column:1!important;grid-row:1!important;}
 .mm-request-modal .mm-request-box .mq-v47-action .mq-v494-action-row > label:has(#mmEditAssignee){grid-column:1!important;grid-row:2!important;}
}
</style>


<style id="mediq-v49-6-attachments-flow-report">
/* V49.6: preserves existing IDs and action submission semantics */
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid>.mq-v47-status{
 width:100%!important;min-width:0!important;min-height:70px!important;height:70px!important;
 justify-content:center!important;align-self:stretch!important;box-sizing:border-box!important;
 font-size:12px!important;display:flex!important;gap:5px!important;
}
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid>label:has(#mmEditPriority),
.mm-request-modal .mm-request-box .mm-form-section:first-child .mm-request-grid>label:has(#mmEditSummary){height:70px!important;min-height:70px!important;box-sizing:border-box!important}
.mm-request-modal .mm-compact-attachments{background:#f8fbfe!important;border:1px solid #c9e1f1!important;border-radius:9px!important;padding:8px!important;overflow:hidden!important}
.mm-request-modal .mm-compact-attachments>.mm-documents{display:flex!important;flex-flow:row wrap!important;align-content:flex-start!important;gap:5px!important;max-height:65px!important;min-height:28px!important;overflow-y:auto!important;overflow-x:hidden!important;margin-bottom:7px!important}
.mm-request-modal .mm-compact-attachments .mm-doc-pill{display:inline-flex!important;max-width:100%!important;min-width:0!important;overflow-wrap:anywhere!important;white-space:normal!important;text-decoration:none!important;background:white!important;border:1px solid #b6dff0!important;border-radius:7px!important;padding:4px 7px!important;color:#145b85!important;font-size:11px!important}
.mm-request-modal .mm-compact-attachments .mm-attach-trigger{min-height:39px!important;flex:0 0 auto!important;display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;padding:6px!important}
.mm-request-modal .mm-compact-attachments input[type=file]{width:100%!important;min-width:0!important}
.mm-request-modal .mm-compact-attachments .mm-attach-trigger:not(:has(input[type=file]:focus)){box-shadow:none!important}
.mm-request-modal .mq-v496-flow{direction:rtl;grid-column:1/-1;width:100%;box-sizing:border-box;background:#f4faff;border:1px solid #d0e7f6;border-radius:9px;padding:9px 11px;margin:0 0 6px}
.mm-request-modal .mq-v496-flow-title{font-size:12px;font-weight:800;color:#155a80;margin-bottom:7px;text-align:right}
.mm-request-modal .mq-v496-flow-content{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:11px;color:#2f6887}
.mm-request-modal .mq-v496-stage-current{background:#e8f7ff;color:#00699b;border:1px solid #a8d6ef;border-radius:8px;padding:7px 11px;display:inline-flex;align-items:center;gap:7px;font-weight:800}
.mm-request-modal .mq-v496-stage-current i{display:inline-block;height:9px;width:9px;background:#159bd1;border-radius:50%;animation:mqV496Pulse 1.3s ease-in-out infinite}
.mm-request-modal .mq-v496-next{background:#fff;border:1px solid #c4dfef;padding:7px 10px;border-radius:8px}
@keyframes mqV496Pulse{0%,100%{box-shadow:0 0 0 2px #d6f0fd;opacity:1}50%{box-shadow:0 0 0 7px #d6f0fd;opacity:.45}}
@media(prefers-reduced-motion:reduce){.mm-request-modal .mq-v496-stage-current i{animation:none}}
</style>

<style id="mediq-v49-7-action-workflow">
/* V49.7 – action timeline mirrors the five-stage activity dashboard. */
.mm-request-modal .mq-v497-flow{display:block!important;width:100%!important;min-width:0!important;box-sizing:border-box!important;direction:rtl!important;padding:9px 12px 7px!important;margin:0 0 8px!important;border:1px solid #c8e2f4!important;border-radius:11px!important;background:#fff!important;overflow:hidden!important}
.mm-request-modal .mq-v497-flow h4{font-size:12px!important;font-weight:800!important;text-align:right!important;color:#12618a!important;margin:0 0 5px!important;padding:0!important}
.mm-request-modal .mq-v497-flow .mm-stage-grid{display:flex!important;flex-flow:row nowrap!important;direction:rtl!important;align-items:flex-start!important;justify-content:space-between!important;gap:0!important;margin:0!important;padding:4px 0 0!important;min-width:0!important;width:100%!important;overflow:visible!important}
.mm-request-modal .mq-v497-flow .mm-stage{position:relative!important;display:flex!important;flex:1 1 20%!important;min-width:0!important;min-height:44px!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;gap:5px!important;padding:2px 1px!important;border:0!important;background:transparent!important;color:#718da1!important;font-size:10px!important;line-height:1.6!important;font-weight:650!important;text-align:center!important;white-space:normal!important;overflow-wrap:anywhere!important}
.mm-request-modal .mq-v497-flow .mm-stage::before{content:''!important;position:relative!important;display:block!important;order:0!important;flex:0 0 13px!important;width:13px!important;height:13px!important;margin:0 auto!important;background:#e3eff6!important;border:2px solid #c5deeb!important;border-radius:50%!important;box-sizing:border-box!important;z-index:2!important}
.mm-request-modal .mq-v497-flow .mm-stage:not(:last-child)::after{content:''!important;position:absolute!important;display:block!important;top:8px!important;right:calc(50% + 9px)!important;left:auto!important;bottom:auto!important;width:calc(100% - 18px)!important;height:2px!important;background:#d3e5ee!important;z-index:1!important}
.mm-request-modal .mq-v497-flow .mm-stage.done::before{background:#70c5e4!important;border-color:#70c5e4!important}
.mm-request-modal .mq-v497-flow .mm-stage.done:not(:last-child)::after{background:#70c5e4!important}
.mm-request-modal .mq-v497-flow .mm-stage.current{color:#087cb6!important;font-weight:800!important}
.mm-request-modal .mq-v497-flow .mm-stage.current::before{background:#159bd1!important;border:3px solid #b6e7fb!important;box-shadow:0 0 0 4px #e5f6fd!important;animation:mqV497Active 1.25s ease-in-out infinite!important}
@keyframes mqV497Active{0%,100%{box-shadow:0 0 0 3px #d9f2fc;transform:scale(1)}50%{box-shadow:0 0 0 7px #e7f7ff;transform:scale(1.12)}}
@media (prefers-reduced-motion:reduce){.mm-request-modal .mq-v497-flow .mm-stage.current::before{animation:none!important}}
</style>

<style id="mediq-v49-12-upload-layout">
/* Repair upload controls inside the existing request modal. Scoped and responsive. */
.mm-request-modal .mm-request-grid > .mm-compact-attachments{
  display:flex!important;flex-direction:column!important;gap:5px!important;
  overflow:hidden!important;padding:8px 10px!important;min-width:0!important;
  justify-content:flex-start!important;box-sizing:border-box!important;
}
.mm-request-modal .mm-compact-attachments>h4{flex:none!important;margin:0!important;line-height:17px!important;font-size:11px!important}
.mm-request-modal .mm-compact-attachments .mm-documents{
  flex:none!important;display:flex!important;flex-flow:row wrap!important;align-items:center!important;
  gap:4px!important;overflow-y:auto!important;overflow-x:hidden!important;
  max-height:30px!important;min-height:18px!important;margin:0!important;padding:0!important;
}
.mm-request-modal .mm-compact-attachments .mm-doc-pill{white-space:nowrap!important;max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;padding:2px 6px!important;font-size:10px!important}
.mm-request-modal .mm-compact-attachments .mm-attach-controls{
  display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:center!important;
  gap:7px!important;width:100%!important;min-width:0!important;flex:none!important;
}
.mm-request-modal .mm-compact-attachments .mm-attach-trigger{
  display:flex!important;align-items:center!important;justify-content:flex-start!important;flex-direction:column!important;
  width:100%!important;min-width:0!important;min-height:0!important;max-height:none!important;
  height:auto!important;padding:4px 6px!important;margin:0!important;gap:3px!important;
  box-sizing:border-box!important;border:1px solid #c6e1ef!important;background:#fff!important;
}
.mm-request-modal .mm-compact-attachments .mm-file-label{display:none!important}
.mm-request-modal .mm-compact-attachments input#mmIssueFile{
  position:static!important;display:block!important;width:100%!important;max-width:100%!important;
  min-width:0!important;height:27px!important;margin:0!important;padding:2px!important;
  border:0!important;box-shadow:none!important;outline-offset:1px!important;background:transparent!important;
  font-size:10px!important;line-height:20px!important;direction:ltr!important;box-sizing:border-box!important;
}
.mm-request-modal .mm-compact-attachments #mmUploadIssue{
  flex:none!important;position:static!important;display:inline-flex!important;align-items:center!important;
  justify-content:center!important;width:auto!important;min-width:90px!important;min-height:33px!important;
  padding:6px 9px!important;margin:0!important;white-space:nowrap!important;font-size:10px!important;
}
.mm-request-modal .mm-compact-attachments #mmUploadIssue:disabled{opacity:.48!important;cursor:not-allowed!important}
.mm-request-modal .mm-compact-attachments .mm-upload-message{
  flex:none!important;display:block!important;width:100%!important;min-width:0!important;
  font-size:10px!important;line-height:1.6!important;overflow:hidden!important;
  white-space:nowrap!important;text-overflow:ellipsis!important;color:#35617a!important;margin:0!important;
}
@media(max-width:650px){
 .mm-request-modal .mm-compact-attachments .mm-attach-controls{grid-template-columns:minmax(0,1fr)!important}
 .mm-request-modal .mm-compact-attachments #mmUploadIssue{width:100%!important}
 .mm-request-modal .mm-request-grid > .mm-compact-attachments{height:auto!important;min-height:125px!important}
}
</style>

<style id="mediq-receipt-dana-two-copies">
#mediq-dashboard .mm-handover-card,
#mediq-dashboard .mm-handover-card *,
#mediq-dashboard .mm-handover-card input,
#mediq-dashboard .mm-handover-card button,
#mediq-dashboard .mm-handover-card label{font-family:inherit!important}
</style>


<style id="mediq-v49-27-handover-refinement">
#mediq-dashboard .mq-handover-workspace{padding:18px!important}
#mediq-dashboard .mq-handover-workspace .mq-assets-head{margin:0 0 12px!important;min-height:36px!important}
#mediq-dashboard #mqV48HandoverSummary.v-stats{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:14px!important;margin:0 0 14px!important;padding:0!important;width:100%!important;direction:rtl!important}
#mediq-dashboard #mqV48HandoverSummary>.mm-kpi-card{position:relative!important;box-sizing:border-box!important;width:100%!important;min-width:0!important;height:86px!important;min-height:86px!important;margin:0!important;padding:14px 16px!important;display:grid!important;grid-template-columns:minmax(0,1fr) 42px!important;grid-template-rows:auto auto!important;align-content:center!important;align-items:center!important;column-gap:12px!important;row-gap:4px!important;text-align:right!important;direction:rtl!important;border:1px solid #c5dfef!important;border-top:3px solid #258fd1!important;border-radius:12px!important;background:#fff!important;box-shadow:0 4px 12px rgba(25,98,145,.06)!important;cursor:pointer!important;font-family:inherit!important}
#mediq-dashboard #mqV48HandoverSummary>.mm-kpi-card:nth-child(2){border-top-color:#ef9d29!important}
#mediq-dashboard #mqV48HandoverSummary>.mm-kpi-card.active{background:#eaf7ff!important;border-color:#249bdc!important;box-shadow:0 0 0 1px #9edfff inset!important}
#mediq-dashboard #mqV48HandoverSummary>.mm-kpi-card::before{display:none!important;content:none!important}
#mediq-dashboard #mqV48HandoverSummary .mq-handover-icon{grid-column:2!important;grid-row:1/3!important;display:flex!important;align-items:center!important;justify-content:center!important;width:42px!important;height:42px!important;background:#e5f4fd!important;border-radius:11px!important;font:bold 24px Tahoma,Arial,sans-serif!important;color:#208dca!important}
#mediq-dashboard #mqV48HandoverSummary>.mm-kpi-card:nth-child(2) .mq-handover-icon{background:#fff1df!important;color:#d88b18!important}
#mediq-dashboard #mqV48HandoverSummary .mm-kpi-card strong{grid-column:1!important;grid-row:1!important;font-size:27px!important;line-height:1.2!important;color:#198cca!important;margin:0!important;text-align:right!important}
#mediq-dashboard #mqV48HandoverSummary .mq-handover-label{grid-column:1!important;grid-row:2!important;font-size:12px!important;color:#62809c!important;text-align:right!important}
#mediq-dashboard .mq-handover-workspace .mm-actionbar{margin:0 0 12px!important;padding:0!important}
#mediq-dashboard .mq-handover-workspace .mm-actionbar input{max-width:none!important;width:100%!important;min-height:36px!important;box-sizing:border-box!important}
#mediq-dashboard .mq-handover-table-wrap{max-height:420px!important;overflow:auto!important;border-radius:12px!important;overscroll-behavior:contain}
#mediq-dashboard .mq-handover-table-wrap table{width:100%!important}
#mediq-dashboard .mq-handover-documents{margin:5px 0 0;font-size:12px;color:#167b67}
#mediq-dashboard .mq-handover-documents summary{cursor:pointer;font-weight:750;width:max-content;max-width:100%;border:1px solid #c5e6db;border-radius:6px;padding:4px 8px;background:#f0faf7}
#mediq-dashboard .mq-handover-document{display:flex;flex-wrap:wrap;gap:5px 12px;padding:7px 3px;border-bottom:1px solid #e5edf3;font-size:11px;color:#315b73}
#mediq-dashboard #mqTree [data-v32-nav="handover"].active{background:#d9efff!important;color:#0e5685!important;border-right:3px solid #f5fbff!important;border-radius:7px!important;font-weight:850!important}
#mediq-dashboard #mqTree [data-tree-key="property"].active{background:#2b83b7!important;color:#fff!important;font-weight:850!important}
/* Floating Persian date pickers never increase the transition form's height. */
.mm-t-screen-overlay .mm-cal,.mm-request-modal .mm-cal{position:fixed!important;z-index:2147483600!important;max-width:min(330px,calc(100vw - 20px))!important;width:310px!important;max-height:min(370px,calc(100vh - 20px))!important;overflow:auto!important;margin:0!important;background:#fff!important;box-shadow:0 15px 45px rgba(19,67,98,.24)!important}
@media(max-width:700px){#mediq-dashboard #mqV48HandoverSummary.v-stats{gap:8px!important}#mediq-dashboard #mqV48HandoverSummary>.mm-kpi-card{height:82px!important;min-height:82px!important;padding:10px!important}}
</style>

<style id="mediq-v4928-styles">
#mediq-dashboard .mq-v4928-notice{padding:14px 16px!important;margin:0 0 10px!important;border:1px solid #c9dfee!important;border-radius:12px!important;background:#fff!important;min-height:0!important;text-align:right!important}
#mediq-dashboard .mq-v4928-notice-top{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
#mediq-dashboard .mq-v4928-notice-top strong{font-size:13px;color:#125780}
#mediq-dashboard .mq-v4928-notice-top small{font-size:11px;color:#738ba0}
#mediq-dashboard .mq-v4928-notice-sub{font-size:12px;font-weight:700;color:#314f68;margin:7px 0}
#mediq-dashboard .mq-v4928-notice p{margin:7px 0 9px;color:#42627b;line-height:1.9}
#mediq-dashboard .mq-v4928-notice-actions{display:flex;justify-content:flex-start}
#mediq-dashboard .mq-v4928-rating{display:flex;direction:ltr;justify-content:flex-end;gap:3px;margin:10px 0}
#mediq-dashboard .mq-v4928-rating button{cursor:pointer;border:0;background:transparent;font:30px Arial,sans-serif;color:#c8d3df;padding:2px 4px}
#mediq-dashboard .mq-v4928-rating button.selected{color:#f5a623}
/* MediQ CSAT V49.31 - emoji are multicolor, so text-color alone cannot show selection. */
#mediq-dashboard #mufRoot .mq-v4928-rating{gap:8px!important;align-items:center!important;justify-content:flex-end!important;flex-wrap:wrap!important}
#mediq-dashboard #mufRoot .mq-v4928-rating button{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-width:43px!important;height:43px!important;border:2px solid transparent!important;border-radius:12px!important;padding:4px!important;background:#f4f8fc!important;box-shadow:none!important;cursor:pointer!important;pointer-events:auto!important;opacity:1!important;filter:none!important;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s!important}
#mediq-dashboard #mufRoot .mq-v4928-rating button:hover{background:#eaf5ff!important;transform:translateY(-2px)!important}
#mediq-dashboard #mufRoot .mq-v4928-rating button.selected,#mediq-dashboard #mufRoot .mq-v4928-rating button[aria-pressed="true"]{background:#e0f2ff!important;border-color:#2493ce!important;box-shadow:0 0 0 3px rgba(36,147,206,.16)!important;transform:scale(1.09)!important}
#mediq-dashboard #mufRoot .mq-v4928-rating button:focus-visible{outline:3px solid #2493ce!important;outline-offset:3px!important}
#mediq-dashboard #mufRoot .mq-csat-selected-label{display:block;font-size:11px;font-weight:750;color:#296486;background:#f5faff;padding:5px 10px;border-radius:8px;min-height:25px;text-align:right}
#mediq-dashboard #mufRoot .mq-csat-choice:has(input:checked){background:#e4f4ff!important;border-color:#309bce!important;box-shadow:0 0 0 1px #aedaf2 inset!important}
#mediq-dashboard .mq-v4928-survey textarea{display:block;box-sizing:border-box;width:100%;margin-bottom:10px;border:1px solid #c5dff0;border-radius:8px;padding:10px;font:inherit}
#mediq-dashboard #mqTree .v32-tree-children .mq-tree-row.level-2,#mediq-dashboard #mmTreeChildren [data-mm-tree]{box-sizing:border-box!important;width:100%!important;min-height:35px!important;padding:9px 14px!important;font-size:12px!important;line-height:1.5!important;text-align:right!important}
#mediq-dashboard #mqTree .v32-tree-children .mq-tree-row.level-2.active{background:#63a9d3!important;border-right:3px solid #fff!important;color:#fff!important}
#mediq-dashboard #mqTree .mq-tree-row.level-1.parent-active{background:#2b82b3!important;color:#fff!important}
</style>

<script>
/* MEDIQ V49.30 - Persian numeral presentation for dashboard cards (text only). */
(function(){
  'use strict';
  var selectors=[
    '#mediq-dashboard .mm-kpi-card',
    '#mediq-dashboard .muf-kpi',
    '#mediq-dashboard .mm-stat-card',
    '#mediq-dashboard .mq-stat-card',
    '#mediq-dashboard .mq-home-card',
    '#mediq-dashboard .mq-handover-icon',
    '#mediq-dashboard [data-handover-filter]',
    '#mediq-dashboard .mq-v48-stat',
    '#mediq-dashboard .mm-category-card',
    '#mediq-dashboard .mm-summary-card',
    '#mediq-dashboard .mq-v48-card',
    '#mediq-dashboard .mq-card',
    '#mediq-dashboard .muf-stats',
    '#mediq-dashboard [class*="kpi"]',
    '#mediq-dashboard [class*="stat-card"]',
    '#mediq-dashboard [class*="summary-card"]',
    '#mediq-dashboard [class*="metric-card"]'
  ].join(',');
  var digits='۰۱۲۳۴۵۶۷۸۹';
  var guard=false;
  function convert(node){
    if(!node || !node.isConnected)return;
    var walker=document.createTreeWalker(node,NodeFilter.SHOW_TEXT,null),t;
    while((t=walker.nextNode())){
      if(!/[0-9]/.test(t.nodeValue))continue;
      var parent=t.parentElement;
      if(parent && parent.closest('script,style,code,pre,textarea,input,select,[contenteditable="true"]'))continue;
      t.nodeValue=t.nodeValue.replace(/[0-9]/g,function(d){return digits[d.charCodeAt(0)-48];});
    }
  }
  function apply(){
    if(guard)return;
    guard=true;
    try{document.querySelectorAll(selectors).forEach(convert);}finally{guard=false;}
  }
  var pending=false;
  function schedule(){
    if(pending)return;
    pending=true;
    requestAnimationFrame(function(){pending=false;apply();});
  }
  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',schedule,{once:true});else schedule();
  var root=document.getElementById('mediq-dashboard');
  if(root){new MutationObserver(function(mutations){
     if(guard)return;
     for(var i=0;i<mutations.length;i++){
       if(mutations[i].type==='childList'||mutations[i].type==='characterData'){schedule();break;}
     }
  }).observe(root,{subtree:true,childList:true,characterData:true});}
})();
</script>