Spaces:
Sleeping
Sleeping
| *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } | |
| body { | |
| font-family: system-ui, -apple-system, sans-serif; | |
| background: #f0f2f5; | |
| color: #1a1a2e; | |
| padding: 24px 16px; | |
| min-height: 100vh; | |
| } | |
| .container { | |
| max-width: 880px; | |
| margin: 0 auto; | |
| } | |
| h1 { | |
| font-size: 1.55rem; | |
| font-weight: 700; | |
| margin-bottom: 24px; | |
| color: #1a1a2e; | |
| } | |
| h2 { | |
| font-size: 1.05rem; | |
| font-weight: 600; | |
| color: #333; | |
| } | |
| /* ---- Panel ---- */ | |
| .panel { | |
| background: #fff; | |
| border-radius: 10px; | |
| padding: 24px; | |
| margin-bottom: 20px; | |
| box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08); | |
| } | |
| /* ---- Field groups ---- */ | |
| .field-group { | |
| margin-bottom: 20px; | |
| } | |
| .field-label { | |
| display: block; | |
| font-weight: 600; | |
| font-size: 0.875rem; | |
| margin-bottom: 10px; | |
| color: #333; | |
| } | |
| /* ---- Radio cards ---- */ | |
| .radio-group { | |
| display: flex; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| } | |
| .radio-option { | |
| cursor: pointer; | |
| flex: 1; | |
| min-width: 200px; | |
| } | |
| .radio-option input[type="radio"] { display: none; } | |
| .radio-box { | |
| display: block; | |
| border: 2px solid #e0e0e0; | |
| border-radius: 8px; | |
| padding: 14px 16px; | |
| transition: border-color 0.15s, background 0.15s; | |
| height: 100%; | |
| } | |
| .radio-option:hover .radio-box { border-color: #a0b4d6; } | |
| .radio-option input[type="radio"]:checked + .radio-box { | |
| border-color: #4a6fa5; | |
| background: #eef3fb; | |
| } | |
| .radio-box strong { | |
| display: block; | |
| font-size: 0.9rem; | |
| margin-bottom: 4px; | |
| } | |
| .radio-box small { | |
| color: #666; | |
| font-size: 0.78rem; | |
| word-break: break-all; | |
| } | |
| /* ---- Buttons ---- */ | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 9px 20px; | |
| border: none; | |
| border-radius: 6px; | |
| font-size: 0.875rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: opacity 0.15s; | |
| white-space: nowrap; | |
| } | |
| .btn:hover { opacity: 0.84; } | |
| .btn-primary { background: #4a6fa5; color: #fff; } | |
| .btn-secondary { background: #e8ecf0; color: #333; } | |
| /* ---- Error / hint ---- */ | |
| .error-msg { | |
| color: #c0392b; | |
| font-size: 0.85rem; | |
| margin-top: 10px; | |
| } | |
| .hint { | |
| color: #888; | |
| font-size: 0.82rem; | |
| margin-top: 8px; | |
| } | |
| /* ---- Building panel ---- */ | |
| .building-panel { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| padding: 48px 24px; | |
| gap: 16px; | |
| text-align: center; | |
| } | |
| .building-panel .building-msg { | |
| font-weight: 600; | |
| font-size: 1rem; | |
| } | |
| .spinner { | |
| width: 48px; | |
| height: 48px; | |
| border: 5px solid #dde3ec; | |
| border-top-color: #4a6fa5; | |
| border-radius: 50%; | |
| animation: spin 0.75s linear infinite; | |
| flex-shrink: 0; | |
| } | |
| @keyframes spin { to { transform: rotate(360deg); } } | |
| /* ---- Query panel ---- */ | |
| .query-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 20px; | |
| } | |
| .search-row { | |
| display: flex; | |
| gap: 10px; | |
| } | |
| .search-input { | |
| flex: 1; | |
| padding: 9px 14px; | |
| border: 1px solid #ccc; | |
| border-radius: 6px; | |
| font-size: 0.9rem; | |
| outline: none; | |
| transition: border-color 0.15s; | |
| } | |
| .search-input:focus { border-color: #4a6fa5; } | |
| /* ---- Advanced SQL ---- */ | |
| .sql-details { | |
| margin: 16px 0 0; | |
| border: 1px solid #e0e0e0; | |
| border-radius: 8px; | |
| padding: 12px 14px; | |
| } | |
| .sql-details summary { | |
| cursor: pointer; | |
| font-weight: 600; | |
| font-size: 0.84rem; | |
| color: #555; | |
| user-select: none; | |
| } | |
| .sql-details textarea { | |
| display: block; | |
| width: 100%; | |
| margin-top: 10px; | |
| padding: 10px; | |
| font-family: 'Courier New', Courier, monospace; | |
| font-size: 0.83rem; | |
| border: 1px solid #ddd; | |
| border-radius: 6px; | |
| resize: vertical; | |
| outline: none; | |
| transition: border-color 0.15s; | |
| } | |
| .sql-details textarea:focus { border-color: #4a6fa5; } | |
| .sql-details .btn { margin-top: 8px; } | |
| /* ---- Results ---- */ | |
| #results-area { margin-top: 20px; } | |
| .table-wrap { | |
| overflow-x: auto; | |
| border-radius: 6px; | |
| border: 1px solid #e0e0e0; | |
| } | |
| .results-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.85rem; | |
| } | |
| .results-table th, | |
| .results-table td { | |
| padding: 8px 12px; | |
| border-bottom: 1px solid #e8e8e8; | |
| text-align: left; | |
| vertical-align: top; | |
| max-width: 420px; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| .results-table th { | |
| background: #f5f7fa; | |
| font-weight: 600; | |
| font-size: 0.8rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.03em; | |
| border-bottom: 2px solid #dde3ec; | |
| } | |
| .results-table tr:last-child td { border-bottom: none; } | |
| .results-table tbody tr:hover td { background: #f9fbff; } | |
| .row-count { margin-top: 8px; } | |
| /* ---- File input ---- */ | |
| input[type="file"] { font-size: 0.86rem; } | |