:root { color-scheme: dark; --bg:#0d1117; --panel:#131920; --line:#28313b; --muted:#8b98a5; --text:#e6edf3; --green:#35c46a; --cyan:#2cb7c9; --red:#f05b63; --amber:#e5aa42; }
* { box-sizing:border-box; scrollbar-width:thin; scrollbar-color:#2b3540 transparent; }
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#2b3540;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#3a4753}
::-webkit-scrollbar-track{background:transparent}
button,select,input{transition:border-color .15s,background .15s,color .15s,box-shadow .15s,transform .12s}
select:focus-visible,input:focus-visible,button:focus-visible{outline:1px solid var(--green);outline-offset:1px}
body { margin:0; height:100vh; overflow:hidden; background:var(--bg); color:var(--text); font:14px/1.45 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
button,input,select { font:inherit; }
.dot { width:8px; height:8px; border-radius:50%; background:var(--red); flex:none; }.dot.ok{background:var(--green);box-shadow:0 0 0 3px #35c46a22}.dot.waiting{background:var(--amber)}
.workspace { display:grid; grid-template-columns:250px minmax(0,1fr); height:100vh; }
.sidebar { overflow:auto; border-right:1px solid var(--line); background:#10161c; padding:16px 10px; }
.sidebar-heading { display:flex; justify-content:space-between; padding:0 9px 10px; color:var(--muted); font-size:12px; text-transform:uppercase; }
.docker-status { display:flex; align-items:center; gap:8px; min-width:0; margin:0 9px 12px; color:var(--muted); font-size:11px; }.docker-status span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.count { background:#26303a; padding:1px 7px; border-radius:9px; }
.container-filters { display:grid; gap:7px; padding:0 2px 10px; }
.container-search { height:34px; display:flex; align-items:center; gap:7px; padding:0 9px; border:1px solid #34404b; background:#0b1015; border-radius:5px; }
.container-search:focus-within { border-color:var(--green); }
.container-search svg { width:15px; height:15px; flex:none; fill:none; stroke:var(--muted); stroke-width:2; stroke-linecap:round; }
.container-search input { width:100%; min-width:0; color:var(--text); background:transparent; border:0; outline:0; font-size:12px; }
.container-filters select { width:100%; height:34px; font-size:12px; }
.container-item { width:100%; height:50px; border:0; border-left:2px solid transparent; background:transparent; color:var(--text); display:flex; align-items:center; padding:7px 10px; text-align:left; cursor:pointer; border-radius:4px; transition:background .12s,border-left-color .15s; }
.container-item:hover { background:#18212a; }.container-item.active { background:#1b272a; border-left-color:var(--green); }
.container-info { display:flex; min-width:0; flex-direction:column; }.container-info strong,.container-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.container-info strong{font-size:13px}.container-info small{color:var(--muted);font-size:11px}
.container-item.running .container-info strong { color:var(--green); }.container-item.inactive .container-info strong { color:#8b98a5; }
.all-containers { margin-bottom:6px; border-bottom:1px solid var(--line); border-radius:4px 4px 0 0; }
.all-containers .container-info strong { color:var(--cyan); }
.log-container{min-width:0;font-size:10px;color:var(--cyan);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picker{position:relative;min-width:0}
.picker-toggle{height:30px;width:100%;padding:0 10px;background:#141b22;border:1px solid #34404b;border-radius:5px;color:var(--text);cursor:pointer;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picker-panel{position:absolute;top:34px;left:0;width:230px;background:#18212a;border:1px solid #34404b;border-radius:6px;z-index:20;box-shadow:0 6px 18px rgba(0,0,0,.4);animation:pop .12s ease-out;transform-origin:top left}
@keyframes pop{from{opacity:0;transform:scale(.97) translateY(-3px)}to{opacity:1;transform:none}}
.picker-panel[hidden]{display:none}
#pickerSearch{width:100%;height:32px;padding:0 10px;background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--text);outline:0;font-size:12px}
.picker-list{max-height:260px;overflow:auto;padding:4px}
.picker-item{display:flex;align-items:center;gap:7px;padding:5px 7px;border-radius:4px;cursor:pointer;font-size:12px;color:var(--text)}
.picker-item:hover{background:#1f2937}
.picker-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picker-item small{color:var(--muted);font-size:10px}
.picker-item input{accent-color:var(--green)}
.content { min-width:0; min-height:0; display:flex; flex-direction:column; position:relative; }
select { height:38px; background:#141b22; border:1px solid #34404b; border-radius:5px; color:var(--text); padding:0 30px 0 10px; }
.custom-time { min-height:48px; display:flex; align-items:center; gap:7px; padding:6px 16px; color:var(--muted); border-bottom:1px solid var(--line); }
.custom-time[hidden] { display:none; }
.custom-time input { width:180px; height:38px; padding:0 8px; color:var(--text); background:#141b22; border:1px solid #34404b; border-radius:5px; color-scheme:dark; }
.log-header,.log-row { display:grid; grid-template-columns:minmax(90px,140px) 165px 80px 80px minmax(300px,1fr); gap:14px; align-items:center; }
.log-header { padding:7px 16px; color:var(--muted); border-bottom:1px solid var(--line); font-size:11px; text-transform:uppercase; }
.log-header select { height:30px; width:100%; min-width:0; font-size:11px; text-transform:none; }
.message-filter { min-width:0; }
.log-time { min-width:0; }
.message-filter { height:30px; display:flex; align-items:center; gap:7px; padding:0 8px; border:1px solid #34404b; border-radius:4px; background:#0b1015; text-transform:none; }
.message-filter svg { width:14px;height:14px;fill:none;stroke:var(--muted);stroke-width:2;flex:none }.message-filter input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:12px}
.log-list { overflow:auto; flex:1; min-height:0; font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace; }
.log-row { padding:2px 16px; border-bottom:0; }.log-row:hover{background:#121a21}.log-time{color:#788692;white-space:nowrap}.stream{font-size:10px;padding:0 4px;border:0;border-radius:2px;color:#9ba7b1;justify-self:start}.stream.stderr{color:#ff8b91}.log-message{white-space:pre-wrap;overflow-wrap:anywhere;color:#d8dee5}
.level{font-size:10px;padding:0 5px;border-radius:2px;text-transform:uppercase;letter-spacing:.4px;color:#68727c;background:#1a222a;flex:none;justify-self:start}
.level.error{color:#ff8b91;background:#f05b6322}.level.warn{color:#e5aa42;background:#e5aa421c}.level.info{color:#59a8ff;background:#59a8ff1c}.level.debug{color:#9ba7b1}.level.trace{color:#68727c}
.view-tabs{display:flex;gap:2px;padding:6px 16px 0;border-bottom:1px solid var(--line)}
.tab{background:transparent;border:0;border-bottom:2px solid transparent;color:var(--muted);padding:7px 16px;cursor:pointer;transition:color .15s,border-bottom-color .15s}
.tab:hover{color:var(--text)}
.tab.active{color:var(--text);border-bottom-color:var(--green)}
#logView{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}
#logView[hidden],#statsView[hidden]{display:none}
#statsView{flex:1;min-height:0;overflow:hidden;padding:14px 16px;display:flex;flex-direction:column;gap:14px;position:relative}
.progress-bar{position:fixed;top:0;left:0;right:0;height:2px;z-index:60;overflow:hidden}
.progress-bar[hidden]{display:none}
.progress-bar::after{content:'';position:absolute;left:-40%;width:40%;height:100%;background:var(--green);animation:progress-slide 1.1s ease-in-out infinite}
@keyframes progress-slide{to{left:100%}}
.loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;background:rgba(13,17,23,.55);color:var(--muted);font-size:12px;z-index:5}
.loading-overlay[hidden]{display:none}
.spinner{width:20px;height:20px;border:3px solid #34404b;border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.stats-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.stats-filters select{height:32px;font-size:12px}
.stats-min-count{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}
.stats-min-count input{width:80px;height:32px;padding:0 8px;background:#141b22;border:1px solid #34404b;border-radius:4px;color:var(--text)}
.stats-reload{height:32px;padding:0 14px;background:#18212a;border:1px solid #34404b;border-radius:4px;color:var(--text);cursor:pointer;font-size:12px}
.stats-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}
.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;cursor:pointer;text-align:left;color:var(--text)}
.stat-card:hover{border-color:#45525e;transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.3)}
.stat-num{font-size:20px;font-weight:600}
.stat-label{font-size:11px;color:var(--muted);text-transform:uppercase}
.stat-card.error .stat-num{color:#ff8b91}.stat-card.warn .stat-num{color:#e5aa42}.stat-card.info .stat-num{color:#59a8ff}
.stats-chart-wrap{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:12px 14px}
.stats-chart{display:flex;align-items:flex-end;gap:1px;height:160px}
.chart-empty,.table-empty{color:var(--muted);font-size:12px;padding:8px 0}
.col{flex:1;min-width:2px;height:100%;display:flex;flex-direction:column;justify-content:flex-end}
.seg{display:block;width:100%}
.seg.error,.dot-seg.error{background:#f05b63}.seg.warn,.dot-seg.warn{background:#e5aa42}.seg.info,.dot-seg.info{background:#59a8ff}.seg.debug,.dot-seg.debug{background:#9ba7b1}.seg.trace,.dot-seg.trace{background:#68727c}.seg.unknown,.dot-seg.unknown{background:#3a444e}
.stats-axis{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:11px;margin-top:6px}
.legend{display:flex;gap:10px}
.legend-item{display:flex;align-items:center;gap:4px}
.dot-seg{width:8px;height:8px;border-radius:2px;display:inline-block}
.stats-tables{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:14px;flex:1;min-height:0}
.stats-table{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:12px 14px;min-width:0;min-height:0;display:flex;flex-direction:column}
.stats-table h3{margin:0 0 8px;font-size:12px;color:var(--muted);text-transform:uppercase;font-weight:600}
#statsFrequentBody,#statsContainersBody{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0;overflow:auto}
.frequent-item{display:flex;align-items:center;gap:9px;background:transparent;border:0;color:var(--text);cursor:pointer;text-align:left;padding:3px 4px;border-radius:3px;font:11px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}
.frequent-item:hover{background:#18212a}
.frequent-count{color:var(--amber);flex:none}
.frequent-container{color:var(--muted);flex:none;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.frequent-template{color:#b8c2cb;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.container-stat{display:flex;align-items:center;gap:10px;background:transparent;border:0;color:var(--text);cursor:pointer;padding:5px 6px;border-radius:3px;text-align:left;font-size:12px}
.container-stat:hover{background:#18212a}
.container-stat-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.container-stat-errors{color:#ff8b91;font-size:11px;flex:none}
.container-stat-total{color:var(--muted);font-size:11px;flex:none}
.empty { position:absolute; inset:130px 0 0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; color:var(--muted); pointer-events:none; }.empty[hidden]{display:none}.empty strong{color:#bec7cf}
.empty-icon{width:46px;height:46px;fill:none;stroke:#3a444e;stroke-width:1.5}
.empty-icon .bar-1{fill:#35c46a55;stroke:none}.empty-icon .bar-2{fill:#2cb7c955;stroke:none}.empty-icon .bar-3{fill:#e5aa4255;stroke:none}
.load-more { margin:8px auto; padding:7px 18px; background:#18212a; color:#bac4cc; border:1px solid #34404b; border-radius:4px; cursor:pointer; }
.load-more:disabled { cursor:wait; opacity:.65; }
.toast { position:fixed; right:18px; bottom:18px; max-width:min(420px,calc(100vw - 36px)); padding:10px 14px; background:#202a33; border:1px solid #45525e; border-radius:5px; box-shadow:0 6px 20px rgba(0,0,0,.4); opacity:0; transform:translateY(8px); pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{border-color:var(--red)}
@media(max-width:720px){.workspace{grid-template-columns:1fr;grid-template-rows:240px minmax(0,1fr)}.sidebar{display:block;border-right:0;border-bottom:1px solid var(--line);padding:10px;}.docker-status{margin-bottom:8px}.container-filters{grid-template-columns:minmax(0,1fr) 120px}.custom-time{width:100%;padding-inline:10px}.custom-time input{min-width:0;flex:1}.log-header,.log-row{grid-template-columns:80px 105px 55px 55px minmax(140px,1fr);gap:7px;padding-inline:10px}.log-message{padding-left:0}.log-row{padding-top:2px;padding-bottom:2px}.stats-tables{grid-template-columns:1fr}}
