:root{--purple:#7c4dff;--purple-dark:#5c24e8;--purple-deep:#4a1892;--purple-soft:#ede9fe;--purple-muted:#ffffffb8;--bg:#f5f3ff;--bg-elevated:#faf8ff;--surface:#fff;--border:#e9e4f5;--text:#1c1433;--text-secondary:#6b6280;--muted:#948bad;--primary:var(--purple);--primary-soft:var(--purple-soft);--accent-warm:#f97316;--danger:#e11d48;--success:#10b981;--warning:#ea580c;--sidebar-w:260px;--radius:18px;--radius-sm:12px;--radius-pill:999px;--shadow:0 4px 24px #4c1d9514;--shadow-card:0 8px 32px #4c1d951a;--font:"Pretendard", "Apple SD Gothic Neo", system-ui, -apple-system, "Segoe UI", sans-serif}*,:before,:after{box-sizing:border-box}html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text}img{-webkit-user-drag:none;user-drag:none}#root{height:100%}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:linear-gradient(165deg, var(--purple) 0%, var(--purple-deep) 100%);flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:sticky;top:0;box-shadow:4px 0 32px #4c1d952e}.sidebar__brand{padding:26px 20px 22px}.sidebar__brand-logo{color:#fff;letter-spacing:-.03em;background:#ffffff2e;border-radius:14px;justify-content:center;align-items:center;width:42px;height:42px;margin-bottom:14px;font-size:15px;font-weight:800;display:inline-flex}.sidebar__brand-title{letter-spacing:-.03em;color:#fff;font-size:17px;font-weight:800;line-height:1.25}.sidebar__brand-sub{color:var(--purple-muted);margin-top:6px;font-size:12px;line-height:1.45}.sidebar__nav{flex-direction:column;flex:1;gap:4px;padding:8px 12px 16px;display:flex;overflow:auto}.sidebar__label{text-transform:uppercase;letter-spacing:.08em;color:#ffffff73;padding:12px 14px 8px;font-size:11px;font-weight:700}.nav-link{color:var(--purple-muted);border-radius:14px;align-items:center;gap:12px;padding:11px 14px;font-size:14px;font-weight:500;transition:background .15s,color .15s;display:flex}.nav-link:hover{color:#fff;background:#ffffff1a}.nav-link--active{color:var(--purple-dark);background:#fff;font-weight:700;box-shadow:0 4px 16px #0000001f}.nav-link__mark{color:#fff;background:#ffffff2e;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:13px;font-weight:800;display:flex}.nav-link--active .nav-link__mark{background:linear-gradient(135deg, var(--purple) 0%, var(--purple-dark) 100%);color:#fff;box-shadow:0 2px 10px #7c4dff73}.sidebar__foot{color:#fff6;padding:16px 18px 20px;font-size:11px;line-height:1.45}.main-wrap{flex-direction:column;flex:1;min-width:0;display:flex}.header{background:var(--surface);border-bottom:1px solid var(--border);z-index:5;justify-content:space-between;align-items:center;min-height:64px;padding:12px 28px;display:flex;position:sticky;top:0;box-shadow:0 1px #7c4dff0f}.header__title{letter-spacing:-.03em;color:var(--text);font-size:18px;font-weight:800}.header__meta{color:var(--text-secondary);border-radius:var(--radius-pill);background:var(--bg-elevated);border:1px solid var(--border);align-items:center;gap:10px;padding:8px 14px;font-size:13px;font-weight:500;display:flex}.main{width:100%;max-width:1320px;margin:0 auto;padding:28px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-head h1{letter-spacing:-.04em;color:var(--text);margin:0;font-size:26px;font-weight:800}.page-head p{color:var(--text-secondary);margin:8px 0 0;font-size:15px;line-height:1.5}.row{flex-wrap:wrap;gap:12px;display:flex}.grid-kpi{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px;margin-bottom:22px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card--purple{background:linear-gradient(145deg, var(--purple) 0%, var(--purple-deep) 100%);color:#fff;box-shadow:var(--shadow-card);border:none}.card--purple .kpi-label,.card--purple .kpi-foot,.card--purple .muted{color:#ffffffd1!important}.card--purple .kpi-value{color:#fff!important}.card__bd{padding:18px 20px}.card__hd{border-bottom:1px solid var(--border);letter-spacing:-.02em;padding:16px 20px;font-size:15px;font-weight:700}.card__hd--on-purple{color:#fff;border-bottom-color:#fff3}.kpi-label{color:var(--text-secondary);margin-bottom:8px;font-size:13px;font-weight:600}.kpi-value{letter-spacing:-.03em;color:var(--text);font-size:22px;font-weight:800}.kpi-foot{color:var(--muted);margin-top:10px;font-size:12px}.quick-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-bottom:22px;display:grid}.quick-card{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);color:inherit;text-align:left;cursor:pointer;width:100%;font:inherit;align-items:center;gap:14px;padding:16px 18px;transition:transform .15s,box-shadow .15s;display:flex}a.quick-card:hover{box-shadow:var(--shadow-card);transform:translateY(-2px)}button.quick-card{cursor:pointer}.quick-card__icon{background:linear-gradient(135deg, var(--purple) 0%, var(--purple-dark) 100%);color:#fff;border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:14px;font-weight:800;display:flex}.quick-card__title{font-size:15px;font-weight:700}.quick-card__desc{color:var(--text-secondary);margin-top:3px;font-size:12px}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text);border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,transform .1s;display:inline-flex}.btn:hover{background:var(--bg)}.btn:active{transform:scale(.98)}.btn--primary{background:linear-gradient(135deg, var(--purple) 0%, var(--purple-dark) 100%);color:#fff;border-color:#0000;box-shadow:0 4px 16px #7c4dff59}.btn--primary:hover{filter:brightness(1.06)}.btn--ghost{background:0 0;border-color:#0000}.btn--ghost:hover{background:var(--purple-soft);color:var(--purple-dark)}.btn--sm{border-radius:12px;padding:7px 12px;font-size:13px}.btn--danger{color:var(--danger);background:#fff1f2;border-color:#fecdd3}.badge{border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);align-items:center;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.badge--success{color:var(--success);background:#ecfdf5;border-color:#a7f3d0}.badge--warn{color:var(--warning);background:#fffbeb;border-color:#fde68a}.badge--muted{border-color:var(--border);color:var(--muted);background:#f4f4f5}.badge--danger{color:var(--danger);background:#fff1f2;border-color:#fecdd3}.badge--info{background:var(--purple-soft);color:var(--purple-dark);border-color:#ddd6fe}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);overflow:auto}table.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:14px 18px}.data-table th{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--bg-elevated);font-size:11px;font-weight:700}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:#ede9fe59}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px 18px;display:grid}.field label{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:700;display:block}.input,.textarea,.select{border:1px solid var(--border);background:var(--surface);border-radius:14px;width:100%;padding:11px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s}.textarea{resize:vertical;min-height:100px}.input:focus,.textarea:focus,.select:focus{border-color:var(--purple);outline:none;box-shadow:0 0 0 3px #7c4dff33}.toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;font-size:14px;display:inline-flex}.toggle input{width:36px;height:20px;accent-color:var(--purple)}.drawer-overlay{z-index:40;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1c143366;position:fixed;inset:0}.drawer{background:var(--surface);z-index:41;flex-direction:column;width:min(480px,100vw - 40px);height:100%;display:flex;position:fixed;top:0;right:0;box-shadow:-12px 0 40px #4c1d9526}.drawer__hd{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:18px 22px;display:flex}.drawer__bd{flex:1;padding:18px 22px;overflow:auto}.drawer__ft{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:16px 22px;display:flex}.modal-overlay{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1c143373;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);width:min(520px,100%);max-height:90vh;box-shadow:var(--shadow-card);flex-direction:column;display:flex}.modal__hd{border-bottom:1px solid var(--border);padding:18px 22px;font-size:16px;font-weight:800}.modal__bd{padding:18px 22px;overflow:auto}.modal__ft{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:16px 22px;display:flex}.tag-list{flex-wrap:wrap;gap:8px;display:flex}.tag{border-radius:var(--radius-pill);background:var(--purple-soft);color:var(--purple-dark);border:1px solid #ddd6fe;padding:5px 10px;font-size:12px;font-weight:600}.split{grid-template-columns:1fr 380px;gap:22px;display:grid}@media (width<=960px){.split{grid-template-columns:1fr}.sidebar{display:none}}.empty{text-align:center;color:var(--muted);padding:40px;font-size:15px}.tabs{background:var(--surface);border:1px solid var(--border);border-radius:16px;gap:8px;width:fit-content;margin-bottom:18px;padding:4px;display:flex}.tab{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:12px;padding:10px 20px;font-size:14px;font-weight:600}.tab--on{color:#fff;background:linear-gradient(135deg, var(--purple) 0%, var(--purple-dark) 100%);box-shadow:0 4px 12px #7c4dff4d}.pill-important{color:var(--accent-warm);background:#ffedd5;border-radius:8px;margin-right:8px;padding:3px 9px;font-size:11px;font-weight:800}.muted{color:var(--text-secondary);font-size:14px}
