:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.4;color:#111827;background-color:#f3f4f6}*,*:before,*:after{box-sizing:border-box}body{margin:0}.app-root{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(to bottom,#e0f2fe,#f9fafb)}.app-header{background-color:#dbeafe;padding:1rem 2rem;border-bottom:1px solid #bfdbfe}.app-header-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.app-header h1{margin:0;font-size:1.3rem;font-weight:600;color:#1e3a8a}.app-title{display:flex;align-items:center;gap:.75rem}.app-logo{width:80px;height:80px;object-fit:contain}.app-main{flex:1;padding:1.5rem 2rem 2rem}.card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}@media (max-width: 1024px){.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.app-main{padding:1rem}.card-grid{grid-template-columns:1fr}}.card{background-color:#fff;border-radius:.75rem;box-shadow:0 10px 25px #0f172a14;display:flex;flex-direction:column;min-height:0;min-height:640px}.card-header{padding:.75rem 1rem;border-bottom:1px solid #e5e7eb}.card-header h2{margin:0;font-size:1rem;font-weight:600;color:#111827}.card-body{padding:.75rem 1rem;flex:1;overflow:auto}.card-footer{padding:.5rem 1rem .75rem;border-top:1px solid #e5e7eb}.card-footer-actions{display:flex;gap:.5rem;justify-content:flex-end;align-items:center}.card-footer-actions.three-buttons{justify-content:space-between}.node-list ul,.workload-list ul{list-style:none;margin:0;padding:0}.node-item,.workload-item{border-radius:.5rem;padding:.4rem .5rem;margin-bottom:.35rem;cursor:pointer;border:1px solid transparent;transition:background-color .1s ease,border-color .1s ease,box-shadow .1s ease}.node-item:hover,.workload-item:hover{background-color:#f3f4ff}.node-item.selected,.workload-item.selected{border-color:#4f46e5;background-color:#eef2ff;box-shadow:0 0 0 1px #4f46e5}.node-main-row,.workload-main-row{display:flex;align-items:center;justify-content:space-between}.node-name,.workload-name{font-weight:600;font-size:.95rem}.node-status{font-size:.75rem;padding:.1rem .45rem;border-radius:999px;text-transform:uppercase;letter-spacing:.03em;border:none;cursor:pointer;font:inherit}.node-status:disabled{cursor:not-allowed;opacity:.65}.status-online{background-color:#dcfce7;color:#166534}.status-offline{background-color:#fee2e2;color:#b91c1c}.status-unknown{background-color:#e5e7eb;color:#4b5563}.node-details{margin-top:.35rem;font-size:.8rem;color:#4b5563}.node-details .label{font-weight:600}.workload-details{margin-top:.35rem}.version-list{list-style:none;padding:0;margin:.35rem 0 0}.version-item{border-radius:.4rem;padding:.25rem .4rem;margin-bottom:.25rem;border:1px solid transparent;cursor:pointer;font-size:.8rem}.version-item:hover{background-color:#f9fafb}.version-item.selected{border-color:#4f46e5;background-color:#eef2ff}.version-main-row{display:flex;flex-direction:column;gap:.1rem}.version-tag{font-weight:600}.version-image{color:#6b7280;font-size:.75rem;word-break:break-all}.version-meta{margin-top:.1rem;color:#9ca3af;font-size:.7rem}.dna-body{font-size:.8rem}.dna-body pre{margin:0;min-height:clamp(24rem,52vh,34rem);max-height:clamp(28rem,68vh,44rem);overflow:auto!important;scrollbar-width:auto;scrollbar-color:#2563eb #1f2937}.dna-body pre::-webkit-scrollbar{width:12px;height:12px}.dna-body pre::-webkit-scrollbar-track{background:#1f2937;border-radius:8px}.dna-body pre::-webkit-scrollbar-thumb{background:#2563eb;border-radius:8px;border:2px solid #1f2937}.dna-body pre::-webkit-scrollbar-thumb:hover{background:#3b82f6}@media (max-width: 900px){.dna-body pre{min-height:18rem;max-height:44vh}}.muted{color:#6b7280;font-size:.85rem}.square-button{width:2.5rem;height:2.5rem;border-radius:.5rem;border:none;font-size:1.1rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;background-color:#e5e7eb;color:#111827;transition:background-color .1s ease,transform .05s ease,box-shadow .05s ease}.square-button.primary{background-color:#4f46e5;color:#f9fafb}.square-button.danger{background-color:#ef4444;color:#f9fafb}.square-button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.square-button:not(:disabled):hover{box-shadow:0 5px 12px #0f172a40;transform:translateY(-1px)}.square-button:not(:disabled):active{box-shadow:none;transform:translateY(0)}.icon-button{border:none;background:transparent;cursor:pointer;font-size:1rem;color:#6b7280}.icon-button:hover{color:#111827}.primary-button,.secondary-button{border-radius:.5rem;padding:.35rem .75rem;font-size:.85rem;border:none;cursor:pointer}.primary-button{background-color:#4f46e5;color:#fff}.primary-button:hover{background-color:#4338ca}.secondary-button{background-color:#e5e7eb;color:#111827}.secondary-button:hover{background-color:#d1d5db}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0f172a66;display:flex;align-items:center;justify-content:center;z-index:50}.modal-window{background-color:#fff;border-radius:.75rem;max-width:640px;width:100%;margin:0 1rem;box-shadow:0 20px 60px #0f172a80;display:flex;flex-direction:column;max-height:90vh}.log-modal{max-width:900px}.dna-modal{max-width:min(1120px,calc(100vw - 2rem))}.log-viewer{margin:0;font-size:.8rem;white-space:pre-wrap;word-break:break-word;color:#111827}.log-dropdown{position:relative}.log-menu{position:absolute;right:0;top:calc(100% + .5rem);min-width:220px;background:#fff;border-radius:.6rem;border:1px solid #e5e7eb;box-shadow:0 12px 30px #0f172a26;padding:.35rem;z-index:20;display:flex;flex-direction:column;gap:.2rem}.log-menu-item{padding:.35rem .5rem;border-radius:.45rem;border:none;background:transparent;text-align:left;cursor:pointer;font-size:.85rem;color:#111827}.log-menu-item:hover{background-color:#eef2ff}.log-menu-item.error{color:#b91c1c;cursor:default}.modal-header{padding:.75rem 1rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:1rem}.modal-body{padding:.75rem 1rem;overflow:auto}.modal-footer{padding:.75rem 1rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:.5rem}.form-field{display:flex;flex-direction:column;margin-bottom:.7rem}.form-field label{font-size:.8rem;margin-bottom:.2rem;color:#374151;font-weight:500}.form-field input,.form-field select,.form-field textarea{border-radius:.4rem;border:1px solid #d1d5db;padding:.35rem .45rem;font-size:.85rem;font-family:inherit}.form-field textarea{resize:vertical}.dna-editor-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(320px,.95fr);gap:1rem;align-items:stretch}.dna-editor-main{min-width:0}.dna-editor-sidebar{border-left:1px solid #e5e7eb;padding-left:.75rem;display:flex;flex-direction:column;gap:.5rem;min-width:0}.dna-sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.dna-sidebar-header h3{margin:0;font-size:.9rem;color:#111827}.dna-sidebar-list{display:flex;flex-direction:column;gap:.35rem;min-height:min(18rem,40vh);max-height:min(60vh,48rem);overflow:auto;padding-right:.25rem;scrollbar-width:auto;scrollbar-color:#2563eb #dbeafe}.dna-sidebar-list::-webkit-scrollbar{width:10px}.dna-sidebar-list::-webkit-scrollbar-track{background:#dbeafe;border-radius:8px}.dna-sidebar-list::-webkit-scrollbar-thumb{background:#2563eb;border-radius:8px;border:2px solid #dbeafe}.dna-sidebar-list::-webkit-scrollbar-thumb:hover{background:#1d4ed8}.dna-sidebar-item{border:1px solid #e5e7eb;background:#fff;border-radius:.5rem;padding:.4rem .55rem;text-align:left;cursor:pointer;font-size:.85rem;color:#111827;transition:background-color .1s ease,border-color .1s ease,box-shadow .1s ease}.dna-sidebar-item:hover{background-color:#f3f4ff;border-color:#c7d2fe}@media (max-width: 900px){.dna-editor-layout{grid-template-columns:1fr}.dna-editor-sidebar{border-left:none;border-top:1px solid #e5e7eb;padding-left:0;padding-top:.75rem}.dna-sidebar-list{min-height:12rem;max-height:32vh}}.banner{border-radius:.5rem;padding:.5rem .75rem;margin-bottom:.75rem;font-size:.85rem}.banner.info{background-color:#e0f2fe;border:1px solid #bfdbfe;color:#1d4ed8}.banner.error{background-color:#fee2e2;border:1px solid #fecaca;color:#b91c1c}
