body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box}
.App{background-color:#f5f5f5;min-height:100vh}.main-content{max-width:1200px;margin:0 auto;padding:20px}.container{background:#fff;border-radius:8px;margin-bottom:20px;padding:24px;box-shadow:0 2px 4px #0000001a}.container:has(.loading){height:calc(100vh - 152px)}.header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.title{color:#333;margin:0;font-size:24px;font-weight:600}.button{color:#fff;cursor:pointer;background-color:#007bff;border:none;border-radius:4px;padding:10px 20px;font-size:14px;font-weight:500;text-decoration:none;transition:background-color .2s;display:inline-block}.button:hover{background-color:#0056b3}.button-secondary{background-color:#6c757d}.button-secondary:hover{background-color:#545b62}.button-danger{background-color:#dc3545}.button-danger:hover{background-color:#c82333}.button-small{padding:6px 12px;font-size:12px}.table{border-collapse:collapse;width:100%;margin-top:16px}.table th,.table td{text-align:left;border-bottom:1px solid #dee2e6;padding:12px}.table th{color:#495057;background-color:#f8f9fa;font-weight:600}.table tbody tr:hover{background-color:#f8f9fa}.status-badge{border-radius:12px;padding:4px 8px;font-size:12px;font-weight:500}.status-admin{color:#0c5460;background-color:#d1ecf1}.status-user{color:#155724;background-color:#d4edda}.form-group{margin-bottom:20px}.form-label{color:#333;margin-bottom:6px;font-weight:500;display:block}.form-input{border:1px solid #ced4da;border-radius:4px;width:100%;padding:10px;font-size:14px;transition:border-color .2s}.form-input:focus{border-color:#007bff;outline:none;box-shadow:0 0 0 2px #007bff40}.form-checkbox{margin-right:8px}.error-message{color:#dc3545;margin-top:4px;font-size:14px}.success-message{color:#28a745;margin-top:4px;font-size:14px}.loading,.empty-state{text-align:center;color:#666;padding:40px}.empty-state h3{color:#333;margin:0 0 8px}.empty-state p{margin:0}.subtitle{color:#666;margin:8px 0 0;font-size:16px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:32px;display:grid}.stat-card{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:12px;align-items:center;padding:24px;transition:transform .2s;display:flex;box-shadow:0 4px 6px #0000001a}.stat-card:hover{transform:translateY(-2px)}.stat-card:nth-child(2){background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.stat-card:nth-child(3){background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%)}.stat-card:nth-child(4){background:linear-gradient(135deg,#43e97b 0%,#38f9d7 100%)}.stat-icon{margin-right:16px;font-size:32px}.stat-content h3{opacity:.9;margin:0 0 8px;font-size:14px;font-weight:500}.stat-number{margin:0;font-size:28px;font-weight:700}.stat-subtitle{opacity:.8;margin:4px 0 0;font-size:12px}.quick-actions{margin-bottom:32px}.quick-actions h2{color:#333;margin:0 0 20px;font-size:20px}.action-buttons{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.action-button{color:inherit;background:#fff;border:2px solid #e9ecef;border-radius:8px;align-items:center;padding:20px;text-decoration:none;transition:all .2s;display:flex;box-shadow:0 2px 4px #0000000d}.action-button:hover{border-color:#007bff;transform:translateY(-1px);box-shadow:0 4px 8px #007bff26}.action-icon{text-align:center;width:40px;margin-right:16px;font-size:24px}.action-content h3{color:#333;margin:0 0 4px;font-size:16px;font-weight:600}.action-content p{color:#666;margin:0;font-size:14px}.recent-section{margin-bottom:32px}.recent-section h2{color:#333;margin:0 0 20px;font-size:20px}.recent-users{gap:12px;display:grid}.recent-user-card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;justify-content:space-between;align-items:center;padding:16px;display:flex}.user-info h4{color:#333;margin:0 0 4px;font-size:16px}.user-id{color:#666;margin:0 0 8px;font-size:12px}.user-actions{flex-shrink:0}.version-mappings{margin-bottom:32px}.version-mappings h2{color:#333;margin:0 0 20px;font-size:20px}.mappings-list{gap:16px;display:grid}.mapping-item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px;transition:all .2s}.mapping-item:hover{border-color:#007bff;box-shadow:0 2px 8px #007bff1a}.mapping-item.clickable{cursor:pointer;position:relative}.mapping-item.clickable:hover{border-color:#007bff;transform:translateY(-1px);box-shadow:0 4px 12px #007bff33}.mapping-item.clickable:hover:after{opacity:1}.mapping-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.mapping-header h3{color:#333;margin:0;font-size:18px;font-weight:600}.path-number{color:#333;background:#007bff;border-radius:12px;padding:4px 12px;font-size:12px;font-weight:500}.mapping-details p{color:#666;word-break:break-all;margin:0;font-size:14px}.redirect-url{color:#007bff!important;margin-top:8px!important;font-weight:500!important}.no-mappings{text-align:center;color:#666;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:40px}.no-mappings p{margin:0;font-size:16px}.upload-section{grid-template-columns:1fr 300px;gap:32px;margin-top:24px;display:grid}.upload-area{flex:1}.dropzone{text-align:center;cursor:pointer;background-color:#fafafa;border:2px dashed #ced4da;border-radius:8px;justify-content:center;align-items:center;min-height:200px;padding:40px;transition:all .3s;display:flex}.dropzone:hover{background-color:#f8f9ff;border-color:#007bff}.dropzone.active{background-color:#e3f2fd;border-color:#007bff;transform:scale(1.02)}.dropzone.uploading{cursor:not-allowed;background-color:#f8fff8;border-color:#28a745}.dropzone-content p{color:#666;margin:0 0 16px;font-size:16px}.file-select-button{color:#fff;cursor:pointer;background-color:#007bff;border:none;border-radius:6px;padding:12px 24px;font-size:14px;font-weight:500;transition:background-color .2s}.file-select-button:hover:not(:disabled){background-color:#0056b3}.file-select-button:disabled{cursor:not-allowed;background-color:#6c757d}.upload-progress-container,.upload-progress{width:100%}.progress-bar{background-color:#e9ecef;border-radius:4px;width:100%;height:8px;margin-bottom:12px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#007bff,#28a745);border-radius:4px;height:100%;transition:width .3s}.upload-progress p{color:#666;margin:0;font-size:14px;font-weight:500}.error-message{color:#721c24;background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:6px;margin-top:16px;padding:12px}.error-message p{margin:0;font-size:14px}.success-message{color:#155724;background-color:#d4edda;border:1px solid #c3e6cb;border-radius:6px;margin-top:16px;padding:16px}.success-message p{margin:0 0 12px;font-size:16px;font-weight:500}.uploaded-file-info{background-color:#fff;border:1px solid #c3e6cb;border-radius:4px;margin-top:12px;padding:16px}.uploaded-file-info h4{color:#155724;margin:0 0 12px;font-size:14px;font-weight:600}.uploaded-file-info ul{margin:0;padding-left:20px}.uploaded-file-info li{color:#333;margin-bottom:4px;font-size:14px}.upload-info{background-color:#f8f9fa;border-radius:8px;height:fit-content;padding:24px}.upload-info h3{color:#333;margin:0 0 16px;font-size:18px;font-weight:600}.upload-info ul{margin:0 0 24px;padding-left:20px}.upload-info li{color:#666;margin-bottom:8px;font-size:14px;line-height:1.5}.upload-info li:last-child{margin-bottom:0}@media (max-width:768px){.upload-section{grid-template-columns:1fr;gap:24px}.dropzone{min-height:150px;padding:24px}.dropzone-content p{font-size:14px}}.modal-overlay{z-index:1000;background-color:#0006;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:8px;width:100%;max-width:520px;padding:24px;box-shadow:0 8px 32px #00000040}.modal-target-list{color:#495057;background-color:#f8f9fa;border-radius:6px;max-height:160px;margin:0 0 16px;padding:10px 14px 10px 30px;font-size:13px;overflow-y:auto}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.status-updating{color:#856404;background-color:#fff3cd}.status-success{color:#155724;background-color:#d4edda}.status-failed{color:#721c24;background-color:#f8d7da}.button-success{background-color:#28a745}.button-success:hover{background-color:#1e7e34}.button-outline-danger{color:#dc3545;background-color:#fff;border:1px solid #dc3545}.button-outline-danger:hover{background-color:#fdf1f2}.banner-success{color:#155724;background-color:#d4edda;border:1px solid #c3e6cb;border-radius:6px;margin-top:16px;padding:12px;font-size:14px}.operation-log{color:#6c757d;margin:8px 0 0;font-size:13px}.operation-log-alert{color:#dc3545;margin:24px 0}.panel-toolbar{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.segmented{--segmented-padding:4px;padding:var(--segmented-padding);background:#f5f5f5;border-radius:6px;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;position:relative}.segmented-thumb{top:var(--segmented-padding);bottom:var(--segmented-padding);left:var(--segmented-padding);background:#fff;border-radius:4px;transition:transform .2s;position:absolute;box-shadow:0 2px 4px #0000001a}.segmented-option{z-index:1;color:#495057;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;min-width:112px;padding:6px 14px;font-size:14px;font-weight:700;position:relative}.chart-panel{width:100%;max-width:800px;margin:0 auto 16px}.summary{margin-bottom:24px}.summary-grid{gap:16px;margin:8px 0 0;display:flex}.summary-item{background-color:#f8f9fa;border-radius:6px;flex:1 1 0;padding:12px 16px}.summary-item dt{color:#6c757d;font-size:13px}.summary-item dd{color:#333;margin:4px 0 0;font-size:22px;font-weight:600}.chart-panel-header{justify-content:space-between;align-items:center;display:flex}.chart-panel-title{color:#333;margin:0;font-size:18px;font-weight:700}.chart-panel-title-range{font-size:14px;font-weight:400}.section-title{color:#333;margin:0;font-size:16px;font-weight:700}.chart-area{height:320px}.recharts-surface:focus:not(:focus-visible),.recharts-surface [class^=recharts-zIndex-layer]:focus:not(:focus-visible){outline:none}.breakdown-header{justify-content:space-between;align-items:center;margin-top:34px;display:flex}.copy-button{--control-height:34px;height:var(--control-height);color:#495057;cursor:pointer;white-space:nowrap;background:#e9ecef;border:1px solid #ced4da;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;transition:background-color .2s;display:inline-flex}.copy-button:hover{background:#dee2e6}.copy-button.is-copied,.copy-button.is-copied:hover{color:#007bff;cursor:default;background:#dee2e6}.table.table-compact{margin-top:8px;font-size:13px}.table.table-compact th,.table.table-compact td{padding:4px 8px}.breakdown{align-items:flex-start;margin-top:8px;display:flex}.breakdown .table{margin-top:0}.breakdown .table th,.breakdown .table td{box-sizing:border-box;vertical-align:middle;text-align:center;border:1px solid #dee2e6;height:32px;line-height:20px}.table-scroll .table th:first-child,.table-scroll .table td:first-child{border-left:none}.breakdown .table tbody tr:hover{background-color:#0000}.breakdown-labels{flex:none;width:100px}.breakdown-labels th{text-align:left;white-space:nowrap;background-color:#f8f9fa}.table-scroll{flex:auto;min-width:0;overflow-x:auto}.table.table-horizontal{width:auto;min-width:100%}.table.table-horizontal th,.table.table-horizontal td{white-space:nowrap;text-align:right}.table .is-pending{color:#aaa}.invoke-image-settings{grid-template-columns:200px 1fr;row-gap:10px;margin:16px 0 0;font-size:14px;display:grid}.invoke-image-settings dt{color:#6c757d}.invoke-image-settings dd{margin:0}.invoke-image-note{color:#6c757d;margin-left:8px;font-size:12px}.invoke-image-sha{font-family:Menlo,Consolas,monospace;font-size:13px}.invoke-image-ref{color:#495057;word-break:break-all;background-color:#f8f9fa;border-radius:4px;padding:3px 6px;font-family:Menlo,Consolas,monospace;font-size:12.5px}.invoke-image-unknown{color:#adb5bd;font-size:13px}.notice-warning{color:#856404;background-color:#fff3cd;border:1px solid #ffeeba;border-radius:6px;margin-top:16px;padding:12px;font-size:14px}
