:root{--bg:#f4f4f2;--card:#fff;--border:#e6e6e2;--border-strong:#d9d9d4;--text:#1c1c1a;--muted:#6f6f6a;--faint:#9c9c96;--red:#c0272d;--green:#2f7d4f;--radius:8px;--font-sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.55}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}.gate{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.gate-box{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;width:100%;max-width:420px;padding:36px 34px 32px}.gate-code{color:var(--red);letter-spacing:3px;font-size:13px;font-weight:700}.gate-title{margin:6px 0 0;font-size:26px;font-weight:700}.gate-text{color:var(--muted);margin:14px 0 0;font-size:14.5px}.gate-hint{background:var(--bg);border:1px solid var(--border);word-break:break-all;border-radius:6px;margin:12px 0 0;padding:9px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px}.shell{min-height:100vh;padding-bottom:40px}.wrap{max-width:940px;margin:0 auto;padding:22px 18px 0}.btn{border:1px solid var(--border-strong);border-radius:var(--radius);white-space:nowrap;background:#fff;flex:none;padding:10px 16px;font-size:15px}.btn:hover{border-color:#c2c2bc}.btn-danger{color:var(--red)}.btn-danger:hover{border-color:var(--red)}.btn-primary{background:var(--text);border-color:var(--text);color:#fff}.btn-primary:hover{background:#33332f;border-color:#33332f}.editor-bar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.btn-ghost{color:var(--muted);background:0 0;border-color:#0000;padding-left:0;padding-right:8px}.btn-ghost:hover{color:var(--text);border-color:#0000}.editor-title{letter-spacing:.5px;flex:auto;font-size:21px;font-weight:700}.spacer{flex:auto}.editor-actions{align-items:stretch;gap:10px;display:flex}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-top:18px;padding:18px 20px 20px}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.card-title{margin:0;font-size:18px;font-weight:700}.card-title .no{color:var(--red);margin-right:6px}.card-total{font-size:15px}.card-total b{font-size:16px}.row{border-bottom:1px dashed var(--border);align-items:center;gap:8px;padding:7px 0;display:flex}.row:last-of-type{border-bottom:none}.row .entry-name{flex:220px;min-width:0}.row .entry-amount{text-align:right;flex:0 0 168px}.row .entry-currency{flex:none;width:92px}.row .entry-extras{color:var(--muted);white-space:nowrap;flex:none;align-items:center;gap:6px;font-size:14px;display:flex}.row .entry-extras .period{text-align:center;width:58px}.row .del{width:28px;height:28px;color:var(--faint);background:0 0;border:none;border-radius:4px;flex:none;margin-left:auto;padding:0;font-size:18px;line-height:1}.row .del:hover{color:var(--red);background:#f6f6f4}.warn{color:var(--red);font-size:13px}.input{border:1px solid var(--border-strong);border-radius:var(--radius);background:#fff;outline:none;width:100%;padding:9px 12px;font-size:16px}.input:focus{border-color:#b4b4ae}.input::placeholder{color:#b0b0aa}select.input{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'><path d='M4 6l4 4 4-4' fill='none' stroke='%236f6f6a' stroke-width='1.4'/></svg>");background-position:right 8px center;background-repeat:no-repeat;padding-right:26px}textarea.input{resize:vertical;min-height:96px;line-height:1.6}.add-btn{border:1px dashed var(--border-strong);border-radius:var(--radius);width:100%;color:var(--muted);background:#fff;margin-top:12px;padding:11px;font-size:15px;display:block}.add-btn:hover{color:var(--text);border-color:#b4b4ae}.card>.add-btn:first-child{margin-top:0}.rate-row{align-items:center;gap:8px;padding:5px 0;display:flex}.rate-row .rate-label{white-space:nowrap;font-size:16px}.rate-row .rate-input{text-align:right;width:120px}.rate-row .rate-unit{color:var(--muted);min-width:34px;font-size:14px}.rate-row .del{color:var(--faint);background:0 0;border:none;padding:2px 6px;font-size:18px;line-height:1}.rate-row .del:hover{color:var(--red)}.rate-add{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.rate-add .input{width:180px}.alloc-label{margin:14px 0 4px;font-size:16px;font-weight:700}.alloc-label .letter{color:var(--red);margin-right:4px}.alloc-person{align-items:center;gap:8px;padding:5px 0;display:flex}.alloc-person .name{width:168px}.alloc-person .amount{text-align:right;width:132px}.alloc-person .unit{color:var(--muted);font-size:14px}.alloc-person .del{color:var(--faint);background:0 0;border:none;padding:2px 4px;font-size:18px}.alloc-person .del:hover{color:var(--red)}.inline-amount{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.inline-amount .input{text-align:right;width:132px}.inline-amount .unit{color:var(--muted);font-size:14px}.savings{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-top:18px;padding-top:16px;display:flex}.savings .label{font-size:16px;font-weight:700}.savings .label .letter{color:var(--red);margin-right:4px}.savings .value{font-size:34px;font-weight:700;line-height:1.1}.savings .value .unit{margin-left:4px;font-size:16px;font-weight:400}.receipt-head{border-bottom:1px solid var(--border);padding-bottom:12px}.receipt-title{margin:0;font-size:26px;font-weight:700}.receipt-meta{color:var(--muted);margin:6px 0 0;font-size:13.5px}.receipt-section{margin-top:26px}.receipt-section h3{border-bottom:1px solid var(--border-strong);margin:0 0 10px;padding-bottom:7px;font-size:19px;font-weight:700}.receipt-section h3 .no{color:var(--red);margin-right:6px}.receipt-empty{color:var(--faint);margin:0}.table-wrap{overflow-x:auto}.receipt-table{border-collapse:collapse;width:100%;font-size:15px}.receipt-table th,.receipt-table td{border:1px solid var(--border);text-align:left;white-space:nowrap;padding:9px 11px}.receipt-table thead th{background:#f2f2ef;font-weight:600}.receipt-table .num{text-align:right}.receipt-table .money,.receipt-table tfoot td{font-weight:700}.history-item{text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;width:100%;margin-top:10px;padding:14px 16px;display:flex}.history-item:hover{border-color:#c2c2bc}.history-item .hm{font-size:17px;font-weight:700}.history-item .nums{color:var(--muted);flex-wrap:wrap;gap:18px;font-size:13.5px;display:flex}.history-item .nums b{color:var(--text);margin-left:4px;font-size:15px}.skeleton{color:var(--muted);text-align:center;padding:60px 0}@media (max-width:680px){.wrap{padding:16px 12px 0}.card{padding:15px 14px 16px}.editor-title{font-size:19px}.editor-actions{flex:100%}.editor-actions .btn{flex:auto}.row{flex-wrap:wrap;gap:6px}.row .entry-name{flex-basis:100%;order:0}.row .entry-amount{flex:90px;order:1}.row .entry-currency{order:2}.row .del{order:3}.row .entry-extras{flex-basis:100%;order:4}.savings .value{font-size:28px}.alloc-person .name{width:120px}}@media print{@page{margin:14mm}body{background:#fff}.wrap{max-width:none;padding:0}.editor-bar,.add-btn,.del{display:none!important}.card.receipt{border:none;margin-top:0;padding:0}.receipt-table,.receipt-section{break-inside:avoid}}
