:root{--primary-color: #2c5aa0;--primary-hover: #1e4080;--success-color: #28a745;--danger-color: #dc3545;--border-color: #e0e0e0;--bg-color: #f5f5f5;--card-bg: #ffffff;--text-primary: #333;--text-secondary: #666;--text-muted: #999}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg-color);color:var(--text-primary);line-height:1.6}.container{max-width:1400px;margin:0 auto;padding:2rem}.header{margin-bottom:2rem}.header h1{color:var(--primary-color);margin-bottom:1rem}.header-intro{max-width:58rem;margin-bottom:1.25rem;color:var(--text-secondary)}.stats-bar{display:flex;gap:2rem;flex-wrap:wrap;padding:1rem;background:var(--card-bg);border-radius:8px;box-shadow:0 2px 4px #0000001a}.stats-aggregate{justify-content:flex-start;gap:3rem;margin-bottom:1rem}.stat-item{display:flex;flex-direction:column;gap:.25rem}.stat-item.stat-large{min-width:120px}.stat-label{font-size:.85rem;color:var(--text-secondary);font-weight:500}.stat-value{font-size:1.5rem;font-weight:700;color:var(--primary-color)}.stat-value.highlight{color:var(--success-color)}.stats-groups{flex-direction:column;gap:.75rem;padding:1rem 1.25rem}.stats-groups-header{font-size:.9rem;font-weight:600;color:var(--text-secondary);padding-bottom:.5rem;border-bottom:1px solid var(--border-color)}.stats-groups-grid{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem}.scraper-control-panel{margin-top:1rem;padding:1rem 1.25rem;background:var(--card-bg);border-radius:8px;box-shadow:0 2px 4px #0000001a;border:1px solid #d7e3f7}.scraper-control-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.scraper-control-title{font-size:1rem;font-weight:700;color:var(--primary-color)}.scraper-control-subtitle{margin-top:.15rem;font-size:.85rem;color:var(--text-secondary)}.scraper-status-pill{padding:.25rem .7rem;border-radius:999px;font-size:.8rem;font-weight:700;white-space:nowrap}.scraper-status-pill.running{background:#e6f6ea;color:#1f7a35}.scraper-status-pill.stopped{background:#f3f4f6;color:#6b7280}.scraper-status-pill.pending{background:#eef4ff;color:#4b6385}.scraper-control-body{margin-top:.9rem;display:flex;flex-direction:column;gap:.9rem}.scraper-select-row{display:flex;flex-wrap:wrap;gap:.75rem}.scraper-select-field{display:flex;flex-direction:column;gap:.45rem;min-width:220px;color:var(--text-primary);font-size:.9rem;font-weight:600}.scraper-select-field select{padding:.6rem;border:1px solid var(--border-color);border-radius:6px;font-size:.95rem;background:#fff}.scraper-toggle{display:flex;align-items:center;gap:.55rem;font-size:.9rem;color:var(--text-primary);cursor:pointer}.scraper-toggle input[type=checkbox]{width:18px;height:18px}.scraper-control-actions{display:flex;gap:.75rem;flex-wrap:wrap}.stop-button{background:var(--danger-color)}.stop-button:hover{background:#b4232f}.secondary-action-button{background:#fff;color:var(--primary-color);border:1px solid #c8d8f0}.secondary-action-button:hover{background:#eef4ff}.delete-posts-button{color:var(--danger-color);border-color:#f2b8bd}.delete-posts-button:hover{background:#fff1f2}.stop-button:disabled,.refresh-button:disabled{opacity:.55;cursor:not-allowed}.scraper-control-meta{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;font-size:.85rem;color:var(--text-secondary)}.scraper-control-note{font-size:.85rem;color:var(--text-secondary);line-height:1.5}.scraper-control-error{background:#ffebee;color:var(--danger-color);padding:.75rem;border-radius:6px;border-left:4px solid var(--danger-color);font-size:.9rem}.process-log-panel{border-top:1px solid #e5edf8;padding-top:.9rem;display:flex;flex-direction:column;gap:.9rem}.process-log-header{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;color:var(--text-secondary);font-size:.85rem}.process-log-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.9rem}.process-log-block{background:#f8fbff;border:1px solid #dce7f7;border-radius:8px;padding:.8rem;display:flex;flex-direction:column;gap:.55rem;min-height:240px}.process-log-title{font-size:.85rem;font-weight:700;color:var(--primary-color)}.process-log-pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:Consolas,Courier New,monospace;font-size:.78rem;line-height:1.45;color:#233041;max-height:340px;overflow:auto}.stat-item-group{display:flex;align-items:center;gap:.5rem}.stat-group-name{font-size:.8rem;color:var(--text-primary);max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-group-count{font-size:.85rem;font-weight:700;color:var(--primary-color);background:#e8f0fe;padding:.15rem .5rem;border-radius:10px;min-width:24px;text-align:center}.filters{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;padding:1.5rem;background:var(--card-bg);border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.filter-group{display:flex;flex-direction:column;gap:.5rem;flex:1;min-width:200px}.filter-group.compact{flex:0 0 140px;min-width:140px}.filter-group label{font-size:.9rem;font-weight:600;color:var(--text-secondary)}.filter-group input[type=text],.filter-group input[type=number],.filter-group select{padding:.6rem;border:1px solid var(--border-color);border-radius:6px;font-size:1rem;transition:border-color .2s}.filter-group input[type=text]:focus,.filter-group input[type=number]:focus,.filter-group select:focus{outline:none;border-color:var(--primary-color)}.filter-group.checkbox{flex-direction:row;align-items:center;gap:.5rem}.filter-group.checkbox label{display:flex;align-items:center;gap:.5rem;cursor:pointer;margin:0}.filter-group.checkbox input[type=checkbox]{width:18px;height:18px;cursor:pointer}.refresh-button{padding:.6rem 1.2rem;background:var(--primary-color);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.95rem;font-weight:600;transition:background .2s}.refresh-button:hover{background:var(--primary-hover)}.posts-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1.5rem;margin-bottom:2rem}@media (max-width: 1800px){.posts-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width: 1400px){.posts-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 1000px){.posts-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.posts-grid{grid-template-columns:1fr}.scraper-control-header{flex-direction:column}.process-log-grid{grid-template-columns:1fr}}.post-card{background:var(--card-bg);border-radius:8px;padding:1rem;box-shadow:0 2px 8px #0000001a;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;flex-direction:column;gap:.5rem;height:100%;min-height:250px;text-decoration:none;color:inherit;border:2px solid transparent}.post-card.clickable{cursor:pointer}.post-card.clickable:visited{color:inherit}.post-card.clickable:hover{transform:translateY(-4px);box-shadow:0 8px 20px #0000002e;border-color:var(--primary-color)}.post-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.view-details-hint{text-align:center;padding:.5rem;color:var(--primary-color);font-size:.85rem;font-weight:600;opacity:0;transition:opacity .2s;margin-top:auto}.post-card.clickable:hover .view-details-hint{opacity:1}.post-date{font-size:.8rem;font-weight:700;color:var(--primary-color);padding:.35rem .6rem;background:#f0f7ff;border-radius:6px;border-left:4px solid var(--primary-color)}.post-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.post-title{flex:1;margin:0;font-size:.95rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.post-title a{color:var(--primary-color);text-decoration:none;transition:color .2s}.post-title a:hover{color:var(--primary-hover);text-decoration:underline}.category-tag{margin-top:.5rem;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.category-badge{display:inline-flex;align-items:center;gap:.3rem;background:#e8f0fe;color:#1967d2;padding:.2rem .6rem;border-radius:12px;font-size:.7rem;font-weight:600;border:1px solid #d2e3fc}.category-badge.secondary{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb;font-size:.65rem;font-weight:500}.secondary-categories{display:inline-flex;flex-wrap:wrap;gap:.25rem}.location-tag{margin-top:.5rem}.location-badge{display:inline-flex;align-items:center;gap:.3rem;background:#fef7e0;color:#b8860b;padding:.2rem .6rem;border-radius:12px;font-size:.7rem;font-weight:600;border:1px solid #fce8a1}.notified-badge{background:var(--success-color);color:#fff;padding:.25rem .6rem;border-radius:12px;font-size:.75rem;font-weight:600;white-space:nowrap}.notified-badge.messaged{background:#2e7d32}.post-meta{display:flex;flex-direction:column;gap:.35rem;padding:.75rem;background:var(--bg-color);border-radius:6px;margin-top:auto;font-size:.75rem}.post-meta-item{display:flex;gap:.5rem;font-size:.85rem}.meta-label{color:var(--text-secondary);font-weight:600;min-width:90px}.meta-value{color:var(--text-primary);font-family:monospace}.group-link{color:var(--primary-color);text-decoration:none;transition:color .2s}.group-link:hover{color:var(--primary-hover);text-decoration:underline}.post-text{line-height:1.5;color:var(--text-primary);font-size:.8rem;padding:.5rem .75rem;border-left:3px solid var(--primary-color);background:#f9f9f9;border-radius:0 6px 6px 0;max-height:60px;overflow:hidden;text-overflow:ellipsis}.view-post-button{display:inline-block;padding:.6rem 1rem;background:var(--primary-color);color:#fff;text-decoration:none;border-radius:6px;font-size:.9rem;font-weight:600;transition:background .2s;text-align:center}.view-post-button:hover{background:var(--primary-hover)}.loading,.loading-more{text-align:center;padding:3rem;color:var(--text-secondary);font-size:1.1rem}.loading-more{padding:2rem}.error{background:#ffebee;color:var(--danger-color);padding:1rem;border-radius:6px;border-left:4px solid var(--danger-color);margin-bottom:2rem}.empty-state{text-align:center;padding:4rem 2rem}.empty-icon{font-size:4rem;margin-bottom:1rem}.empty-state h2{color:var(--text-secondary);margin-bottom:.5rem}.empty-state p{color:var(--text-muted)}.pagination-info{text-align:center;padding:2rem;color:var(--text-secondary)}.detail-container{max-width:900px;margin:0 auto;padding:24px;min-height:100vh;background:#f5f5f5}.back-button{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;background:#fff;border:1px solid #ddd;border-radius:8px;cursor:pointer;font-size:14px;color:#333;margin-bottom:24px;transition:all .2s ease}.back-button:hover{background:#f0f0f0;border-color:#ccc}.detail-card{background:#fff;border-radius:16px;box-shadow:0 4px 20px #00000014;overflow:hidden}.detail-header{padding:32px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.detail-badges{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.category-badge.large,.location-badge.large,.notified-badge.large{padding:8px 16px;border-radius:20px;font-size:14px;font-weight:600}.category-badge.large{background:#fff3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.category-badge.large.secondary{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);font-weight:500;font-size:13px}.location-badge.large{background:#ffffff26;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.notified-badge.large{background:#4caf504d}.notified-badge.large.messaged{background:#2e7d3266}.detail-title{font-size:28px;font-weight:700;margin:0 0 16px;line-height:1.3}.detail-timestamp{font-size:16px;opacity:.9}.detail-summary{margin-top:20px;padding:16px 18px;border-radius:12px;background:#ffffff29;border:1px solid rgba(255,255,255,.2);line-height:1.6}.detail-content{padding:32px;border-bottom:1px solid #eee}.detail-content h2{font-size:18px;color:#333;margin:0 0 16px;font-weight:600}.detail-text{font-size:16px;line-height:1.8;color:#444;white-space:pre-wrap;word-wrap:break-word;background:#f9f9f9;padding:24px;border-radius:12px;border-left:4px solid #667eea}.detail-meta{padding:32px;background:#fafafa}.detail-meta h2{font-size:18px;color:#333;margin:0 0 20px;font-weight:600}.meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px}.meta-item{display:flex;flex-direction:column;gap:6px}.meta-label{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#888;font-weight:600}.meta-value{font-size:14px;color:#333;word-break:break-all}.meta-link{font-size:14px;color:#667eea;text-decoration:none;transition:color .2s}.meta-link:hover{color:#764ba2;text-decoration:underline}.detail-auto-message{padding:32px;border-bottom:1px solid #eee;background:linear-gradient(135deg,#e8f5e9,#f1f8e9)}.detail-auto-message h2{font-size:18px;color:#2e7d32;margin:0 0 20px;font-weight:600}.auto-message-estimate{margin-bottom:20px}.estimate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}.estimate-item{display:flex;flex-direction:column;gap:4px;background:#ffffffb3;padding:12px 16px;border-radius:10px;border:1px solid rgba(46,125,50,.1)}.estimate-label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#666;font-weight:600}.estimate-value{font-size:14px;color:#333}.estimate-value.highlight{font-size:20px;font-weight:700;color:#2e7d32}.auto-message-content h3{font-size:14px;color:#555;margin:0 0 10px;font-weight:600}.auto-message-text{font-size:15px;line-height:1.7;color:#333;background:#fffc;padding:16px 20px;border-radius:10px;border-left:4px solid #4caf50;white-space:pre-wrap;word-wrap:break-word}.detail-manual-message{padding:32px;border-bottom:1px solid #eee;background:linear-gradient(135deg,#eef4ff,#f7fbff)}.detail-manual-message h2{font-size:18px;color:#1f4aa8;margin:0 0 12px;font-weight:600}.manual-message-intro{margin:0 0 16px;color:#4a5568;line-height:1.6}.manual-message-field{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;color:#334155;font-size:14px;font-weight:600}.manual-message-field select{max-width:240px;padding:10px 12px;border:1px solid #c7d2e5;border-radius:10px;font-size:14px;background:#fff}.manual-message-toggle{display:inline-flex;align-items:center;gap:10px;margin-bottom:18px;color:#334155;font-size:14px;cursor:pointer}.manual-message-toggle input[type=checkbox]{width:18px;height:18px}.manual-message-actions{padding:0;margin-bottom:20px;border-top:none}.manual-message-preview{display:flex;flex-direction:column;gap:18px}.manual-message-content{margin-top:4px}.manual-message-status,.manual-message-warning,.manual-message-error{margin-top:18px;padding:14px 16px;border-radius:10px;font-size:14px;line-height:1.6}.manual-message-status{background:#e8f5e9;border:1px solid #c8e6c9;color:#256029}.manual-message-warning{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}.manual-message-error{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}.manual-message-log-panel{margin-top:18px;border-top:1px solid #d9e7ff;padding-top:18px;display:flex;flex-direction:column;gap:16px}.manual-message-log-header{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#5b6472;font-size:13px}.manual-message-log-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.manual-message-log-block{background:#ffffffd1;border:1px solid #d7e3f7;border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-height:240px}.manual-message-log-title{font-size:13px;font-weight:700;color:#1f4aa8}.manual-message-log-pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.45;color:#243042;max-height:340px;overflow:auto}.detail-actions{padding:24px 32px;display:flex;gap:16px;flex-wrap:wrap;border-top:1px solid #eee}.primary-button,.secondary-button{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border-radius:10px;font-size:16px;font-weight:600;text-decoration:none;transition:all .2s ease;cursor:pointer}.primary-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none}.primary-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.secondary-button{background:#fff;color:#667eea;border:2px solid #667eea}.secondary-button:hover{background:#667eea;color:#fff}.error-state{text-align:center;padding:60px 24px;background:#fff;border-radius:16px;box-shadow:0 4px 20px #00000014}.error-state h2{font-size:24px;color:#333;margin:0 0 12px}.error-state p{color:#666;margin:0 0 24px}.loading{text-align:center;padding:60px 24px;background:#fff;border-radius:16px;box-shadow:0 4px 20px #00000014;color:#666;font-size:16px}@media (max-width: 600px){.detail-container{padding:16px}.detail-header,.detail-content,.detail-meta,.detail-actions{padding:20px}.detail-title{font-size:22px}.meta-grid{grid-template-columns:1fr}.detail-actions{flex-direction:column}.primary-button,.secondary-button{width:100%;justify-content:center}.manual-message-log-grid{grid-template-columns:1fr}}body{margin:0;padding:0}
