:root{--bg:#f2f4f8;--panel:#ffffffc7;--panel-strong:#fffffff0;--panel-solid:#fff;--text:#171c27;--text-2:#3f4a5b;--muted:#7b8798;--muted-2:#9aa4b2;--line:#d8dee8d6;--line-strong:#d5dbe6;--accent:#5662df;--accent-2:#7885ff;--accent-3:#74c8ff;--accent-soft:#eef0ff;--danger:#d2525c;--danger-soft:#fff0f2;--warn:#bd7c22;--warn-soft:#fff6e7;--ok:#398660;--ok-soft:#edf8f2;--shadow-sm:0 8px 24px #1f2b420b;--shadow:0 18px 48px #1f2b4213;--shadow-hover:0 28px 70px #1f2b421f;--r:22px;--ease:cubic-bezier(.22,.8,.24,1);--dashboard-motion-press:.14s;--dashboard-motion-number:.24s;--dashboard-motion-tooltip:.18s;--dashboard-motion-morph:.34s;--dashboard-motion-drawer:.3s;--dashboard-motion-workspace:.46s;--dashboard-motion-highlight:.96s;--dashboard-canvas:#e9edf2;--dashboard-paper:#e9edf2;--dashboard-panel:#fff;--dashboard-analysis-base:#dfe6ee;--dashboard-analysis-row:#f8fafc;--dashboard-analysis-inset:#eef2f6;--dashboard-ink:#172333;--dashboard-muted:#718096;--dashboard-line:#17233321;--dashboard-line-soft:#17233313;--dashboard-blue:#2855b6;--dashboard-blue-soft:#e7eefc;--dashboard-rework:#b65337;--dashboard-rework-soft:#fbece6;--dashboard-complete:#28705b;--dashboard-complete-soft:#e5f2ed;--dashboard-ease:cubic-bezier(.23,1,.32,1)}body:has(#page-today.active){background:var(--dashboard-canvas);color:var(--dashboard-ink)}body:has(#page-today.active) .topbar{border-color:var(--dashboard-line);background:#fffffff0;gap:18px;height:60px;padding:0 25px}body:has(#page-today.active) .brand{gap:10px;min-width:250px}body:has(#page-today.active) .brand-icon{background:var(--dashboard-ink);border-radius:9px;width:30px;height:30px;font:650 11px IBM Plex Mono,monospace}body:has(#page-today.active) .brand-line{font-size:14px;font-weight:750}body:has(#page-today.active) .brand small{display:none}body:has(#page-today.active) nav{gap:4px}body:has(#page-today.active) nav button{border-radius:7px;padding:8px 11px;font-size:12px}body:has(#page-today.active) nav button.active{color:var(--dashboard-ink);box-shadow:none;background:#edf0f4}body:has(#page-today.active) nav button.active:after{display:none}:is(body:has(#page-today.active) #refreshBtn,body:has(#page-today.active) #quickAddBtn){display:none}body:has(#page-today.active) .save-status{color:#7e8897;background:0 0;border:0;padding:0;font-size:10px}body:has(#page-today.active) #logoutBtn{color:#3c4758;width:29px;height:29px;min-height:29px;box-shadow:none;background:#e7eaf0;border:0;border-radius:50%;padding:0;font-size:0}body:has(#page-today.active) #logoutBtn:after{content:"刘";font-size:11px;font-weight:700}body:has(#page-today.active) .workspace{background:var(--dashboard-paper);-webkit-font-smoothing:antialiased;max-width:1440px;padding:22px 25px 28px;font-family:IBM Plex Sans,Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif}#page-today .dashboard-topline{justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:16px;display:flex}#page-today .dashboard-heading{view-transition-name:dashboard-title;gap:5px;margin:0 auto 0 0;display:grid}#page-today .dashboard-mode-host{align-items:center;min-height:34px;display:flex}#page-today .dashboard-heading p{letter-spacing:.14em;color:#7c8798;font:650 9px IBM Plex Mono,monospace}#page-today .dashboard-heading h1{letter-spacing:-.04em;font-size:24px;font-weight:700;line-height:1.2}#page-today .dashboard-shell{min-height:34px;margin:0}#page-today .dashboard-scope-form{justify-content:flex-end;gap:6px}#page-today .dashboard-scope-trigger,#page-today .dashboard-scope-reset{border-color:var(--dashboard-line);border-radius:8px;height:34px;min-height:34px;padding:0 11px;font-size:11px}#page-today .dashboard-date-range{border-color:var(--dashboard-line);border-radius:8px;height:34px;min-height:34px;font-size:11px}#page-today .dashboard-date-range input{width:106px;min-height:32px;font-size:11px}#page-today .dashboard-summary{min-height:55px;margin-bottom:18px}#page-today .dashboard-summary-band{border:0;border-top:1px solid var(--dashboard-line);border-bottom:1px solid var(--dashboard-line);background:0 0;border-radius:0;min-height:55px}#page-today .dashboard-summary-cell{border-right:1px solid var(--dashboard-line);background:0 0;grid-template-rows:auto auto;grid-template-columns:minmax(34px,auto) minmax(0,1fr);align-items:center;gap:2px 12px;min-height:54px;padding:10px 18px;display:grid}#page-today .dashboard-summary-cell:hover{background:#ffffff80}#page-today .dashboard-summary-label{color:var(--dashboard-muted);grid-area:1/2;font-size:10px;font-weight:500;line-height:1.2}#page-today .dashboard-summary-value{letter-spacing:-.05em;color:var(--dashboard-ink);grid-area:1/1/3;align-self:center;font:650 23px/1 IBM Plex Mono,monospace}#page-today .dashboard-summary-cell:first-child .dashboard-summary-value{color:var(--dashboard-rework)}#page-today .dashboard-summary-detail{color:#99a2af;grid-area:2/2;margin:0;font-size:9px;line-height:1.35}#page-today .dashboard-workspace-panel{background:0 0;border:0;border-radius:0;min-height:0;margin-bottom:14px;padding:0}#page-today .dashboard-workspace-head{z-index:auto;justify-content:flex-end;align-items:center;margin:0 0 6px;position:static}#page-today .dashboard-workspace-head>p{display:none}#page-today .dashboard-view-switch{background:#e4e8ed;border-radius:9px;padding:3px}#page-today .dashboard-view-switch-button{border-radius:6px;height:28px;min-height:28px;padding:0 11px;font-size:10px;font-weight:650}#page-today .dashboard-view-switch-button[aria-pressed=true]{background:var(--dashboard-ink);color:#fff;box-shadow:0 4px 12px #17202d29}#page-today .dashboard-workspace-layout{gap:14px}#page-today .dashboard-workspace-layout.is-timeline{grid-template-columns:minmax(0,1.65fr) minmax(270px,.7fr)}#page-today .dashboard-workspace-layout.is-tasks{grid-template-columns:minmax(0,1.2fr) minmax(330px,.8fr)}#page-today .delivery-timeline,#page-today .dashboard-needs-action,#page-today .dashboard-task-list,#page-today .dashboard-delivery-calendar{border-color:var(--dashboard-line);background:var(--dashboard-panel);border-radius:13px;box-shadow:0 4px 16px #1b263a09}#page-today .dashboard-workspace-layout>[data-dashboard-primary-panel],#page-today .dashboard-workspace-layout>[data-dashboard-secondary-panel]{height:275px;overflow:auto}#page-today .delivery-timeline{padding:0 17px 15px}#page-today .delivery-timeline:before{content:"交付主轴";padding:15px 0 11px;font-size:13px;font-weight:700;display:block}#page-today .delivery-timeline-axis{background:0 0;border:0;grid-template-columns:155px repeat(14,minmax(28px,1fr));min-width:0}#page-today .delivery-timeline-axis>*{color:#8c96a5;padding:2px 1px 6px;font:500 8px IBM Plex Mono,monospace}#page-today .delivery-timeline-axis>:nth-child(2n):not(:first-child){visibility:hidden}#page-today .delivery-lane{border-color:#17202d13;grid-template-columns:155px 1fr;min-height:57px}#page-today .delivery-lane-heading{border:0;padding:7px 0}#page-today .delivery-lane-heading strong{font-size:11px}#page-today .delivery-lane-heading small{color:#8993a2;font-size:9px}#page-today .delivery-lane-track{background:linear-gradient(90deg,#0000 12.4%,#3157d50f 12.5% 25%,#0000 25.1%);grid-template-columns:repeat(14,1fr);min-width:0;height:31px;padding:0;display:grid;position:relative}#page-today .delivery-lane-track:after{content:"";background:#3157d53b;width:1px;position:absolute;top:-8px;bottom:-8px;left:12.5%}#page-today .delivery-node{z-index:1;color:#284ba7;white-space:nowrap;text-align:center;background:#dfe6f8;border:0;border-radius:5px;align-self:center;height:18px;min-height:18px;margin:0 2px;padding:2px 7px;font-size:8px;display:block}#page-today .delivery-node strong{font-size:8px;font-weight:500}#page-today .delivery-node small{display:none}#page-today .delivery-node.status-rework{background:var(--dashboard-rework-soft);color:#9e4024}#page-today .delivery-node.status-completed{background:var(--dashboard-complete-soft);color:#17634f}#page-today .dashboard-needs-action{padding:0 8px 8px}#page-today .dashboard-needs-action>h2{margin:0;padding:15px 9px 11px;font-size:13px}#page-today .dashboard-action-brief{background:0 0;border:0;border-radius:8px;min-height:56px;padding:11px 9px 11px 19px;position:relative}#page-today .dashboard-action-brief:before{content:"";background:#c8d0db;border-radius:3px;width:4px;height:34px;position:absolute;top:11px;left:8px}#page-today .dashboard-action-brief.status-rework:before{background:var(--dashboard-rework)}#page-today .dashboard-action-brief strong{font-size:11px}#page-today .dashboard-action-brief small{color:#7e8998;font-size:9px}#page-today .dashboard-task-list{padding:0 17px 13px}#page-today .dashboard-task-list-head{border:0;min-height:58px;padding:15px 0 11px}#page-today .dashboard-task-list-head h2,#page-today .dashboard-delivery-calendar>h2{font-size:13px}#page-today .dashboard-task-row{background:0 0;border:0;border-top:1px solid #17202d13;border-radius:0;grid-template-columns:85px minmax(170px,1fr) minmax(130px,.8fr) 76px 16px;gap:11px;min-height:49px;padding:0}#page-today .dashboard-task-time{font:600 9px IBM Plex Mono,monospace}#page-today .dashboard-task-title{font-size:11px}#page-today .dashboard-task-context,#page-today .dashboard-task-detail{color:#7e8795;font-size:9px}#page-today .dashboard-task-open{color:#9aa3af;font-size:0}#page-today .dashboard-task-open:after{content:"›";font-size:16px}#page-today .dashboard-delivery-calendar{padding:0 14px 14px}#page-today .dashboard-delivery-calendar>h2{margin:0;padding:15px 0 11px}#page-today .dashboard-calendar-grid{grid-template-columns:repeat(7,1fr);gap:5px}#page-today .dashboard-calendar-day{aspect-ratio:1.2;background:#ffffffb3;border-color:#17202d14;border-radius:6px;min-height:0;padding:5px}#page-today .dashboard-calendar-day span{font:600 8px IBM Plex Mono,monospace}#page-today .dashboard-calendar-day strong{font:650 11px IBM Plex Mono,monospace}#page-today .dashboard-calendar-day small{font-size:7px}#page-today .dashboard-calendar-day[aria-label*="0 个节点"]{opacity:.35}#page-today .dashboard-calendar-day[aria-label^="8月30日"]{background:var(--dashboard-ink);color:#fff;opacity:1}#page-today .dashboard-calendar-day[aria-label*=有返修]{background:var(--dashboard-rework-soft);opacity:1;border-color:#bd57382e}#page-today .dashboard-suppliers{margin-bottom:14px}#page-today .supplier-delivery-section{border-color:var(--dashboard-line);background:var(--dashboard-panel);border-radius:13px;box-shadow:0 4px 16px #1b263a09}#page-today .supplier-delivery-heading{border:0;padding:15px 17px 11px}#page-today .supplier-delivery-heading h2{font-size:13px}#page-today .supplier-delivery-heading p{font-size:10px}#page-today .supplier-delivery-row{border-color:#17202d13;grid-template-columns:170px repeat(4,1fr);min-width:0;min-height:40px}#page-today .supplier-delivery-columns{background:0 0;min-height:27px}#page-today .supplier-delivery-columns span{text-transform:uppercase;letter-spacing:.07em;padding:7px 10px;font-size:8px}#page-today .supplier-delivery-name,#page-today .supplier-delivery-metric{background:0 0;border:0;min-height:40px;padding:7px 10px;font-size:10px}#page-today .supplier-delivery-row>:first-child{padding-left:17px}#page-today .supplier-delivery-row>:last-child{padding-right:17px}#page-today .supplier-delivery-name{color:var(--dashboard-ink);font-size:11px}#page-today .supplier-delivery-metric strong{font-size:10px}#page-today .supplier-delivery-metric small{font-size:8px}#page-today .dashboard-analysis{background:var(--dashboard-analysis-base);min-height:154px;box-shadow:none;border:0;border-radius:13px;gap:8px;margin-bottom:16px;padding:10px;display:grid}#page-today .supplier-matrix-mount,#page-today .dashboard-data-quality-mount,#page-today .batch-analysis-mount{margin-top:0}#page-today .project-progress-module,#page-today .supplier-matrix-module,#page-today .dashboard-data-quality,#page-today .batch-analysis-module{border:1px solid var(--dashboard-line-soft);background:var(--dashboard-analysis-row);border-radius:10px;box-shadow:0 2px 8px #17233309}#page-today .project-progress-project,#page-today .supplier-matrix-vendor,#page-today .supplier-matrix-cell,#page-today .dashboard-data-quality-item,#page-today .batch-status-item{background:var(--dashboard-analysis-inset);border-color:var(--dashboard-line-soft)}#page-today .project-progress-legend-button,#page-today .supplier-fact-chip,#page-today .supplier-matrix-legend-button,#page-today .supplier-matrix-sort-button{background:var(--dashboard-analysis-inset);border-color:var(--dashboard-line)}#page-today .batch-filter-shell{border-color:var(--dashboard-line-soft);background:var(--dashboard-analysis-inset)}#page-today .batch-analysis-toggle{background:0 0;border:0;border-radius:0;justify-content:space-between;align-items:center;min-height:32px;padding:0 2px;font-weight:650;display:flex}#page-today .batch-analysis-toggle:after{content:"展开";color:var(--dashboard-blue);font-size:10px;font-weight:650}#page-today .batch-analysis-toggle[aria-expanded=true]:after{content:"收起"}@media (width<=850px){#page-today .dashboard-topline{flex-direction:column;align-items:flex-start}#page-today .dashboard-shell{width:100%}#page-today .dashboard-scope-form{justify-content:flex-start}#page-today .dashboard-workspace-head{margin-bottom:10px;position:static}#page-today .dashboard-workspace-layout.is-timeline,#page-today .dashboard-workspace-layout.is-tasks{grid-template-columns:1fr}#page-today .dashboard-workspace-layout>[data-dashboard-primary-panel],#page-today .dashboard-workspace-layout>[data-dashboard-secondary-panel]{height:auto;min-height:220px}#page-today .supplier-delivery-row{grid-template-columns:130px 1fr 70px}#page-today .supplier-delivery-row>:nth-child(3),#page-today .supplier-delivery-row>:nth-child(4){display:none}}@media (width<=620px){#page-today .dashboard-analysis{border-radius:11px;gap:6px;padding:7px}}@media (prefers-reduced-motion:reduce){:root{--dashboard-motion-workspace:0s}}*{box-sizing:border-box}html{background:#eef1f5}html,body{min-height:100%;color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,PingFang SC,Microsoft YaHei,Inter,system-ui,sans-serif}body{background:#f3f5f7;min-width:1080px;overflow-x:hidden}body:before,body:after{content:"";z-index:-1;pointer-events:none;filter:blur(1px);opacity:.75;border-radius:999px;display:none;position:fixed}body:before{background:radial-gradient(circle,#616ef324,#616ef300 70%);width:390px;height:390px;top:170px;left:-150px}body:after{background:radial-gradient(circle,#45bbff1f,#45bbff00 72%);width:470px;height:470px;animation-delay:-5s;top:300px;right:-180px}button,input,select,textarea{font:inherit}button{cursor:pointer}::selection{background:#5662df2e}.auth-panel{background:radial-gradient(circle at 15% 10%,#6873ff2e,#0000 34%),radial-gradient(circle at 90% 0,#58c7ff24,#0000 30%),linear-gradient(#f9fafc,#eef1f5);place-items:center;min-height:100vh;padding:28px;display:grid}.auth-card{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:#ffffffe0;border:1px solid #dce1ebe6;border-radius:25px;width:min(420px,100%);padding:30px;box-shadow:0 24px 70px #1f2b421c,inset 0 1px #fffffff2}.auth-card h1{margin-bottom:9px}.auth-hint{color:var(--muted);margin-bottom:22px;font-size:11px;line-height:1.65}.auth-card form{gap:8px;display:grid}.auth-card label{color:#687485;margin-top:5px;font-size:10px}.auth-card input{width:100%;min-height:43px;color:var(--text);background:#ffffffeb;border:1px solid #dce2ea;border-radius:11px;outline:0;padding:8px 10px;transition:border-color .18s,box-shadow .18s}.auth-card input:focus{border-color:#a4adff;box-shadow:0 0 0 4px #5662df17,0 8px 20px #1f2b420b}.auth-card button[type=submit]{width:100%;margin-top:10px}.auth-error{min-height:18px;color:var(--danger);margin:4px 0 0;font-size:10px;line-height:1.5}.demo-banner{color:#714b18;background:linear-gradient(100deg,#fff6e7fa,#fffcf4f5);border-bottom:1px solid #bd7c2238;justify-content:space-between;align-items:center;gap:20px;padding:12px 32px;display:flex;box-shadow:0 8px 26px #5b421e0f}.demo-banner h2{margin:0;font-size:14px;line-height:1.45}.demo-banner p{color:#8b6838;margin:2px 0 0;font-size:12px;line-height:1.5}.demo-banner button{color:#714b18;background:#ffffffbd;border-color:#bd7c2238;flex:none}@keyframes ambient{0%{transform:translate(0,0)scale(1)}to{transform:translate(26px,-28px)scale(1.08)}}@keyframes pageIn{0%{opacity:0;transform:translateY(11px)scale(.996)}to{opacity:1;transform:none}}@keyframes cardIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes barGrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes glowPulse{0%,to{box-shadow:0 8px 22px #5662df29}50%{box-shadow:0 11px 30px #5662df42}}@keyframes shimmer{0%{transform:translate(-150%)rotate(14deg)}to{transform:translate(320%)rotate(14deg)}}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:none}}.topbar{z-index:50;height:72px;box-shadow:none;background:#fff;border-bottom:1px solid #17202d1a;align-items:center;gap:30px;padding:0 32px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;min-width:268px;display:flex}.brand-icon{color:#fff;width:38px;height:38px;box-shadow:none;background:#3157d5;border-radius:13px;place-items:center;font-weight:850;display:grid;position:relative;overflow:hidden}.brand-icon:after{display:none}.brand-line{letter-spacing:-.025em;font-size:14px;font-weight:850}.brand-line span{color:var(--accent);background:#eef0ffeb;border:1px solid #5662df14;border-radius:999px;margin-left:5px;padding:3px 6px;font-size:8px}.brand small{color:var(--muted);margin-top:2px;font-size:9px;display:block}nav{flex:1;gap:5px;display:flex}nav button{color:#6d7889;transition:transform .18s var(--ease),background .18s ease,color .18s ease,box-shadow .18s ease;background:0 0;border:0;border-radius:12px;padding:9px 14px;font-size:11px;position:relative}nav button:hover{color:var(--text);background:#ffffffb3;transform:translateY(-1px);box-shadow:0 8px 18px #1f2b420b}nav button.active{color:#3157d5;box-shadow:none;background:#eef2ff;font-weight:780}nav button.active:after{content:"";background:#3157d5;border-radius:2px;height:2px;position:absolute;bottom:4px;left:15px;right:15px}.top-actions{align-items:center;gap:8px;display:flex}.save-status{color:#687485;white-space:nowrap;background:#ffffffb8;border:1px solid #dce2ebe6;border-radius:999px;padding:6px 9px;font-size:8px}.save-status[data-save-state=saving]{color:var(--accent)}.save-status[data-save-state=offline]{color:var(--warn)}.save-status[data-save-state=conflict]{color:var(--danger)}.primary,.ghost,.danger-ghost{min-height:40px;transition:transform .18s var(--ease),box-shadow .18s ease,border-color .18s ease,background .18s ease;border:0;border-radius:12px;padding:0 14px}.primary{color:#fff;box-shadow:none;background:#3157d5;font-weight:780;position:relative;overflow:hidden}.primary:after{display:none}.primary:hover{box-shadow:none;background:#294bbd;transform:translateY(-1px)}.primary:hover:after{animation:.9s shimmer}.primary:active,.ghost:active,.danger-ghost:active{transform:scale(.985)}.ghost{color:#586576;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffc2;border:1px solid #d7dde7e6}.ghost:hover{background:#fff;transform:translateY(-1px);box-shadow:0 8px 18px #1f2b4212}.danger-ghost{color:var(--danger);background:#fff0f2e0;border:1px solid #f0d4d8}.danger-ghost:hover{transform:translateY(-1px);box-shadow:0 8px 18px #d2525c14}.round{width:40px;padding:0}.small{min-height:33px;padding:0 10px;font-size:9px}.workspace{max-width:1780px;margin:0 auto;padding:34px 38px 62px;position:relative}.page{display:none}.page.active{animation:pageIn .34s var(--ease);display:block}.kicker{letter-spacing:.16em;color:#8994a5;text-transform:uppercase;margin-bottom:8px;font-size:8px;font-weight:850}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.052em;background:linear-gradient(135deg,#171c27 0%,#28334c 58%,#5965dd 125%);color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:9px;font-size:32px;font-weight:850;line-height:1.05}h2{margin-bottom:3px;font-size:14px}.hero-card{-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:radial-gradient(circle at 92% 18%,#778fff21,#0000 28%),linear-gradient(135deg,#ffffffe8,#f7f9ffd1);border:1px solid #dce1ebd6;border-radius:26px;justify-content:space-between;align-items:flex-end;margin-bottom:15px;padding:28px 29px;display:flex;position:relative;overflow:hidden;box-shadow:0 18px 52px #1f2b4213,inset 0 1px #ffffffe6}.hero-card:before{content:"";background:linear-gradient(90deg,#5965dd 0%,#7ba8ff 38%,#7ba8ff00 78%);height:3px;position:absolute;top:0;left:0;right:0}.hero-card:after{content:"";border:1px solid #5662df14;border-radius:50%;width:260px;height:260px;position:absolute;top:-130px;right:-80px;box-shadow:0 0 0 32px #5662df06,0 0 0 70px #5662df05}.hero-card p,.page-title p{color:var(--muted);margin:0;font-size:11px;line-height:1.65}.hero-date{text-align:right;letter-spacing:-.03em;color:#374151;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff94;border:1px solid #dce1ebbd;border-radius:15px;padding:12px 15px;font-size:19px;font-weight:850}.hero-date span{color:var(--muted);margin-top:4px;font-size:8px;font-weight:550;display:block}.stats{grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:15px;display:grid}.stat{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transition:transform .2s var(--ease),box-shadow .2s ease;background:linear-gradient(#ffffffe0,#f9fafdc7);border:1px solid #dee3ece0;border-radius:19px;padding:17px 19px;animation:.42s both cardIn;position:relative;overflow:hidden;box-shadow:0 10px 30px #1f2b420d,inset 0 1px #ffffffd9}.stat:nth-child(2){animation-delay:40ms}.stat:nth-child(3){animation-delay:80ms}.stat:nth-child(4){animation-delay:.12s}.stat:before{content:"";background:radial-gradient(circle,#5662df21,#0000 68%);border-radius:50%;width:120px;height:120px;position:absolute;top:-70px;right:-55px}.stat:hover{transform:translateY(-3px);box-shadow:0 17px 38px #1f2b4216}.stat .label{color:var(--muted);font-size:9px}.stat strong{letter-spacing:-.045em;margin:8px 0 3px;font-size:25px;display:block}.stat small{color:#98a2b0;font-size:8px}.dashboard-grid{grid-template-columns:minmax(0,1.45fr) minmax(420px,.8fr);gap:14px;display:grid}.panel{-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:#fffc;border:1px solid #dde2ebe6;border-radius:22px;overflow:hidden;box-shadow:0 16px 46px #1f2b420f,inset 0 1px #ffffffd9}.panel-head{border-bottom:1px solid #e4e8efe0;justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.panel-head p{color:var(--muted);margin:0;font-size:8px}.soft-badge{background:var(--accent-soft);color:var(--accent);border:1px solid #5662df12;border-radius:999px;padding:5px 8px;font-size:8px;font-weight:750}.soft-badge.warm{background:var(--warn-soft);color:var(--warn);border-color:#bd7c2214}.attention-row,.due-row{cursor:pointer;border-bottom:1px solid #e8ebf1eb;padding:15px 20px;transition:background .16s,transform .16s}.attention-row:last-child,.due-row:last-child{border-bottom:0}.attention-row:hover,.due-row:hover{background:#f8fafde6;transform:translate(2px)}.attention-row{grid-template-columns:9px minmax(0,1fr) auto;gap:12px;display:grid}.risk-dot{background:var(--danger);border-radius:50%;width:9px;height:9px;margin-top:4px;box-shadow:0 0 0 4px #d2525c14}.risk-dot.medium{background:var(--warn);box-shadow:0 0 0 4px #bd7c2214}.risk-dot.normal{background:var(--ok);box-shadow:0 0 0 4px #39866014}.row-title{margin-bottom:4px;font-size:11px;font-weight:780}.row-desc{color:var(--muted);font-size:9px;line-height:1.58}.row-side{text-align:right;color:#8691a0;font-size:8px}.due-row{grid-template-columns:minmax(0,1fr) auto;gap:14px;display:grid}.due-main b{font-size:11px}.due-main span{color:var(--muted);margin-top:4px;font-size:8px;display:block}.due-days{background:var(--warn-soft);color:var(--warn);border-radius:999px;align-self:start;padding:6px 8px;font-size:8px;font-weight:760}.due-days.over{background:var(--danger-soft);color:var(--danger)}.dashboard-heading{gap:4px;margin:0 0 16px;display:grid}.dashboard-heading p{color:#667085;margin:0;font-size:12px;font-weight:600}.dashboard-heading h1{color:#17202d;background:0 0;-webkit-background-clip:initial;background-clip:initial;letter-spacing:-.02em;text-wrap:balance;margin:0;font-size:27px;font-weight:650;line-height:1.25}.dashboard-shell,.dashboard-summary,.dashboard-analysis{margin-bottom:16px}.dashboard-shell{z-index:8;min-height:64px;box-shadow:none;background:0 0;border:0;border-radius:0;padding:0;position:relative}.dashboard-scope-skeleton{min-height:60px}.dashboard-scope-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.dashboard-scope-control{position:relative}.dashboard-scope-trigger,.dashboard-scope-reset{color:#17202d;background:#fff;border:1px solid #17202d1f;border-radius:8px;min-height:40px}.dashboard-scope-trigger{align-items:center;gap:7px;padding:0 11px;display:flex}.dashboard-scope-trigger strong{font-variant-numeric:tabular-nums}.dashboard-scope-trigger[aria-expanded=true]{border-color:#3157d5;box-shadow:0 0 0 3px #3157d51f}.dashboard-scope-reset{color:#3157d5;padding:0 11px}.dashboard-scope-popover{z-index:12;transform-origin:0 0;width:280px;animation:dashboardPopoverIn var(--dashboard-motion-tooltip) cubic-bezier(.23,1,.32,1) both;background:#fff;border:1px solid #17202d1f;border-radius:12px;padding:12px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 18px 46px #17202d29}.dashboard-scope-popover[hidden]{display:none}@keyframes dashboardPopoverIn{0%{opacity:0;transform:translateY(-4px)scale(.98)}to{opacity:1;transform:none}}.dashboard-scope-search{display:block}.dashboard-scope-search input{color:#17202d;background:#f3f5f7;border:1px solid #17202d24;border-radius:7px;width:100%;min-height:40px;padding:8px 10px}.dashboard-scope-actions{justify-content:space-between;margin:8px 0 4px;display:flex}.dashboard-scope-actions button{color:#3157d5;background:0 0;border:0;min-height:32px;padding:0 6px}.dashboard-scope-options{max-height:240px;display:grid;overflow:auto}.dashboard-scope-option{color:#17202d;border-radius:7px;align-items:center;gap:9px;min-height:40px;padding:6px;display:flex}.dashboard-scope-option:hover{background:#f3f5f7}.dashboard-scope-option input{accent-color:#3157d5;width:16px;height:16px;min-height:0}.dashboard-scope-no-result{color:#667085;margin:8px 0 0;font-size:12px}.dashboard-date-range{background:#fff;border:1px solid #17202d1f;border-radius:8px;align-items:center;gap:6px;min-height:40px;padding:0 8px;display:flex}.dashboard-date-range label{display:block}.dashboard-date-range label span{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.dashboard-date-range input{color:#17202d;font-variant-numeric:tabular-nums;background:0 0;border:0;width:126px;min-height:36px}.sr-only{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.dashboard-summary{min-height:104px;display:block}.dashboard-summary-skeleton{min-height:104px}.dashboard-summary-band{background:#fff;border:1px solid #17202d1a;border-radius:12px;grid-template-columns:repeat(4,minmax(0,1fr));min-height:104px;display:grid;overflow:hidden}.dashboard-summary-cell{color:#17202d;text-align:left;background:#fff;border:0;border-right:1px solid #17202d1a;align-content:center;gap:5px;min-width:0;padding:14px 16px;display:grid;position:relative}.dashboard-summary-cell:last-child{border-right:0}.dashboard-summary-cell:hover{background:#f7f8fa}.dashboard-summary-cell:active{transform:scale(.985)}.dashboard-summary-cell:focus-visible{z-index:1;outline-offset:-3px;outline:3px solid #3157d547}.dashboard-summary-label,.dashboard-summary-detail{color:#667085}.dashboard-summary-label{font-size:13px;font-weight:600}.dashboard-summary-detail{font-size:12px}.dashboard-summary-value{color:#17202d;font-size:27px;font-weight:650;line-height:1}.dashboard-workspace-panel{background:#fff;border:1px solid #17202d1a;border-radius:14px;min-height:420px;margin-bottom:20px;padding:16px}.dashboard-workspace-skeleton{min-height:388px}.dashboard-workspace-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.dashboard-workspace-head p{color:#667085;margin:0;font-size:12px}.dashboard-view-switch{background:#f3f5f7;border-radius:8px;gap:2px;padding:3px;display:flex}.dashboard-view-switch-button{color:#667085;background:0 0;border:0;border-radius:6px;min-height:36px;padding:0 11px;font-size:13px}.dashboard-view-switch-button[aria-pressed=true]{color:#17202d;background:#fff;font-weight:650;box-shadow:0 1px 3px #17202d1a}.dashboard-view-switch-button:active{transform:scale(.97)}.dashboard-workspace-layout{align-items:start;gap:16px;display:grid}.dashboard-workspace-layout.is-timeline{grid-template-columns:minmax(0,7fr) minmax(250px,3fr)}.dashboard-workspace-layout.is-tasks{grid-template-columns:minmax(0,3fr) minmax(320px,2fr)}.delivery-timeline,.dashboard-needs-action,.dashboard-task-list,.dashboard-delivery-calendar{background:#fff;border:1px solid #17202d1a;border-radius:12px;min-width:0}.delivery-timeline{overflow:hidden}.delivery-timeline-axis{background:#f7f8fa;border-bottom:1px solid #17202d1a;grid-template-columns:148px repeat(14,minmax(58px,1fr));min-width:960px;display:grid}.delivery-timeline-axis>*{color:#667085;text-align:center;font-variant-numeric:tabular-nums;padding:9px 6px;font-size:11px}.delivery-timeline-axis .is-today{color:#3157d5;font-weight:700}.delivery-timeline-axis-spacer{text-align:left!important}.delivery-lane{border-bottom:1px solid #17202d14;grid-template-columns:148px minmax(812px,1fr);min-height:72px;display:grid}.delivery-lane:last-child{border-bottom:0}.delivery-lane-heading{border-right:1px solid #17202d14;align-content:center;gap:4px;padding:10px 12px;display:grid}.delivery-lane-heading strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.delivery-lane-heading small{color:#667085;font-variant-numeric:tabular-nums;font-size:11px}.delivery-lane-track{background-image:linear-gradient(90deg,#0000 calc(100% - 1px),#17202d12 calc(100% - 1px));background-size:7.14286% 100%;grid-template-columns:repeat(14,minmax(58px,1fr));align-items:center;min-width:812px;padding:8px 0;display:grid}.delivery-node{grid-column:calc(var(--timeline-day) + 1)/span 2;z-index:1;color:#1d3ea8;text-align:left;background:#eef2ff;border:1px solid #3157d547;border-radius:7px;gap:2px;min-width:0;min-height:48px;margin:0 4px;padding:7px 9px;display:grid;overflow:hidden}.delivery-node strong,.delivery-node small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.delivery-node strong{font-size:12px}.delivery-node small{font-size:10px}.delivery-node.status-rework{color:#8d3d28;background:#fff1ec;border-color:#bd57385c}.delivery-node.status-completed{color:#185d4c;background:#edf8f4;border-color:#24735f4d}.delivery-node:active,.dashboard-action-brief:active,.dashboard-task-row:active,.dashboard-calendar-day:active{transform:scale(.97)}.dashboard-needs-action{padding:14px}.dashboard-needs-action h2,.dashboard-task-list h2,.dashboard-delivery-calendar h2{margin:0;font-size:15px;font-weight:650}.dashboard-action-brief{color:#17202d;text-align:left;background:#fff;border:1px solid #17202d1a;border-radius:8px;gap:4px;width:100%;min-height:60px;margin-top:8px;padding:10px 11px;display:grid}.dashboard-action-brief.status-rework{border-left:3px solid #bd5738}.dashboard-action-brief small,.dashboard-empty-note{color:#667085;font-size:11px}.dashboard-needs-action .dashboard-empty{padding:28px 8px 6px}.dashboard-empty-note{text-align:center;padding:0 8px 18px;display:block}.dashboard-task-list,.dashboard-delivery-calendar{padding:14px}.dashboard-task-list-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.dashboard-date-chip{color:#3157d5;background:#eef2ff;border:1px solid #3157d538;border-radius:6px;min-height:32px;padding:0 9px;font-size:12px}.dashboard-task-row{color:#17202d;text-align:left;background:#fff;border:0;border-bottom:1px solid #17202d14;grid-template-columns:84px minmax(150px,1fr) minmax(150px,.9fr) minmax(180px,1.2fr) auto;align-items:center;gap:10px;width:100%;min-height:62px;padding:10px 8px;display:grid;position:relative}.dashboard-task-row:last-child{border-bottom:0}.dashboard-task-row:after{content:"";opacity:0;pointer-events:none;background:#3157d51a;border-radius:7px;position:absolute;inset:3px}.dashboard-task-row.is-highlighted:after{animation:dashboardTaskHighlight var(--dashboard-motion-highlight) ease-out both}@keyframes dashboardTaskHighlight{0%{opacity:1}to{opacity:0}}.dashboard-task-time,.dashboard-task-context,.dashboard-task-detail{color:#667085;font-size:11px}.dashboard-task-title{font-size:13px}.dashboard-task-open{color:#3157d5;font-size:12px}.dashboard-task-row.status-rework .dashboard-task-title{color:#8d3d28}.dashboard-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-top:10px;display:grid}.dashboard-calendar-day{color:#17202d;text-align:left;background:#fff;border:1px solid #17202d1a;border-radius:7px;gap:3px;min-height:72px;padding:8px 5px;display:grid}.dashboard-calendar-day>span,.dashboard-calendar-day>small{color:#667085;font-size:10px}.dashboard-calendar-day>strong{font-variant-numeric:tabular-nums;font-size:15px}.dashboard-calendar-day.is-selected{background:#eef2ff;border-color:#3157d5}.dashboard-calendar-day[aria-label*=有返修]>small{color:#bd5738;font-weight:650}.dashboard-suppliers{min-height:156px;margin-bottom:20px}.dashboard-suppliers-skeleton{min-height:156px}.supplier-delivery-section{background:#fff;border:1px solid #17202d1a;border-radius:14px;overflow:hidden}.supplier-delivery-heading{border-bottom:1px solid #17202d1a;justify-content:space-between;align-items:end;gap:16px;padding:14px 16px;display:flex}.supplier-delivery-heading h2{margin:0;font-size:16px;font-weight:650}.supplier-delivery-heading p{color:#667085;margin:0;font-size:12px}.supplier-delivery-table{overflow-x:auto}.supplier-delivery-row{border-bottom:1px solid #17202d14;grid-template-columns:minmax(170px,1.3fr) minmax(150px,1.1fr) repeat(4,minmax(112px,.8fr));min-width:880px;display:grid}.supplier-delivery-row:last-child{border-bottom:0}.supplier-delivery-columns{background:#f7f8fa}.supplier-delivery-columns span{color:#667085;padding:9px 12px;font-size:11px;font-weight:600}.supplier-delivery-name,.supplier-delivery-metric{color:#17202d;text-align:left;background:#fff;border:0;border-right:1px solid #17202d14;min-height:58px;padding:9px 12px}.supplier-delivery-row>:last-child{border-right:0}.supplier-delivery-name{color:#3157d5;font-size:13px;font-weight:650}.supplier-delivery-metric{align-content:center;gap:3px;display:grid}.supplier-delivery-metric strong{font-variant-numeric:tabular-nums;font-size:13px}.supplier-delivery-metric small{color:#667085;font-size:11px}.supplier-delivery-name:hover,.supplier-delivery-metric:hover{background:#f7f8fa}.supplier-delivery-name:active,.supplier-delivery-metric:active{transform:scale(.97)}::view-transition-group(*){animation-duration:var(--dashboard-motion-workspace);animation-timing-function:cubic-bezier(.77,0,.175,1)}.dashboard-panel{min-height:286px}.dashboard-panel-skeleton{min-height:284px;margin:0}.dashboard-analysis{min-height:154px;box-shadow:none;background:#fff;border:1px solid #17202d1a;border-radius:14px;padding:12px}.dashboard-analysis-skeleton{min-height:124px}.dashboard-ready-state{min-height:inherit;color:var(--muted);text-align:center;align-content:center;place-items:center;padding:20px;display:grid}.dashboard-ready-state p{margin:0;font-size:13px}.dashboard-inline-error{min-height:inherit;text-align:center;color:#73514b;background:#fff;align-content:center;place-items:center;gap:10px;padding:20px;display:grid}.dashboard-inline-error p{margin:0;font-size:14px}.dashboard-inline-error .ghost{min-width:88px}.dashboard-summary-card,.dashboard-action{width:100%;color:var(--text);text-align:left;cursor:pointer;background:#ffffffe6;border:1px solid #dde2ebf5}.dashboard-summary-card{min-height:128px;box-shadow:var(--shadow-sm);border-radius:18px;align-content:start;gap:7px;padding:16px;display:grid}.dashboard-summary-card:hover,.dashboard-summary-card:focus-visible,.dashboard-action:hover,.dashboard-action:focus-visible{border-color:#8d98ec;outline:0;box-shadow:0 0 0 3px #626def29}.dashboard-summary-label,.dashboard-summary-detail,.dashboard-action-detail,.dashboard-evidence-source,.dashboard-evidence-context{color:var(--muted);font-size:12px;line-height:1.45}.dashboard-summary-value{font-size:28px;line-height:1.1}.dashboard-summary-detail{min-height:18px}.dashboard-action{border-width:0 0 1px;border-radius:0;gap:5px;padding:14px 16px;display:grid}.dashboard-action:first-child{border-radius:18px 18px 0 0}.dashboard-action:last-child{border-bottom:0;border-radius:0 0 18px 18px}.dashboard-action-title{font-weight:750}.dashboard-empty{color:var(--muted);text-align:center;margin:0;padding:18px}.dashboard-drawer{z-index:105;background:var(--panel-solid);visibility:hidden;width:min(560px,100vw);transition:transform .32s,visibility 0s linear .32s;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-20px 0 60px #1f2b4229}.dashboard-drawer[aria-hidden=false]{visibility:visible;transition:transform .32s;transform:none}.dashboard-drawer-backdrop{z-index:0;cursor:default;background:#151d2d2e;border:0;position:fixed;inset:0}.dashboard-drawer-panel{background:var(--panel-solid);z-index:1;height:100%;position:relative;overflow:auto}.dashboard-drawer-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 22px 16px;display:flex}.dashboard-drawer-header h2{margin:0;font-size:20px;line-height:1.35}.dashboard-drawer-body{gap:12px;padding:18px 22px 28px;display:grid}.dashboard-evidence{border:1px solid var(--line);background:#fff;border-radius:14px;gap:7px;padding:16px;display:grid}.dashboard-evidence h3,.dashboard-evidence p{margin:0}.dashboard-evidence h3{font-size:15px}.dashboard-evidence-detail{font-size:13px;line-height:1.55}.dashboard-evidence .primary{justify-self:start;margin-top:4px}.delivery-pressure-chart{gap:11px;min-height:284px;padding:16px 18px 12px;display:grid;position:relative;overflow:hidden}.delivery-pressure-legend{flex-wrap:wrap;gap:8px;display:flex}.delivery-pressure-legend-button{border:1px solid var(--line-strong);min-height:32px;color:var(--text-2);background:#fff;border-radius:999px;padding:0 10px;font-size:12px;font-weight:700}.delivery-pressure-legend-button[aria-pressed=true]{background:var(--accent-soft);color:#4551cb;border-color:#9ba5f3}.delivery-pressure-legend-button:focus-visible,.delivery-pressure-point:focus-visible{filter:drop-shadow(0 0 0 4px #5662df3d);outline:none}.delivery-pressure-svg{width:100%;height:218px;overflow:visible}.delivery-pressure-area{fill:#5662df29;transition:opacity .16s}.delivery-pressure-line{fill:none;stroke-linejoin:round;stroke-linecap:round;stroke-width:3px}.delivery-pressure-line.quantity{stroke:#5662df}.delivery-pressure-line.count{stroke:#d4832b;stroke-dasharray:6 5}.delivery-pressure-point{fill:#fff;stroke:#5662df;stroke-width:3px;cursor:pointer;transition:r .14s,fill .14s,stroke .14s}.delivery-pressure-point[data-highlighted=true]{r:7;fill:#5662df;stroke:#fff}.delivery-pressure-point[data-range-selected=true]{stroke:#d4832b}.delivery-pressure-crosshair line{stroke:#7b8798;stroke-width:1px;stroke-dasharray:4 4;pointer-events:none}.delivery-pressure-svg [data-pressure-series-path][data-visible=false]{opacity:.16;pointer-events:none}.delivery-pressure-tooltip{left:var(--pressure-tooltip-x,50%);top:var(--pressure-tooltip-y,50%);color:#fff;pointer-events:none;z-index:1;background:#1c2337f0;border:1px solid #4c59be2e;border-radius:9px;max-width:220px;padding:7px 9px;font-size:12px;line-height:1.4;position:absolute;transform:translate(-50%,-115%);box-shadow:0 8px 22px #1f2b4230}.delivery-pressure-tooltip:empty{display:none}.project-progress-module{border:1px solid var(--line);background:#fff;border-radius:18px;transition:border-radius .36s,box-shadow .36s;overflow:hidden}.project-progress-module[data-expanded=true]{border-radius:22px;box-shadow:0 12px 34px #2c365d1a}.project-progress-toggle{width:100%;min-height:62px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;font-weight:780;display:flex}.project-progress-toggle:after{content:"展开";color:var(--accent);font-size:12px;font-weight:700}.project-progress-toggle[aria-expanded=true]:after{content:"收起"}.project-progress-toggle:focus-visible,.project-progress-project:focus-visible,.project-progress-legend-button:focus-visible{outline-offset:-3px;outline:3px solid #5662df42}.project-progress-details{opacity:1;gap:14px;max-height:1000px;padding:0 18px 18px;transition:max-height .38s,opacity .2s,padding .38s;display:grid}.project-progress-module[data-expanded=false] .project-progress-details{max-height:56px;padding-top:0}.project-progress-summary{color:var(--muted);margin:0;font-size:13px}.project-progress-legend{flex-wrap:wrap;gap:8px;display:flex}.project-progress-legend-button{border:1px solid var(--line-strong);min-height:32px;color:var(--text-2);background:#fff;border-radius:999px;padding:0 10px;font-size:12px;font-weight:700}.project-progress-legend-button[aria-pressed=true]{background:var(--accent-soft);color:#4551cb;border-color:#9ba5f3}.project-progress-projects{gap:10px;display:grid}.project-progress-project{border:1px solid var(--line);width:100%;color:var(--text);text-align:left;cursor:pointer;background:#fff;border-radius:14px;grid-template-columns:minmax(112px,.75fr) repeat(3,minmax(0,1fr));align-items:center;gap:12px;padding:14px;transition:border-color .16s,box-shadow .16s,transform .16s;display:grid}.project-progress-project:hover{border-color:#9ba5f3;transform:translateY(-1px);box-shadow:0 7px 18px #37427c14}.project-progress-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-progress-module .project-progress-track{grid-template-columns:auto minmax(24px,1fr) auto;align-items:center;gap:7px;min-width:0;font-size:11px;display:grid;position:relative}.project-progress-track-label{color:var(--muted);white-space:nowrap}.project-progress-track-value{font-variant-numeric:tabular-nums;font-weight:700}.project-progress-fill{background:#e9edf3;border-radius:999px;height:7px;overflow:hidden}.project-progress-fill-value{border-radius:inherit;background:#6676e6;height:100%;transition:width .36s;display:block}.project-progress-track.actual .project-progress-fill-value{background:#5763de}.project-progress-track.delivery .project-progress-fill-value{background:#43b98c}.project-progress-track[hidden]{display:none}@media (width<=760px){.project-progress-project{grid-template-columns:1fr;gap:9px}.project-progress-module .project-progress-track{grid-template-columns:74px minmax(24px,1fr) auto}}@media (prefers-reduced-motion:reduce){.project-progress-module,.project-progress-details,.project-progress-project,.project-progress-fill-value{transition:none}.project-progress-project:hover{transform:none}}.project-progress-fill-value{transition:none}.project-progress-fill{width:100%;display:block}.project-progress-fill-value{fill:#6676e6;background:0 0}.project-progress-track.actual .project-progress-fill-value{fill:#5763de}.project-progress-track.delivery .project-progress-fill-value{fill:#43b98c}.supplier-matrix-mount{margin-top:14px}.supplier-matrix-module{border:1px solid var(--line);background:#fff;border-radius:18px;transition:border-radius .36s,box-shadow .36s;overflow:hidden}.supplier-matrix-module[data-expanded=true]{border-radius:22px;box-shadow:0 12px 34px #2c365d1a}.supplier-matrix-toggle{width:100%;min-height:62px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;font-weight:780;display:flex}.supplier-matrix-toggle:after{content:"展开";color:var(--accent);font-size:12px;font-weight:700}.supplier-matrix-toggle[aria-expanded=true]:after{content:"收起"}.supplier-matrix-toggle:focus-visible,.supplier-fact-chip:focus-visible,.supplier-matrix-legend-button:focus-visible,.supplier-matrix-sort-button:focus-visible{outline-offset:-3px;outline:3px solid #5662df42}.supplier-fact-chips{flex-wrap:wrap;gap:7px;padding:0 18px 14px;display:flex}.supplier-fact-chip,.supplier-matrix-legend-button,.supplier-matrix-sort-button{border:1px solid var(--line-strong);min-height:30px;color:var(--text-2);cursor:pointer;background:#fff;border-radius:999px;padding:0 10px;font-size:12px;font-weight:700}.supplier-fact-chip{background:#fbfcff}.supplier-matrix-legend-button[aria-pressed=true],.supplier-matrix-sort-button[aria-pressed=true]{background:var(--accent-soft);color:#4551cb;border-color:#9ba5f3}.supplier-matrix-details{opacity:1;gap:13px;max-height:1200px;padding:0 18px 18px;transition:max-height .38s,opacity .2s,padding .38s;display:grid}.supplier-matrix-module[data-expanded=false] .supplier-matrix-details{max-height:36px;padding-top:0}.supplier-matrix-summary{color:var(--muted);margin:0;font-size:13px}.supplier-matrix-controls{flex-wrap:wrap;justify-content:space-between;gap:10px;display:flex}.supplier-matrix-legend,.supplier-matrix-sort{flex-wrap:wrap;gap:7px;display:flex}.supplier-matrix-table{gap:8px;min-width:max-content;display:grid;overflow:auto}.supplier-matrix-header,.supplier-matrix-row{grid-template-columns:minmax(126px,.75fr) repeat(var(--supplier-project-count,1),minmax(190px,1fr));align-items:stretch;gap:8px;display:grid}.supplier-matrix-heading{color:var(--muted);padding:7px 10px;font-size:12px;font-weight:750}.supplier-matrix-vendor{border:1px solid var(--line);background:#fbfcff;border-radius:12px;align-items:center;padding:13px 12px;display:flex}.supplier-matrix-cell{border:1px solid var(--line);min-width:0;color:var(--muted);background:#fff;border-radius:12px;gap:5px;padding:11px;font-size:12px;line-height:1.45;display:grid}.supplier-matrix-bar{height:6px;width:var(--supplier-matrix-value);background:#98a2b3;border-radius:999px;min-width:0;display:block}.supplier-matrix-bar.planned{background:#6372df}.supplier-matrix-bar.delivered{background:#3fac82}.supplier-matrix-numbers{font-variant-numeric:tabular-nums;color:var(--text-2)}.supplier-matrix-bar[hidden]{display:none}@media (width<=760px){.supplier-matrix-controls{display:grid}.supplier-matrix-details{overflow-x:auto}.supplier-matrix-header,.supplier-matrix-row{grid-template-columns:112px repeat(var(--supplier-project-count,1),minmax(172px,1fr))}}@media (prefers-reduced-motion:reduce){.supplier-matrix-module,.supplier-matrix-details{transition:none}}.settlement-funnel-mount{margin-top:14px}.settlement-funnel-module{border:1px solid var(--line);background:#fff;border-radius:18px;gap:13px;padding:18px;display:grid}.settlement-funnel-title{margin:0;font-size:16px}.settlement-funnel-stages{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;display:grid}.settlement-funnel-stage{border:1px solid var(--line);min-height:116px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#fbfcff;border-radius:13px;gap:4px;padding:12px;display:grid}.settlement-funnel-stage:hover,.settlement-funnel-stage:focus-visible{border-color:#8d98ec;outline:0;box-shadow:0 0 0 3px #626def29}.settlement-funnel-status,.settlement-funnel-quantity,.settlement-funnel-amount{color:var(--muted);font-size:12px;line-height:1.4}.settlement-funnel-count{font-size:16px}.settlement-funnel-amount{font-variant-numeric:tabular-nums}@media (width<=760px){.settlement-funnel-stages{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=420px){.settlement-funnel-stages{grid-template-columns:1fr}}.dashboard-linked-filters{border-top:1px solid var(--line);flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:8px;padding-top:10px;display:flex}.dashboard-data-quality-mount,.batch-analysis-mount{margin-top:14px}.dashboard-data-quality,.batch-analysis-module{border:1px solid var(--line);background:#fff;border-radius:18px;gap:10px;padding:16px;display:grid}.dashboard-data-quality h2{margin:0;font-size:16px}.dashboard-data-quality-item,.batch-analysis-toggle,.batch-status-item{border:1px solid var(--line-strong);min-height:40px;color:var(--text);text-align:left;background:#fff;border-radius:12px}.batch-analysis-details{gap:14px;display:grid}.batch-status-distribution{flex-wrap:wrap;gap:8px;display:flex}.batch-status-distribution h3,.batch-status-time h3{flex-basis:100%;margin:0;font-size:14px}.batch-status-time-item{color:var(--muted);margin:4px 0;font-size:12px}.project-delivery-heatmap-scroll{max-width:100%;overflow-x:auto}.project-delivery-heatmap{border-collapse:separate;border-spacing:7px;min-width:max-content}.project-delivery-heatmap th{text-align:left;background:#fff;min-width:130px}.project-delivery-heatmap tbody th,.project-heatmap-corner{z-index:1;position:sticky;left:0}.project-delivery-heatmap thead th{z-index:2;position:sticky;top:0}.project-delivery-heatmap td{min-width:120px}.project-heatmap-cell{border:1px solid var(--line);background:color-mix(in srgb,var(--accent-soft) calc(20% + var(--heatmap-intensity) * .8),#fff);text-align:left;border-radius:10px;width:100%;min-height:44px}.project-progress-trajectories{gap:12px;display:grid}.project-trajectory-legend{gap:8px;display:flex}.project-trajectory-legend-button[aria-pressed=false]{opacity:.45}.project-trajectory{color:var(--muted);gap:5px;margin:0;font-size:12px;display:grid}.project-trajectory-basis{margin:0}.project-trajectory-svg{width:100%;min-width:420px;height:120px;overflow:visible}.project-trajectory-line{fill:none;stroke-width:2px}.project-trajectory-line[hidden],.project-trajectory-point[hidden]{display:none}.project-trajectory-line.expected,.project-trajectory-point.expected{stroke:var(--warning);fill:var(--warning)}.project-trajectory-line.actual,.project-trajectory-point.actual{stroke:var(--accent);fill:var(--accent)}.project-trajectory-line.delivery,.project-trajectory-point.delivery{stroke:var(--success);fill:var(--success)}.project-trajectory-point{cursor:pointer}.project-trajectory-point[data-highlighted=true],.project-trajectory-point:focus{stroke:var(--text);stroke-width:3px;outline:none}.project-trajectory-crosshair{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.project-trajectory-tooltip{min-height:18px;color:var(--text);margin:0}.supplier-matrix-vendor{padding:0}.supplier-matrix-vendor-button{border-radius:inherit;width:100%;min-height:46px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:13px 12px;font-weight:750}.supplier-matrix-vendor-button:focus-visible,.supplier-matrix-bar:focus-visible{outline-offset:2px;outline:3px solid #5662df42}.supplier-matrix-bar{cursor:pointer;border:0;padding:0}.supplier-matrix-bar:disabled{cursor:default;opacity:.45}.dashboard-summary-card,.dashboard-action{transition:transform var(--dashboard-motion-press) var(--ease),border-color var(--dashboard-motion-press) ease,box-shadow var(--dashboard-motion-press) ease;position:relative;overflow:hidden}.dashboard-summary-card:after,.dashboard-action:after{content:"";opacity:0;pointer-events:none;transition:opacity var(--dashboard-motion-press) ease,transform var(--dashboard-motion-press) ease;background:radial-gradient(circle,#5662df2e,#0000 42%);position:absolute;inset:0;transform:scale(.35)}.dashboard-summary-card:active,.dashboard-action:active{transform:scale(.985)}.dashboard-summary-card:active:after,.dashboard-action:active:after{opacity:1;transition-duration:0s;transform:scale(1.35)}.dashboard-summary-value{font-variant-numeric:tabular-nums;display:flex}.dashboard-summary-digit{min-width:.54em;display:inline-block}.dashboard-summary-digit.changed{animation:dashboardDigitRoll var(--dashboard-motion-number) var(--ease) both}@keyframes dashboardDigitRoll{0%{opacity:.25;transform:translateY(.65em)}to{opacity:1;transform:none}}.dashboard-drawer{transition:transform var(--dashboard-motion-drawer) var(--ease),visibility 0s linear var(--dashboard-motion-drawer)}.dashboard-drawer[aria-hidden=false]{transition:transform var(--dashboard-motion-drawer) var(--ease)}.dashboard-drawer-backdrop{animation:dashboardBackdropIn var(--dashboard-motion-tooltip) ease both}@keyframes dashboardBackdropIn{0%{opacity:0}to{opacity:1}}.delivery-pressure-tooltip{animation:dashboardTooltipIn var(--dashboard-motion-tooltip) ease both}@keyframes dashboardTooltipIn{0%{opacity:0}to{opacity:1}}.project-progress-module,.supplier-matrix-module{transition-duration:var(--dashboard-motion-morph)}.project-progress-details,.supplier-matrix-details{transition-duration:var(--dashboard-motion-morph),var(--dashboard-motion-tooltip),var(--dashboard-motion-morph)}.page-title{justify-content:space-between;align-items:flex-end;margin-bottom:18px;display:flex}.filters{gap:10px;margin-bottom:14px;display:flex}.search-wrap{border:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffc;border-radius:13px;flex:1;align-items:center;gap:8px;padding:0 13px;transition:border-color .18s,box-shadow .18s,background .18s;display:flex}.search-wrap:focus-within{background:#fff;border-color:#a7afff;box-shadow:0 0 0 4px #5662df14,0 8px 20px #1f2b420d}.search-wrap input{background:0 0;border:0;outline:0;width:100%;min-height:43px}.filters select{border:1px solid var(--line);min-width:150px;color:var(--text);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffd1;border-radius:13px;outline:none;padding:0 11px}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;display:grid}.project-card{cursor:pointer;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:transform .22s var(--ease),box-shadow .22s ease,border-color .22s ease;background:linear-gradient(#ffffffeb,#f7f9fcd6);border:1px solid #dce2ebe6;border-radius:23px;outline:none;padding:20px;animation:.42s both cardIn;position:relative;overflow:hidden;box-shadow:0 12px 34px #1f2b420e,inset 0 1px #ffffffeb}.project-card:nth-child(2){animation-delay:40ms}.project-card:nth-child(3){animation-delay:80ms}.project-card:nth-child(4){animation-delay:.12s}.project-card:nth-child(5){animation-delay:.16s}.project-card:before{content:"";opacity:.75;background:linear-gradient(90deg,#5965dd,#7da9ff,#0000 86%);height:3px;position:absolute;top:0;left:0;right:0}.project-card:after{content:"";background:radial-gradient(circle,#5662df24,#0000 69%);border-radius:50%;width:170px;height:170px;transition:transform .25s;position:absolute;top:-105px;right:-100px}.project-card:hover{border-color:#cfd6e6;transform:translateY(-5px)scale(1.006);box-shadow:0 24px 55px #1f2b421c,0 8px 20px #5662df0e}.project-card:hover:after{transform:scale(1.28)}.project-card:focus-visible{box-shadow:0 0 0 4px #5662df1f,0 24px 55px #1f2b421c}.project-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.project-name{letter-spacing:-.025em;font-size:15px;font-weight:840;transition:color .18s}.project-card:hover .project-name{color:#4653cf}.client{color:var(--muted);margin-top:4px;font-size:8px}.pill{color:#657080;background:#f3f4f6;border:1px solid #d2d8e1a6;border-radius:999px;padding:5px 8px;font-size:8px}.pill.high{background:var(--danger-soft);color:var(--danger);border-color:#d2525c14}.pill.medium{background:var(--warn-soft);color:var(--warn);border-color:#bd7c2214}.pill.normal{background:var(--ok-soft);color:var(--ok);border-color:#39866014}.pill.lifecycle{color:#515dcc;white-space:nowrap;background:#eef0ff;border-color:#dfe3ff}.project-pills{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:5px;display:flex}.project-summary{color:#5a6676;background:#f7f9fceb;border:1px solid #ebeef3e6;border-radius:13px;min-height:55px;margin:13px 0 12px;padding:11px 12px;font-size:9px;line-height:1.65}.project-kpis{grid-template-columns:1fr 1fr 1fr;gap:7px;display:grid}.mini-kpi{background:#ffffffbd;border:1px solid #edf0f4;border-radius:12px;padding:9px;transition:transform .18s,background .18s}.project-card:hover .mini-kpi{background:#fff}.mini-kpi span{color:var(--muted);font-size:7px}.mini-kpi b{margin-top:4px;font-size:12px;display:block}.bar{background:#e9edf3;border-radius:99px;height:6px;margin:13px 0 6px;overflow:hidden;box-shadow:inset 0 1px 2px #1f2b420a}.bar i{transform-origin:0;height:100%;animation:barGrow .72s var(--ease);background:linear-gradient(90deg,#5965dd 0%,#6d7df1 50%,#7db7ff 100%);border-radius:99px;display:block;box-shadow:0 0 14px #5662df38}.bar.delivery i{background:linear-gradient(90deg,#2f9f77 0%,#43b98c 50%,#70d6b2 100%);box-shadow:0 0 14px #2f9f7733}.bar-label{color:#8b96a4;justify-content:space-between;font-size:8px;display:flex}.bar-label b{color:#5f6b7b;font-size:8px}.progress-pair{gap:3px;margin-top:12px;display:grid}.progress-pair .bar{margin:4px 0 6px}.project-progress-track{width:100%;display:block}.project-progress-track rect{fill:#6676e6}.project-progress-track.delivery rect{fill:#43b98c}.project-date-fields{grid-template-columns:1fr 1fr;gap:10px;display:grid}.project-date-fields.hidden{display:none}.card-actions{border-top:1px solid #edf0f4;gap:10px;margin-top:13px;padding-top:12px;display:flex}.text-btn{color:#677486;background:0 0;border:0;padding:4px 0;font-size:8px;transition:color .16s,transform .16s}.text-btn:hover{color:#303b4c;transform:translateY(-1px)}.text-btn.main{color:var(--accent);margin-right:auto;font-weight:780}.text-btn.danger{color:var(--danger)}.detail-nav{justify-content:space-between;align-items:center;margin-bottom:15px;display:flex}.detail-actions{gap:7px;display:flex}.detail-hero{border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:radial-gradient(circle at 92% 10%,#738dff1f,#0000 31%),linear-gradient(135deg,#fffffff0,#f7f9ffdb);border-radius:23px;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:13px;padding:23px 24px;display:flex;position:relative;overflow:hidden}.detail-hero:before{content:"";background:linear-gradient(90deg,#5965dd,#80b6ff,#0000 80%);height:3px;position:absolute;inset:0 0 auto}.detail-hero h1{font-size:29px}.detail-hero p{color:var(--muted);max-width:860px;margin:0;font-size:9px;line-height:1.65}.detail-tags{flex-wrap:wrap;gap:7px;margin-top:10px;display:flex}.detail-progress{background:#ffffffb8;border:1px solid #dae0e9e6;border-radius:16px;gap:10px;margin:14px 2px 0;padding:14px 16px;display:grid}.detail-progress-row{gap:7px;display:grid}.detail-progress-row .bar-label{color:var(--muted);font-size:12px}.detail-progress-row .bar-label b{color:var(--text);font-size:12px}.detail-progress-track{background:#e9edf3;border-radius:99px;width:100%;height:7px;display:block;overflow:hidden}.detail-progress-track rect{fill:#6676e6}.detail-progress-track.delivery rect{fill:#43b98c}.tag{color:#687484;background:#f3f5f8e0;border:1px solid #dde2eabd;border-radius:999px;padding:5px 7px;font-size:8px}.detail-layout{grid-template-columns:minmax(0,1.45fr) minmax(430px,.85fr);align-items:start;gap:14px;display:grid}.detail-layout.doc-hidden{grid-template-columns:1fr}.detail-layout.doc-hidden .doc-pane{display:none}.detail-main{gap:12px;display:grid}.block{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffc;border:1px solid #dce2ebe6;border-radius:21px;padding:19px 20px;transition:box-shadow .18s,transform .18s;box-shadow:0 12px 34px #1f2b420e,inset 0 1px #ffffffdb}.block:hover{box-shadow:0 18px 43px #1f2b4213}.block-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.block-head h2{font-size:13px}.block-head p{color:var(--muted);margin:0;font-size:8px}.metrics{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.metric{background:linear-gradient(#fafbfe,#f5f7fb);border:1px solid #eaf0f5;border-radius:14px;padding:12px;position:relative;overflow:hidden}.metric:after{content:"";background:radial-gradient(circle,#5662df17,#0000 70%);border-radius:50%;width:80px;height:80px;position:absolute;top:-45px;right:-40px}.metric span{color:var(--muted);font-size:7px}.metric b{letter-spacing:-.035em;margin-top:5px;font-size:17px;display:block}.type-list{gap:9px;margin-top:14px;display:grid}.type-row{grid-template-columns:100px minmax(0,1fr) 170px auto;align-items:center;gap:9px;display:grid}.type-row.dual{grid-template-columns:100px minmax(180px,1fr) 210px auto}.type-progress{min-width:0}.type-row .name{font-size:9px;font-weight:760}.type-row .nums{color:#7d8998;text-align:right;font-size:8px}.vendor-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.vendor-card{transition:transform .18s var(--ease),box-shadow .18s ease,border-color .18s ease;background:linear-gradient(145deg,#fcfdfff5,#f6f8fceb);border:1px solid #e5eaf1;border-radius:18px;padding:15px;box-shadow:0 8px 22px #1f2b420a}.vendor-card:hover{border-color:#d7deea;transform:translateY(-2px);box-shadow:0 14px 32px #1f2b4213}.vendor-card-top{justify-content:space-between;gap:10px;display:flex}.vendor-card h3{margin:0;font-size:11px}.vendor-card .due{color:var(--muted);margin-top:3px;font-size:8px}.vendor-card .vendor-kpis{grid-template-columns:repeat(3,1fr);gap:6px;margin:11px 0;display:grid}.vk{background:#ffffffd1;border:1px solid #edf0f4;border-radius:10px;padding:8px}.vk span{color:var(--muted);font-size:7px}.vk b{margin-top:3px;font-size:10px;display:block}.vendor-card .plan-line{color:#7c8796;margin-top:8px;font-size:8px}.vendor-card .actions{border-top:1px solid #eceff3;gap:10px;margin-top:10px;padding-top:9px;display:flex}.delivery-card .vendor-card-top{align-items:flex-start}.milestone-list{border-top:1px solid #e8ecf1;gap:7px;margin-top:12px;padding-top:11px;display:grid}.milestone-row{background:#ffffffd6;border:1px solid #e7ebf1;border-radius:12px;grid-template-columns:29px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 11px;transition:transform .16s,box-shadow .16s,border-color .16s;display:grid}.milestone-row:hover{border-color:#d9e0eb;transform:translate(2px);box-shadow:0 7px 18px #1f2b420b}.milestone-index{width:27px;height:27px;color:var(--accent);background:linear-gradient(145deg,#eef0ff,#e7f2ff);border:1px solid #5662df14;border-radius:9px;place-items:center;font-size:7px;font-weight:850;display:grid}.milestone-main b{font-size:9px}.milestone-main span{color:var(--muted);margin-top:3px;font-size:7px;line-height:1.5;display:block}.milestone-actions{gap:8px;display:flex}.milestone-empty{padding:14px}.batch-toolbar{gap:8px;display:flex}.batch-selection-toolbar{color:#515dcc;background:linear-gradient(135deg,#f5f6ff,#f8fbff);border:1px solid #dfe3ff;border-radius:14px;align-items:center;gap:8px;margin:-3px 0 12px;padding:10px 12px;font-size:8px;display:flex}.batch-selection-toolbar b{margin-right:auto}.batch-selection-toolbar select,.inline-select{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:9px;outline:none;padding:6px 8px;font-size:8px}.inline-select{min-width:118px;max-width:160px}.inline-state{color:#7d8794;white-space:nowrap;background:#f4f5f7;border:1px solid #e1e5eb;border-radius:999px;padding:5px 8px;font-size:8px;transition:all .16s}.inline-state.on{color:#378360;background:#eaf8f1;border-color:#cbeadb}.inline-state:disabled,.inline-select:disabled{opacity:.55;cursor:wait}.batch-table input[type=checkbox]{accent-color:#5965dd;width:15px;height:15px}.table-wrap{background:#ffffff8c;border:1px solid #e8ecf2;border-radius:14px;max-height:360px;overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:8px}.data-table th,.data-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #edf0f4;padding:10px 8px}.data-table tbody tr{transition:background .15s}.data-table tbody tr:hover{background:#fafbfe}.data-table th{color:#7e8997;z-index:2;background:#f9fafcf5;font-weight:720;position:sticky;top:0}.status-chip,.yn{color:#697485;background:#f0f2f5;border-radius:999px;padding:4px 6px;font-size:7px}.yn.yes{background:var(--ok-soft);color:var(--ok)}.yn.no{color:#818b97;background:#f3f4f6}.log-list{gap:8px;display:grid}.log-row{background:#f9fafcb8;border:1px solid #edf0f4;border-radius:12px;grid-template-columns:105px minmax(0,1fr) auto;align-items:start;gap:10px;padding:10px 11px;font-size:8px;transition:transform .16s,background .16s;display:grid}.log-row:hover{background:#fff;transform:translate(2px)}.log-row time{color:#8b96a4}.doc-pane{border:1px solid var(--line);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:#ffffffd6;border-radius:21px;flex-direction:column;max-height:calc(100vh - 112px);display:flex;position:sticky;top:88px;overflow:hidden;box-shadow:0 20px 56px #1f2b4217,inset 0 1px #ffffffe0}.doc-head{justify-content:space-between;align-items:center;gap:10px;padding:16px 17px 11px;display:flex}.doc-head h2{margin:0;font-size:13px}.doc-head select{border:1px solid var(--line);background:#fff;border-radius:10px;outline:none;max-width:210px;padding:7px 8px;font-size:8px}.doc-toolbar{border-bottom:1px solid #edf0f4;gap:6px;padding:0 17px 11px;display:flex}.doc-viewer{color:#465362;background:linear-gradient(#ffffffb8,#fafbfdad);min-height:520px;padding:19px 20px;font-size:9px;line-height:1.84;overflow:auto}.doc-viewer pre{white-space:pre-wrap;margin:0;font-family:inherit}.doc-viewer iframe{border:0;border-radius:10px;width:100%;height:calc(100vh - 210px)}.reminder-panel{overflow:hidden}.reminder-row{border-bottom:1px solid #edf0f4;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:14px;padding:15px 18px;transition:background .15s;display:grid}.reminder-row:hover{background:#fafbfe}.reminder-row:last-child{border-bottom:0}.reminder-row b{font-size:10px}.reminder-row span{color:var(--muted);margin-top:3px;font-size:8px;display:block}.switch{background:#d9dee5;border:0;border-radius:99px;width:39px;height:23px;transition:background .18s;position:relative}.switch:after{content:"";width:17px;height:17px;transition:left .18s var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 2px 6px #1f2b4229}.switch.on{background:linear-gradient(135deg,#5662df,#7381f5)}.switch.on:after{left:19px}.status-create-grid{grid-template-columns:minmax(140px,1.4fr) 80px repeat(3,minmax(105px,1fr)) auto;align-items:end;gap:8px;margin-bottom:12px;display:grid}.check-label{color:#657080;align-items:center;gap:7px;min-height:36px;font-size:8px;display:flex!important}.check-label input{accent-color:#5965dd;width:15px;height:15px}.status-list{gap:7px;display:grid}.status-setting-row{background:#ffffffb8;border:1px solid #edf0f4;border-radius:13px;grid-template-columns:minmax(130px,1fr) minmax(250px,1.4fr) auto;align-items:center;gap:10px;padding:10px 11px;display:grid}.status-setting-row.inactive{opacity:.68;background:#f7f8fa}.status-setting-row b{font-size:9px;display:block}.status-setting-row span{color:var(--muted);font-size:7px}.status-flags{flex-wrap:wrap;gap:5px;display:flex}.soft-badge.muted{color:#8c96a2;background:#f2f3f5}.text-btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.reminder-management{margin-top:12px}.settings-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.settings-shell{grid-template-columns:190px minmax(0,1fr);align-items:start;gap:14px;display:grid}.settings-nav{border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffc2;border-radius:18px;flex-direction:column;gap:6px;padding:9px;display:flex;position:sticky;top:92px}.settings-nav button{color:#687486;text-align:left;min-height:40px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:11px;padding:9px 12px;font-weight:720}.settings-nav button:hover,.settings-nav button.active{color:#4654c9;background:#eef0ff}.settings-nav button:focus-visible{outline-offset:2px;outline:3px solid #5662df40}.settings-panels{min-width:0}.settings-panels>[hidden]{display:none!important}.settings-panel-stack{gap:12px;display:grid}.setting-head.actions{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.general-settings-form{grid-template-columns:minmax(0,1fr) auto}.sync-summary{color:#657181;background:#f8f9fc;border:1px solid #e8ecf3;border-radius:15px;grid-template-columns:auto 1fr;gap:5px 12px;margin-top:14px;padding:14px;font-size:9px;display:grid}.sync-summary b{color:#394555}.sync-summary p{grid-column:1/-1;margin:0;line-height:1.65}.inline-note{flex:1;margin:0}.setting-panel{border:1px solid var(--line);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffc;border-radius:21px;padding:19px;box-shadow:0 12px 34px #1f2b420e,inset 0 1px #ffffffd9}.setting-head h2{font-size:13px}.setting-head p{color:var(--muted);font-size:8px;line-height:1.55}.settings-form{grid-template-columns:minmax(0,1fr) minmax(150px,.6fr) auto;align-items:end;gap:8px;margin:13px 0;display:grid}.settings-form.vendor{grid-template-columns:minmax(0,1fr) auto}.settings-form label,.modal label{color:#798596;font-size:8px}.settings-form input,.settings-form select,.modal input,.modal select,.modal textarea{width:100%;min-height:39px;color:var(--text);background:#ffffffe6;border:1px solid #dce2ea;border-radius:11px;outline:0;margin-top:5px;padding:8px 10px;transition:border-color .18s,box-shadow .18s,background .18s}.settings-form input:focus,.settings-form select:focus,.modal input:focus,.modal select:focus,.modal textarea:focus{background:#fff;border-color:#a4adff;box-shadow:0 0 0 4px #5662df17,0 8px 20px #1f2b420b}.setting-table{border-collapse:collapse;width:100%;font-size:8px}.setting-table th,.setting-table td{text-align:left;border-bottom:1px solid #edf0f4;padding:9px 7px}.setting-table tbody tr:hover{background:#fafbfe}.setting-table th{color:#7f8996}.setting-note{color:#687485;background:#f8f9fcd1;border:1px solid #e9edf3;border-radius:14px;margin-top:12px;padding:12px;font-size:8px;line-height:1.65}.reminder-setting{background:linear-gradient(145deg,#f8f9ff,#fafbfc);border:1px solid #e8ecf5;border-radius:15px;align-items:end;gap:9px;margin-top:12px;padding:14px;display:flex}.reminder-setting label{color:#778393;font-size:8px}.reminder-setting input{border:1px solid #dde2e9;border-radius:10px;width:100px;min-height:37px;margin-top:5px;padding:7px 8px}.recovery-panel{gap:12px;display:grid}.recovery-controls{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;display:grid}.recovery-controls label{color:#778393;font-size:8px}.recovery-controls select,.recovery-controls input{width:100%;min-height:39px;color:var(--text);background:#ffffffe6;border:1px solid #dce2ea;border-radius:11px;margin-top:5px;padding:8px 10px}.recovery-password{grid-column:span 1}.recovery-actions{gap:8px;display:flex}.recovery-status{color:var(--muted);margin:0;font-size:8px}.recovery-preview,.recovery-result{border-radius:14px;font-size:8px;line-height:1.65}.recovery-preview{background:#f8f9fc;border:1px solid #e9edf3;padding:12px}.recovery-preview p{margin:0 0 6px}.recovery-preview ul{margin:5px 0 9px;padding-left:18px}.recovery-result{color:var(--ok);align-items:center;gap:10px;font-weight:750;display:flex}.recovery-result:empty,.recovery-preview:empty{display:none}.modal-mask{-webkit-backdrop-filter:blur(11px)saturate(120%);backdrop-filter:blur(11px)saturate(120%);z-index:100;background:#19202d57;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.modal-mask.open{animation:.2s pageIn;display:flex}.modal{-webkit-backdrop-filter:blur(26px);backdrop-filter:blur(26px);width:min(650px,100%);max-height:84vh;animation:cardIn .28s var(--ease);background:#fffffff0;border:1px solid #dce2ebeb;border-radius:23px;padding:22px 24px;overflow:auto;box-shadow:0 34px 100px #19202d3d,inset 0 1px #ffffffe6}.modal h2{letter-spacing:-.03em;margin-bottom:4px;font-size:18px}.modal .hint{color:var(--muted);margin-bottom:13px;font-size:8px;line-height:1.55}.modal textarea{resize:vertical;min-height:90px}.modal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.modal-grid .wide{grid-column:1/-1}.workflow-status-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;display:grid}.modal .workflow-status-check{color:#657080;align-items:center;gap:8px;min-width:0;min-height:38px;line-height:1.4;display:flex}.modal .workflow-status-check input[type=checkbox]{accent-color:#5965dd;border-radius:4px;flex:none;width:16px;height:16px;min-height:0;margin:0;padding:0}.workflow-status-default{justify-self:start}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.detail-section-nav{z-index:22;-webkit-backdrop-filter:blur(20px)saturate(150%);backdrop-filter:blur(20px)saturate(150%);background:#ffffffe0;border:1px solid #dae0e9e6;border-radius:14px;gap:7px;margin-top:18px;padding:6px;display:flex;position:sticky;top:72px;overflow-x:auto;box-shadow:0 8px 26px #1f2b420f}.detail-section-nav button{color:var(--muted);white-space:nowrap;cursor:pointer;font:inherit;background:0 0;border:0;border-radius:10px;align-items:center;gap:7px;padding:9px 14px;display:flex}.detail-section-nav button.active{color:var(--ink);background:#fff;font-weight:700;box-shadow:0 5px 18px #252f4814}.detail-tab-badge{color:#667186;background:#edf0f6;border-radius:999px;place-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11px;font-weight:720;display:inline-grid}.detail-section-nav button.active .detail-tab-badge{background:var(--accent-soft);color:var(--accent)}.pricing-summary{grid-template-columns:repeat(4,minmax(0,1fr));margin:16px 0}.allocation-chart{background:linear-gradient(145deg,#fafbff,#fff);border:1px solid #e5e9f1;border-radius:17px;margin-bottom:16px;padding:16px}.allocation-chart h3{margin:0 0 11px;font-size:14px}.allocation-track{background:#f1f3f7;border:1px solid #dfe4ec;border-radius:12px;width:100%;height:40px;display:block;overflow:hidden}.allocation-track-empty{background:repeating-linear-gradient(135deg,#f3f5f8 0 10px,#eceff4 10px 20px)}.allocation-segment{stroke:#ffffff70;stroke-width:.15px}.allocation-segment[data-allocation-color="0"]{fill:#5662df}.allocation-legend-item i[data-allocation-color="0"]{background:#5662df}.allocation-segment[data-allocation-color="1"]{fill:#38a2c7}.allocation-legend-item i[data-allocation-color="1"]{background:#38a2c7}.allocation-segment[data-allocation-color="2"]{fill:#6a8f5d}.allocation-legend-item i[data-allocation-color="2"]{background:#6a8f5d}.allocation-segment[data-allocation-kind=unallocated]{fill:#b7bfca}.allocation-legend-item i[data-allocation-kind=unallocated]{background:#b7bfca}.allocation-legend{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:11px;display:grid}.allocation-legend-item{min-width:0;color:var(--text-2);font:inherit;text-align:left;background:#f5f7fa;border:0;border-radius:11px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:4px 7px;padding:8px 9px;display:grid}.allocation-legend-item:not(:disabled){cursor:pointer}.allocation-legend-item:not(:disabled):hover{background:#eef1fb}.allocation-legend-item:disabled{opacity:1}.allocation-legend-item i{border-radius:50%;grid-row:1/3;width:10px;height:10px}.allocation-legend-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.allocation-legend-item b{font-size:13px}.allocation-legend-item small{color:var(--muted);grid-column:2/4}.allocation-empty{color:var(--muted);text-align:center;margin:10px 0 0}.supplier-insight-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px;display:grid}.supplier-insight-card{min-width:0;box-shadow:var(--shadow-sm);background:#ffffffdb;border:1px solid #e2e7ef;border-radius:17px;overflow:hidden}.supplier-insight-card.inactive{color:#687485;background:#f7f8fa}.supplier-insight-head{border-bottom:1px solid #e9edf3;justify-content:space-between;align-items:flex-start;gap:14px;padding:15px 16px;display:flex}.supplier-insight-head>div:first-child{align-items:center;gap:7px;min-width:0;display:flex}.supplier-insight-head h3{overflow-wrap:anywhere;margin:0;font-size:15px}.supplier-insight-totals{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;gap:11px;font-size:12px;display:flex}.supplier-insight-totals b{color:var(--text)}.supplier-type-list{display:grid}.supplier-type-row{border-bottom:1px solid #edf0f4;grid-template-columns:minmax(135px,1fr) minmax(220px,1.25fr) auto;align-items:center;gap:12px;min-width:0;padding:12px 16px;display:grid}.supplier-type-row:last-child{border-bottom:0}.supplier-type-name{min-width:0}.supplier-type-name b{overflow-wrap:anywhere;display:block}.supplier-type-name span{color:var(--muted);overflow-wrap:anywhere;margin-top:4px;font-size:12px;display:block}.supplier-type-values{color:var(--muted);grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;font-size:12px;display:grid}.supplier-type-values span{min-width:0}.supplier-type-values b{color:var(--text);margin-top:2px;font-size:14px;display:block}.supplier-type-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.supplier-type-empty{padding:18px}.supplier-insight-empty{text-align:center;color:var(--muted);background:#f8f9fc;border:1px dashed #d7dde7;border-radius:17px;grid-column:1/-1;padding:24px}.supplier-insight-empty b{color:var(--text)}.supplier-insight-empty p{margin:6px 0 12px}.supplier-insight-empty>div{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.supplier-fact-signals{border-bottom:1px solid #edf0f4;flex-wrap:wrap;gap:6px;padding:9px 16px;display:flex}.supplier-fact-signals span{color:#667186;background:#f3f5f8;border-radius:999px;padding:5px 8px;font-size:11px}.supplier-fact-signals [data-signal-kind=delivery]{color:#9b6a24;background:#fff5e9}.supplier-card-actions{background:#fafbfc;border-top:1px solid #edf0f4;align-items:center;gap:10px;padding:11px 16px;display:flex}.supplier-card-actions .main{margin-right:auto}.batch-filter-shell{background:linear-gradient(145deg,#fafbff,#fff);border:1px solid #e4e8ef;border-radius:17px;gap:12px;margin:0 0 14px;padding:14px;display:grid}.batch-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.batch-summary-card{color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#fff;border:1px solid #e5e9f1;border-radius:13px;grid-template-columns:1fr auto;align-items:center;gap:3px 8px;padding:10px 12px;display:grid}.batch-summary-card span{color:var(--muted);font-size:11px}.batch-summary-card b{grid-area:1/2/3;font-size:20px}.batch-summary-card small{color:#8a94a3}.batch-summary-card.active{background:var(--accent-soft);border-color:#b8c0ff;box-shadow:0 7px 20px #5662df1a}.batch-filter-bar{grid-template-columns:repeat(5,minmax(120px,1fr)) auto;align-items:end;gap:8px;display:grid}.batch-filter-bar>label,.batch-date-filters label{color:var(--muted);gap:5px;font-size:11px;display:grid}.batch-filter-bar select,.batch-filter-bar input{border:1px solid var(--line);min-width:0;height:36px;color:var(--text);font:inherit;background:#fff;border-radius:10px;padding:0 9px}.batch-date-filters{position:relative}.batch-date-filters summary{border:1px solid var(--line);cursor:pointer;height:36px;color:var(--text);background:#fff;border-radius:10px;align-items:center;padding:0 11px;font-size:12px;display:flex}.batch-date-filters>div{z-index:8;border:1px solid var(--line);width:420px;box-shadow:var(--shadow);background:#fff;border-radius:14px;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:12px;display:grid;position:absolute;top:42px;right:0}.batch-filter-result{min-height:26px;color:var(--muted);align-items:center;gap:10px;font-size:12px;display:flex}.filter-chip-list{flex-wrap:wrap;gap:6px;display:flex}.filter-chip{color:#596679;font:inherit;cursor:pointer;background:#f5f7fa;border:1px solid #dfe4ec;border-radius:999px;padding:5px 8px;font-size:11px}.batch-filter-result>.text-btn{margin-left:auto}.batch-expand{color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:650}.batch-detail-row:hover{background:0 0!important}.batch-detail-row td{background:#f8f9fc;padding:0!important}.batch-detail-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:13px 42px;display:grid}.batch-detail-grid span{color:var(--muted);font-size:11px;display:block}.batch-detail-grid b{white-space:normal;overflow-wrap:anywhere;margin-top:4px;font-size:12px;display:block}.batch-empty-state button{margin:7px auto 0;display:block}.customer-pricing{padding-top:2px}.customer-pricing-head{margin-bottom:10px}.customer-pricing-head h3{margin:0 0 4px;font-size:15px}.customer-pricing-head p{color:var(--muted);margin:0;font-size:12px}.customer-pricing .table-wrap{max-height:none}.business-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}[data-detail-panel][hidden],#docPane[hidden],#toggleDocBtn[hidden]{display:none!important}.detail-layout:not(.business-documents){grid-template-columns:minmax(0,1fr)}.detail-layout.business-documents .detail-main{min-width:0}@media (width<=980px){.business-kpis,.pricing-summary,.allocation-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.supplier-insight-grid{grid-template-columns:minmax(0,1fr)}.detail-section-nav{margin-inline:-2px}.batch-filter-bar{grid-template-columns:repeat(3,minmax(120px,1fr))}.batch-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=620px){.pricing-summary,.allocation-legend,.batch-summary-grid,.batch-filter-bar,.batch-detail-grid{grid-template-columns:minmax(0,1fr)}.supplier-insight-head,.supplier-type-row{grid-template-columns:minmax(0,1fr);display:grid}.supplier-insight-totals,.supplier-type-actions{justify-content:flex-start}.supplier-type-values{grid-template-columns:repeat(2,minmax(0,1fr))}.allocation-segment span{font-size:10px}.batch-date-filters>div{grid-template-columns:minmax(0,1fr);width:auto;margin-top:8px;position:static}.batch-filter-result{flex-direction:column;align-items:flex-start}}.toast{color:#fff;opacity:0;pointer-events:none;z-index:120;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#19202df0;border-radius:13px;padding:11px 14px;font-size:8px;transition:all .18s;position:fixed;bottom:24px;right:24px;transform:translateY(8px)scale(.98);box-shadow:0 16px 46px #00000038}.toast.show{opacity:1;animation:.22s toastIn;transform:none}.empty{text-align:center;color:#8b96a4;padding:30px;font-size:8px}.delivery-plan-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;display:flex}.delivery-import-shell{z-index:110;pointer-events:none;background:linear-gradient(90deg,#0000 0 55%,#1f2b4214 100%);position:fixed;inset:0}.delivery-import-drawer{pointer-events:auto;width:min(680px,100%);height:100%;animation:drawerIn .24s var(--ease);background:#fffffffa;border-left:1px solid #dae0e9f5;flex-direction:column;display:flex;position:absolute;top:0;right:0;box-shadow:-24px 0 72px #1f2b4229}@keyframes drawerIn{0%{opacity:.65;transform:translate(22px)}to{opacity:1;transform:none}}.drawer-head{background:linear-gradient(150deg,#fafbff,#fff);border-bottom:1px solid #e9edf3;justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 24px 17px;display:flex}.drawer-head h2{letter-spacing:-.025em;margin:3px 0 4px;font-size:18px}.drawer-head p{color:var(--muted);margin:0;font-size:9px}.drawer-body{gap:16px;padding:18px 24px 28px;display:grid;overflow:auto}.import-file-panel{background:#fafbfe;border:1px solid #e5eaf2;border-radius:16px;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:9px;padding:14px;display:grid}.import-file-panel label{color:#526071;grid-column:1/-1;font-size:9px;font-weight:760}.import-file-panel input,.import-file-panel select{background:#fff;border:1px solid #dce2ea;border-radius:10px;width:100%;min-height:39px;padding:7px 9px;font-size:9px}.import-file-panel select{grid-column:1/-1}.import-file-panel .file-summary,.import-supplier-hint{color:var(--muted);grid-column:1/-1;font-size:8px}.import-selected-vendor{background:#f5f8fd;border:1px solid #dfe8f5;border-radius:13px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px 14px;display:flex}.import-selected-vendor span{color:var(--muted);font-size:8px}.import-selected-vendor b{font-size:11px}[data-delivery-import-preview]{gap:16px;display:grid}.import-summary{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.import-summary span{color:#657181;background:#f5f7fa;border-radius:12px;padding:11px 12px;font-size:8px}.import-summary b{color:var(--text);margin-top:3px;font-size:15px;display:block}.import-summary .accept{color:#36805d;background:#edf8f2}.import-summary .error{color:#b34b4b;background:#fff0f0}.import-summary .skip{color:#6f7885;background:#f2f3f6}.import-section{gap:8px;display:grid}.import-section h3{margin:0;font-size:10px}.import-errors{background:snow;border:1px solid #f1d2d2;border-radius:14px;padding:13px}.import-table-wrap{border:1px solid #e8ecf2;border-radius:12px;overflow:auto}.import-table{min-width:640px}.duplicate-row{color:#818b98;background:#f8f9fb}.import-result{border-radius:999px;padding:4px 7px;font-size:7px;font-weight:780;display:inline-flex}.import-result.accept{color:#347a59;background:#e9f7ef}.import-result.skip{color:#717b88;background:#eceff3}.import-empty-state,.import-message{color:#697484;background:#f6f7fa;border-radius:13px;padding:14px;font-size:9px;line-height:1.65}.import-empty-state p{margin:0}.import-message{color:#966220;background:#fff5e8;margin:0}.import-empty{padding:18px}.drawer-actions{background:linear-gradient(#fff0,#fff 30%);justify-content:flex-end;padding:14px 0 0;display:flex;position:sticky;bottom:-28px}@media (width<=1320px){.project-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr 420px}.detail-layout{grid-template-columns:minmax(0,1.2fr) 390px}.vendor-cards{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}}@media (width<=980px){.dashboard-workspace-layout.is-timeline,.dashboard-workspace-layout.is-tasks{grid-template-columns:1fr}.dashboard-scope-note{grid-column:1/-1}.supplier-delivery-row{grid-template-columns:minmax(170px,1.2fr) minmax(150px,1fr) repeat(2,minmax(120px,.8fr))}.supplier-delivery-row>:nth-child(3),.supplier-delivery-row>:nth-child(5){display:none}.settings-shell{grid-template-columns:1fr}.settings-nav{overscroll-behavior-x:contain;flex-direction:row;padding:7px;position:static;overflow-x:auto}.settings-nav button{text-align:center;white-space:nowrap;flex:none}.status-create-grid{grid-template-columns:1fr 90px 1fr 1fr}.status-create-grid .primary{grid-column:span 2}.status-setting-row{grid-template-columns:1fr;align-items:start}.reminder-row{grid-template-columns:1fr auto;gap:8px}.delivery-import-shell{background:#1f2b421f}.delivery-import-drawer{width:min(620px,100%)}}@media (width<=620px){.dashboard-scope-form{align-items:stretch}.dashboard-scope-control,.dashboard-scope-trigger,.dashboard-date-range{width:100%}.dashboard-scope-popover{width:auto;max-height:70vh;position:fixed;inset:auto 10px 10px}.dashboard-date-range{justify-content:center}.dashboard-summary-band{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-summary-cell:nth-child(2){border-right:0}.dashboard-summary-cell:nth-child(-n+2){border-bottom:1px solid #17202d1a}.dashboard-workspace-panel{padding:10px}.dashboard-workspace-head{flex-direction:column;align-items:flex-start}.delivery-timeline{max-width:100%;overflow-x:auto}.dashboard-task-row{grid-template-columns:72px minmax(0,1fr) auto}.dashboard-task-context,.dashboard-task-detail{grid-column:2/-1}.dashboard-drawer{width:100%;height:min(82vh,720px);top:auto;transform:translateY(100%)}.dashboard-drawer[aria-hidden=false]{transform:none}.dashboard-drawer{box-shadow:none;background:0 0}.dashboard-bottom-sheet{overscroll-behavior:contain;border-radius:22px 22px 0 0;box-shadow:0 -20px 60px #1f2b4233}.dashboard-drawer-header{z-index:2;padding-top:calc(22px + env(safe-area-inset-top,0px));background:var(--panel-solid);position:sticky;top:0}.dashboard-drawer-body{padding-bottom:calc(28px + env(safe-area-inset-bottom,0px))}.supplier-delivery-heading{flex-direction:column;align-items:flex-start}.supplier-delivery-row{grid-template-columns:minmax(150px,1.2fr) minmax(140px,1fr) minmax(110px,.8fr);min-width:440px}.supplier-delivery-row>:nth-child(3){display:none}.general-settings-form{grid-template-columns:1fr}.reminder-setting{flex-direction:column;align-items:stretch}.reminder-setting input{width:100%}.setting-head.actions{flex-direction:column;align-items:stretch}.setting-head.actions button{align-self:flex-start}}@media (prefers-reduced-motion:reduce){:root{--dashboard-motion-press:0s;--dashboard-motion-number:0s;--dashboard-motion-tooltip:0s;--dashboard-motion-morph:0s;--dashboard-motion-drawer:0s;--dashboard-motion-workspace:0s;--dashboard-motion-highlight:0s}*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.doc-viewer img{max-width:100%;max-height:640px;margin:auto;display:block}.doc-viewer iframe{border:0;width:100%;min-height:620px}.doc-viewer pre{white-space:pre-wrap;overflow:auto}.file-summary{color:#667085;font-size:13px}body{min-width:0;font-size:14px}.primary,.ghost,.danger-ghost,.small,nav button,.settings-nav button,input:not([type=checkbox]):not([type=radio]),select,textarea{min-height:40px;font-size:14px}.text-btn{min-height:40px;padding:0 4px;font-size:12px}.kicker,.brand small,.save-status,.tag,.pill,.soft-badge,.row-side,.block-head p,.metric span,.type-row .nums,.vendor-card .due,.vk span,.milestone-main span,.batch-selection-toolbar,.inline-select,.data-table,.status-chip,.yn,.log-row,.setting-head p,.settings-form label,.modal label,.modal .hint,.setting-table,.setting-note,.reminder-setting label,.recovery-status,.recovery-preview,.recovery-result,.toast,.empty,.import-file-panel .file-summary,.import-summary span,.import-result,.auth-hint,.auth-card label,.auth-error,.brand-line span,.hero-card p,.page-title p,.hero-date span,.stat .label,.stat small,.panel-head p,.row-desc,.due-main b,.due-main span,.due-days,.client,.project-summary,.mini-kpi span,.bar-label,.bar-label b,.detail-hero p,.vk b,.vendor-card .plan-line,.milestone-index,.inline-state,.doc-head select,.doc-viewer,.reminder-row span,.check-label,.status-setting-row span,.sync-summary,.recovery-controls label,.drawer-head p,.import-file-panel label,.import-file-panel input,.import-section h3,.import-empty-state,.import-message{font-size:12px}.row-title,.type-row .name,.vendor-card h3,.milestone-main b,.reminder-row b,.status-setting-row b{font-size:14px}.block-head h2,.setting-head h2,.doc-head h2{font-size:17px}.data-table th,.data-table td,.setting-table th,.setting-table td{height:44px;padding:11px 10px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline-offset:2px;outline:3px solid #5662df57}.documents-workspace{grid-template-columns:minmax(240px,.6fr) minmax(0,1.4fr) minmax(280px,.7fr);align-items:start;gap:14px;min-width:0;display:grid}.detail-layout.business-documents{grid-template-columns:minmax(0,1fr)}.documents-workspace.records-collapsed{grid-template-columns:minmax(240px,.6fr) minmax(0,1.4fr)}.documents-workspace.records-collapsed .project-records-pane{display:none}.document-list-pane,.document-preview-pane,.project-records-pane{border:1px solid var(--line);background:#ffffffd1;border-radius:21px;min-width:0;overflow:hidden}.document-preview-pane{box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);position:sticky;top:88px}.documents-pane-head{border-bottom:1px solid #edf0f4;justify-content:space-between;align-items:flex-start;gap:10px;padding:16px;display:flex}.documents-pane-head h2{margin:0 0 4px;font-size:18px}.documents-pane-head p{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.document-filters{border-bottom:1px solid #edf0f4;gap:6px;padding:12px;display:flex;overflow-x:auto}.document-filters .active{background:var(--accent-soft);color:#4654c9;border-color:#aeb6ff}.document-list{max-height:calc(100vh - 290px);display:grid;overflow:auto}.document-list-item{min-height:58px;color:var(--text);text-align:left;background:0 0;border:0;border-bottom:1px solid #edf0f4;padding:12px 14px}.document-list-item:hover,.document-list-item.active{background:#f2f4ff}.document-list-item b{font-size:14px;display:block}.document-list-item span{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.45;display:block}.document-preview-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.document-preview{background:linear-gradient(#ffffffb8,#fafbfdad);min-height:560px;max-height:calc(100vh - 190px);padding:18px;line-height:1.7;overflow:auto}.document-preview pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.document-preview img{max-width:100%;max-height:680px;margin:auto;display:block}.document-preview iframe{border:0;width:100%;min-height:620px}.document-preview:fullscreen{background:#fff;max-height:none}.docx-preview{border:1px solid var(--line);max-width:860px;color:var(--text);overflow-wrap:anywhere;background:#fff;border-radius:12px;margin:0 auto;padding:28px 32px;box-shadow:0 8px 24px #2830410f}.docx-preview h1,.docx-preview h2,.docx-preview h3,.docx-preview h4,.docx-preview h5,.docx-preview h6{margin:1.2em 0 .55em;line-height:1.3}.docx-preview p{margin:.7em 0}.docx-preview ul,.docx-preview ol{padding-left:1.5em}.docx-preview blockquote{border-left:3px solid var(--line-strong);color:var(--text-2);margin:1em 0;padding:.4em 1em}.docx-preview table{border-collapse:collapse;width:100%;margin:1em 0}.docx-preview th,.docx-preview td{border:1px solid var(--line);vertical-align:top;padding:8px 10px}.docx-preview th{text-align:left;background:#f7f8fb}.docx-preview img{max-width:100%;height:auto;margin:1em auto}.docx-preview a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.project-records-pane .log-list{padding:10px}.project-records-pane .log-row{grid-template-columns:1fr;min-height:44px}.project-records-pane .log-row:hover{transform:none}.xlsx-sheet-tabs{gap:7px;margin-bottom:12px;display:flex;overflow-x:auto}.xlsx-sheet-tabs [aria-selected=true]{background:var(--accent-soft);color:#4654c9;border-color:#aeb6ff}.xlsx-table-wrap{border:1px solid #e3e8ef;border-radius:12px;overflow:auto}.xlsx-preview-table{border-collapse:collapse;min-width:100%;font-size:12px}.xlsx-preview-table th,.xlsx-preview-table td{text-align:left;white-space:pre-wrap;vertical-align:top;border:1px solid #e8ecf2;height:44px;padding:9px 10px}.xlsx-preview-table th{background:#f7f8fb;position:sticky;top:0}.xlsx-truncation,.document-metadata{color:var(--muted);font-size:12px;line-height:1.65}.skeleton{background:#edf0f5;border-radius:18px;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffffb8,#0000);animation:1.15s infinite skeletonSweep;position:absolute;inset:0;transform:translate(-100%)}.detail-skeleton{min-height:180px;margin-bottom:14px}.preview-skeleton{min-height:520px}@keyframes skeletonSweep{to{transform:translate(100%)}}.projects-skeleton{grid-column:1/-1;min-height:320px}.settings-skeleton{width:100%;min-height:420px}:is(html:has(#page-projects.active),html:has(#page-settings.active),body:has(#page-projects.active),body:has(#page-settings.active)){background:var(--dashboard-canvas)}:is(body:has(#page-projects.active),body:has(#page-settings.active)){min-height:100vh;color:var(--dashboard-ink)}:is(#page-projects,#page-settings){--section-canvas:var(--dashboard-canvas);--section-surface:var(--dashboard-panel);--section-inset:var(--dashboard-analysis-inset);--section-ink:var(--dashboard-ink);--section-muted:var(--dashboard-muted);--section-line:var(--dashboard-line);--section-line-soft:var(--dashboard-line-soft);--section-blue:var(--dashboard-blue);--section-blue-soft:var(--dashboard-blue-soft);color:var(--section-ink);font-family:IBM Plex Sans,Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif}:is(body:has(#page-projects.active) .topbar,body:has(#page-settings.active) .topbar){border-color:var(--dashboard-line);background:#fff;gap:18px;height:60px;padding:0 25px}:is(body:has(#page-projects.active) .brand,body:has(#page-settings.active) .brand){gap:10px;min-width:250px}:is(body:has(#page-projects.active) .brand-icon,body:has(#page-settings.active) .brand-icon){background:var(--dashboard-ink);border-radius:9px;width:30px;height:30px;font:650 11px IBM Plex Mono,monospace}:is(body:has(#page-projects.active) .brand small,body:has(#page-settings.active) .brand small){display:none}:is(body:has(#page-projects.active) nav,body:has(#page-settings.active) nav){gap:4px}:is(body:has(#page-projects.active) nav button,body:has(#page-settings.active) nav button){border-radius:7px;padding:8px 11px;font-size:12px}:is(body:has(#page-projects.active) nav button.active,body:has(#page-settings.active) nav button.active){color:var(--dashboard-ink);box-shadow:none;background:#edf0f4}body:has(#page-projects.active) nav button.active:after{display:none}body:has(#page-settings.active) nav button.active:after{display:none}:is(body:has(#page-projects.active) .workspace,body:has(#page-settings.active) .workspace){max-width:1440px;padding:22px 25px 36px}:is(#page-projects,#page-settings) .kicker{display:none}:is(#page-projects,#page-settings) .page-title{margin-bottom:16px}:is(#page-projects,#page-settings) .page-title h1{color:var(--section-ink);letter-spacing:-.04em;background:0 0;margin-bottom:7px;font-size:24px;font-weight:700}:is(#page-projects,#page-settings) .page-title p{color:var(--section-muted)}:is(#page-projects,#page-settings) .primary{background:var(--section-blue);border-radius:8px}:is(#page-projects,#page-settings) .primary:hover{background:#21499e;transform:translateY(-1px)}#page-projects .filters{gap:8px;margin-bottom:14px}#page-projects .search-wrap,#page-projects .filters select{border-color:var(--section-line);background:var(--section-surface);-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:8px}#page-projects .search-wrap:focus-within,#page-projects .filters select:focus-visible{border-color:var(--section-blue);box-shadow:0 0 0 3px #2855b61f}#page-projects .project-card{background:var(--section-surface);border:1px solid var(--section-line);-webkit-backdrop-filter:none;backdrop-filter:none;transition:transform .18s var(--dashboard-ease),border-color .18s ease,box-shadow .18s ease;border-radius:13px;padding:17px;position:relative;overflow:hidden;box-shadow:0 3px 12px #2332460a}#page-projects .project-card:before{background:var(--section-blue);opacity:1;border-radius:0 0 3px 3px;width:44px;height:3px;left:17px;right:auto}#page-projects .project-card:after{display:none}#page-projects .project-card:hover{border-color:#b7c7dc;transform:translateY(-1px);box-shadow:0 8px 24px #23324612}#page-projects .project-card:hover .project-name{color:var(--section-ink)}#page-projects .project-summary{background:var(--section-inset);color:#5d6b7d;border-color:#0000;border-radius:8px}#page-projects .project-kpis{border:1px solid var(--section-line);border-radius:9px;gap:0;overflow:hidden}#page-projects .mini-kpi{border:0;border-left:1px solid var(--section-line);background:#fff;border-radius:0;padding:9px}#page-projects .mini-kpi:first-child{border-left:0}#page-projects .project-card:hover .mini-kpi{background:#fff}#page-projects .project-progress-track rect{fill:var(--section-blue)}#page-projects .project-progress-track.delivery rect{fill:#6d87b8}#page-projects .card-actions{border-color:var(--section-line)}#page-projects .text-btn.main{color:var(--section-blue)}#page-settings .settings-nav{border-color:var(--section-line);-webkit-backdrop-filter:none;backdrop-filter:none;background:#e4e9ef;border-radius:13px;gap:4px;padding:7px}#page-settings .settings-nav button{color:#5e6d7e;border-radius:8px}#page-settings .settings-nav button:hover,#page-settings .settings-nav button.active{color:var(--section-blue);background:#fff;box-shadow:0 2px 7px #21304312}#page-settings .settings-nav button:focus-visible{outline-color:#2855b64d}#page-settings .setting-panel{border-color:var(--section-line);background:var(--section-surface);-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:13px;padding:18px;box-shadow:0 3px 12px #2332460a}#page-settings .sync-summary,#page-settings .status-setting-row,#page-settings .setting-note,#page-settings .reminder-setting,#page-settings .recovery-preview{border-color:var(--section-line-soft);background:var(--section-inset);border-radius:9px}#page-settings .settings-form input,#page-settings .settings-form select,#page-settings .reminder-setting input,#page-settings .recovery-controls select,#page-settings .recovery-controls input{border-color:var(--section-line);background:#f6f8fa;border-radius:8px}#page-settings .settings-form input:focus,#page-settings .settings-form select:focus,#page-settings .reminder-setting input:focus,#page-settings .recovery-controls select:focus,#page-settings .recovery-controls input:focus{border-color:var(--section-blue);background:#fff;box-shadow:0 0 0 3px #2855b61f}#page-settings .setting-table th,#page-settings .setting-table td{border-color:var(--section-line-soft)}#page-settings .setting-table tbody tr:hover{background:#f6f8fa}@media (width<=980px){#page-settings .settings-nav{overscroll-behavior-x:contain;flex-direction:row;padding:7px;position:static;overflow-x:auto}}.project-upload-card{border:1px solid var(--line);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffffc7;border-radius:22px;margin-bottom:14px;padding:16px}.project-upload-intake{gap:12px;display:grid}.project-upload-fields{grid-template-columns:minmax(0,1.3fr) minmax(180px,.7fr);gap:10px;display:grid}.project-upload-fields label{color:var(--text-2);gap:6px;font-size:12px;display:grid}.project-upload-fields input,.project-upload-fields select{border:1px solid var(--line-strong);width:100%;color:var(--text);background:#fff;border-radius:12px;outline:0;padding:8px 11px}.project-upload-fields input:focus,.project-upload-fields select:focus{border-color:#a4adff;box-shadow:0 0 0 4px #5662df17}.project-upload-drop-zone{text-align:center;min-height:168px;transition:border-color .18s var(--ease),background .18s var(--ease),transform .18s var(--ease),box-shadow .18s var(--ease);background:linear-gradient(145deg,#f5f7fff5,#f7fcffe6);border:1.5px dashed #aeb8cf;border-radius:18px;place-items:center;gap:7px;padding:24px;display:grid;position:relative}.project-upload-drop-zone:hover,.project-upload-drop-zone.drag-active{border-color:var(--accent);background:linear-gradient(145deg,#eef0fffa,#eef9fff5);transform:translateY(-1px);box-shadow:0 14px 34px #5662df1a}.upload-drop-icon{background:linear-gradient(145deg,var(--accent),var(--accent-3));color:#fff;border-radius:13px;place-items:center;width:38px;height:38px;font-size:20px;display:grid;box-shadow:0 10px 24px #5662df33}.project-upload-drop-zone>b{font-size:16px}.project-upload-drop-zone p{max-width:720px;color:var(--text-2);margin:0;font-size:13px;line-height:1.65}.project-upload-drop-zone small{color:var(--muted);font-size:12px;line-height:1.55}.project-upload-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.project-upload-status{color:#4c5892;min-height:18px;margin:0;font-size:12px;line-height:1.5}.document-list-item.recently-uploaded{animation:documentArrive 1.05s var(--ease) 2;border-left:3px solid var(--ok);background:var(--ok-soft)}@keyframes documentArrive{0%,to{box-shadow:none}50%{box-shadow:inset 0 0 0 999px #39866014,0 0 0 4px #39866017}}.upload-center-host{z-index:68;pointer-events:none;position:fixed;bottom:22px;right:22px}.upload-center{pointer-events:none;justify-items:end;gap:9px;display:grid}.upload-center[hidden]{display:none}.upload-pill,.upload-center-panel{pointer-events:auto}.upload-pill{color:#fff;min-height:45px;transition:transform .18s var(--ease),box-shadow .18s var(--ease);background:linear-gradient(120deg,#505ddd,#7080f4);border:1px solid #ffffffbf;border-radius:999px;padding:0 17px;font-weight:750;box-shadow:0 16px 38px #404cbd45}.upload-pill:hover{transform:translateY(-2px);box-shadow:0 20px 46px #404cbd57}.upload-pill-pulse{background:#a8f0d1;border-radius:50%;width:8px;height:8px;margin-right:8px;animation:1.8s ease-in-out infinite uploadPulse;display:inline-block;box-shadow:0 0 0 5px #a8f0d12b}@keyframes uploadPulse{50%{opacity:.7;transform:scale(.72)}}.upload-center-panel{-webkit-backdrop-filter:blur(26px)saturate(155%);backdrop-filter:blur(26px)saturate(155%);width:min(860px,100vw - 32px);max-height:min(680px,100vh - 100px);animation:uploadCenterIn .22s var(--ease);background:#fcfdfff5;border:1px solid #d5dbe6eb;border-radius:24px;overflow:hidden;box-shadow:0 30px 90px #1d263b3d}@keyframes uploadCenterIn{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:none}}.upload-center-panel>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 20px;display:flex}.upload-center-panel h2{margin:2px 0 3px;font-size:20px}.upload-center-panel header p{color:var(--muted);margin:0;font-size:12px}.upload-center-head-actions{align-items:center;gap:7px;display:flex}.upload-center-columns,.upload-center-row{grid-template-columns:minmax(160px,1.4fr) minmax(120px,.9fr) minmax(130px,1fr) minmax(110px,.85fr) 92px minmax(120px,.8fr);align-items:center;gap:12px;display:grid}.upload-center-columns{color:var(--muted);border-bottom:1px solid #edf0f4;padding:9px 20px;font-size:11px}.upload-center-list{max-height:470px;overflow:auto}.upload-center-row{background:#ffffff9e;border-bottom:1px solid #edf0f4;min-height:82px;padding:13px 20px;transition:background .16s;position:relative}.upload-center-row:hover{background:#f8f9fd}.upload-file,.upload-project,.upload-progress,.upload-telemetry{min-width:0}.upload-file b,.upload-project b{text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.upload-file span,.upload-project span,.upload-telemetry span{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);margin-top:3px;font-size:11px;display:block;overflow:hidden}.upload-progress>div:first-child{color:var(--muted);justify-content:space-between;font-size:11px;display:flex}.upload-progress-track{background:#e7eaf1;border-radius:999px;height:6px;margin-top:7px;overflow:hidden}.upload-progress-track i{border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-3));height:100%;transition:width .22s var(--ease);display:block}.upload-state{align-items:center;gap:7px;font-size:12px;display:flex}.upload-state-dot{background:#8d99ac;border-radius:50%;width:8px;height:8px}.state-uploading .upload-state-dot,.state-authorizing .upload-state-dot,.state-completing .upload-state-dot{background:var(--accent);box-shadow:0 0 0 4px #5662df1c}.state-complete .upload-state-dot{background:var(--ok)}.state-failed .upload-state-dot{background:var(--danger)}.state-paused .upload-state-dot{background:var(--warn)}.upload-row-actions{justify-content:flex-end;gap:8px;display:flex}.upload-row-actions .text-btn{min-height:32px}.upload-error{color:var(--danger);grid-column:1/-1;margin:0;font-size:11px}.upload-center-empty{text-align:center;color:var(--muted);padding:30px}.upload-center-panel>footer{color:var(--muted);background:#f8f9fb;padding:11px 20px;font-size:11px}@media (width<=980px){.workspace,.topbar{padding-inline:16px}.brand{min-width:0}.brand small,.top-actions .save-status{display:none}.demo-banner{padding-inline:16px}.documents-workspace,.documents-workspace.records-collapsed{grid-template-columns:minmax(0,1fr)}.document-list-pane{order:1}.document-preview-pane{order:2;position:static}.project-records-pane{order:3}.documents-workspace.records-collapsed .project-records-pane{display:block}.document-list{max-height:360px}.document-preview{min-height:420px;max-height:none}.upload-center-columns{display:none}.upload-center-row{grid-template-columns:minmax(0,1fr) auto}.upload-project,.upload-progress,.upload-telemetry,.upload-state{grid-column:1/-1}.upload-row-actions{grid-area:1/2}.upload-center-host{bottom:16px;right:16px}}@media (width<=620px){.demo-banner{flex-direction:column;align-items:stretch;gap:10px}.demo-banner button{align-self:flex-start}.topbar{gap:6px;height:64px;padding-inline:10px}.topbar .brand,#refreshBtn{display:none}.topbar nav{justify-content:flex-start;gap:2px;min-width:0}.topbar nav button{min-width:44px;padding-inline:9px}.top-actions{gap:4px}.top-actions #quickAddBtn,.top-actions #logoutBtn{width:48px;padding:0}.top-actions .quick-add-label{display:none}.top-actions #logoutBtn{font-size:0}.top-actions #logoutBtn:before{content:"退出";font-size:14px}.project-upload-fields{grid-template-columns:minmax(0,1fr)}.workflow-status-options{grid-template-columns:1fr}.project-upload-drop-zone{min-height:190px;padding:20px 14px}.upload-center-panel{width:calc(100vw - 20px);max-height:calc(100vh - 76px)}.upload-center-host{bottom:10px;right:10px}.upload-center-panel>header{padding:15px}.upload-center-row{padding:12px 15px}.docx-preview{padding:18px 16px}}
