:root{--k:#000;--b:#333;--m:#888;--s:#666;--line:#e0e0e0;--bg:#fff;--sub:#f5f5f5;--warn:#b45309;--warnbg:#fff7ed;--ok:#166534;--okbg:#f0fdf4;--blue:#1d4ed8;--bluebg:#eff6ff;--red:#b91c1c;--redbg:#fee2e2}*{box-sizing:border-box}html,body{margin:0}body{color:var(--b);background:var(--bg);font-family:Inter,PingFang TC,Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif;font-size:14px}button{font:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:default}input,select,textarea{font:inherit;color:inherit}a{color:inherit}h1{color:var(--k);margin:0;font-size:22px;font-weight:600}h2{color:var(--k);margin:0;font-size:16px;font-weight:600}.muted{color:var(--m)}.small{font-size:12px}.btn{border:1px solid var(--k);color:var(--k);white-space:nowrap;background:#fff;border-radius:4px;align-items:center;gap:6px;padding:8px 14px;text-decoration:none;display:inline-flex}.btn.pri{background:var(--k);color:#fff}.btn.sm{padding:4px 10px;font-size:12px}.btn.ghost{border-color:var(--line)}.btn.danger{color:var(--red);border-color:#fca5a5}.row{align-items:center;gap:10px;display:flex}.wrapflex{flex-wrap:wrap}.sp{flex:1}table{border-collapse:collapse;width:100%}th{color:var(--m);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:500}td{vertical-align:middle;border-bottom:1px solid #f0f0f0;padding:8px 10px}.num{text-align:right;font-variant-numeric:tabular-nums}.chip{white-space:nowrap;background:#eef2f5;border-radius:10px;padding:1px 8px;font-size:12px;display:inline-block}.st{white-space:nowrap;border-radius:3px;padding:2px 8px;font-size:12px;display:inline-block}.st.draft{background:var(--sub);color:var(--s)}.st.sent{background:var(--bluebg);color:var(--blue)}.st.won{background:var(--okbg);color:var(--ok)}.card{border:1px solid var(--line);border-radius:6px;overflow:auto}.wrap{max-width:1400px;margin:0 auto;padding:28px}.note{color:var(--m);margin-top:8px;font-size:12px;line-height:1.6}.empty{text-align:center;color:var(--m);padding:56px 20px;line-height:1.8}.empty b{color:var(--k);margin-bottom:6px;font-size:16px;display:block}.err{color:var(--red);margin-top:10px;font-size:13px}.callout{background:var(--sub);border-radius:6px;padding:14px 16px;font-size:13px;line-height:1.7}.callout.warn{background:var(--warnbg);color:var(--warn)}.field{text-align:left;color:var(--s);margin-top:14px;font-size:12px;display:block}.field input,.field select,.field textarea{border:1px solid var(--line);background:#fff;border-radius:4px;width:100%;margin-top:4px;padding:9px 11px;font-size:14px;display:block}.input{border:1px solid var(--line);background:#fff;border-radius:4px;padding:7px 10px}.sel{border:1px solid var(--line);background:#fff;border-radius:4px;padding:6px 8px}.toast{color:#fff;z-index:60;background:#000;border-radius:4px;max-width:90vw;padding:10px 18px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.pill{background:var(--sub);color:var(--s);white-space:nowrap;border-radius:3px;margin-left:6px;padding:1px 6px;font-size:11px}.pill.warn{background:var(--warnbg);color:var(--warn)}.pill.blue{background:var(--bluebg);color:var(--blue)}.secret{letter-spacing:.08em;background:var(--sub);-webkit-user-select:all;user-select:all;border-radius:4px;padding:10px 14px;font-family:ui-monospace,Menlo,monospace;font-size:18px;display:inline-block}.demobar{color:#92400e;background:#fef3c7;border-bottom:1px solid #fde68a;padding:8px 28px;font-size:13px}.top{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:20px;padding:12px 28px;display:flex}.top img{height:16px;display:block}.top .tag{letter-spacing:.15em;color:var(--m);font-size:11px}.top nav{flex-wrap:wrap;gap:4px;margin-left:12px;display:flex}.top nav a{white-space:nowrap;color:var(--s);border-radius:4px;padding:6px 12px;text-decoration:none}.top nav a.on{color:var(--k);background:var(--sub);font-weight:600}.top .me{align-items:center;gap:10px;margin-left:auto;font-size:13px;display:flex}.avatar{color:#fff;background:#000;border-radius:50%;place-items:center;width:28px;height:28px;font-size:12px;text-decoration:none;display:grid}.login{background:var(--sub);place-items:center;min-height:100vh;padding:20px;display:grid}.login .box{text-align:center;background:#fff;border-radius:6px;width:380px;max-width:100%;padding:44px 40px}.login img{height:20px;margin-bottom:10px}.bio{border:1px solid var(--line);background:#fff;border-radius:50%;place-items:center;width:76px;height:76px;margin:26px auto 6px;display:grid}.linkbtn{color:var(--s);background:0 0;border:0;margin-top:16px;padding:0;font-size:13px;text-decoration:underline}.wide{justify-content:center;width:100%;margin-top:20px;padding:11px}.modal{z-index:40;background:#0006;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal .dlg{background:#fff;border-radius:6px;width:600px;max-width:100%;max-height:88vh;padding:24px;overflow:auto}.modal .dlg.lg{width:960px}.modal .dlg h2{margin-bottom:4px}.edbar{border-bottom:1px solid var(--line);flex-wrap:wrap;padding:12px 28px}.ed{grid-template-columns:220px minmax(0,1fr) 280px;min-height:calc(100vh - 110px);display:grid}.side{border-right:1px solid var(--line);padding:12px 0}.side .grp{color:var(--m);letter-spacing:.1em;padding:14px 18px 6px;font-size:11px}.side button.t{width:100%;color:var(--b);text-align:left;background:0 0;border:0;border-left:2px solid #0000;justify-content:space-between;gap:8px;padding:7px 18px;font-size:13px;display:flex}.side button.t:hover{background:#fafafa}.side button.t.on{background:var(--sub);color:var(--k);border-left-color:#000;font-weight:600}.side button.t.empty-t{color:var(--m)}.side button.t span{color:var(--m);font-variant-numeric:tabular-nums;font-size:12px}.main{padding:20px 24px;overflow:auto}.sum{border-left:1px solid var(--line);background:#fafafa;padding:20px}.sum .l{font-variant-numeric:tabular-nums;justify-content:space-between;padding:6px 0;display:flex}.sum .l.t{border-top:1px solid var(--k);color:var(--k);margin-top:8px;padding-top:10px;font-size:16px;font-weight:700}.sum .hint{color:var(--m);font-size:11px}.trade-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.mk{border:1px solid var(--line);background:#fff;border-radius:4px;align-items:center;gap:6px;padding:4px 8px;font-size:13px;display:flex}.mk input{text-align:right;background:0 0;border:0;width:48px;font-weight:600}table.items{min-width:1040px}table.items td{white-space:nowrap;padding:4px 6px}table.items td.nm{white-space:normal;min-width:240px}table.items tr.hdr td{background:var(--sub);color:var(--k);font-weight:600}table.items tr.spec td{color:var(--m)}table.items tr.new td{background:#fffbea}table.items tr.drag td{opacity:.4}.cell{background:0 0;border:1px solid #0000;border-radius:3px;width:100%;padding:4px 5px;font-size:13px}.cell:hover,.cell:focus{border-color:var(--line);background:#fff;outline:none}.cell.n{text-align:right;font-variant-numeric:tabular-nums}select.cell{appearance:none;padding-right:4px}.ovr{background:var(--warnbg);border-radius:3px}.ovr .cell{color:var(--warn);font-weight:600}.delx{color:var(--m);background:0 0;border:0;border-radius:3px;padding:2px 6px;font-size:13px}.delx:hover{background:var(--redbg);color:var(--red)}.handle{cursor:grab;color:#bbb;-webkit-user-select:none;user-select:none;padding:0 4px}.ref{color:var(--blue);margin-top:2px;font-size:11px}.saving{color:var(--m);font-size:12px}.saving.err{color:var(--red);margin:0}.rangebar{background:var(--sub);border-radius:4px;width:200px;height:8px;position:relative}.rangebar .r{opacity:.18;background:#000;border-radius:4px;height:8px;position:absolute}.rangebar .md{background:#000;width:2px;height:14px;position:absolute;top:-3px}.drop{border:2px dashed var(--line);text-align:center;color:var(--m);cursor:pointer;border-radius:6px;padding:28px}.drop.on{background:var(--sub);border-color:#000}.conf{border-radius:3px;padding:1px 6px;font-size:11px}.conf.h{background:var(--okbg);color:var(--ok)}.conf.l{background:var(--warnbg);color:var(--warn)}@media (max-width:1000px){.ed{grid-template-columns:1fr}.side{border-right:0;border-bottom:1px solid var(--line);max-height:220px;overflow:auto}.sum{border-left:0;border-top:1px solid var(--line)}.wrap{padding:18px}.top{padding:10px 16px}}@media print{.noprint{display:none!important}}
