:root{--navy:#002c5f;--navy2:#00205a;--blue:#00aad2;--blue-d:#007fa3;--sand:#e4dcd3;--sand-l:#f3efeb;--bg:#f6f4f2;--ink:#1a1a1a;--ink2:#4b5563;--ink3:#7a828e;--line:#e2ddd7;--line2:#ece8e4;--ok:#0a7d4f;--okbg:#e7f5ee;--warn:#9a5b00;--warnbg:#fff4e0;--err:#b3261e;--errbg:#fdecea;--r:4px}*{box-sizing:border-box}body{color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.5 Hyundai Sans Text,Pretendard,Noto Sans KR,-apple-system,Segoe UI,system-ui,sans-serif}h1,h2,h3,h4{color:var(--navy);margin:0;font-family:Hyundai Sans Head,Pretendard,Noto Sans KR,-apple-system,system-ui,sans-serif}a{color:var(--blue-d)}code{font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}.shell{grid-template-columns:248px 1fr;min-height:100vh;display:grid}.side{border-right:1px solid var(--line);background:#fff;flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow:auto}.brand{cursor:pointer;align-items:center;gap:10px;padding:18px 20px 16px;display:flex}.brand b{color:var(--navy);letter-spacing:-.2px;font:700 17px Hyundai Sans Head,Pretendard,system-ui,sans-serif}.brand small{color:var(--ink3);letter-spacing:.3px;margin-top:-2px;font-size:10.5px;display:block}.nav-s{letter-spacing:1px;text-transform:uppercase;color:var(--ink3);padding:16px 22px 6px;font-size:10.5px}.nav-i{border-radius:var(--r);color:var(--ink2);cursor:pointer;font-weight:400;font:inherit;text-align:left;background:0 0;border:0;border-left:3px solid #0000;align-items:center;gap:10px;width:calc(100% - 20px);margin:1px 10px;padding:8px 12px;display:flex}.nav-i:hover{background:var(--sand-l);color:var(--navy)}.nav-i.on{color:var(--navy);border-left-color:var(--navy);background:#eaf1f8;font-weight:600}.nav-i .cnt{background:var(--sand-l);color:var(--ink2);border-radius:10px;margin-left:auto;padding:0 7px;font-size:11px}.nav-i.dis{opacity:.5;cursor:default}.nav-i.dis:hover{color:var(--ink2);background:0 0}.nav-i .soon{text-transform:uppercase;letter-spacing:.5px;color:var(--ink3);margin-left:auto;font-size:9.5px}.side-f{border-top:1px solid var(--line2);color:var(--ink3);margin-top:auto;padding:14px 20px;font-size:12px}.side-f a{cursor:pointer;color:var(--navy);font-weight:600;text-decoration:none}.env{text-transform:uppercase;letter-spacing:.6px;background:var(--sand);color:var(--navy);border-radius:10px;margin-bottom:6px;padding:1px 8px;font-size:10.5px;display:inline-block}.content{min-width:0}.topbar{border-bottom:1px solid var(--line);height:56px;color:var(--ink3);background:#fff;align-items:center;gap:12px;padding:0 32px;font-size:12.5px;display:flex}.topbar .sp{flex:1}.topbar .dot{background:#2fb67c;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}main{max-width:1240px;padding:28px 32px 64px}.ph{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.ph h2{letter-spacing:-.3px;font-size:24px}.ph .sub{color:var(--ink2);max-width:760px;margin:4px 0 0}.crumbs{color:var(--ink3);margin-bottom:4px;font-size:12px}.crumbs a{cursor:pointer;color:var(--ink3);text-decoration:none}.crumbs a:hover{color:var(--navy)}.ph-actions{flex-shrink:0;gap:8px;display:flex}button{font:inherit;cursor:pointer;background:var(--navy);color:#fff;border:1px solid var(--navy);border-radius:var(--r);padding:8px 16px;font-weight:600}button:hover:not(:disabled){filter:brightness(1.12)}button:disabled{opacity:.45;cursor:not-allowed}button.secondary{color:var(--navy);border:1px solid var(--navy);border-radius:var(--r);background:#fff;padding:7px 15px;font-weight:600}button.secondary:hover:not(:disabled){filter:none;background:#eaf1f8}button.ghost{color:var(--err);border-radius:var(--r);background:#fff;border:1px solid #e8b4af;padding:7px 15px}button.danger{background:var(--err);color:#fff;border:1px solid var(--err);border-radius:var(--r);padding:8px 16px;font-weight:600}button.link{color:var(--blue-d);background:0 0;border:0;padding:0;font-weight:600}button.link:hover{filter:none;text-decoration:underline}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0;display:flex}.card,section{border:1px solid var(--line);border-radius:var(--r);background:#fff;margin:0 0 16px;padding:20px 22px}.card h3,section h3{margin-bottom:10px;font-size:16px}section.step{padding-left:64px;position:relative}section.step>h3{align-items:center;display:flex}.stepn{background:var(--navy);color:#fff;border-radius:50%;place-items:center;width:28px;height:28px;font:700 13px system-ui;display:grid;position:absolute;top:18px;left:20px}.card.narrow{max-width:640px}hr{border:0;border-top:1px solid var(--line2);margin:16px 0}label{color:var(--ink);margin:12px 0;font-size:12.5px;font-weight:600;display:block}label input:not([type=checkbox]):not([type=radio]),label select,label textarea,select,input:not([type=checkbox]):not([type=radio]):not([type=file]),textarea{border-radius:var(--r);width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid #cfc8c0;margin-top:5px;padding:9px 11px;font-weight:400;display:block}select,.actions input:not([type=checkbox]){width:auto;margin-top:0}input:focus,select:focus,textarea:focus{outline:2px solid var(--blue);outline-offset:-1px;border-color:var(--blue)}label.inline{align-items:center;gap:8px;font-weight:500;display:flex}label.inline input{width:auto;margin:0}.grid2{grid-template-columns:1fr 1fr;gap:4px 18px;display:grid}.inline{align-items:center;gap:6px;display:flex}.muted{color:var(--ink3);font-size:12.5px}.err{color:var(--err)}.warn{color:var(--warn);background:var(--warnbg);border-radius:var(--r);border-left:3px solid #e0a030;padding:8px 12px}.okmsg{color:var(--ok);background:var(--okbg);border-radius:var(--r);border-left:3px solid #2fb67c;padding:8px 12px}.warncell{color:var(--warn);font-weight:700}.tag{background:var(--okbg);color:var(--ok);border-radius:10px;margin-left:6px;padding:1px 8px;font-size:11px;font-weight:600}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line2);white-space:nowrap;vertical-align:middle;padding:10px 14px}th{text-transform:uppercase;letter-spacing:.6px;color:var(--ink3);background:#faf8f6;font-size:11px;font-weight:600}tbody tr:hover{background:#faf8f6}tr.click{cursor:pointer}.tbl{padding:0;overflow:hidden}.tbl table td:first-child,.tbl table th:first-child{padding-left:22px}.scroll{overflow-x:auto}.kv{flex-wrap:wrap;gap:8px 28px;margin:14px 0;padding:0;list-style:none;display:flex}.kv .big{font-size:16px}.checks{flex-wrap:wrap;gap:6px 14px;margin:14px 0 18px;padding:0;list-style:none;display:flex}.checks li{border:1px solid var(--line);background:#fff;border-radius:14px;padding:4px 12px;font-size:12.5px}.checks .ok{color:var(--ok);background:var(--okbg);border-color:#bfe3d0}.checks .todo{color:var(--ink2)}.stages{margin:0;padding:0;list-style:none}.stages li{border-bottom:1px solid var(--line2);grid-template-columns:28px 1fr auto;align-items:center;gap:2px 10px;padding:11px 0;display:grid}.stages li .si{color:#fff;background:var(--ok);border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.stages li.bad .si{background:var(--err)}.stages li code{color:var(--ink3);word-break:break-all;grid-column:2/4}.stages li .err{grid-column:2/4}.stages li b{color:var(--ink);font-weight:600}.badge{white-space:nowrap;border-radius:12px;align-items:center;gap:5px;padding:2px 9px;font-size:11.5px;font-weight:600;display:inline-flex}.b-gray{color:var(--ink2);background:#efebe7}.b-green{background:var(--okbg);color:var(--ok)}.b-blue{color:var(--blue-d);background:#e0f4fa}.b-amber{background:var(--warnbg);color:var(--warn)}.b-red{background:var(--errbg);color:var(--err)}.b-navy{background:var(--navy);color:#fff}.tabs{border-bottom:1px solid var(--line);gap:2px;margin:0 0 20px;display:flex}.tabs button{color:var(--ink2);background:0 0;border:0;border-bottom:3px solid #0000;border-radius:0;margin-bottom:-1px;padding:10px 16px;font-weight:600}.tabs button:hover{color:var(--navy)}.tabs button.on{color:var(--navy);border-bottom-color:var(--navy)}.catalog{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-bottom:22px;display:grid}.cat{border:1px solid var(--line);border-radius:var(--r);cursor:pointer;text-align:left;font-weight:400;font:inherit;color:inherit;background:#fff;flex-direction:column;gap:6px;padding:18px;transition:all .12s;display:flex}.cat:hover:not(.dis){border-color:var(--navy);box-shadow:0 2px 10px #002c5f1a}.cat.dis{opacity:.55;cursor:default}.cat.on{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy)}.cat .ci{border-radius:var(--r);width:40px;height:40px;color:var(--navy);background:#eaf1f8;place-items:center;margin-bottom:6px;display:grid}.cat b{color:var(--navy);font-size:14.5px}.cat span{color:var(--ink3);font-size:12.5px}.h3s{text-transform:uppercase;letter-spacing:.8px;color:var(--ink3);margin:22px 0 10px;font-family:inherit;font-size:12px}.empty{text-align:center;border-radius:var(--r);background:#fff;border:1px dashed #cfc8c0;padding:48px 20px}.empty-i{width:52px;height:52px;color:var(--navy);background:#eaf1f8;border-radius:50%;place-items:center;margin:0 auto 12px;display:grid}.empty p{color:var(--ink2);max-width:420px;margin:6px auto 16px}.stats{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;display:grid}.stat{border:1px solid var(--line);border-radius:var(--r);background:#fff;padding:16px 18px}.stat small{color:var(--ink3);text-transform:uppercase;letter-spacing:.7px;font-size:11px}.stat b{color:var(--navy);margin-top:2px;font:700 28px Hyundai Sans Head,Pretendard,system-ui,sans-serif;display:block}.flow{grid-template-columns:1fr 64px 190px 64px 1fr;align-items:stretch;gap:0;padding:26px 22px;display:grid}.flow .col{flex-direction:column;justify-content:center;gap:10px;display:flex}.flow .node{border:1px solid var(--line);border-radius:var(--r);cursor:pointer;background:#fff;align-items:center;gap:10px;min-width:0;padding:10px 14px;display:flex}.flow .node:hover{border-color:var(--navy)}.flow .node .ni{color:var(--navy);flex-shrink:0}.flow .node span{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.flow .node.ghosty{color:var(--ink3);border-style:dashed;justify-content:center}.flow .hub{background:linear-gradient(160deg,var(--navy),var(--navy2));color:#fff;border-radius:var(--r);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:18px;display:flex}.flow .hub b{font:700 16px Hyundai Sans Head,system-ui,sans-serif}.flow .hub small{opacity:.75;font-size:11px}.flow .pipe{color:var(--blue);justify-content:center;align-items:center;display:flex}.todo-l{margin:0;padding:0;list-style:none}.todo-l li{border-bottom:1px solid var(--line2);align-items:center;gap:12px;padding:11px 0;display:flex}.todo-l .ck{color:#fff;border:2px solid #cfc8c0;border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;display:grid}.todo-l .done .ck{background:var(--ok);border-color:var(--ok)}.todo-l .done:not(.plain) span{color:var(--ink3);text-decoration:line-through}.todo-l a{cursor:pointer;margin-left:auto;font-weight:600;text-decoration:none}pre.code{color:#d6e4f5;border-radius:var(--r);background:#0f1c2e;margin:8px 0;padding:14px 16px;font:12px/1.55 ui-monospace,Menlo,monospace;overflow:auto}.keybox{background:var(--sand-l);border:1px solid var(--line);border-radius:var(--r);align-items:center;gap:10px;margin:6px 0 4px;padding:8px 12px;display:flex}.keybox code{color:var(--navy);flex:1;font-weight:600;overflow:auto}.live{color:var(--ok);align-items:center;gap:6px;font-size:12px;font-weight:600;display:inline-flex}.live i{background:#2fb67c;border-radius:50%;width:8px;height:8px;animation:1.6s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #2fb67c80}to{box-shadow:0 0 0 8px #2fb67c00}}.login{grid-template-columns:1.1fr 1fr;min-height:100vh;display:grid}.login .hero{background:linear-gradient(155deg,var(--navy) 0%,var(--navy2) 60%,#003a7a 100%);color:#fff;flex-direction:column;justify-content:space-between;padding:56px;display:flex;position:relative;overflow:hidden}.login .hero h1{color:#fff;letter-spacing:-.8px;max-width:460px;font-size:38px;line-height:1.15}.login .hero p{opacity:.85;max-width:420px;font-size:15px}.login .hero .bgm{opacity:.09;position:absolute;bottom:-110px;right:-90px}.login .hero .b{align-items:center;gap:10px;font:700 18px Hyundai Sans Head,system-ui,sans-serif;display:flex}.login .pane{background:var(--bg);place-items:center;padding:32px;display:grid}.login form{width:100%;max-width:380px}.login form h3{margin-bottom:4px;font-size:22px}.login form button{width:100%;margin-top:6px;padding:11px}@media (width<=900px){.shell{grid-template-columns:1fr}.side{height:auto;position:static}.stats{grid-template-columns:1fr 1fr}.flow{grid-template-columns:1fr}.flow .pipe{display:none}.login{grid-template-columns:1fr}.login .hero{display:none}.grid2{grid-template-columns:1fr}main{padding:20px 16px}}h3 .muted{margin-left:6px;font-weight:400}
