:root{--bg: #f2f6fa;--card: #ffffff;--ink: #17242f;--muted: #6b7b8c;--line: #dbe5ef;--primary: #1f4e79;--primary-2: #2d6aa3;--soft: #e8f0f8;--danger: #b3261e;--danger-soft: #fdeceb;--ok: #1f7a4d;--ok-soft: #e8f5ee;--warn: #9a5b00;--warn-soft: #fff4e0;--radius: 14px;--shadow: 0 6px 18px rgba(23, 36, 47, .06)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang TC,Microsoft JhengHei,sans-serif;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--primary-2);text-decoration:none}h1,h2,h3,h4,p{margin:0}.boot{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted)}.muted{color:var(--muted)}.tinyhead{font-size:12px;color:var(--muted);margin:8px 0 2px}.app{min-height:100vh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;color:var(--ink)}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:var(--primary);color:#fff;font-weight:700;font-size:18px}.brand strong{display:block;font-size:15px;letter-spacing:.02em}.brand small{display:block;color:var(--muted);font-size:11px}.topnav{display:flex;align-items:center;gap:14px;font-size:14px}.topnav a{color:var(--ink)}.linkbtn{border:0;background:none;color:var(--primary-2);font-size:13px;padding:4px 2px;cursor:pointer;font-family:inherit}.linkbtn.danger{color:var(--danger)}.main{max-width:980px;margin:0 auto;padding:16px 16px 60px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:9px 16px;font-size:14px;font-family:inherit;cursor:pointer;transition:.15s}.btn:hover{border-color:#b9cbd9}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:#18405f}.btn.ghost{background:transparent}.btn.danger{color:var(--danger);border-color:#ecc6c3;background:#fff}.btn.block{width:100%;margin-top:8px}.field{display:block;margin:12px 0}.field>span{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.field input,.field select,.field textarea,.opbox input,.opbox textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;font-size:15px;font-family:inherit;color:var(--ink);outline:none}.field input:focus,.field select:focus,.field textarea:focus,.opbox input:focus,.opbox textarea:focus{border-color:var(--primary-2);box-shadow:0 0 0 3px #2d6aa31f}.field textarea,.opbox textarea{resize:vertical}.check{display:inline-flex;align-items:center;gap:7px;font-size:14px;margin:8px 14px 8px 0;cursor:pointer}.seg{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:14px 0}.seg button{flex:1;border:0;background:#fff;padding:9px 10px;font-size:14px;font-family:inherit;cursor:pointer;color:var(--muted)}.seg button.on{background:var(--primary);color:#fff}.seg.small button{padding:7px 14px;flex:0 0 auto}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row.between{justify-content:space-between}.formsec{display:flex;gap:12px;flex-wrap:wrap}.formsec>*{flex:1 1 180px}.field.narrow{flex:0 0 110px}.notice{border-radius:10px;padding:10px 12px;font-size:14px;margin:10px 0;border:1px solid transparent}.notice.err{background:var(--danger-soft);color:var(--danger);border-color:#f0c8c5}.notice.ok{background:var(--ok-soft);color:var(--ok);border-color:#c4e3d3}.bigcode{font-size:20px;letter-spacing:.12em;font-weight:700;background:#fff;border-radius:8px;padding:2px 10px;margin:0 6px}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 20% 10%,#e3eef8 0,transparent 55%),var(--bg)}.auth-card{width:100%;max-width:380px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px 24px;box-shadow:var(--shadow)}.auth-logo{width:54px;height:54px;border-radius:14px;background:var(--primary);color:#fff;display:grid;place-items:center;font-size:26px;font-weight:700;margin-bottom:14px}.auth-card h1{font-size:22px}.auth-foot{margin-top:14px;font-size:12px;color:var(--muted)}.home-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 14px}.home-head h2{font-size:21px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}.tabs button{border:0;background:none;padding:10px 12px;font-size:14px;font-family:inherit;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}.tabs button.on{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.tabs button em{font-style:normal;background:var(--primary);color:#fff;border-radius:9px;font-size:11px;padding:0 6px;margin-left:5px}.cardlist{display:grid;gap:10px}.reqcard{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:13px 15px;color:var(--ink);transition:.15s;border-left:4px solid #b9cbd9}.reqcard:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.reqcard.s-pending{border-left-color:var(--primary-2)}.reqcard.s-to_seal{border-left-color:#d18b1f}.reqcard.s-sealed{border-left-color:var(--ok)}.reqcard.s-rejected,.reqcard.s-voided{border-left-color:var(--danger)}.reqcard-top{display:flex;align-items:center;gap:8px;margin-bottom:4px}.reqcard-top .no{font-size:12px;color:var(--muted);letter-spacing:.04em}.reqcard-title{font-weight:600;font-size:16px;margin:3px 0}.reqcard-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:12.5px}.pill{display:inline-block;font-size:11.5px;border-radius:999px;padding:2px 9px;background:#eef3f8;color:#52667a}.pill.st-pending{background:#e6f0f9;color:var(--primary)}.pill.st-to_seal{background:var(--warn-soft);color:var(--warn)}.pill.st-sealed{background:var(--ok-soft);color:var(--ok)}.pill.st-rejected,.pill.st-voided{background:var(--danger-soft);color:var(--danger)}.pill.urgent{background:#fff0ef;color:var(--danger);border:1px solid #f2cbc8}.empty{text-align:center;color:var(--muted);padding:48px 12px;font-size:14px}.pagehead{display:flex;align-items:center;gap:12px;margin-bottom:14px}.pagehead h2{font-size:19px;flex:1;min-width:0}.formcard{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:0 2px 8px #17242f08}.sec-title{font-size:14px;color:var(--muted);font-weight:600;letter-spacing:.03em;margin-bottom:8px}.sheetpage .actionbar{position:sticky;bottom:0;display:flex;gap:10px;justify-content:flex-end;padding:12px 0;background:linear-gradient(to top,var(--bg) 70%,transparent)}.sealpick{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px}.sealbtn{text-align:left;border:1px solid var(--line);background:#fff;border-radius:11px;padding:11px 13px;cursor:pointer;font-family:inherit;color:var(--ink);transition:.15s}.sealbtn b{display:block;font-size:14.5px}.sealbtn small{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}.sealbtn.on{border-color:var(--primary);background:var(--soft);box-shadow:inset 0 0 0 1px var(--primary)}.chainhint{background:var(--soft);border-radius:10px;padding:9px 12px;font-size:13px;color:var(--primary);margin:6px 0 12px}.chainhint .warn{color:var(--danger)}.filelist{display:grid;gap:6px;margin-bottom:8px}.fileitem{display:flex;align-items:center;gap:10px;background:#f7fafd;border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-size:13.5px}.fileitem a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detailgrid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}.statline{display:flex;align-items:center;gap:8px;margin-bottom:10px}.kv{display:grid;grid-template-columns:150px 1fr;gap:7px 12px;margin:0;font-size:14px}.kv dt{color:var(--muted);font-size:13px}.kv dd{margin:0;word-break:break-word}.timeline{list-style:none;margin:0;padding:0 0 0 4px}.timeline li{position:relative;display:flex;gap:12px;padding:0 0 18px}.timeline li:before{content:"";position:absolute;left:6px;top:16px;bottom:0;width:2px;background:var(--line)}.timeline li:last-child:before{display:none}.tl-dot{position:relative;z-index:1;width:14px;height:14px;border-radius:50%;border:3px solid #c8d6e2;background:#fff;margin-top:4px;flex:0 0 auto}.timeline li.done .tl-dot{border-color:var(--ok);background:var(--ok)}.timeline li.bad .tl-dot{border-color:var(--danger);background:var(--danger)}.timeline li.now .tl-dot{border-color:var(--primary);background:#fff;box-shadow:0 0 0 4px #2d6aa326}.tl-body b{font-size:14px}.tl-body small{display:block;color:var(--muted);font-size:12px}.tl-comment{margin-top:4px;font-size:13px;background:#f6f9fc;border-radius:8px;padding:6px 9px;white-space:pre-wrap}.opbox{display:grid;gap:8px}.opbox textarea{min-height:60px}.stack{display:grid;gap:12px}.userlist{display:grid;gap:2px;margin-top:10px}.userrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 2px;border-bottom:1px solid #eef3f8}.userrow:last-child{border-bottom:0}.userrow small{display:block;color:var(--muted);font-size:12px}.userform{background:#f8fbfe;border:1px dashed var(--line);border-radius:12px;padding:12px;margin-bottom:10px}.auditlist{display:grid;gap:4px;font-size:13px}.auditrow{display:flex;gap:12px;padding:5px 0;border-bottom:1px solid #f0f4f8}.print-area{display:none}@media print{@page{size:A4;margin:16mm}html,body{background:#fff;height:auto!important}.app,.main,.detailpage,.home{min-height:0!important}.topbar,.no-print,.detailgrid{display:none!important}.main{max-width:none;padding:0}.print-area{display:block!important;color:#000;font-family:PingFang TC,Microsoft JhengHei,serif}.print-title{text-align:center;font-size:20px;font-weight:700;letter-spacing:.08em;margin:4mm 0 2mm}.print-no{text-align:right;font-size:12px;margin-bottom:2mm}.print-table,.print-sign{width:100%;border-collapse:collapse}.print-table th,.print-table td,.print-sign td{border:1px solid #333;padding:6px 8px;font-size:13px;vertical-align:top}.print-table th{background:#f2f2f2;font-weight:600;text-align:left;width:22%}.print-sign{margin-top:-1px}.print-sign td{height:26mm;text-align:center}.sign-role{font-size:12px;color:#444}.sign-name{font-size:15px;font-weight:600;margin-top:4mm}.sign-time{font-size:11px;color:#555;margin-top:2mm}.print-check{display:inline-block;margin-right:14px;font-size:13px}.print-foot{margin-top:4mm;font-size:11.5px;color:#333}.print-hash{margin-top:3mm;font-size:8px;color:#999;word-break:break-all}}@media(max-width:760px){.detailgrid{grid-template-columns:1fr}.home-head{align-items:flex-start;flex-wrap:wrap}.kv{grid-template-columns:110px 1fr}.topnav{gap:10px;font-size:13px}.brand small{display:none}.main{padding:12px 12px 70px}}
