.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-brand{background:var(--deep);color:#fff;padding:56px;display:flex;flex-direction:column}.login-logo{font-size:28px;font-weight:900}.login-logo span{color:var(--gold)}.login-logo small{display:block;font-size:12px;color:#aebfba;letter-spacing:.1em;font-weight:700}.login-brand h1{font-size:32px;line-height:1.3;margin:64px 0 14px}.login-brand p{color:#c3d3ce;max-width:440px;margin:0}.login-env{margin-top:auto;font-size:12px;color:#b0c6bf}.login-form{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;gap:14px}.login-card{width:100%;max-width:400px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:26px}.login-card h2{font-size:22px;margin:4px 0 2px}.login-card p{margin:0 0 16px}.login-btn{width:100%;justify-content:center;height:46px;margin-top:16px;font-size:15px}.login-sub{font-size:12px;color:var(--muted);text-align:center;margin-top:10px}.otp{letter-spacing:.5em;font-size:20px;font-weight:900;text-align:center;height:52px}.login-demo{font-size:12px;color:var(--muted)}.login-demo code{background:#fff;border:1px solid var(--line);border-radius:4px;padding:1px 6px}@media(max-width:860px){.login{grid-template-columns:1fr}.login-brand{padding:28px 20px}.login-brand h1{font-size:22px;margin:18px 0 6px}.login-env{display:none}.login-form{justify-content:flex-start;padding:20px 16px 32px}}.otp-setup{margin:8px 0 14px}.otp-qr{width:184px;height:184px;margin:10px auto;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px}.otp-qr svg{width:100%;height:100%;display:block}.otp-secret{display:block;margin-top:6px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px;font-size:13px;letter-spacing:.05em;word-break:break-all}:root{--forest: #255146;--forest-2: #2e6356;--deep: #255146;--gold: #D9A21B;--gold-on-forest: #E6B84A;--gold-soft: #f6efd7;--gold-ink: #775b09;--ink: #193e36;--muted: #687873;--paper: #f5f4ef;--white: #ffffff;--line: #dfe2dc;--line-2: #eef0ec;--soft: #edf2ef;--warm: #f0eee7;--danger: #9b4d43;--danger-soft: #f4e7e4;--radius: 10px;--sidebar: 248px;--shadow: 0 10px 28px rgba(20, 55, 46, .08);--font: Pretendard, "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3{margin:0;letter-spacing:-.02em}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.side{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--deep);color:#fff;padding:24px 16px;display:flex;flex-direction:column;z-index:30;overflow-y:auto}.side-brand{padding:0 10px 20px;border-bottom:1px solid rgba(255,255,255,.12);font-size:22px;font-weight:900}.side-brand span{color:var(--gold)}.side-brand small{display:block;font-size:11px;font-weight:700;color:#aebfba;letter-spacing:.08em;margin-top:2px}.side-quick{display:block;margin:18px 4px 14px;background:var(--gold);color:var(--ink);font-weight:900;border-radius:7px;padding:11px;text-align:center;font-size:13px}.side-label{font-size:11px;letter-spacing:.15em;color:#b0c6bf;font-weight:900;padding:10px 10px 6px}.side-menu{display:grid;gap:3px}.side-menu a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;font-size:13px;font-weight:700;color:#cbd9d4}.side-menu a:hover{background:#ffffff0f}.side-menu a.active{background:#fff;color:var(--deep)}.side-menu i{font-style:normal;width:18px;text-align:center}.side-badge{margin-left:auto;font-size:11px;background:#ffffff24;padding:1px 7px;border-radius:10px}.side-menu a.active .side-badge{background:var(--soft)}.side-user{margin-top:auto;padding:14px 10px 0;border-top:1px solid rgba(255,255,255,.12);display:flex;gap:9px;align-items:center}.side-user b{font-size:12px;display:block}.side-user small{font-size:12px;color:#b0c6bf}.side-user button{background:none;border:0;color:#cbd9d4;text-decoration:underline;padding:0;font-size:12px}.avatar{width:32px;height:32px;border-radius:50%;background:var(--soft);color:var(--deep);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:900;flex:none}.avatar.lg{width:64px;height:64px;font-size:16px}.main{margin-left:var(--sidebar);min-height:100vh}.topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:0 32px;position:sticky;top:0;z-index:20}.crumb{font-size:13px;color:#7a8883}.crumb b{color:var(--ink)}.topbar-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.content{max-width:1400px;margin:0 auto;padding:28px 32px 90px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:20px}.eyebrow{font-size:12px;letter-spacing:.15em;color:#9b730b;font-weight:900}.page-head h1{font-size:27px;margin:4px 0}.page-head p{font-size:13px;color:var(--muted);margin:0;max-width:820px}.mobile-tab,.fab,.sheet{display:none}.btn{border:1px solid var(--line);background:#fff;border-radius:7px;padding:8px 13px;font-size:13px;font-weight:800;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.btn:hover{border-color:#b9c9c3}.btn.primary{background:var(--forest);border-color:var(--forest);color:#fff}.btn.primary:hover{background:var(--forest-2)}.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--ink)}.btn.danger{color:var(--danger);border-color:#e2c9c4}.btn.ghost{border-color:transparent;background:transparent;color:var(--forest)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.sm{padding:5px 9px;font-size:12px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel-head{padding:14px 18px 11px;border-bottom:1px solid #eceee9;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.panel-head h2{font-size:15px}.panel-head span{font-size:12px;color:var(--muted)}.panel-head .more{margin-left:auto;font-size:12px;color:var(--forest);font-weight:900}.panel-body{padding:16px 18px}.panel.dark{background:var(--deep);color:#fff;border:0}.panel.dark .panel-head{border-color:#ffffff1f}.panel.dark .panel-head span{color:#b8cbc5}.grid-main{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}.stack{display:grid;gap:16px;align-content:start}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3,.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.cards2{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.metric{background:#fff;border:1px solid var(--line);border-radius:9px;padding:14px 16px}.metric span{font-size:12px;color:#74827d;font-weight:800}.metric strong{display:block;font-size:24px;margin:2px 0}.metric small{font-size:12px;color:#8a9692}.metric.accent{border-top:3px solid var(--gold)}.metric.ok{border-top:3px solid var(--forest)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:800;padding:3px 8px;border-radius:12px;background:var(--soft);color:var(--forest);white-space:nowrap}.badge.gold{background:var(--gold-soft);color:var(--gold-ink)}.badge.gray{background:#f0f1ef;color:#6f7b77}.badge.red{background:var(--danger-soft);color:var(--danger)}.badge.dark{background:var(--forest);color:#fff}.tag{display:inline-block;font-size:12px;border:1px solid #dfe4df;border-radius:10px;padding:2px 8px;color:#5f716a;background:#fff}.tags{display:flex;gap:5px;flex-wrap:wrap}.kicker{font-size:12px;color:#9b730b;font-weight:900}.muted{color:var(--muted)}.small{font-size:12px}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}.tabs a,.tabs button{padding:10px 1px;font-size:13px;font-weight:850;color:#72817c;white-space:nowrap;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs .active{color:var(--forest);border-bottom-color:var(--gold)}.tabs small{font-size:12px;margin-left:3px}.filterbar{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:16px}.filter-row{display:flex;gap:8px;flex-wrap:wrap}.filter-row>*{flex:1 1 150px}.filter-row>.grow{flex:3 1 240px}.chips{display:flex;gap:6px;flex-wrap:wrap;border-top:1px solid var(--line-2);padding-top:11px;margin-top:11px}.chip{border:1px solid #d9ddd8;background:#fff;border-radius:15px;padding:5px 10px;font-size:12px;font-weight:800}.chip.active{background:var(--forest);border-color:var(--forest);color:#fff}.input,.select,.textarea{width:100%;border:1px solid #d9ddd8;border-radius:7px;background:#fff;font-size:13px;outline:none}.input,.select{height:40px;padding:0 11px}.textarea{min-height:88px;padding:10px 12px;line-height:1.7;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:#8bb2a5;box-shadow:0 0 0 3px #25514612}.field{margin-bottom:14px}.field:last-child{margin-bottom:0}.field-label{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:13px;font-weight:800}.field-label .req{font-size:12px;color:#9b730b;font-weight:700}.field-label .hint{margin-left:auto;font-size:12px;font-weight:600;color:#8a9692}.field-help{font-size:12px;color:#8a9692;margin-top:4px}.seg{display:flex;gap:6px;flex-wrap:wrap}.seg button,.seg label{border:1px solid #d9ddd8;border-radius:7px;padding:8px 11px;font-size:12px;font-weight:700;background:#fff;display:inline-flex;gap:6px;align-items:center}.seg .on{border-color:var(--forest);background:var(--soft);color:var(--forest);font-weight:900}.check-row{display:flex;gap:8px;align-items:center;font-size:13px}.auto-box{min-height:40px;border:1px dashed #cfd6d1;border-radius:7px;background:#fafbf9;display:flex;align-items:center;padding:0 11px;font-size:13px;font-weight:800;gap:8px}.auto-box em{font-style:normal;font-weight:600;color:#8a9692;margin-left:auto;font-size:12px}.alert{border-radius:9px;padding:12px 14px;font-size:13px;margin-bottom:14px}.alert ul{margin:4px 0 0;padding-left:18px}.alert.error{background:var(--danger-soft);color:#7c3c34;border:1px solid #e8cbc6}.alert.ok{background:var(--soft);color:var(--forest);border:1px solid #cddcd5}.note{background:var(--warm);border:1px solid #e0ded5;border-radius:9px;padding:13px 15px;font-size:13px;color:#5f6f69}.note b{color:var(--ink)}.note ul{margin:6px 0 0;padding-left:18px}.list-row{padding:12px 0;border-bottom:1px solid var(--line-2)}.list-row:last-child{border-bottom:0}.row-title{font-size:14px;font-weight:800;display:block;margin:3px 0}.row-desc{font-size:13px;color:#6f7f79;margin:0}.row-meta{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-size:12px;color:#7c8985;margin-top:7px}.row-meta b{color:#52645d}.link{color:var(--forest);font-weight:900;font-size:12px}.progress{height:6px;background:#e8ece9;border-radius:6px;overflow:hidden}.progress i{display:block;height:100%;background:var(--forest)}.panel.dark .progress{background:#ffffff24}.panel.dark .progress i{background:var(--gold)}.table-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}table.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-size:12px;color:#788681;padding:11px 14px;border-bottom:1px solid var(--line);background:#fafaf7;white-space:nowrap}.tbl td{padding:13px 14px;border-bottom:1px solid var(--line-2);font-size:13px;vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.tbl tbody tr:hover{background:#fbfcfa}.checklist{display:grid;gap:6px}.checklist div{font-size:13px}.checklist .ok:before{content:"✓";font-weight:900;margin-right:7px;color:var(--forest)}.checklist .todo:before{content:"○";margin-right:7px;color:#9ca6a2}.panel.dark .checklist div{color:#c7d7d1}.panel.dark .checklist .ok:before{color:#fff}.savebar{position:fixed;left:var(--sidebar);right:0;bottom:0;background:#fffffff7;border-top:1px solid var(--line);padding:11px 32px;display:flex;align-items:center;gap:8px;z-index:15}.savebar span{font-size:12px;color:#7d8985}.savebar .actions{margin-left:auto;display:flex;gap:8px}.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:16px}.steps div{background:#fff;border:1px solid var(--line);border-radius:7px;padding:8px 10px;display:flex;gap:7px;align-items:center;font-size:12px;font-weight:800;color:#77847f}.steps i{font-style:normal;width:20px;height:20px;border-radius:50%;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:12px;flex:none}.steps .done i,.steps .on i{background:var(--forest);color:#fff}.steps .on{border-color:#9ebdb2;color:var(--forest)}.editor{border:1px solid #e2e5e0;border-radius:8px;margin-bottom:12px;overflow:hidden}.editor-head{background:#fafbf9;padding:9px 12px;border-bottom:1px solid #e8eae6;display:flex;align-items:center;gap:8px;font-size:13px}.editor-head span{font-size:12px;color:#899590}.editor-body{padding:10px 12px}.editor-body .textarea{border:0;padding:0;box-shadow:none;min-height:80px}.src-links{display:flex;gap:5px;flex-wrap:wrap;border-top:1px solid var(--line-2);padding-top:8px;margin-top:8px}.src{font-size:12px;background:var(--soft);border-radius:8px;padding:2px 7px;color:#5f716a}.dec2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.dec2>div{border:1px solid #e2e5e0;border-radius:7px;padding:9px 10px}.dec2>div.pick{border-color:var(--forest)}.dec2 small{font-size:12px;font-weight:900;color:#9b730b}.dec2 .textarea{border:0;padding:4px 0 0;min-height:60px;box-shadow:none}.timeline-entry{display:grid;grid-template-columns:64px 1fr;gap:14px;padding:16px 0;border-bottom:1px solid var(--line-2)}.timeline-entry:last-child{border-bottom:0}.timeline-date{text-align:right;font-size:12px;color:#87938f}.timeline-date b{display:block;font-size:13px;color:var(--ink)}.timeline-body{border-left:2px solid #dfe6e2;padding-left:16px;position:relative}.timeline-body:before{content:"";position:absolute;left:-6px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--gold);border:2px solid #fff}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;transition:.15s}.card:hover{box-shadow:var(--shadow)}.card h3{font-size:15px;margin:8px 0 5px;line-height:1.45}.card p{font-size:13px;color:#6b7a75;margin:0}.card-foot{margin-top:auto;padding-top:12px;display:flex;align-items:center;gap:8px;font-size:12px;color:#788681}.card-foot .link{margin-left:auto}.empty{text-align:center;padding:40px 16px;color:var(--muted);font-size:13px}.skeleton{padding:40px;text-align:center;color:var(--muted)}.kv{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:9px;overflow:hidden;margin-bottom:18px}.kv>div{background:#fff;padding:12px 14px}.kv span{display:block;font-size:12px;color:#7c8985;font-weight:800}.kv b{font-size:14px}.flow{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.flow div{background:var(--soft);padding:10px 6px;border-radius:6px;text-align:center;font-size:12px;font-weight:850}.flow div.on{background:var(--forest);color:#fff}.route-row{display:grid;grid-template-columns:150px 1fr 1.3fr 60px;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line-2);align-items:center;font-size:13px}.route-row:last-child{border-bottom:0}.route-row code{font-size:12px;background:#f4f6f4;padding:3px 6px;border-radius:4px;word-break:break-all}.route-row em{font-style:normal;font-weight:900;color:var(--forest);font-size:12px}.toggle{width:40px;height:22px;border-radius:12px;background:#c9d0cc;border:0;padding:3px;display:inline-flex;flex:none}.toggle i{width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s}.toggle.on{background:var(--forest)}.toggle.on i{transform:translate(18px)}.setting-row{display:grid;grid-template-columns:1fr 240px;gap:18px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line-2)}.setting-row:last-child{border-bottom:0}.setting-row b{font-size:13px}.setting-row p{font-size:12px;color:#7c8985;margin:2px 0 0}.setting-row>:last-child{justify-self:end;width:100%;display:flex;justify-content:flex-end}.modal-back{position:fixed;inset:0;background:#17332c73;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:#fff;border-radius:12px;width:100%;max-width:460px;padding:22px;box-shadow:var(--shadow)}.modal h3{font-size:17px;margin-bottom:6px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}@media(max-width:1100px){.grid-main{grid-template-columns:1fr}.metrics,.cards3{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.side{display:none}.main{margin-left:0}.topbar{padding:0 16px;height:56px}.topbar-actions .btn:not(.primary):not(.keep){display:none}.content{padding:20px 16px 150px}.page-head{flex-direction:column;align-items:flex-start}.page-head h1{font-size:22px}.grid2,.grid3,.cards3,.cards2,.dec2,.kv,.steps{grid-template-columns:1fr!important}.flow{grid-template-columns:repeat(2,1fr)}.route-row,.setting-row{grid-template-columns:1fr}.setting-row>:last-child{justify-content:flex-start}.timeline-entry{grid-template-columns:48px 1fr}.savebar{left:0;bottom:60px;padding:10px 16px}.savebar span{display:none}.mobile-tab{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;height:60px;background:#fff;border-top:1px solid var(--line);z-index:60}.mobile-tab a,.mobile-tab button{display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#6d7c77;background:none;border:0}.mobile-tab i{font-style:normal;font-size:17px;line-height:1.1}.mobile-tab .active{color:var(--forest)}.fab{display:flex;position:fixed;right:18px;bottom:76px;width:54px;height:54px;border-radius:50%;background:var(--gold);color:var(--ink);font-size:28px;font-weight:900;align-items:center;justify-content:center;box-shadow:0 8px 20px #0003;z-index:61}.sheet.open{display:grid;position:fixed;left:0;right:0;bottom:60px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -10px 24px #00000014;padding:6px 18px 10px;z-index:59}.sheet a,.sheet button{padding:13px 4px;border:0;border-bottom:1px solid var(--line-2);font-size:14px;font-weight:800;background:none;text-align:left}.has-savebar .fab{display:none}}@media(max-width:480px){.metrics{grid-template-columns:1fr 1fr}}
