@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap");

:root{--paper:#f3f1eb;--surface:#fbfaf7;--ink:#1e2422;--muted:#777b75;--line:#dddcd5;--green:#245947;--lime:#d8e34f;--yellow:#f1c95b;--blue:#77a9ce;--red:#d77668;--sidebar:#202824;--shadow:0 18px 50px rgba(31,38,34,.08)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans","Noto Sans SC",sans-serif;font-size:14px}
button,input,select,textarea{font:inherit}
button,a{color:inherit}
button{cursor:pointer}
.app-layout{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:var(--sidebar);color:#f5f4ed;padding:26px 18px 20px;display:flex;flex-direction:column;z-index:30}
.logo{display:grid;grid-template-columns:44px 1fr;text-decoration:none;align-items:center;padding:0 10px 30px}
.logo>span,.brand-mark{grid-row:1/3;width:38px;height:38px;display:grid;place-items:center;background:var(--lime);color:#263128;border-radius:50%;font-weight:700;font-size:18px}
.logo strong{font-size:19px;letter-spacing:.12em}.logo small{color:#89948d;font-size:9px;letter-spacing:.18em;margin-top:1px}
.nav{display:flex;flex-direction:column;gap:4px}
.nav a{display:flex;align-items:center;gap:12px;color:#bfc7c2;text-decoration:none;padding:12px 14px;border-radius:7px;font-weight:500}
.nav a:hover,.nav a.active{background:#344039;color:#fff}.nav a.active{box-shadow:inset 3px 0 var(--lime)}
.nav-icon{width:20px;text-align:center;font-size:17px;color:#9eaaa3}
.sidebar-section{border-top:1px solid #364039;margin-top:28px;padding:24px 9px;overflow:auto}
.sidebar-section>p{font-size:10px;letter-spacing:.16em;color:#7f8b84;text-transform:uppercase;margin:0 0 15px}
.person-load{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:9px;margin:11px 0;font-size:12px;color:#c7cec9}.person-load b{color:#859189;font-size:11px}
.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#dbe3d6;color:#315044;font-weight:700;flex:none}
.avatar.small{width:28px;height:28px;font-size:11px;background:#e4e7df}
.empty-mini{font-size:11px;line-height:1.7;color:#7f8b84}
.sidebar-foot{margin-top:auto;border-top:1px solid #364039;padding:18px 8px 0;display:flex;align-items:center;gap:10px}.sidebar-foot div{display:flex;flex-direction:column;min-width:0;flex:1}.sidebar-foot strong{font-size:12px}.sidebar-foot small{color:#89948d;font-size:10px}.sidebar-foot>a{text-decoration:none;color:#87938c;font-size:18px}
.main{grid-column:2;padding:32px clamp(24px,4vw,64px) 20px;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}.topbar h1{font-size:27px;margin:4px 0 0;letter-spacing:-.04em}.eyebrow{font-size:10px;letter-spacing:.18em;color:#8b8e87;margin:0;font-weight:700}.mobile-menu{display:none;border:0;background:none;font-size:22px}
.btn{border:0;border-radius:6px;padding:11px 17px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:600;text-decoration:none}.btn-primary{background:var(--green);color:#fff;box-shadow:0 5px 14px rgba(36,89,71,.18)}.btn-primary:hover{background:#1d493a}.btn-primary span{color:var(--lime);font-size:16px}.btn-ghost{background:#ebe9e2}.btn-danger{background:#f7e4e1;color:#a54b3f}
.stats-grid{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:12px;margin-bottom:18px}.stat-card{position:relative;min-height:125px;background:var(--surface);border:1px solid rgba(211,210,202,.8);padding:21px;border-radius:8px;display:flex;flex-direction:column;overflow:hidden}.stat-card:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:#d4d5ce}.stat-card>span,.stat-card>div>span{color:var(--muted);font-size:11px;font-weight:600}.stat-card>strong,.stat-card>div>strong{display:block;font-size:34px;letter-spacing:-.04em;margin-top:17px}.stat-card strong small{font-size:13px;margin-left:2px;color:#767b76}.stat-card>small{color:#9a9d97;font-size:10px;margin-top:2px}.stat-main{background:var(--green);color:#fff;flex-direction:row;align-items:center;justify-content:space-between}.stat-main>div>span{color:#b8c8c0}.stat-main:after{background:var(--lime)}.donut{--value:0;width:68px;height:68px;border-radius:50%;background:conic-gradient(var(--lime) calc(var(--value)*1%),rgba(255,255,255,.13) 0);display:grid!important;place-items:center}.donut i{width:48px;height:48px;border-radius:50%;background:var(--green)}.accent-yellow:after{background:var(--yellow)}.accent-blue:after{background:var(--blue)}.accent-red:after{background:var(--red)}
.workspace-panel{background:var(--surface);border:1px solid rgba(211,210,202,.85);border-radius:9px;box-shadow:var(--shadow);min-height:440px}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:24px 26px 18px}.panel-head h2{font-size:20px;margin:5px 0 0}.toolbar,.search,.view-switch{display:flex;align-items:center}.toolbar{gap:10px}.search{position:relative}.search span{position:absolute;left:12px;color:#8b8e88;font-size:18px}.search input{width:230px;border:1px solid var(--line);border-radius:6px;background:#f7f6f2;padding:10px 12px 10px 36px;outline:0}.search input:focus{border-color:#8ca99e;background:#fff}.view-switch{background:#ebeae5;padding:3px;border-radius:6px}.view-switch a{width:32px;height:30px;display:grid;place-items:center;text-decoration:none;color:#92958e;border-radius:4px}.view-switch a.active{background:#fff;color:var(--green);box-shadow:0 1px 4px #d2d1cb}
.status-tabs{display:flex;padding:0 26px;border-bottom:1px solid var(--line);gap:27px;overflow:auto}.status-tabs a{text-decoration:none;color:#7d817b;padding:0 0 13px;white-space:nowrap;font-size:12px;position:relative}.status-tabs a.active{color:var(--ink);font-weight:700}.status-tabs a.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--green)}.status-tabs b{font-size:9px;padding:2px 5px;background:#e7e8e1;border-radius:8px;margin-left:4px}
.task-table-wrap{overflow-x:auto}.task-table{border-collapse:collapse;width:100%;min-width:1180px}.task-table thead{background:var(--surface)}.task-table th{font-family:"Microsoft YaHei","Noto Sans SC",sans-serif;font-size:14px;letter-spacing:0;color:#111;text-align:left;padding:17px 16px;border-top:1px solid #dedfd7;border-bottom:1px solid #d3d6ce;font-weight:600;white-space:nowrap}.task-table th:first-child,.task-table td:first-child{padding-left:26px}.task-table td{padding:21px 16px;border-bottom:1px solid #eceae4;vertical-align:middle;font-size:14px}.task-table tbody tr:hover{background:#f8f7f2}.task-title{border:0;background:none;padding:0;text-align:left;font-size:16px;font-weight:700;max-width:280px}.task-table td>small,.date-range+small,.task-table td:first-child small{display:block;color:#92968f;font-size:12px;margin-top:6px}.assignee{display:flex;align-items:center;gap:9px;font-size:14px}.priority{font-size:12px;padding:5px 10px;border-radius:20px;background:#e9eae5;color:#626760}.priority-high{background:#f7e8d2;color:#94672c}.priority-urgent{background:#f7ded9;color:#a84d40}.priority-low{background:#e6efe9;color:#4b735f}.date-range{font-size:14px;white-space:nowrap;font-weight:500}.overdue-text .date-range,.overdue-text small{color:#bd5b4c!important}.progress-label{font-size:12px;text-align:right;margin-bottom:5px}.progress{height:5px;background:#e5e5df;width:92px;border-radius:3px;overflow:hidden}.progress i{display:block;height:100%;background:var(--green);border-radius:3px}.status{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;font-size:13px;font-weight:600}.status i{width:7px;height:7px;border-radius:50%;background:#aaa}.status-progress i{background:#4d9478}.status-review i{background:#d3a937}.status-done i{background:#789bac}.status-paused i{background:#d0796c}.icon-btn{border:0;background:transparent;color:#8e928b;padding:8px;font-size:15px}
.status-proofing i{background:#986fc0}.craft-text,.feedback-text{display:block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:#414944;line-height:1.5}.craft-text[title="暂无工艺要求"],.feedback-text[title="暂无设计反馈"]{color:#92968f}
.product-thumb{display:block!important;width:64px!important;height:48px!important;max-width:64px!important;border-radius:5px;overflow:hidden;border:1px solid #d5d8d0;background:#eee}.product-thumb img{display:block!important;width:64px!important;height:48px!important;max-width:64px!important;object-fit:cover}.no-product{font-size:12px;color:#969992}.product-upload>small{font-size:10px;color:#92968f}.product-preview{display:flex;align-items:center;gap:10px;margin-top:5px;padding:9px;background:#efefe9;border-radius:6px}.product-preview img{width:72px;height:54px;object-fit:cover;border-radius:4px}.product-preview em{font-style:normal;font-size:11px;color:#67706a}
.empty-state{text-align:center;padding:65px 20px}.empty-state>span{width:54px;height:54px;display:grid;place-items:center;margin:auto;background:#e7eadf;border-radius:50%;font-size:25px;color:var(--green)}.empty-state h3{margin:16px 0 5px}.empty-state p{color:var(--muted);margin:0 0 20px}
.timeline-wrap{overflow:auto;padding-bottom:10px}.timeline{display:grid;grid-template-columns:190px minmax(980px,1fr);min-width:1170px}.timeline-corner{padding:18px 26px;color:#969992;font-size:10px;letter-spacing:.1em;border-bottom:1px solid var(--line)}.timeline-header{display:grid;grid-template-columns:repeat(var(--days),1fr);border-bottom:1px solid var(--line)}.timeline-header div{text-align:center;border-left:1px solid #eceae4;padding:9px 0}.timeline-header small{display:block;font-size:8px;color:#a1a39e}.timeline-header b{font-size:10px}.timeline-header .today{background:#f0f4dd;color:var(--green)}.timeline-label{border:0;border-bottom:1px solid #eceae4;background:transparent;text-align:left;padding:11px 16px 11px 26px;overflow:hidden}.timeline-label strong,.timeline-label small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-label strong{font-size:11px}.timeline-label small{font-size:9px;color:#999;margin-top:4px}.timeline-row{display:grid;grid-template-columns:repeat(var(--days),1fr);position:relative;min-height:54px;border-bottom:1px solid #eceae4;background:repeating-linear-gradient(to right,transparent 0,transparent calc(100% / var(--days) - 1px),#eeece6 calc(100% / var(--days) - 1px),#eeece6 calc(100% / var(--days)))}.timeline-bar{position:absolute;left:calc(var(--offset)*100%/var(--days) + 3px);width:calc(var(--width)*100%/var(--days) - 6px);top:16px;height:22px;border:0;border-radius:4px;background:#b8beb7;overflow:hidden;text-align:right;padding:0 5px;color:#fff;font-size:8px}.status-bg-progress{background:#4e8d73}.status-bg-review{background:#d2ad49}.status-bg-proofing{background:#956aba}.status-bg-done{background:#789cac}.status-bg-paused{background:#cf776a}.status-bg-pending{background:#a5aaa4}
.site-footer{text-align:center;font-size:9px;letter-spacing:.12em;color:#a2a49f;padding:25px}.toast{position:fixed;top:22px;right:26px;background:#244f40;color:#fff;padding:12px 18px;border-radius:6px;z-index:80;box-shadow:0 9px 30px rgba(0,0,0,.15);transition:.3s}.toast-error{background:#a95246}.toast.hide{opacity:0;transform:translateY(-10px);pointer-events:none}
.panel-note{color:#92958f;font-size:11px;margin:0}.account-panel{min-height:0}.account-list{border-top:1px solid var(--line)}.account-row{display:grid;grid-template-columns:42px minmax(180px,1fr) auto auto;gap:14px;align-items:center;padding:18px 26px;border-bottom:1px solid #e9e7e1}.account-row:last-child{border-bottom:0}.account-info{display:flex;flex-direction:column;gap:5px}.account-info strong{font-size:13px}.account-info strong i{font-style:normal;font-size:9px;background:#e5eadc;color:#426452;border-radius:10px;padding:3px 7px;margin-left:8px}.account-info small{font-size:10px;color:#969992}.account-state{display:flex;align-items:center;gap:6px;color:#a06a62;font-size:10px;min-width:48px}.account-state i{width:6px;height:6px;border-radius:50%;background:#d0796c}.account-state.active{color:#55806c}.account-state.active i{background:#5b987d}.account-modal{width:min(500px,100%)}.field-help{font-size:10px;color:#969992;margin:-8px 0 0}
.modal{position:fixed;inset:0;z-index:100;display:none}.modal.open{display:block}.modal-backdrop{position:absolute;inset:0;background:rgba(22,29,26,.52);backdrop-filter:blur(3px)}.modal-card{position:absolute;right:0;top:0;bottom:0;width:min(620px,100%);background:var(--surface);padding:29px clamp(22px,4vw,42px);overflow:auto;box-shadow:-20px 0 60px rgba(0,0,0,.13);animation:slideIn .25s ease}.modal-card>header{display:flex;align-items:start;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:21px;margin-bottom:25px}.modal-card h2{margin:5px 0 0;font-size:23px}.modal-close{border:0;background:#ecebe5;border-radius:50%;width:34px;height:34px;font-size:22px;color:#777}.modal-open{overflow:hidden}@keyframes slideIn{from{transform:translateX(30px);opacity:0}}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}.form-grid .field{margin:0}.field-wide{grid-column:1/-1}.field>span{font-size:10px;letter-spacing:.08em;color:#6f746e;font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid #d7d7d0;background:#f8f7f3;border-radius:5px;padding:11px 12px;outline:0;color:var(--ink)}.field textarea{resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#719385;background:#fff;box-shadow:0 0 0 3px rgba(74,125,104,.08)}.range-field>span{display:flex;justify-content:space-between}.range-field input{appearance:none;height:5px;padding:0;background:linear-gradient(to right,var(--green) var(--progress),#deded7 var(--progress));border:0}.range-field input::-webkit-slider-thumb{appearance:none;width:16px;height:16px;border-radius:50%;background:var(--lime);border:4px solid var(--green)}.modal-actions{display:flex;align-items:center;gap:9px;margin-top:25px;border-top:1px solid var(--line);padding-top:20px}.modal-actions>span{flex:1}
.auth-page{min-height:100vh;background:var(--sidebar);display:grid;place-items:center;padding:35px}.auth-shell{width:min(960px,100%);min-height:590px;display:grid;grid-template-columns:1fr 1fr;background:var(--surface);border-radius:11px;overflow:hidden;box-shadow:0 35px 100px rgba(0,0,0,.25)}.auth-brand{position:relative;background:var(--green);color:#fff;padding:58px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.auth-brand:after{content:"";position:absolute;width:280px;height:280px;border:1px solid rgba(216,227,79,.3);border-radius:50%;right:-130px;bottom:-70px;box-shadow:0 0 0 50px rgba(216,227,79,.04),0 0 0 100px rgba(216,227,79,.025)}.auth-brand .brand-mark{position:absolute;top:45px;left:55px}.auth-brand .eyebrow{color:var(--lime);margin-bottom:18px}.auth-brand h1{font-size:39px;line-height:1.25;letter-spacing:-.05em;margin:0 0 20px}.auth-brand>p:last-of-type{color:#b8c8c0;line-height:1.8;max-width:330px}.brand-lines{display:flex;gap:6px;margin-top:40px}.brand-lines i{height:3px;width:30px;background:rgba(255,255,255,.2)}.brand-lines i:first-child{background:var(--lime);width:60px}.auth-card{padding:55px 52px;display:flex;flex-direction:column;justify-content:center}.card-heading{display:flex;align-items:center;gap:16px;margin-bottom:26px}.card-heading>span{width:36px;height:36px;border-radius:50%;background:#e8eadf;color:var(--green);display:grid;place-items:center;font-weight:700}.card-heading h2{font-size:24px;margin:0}.card-heading p{color:#92958f;font-size:11px;margin:4px 0 0}.auth-card .btn{width:100%;margin-top:5px}.auth-note{text-align:center;font-size:9px;color:#a4a69f;letter-spacing:.08em;margin-top:24px}.alert{padding:11px 13px;background:#e5f0e9;color:#3d6c56;border-radius:5px;font-size:11px;margin-bottom:17px}.alert-error{background:#f7e5e2;color:#a04b40}.section-label{border-top:1px solid var(--line);padding-top:17px;margin-top:3px;color:#777b75;font-weight:700;font-size:11px}.install-shell{grid-template-columns:.8fr 1.2fr}.install-shell .auth-card{padding:35px 46px}.install-shell .auth-brand{padding:48px}
@media(max-width:1050px){.stats-grid{grid-template-columns:repeat(4,1fr)}.stat-main{grid-column:span 2}.stat-card:last-child{grid-column:span 2}}
@media(max-width:760px){.app-layout{display:block}.sidebar{transform:translateX(-100%);transition:.25s;box-shadow:15px 0 40px rgba(0,0,0,.2)}.sidebar.open{transform:none}.main{padding:22px 14px}.topbar{gap:10px}.topbar>div{flex:1}.topbar h1{font-size:20px}.topbar .btn{font-size:0;padding:10px}.topbar .btn span{font-size:20px}.mobile-menu{display:block;padding:0}.stats-grid{grid-template-columns:1fr 1fr}.stat-main{grid-column:span 2}.stat-card{min-height:105px;padding:17px}.stat-card:last-child{grid-column:auto}.stat-card>strong,.stat-card>div>strong{font-size:28px;margin-top:10px}.panel-head{align-items:flex-start;padding:20px;gap:14px;flex-direction:column}.toolbar{width:100%}.search{flex:1}.search input{width:100%}.status-tabs{padding:0 20px;gap:22px}.auth-page{padding:0}.auth-shell,.install-shell{display:block;min-height:100vh;border-radius:0}.auth-brand{min-height:280px;padding:95px 32px 38px}.auth-brand .brand-mark{top:32px;left:32px}.auth-brand h1{font-size:31px}.auth-card,.install-shell .auth-card{padding:35px 28px}.form-grid{grid-template-columns:1fr}.field-wide{grid-column:auto}.modal-card{padding:24px 20px}.modal-actions{flex-wrap:wrap}.account-row{grid-template-columns:38px 1fr auto;padding:16px}.account-row>.btn{grid-column:2/4;font-size:12px}.account-state{justify-self:end}.panel-note{display:none}}
@media(max-width:420px){.stats-grid{grid-template-columns:1fr 1fr}.stat-card{min-height:98px}.donut{width:58px;height:58px}.donut i{width:41px;height:41px}.topbar .eyebrow{font-size:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
