/* ── BANNER ──────────────────────────────────────────────── */
.banner {
    background:var(--bg-surface); border:1px solid var(--border);
    margin-bottom:1.5rem;
}
.progress-bar-bg   { height:3px; background:var(--border); margin-bottom:1rem; }
.progress-bar-fill { height:100%; background:var(--accent); }
.banner-sep        { height:1px; background:var(--border); }
.banner-section-label { margin-bottom:.5rem; }

.banner-round-flag {
    display:flex; align-items:center; gap:.6rem;
    font-weight:700; margin-bottom:.2rem;
}
.banner-completed-tag { font-size:.78rem; color:var(--pos); margin-top:.5rem; }
.banner-partial-tag   { color:var(--warn); }

.banner-left {
    position: relative;
    padding-left: 1.1rem;
}
.banner-left::before {
    content: '';
    position: absolute;
    inset: -1.5px;
    background: conic-gradient(
        from var(--angle, 0deg),
        transparent 0deg,
        var(--accent) 60deg,
        transparent 120deg
    );
    z-index: 0;
    animation: spinBorder 4s linear infinite;
}
.banner-left::after {
    content: '';
    position: absolute;
    inset: 1.5px;
    background: var(--bg-surface);
    z-index: 1;
}
.banner-left > * {
    position: relative;
    z-index: 2;
}

.banner-next-label  { font-size:.82rem; text-transform:uppercase; color:var(--text-muted); margin-bottom:.35rem; }
.banner-next-label  { font-size:.82rem; text-transform:uppercase; color:var(--text-muted); margin-bottom:.35rem; }
.banner-sess-label {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .8rem;
    color: var(--text-muted);
    margin-bottom: .5rem;
}
.banner-sess-label.completed { opacity: 0.45; }
.sess-row-inner {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    position: relative;
}
.sess-row-inner.completed::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    height: 1px;
    background: var(--text-muted);
    pointer-events: none;
}
.sess-name      { color:var(--text-main); font-weight:700; }
.sess-sep       { color:var(--text-muted); opacity:.4; }
.sess-meta-icon { font-size:.72rem; }
.sess-date      { color:var(--text-main); }
.sess-time      { color:var(--text-main); }
.sess-live-tag  {
    color:var(--neg); font-weight:700; font-size:.72rem;
    letter-spacing:.05em;
    animation:livepulse 1.4s ease-in-out infinite;
}
.sess-cancelled-msg { color:var(--text-muted); font-size:.8rem; }

/* ── TERMINAL STATUS BLOCK ───────────────────────────────── */
.term-block {
    width: 100%;
    display:inline-flex;
    flex-direction:column;
    gap:.15rem;
    font-family:'JetBrains Mono', monospace;
    font-size:.78rem;
    line-height:1.7;
    background:var(--bg-base);
    border:1px solid var(--border);
    padding:.45rem .75rem;
}

.term-line { display:flex; align-items:baseline; gap:.45rem; white-space:nowrap; }
.term-prompt { color:var(--pos); flex-shrink:0; font-weight:700; }
.term-cmd    { color:var(--text-muted); flex-shrink:0; }
.term-arrow  { color:var(--text-muted); flex-shrink:0; }
.term-val    { font-weight:700; letter-spacing:.04em; color:var(--text-main); }

/* output colors — mirror boot.js semantics */
.term-pos   { color:var(--pos)  !important; }
.term-neg   { color:var(--neg)  !important; }
.term-warn  { color:var(--warn) !important; }

/* countdown */
.cd-wrap   { display:flex; align-items:flex-start; gap:.3rem; transform:translateX(-0.4rem); }
.cd-block  { text-align:center; min-width:46px; padding:.65rem .35rem 0 .4rem; }
.cd-digits { font-size:1.75rem; font-weight:700; line-height:1; }
.cd-unit   { font-size:.68rem; color:var(--text-muted); text-transform:uppercase; margin-top:2px; }
.cd-sep    { font-size:1.4rem; font-weight:700; color:var(--border); padding-top:3px; }

@keyframes livepulse { 0%,100%{opacity:1} 50%{opacity:.4} }
.live-badge {
    display:inline-flex; align-items:center; gap:.4rem;
    font-size:1.3rem; font-weight:700; color:var(--neg);
    text-transform:uppercase;
    padding-left:.5rem;
    animation:livepulse 1.4s ease-in-out infinite;
}
.live-dot {
    width:8px; height:8px; background:var(--neg);
    border-radius:50%!important; flex-shrink:0;
}