/* 海关满意度调研系统 */
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:"PingFang SC","Microsoft YaHei",-apple-system,Segoe UI,sans-serif;background:#F5F7FB;color:#2A2E3A;line-height:1.7}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
nav{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.04);padding:14px 0;position:sticky;top:0;z-index:50}
.nv{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}
.logo{font-size:1.15rem;font-weight:700;color:#0F2A52;display:flex;align-items:center;gap:10px}
.logo .ic{width:32px;height:32px;background:linear-gradient(135deg,#1B4F8B,#2E78D2);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.9rem}
.nav-r{display:flex;gap:18px;align-items:center}
.nav-r a{color:#5A6478;text-decoration:none;font-size:.9rem}
.nav-r a:hover{color:#1B4F8B}
.btn{display:inline-block;padding:8px 18px;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;border:none;text-decoration:none;transition:.2s}
.btn-primary{background:#1B4F8B;color:#fff}
.btn-primary:hover{background:#143A6B}
.btn-default{background:#fff;color:#1B4F8B;border:1px solid #C9D6E5}
.btn-default:hover{background:#F2F6FB}
.btn-danger{background:#fff;color:#C7372F;border:1px solid #FAC6C2}
.btn-sm{padding:5px 12px;font-size:.82rem}
.btn-lg{padding:14px 36px;font-size:1rem}

/* 登录页 */
.login-box{width:min(420px,92vw);margin:80px auto 0;background:#fff;border-radius:14px;box-shadow:0 20px 60px rgba(15,42,82,.12);padding:40px}
.login-box h1{font-size:1.4rem;text-align:center;margin-bottom:8px;color:#0F2A52}
.login-box .sub{text-align:center;color:#8C95A8;font-size:.85rem;margin-bottom:30px}
.form-group{margin-bottom:18px}
.form-group label{display:block;color:#4A5266;font-size:.85rem;margin-bottom:6px;font-weight:500}
.form-group input{width:100%;padding:12px 14px;border:1.5px solid #DCE2EC;border-radius:7px;font-size:.95rem;transition:.2s}
.form-group input:focus{outline:none;border-color:#1B4F8B;box-shadow:0 0 0 3px rgba(27,79,139,.1)}
.alert{padding:10px 14px;border-radius:6px;margin-bottom:16px;font-size:.85rem}
.alert-error{background:#FEE;color:#8B2020;border:1px solid #FAC6C2}
.alert-ok{background:#E8F7F0;color:#1E6B3B;border:1px solid #B7E2C7}
.alert-info{background:#E5F0FA;color:#1B4F8B;border:1px solid #B8D2ED}

/* 项目列表 */
.group{margin-top:24px}
.group-h{display:flex;align-items:center;gap:10px;padding:0 0 12px;border-bottom:2px solid #1B4F8B;margin-bottom:16px}
.group-h h2{font-size:1.05rem;color:#0F2A52}
.group-h .badge{background:#1B4F8B;color:#fff;font-size:.72rem;padding:2px 10px;border-radius:10px;font-weight:600}
.group-h .badge-g{background:#E5F0FA;color:#1B4F8B}
.group-h .badge-y{background:#FFF4D6;color:#A07000}

.proj-list{display:grid;grid-template-columns:1fr;gap:10px}
.proj-row{background:#fff;border-radius:9px;padding:14px 18px;display:flex;align-items:center;gap:14px;box-shadow:0 1px 2px rgba(0,0,0,.03);border:1px solid #ECEEF4}
.proj-row.disabled{opacity:.55;background:#FAFAFB}
.proj-row .nm{font-size:.95rem;font-weight:600;color:#1A1F2C;flex:1;line-height:1.5}
.proj-row .nm .unit{display:block;font-size:.76rem;font-weight:500;color:#8C95A8;margin-top:2px;letter-spacing:.5px}
.proj-row .nm .ct{font-size:.7rem;color:#1B4F8B;background:#E5F0FA;padding:1px 6px;border-radius:3px;margin-left:6px;font-weight:500}
.proj-row .nm .ct-hw{font-size:.7rem;color:#A07000;background:#FFF4D6;padding:1px 6px;border-radius:3px;margin-left:6px;font-weight:500}
.rate-btn{background:linear-gradient(135deg,#1B4F8B,#2E78D2);color:#fff;padding:9px 20px;border-radius:7px;border:none;font-weight:600;cursor:pointer;font-size:.86rem}
.rate-btn:hover{filter:brightness(1.1)}
.rate-btn.done{background:#E5F0FA;color:#1B4F8B;cursor:default}
.rate-btn .r{font-size:.7rem;opacity:.85;margin-left:4px}
.status-tag{font-size:.7rem;padding:2px 8px;border-radius:3px;font-weight:600}
.status-tag.done{background:#E8F7F0;color:#1E6B3B}
.status-tag.pend{background:#FFF4D6;color:#A07000}
.help-box{background:#E5F0FA;border-left:4px solid #1B4F8B;padding:12px 18px;border-radius:6px;margin:20px 0;color:#1A3F6B;font-size:.88rem;line-height:1.8}
.help-box b{color:#0F2A52}

/* 评分页 */
.rate-card{background:#fff;border-radius:12px;padding:28px 32px;box-shadow:0 4px 18px rgba(15,42,82,.06);margin-top:24px}
.rate-card h2{font-size:1.2rem;color:#0F2A52;margin-bottom:6px;line-height:1.5}
.rate-card .meta{color:#8C95A8;font-size:.85rem;margin-bottom:22px}
.dim-list{display:flex;flex-direction:column;gap:18px;margin:18px 0}
.dim{display:flex;align-items:center;gap:14px;padding:14px 16px;background:#FAFBFE;border-radius:8px;border:1px solid #ECEEF4}
.dim .q{flex:1;font-weight:600;color:#2A2E3A;font-size:.94rem}
.dim .q small{display:block;font-weight:400;color:#8C95A8;font-size:.78rem;margin-top:2px}
.stars{display:flex;gap:6px;flex-direction:row-reverse;justify-content:flex-end}
.stars input{display:none}
.stars label{font-size:1.7rem;color:#D5DBE5;cursor:pointer;transition:.15s;line-height:1}
.stars label:hover,.stars label:hover~label,.stars input:checked~label{color:#F5A623}
.comment{width:100%;min-height:80px;padding:10px 14px;border:1.5px solid #DCE2EC;border-radius:7px;font-size:.9rem;resize:vertical;font-family:inherit;margin-top:6px}
.submit-row{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.alert-line{padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:.88rem;display:none}
.alert-line.show{display:block}

/* 历史评分 */
.history{margin-top:30px;background:#fff;border-radius:12px;padding:22px 28px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.history h3{font-size:1rem;color:#0F2A52;margin-bottom:12px}
.history table{width:100%;border-collapse:collapse;font-size:.86rem}
.history th{background:#F5F7FB;color:#5A6478;font-weight:600;padding:9px 10px;text-align:left}
.history td{padding:9px 10px;border-top:1px solid #ECEEF4}
.history .avg{font-weight:700;color:#1B4F8B}

/* 后台 */
.admin-nav{background:#0F2A52;color:#fff;padding:12px 0}
.admin-nav a{color:rgba(255,255,255,.8);text-decoration:none;margin-right:18px;font-size:.9rem}
.admin-nav a:hover,.admin-nav a.on{color:#fff}
.admin-nav .u{color:rgba(255,255,255,.6);font-size:.85rem;margin-left:auto}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin:18px 0}
.stat-card{background:#fff;border-radius:10px;padding:18px 22px;box-shadow:0 1px 3px rgba(0,0,0,.04);border-left:4px solid #1B4F8B}
.stat-card .l{font-size:.78rem;color:#8C95A8;letter-spacing:1px}
.stat-card .v{font-size:1.8rem;font-weight:700;color:#0F2A52;margin-top:4px}
.stat-card .sub{font-size:.78rem;color:#8C95A8;margin-top:4px}
.overall{background:linear-gradient(135deg,#1B4F8B,#2E78D2);color:#fff;padding:32px 40px;border-radius:14px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;box-shadow:0 10px 30px rgba(27,79,139,.2)}
.overall h2{font-size:1.1rem;font-weight:500;opacity:.9;margin-bottom:6px}
.overall .score{font-size:3.4rem;font-weight:800;line-height:1}
.overall .score small{font-size:1.3rem;opacity:.85;font-weight:500}
.overall .hint{font-size:.85rem;opacity:.85;line-height:1.6;max-width:420px;text-align:right}
table.admin{width:100%;background:#fff;border-collapse:collapse;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.04);font-size:.88rem}
table.admin th{background:#0F2A52;color:#fff;font-weight:600;padding:11px 12px;text-align:left;letter-spacing:.5px;font-size:.82rem}
table.admin td{padding:10px 12px;border-top:1px solid #ECEEF4}
table.admin tr:hover td{background:#FAFBFE}
table.admin .num{color:#5A6478;font-size:.82rem}
.score-bar{display:inline-block;padding:2px 10px;border-radius:10px;font-weight:700;font-size:.82rem}
.score-bar.s5{background:#E8F7F0;color:#1E6B3B}
.score-bar.s4{background:#E5F0FA;color:#1B4F8B}
.score-bar.s3{background:#FFF4D6;color:#A07000}
.score-bar.s2{background:#FFEAE5;color:#C7372F}
.score-bar.s1{background:#FFE0DE;color:#8B2020}
.dim-bar{margin-top:24px;background:#fff;border-radius:10px;padding:20px 24px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.dim-bar h3{font-size:.95rem;color:#0F2A52;margin-bottom:14px}
.dim-bar .row{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.dim-bar .lbl{flex:0 0 90px;color:#2A2E3A;font-size:.86rem}
.dim-bar .track{flex:1;height:18px;background:#F2F4F8;border-radius:9px;position:relative;overflow:hidden}
.dim-bar .fill{height:100%;background:linear-gradient(90deg,#4CAF50,#1B4F8B);border-radius:9px;transition:width .4s}
.dim-bar .num{flex:0 0 60px;text-align:right;font-weight:700;color:#0F2A52}
.toolbar{background:#fff;padding:14px 18px;border-radius:8px;margin-bottom:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.toolbar input,.toolbar select{padding:7px 12px;border:1px solid #DCE2EC;border-radius:6px;font-size:.85rem}
.toolbar input{min-width:200px}
.tag{display:inline-block;background:#E5F0FA;color:#1B4F8B;font-size:.72rem;padding:2px 8px;border-radius:4px;font-weight:600;margin-right:4px}
.tag-hw{background:#FFF4D6;color:#A07000}
.empty{padding:48px 20px;text-align:center;color:#8C95A8;font-size:.92rem}

/* ===== 后台仪表盘（新版） ===== */
.dash{max-width:1180px;padding:28px 24px 48px}
.hero{background:linear-gradient(135deg,#0F2A52,#1B4F8B 55%,#2E78D2);border-radius:18px;padding:32px 36px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px;box-shadow:0 16px 40px rgba(15,42,82,.22);color:#fff;margin-bottom:22px}
.hero-label{font-size:.95rem;opacity:.85;font-weight:500;margin-bottom:6px}
.hero-score{font-size:3.6rem;font-weight:800;line-height:1}
.hero-score small{font-size:1.4rem;opacity:.8;font-weight:500}
.hero-sub{font-size:.85rem;opacity:.9;margin-top:12px;line-height:1.6}
.pill{display:inline-block;padding:3px 12px;border-radius:12px;font-weight:600;font-size:.8rem;margin-left:6px}
.pill-ok{background:rgba(232,247,240,.95);color:#1E6B3B}
.pill-warn{background:rgba(255,244,214,.95);color:#A07000}
.hero-split{display:flex;gap:14px;flex-wrap:wrap}
.split-card{background:rgba(255,255,255,.12);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.22);border-radius:14px;padding:16px 22px;min-width:140px;text-align:center}
.split-card .split-l{font-size:.8rem;opacity:.85}
.split-card .split-v{font-size:2rem;font-weight:800;margin:4px 0}
.split-card .split-s{font-size:.74rem;opacity:.8}
.split-card.hard{background:rgba(255,196,87,.18);border-color:rgba(255,196,87,.4)}
.split-card.soft{background:rgba(120,180,255,.18);border-color:rgba(120,180,255,.4)}
.split-pill{display:inline-block;margin-top:8px;padding:2px 10px;border-radius:10px;font-size:.76rem;font-weight:700;line-height:1.4}
.split-pill.ok{background:rgba(232,247,240,.96);color:#1E6B3B}
.split-pill.warn{background:rgba(255,244,214,.96);color:#A07000}
.split-pill.na{background:rgba(255,255,255,.16);color:rgba(255,255,255,.85)}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:26px}
.stat-card{background:#fff;border-radius:12px;padding:18px 22px;box-shadow:0 2px 8px rgba(15,42,82,.06);border-left:5px solid #1B4F8B;position:relative;overflow:hidden}
.stat-card::after{content:"";position:absolute;right:-20px;top:-20px;width:70px;height:70px;border-radius:50%;background:currentColor;opacity:.06}
.stat-card .l{font-size:.78rem;color:#8C95A8;letter-spacing:1px}
.stat-card .v{font-size:2rem;font-weight:800;color:#0F2A52;margin-top:6px;line-height:1}
.stat-card .sub{font-size:.76rem;color:#8C95A8;margin-top:6px}
.c-blue{border-left-color:#2E78D2;color:#2E78D2}
.c-green{border-left-color:#1E6B3B;color:#1E6B3B}
.c-amber{border-left-color:#A07000;color:#A07000}
.c-indigo{border-left-color:#5B5BD6;color:#5B5BD6}
.c-purple{border-left-color:#9C27B0;color:#9C27B0}

.dim-sec{background:#fff;border-radius:14px;padding:22px 26px;box-shadow:0 2px 8px rgba(15,42,82,.05);margin-bottom:20px;border-top:4px solid #1B4F8B}
.sec-soft{border-top-color:#2E78D2}
.sec-hard{border-top-color:#A07000}
.sec-head{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.sec-head h3{font-size:1.02rem;color:#0F2A52;font-weight:700}
.sec-dot{width:10px;height:10px;border-radius:50%;background:#2E78D2}
.sec-hard .sec-dot{background:#A07000}
.sec-tag{margin-left:auto;font-size:.85rem;font-weight:700;color:#0F2A52;background:#F2F4F8;padding:3px 12px;border-radius:12px}
.bar-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 36px}
.bar-row{display:flex;align-items:center;gap:12px}
.bar-lbl{flex:0 0 150px;color:#2A2E3A;font-size:.86rem;display:flex;align-items:center;gap:7px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bar-idx{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:5px;background:#E5F0FA;color:#1B4F8B;font-size:.7rem;font-weight:700;flex:none}
.bar-track{flex:1;height:16px;background:#F2F4F8;border-radius:8px;overflow:hidden}
.bar-fill{height:100%;border-radius:8px;transition:width .5s}
.fill-soft{background:linear-gradient(90deg,#4CAF50,#2E78D2)}
.fill-hard{background:linear-gradient(90deg,#F5A623,#A07000)}
.bar-num{flex:0 0 64px;text-align:right;font-weight:800;color:#0F2A52;font-size:.95rem}
.bar-num small{font-weight:500;color:#8C95A8;font-size:.72rem;margin-left:2px}

.rank-sec{margin-top:28px}
.rank-h{color:#0F2A52;font-size:1.05rem;margin-bottom:14px;font-weight:700}
.hist-scroll{overflow-x:auto;border-radius:8px}
.hist-scroll table{min-width:760px}

/* 编辑弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(15,42,82,.45);display:none;align-items:center;justify-content:center;z-index:200}
.modal{background:#fff;border-radius:12px;padding:24px 28px;width:min(440px,92vw);box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal h3{color:#0F2A52;margin-bottom:16px;font-size:1.05rem}
.modal .fld{margin-bottom:12px}
.modal .fld label{display:block;font-size:.8rem;color:#5A6478;margin-bottom:4px}
.modal .fld input,.modal .fld select{width:100%;padding:9px 11px;border:1px solid #DCE2EC;border-radius:6px;font-size:.9rem;font-family:inherit}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}

@media(max-width:760px){.login-box{margin-top:30px;padding:28px}.proj-row{flex-wrap:wrap}.proj-row .nm{flex:1 1 100%}.overall{flex-direction:column;align-items:flex-start}.overall .hint{text-align:left}.bar-grid{grid-template-columns:1fr}.hero{flex-direction:column;align-items:flex-start}.hero-split{width:100%}}
