diff --git a/assets/css/base.css b/assets/css/base.css index 7cc0bd4..53919ae 100644 --- a/assets/css/base.css +++ b/assets/css/base.css @@ -2458,7 +2458,7 @@ select option:checked { } .lt-progress-bar { height: 100%; - background: var(--accent-orange); + background: linear-gradient(90deg, var(--accent-orange), #ff8c2b); box-shadow: var(--glow-orange); transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1); position: relative; @@ -2471,9 +2471,9 @@ select option:checked { height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4)); } -.lt-progress--cyan .lt-progress-bar { background: var(--accent-cyan); box-shadow: var(--glow-cyan); } -.lt-progress--green .lt-progress-bar { background: var(--accent-green); box-shadow: var(--glow-green); } -.lt-progress--red .lt-progress-bar { background: var(--accent-red); box-shadow: var(--glow-red); } +.lt-progress--cyan .lt-progress-bar { background: linear-gradient(90deg, var(--accent-cyan), #33dfff); box-shadow: var(--glow-cyan); } +.lt-progress--green .lt-progress-bar { background: linear-gradient(90deg, var(--accent-green), #33ffaa); box-shadow: var(--glow-green); } +.lt-progress--red .lt-progress-bar { background: linear-gradient(90deg, var(--accent-red), #ff4466); box-shadow: var(--glow-red); } .lt-progress--striped .lt-progress-bar { background-image: repeating-linear-gradient( 45deg, transparent, transparent 4px, @@ -4479,7 +4479,83 @@ body.lt-is-offline .lt-main { margin-top: 2rem; transition: margin-top 0.25s eas /* ---------------------------------------------------------------- - 61. TIMELINE / ACTIVITY FEED + 61. SLA BANNER + ---------------------------------------------------------------- + lt-sla-p1 — pulsing red banner for critical SLA breach + lt-sla-p2 — static amber banner for high-priority SLA warning + ---------------------------------------------------------------- */ +.lt-sla-p1, +.lt-sla-p2 { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.6rem 1rem; + border: 1px solid; + font-family: var(--font-mono); +} +.lt-sla-p1 { + border-color: rgba(255,45,85,0.4); + background: rgba(255,45,85,0.08); + animation: lt-sla-pulse 2s infinite; +} +.lt-sla-p2 { + border-color: rgba(255,179,0,0.4); + background: rgba(255,179,0,0.08); +} +@keyframes lt-sla-pulse { + 0%, 100% { box-shadow: 0 0 8px rgba(255,45,85,0.20); } + 50% { box-shadow: 0 0 20px rgba(255,45,85,0.45); } +} +.lt-sla-icon { font-size: 1rem; flex-shrink: 0; } +.lt-sla-info { flex: 1; min-width: 0; } +.lt-sla-title { + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.12em; + margin-bottom: 4px; +} +.lt-sla-p1 .lt-sla-title { color: var(--accent-red); text-shadow: var(--glow-red); } +.lt-sla-p2 .lt-sla-title { color: var(--accent-amber); text-shadow: var(--glow-amber); } +.lt-sla-bar { + height: 5px; + background: rgba(255,255,255,0.08); + position: relative; + overflow: hidden; +} +.lt-sla-fill { + height: 100%; + width: 0%; + transition: width 0.4s ease; +} +.lt-sla-p1 .lt-sla-fill { background: linear-gradient(90deg, var(--accent-red), var(--accent-orange)); box-shadow: 0 0 8px rgba(255,45,85,0.6); } +.lt-sla-p2 .lt-sla-fill { background: linear-gradient(90deg, var(--accent-amber), #ffd740); box-shadow: 0 0 8px rgba(255,179,0,0.6); } +.lt-sla-meta { + font-size: 0.60rem; + color: var(--text-dim); + text-transform: uppercase; + letter-spacing: 0.10em; + flex-shrink: 0; +} +.lt-sla-dismiss { + font-size: 0.70rem; + color: var(--text-dim); + cursor: pointer; + background: none; + border: none; + flex-shrink: 0; + padding: 0 0.25rem; + font-family: var(--font-mono); + transition: color 0.15s ease; +} +.lt-sla-dismiss:hover { color: var(--text-secondary); } +.lt-sla-dismiss:focus-visible { outline: 1px dashed var(--accent-cyan); outline-offset: 2px; } +html[data-theme="light"] .lt-sla-p1 { background: rgba(180,30,50,0.06); border-color: rgba(180,30,50,0.35); } +html[data-theme="light"] .lt-sla-p2 { background: rgba(138,90,0,0.06); border-color: rgba(138,90,0,0.35); } + + +/* ---------------------------------------------------------------- + 62. TIMELINE / ACTIVITY FEED ---------------------------------------------------------------- */ .lt-timeline { display: flex;