:root{--bg: #e6dfd3;--paper: #fffdf9;--ink: #221c16;--muted: #74695c;--line: #e4d8c8;--line-strong: #d3c4b0;--green: #146c4f;--green-deep: #16392d;--red: #9d3b32;--nav: 62px;--kb: 0px;color-scheme:light;font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(900px 420px at 0% -10%,rgba(255,252,246,.9),transparent 55%),var(--bg)}body.lock{overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}input,select{font-size:16px}::selection{background:#cfe6db}.app{min-height:100dvh}.topbar{position:sticky;top:0;z-index:12;height:56px;display:flex;align-items:center;justify-content:center;background:#e6dfd3e6;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbar h1{width:min(1120px,100%);margin:0;padding:0 16px;font-size:20px;letter-spacing:-.04em}main{width:min(1120px,100%);margin:0 auto;padding:4px 16px calc(var(--nav) + env(safe-area-inset-bottom) + 92px)}.screen[hidden]{display:none!important}.stats p{margin:8px 0;color:var(--muted);font-size:13px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:10px 12px}.stat span{display:block;color:var(--muted);font-size:12px}.stat b,.cell b,.mini-fields b,.rate b{font-variant-numeric:tabular-nums;letter-spacing:-.03em}.stat b{display:block;margin-top:3px;font-size:16px}.receive,.up{color:var(--green)}.down{color:var(--red)}.flat{color:var(--muted)}.chips{display:flex;gap:8px;overflow-x:auto;padding:12px 0 4px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip,.face-picks button{border:1px solid var(--line-strong);background:transparent;border-radius:999px;padding:8px 12px;white-space:nowrap;font-size:14px}.chip.active{background:var(--ink);border-color:var(--ink);color:var(--paper)}.day-block{margin-top:18px}.day-block h2{margin:0 0 8px;font-size:13px;font-weight:650;color:var(--muted)}.slips,.calc-list,.kind-list{display:grid;gap:10px}.slip{background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--green);border-radius:16px;padding:14px;box-shadow:0 10px 24px #4630140a;scroll-margin-top:72px}.slip.kept{border-left-color:#8a5a12}.slip.sold{border-left-color:#b7ab9c}.slip-top,.calc-card-top,.kind-top,.slip-foot,.rate-name{display:flex;align-items:center;justify-content:space-between;gap:10px}.slip-name{font-size:16px;letter-spacing:-.03em}.slip-sub,.memo,.per-slip,.formula,.calc-note,.backup p,.empty p{margin:4px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.cells{display:grid;grid-template-columns:minmax(0,1fr) max-content minmax(0,1fr);gap:8px;margin-top:12px}.cells.two{grid-template-columns:1fr 1fr}.cell,.mini-fields label,.rate label{background:#f6f1e8;border-radius:12px;padding:8px;min-width:0}.cell em,.mini-fields span,.rate span,.field span,.sell-qty>span{display:block;font-style:normal;color:var(--muted);font-size:11px}.cell b{display:block;margin-top:4px;font-size:14px}.slip-foot{margin-top:10px;font-size:14px;font-weight:650}.slip-foot.end{justify-content:flex-end;gap:14px}.memo{flex-basis:100%;font-weight:400}.hold-board{display:grid;gap:8px}.hold-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px 14px}.hold-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.hold-top span{font-size:15px;font-weight:750;letter-spacing:-.03em}.hold-top em,.hold-lines em{color:var(--muted);font-style:normal;font-size:12px}.hold-lines{display:flex;flex-wrap:wrap;gap:8px 16px;margin:10px 0 0;padding:0;list-style:none}.hold-lines li{display:flex;align-items:baseline;gap:6px}.hold-lines b{font-size:18px;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.status-switch{display:flex;margin-top:10px;border:1px solid var(--line-strong);border-radius:12px;overflow:hidden;background:#fff}.status-switch button{flex:1;border:0;background:transparent;min-height:40px;color:var(--muted);font-size:13px;font-weight:750}.status-switch button.on.bought{background:var(--green);color:#fff}.status-switch button.on.kept{background:#8a5a12;color:#fff}.status-switch button.on.sold{background:#9d3b32;color:#fff}.status-field{margin-top:12px}.status-field>span{display:block;margin-bottom:6px;color:var(--muted);font-size:12px}.rate.single{grid-template-columns:1fr}.percent,.field input,.field select,.mini-fields input,.kind-top input,.add-face input,.stepper input{width:100%;border:1px solid var(--line-strong);background:#fff;border-radius:10px;padding:8px 10px;font-variant-numeric:tabular-nums}.cell.discount{width:max-content;min-width:max-content;padding:6px 8px}.cell .percent{margin-top:0}.discount-line{display:flex;align-items:center;gap:4px}.discount-line .percent{flex:0 0 4.5em;width:4.5em;padding:7px 0;text-align:center}.discount-line .percent.fee{flex-basis:5.4em;width:5.4em}.sale-preview{grid-column:1 / -1;margin:0;font-weight:750}.sell-list{display:grid;gap:8px;margin-top:12px}.sell-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:10px 12px}.sell-row.on{border-color:var(--green)}.sell-row input[type=checkbox]{width:22px;height:22px;margin:0;accent-color:var(--green)}.sell-row strong{display:block;font-size:15px;letter-spacing:-.03em}.sell-row p{margin:2px 0 0;color:var(--muted);font-size:12px;line-height:1.4}.sell-row p.receive{color:var(--green);font-weight:750}.sell-fee{display:flex;align-items:center;gap:8px;margin-top:8px}.sell-fee>span{color:var(--muted);font-size:12px;font-weight:700}.sell-count{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:13px;font-weight:700}.sell-count input{width:3.4em;border:1px solid var(--line-strong);border-radius:10px;background:#fff;padding:8px 0;text-align:center;font-variant-numeric:tabular-nums}.discount-line span{color:var(--muted);font-weight:700}.slip-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin:16px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.slip-delta{margin:10px 0 0;font-size:14px;font-weight:750}.sale-summary{margin:12px 0 0;color:var(--muted);line-height:1.5}.sale-box{margin-top:12px}.calc-form{margin-top:14px}.calc-form .stepper{width:min(220px,100%)}.calc-form .stepper input{flex:1;width:auto}.percent:focus,.field input:focus,.field select:focus,.mini-fields input:focus,.kind-top input:focus,.add-face input:focus,.stepper input:focus{outline:2px solid var(--green);border-color:transparent}.btn{border:1px solid var(--line-strong);background:#fff;color:var(--ink);border-radius:12px;min-height:44px;padding:0 14px;font-weight:650}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.danger{background:#f8ebe8;border-color:#f0d4cf;color:var(--red)}.btn.tiny{min-height:36px;border-radius:9px;padding:0 8px;font-size:13px}.btn.wide{width:100%}.text-btn,.icon-btn{border:0;background:transparent;color:var(--muted);padding:8px 0}.icon-row{display:flex;align-items:center;gap:8px}.icon-btn{min-width:36px;min-height:36px;border:1px solid var(--line);border-radius:10px;background:#fff}.icon-btn.danger{color:var(--red)}.calc-note{margin:8px 0 0}.calc-hero{margin-top:12px;background:var(--green-deep);color:#f3f7f4;border-radius:18px;padding:16px 16px 14px}.calc-hero span{color:#c9ddd4;font-size:13px}.calc-hero strong{display:block;margin:2px 0 6px;font-size:38px;line-height:1.05;letter-spacing:-.045em;font-variant-numeric:tabular-nums}.calc-hero p{margin:0;color:#d7e7df;font-size:13px}.calc-hero em{font-style:normal;font-weight:700}.calc-hero .up{color:#9ddec4}.calc-hero .down{color:#ffb4ac}.calc-hero .flat{color:#d7e7df}.calc-hero.compact{margin-bottom:14px}.calc-hero.compact strong{font-size:32px}.calc-card,.kind,.backup,.confirm{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:12px}.calc-list{margin-top:12px}.stepper{display:flex;align-items:center;border:1px solid var(--line-strong);border-radius:12px;overflow:hidden;background:#fff}.stepper button{width:44px;height:44px;border:0;background:#f3eee6;font-size:22px}.stepper input{width:64px;border:0;text-align:center;padding:0;font-size:18px;background:transparent}.mini-fields,.rate{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.rate{grid-template-columns:1fr;margin-top:0}.rate-name{margin-bottom:8px}.mini-fields input,.rate .percent{margin:4px 0}.mini-fields b,.rate b{display:block;font-size:14px}.per-slip{word-break:keep-all}.calc-actions{display:flex;gap:8px;margin-top:12px}.page-actions{position:sticky;bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 10px);z-index:6;padding:10px 0 4px;background:linear-gradient(to top,#e6dfd3 72%,#e6dfd300)}.calc-actions .btn{flex:1}.kind-list{margin:12px 0}.kind-top{align-items:stretch}.kind-top input{font-weight:700}.rate-list{display:grid;gap:8px;margin-top:12px}.face-picks{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.face-picks button:disabled{opacity:.35}.add-face{display:flex;gap:8px;margin-top:8px}.add-face .btn{flex:0 0 auto}.backup{margin-top:18px}.backup h2{margin:0;font-size:16px}.empty{margin-top:24px;padding:28px 8px;text-align:center}.empty strong{font-size:18px;letter-spacing:-.03em}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:15;display:grid;grid-template-columns:repeat(3,1fr);height:calc(var(--nav) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fffdf9f0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--line)}.tabbar button{border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;font-weight:700}.tabbar button.active{color:var(--green)}.tabbar svg{width:22px;height:22px}.fab{position:fixed;right:16px;bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 14px);z-index:16;height:52px;padding:0 18px;border:0;border-radius:999px;background:var(--green);color:#fff;font-weight:750;box-shadow:0 10px 24px #146c4f47}.toast{position:fixed;z-index:45;top:68px;left:50%;transform:translate(-50%);width:min(460px,calc(100% - 24px));display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:14px;background:var(--ink);color:#fff;box-shadow:0 12px 30px #221c1640}.toast button{border:0;background:transparent;color:#b7ead6;font-weight:750;white-space:nowrap}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:flex-end;justify-content:center;background:#221c1675}.overlay.center{z-index:40;align-items:center;padding:20px}.sheet{width:min(640px,100%);max-height:min(92dvh,860px);overflow:auto;background:#f7f2ea;border-radius:22px 22px 0 0;padding:8px 16px calc(18px + var(--kb) + env(safe-area-inset-bottom))}.grab{width:42px;height:4px;margin:4px auto 10px;border-radius:999px;background:#d9cebf}.sheet-kicker{margin:0;color:var(--muted);font-size:13px}.sheet-title{margin:2px 0 0;font-size:22px;letter-spacing:-.04em}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field{display:block}.field.wide{grid-column:1 / -1}.field span{margin-bottom:4px}.field .face-picks{margin-top:0}.face-picks button.active{background:var(--ink);border-color:var(--ink);color:var(--paper)}.sell-qty{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"label stepper" "hint stepper";align-items:center;gap:2px 12px;margin-bottom:12px}.sell-qty>span{grid-area:label}.sell-qty .stepper{grid-area:stepper;justify-self:end}.sell-qty small{grid-area:hint;color:var(--muted)}.formula{margin:12px 0}.error-text{color:var(--red);font-size:13px;margin:8px 0 0}.confirm{width:min(420px,100%)}.confirm h2{margin:0 0 8px;font-size:20px;letter-spacing:-.03em}.confirm p{margin:0;color:var(--muted);line-height:1.5}.narrow-only{display:block}.wide-only{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media(min-width:800px){.tabbar{left:50%;right:auto;width:min(520px,calc(100% - 32px));transform:translate(-50%);border:1px solid var(--line);border-bottom:0;border-radius:18px 18px 0 0}.stat-grid{grid-template-columns:repeat(4,1fr)}.overlay{align-items:center;padding:24px}.sheet{border-radius:22px}.rate:not(.single){grid-template-columns:1fr 1fr}.rate-name{grid-column:1 / -1}}@media(min-width:1040px){.narrow-only{display:none}.wide-only{display:block}.table-scroll{display:grid;grid-template-columns:repeat(10,max-content);width:max-content;max-width:100%;margin-top:14px;overflow-x:auto;background:var(--paper);border:1px solid var(--line);border-radius:16px}.cols{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;align-items:stretch}.cols>span{display:flex;align-items:center;min-width:0;padding:0 8px}.cols>span:not(:first-child){border-left:1px solid rgba(90,62,32,.14)}.ledger-head,.ledger-row,.ledger-total{min-height:42px;padding:0 8px;border-bottom:1px solid var(--line);font-size:13px;font-variant-numeric:tabular-nums}.ledger-head{position:sticky;top:0;background:#efe6d6;color:var(--muted);font-weight:700}.ledger-row:hover{background:#fbf7f1}.ledger-total{background:#f6f1e8;font-weight:750}.ledger-head>span{justify-content:center}.c-kind{justify-content:flex-start}.c-face,.c-qty,.c-amount{justify-content:flex-end}.c-rate,.c-vendor,.c-card,.c-status{justify-content:center}.cols>.c-card{min-width:78px}.book-sheet{display:grid;grid-template-columns:max-content;width:max-content;max-width:100%}.book-sheet>.hold-board,.book-sheet>.chips{width:0;min-width:100%}.ledger-row .status-switch{width:max-content;margin:0;border-radius:8px}.ledger-row .status-switch button{flex:none;min-height:26px;padding:0 8px;font-size:12px}.ellipsis>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.cols .percent{field-sizing:content;width:auto;min-width:3.2ch;margin:0;padding:3px 6px;font-size:13px;text-align:center}.manage{justify-content:center}}@media(prefers-reduced-motion:reduce){.flash{animation:none}}.flash{animation:flash 1.4s ease}@keyframes flash{0%{background:#e5f4ee}to{background:var(--paper)}}
