:root{--font-sans:"Gothic A1", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui, sans-serif;--bg:#f7f5ef;--ink:#1c1b17;--ink-on-dark:#f7f5ef;--muted:#55524a;--field:#fffdf8;--line:#cfcabd;--line-soft:#e3dfd3;--accent:#d9b65c;--ok:#1f5e3b;--ok-ink:#143f27;--ok-soft:#e5efe8;--danger-ink:#8a2a10;--danger-soft:#f6e1d8;--focus:#1f5e3b;--white:#fff;--cancel:#c4683f;--track:#ece8dd;--row-hover:#efeadd;--field-dark:#2a2924;--line-on-dark:#55524a;--text-soft-on-dark:#e7e2d4;--muted-on-dark:#cfcabd;--accent-glow:#d9b65c40;--spinner-track:#1c1b1740;--shadow-chip:#1c1b172e;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-out-soft:cubic-bezier(.2, .8, .2, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-curtain:cubic-bezier(.77, 0, .18, 1);--ease-fly:cubic-bezier(.55, 0, .45, 1);--flip-duration:.6s;--radius:4px;--page-max:1280px}
.login-stage{place-items:center;min-height:100dvh;padding:32px 24px;display:grid;position:relative;overflow:hidden}.stage-panel{background:var(--ink);width:50%;position:absolute;top:0;bottom:0}.stage-left{left:0}.stage-right{right:0}.login-card{z-index:1;width:100%;max-width:400px;color:var(--ink-on-dark);flex-direction:column;gap:18px;display:flex;position:relative}.login-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.login-brand{align-items:center;gap:14px;display:flex}.login-brand svg{flex:none}.login-brand .draw{stroke:var(--accent);stroke-dasharray:1;animation:login-draw 1.2s .1s var(--ease-in-out) both}.login-brand-text{flex-direction:column;display:flex}.login-brand h1{font-size:22px;font-weight:900}.login-brand-text span{color:var(--muted-on-dark);font-size:13px}.login-form{flex-direction:column;gap:18px;display:flex}.login-form label{color:var(--text-soft-on-dark);flex-direction:column;gap:6px;font-size:14px;display:flex}.login-form .field{border-color:var(--line-on-dark);background:var(--field-dark);height:52px;color:var(--ink-on-dark);border-radius:8px;padding:0 16px;font-size:16px;transition:border-color .3s,box-shadow .2s}.login-form .field:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow);outline:none}.login-card[data-failed] .field{border-color:var(--cancel)}.submit-row{justify-content:center;display:flex}.submit{background:var(--accent);width:100%;height:52px;color:var(--ink);font:inherit;cursor:pointer;transition:width .4s var(--ease-in-out), border-radius .4s, background-color .3s;border:0;border-radius:8px;justify-content:center;align-items:center;font-size:16px;font-weight:800;display:inline-flex}.submit[data-pending]{cursor:progress;border-radius:26px;width:52px}.spinner{border:3px solid var(--spinner-track);border-top-color:var(--ink);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite login-spin}.rise{animation:login-rise .7s var(--ease-out-expo) both}.rise-1{animation-delay:.12s}.rise-2{animation-delay:.22s}.rise-3{animation-delay:.32s}.shake{animation:.5s cubic-bezier(.36,.07,.19,.97) both login-shake}.drop{border-radius:8px;margin:0;padding:10px 12px;font-weight:700;animation:.35s ease-out both login-drop;overflow:hidden}.dots{gap:6px;display:inline-flex}.dot{background:var(--line-on-dark);border-radius:50%;width:10px;height:10px}.dot-on{background:var(--cancel)}.dot-pop{animation:login-dot .35s var(--ease-out-soft) both}.lock{animation:login-pop-in .45s var(--ease-out-expo) both;flex-direction:column;align-items:center;gap:14px;padding:12px 0;display:flex}.lock-ring{place-items:center;display:grid;position:relative}.lock-ring>*{grid-area:1/1}.lock-track,.lock-arc{fill:none;stroke-width:10px}.lock-track{stroke:var(--field-dark)}.lock-arc{stroke:var(--cancel);stroke-linecap:round;transition:stroke-dashoffset 1s linear}.lock-time{font-variant-numeric:tabular-nums;font-size:28px;font-weight:900}.lock-title{color:var(--cancel);font-size:15px;font-weight:700}.lock-sub{color:var(--muted-on-dark);font-size:14px}@keyframes login-rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}@keyframes login-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes login-spin{to{transform:rotate(360deg)}}@keyframes login-shake{0%,to{transform:none}15%{transform:translate(-12px)}30%{transform:translate(10px)}45%{transform:translate(-8px)}60%{transform:translate(6px)}75%{transform:translate(-3px)}}@keyframes login-drop{0%{opacity:0;max-height:0;transform:translateY(-10px)}to{opacity:1;max-height:80px;transform:none}}@keyframes login-dot{0%{transform:scale(.4)}60%{transform:scale(1.35)}to{transform:scale(1)}}@keyframes login-pop-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}
.ledger{--stagger:80ms;--pop-lag:.38s}.ledger tbody tr:hover{background:var(--row-hover)}.ledger tbody tr.flipping{transition:transform var(--flip-duration) var(--ease-in-out)}.ledger tbody td{animation:ledger-fade .5s var(--ease-out-soft) both;animation-delay:calc(var(--i,0) * var(--stagger))}.ledger tbody td.num{transform-origin:100%;animation-name:ledger-pop;animation-duration:.45s;animation-delay:calc(var(--i,0) * var(--stagger) + var(--pop-lag))}.ledger tfoot tr{border-top:1px solid var(--ink)}.ledger .ratio{width:28%;min-width:180px}.bar{background:var(--track);border-radius:7px;height:14px;display:flex;overflow:hidden}.bar-seg{transform-origin:0;height:100%;animation:ledger-grow .9s var(--ease-out-expo) both;animation-delay:calc(var(--i,0) * var(--stagger));flex:none}.bar-done{background:var(--ok)}.bar-cancel{background:var(--cancel);animation-delay:calc(var(--i,0) * var(--stagger) + var(--pop-lag))}.ledger-tools{flex-wrap:wrap;align-items:center;gap:12px 20px;display:flex}.ledger-tools .count{margin-right:auto}.legend{color:var(--muted);gap:16px;font-size:13px;display:inline-flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.swatch{border-radius:3px;width:12px;height:12px}.swatch-done{background:var(--ok)}.swatch-cancel{background:var(--cancel)}.chips{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chips-label{color:var(--muted);font-size:13px}.chips button{border:1px solid var(--line);background:var(--field);height:40px;color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;padding:0 14px;font-size:14px;font-weight:700;transition:background-color .2s,color .2s}.chips button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--ink-on-dark)}.is-exporting tr{animation:.9s ease-out both ledger-wave;animation-delay:calc(var(--i,0) * 90ms)}@keyframes ledger-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes ledger-fade{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}@keyframes ledger-pop{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.08)}to{transform:scale(1)}}@keyframes ledger-wave{0%{background:0 0}30%{background:var(--ok-soft)}to{background:0 0}}
.xl-wrap{position:relative}.xl-btn{border:2px solid var(--ink);background:var(--field);width:190px;height:48px;color:var(--ink);font:inherit;cursor:pointer;transition:background-color .35s, color .35s, border-color .35s, width .45s var(--ease-in-out), transform .12s;border-radius:8px;justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:800;display:inline-flex;position:relative;overflow:hidden}.xl-btn:active:not(:disabled){transform:scale(.97)}.xl-btn:disabled{cursor:progress}.xl-btn[data-phase=making]{width:280px}.xl-btn[data-phase=done]{background:var(--ok);border-color:var(--ok);width:200px;color:var(--white)}.xl-btn[data-phase=error]{background:var(--danger-soft);border-color:var(--danger-ink);width:220px;color:var(--danger-ink)}.xl-fill{background:var(--accent);transform:scaleX(var(--p,0));transform-origin:0;transition:transform .1s linear;position:absolute;inset:0}.xl-btn:not([data-phase=making]) .xl-fill{opacity:0}.xl-label,.xl-percent,.xl-check{position:relative}.xl-percent{font-variant-numeric:tabular-nums}.xl-check path{stroke-dasharray:1;animation:.45s ease-out .1s both xl-check}.xl-error{z-index:5;border-radius:var(--radius);background:var(--danger-soft);max-width:360px;color:var(--danger-ink);margin:0;padding:8px 12px;font-size:13px;font-weight:700;animation:.35s ease-out both xl-in;position:absolute;top:calc(100% + 8px);right:0}.fly-chip{z-index:20;background:var(--white);color:var(--ok);border:1px solid var(--line);box-shadow:0 10px 24px var(--shadow-chip);white-space:nowrap;pointer-events:none;animation:xl-fly 1.1s var(--ease-fly) both;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:700;display:inline-flex;position:absolute;top:4px;right:20px}.tray{border:1px solid var(--line-on-dark);border-radius:999px;align-items:center;gap:8px;height:36px;padding:0 12px;font-size:13px;display:inline-flex}.tray-badge{background:var(--accent);min-width:20px;height:20px;color:var(--ink);animation:xl-bump .5s var(--ease-out-soft) both;border-radius:10px;justify-content:center;align-items:center;padding:0 4px;font-size:12px;font-weight:800;display:inline-flex}@keyframes xl-fly{0%{opacity:0;transform:translate(0)scale(.6)}15%{opacity:1;transform:translateY(-30px)scale(1)}to{opacity:0;transform:translate(var(--fly-x,0px), var(--fly-y,0px)) scale(.35)}}@keyframes xl-bump{0%{transform:scale(1)}40%{transform:scale(1.45)}to{transform:scale(1)}}@keyframes xl-check{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes xl-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.curtain{z-index:100;pointer-events:none;position:fixed;inset:0;overflow:hidden}.curtain-panel{background:var(--ink);width:50%;position:absolute;top:0;bottom:0}.curtain-left{animation:curtain-left 1s .1s var(--ease-curtain) both;left:0}.curtain-right{animation:curtain-right 1s .1s var(--ease-curtain) both;right:0}@keyframes curtain-left{0%{transform:none}to{transform:translate(-101%)}}@keyframes curtain-right{0%{transform:none}to{transform:translate(101%)}}@media (prefers-reduced-motion:reduce){.curtain{display:none}}
*{box-sizing:border-box}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);margin:0;font-size:14px;line-height:1.5}a{color:var(--ok)}a:hover{color:var(--ok-ink)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}h1{letter-spacing:-.02em;margin:0;font-size:30px;font-weight:800}.btn{border:1px solid var(--ink);height:40px;color:var(--ink);font:inherit;border-radius:var(--radius);cursor:pointer;background:0 0;align-items:center;padding:0 16px;font-weight:700;text-decoration:none;display:inline-flex}.btn:hover{background:var(--line-soft);color:var(--ink)}.btn-primary{background:var(--ink);color:var(--ink-on-dark)}.btn-primary:hover{background:var(--ink);color:var(--ink-on-dark);opacity:.9}.field{border:1px solid var(--line);background:var(--field);height:40px;font:inherit;color:var(--ink);border-radius:var(--radius);padding:0 12px}.topbar{background:var(--ink);color:var(--ink-on-dark)}.topbar-inner{max-width:var(--page-max);flex-wrap:wrap;align-items:center;gap:24px;min-height:64px;margin:0 auto;padding:0 32px;display:flex}.brand{letter-spacing:-.01em;font-size:17px;font-weight:800}.tabs{flex-wrap:wrap;gap:4px;display:flex}.tab{color:var(--ink-on-dark);padding:20px 14px;font-size:14px;text-decoration:none}.tab[aria-current=page]{border-bottom:3px solid var(--accent);padding-bottom:17px;font-weight:700}.who{align-items:center;gap:16px;margin-left:auto;font-size:13px;display:flex}.topbar .btn{border-color:var(--ink-on-dark);height:32px;color:var(--ink-on-dark);font-weight:500}.topbar .btn:hover{color:var(--ink-on-dark);opacity:.8;background:0 0}.page{max-width:var(--page-max);flex-direction:column;gap:20px;margin:0 auto;padding:32px;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.sub{color:var(--muted);margin:6px 0 0}.querybar{border-top:2px solid var(--ink);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:14px 0;display:flex}.seg{gap:4px;display:flex}.seg button{border:1px solid var(--line);background:var(--field);height:40px;color:var(--ink);font:inherit;border-radius:var(--radius);cursor:pointer;padding:0 14px}.seg button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--ink-on-dark);font-weight:700}.sep{color:var(--muted)}.sr-only{position:absolute;left:-9999px}.ledger-wrap{overflow-x:auto}.ledger{border-collapse:collapse;width:100%;min-width:900px}.ledger thead tr{text-align:left;border-bottom:1px solid var(--ink)}.ledger th{padding:10px;font-size:12px;font-weight:700}.ledger td{border-bottom:1px solid var(--line-soft);padding:12px 10px}.ledger .num{text-align:right;font-variant-numeric:tabular-nums}.ledger tfoot td{border-bottom:0;font-weight:800}.ledger .cancel{color:var(--danger-ink)}.ledger .done{color:var(--ok-ink)}.count{color:var(--muted);margin:0;font-size:13px}.notice{border:1px solid var(--line);background:var(--field);border-radius:var(--radius);margin:0;padding:16px}.notice.error{border-color:var(--danger-ink);background:var(--danger-soft);color:var(--danger-ink)}.skeleton{border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--field);height:220px;color:var(--muted);place-items:center;display:grid}@media (max-width:640px){.topbar-inner,.page{padding-left:16px;padding-right:16px}h1{font-size:24px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
