:root{--blue:#1428a0;--blue-soft:#eef0fa;--blue-line:#c9cfee;--ink:#0a0a0a;--gray:#555;--line:#e4e4e7;--line-strong:#cfcfd4;--bg:#fff;--bg-sub:#f6f6f7;--ok:#157f3b;--warn:#b45309;--err:#b42318;--font:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--row-h:40px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;font-size:15px}kbd{font-family:var(--font);border:1px solid var(--line-strong);color:var(--gray);white-space:nowrap;background:#fff;border-bottom-width:2px;margin:0 2px;padding:1px 5px;font-size:11px;font-weight:600}.muted{color:var(--gray)}.splash{height:100%;color:var(--gray);place-items:center;display:grid}.brand{align-items:center;gap:10px;display:inline-flex}.brand-mark{background:var(--blue);flex:none;width:22px;height:22px;position:relative}.brand-mark:after{content:"";border:1px solid #fff;position:absolute;inset:2px}.brand-word{letter-spacing:.15em;font-size:13px;font-weight:600}.login{background:var(--bg-sub);place-items:center;height:100%;padding:16px;display:grid}.login-card{border:1px solid var(--line);background:#fff;flex-direction:column;gap:14px;width:min(420px,100%);padding:40px;display:flex}.login-card h1{letter-spacing:-.02em;margin:16px 0 0;font-size:28px}.login-card p{margin:0}.login-err{color:var(--err);border-left:3px solid var(--err);background:#fdf0ef;padding:10px 12px}.btn-primary{background:var(--blue);color:#fff;justify-content:center;align-items:center;gap:8px;margin-top:8px;padding:14px 18px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary kbd{color:#fff;background:0 0;border-color:#ffffff80}.btn-primary:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.app{grid-template-rows:auto auto 1fr auto;height:100%;display:grid}.top{border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:12px 20px;display:flex}.top .title{border-left:1px solid var(--line);padding-left:16px;font-size:17px;font-weight:700}.top .who{color:var(--gray);font-size:13px}.side-switch{border:1px solid var(--line-strong);margin-left:auto;display:flex}.side-switch button{font:inherit;cursor:pointer;color:var(--gray);background:#fff;border:0;padding:6px 12px;font-size:13px}.side-switch button+button{border-left:1px solid var(--line-strong)}.side-switch button.on{background:var(--ink);color:#fff;font-weight:600}.side-switch button.on kbd{color:#ddd;background:0 0;border-color:#666}.sync{color:var(--gray);white-space:nowrap;align-items:center;gap:7px;font-size:13px;display:inline-flex}.sync i{background:currentColor;width:8px;height:8px;display:inline-block}.sync.ok i{background:var(--ok)}.sync.busy{color:var(--blue)}.sync.busy i{animation:.9s steps(2,end) infinite blink}.sync.warn{color:var(--warn);font-weight:600}.sync.err{color:var(--err);font-weight:600}button.sync{font:inherit;border:1px solid var(--err);cursor:pointer;background:#fdf0ef;padding:6px 10px;font-size:13px}@keyframes blink{50%{opacity:.2}}.totals{border-bottom:1px solid var(--line);background:var(--bg-sub);align-items:stretch;gap:0;display:flex}.stat{border-right:1px solid var(--line);flex-direction:column;gap:1px;min-width:130px;padding:10px 20px;display:flex}.stat-label{color:var(--gray);font-size:12px}.stat-value{letter-spacing:-.01em;font-size:18px;font-weight:700}.stat-sub{color:var(--gray);font-size:12px}.stat.strong{box-shadow:inset 0 -3px 0 var(--blue);background:#fff}.stat.strong .stat-value{color:var(--blue)}.search{align-items:center;gap:4px;margin-left:auto;padding:0 20px;display:flex}.search input{font:inherit;border:1px solid var(--line-strong);background:#fff;width:220px;padding:8px 10px}.search input:focus{outline:2px solid var(--blue);outline-offset:-1px;border-color:var(--blue)}.sheet{position:relative;overflow:auto}.empty{color:var(--gray);text-align:center;padding:40px}.grid-wrap{min-width:100%;display:inline-block}.grid-row{height:var(--row-h);border-bottom:1px solid var(--line);display:flex}.grid-head{z-index:2;border-bottom:1px solid var(--ink);background:#fff;height:34px;position:sticky;top:0}.cell{border-right:1px solid var(--line);white-space:nowrap;text-overflow:ellipsis;cursor:default;flex:none;align-items:center;padding:0 10px;display:flex;position:relative;overflow:hidden}.cell.head{font-size:12px;font-weight:600;color:var(--gray)!important}.cell-no{color:#9a9aa0;justify-content:flex-end;width:48px;font-size:12px}.grid-head .cell-no{color:var(--gray)}.cell.amount,.cell.int{justify-content:flex-end}.cell.bool{color:var(--blue);justify-content:center;font-weight:700}.grid-row.active{background:var(--blue-soft)}.grid-row.active .cell-no{color:var(--blue);font-weight:700}.grid-row.draft{background:#fbfbfc}.grid-row.draft .cell-no{color:var(--blue);font-size:15px;font-weight:700}.grid-row.draft.active{background:var(--blue-soft)}.cell.focus{outline:2px solid var(--blue);outline-offset:-2px;z-index:1;background:#fff;overflow:visible}.cell-input{font:inherit;width:100%;height:100%;color:var(--ink);background:0 0;border:0;outline:0;padding:0}.cell.amount .cell-input,.cell.int .cell-input{text-align:right}.cell-input.invalid{color:var(--err)}.hint{background:var(--ink);color:#fff;white-space:nowrap;z-index:5;pointer-events:none;padding:3px 8px;font-size:12px;position:absolute;top:calc(100% + 2px);right:-2px}.hint.err{background:var(--err)}.choice-active{outline-offset:-2px}.choice-active:focus{outline:2px solid var(--blue)}.choices{gap:2px;display:flex;overflow:visible}.opt{color:var(--gray);cursor:pointer;white-space:nowrap;border:1px solid #0000;padding:3px 6px 3px 2px;font-size:12px}.opt kbd{margin:0 3px 0 0;padding:0 3px;font-size:10px}.opt.sel{color:#fff;background:var(--blue);font-weight:600}.opt.sel kbd{color:#fff;background:0 0;border-color:#fff9}.cell.choice.focus{overflow:visible}.cell.choice.focus .choices{border:2px solid var(--blue);z-index:4;background:#fff;align-items:center;min-height:calc(100% + 4px);padding:0 6px;position:absolute;top:-2px;left:-2px}.check{border:1.5px solid var(--line-strong);color:#fff;cursor:pointer;place-items:center;width:20px;height:20px;font-size:13px;font-weight:800;display:grid}.check.on{background:var(--blue);border-color:var(--blue)}.cell.dup{color:var(--warn)}.dup-badge{color:var(--warn);border:1px solid var(--warn);margin-left:6px;padding:0 3px;font-size:10px;font-weight:700}.keys{border-top:1px solid var(--line);color:var(--gray);background:#fff;flex-wrap:wrap;gap:4px 18px;padding:10px 20px;font-size:12px;display:flex}.toast{background:var(--ink);color:#fff;z-index:20;padding:10px 16px;font-size:14px;position:fixed;bottom:60px;left:50%;transform:translate(-50%)}.help-backdrop{z-index:30;background:#0a0a0a66;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.help{border-top:4px solid var(--blue);background:#fff;width:min(640px,100%);padding:28px 32px}.help h2{margin:0 0 16px;font-size:20px}.help table{border-collapse:collapse;width:100%;font-size:14px}.help td{border-bottom:1px solid var(--line);vertical-align:top;padding:7px 0}.help td:first-child{white-space:nowrap;width:190px}.help p{margin:14px 0 0;font-size:13px}@media (width<=900px){.stat{min-width:0;padding:8px 12px}.stat-value{font-size:15px}.search input{width:140px}.top{flex-wrap:wrap}}.logout{font:inherit;color:var(--gray);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #ddd;flex:none;margin-left:12px;padding:4px 8px;font-size:12px}.logout:hover{color:var(--ink);border-color:var(--ink)}.merged{outline:none;min-height:100%}.merged table{border-collapse:collapse;min-width:100%}.merged th{z-index:2;border-bottom:1px solid var(--ink);color:var(--gray);text-align:left;white-space:nowrap;background:#fff;padding:9px 10px;font-size:12px;font-weight:600;position:sticky;top:0}.merged td{border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 10px}.merged .num{text-align:right}.merged .no{color:#9a9aa0;text-align:right;font-size:12px}.side-tag{border:1px solid;padding:2px 6px;font-size:12px;font-weight:600}.side-tag.groom{color:var(--blue)}.side-tag.bride{color:var(--err)}.filters{border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 20px;display:flex}.filter-label{color:var(--gray);white-space:nowrap;font-size:12px}.chip+.filter-label{margin-left:14px}.filter-label kbd{margin-left:2px}.chip{font:inherit;border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;background:#fff;padding:4px 10px;font-size:13px}.chip b{margin-left:6px;font-weight:600}.chip.on{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:600}.keys .removed{color:var(--warn);white-space:nowrap;margin-left:auto;font-weight:600}.grid-wrap:focus{outline:none}.grid-row.selected{background:var(--blue-soft);box-shadow:inset 3px 0 0 var(--blue), inset 0 0 0 1px var(--blue-line);position:relative}.grid-row.selected .cell-no{color:var(--blue);font-weight:700}.row-actions{background:var(--blue-soft);color:var(--gray);white-space:nowrap;align-items:center;gap:10px;margin-left:auto;padding:0 12px;font-size:12px;display:flex;position:sticky;right:0}.row-del{font:inherit;color:var(--err);border:1px solid var(--err);cursor:pointer;background:#fff;padding:4px 8px;font-size:12px;font-weight:600}.row-del kbd{color:var(--err);border-color:#e9b4ae}.row-del:hover{background:#fdf0ef}.confirm{z-index:25;color:var(--ink);border:2px solid var(--err);background:#fff;align-items:center;gap:20px;padding:12px 18px;font-size:15px;display:flex;position:fixed;bottom:60px;left:50%;transform:translate(-50%)}.confirm b{color:var(--err)}.confirm-keys{color:var(--gray);white-space:nowrap;font-size:13px}
