.portal-form { padding: 24px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px 16px; }
.field { min-width: 0; }
.field.wide { grid-column: 1 / -1; }
.field label { display: block; margin-bottom: 8px; color: #606266; font-size: 13px; font-weight: 500; }
.required { color: #f87171; }
input[type="date"] { cursor: pointer; }
.date-picker-field { position: relative; width: 100%; cursor: pointer; }
.date-picker-field input { width: 100%; }
.date-picker-field input::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: auto; height: auto; opacity: 0; cursor: pointer; }
.upload-box { min-height: 88px; padding: 16px; display: flex; align-items: center; gap: 12px; border: 1px dashed #c0c4cc; border-radius: 4px; background: #fafafa; color: #909399; font-size: 13px; transition: border-color .2s, background .2s; }
.upload-box:hover { border-color: #2563eb; background: #f5f9ff; }
.upload-button { position: relative; overflow: hidden; display: inline-flex !important; align-items: center; justify-content: center; min-width: 92px; height: 34px; margin: 0 !important; padding: 0 16px; border: 1px solid #dcdfe6; border-radius: 4px; background: #fff; color: #606266 !important; cursor: pointer; font-size: 13px !important; font-weight: 400 !important; }
.upload-button:hover { border-color: #2563eb; color: #2563eb !important; }
.upload-button input[type="file"] { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; z-index: 1; }
.tree-select { position: relative; width: 100%; }
.tree-input { position: relative; width: 100%; height: 40px; padding: 0 40px 0 14px; display: flex; align-items: center; border: 1px solid #dcdfe6; border-radius: 4px; background: #fff; color: #303133; font-size: 14px; text-align: left; }
.tree-input::after { content: ''; position: absolute; top: 50%; right: 13px; width: 13px; height: 13px; transform: translateY(-50%); background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23606766' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat; }
.tree-input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.1); }
.tree-panel { display: none; position: absolute; z-index: 20; top: 42px; left: 0; width: 100%; max-height: 430px; overflow-y: auto; padding: 8px 10px; border: 1px solid #36b8b2; border-radius: 3px; background: #fff; box-shadow: 0 4px 12px rgba(15,23,42,.12); }
.tree-select.open .tree-panel { display: block; }
.tree-parent, .tree-leaf { display: block; width: 100%; border: 0; background: transparent; color: #111827; text-align: left; font-size: 14px; line-height: 24px; white-space: nowrap; }
.tree-parent { padding: 0 6px; font-weight: 500; }
.tree-parent b { font-size: 13px; margin-right: 4px; }
.tree-children { display: none; margin-left: 18px; border-left: 1px dotted #9ca3af; }
.tree-branch.open > .tree-children { display: block; }
.tree-leaf { padding: 0 6px 0 12px; }
.tree-leaf:hover, .tree-parent:hover { background: #eef6ff; color: #2563eb; }
.portal-form .portal-primary { grid-column: 1 / -1; justify-self: start; }
@media (max-width: 767px) {
  .portal-form { grid-template-columns: 1fr; padding: 20px 16px; }
  .field.wide { grid-column: auto; }
}