:root{font-family:Inter,"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#20303e;background:#f5f7f9;font-size:14px;line-height:1.6;--accent:#00868b;--border:#e3e8ec;--muted:#687886}*{box-sizing:border-box}body{margin:0}a{color:#007c82;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:8px 17px;border:1px solid var(--accent);border-radius:6px;background:var(--accent);color:white;font-weight:500;cursor:pointer;text-decoration:none;white-space:nowrap}button:hover,.button:hover{filter:brightness(.96);text-decoration:none}.secondary{background:white;color:#25616a;border-color:#cdd9de}.danger{background:#b84738;border-color:#b84738}.text-button{padding:0;min-height:0;border:0;background:none;color:#007c82;font-weight:400;border-radius:0}.text-button:hover{text-decoration:underline}input,select,textarea{border:1px solid #cfd9e1;background:white;color:#233440;border-radius:5px;padding:9px 11px;min-height:39px;max-width:100%}input:focus,select:focus,textarea:focus{outline:2px solid #b9e0e2;outline-offset:1px;border-color:var(--accent)}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #83c7cb;outline-offset:3px}input[type=checkbox]{accent-color:var(--accent);min-height:16px;width:16px;height:16px}label{display:flex;flex-direction:column;gap:7px;font-size:14px;font-weight:500}h1,h2,p{margin-top:0}h1{font-size:28px;line-height:1.35;letter-spacing:.01em;margin-bottom:26px;font-weight:650}h2{font-size:19px;font-weight:600}p{color:var(--muted)}.sidebar{position:fixed;inset:0 auto 0 0;width:208px;background:white;border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:10;overflow-y:auto}.brand{display:flex;align-items:baseline;gap:10px;font-size:42px;font-weight:800;letter-spacing:-2px;color:#075961;padding:16px 24px 22px;line-height:1.2}.brand span{font-size:12px;font-weight:400;color:var(--muted);letter-spacing:0}.brand:hover{text-decoration:none}.sidebar nav{padding:4px 12px}.nav-item{display:flex;align-items:center;gap:14px;padding:11px 15px;margin-bottom:4px;border-radius:6px;color:#344858;font-size:14px}.nav-item svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;flex:none}.nav-item:hover,.nav-item.active{background:#e8f5f5;color:#007d83;text-decoration:none}.sidebar-foot{padding:24px;color:var(--muted);font-size:12px;margin-top:auto}.workspace{margin-left:208px}.topbar{height:66px;background:white;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 28px}.topbar strong{font-size:18px}.user-menu{display:flex;align-items:center;gap:20px;font-size:13px}.user-menu span{color:var(--muted)}main{padding:24px}.panel{background:white;border-radius:8px;padding:26px;min-width:0}.heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.heading h1{margin:0}.actions,.row-actions{display:flex;align-items:center;gap:12px}.row-actions{gap:10px;white-space:nowrap}.filters{display:flex;flex-wrap:wrap;align-items:end;gap:16px;padding:17px;border:1px solid var(--border);border-radius:6px;margin:20px 0}.filters label{font-size:13px}.filters select{max-width:230px;min-width:140px}.filters input{width:200px}.filters details{width:100%;font-size:12px;color:var(--muted)}summary{cursor:pointer}.filters details .actions{margin-top:12px;flex-wrap:wrap}.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:6px}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px;font-variant-numeric:tabular-nums}th{background:#f5f8fa;color:#394c5b;font-weight:500;white-space:nowrap}th,td{padding:13px 14px;border-bottom:1px solid var(--border);vertical-align:top}td{min-height:44px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#f8fbfb}td.description{min-width:160px;max-width:440px;white-space:pre-wrap;overflow-wrap:anywhere}tfoot{background:#f5f8fa;font-weight:600}.numeric{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.income{color:#00868b}.expense{color:#b64235}.ledger{min-width:1420px}.ledger td{white-space:nowrap}.ledger td.description{white-space:pre-wrap;min-width:250px}.status{font-size:12px;color:#8b6b35}.status.reviewed{color:#526e65}.pagination{display:flex;align-items:center;justify-content:space-between;padding-top:22px;color:var(--muted);font-size:13px}.pagination .button{min-height:32px;padding:5px 12px}.empty{padding:55px 20px;text-align:center;color:var(--muted)}.form-panel{max-width:1000px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.form-grid input,.form-grid select,.form-grid textarea{width:100%}.full{grid-column:1/-1}.form-footer{display:flex;gap:12px;border-top:1px solid var(--border);padding-top:24px;margin-top:6px}.single{grid-template-columns:1fr}.narrow{max-width:600px}.check{flex-direction:row;align-items:center;font-weight:400}.check input{width:16px}.checkbox-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}fieldset{border:1px solid var(--border);border-radius:6px;padding:20px}legend{padding:0 8px}.guest{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center}.login-panel{background:white;padding:36px 44px;width:440px;max-width:100%;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 45px #20303e08}.login-panel .brand{padding:0 0 26px}.login-panel h1{font-size:24px}.login-panel .form-grid{gap:18px}.notice{background:#edf7f2;border:1px solid #cbe6d8;padding:12px 18px;border-radius:6px;margin-bottom:18px;color:#326747}.notice.error{background:#fff3f0;border-color:#f0d3cc;color:#9c3e30}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 30px}.detail-grid>div{padding:14px 0;border-bottom:1px solid var(--border)}dt{color:var(--muted);font-size:12px}dd{margin:5px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.settings-section{padding:20px 0;border-bottom:1px solid var(--border)}.clear-action{margin:12px 0}.clear-action summary{color:#a84235}.section-details{padding-top:24px}.section-details form{margin-top:20px}.error-panel{max-width:720px;width:100%;padding:42px}dialog{border:1px solid var(--border);border-radius:9px;padding:26px;max-width:440px}dialog::backdrop{background:#152f3b66}dialog .actions{justify-content:flex-end}.mobile-menu{display:none}@media(min-width:1600px){table{font-size:14px}.sidebar{width:220px}.workspace{margin-left:220px}main{padding:30px}.panel{padding:30px}}@media(max-width:900px){.sidebar{width:180px}.workspace{margin-left:180px}.brand{padding-left:18px}.brand span{display:none}.topbar{padding:0 18px}.user-menu{gap:12px}main{padding:16px}.panel{padding:18px}.heading{flex-wrap:wrap}.checkbox-grid{grid-template-columns:1fr 1fr}}@media(max-width:640px){.sidebar{display:none;width:208px;top:62px;box-shadow:10px 0 30px #0001}.sidebar.open{display:flex}.workspace{margin-left:0}.mobile-menu{display:inline-flex;min-height:30px;padding:4px 8px}.topbar{height:auto;min-height:62px;padding:10px 12px;flex-wrap:wrap;gap:8px}.topbar strong{font-size:16px}.user-menu{font-size:12px;gap:10px}.user-menu span{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}main{padding:12px}.panel{padding:16px}h1{font-size:24px}.heading{gap:14px}.heading .actions{flex-wrap:wrap;gap:8px}.filters{padding:12px;gap:12px}.filters label{flex:1;min-width:125px}.filters input,.filters select{width:100%;min-width:0}.form-grid{grid-template-columns:1fr;gap:17px}.checkbox-grid{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr}.pagination{align-items:start;gap:14px;flex-direction:column}.login-panel{padding:28px}.table-wrap{max-width:100%}.actions{flex-wrap:wrap}.guest{padding:18px}}@media print{.sidebar,.topbar,.filters,.heading .actions,button,.pagination{display:none!important}.workspace{margin:0}main{padding:0}.panel{padding:0}.table-wrap{overflow:visible;border:0}table{font-size:10px}.ledger{min-width:0}th,td{padding:5px}.guest{display:block}}@media(prefers-reduced-motion:no-preference){button,a{transition:background .12s,color .12s}.notice{animation:appear .15s ease-out}@keyframes appear{from{opacity:.5}to{opacity:1}}}
.ledger th:last-child,.ledger td:last-child{position:sticky;right:0;background:white;box-shadow:-5px 0 8px #20303e08;min-width:128px}.ledger th:last-child{background:#f5f8fa}.nav-item svg{stroke-linecap:round;stroke-linejoin:round}

/* Legacy monetary semantics: sl = blue income/total, zc = red expense. */
.money-income{color:#06c}.money-expense{color:#f00}

.master-table>tbody>tr>td:not(.description){white-space:nowrap}.master-table>thead>tr>th:last-child,.master-table>tbody>tr>td:last-child:not([colspan]){position:sticky;right:0;background:#fff}.master-table>thead>tr>th:last-child{background:#f5f8fa}.stock-context{margin-bottom:24px}.stock-context .detail-grid{margin-bottom:24px}[data-batch-summary]{display:block;white-space:normal;color:var(--muted);font-size:13px}
