body{margin:0;padding:0;overflow:hidden;font-family:Arial,sans-serif}#app-container{width:100%;height:100vh;position:relative}canvas{display:block;margin:0 auto}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.6;color:#333;background-color:#f5f5f5;display:flex;flex-direction:column}#app-container{display:flex;flex-direction:column;height:100vh;overflow:hidden}.admin-header{background-color:#2c3e50;color:white;padding:1rem 1.5rem;box-shadow:0 2px 4px rgba(0,0,0,0.1)}.admin-header h1{font-size:1.5rem;font-weight:600}.admin-tabs{background-color:white;border-bottom:2px solid #e0e0e0;display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.admin-tabs::-webkit-scrollbar{display:none}.admin-tab{padding:1rem 1.5rem;cursor:pointer;border:0;background:0;font-size:.95rem;color:#666;border-bottom:3px solid transparent;white-space:nowrap;transition:all .2s;flex-shrink:0}.admin-tab:hover{background-color:#f8f9fa;color:#2c3e50}.admin-tab.active{color:#3498db;border-bottom-color:#3498db;font-weight:600}.admin-content{padding:1.5rem;max-width:1400px;margin:0 auto;overflow-y:auto;min-height:0;flex:1}.admin-content-empty{text-align:center;padding:3rem 1rem;color:#999}.admin-list{background-color:white;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.1);overflow:hidden}.admin-list-item{padding:1rem 1.5rem;border-bottom:1px solid #e0e0e0;cursor:pointer;transition:background-color .2s}.admin-list-item:hover{background-color:#f8f9fa}.admin-list-item:last-child{border-bottom:0}.admin-list-item-title{font-weight:600;font-size:1rem;color:#2c3e50;margin-bottom:.25rem}.admin-list-item-meta{font-size:.85rem;color:#999}.admin-detail{background-color:white;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.1);padding:1.5rem}.admin-detail-header{display:flex;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #e0e0e0}.admin-back-button{background:0;border:1px solid #ddd;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;color:#666;margin-right:1rem;transition:all .2s}.admin-back-button:hover{background-color:#f8f9fa;border-color:#bbb;color:#333}.admin-detail-title{font-size:1.5rem;font-weight:600;color:#2c3e50;flex:1}.admin-detail-section{margin-bottom:2rem}.admin-detail-section-title{font-size:1.1rem;font-weight:600;color:#2c3e50;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid #e0e0e0}.admin-detail-field{margin-bottom:1rem}.admin-detail-field-label{font-weight:600;color:#666;font-size:.9rem;margin-bottom:.25rem;display:block}.admin-detail-field-value{color:#333;word-break:break-word}.admin-json-viewer{background-color:#f8f9fa;border:1px solid #e0e0e0;border-radius:4px;padding:1rem;font-family:'Courier New',monospace;font-size:.85rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.admin-log-viewer{background-color:white;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.1);overflow:hidden}.admin-log-filters{padding:1rem 1.5rem;background-color:#f8f9fa;border-bottom:1px solid #e0e0e0;display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.admin-log-filter{flex:1;min-width:150px}.admin-log-filter label{display:block;font-size:.85rem;color:#666;margin-bottom:.25rem;font-weight:600}.admin-log-filter input,.admin-log-filter select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.admin-log-list{max-height:600px;overflow-y:auto}.admin-log-entry{padding:.75rem 1.5rem;border-bottom:1px solid #e0e0e0;font-family:'Courier New',monospace;font-size:.85rem}.admin-log-entry.error{background-color:#fee;color:#c33}.admin-log-entry.process{background-color:#eff;color:#366}.admin-log-pagination{padding:1rem 1.5rem;background-color:#f8f9fa;border-top:1px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center}.admin-log-pagination-button{background:0;border:1px solid #ddd;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;color:#666;transition:all .2s}.admin-log-pagination-button:hover:not(:disabled){background-color:#f8f9fa;border-color:#bbb;color:#333}.admin-log-pagination-button:disabled{opacity:.5;cursor:not-allowed}.admin-guide-viewer{background-color:white;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.1);overflow:hidden}.admin-guide-nav{padding:1rem 1.5rem;background-color:#f8f9fa;border-bottom:1px solid #e0e0e0}.admin-guide-nav-list{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem}.admin-guide-nav-item{padding:.5rem 1rem;background-color:white;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.9rem;color:#666;transition:all .2s}.admin-guide-nav-item:hover{background-color:#f8f9fa;border-color:#bbb}.admin-guide-nav-item.active{background-color:#3498db;border-color:#3498db;color:white}.admin-guide-content{padding:2rem;line-height:1.8}.admin-guide-content h1,.admin-guide-content h2,.admin-guide-content h3{margin-top:2rem;margin-bottom:1rem;color:#2c3e50}.admin-guide-content h1{font-size:2rem;border-bottom:2px solid #e0e0e0;padding-bottom:.5rem}.admin-guide-content h2{font-size:1.5rem}.admin-guide-content h3{font-size:1.25rem}.admin-guide-content code{background-color:#f8f9fa;padding:.2rem .4rem;border-radius:3px;font-family:'Courier New',monospace;font-size:.9em;color:#c33}.admin-guide-content pre{background-color:#f8f9fa;border:1px solid #e0e0e0;border-radius:4px;padding:1rem;overflow-x:auto;margin:1rem 0}.admin-guide-content pre code{background:0;padding:0;color:#333}.admin-guide-content ul,.admin-guide-content ol{margin:1rem 0;padding-left:2rem}.admin-guide-content li{margin:.5rem 0}.admin-guide-content blockquote{border-left:4px solid #3498db;padding-left:1rem;margin:1rem 0;color:#666;font-style:italic}.admin-guide-content table{width:100%;border-collapse:collapse;margin:1rem 0}.admin-guide-content table th,.admin-guide-content table td{padding:.75rem;border:1px solid #e0e0e0;text-align:left}.admin-guide-content table th{background-color:#f8f9fa;font-weight:600;color:#2c3e50}.admin-badge{display:inline-block;padding:.25rem .5rem;border-radius:3px;font-size:.75rem;font-weight:600;text-transform:uppercase}.admin-badge.success{background-color:#d4edda;color:#155724}.admin-badge.warning{background-color:#fff3cd;color:#856404}.admin-badge.error{background-color:#f8d7da;color:#721c24}.admin-badge.info{background-color:#d1ecf1;color:#0c5460}.admin-loading{text-align:center;padding:3rem 1rem;color:#999}.admin-empty{text-align:center;padding:3rem 1rem;color:#999}.admin-empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}@media(max-width:768px){.admin-header{padding:.75rem 1rem}.admin-header h1{font-size:1.25rem}.admin-tab{padding:.75rem 1rem;font-size:.9rem}.admin-content{padding:1rem}.admin-detail{padding:1rem}.admin-detail-header{flex-direction:column;align-items:flex-start;gap:1rem}.admin-back-button{margin-right:0;width:100%}.admin-log-filters{flex-direction:column;align-items:stretch}.admin-log-filter{min-width:100%}.admin-log-pagination{flex-direction:column;gap:.5rem;align-items:stretch}.admin-log-pagination-button{width:100%}.admin-guide-content{padding:1rem}.admin-makefile-guide{padding:1rem}.admin-makefile-search{margin-top:1rem}}.admin-makefile-guide{padding:1.5rem}.admin-makefile-header{margin-bottom:2rem}.admin-makefile-header h2{margin:0 0 1rem 0;color:#2c3e50;font-size:1.5rem}.admin-makefile-search{margin-top:1rem}.admin-input{width:100%;max-width:400px;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.admin-input:focus{outline:0;border-color:#3498db;box-shadow:0 0 0 2px rgba(52,152,219,0.2)}.admin-makefile-content{display:flex;flex-direction:column;gap:2rem}.admin-makefile-category{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem}.admin-makefile-category h3{margin:0 0 1rem 0;color:#2c3e50;font-size:1.25rem;padding-bottom:.75rem;border-bottom:2px solid #3498db}.admin-makefile-commands{display:flex;flex-direction:column;gap:1rem}.admin-makefile-command{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:1rem;transition:all .2s}.admin-makefile-command:hover{border-color:#3498db;box-shadow:0 2px 4px rgba(0,0,0,0.1)}.admin-makefile-command-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.admin-makefile-command-name{font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:1rem;font-weight:600;color:#2c3e50}.admin-makefile-copy-btn{background:#3498db;color:white;border:0;border-radius:4px;padding:.5rem .75rem;cursor:pointer;font-size:.875rem;transition:background .2s}.admin-makefile-copy-btn:hover{background:#2980b9}.admin-makefile-command-desc{color:#666;margin:.5rem 0;line-height:1.5}.admin-makefile-command-usage{margin:.75rem 0;padding:.75rem;background:#fff;border-left:3px solid #3498db;border-radius:4px}.admin-makefile-command-usage strong{display:block;margin-bottom:.5rem;color:#2c3e50}.admin-makefile-command-usage code{display:block;font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:.9rem;color:#e74c3c;background:#f8f9fa;padding:.5rem;border-radius:3px}.admin-makefile-command-examples{margin:.75rem 0;padding:.75rem;background:#fff;border-left:3px solid #27ae60;border-radius:4px}.admin-makefile-command-examples strong{display:block;margin-bottom:.5rem;color:#2c3e50}.admin-makefile-command-examples ul{margin:.5rem 0 0 0;padding-left:1.5rem}.admin-makefile-command-examples li{margin:.5rem 0}.admin-makefile-command-examples code{font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:.9rem;color:#27ae60;background:#f8f9fa;padding:.25rem .5rem;border-radius:3px}@media(max-width:768px){.admin-makefile-guide{padding:1rem}.admin-makefile-search{margin-top:1rem}.admin-makefile-command-header{flex-direction:column;align-items:flex-start;gap:.5rem}.admin-makefile-copy-btn{width:100%}}.admin-guide-nav-group{font-weight:600;color:#2c3e50;padding:.75rem 1rem;margin-top:1rem;border-bottom:1px solid #e0e0e0;font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.admin-guide-nav-group:first-child{margin-top:0}.admin-git-repo-info{padding:2rem}.admin-git-repo-info h2{margin-bottom:1.5rem;color:#2c3e50}.admin-git-repo-url{margin-bottom:2rem}.admin-git-repo-url p{margin-bottom:.5rem;color:#666}.admin-code-block{position:relative;background-color:#f8f9fa;border:1px solid #e0e0e0;border-radius:4px;padding:1rem;margin:.5rem 0;font-family:'Courier New',monospace;font-size:.9rem}.admin-code-block code{display:block;color:#333;word-break:break-all}.admin-copy-btn{position:absolute;top:.5rem;right:.5rem;padding:.25rem .75rem;background-color:#3498db;color:white;border:0;border-radius:4px;cursor:pointer;font-size:.85rem;transition:background-color .2s}.admin-copy-btn:hover{background-color:#2980b9}.admin-git-repo-commands{margin-top:2rem}.admin-git-repo-commands h3{margin-bottom:1rem;color:#2c3e50}.admin-git-repo-commands ul{list-style:none;padding:0}.admin-git-repo-commands li{margin-bottom:1.5rem;padding:1rem;background-color:#f8f9fa;border-left:3px solid #3498db;border-radius:4px}.admin-git-repo-commands li strong{display:block;margin-bottom:.5rem;color:#2c3e50}.admin-git-repo-commands li code{display:block;background-color:#fff;padding:.5rem;border-radius:4px;font-family:'Courier New',monospace;font-size:.9rem;color:#333;margin-top:.5rem}.admin-developer-tools{background-color:white;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.1);overflow:hidden}.admin-developer-tools-header{padding:1.5rem;border-bottom:1px solid #e0e0e0}.admin-developer-tools-header h2{margin:0 0 .5rem 0;color:#2c3e50;font-size:1.5rem}.admin-developer-tools-intro{color:#666;margin:0;line-height:1.6}.admin-developer-tools-nav{padding:1rem 1.5rem;background-color:#f8f9fa;border-bottom:1px solid #e0e0e0}.admin-developer-tools-nav-list{list-style:none;margin:0;padding:0;display:flex;overflow-x:auto}.admin-developer-tools-nav-item{padding:.5rem 1rem;background-color:white;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.9rem;color:#666;white-space:nowrap;transition:all .2s;margin-right:.5rem}.admin-developer-tools-nav-item:hover{background-color:#f8f9fa;border-color:#bbb}.admin-developer-tools-nav-item.active{background-color:#3498db;border-color:#3498db;color:white}.admin-developer-tools-content{padding:0}@media(max-width:768px){.admin-developer-tools-header{padding:1rem}.admin-developer-tools-header h2{font-size:1.25rem}.admin-developer-tools-nav-item{padding:.75rem 1rem;font-size:.9rem}}.admin-projects-viewer{background-color:white;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.1);overflow:hidden}.admin-projects-nav{padding:1rem 1.5rem;background-color:#f8f9fa;border-bottom:1px solid #e0e0e0}.admin-projects-nav-list{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0}.admin-projects-nav-item{padding:.5rem 1rem;background-color:white;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.9rem;color:#666;transition:all .2s}.admin-projects-nav-item:hover{background-color:#f8f9fa;border-color:#bbb}.admin-projects-nav-item.active{background-color:#3498db;border-color:#3498db;color:white}.admin-projects-content{padding:2rem;line-height:1.8;max-height:calc(100vh - 300px);overflow-y:auto}.admin-project-details{display:flex;flex-direction:column;gap:2rem}.admin-project-section{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:1.5rem}.admin-project-section h3{margin:0 0 1rem 0;color:#2c3e50;font-size:1.25rem;padding-bottom:.75rem;border-bottom:2px solid #3498db}.admin-project-section h4{margin:1rem 0 .75rem 0;color:#2c3e50;font-size:1rem}.admin-project-status{display:flex;align-items:center;gap:.5rem}.admin-platform-list{display:flex;flex-wrap:wrap;gap:1rem}.admin-platform-item{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:#fff;border:1px solid #e0e0e0;border-radius:6px}.admin-platform-icon{font-size:1.5rem}.admin-platform-name{font-weight:600;color:#2c3e50}.admin-links-list{display:flex;flex-direction:column;gap:.75rem}.admin-link-item{background:#fff;border:1px solid #e0e0e0;border-radius:6px;overflow:hidden}.admin-link{display:flex;align-items:center;gap:.75rem;padding:1rem;text-decoration:none;color:#2c3e50;transition:all .2s}.admin-link:hover{background:#f8f9fa;color:#3498db}.admin-link-icon{font-size:1.25rem;flex-shrink:0}.admin-link-label{font-weight:600;min-width:100px}.admin-link-url{flex:1;color:#666;font-size:.9rem;font-family:'Monaco','Menlo','Ubuntu Mono',monospace;word-break:break-all}.admin-developer-info{display:flex;flex-direction:column;gap:1.5rem}.admin-dev-info-item{padding:.75rem;background:#fff;border-left:3px solid #3498db;border-radius:4px;color:#333}.admin-dev-commands{display:flex;flex-direction:column;gap:1rem}.admin-dev-command-item{background:#fff;border:1px solid #e0e0e0;border-radius:6px;padding:1rem}.admin-dev-command-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.admin-dev-command-code{padding:.75rem;background:#f8f9fa;border-radius:4px;margin:.5rem 0}.admin-dev-command-code code{font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:.9rem;color:#e74c3c;background:transparent}.admin-dev-command-desc{color:#666;font-size:.9rem;line-height:1.5}.admin-dev-copy-btn{background:#3498db;color:white;border:0;border-radius:4px;padding:.5rem .75rem;cursor:pointer;font-size:.875rem;transition:background .2s}.admin-dev-copy-btn:hover{background:#2980b9}.admin-config-details{display:flex;flex-direction:column;gap:1rem}.admin-config-field{padding:.75rem;background:#fff;border-left:3px solid #27ae60;border-radius:4px}.admin-config-label{font-weight:600;color:#2c3e50;margin-right:.5rem}.admin-config-value{color:#333}.admin-config-raw{margin-top:1rem;padding-top:1rem;border-top:1px solid #e0e0e0}@media(max-width:768px){.admin-projects-nav{padding:1rem}.admin-projects-content{padding:1rem}.admin-project-section{padding:1rem}.admin-link{flex-direction:column;align-items:flex-start;gap:.5rem}.admin-link-label{min-width:auto}.admin-dev-command-header{flex-direction:column;align-items:flex-start;gap:.5rem}.admin-dev-copy-btn{width:100%}}.admin-deploy-guide{padding:1.5rem}.admin-deploy-header{margin-bottom:2rem}.admin-deploy-header h2{margin:0 0 .5rem 0;color:#2c3e50;font-size:1.5rem}.admin-deploy-intro{color:#666;margin:0;line-height:1.6}.admin-deploy-sections{display:flex;flex-direction:column;gap:2rem}.admin-deploy-section{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem}.admin-deploy-section h3{margin:0 0 1rem 0;color:#2c3e50;font-size:1.25rem;padding-bottom:.75rem;border-bottom:2px solid #3498db}.admin-deploy-checklist{display:flex;flex-direction:column;gap:.75rem}.admin-deploy-checklist-item{display:flex;align-items:flex-start;gap:.75rem}.admin-checkbox{margin-top:.25rem;cursor:pointer}.admin-deploy-checklist-item label{cursor:pointer;line-height:1.5;color:#333}.admin-deploy-steps{display:flex;flex-direction:column;gap:1.5rem}.admin-deploy-step{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:1rem}.admin-deploy-step-header{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem}.admin-deploy-step-number{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:#3498db;color:white;border-radius:50%;font-weight:600;font-size:1rem;flex-shrink:0}.admin-deploy-step-header h4{margin:0;color:#2c3e50;font-size:1.1rem}.admin-deploy-step-desc{color:#666;margin:.5rem 0;line-height:1.5}.admin-deploy-step-command{display:flex;align-items:center;gap:.5rem;margin:.75rem 0;padding:.75rem;background:#fff;border-left:3px solid #3498db;border-radius:4px}.admin-deploy-step-command code{flex:1;font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:.9rem;color:#e74c3c;background:transparent;padding:0}.admin-deploy-step-details{color:#666;font-size:.9rem;margin:.5rem 0 0 0;line-height:1.5}.admin-deploy-command-box{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:4px;margin:.5rem 0}.admin-deploy-command-box code{flex:1;font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:.9rem;color:#2c3e50;background:transparent;padding:0;word-break:break-all}.admin-deploy-copy-btn{background:#3498db;color:white;border:0;border-radius:4px;padding:.5rem .75rem;cursor:pointer;font-size:.875rem;transition:background .2s;flex-shrink:0}.admin-deploy-copy-btn:hover{background:#2980b9}.admin-deploy-command-info,.admin-deploy-branch-info,.admin-deploy-pull-info{line-height:1.6}.admin-deploy-params,.admin-deploy-examples,.admin-deploy-security{margin:.5rem 0;padding-left:1.5rem}.admin-deploy-params li,.admin-deploy-examples li,.admin-deploy-security li{margin:.5rem 0;line-height:1.5}.admin-deploy-note{background:#fff3cd;border-left:3px solid #ffc107;padding:.75rem;margin:1rem 0;border-radius:4px;color:#856404;font-size:.9rem}.admin-deploy-method{margin:1rem 0;padding:1rem;background:#f8f9fa;border-radius:6px}.admin-deploy-method h4{margin:0 0 .75rem 0;color:#2c3e50;font-size:1rem}.admin-deploy-errors{display:flex;flex-direction:column;gap:1rem}.admin-deploy-error-item{background:#fff;border:1px solid #f8d7da;border-left:3px solid #dc3545;border-radius:4px;padding:1rem}.admin-deploy-error-item h4{margin:0 0 .5rem 0;color:#721c24;font-size:1rem}.admin-deploy-error-item p{margin:.5rem 0;line-height:1.5;color:#333}.admin-deploy-projects{display:flex;flex-direction:column;gap:1rem}.admin-deploy-project-item{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:1rem}.admin-deploy-project-item h4{margin:0 0 .75rem 0;color:#2c3e50;font-size:1.1rem}.admin-deploy-project-item p{margin:.5rem 0;line-height:1.5;color:#666}.admin-deploy-project-commands{display:flex;flex-direction:column;gap:.5rem;margin-top:.75rem}@media(max-width:768px){.admin-deploy-guide{padding:1rem}.admin-deploy-section{padding:1rem}.admin-deploy-step-header{flex-direction:column;align-items:flex-start;gap:.5rem}.admin-deploy-step-command{flex-direction:column;align-items:stretch}.admin-deploy-command-box{flex-direction:column;align-items:stretch}.admin-deploy-copy-btn{width:100%}.admin-deploy-project-commands{gap:.75rem}}.admin-guide-content h1{font-size:1.5rem}.admin-guide-content h2{font-size:1.25rem}.admin-guide-content h3{font-size:1.1rem}}