:root{--gold:#FFD700;--gold-dark:#716000;--ink:#2B2F36;--muted:#7a7e87;--line:#e5e6e9;--bg:#F7F6F2;--dark:#2B2F36;--font:Inter,"Segoe UI","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 var(--font)}
button,input,select,textarea{font:inherit}
button,a,select{touch-action:manipulation}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.45}
button:focus-visible,a:focus-visible{outline:3px solid #FFD70066;outline-offset:3px}
button{transition:background .15s}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
.sidebar{position:fixed;inset:0 auto 0 0;width:228px;background:var(--dark);color:#D9DBE0;padding:30px 20px;display:flex;flex-direction:column;overflow:auto}
.brand{display:flex;align-items:center;gap:10px;color:#FFD700;font-size:25px;font-weight:650;letter-spacing:3px;margin:0 0 45px 7px}
.brand-symbol{font-size:51px;line-height:1;transform:rotate(-8deg)}
.brand small{display:block;font-size:8px;letter-spacing:2.2px;color:#a4a8b1}
.sidebar-label{font-size:10px;letter-spacing:2px;color:#9da2ad;margin:10px 12px 12px}
.nav{display:flex;align-items:center;gap:12px;width:100%;padding:12px 15px;border:0;background:transparent;color:#D9DBE0;text-align:left;border-radius:6px;margin-bottom:6px}
.nav span:first-child{font-size:18px}
.nav.active{background:#FFD7001c;color:#FFD700;border:1px solid #FFD70033}
.nav-count{margin-left:auto;font-size:11px}
.people-heading{display:flex;justify-content:space-between;align-items:center;margin-top:36px}
.people-heading button{border:0;background:none;color:#FFD700;font-size:20px}
.person{background:none;border:0;color:#D9DBE0;display:flex;align-items:center;width:100%;gap:10px;padding:10px 13px;border-radius:5px;text-align:left}
.person:hover,.person.selected{background:#ffffff0e;color:white}
.person.selected{box-shadow:inset 2px 0 var(--gold)}
.person .dot{width:8px;height:8px;border-radius:50%;background:var(--person-color)}
.person .count{margin-left:auto;color:#a4a8b1;font-size:12px}
.clear-owner{color:#FFD700;background:none;border:0;font-size:12px;padding:10px}
.sidebar-bottom{margin-top:auto;padding:40px 10px 0;font-size:11px;color:#b4b7bf}
.sidebar-bottom small{display:block;margin-top:10px;color:#959aa6}
.live-dot{display:inline-block;background:#92b58b;width:6px;height:6px;border-radius:50%;margin-right:4px}
main{margin-left:228px;min-width:0}
.topbar{height:73px;border-bottom:1px solid var(--line);background:#ffffffa0;display:flex;align-items:center;justify-content:space-between;padding:0 38px}
.breadcrumb{font-size:12px;color:#7c8984}
.breadcrumb span{margin:0 14px;color:#bdc7c0}
.topbar>div{display:flex;align-items:center;gap:16px}
.role{font-size:11px;color:#79857e}
.button{background:white;border:1px solid #dce2db;padding:9px 16px;border-radius:5px;color:#555b65}
.button:hover{background:#f0f1e9}
.button.primary{background:var(--gold);border-color:var(--gold);color:#fff;font-weight:600;box-shadow:0 3px 6px #71600012}
.button.primary:hover{background:#e6c200}
.button.small{padding:6px 12px;font-size:12px}
.text-button{border:0;background:none;color:var(--gold-dark);padding:6px 8px;font-size:12px}
.workspace{padding:35px 38px 16px;max-width:1920px;margin:auto}
.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}
.eyebrow{color:var(--gold-dark);font-size:10px;letter-spacing:2.5px;font-weight:600}
h1{font-size:29px;font-weight:600;letter-spacing:1px;margin:8px 0}
.gold{color:var(--gold)}
.page-heading p{color:#839088;font-size:12px;margin:5px 0}
.project-line{display:flex;align-items:center;gap:14px}
.field-caption{color:#8b958e;margin-right:14px;font-size:11px}
.project-line select{background:transparent;border:0;color:#2B2F36;font-size:19px;font-weight:600;max-width:70vw}
.project-goal{color:#7d8980;font-size:12px;margin:9px 0 22px;white-space:pre-wrap}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:25px}
.stat{background:white;border:1px solid var(--line);border-radius:7px;padding:17px 22px;position:relative}
.stat label{font-size:11px;color:#7e8b82}
.stat strong{display:block;font-size:29px;font-weight:550;letter-spacing:1px;margin:4px 0}
.stat small{font-size:10px;color:#929c95}
.stat-icon{position:absolute;right:20px;top:19px;width:30px;height:30px;text-align:center;line-height:30px;background:#f5f3e9;color:var(--gold);border-radius:6px}
.progress{position:absolute;bottom:0;left:0;width:100%;height:3px;background:#eee}
.progress i{display:block;height:3px;background:var(--gold)}
.board{background:white;border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 4px 20px #2B2F3603}
.board-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid var(--line);gap:16px}
.tabs{display:flex;gap:25px;flex-shrink:0}
.tabs button{padding:18px 2px 16px;background:none;border:0;color:#88938c;font-size:12px;border-bottom:2px solid transparent}
.tabs button.selected{color:#716000;border-bottom-color:var(--gold);font-weight:600}
.toolbar-actions{display:flex;align-items:center;gap:12px}
input[type=search]{width:165px;padding:6px 10px;background:#f8f9f6;border:1px solid #edf0e9;border-radius:4px;font-size:11px}
.gantt-options{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;font-size:11px;border-bottom:1px solid var(--line)}
.gantt-options>div:last-child{display:flex;align-items:center;gap:12px}
.gantt-options select{border:1px solid var(--line);background:#fff;border-radius:3px;padding:3px 8px;font-size:11px;color:#768178}
.legend{display:flex;align-items:center;gap:18px}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:18px;height:9px;display:inline-block;border:1px solid var(--gold)}
.plan-key{background:#FFD70026}
.actual-key{background:#FFD70077}
.muted{color:#9aa39d}
.filter-note{background:#faf7ee;color:#716000;padding:8px 20px;font-size:12px}
.board-footer{display:flex;justify-content:space-between;padding:12px 20px;color:#9ba49d;border-top:1px solid var(--line);font-size:10px}
.workspace-footer{display:flex;align-items:center;gap:20px;justify-content:space-between;margin-top:18px;color:#a1aaa3;font-size:9px;letter-spacing:1px}
.workspace-footer>span:first-child{color:#8b978c;font-weight:600}
.workspace-footer button{font-size:10px}
.empty{padding:65px 24px;text-align:center;color:#849087}
.empty .empty-symbol{display:block;font-size:35px;color:var(--gold);margin-bottom:12px}
.empty h3{color:#414752;font-weight:500;margin-bottom:6px}
.empty p{font-size:12px}
.gantt-scroll{overflow:auto;max-height:590px;position:relative}
.gantt-canvas{position:relative;min-width:100%}
.gantt-header{height:65px;display:flex;position:sticky;top:0;z-index:6;background:#fafbf8;border-bottom:1px solid var(--line)}
.task-heading{width:300px;flex-shrink:0;position:sticky;left:0;background:#fafbf8;z-index:7;display:flex;align-items:center;padding:0 18px;color:#879188;font-size:11px;border-right:1px solid var(--line)}
.timeline-heading{position:relative;flex-shrink:0}
.month-label{height:30px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding-left:10px;font-size:10px;color:#78887a}
.day-label{position:absolute;top:30px;height:35px;text-align:center;padding-top:8px;font-size:10px;color:#96a095;border-right:1px solid #edf0e9}
.day-label.today{color:#b3893a;background:#faf4e3;font-weight:700}
.task-row{height:54px;display:flex;border-bottom:1px solid #eff1ec;position:relative}
.task-label{position:sticky;left:0;width:300px;flex-shrink:0;background:#fff;z-index:4;border-right:1px solid var(--line);display:flex;align-items:center;gap:6px;padding:0 12px;overflow:hidden}
.task-row.root .task-label{background:#f8f9f4}
.task-row.root .task-title{font-weight:650}
.toggle{width:20px;flex-shrink:0;border:0;background:none;color:#899789;padding:0}
.task-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px;background:none;border:0;text-align:left;color:#353a43;padding:0;flex:1}
.task-owner{width:21px;height:21px;border-radius:50%;background:var(--person-color);color:#fff;text-align:center;font-size:9px;line-height:21px;flex-shrink:0}
.status-dot{height:5px;width:5px;border-radius:50%;background:#bcc5bd;flex-shrink:0}
.status-dot.active{background:var(--gold)}
.status-dot.done{background:#4c967c}
.timeline-row{position:relative;flex-shrink:0;background-image:linear-gradient(to right,#e9eee7 1px,transparent 1px);background-size:var(--day) 100%}
.task-row.dim .task-title,.task-row.dim .task-owner{filter:grayscale(1);opacity:.42}
.task-row.dim .timeline-row .bar{filter:grayscale(1);opacity:.25}
.task-row.highlight .task-label{background:#fbf8ef}
.bar{position:absolute;top:16px;height:22px;border-radius:3px;min-width:4px;cursor:pointer;background:color-mix(in srgb,var(--person-color) 15%,transparent);border:1px solid color-mix(in srgb,var(--person-color) 55%,transparent);z-index:2}
.bar.actual{background:color-mix(in srgb,var(--person-color) 55%,transparent);border:2px solid var(--person-color);z-index:3}
.bar.milestone{width:12px!important;min-width:12px;height:12px;top:21px;transform:translateX(-6px) rotate(45deg);background:color-mix(in srgb,var(--person-color) 50%,white)}
.bar:hover{outline:2px solid var(--person-color);outline-offset:2px}
.today-line{position:absolute;top:65px;bottom:0;border-left:1px dashed #c99c48;pointer-events:none;z-index:3}
.dependency-layer{position:absolute;top:65px;left:300px;pointer-events:none;z-index:1;overflow:visible}
.blank-date{position:absolute;left:14px;top:16px;font-size:10px;color:#b3bbb1}
.task-table{width:100%;border-collapse:collapse;font-size:12px}
.task-table th{text-align:left;font-size:10px;background:#fafbf8;color:#8a978b;font-weight:500;padding:14px 16px;white-space:nowrap}
.task-table td{padding:14px 16px;border-top:1px solid #edf0e9}
.task-table .dim{opacity:.35}
.task-table .name-cell{min-width:260px}
.table-wrap{overflow:auto}
.badge{display:inline-block;border-radius:4px;padding:2px 7px;font-size:10px;white-space:nowrap;background:#eef1eb;color:#7b877d}
.badge.active{background:#fbf3df;color:#a47e30}
.badge.done{background:#edf5ef;color:#53866c}
.badge.blocked{background:#f5eeeb;color:#9c7768}
.badge.overdue{background:#fcefe9;color:#bc7657}
.message-layout{display:grid;grid-template-columns:1fr 300px;min-height:340px}
.messages{padding:22px;max-height:540px;overflow:auto}
.comment{border-bottom:1px solid var(--line);padding:14px 0}
.comment:first-child{padding-top:0}
.comment-header{display:flex;gap:10px;align-items:center;font-size:12px}
.comment time{margin-left:auto;color:#99a299;font-size:10px}
.comment p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;margin:8px 0}
.comment small{color:var(--gold-dark);font-size:10px}
.comment-form{padding:24px;border-left:1px solid var(--line);background:#fafbf8}
.comment-form h3{font-size:14px;margin:0 0 15px}
.comment-form .hint{font-size:10px;color:#929c93;margin-top:12px}
.form-field{display:block;font-size:12px;color:#778476;margin-bottom:15px}
.form-field input,.form-field select,.form-field textarea{display:block;width:100%;background:#fff;border:1px solid #dfe4dc;border-radius:5px;padding:9px 10px;margin-top:6px;color:var(--ink);font-size:13px}
.form-field textarea{resize:vertical;min-height:80px}
.form-field select[multiple]{min-height:115px}
.form-field small{display:block;font-size:10px;color:#929d90;margin-top:4px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.form-field.full{grid-column:1/-1}
dialog{border:1px solid #e0e5da;border-radius:10px;padding:0;box-shadow:0 25px 90px #2B2F3633;width:640px;max-width:calc(100vw - 24px);max-height:90vh;color:var(--ink)}
dialog::backdrop{background:#2B2F3666;backdrop-filter:blur(3px)}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 26px;border-bottom:1px solid var(--line)}
.modal-head h2{font-size:19px;margin:0}
.modal-head small{color:#9aa291;font-size:10px;letter-spacing:1px}
.close{border:0;background:none;font-size:24px;color:#9aa38f;padding:0}
.modal-body{padding:24px 26px;max-height:65vh;overflow:auto}
.modal-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;padding:17px 26px;border-top:1px solid var(--line);background:#fafbf7}
.danger{color:#bd6859;margin-right:auto}
.form-section{font-size:11px;color:#716000;margin:7px 0 16px;letter-spacing:1px;border-bottom:1px solid var(--line);padding-bottom:7px}
.error{color:#ba6250;font-size:12px;white-space:pre-wrap;margin:10px 0}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#2B2F36;color:#fff;padding:12px 24px;border-radius:7px;box-shadow:0 10px 40px #0002;z-index:30;font-size:13px}
.detail-title{font-size:21px;line-height:1.4}
.detail-description{white-space:pre-wrap;color:#7b887b;font-size:13px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:22px 0}
.detail-grid label{display:block;font-size:10px;color:#929d8f;margin-bottom:5px}
.detail-grid span{font-size:13px}
.segment{display:flex;border:1px solid var(--line);border-radius:5px;overflow:hidden;margin:16px 0}
.segment button{flex:1;border:0;border-right:1px solid var(--line);background:#fff;padding:9px;color:#8c9686;font-size:12px}
.segment button.selected{background:#faf3e1;color:#716000}
.note{font-size:11px;color:#8d9786;background:#f6f7f1;padding:12px;border-radius:5px}
.mini-label{font-size:10px;color:#97a08f;margin:10px 0}
.legend .muted{font-size:10px}
@media(min-width:1600px){.workspace{padding:40px 55px}
.page-heading{margin-bottom:35px}
.stat{padding:22px 25px}
}
@media(max-width:1100px){.sidebar{width:190px;padding:25px 12px}
main{margin-left:190px}
.brand{font-size:21px;letter-spacing:2px;gap:6px}
.brand-symbol{font-size:42px}
.workspace{padding:25px 20px}
.topbar{padding:0 20px}
.stat{padding:15px}
.legend .muted{display:none}
.message-layout{grid-template-columns:1fr 260px}
.task-heading,.task-label{width:260px}
.dependency-layer{left:260px}
.stats{gap:10px}
}
@media(max-width:750px){.sidebar{position:relative;width:100%;padding:15px;display:block}
.brand{margin:0 0 15px}
.sidebar-label,.sidebar-bottom{display:none}
.nav{display:inline-flex;width:auto;padding:8px 10px}
.people-heading{display:flex;margin:12px 0 4px}
#people{display:flex;overflow:auto}
.person{width:auto;white-space:nowrap;gap:6px}
.person .count{margin-left:5px}
.clear-owner{padding:5px}
main{margin-left:0}
.topbar{height:55px}
.breadcrumb{display:none}
.topbar>div{width:100%;justify-content:space-between}
.workspace{padding:22px 12px}
h1{font-size:23px}
.page-heading{gap:10px}
.page-heading p{max-width:230px}
.stats{grid-template-columns:repeat(2,1fr)}
.board-toolbar{flex-wrap:wrap;padding:0 12px 12px;gap:8px}
.tabs{gap:20px}
.toolbar-actions{width:100%;justify-content:space-between}
.toolbar-actions input{flex:1}
.gantt-options{padding:10px 12px}
.legend{gap:10px}
.task-heading,.task-label{width:210px}
.dependency-layer{left:210px}
.task-title{font-size:11px}
.task-owner{display:none}
.message-layout{display:flex;flex-direction:column-reverse}
.comment-form{border-left:0;border-bottom:1px solid var(--line)}
.workspace-footer>span:nth-child(2){display:none}
.form-grid{grid-template-columns:1fr}
.project-line select{font-size:16px}
.modal-body{padding:18px}
.modal-head,.modal-actions{padding:16px 18px}
}

:root{--label-width:300px}
@media(max-width:1100px){:root{--label-width:260px}
}
@media(max-width:750px){:root{--label-width:210px}
}

