zoraxy-waf/web/style.css
cclohmar 16761613bb fix: redirect preservation, health check, Content-Length, UI simplification
- health.go: treat any HTTP response as reachable (only connection errors fail)
- main.go: CheckRedirect in handleReturn to preserve 302 + Set-Cookie
- middleware.go: Content-Length for POST/PUT/PATCH bodies, CheckRedirect
  in forwardToWAF and forwardToReturn
- web/: replace stats panel with 3-state WAF indicator (DISABLED/ENABLED/FAILED)
- README: update defaults, architecture, health check docs
- .agents.md: update verified status for Wallarm integration
2026-08-08 14:53:12 +00:00

153 lines
2.9 KiB
CSS

*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-size: 14px;
color: #1a1a2e;
background: #f5f6fa;
padding: 20px;
max-width: 720px;
margin: 0 auto;
}
h1 { font-size: 20px; margin-bottom: 4px; }
header p { color: #636e72; margin-bottom: 20px; }
h2 { font-size: 16px; margin: 20px 0 12px; border-bottom: 1px solid #eee; padding-bottom: 6px; }
section {
background: #fff;
border-radius: 6px;
padding: 16px 20px;
margin-bottom: 16px;
box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
.field {
margin-bottom: 12px;
}
.field label {
display: block;
font-size: 12px;
font-weight: 600;
color: #636e72;
margin-bottom: 4px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.field input[type="text"],
.field input[type="number"] {
width: 100%;
padding: 8px 10px;
border: 1px solid #dcdde1;
border-radius: 4px;
font-size: 14px;
}
.field input:focus {
outline: none;
border-color: #0984e3;
box-shadow: 0 0 0 2px rgba(9,132,227,0.15);
}
.field small {
display: block;
font-size: 11px;
color: #b2bec3;
margin-top: 3px;
}
/* Toggle switch */
.toggle {
position: relative;
display: inline-block;
width: 44px;
height: 24px;
vertical-align: middle;
margin-right: 10px;
}
.toggle input { display: none; }
.slider {
position: absolute;
cursor: pointer;
top: 0; left: 0; right: 0; bottom: 0;
background: #dcdde1;
border-radius: 24px;
transition: 0.2s;
}
.slider::before {
content: "";
position: absolute;
height: 18px; width: 18px;
left: 3px; bottom: 3px;
background: #fff;
border-radius: 50%;
transition: 0.2s;
}
.toggle input:checked + .slider { background: #00b894; }
.toggle input:checked + .slider::before { transform: translateX(20px); }
#enabled-label {
display: inline-block;
vertical-align: middle;
font-weight: 600;
font-size: 14px;
}
.btn {
padding: 8px 18px;
border: none;
border-radius: 4px;
font-size: 13px;
cursor: pointer;
font-weight: 600;
}
.btn-primary { background: #0984e3; color: #fff; }
.btn-primary:hover { background: #0773c5; }
#save-status {
margin-left: 10px;
font-size: 13px;
color: #00b894;
}
/* WAF Status Indicator */
.status-panel h2 {
margin-top: 0;
}
.status-indicator {
display: flex;
align-items: center;
gap: 10px;
padding: 14px 18px;
border-radius: 6px;
font-size: 15px;
font-weight: 600;
}
.status-dot {
width: 14px;
height: 14px;
border-radius: 50%;
display: inline-block;
flex-shrink: 0;
}
.status-dot.ok { background: #00b894; box-shadow: 0 0 6px rgba(0,184,148,0.4); }
.status-dot.warn { background: #e17055; box-shadow: 0 0 6px rgba(225,112,85,0.4); }
.status-dot.off { background: #b2bec3; }
[data-state="ENABLED"] { background: #e6faf3; color: #00b894; }
[data-state="FAILED"] { background: #fde8e2; color: #e17055; }
[data-state="DISABLED"] { background: #f0f0f5; color: #636e72; }