@import"https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600;700&display=swap";:root{--bg: #f4f5f7;--bg-warm: #edeef1;--surface: #ffffff;--border: #e0e2e7;--border-light: #ecedf0;--text: #1a1d23;--text-secondary: #6b7080;--text-tertiary: #9ca0ad;--primary: #e85d3a;--primary-hover: #d14e2d;--primary-light: #fef5f2;--primary-lighter: #fff8f6;--accent: #e85d3a;--accent-light: #fef5f2;--success: #1a8a5c;--success-light: #edf7f2;--warning: #b87d1a;--warning-light: #fdf6e8;--danger: #d03e2e;--danger-light: #fdf0ee;--danger-hover: #b83526;--info: #3068a8;--info-light: #edf3fb;--radius: 6px;--radius-lg: 8px;--radius-xl: 10px;--shadow-sm: 0 1px 2px rgba(26, 29, 35, .04);--shadow: 0 1px 3px rgba(26, 29, 35, .04), 0 1px 2px rgba(26, 29, 35, .02);--shadow-lg: 0 4px 12px rgba(26, 29, 35, .08), 0 1px 3px rgba(26, 29, 35, .04);--shadow-focus: 0 0 0 2px rgba(232, 93, 58, .2);--font-body: "Instrument Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: "Instrument Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-body);background:var(--bg);color:var(--text);line-height:1.6;font-size:14px;-webkit-font-smoothing:antialiased}.layout-header{background:var(--text);padding:0 28px;height:52px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.layout-header h1{font-size:15px;font-weight:600;letter-spacing:-.01em}.layout-header h1 a{color:#fff;text-decoration:none;display:flex;align-items:center;gap:10px}.header-nav{display:flex;align-items:center;gap:8px}.header-nav a{color:#fff9;text-decoration:none;font-size:13px;font-weight:500;transition:color .15s}.header-nav a:hover,.header-nav a.active-link{color:#fff}.layout-main{max-width:1120px;margin:0 auto;padding:32px 28px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);transition:box-shadow .2s}.card:hover{box-shadow:var(--shadow)}.card-header{padding:16px 20px;border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;gap:12px}.card-header h2,.card-header h3{font-size:14px;font-weight:600;color:var(--text);letter-spacing:-.01em}.card-body{padding:20px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-family:var(--font-body);font-size:13px;font-weight:500;cursor:pointer;transition:all .12s ease;white-space:nowrap;line-height:1.3}.btn:hover{background:var(--bg-warm);border-color:#d0d3d9}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}.btn-sm{padding:5px 10px;font-size:12px}.btn-icon{padding:5px;line-height:1}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-warm);color:var(--text)}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:12px;font-weight:600;margin-bottom:4px;color:var(--text);letter-spacing:.01em}.form-hint{font-size:12px;color:var(--text-secondary);margin:2px 0 6px;line-height:1.5}.section-hint{font-size:13px;color:var(--text-secondary);margin-bottom:20px;line-height:1.6;padding:12px 16px;border-left:2px solid var(--border);background:transparent}.info-box{font-size:13px;color:var(--text-secondary);line-height:1.6;padding:10px 14px;border-radius:var(--radius);margin-bottom:16px;background:var(--bg);border:1px solid var(--border)}.info-box-icon{display:none}.info-box-info,.info-box-tip,.info-box-warn{background:var(--bg);border:1px solid var(--border)}.form-group input,.form-group textarea,.form-group select{width:100%;padding:7px 12px;border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-body);font-size:13px;color:var(--text);background:var(--surface);transition:border-color .12s,box-shadow .12s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-tertiary)}.form-group textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:10px 16px;text-align:left;border-bottom:1px solid var(--border-light);font-size:13px}th{font-weight:600;color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.06em}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;letter-spacing:.02em}.badge-success{background:var(--success-light);color:#146b47}.badge-warning{background:var(--warning-light);color:#7a5c1a}.badge-danger{background:var(--danger-light);color:#7a2a1a}.badge-neutral{background:var(--bg);color:var(--text-secondary)}.badge-info{background:var(--info-light);color:#1a3d6b}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:24px;overflow-x:auto}.tab{padding:10px 16px;font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--text-secondary);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:all .12s;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--primary);font-weight:600}.flex{display:flex}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-wrap{flex-wrap:wrap}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.text-secondary{color:var(--text-secondary)}.text-sm{font-size:12px}.text-center{text-align:center}.modal-backdrop{position:fixed;inset:0;background:#1a1d2366;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:200;animation:fade-in .12s ease-out}.modal{background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:modal-in .15s ease-out}.modal-header{padding:18px 20px;border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between}.modal-header h2{font-size:16px;font-weight:600}.modal-body{padding:20px}.modal-footer{padding:14px 20px;border-top:1px solid var(--border-light);display:flex;justify-content:flex-end;gap:8px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.color-field{display:flex;align-items:center;gap:8px}.color-swatch{width:32px;height:32px;border-radius:var(--radius);border:1px solid var(--border);cursor:pointer;flex-shrink:0}.color-swatch input[type=color]{opacity:0;width:100%;height:100%;cursor:pointer}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border-light);gap:16px}.toggle-row:last-child{border-bottom:none}.toggle-label{font-size:13px;font-weight:500;color:var(--text)}.toggle-desc{font-size:12px;color:var(--text-secondary);margin-top:2px;line-height:1.4}.toggle{position:relative;width:40px;height:22px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;inset:0;background:#c8cad0;border-radius:11px;cursor:pointer;transition:background .15s}.toggle-slider:before{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:#fff;top:3px;left:3px;transition:transform .15s;box-shadow:0 1px 2px #0000001a}.toggle input:checked+.toggle-slider{background:var(--primary)}.toggle input:checked+.toggle-slider:before{transform:translate(18px)}.search-input{padding:7px 12px;border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-body);font-size:13px;width:260px;color:var(--text);transition:border-color .12s,box-shadow .12s}.search-input:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.search-input::placeholder{color:var(--text-tertiary)}.upload-area{border:1px dashed var(--border);border-radius:var(--radius-lg);padding:20px;text-align:center;cursor:pointer;transition:all .12s}.upload-area:hover,.upload-area.drag-over{border-color:var(--primary);background:var(--primary-lighter)}.upload-area input[type=file]{display:none}.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.asset-card{border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;background:var(--surface);transition:box-shadow .15s}.asset-card:hover{box-shadow:var(--shadow)}.asset-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.asset-card h4{font-size:14px;font-weight:600;color:var(--text);line-height:1.3}.asset-preview{width:100%;max-height:100px;object-fit:contain;border-radius:var(--radius);background:var(--bg);margin-bottom:8px}.file-tree{font-size:13px}.file-tree-item{padding:6px 14px;display:flex;align-items:center;gap:8px;cursor:pointer;border-radius:var(--radius);transition:background .1s}.file-tree-item:hover{background:var(--bg)}.file-tree-item.active{background:var(--primary-light);color:var(--primary)}.code-editor{width:100%;min-height:400px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);font-family:SF Mono,Fira Code,Cascadia Code,JetBrains Mono,monospace;font-size:12px;line-height:1.6;resize:vertical;tab-size:2;background:#1a1d23;color:#d4d7de}.code-editor:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.env-toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg)}.env-toggle button{padding:5px 14px;font-family:var(--font-body);font-size:12px;font-weight:600;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .12s}.env-toggle button:hover{color:var(--text)}.env-toggle button.active{background:var(--text);color:#fff}.toast-container{position:fixed;bottom:24px;right:24px;z-index:300;display:flex;flex-direction:column;gap:8px}.toast{padding:12px 18px;border-radius:var(--radius);background:var(--text);color:#fff;font-size:13px;font-weight:500;box-shadow:var(--shadow-lg);animation:toast-in .2s ease-out;max-width:380px;border-left:3px solid rgba(255,255,255,.3)}.toast-error{border-left-color:var(--danger);background:var(--text)}.toast-success{border-left-color:var(--success);background:var(--text)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.color-preview-bar{display:flex;gap:2px;margin-bottom:16px;height:36px;border-radius:var(--radius);overflow:hidden}.color-preview-bar div{flex:1}.string-group{margin-bottom:12px}.string-group summary{cursor:pointer;font-weight:600;font-size:13px;padding:6px 0}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-center{display:flex;justify-content:center;padding:48px}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-tertiary);margin-bottom:20px}.breadcrumb a{color:var(--text-secondary);text-decoration:none;font-weight:500}.breadcrumb a:hover{color:var(--text)}.tenant-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}.tenant-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;cursor:pointer;transition:all .12s;display:flex;flex-direction:column;gap:10px}.tenant-card:hover{box-shadow:var(--shadow-lg);border-color:var(--primary)}.tenant-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.tenant-card-name{font-size:15px;font-weight:600;letter-spacing:-.01em}.tenant-card-id{font-size:12px;color:var(--text-secondary)}.tenant-card-meta{display:flex;gap:14px;font-size:12px;color:var(--text-secondary)}.tenant-card-meta span{display:flex;align-items:center;gap:4px}.empty-state{text-align:center;padding:48px 24px;color:var(--text-secondary)}.empty-state h3{font-size:16px;font-weight:600;color:var(--text);margin-bottom:6px}.empty-state p{font-size:13px;max-width:400px;margin:0 auto;line-height:1.5}.credential-guide{margin-bottom:16px;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.credential-guide-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;border:none;background:var(--bg);color:var(--text);font-size:13px;font-weight:600;cursor:pointer;text-align:left;transition:background .15s ease}.credential-guide-toggle:hover{background:var(--bg-warm)}.credential-guide-icon{font-size:11px;color:var(--text-tertiary);width:12px;flex-shrink:0}.credential-guide-body{padding:16px;border-top:1px solid var(--border);background:var(--surface)}.credential-guide-section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);margin:0 0 12px}.credential-guide-steps{display:flex;flex-direction:column;gap:12px}.credential-guide-step{display:flex;gap:12px;align-items:flex-start}.credential-guide-step-num{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;font-size:11px;font-weight:700;flex-shrink:0;margin-top:1px}.credential-guide-step>div{flex:1;min-width:0}.credential-guide-step strong{font-size:13px;font-weight:600;color:var(--text)}.credential-guide-step p{font-size:12px;color:var(--text-secondary);margin:2px 0 0;line-height:1.5}.credential-guide-step a{color:var(--primary);text-decoration:none}.credential-guide-step a:hover{text-decoration:underline}.credential-required-keys{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.credential-key-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;padding:3px 8px;border-radius:4px}.credential-key-badge-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.credential-key-badge-ok{background:var(--success-light);color:var(--success)}.credential-key-badge-ok .credential-key-badge-dot{background:var(--success)}.credential-key-badge-missing{background:var(--warning-light);color:var(--warning)}.credential-key-badge-missing .credential-key-badge-dot{background:var(--warning)}.credential-quick-add{padding:12px;margin-bottom:8px;border:1px dashed var(--border);border-radius:var(--radius);background:var(--bg)}.credential-quick-add-header{display:flex;align-items:center;gap:8px;margin-bottom:2px}.credential-quick-add-name{font-size:11px;font-weight:600;background:var(--surface);padding:1px 6px;border-radius:3px;border:1px solid var(--border)}.credential-quick-add-label{font-size:12px;font-weight:600;color:var(--text)}.credential-stored-section,.credential-custom-add{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-light)}.credential-custom-add summary{font-size:12px;font-weight:500;color:var(--text-secondary);cursor:pointer}.credential-custom-add summary:hover{color:var(--text)}.build-platform-toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.build-platform-toggle button{padding:6px 16px;font-size:13px;font-weight:500;border:none;background:var(--surface);color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.build-platform-toggle button:not(:last-child){border-right:1px solid var(--border)}.build-platform-toggle button.active{background:var(--text);color:var(--surface)}.build-platform-toggle button:hover:not(.active){background:var(--bg)}.build-table-wrapper{overflow-x:auto}.build-table{width:100%;border-collapse:collapse;font-size:13px}.build-table th{text-align:left;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);padding:8px 12px;border-bottom:1px solid var(--border)}.build-table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.build-table tbody tr:last-child td{border-bottom:none}.build-table tbody tr:hover{background:var(--bg)}.build-table code{font-size:12px;background:var(--bg);padding:2px 6px;border-radius:3px}.build-platform{display:inline-flex;align-items:center;font-size:12px;font-weight:600;padding:2px 8px;border-radius:var(--radius)}.build-platform-ios{background:#f0f0f0;color:#333}.build-platform-android{background:#e8f5e9;color:#2e7d32}.build-status-building{animation:build-pulse 1.5s ease-in-out infinite}@keyframes build-pulse{0%,to{opacity:1}50%{opacity:.6}}.setup-stepper{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden}.setup-stepper-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 20px;border:none;background:transparent;cursor:pointer;font-family:var(--font-body);gap:16px;transition:background .12s}.setup-stepper-header:hover{background:var(--bg)}.setup-stepper-header-left{display:flex;align-items:center;gap:8px;min-width:0}.setup-stepper-chevron{display:flex;align-items:center;color:var(--text-tertiary);transition:transform .15s;flex-shrink:0}.setup-stepper-title{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap}.setup-stepper-title-done{color:var(--success)}.setup-stepper-header-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.setup-stepper-bar{width:120px;height:4px;background:var(--bg);border-radius:2px;overflow:hidden}.setup-stepper-bar-fill{height:100%;border-radius:2px;transition:width .3s ease}.setup-stepper-body{border-top:1px solid var(--border-light);padding:4px 8px 8px}.setup-row-group{border-bottom:1px solid var(--border-light)}.setup-row-group:last-child{border-bottom:none}.setup-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius)}.setup-row-icon{flex-shrink:0;display:flex}.setup-row-label{font-size:13px;font-weight:500;color:var(--text);flex:1;min-width:0}.setup-row-done .setup-row-label{color:var(--text-secondary)}.setup-row-status{font-size:12px;white-space:nowrap}.setup-row-ok{color:var(--success);font-weight:500}.setup-row-pending{color:var(--text-tertiary);font-weight:500}.setup-row-action{padding:0;border:none;background:none;font-family:var(--font-body);font-size:12px;font-weight:500;color:var(--primary);cursor:pointer;white-space:nowrap;flex-shrink:0}.setup-row-action:hover{text-decoration:underline}.setup-row-expand{display:flex;align-items:center;color:var(--text-tertiary);transition:transform .15s;flex-shrink:0}.setup-row-detail{padding:0 12px 10px 38px}.setup-manual-list{display:flex;flex-direction:column;gap:6px}.setup-manual-item{display:flex;align-items:flex-start;gap:8px;cursor:pointer}.setup-manual-item input[type=checkbox]{margin-top:3px;flex-shrink:0;cursor:pointer;accent-color:var(--success)}.setup-manual-item-content{flex:1;min-width:0}.setup-manual-item-content span{font-size:12px;color:var(--text);font-weight:500}.setup-manual-label-done{color:var(--text-tertiary)!important;text-decoration:line-through}.setup-manual-code{display:inline-block;margin-left:6px;padding:1px 6px;background:var(--bg);border-radius:3px;font-size:11px;font-weight:600;color:var(--text-secondary);word-break:break-all}.setup-manual-link{display:inline-block;margin-left:8px;font-size:11px;color:var(--primary);text-decoration:none}.setup-manual-link:hover{text-decoration:underline}.setup-cred-hint{display:flex;align-items:center;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-light);font-size:12px;color:var(--text-secondary)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:36px 32px;width:100%;max-width:380px}.login-title{font-size:20px;font-weight:700;letter-spacing:-.02em;color:var(--text);margin-bottom:4px}.login-subtitle{font-size:13px;color:var(--text-secondary);margin-bottom:24px;line-height:1.5}.login-btn{width:100%;justify-content:center;margin-top:8px}.login-error{font-size:13px;color:var(--danger);margin-bottom:4px}.header-logout{background:none;border:none;color:#fff9;font-family:var(--font-body);font-size:13px;font-weight:500;cursor:pointer;transition:color .15s;padding:0}.header-logout:hover{color:#fff}@media(max-width:768px){.layout-main{padding:16px}.form-row,.tenant-grid{grid-template-columns:1fr}.search-input{width:100%}}
