:root{
  --bg:#FBF6EE; --card:#FFFFFF; --ink:#2E2A26; --ink2:#6B625A; --line:#EADFD1;
  --coral:#FF6B4A; --coral-soft:#FFEDE7; --green:#1FA97A; --green-soft:#E6F7F0;
  --yellow:#FFC53D; --shadow:0 2px 12px rgba(120,95,70,.08);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
.wrap{max-width:1180px;margin:0 auto;padding:16px 14px 60px}
h1{font-size:20px;margin:0}
.sub{color:var(--ink2);font-size:12px;margin-top:4px}
header.top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.brand{display:flex;align-items:center;gap:10px}
.logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#FFB347,var(--coral));
  display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:15px;box-shadow:var(--shadow)}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:14px;margin-bottom:14px}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.card-t{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.card-t .tag{font-size:11px;font-weight:500;color:var(--ink2);background:#F6F1E9;border-radius:6px;padding:2px 7px}
.tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;-webkit-overflow-scrolling:touch}
.tabs::-webkit-scrollbar{height:0}
.tab{flex:0 0 auto;padding:7px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);cursor:pointer;
  font-size:13px;color:var(--ink2);white-space:nowrap;display:flex;align-items:center;gap:6px}
.tab.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.tab .dot{width:6px;height:6px;border-radius:50%;background:#D8CFC3}
.tab.on .dot{background:var(--yellow)}
.tab.add{border-style:dashed;color:var(--coral);border-color:var(--coral)}
.info{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.fld label{display:block;font-size:11px;color:var(--ink2);margin-bottom:3px}
input,select,textarea{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#FFFDFA;
  font-size:13px;color:var(--ink);font-family:inherit;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--coral);background:#fff}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
.stat{border:1px solid var(--line);border-radius:11px;padding:9px 10px;background:#FFFDFA;position:relative;overflow:hidden}
.stat .n{font-size:11px;color:var(--ink2)}
.stat .v{font-size:17px;font-weight:800;margin-top:2px;letter-spacing:-.3px}
.stat .v small{font-size:11px;font-weight:600;color:var(--ink2);margin-left:2px}
.stat .d{font-size:12px;font-weight:700;margin-top:3px}
.stat .days{font-size:10px;color:#A99E92;margin-top:2px}
.stat .spark{position:absolute;right:8px;top:8px;width:52px;height:34px;opacity:.85}
.stat.empty{opacity:.5}
.up-good{color:var(--green)} .up-bad{color:var(--coral)}
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:11px}
table{border-collapse:separate;border-spacing:0;width:100%;min-width:940px;font-size:13px;background:#fff}
th,td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0;text-align:center}
th:last-child,td:last-child{border-right:none}
thead th{background:#F6F1E9;font-size:12px;font-weight:700;color:var(--ink2);padding:8px 6px}
thead th:first-child{text-align:left;padding-left:12px}
tbody th{background:#FDFAF5;text-align:left;padding:0 10px;font-weight:600;font-size:12.5px;white-space:nowrap;
  position:sticky;left:0;z-index:1;min-width:112px}
tbody th .u{font-size:10px;color:#A99E92;font-weight:500;margin-left:3px}
td input{border:none;background:transparent;border-radius:0;padding:9px 4px;text-align:center;font-size:13px;min-width:66px}
td input:focus{background:var(--coral-soft);box-shadow:inset 0 0 0 2px var(--coral)}
td input.hit{background:var(--green-soft);box-shadow:inset 0 0 0 2px var(--green)}
td input[readonly]{background:#F4F1EC;color:var(--ink2)}
td.ro{background:#FBF7F1;color:var(--ink2);font-weight:700;font-size:13px}
td.d1{background:#FFF9EC}
td .chg{font-size:12px;font-weight:800;display:block}
td .chg small{font-size:10px;color:#A99E92;font-weight:600;display:block}
.delta-col{background:#FFF6F1;min-width:96px}
thead th.delta-col{background:#FFE9DF;color:#B93A1C}
.note-row td input{text-align:left;padding-left:10px;min-width:100%}
table.board{min-width:720px}
table.board td,table.board th{padding:8px 6px;font-size:13px}
.btns{display:flex;gap:8px;flex-wrap:wrap}
button{font-family:inherit;font-size:13px;padding:8px 14px;border-radius:9px;border:1px solid var(--line);
  background:#fff;color:var(--ink);cursor:pointer}
button:hover{border-color:var(--coral);color:var(--coral)}
button.pri{background:var(--coral);border-color:var(--coral);color:#fff;font-weight:700}
button.pri:hover{opacity:.9;color:#fff}
button.dark{background:var(--ink);border-color:var(--ink);color:#fff}
button.dark:hover{opacity:.88;color:#fff}
button.sm{padding:6px 10px;font-size:12px}
button.danger:hover{border-color:#D93025;color:#D93025}
button:disabled{opacity:.5;cursor:not-allowed}
.hint{font-size:12px;color:var(--ink2);background:#FFF9EC;border:1px dashed #F0D9A8;border-radius:10px;padding:9px 11px;margin-bottom:12px}
.hide{display:none !important}
.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;
  padding:10px 18px;border-radius:10px;font-size:13px;opacity:0;transition:.25s;pointer-events:none;z-index:99;max-width:86vw;text-align:center}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.empty-tip{padding:40px 10px;text-align:center;color:var(--ink2)}
/* 登录 */
.login{max-width:340px;margin:14vh auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--shadow);text-align:center}
.login h2{margin:0 0 4px;font-size:18px}
.login p{margin:0 0 16px;font-size:12px;color:var(--ink2)}
/* 链接条 */
.linkbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#FFF9EC;border:1px dashed #F0D9A8;border-radius:10px;padding:10px}
.linkbar input{flex:1;min-width:220px;background:#fff;font-size:12px}
/* 拍照区 */
.shot{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.filebtn{position:relative;overflow:hidden;display:inline-block}
.filebtn input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}
.ocrbox{margin-top:10px;border:1px dashed var(--line);border-radius:10px;padding:10px;background:#FFFDFA;font-size:12px;color:var(--ink2)}
.ocrbox pre{margin:8px 0 0;white-space:pre-wrap;word-break:break-all;max-height:130px;overflow:auto;
  background:#F8F4EE;border-radius:8px;padding:8px;font-size:11px;color:#7A7066}
.ocrbox b{color:var(--green)}
.badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:var(--green-soft);color:var(--green);font-weight:700;margin:2px 4px 0 0}
.badge.gray{background:#F1ECE4;color:#8A8076}
.daypick{display:flex;gap:6px;flex-wrap:wrap}
.daypick button{padding:6px 11px;font-size:12px}
.daypick button.on{background:var(--coral);border-color:var(--coral);color:#fff;font-weight:700}
.progress{height:8px;background:#F1ECE4;border-radius:999px;overflow:hidden;margin-top:8px}
.progress i{display:block;height:100%;background:linear-gradient(90deg,#FFB347,var(--coral));width:0;transition:.3s}
.spin{display:inline-block;width:14px;height:14px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;
  animation:sp900 .8s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes sp900{to{transform:rotate(360deg)}}
@media (max-width:640px){
  .wrap{padding:12px 10px 50px} h1{font-size:17px}
  .card{padding:12px;border-radius:12px} .stat .v{font-size:16px}
  .btn-block{width:100%;justify-content:center}
}
@media print{
  body{background:#fff}
  .tabs,.btns,.hint,.no-print{display:none !important}
  .card{box-shadow:none;border-color:#ddd;break-inside:avoid}
  .wrap{max-width:100%;padding:0}
}
