/* ===== 基础重置 ===== */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;font-size:14px;color:#2c3e50;background:#f5f7fa}
a{color:#1e88e5;text-decoration:none}
a:hover{color:#1565c0}
img{max-width:100%}
button{font-family:inherit;cursor:pointer}
code{background:#f0f0f0;padding:1px 6px;border-radius:3px;font-size:12px}

/* ===== 颜色变量 ===== */
:root{
  --primary:#1e88e5;
  --primary-dark:#1565c0;
  --success:#43a047;
  --warning:#fb8c00;
  --danger:#e53935;
  --info:#0288d1;
  --gray:#6c757d;
  --border:#e1e4e8;
  --bg:#f5f7fa;
  --card-bg:#fff;
  --text:#2c3e50;
  --text-light:#6c757d;
  --radius:6px;
  --shadow:0 2px 6px rgba(0,0,0,.06);
}

/* ===== 布局 ===== */
.layout{display:flex;flex-direction:column;min-height:100vh}
.layout-header{display:flex;align-items:center;background:#fff;border-bottom:1px solid var(--border);padding:0 24px;height:60px;box-shadow:0 1px 3px rgba(0,0,0,.04);position:sticky;top:0;z-index:100}
.layout-header .brand{font-size:18px;font-weight:600;color:var(--primary);margin-right:32px}
.layout-header .brand a{color:var(--primary)}
.layout-header .nav{display:flex;gap:4px;flex:1}
.layout-header .nav a{padding:8px 14px;border-radius:var(--radius);color:#555;font-size:14px;transition:all .2s}
.layout-header .nav a:hover{background:#f0f5fb;color:var(--primary)}
.layout-header .nav a.on{background:var(--primary);color:#fff}
.layout-header .nav a.primary{background:var(--primary);color:#fff}
.layout-header .nav a.primary:hover{background:var(--primary-dark);color:#fff}
.layout-header .user-area{display:flex;align-items:center;gap:16px;font-size:14px}
.layout-header .user-area .bell{position:relative;font-size:18px}
.layout-header .user-area .bell .badge{position:absolute;top:-6px;right:-10px;background:var(--danger);color:#fff;font-size:10px;padding:1px 5px;border-radius:8px;line-height:1.2}
.layout-header .user-info em{color:var(--text-light);font-style:normal;margin-left:4px;font-size:12px}
.layout-header .logout{padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius);color:#555;font-size:13px}
.layout-header .logout:hover{border-color:var(--danger);color:var(--danger)}

.layout-main{flex:1;padding:20px 24px;max-width:1400px;margin:0 auto;width:100%}
.layout-footer{text-align:center;padding:16px;color:var(--text-light);font-size:12px;border-top:1px solid var(--border);background:#fff}

/* ===== 卡片 ===== */
.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:16px}
.card-title{font-size:16px;font-weight:600;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}
.card-title small{font-weight:400;color:var(--text-light);font-size:13px;margin-left:8px}

/* ===== Flash 提示 ===== */
.flash{padding:10px 16px;border-radius:var(--radius);margin-bottom:16px;border:1px solid;font-size:14px}
.flash-success{background:#e8f5e9;color:#2e7d32;border-color:#a5d6a7}
.flash-error{background:#ffebee;color:#c62828;border-color:#ef9a9a}
.flash-info{background:#e3f2fd;color:#1565c0;border-color:#90caf9}
.flash-warning{background:#fff3e0;color:#e65100;border-color:#ffcc80}

/* ===== 统计卡片 ===== */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}
.stat-card{background:#fff;padding:18px 20px;border-radius:var(--radius);box-shadow:var(--shadow);border-left:4px solid var(--primary)}
.stat-card.success{border-left-color:var(--success)}
.stat-card.warning{border-left-color:var(--warning)}
.stat-card.danger{border-left-color:var(--danger)}
.stat-card .num{font-size:28px;font-weight:600;line-height:1.2;color:var(--text)}
.stat-card .label{color:var(--text-light);font-size:13px;margin-top:6px}

/* ===== 表格 ===== */
.table{width:100%;border-collapse:collapse;background:#fff}
.table th,.table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);font-size:13px}
.table th{background:#fafbfc;font-weight:600;color:var(--text-light);font-size:12px}
.table tbody tr:hover{background:#f8fbff}
.table .actions a,.table .actions button{margin-right:6px;font-size:12px}

/* ===== 状态标签 ===== */
.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;line-height:1.5;font-weight:500}
.tag-pending{background:#fff3e0;color:#e65100}
.tag-assigned{background:#e3f2fd;color:#1565c0}
.tag-accepted{background:#e8eaf6;color:#283593}
.tag-arrived{background:#e0f7fa;color:#00695c}
.tag-processing{background:#f3e5f5;color:#6a1b9a}
.tag-completed{background:#e8f5e9;color:#2e7d32}
.tag-confirmed{background:#c8e6c9;color:#1b5e20}
.tag-closed{background:#cfd8dc;color:#37474f}
.tag-cancelled{background:#ffebee;color:#c62828}
.tag-priority-1{background:var(--danger);color:#fff}
.tag-priority-2{background:var(--warning);color:#fff}
.tag-priority-3{background:var(--info);color:#fff}
.tag-priority-4{background:var(--gray);color:#fff}

/* ===== 表单 ===== */
.form-row{margin-bottom:14px}
.form-row label{display:block;margin-bottom:6px;font-size:13px;color:#555}
.form-row input,.form-row select,.form-row textarea{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;transition:border .2s}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(30,136,229,.12)}
.form-row textarea{min-height:90px;resize:vertical}
.form-row.form-code{display:flex;align-items:center;gap:8px}
.form-row.form-code label{width:60px;margin:0;height:38px;line-height:38px;font-size:13px;color:#555}
.form-row.form-code input{flex:1;height:38px;padding:8px 12px}
.form-row.form-code img{height:38px;flex-shrink:0;cursor:pointer;border:1px solid var(--border);border-radius:var(--radius)}
.form-row.inline{display:inline-block;margin-right:14px;min-width:180px}
.form-row.inline label{display:inline-block;margin-right:6px;margin-bottom:0}
.form-row.inline input,.form-row.inline select{width:auto;min-width:160px}

/* ===== 登录页专用：label/input 一条水平线 ===== */
.auth-form .form-row{display:grid;grid-template-columns:60px 1fr;gap:10px;align-items:center;margin-bottom:14px}
.auth-form .form-row label{display:block;margin:0;height:38px;line-height:38px;font-size:13px;color:#555}
.auth-form .form-row input,.auth-form .form-row select,.auth-form .form-row textarea{width:100%;max-width:220px;height:38px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;margin:0;display:block}
.auth-form .form-row.form-code{display:grid;grid-template-columns:60px 1fr;gap:10px;align-items:center}
.auth-form .form-row.form-code .input-group{display:flex;gap:8px;align-items:center;max-width:220px}
.auth-form .form-row.form-code input{flex:1;max-width:none}
.auth-form .form-row.form-code img{height:30px;width:80px;flex-shrink:0;cursor:pointer;border:1px solid var(--border);border-radius:var(--radius)}
.form-row.inline{display:inline-block;margin-right:14px;min-width:180px}
.form-row.inline label{display:inline-block;margin-right:6px;margin-bottom:0}
.form-row.inline input,.form-row.inline select{width:auto;min-width:160px}

.btn{display:inline-block;padding:8px 18px;border-radius:var(--radius);font-size:14px;line-height:1.4;border:1px solid var(--border);background:#fff;color:#555;cursor:pointer;transition:all .2s}
.btn:hover{border-color:var(--primary);color:var(--primary)}
.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark);color:#fff}
.btn-success{background:var(--success);color:#fff;border-color:var(--success)}
.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}
.btn-warning{background:var(--warning);color:#fff;border-color:var(--warning)}
.btn-sm{padding:4px 10px;font-size:12px}
.btn-block{display:block;width:100%;padding:12px}

/* ===== 登录页 ===== */
.layout-guest{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);padding:20px}
.auth-box{width:100%;max-width:360px;background:#fff;border-radius:12px;box-shadow:0 20px 50px rgba(0,0,0,.2);overflow:hidden}
.auth-header{padding:32px 32px 16px;text-align:center}
.auth-header h1{font-size:22px;color:var(--primary);margin-bottom:6px;display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1}
.auth-header h1 .auth-logo{display:inline-flex;align-items:center;justify-content:center;color:var(--primary);width:24px;height:24px;flex-shrink:0}
.auth-header h1 .auth-logo svg{width:24px;height:24px;display:block}
.auth-header p{color:var(--text-light);font-size:13px}
.auth-body{padding:24px 32px 32px}
.auth-form .form-row label{font-size:13px}
.auth-form .btn-block{margin-top:20px;font-size:15px;padding:12px}
.form-tips{margin-top:16px;padding-top:14px;border-top:1px dashed var(--border);font-size:12px;color:var(--text-light);line-height:1.8}
.form-tips-title{margin-bottom:8px;color:#888}
.form-tips-title small{color:#aaa;font-weight:normal}
.form-tips-grid{display:flex;flex-wrap:wrap;gap:6px 12px}
.form-tips-item{display:inline-flex;align-items:center;gap:6px;font-size:12px}
.form-tips-item span{color:#888}
.form-tips-item code{background:#f0f4f8;color:#1976d2;padding:2px 8px;border-radius:3px;font-size:12px;font-family:Consolas,Monaco,monospace}

/* ===== 报修提交页 ===== */
.create-form .ai-preview{margin:10px 0;padding:10px 12px;background:#e3f2fd;border-radius:var(--radius);font-size:13px;color:#1565c0;display:none}
.create-form .ai-preview.show{display:block}
.create-form .ai-preview b{color:var(--primary)}
.suggestion-list{margin-top:6px;padding-left:0;list-style:none}
.suggestion-list li{background:#fff;border:1px solid #bbdefb;border-radius:4px;padding:6px 10px;margin-bottom:4px;font-size:12px}

/* ===== 工单详情 ===== */
.order-detail{display:grid;grid-template-columns:2fr 1fr;gap:16px}
@media (max-width:900px){.order-detail{grid-template-columns:1fr}}
.timeline{position:relative;padding-left:24px}
.timeline::before{content:'';position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--border)}
.timeline-item{position:relative;padding-bottom:16px}
.timeline-item::before{content:'';position:absolute;left:-22px;top:6px;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--primary)}
.timeline-item .time{font-size:12px;color:var(--text-light)}
.timeline-item .who{font-size:13px;font-weight:600;margin:2px 0}
.timeline-item .content{font-size:13px;color:#555;background:#fafbfc;padding:8px 12px;border-radius:4px;margin-top:4px}
.timeline-item .imgs{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.timeline-item .imgs img{width:80px;height:80px;object-fit:cover;border-radius:4px;cursor:pointer}

.info-list{list-style:none;padding:0}
.info-list li{padding:6px 0;border-bottom:1px dashed var(--border);font-size:13px;display:flex}
.info-list li:last-child{border-bottom:0}
.info-list li .label{color:var(--text-light);width:80px;flex-shrink:0}
.info-list li .value{color:var(--text);flex:1;word-break:break-all}

/* ===== 工具类 ===== */
.mt-0{margin-top:0!important}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}
.mb-0{margin-bottom:0!important}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}
.text-muted{color:var(--text-light)}
.text-center{text-align:center}
.text-right{text-align:right}
.flex{display:flex;gap:8px;align-items:center}
.flex-between{display:flex;justify-content:space-between;align-items:center}
.empty{padding:40px 20px;text-align:center;color:var(--text-light);font-size:14px}

/* ===== 评价星级 ===== */
.stars{display:inline-flex;gap:2px;cursor:pointer;font-size:20px;color:#ddd}
.stars .star.on{color:#fb8c00}

/* ===== 上传 ===== */
.uploader{border:1px dashed var(--border);padding:20px;border-radius:var(--radius);text-align:center;color:var(--text-light);background:#fafbfc}
.uploader:hover{border-color:var(--primary);color:var(--primary)}
.uploader input[type=file]{display:none}
.uploader-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.uploader-list .item{position:relative;width:80px;height:80px;border-radius:4px;overflow:hidden;border:1px solid var(--border)}
.uploader-list .item img{width:100%;height:100%;object-fit:cover}
.uploader-list .item .del{position:absolute;top:2px;right:2px;background:rgba(0,0,0,.6);color:#fff;width:18px;height:18px;border-radius:50%;line-height:18px;text-align:center;font-size:12px;cursor:pointer}

/* ===== 响应式 ===== */
@media (max-width:768px){
  .layout-header{padding:0 12px;flex-wrap:wrap;height:auto}
  .layout-header .nav{order:3;width:100%;overflow-x:auto;padding:8px 0}
  .layout-main{padding:12px}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .order-detail{grid-template-columns:1fr}
  .table{font-size:12px}
  .table th,.table td{padding:8px 6px}
}
