:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Noto Sans TC",sans-serif;color:#21352e;background:#f4f6f3;font-size:15px;--green:#194d3c;--muted:#75847b;--line:#dfe5df}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer;border:1px solid var(--line);background:white;border-radius:8px;padding:10px 16px;color:var(--green);font-weight:600}button:hover{background:#edf3ee}button.primary{background:var(--green);color:white;border-color:var(--green)}button:disabled{opacity:.45;cursor:wait}button.small{padding:6px 10px;font-size:12px}a{color:#216147;text-underline-offset:4px}input,select,textarea{width:100%;padding:11px 12px;background:white;border:1px solid #cdd8cf;border-radius:7px;color:#20372c}input:focus,textarea:focus,select:focus{outline:2px solid #88ac8e}label{display:grid;gap:7px;font-size:13px;font-weight:600}textarea{min-height:84px;resize:vertical}.shell{display:grid;grid-template-columns:224px 1fr;min-height:100vh}.side{background:#153f32;color:#e2eee5;padding:34px 22px;display:flex;flex-direction:column;gap:34px}.brand{font-size:23px;font-weight:750;letter-spacing:-.8px}.brand small{display:block;font-size:10px;letter-spacing:2px;color:#acd0b5;margin-top:7px}.brand-mark{display:inline-grid;place-items:center;background:#c7dfa3;border-radius:8px;color:#173e31;width:31px;height:31px;margin-right:8px}.nav{display:grid;gap:10px}.nav button{border:0;text-align:left;background:none;color:#dce8df}.nav button.selected{background:#315948;color:#fff}.side-bottom{margin-top:auto;font-size:12px;line-height:1.8;color:#a5c5af;overflow-wrap:anywhere}.side-bottom button{margin-top:12px}.main{padding:30px 42px;max-width:1700px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:22px;color:var(--muted);font-size:12px}.topbar b{color:#2f4d3f}.title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:33px 0 25px}h1{font-size:30px;letter-spacing:-1px;margin:0 0 9px}h2{font-size:21px;margin:0 0 20px}h3{font-size:15px}.subtitle{color:var(--muted);font-size:13px;margin:0;line-height:1.8}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:15px;margin-bottom:26px}.stat{background:white;border:1px solid var(--line);border-radius:12px;padding:20px}.stat span{font-size:12px;color:var(--muted)}.stat strong{display:block;font-size:32px;font-weight:550;margin-top:13px}.stat:first-child{background:#e6eedb;border-color:#d3dfc0}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:22px;margin-bottom:20px}.filters{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:10px;margin-bottom:14px}.filters.secondary{grid-template-columns:1fr 1fr auto auto;align-items:end}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;color:var(--muted);font-size:11px;font-weight:550;padding:15px 12px;background:#f8faf7;white-space:nowrap}td{padding:19px 12px;border-bottom:1px solid #ecf0eb;white-space:nowrap}td small{display:block;color:var(--muted);margin-top:6px}.badge{display:inline-block;font-size:11px;padding:5px 9px;border-radius:6px;background:#edf0ec;color:#5e6f61}.badge.received{background:#e9eef9;color:#4b68a1}.badge.partial{background:#fff3d8;color:#957028}.badge.exception{background:#fce9e3;color:#b3583b}.badge.completed{background:#e4f0e4;color:#36724a}.empty{text-align:center;padding:60px 20px;color:var(--muted)}.empty strong{display:block;color:#2e4a3a;font-size:18px;margin-bottom:10px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spread{justify-content:space-between}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.stack{display:grid;gap:18px}.full{grid-column:1/-1}.help{font-size:12px;color:var(--muted);line-height:1.8}.error{padding:12px 15px;border-radius:7px;background:#fff0e9;color:#a5492e;font-size:13px;line-height:1.7}.error:empty{display:none}.item-row{display:grid;grid-template-columns:2fr 1.3fr .8fr .6fr auto;gap:8px;margin:10px 0}.item-row input{min-width:0}.pager{display:flex;justify-content:space-between;align-items:center;margin-top:18px;font-size:12px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:16px;padding:28px;width:760px;max-width:calc(100vw - 28px);max-height:90vh;color:#21352e}dialog::backdrop{background:#12281c88;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-head h2{margin:0}.details{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.details span{display:block;color:var(--muted);font-size:12px;margin-bottom:6px}.timeline{border-left:2px solid #d7e2d4;padding-left:18px;margin-left:4px}.timeline p{font-size:13px;line-height:1.8}.timeline small{color:var(--muted)}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#183e30;color:white;padding:13px 24px;border-radius:9px;display:none;z-index:10}.login{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.login-story{background:#163e31;color:white;padding:55px 11%;display:flex;flex-direction:column;justify-content:space-between}.login-story h1{font-size:48px;font-weight:550;line-height:1.35;letter-spacing:-1.5px;margin:35px 0 20px}.login-story p{color:#b0cbb7;line-height:1.9}.route-art{height:120px;border:1px solid #60876b;border-radius:16px;display:flex;justify-content:space-around;align-items:center;position:relative;margin-top:42px;color:#c7dfa3;font-size:28px}.route-art:before{content:'';position:absolute;left:15%;right:15%;top:50%;border-top:1px dashed #89ab8e}.route-art span{background:#163e31;z-index:1;padding:10px}.login-form{display:flex;justify-content:center;align-items:center;padding:50px}.login-card{max-width:360px;width:100%}.login-card h2{font-size:29px;margin-bottom:10px}.login-card form{margin-top:30px}.login-card .primary{width:100%;padding:14px}.footer-note{font-size:11px;letter-spacing:.6px;color:#a5c5af}.check-row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;align-items:center;margin:12px 0}.notice{background:#eef3e8;padding:12px 15px;border-radius:8px;font-size:12px;line-height:1.8;color:#506c47}.muted{color:var(--muted)}@media(max-width:1000px){.main{padding:25px}.shell{grid-template-columns:185px 1fr}.stats{gap:8px}.stat{padding:14px}.filters{grid-template-columns:1fr 1fr}}@media(max-width:700px){.shell{display:block}.side{padding:18px;gap:18px}.nav{display:flex}.side-bottom{display:none}.main{padding:18px}.topbar{padding-bottom:15px}.title-row{margin:24px 0}.stats{grid-template-columns:repeat(3,1fr)}.stat strong{font-size:26px}.filters.secondary{grid-template-columns:1fr 1fr}.login{display:block}.login-story{padding:28px}.login-story h1{font-size:28px}.login-story .route-art,.login-story .footer-note{display:none}.login-form{padding:32px 24px}.grid2,.details{grid-template-columns:1fr}.item-row{grid-template-columns:1fr 1fr}.item-row button{justify-self:start}dialog{padding:20px}.panel{padding:15px}.title-row h1{font-size:25px}}
.direction-filter{max-width:340px;margin:14px 0}.details+.row{margin-top:20px}

.account-context{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;padding:14px 0;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}.account-context b{color:var(--green);margin-right:10px}.account-context>span{overflow-wrap:anywhere}

.field-control{min-width:0;display:flex;flex-direction:column;gap:5px}.field-control input{width:100%}input[aria-invalid="true"],select[aria-invalid="true"],textarea[aria-invalid="true"]{border:2px solid #b42318;background:#fff5f4;outline-color:#b42318}.field-error{display:block;color:#b42318;font-size:12px;line-height:1.5}.error:empty{display:none}
