:root{--bg:#f4f7fb;--panel:#fff;--ink:#0f1b2e;--muted:#41506a;--line:#cdd9e6;--line-soft:#e3ebf4;--navy:#11243d;--navy-2:#24426a;--teal:#00a3c4;--danger:#c02626;--warn:#b45309;--good:#15803d;--thead:#eaf4fc;--zebra:#fafcfe;--link:#00708a;--info:#006398;--side-text:#c9d6e6;--side-dim:#9fb2c9;--shadow:0 1px 2px #131b2e0d, 0 3px 10px #131b2e14;--font:"IBM Plex Sans KR", sans-serif;--num:Manrope, "IBM Plex Sans KR", sans-serif;--side-w:240px;--radius:4px}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);margin:0;font-size:14px;line-height:1.5}button,input,select,textarea{font-family:inherit}button{cursor:pointer}a{color:var(--link);text-decoration:none}a:hover{color:var(--ink)}:focus-visible{outline:2px solid var(--navy);outline-offset:2px}h1,h2,p{overflow-wrap:anywhere}.num{font-family:var(--num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.boot{margin:0;padding:24px 32px}.tone-bad{color:var(--danger);font-weight:600}.tone-warn{color:var(--warn);font-weight:600}.tone-good{color:var(--good);font-weight:600}.tone-info{color:var(--info);font-weight:600}.muted{color:var(--muted)}.shell{align-items:stretch;width:100%;min-height:100vh;display:flex}.side{width:var(--side-w);flex:0 0 var(--side-w);background:var(--navy);color:var(--side-text);flex-direction:column;gap:2px;height:100vh;padding:20px 12px;display:flex;position:sticky;top:0}.brand{font-family:var(--num);letter-spacing:.08em;color:#fff;white-space:nowrap;margin:0;padding:4px 12px 20px;font-size:15px;font-weight:800;text-decoration:none}.brand:hover{color:#fff}.brand{align-items:center;gap:12px;display:flex}.brand-logo{width:auto;height:40px;display:block}.brand-label{letter-spacing:0;color:var(--side-text);font-family:inherit;font-size:13px;font-weight:600}.login-logo{width:180px;height:auto;display:block}.nav-item{border-radius:var(--radius);color:var(--side-text);align-items:center;gap:10px;padding:10px 12px;font-size:14px;text-decoration:none;display:flex}.nav-item svg{flex:none}.nav-item.on{background:var(--navy-2);color:#fff;font-weight:600}.nav-item:hover{color:#fff}.side-foot{border-top:1px solid var(--navy-2);color:var(--side-dim);flex-direction:column;align-items:flex-start;gap:6px;margin-top:auto;padding:16px 12px 4px;font-size:12px;display:flex}.side-foot strong{color:#fff;font-weight:600}.side-link{color:var(--side-dim);text-align:left;background:0 0;border:0;padding:0;font-size:12px;text-decoration:none}.side-link:hover{color:#fff}.main{flex-direction:column;flex:auto;gap:16px;min-width:0;padding:24px 32px 48px;display:flex}.main>*{min-width:0;max-width:100%}.quiet{color:var(--muted);font-weight:600}.strong{font-weight:600}.panel-foot{padding:12px 16px 16px}.pad-x{padding:0 16px 12px}.sec-gap{margin-top:16px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 16px;display:flex}.page-kicker{color:var(--muted);margin:0;font-size:12px}.page-head h1,.detail-head h1{margin:4px 0 0;font-size:24px;font-weight:700}.page-head h1 .quiet{color:var(--muted);font-weight:600}.subline{color:var(--muted);margin:6px 0 0;font-size:13px}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.back{font-size:13px}.btn{border-radius:var(--radius);background:var(--navy);color:#fff;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;height:36px;padding:0 16px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{color:#fff}.btn.secondary{border-color:var(--line);color:var(--ink);background:#fff;font-weight:500}.btn.secondary:hover{color:var(--ink)}.btn:disabled{opacity:.55;cursor:default}.btn.wide{width:100%;height:48px;margin-top:8px;font-size:16px}.btn-link{color:var(--link);text-underline-offset:3px;background:0 0;border:0;padding:0 4px;font-size:13px;text-decoration:underline}.btn-link.danger{color:var(--danger)}.name-link{font-weight:600}.privacy{background:var(--panel);border:1px solid var(--line);color:var(--muted);align-items:center;gap:8px;margin:0;padding:10px 14px;font-size:13px;display:flex}.ledger-bad{color:var(--danger);margin:0;font-size:14px;font-weight:600}.history-error{color:var(--danger);margin:0;padding:12px 16px;font-size:14px;font-weight:600}.panel{background:var(--panel);box-shadow:var(--shadow)}.panel-head{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:12px 16px;display:flex}.panel-head h2{margin:0;font-size:15px;font-weight:700}.stats-wrap{max-width:100%;overflow-x:auto}.stats{background:var(--line);border:1px solid var(--line);box-shadow:var(--shadow);grid-auto-columns:minmax(132px,1fr);grid-auto-flow:column;gap:1px;width:max-content;min-width:100%;display:grid}.stat{background:#fff;min-width:0;padding:10px 14px}.stat-label{color:var(--muted);white-space:nowrap;font-size:11px;font-weight:600}.stat-value{font-size:22px;font-weight:800;line-height:1.3}.stat-value.warn{color:var(--warn)}.stat-value.bad{color:var(--danger)}.stat-value.good{color:var(--good)}.todo-list{margin:0;padding:0;list-style:none}.todo-item{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px;display:flex}.todo-item:last-child{border-bottom:0}.todo-icon{color:var(--muted);display:flex}.todo-icon.urgent{color:var(--danger)}.todo-icon.warn{color:var(--warn)}.todo-icon.info{color:var(--info)}.todo-main{flex:220px;min-width:0}.todo-title{font-size:14px;font-weight:600}.todo-detail{color:var(--muted);font-size:12px}.todo-level{min-width:36px;font-size:12px;font-weight:700}.todo-level.urgent{color:var(--danger)}.todo-level.warn{color:var(--warn)}.todo-level.info{color:var(--info)}.todo-empty{color:var(--muted);margin:0;padding:16px;font-size:14px}.table-scroll{max-width:100%;overflow-x:auto}.tbl{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}.tbl th{background:var(--thead);color:var(--muted);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 12px;font-weight:600}.tbl td{border-bottom:1px solid var(--line-soft);color:var(--ink);vertical-align:middle;background:#fff;padding:10px 12px}.tbl tbody tr:nth-child(2n) td{background:var(--zebra)}.tbl-nowrap td,.tbl-nowrap th{white-space:nowrap}.tbl tr.clickable{cursor:pointer}.tbl tbody tr.selected td{background:var(--thead)}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tab{border-radius:var(--radius);border:1px solid var(--line);height:36px;color:var(--ink);background:#fff;padding:0 12px;font-size:13px;font-weight:400}.tab[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:600}.tabs{flex-wrap:wrap;gap:8px;display:flex}.search,.inline-field{border:1px solid var(--line);border-radius:var(--radius);height:36px;color:var(--muted);background:#fff;align-items:center;gap:8px;padding:0 10px;font-size:13px;display:flex}.search input,.inline-field select{font:inherit;color:var(--ink);background:0 0;border:0;outline:none;width:160px;max-width:46vw;height:32px;padding:0}.search:focus-within,.inline-field:focus-within{outline:2px solid var(--navy);outline-offset:2px}.input,.select,.textarea{border:1px solid var(--line);border-radius:var(--radius);height:36px;color:var(--ink);background:#fff;width:min(420px,100%);padding:0 10px;font-size:14px}.textarea{resize:vertical;width:min(560px,100%);height:auto;min-height:96px;padding:8px 10px}.login-field{color:var(--muted);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.login-field input{border:1px solid var(--line);border-radius:var(--radius);width:100%;height:44px;color:var(--ink);background:#fff;padding:0 12px;font-size:15px;font-weight:400}.field{grid-template-columns:140px minmax(0,1fr);align-items:start;gap:4px 16px;padding:7px 0;display:grid}.field-label{color:var(--muted);padding-top:8px;font-size:12px;font-weight:600}.field-body{flex-direction:column;gap:4px;min-width:0;display:flex}.field-control{flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0;display:flex}.hint{color:var(--muted);font-size:12px}.problem{color:var(--danger);font-size:12px}.form-panel{padding:4px 20px 20px}.sec-row{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:18px 0 4px;padding-bottom:8px;display:flex}.sec{color:var(--muted);margin:0;font-size:12px;font-weight:700}.sec-extra{color:var(--muted);margin:0;font-size:12px}.choice-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.preview{margin:0;font-size:13px}.base-list{margin:0;padding:0 0 0 18px;font-size:14px}.base-list li{padding:3px 0}.form-actions{flex-wrap:wrap;gap:8px;padding-top:16px;display:flex}.alert{color:var(--danger);background:#fdf3f3;border:1px solid #e8b4b4;margin:0;padding:12px 14px;font-size:13px;line-height:1.6}.ok-line{color:var(--good);margin:0;font-size:13px;font-weight:600}.empty{padding:8px 0 4px}.empty p{margin:0 0 12px}.detail-head h1{margin:0;font-size:26px}.split{grid-template-columns:minmax(0,1fr);align-items:start;gap:16px;display:grid}.detail-panel{padding:16px 18px 20px}.detail-panel h2{margin:0 0 12px;font-size:18px;font-weight:700}.kv{grid-template-columns:72px minmax(0,1fr);gap:6px 10px;padding:5px 0;font-size:13px;display:grid}.kv .k{color:var(--muted);font-weight:600}.ver-list{flex-direction:column;gap:8px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.notes{white-space:pre-wrap;word-break:break-word;font-family:var(--font);margin:0;padding:16px;font-size:13px;line-height:1.65}.add-page{border-bottom:1px solid var(--line-soft);padding:12px 16px 4px}.login{background:var(--bg);flex-wrap:wrap;min-height:100vh;display:flex}.login-brand{background:var(--navy);color:#fff;flex-direction:column;flex:380px;justify-content:space-between;gap:32px;padding:48px 56px;display:flex}.word{font-family:var(--num);letter-spacing:.12em;font-size:22px;font-weight:800}.login-brand p{color:var(--side-dim);margin:0;font-size:12px}.login-pane{flex:999 420px;justify-content:center;align-items:center;min-width:0;padding:48px 24px;display:flex}.login-box{flex-direction:column;gap:16px;width:100%;max-width:400px;display:flex}.login-box h1{text-align:left;margin:0;font-size:26px;font-weight:700}.lead{color:var(--muted);margin:0;font-size:14px}.rules{color:var(--muted);margin:0;padding-left:18px;font-size:13px;line-height:1.7}.stack{flex-direction:column;gap:8px;display:flex}.code-ok{color:var(--good);font-size:12px;font-weight:600}@media (width>=1200px){.split.has-detail{grid-template-columns:minmax(0,1fr) 320px}}@media (width<=1100px){.main{padding:20px 20px 40px}.login-brand{padding:32px 28px}.login-pane{padding:32px 20px}.field{grid-template-columns:120px minmax(0,1fr)}}
