:root{font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:#20314d;background:#f4f6fa;font-size:14px}*{box-sizing:border-box}body{margin:0}aside{width:230px;background:#10253f;color:#c1cee0;position:fixed;inset:0 auto 0 0;padding:32px 20px}.brand{color:white;font-size:23px;font-weight:700;padding:0 8px 38px}.brand span{display:block;font-size:9px;letter-spacing:2px;margin-top:10px;color:#8da3bf}nav button{display:block;text-align:left;width:100%;background:none;color:#b9c8dc;margin:8px 0;padding:14px 18px}nav button.active{background:#285aee;color:white}.aside-foot{position:absolute;bottom:30px;font-size:12px;line-height:2;color:#8499b5}main{margin-left:230px;padding:32px 40px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}small{color:#8b97a8}h1{font-size:26px;margin:8px 0}h2{font-size:19px}button{border:0;border-radius:7px;padding:11px 19px;background:#285aee;color:white;font:inherit;cursor:pointer}button:hover{filter:brightness(.95)}button.secondary{background:#e9edf5;color:#455673}button.link{background:transparent;color:#285aee;padding:6px}.panel{background:white;border:1px solid #e4e9f1;border-radius:12px;padding:24px;margin-bottom:20px}.toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:22px}.toolbar input{max-width:340px}table{width:100%;border-collapse:collapse;text-align:left}th{background:#f7f9fc;color:#7b89a0;font-size:12px;font-weight:500}td,th{padding:16px 12px;border-bottom:1px solid #edf0f5}td strong{display:block;color:#20314d;margin-bottom:6px}.muted{color:#8c99ac;font-size:12px}.badge{border-radius:5px;background:#eaf0ff;color:#285aee;padding:5px 9px;white-space:nowrap}.warn{background:#fff1e3;color:#ae661d}.good{background:#e7f5ef;color:#237454}input,select,textarea{border:1px solid #dce2ec;border-radius:6px;padding:11px;font:inherit;width:100%;background:white;color:#20314d}textarea{min-height:90px}label{display:block;color:#65758c;font-size:13px;margin:14px 0}label input,label select,label textarea{display:block;margin-top:8px}dialog{border:none;border-radius:12px;width:600px;max-width:95vw;max-height:90vh;padding:28px;box-shadow:0 20px 100px #10253f33}dialog::backdrop{background:#10253f70}.grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.empty{text-align:center;color:#91a0b5;padding:65px 20px}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.item{border-bottom:1px solid #e9edf4;padding:20px 0}.item p{white-space:pre-wrap;line-height:1.8}.alert{padding:16px 20px;border-radius:8px;background:#fff3df;color:#8a5d19;margin-bottom:20px;line-height:1.8}#notice{color:#a43b31;margin-bottom:14px}#login{position:fixed;inset:0;background:#f0f4fa;display:grid;place-items:center;z-index:5}#login form{width:400px;max-width:92vw;background:white;padding:38px;border-radius:16px;box-shadow:0 15px 60px #182c4710}#login button{width:100%;margin-top:16px}#login p{color:#8d9aaf}.logo{font-size:40px;color:#285aee}#print-area{display:none}.detail{line-height:2.1}.scroll{overflow-x:auto}a{color:#285aee}body.auth #login{display:none}@media(max-width:850px){aside{width:76px;padding:25px 8px}.brand{font-size:0;padding-bottom:20px}.brand:before{content:'◈';font-size:32px}.brand span,.aside-foot{display:none}nav button{font-size:12px;padding:12px 5px;text-align:center}main{margin-left:76px;padding:20px 14px}td,th{padding:12px;white-space:nowrap}.grid{grid-template-columns:1fr}}@media print{body>*{display:none!important}#print-area{display:block!important;padding:35px;color:black}#print-area h1{text-align:center}#print-area td{padding:16px;border:1px solid #aaa}#print-area p{white-space:pre-wrap;line-height:2}}

.project-scroll{max-height:70vh}.project-table{min-width:2200px}.project-table th{position:sticky;top:0;z-index:1;white-space:nowrap}.project-table td{min-width:100px;max-width:260px;white-space:normal;overflow-wrap:anywhere;line-height:1.7}.project-table td:nth-child(5),.project-table td:nth-child(7){min-width:210px}.company-edit{text-align:left;font-weight:600}.project-table tbody tr:hover{background:#f5f8ff}.import-results{max-height:280px;overflow:auto;font-size:12px}.toolbar{flex-wrap:wrap}

.project-table{min-width:2500px}.project-table td[data-cell]{cursor:text}.project-table td[data-cell]:hover{background:#eaf0ff}.cell-editor{min-width:180px;min-height:90px}.project-table .row button{padding:5px 8px}

aside{display:flex;flex-direction:column}#nav{overflow-y:auto;min-height:0;flex:1}.aside-foot{position:static;margin-top:20px;flex-shrink:0}.brand{flex-shrink:0}.nav-group{margin-bottom:10px}.nav-group summary{cursor:pointer;padding:13px 8px;font-weight:600;color:#e1eafa;border-radius:6px}.nav-group summary:hover{background:#ffffff0d}.nav-group button{padding:11px 14px 11px 25px;margin:3px 0;font-size:13px}header{gap:12px;flex-wrap:wrap}header>div{margin-right:auto}@media(max-width:850px){aside{width:140px}main{margin-left:140px}.nav-group summary{font-size:12px;padding:10px 2px}.nav-group button{font-size:11px;padding:10px 5px;text-align:left}}

#recycle-entry{flex-shrink:0;border-top:1px solid #ffffff26;padding-top:12px;margin-top:10px}#recycle-entry button{width:100%;text-align:left;background:#ffffff12;color:#dce8ff;padding:13px 12px}#recycle-entry button.active{background:#285aee;color:white}

.column-filter-row th{padding:8px 6px!important;position:static!important;background:#f0f4fa}.column-filter-row input{min-width:90px;padding:8px;font-size:12px}.column-filter-tools{display:flex;gap:16px;align-items:center;padding:8px 0;color:#65758c;font-size:12px}tr[hidden]{display:none!important}

/* Compact ledger grid: clip display only, preserve underlying values. */
#content .scroll{max-height:68vh;overflow:auto;border:1px solid #ccd5e3;border-radius:5px}
#content .scroll table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:13px}
#content .scroll th,#content .scroll td{width:150px;min-width:150px;max-width:150px;padding:8px 10px;border-right:1px solid #d6deea;border-bottom:1px solid #d6deea;vertical-align:middle;height:42px;line-height:24px;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:normal}
#content .scroll th{font-weight:600;color:#455673;background:#edf2f8;font-size:12px}
#content .scroll thead tr:first-child th{position:sticky;top:0;z-index:3;height:40px}
#content .scroll .column-filter-row th{position:sticky!important;top:40px;z-index:2;height:42px;padding:5px 6px!important;background:#f5f7fb}
#content .scroll .column-filter-row input{width:100%;min-width:0;padding:5px 7px;font-size:12px}
#content .scroll td:last-child,#content .scroll th:last-child{border-right:0}
#content .scroll tbody tr:nth-child(even){background:#f8fafd}
#content .scroll tbody tr:hover{background:#edf4ff}
#content .scroll td .row{flex-wrap:nowrap;gap:5px}
#content .scroll td button{font-size:12px;padding:4px 7px;white-space:nowrap}
#content .scroll td:has(textarea){width:260px;min-width:260px;max-width:260px;height:auto;white-space:normal!important;overflow:visible}
#content .scroll td textarea{min-width:220px;min-height:90px;white-space:pre-wrap}
.column-filter-tools{padding:4px 8px}
#bulk-bar{gap:8px;margin-bottom:8px}#bulk-bar label{margin:4px 0}
.panel{padding:18px}.toolbar{margin-bottom:12px}#content .scroll .project-table td:nth-child(5),#content .scroll .project-table td:nth-child(7){min-width:150px}

#user-management{border-top:1px solid #ffffff26;margin-top:12px;padding-top:8px}#user-management-content,#account-tools{display:flex;flex-direction:column;align-items:stretch;gap:3px}#user-management-content button{width:100%;text-align:left;background:transparent;color:#b9c8dc;padding:10px 14px;font-size:13px}#user-management-content button:hover{background:#ffffff12}#user-management-content #logout{order:2}.page-export-actions{margin-left:auto;flex-shrink:0}.export-toolbar{justify-content:flex-end}header{justify-content:flex-start}

/* Field-sized compact layout, without stretching short columns. */
#content .scroll table{min-width:0!important}
#content .scroll th,#content .scroll td{padding:4px 7px;height:34px;line-height:22px;font-size:12px}
#content .scroll thead tr:first-child th{height:34px}
#content .scroll .column-filter-row th{top:34px;height:34px;padding:3px 4px!important}
#content .scroll .column-filter-row input{padding:4px 5px;height:27px;font-size:11px}
#content .scroll td button{padding:2px 4px;font-size:11px}
#content .scroll td input[type=checkbox]{margin:0 4px 0 0}
#content .scroll td:has(textarea){height:auto;overflow:visible}
#content .scroll td textarea{width:220px;min-width:220px}
main{padding:22px 24px}header{margin-bottom:16px}.panel{padding:14px}
#bulk-bar{gap:6px;margin-bottom:6px}#bulk-bar button,.toolbar button{padding:8px 12px;font-size:12px}.toolbar{gap:8px;margin-bottom:8px}.toolbar input{padding:8px;max-width:300px}.panel>p.muted{margin:8px 0;font-size:11px}.panel>label{margin:8px 0}.column-filter-tools{padding:2px 6px;font-size:11px}.column-filter-tools button{padding:3px 6px}

/* Yayi brand skin — visual only, no changes to business rules. */
:root{--brand:#194b9b;--brand-deep:#10357d;--brand-light:#edf4ff;--ink:#243955;--line:#dce5f0;color:var(--ink);background:#f2f5fa;font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;font-size:13px}
body{background:radial-gradient(ellipse at 90% 0%,#e8f0fd 0,transparent 45%),#f2f5fa}
aside{width:240px;padding:24px 16px 18px;background:linear-gradient(165deg,#0c2042 0%,#102f5e 65%,#123771 100%);box-shadow:5px 0 24px #102b5010;border-right:1px solid #ffffff0b}
.brand{padding:0 0 24px;font-size:initial}.brand img{display:block;width:100%;height:69px;object-fit:contain;background:white;border-radius:9px;padding:9px 8px;box-shadow:0 5px 18px #00000012}.brand span{font-size:10px;letter-spacing:3px;color:#a4bbde;text-align:center;margin-top:13px}.brand:before{display:none!important}
.nav-group{margin-bottom:6px}.nav-group summary{padding:12px 10px;font-size:13px;letter-spacing:.4px;color:#d8e5f8;font-weight:600;list-style:none;display:flex;align-items:center;gap:9px}.nav-group summary:before{content:'›';font-size:18px;color:#7f9fc9;transition:transform .15s}.nav-group[open]>summary:before{transform:rotate(90deg)}.nav-group summary:hover{background:#ffffff08}
.nav-group button{width:calc(100% - 14px);margin:3px 0 3px 14px;padding:10px 12px 10px 21px;border-radius:7px;font-size:12px;color:#aac2e4;text-align:left;position:relative}.nav-group button.active{background:linear-gradient(100deg,#235db6,#2870cc);color:#fff;box-shadow:0 4px 12px #041b3d30}.nav-group button.active:before{content:'';position:absolute;width:3px;height:14px;background:#a9d7ff;border-radius:2px;left:8px;top:50%;transform:translateY(-50%)}
#nav{scrollbar-width:thin;scrollbar-color:#3a5580 transparent}#recycle-entry{border-color:#ffffff15}#recycle-entry button{background:#ffffff08;color:#bdd1ef;border:1px solid #ffffff0b;font-size:12px}.aside-foot{font-size:10px;line-height:1.9;color:#819fc6;margin-top:16px}
main{margin-left:240px;padding:26px 30px}header{margin-bottom:23px;min-height:62px;border-bottom:1px solid #dce5f0;padding-bottom:18px}header small{color:#8797ad;font-size:11px;letter-spacing:.7px}h1{font-size:25px;font-weight:650;letter-spacing:-.6px;margin:8px 0 0;color:#17365f}h2{color:#1e3e68;font-size:18px;font-weight:600}
.panel{border:1px solid #e0e7f1;border-radius:11px;background:#fff;padding:17px;box-shadow:0 4px 20px #1c3c6805;margin-bottom:18px}.toolbar{gap:9px;margin-bottom:11px}.toolbar input{background:#fafcff;border-color:#dbe4ef;max-width:310px}
button{background:var(--brand);border:1px solid transparent;border-radius:6px;font-size:12px;font-weight:500;transition:background .15s,box-shadow .15s,transform .15s}button:hover{filter:none;background:#123e87;box-shadow:0 2px 6px #174b9b16}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.secondary{background:#f3f6fb;color:#4a6384;border-color:#e3eaf4}button.secondary:hover{background:#e8eff9;color:#234f89}button.link{color:#2057a1;background:transparent;border-color:transparent;box-shadow:none}button.link:hover{text-decoration:underline;background:#f0f5fc}
input,select,textarea{border:1px solid #d7e1ee;border-radius:5px;background:#fff;color:#2a405f;outline:none;font-size:12px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:#6b9ed8;box-shadow:0 0 0 3px #245fac12}input::placeholder{color:#9caac0}input[type=checkbox]{accent-color:var(--brand);box-shadow:none}.muted{color:#8b9ab0}label{color:#607693}
#bulk-bar{padding:0 0 11px;margin-bottom:11px;border-bottom:1px solid #edf1f7;gap:7px}#bulk-bar label{font-size:11px;margin-right:7px}#bulk-bar button{font-size:11px;padding:6px 10px}.page-export-actions button{background:#edf4ff;color:#1d549d;border:1px solid #d9e6fb}.column-filter-tools{background:#fff;padding:6px 8px;color:#8393aa;font-size:11px}
#content .scroll{border-color:#d9e3ef;border-radius:6px;scrollbar-width:thin;scrollbar-color:#bdcbe0 #f6f8fc}#content .scroll th,#content .scroll td{border-color:#e1e8f2;font-size:12px;color:#344e71}#content .scroll thead tr:first-child th{background:#eaf0f9;color:#466285;font-size:11px;font-weight:600;border-bottom-color:#cedced}#content .scroll .column-filter-row th{background:#f6f9fd}#content .scroll .column-filter-row input{background:#fff;border-color:#e0e7f2;border-radius:4px;font-size:11px}#content .scroll tbody tr:nth-child(even){background:#fafcfe}#content .scroll tbody tr:hover{background:#eef5ff}.project-table td[data-cell]:hover{background:#e6f0ff}
.badge{background:#eaf2ff;color:#2258a2;font-size:11px;border:1px solid #dae7fc;padding:3px 7px}.badge.warn{background:#fff5e8;color:#9a621c;border-color:#f5e2c6}.badge.good{background:#eaf6f1;color:#2c775c;border-color:#d5ece1}.alert{border:1px solid #dce8f8;border-left:3px solid #4d7fbb;background:#f0f6fe;color:#547297;font-size:12px;padding:12px 16px;border-radius:7px}.empty{color:#94a4bb;font-size:12px;padding:40px 16px}#notice{font-size:12px;color:#a45c35}
dialog{border:1px solid #e0e7f1;border-radius:13px;padding:26px;box-shadow:0 25px 90px #0c264638}dialog::backdrop{background:#102b4e70;backdrop-filter:blur(3px)}dialog h2{margin-top:0;border-bottom:1px solid #edf1f7;padding-bottom:15px}.actions{border-top:1px solid #edf1f7;padding-top:16px;gap:8px}.item{border-color:#e6edf5;padding:16px 0}.item p{font-size:12px}
#login{background:radial-gradient(ellipse at 20% 25%,#2b5da855,transparent 50%),radial-gradient(ellipse at 85% 80%,#295a9c55,transparent 45%),linear-gradient(135deg,#0b2145,#123a76);padding:20px}#login form{width:440px;border:1px solid #ffffff66;border-radius:16px;padding:38px 40px;background:#fff;box-shadow:0 30px 100px #020d2538}#login .login-brand img{width:100%;height:88px;object-fit:contain}.login-eyebrow{color:#8196b3;font-size:9px;letter-spacing:2px;margin-top:28px}#login h1{font-size:23px;margin-top:9px}#login p{font-size:12px;color:#8a9bb3;line-height:1.7}#login label{font-size:12px;margin-top:20px}#login input{padding:12px;background:#fafcff}#login button{padding:12px;background:linear-gradient(95deg,#174896,#2a66b7);box-shadow:0 5px 15px #194c9c24}#login #login-error{color:#b54b38;min-height:20px;margin-bottom:0}
#user-management-content button{border:0;color:#b7cbea;font-size:12px;border-radius:5px}#user-management-content button:hover{background:#ffffff0c;color:white}#user-management{border-color:#ffffff16}
@media(max-width:1000px){main{padding:20px}aside{width:210px}main{margin-left:210px}}
@media(max-width:850px){aside{width:145px;padding:18px 9px}.brand img{height:52px;padding:5px}.brand span{display:block;font-size:8px;letter-spacing:1px}.brand{padding-bottom:15px}main{margin-left:145px;padding:16px 12px}.nav-group summary{font-size:11px;padding:10px 4px}.nav-group button{font-size:10px;padding:9px 6px 9px 15px;margin-left:6px;width:calc(100% - 6px)}h1{font-size:21px}.panel{padding:12px}#login form{padding:26px;max-width:100%}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Remove redundant workspace heading; retain DOM hooks for page scripts. */
main>header{display:none!important}main{padding-top:14px!important}#notice:empty{display:none}#content>.panel:first-child{margin-top:0}.user-query{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;background:#f6f9fd;padding:12px 14px;border:1px solid #e2eaf5;border-radius:7px;margin-bottom:12px}.user-query label{margin:0;min-width:170px;flex:1}.user-query input,.user-query select{margin-top:6px}.user-panel h2{margin:0}.user-panel #user-table-body td:last-child{width:280px!important;min-width:280px!important;max-width:280px!important}.user-panel .page-export-actions{display:none}

.table-pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding:12px 0 0;min-height:48px;color:#607693;font-size:12px}.table-pagination .pagination-info{margin-right:auto}.table-pagination label{display:flex;align-items:center;gap:5px;margin:0;font-size:12px}.table-pagination select{width:64px;padding:5px;margin:0}.table-pagination input{width:62px;padding:5px;margin:0}.table-pagination button{padding:6px 10px;font-size:12px}.pagination-pages{min-width:48px;text-align:center}#content>.panel{margin-bottom:0}@media(max-width:850px){.table-pagination{gap:5px}.table-pagination .pagination-info{width:100%}}

#content .user-panel .scroll table{width:100%!important;min-width:760px!important;table-layout:fixed}#content .user-panel .scroll th,#content .user-panel .scroll td{width:auto!important;min-width:0!important;max-width:none!important}#content .user-panel .scroll th:nth-child(1){width:22%!important}#content .user-panel .scroll th:nth-child(2){width:24%!important}#content .user-panel .scroll th:nth-child(3){width:12%!important}#content .user-panel .scroll th:nth-child(4){width:12%!important}#content .user-panel .scroll th:last-child,#content .user-panel .scroll td:last-child{width:30%!important;min-width:270px!important;max-width:none!important;overflow:visible;text-overflow:clip;white-space:normal!important}.user-row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}#content .user-panel .user-row-actions button{padding:5px 9px;font-size:12px;flex-shrink:0}#content .user-panel .scroll td{height:44px}

#content .scroll table.todo-wide-table{min-width:100%!important}#content .todo-wide-table td:last-child{overflow:visible;text-overflow:clip;white-space:normal!important}#content .todo-wide-table td:last-child .row{flex-wrap:wrap;gap:6px}#content .todo-wide-table td:last-child button{padding:5px 8px}#content .panel .toolbar select{width:auto;min-width:120px}.toolbar>.row{flex-wrap:nowrap}
