:root{--primary: #7E57C2;--primary-dark: #5E35B1;--primary-light: #9575CD;--primary-bg: #EDE7F6;--accent: #a78bfa;--bg: #F5F5F5;--white: #fff;--text: #333;--text-light: #555;--text-muted: #999;--border: #e0e0e0;--border-light: #f0f0f0;--radius: 16px;--radius-sm: 10px;--shadow: 0 2px 12px rgba(0,0,0,.06);--shadow-hover: 0 8px 24px rgba(0,0,0,.1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Noto Sans KR,sans-serif;background:var(--bg);color:var(--text);line-height:1.7}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%)}.login-box{background:var(--white);padding:40px;border-radius:var(--radius);box-shadow:var(--shadow-hover);width:380px;text-align:center}.login-logo{width:48px;height:48px;background:var(--primary);color:#fff;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;font-weight:900;font-size:1.2rem;margin-bottom:16px}.login-box h1{font-size:1.1rem;margin-bottom:4px}.login-box p{font-size:.8rem;color:var(--text-muted);margin-bottom:24px}.login-box input{width:100%;padding:12px 16px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem;text-align:center;letter-spacing:2px;margin-bottom:12px;transition:border .2s}.login-box input:focus{outline:none;border-color:var(--primary)}.login-box button{width:100%;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.9rem;font-weight:700;cursor:pointer;transition:background .2s}.login-box button:hover{background:var(--primary-dark)}.login-err{color:#e53e3e;font-size:.8rem;margin-top:8px;display:none}.header{background:linear-gradient(135deg,var(--primary),var(--primary-dark));padding:20px 24px;color:#fff}.header-inner{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.header-left{display:flex;align-items:center;gap:12px}.header-logo{width:36px;height:36px;background:#fff3;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:1rem}.header h1{font-size:1.15rem;font-weight:700}.header-right{display:flex;gap:8px;flex-wrap:wrap}.header-btn{padding:8px 16px;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer;border:none;font-family:inherit;transition:all .2s}.header-btn.primary{background:#fff3;color:#fff}.header-btn.primary:hover{background:#ffffff4d}.header-btn.accent{background:#ffc107;color:#333}.header-btn.accent:hover{background:#ffca28}.header-btn.green{background:#4caf50;color:#fff}.header-btn.green:hover{background:#43a047}.header-btn.orange{background:#ff9800;color:#fff}.header-btn.orange:hover{background:#f57c00}.header-btn.ghost{background:transparent;color:#ffffffb3}.header-btn.ghost:hover{color:#fff}.content{max-width:1400px;margin:0 auto;padding:20px 24px}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:20px}.stat{background:var(--white);border-radius:var(--radius-sm);padding:16px;text-align:center;box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .2s,box-shadow .2s;cursor:pointer}.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}.stat:before{content:"";position:absolute;top:0;left:0;right:0;height:3px}.stat.s-total:before{background:var(--primary)}.stat.s-접수중:before{background:#f59e0b}.stat.s-검토대기:before{background:#f97316}.stat.s-접수대기:before{background:#7e57c2}.stat.s-접수완료:before{background:#3182ce}.stat.s-완료:before{background:#38a169}.stat .num{font-size:1.8rem;font-weight:900}.stat.s-total .num{color:var(--primary)}.stat.s-접수중 .num{color:#f59e0b}.stat.s-검토대기 .num{color:#f97316}.stat.s-접수대기 .num{color:#7e57c2}.stat.s-접수완료 .num{color:#3182ce}.stat.s-완료 .num{color:#38a169}.stat .label{font-size:.72rem;color:var(--text-muted);margin-top:2px;font-weight:500}.filters{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;align-items:center}.filters select,.filters input{padding:9px 14px;border:1.5px solid var(--border);border-radius:8px;font-size:.82rem;font-family:inherit;background:var(--white);transition:border .2s}.filters select:focus,.filters input:focus{outline:none;border-color:var(--primary)}.filters input{flex:1;min-width:200px}.tbl-wrap{background:var(--white);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);overflow-x:auto;-webkit-overflow-scrolling:touch}.pagination{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:20px;padding:10px 0;flex-wrap:wrap}.pagination button{min-width:36px;height:36px;border:1.5px solid var(--border);background:var(--white);border-radius:8px;font-size:.82rem;font-weight:600;cursor:pointer;color:var(--text);transition:all .15s}.pagination button:hover{border-color:var(--primary);color:var(--primary)}.pagination button.active{background:var(--primary);color:#fff;border-color:var(--primary)}.pagination button:disabled{opacity:.4;cursor:default}.pagination .pg-info{font-size:.78rem;color:var(--text-muted);margin:0 8px}table{width:100%;border-collapse:collapse;font-size:.82rem}th{padding:12px 14px;background:linear-gradient(135deg,#f5f3ff,var(--primary-bg));text-align:center;font-weight:700;color:var(--primary-dark);font-size:.75rem;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;user-select:none}th.sortable{cursor:pointer;position:relative;transition:background .15s}th.sortable:hover{background:#ede9fe}th .sort-icon{font-size:.65rem;margin-left:3px;opacity:.3}th.sort-active .sort-icon{opacity:1;color:var(--primary)}td{padding:12px 14px;border-bottom:1px solid var(--border-light);text-align:center}tr:hover td{background:#faf8ff}.url-cell{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.url-cell a{color:var(--primary);font-weight:500}.badge{padding:3px 10px;border-radius:20px;font-size:.7rem;font-weight:700;display:inline-block;white-space:nowrap}.b-분석중{background:#fef3c7;color:#92400e}.b-검토대기{background:#ffedd5;color:#c2410c}.b-접수대기{background:#f3e8ff;color:#6b21a8}.b-접수중{background:#fef3c7;color:#92400e}.b-접수완료{background:#dbeafe;color:#1e40af}.b-접수실패,.b-분석실패{background:#fee2e2;color:#991b1b}.b-처리중{background:#fef3c7;color:#92400e}.b-완료{background:#d1fae5;color:#065f46}.b-반려{background:#fee2e2;color:#991b1b}.b-보류{background:#fef3c7;color:#92400e}.b-접근불가,.b-제외{background:#f3f4f6;color:#6b7280}.empty-row{text-align:center;padding:60px 20px;color:var(--text-muted)}button.btn,.btn{padding:7px 14px!important;border-radius:8px!important;font-size:.75rem!important;font-weight:600!important;cursor:pointer!important;border:none!important;font-family:inherit!important;transition:all .2s!important;display:inline-flex!important;align-items:center!important;gap:4px!important;white-space:nowrap!important}button.btn-primary,.btn-primary{background:var(--primary)!important;color:#fff!important}button.btn-primary:hover,.btn-primary:hover{background:var(--primary-dark)!important;transform:translateY(-1px)!important}button.btn-green,.btn-green{background:#4caf50!important;color:#fff!important}button.btn-green:hover,.btn-green:hover{background:#43a047!important}button.btn-orange,.btn-orange{background:#ff9800!important;color:#fff!important}button.btn-orange:hover,.btn-orange:hover{background:#f57c00!important}button.btn-danger,.btn-danger{background:#fee2e2!important;color:#991b1b!important}button.btn-danger:hover,.btn-danger:hover{background:#fecaca!important}button.btn-ghost,.btn-ghost{background:var(--primary-bg)!important;color:var(--primary)!important}button.btn-ghost:hover,.btn-ghost:hover{background:#ddd6fe!important}td button{margin:0 2px}.modal-bg{display:none;position:fixed;inset:0;background:#00000080;z-index:200;align-items:center;justify-content:center;backdrop-filter:blur(2px)}.modal-bg.show{display:flex}.modal{background:var(--white);border-radius:var(--radius);padding:32px;max-width:600px;width:92%;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-hover)}.modal h2{font-size:1.1rem;color:var(--primary-dark);margin-bottom:20px;display:flex;align-items:center;gap:8px}.fg{margin-bottom:14px}.fg label{display:block;font-size:.78rem;font-weight:600;color:var(--text-light);margin-bottom:5px}.fg textarea{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.88rem;font-family:Courier New,monospace;resize:vertical;line-height:1.6;transition:border .2s}.fg textarea:focus{outline:none;border-color:var(--primary);background:#faf8ff}.fg .hint{font-size:.72rem;color:var(--text-muted);margin-top:4px}.modal-foot{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.progress-log{padding:14px;background:#1a1a2e;border-radius:var(--radius-sm);margin-top:12px;font-family:Courier New,monospace;font-size:.78rem;color:#a78bfa;line-height:1.8;max-height:300px;overflow-y:auto;display:none}.progress-log .ok{color:#4ade80}.progress-log .err{color:#f87171}.progress-log .info{color:#93c5fd}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.detail-field{margin-bottom:0}.detail-field.full{grid-column:1 / -1}.dl{font-size:.7rem;color:var(--text-muted);margin-bottom:2px;text-transform:uppercase;letter-spacing:.5px;font-weight:600}.dv{font-size:.88rem;color:var(--text);line-height:1.6}.dv a{color:var(--primary);word-break:break-all}.dv-box{background:#faf8ff;padding:14px;border-radius:8px;border:1px solid var(--border-light);font-size:.82rem;white-space:pre-wrap;line-height:1.7;max-height:200px;overflow-y:auto}@media(max-width:768px){.stats{grid-template-columns:repeat(3,1fr);gap:8px}.stat{padding:12px 8px}.stat .num{font-size:1.4rem}.header-inner{flex-direction:column;gap:12px}.header-right{justify-content:center}.detail-grid{grid-template-columns:1fr}.content{padding:12px}.filters{flex-direction:column;gap:8px}.filters input{min-width:unset;width:100%}.filters select{width:100%}.tbl-wrap{border-radius:var(--radius-sm)}table{font-size:.75rem}th{padding:8px 6px;font-size:.68rem}td{padding:8px 6px}.url-cell{max-width:120px}td button{padding:5px 8px!important;font-size:.68rem!important}.modal{padding:20px;width:96%}}@media(max-width:480px){.stats{grid-template-columns:repeat(2,1fr)}.header h1{font-size:.95rem}.header-btn{padding:6px 10px;font-size:.72rem}table{font-size:.7rem}th,td{padding:6px 4px}.badge{font-size:.62rem;padding:2px 6px}.col-petition{display:none}}
