:root{--ink:#172034;--muted:#6f7787;--line:#e7e9ef;--paper:#fff;--bg:#f4f5f8;--blue:#2557d6;--blue2:#173b9d;--cyan:#13a6a6;--danger:#c73e47;--shadow:0 16px 50px rgba(27,37,66,.10)}*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{margin:0 0 8px;color:var(--blue);font-size:11px;letter-spacing:.16em;font-weight:800}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 18% 20%,rgba(37,87,214,.14),transparent 35%),linear-gradient(135deg,#f7f8fc 0%,#eceff8 100%)}.login-card{width:min(430px,100%);padding:48px;border-radius:26px;background:rgba(255,255,255,.9);box-shadow:var(--shadow);border:1px solid rgba(255,255,255,.7)}.login-card h1{margin:8px 0;font-size:29px}.brand-mark{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:linear-gradient(145deg,var(--blue),var(--blue2));color:#fff;font-size:24px;font-weight:900;box-shadow:0 10px 25px rgba(37,87,214,.25)}.brand-mark.small{width:40px;height:40px;border-radius:12px;font-size:18px}.stack{display:grid;gap:18px;margin-top:30px}label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#41495c}label span{color:var(--danger)}input,select,textarea{width:100%;border:1px solid #dfe2e9;border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,87,214,.1)}textarea{resize:vertical}.primary,.secondary,.text-btn,.icon-btn{border:0;border-radius:9px;padding:10px 16px;font-weight:700}.primary{background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff;box-shadow:0 6px 15px rgba(37,87,214,.2)}.primary:disabled{opacity:.55}.secondary{background:#fff;color:#394155;border:1px solid #dfe2e9}.wide{width:100%;padding:13px}.form-error{color:var(--danger);min-height:20px;margin:0;font-size:13px}.app{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:#11192b;color:#fff;padding:24px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:0 6px 26px}.brand b,.brand small{display:block}.brand small{color:#929aae;margin-top:2px}.sidebar nav{display:grid;gap:7px}.nav-item{display:flex;gap:12px;align-items:center;width:100%;padding:12px 14px;border:0;border-radius:10px;background:transparent;color:#aab1c1;text-align:left;font-weight:700}.nav-item:hover,.nav-item.active{background:#24304a;color:#fff}.nav-item.active{box-shadow:inset 3px 0 0 #5e86ff}.sidebar-foot{margin-top:auto;border-top:1px solid #29334a;padding:18px 5px 0}.user-chip{display:flex;align-items:center;gap:10px}.user-chip>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#3159c9;font-weight:800}.user-chip b,.user-chip small{display:block}.user-chip small{margin-top:3px;color:#939caf}.text-btn{background:transparent;color:#9ea7b8;padding:12px 0}.topbar{height:94px;padding:23px 34px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line)}.topbar h2{margin:0;font-size:23px}.page{padding:28px 34px}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.summary-grid article{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px}.summary-grid article:after{content:"";position:absolute;right:-16px;bottom:-25px;width:80px;height:80px;border-radius:50%;background:#f1f4fb}.summary-grid span,.summary-grid small{display:block;color:var(--muted);font-size:12px}.summary-grid strong{display:block;font-size:28px;margin:11px 0 6px}.summary-grid .accent-card{background:linear-gradient(135deg,#153d98,#286bd4);color:#fff;border:0}.summary-grid .accent-card span,.summary-grid .accent-card small{color:#cbd9ff}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 3px 15px rgba(25,34,57,.035)}.toolbar{display:flex;gap:9px;align-items:center;padding:16px;border-bottom:1px solid var(--line);flex-wrap:wrap}.toolbar input,.toolbar select{width:auto;min-width:135px}.search-box{display:flex;align-items:center;gap:8px;flex:1;min-width:260px;border:1px solid #dfe2e9;border-radius:9px;padding:0 11px;color:#758099}.search-box input{border:0!important;box-shadow:none!important;flex:1;padding-left:0}.link-button{text-decoration:none;display:inline-flex;align-items:center}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;color:#737b8b;font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:#fafbfc}th,td{padding:13px 14px;border-bottom:1px solid #eef0f4}td{font-size:13px}tbody tr:hover{background:#fafbff}.record-main b,.record-main small{display:block}.record-main b{color:#274a9e;margin-bottom:5px}.record-main small{white-space:normal;max-width:260px;color:#31394b}.money{font-variant-numeric:tabular-nums}.status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef2ff;color:#3658af;font-size:11px;font-weight:800}.status.已完成{background:#e7f7f1;color:#197657}.status.审核中{background:#fff3da;color:#976400}.status.已作废{background:#f2f2f3;color:#777}.row-action{border:0;background:transparent;color:var(--blue);font-weight:800}.empty{padding:54px;text-align:center;color:var(--muted)}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--line)}.panel-head h3,.panel-head p{margin:0}.panel-head p{color:var(--muted);font-size:12px;margin-top:5px}.split-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(290px,1fr);gap:20px}.form-panel{padding-bottom:20px}.form-panel>label,.form-panel>button{margin:16px 20px 0}.record-dialog,.small-dialog{border:0;border-radius:17px;padding:0;box-shadow:0 24px 80px rgba(10,20,45,.3);width:min(980px,calc(100vw - 30px));max-height:92vh}.record-dialog::backdrop,.small-dialog::backdrop{background:rgba(8,15,29,.55);backdrop-filter:blur(3px)}.small-dialog{width:min(440px,calc(100vw - 30px));padding-bottom:22px}.dialog-head{position:sticky;top:0;z-index:3;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line)}.dialog-head h2,.dialog-head h3{margin:0}.icon-btn{font-size:25px;background:#f2f3f6;color:#596174;width:38px;height:38px;padding:0}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:23px 24px}.span-2{grid-column:span 2}.attachments{border-top:1px solid var(--line);padding:22px 24px}.section-title h3,.section-title p{margin:0}.section-title p{font-size:12px;color:var(--muted);margin-top:5px}.attachment-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:16px}.attachment-group{border:1px solid var(--line);border-radius:11px;padding:14px;background:#fafbfc}.attachment-group h4{margin:0 0 10px}.upload-line{display:flex;gap:7px}.upload-line input{font-size:12px;padding:7px}.upload-line button{padding:8px 10px}.file-list{display:grid;gap:6px;margin-top:9px}.file-item{display:flex;justify-content:space-between;gap:8px;align-items:center;background:#fff;border-radius:7px;padding:8px;font-size:12px}.file-item a{color:var(--blue);text-decoration:none;overflow:hidden;text-overflow:ellipsis}.file-item button{border:0;background:transparent;color:var(--danger)}.dialog-actions{position:sticky;bottom:0;background:#fff;display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--line)}.small-dialog .stack{padding:0 22px}.switch-row{display:flex;grid-auto-flow:column;justify-content:start;align-items:center}.switch-row input{width:auto}.toast{position:fixed;right:25px;bottom:25px;z-index:20;background:#182238;color:#fff;border-radius:10px;padding:13px 18px;box-shadow:var(--shadow);opacity:0;transform:translateY(15px);pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:none}.toast.error{background:#b43841}@media(max-width:1100px){.summary-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}.split-grid{grid-template-columns:1fr}.attachment-groups{grid-template-columns:1fr}}@media(max-width:760px){.app{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:13px}.brand{padding-bottom:12px}.sidebar nav{grid-template-columns:repeat(3,1fr)}.nav-item{justify-content:center;font-size:12px}.sidebar-foot{display:none}.topbar{height:auto;padding:17px;align-items:flex-end}.page{padding:16px}.summary-grid{grid-template-columns:1fr 1fr}.summary-grid article{padding:15px}.summary-grid strong{font-size:21px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.toolbar>*{flex:1}.attachment-groups{grid-template-columns:1fr}.record-dialog{max-height:96vh}.topbar .eyebrow{display:none}}

/* Ledger attachments and inline preview */
.record-number,.attachment-link{border:0;background:none;padding:0;color:var(--blue);font-weight:700;text-align:left;text-decoration:none;cursor:pointer}
.record-number:hover,.attachment-link:hover{text-decoration:underline}
.subject-cell{min-width:170px;max-width:260px;white-space:normal;line-height:1.5}
.attachment-cell{min-width:280px;max-width:400px;white-space:normal}
.attachment-row{display:flex;align-items:baseline;gap:6px;min-width:0;padding:3px 0;white-space:nowrap}
.attachment-row+.attachment-row{border-top:1px dashed var(--line)}
.attachment-category{flex:none;font-size:11px;color:var(--muted)}
.attachment-link{overflow-wrap:anywhere;line-height:1.45}
.attachment-row .attachment-link{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-item .attachment-link{flex:1;min-width:0}
.file-size{color:var(--muted);white-space:nowrap}
.preview-dialog{border:0;border-radius:16px;padding:0;width:min(1100px,calc(100vw - 32px));height:min(90vh,900px);max-height:90vh;box-shadow:0 24px 80px rgba(10,20,45,.35)}
.preview-dialog::backdrop{background:rgba(8,15,29,.72)}
.preview-dialog .dialog-head h3{margin:0;max-width:75vw;overflow-wrap:anywhere;font-size:16px}
.preview-body{height:calc(100% - 80px);display:grid;place-items:center;background:#eff1f5;overflow:auto}
.preview-body img{display:block;max-width:100%;max-height:100%;object-fit:contain}
.preview-body iframe{width:100%;height:100%;border:0;background:#fff}
.brand-mark{font-size:16px;white-space:nowrap}.brand-mark.small{font-size:11px}

.content-cell{min-width:220px;max-width:360px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}

/* Project selector, grouped attachments and current statuses */
.attachment-cell{min-width:380px;max-width:none}
.attachment-row{display:flex;align-items:baseline;gap:8px;white-space:nowrap}
.attachment-file-links{display:inline-flex;align-items:baseline;gap:10px;white-space:nowrap}
.attachment-row .attachment-link{display:inline;overflow:visible;text-overflow:clip;white-space:nowrap}
.status.审批中{background:#fff3da;color:#976400}
.status.已审批{background:#e7f7f1;color:#197657}
.status.已上报结算{background:#eaf2ff;color:#2557a5}
.status.已办理完结算{background:#e7f7f1;color:#197657}
.status.未上报{background:#eef2ff;color:#3658af}
.status.审批中,.status.结算审核中{background:#fff3da;color:#976400}
.status.已审批未办理签证,.status.已审批已办理签证,.status.已办理完结算,.status.结算未上报,.status.已结算{background:#e7f7f1;color:#197657}
.status.已审批已办理签证已上报结算{background:#eaf2ff;color:#2557a5}
#ledgerBody .status{background:#eaf2ff;color:#2557a5}
#ledgerBody .status.已审批未办理签证,#ledgerBody .status.未办理签证{background:#fdebed;color:#c73e47}
#ledgerBody .status.已办理完结算,#ledgerBody .status.已结算,#ledgerBody .status.结算未上报{background:#e7f7f1;color:#197657}
@media(max-width:760px){.sidebar nav{grid-template-columns:repeat(2,1fr)}}

.captcha-field{display:grid;gap:7px}
.captcha-question-row{display:flex;align-items:stretch;gap:9px}
.captcha-question-row strong{display:flex;align-items:center;flex:1;padding:9px 13px;border:1px solid #dce5ff;border-radius:9px;background:#f1f5ff;color:#1d479f;font-size:17px;letter-spacing:.08em}
.captcha-question-row .secondary{white-space:nowrap;font-size:12px;padding:9px 12px}

/* Local import preview and add-only action */
#importsPage{display:grid;gap:20px}
.import-intro .panel-head{gap:20px}
.import-actions{display:flex;gap:10px;flex-wrap:wrap}
.import-folder-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:16px 20px 8px}
.import-folder-row label{font-size:13px;font-weight:600;white-space:nowrap}
.import-folder-row input{flex:1 1 360px;min-width:200px;padding:10px 12px;border:1px solid var(--line);border-radius:8px}
.import-notice{margin:18px 20px 8px;padding:12px 15px;border-radius:9px;background:#eef4ff;color:#244a9b;font-size:13px;line-height:1.6}
.import-result{margin:8px 20px 16px;padding:12px 15px;border-radius:9px;background:#e8f8ee;color:#146c39;font-size:13px;line-height:1.6}
.import-source{margin:8px 20px 16px;font-size:12px;overflow-wrap:anywhere}
#importPreviewError{margin:0 20px 15px}
.import-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0 20px 20px}
.import-summary>div{padding:13px 15px;border:1px solid var(--line);border-radius:10px;background:#fafbff}
.import-summary small,.import-summary strong{display:block}
.import-summary small{color:var(--muted);font-size:12px}
.import-summary strong{margin-top:5px;font-size:21px;color:#173b9d}
.import-table td{vertical-align:top;white-space:normal;line-height:1.5;min-width:100px}
.import-table td:first-child{white-space:nowrap}
.import-table td:nth-child(3){min-width:220px;max-width:350px;overflow-wrap:anywhere}
.import-table td:nth-child(7){min-width:145px}
.import-table td:last-child{min-width:180px}
.import-table td small{display:block;color:var(--muted);font-size:11px;margin-top:4px}
.import-table details summary{color:var(--blue);font-weight:700;cursor:pointer;white-space:nowrap}
.import-table details ul{margin:8px 0 0;padding-left:18px;min-width:260px;max-width:520px;overflow-wrap:anywhere}
.import-table details li{padding:3px 0}
.import-missing,.import-issue{color:#b04a2d}
.import-ok{color:#177451;font-weight:700}
@media(max-width:1000px){.import-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.import-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.import-intro .panel-head{align-items:flex-start;flex-direction:column}}

/* Three-line ledger rows with equal subject and content columns. */
#ledgerBody tr,#ledgerBody td{height:126px}
#ledgerBody td{vertical-align:middle}
#ledgerBody .content-cell{white-space:normal;line-height:1.5}
.content-preview,.cell-text-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;max-height:4.5em;white-space:pre-line;overflow-wrap:anywhere;text-overflow:ellipsis}
.content-preview{cursor:help;outline-offset:3px}
.subject-cell .cell-text-clamp{max-width:260px}
.attachment-scroll{max-height:96px;overflow-y:auto;scrollbar-width:thin}
.full-content-tooltip{position:fixed;z-index:80;width:min(640px,calc(100vw - 24px));max-height:min(70vh,600px);overflow:auto;padding:17px 19px;border:1px solid #dce5f8;border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 18px 55px rgba(10,25,65,.25);font-size:13px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}

/* Keep attachment links available without letting filenames widen the table. */
#ledgerBody .subject-cell,#ledgerBody .content-cell{width:330px;min-width:330px;max-width:330px}
#ledgerBody .subject-cell .cell-text-clamp,#ledgerBody .content-preview{width:302px;max-width:302px}
#ledgerPage .number-cell{width:1%;white-space:nowrap;padding-left:8px;padding-right:8px}
#ledgerBody .record-number{white-space:nowrap}
.preview-dialog[open]{display:flex;flex-direction:column;overflow:hidden}
.preview-dialog>.dialog-head{flex:none}
.preview-stage{position:relative;flex:1;min-height:0;background:#eff1f5}
.preview-stage>.preview-body{height:100%;width:100%}
.preview-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:44px;height:60px;border:1px solid #ffffff80;border-radius:12px;background:#172034bf;color:#fff;font-size:42px;line-height:1;box-shadow:0 4px 15px #0002}
.preview-arrow-left{left:12px}.preview-arrow-right{right:12px}
.preview-arrow:hover:not(:disabled){background:#2557d6}
.preview-arrow:disabled{opacity:.3;cursor:default}
.preview-arrow:focus-visible{outline:3px solid #8baeff;outline-offset:2px}
.preview-position{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);padding:5px 13px;border-radius:20px;background:#172034bf;color:#fff;font-size:13px;pointer-events:none}
#ledgerBody .attachment-cell{width:420px;min-width:360px;max-width:420px;white-space:normal}
#ledgerBody .attachment-scroll{width:100%;max-height:96px;overflow-x:hidden;overflow-y:auto}
#ledgerBody .attachment-row{display:flex;align-items:flex-start;gap:7px;width:100%;white-space:normal}
#ledgerBody .attachment-category{width:92px;flex:0 0 92px;white-space:nowrap}
#ledgerBody .attachment-file-links{display:flex;flex:1;min-width:0;flex-wrap:wrap;gap:4px 8px;white-space:normal}
#ledgerBody .attachment-row .attachment-link{display:inline-block;max-width:180px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
#ledgerPage th.money,#ledgerBody td.money{width:1%;white-space:nowrap;padding-left:8px;padding-right:8px}

/* Optional single-line ledger density; other tables retain their layout. */
#ledgerPage.compact-rows .table-wrap>table{table-layout:fixed;min-width:2200px}
#ledgerPage.compact-rows th{width:120px}
#ledgerPage.compact-rows th:first-child{width:60px}
#ledgerPage.compact-rows th:nth-child(3){width:var(--ledger-number-width,340px)}
#ledgerPage.compact-rows th:nth-child(4){width:260px}
#ledgerPage.compact-rows th:nth-child(5){width:300px}
#ledgerPage.compact-rows th:nth-child(11){width:220px}
#ledgerPage.compact-rows th:nth-child(12){width:330px}
#ledgerPage.compact-rows th:last-child{width:180px}
#ledgerPage.compact-rows #ledgerBody tr,#ledgerPage.compact-rows #ledgerBody td{height:44px}
#ledgerPage.compact-rows #ledgerBody td{padding-top:8px;padding-bottom:8px;min-width:0;max-width:none;width:auto;white-space:nowrap}
#ledgerPage.compact-rows .ledger-cell-text,#ledgerPage.compact-rows .cell-text-clamp,#ledgerPage.compact-rows .content-preview{display:block;width:100%;max-width:none;max-height:20px;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:unset;line-clamp:unset}
#ledgerPage.compact-rows .number-cell .ledger-cell-text,#ledgerPage.compact-rows .record-number{display:block;max-width:none;overflow:visible;text-overflow:clip;white-space:nowrap}
#ledgerPage.compact-rows #ledgerBody .attachment-scroll{height:20px;max-height:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
#ledgerPage.compact-rows #ledgerBody .attachment-row{display:inline-flex;width:auto;padding:0;white-space:nowrap;vertical-align:top}
#ledgerPage.compact-rows #ledgerBody .attachment-row+.attachment-row{border-top:0;margin-left:10px}
#ledgerPage.compact-rows #ledgerBody .attachment-file-links{display:inline-flex;flex-wrap:nowrap}

/* Portfolio overview: scoped KPIs with all-project comparison. */
.overview-page{display:grid;gap:12px;padding-top:16px;width:100%;max-width:1200px;margin-inline:auto}
.overview-filter-bar{display:flex;align-items:center;gap:12px;min-width:0}
.overview-filter-label{flex:none;font-size:13px;font-weight:700;color:#515d72;white-space:nowrap}
.overview-project-filters{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow-x:auto;padding:2px 1px;scrollbar-width:thin}
.overview-filter-chip{flex:none;border:1px solid #dce4f1;border-radius:999px;padding:8px 14px;background:#fff;color:#43516b;font-size:12px;font-weight:700;white-space:nowrap}
.overview-filter-chip:hover{border-color:#7da0eb;color:#2557d6}
.overview-filter-chip.is-active{border-color:#2557d6;background:#eaf1ff;color:#1947aa}
.overview-filter-chip:focus-visible{outline:3px solid #8baeff;outline-offset:2px}
#refreshOverview{flex:none;white-space:nowrap}
.overview-kpis{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}
.overview-kpi{padding:19px 20px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 3px 15px rgba(25,34,57,.035);text-align:left;color:var(--ink);cursor:pointer}
.overview-kpi span,.overview-kpi small{display:block;color:var(--muted);font-size:12px}
.overview-kpi strong{display:block;margin:7px 0;font-size:30px;line-height:1.15;font-variant-numeric:tabular-nums}
.overview-kpi.is-active{background:#183e9b;border-color:#183e9b;color:#fff}
.overview-kpi.is-active span,.overview-kpi.is-active small{color:#cfdbff}
.overview-kpi:focus-visible{outline:3px solid #8baeff;outline-offset:2px}
.overview-money-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.overview-money-grid article{padding:17px 20px;border-radius:12px;background:#eaf0fd;border:1px solid #d8e3fb}
.overview-money-grid span,.overview-money-grid strong{display:block}
.overview-money-grid span{font-size:12px;color:#55709e}
.overview-money-grid strong{margin-top:8px;color:#183f91;font-size:21px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.overview-chart-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);gap:18px}
.overview-panel .panel-head{padding:17px 20px}
.overview-status-list{display:grid;gap:13px;padding:22px 20px}
.overview-status-row{display:grid;grid-template-columns:220px minmax(40px,1fr) 38px 50px;gap:12px;align-items:center;font-size:12px}
.overview-status-name{display:flex;align-items:center;gap:8px;white-space:nowrap}
.overview-status-name i,.overview-dot{display:inline-block;width:9px;height:9px;flex:none;border-radius:50%}
.overview-status-row strong{text-align:right;font-size:14px;font-variant-numeric:tabular-nums}
.overview-status-row small{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.overview-track{height:10px;border-radius:999px;background:#edf1f7;overflow:hidden}
.overview-track>span{display:block;height:100%;border-radius:inherit}
.overview-type-chart{display:flex;align-items:center;justify-content:center;gap:28px;padding:26px 20px;min-height:275px}
.overview-donut{width:172px;height:172px;flex:none;border-radius:50%;display:grid;place-items:center}
.overview-donut>div{width:122px;height:122px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#fff}
.overview-donut strong{font-size:29px;line-height:1.1}
.overview-donut small{color:var(--muted);font-size:12px}
.overview-legend{display:grid;gap:15px;min-width:150px;font-size:13px}
.overview-legend>div{display:grid;grid-template-columns:10px 1fr;align-items:center;gap:5px 9px}
.overview-legend strong{grid-column:2;font-variant-numeric:tabular-nums}
.overview-dot.instruction{background:#2659c8}.overview-dot.change{background:#3bb5a4}.overview-dot.technical{background:#9770cb}.overview-dot.price{background:#e9a23b}
.overview-projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;padding:20px}
.overview-project{padding:17px;border:1px solid var(--line);border-radius:12px;background:#fbfcff}
.overview-project.is-selected{border-color:#5682e8;background:#f3f7ff;box-shadow:0 0 0 2px #2557d61c}
.overview-project-head{display:flex;justify-content:space-between;align-items:start;gap:12px}
.overview-project-head h4{margin:0 0 5px;font-size:15px;overflow-wrap:anywhere}
.overview-project-head small{color:var(--muted);font-size:11px}
.overview-project-head>strong{font-size:24px;white-space:nowrap;font-variant-numeric:tabular-nums}
.overview-project-count{height:13px;margin:18px 0;background:#edf1f7;border-radius:999px;overflow:hidden}
.overview-project-count>div{height:100%;display:flex;min-width:0}
.overview-project-count>div>span{flex:none}.overview-project-count .instruction{background:#2659c8}.overview-project-count .change{background:#3bb5a4}.overview-project-count .technical{background:#9770cb}.overview-project-count .price{background:#e9a23b}
.overview-project-amounts{display:grid;gap:9px}
.overview-project-money{display:grid;grid-template-columns:32px minmax(35px,1fr) 118px;gap:8px;align-items:center;font-size:11px}
.overview-project-money>span{color:var(--muted)}
.overview-project-money .overview-track{height:6px}
.overview-project-money .overview-track>span{background:#7e9ee6}
.overview-project-money.is-negative .overview-track>span{background:#d98080}
.overview-project-money.is-negative strong{color:#a4414b}
.overview-project-money strong{text-align:right;font-variant-numeric:tabular-nums;font-size:11px;white-space:nowrap}
@media(max-width:1100px){.overview-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.overview-chart-grid{grid-template-columns:1fr}}
@media(max-width:650px){.overview-filter-bar{gap:7px}.overview-filter-label{font-size:11px}.overview-filter-chip{padding:8px 10px}.overview-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-money-grid{grid-template-columns:1fr}.overview-type-chart{flex-wrap:wrap}.overview-status-row{grid-template-columns:minmax(40px,1fr) 30px 43px;gap:6px}.overview-status-name{grid-column:1/-1;white-space:normal}.overview-projects{grid-template-columns:1fr;padding:12px}}
