*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%}body{font-family:system-ui,sans-serif;color:#213547;background-color:#fff}html,body,#root{height:100%;margin:0}.layout{display:flex;flex-direction:column;height:100vh;font-family:system-ui,sans-serif}.top-bar{flex-shrink:0;padding:1rem 2rem;border-bottom:1px solid #e2e8f0;background:#fff;width:100%;box-sizing:border-box}.top-bar-inner{max-width:1200px;margin:0 auto}.user-info{color:#555;margin:0 0 1rem}nav.actions{display:flex;gap:.5rem;margin:0}.content{flex:1;overflow-y:auto;padding:1.5rem 2rem;width:100%;max-width:1200px;margin:0 auto;box-sizing:border-box}button{padding:.5rem 1rem;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;background:#3182ce;color:#fff}button:hover:not(:disabled){background:#2b6cb0}button:disabled{background:#cbd5e0;color:#a0aec0;cursor:not-allowed}button.secondary{background:#718096}button.secondary:hover{background:#4a5568}button.link-btn{background:none;color:#3182ce;padding:0;font-size:.85rem;text-decoration:underline}button.link-btn:hover{background:none;color:#2b6cb0}.panel{border:1px solid #e2e8f0;border-radius:8px;padding:1.5rem;width:100%;box-sizing:border-box}.panel h2{margin-top:0}.panel h3{margin-top:1rem;margin-bottom:.25rem;font-size:.95rem;color:#4a5568}textarea{width:100%;font-family:monospace;font-size:.85rem;padding:.75rem;border:1px solid #ccc;border-radius:6px;resize:vertical;box-sizing:border-box;margin-bottom:.5rem}pre{background:#f7fafc;padding:1rem;border-radius:6px;overflow-x:auto;font-size:.8rem;text-align:left;white-space:pre-wrap;word-break:break-word}pre.error-pre{background:#fff5f5;border:1px solid #fed7d7}.rest-url-bar{display:flex;gap:.5rem;margin-bottom:1rem}.rest-url-bar .method-select{flex-shrink:0;font-family:system-ui,sans-serif;font-size:.85rem;padding:.5rem .75rem;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer}.rest-url-bar input{flex:1;font-family:monospace;font-size:.85rem;padding:.5rem .75rem;border:1px solid #ccc;border-radius:6px;box-sizing:border-box}.request-body{margin:1rem 0}.request-body h3{margin-top:0}.custom-headers{margin:1rem 0}.custom-headers h3{margin-top:0}.header-row{display:flex;gap:.5rem;margin-bottom:.5rem}.header-row input{flex:1;font-family:monospace;font-size:.85rem;padding:.4rem .6rem;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}.header-row input:first-child{flex:.4}.header-row button{padding:.4rem .7rem;font-size:1rem;line-height:1}.format-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem}.format-controls{display:flex;align-items:center;gap:.75rem}.format-divider{width:1px;height:1.2em;background:#cbd5e0}.format-tabs{display:flex;gap:.25rem}.format-tab{padding:.2rem .6rem;font-size:.75rem;background:#edf2f7;color:#4a5568;border-radius:4px}.format-tab:hover:not(:disabled){background:#e2e8f0}.format-tab.active{background:#3182ce;color:#fff}.info-link{margin-top:1rem;text-align:right}.info-panel p{margin:.5rem 0;line-height:1.6}.info-panel code{background:#edf2f7;padding:.15rem .4rem;border-radius:4px;font-size:.85rem}.info-panel ul{margin:.5rem 0;padding-left:1.5rem;columns:2}.info-panel ul li{margin:.2rem 0}.info-section{margin-bottom:1.5rem}.info-section h3{margin-bottom:.5rem}details{margin-top:1rem}details summary{cursor:pointer;font-weight:600}.keycloak-status{color:#d69e2e;font-weight:600;margin:.5rem 0;min-height:1.5em}.keycloak-status.error{color:#e53e3e}.keycloak-status:not(:empty){animation:pulse 1s ease-in-out infinite}.content.disabled{opacity:.4;pointer-events:none}.token-expiry-line{margin:0 0 .75rem}.token-expiry{color:#38a169;font-size:.85rem}.token-expiry.expiry-warn{color:#e53e3e;font-weight:600}button.link-btn:disabled{background:none;color:#a0aec0;text-decoration:underline}.kc-section{margin-bottom:1.5rem}.kc-section:last-child{margin-bottom:0}.kc-roles p{margin:.5rem 0}.role-badge{display:inline-block;background:#e2e8f0;color:#4a5568;padding:.15rem .5rem;border-radius:4px;font-size:.8rem;margin-right:.3rem;margin-bottom:.2rem}.build-footer{flex-shrink:0;text-align:center;padding:.5rem 1rem;font-size:.7rem;color:#a0aec0;border-top:1px solid #e2e8f0}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}
