410 lines
12 KiB
CSS
410 lines
12 KiB
CSS
/* MWSE Studio — desktop-first Miller-column UI */
|
||
@import url('https://fonts.googleapis.com/icon?family=Material+Icons+Round');
|
||
|
||
.mwse-studio {
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: #1a1a1a;
|
||
color: #d4d4d4;
|
||
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
|
||
font-size: 13px;
|
||
overflow: hidden;
|
||
user-select: none;
|
||
}
|
||
|
||
/* Material icon helper: inline ikon */
|
||
.mi {
|
||
font-family: 'Material Icons Round';
|
||
font-style: normal;
|
||
font-size: 16px;
|
||
line-height: 1;
|
||
vertical-align: middle;
|
||
display: inline-block;
|
||
}
|
||
.mi-sm { font-size: 14px; }
|
||
.mi-lg { font-size: 20px; }
|
||
|
||
/* ── Araç çubuğu ─────────────────────────────────────────────────────── */
|
||
|
||
.mwse-studio__toolbar {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 10px;
|
||
padding: 0 14px;
|
||
height: 46px;
|
||
background: #0d0d0d;
|
||
border-bottom: 1px solid #2a2a2a;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.mwse-studio__title {
|
||
font-weight: 700;
|
||
color: #fff;
|
||
font-size: 17px;
|
||
letter-spacing: .03em;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.mwse-studio__status {
|
||
font-size: 11px;
|
||
color: #888;
|
||
white-space: nowrap;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
}
|
||
.mwse-studio__status--online { color: #4caf50; }
|
||
.mwse-studio__status--error { color: #f44336; }
|
||
|
||
/* Saat */
|
||
.mwse-studio__clock {
|
||
margin-left: auto;
|
||
font-family: 'Consolas', monospace;
|
||
font-size: 13px;
|
||
color: #666;
|
||
letter-spacing: .04em;
|
||
}
|
||
|
||
/* ── Ana alan (kolonlar + akış paneli yan yana) ──────────────────────── */
|
||
|
||
.mwse-studio__main {
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex: 1;
|
||
overflow: hidden;
|
||
}
|
||
|
||
/* ── Kolon kaydırma alanı ─────────────────────────────────────────────── */
|
||
|
||
.mwse-studio__columns {
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex: 1;
|
||
overflow-x: auto;
|
||
overflow-y: hidden;
|
||
scrollbar-width: thin;
|
||
scrollbar-color: #444 #1a1a1a;
|
||
}
|
||
.mwse-studio__columns::-webkit-scrollbar { height: 4px; }
|
||
.mwse-studio__columns::-webkit-scrollbar-track { background: #1a1a1a; }
|
||
.mwse-studio__columns::-webkit-scrollbar-thumb { background: #444; border-radius: 2px; }
|
||
|
||
/* ── Akış monitör paneli ─────────────────────────────────────────────── */
|
||
|
||
.mwse-streams-panel {
|
||
width: 260px;
|
||
min-width: 260px;
|
||
flex-shrink: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
background: #141414;
|
||
border-left: 1px solid #2a2a2a;
|
||
overflow-y: auto;
|
||
scrollbar-width: thin;
|
||
scrollbar-color: #333 transparent;
|
||
}
|
||
|
||
.mwse-streams-section {
|
||
padding: 10px 0 4px;
|
||
}
|
||
|
||
.mwse-streams-section__title {
|
||
padding: 0 12px 6px;
|
||
font-size: 10px;
|
||
font-weight: 600;
|
||
letter-spacing: .08em;
|
||
text-transform: uppercase;
|
||
color: #555;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
}
|
||
|
||
.mwse-streams-grid {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 6px;
|
||
padding: 0 8px;
|
||
}
|
||
|
||
/* Tek akış tile'ı */
|
||
.mwse-stream-tile {
|
||
border-radius: 5px;
|
||
overflow: hidden;
|
||
background: #1e1e1e;
|
||
border: 1px solid #2a2a2a;
|
||
position: relative;
|
||
}
|
||
|
||
.mwse-stream-tile__video {
|
||
width: 100%;
|
||
aspect-ratio: 16/9;
|
||
display: block;
|
||
background: #000;
|
||
object-fit: cover;
|
||
}
|
||
|
||
/* Ses tile'ı (video yok) */
|
||
.mwse-stream-tile--audio .mwse-stream-tile__audio-icon {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
height: 60px;
|
||
font-family: 'Material Icons Round';
|
||
font-size: 28px;
|
||
color: #0078d4;
|
||
background: #0d1e2e;
|
||
}
|
||
|
||
.mwse-stream-tile__info {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
padding: 4px 8px;
|
||
background: rgba(0,0,0,.5);
|
||
font-size: 10px;
|
||
}
|
||
|
||
.mwse-stream-tile__label { color: #ccc; font-weight: 600; flex: 1; }
|
||
.mwse-stream-tile__peer { color: #555; }
|
||
.mwse-stream-tile__mute {
|
||
font-family: 'Material Icons Round';
|
||
font-size: 15px;
|
||
cursor: pointer;
|
||
color: #4caf50;
|
||
padding: 1px 3px;
|
||
border-radius: 2px;
|
||
flex-shrink: 0;
|
||
line-height: 1;
|
||
}
|
||
.mwse-stream-tile__mute:hover { background: #2a2a2a; }
|
||
.mwse-stream-tile__mute--off { color: #f44336; }
|
||
|
||
.mwse-stream-tile__close {
|
||
font-family: 'Material Icons Round';
|
||
font-size: 14px;
|
||
cursor: pointer; color: #444;
|
||
padding: 1px 3px; border-radius: 2px;
|
||
flex-shrink: 0; line-height: 1;
|
||
}
|
||
.mwse-stream-tile__close:hover { background: #333; color: #ccc; }
|
||
|
||
/* ── Tek kolon ───────────────────────────────────────────────────────── */
|
||
|
||
.mwse-col {
|
||
min-width: 220px;
|
||
max-width: 260px;
|
||
flex-shrink: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
border-right: 1px solid #2e2e2e;
|
||
background: #1e1e1e;
|
||
}
|
||
.mwse-col--active { background: #222; }
|
||
|
||
.mwse-col__header {
|
||
padding: 8px 12px 6px;
|
||
font-size: 10px;
|
||
font-weight: 700;
|
||
letter-spacing: .08em;
|
||
text-transform: uppercase;
|
||
color: #666;
|
||
border-bottom: 1px solid #2a2a2a;
|
||
flex-shrink: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 6px;
|
||
}
|
||
|
||
.mwse-col__search {
|
||
margin: 6px 8px;
|
||
padding: 4px 8px;
|
||
background: #2a2a2a;
|
||
border: 1px solid #383838;
|
||
border-radius: 4px;
|
||
color: #d4d4d4;
|
||
font-size: 12px;
|
||
outline: none;
|
||
flex-shrink: 0;
|
||
}
|
||
.mwse-col__search:focus { border-color: #0078d4; }
|
||
|
||
.mwse-col__list {
|
||
flex: 1;
|
||
overflow-y: auto;
|
||
padding: 4px 0;
|
||
scrollbar-width: thin;
|
||
scrollbar-color: #333 transparent;
|
||
}
|
||
.mwse-col__list::-webkit-scrollbar { width: 4px; }
|
||
.mwse-col__list::-webkit-scrollbar-thumb { background: #333; border-radius: 2px; }
|
||
|
||
/* ── Liste öğesi ─────────────────────────────────────────────────────── */
|
||
|
||
.mwse-item {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
padding: 6px 12px;
|
||
cursor: pointer;
|
||
border-left: 2px solid transparent;
|
||
transition: background 70ms;
|
||
}
|
||
.mwse-item:hover { background: #2a2a2a; }
|
||
.mwse-item--active {
|
||
background: #0d3a5a !important;
|
||
border-left-color: #0078d4;
|
||
}
|
||
|
||
.mwse-item__icon {
|
||
font-family: 'Material Icons Round';
|
||
font-size: 18px;
|
||
color: #555;
|
||
flex-shrink: 0;
|
||
width: 20px;
|
||
text-align: center;
|
||
line-height: 1;
|
||
}
|
||
.mwse-item--active .mwse-item__icon { color: #60cdff; }
|
||
|
||
.mwse-item__body { flex: 1; min-width: 0; }
|
||
|
||
.mwse-item__label {
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
color: #d0d0d0;
|
||
font-size: 13px;
|
||
}
|
||
.mwse-item--active .mwse-item__label { color: #fff; }
|
||
|
||
.mwse-item__meta {
|
||
font-size: 11px;
|
||
color: #555;
|
||
margin-top: 1px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
.mwse-item--active .mwse-item__meta { color: #4d9fce; }
|
||
|
||
.mwse-item__arrow {
|
||
font-family: 'Material Icons Round';
|
||
font-size: 14px;
|
||
color: #3a3a3a;
|
||
flex-shrink: 0;
|
||
}
|
||
.mwse-item--active .mwse-item__arrow { color: #60cdff; }
|
||
|
||
/* ── Alt buton alanı ─────────────────────────────────────────────────── */
|
||
|
||
.mwse-col__actions {
|
||
padding: 8px 10px;
|
||
border-top: 1px solid #2a2a2a;
|
||
display: flex;
|
||
gap: 6px;
|
||
flex-shrink: 0;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.mwse-btn {
|
||
flex: 1;
|
||
padding: 5px 8px;
|
||
background: #252525;
|
||
border: 1px solid #333;
|
||
border-radius: 4px;
|
||
color: #bbb;
|
||
font-size: 11px;
|
||
cursor: pointer;
|
||
text-align: center;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 4px;
|
||
white-space: nowrap;
|
||
}
|
||
.mwse-btn:hover { background: #2e2e2e; color: #fff; border-color: #444; }
|
||
.mwse-btn--primary { background: #0d47a1; border-color: #1565c0; color: #fff; }
|
||
.mwse-btn--primary:hover { background: #1565c0; }
|
||
.mwse-btn--danger { background: #3a1010; border-color: #6a2020; color: #f99; }
|
||
.mwse-btn--danger:hover { background: #6a2020; }
|
||
|
||
/* ── Gelen istek bildirimi ───────────────────────────────────────────── */
|
||
|
||
.mwse-notif-area { flex-shrink: 0; }
|
||
|
||
.mwse-notif-bar {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 12px;
|
||
padding: 8px 14px;
|
||
background: #0e1f0e;
|
||
border-bottom: 1px solid #1e3a1e;
|
||
}
|
||
.mwse-notif-bar__msg { flex: 1; font-size: 12px; color: #a8c8a8; }
|
||
.mwse-notif-bar__msg code {
|
||
font-family: 'Consolas', monospace; font-size: 11px;
|
||
background: #152515; padding: 1px 5px; border-radius: 3px; color: #7cac7c;
|
||
}
|
||
.mwse-notif-bar__dot { color: #4caf50; }
|
||
.mwse-notif-bar__actions { display: flex; gap: 6px; flex-shrink: 0; }
|
||
.mwse-notif-bar__actions .mwse-btn { padding: 4px 14px; font-size: 11px; }
|
||
|
||
/* ── ID kartı ────────────────────────────────────────────────────────── */
|
||
|
||
.mwse-id-card {
|
||
display: flex; align-items: center; gap: 6px;
|
||
padding: 4px 10px;
|
||
background: #1e1e1e; border: 1px solid #333; border-radius: 5px;
|
||
cursor: pointer; transition: border-color 120ms;
|
||
}
|
||
.mwse-id-card:hover { border-color: #0078d4; }
|
||
|
||
.mwse-id-card__ip {
|
||
font-family: 'Consolas', monospace; font-size: 13px;
|
||
font-weight: 700; color: #60cdff; white-space: nowrap;
|
||
}
|
||
.mwse-id-card__ip:empty + .mwse-id-card__value { margin-left: 0; }
|
||
|
||
.mwse-id-card__value {
|
||
font-family: 'Consolas', monospace; font-size: 10px;
|
||
color: #555; white-space: nowrap;
|
||
}
|
||
.mwse-id-card__copy { font-size: 14px; color: #444; }
|
||
.mwse-id-card:hover .mwse-id-card__copy { color: #0078d4; }
|
||
.mwse-id-card--copied { border-color: #4caf50 !important; }
|
||
.mwse-id-card--copied .mwse-id-card__ip,
|
||
.mwse-id-card--copied .mwse-id-card__copy { color: #4caf50; }
|
||
|
||
/* ── Modal ───────────────────────────────────────────────────────────── */
|
||
|
||
.mwse-modal-overlay {
|
||
position: fixed; inset: 0; background: rgba(0,0,0,.7);
|
||
display: flex; align-items: center; justify-content: center; z-index: 9999;
|
||
}
|
||
.mwse-modal {
|
||
background: #1e1e1e; border: 1px solid #3a3a3a; border-radius: 6px;
|
||
width: 380px; max-width: calc(100vw - 32px);
|
||
box-shadow: 0 12px 40px rgba(0,0,0,.6);
|
||
}
|
||
.mwse-modal__header {
|
||
padding: 12px 16px 10px; border-bottom: 1px solid #2a2a2a;
|
||
font-weight: 600; font-size: 13px; color: #e0e0e0;
|
||
display: flex; align-items: center; justify-content: space-between;
|
||
}
|
||
.mwse-modal__close { cursor: pointer; color: #555; font-size: 16px; padding: 2px 4px; border-radius: 3px; }
|
||
.mwse-modal__close:hover { background: #2a2a2a; color: #ccc; }
|
||
.mwse-modal__body { padding: 16px; display: flex; flex-direction: column; gap: 10px; }
|
||
.mwse-modal__field { display: flex; flex-direction: column; gap: 4px; }
|
||
.mwse-modal__field label { font-size: 11px; color: #777; }
|
||
.mwse-modal__input {
|
||
width: 100%; padding: 7px 10px; background: #2a2a2a;
|
||
border: 1px solid #3a3a3a; border-radius: 4px; color: #d4d4d4;
|
||
font-size: 13px; outline: none; box-sizing: border-box;
|
||
}
|
||
.mwse-modal__input:focus { border-color: #0078d4; }
|
||
.mwse-modal__footer { padding: 10px 16px 14px; display: flex; gap: 8px; justify-content: flex-end; }
|
||
.mwse-modal__footer .mwse-btn { flex: none; padding: 6px 20px; font-size: 12px; }
|