:root{--green:#176d62;--green-dark:#104e47;--mint:#e7f2ef;--text:#213a36;--muted:#586d63;--border:#e1e8e5;--bg:#f5f7f5;--red:#b74747;--amber:#a36e15}*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--text);background:var(--bg);font-size:18px}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:7px;transition:.15s}button:disabled{opacity:.5;cursor:wait}input,select,textarea{border:1px solid var(--border);border-radius:7px;padding:11px 12px;background:#fff;color:var(--text);outline:none;min-width:0}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #176d6210}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1{font-size:34px;font-weight:650;letter-spacing:-1px;margin-bottom:10px}h2{font-size:26px}h3{font-size:20px}small{font-size:17px}.muted{color:var(--muted);line-height:1.7}.eyebrow{color:var(--muted);font-size:16px;letter-spacing:1.7px;display:block;margin-bottom:13px}.brand{display:flex;align-items:center;gap:12px;font-size:23px;font-weight:700;letter-spacing:1px}.brand-icon{display:grid;place-items:center;width:38px;height:38px;background:var(--green);color:#fff;border-radius:10px;font-size:34px}.brand small{display:block;font-weight:400;letter-spacing:3px;color:var(--muted);margin-top:3px}.primary{background:var(--green);color:white;padding:12px 20px;font-weight:600;white-space:nowrap}.primary:hover{background:var(--green-dark)}.secondary{background:white;border:1px solid var(--border);padding:10px 15px}.secondary:hover{background:var(--mint)}.danger{color:var(--red);background:#fbeeee;padding:8px 12px}.text-button{color:var(--green);background:transparent;padding:8px}.wide{width:100%;display:flex;justify-content:space-between}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.login-story{background:#153f38;color:#f3f5ed;padding:48px 64px;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-story:after{content:"";width:430px;height:430px;border:1px solid #ffffff0c;box-shadow:0 0 0 65px #ffffff04,0 0 0 130px #ffffff03;position:absolute;right:-170px;bottom:-210px;border-radius:50%;pointer-events:none}.login-story .brand-icon{background:#f1eee0;color:#153f38}.story-main{margin:auto 0;padding:60px 0;position:relative;z-index:1}.story-main h1{font-size:50px;line-height:1.5;font-weight:500;letter-spacing:0}.story-main .eyebrow{color:#96b8ab}.story-main p{color:#aac2b8;line-height:2}.story-lines{display:flex;flex-direction:column;gap:18px;font-size:17px;color:#ceddd5;margin-top:45px;letter-spacing:1px}.story-footer{color:#799d8e;font-size:17px}.login-form-area{display:grid;place-items:center;padding:30px;background:#fafbf8}.login-card{width:100%;max-width:355px}.login-card h2{font-size:36px;margin:12px 0}.login-card>label{display:flex;flex-direction:column;gap:10px;margin:25px 0 0;font-size:18px}.login-card input{padding:14px}.login-card .primary{margin-top:24px;padding:15px}.login-note{margin-top:28px;font-size:17px;color:var(--muted);line-height:1.9;text-align:center}.error{color:var(--red);font-size:18px;min-height:18px;margin:12px 0}.app-shell{display:flex;min-height:100vh}.sidebar{width:224px;flex-shrink:0;background:#fff;border-right:1px solid var(--border);padding:32px 20px;position:fixed;top:0;bottom:0;display:flex;flex-direction:column}.sidebar .brand{font-size:21px;padding:0 9px}.nav-label{font-size:15px;letter-spacing:2px;color:#9aa7a1;margin:42px 13px 15px}nav{display:flex;flex-direction:column;gap:7px}nav button{background:transparent;color:#657c73;text-align:left;padding:13px;display:flex;align-items:center;gap:14px;font-size:18px}nav button>span{font-size:22px;width:19px;text-align:center}nav button:hover{background:#f5f8f6}nav button.active{background:var(--mint);color:var(--green);font-weight:600}nav b{margin-left:auto;background:var(--green);color:white;font-size:15px;padding:2px 6px;border-radius:5px}.sidebar-bottom{margin-top:auto;color:#7b9388;font-size:16px;padding:20px 12px 0;line-height:2}.sidebar-bottom small{display:block;color:#a1afa8;font-size:15px}.status-dot{display:inline-block;width:6px;height:6px;background:#5c9f79;border-radius:50%;margin-right:5px}.main{width:calc(100% - 224px);margin-left:224px}.topbar{height:76px;padding:0 42px;background:#ffffffb8;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;color:#7b8c85;font-size:17px}.top-actions{display:flex;align-items:center;gap:12px}.top-actions .text-button{font-size:17px;color:#7b8c85}.content{padding:35px 42px;max-width:1560px;margin:auto;min-height:calc(100vh - 125px)}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:28px}.page-heading .eyebrow{font-size:15px;margin-bottom:12px}.page-heading h1{font-size:32px}.page-heading p{font-size:17px;margin:0}.heading-actions{display:flex;gap:12px;align-items:center}.heading-actions select{max-width:200px}.notice{background:#fff4db;border:1px solid #f1e2bc;border-radius:8px;color:#926a26;padding:7px 14px;margin-bottom:22px;font-size:17px;display:flex;justify-content:space-between;align-items:center}.notice button{font-size:17px;color:#926a26}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:25px}.stat{background:#fff;border:1px solid var(--border);border-radius:10px;padding:22px 24px}.stat-label{color:#7f9288;font-size:17px;display:flex;justify-content:space-between;align-items:center}.stat-label span{font-size:23px;color:#91ac9a}.stat-value{font-size:40px;letter-spacing:-1px;margin:12px 0 8px;font-weight:600}.stat-note{font-size:16px;color:#8e9e95}.stat.primary-stat{background:#176d62;border-color:#176d62;color:white}.primary-stat .stat-label,.primary-stat .stat-label span,.primary-stat .stat-note{color:#bcd7ce}.grid-two{display:grid;grid-template-columns:1.55fr 1fr;gap:22px;margin-bottom:22px}.panel{background:white;border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:22px}.grid-two .panel{margin-bottom:0}.panel-head{padding:20px 24px;border-bottom:1px solid #edf1ed;display:flex;align-items:center;justify-content:space-between;gap:14px}.panel-head h3{margin:0}.panel-head .muted{font-size:16px;margin:5px 0 0}.panel-body{padding:24px}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:14px}.quick-action{background:#f6f8f4;text-align:left;border:1px solid #e9eee6;padding:20px 17px;color:var(--text)}.quick-action>span{display:block;color:var(--green);font-size:32px;margin-bottom:18px}.quick-action strong{font-size:18px;display:block;margin-bottom:6px}.quick-action small{font-size:15px;color:var(--muted)}.guide-line{display:flex;gap:15px;margin-bottom:22px}.guide-line:last-child{margin:0}.guide-num{background:var(--mint);border-radius:50%;width:28px;height:28px;flex-shrink:0;display:grid;place-items:center;color:var(--green);font-size:17px}.guide-line strong{font-size:18px;display:block;margin:3px 0 6px}.guide-line p{font-size:16px;color:var(--muted);line-height:1.8;margin:0}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:17px;white-space:nowrap;text-align:left}th{background:#f8faf7;color:#839289;font-size:16px;font-weight:500;padding:14px 20px;border-bottom:1px solid var(--border)}td{padding:16px 20px;border-bottom:1px solid #edf1ed;line-height:1.6}tr:last-child td{border-bottom:0}td small{display:block;color:var(--muted);font-size:15px}.material-name{font-weight:600;color:#304d40}.badge{display:inline-block;font-size:15px;border-radius:4px;padding:3px 7px;background:#edf2ef;color:#77887f}.badge.approved{background:#e7f4eb;color:#43845b}.badge.pending{background:#fff2d8;color:#a47727}.badge.rejected{background:#fbe9e9;color:#b25959}.badge.in{background:#e8f2ed;color:#408569}.badge.out{background:#f1effb;color:#7b64ad}.quantity{font-variant-numeric:tabular-nums;font-weight:600}.rate-bar{height:4px;width:68px;border-radius:4px;background:#eef2ed;overflow:hidden;margin-top:6px}.rate-fill{height:100%;background:#72a584}.low .rate-fill{background:#dba14a}.low{color:var(--amber)}.empty{padding:60px 20px;text-align:center;color:#9aaa9d;font-size:17px;white-space:normal}.empty-symbol{display:block;font-size:44px;color:#bacbbd;margin-bottom:13px}.empty strong{font-size:18px;color:#6d8675;display:block;margin-bottom:8px}.table-tools{padding:17px 22px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--border)}.table-tools input,.table-tools select{padding:8px 10px;font-size:17px}.table-tools .search{flex:1;min-width:160px}.table-count{color:var(--muted);font-size:16px}.action-row{display:flex;gap:6px}.action-row button{padding:6px 9px;font-size:16px}.inline-actions{display:flex;gap:12px}.panel-head .secondary{font-size:16px;padding:8px 12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid label{display:flex;flex-direction:column;gap:8px;color:#657c6f;font-size:17px}.form-grid label.full{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea{width:100%}.form-grid label em{font-style:normal;color:#b3784a}.form-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.form-hint{font-size:16px;line-height:1.8;color:var(--muted);background:#f5f8f4;padding:12px;border-radius:7px;margin-top:20px}.import-drop{border:1px dashed #b9d0bd;border-radius:10px;background:#f8faf6;text-align:center;padding:45px 20px}.import-drop .upload-symbol{font-size:44px;color:var(--green);display:block;margin-bottom:16px}.import-drop h3{font-size:20px;margin-bottom:10px}.import-drop p{font-size:17px;color:var(--muted)}.import-drop input{display:block;max-width:370px;margin:22px auto;background:white}.import-drop button{margin-top:5px}.import-info{margin-top:20px;color:var(--muted);line-height:1.9;font-size:17px}.preview-table input,.preview-table select{padding:8px;font-size:17px;width:110px}.preview-table input[data-field=name]{width:160px}.preview-table input[data-field=unit]{width:65px}.preview-table input[data-field=quantity],.preview-table input[data-field=people]{width:85px}.raw-text{white-space:pre-wrap;max-height:260px;overflow:auto;font-size:17px;line-height:1.7;background:#f5f7f2;padding:18px;border-radius:7px;color:#6f826e}.settings-grid{display:grid;grid-template-columns:.8fr 1.4fr;gap:22px}.dep-row{padding:16px 24px;border-bottom:1px solid var(--border);font-size:17px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);z-index:100;background:#244c3e;color:white;padding:13px 22px;border-radius:8px;box-shadow:0 8px 35px #0002;max-width:90%;font-size:18px}.toast.bad{background:#a04e4e}dialog{border:1px solid var(--border);border-radius:13px;padding:0;width:620px;max-width:calc(100% - 30px);max-height:90vh;color:var(--text);box-shadow:0 20px 80px #18332633}dialog::backdrop{background:#173c304b;backdrop-filter:blur(3px)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:23px 26px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:22px;margin:0}.icon-button{background:transparent;font-size:30px;color:#829589}#modalBody{padding:24px 26px}footer{display:flex;justify-content:space-between;padding:16px 42px;border-top:1px solid var(--border);font-size:15px;color:#9ba89f}.split-info{background:#f7f9f4;border-left:3px solid var(--green);padding:18px;font-size:17px;line-height:1.9;margin-bottom:20px}.error-panel{padding:40px;color:var(--red);background:#fff;border-radius:10px}.loading{padding:70px;text-align:center;color:var(--muted)}.mobile-only{display:none}
@media(min-width:1600px){.content{padding-top:48px}.stat{padding:27px}.story-main h1{font-size:58px}}@media(max-width:1150px){.sidebar{width:190px;padding:28px 12px}.main{margin-left:190px;width:calc(100% - 190px)}.content{padding:28px}.topbar{padding:0 28px}.stats{gap:12px}.stat{padding:18px}.grid-two{grid-template-columns:1fr 1fr}.page-heading{align-items:flex-start}.heading-actions{flex-wrap:wrap;justify-content:flex-end}.login-story{padding:40px}.story-main h1{font-size:42px}.settings-grid{grid-template-columns:1fr}.stat-value{font-size:34px}}
@media(max-width:760px){.login-shell{grid-template-columns:1fr}.login-story{padding:28px 26px}.story-main{padding:24px 0}.story-main h1{font-size:34px;margin-bottom:12px}.story-main p{font-size:17px;margin:0}.story-lines,.story-footer{display:none}.login-form-area{padding:34px 25px}.sidebar{position:sticky;top:0;z-index:20;width:100%;padding:12px 15px 0;flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--border)}.sidebar .brand{font-size:19px;padding:0}.brand-icon{width:30px;height:30px;font-size:26px}.sidebar .brand small,.nav-label,.sidebar-bottom{display:none}.sidebar nav{display:flex;flex-direction:row;width:100%;gap:5px;overflow-x:auto;margin-top:12px;padding-bottom:7px}.sidebar nav button{font-size:16px;white-space:nowrap;padding:9px 10px;gap:5px}.sidebar nav button>span{font-size:18px;width:15px}.app-shell{display:block}.main{width:100%;margin:0}.topbar{height:49px;padding:0 17px;font-size:15px}.top-actions{gap:2px}.top-actions .text-button{font-size:15px;padding:6px}.content{padding:23px 17px;min-height:calc(100vh - 180px)}.page-heading{flex-direction:column;gap:17px;margin-bottom:21px}.page-heading h1{font-size:30px}.heading-actions{width:100%;justify-content:space-between}.heading-actions select{flex:1;max-width:none}.heading-actions .primary{font-size:17px;padding:12px 15px}.stats{grid-template-columns:1fr 1fr;gap:11px;margin-bottom:18px}.stat{padding:16px}.stat-label{font-size:16px}.stat-value{font-size:32px;margin:10px 0 7px}.stat-note{font-size:15px}.grid-two,.settings-grid{grid-template-columns:1fr;gap:18px}.panel{margin-bottom:18px}.panel-head{padding:17px}.panel-head h3{font-size:18px}.panel-body{padding:18px}.quick-action{padding:16px}.table-tools{padding:14px;gap:8px}.table-tools .search{flex-basis:100%}.table-tools input[type=date]{width:135px}th,td{padding:13px 15px}.form-grid{gap:14px}.form-grid label{font-size:16px}.form-grid input,.form-grid select,.form-grid textarea{padding:11px 10px;font-size:18px}.form-grid .full-mobile{grid-column:1/-1}.notice{font-size:15px;padding:9px;line-height:1.6}.notice button{font-size:15px;white-space:nowrap}.modal-head{padding:19px}#modalBody{padding:20px}.import-drop{padding:30px 14px}.import-drop input{width:100%;font-size:16px}.import-info{font-size:16px}footer{padding:14px 18px;font-size:14px;gap:20px}#userBadge{max-width:110px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.inline-actions{gap:5px}.panel-head .secondary{padding:7px 9px;font-size:15px}}
/* Larger text and comfortable controls for desktop and mobile reading. */
.form-grid > .full{grid-column:1/-1}
.material-field{min-width:0}
.material-field > label{margin-bottom:8px}
.material-combobox{position:relative}
.material-combobox > input{padding-right:48px}
.material-toggle{position:absolute;right:3px;top:3px;width:42px;background:transparent;color:var(--green)}
.material-options{position:absolute;top:calc(100% + 5px);left:0;right:0;max-height:240px;overflow-y:auto;z-index:5;background:white;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 22px #18332620}
.material-options [role=option]{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;border-radius:0;background:white;padding:12px 15px;border-bottom:1px solid #edf1ee;color:var(--text)}
.material-options [role=option]:hover,.material-options [role=option].active{background:var(--mint)}
.material-options [role=option] span{font-size:16px;color:var(--muted)}
.material-empty{padding:16px;font-size:16px}
.material-field > small{display:block;font-size:16px;margin-top:8px}
.new-material-fields{background:#f3f7f4;border:1px solid var(--border);border-radius:8px;padding:16px;margin-top:10px}
.new-material-fields .error:empty{display:none}
.form-grid input[readonly]{background:#f2f5f2;color:#53685d;cursor:default}
.modal-head{position:sticky;top:0;z-index:8;background:white}
#entryForm label > .muted{position:absolute;top:0;right:0;font-size:16px}
@media(max-width:760px){#entryForm .form-grid{grid-template-columns:minmax(0,1fr)}}
.table-search-form{padding:22px 24px;border-bottom:1px solid var(--border)}
.table-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:16px}
.table-search-keyword{display:flex;flex-direction:column;gap:7px;font-size:16px;color:#53685d;min-width:0}
.table-search-keyword input{width:100%;font-size:18px}
.table-search-actions{display:flex;gap:10px;flex-wrap:wrap}
.table-search-hint{color:var(--muted);font-size:15px;line-height:1.8;margin:16px 0 0}
.table-result-bar{padding:14px 24px;color:#53685d;font-size:16px;background:#f8faf7}
.sort-button{display:inline-flex;align-items:center;gap:8px;background:transparent;color:inherit;padding:0;font:inherit;font-weight:600;text-align:left;white-space:nowrap}
.sort-button span{color:#8a9b90;font-size:17px}
.sort-button.selected,.sort-button.selected span{color:var(--green)}
.sort-button:hover{color:var(--green)}
.header-sort-group{display:flex;align-items:center;gap:10px}
.sort-separator{color:#8a9b90;font-weight:400}
.table-long-text{white-space:normal;min-width:160px;max-width:320px}
a[aria-disabled=true]{opacity:.5;cursor:wait}
@media(max-width:760px){
  .table-search-form{padding:18px}
  .table-search-row{grid-template-columns:1fr;gap:12px}
  .table-search-actions button{flex:1}
  .table-result-bar{padding:14px 18px}
}
body{line-height:1.65}
.form-grid label{position:relative}
.form-grid label em{position:absolute;top:0;right:0;font-size:15px}
button{min-height:44px}
input,select,textarea{font-size:18px;min-height:48px}
.main,.panel{min-width:0}
.sidebar{width:248px}
.main{margin-left:248px;width:calc(100% - 248px)}
.topbar{height:auto;min-height:88px;padding-top:16px;padding-bottom:16px;gap:14px;flex-wrap:wrap}
.top-actions{flex-wrap:wrap}
.panel-head{flex-wrap:wrap}
.stat-value{line-height:1.3}
.stat-label{gap:8px;flex-wrap:wrap}
.page-heading p,.panel-head .muted,.stat-label,.stat-note,.table-count,
.quick-action small,.guide-line p,.form-hint,.import-info,.login-note,
td small,.sidebar-bottom,.sidebar-bottom small,footer{color:#586d63}
th{color:#4e6559;font-weight:600}
.nav-label{color:#64756d}
.primary-stat .stat-label,.primary-stat .stat-note{color:#d6e8e1}
.topbar,.top-actions .text-button{color:#53685d}
.preview-table input,.preview-table select{width:140px}
.preview-table input[data-field=name]{width:210px}
.preview-table input[data-field=unit]{width:95px}
.preview-table input[data-field=quantity],.preview-table input[data-field=people]{width:120px}
.preview-table input[data-field=date]{width:170px}
.preview-table input[data-field=class_name]{width:220px}
.preview-table input[data-field=note]{width:260px}
.rate-bar{width:86px;height:6px}
@media(max-width:1150px) and (min-width:761px){
  .sidebar{width:224px}
  .main{margin-left:224px;width:calc(100% - 224px)}
}
@media(max-width:760px){
  .sidebar{width:100%}
  .main{margin-left:0;width:100%}
  .topbar{padding-top:10px;padding-bottom:10px;gap:4px}
  .top-actions{width:100%;gap:5px;justify-content:space-between}
  #userBadge{max-width:180px;font-size:15px}
  .heading-actions select{font-size:17px}
  .heading-actions .primary{font-size:18px}
  .panel-head .secondary{font-size:15px}
  .form-grid input,.form-grid select,.form-grid textarea{font-size:18px}
  .form-grid label{font-size:17px}
  .notice{flex-wrap:wrap;gap:4px}
  .notice button{white-space:normal}
  .inline-actions{flex-wrap:wrap;gap:8px}
  .table-tools input[type=date]{width:160px}
  .import-drop input{font-size:16px}
  footer{flex-wrap:wrap;gap:6px}
}

.entry-memory-note{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:18px;color:var(--muted);font-size:16px}
.table-date-range{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-top:16px}
.table-date-range label{display:flex;flex-direction:column;gap:7px;color:#53685d;font-size:16px}
.table-date-range input{width:190px;max-width:100%}
.table-date-range > .muted{font-size:16px;margin-bottom:10px}
.date-range-separator{margin-bottom:11px;color:var(--muted)}
.movement-table{min-width:1100px}
@media(min-width:1100px){
  .movement-table{table-layout:fixed;width:100%;min-width:0}
  .movement-table th,.movement-table td{padding:12px 6px;white-space:normal;overflow-wrap:anywhere;vertical-align:top}
  .movement-table col:nth-child(1){width:13%}
  .movement-table col:nth-child(2){width:9%}
  .movement-table col:nth-child(3){width:5.5%}
  .movement-table col:nth-child(4){width:11%}
  .movement-table col:nth-child(5){width:8%}
  .movement-table col:nth-child(6){width:9%}
  .movement-table col:nth-child(7){width:11.5%}
  .movement-table col:nth-child(8){width:12%}
  .movement-table col:nth-child(9){width:9%}
  .movement-table col:nth-child(10){width:5%}
  .movement-table col:nth-child(11){width:7%}
  .movement-table .header-sort-group{flex-direction:column;align-items:flex-start;gap:0}
  .movement-table .sort-button{white-space:normal;min-width:0;max-width:100%;gap:3px;line-height:1.45}
  .movement-table .sort-button span{flex-shrink:0}
  .movement-table th:nth-child(3) .sort-button,.movement-table th:nth-child(10) .sort-button{flex-direction:column;align-items:flex-start;gap:0}
  .movement-table .sort-separator{display:none}
  .movement-table .table-long-text{min-width:0;max-width:none}
  .movement-table .badge{max-width:100%;padding:4px}
  .movement-table .action-row{flex-wrap:wrap;gap:6px;min-width:0}
  .movement-table .action-row button{white-space:normal;max-width:100%;min-width:0;width:100%;padding:6px 4px}
}
@media(max-width:760px){
  .table-date-range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px}
  .table-date-range input{width:100%;min-width:0;font-size:16px;padding:10px 6px}
  .table-date-range > .muted{grid-column:1/-1;margin:2px 0 0}
}
