.project-form{display:block!important;padding:34px;width:min(560px,90vw)}
.project-form h2{margin:10px 0 22px}
.project-form label{display:block;font-size:13px;font-weight:700;margin:14px 0}
.project-form input,.project-form select{display:block;width:100%;margin-top:7px;border:1px solid #d8dee8;border-radius:10px;padding:12px;background:#fff}
.status-pending_approval{background:#fff3dc;color:#b76708}
.row-actions{display:flex;align-items:center;gap:10px;white-space:nowrap}.delete-link{color:#c43b32}
.disabled{color:#9aa2ae;font-size:12px}
.batch-bar{display:flex;align-items:center;gap:18px;margin:16px 0;padding:13px 16px;background:#fff;border:1px solid #e5e9f0;border-radius:14px;box-shadow:0 5px 18px rgba(18,44,82,.04)}
.select-all{display:flex;align-items:center;gap:8px;font-weight:700;white-space:nowrap}.select-all input,.row-check{width:18px;height:18px;accent-color:#082e72}.batch-bar>span{color:#647084;white-space:nowrap}.batch-actions{display:flex;gap:10px;margin-left:auto}.batch-actions button{min-height:40px;padding:0 16px}.batch-actions button:disabled{opacity:.42;cursor:not-allowed}
.photo-list-wrap{overflow:auto}.photo-list{min-width:980px}.photo-list th,.photo-list td{vertical-align:middle}.photo-list .check-column{width:42px;text-align:center}.photo-list td:nth-child(2){width:96px}.photo-list td:nth-child(3){min-width:210px}.photo-list td:nth-child(5){min-width:210px}.photo-list small{display:block;margin-top:5px;color:#778195;line-height:1.55}.photo-list small strong{color:#163b78;font-weight:700}.list-thumb{display:block;width:72px;height:54px;border:0;border-radius:9px;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35);background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important}
.list-thumb.warm{background:linear-gradient(145deg,#cfa76e,#4a3629)}.list-thumb.blue{background:linear-gradient(145deg,#dbe7ef,#5f7a8d)}.list-thumb.gray{background:linear-gradient(145deg,#d8d5d0,#6f6a65)}.list-thumb.night{background:linear-gradient(145deg,#45536b,#101827)}.list-thumb.wood{background:linear-gradient(145deg,#d5b68a,#755333)}.list-thumb.light{background:linear-gradient(145deg,#eee9df,#b8a990)}
.empty-cell{text-align:center!important;color:#7d8798;padding:50px!important}.dialog-hint{color:#647084}.project-form textarea{display:block;width:100%;min-height:110px;margin-top:7px;border:1px solid #d8dee8;border-radius:10px;padding:12px;resize:vertical}
@media(max-width:760px){.batch-bar{align-items:flex-start;flex-wrap:wrap}.batch-actions{width:100%;margin-left:0;overflow:auto}.batch-actions button{white-space:nowrap}}
.dialog-visual{background-size:contain!important;background-position:center!important;background-repeat:no-repeat!important;background-color:#111827!important}

/* v3 管理后台视觉与排版优化 */
:root{--sidebar-width:252px;--surface:#fff;--surface-soft:#f7f9fc;--brand:#092d6f;--brand-deep:#061c43;--brand-light:#eaf1fb;--shadow:0 12px 34px rgba(24,53,94,.08)}
body{background:#f3f6fa;letter-spacing:.01em}
.login-page{grid-template-columns:minmax(420px,1.12fr) minmax(420px,.88fr);background:#f5f7fb}
.login-brand{min-height:100vh;padding:72px 7vw;justify-content:center;align-items:flex-start;flex-direction:column;gap:22px;background:radial-gradient(circle at 20% 18%,#174f9d 0,#0a316f 32%,#061c43 76%);color:#fff}
.login-brand:after{content:"";width:min(420px,75%);height:1px;background:linear-gradient(90deg,#e33e2d,transparent);margin-top:8px}
.login-brand img{width:min(420px,80%);height:auto;max-height:none;object-fit:contain;object-position:left center}
.login-brand span{border:0;padding:0;margin:8px 0 0;font-size:28px;letter-spacing:.08em}
.login-brand small{font-size:14px;color:#b9cae5;font-weight:500;letter-spacing:.05em}
.login-card{width:min(460px,82%);padding:48px;border:0;border-radius:22px;box-shadow:0 24px 70px rgba(19,43,78,.12)}
.login-card h1{font-size:32px;letter-spacing:-.02em}.login-card>p{line-height:1.7}.login-card label{margin-top:20px}.login-card input{height:50px;border-color:#dfe5ee}.login-card button{height:50px;margin-top:16px}
.sidebar{width:var(--sidebar-width);padding:25px 18px;background:linear-gradient(180deg,#061c43 0,#08285e 62%,#061a3d 100%);box-shadow:10px 0 30px rgba(9,32,70,.08)}
.logo{height:86px;padding:4px 8px 27px;display:block;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:18px}
.logo img{display:block;width:168px;height:62px;object-fit:contain;object-position:left center;filter:none}
.logo span{display:none}
.sidebar nav{gap:8px}.sidebar nav button{min-height:48px;padding:13px 15px;border-radius:12px;font-size:14px;transition:.18s ease}.sidebar nav button:hover{background:rgba(255,255,255,.08);color:#fff;transform:translateX(2px)}.sidebar nav button.active{background:linear-gradient(100deg,rgba(255,255,255,.18),rgba(255,255,255,.09));box-shadow:inset 3px 0 #fff}.sidebar nav button i{display:grid;place-items:center;width:25px;font-size:18px}
.sidebar-foot{padding:20px 10px 7px}.sidebar-foot b{font-size:13px}.sidebar-foot small{line-height:1.5}
main{margin-left:var(--sidebar-width)}
header{height:82px;padding:0 34px;border-bottom:1px solid #e8edf4;box-shadow:0 4px 20px rgba(16,46,87,.025)}header h2{font-size:19px}header span{color:#8a96a8}.admin{padding-left:22px;border-left:1px solid #e8edf4}.admin>span{width:40px;height:40px;background:var(--brand-light)}.admin button{padding:9px 12px;border-radius:9px}.admin button:hover{background:#f0f3f7;color:#24364d}
.page{padding:30px 34px 42px;max-width:1540px}
.welcome{min-height:176px;padding:31px 36px;border-radius:20px;background:linear-gradient(115deg,#092d6f 0,#124b91 72%,#1b5ca6 100%);position:relative;overflow:hidden;box-shadow:0 18px 42px rgba(9,45,111,.2)}
.welcome:after{content:"";position:absolute;width:310px;height:310px;border:56px solid rgba(255,255,255,.055);border-radius:50%;right:-70px;top:-130px}.welcome>div,.welcome>button{position:relative;z-index:1}.welcome h1{font-size:29px;margin:10px 0 12px}.welcome p{font-size:14px}.welcome .primary{min-width:132px;height:45px;box-shadow:0 10px 26px rgba(0,0,0,.12)}
.metrics{gap:16px;margin:18px 0}.metric{min-height:118px;padding:21px 22px;border:0;border-radius:16px;box-shadow:var(--shadow);align-items:center}.metric b{font-size:30px;line-height:1}.metric i{width:46px;height:46px;border-radius:14px;background:#edf3fc}.metric small{margin-top:7px}
.dashboard-grid{gap:18px}.panel,.table-wrap{border:0;border-radius:17px;box-shadow:var(--shadow)}.panel-head{padding:21px 23px}.panel-head h3{font-size:17px}.project-row,.review-row{padding:17px 23px}.project-row:hover,.review-row:hover{background:#fafbfd}
.toolbar{align-items:center;margin-bottom:20px}.toolbar h1{font-size:27px;letter-spacing:-.02em}.toolbar p{margin-top:7px}.primary,.secondary,.danger{min-height:42px}.toolbar .primary{padding-inline:20px}
.filters{padding:14px;background:#fff;border-radius:14px;box-shadow:0 8px 24px rgba(24,53,94,.055);gap:12px}.filters input,.filters select{height:43px;background:#fafbfd}.filters input{flex:1;max-width:520px}.filters select{width:175px}
.table-wrap{overflow:hidden;background:#fff}th{height:50px;padding:15px 20px;background:#f7f9fc;color:#687589;font-weight:700;letter-spacing:.04em}td{padding:17px 20px}tbody tr{transition:.16s ease}tbody tr:hover{background:#fafcff}.progress{min-width:126px}.row-actions{gap:12px}.table-link{font-weight:700}.delete-link{padding-left:12px;border-left:1px solid #e5eaf1!important}
.filter-tabs{gap:8px;padding:5px;background:#e9eef5;border-radius:12px;width:max-content}.filter-tabs button{min-width:72px;background:transparent}.filter-tabs button.active{box-shadow:0 5px 14px rgba(8,42,103,.18)}
.batch-bar{margin:15px 0 16px;padding:14px 18px;border:0;box-shadow:var(--shadow)}.batch-actions button{border-radius:9px}.photo-list-wrap{border-radius:16px}.list-thumb{width:78px;height:58px;border-radius:10px;box-shadow:0 5px 13px rgba(20,44,76,.15)}
.photo-project-filter{align-items:center}.photo-project-filter select{min-width:360px}.filter-hint{color:#65738a;font-size:13px}@media(max-width:700px){.photo-project-filter select{min-width:100%}.filter-hint{line-height:1.5}}
.review-task-summary{margin:16px 0;background:#fff;border:1px solid #e6ebf2;border-radius:16px;padding:16px;box-shadow:0 6px 20px rgba(26,47,78,.05)}.task-summary-head{display:flex;align-items:center;gap:12px;margin:0 0 13px}.task-summary-head b{font-size:16px;color:#132e58}.task-summary-head span{color:#718097;font-size:13px;flex:1}.task-summary-empty{padding:14px;color:#718097;background:#fff;border-radius:14px}.task-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:10px}.task-card{text-align:left;background:#f8faff;border:1px solid #e2e8f1;border-radius:12px;padding:12px;cursor:pointer;color:#26364d}.task-card:hover,.task-card.selected{border-color:#1d5eb8;background:#edf5ff}.task-card.needs-rework{border-color:#efb6b6;background:#fff6f6}.task-card span,.task-card small,.task-card em{display:block}.task-card span{font-size:11px;color:#708099;margin-bottom:4px}.task-card b{font-size:15px}.task-card small{font-size:12px;color:#61718a;margin-top:6px}.task-card em{font-style:normal;font-size:12px;color:#c53b3b;margin-top:7px;line-height:1.45}@media(max-width:700px){.task-summary-head{align-items:flex-start;flex-wrap:wrap}.task-summary-head span{width:100%;flex-basis:100%}.task-grid{grid-template-columns:1fr}}
.worker-grid{grid-template-columns:repeat(3,minmax(260px,1fr));gap:17px}.worker-card{padding:22px;border:0;box-shadow:var(--shadow);transition:.18s ease}.worker-card:hover{transform:translateY(-2px);box-shadow:0 17px 40px rgba(24,53,94,.11)}.avatar{width:50px;height:50px}.worker-meta{margin:19px 0 16px}.worker-meta div{padding:12px;background:#f6f8fb}
dialog{border-radius:21px}.project-form{padding:36px}.project-form input,.project-form select{height:46px;background:#fbfcfe}.dialog-body{padding:38px}.dialog-meta{gap:10px;padding:16px}.dialog-actions{margin-top:20px}.dialog-actions button{min-width:88px}
@media(max-width:1180px){.metrics{grid-template-columns:repeat(2,1fr)}.worker-grid{grid-template-columns:repeat(2,minmax(250px,1fr))}}
@media(max-width:760px){:root{--sidebar-width:242px}.login-page{display:block;padding:0;background:#f5f7fb}.login-brand{min-height:auto;height:190px;padding:30px 28px;gap:9px}.login-brand img{width:220px}.login-brand span{font-size:18px;margin-top:2px}.login-brand small{font-size:11px}.login-brand:after{display:none}.login-card{margin:-18px auto 28px;width:calc(100% - 32px);padding:30px 25px;position:relative}.sidebar{width:var(--sidebar-width)}.logo img{width:154px}.page{padding:20px 16px 34px}header{height:72px;padding:0 15px}.welcome{min-height:154px;padding:24px}.welcome h1{font-size:24px}.metrics{gap:11px}.metric{min-height:108px;padding:17px}.metric b{font-size:25px}.dashboard-grid{gap:13px}.toolbar{align-items:flex-start;gap:14px}.toolbar h1{font-size:23px}.toolbar .primary{white-space:nowrap}.filters{display:grid;padding:11px}.filters input,.filters select{max-width:none;width:100%}.worker-grid{grid-template-columns:1fr}.filter-tabs{width:100%;overflow:auto}.filter-tabs button{flex:1;white-space:nowrap}.batch-bar{padding:13px}.dialog-body{padding:27px}.project-form{padding:30px 22px}}

/* 登录页 PC 比例与文字基线 */
.login-page{grid-template-columns:minmax(620px,58%) minmax(520px,42%);align-items:stretch;min-height:100vh}
.login-brand{padding:64px clamp(54px,7vw,132px);align-items:center;position:relative;overflow:hidden}
.login-brand:before{content:"";position:absolute;width:520px;height:520px;border:1px solid rgba(255,255,255,.055);border-radius:50%;right:-210px;top:-210px;box-shadow:0 0 0 90px rgba(255,255,255,.018),0 0 0 180px rgba(255,255,255,.012)}
.login-brand:after{display:none}
.brand-content{width:min(590px,100%);display:flex;flex-direction:column;align-items:flex-start;position:relative;z-index:1}
.brand-content img{width:min(455px,86%);margin-left:-24px;margin-bottom:35px}
.brand-content>span{font-size:31px;line-height:1.25;margin:0;padding:0;letter-spacing:.055em;font-weight:900}
.brand-content>small{margin-top:15px;font-size:15px;line-height:1.8;color:#c2d1e8;letter-spacing:.03em}
.brand-features{display:flex;flex-wrap:wrap;gap:10px;margin-top:36px;padding-top:25px;border-top:1px solid rgba(255,255,255,.16);width:100%}
.brand-features b{padding:8px 13px;border:1px solid rgba(255,255,255,.17);border-radius:999px;background:rgba(255,255,255,.055);font-size:12px;color:#dce7f7;font-weight:600;letter-spacing:.03em}
.login-page>.login-card{justify-self:center;align-self:center;width:min(492px,calc(100% - 72px));padding:52px 50px 45px;border-radius:24px}
.login-card .eyebrow{display:block;margin-bottom:18px}.login-card h1{margin:0 0 11px;line-height:1.25}.login-card>p{margin:0 0 30px;line-height:1.7}.login-card label{margin:0 0 19px}.login-card input{height:52px;margin-top:9px;padding:0 15px}.login-card button{height:52px;margin-top:3px}.login-card>small{margin-top:17px}
@media(max-width:1200px){.login-page{grid-template-columns:54% 46%}.login-brand{padding-inline:6vw}.brand-content img{width:min(390px,84%)}.brand-content>span{font-size:27px}.login-page>.login-card{width:calc(100% - 52px);padding:44px 38px}}
@media(max-width:860px){.login-page{display:block}.login-brand{min-height:260px;height:auto;padding:38px 34px}.brand-content{margin:auto}.brand-content img{width:245px;margin-left:-13px;margin-bottom:17px}.brand-content>span{font-size:21px}.brand-content>small{margin-top:8px}.brand-features{display:none}.login-page>.login-card{margin:-26px auto 30px;width:calc(100% - 34px);padding:32px 26px;position:relative;z-index:3}.login-card h1{font-size:27px}}

.review-project-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:16px 0}.review-project-card{position:relative;text-align:left;background:#fff;border:1px solid #e2e8f1;border-radius:14px;padding:15px;cursor:pointer;color:#26364d;box-shadow:0 5px 16px rgba(26,47,78,.05)}.review-project-card:hover,.review-project-card.selected{border-color:#1d5eb8;background:#edf5ff}.review-project-card b,.review-project-card small,.review-project-card em{display:block}.review-project-card b{font-size:16px;margin:10px 0 5px}.review-project-card small,.review-project-card em{font-size:12px;color:#718097}.review-project-card em{font-style:normal;margin-top:8px}

.review-current-project{display:flex;align-items:center;gap:18px;background:#fff;border:1px solid #dbe4ef;border-radius:14px;padding:14px 18px;margin:16px 0;box-shadow:0 5px 16px rgba(26,47,78,.05)}.review-current-project>div{display:flex;flex-direction:column;gap:4px}.review-current-project span{font-size:12px;color:#718097}.review-current-project b{font-size:18px;color:#132e58}.review-current-project small{font-size:12px;color:#718097}@media(max-width:700px){.review-current-project{align-items:flex-start;flex-direction:column;gap:8px}}

.review-project-picker{margin:16px 0}.review-project-picker>input{width:100%;box-sizing:border-box;margin-bottom:10px}.review-project-picker .review-project-list{max-height:300px;overflow-y:auto;margin:0;padding:2px 4px 10px 0}.review-project-picker .review-project-card{min-height:110px}

.review-detail-head{display:flex;align-items:center;margin:0 0 12px}.review-detail-head button{font-weight:600}.review-directory .table-wrap{margin-top:12px}.review-directory td small{display:block;color:#718097;margin-top:4px}

.settings-panel{max-width:620px;padding:24px}.settings-panel label{display:block;font-weight:700;font-size:13px;margin:0 0 16px}.settings-panel input{display:block;width:100%;margin-top:7px;border:1px solid #d8dee8;border-radius:10px;padding:12px}.review-detail-head{margin-bottom:14px}
/* Fixed-height controls must reserve a full text line after vertical padding. */
.filters select{height:44px!important;min-height:44px;padding:0 36px 0 14px!important;font-size:14px;line-height:normal!important;overflow:visible!important;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m2 2 4 4 4-4' fill='none' stroke='%2323344d' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}
.filters input{height:44px!important;padding:0 14px!important;line-height:normal!important}
@media(max-width:760px){main{margin-left:0!important;width:100%;max-width:100%;overflow-x:hidden}.filters{display:grid!important;grid-template-columns:minmax(0,1fr)!important;width:100%!important}.filters input,.filters select{width:100%!important;max-width:100%!important;min-width:0!important}}
@media(max-width:760px){.menu{position:fixed!important;left:12px;top:18px;z-index:60!important;width:40px;height:40px;border-radius:10px;background:#fff!important;box-shadow:0 4px 14px rgba(20,44,76,.12)}.sidebar.open~main .menu{display:block!important}.sidebar{z-index:55}.status{white-space:nowrap!important;writing-mode:horizontal-tb!important;min-width:max-content!important;display:inline-block!important}.table-wrap{max-width:100%;overflow-x:auto}.page{width:100%;min-width:0}}
 .sidebar-close{display:none;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:#dbe7f8;border-radius:9px;padding:9px 12px;margin:18px 0;cursor:pointer}.sidebar-close:hover{background:rgba(255,255,255,.16)}@media(max-width:760px){.sidebar-close{display:block}.sidebar-foot{margin-top:auto}.filters select{min-width:0!important}}
.task-config-head{display:flex;align-items:center;justify-content:space-between;margin:12px 0 6px}.task-config-list{max-height:235px;overflow:auto;border:1px solid #e3e8f0;border-radius:10px;padding:3px}.task-config-row{display:grid!important;grid-template-columns:22px minmax(0,1fr) 54px!important;gap:7px!important;align-items:center!important;padding:6px 5px!important;margin:0!important;border-bottom:1px solid #eef1f5;font-size:11px}.task-config-row:last-child{border-bottom:0}.task-config-row input[type=checkbox]{width:18px!important;height:18px!important;min-width:18px!important;margin:0!important;padding:0!important}.task-config-row span{min-width:0}.task-config-row b,.task-config-row small{display:block}.task-config-row b{font-size:12px}.task-config-row small{color:#718097;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.task-quantity{width:54px!important;height:32px!important;min-height:32px!important;margin:0!important;padding:4px 6px!important;font-size:12px!important}
.sidebar nav{gap:5px}.sidebar nav button{min-height:44px;padding:10px 12px}.sidebar nav button i{width:28px;height:28px;border-radius:9px;background:rgba(255,255,255,.07);font-size:15px;line-height:1}.sidebar nav button.active i{background:#fff;color:var(--navy)}.sidebar nav button span:not(.badge){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar nav [data-page="workers"]{margin-top:8px;border-top:1px solid rgba(255,255,255,.1);border-radius:0;padding-top:17px;min-height:53px}.sidebar nav [data-page="settings"]{margin-top:8px;border-top:1px solid rgba(255,255,255,.1);border-radius:0;padding-top:17px;min-height:53px}.share-main-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.recycle-actions{display:flex;align-items:center;gap:14px;white-space:nowrap}
