/* Studio / 建筑事务所：保留功能样式，以统一的空间、色彩与信息层次呈现。 */
:root{--paper:#f5f6f2;--paper-2:#eef1eb;--surface:#fff;--surface-2:#fafbf9;--ink:#142f35;--ink-2:#47655b;--muted:#74978b;--faint:#88a89d;--line:#ecefe9;--line-strong:#dfe5da;--blue:#276b67;--blue-soft:#f6f8f4;--terra:#d78b4c;--terra-soft:#fff3e7;--green:#349b8f;--amber:#b88228;--red:#cf6471;--radius:16px;--shadow:0 4px 22px rgba(39,61,95,.035)}
body{font-size:14px;letter-spacing:.01em}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button:focus-visible,a:focus-visible{outline:3px solid #40826c;outline-offset:3px}
input::placeholder,textarea::placeholder{color:#9ab8ae}
.btn{border-radius:9px;padding:9px 15px;font-weight:600;transition:background .18s,box-shadow .18s,transform .18s}
.btn-primary{box-shadow:0 3px 7px #276b671c}
.btn-primary:hover{background:#40826c;box-shadow:0 5px 14px #276b6730}
.btn-dark{background:#173b3d}.btn-dark:hover{background:#1c4336}
.btn-ghost:hover{background:#f7f9f6;border-color:#40826c;color:var(--blue)}
.btn-sm{font-size:12px;padding:6px 11px}
.app{grid-template-columns:238px minmax(0,1fr)}
.rail{background:#102b31;color:#ceddd8;border:0;padding:30px 18px 18px;position:relative;overflow:auto}
.rail-brand{padding:0 10px 34px;gap:12px;color:#93d4d2}
.rail-brand>svg{width:34px;height:34px;padding:5px;box-sizing:content-box;background:#ffffff0c;border:1px solid #ffffff14;border-radius:11px}
.rail-brand strong{color:#fff;font-size:16px;letter-spacing:.06em}.rail-brand span{color:#8eb1a5;margin-top:6px;letter-spacing:.3em;font-size:10px}
.rail-label{font-size:10px;letter-spacing:.12em;color:#84aa9d;padding:0 13px 13px;display:flex;justify-content:space-between}
.rail-label span{font-size:8px;opacity:.7;letter-spacing:.08em}
.rail-nav{gap:7px;flex:1}.nav-item{color:#b6ccc5;padding:12px 14px;border-radius:10px;font-size:13px;gap:13px;position:relative}
.nav-item svg{color:#99b8ae;width:18px;height:18px}.nav-item:hover{background:#ffffff09;color:#fff}
.nav-item.active{background:#c3e882;color:#fff;box-shadow:0 5px 15px #122c232b;font-weight:600}
.nav-item.active svg{color:#dbe2d5}.nav-item.active:after{content:"";position:absolute;right:14px;width:5px;height:5px;background:#40826c;border-radius:50%}
.rail-prompt{border:1px solid #ffffff13;background:linear-gradient(130deg,#306b5788,#24594711);border-radius:12px;padding:15px 13px;margin:35px 1px 22px;position:relative}
.rail-prompt-icon{color:#b5cbc4;font-size:20px;display:block;margin-bottom:8px}.rail-prompt strong{font-size:11px;color:#e7ece3;font-weight:500}.rail-prompt p{font-size:10px;color:#94b4a9;margin-top:4px}
.rail-foot{border-top:1px solid #ffffff13;padding-top:16px}.user-card{padding:6px 9px}.user-card:hover{background:#ffffff08}.avatar{background:#e1e7dc;color:#47675c;border-radius:11px;width:34px;height:34px}
.user-meta strong{color:#eef1eb;font-size:12px}.user-meta small{color:#94b5aa;font-size:10px}.rail-env{font-size:9px;color:#9bbab0;padding:10px 9px 0}
.main{background:var(--paper)}.topbar{background:#ffffffd9;padding:20px 34px;border-bottom:1px solid var(--line);min-height:92px}
.topbar-title h1{font-size:20px;letter-spacing:.02em}.topbar-title p{font-size:11px;margin-top:4px}.topbar-actions{align-items:center;gap:10px}.workspace-badge{font-size:10px;color:#6d9688;display:flex;align-items:center;gap:7px;margin-right:12px;white-space:nowrap}.workspace-badge i{width:6px;height:6px;border-radius:50%;background:#49ac99;box-shadow:0 0 0 4px #49ac9910}
.view{padding:26px 34px 48px;max-width:1600px;width:100%;margin:0 auto}.section-head{align-items:center;margin-bottom:18px}.section-head h2{font-size:14px;display:flex;align-items:center;gap:9px}.section-head h2:before{content:"";height:13px;width:3px;border-radius:2px;background:#a2bfb5}.section-head .sub{font-size:11px}
.card{border-color:#ecefe9;box-shadow:var(--shadow)}.card-pad{padding:21px 23px}.stack{gap:18px}.grid-2{gap:20px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}
.today-greet{margin-bottom:22px;align-items:center}.today-greet h2{font-size:23px;letter-spacing:.01em}.today-greet p{font-size:12px;color:#7b9b90;margin-top:6px}.date-stamp{font-size:10px;color:#8baaa0;line-height:1.8;letter-spacing:.08em}
.studio-hero{background:linear-gradient(110deg,#173b3d,#27605a);color:#fff;min-height:192px;border-radius:18px;margin-bottom:23px;padding:29px 32px;position:relative;overflow:hidden;display:flex;align-items:center;box-shadow:0 10px 24px -16px #265e4baa}
.studio-hero:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 65% 15%,#c3d5cf1a,transparent 60%);pointer-events:none}.hero-copy{position:relative;z-index:1;width:62%;max-width:580px}.hero-eyebrow{font-size:9px;letter-spacing:.22em;color:#bed2cb;margin-bottom:12px;display:flex;align-items:center;gap:9px}.hero-eyebrow:before{content:"";width:16px;height:1px;background:#83c7c8}.studio-hero h2{font-size:25px;font-weight:500;letter-spacing:.04em;line-height:1.45}.studio-hero p{font-size:11px;color:#c1d4ce;line-height:1.85;margin-top:9px;max-width:370px}.hero-actions{display:flex;gap:10px;margin-top:18px}.hero-actions .btn{font-size:11px;padding:7px 13px}.hero-actions .btn-primary{background:#e4f0ef;color:#285949;border-color:#e4f0ef}.hero-actions .btn-ghost{border-color:#ffffff35;background:#ffffff07;color:#edf0ea}.hero-actions .btn-ghost:hover{background:#ffffff15}
.hero-art{position:absolute;width:400px;max-width:48%;right:-14px;top:50%;transform:translateY(-48%);pointer-events:none}.hero-coordinate{position:absolute;right:24px;bottom:16px;color:#a3bfb6;font:8px var(--mono);letter-spacing:.15em;z-index:1}
.kpis{gap:16px;margin-bottom:24px}.kpi{border:1px solid var(--line);border-radius:14px;padding:19px 19px 16px;min-width:0}.kpi::after{display:none}.kpi .k-label{font-size:11px;letter-spacing:.02em}.kpi .k-value{font-size:31px;color:#48675d;line-height:1.25;margin-top:8px;font-weight:600}.kpi .k-note{font-size:10px;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:0}.kpi-icon{position:absolute;top:16px;right:17px;width:33px;height:33px;border-radius:10px;display:grid;place-items:center;background:#f6f8f4;color:#80a79a}.kpi-icon svg{width:17px;height:17px}.kpi:nth-child(2) .kpi-icon{background:#fff1e8;color:#cb945b}.kpi:nth-child(3) .kpi-icon{background:#f4f6f3;color:#94b5aa}.kpi:nth-child(4) .kpi-icon{background:#e8f5f1;color:#65aa9b}.kpi.warn .k-value{color:#cf8b54}
.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:16px}.week-day{padding:10px 2px 8px;border-radius:10px;display:grid;justify-items:center;gap:5px;color:#8aa99f;font-size:9px;border:1px solid transparent;transition:background .15s}.week-day b{font:15px var(--mono);color:#54796d}.week-day i{width:4px;height:4px;background:#e4e9e0;border-radius:50%;margin-top:2px}.week-day.has-events i{background:#58aaa1}.week-day.today{background:#669283;box-shadow:0 4px 12px #66928325;color:#e7ece4}.week-day.today b{color:#fff}.week-day.today i{background:#c7e5df}.week-day:hover{border-color:#afc7bf}
.timeline .tl-item{padding:15px 0;grid-template-columns:60px minmax(0,1fr);gap:13px}.tl-time{font-size:10px}.tl-time strong{font-size:12px;color:#577c70}.tl-body{min-width:0;border-left:2px solid #40826c;padding-left:13px}.tl-body strong{font-size:12px}.tl-meta{font-size:10px;margin-top:6px}.tag{font-size:10px;border:0;padding:3px 8px}.tag-blue{background:#f5f7f4;color:#7aa295}.tag-green{background:#e9f5f0;color:#4b9984}.tag-amber{background:#fff5e4;color:#b58b4c}.tag-red{background:#fff0ef;color:#c97c78}.tag-terra{background:#fff1e7;color:#c38b57}
.empty{color:#8aada1;font-size:12px;padding:28px 18px}.empty:before{content:"";display:block;width:38px;height:30px;margin:0 auto 14px;background:linear-gradient(135deg,#f5f7f3,#edf0ea);border:1px solid #e3e8df;border-radius:8px 8px 5px 5px;box-shadow:5px -5px 0 -2px #f6f8f4;transform:rotate(-4deg)}
.todo-add input{min-width:0;font-size:11px;border-color:var(--line);background:#f9faf9;padding:10px 12px}.todo-item{padding:12px 3px;border-bottom:1px solid #f3f6f1;border-radius:0}.todo-item:last-child{border:0}.todo-title{font-size:12px}.todo-sub{font-size:10px}.check{width:16px;height:16px;border-radius:5px;border-color:#d4e1dd}.todo-del{opacity:.6}.mini-row{background:#fbfcfb;border-color:#f2f5f0;padding:12px 11px;gap:10px}.mini-row .date-chip{background:#f4f6f3;border:0;color:#82a89b;border-radius:8px;font-size:9px;padding:5px 7px}.mini-row .date-chip b{font-size:17px;color:#669283}.mini-row .grow strong{font-size:11px}.mini-row .grow small{font-size:9px}.mini-row .tag{flex:none;font-size:9px}.p-bar{height:6px;background:#f1f4ef}.p-fill{background:linear-gradient(90deg,#40826c,#40826c)}.p-fill.warn{background:linear-gradient(90deg,#dba670,#ebc28e)}
.portfolio-summary{display:flex;align-items:center;gap:22px;padding:4px 0 17px;margin-bottom:18px;border-bottom:1px solid var(--line)}.progress-ring{--progress:0;flex:none;width:82px;height:82px;border-radius:50%;background:conic-gradient(#8dafa4 calc(var(--progress)*1%),#f3f5f1 0);display:grid;place-items:center;position:relative}.progress-ring:before{content:"";position:absolute;inset:7px;background:#fff;border-radius:50%}.progress-ring div{position:relative;text-align:center;font:20px var(--mono);color:#5e887a}.progress-ring small{display:block;font:8px var(--sans);color:#99b7ad;margin-top:3px}.portfolio-legend{font-size:10px;color:#8aaba0;display:grid;gap:7px}.portfolio-legend b{font-size:13px;color:#4a6b60;font-weight:500;margin-right:4px}.legend-dot{display:inline-block;width:5px;height:5px;background:#40826c;border-radius:50%;margin-right:7px}.legend-dot.green{background:#64ad9b}.legend-dot.amber{background:#e1b277}
.project-glance{padding:10px 0;border-bottom:1px solid #f4f6f3}.project-glance:last-child{border:0;padding-bottom:0}.project-glance-top{display:flex;justify-content:space-between;gap:15px;font-size:11px;margin-bottom:8px}.project-glance-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80%}.project-glance .mono{color:#81a79a;font-size:10px}
.studio-shortcuts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.shortcut{padding:16px 10px;text-align:center;border:1px solid var(--line);background:#fff;border-radius:12px;display:grid;justify-items:center;gap:9px;color:#6c988a;font-size:10px;transition:all .18s}.shortcut:hover{transform:translateY(-2px);border-color:#d0dfda;box-shadow:0 5px 18px #50746820}.shortcut svg{width:20px;height:20px;color:#7da497}.shortcut:nth-child(2) svg{color:#89ada1}.shortcut:nth-child(3) svg{color:#6da797}
.view-banner{padding:23px 26px;background:linear-gradient(110deg,#f0f3ed,#f5f7f4);border:1px solid #ebefe8;border-radius:15px;margin-bottom:23px;display:flex;justify-content:space-between;align-items:center;gap:20px}.view-banner h2{font-size:18px;color:#4f7266;font-weight:500}.view-banner p{font-size:11px;color:#83a99c;margin-top:6px;line-height:1.7}.view-banner .banner-mark{font:34px var(--mono);color:#b5ccc4;line-height:1}.view-banner .banner-mark small{display:block;font:8px var(--sans);letter-spacing:.17em;margin-top:5px;text-align:center}
.project-toolbar{display:flex;gap:14px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:20px}.filter-tabs{display:flex;padding:4px;background:#eef1eb;border-radius:10px;gap:3px}.filter-tabs button{padding:7px 14px;border-radius:7px;font-size:11px;color:#82a499}.filter-tabs button.active{background:#fff;color:#5f887a;box-shadow:0 2px 6px #4461570c}.project-search{border:1px solid var(--line-strong);background:white;border-radius:9px;padding:9px 13px;font-size:11px;width:230px;outline:none}.project-search:focus{border-color:#9cbab0;box-shadow:0 0 0 3px #276b6712}
.proj-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:19px}.proj-card{padding:0;overflow:hidden;border-radius:15px}.proj-card:hover{border-color:#cadad5;box-shadow:0 9px 26px #4361570c;transform:translateY(-3px)}.project-cover{height:92px;background-color:#f0f3ed;background-image:url('architecture.svg');background-position:58% 56%;background-repeat:no-repeat;background-size:240px;position:relative}.project-cover.tone-1{background-color:#e9f1ed;filter:hue-rotate(310deg)}.project-cover.tone-2{background-color:#f2ede6;filter:hue-rotate(175deg)}.project-cover span{position:absolute;bottom:11px;left:20px;font:8px var(--mono);letter-spacing:.15em;color:#679586}.project-card-body{padding:19px 20px 17px}.proj-name{font-size:15px;line-height:1.6;margin:4px 0 5px}.proj-code{font-size:9px;color:#99b7ad}.proj-client{font-size:10px}.proj-top .tag{flex:none;font-size:9px}.proj-progress{margin-top:18px}.p-meta{font-size:10px;margin-top:8px}.proj-foot{font-size:10px;margin-top:17px;padding-top:13px;gap:10px}.proj-foot span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-create{border:1px dashed #d2dfdb;display:grid;place-content:center;min-height:260px;color:#94b4a9;background:#fbfcfa;text-align:center}.proj-create b{font-size:30px;font-weight:300;margin-bottom:10px}.proj-create span{font-size:11px}
.cal-wrap,.gantt{box-shadow:var(--shadow)}.cal-head{padding:20px 23px;background:#fff}.cal-head h2{color:#577d70}.cal-week{background:#fafbf9}.cal-week span{font-size:10px;padding:12px}.cal-cell{min-width:0;min-height:105px;padding:10px}.cal-cell.today{background:#f8f9f7}.cal-cell.today .cal-date{background:#7aa395}.cal-date{font-size:11px;color:#769f91}.cal-cell.dim{background:#fbfcfb}.cal-cell.sel{box-shadow:inset 0 0 0 2px #40826c}.cal-ev{font-size:9px;padding:3px 5px;border-radius:4px;background:#f3f5f1;color:#749e90;border-left-color:#40826c}
.gantt-head{background:#f5f7f4}.gantt-head .g-label{padding:14px 17px}.g-row{min-height:51px}.g-info{padding:10px 17px}.g-info strong{font-size:11px}.g-info small{font-size:9px}.g-bar{background:#8bafa3;top:17px;height:18px}.g-bar.done{background:#70afa1}.g-bar.late{background:#d9a275}.board-table th{background:#f9faf9;font-size:10px;padding:14px}.board-table td{font-size:11px;padding:15px 14px}.board-table .p-bar{min-width:70px}.view>.card:has(.board-table){overflow-x:auto}.risk-dot{background:#d48e91}.risk-dot.amber{background:#d5b077}
.assist-wrap{height:calc(100dvh - 250px);min-height:490px;gap:22px}.chat-head{padding:18px 20px;background:#fcfdfb}.chat-head .dot{background:#81bcae;box-shadow:0 0 0 4px #81bcae17}.chat-head strong{font-size:12px}.chat-head small{font-size:10px}.chat-log{padding:25px}.bubble{font-size:12px;line-height:1.9;background:#fafbf9;border-color:#f1f4ee;border-radius:2px 13px 13px 13px}.msg.me .bubble{background:#739e90;border-color:#739e90;border-radius:13px 2px 13px 13px}.msg.ai .who{color:#7ba396;background:#f3f5f1}.chat-input{padding:16px 18px}.chat-box textarea{min-width:0;font-size:12px}.chip{font-size:10px;padding:5px 9px}.chat-disabled-notice{font-size:11px;padding:11px 18px;background:#fff7e9;color:#aa8350;border-bottom:1px solid #f2e6d1;line-height:1.7}.assist-side h3{font-size:11px}.ctx-item{font-size:11px;padding:10px 0}.ctx-item b{color:#6c988a;font:14px var(--mono)}.report-editor textarea{font-size:12px;line-height:2;padding:22px;background:#fcfdfb}
.modal-root{background:#17392e66;backdrop-filter:blur(5px)}.modal{border:1px solid #ebefe8;border-radius:18px;box-shadow:0 25px 80px #193e3233}.modal-head{padding:20px 24px;background:#fcfdfc}.modal-head h3{font-size:15px;color:#45645a}.modal-body{padding:23px 24px}.modal-foot{padding:16px 24px;background:#fafbf9}.field label{font-size:11px;font-weight:500;color:#729c8e}.field input,.field select,.field textarea{background:#fcfdfb;border-color:#e4eae0;font-size:12px;padding:11px 12px;border-radius:9px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#a0bdb3;box-shadow:0 0 0 3px #276b670d}.imp-drop{background:#fafbfa;border-color:#cadad5}.imp-hint{font-size:11px}.imp-status{font-size:11px}
.login{background:#f7f9f6;grid-template-columns:1.1fr 1fr}.login-visual{padding:60px 11%;align-items:flex-start;justify-content:center;flex-direction:column;background:#1e4a3b;position:relative}.login-visual:before{content:"";position:absolute;width:540px;max-width:100%;height:350px;background:url('architecture.svg') center/contain no-repeat;top:10%;right:-110px;opacity:.5;pointer-events:none}.login-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#1e4a3b11,#1e4a3b00),linear-gradient(0deg,#1e4a3b 5%,#1e4a3b00 80%);pointer-events:none}.grid-paper{background-size:48px 48px;background-image:linear-gradient(#b7cdc60b 1px,transparent 1px),linear-gradient(90deg,#b7cdc60b 1px,transparent 1px);mask-image:none}.login-visual-inner{z-index:1;max-width:440px}.brand-mark{color:#b4dcdf;font-size:10px;letter-spacing:.22em;margin-bottom:80px}.login-eyebrow{color:#95b6ab;font:8px var(--mono);letter-spacing:.16em;margin-bottom:18px}.login-visual h1{font-size:35px;line-height:1.55;color:#eff2ed;letter-spacing:.05em;font-weight:400;margin-bottom:20px}.login-sub{color:#9cbab0;font-size:11px;line-height:2.1}.login-points{margin-top:35px;gap:12px}.login-points li{font-size:10px;color:#a6c1b8}.login-points span{background:#ffffff06;color:#9fbdb3;border-color:#9ebcb226;font-size:8px}.login-panel{background:#fff;padding:45px}.login-card{width:min(360px,100%)}.login-kicker{font:8px var(--mono);letter-spacing:.16em;color:#95b6ab;margin-bottom:17px}.login-card h2{font-size:26px;font-weight:500;color:#27614e;letter-spacing:.05em;margin-bottom:14px}.login-card>.muted{font-size:12px;line-height:1.9;color:#8baba0;margin-bottom:24px}.login-card .field{margin-bottom:18px}.login-card .field input{padding:13px 14px;font-size:13px;background:#fbfcfb;border-color:#e7ece4}.login-card .field label{margin-bottom:8px;font-size:12px}.login-card .btn-block{padding:13px;letter-spacing:.08em;font-size:13px}.login-card .divider{font-size:10px;color:#9bb9af;margin:20px 0}.login-fineprint{font-size:10px;color:#9ab9af;line-height:1.8}.login-fineprint a{color:#709b8d;text-decoration:none;margin-left:6px}.login-error{font-size:11px;margin-top:12px;min-height:18px}.connection-status{margin-top:32px;padding-top:16px;border-top:1px solid var(--line);color:#95b5aa;font-size:10px;display:flex;gap:7px;align-items:center;flex-wrap:wrap}.connection-status:before{content:"";width:5px;height:5px;border-radius:50%;background:#b9cfc8}.connection-status.connected:before{background:#5caf9c}.connection-status.failed:before{background:#d68e85}.connection-status button{color:#6e9b8c;font-size:10px;margin-left:auto;text-decoration:underline}
.err-bar{flex:none;margin:10px 34px 0;background:#fff1ef;border-color:#eed6d3;font-size:11px}.toast{font-size:12px;background:#2c6c57}.toast.err{background:#b56b72}
@media(min-width:1600px){.view{padding-top:32px}.studio-hero{min-height:220px}.hero-art{width:450px;right:25px}.studio-hero h2{font-size:29px}.kpi{padding:22px}.card-pad{padding:24px}}
@media(max-width:1200px){.app{grid-template-columns:210px minmax(0,1fr)}.rail{padding-left:13px;padding-right:13px}.view{padding:23px}.topbar{padding:19px 23px}.workspace-badge{display:none}.studio-hero{padding:25px}.studio-hero h2{font-size:23px}.hero-copy{width:63%}.hero-art{width:340px;right:-40px}.kpis{gap:12px}.kpi{padding:16px}.kpi-icon{right:13px;top:13px;width:28px;height:28px}.kpi .k-value{font-size:29px}.grid-2{gap:16px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.card-pad{padding:18px}.portfolio-summary{gap:16px}.mini-row{padding:10px 8px}.mini-row .grow strong{max-width:150px}.login-visual{padding:55px 8%}.login-visual h1{font-size:29px}.brand-mark{margin-bottom:65px}.assist-wrap{grid-template-columns:minmax(0,1fr) 220px}.chat-head small{display:block;margin-top:3px}}
@media(max-width:980px){.app{grid-template-columns:minmax(0,1fr)}.rail{display:none}.topbar{padding:16px 20px;min-height:80px}.view{padding:23px 20px 28px}.grid-2{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi .k-value{font-size:28px}.hero-art{width:350px;right:0}.studio-hero h2{font-size:25px}.tabbar{position:relative;padding-bottom:max(8px,env(safe-area-inset-bottom));box-shadow:0 -4px 20px #27604d10}.tabbar button{font-size:11px;padding:11px 3px}.tabbar button.active{background:#f6f8f4;color:#6e9b8c;border-radius:9px}.login{grid-template-columns:1fr}.login-visual{display:none}.login-panel{padding:35px}.login-card{width:min(380px,100%)}.assist-wrap{grid-template-columns:minmax(0,1fr) 210px;height:calc(100dvh - 290px);min-height:460px}.cal-grid{grid-auto-rows:minmax(90px,auto)}.cal-cell{min-height:90px}.proj-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.err-bar{margin:10px 20px 0}}
@media(max-width:680px){.topbar{padding:15px 17px;min-height:77px;gap:8px}.topbar-title h1{font-size:17px}.topbar-title p{font-size:9px;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-actions{gap:6px}.topbar-actions .btn{padding:8px 9px;font-size:10px;gap:3px}.topbar-actions .btn svg{width:12px;height:12px}.view{padding:20px 16px 24px}.today-greet{margin-bottom:18px}.today-greet h2{font-size:20px}.today-greet p{font-size:10px;line-height:1.8}.date-stamp{display:none}.studio-hero{padding:23px;min-height:216px;align-items:flex-start}.studio-hero h2{font-size:22px}.hero-copy{width:100%}.hero-eyebrow{font-size:8px;letter-spacing:.15em}.studio-hero p{font-size:10px;max-width:195px}.hero-art{width:230px;max-width:none;right:-64px;top:65%;opacity:.5}.hero-actions{margin-top:18px}.hero-actions .btn{font-size:10px;padding:7px 10px}.hero-coordinate{display:none}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px}.kpi{padding:16px}.kpi .k-note{font-size:9px}.kpi .k-value{font-size:28px}.kpi-icon{width:28px;height:28px;top:12px;right:12px}.kpi-icon svg{width:15px;height:15px}.kpi .k-label{font-size:10px}.grid-2,.grid-3,.report-grid{grid-template-columns:minmax(0,1fr)}.stack{gap:16px}.card-pad{padding:18px}.section-head{gap:8px}.section-head h2{font-size:13px}.studio-shortcuts{gap:8px}.shortcut{font-size:10px}.portfolio-summary{justify-content:flex-start;gap:24px}.mini-row .grow strong{max-width:none}.view-banner{padding:18px 20px;margin-bottom:18px;gap:12px}.view-banner h2{font-size:17px}.view-banner p{font-size:10px}.view-banner .banner-mark{font-size:27px}.project-toolbar{gap:12px;align-items:stretch}.filter-tabs{width:100%;justify-content:space-between}.filter-tabs button{padding:7px 10px;font-size:10px}.project-search{width:100%}.proj-grid{grid-template-columns:minmax(0,1fr);gap:16px}.project-cover{height:105px}.proj-create{min-height:125px}.cal-head{padding:15px 12px;gap:8px}.cal-head h2{font-size:14px}.cal-nav{gap:4px}.cal-nav .btn{padding:5px 7px;font-size:9px}.cal-week span{font-size:9px;padding:9px 2px}.cal-grid{grid-auto-rows:minmax(75px,auto)}.cal-cell{min-height:75px;padding:5px 3px}.cal-date{font-size:10px}.cal-ev{font-size:8px;padding:2px 2px}.cal-cell.today .cal-date{width:19px;height:19px;font-size:10px}.cal-more{font-size:8px}.plan-toolbar select{min-width:0;flex:1;max-width:100%;font-size:12px}.gantt-head,.g-row{grid-template-columns:120px minmax(0,1fr)}.gantt-head .g-label{padding:12px 10px;font-size:10px}.g-info{padding:9px 10px}.g-info strong{font-size:10px}.g-info small{font-size:8px}.gantt-months span{font-size:8px;padding:12px 1px}.g-bar{padding:0 3px;font-size:8px}.board-table{min-width:530px}.assist-wrap{grid-template-columns:minmax(0,1fr);height:auto;min-height:0;gap:16px}.chat{min-height:450px;height:calc(100dvh - 260px)}.chat-head{padding:14px}.chat-head strong{font-size:11px}.chat-head small{font-size:9px}.chat-head select{max-width:100px!important;font-size:10px!important}.chat-log{padding:16px;gap:15px}.chat-input{padding:12px}.bubble{font-size:11px;padding:10px 12px}.chat-box textarea{font-size:11px}.chat-box .btn{font-size:11px}.chips{gap:5px}.chip{font-size:9px;padding:4px 8px}.assist-side{grid-template-columns:minmax(0,1fr)}.report-editor textarea{min-height:340px;padding:16px}.week-picker{gap:8px}.week-picker .btn{padding:6px 9px;font-size:10px}.modal-root{padding:12px}.modal{max-height:calc(100dvh - 24px);border-radius:14px}.modal-body{padding:19px}.modal-head,.modal-foot{padding:16px 19px}.form-row{grid-template-columns:minmax(0,1fr);gap:0}.err-bar{margin:8px 16px 0}.toast-root{bottom:80px;max-width:calc(100% - 32px)}.toast{font-size:11px;text-align:center}.connection-status{margin-top:26px}}
.grid-2>*,.grid-3>*,.report-grid>*,.stack>*{min-width:0}
.card:has(.board-table){overflow-x:auto}
.project-card-actions{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.project-card-actions .project-upload{width:100%;font-size:11px;background:#f9faf9;border-color:#e6ebe2}
.board-upload{margin-top:7px}.board-upload .project-upload{font-size:10px;padding:4px 8px}
.imp-target{padding:14px 16px;border:1px solid #e8ede4;background:#f8faf7;border-radius:11px;margin-bottom:18px;line-height:1.8}
.imp-target strong{font-size:13px;color:#52776b}.imp-target p{font-size:11px;color:#7ba396;margin-top:5px}
#impMergeSummary{font-size:12px;color:#5d8678;margin-top:9px;font-weight:600}
.imp-match-cell{min-width:230px;max-width:320px}.imp-match-select{width:100%;max-width:300px;font-size:11px;border:1px solid #e2e8dd;background:#fff;border-radius:7px;padding:7px;color:#577e71}
.imp-match-reason{font-size:10px;color:#8aaea2;white-space:normal;margin-top:6px}.imp-match-diff{font-size:10px;color:#62836f;white-space:normal;line-height:1.7;margin-top:5px}
.imp-update-list{display:grid;gap:12px}.imp-update-row{border:1px solid #e8ede5;border-radius:11px;padding:16px;background:#fff}
.imp-update-title{display:flex;align-items:center;gap:10px;font-size:12px;flex-wrap:wrap}.imp-update-title input{width:16px;height:16px;accent-color:var(--blue);flex:none}.imp-update-title strong{flex:1;min-width:120px}
.imp-update-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:18px;margin-top:14px;padding-left:26px}
.imp-update-file{display:grid;align-content:start;gap:5px;overflow-wrap:anywhere}.imp-update-file span{font-size:10px;color:#94b4a9}.imp-update-file b{font:11px/1.9 var(--mono);color:#5e887a}.imp-update-file small{font-size:10px;color:#81a89b;line-height:1.8}
.imp-update-control{min-width:0}.imp-update-control .imp-match-select{max-width:100%;font-size:11px}.imp-update-control .imp-match-diff{font-size:11px}
@media(max-width:680px){.imp-update-content{grid-template-columns:minmax(0,1fr);padding-left:0;gap:13px}.imp-update-row{padding:13px}.imp-update-title strong{font-size:11px;min-width:100px}.imp-update-title .tag{font-size:9px}.imp-update-control .imp-match-select{font-size:10px}}
.modal-body:has(.imp-match-select){overflow:auto}.imp-table td{vertical-align:top}.imp-table .imp-chk{width:16px;height:16px;accent-color:var(--blue)}
@media(max-width:680px){.modal-foot:has(.project-upload){flex-wrap:wrap}.modal-foot .project-upload{font-size:11px;padding:7px 10px}.imp-target{padding:12px}.imp-match-cell{min-width:210px}}
@media(max-width:680px){.hero-line{display:block}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* 注册/登录：验证码注册表单 */
.login-switch{display:flex;gap:5px;padding:4px;background:#f6f8f5;border:1px solid #ecefe9;border-radius:10px;margin-bottom:18px}
.login-switch button{flex:1;border:0;background:transparent;color:#7ca195;font:inherit;font-size:12px;padding:9px 0;border-radius:7px;cursor:pointer;transition:background .16s,color .16s}
.login-switch button.active{background:#fff;color:#2d6f59;box-shadow:0 1px 4px #27604d14;font-weight:500}
.field-tag{font-style:normal;font-size:10px;color:#98b7ad;margin-left:5px}
.login-notice{margin:0 0 16px;padding:10px 12px;border-radius:9px;background:#fdf7ee;border:1px solid #f2e2ca;color:#94663a;font-size:11px;line-height:1.75}
.login-terms{margin:10px 0 0;font-size:10px;color:#9ab9af;line-height:1.8}
.login-card #otp{letter-spacing:.26em;font-family:var(--mono);font-size:15px}
.login-card .otp-row .btn{min-width:104px}
.login-card #password2{margin-top:0}
.captcha-img{width:132px;height:44px;border-radius:8px;border:1px solid #e7ece4;cursor:pointer;flex:none;background:#f7f9f6;object-fit:cover}
.login-card #inviteCode{letter-spacing:.14em;font-family:var(--mono);font-size:14px;text-transform:uppercase}
.login-card #captcha{letter-spacing:.18em;font-family:var(--mono);text-transform:uppercase}
.invite-list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow:auto;margin-top:6px}
.invite-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fcfdfc}
.invite-row .code{font-family:var(--mono);font-size:14px;letter-spacing:.12em;color:#2d6f59}
.invite-row .meta{font-size:11px;color:#8baba0;line-height:1.6}
.invite-row .fill{flex:1;min-width:0}
.invite-row.off{opacity:.55}
.invite-empty{padding:18px;text-align:center;color:#94b5aa;font-size:12px;border:1px dashed var(--line);border-radius:9px}
.invite-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
@media(max-width:560px){.invite-grid{grid-template-columns:1fr}}
/* 注册表单变长后，小屏或笔记本上也能滚动到提交按钮 */
.login-panel{display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;overscroll-behavior:contain}
.login-card{margin:auto;flex:0 0 auto}
.login-card .field{margin-bottom:15px}
.login-card .field-error{min-height:14px;margin-top:3px}

/* 节点完成：佐证材料 + 合同收款 */
.kpis.kpis-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.pay-strip{border:1px solid #eff2ed;background:#fcfdfc;border-radius:11px;padding:12px 14px;margin-bottom:18px}
.pay-strip-head{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:#7da195;margin-bottom:8px;flex-wrap:wrap}
.pay-strip-head b{font-size:12px;color:#4e7065}
.pay-strip-note{font-size:10px;color:#9ab8ae;margin-top:7px;line-height:1.7}
.ms-row.is-done{background:#f7fbf9;border-color:#e3f0e9}
.ms-row .ms-pay{display:block;margin-top:3px;font-size:9px;color:#8baba0}
.ms-row .ms-pay .tag{margin-right:5px}
.ms-row .btn-sm{padding:6px 9px;font-size:10px;flex:none;white-space:nowrap}
.ev-box,.pay-box{border:1px solid #eff2ed;border-radius:11px;padding:13px 14px;margin-top:14px;background:#fcfdfc}
.ev-head,.pay-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px;flex-wrap:wrap}
.ev-head b,.pay-head b{font-size:12px;color:#4e7065}
.ev-head span,.pay-head span{font-size:10px;color:#9ab8ae}
.ev-list{display:flex;flex-direction:column;gap:6px;max-height:176px;overflow:auto}
.ev-row{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid #f2f4f0;border-radius:8px;padding:7px 9px}
.ev-icon{width:28px;height:28px;border-radius:7px;background:#f6f8f4;color:#81a89b;display:grid;place-items:center;font-size:9px;font-family:var(--mono);flex:none}
.ev-meta{flex:1;min-width:0;display:flex;flex-direction:column}
.ev-meta a{font-size:11px;color:#48675d;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-meta a:hover{text-decoration:underline}
.ev-meta small{font-size:9px;color:#9ab8ae;margin-top:1px}
.ev-empty{font-size:11px;color:#a4c0b7;padding:10px;text-align:center;border:1px dashed #e8ede4;border-radius:8px}
.ev-add{display:inline-flex;align-items:center;gap:6px;margin-top:9px;padding:7px 12px;border:1px dashed #d2dfdb;border-radius:8px;font-size:11px;color:#6a9788;cursor:pointer;background:#fff}
.ev-add:hover{border-color:#a6c1b8;color:#577c70}
.ev-status{font-size:10px;color:#7da195;margin-top:6px;min-height:12px}
.pay-box .pay-inline{display:flex;gap:6px;align-items:center}
.pay-box .pay-inline input{flex:1;min-width:0}
.pay-box .pay-inline .btn{flex:none;padding:9px 10px;font-size:10px}
@media(max-width:680px){.kpis.kpis-4{grid-template-columns:repeat(2,minmax(0,1fr))}.ms-row{flex-wrap:wrap}.ms-row .grow{flex:1 1 100%;order:-1}}

.node-link{border:0;background:none;text-align:left;color:var(--ink);font:inherit;font-weight:600;cursor:pointer;padding:4px 0;text-decoration:underline;text-underline-offset:4px}.desktop-widget .rail,.desktop-widget .topbar,.desktop-widget .tabbar{display:none!important}.desktop-widget .app{display:block}.desktop-widget .main{margin:0;padding:0}.desktop-widget .view{padding:14px;display:grid;gap:12px}.desktop-widget{background:rgba(234,241,238,.93)}.desktop-widget .login-visual{display:none}.desktop-widget .login{display:block}.desktop-widget .login-panel{padding:24px}

[hidden]{display:none!important}
.manager-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:18px}
.manager-project{font:inherit;color:inherit;text-align:left;cursor:pointer;min-width:0}
.manager-project h2{margin:14px 0;overflow-wrap:anywhere}
.manager-project:hover,.discipline-card:hover{border-color:var(--blue,#517468)}
.discipline-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:12px;margin:20px 0}
.discipline-card{font:inherit;text-align:left;cursor:pointer;display:grid;gap:12px;min-width:0;color:inherit}
.discipline-card b{font-size:23px}.discipline-card small{color:var(--muted)}
.discipline-card.active,.selected-category{outline:2px solid var(--blue,#517468);outline-offset:-2px}
.task-category-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
#quickTaskCategory{max-width:84px;border:1px solid var(--line);border-radius:7px;background:var(--paper);font:inherit;font-size:12px}
@media(max-width:600px){.manager-grid{grid-template-columns:1fr}.discipline-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.manager-project .p-meta{gap:8px}.todo-main{min-width:0}.todo-title{overflow-wrap:anywhere}}

[hidden]{display:none!important}
