:root{color:#1f2933;font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f4f7f2;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--accent: #2f7d68;--accent-dark: #1f5f50;--ink: #172026;--muted: #60706c;--line: #d9e2dc;--panel: #ffffff;--danger: #b42318;--shadow: 0 18px 45px rgba(31, 41, 51, .12)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}button,input,textarea{font:inherit}button{cursor:pointer}.center-screen,.login-shell{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:24px}.login-shell{background:linear-gradient(135deg,#2f7d6829,#cee2c380),#f4f7f2}.login-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);max-width:420px;padding:36px;width:100%}.brand-mark{align-items:center;background:#e5f2ec;border-radius:8px;color:var(--accent-dark);display:flex;height:52px;justify-content:center;margin-bottom:24px;width:52px}h1,h2,p{margin-top:0}h1{color:var(--ink);font-size:32px;line-height:1.15;margin-bottom:8px}h2{color:var(--ink);font-size:18px;margin-bottom:0}p{color:var(--muted);line-height:1.6}.login-form,.record-form{display:grid;gap:16px}label,.field{color:var(--ink);display:grid;gap:7px;font-weight:650}input,textarea{background:#fbfdfb;border:1px solid #cbd7d0;border-radius:8px;color:var(--ink);outline:none;padding:12px 13px;width:100%}textarea{resize:vertical}input:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2f7d6824}.primary-button,.secondary-button,.icon-text-button,.icon-button{align-items:center;border:0;border-radius:8px;display:inline-flex;justify-content:center}.primary-button{background:var(--accent);color:#fff;gap:8px;min-height:46px;padding:0 18px}.primary-button:hover{background:var(--accent-dark)}.primary-button:disabled{cursor:not-allowed;opacity:.7}.secondary-button{background:#edf4f2;border:1px solid #bcd3cb;color:var(--accent-dark);gap:8px;min-height:46px;padding:0 16px}.secondary-button:hover{background:#dfece7}.secondary-button:disabled{cursor:not-allowed;opacity:.55}.icon-text-button{background:#fff;border:1px solid var(--line);color:var(--ink);gap:8px;min-height:40px;padding:0 14px}.icon-button{background:#eef4f0;color:var(--ink);flex:0 0 auto;height:36px;width:36px}.icon-button:hover{background:#dfeae3}.icon-button.danger{background:#fff0ee;color:var(--danger)}.error-text,.notice{border-radius:8px;line-height:1.5;padding:10px 12px}.error-text{background:#fff0ee;color:var(--danger)}.notice{background:#eef7f3;border:1px solid #c9e3d7;color:var(--accent-dark)}.app-shell{margin:0 auto;max-width:1320px;padding:28px}.topbar,.toolbar,.table-heading,.form-heading{align-items:center;display:flex;justify-content:space-between}.topbar{gap:16px;margin-bottom:24px}.eyebrow{color:var(--accent-dark);font-size:13px;font-weight:750;margin-bottom:6px}.toolbar{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 28px #1f293314;gap:12px;margin-bottom:16px;padding:14px}.search-box,.date-box{align-items:center;background:#fbfdfb;border:1px solid #cbd7d0;border-radius:8px;color:var(--muted);display:flex;gap:8px;min-height:46px;padding:0 10px}.search-box{flex:1 1 320px}.date-box{flex:0 1 260px}.search-box input,.date-box input{background:transparent;border:0;box-shadow:none;padding:0}.content-grid{align-items:start;display:grid;gap:16px;grid-template-columns:minmax(310px,380px) 1fr}.content-grid:not(:has(.record-form)){grid-template-columns:1fr}.record-form,.table-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 36px #1f293314;padding:18px}.table-heading{gap:12px;margin-bottom:14px}.table-heading span{color:var(--muted);font-size:14px}.table-wrap{overflow-x:auto}.mobile-record-list{display:none}table{border-collapse:collapse;min-width:980px;width:100%}th,td{border-bottom:1px solid var(--line);padding:13px 12px;text-align:left;vertical-align:top}th{color:var(--muted);font-size:13px;font-weight:750;white-space:nowrap}td{color:var(--ink);line-height:1.45}.date-cell{font-weight:750;white-space:nowrap}.row-actions{display:flex;gap:8px}.empty-state{align-items:center;color:var(--muted);display:flex;gap:10px;justify-content:center;min-height:220px}.spin{animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:860px){body{background:#f4f7f2}.login-shell{align-items:stretch;padding:16px}.login-panel{align-self:center;padding:24px}.app-shell{padding:14px}.topbar,.toolbar{align-items:stretch;flex-direction:column}.topbar{margin-bottom:14px}.topbar h1{margin-bottom:0}.toolbar{gap:8px;padding:8px}.content-grid{grid-template-columns:1fr}.record-form,.table-panel{padding:14px}.search-box,.date-box,.primary-button,.secondary-button,.icon-text-button{width:100%}.primary-button,.secondary-button,.icon-text-button{min-height:38px}.icon-button{height:38px;width:38px}input,textarea{font-size:16px}.search-box,.date-box{gap:6px;min-height:32px;padding:0 7px}.search-box input,.date-box input{font-size:14px;min-height:30px}.search-box svg,.date-box svg{height:15px;width:15px}.date-box .icon-button{height:28px;width:28px}textarea{min-height:92px}.table-heading{align-items:flex-start;margin-bottom:12px}.table-wrap{display:none}.mobile-record-list{display:grid;gap:12px}.record-card{background:#fbfdfb;border:1px solid var(--line);border-radius:8px;padding:10px 12px}.record-card-head{align-items:center;display:flex;gap:12px;justify-content:space-between}.record-card.is-expanded .record-card-head{border-bottom:1px solid var(--line);margin-bottom:12px;padding-bottom:12px}.record-card-head span,.record-card-grid dt{color:var(--muted);display:block;font-size:12px;font-weight:750;margin-bottom:4px}.record-summary-button{background:transparent;border:0;color:inherit;flex:1;min-height:38px;min-width:0;padding:0;text-align:left}.record-card-head strong{color:var(--ink);font-size:18px}.record-card-grid{display:grid;gap:12px;grid-template-columns:1fr;margin:0}.record-card-grid div{min-width:0}.record-card-grid dd{color:var(--ink);line-height:1.55;margin:0;overflow-wrap:anywhere;white-space:pre-wrap}h1{font-size:26px}}@media(min-width:861px){.table-panel{min-width:0}}
