/* ============================================================
   modal.css - 模态框、表单、确认弹窗、Toast提示
   ============================================================ */

/* Modal overlay */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.25);z-index:1000;display:none;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(4px)}
.modal-overlay.open{display:flex}
.modal{background:var(--c-surface);border-radius:var(--radius-lg);max-width:700px;width:100%;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:modalIn 0.4s cubic-bezier(0.4,0,0.2,1)}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:28px 32px 0}
.modal-header h2{font-size:22px;font-weight:700;color:var(--c-gray-900);letter-spacing:-0.02em}
.modal-close{width:36px;height:36px;border:none;background:var(--c-gray-50);border-radius:50%;cursor:pointer;font-size:18px;color:var(--c-gray-400);display:flex;align-items:center;justify-content:center;transition:all 0.3s cubic-bezier(0.4,0,0.2,1)}
.modal-close:hover{background:var(--c-gray-100);color:var(--c-gray-800);transform:rotate(90deg)}
.modal-body{padding:24px 32px}
.modal-footer{padding:0 32px 28px;display:flex;gap:12px;justify-content:flex-end}

/* Modal size variants */
.modal-xs{max-width:420px}
.modal-sm{max-width:480px}
.modal-md{max-width:560px}
.modal-lg{max-width:700px}
.modal-xl{max-width:1100px}
.modal-view{max-width:520px}
.modal-update{max-width:460px}
/* 切换部门弹窗 - 增大高度 */
.modal-switch{max-width:480px;min-height:420px;display:flex;flex-direction:column}
.modal-switch .modal-body{flex:1;display:flex;flex-direction:column;justify-content:center;padding:32px}
.modal-switch .form-group{margin-bottom:20px}
.modal-switch .switch-actions{margin-top:auto;padding-top:24px}
.modal-overlay-high{z-index:1001}
.modal-overlay-highest{z-index:2000}

/* Detail split layout - 左右分栏 */
.detail-split-layout{display:flex;gap:24px;align-items:stretch}
.detail-main-panel{flex:1;min-width:300px}
.detail-comment-panel{width:380px;flex-shrink:0;display:flex;flex-direction:column;max-height:calc(85vh - 120px);background:var(--c-gray-50,#f5f5f7);border-radius:var(--radius-md,12px);padding:16px;border:1px solid var(--c-gray-100,#e5e5ea)}
.detail-comment-panel .comment-section{margin-top:0;padding-top:0;border-top:none;flex:1;display:flex;flex-direction:column;min-height:0}
.detail-comment-panel .comment-section-header{flex-shrink:0}
.detail-comment-panel .comment-list{flex:1;overflow-y:auto;min-height:200px}
.detail-comment-panel .comment-input-area{flex-shrink:0}

/* Form */
.form-group{margin-bottom:20px}
.form-group label{display:block;font-size:14px;font-weight:600;color:var(--c-gray-800);margin-bottom:6px}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:11px 16px;border:1px solid var(--c-gray-200);border-radius:var(--radius-sm);font-size:15px;font-family:var(--font-sans);outline:none;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);background:var(--c-surface);color:var(--c-gray-800)}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--c-primary);box-shadow:0 0 0 4px rgba(0,113,227,0.1)}
.form-group textarea{min-height:80px;resize:vertical}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-hint{font-size:12px;color:var(--c-gray-400);margin-top:4px}

/* Form card */
.form-card{background:var(--c-surface);border:none;border-radius:var(--radius-lg);padding:24px;margin-bottom:16px;box-shadow:var(--shadow-sm)}
.form-card-title{font-size:16px;font-weight:700;color:var(--c-gray-900);margin-bottom:20px;display:flex;align-items:center;gap:10px;letter-spacing:-0.01em}

/* Dept row in new request modal */
.dept-row{background:var(--c-surface);border-left:3px solid var(--c-primary);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,0.04);position:relative;transition:box-shadow 0.2s}
.dept-row:hover{box-shadow:0 2px 8px rgba(0,0,0,0.06)}
.dept-row-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.dept-row-header span{font-size:13px;font-weight:500;color:var(--c-gray-600)}
.dept-row-remove{position:absolute;top:10px;right:10px;border:none;background:var(--c-danger-bg);color:var(--c-danger);border-radius:4px;width:24px;height:24px;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.2s,background 0.2s}
.dept-row:hover .dept-row-remove{opacity:1}
.dept-row-remove:hover{background:var(--c-danger);color:var(--c-white)}
.dept-row .form-row{gap:8px}
.dept-row textarea:focus{border-color:var(--c-primary)!important;box-shadow:0 0 0 3px rgba(43,109,233,0.1)}
.add-dept-btn{background:var(--c-primary-light);color:var(--c-primary);border:1.5px dashed var(--c-primary);border-radius:var(--radius-sm);padding:10px;font-size:13px;cursor:pointer;width:100%;text-align:center}
.add-dept-btn:hover{background:var(--c-primary);color:var(--c-white)}
.dept-assignee-group{position:relative}
.dept-assignee-selected{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;min-height:0}
.dept-assignee-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:var(--c-primary-light);color:var(--c-primary-dark);border-radius:16px;font-size:12px;font-weight:500}
.dept-assignee-tag span{cursor:pointer;font-weight:700;margin-left:2px}
.dept-assignee-input{width:100%;padding:8px 12px;border:1px solid var(--c-border,#d1d1d6);border-radius:8px;font-size:14px;font-family:inherit;background:var(--c-input-bg,#fff);color:var(--c-gray-800,#1d1d1f);box-sizing:border-box}
.dept-assignee-input:focus{outline:none;border-color:var(--c-primary,#0071E3);box-shadow:0 0 0 3px rgba(0,113,227,0.15)}
.dept-assignee-dropdown{position:absolute;left:0;right:0;top:100%;margin-top:4px;background:var(--c-surface);border:1px solid var(--c-gray-100);border-radius:var(--radius-sm);box-shadow:0 4px 12px rgba(0,0,0,0.1);z-index:10;max-height:200px;overflow-y:auto;display:none}
.dept-assignee-dropdown.open{display:block}
.dept-assignee-dropdown-item:hover{background:var(--c-gray-100)}
.dept-assignee-dropdown-item.disabled{opacity:0.5;cursor:default}

/* Value box (read-only display) */
.value-box{padding:10px 12px;background:var(--c-gray-100);border-radius:var(--radius-sm);font-size:14px;color:var(--c-gray-800)}
.value-box-success{background:var(--c-success-bg);color:var(--c-success)}
.value-box-prewrap{width:100%;box-sizing:border-box;min-width:0;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-all;max-width:100%;max-height:240px;overflow-y:auto}
.value-box-muted{color:var(--c-gray-400)}

/* Toast - glassmorphism style */
#toastContainer{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:10px}
.toast{padding:14px 24px;border-radius:var(--radius-lg);font-size:14px;font-weight:500;box-shadow:var(--shadow-md);animation:slideIn 0.4s cubic-bezier(0.4,0,0.2,1);max-width:380px;transition:opacity 0.3s;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.toast-success{background:rgba(52,199,89,0.92);color:var(--c-white)}
.toast-error{background:rgba(255,59,48,0.92);color:var(--c-white)}

/* Custom Confirm Modal */
.confirm-modal{background:var(--c-surface);border-radius:var(--radius-lg);padding:36px 32px;width:100%;max-width:400px;text-align:center;box-shadow:var(--shadow-lg);animation:confirmIn 0.4s cubic-bezier(0.4,0,0.2,1);margin:auto}
.confirm-modal-icon{width:64px;height:64px;border-radius:50%;background:var(--c-danger-bg);color:var(--c-danger);font-size:28px;display:flex;align-items:center;justify-content:center;margin:0 auto 20px}
.confirm-modal-title{font-size:20px;font-weight:700;color:var(--c-gray-900);margin-bottom:10px;letter-spacing:-0.01em}
.confirm-modal-body{font-size:14px;color:var(--c-gray-600);line-height:1.6;margin-bottom:28px;white-space:pre-line}
.confirm-modal-actions{display:flex;gap:12px;justify-content:center}
.confirm-modal-actions .btn{min-width:110px;justify-content:center;border-radius:var(--radius-sm)}

/* Button loading state */
.btn-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,0.4);border-top-color:#fff;border-radius:50%;animation:spin 0.6s linear infinite;margin-right:6px;vertical-align:middle}
.btn[data-loading="true"]{opacity:0.85;cursor:wait}

/* Handle option (accept/reject) */
.handle-option-row{display:flex;gap:12px;margin-top:12px}
.handle-option{flex:1;display:flex;align-items:center;gap:8px;padding:14px;border:2px solid var(--c-gray-200);border-radius:var(--radius-md);cursor:pointer;transition:all 0.2s}
.handle-option:hover{border-color:var(--c-primary)}
.handle-option input[type="radio"]{display:none}
.handle-option-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}
.handle-option-text{font-size:14px;font-weight:500}
.handle-option.reject .handle-option-icon{background:var(--c-danger-bg);color:var(--c-danger)}
.handle-option:not(.reject) .handle-option-icon{background:var(--c-success-bg);color:var(--c-success)}

/* Task hint */
.task-hint{font-size:14px;color:var(--c-gray-600);margin-bottom:8px}

/* Form utility classes */
.label-sm-gray{font-size:13px;color:var(--c-gray-400)}
.task-textarea-lg{width:100%;padding:10px 14px;border:1.5px solid var(--c-gray-200);border-radius:8px;font-size:14px;font-family:inherit;resize:vertical;outline:none;transition:border-color 0.2s;background:var(--c-surface);color:var(--c-gray-800)}
.task-textarea-lg:focus{border-color:var(--c-primary)}
.attachment-view-list{display:flex;flex-direction:column;gap:6px}
.attachment-view-item{padding:8px 10px;background:var(--c-gray-100);border-radius:var(--radius-sm)}
.view-task-container{display:flex;flex-direction:column;gap:12px}

/* Dark mode overrides for modal */
html[data-theme="dark"] .modal-overlay{background:rgba(0,0,0,0.6)}
html[data-theme="dark"] .modal-close{background:var(--c-gray-100);color:var(--c-gray-400)}
html[data-theme="dark"] .modal-close:hover{background:var(--c-gray-200);color:var(--c-gray-800)}
html[data-theme="dark"] .modal{background:#141416;box-shadow:0 20px 60px rgba(0,0,0,0.7)}
html[data-theme="dark"] .modal-body{background:#141416}
html[data-theme="dark"] .value-box{background:#252528}
html[data-theme="dark"] .form-group input[readonly]{background:#252528!important}
html[data-theme="dark"] .toast-success{background:rgba(48,209,88,0.92)}
html[data-theme="dark"] .toast-error{background:rgba(255,69,58,0.92)}
html[data-theme="dark"] #submitTaskModal .modal-body>p{color:#FFFFFF!important}
html[data-theme="dark"] #submitTaskModal #submitTaskName{color:#FFFFFF}
html[data-theme="dark"] #submitTaskModal #submitTaskNote{background:#252528!important;border:1px solid var(--c-gray-200)!important;border-radius:6px!important;color:#FFFFFF!important}
html[data-theme="dark"] #submitTaskModal #submitTaskNote:focus{border-color:var(--c-primary)!important;box-shadow:0 0 0 3px rgba(10,132,255,0.15)!important}
html[data-theme="dark"] #submitTaskModal #submitTaskNote::placeholder{color:var(--c-gray-400)}
html[data-theme="dark"] .detail-comment-panel{background:#1A1A1C;border-color:var(--c-gray-200)}
