.stream-tile{background:var(--bg-tile);border:1px solid var(--border);border-radius:4px;overflow:hidden;display:flex;flex-direction:column;flex:0 0 auto;transition:border-color .2s,box-shadow .2s;cursor:pointer;box-sizing:border-box}.stream-tile--landscape{width:clamp(280px,min(38vw,var(--tile-landscape-width)),var(--tile-landscape-width));aspect-ratio:16 / 9}.stream-tile--portrait{width:clamp(160px,min(28vw,var(--tile-portrait-width)),var(--tile-portrait-width));aspect-ratio:9 / 16}.stream-tile--auto{width:100%!important;max-width:none!important}.stream-tile:hover{border-color:var(--accent-dim);box-shadow:0 0 0 1px #00d4aa26}.stream-tile--offline{opacity:.6;cursor:default}.stream-tile--reconnecting{border-color:var(--warning)}.stream-tile__video-wrap{position:relative;background:#000;width:100%;flex:1 1 auto;min-height:0;overflow:hidden}.stream-tile__video{width:100%;height:100%;object-fit:contain;object-position:center;background:#000;display:block}.stream-tile__placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(45deg,#111 0,#111 10px,#1a1a1a 10px,#1a1a1a 20px)}.stream-tile__status-label{color:var(--text-secondary);font-size:.75rem;letter-spacing:.15em;font-weight:600}.stream-tile__badge{position:absolute;font-size:.6rem;font-weight:700;letter-spacing:.06em;padding:2px 5px;border-radius:2px;text-transform:uppercase;line-height:1.2}.stream-tile__badge--source{top:5px;left:5px;background:#000000bf;color:var(--accent)}.stream-tile__badge--status{top:5px;right:5px}.stream-tile__badge--live{background:#00d4aa33;color:var(--accent)}.stream-tile__badge--reconnecting{background:#ffa50233;color:var(--warning)}.stream-tile__badge--offline{background:#4a556866;color:var(--text-secondary)}.stream-tile__info{padding:6px 8px;border-top:1px solid var(--border);min-height:var(--tile-info-height);box-sizing:border-box;flex:0 0 auto}.stream-tile__operator{font-size:.78rem;font-weight:600;color:var(--text-primary);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stream-tile__meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 8px;font-size:clamp(.55rem,1.8vw,.62rem);color:var(--text-secondary);font-family:Consolas,Courier New,monospace;line-height:1.25;max-height:2.5em;overflow:hidden}.stream-tile__meta span{white-space:nowrap}@media(max-width:768px){.stream-tile--landscape{width:min(100%,var(--tile-landscape-width))}.stream-tile--portrait{width:clamp(140px,42vw,var(--tile-portrait-width));margin-inline:auto}}.fs{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100dvw;height:100dvh;max-width:100dvw;max-height:100dvh;overflow:hidden;background:#0a0e14;display:grid;grid-template-rows:auto 1fr auto;padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0);padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);box-sizing:border-box}.fs__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px 10px 16px;background:#0a0e14f2;border-bottom:1px solid var(--border);min-height:0}.fs__top-main{min-width:0;flex:1}.fs__title{font-size:.85rem;font-weight:700;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fs__meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;font-size:.62rem;color:var(--text-secondary);font-family:Consolas,monospace}.fs__live{color:var(--accent);font-weight:700}.fs__close-btn{flex:0 0 auto;margin-right:48px;background:#ffffff14;border:1px solid var(--border);color:var(--text-primary);padding:6px 12px;border-radius:4px;font-size:.72rem;cursor:pointer}.fs__video-area{min-width:0;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#000}.fs__video{width:100%;height:100%;object-fit:contain;object-position:center;display:block;background:#000}.fs__bottom{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px 12px;background:#0a0e14f2;border-top:1px solid var(--border)}.fs__record-btn,.fs__action-btn{background:#ffffff14;border:1px solid var(--border);color:var(--text-primary);padding:8px 12px;border-radius:4px;font-size:.72rem;cursor:pointer}.fs__record-btn--active{border-color:var(--danger);color:#ff8a96}.fs__rec-meta{font-size:.68rem;color:#ff8a96;font-family:Consolas,monospace}.fs__action-btn--close{margin-left:auto}@media(max-width:768px){.fs__top{padding:8px 10px}.fs__close-btn{margin-right:56px}.fs__bottom{padding:8px 12px calc(10px + env(safe-area-inset-bottom,0))}.fs__record-btn,.fs__action-btn{flex:1 1 calc(50% - 8px);min-width:120px}.fs__action-btn--close{margin-left:0}}@media(orientation:landscape)and (max-width:900px){.fs__top,.fs__bottom{padding-top:6px;padding-bottom:6px}.fs__meta{font-size:.58rem}}.stream-picker{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;background:#0a0e14d9;padding:16px}.stream-picker__panel{width:min(720px,100%);max-height:80vh;overflow:auto;background:#121820;border:1px solid #1a2332;border-radius:8px;padding:20px}.stream-picker__title{color:#00d4aa;font-weight:700;font-size:14px;letter-spacing:.08em;margin-bottom:8px}.stream-picker__hint{color:#8b9cb3;font-size:12px;margin:0 0 16px}.stream-picker__empty{color:#8b9cb3;font-size:13px;padding:24px 0}.stream-picker__list{list-style:none;margin:0;padding:0}.stream-picker__item{border-bottom:1px solid #1a2332}.stream-picker__row{display:grid;grid-template-columns:24px 1.2fr repeat(5,minmax(0,1fr));gap:8px;align-items:center;padding:10px 4px;cursor:pointer;font-size:12px;color:#e8edf4}.stream-picker__row--disabled{opacity:.5;cursor:not-allowed}.stream-picker__callsign{font-weight:600;color:#e8edf4}.stream-picker__detail{color:#8b9cb3;font-family:Consolas,monospace;font-size:11px}.stream-picker__status{font-weight:700;font-size:10px;text-align:right}.stream-picker__status--live{color:#00d4aa}.stream-picker__status--reconnecting{color:#ffa502}.stream-picker__status--offline{color:#ff4757}.stream-picker__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.stream-picker__btn{background:#1a2332;color:#e8edf4;border:none;border-radius:4px;padding:8px 16px;font-size:12px;cursor:pointer}.stream-picker__btn--primary{background:#00d4aa;color:#0a0e14;font-weight:700}.stream-picker__btn--primary:disabled{opacity:.4;cursor:not-allowed}@media(max-width:640px){.stream-picker__row{grid-template-columns:24px 1fr;grid-template-rows:auto auto}.stream-picker__detail,.stream-picker__status{grid-column:2}}.dashboard{min-height:100vh;display:flex;flex-direction:column}.dashboard__header{display:flex;flex-direction:column;gap:8px;padding:10px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}.dashboard__header-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.dashboard__header-row--secondary{align-items:flex-start}.dashboard__header-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.dashboard__brand{display:flex;align-items:center;gap:10px}.dashboard__logo{color:var(--accent);font-size:1.4rem}.dashboard__brand h1{font-size:1rem;font-weight:800;letter-spacing:.2em;color:var(--text-primary)}.dashboard__conn{font-size:.65rem;font-weight:700;letter-spacing:.1em;padding:3px 8px;border-radius:2px}.dashboard__conn--on{background:#00d4aa26;color:var(--accent)}.dashboard__conn--off{background:#ff475726;color:var(--danger)}.dashboard__controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.dashboard__room,.dashboard__count{font-size:.75rem;color:var(--text-secondary);font-family:Consolas,monospace;letter-spacing:.05em}.dashboard__count{color:var(--accent);font-weight:600}.dashboard__layout{display:flex;gap:4px;flex-wrap:wrap}.dashboard__layout-btn{background:var(--bg-tile);border:1px solid var(--border);color:var(--text-secondary);padding:4px 8px;font-size:.65rem;font-weight:700;letter-spacing:.05em;border-radius:2px}.dashboard__layout-btn.active{background:var(--accent);color:var(--bg-primary);border-color:var(--accent)}.dashboard__layout-btn:hover:not(.active){border-color:var(--accent-dim);color:var(--text-primary)}.dashboard__android{display:flex;align-items:center;gap:8px;font-size:.68rem;color:var(--text-secondary)}.dashboard__android-version{font-family:Consolas,monospace;color:var(--accent)}.dashboard__android-btn{background:var(--bg-tile);border:1px solid var(--border);color:var(--text-primary);padding:4px 8px;font-size:.62rem;font-weight:700;letter-spacing:.05em;border-radius:2px}.dashboard__android-btn:hover{border-color:var(--accent-dim);color:var(--accent)}.dashboard__error{background:#ff475726;color:var(--danger);padding:10px 20px;font-size:.85rem;border-bottom:1px solid var(--danger)}.dashboard__grid{flex:1;display:flex;flex-wrap:wrap;gap:10px;padding:12px;align-content:flex-start;justify-content:flex-start;width:100%;box-sizing:border-box}.dashboard__grid--auto{display:grid;gap:12px;justify-items:center;align-items:center;align-content:center}.dashboard__grid--1{justify-content:center}.dashboard__empty{width:100%;text-align:center;padding:80px 20px;color:var(--text-secondary)}.dashboard__empty p{font-size:1rem;margin-bottom:8px}.dashboard__empty-hint{font-size:.8rem!important;opacity:.7}.android-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;background:#000000bf;display:flex;align-items:center;justify-content:center;padding:20px}.android-modal__panel{background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;max-width:420px;width:100%;padding:16px}.android-modal__title{color:var(--accent);font-size:.85rem;font-weight:700;letter-spacing:.08em;margin-bottom:8px}.android-modal__notes{color:var(--text-secondary);font-size:.75rem;margin:8px 0 12px;padding-left:18px}.android-modal__actions{display:flex;justify-content:flex-end;gap:8px}.android-modal__btn{background:var(--bg-tile);border:1px solid var(--border);color:var(--text-primary);padding:6px 10px;font-size:.72rem;border-radius:3px}.android-modal__btn--primary{background:var(--accent);color:var(--bg-primary);border-color:var(--accent)}.dashboard__recording{position:relative}.dashboard__record-btn,.dashboard__record-stop{background:#ff475726;border:1px solid rgba(255,71,87,.45);color:#ff8a96;padding:4px 10px;font-size:.68rem;font-weight:700;letter-spacing:.08em;border-radius:3px}.dashboard__record-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:240px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;padding:8px;display:flex;flex-direction:column;gap:6px;box-shadow:0 8px 24px #00000073}.dashboard__record-menu button{background:var(--bg-tile);border:1px solid var(--border);color:var(--text-primary);padding:8px 10px;font-size:.7rem;text-align:left;border-radius:3px}.dashboard__record-menu button:disabled{opacity:.45;cursor:not-allowed}.dashboard__record-privacy{font-size:.62rem;color:var(--text-secondary);line-height:1.35;margin-top:4px}.dashboard__record-active{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.68rem;color:var(--text-secondary);font-family:Consolas,monospace}.dashboard__record-dot{color:var(--danger);font-weight:700}.dashboard__record-warn{color:#ffa502;font-size:.62rem;max-width:280px;line-height:1.3}:root{--bg-primary: #0a0e14;--bg-secondary: #121820;--bg-tile: #1a2332;--border: #2a3544;--text-primary: #e8edf4;--text-secondary: #8b9cb3;--accent: #00d4aa;--accent-dim: #00a888;--danger: #ff4757;--warning: #ffa502;--offline: #4a5568;--tile-landscape-width: 400px;--tile-landscape-viewport-height: 225px;--tile-portrait-width: 240px;--tile-portrait-viewport-height: 427px;--tile-info-height: 36px;font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text-primary);background:var(--bg-primary)}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;background:var(--bg-primary)}button{cursor:pointer;font-family:inherit}input,select{font-family:inherit}
