MWSE/public/studio/style.css

410 lines
12 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* 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; }