PageSourceSearch

https://novasportstv.com/

html novasportstv.com collected 2026-10-09 05:04:45 UTC 105,718 bytes, 2,288 lines download raw bytes

1<!doctype html>
2<html lang="ko" class="is-pc">
3<head>
4<meta charset="utf-8">
5<meta http-equiv="imagetoolbar" content="no">
6<meta http-equiv="X-UA-Compatible" content="IE=edge">
7<title>스포츠중계 노바티비 - 해외축구 야구 실시간 무료중계</title>
8<meta name="description" content="가입 없이 무료로 보는 스포츠중계 노바티비. EPL·챔피언스리그 해외축구중계, KBO·MLB 야구중계, NBA 농구중계를 고화질로 실시간 제공합니다.">
9<meta property="og:locale" content="ko_KR">
10<meta property="og:type" content="website">
11<meta property="og:site_name" content="노바티비">
12<meta property="og:title" content="스포츠중계 노바티비 - 해외축구 야구 실시간 무료중계">
13<meta property="og:description" content="가입 없이 무료로 보는 스포츠중계 노바티비. EPL·챔피언스리그 해외축구중계, KBO·MLB 야구중계, NBA 농구중계를 고화질로 실시간 제공합니다.">
14<meta property="og:url" content="https://novasportstv.com/">
15<meta property="og:image" content="https://novasportstv.com/img/nv-og.png">
16<meta name="twitter:card" content="summary_large_image">
17<meta name="twitter:image" content="https://novasportstv.com/img/nv-og.png">
18<meta name="twitter:title" content="스포츠중계 노바티비 - 해외축구 야구 실시간 무료중계">
19<meta name="twitter:description" content="가입 없이 무료로 보는 스포츠중계 노바티비. EPL·챔피언스리그 해외축구중계, KBO·MLB 야구중계, NBA 농구중계를 고화질로 실시간 제공합니다.">
20
21
22<!-- SEO 시작 -->
23<!--
24  이 파일이 담당: 페이지 제목 · canonical · robots · 파비콘 · 구조화 데이터
25  설명글(description) 과 카톡/트위터 공유 태그는 /nariya/theme/seo.php 가 담당한다.
26  거기서는 글 본문을 읽을 수 있어서 글마다 다른 설명글을 만들 수 있기 때문이다.
27  같은 태그를 두 곳에서 만들지 않도록 역할을 나눠 두었으니 여기에 다시 넣지 말 것.
28-->
29<meta name="robots" content="index, follow" />
30<meta name="author" content="노바티비" />
31<meta name="publisher" content="노바티비" />
32
33<link rel="canonical" href="https://novasportstv.com/" />
34
35<!-- 파비콘 -->
36<link rel="icon" href="/favicon.ico" sizes="48x48 32x32 16x16">
37<link rel="icon" href="/img/favicon.png" type="image/png" sizes="192x192">
38<link rel="apple-touch-icon" href="/img/favicon.png">
39
40<script type="application/ld+json">
41[
42  {
43    "@context": "https://schema.org",
44    "@type": "WebSite",
45    "name": "노바티비",
46    "alternateName": ["노바TV", "novasportstv"],
47    "url": "https://novasportstv.com/"
48  },
49  {
50    "@context": "https://schema.org",
51    "@type": "Organization",
52    "name": "노바티비",
53    "alternateName": ["노바TV", "novasportstv"],
54    "url": "https://novasportstv.com/",
55    "description": "가입 없이 시청하는 고화질 스포츠중계 사이트"
56  }
57]
58</script>
58
59<!-- SEO 끝 -->
60
61<link rel="stylesheet" href="https://novasportstv.com/nariya/app/bs4/css/bootstrap-no.min.css" type="text/css">
62<link rel="stylesheet" href="https://novasportstv.com/js/font-awesome/css/font-awesome.min.css" type="text/css">
63<script>
64// 자바스크립트에서 사용하는 전역변수 선언
65var g5_url       = "https://novasportstv.com";
66var g5_bbs_url   = "https://novasportstv.com/bbs";
67var g5_is_member = "";
68var g5_is_admin  = "";
69var g5_is_mobile = "";
70var g5_bo_table  = "";
71var g5_sca       = "";
72var g5_editor    = "";
73var g5_plugin_url = "https://novasportstv.com/plugin";
74var g5_cookie_domain = "";
75</script>
vendor: 1 bytes, line 75
75
76<script src="https://novasportstv.com/nariya/js/jquery-3.5.1.min.js"></script>
vendor: 1 bytes, line 76
76
77<script src="https://novasportstv.com/nariya/js/common.js?ver=2609102"></script>
vendor: 1 bytes, line 77
77
78<script src="https://novasportstv.com/js/wrest.js?ver=2609102"></script>
vendor: 1 bytes, line 78
78
79<script src="https://novasportstv.com/nariya/app/bs4/js/bootstrap.bundle.min.js"></script>
vendor: 1 bytes, line 79
79
80<script src="https://novasportstv.com/nariya/js/nariya.js?ver=2609102"></script>
vendor: 1 bytes, line 80
80
81<script src="https://novasportstv.com/theme/BS4-Basic/js/theme.js"></script>
81
82
83<link rel="stylesheet" href="https://novasportstv.com/nariya/css/mask.css?ver=2609102" type="text/css">
84<link rel="stylesheet" href="https://novasportstv.com/nariya/css/nariya.css?ver=2609102" type="text/css">
85<link rel="stylesheet" href="https://novasportstv.com/nariya/css/g5.css?ver=2609102" type="text/css">
86<link rel="stylesheet" href="https://novasportstv.com/theme/BS4-Basic/css/theme.css?ver=2609102" type="text/css">
87<link rel="stylesheet" href="https://novasportstv.com/theme/BS4-Basic/css/font/TUNE-14px.css?ver=2609102" type="text/css">
88<link rel="stylesheet" href="https://novasportstv.com/theme/BS4-Basic/css/color/Blue.css?ver=2609102" type="text/css">
89<link rel="stylesheet" href="https://novasportstv.com/skin/latest/nova/style.css?ver=2609102">
90<link rel="stylesheet" href="https://novasportstv.com/theme/BS4-Basic/widget/sidebar/widget.css?2609102">
91
92</head>
93<body class="no-responsive is-round">
94
95
96<!-- 팝업레이어 시작 { -->
97<div id="hd_pop">
98    <div class="nv_pop_ttl">팝업레이어 알림</div>
99
100<span class="sound_only">팝업레이어 알림이 없습니다.</span></div>
101
102<script>
103$(function() {
104    $(".hd_pops_reject").click(function() {
105        var id = $(this).attr('class').split(' ');
106        var ck_name = id[1];
107        var exp_time = parseInt(id[2]);
108        $("#"+id[1]).css("display", "none");
109        set_cookie(ck_name, 1, exp_time, g5_cookie_domain);
110    });
111    $('.hd_pops_close').click(function() {
112        var idb = $(this).attr('class').split(' ');
113        $('#'+idb[1]).css('display','none');
114    });
115    $("#hd").css("z-index", 1000);
116});
117</script>
117
118<!-- } 팝업레이어 끝 -->
119<style>
120.nt-container { max-width:1400px; }
121.nt-container-wide { max-width:1980px; }
122.boxed.wrapper, .boxed.wrapper #nt_menu_wrap.me-sticky nav { max-width:1400px; }
123.no-responsive .wrapper { min-width:1400px; }
124
125/* 로고·배너·본문 꾸미기는 css/nova-ui.css 에 모아 두었습니다 */
126</style>
127<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
128<link rel="stylesheet" as="style" crossorigin
129      href="https://cdn.jsdelivr.net/gh/orioncactus/[email protected]/dist/web/variable/pretendardvariable-dynamic-subset.min.css">
130<link rel="stylesheet" href="https://novasportstv.com/theme/BS4-Basic/css/nova-ui.css?v=1789218512">
131
132<div class="wrapper wided">
133	<div id="nt_header">
134				
135		<header id="new_hd" class="hd_wrap">
136			<div class="hd_area">
137				<div class="hd_con">
138					<!--HEADER NAV-->
139					<div class="hd_nav_con">
140						<div class="hd_logo_wrap">
141							<div class="hd_logo">
142								<a href="/" class="nv_logo" aria-label="노바티비 홈">
143									<span class="nv_logo_mk" aria-hidden="true"></span>
144									<span class="nv_logo_tx">
145										<b>NOVA<i>TV</i></b>
146										<em>스포츠중계 노바티비</em>
147									</span>
148								</a>
149																<span class="sr-only">노바티비 스포츠중계</span>
150															</div>
151						</div>
152						<nav class="hd_nav">
153							
154<style>
155	#nt_menu .me-sw { width:150px; }
156</style>
157
158<!-- PC 상단 메뉴 -->
159<nav id="nt_menu" class="nt-menu  d-none d-md-block font-weight-normal">
160	<p class="sr-only">메인 메뉴</p>
161	<div class="nt-container">
162		<div class="d-flex">
163			<div class="flex-grow-1 order-2 me-list">
164				<ul class="row m-0 me-ul nav-slide">
165									<li class="col p-0 me-li">
166						<a class="d-block " href="/" target="_self">
167							<span class="me-a text-nowrap f-md en px-4">
168								<i class="fa empty" aria-hidden="true"></i>
169								홈							</span>
170						</a>
171											</li>
172									<li class="col p-0 me-li">
173						<a class="d-block " href="/live1" target="_self">
174							<span class="me-a text-nowrap f-md en px-4">
175								<i class="fa empty" aria-hidden="true"></i>
176								스포츠중계							</span>
177						</a>
178													<div class="clearfix sub-slide sub-1div w-100">
179								<ul class="sub-1dul">
180																	
181									
182									<li class="sub-1dli">
183										<a href="/live1" class="sub-1da" target="_self">
184											<i class="fa empty fa-fw" aria-hidden="true"></i>
185											중계 1채널										</a>
186																			</li>
187																	
188									
189									<li class="sub-1dli">
190										<a href="/live2" class="sub-1da" target="_self">
191											<i class="fa empty fa-fw" aria-hidden="true"></i>
192											중계 2채널										</a>
193																			</li>
194																</ul>
195															</div>
196											</li>
197									<li class="col p-0 me-li">
198						<a class="d-block " href="/schedule" target="_self">
199							<span class="me-a text-nowrap f-md en px-4">
200								<i class="fa empty" aria-hidden="true"></i>
201								경기일정							</span>
202						</a>
203											</li>
204									<li class="col p-0 me-li">
205						<a class="d-block " href="/analysis" target="_self">
206							<span class="me-a text-nowrap f-md en px-4">
207								<i class="fa empty" aria-hidden="true"></i>
208								스포츠분석							</span>
209						</a>
210											</li>
211									<li class="col p-0 me-li">
212						<a class="d-block " href="/highlights" target="_self">
213							<span class="me-a text-nowrap f-md en px-4">
214								<i class="fa empty" aria-hidden="true"></i>
215								하이라이트							</span>
216						</a>
217											</li>
218									<li class="col p-0 me-li">
219						<a class="d-block " href="/livescore" target="_self">
220							<span class="me-a text-nowrap f-md en px-4">
221								<i class="fa empty" aria-hidden="true"></i>
222								라이브스코어							</span>
223						</a>
224											</li>
225									<li class="col p-0 me-li">
226						<a class="d-block " href="/notice" target="_self">
227							<span class="me-a text-nowrap f-md en px-4">
228								<i class="fa empty" aria-hidden="true"></i>
229								공지사항							</span>
230						</a>
231													<div class="clearfix sub-slide sub-1div w-100">
232								<ul class="sub-1dul">
233																	
234									
235									<li class="sub-1dli">
236										<a href="/notice" class="sub-1da" target="_self">
237											<i class="fa empty fa-fw" aria-hidden="true"></i>
238											공지사항										</a>
239																			</li>
240																	
241									
242									<li class="sub-1dli">
243										<a href="/event" class="sub-1da" target="_self">
244											<i class="fa empty fa-fw" aria-hidden="true"></i>
245											이벤트										</a>
246																			</li>
247																</ul>
248															</div>
249											</li>
250												</ul>							
251			</div>
252		</div>
253	</div>
254	
254<script>
255		$(document).ready(function() {
256			$('#nt_menu .nav-slide').nariya_menu(); // 주메뉴
257		});
258	</script>
258
259</nav>
260
261						</nav>
262					</div>
263					<!--HEADER NAV END-->
264				</div>
265			</div>
266		</header>
267				
268	</div>
269	<!-- } 상단 고정 체크 끝 -->
270
271</div><!-- #nt_header -->
272	
273
274	
275	
276<main id="new_sc" class="sc_wrap">
277	<div class="sc_area">
278		<div class="sc_con">
279			<div class="sc_size"  style="width:1400px;">
280								<!--LEFT CONTENTS-->
281				<div class="lt_contents">
282					
283
284								<style>
285/* OUTLOGIN WRAP */
286.outlogin_wrap {
287    width: 100%;
288    height: auto;
289    position: relative;
290    margin-bottom: 25px;
291}
292
293.outlogin_con {
294    width: 100%;
295    height: auto;
296    position: relative;
297    border-bottom: 1px solid #4C4F53;
298    padding: 0 0 25px;
299}
300
301.outlogin_con.outpage_con {
302    padding: 6px;
303}
304
305.outlogin_con .outlogin_box {
306    width: 100%;
307    height: auto;
308    position: relative;
309}
310.outlogin_con .outpage_info {
311    width: 100%;
312    height: auto;
313    position: relative;
314    border-bottom: 1px solid #4C4F53;
315    display: -webkit-box;
316    display: -webkit-flex;
317    display: -moz-box;
318    display: -ms-flexbox;
319    display: flex;
320    -webkit-box-align: center;
321    -webkit-align-items: center;
322    -moz-box-align: center;
323    -ms-flex-align: center;
324    align-items: center;
325    padding-bottom: 15px;
326}
327/* OUTLOGIN WRAP END */	
328.outlogin_con .outpage_info .outpage_name {
329    width: 100%;
330    height: auto;
331    position: relative;
332    border-right: 1px solid #4C4F53;
333    padding-right: 10px;
334}
335
336.outlogin_con .outpage_info .outpage_name .outpage_namebox {
337    width: 100%;
338    height: auto;
339    position: relative;
340    display: flex;
341    flex-direction: column;
342    align-items: center;
343    gap: 5px;
344    margin-bottom: 8px;
345}
346
347.outlogin_con .outpage_info .outpage_name .outpage_namebox .name_img {
348    width: 50px;
349    height: 50px;
350    border-radius: 5rem;
351    overflow: hidden;
352    border: 1px solid #484848;
353    font-size: 0;
354}
355
356.outlogin_con .outpage_info .outpage_name .outpage_namebox .name_img img { max-width:100%; }
357.outlogin_con .outpage_info .outpage_name .outpage_namebox .name_img > img {
358    width: 100%;
359    height: 100%;
360}
361
362.outlogin_con .outpage_info .outpage_name .outpage_namebox .name_txt {
363    width: 100%;
364    height: auto;
365    position: relative;
366    display: flex;
367    justify-content: center;
368    align-items: center;
369    gap: 7px;
370}
371
372.outlogin_con .outpage_info .outpage_name .outpage_namebox .name_txt .name_lv {
373    width: 23px;
374    height: 23px;
375    position: relative;
376    margin-bottom: 5px;
377}
378
379.outlogin_con .outpage_info .outpage_name .outpage_namebox .name_txt .name_lv > img {
380    width: 100%;
381    height: 100%;
382}
383
384.outlogin_con .outpage_info .outpage_name .outpage_namebox .name_txt > p {
385    font-size: 0.9375rem;
386    font-weight: 600;
387    color: #fff;
388    letter-spacing: -0.5px;
389}
390
391.outlogin_con .outpage_info .outpage_name .name_option {
392    width: 100%;
393    height: auto;
394    position: relative;
395    display: -webkit-box;
396    display: -webkit-flex;
397    display: -moz-box;
398    display: -ms-flexbox;
399    display: flex;
400    -webkit-box-align: center;
401    -webkit-align-items: center;
402    -moz-box-align: center;
403    -ms-flex-align: center;
404    align-items: center;
405    gap: 10px;
406}
407
408.outlogin_con .outpage_info .outpage_name .name_option .page_mode {
409    width: 43px;
410    height: 20px;
411    position: relative;
412}
413
414.outlogin_con .outpage_info .outpage_name .name_option .page_mode > a {
415    display: block;
416    width: 100%;
417    height: 100%;
418    background-image: url(/assets/Pc/img/mode_dark.png);
419    background-position: center;
420    background-repeat: no-repeat;
421    -webkit-background-size: contain;
422    background-size: contain;
423}
424
425.outlogin_con .outpage_info .outpage_name .name_option .option_box {
426    width: auto;
427    height: auto;
428    position: relative;
429    gap: 16px;
430}
431
432.outlogin_con .outpage_info .outpage_name .name_option .option_box > li {
433    width: auto;
434    height: auto;
435    position: relative;
436}
437
438.outlogin_con .outpage_info .outpage_name .name_option .option_box > li > a {
439    display: block;
440    font-size: 0.75rem;
441    font-weight: 300;
442    color: #fff;
443}
444
445.outlogin_con .outpage_info .outpage_stat {
446    width: 100%;
447    height: auto;
448    position: relative;
449    padding-left: 10px;
450}
451
452.outlogin_con .outpage_info .outpage_stat .outpage_statbox {
453    width: 100%;
454    height: auto;
455    position: relative;
456}
457
458.outlogin_con .outpage_info .outpage_stat .outpage_statbox .stat_item {
459    width: 100%;
460    height: auto;
461    position: relative;
462    display: -webkit-box;
463    display: -webkit-flex;
464    display: -moz-box;
465    display: -ms-flexbox;
466    display: flex;
467    -webkit-box-align: center;
468    -webkit-align-items: center;
469    -moz-box-align: center;
470    -ms-flex-align: center;
471    align-items: center;
472    -webkit-box-pack: right;
473    -webkit-justify-content: right;
474    -moz-box-pack: right;
475    -ms-flex-pack: right;
476    justify-content: right;
477    gap: 10px;
478    margin-bottom: 0px;
479}
480
481.outlogin_con .outpage_info .outpage_stat .outpage_statbox .stat_item:last-of-type {
482    margin-bottom: 0;
483}
484
485.outlogin_con .outpage_info .outpage_stat .outpage_statbox .stat_item > h3 {
486    font-size: 13px;
487    font-weight: 600;
488    color: #fff;
489    letter-spacing: -0.5px;
490}
491
492.outlogin_con .outpage_info .outpage_stat .outpage_statbox .stat_item > p {
493    font-size: 13px;
494    font-weight: 400;
495    color: #1A9E9E;
496    font-variant-numeric: tabular-nums;
497}
498
499.outlogin_con .outpage_info .outpage_stat .outpage_statbox .stat_item .stat_bar {
500    width: 80px;
501    height: 12px;
502    background-color: #151618;
503    border: 1px solid #313437;
504    position: relative;
505}
506
507.outlogin_con .outpage_info .outpage_stat .outpage_statbox .stat_item .stat_bar > span {
508    height: 100%;
509    background-color: #1A9E9E;
510    position: absolute;
511    top: 0;
512    left: 0;
513    /* background-image: url(/assets/Pc/img/gauge.png);
514    background-position: -20px center;
515    -webkit-background-size: 300px 300px;
516    background-size: 300px; */
517}
518
519.outlogin_con .outpage_btn {
520    width: 100%;
521    height: auto;
522    position: relative;
523    padding-top: 15px;
524    padding-bottom: 10px;
525}
526
527.outlogin_con .outpage_btn .outpage_btnbox {
528    width: 100%;
529    height: auto;
530    position: relative;
531    display: -webkit-box;
532    display: -webkit-flex;
533    display: -moz-box;
534    display: -ms-flexbox;
535    display: flex;
536    -webkit-box-align: center;
537    -webkit-align-items: center;
538    -moz-box-align: center;
539    -ms-flex-align: center;
540    align-items: center;
541}
542
543.outlogin_con .outpage_btn .outpage_btnbox .btn_item {
544    width: 100%;
545    height: auto;
546    position: relative;
547}
548
549.outlogin_con .outpage_btn .outpage_btnbox .btn_item:last-of-type {
550    border-right: 0;
551}
552
553.outlogin_con .outpage_btn .outpage_btnbox .btn_item > a {
554    display: block;
555    width: 100%;
556    height: auto;
557    position: relative;
558    text-align: center;
559}
560
561.outlogin_con .outpage_btn .outpage_btnbox .btn_item > a > span {
562    display: block;
563    width: 25px;
564    height: 25px;
565    margin: 0 auto;
566    margin-bottom: 5px;
567    background-position: center;
568    background-repeat: no-repeat;
569    -webkit-background-size: contain;
570    background-size: contain;
571}
572
573.outlogin_con .outpage_btn .outpage_btnbox .btn_item.btn_item_01 > a > span {
574    background-image: url(/img/mypage_icon_01.png);
575}
576
577.outlogin_con .outpage_btn .outpage_btnbox .btn_item.btn_item_02 > a > span {
578    background-image: url(/img/mypage_icon_02.png);
579}
580
581.outlogin_con .outpage_btn .outpage_btnbox .btn_item.btn_item_03 > a > span {
582    background-image: url(/img/mypage_icon_03.png);
583}
584
585.outlogin_con .outpage_btn .outpage_btnbox .btn_item.btn_item_04 > a > span {
586    background-image: url(/img/mypage_icon_04.png);
587}
588
589.outlogin_con .outpage_btn .outpage_btnbox .btn_item.btn_item_05 > a > span {
590    background-image: url(/img/mypage_icon_05.png);
591}
592
593.outlogin_con .outpage_btn .outpage_btnbox .btn_item > a > p {
594    font-size: 0.75rem;
595    font-weight: 400;
596    color: #fff;
597    letter-spacing: -0.5px;
598}
599.outlogin_box .profile_img { display:none; }
600/* OUTMYPAGE END */
601</style>
602<div class="f-de font-weight-normal">
603
604				
605			
606			
607		<form id="basic_outlogin" name="basic_outlogin" method="post" action="https://novasportstv.com/bbs/login_check.php" autocomplete="off" class="outlogin_con outlogin_wrap">
608			<input type="hidden" name="url" value="https://novasportstv.com%2F">
609            <div class="login_box">
610                    <ul class="login_inputbox">
611                        <li class="outlogin_input">
612							<input type="text" name="mb_id" id="outlogin_mb_id" class="form-control required" placeholder="아이디">
613						</li>
614                        <li class="outlogin_input">
615							<input type="password" name="mb_password" id="outlogin_mb_password" class="form-control required" placeholder="비밀번호">
616						</li>
617                    </ul>
618                    <div class="login_submit">
619						<button type="submit" class="btn btn-primary btn-block btn-lg en">
620							로그인
621						</button>    
622                    </div>
623            </div>
624            <div class="login_option">
625                <ul class="option_box">
626                    <li><a href="https://novasportstv.com/bbs/register.php" class="signup_btn">회원가입</a></li>
627                    <li><a href="Javascript:;" id="findPasswd2">아이디/비밀번호 찾기</a></li>
628                </ul>
629                <div class="edit_check mar_0">
630                    <input type="checkbox" name="auto_login" class=" remember-me" id="outlogin_remember_me">
631                    <label for="AUTOLOGIN">자동로그인</label>
632                </div>
633            </div>
634		</form>
635
636        
637	</div>					<!--OUTLOGIN WRAP END-->
638
639
640					 <!--CHANNEL BANNER-->
641					<div class="nv_side_ch">
642						<a href="/live1" class="nv_side_btn nv_ch1">
643							<span class="nv_ic" aria-hidden="true"></span>
644							<span class="nv_txt">
645								<strong>중계 1채널 바로가기 <span class="nv_live_pill"><i></i>LIVE</span></strong>
646								<span class="nv_sub">축구 · EPL · 라리가 · 챔피언스리그</span>
647							</span>
648							<span class="nv_go" aria-hidden="true">›</span>
649						</a>
650						<a href="/live2" class="nv_side_btn nv_ch2">
651							<span class="nv_ic" aria-hidden="true"></span>
652							<span class="nv_txt">
653								<strong>
653중계 2채널 바로가기 <span class="nv_live_pill"><i></i>LIVE</span></strong>
654								<span class="nv_sub">야구 · 농구 · 배구 · 격투기</span>
655							</span>
656							<span class="nv_go" aria-hidden="true">›</span>
657						</a>
658					</div>
659					<!--CHANNEL BANNER END-->
660
661					<!--자체 채팅방 (회원 연동) : 중계 2채널 바로 아래-->
662					<style>
663/* ── 노바 채팅 ─────────────────────────────────────────────────────────
664   되도록 단순하게 : 작은 점 + 닉네임 + 말 한 줄.                        */
665#nvc_fab{position:fixed;right:14px;bottom:14px;z-index:9998;display:none;
666    width:56px;height:56px;border-radius:50%;cursor:pointer;padding:0;border:0;
667    background:linear-gradient(135deg,#35dcd8,#1a7f9e);color:#04222a;
668    font-size:11px;font-weight:800;box-shadow:0 8px 22px rgba(0,0,0,.5)}
669#nvc_fab b{display:block;font-size:19px;line-height:1;margin-bottom:1px}
670#nvc_fab.on{display:block}
671#nvc_fab .nvc_new{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;
672    border-radius:9px;background:#ff4d64;color:#fff;font-size:11px;line-height:18px;display:none}
673
674.nvc{position:fixed;right:14px;bottom:14px;z-index:9999;width:326px;
675    background:#12191f;border:1px solid #253440;border-radius:10px;overflow:hidden;
676    box-shadow:0 14px 38px rgba(0,0,0,.55);
677    font-family:'Pretendard Variable','Pretendard',inherit;color:#dbe3e7;
678    display:flex;flex-direction:column}
679.nvc *{box-sizing:border-box}
680
681/* 머리 */
682.nvc_head{display:flex;align-items:center;gap:8px;padding:13px 14px;cursor:pointer;flex:0 0 auto;
683    background:#1a232b;border-bottom:1px solid #253440}
684.nvc_head b{font-size:15px;color:#fff;font-weight:700;letter-spacing:-.3px}
685.nvc_head .nvc_sp{margin-left:auto}
686.nvc_head .nvc_ic{width:26px;height:26px;line-height:24px;text-align:center;padding:0;
687    border:0;border-radius:6px;background:transparent;color:#8ba3ad;font-size:13px;
688    cursor:pointer;text-decoration:none;display:inline-block}
689.nvc_head .nvc_ic:hover{background:#22303a;color:#fff;text-decoration:none}
690
691/* 공지 띠 */
692.nvc_notice{display:none;align-items:flex-start;gap:7px;padding:10px 12px;
693    background:#2a2361;border-bottom:1px solid #37307a;
694    font-size:12.2px;color:#cfc8ff;line-height:1.5}
695.nvc_notice.on{display:flex}
696.nvc_notice em{font-style:normal;flex:0 0 auto}
697.nvc_notice span{flex:1 1 auto;min-width:0}
698.nvc_notice button{flex:0 0 auto;border:0;background:transparent;color:#9d94e0;
699    font-size:14px;line-height:1;cursor:pointer;padding:0 2px}
700.nvc_notice button:hover{color:#fff}
701
702/* 말 목록 */
703.nvc_body{height:330px;overflow-y:auto;overflow-x:hidden;padding:8px 6px;flex:1 1 auto;
704    background:#12191f;-webkit-overflow-scrolling:touch}
705.nvc_body::-webkit-scrollbar{width:6px}
706.nvc_body::-webkit-scrollbar-thumb{background:#253440;border-radius:3px}
707
708.nvc_row{display:block;padding:5px 7px;border-radius:5px;
709    font-size:13.2px;line-height:1.62;word-break:break-all}
710.nvc_row:hover{background:#182229}
711.nvc_row:hover .nvc_x{visibility:visible}
712.nvc_dot{display:inline-block;width:7px;height:7px;border-radius:50%;
713    margin-right:6px;vertical-align:2px;background:#5d7580}
714.nvc_dot.l3{background:#6f9a5f}.nvc_dot.l5{background:#c98d46}
715.nvc_dot.l7{background:#a45fa0}.nvc_dot.l9{background:#4aa6cc}
716.nvc_dot.gst{background:#44555f}
717.nvc_crown{margin-right:5px;font-size:12px;vertical-align:1px}
718.nvc_nk{font-weight:700;color:#6ad6cf}
719.nvc_row.gst .nvc_nk{color:#8fa5af}
720.nvc_row.adm .nvc_nk{color:#ff8fa0}
721.nvc_row.me  .nvc_nk{color:#ffd479}
722.nvc_co{color:#55707c;margin:0 4px 0 3px}
723.nvc_tx{color:#dde5e9}
724.nvc_x{visibility:hidden;float:right;border:0;background:transparent;color:#5f7986;
725    cursor:pointer;font-size:12px;padding:0 1px;line-height:1.5}
726.nvc_x:hover{color:#ff6b7f}
727.nvc_sys{padding:10px 6px;text-align:center;font-size:12.2px;color:#6e8a95;line-height:1.6}
728
729/* 입력칸 */
730.nvc_foot{display:flex;align-items:center;gap:0;padding:9px;flex:0 0 auto;
731    background:#1a232b;border-top:1px solid #253440}
732.nvc_inbox{flex:1 1 auto;min-width:0;display:flex;align-items:center;
733    background:#0e151a;border:1px solid #2a3a45;border-radius:8px;overflow:hidden}
734.nvc_inbox:focus-within{border-color:#35dcd8}
735.nvc_inbox input[type=text]{flex:1 1 auto;min-width:0;height:38px;padding:0 12px;
736    border:0;background:transparent;color:#e6eaed;font-size:13.2px;font-family:inherit}
737.nvc_inbox input[type=text]:focus{outline:0}
738.nvc_emo{flex:0 0 auto;width:38px;height:38px;border:0;background:transparent;
739    color:#c9d6da;font-size:16px;cursor:pointer;padding:0;line-height:1}
740.nvc_emo:hover{color:#fff}
741.nvc_btn{display:none;flex:0 0 auto;height:38px;margin-left:7px;padding:0 14px;border:0;border-radius:8px;
742    cursor:pointer;background:#35dcd8;color:#04222a;font-size:13px;font-weight:800;font-family:inherit}
743
744/* 로그인 안내 */
745.nvc_login{padding:14px;background:#1a232b;border-top:1px solid #253440;
746    text-align:center;font-size:12.5px;color:#9fb2bb;flex:0 0 auto}
747.nvc_lgb{display:flex;gap:8px;margin-top:10px}
748.nvc_lgb a{flex:1 1 0;padding:10px 0;border-radius:8px;font-weight:800;font-size:13px;
749    text-decoration:none;background:#35dcd8;color:#04222a}
750.nvc_lgb a + a{background:transparent;border:1px solid #2a3a45;color:#bfd6dd}
751.nvc_lgb a:hover{filter:brightness(1.1);text-decoration:none}
752
753.nvc_note{padding:8px 12px;background:#12191f;border-top:1px solid #1f2b33;
754    font-size:11.3px;color:#728c97;text-align:center;line-height:1.5;flex:0 0 auto}
755.nvc_note b{color:#8fd6d0;font-weight:700}
756.nvc_note a{color:#35dcd8;font-weight:700;text-decoration:none}
757
758/* 이모지 판 */
759.nvc_pick{display:none;padding:8px;background:#0e151a;border-top:1px solid #253440;
760    max-height:132px;overflow-y:auto;flex:0 0 auto}
761.nvc_pick.on{display:block}
762.nvc_pick button{width:32px;height:30px;border:0;background:transparent;color:#fff;
763    font-size:17px;cursor:pointer;padding:0;border-radius:6px}
764.nvc_pick button:hover{background:#1d2a33}
765
766.nvc_tip{padding:7px 10px;background:#0e151a;border-top:1px solid #253440;
767    font-size:11.5px;color:#8fa8b2;text-align:center;flex:0 0 auto;display:none;line-height:1.5}
768.nvc_tip.on{display:block}
769
770/* 고객센터 배너 */
771.nvc_cs{display:flex;align-items:center;gap:9px;padding:13px 14px;flex:0 0 auto;
772    background:linear-gradient(135deg,#1d5a86 0%,#18445f 100%);
773    color:#fff;text-decoration:none;font-size:13.4px;font-weight:700;letter-spacing:-.2px;
774    border-top:1px solid rgba(255,255,255,.10);transition:filter .15s ease}
775.nvc_cs:hover{filter:brightness(1.14);color:#fff;text-decoration:none}
776.nvc_cs .ic{flex:0 0 auto;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.16);
777    display:flex;align-items:center;justify-content:center;font-size:13px}
778.nvc_cs .tx{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
779.nvc_cs .go{flex:0 0 auto;font-size:18px;opacity:.75}
780/* 주소를 아직 안 넣었을 때 — 관리자에게만 보입니다 */
781.nvc_cs_set{background:#2a2f36;color:#b9c7cf;font-weight:600;
782    border-top:1px dashed rgba(255,255,255,.20)}
783.nvc_cs_set:hover{background:#333a43;color:#fff}
784.nvc_cs_set .ic{background:rgba(255,255,255,.10);font-size:15px}
785
786/* 접었을 때 */
787.nvc.off .nvc_notice,.nvc.off .nvc_body,.nvc.off .nvc_foot,.nvc.off .nvc_login,
788.nvc.off .nvc_pick,.nvc.off .nvc_tip,.nvc.off .nvc_note,.nvc.off .nvc_cs{display:none}
789.nvc.off .nvc_csbox{display:none}
790
791/* 고객센터 배너 — 관리자만 보이는 톱니바퀴와 고치는 칸 */
792.nvc_csbox{position:relative;flex:0 0 auto}
793.nvc_csbox .nvc_cs{padding-right:44px}
794.nvc_cs_gear{position:absolute;top:50%;right:9px;transform:translateY(-50%);
795    width:28px;height:28px;border:0;border-radius:8px;cursor:pointer;padding:0;
796    background:rgba(0,0,0,.28);color:#fff;font-size:14px;line-height:1;opacity:.85}
797.nvc_cs_gear:hover{opacity:1;background:rgba(0,0,0,.45)}
798.nvc_csedit{display:none;padding:13px 14px 14px;background:#0e1620;
799    border-top:1px solid rgba(255,255,255,.10)}
800.nvc_csedit.on{display:block}
801.nvc_cse_hd{font-size:12.5px;font-weight:800;color:#8fe3e3;margin:0 0 9px}
802.nvc_cse_row{display:block;margin:0 0 9px}
803.nvc_cse_row b{display:block;font-size:11.8px;font-weight:700;color:#b7c6cd;margin:0 0 4px}
804.nvc_cse_row i{display:block;font-style:normal;font-size:11px;color:#6f8892;margin:4px 0 0;line-height:1.5}
805.nvc_cse_row input[type=text]{width:100%;height:34px;padding:0 10px;border-radius:7px;
806    border:1px solid #2a3d47;background:#0a1117;color:#e6eef1;font:inherit;font-size:13px}
807.nvc_cse_row input[type=text]:focus{outline:0;border-color:#35dcd8}
808.nvc_cse_sw{display:flex;align-items:center;gap:8px;font-size:12.8px;color:#cfdce1;font-weight:700}
809.nvc_cse_sw input{width:16px;height:16px;accent-color:#35dcd8}
810.nvc_cse_msg{min-height:16px;font-size:11.5px;line-height:1.5;margin:2px 0 8px;color:#8fe3b0}
811.nvc_cse_msg.bad{color:#ff9db0}
812.nvc_cse_btns{display:flex;gap:7px}
813.nvc_cse_ok,.nvc_cse_no{flex:1 1 0;height:34px;border:0;border-radius:7px;cursor:pointer;
814    font:inherit;font-size:12.8px;font-weight:800}
815.nvc_cse_ok{background:#35dcd8;color:#04222a}
816.nvc_cse_no{background:#26323b;color:#c3d0d6}
817.nvc.off{width:210px}
818
819/* 사이드바 붙박이 */
820.nvc.ins{position:static;right:auto;bottom:auto;width:auto;margin:0 0 18px;
821    box-shadow:none;border-radius:11px;border:1px solid rgba(255,255,255,.10);
822    border-top:3px solid #35dcd8;overflow:hidden}
823
824@media (max-width:991px){
825    /* 휴대폰에서는 화면 아래에서 올라오는 서랍처럼 씁니다.
826
827       · 창의 아래쪽 끝을 '메뉴줄 윗변' 에 정확히 맞춥니다.
828         --nv-navh 는 화면 아래에서 메뉴줄 윗변까지의 거리이며,
829         아래 스크립트가 기기마다 재서 넣어 줍니다.
830         전에는 안쪽 여백으로 밀어 놓아서 그만큼 빈 칸이 보였습니다.
831       · 창 높이를 최대한 낮춥니다. 뒤쪽 글이 많이 보이는 쪽이 낫습니다.  */
832    .nvc{display:none;right:0;left:0;width:100%;border-radius:12px 12px 0 0;
833        border-left:0;border-right:0;border-bottom:0;
834        bottom:var(--nv-navh,50px);
835        padding-bottom:0;
836        max-height:72vh;              /* 안전장치일 뿐, 실제 높이는 아래 말 목록이 정합니다 */
837        --nv-rows:7;                  /* 한 번에 보여 줄 말 줄 수 */
838        --nv-rowh:20px}               /* 말 한 줄 높이 (스크립트가 실제 값으로 다시 맞춥니다) */
839    .nvc.open{display:flex}
840    .nvc.open.off{width:100%;max-height:none}
841    .nvc.ins{display:flex;position:static;width:auto;max-height:none;border-radius:11px;
842        border:1px solid rgba(255,255,255,.10);border-top:3px solid #35dcd8}
843
844    /* 위아래 여백을 최소로 — 말 목록 말고는 자리를 거의 안 쓰게 */
845    .nvc:not(.ins) .nvc_head{padding:6px 11px}
846    .nvc:not(.ins) .nvc_head b{font-size:13px}
847    .nvc:not(.ins) .nvc_head .nvc_ic{width:20px;height:20px;line-height:18px;font-size:11.5px}
848    .nvc:not(.ins) .nvc_notice{padding:5px 10px;font-size:11px;line-height:1.35}
849    .nvc:not(.ins) .nvc_notice button{font-size:12.5px}
850
851    /* ★ 말 목록 = 딱 일곱 줄 높이 */
852    .nvc:not(.ins) .nvc_body{
853        flex:0 0 auto; padding:3px 4px;
854        height:calc(var(--nv-rows) * var(--nv-rowh) + 6px);
855        min-height:0; max-height:calc(var(--nv-rows) * var(--nv-rowh) + 6px)}
856    .nvc:not(.ins) .nvc_row{padding:1px 6px;font-size:12.4px;line-height:1.4}
857    .nvc:not(.ins) .nvc_dot{width:6px;height:6px;margin-right:5px}
858    .nvc:not(.ins) .nvc_sys{padding:4px 6px;font-size:11.4px;line-height:1.4}
859
860    .nvc:not(.ins) .nvc_foot{padding:5px 6px}
861    .nvc:not(.ins) .nvc_inbox input[type=text]{height:32px;padding:0 9px}
862    .nvc:not(.ins) .nvc_emo{width:30px;height:32px;font-size:14px}
863    .nvc:not(.ins) .nvc_btn{height:32px;margin-left:5px;padding:0 10px;font-size:12.2px}
864    .nvc:not(.ins) .nvc_pick{padding:5px;max-height:92px}
865    .nvc:not(.ins) .nvc_pick button{width:30px;height:28px}
866    .nvc:not(.ins) .nvc_tip{padding:3px 10px;font-size:11.2px}
867
868    .nvc_btn{display:block}          /* 작은 화면에서는 전송 단추를 보여 줍니다 */
869    /* 동그란 채팅 단추는 없앴습니다. 아래 메뉴줄의 '채팅' 으로 여닫습니다. */
870    #nvc_fab{display:none !important}
871    /* 고객센터 배너는 휴대폰에서는 채팅창이 아니라 ☰ 메뉴 안에 둡니다. */
872    .nvc:not(.ins) .nvc_csbox,
873    .nvc:not(.ins) > .nvc_cs{display:none !important}
874
875    /* ★ 글자를 넣을 때 화면이 확대되는 것 막기
876       아이폰 사파리는 입력칸 글씨가 16px 보다 작으면 저절로 확대합니다.
877       그래서 입력칸 글씨만 16px 로 둡니다. (보이는 크기는 그대로입니다) */
878    .nvc input[type=text],
879    .nvc textarea{font-size:16px !important}
880}
881</style>
882
883
884<div class="nvc ins" id="nvc" role="complementary" aria-label="노바티비 채팅방">
885    <div class="nvc_head" id="nvc_head">
886        <b>노바티비 채팅방</b>
887        <span class="nvc_sp"></span>
888        <button type="button" class="nvc_ic" id="nvc_fold" title="접기">▾</button>
889    </div>
890
891    <div class="nvc_notice" id="nvc_notice">
892        <em>📢</em><span id="nvc_notice_tx"></span>
893        <button type="button" id="nvc_notice_x" title="닫기">✕</button>
894    </div>
895
896    <div class="nvc_body" id="nvc_body" style="height:290px">
897        <div class="nvc_sys">채팅을 불러오는 중입니다…</div>
898    </div>
899
900    <div class="nvc_pick" id="nvc_pick"></div>
901
902    <div class="nvc_foot">
903        <div class="nvc_inbox">
904            <input type="text" id="nvc_in" maxlength="300" autocomplete="off"
905                   placeholder="nova31695 으로 참여 중">
906            <button type="button" class="nvc_emo" id="nvc_emo" title="이모지">😊</button>
907        </div>
908        <button type="button" class="nvc_btn" id="nvc_send">전송</button>
909    </div>
910
911    <div class="nvc_tip" id="nvc_tip"></div>
912
913</div>
914
915<script>
916(function () {
917    var P = {
918        api  : 'https://novasportstv.com/nvchat/api.php',
919        tk   : '87f71fae9c2f61fc12e306d43674392f',
920        poll : 3500,
921        max  : 300    };
922
923    var $ = function (id) { return document.getElementById(id); };
924    var box = $('nvc'), body = $('nvc_body'), fab = $('nvc_fab'),
925        note = $('nvc_notice'), noteTx = $('nvc_notice_tx'), tip = $('nvc_tip'), inp = $('nvc_in');
926    var inline = box.classList.contains('ins');
927
928    var since = 0, timer = null, unseen = 0, busy = false,
929        seen = {}, isMobile = false, lastNotice = null;
930
931    function LS(k, v) {
932        try {
933            if (v === undefined) return localStorage.getItem(k);
934            localStorage.setItem(k, v);
935        } catch (e) {}
936        return null;
937    }
938    function hash(s) {
939        var h = 0, i;
940        for (i = 0; i < s.length; i++) { h = ((h << 5) - h) + s.charCodeAt(i); h |= 0; }
941        return String(h);
942    }
943
944    function checkSize() { isMobile = window.matchMedia('(max-width: 991px)').matches; }
945    checkSize();
946    window.addEventListener('resize', checkSize);
947
948    function openPanel(v) {
949        if (inline) return;
950        if (v) { box.classList.add('open'); if (fab) fab.classList.remove('on'); unseen = 0; paintBadge(); scrollDown(true); }
951        else   { box.classList.remove('open'); if (fab) fab.classList.add('on'); }
952        LS('nvc_open', v ? '1' : '0');
953    }
954    function fold(v) {
955        box.classList.toggle('off', !!v);
956        $('nvc_fold').textContent = v ? '▴' : '▾';
957        LS('nvc_fold', v ? '1' : '0');
958        if (!v) scrollDown(true);
959    }
960    function paintBadge() {
961        var n = unseen > 99 ? '99+' : String(unseen);
962        if (fab) {
963            var b = fab.querySelector('.nvc_new');
964            if (b) { b.style.display = unseen > 0 ? 'block' : 'none'; b.textContent = n; }
965        }
966        /* 아래 메뉴줄의 '채팅' 단추에도 같은 숫자를 띄웁니다 */
967        var outs = document.querySelectorAll('.nv_ft_new');
968        for (var i = 0; i < outs.length; i++) {
969            outs[i].style.display = unseen > 0 ? 'inline-block' : 'none';
970            outs[i].textContent = n;
971        }
972    }
973    function nearBottom() { return body.scrollHeight - body.scrollTop - body.clientHeight < 60; }
974    function scrollDown(force) {
975        fitRows();
976        if (force || nearBottom()) body.scrollTop = body.scrollHeight;
977    }
978
979    function say(t) {
980        if (!t) { tip.className = 'nvc_tip'; return; }
981        tip.textContent = t;
982        tip.className = 'nvc_tip on';
983        clearTimeout(say._t);
984        say._t = setTimeout(function () { tip.className = 'nvc_tip'; }, 4500);
985    }
986
987    /* 한 줄 그리기 : [점] 닉네임 : 말   (글자는 textContent 로만 넣습니다) */
988    function draw(r) {
989        if (!draw._n) draw._n = 0;
990        if (seen[r.i]) return;
991        seen[r.i] = 1;
992
993        var row = document.createElement('div');
994        row.className = 'nvc_row' + (r.a ? ' adm' : (r.g ? ' gst' : ''));
995        row.setAttribute('data-i', r.i);
996
997        if (r.d) {
998            var x = document.createElement('button');
999            x.type = 'button'; x.className = 'nvc_x'; x.textContent = '✕'; x.title = '이 글 지우기';
1000            x.onclick = function () { del(r.i); };
1001            row.appendChild(x);
1002        }
1003
1004        if (r.a) {
1005            var cr = document.createElement('span');
1006            cr.className = 'nvc_crown'; cr.textContent = '👑'; cr.title = '관리자';
1007            row.appendChild(cr);
1008        } else {
1009            var dot = document.createElement('i');
1010            var lv = Math.min(9, Math.max(1, r.l));
1011            var tier = r.g ? 'gst' : (lv >= 9 ? 'l9' : lv >= 7 ? 'l7' : lv >= 5 ? 'l5' : lv >= 3 ? 'l3' : '');
1012            dot.className = 'nvc_dot ' + tier;
1013            dot.title = r.g ? '비회원' : ('레벨 ' + r.l);
1014            row.appendChild(dot);
1015        }
1016
1017        var nk = document.createElement('b');
1018        nk.className = 'nvc_nk';
1019        nk.textContent = r.n;
1020        nk.title = r.n + ' · ' + r.t;
1021        row.appendChild(nk);
1022
1023        var co = document.createElement('span');
1024        co.className = 'nvc_co'; co.textContent = ':';
1025        row.appendChild(co);
1026
1027        var tx = document.createElement('span');
1028        tx.className = 'nvc_tx';
1029        tx.textContent = r.m;
1030        row.appendChild(tx);
1031
1032        body.appendChild(row);
1033        while (body.children.length > 240) body.removeChild(body.firstChild);
1034
1035        if (++draw._n > 1500) {
1036            draw._n = 0;
1037            var keep = {}, el = body.children;
1038            for (var q = 0; q < el.length; q++) {
1039                var k = el[q].getAttribute('data-i');
1040                if (k) keep[k] = 1;
1041            }
1042            seen = keep;
1043        }
1044    }
1045
1046    function post(data, done) {
1047        var x = new XMLHttpRequest();
1048        x.open('POST', P.api, true);
1049        x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
1050        x.onreadystatechange = function () {
1051            if (x.readyState !== 4) return;
1052            var j = null;
1053            try { j = JSON.parse(x.responseText); } catch (e) {}
1054            done(j);
1055        };
1056        var s = [];
1057        for (var k in data) if (data.hasOwnProperty(k)) s.push(encodeURIComponent(k) + '=' + encodeURIComponent(data[k]));
1058        x.send(s.join('&'));
1059    }
1060
1061    function showNotice(t) {
1062        if (t === lastNotice) return;
1063        lastNotice = t;
1064        if (!t) { note.className = 'nvc_notice'; return; }
1065        if (LS('nvc_nx') === hash(t)) { note.className = 'nvc_notice'; return; }
1066        noteTx.textContent = t;
1067        note.className = 'nvc_notice on';
1068    }
1069
1070    function poll() {
1071        if (busy) return;
1072        busy = true;
1073        var x = new XMLHttpRequest();
1074        x.open('GET', P.api + '?m=poll&since=' + since + '&_=' + Date.now(), true);
1075        x.onreadystatechange = function () {
1076            if (x.readyState !== 4) return;
1077            busy = false;
1078            var j = null;
1079            try { j = JSON.parse(x.responseText); } catch (e) { return; }
1080            if (!j || !j.ok) return;
1081
1082            showNotice(j.notice);
1083
1084            if (since === 0) { body.innerHTML = ''; seen = {}; }
1085            var stick = nearBottom(), add = 0;
1086
1087            if (j.rows.length) {
1088                var s0 = body.querySelector('.nvc_sys');
1089                if (s0) s0.parentNode.removeChild(s0);
1090            }
1091            for (var i = 0; i < j.rows.length; i++) {
1092                var r = j.rows[i];
1093                if (r.i > since) since = r.i;
1094                if (!seen[r.i]) add++;
1095                draw(r);
1096            }
1097            if (j.dels && j.dels.length) {
1098                for (var d = 0; d < j.dels.length; d++) {
1099                    var el = body.querySelector('[data-i="' + j.dels[d] + '"]');
1100                    if (el) el.parentNode.removeChild(el);
1101                }
1102            }
1103            if (!body.children.length) {
1104                var e0 = document.createElement('div');
1105                e0.className = 'nvc_sys';
1106                e0.textContent = '아직 올라온 이야기가 없습니다. 첫 글을 남겨 보세요.';
1107                body.appendChild(e0);
1108            }
1109            scrollDown(stick);
1110            if (add && !inline && isMobile && !box.classList.contains('open')) { unseen += add; paintBadge(); }
1111        };
1112        x.send();
1113    }
1114
1115    function send() {
1116        if (!inp) return;
1117        var v = inp.value.replace(/\s+/g, ' ').trim();
1118        if (!v) return;
1119        inp.value = '';
1120        post({ m: 'send', tk: P.tk, msg: v }, function (j) {
1121            if (!j) { say('잠시 뒤 다시 시도해 주세요.'); return; }
1122            if (!j.ok) {
1123                say(j.msg || '보내지 못했습니다.');
1124                if (j.need === 'reload') location.reload();
1125                else if (j.need !== 'login') inp.value = v;
1126                return;
1127            }
1128            if (j.msg) say(j.msg);
1129            poll();
1130        });
1131    }
1132
1133    function del(id) {
1134        post({ m: 'del', tk: P.tk, id: id }, function (j) {
1135            if (j && j.ok) {
1136                var el = body.querySelector('[data-i="' + id + '"]');
1137                if (el) el.parentNode.removeChild(el);
1138            } else if (j && j.msg) { say(j.msg); }
1139        });
1140    }
1141
1142    var EMO = ('😀 😁 😂 🤣 😊 😉 😍 😘 😎 🤔 😐 😴 😢 😭 😡 🤯 👍 👎 👏 🙏 '
1143             + '🔥 ⚡ 💯 🎉 🎯 ⚽ ⚾ 🏀 🏈 🏐 🏆 🥇 💰 📈 📉 ❤ 💔 ⭐ ✅ ❌').split(' ');
1144    (function () {
1145        var p = $('nvc_pick');
1146        for (var i = 0; i < EMO.length; i++) {
1147            (function (e) {
1148                var b = document.createElement('button');
1149                b.type = 'button';
1150                b.textContent = e;
1151                b.onclick = function () {
1152                    if (!inp) return;
1153                    inp.value = (inp.value + e).substring(0, P.max);
1154                    inp.focus();
1155                };
1156                p.appendChild(b);
1157            })(EMO[i]);
1158        }
1159    })();
1160
1161    $('nvc_head').onclick = function (e) {
1162        if (e.target.id === 'nvc_fold' || e.target.id === 'nvc_close' || e.target.tagName === 'A') return;
1163        fold(!box.classList.contains('off'));
1164    };
1165    $('nvc_fold').onclick = function () { fold(!box.classList.contains('off')); };
1166    if ($('nvc_close')) $('nvc_close').onclick = function () {
1167        if (isMobile) openPanel(false);
1168        else { box.style.display = 'none'; if (fab) fab.classList.add('on'); LS('nvc_hide', '1'); }
1169    };
1170    if (fab) fab.onclick = function () {
1171        if (isMobile) openPanel(true);
1172        else { box.style.display = 'flex'; fab.classList.remove('on'); LS('nvc_hide', '0'); }
1173    };
1174
1175    /* 채팅창을 바깥에서 여닫는 손잡이.
1176       아래 메뉴줄의 '채팅' 단추가 이것을 부릅니다. */
1177    window.nvcToggle = function () {
1178        if (inline) {                       /* 사이드바 붙박이일 때는 접었다 폈다 */
1179            fold(!box.classList.contains('off'));
1180            box.scrollIntoView({ behavior: 'smooth', block: 'center' });
1181            return;
1182        }
1183        var shown = box.classList.contains('open') || box.style.display === 'flex';
1184        if (isMobile) {
1185            openPanel(!box.classList.contains('open'));
1186        } else if (shown) {
1187            box.style.display = 'none'; if (fab) fab.classList.add('on'); LS('nvc_hide', '1');
1188        } else {
1189            box.style.display = 'flex'; if (fab) fab.classList.remove('on'); LS('nvc_hide', '0');
1190        }
1191    };
1192    document.addEventListener('click', function (e) {
1193        var t = e.target.closest ? e.target.closest('[data-nvc-open]') : null;
1194        if (!t) return;
1195        e.preventDefault();
1196        window.nvcToggle();
1197    });
1198
1199    /* 말 목록을 '딱 일곱 줄' 높이로 맞춥니다.
1200       글씨 크기나 기기에 따라 한 줄 높이가 조금씩 다르므로
1201       실제로 그려진 줄을 재서 그 값으로 맞춥니다. */
1202    var NVC_ROWS = 7;
1203    function fitRows() {
1204        if (inline) return;
1205        if (!window.matchMedia('(max-width: 991px)').matches) { box.style.removeProperty('--nv-rowh'); return; }
1206        var r = body.querySelector('.nvc_row');
1207        if (!r) return;
1208        var h = r.getBoundingClientRect().height;
1209        if (!(h > 8 && h < 60)) return;
1210        box.style.setProperty('--nv-rows', NVC_ROWS);
1211        box.style.setProperty('--nv-rowh', (Math.round(h * 10) / 10) + 'px');
1212    }
1213
1214    /* 아래 메뉴줄의 실제 높이를 재서 채팅창이 딱 맞게 붙도록 합니다.
1215       기기마다(아이폰 홈 막대 등) 높이가 달라 빈틈이 생기던 것을 막습니다. */
1216    (function () {
1217        function navH() {
1218            var gap;
1219            /* 글자판(키보드)이 올라와 있으면 그 위에 붙입니다.
1220               안 그러면 키보드가 채팅창을 덮어 버립니다. */
1221            var vv = window.visualViewport;
1222            var kb = vv ? Math.round(window.innerHeight - vv.height - vv.offsetTop) : 0;
1223            if (kb > 120) {
1224                gap = kb;
1225            } else {
1226                /* 평소에는 화면 아래에서 메뉴줄 윗변까지의 거리.
1227                   메뉴줄이 어디에 어떻게 붙어 있든 그 위에 딱 올려 놓기 위한 값입니다. */
1228                var n = document.querySelector('.ft_nav') || document.querySelector('.ft_area');
1229                if (!n) return;
1230                var r = n.getBoundingClientRect();
1231                gap = Math.round(window.innerHeight - r.top);
1232                if (!(gap > 0 && gap < 200)) gap = Math.round(r.height) || 50;
1233            }
1234            document.documentElement.style.setProperty('--nv-navh', gap + 'px');
1235        }
1236        var tick = false;
1237        function ask() { if (tick) return; tick = true; requestAnimationFrame(function () { tick = false; navH(); }); }
1238        navH();
1239        window.addEventListener('resize', function () { ask(); fitRows(); });
1240        window.addEventListener('scroll', ask, { passive: true });
1241        window.addEventListener('orientationchange', function () { setTimeout(navH, 250); });
1242        if (window.visualViewport) {
1243            window.visualViewport.addEventListener('resize', ask);
1244            window.visualViewport.addEventListener('scroll', ask);
1245        }
1246        if (inp) {
1247            inp.addEventListener('focus', function () { setTimeout(navH, 120); setTimeout(navH, 420); });
1248            inp.addEventListener('blur',  function () { setTimeout(navH, 120); setTimeout(navH, 420); });
1249        }
1250        setTimeout(navH, 400);
1251        setTimeout(navH, 1200);
1252    })();
1253
1254    /* ── 고객센터 배너 : 톱니바퀴를 누르면 이 자리에서 바로 고칩니다 ──
1255       (최고관리자로 로그인했을 때만 이 칸이 화면에 있습니다)            */
1256    (function () {
1257        var edit = $('nvc_csedit');
1258        if (!edit) return;
1259
1260        var msg = $('cse_msg');
1261        function show(t, bad) { msg.textContent = t || ''; msg.className = 'nvc_cse_msg' + (bad ? ' bad' : ''); }
1262
1263        document.addEventListener('click', function (e) {
1264            var t = e.target.closest ? e.target.closest('[data-cs-edit]') : null;
1265            if (!t) return;
1266            e.preventDefault(); e.stopPropagation();
1267            edit.classList.toggle('on');
1268            show('');
1269            if (edit.classList.contains('on')) {
1270                $('cse_url').focus();
1271                edit.scrollIntoView({ block: 'nearest' });
1272            }
1273        });
1274
1275        $('cse_cancel').onclick = function () { edit.classList.remove('on'); };
1276
1277        $('cse_save').onclick = function () {
1278            var btn = this;
1279            btn.disabled = true; show('저장하는 중…');
1280            var fd = new FormData();
1281            fd.append('m', 'cs');
1282            fd.append('save', '1');
1283            fd.append('tk', P.tk);
1284            fd.append('cs_on',   $('cse_on').checked ? '1' : '0');
1285            fd.append('cs_url',  $('cse_url').value);
1286            fd.append('cs_text', $('cse_text').value);
1287            fd.append('cs_icon', $('cse_icon').value);
1288
1289            fetch(P.api, { method: 'POST', body: fd, credentials: 'same-origin' })
1290                .then(function (r) { return r.json(); })
1291                .then(function (d) {
1292                    btn.disabled = false;
1293                    if (!d || !d.ok) { show((d && d.msg) || '저장하지 못했습니다.', true); return; }
1294
1295                    /* 화면의 배너를 그 자리에서 바꿔 줍니다 */
1296                    var a = $('nvc_cs_link');
1297                    var live = d.on && d.url;
1298                    $('nvc_cs_ic').textContent = live ? (d.icon || '✈') : '+';
1299                    $('nvc_cs_tx').textContent = live ? (d.text || '고객센터') : '고객센터 배너 — 눌러서 주소를 넣어 주세요';
1300                    if (live) {
1301                        a.className = 'nvc_cs';
1302                        a.href = d.url; a.target = '_blank'; a.rel = 'noopener nofollow';
1303                        a.removeAttribute('data-cs-edit');
1304                    } else {
1305                        a.className = 'nvc_cs nvc_cs_set';
1306                        a.href = 'javascript:;'; a.removeAttribute('target'); a.removeAttribute('rel');
1307                        a.setAttribute('data-cs-edit', '');
1308                    }
1309                    $('cse_url').value = d.url || '';
1310                    show('저장했습니다. 손님 화면에도 바로 반영됩니다.');
1311                    setTimeout(function () { edit.classList.remove('on'); show(''); }, 1400);
1312                })
1313                .catch(function () { btn.disabled = false; show('저장하지 못했습니다. 잠시 뒤 다시 해 주세요.', true); });
1314        };
1315    })();
1316    $('nvc_notice_x').onclick = function () {
1317        if (lastNotice) LS('nvc_nx', hash(lastNotice));
1318        note.className = 'nvc_notice';
1319    };
1320
1321    if ($('nvc_emo')) $('nvc_emo').onclick = function () { $('nvc_pick').classList.toggle('on'); };
1322    if ($('nvc_send')) $('nvc_send').onclick = send;
1323    if (inp) inp.onkeydown = function (e) { if (e.keyCode === 13) { e.preventDefault(); send(); } };
1324
1325    if (LS('nvc_fold') === '1') fold(true);
1326    if (!inline) {
1327        /* 휴대폰에서는 페이지를 옮길 때마다 닫힌 채로 시작합니다.
1328           한 번 열면 계속 열려 있어 글을 가리던 것을 고쳤습니다. */
1329        if (isMobile) { box.classList.remove('open'); LS('nvc_open', '0'); }
1330        else if (LS('nvc_hide') === '1') { box.style.display = 'none'; if (fab) fab.classList.add('on'); }
1331    }
1332
1333    function beat() {
1334        clearTimeout(timer);
1335        var ms = document.hidden ? (P.poll * 4) : (box.classList.contains('off') ? (P.poll * 2.5) : P.poll);
1336        timer = setTimeout(function () { poll(); beat(); }, ms);
1337    }
1338    poll();
1339    beat();
1340    document.addEventListener('visibilitychange', function () { if (!document.hidden) poll(); beat(); });
1341})();
1342</script>
1342
1343					<!--채팅방 END-->
1344
1345					<!--최근 분석글 : 왼쪽 칸이 비어 보이지 않게 채우고, 안쪽 링크도 늘려 줍니다-->
1346										<div class="nv_side_list">
1347						<div class="nv_side_ttl">최근 스포츠분석</div>
1348						<ul>
1349													<li><a href="/analysis/467">10월 10일 프리미어리그 첼시 vs 본머스 전력 분석</a></li>
1350													<li><a href="/analysis/466">10월 10일 프리미어리그 아스널 vs 리즈 전력 분석</a></li>
1351													<li><a href="/analysis/465">10월 10일 분데스리가 아우크스부르크 vs 바이에른 뮌헨 전력 분석</a></li>
1352													<li><a href="/analysis/464">10월 9일 K리그1 대전 하나시티즌 vs 전북 현대 전력 분석</a></li>
1353													<li><a href="/analysis/463">10.09 [MLB 디비전시리즈] 뉴욕 양키스 vs 탬파베이</a></li>
1354													<li><a href="/analysis/462">10.09 [MLB 디비전시리즈] 시카고 화이트삭스 vs 클리블랜드</a></li>
1355													<li><a href="/analysis/461">10.08 [MLB 디비전시리즈] 뉴욕 양키스 vs 탬파베이</a></li>
1356													<li><a href="/analysis/460">10.08 [MLB 디비전시리즈] 시카고 화이트삭스 vs 클리블랜드</a></li>
1357												</ul>
1358						<a class="nv_more" href="/analysis">분석 전체 보기</a>
1359					</div>
1360										<!--최근 분석글 END-->
1361
1362					<!--
1363					  이전 사이트에 있던 텔레그램 배너 · 주소 안내 배너 · 바깥 채팅 위젯은 모두 뺐습니다.
1364					  채팅은 우리 서버에서 직접 돌립니다. (/nvchat/api.php · /theme/BS4-Basic/nvchat.php)
1365					-->
1366				</div>
1367				<!--LEFT CONTENTS END-->
1368				<!--RIGHT CONTENTS-->
1369				<div class="gt_contents">
1370
1371										<link rel="stylesheet" href="/css/pc_main.css?2609102" type="text/css">
1372
1373<div class="nv_hero">
1374    
1375    <div class="nv_hero_img">
1376        <img src="/img/nv-main.webp" alt="노바티비 실시간 고화질 스포츠중계 화면">
1377    </div>
1378</div>
1379
1380<div class="nv_main">
1381    <div class="nv_box">
1382<section class="nv_sc nv_sc_lead">
1383    <h1>노바티비 스포츠중계</h1>
1384    <p class="nv_lead">
1385        노바티비는 회원가입이나 별도 프로그램 설치 없이 접속 즉시 시청하는 스포츠중계 사이트입니다.
1386        유럽 축구와 국내외 야구를 비롯해 농구, 배구, 격투기, 테니스, 골프, e스포츠까지 매일 열리는 경기를
1387        <a href="/live1">중계 1채널</a>과 <a href="/live2">
1387중계 2채널</a> 두 갈래로 나누어 편성합니다.
1388        오늘 어떤 경기가 몇 시에 열리는지는 <a href="/schedule">중계 일정</a>에 시작 시간 순서로 정리해 두었고,
1389        경기 시작 전에는 두 팀의 기록을 표로 정리한 <a href="/analysis">스포츠분석</a>을,
1390        경기가 끝난 뒤에는 <a href="/highlights">하이라이트</a>를 이어서 보실 수 있습니다.
1391    </p>
1392    <p class="nv_lead">
1393        해외 리그 경기는 대부분 한국시간으로 밤 늦은 시간이나 새벽에 열리고, 국내 리그는 저녁 시간대에
1394        열립니다. 하루에 열리는 경기가 수십 경기에 이르는 날도 있기 때문에, 아래에서는 종목과 리그별로
1395        경기가 언제 열리고 어느 채널에 편성되는지를 나누어 정리했습니다. 처음 오신 분은
1396        바로 아래 시청 방법부터 읽어 보시면 됩니다.
1397    </p>
1398</section>
1399<section class="nv_sc nv_sc_howto">
1400    <h2>무료 스포츠중계 시청 방법</h2>
1401    <div class="nv_txt">
1402        <p>
1403            시청 절차는 세 단계로 끝납니다. 먼저 <a href="/schedule">중계 일정</a>에서 보고 싶은 경기의
1404            시작 시간과 편성된 채널 번호를 확인합니다. 다음으로 해당 채널 페이지로 이동해 경기 목록에서
1405            원하는 경기를 선택하면 화면에 재생 창이 열립니다. 마지막으로 재생 창 우측 하단의 화질 설정에서
1406            현재 통신 환경에 맞는 해상도를 고르면 됩니다. 로그인 절차가 없기 때문에 이 과정에서
1407            아이디나 비밀번호를 입력할 일은 없고, 시청을 위해 무언가를 내려받아 설치할 필요도 없습니다.
1408        </p>
1409        <p>
1410            채널은 종목에 따라 나뉘어 있습니다. 축구 경기는 <a href="/live1">중계 1채널</a>에,
1411            야구와 농구를 비롯한 나머지 종목은 <a href="/live2">
1411중계 2채널</a>에 편성됩니다.
1412            같은 시간대에 여러 경기가 겹칠 때는 채널 안에서 경기별로 탭이 나뉘므로 탭을 눌러 이동하면 됩니다.
1413            한 경기에 재생 서버가 두 개 이상 연결된 경우도 있는데, 화면이 멈추면 다른 서버 버튼을 눌러
1414            같은 경기를 이어서 볼 수 있습니다. 경기가 시작되기 전에는 채널 목록에 시작 예정 시각이 표시되고,
1415            시작 시각이 지나면 재생 가능 상태로 바뀝니다.
1416        </p>
1417        <p>
1418            재생이 끊기는 대부분의 원인은 해상도와 브라우저입니다. 1080p에서 화면이 자주 멈춘다면
1419            720p로 낮추는 것만으로 해결되는 경우가 많고, 오래된 브라우저에서는 재생 창이 아예 열리지 않을 수
1420            있으므로 크롬이나 사파리 최신 버전을 권장합니다. 광고 차단 확장 프로그램이 재생 창 자체를 가려
1421            화면이 비어 보이는 사례도 있어, 그런 경우에는 해당 확장을 잠시 꺼 보시기 바랍니다.
1422            공용 와이파이처럼 대역폭이 좁은 환경에서는 처음부터 낮은 화질로 시작하는 편이 안정적입니다.
1423        </p>
1424        <p>
1425            데이터 사용량이 신경 쓰인다면 화질 설정을 활용해 주세요. 같은 경기라도 1080p와 480p는
1426            사용하는 데이터 양이 크게 차이 나기 때문에, 이동 중에 휴대폰으로 볼 때는 낮은 화질로 두었다가
1427            와이파이에 연결된 뒤 화질을 올리는 방식이 유용합니다. 화면 크기에 맞춰 재생 창이 자동으로
1428            조절되므로 스마트폰이든 태블릿이든 별도 설정 없이 그대로 보실 수 있습니다.
1429        </p>
1430    </div>
1431</section>
1432<section class="nv_sc nv_sc_soccer">
1433    <h2>축구중계</h2>
1434    <div class="nv_txt">
1435        <p>
1436            축구는 노바티비에서 가장 많은 경기가 편성되는 종목입니다. 유럽 5대 리그와 챔피언스리그,
1437            그리고 K리그까지 주중과 주말을 나누어 중계 1채널에 배치합니다.
1438            유럽 리그는 8월에 개막해 이듬해 5월에 끝나는 일정이 공통이고, 경기 대부분이 한국시간으로
1439            밤 늦은 시간부터 새벽 사이에 열리기 때문에 시작 시각을 미리 확인해 두는 편이 좋습니다.
1440            리그별 경기 시간과 편성 채널은 중계 일정에 매일 갱신되고,
1441            경기 전날에는 두 팀의 최근 흐름과 결장 정보를 정리한 <a href="/analysis">스포츠분석</a>이 올라옵니다.
1442        </p>
1443    </div>
1444
1445    <div class="nv_league">
1446        <h3>프리미어리그(EPL) 중계</h3>
1447        <p>
1448            잉글랜드 1부 리그로 20개 구단이 한 시즌 38라운드를 치릅니다. 8월에 개막해 이듬해 5월에 마치며,
1449            경기는 주로 한국시간 토요일 밤 9시대부터 일요일 새벽 사이에 몰려 있습니다. 토요일 같은 시각에
1450            서너 경기가 동시에 시작되는 시간대가 있어, 그런 날에는 채널 안에 경기별 탭이 여러 개 생깁니다.
1451            순위표 상단의 우승 경쟁뿐 아니라 유럽 대항전 진출권이 걸린 중상위권 다툼과 강등을 피하려는
1452            하위권 싸움이 마지막 라운드까지 이어지는 경우가 많아, 중위권 이하 맞대결도 순위에 미치는 영향이 큽니다.
1453            12월 말 박싱데이 기간에는 사흘 간격으로 라운드가 이어져 한 주에 두세 경기가 편성되기도 합니다.
1454        </p>
1455
1456        <h3>라리가 중계</h3>
1457        <p>
1458            스페인 1부 리그로 20개 구단이 38라운드를 치릅니다. 금요일부터 월요일까지 나흘에 걸쳐 경기가
1459            분산되는 것이 특징이라, 한 라운드가 사실상 나흘 동안 진행됩니다. 한국시간으로는 대체로 새벽
1460            시간대에 열리고, 여름과 겨울에 현지 시각 기준이 바뀌면서 한 시간 정도 시작 시각이 달라집니다.
1461            시즌 중 두 차례 열리는 엘 클라시코와 마드리드 더비는 다른 경기와 시간이 겹치지 않도록
1462            단독 시간대에 배치합니다. 기술적인 경기 운영을 앞세우는 팀이 많아 점유율 싸움이 길게 이어지는
1463            경기가 자주 나옵니다. 이번 라운드 일정
1464        </p>
1465
1466        <h3>분데스리가 중계</h3>
1467        <p>
1468            독일 1부 리그로 18개 구단이 34라운드를 치릅니다. 금요일 밤 단독 경기로 라운드가 시작되고
1469            토요일 오후에 여러 경기가 한꺼번에 열리는 일정이 반복되는데, 한국시간으로는 토요일 밤 11시 30분
1470            전후에 여러 경기가 동시에 시작됩니다. 경기당 득점이 유럽 주요 리그 가운데 높은 편이라
1471            점수가 자주 나는 경기를 선호하신다면 챙겨 볼 만합니다. 리그 18위와 17위는 2부 리그 상위 팀과
1472            승강 플레이오프를 치르기 때문에, 시즌 막판 하위권 순위 하나가 그대로 잔류 여부로 이어집니다.
1473        </p>
1474
1475        <h3>세리에A 중계</h3>
1476        <p>
1477            이탈리아 1부 리그로 20개 구단이 38라운드를 치릅니다. 토요일과 일요일에 경기가 나뉘어 열리며
1478            한국시간 기준으로는 새벽 시간대가 중심이고, 일요일 이른 저녁에 시작하는 경기도 한두 경기 있습니다.
1479            수비 조직을 촘촘하게 짜는 팀이 많아 한두 골 차로 갈리는 경기가 자주 나오는 리그로 알려져 있습니다.
1480            밀라노 두 팀이 맞붙는 더비와 유벤투스·토리노의 지역 라이벌전은 별도 시간대에 편성합니다.
1481            겨울에는 짧은 휴식기가 있어 라운드가 한 주 비는 시기가 있습니다.
1482        </p>
1483
1484        <h3>리그앙 중계</h3>
1485        <p>
1486            프랑스 1부 리그로 18개 구단이 34라운드를 치릅니다. 금요일 밤부터 일요일까지 경기가 이어지고
1487            한국시간으로는 새벽에 열리는 경우가 많습니다. 젊은 선수들이 빠르게 성장해 다른 리그로 이적하는
1488            흐름이 뚜렷해, 시즌마다 새로운 이름이 득점 순위 상단에 오르는 것을 보는 재미가 있습니다.
1489            팀 간 전력 차가 큰 편이라 상위 팀과 하위 팀의 맞대결에서 점수가 크게 벌어지는 경기가 나오기도 합니다.
1490            리그 경기 수가 34라운드로 적어 한 경기의 승점이 순위에 미치는 영향이 상대적으로 큽니다.
1491        </p>
1492
1493        <h3>챔피언스리그 중계</h3>
1494        <p>
1495            유럽 각국 리그 상위 팀들이 겨루는 대회입니다. 36개 팀이 참가하는 리그 페이즈에서 팀당 8경기를
1496            치르고, 한 장의 순위표로 성적을 매겨 상위 팀은 16강에 직행하고 그다음 순위 팀들은 플레이오프를
1497            거쳐 올라갑니다. 경기는 한국시간 화요일과 수요일 새벽에 집중되며, 같은 시간대에 여러 경기가
1498            동시에 시작되는 날이 많아 그날은 채널 탭이 가장 많이 생깁니다. 토너먼트 단계부터는 1·2차전
1499            합산으로 승부가 갈리기 때문에 1차전 원정 경기 결과가 2차전의 흐름을 좌우합니다.
1500        </p>
1501
1502        <h3>K리그 중계</h3>
1503        <p>
1504            국내 프로축구로 K리그1은 12개 구단이 정규 라운드를 치른 뒤 상위 그룹과 하위 그룹으로 나뉘어
1505            남은 경기를 진행합니다. 그룹이 나뉜 뒤에는 상위 그룹 안에서 우승과 아시아 대회 진출권이,
1506            하위 그룹 안에서 잔류 여부가 결정됩니다. 해외 리그와 달리 한국시간 그대로 주말 오후와 저녁에
1507            열려 시차 부담이 없고, 한여름에는 더위를 피해 저녁 시간대로 옮겨 편성되는 경기가 늘어납니다.
1508            시즌이 끝나면 K리그2 상위 팀과 승강 플레이오프가 열리며, 이 경기들도 함께 편성합니다.
1509        </p>
1510
1511        <h3>국가대표 축구중계</h3>
1512        <p>
1513            월드컵과 아시안컵, 유로 대회를 비롯한 국가 대항전과 예선 경기도 일정에 맞춰 편성합니다.
1514            대회 기간에는 클럽 리그가 잠시 멈추기 때문에 그 기간의 편성은 대표팀 경기 중심으로 바뀝니다.
1515            한국 대표팀 경기는 개최 지역에 따라 시작 시각이 크게 달라지는데, 아시아 지역에서 열리면 저녁,
1516            유럽이나 미주 지역에서 열리면 새벽에 시작합니다. 예선은 국제 경기 기간에 맞춰 사흘 간격으로
1517            두 경기가 연달아 열리는 경우가 많아, 두 경기 사이의 선수 구성 변화가 결과에 영향을 줍니다.
1518        </p>
1519    </div>
1520</section>
1521<section class="nv_sc nv_sc_baseball">
1522    <h2>야구중계</h2>
1523    <div class="nv_txt">
1524        <p>
1525            야구는 경기 수가 많아 시즌 중에는 거의 매일 편성됩니다. 국내 프로야구는 저녁 시간대에,
1526            미국과 일본 리그는 한국시간 기준 오전과 낮에 열리기 때문에 아침부터 밤까지 경기가 이어지는
1527            날도 있습니다. 야구 경기는 모두 중계 2채ë„
1527ì— 배치하며, 같은 시간에
1528            여러 경기가 열릴 때는 채널 안에서 경기별 탭으로 나뉩니다. 야구는 선발 투수가 하루 전에
1529            예고되기 때문에, 다른 종목보다 경기 전에 확인할 수 있는 정보가 많은 편입니다.
1530            양 팀 선발의 성적은 전날 올라오는 스포츠분석에 정리됩니다.
1531        </p>
1532    </div>
1533
1534    <div class="nv_league">
1535        <h3>KBO 중계</h3>
1536        <p>
1537            국내 프로야구는 10개 구단이 팀당 144경기를 치릅니다. 월요일을 제외한 화요일부터 일요일까지
1538            주 6일 경기가 열리고, 평일은 저녁 6시 30분, 주말은 오후 시간대에 시작합니다. 봄과 가을에는
1539            기온을 고려해 주말 경기가 이른 오후에 배치되고, 한여름에는 조금 늦춰 편성되기도 합니다.
1540            비로 경기가 취소되면 이후 일정이 통째로 밀리면서 더블헤더가 생기는 경우가 있어,
1541            경기 당일 중계 일정을 한 번 더 확인하시는 편이 정확합니다.
1542            정규 시즌이 끝나면 와일드카드 결정전부터 준플레이오프, 플레이오프, 한국시리즈까지
1543            포스트시즌 경기를 이어서 편성합니다.
1544        </p>
1545
1546        <h3>MLB 중계</h3>
1547        <p>
1548            미국 프로야구는 30개 구단이 팀당 162경기를 치르는 긴 시즌입니다. 3월 말에 개막해 9월 말까지
1549            정규 시즌이 이어지고, 한국시간으로는 대체로 오전 8시부터 낮 시간대에 경기가 열립니다.
1550            동부 지역 팀들의 야간 경기는 한국시간 오전 이른 시각에 시작하고, 서부 지역 경기는 낮에
1551            시작하는 식으로 지역에 따라 시간대가 나뉩니다. 같은 팀끼리 사흘이나 나흘 연속으로 맞붙는
1552            시리즈 방식이라 앞 경기 결과가 다음 경기의 투수 운영에 그대로 영향을 줍니다.
1553            10월에는 와일드카드 시리즈부터 리그 챔피언십 시리즈, 월드시리즈까지 포스트시즌이 이어집니다.
1554        </p>
1555
1556        <h3>NPB 중계</h3>
1557        <p>
1558            일본 프로야구는 센트럴리그와 퍼시픽리그 각 6개 구단, 모두 12개 구단이 팀당 143경기를 치릅니다.
1559            한국과 시차가 없어 평일 저녁 6시 전후에 시작하며, KBO 경기와 시간대가 겹치는 날이 많아
1560            같은 시간에 두 리그가 함께 편성됩니다. 시즌 중반에는 두 리그가 맞붙는 교류전 기간이 있고,
1561            시즌이 끝나면 각 리그 상위 세 팀이 겨루는 클라이맥스 시리즈를 거쳐 일본시리즈로 이어집니다.
1562            연장 승부에 이닝 제한이 있어 무승부로 끝나는 경기가 나오는 점이 국내 리그와 다릅니다.
1563        </p>
1564
1565        <h3>국제 야구대회 중계</h3>
1566        <p>
1567            국가 대항전이 열리는 해에는 대회 일정에 맞춰 대표팀 경기를 편성합니다. 개최 지역에 따라
1568            한국시간 기준 시작 시각이 크게 달라져, 국내나 일본에서 열리면 저녁, 미국에서 열리면 오전에
1569            시작합니다. 대회 기간에는 각국 프로 리그가 잠시 멈추거나 일정을 조정하기 때문에
1570            그 기간의 편성도 대표팀 경기 중심으로 바뀝니다. 조별 리그와 토너먼트가 짧은 기간에
1571            연달아 진행되므로 중계 일정에서 날짜별로 확인해 주세요.
1572        </p>
1573    </div>
1574</section>
1575<section class="nv_sc nv_sc_basket">
1576    <h2>농구중계</h2>
1577    <div class="nv_txt">
1578        <p>
1579            농구는 가을에 시작해 봄에 끝나는 종목이라 축구·야구와 시즌이 엇갈립니다. 야구 시즌이 끝나는
1580            시기에 농구 경기가 늘어나기 때문에 겨울철 중계 2채ë„
1580ì˜ 중심은 농구가 됩니다.
1581            경기 시간이 두 시간 남짓으로 비교적 짧고 점수가 자주 나기 때문에 중간부터 보더라도 흐름을
1582            따라가기 쉬운 편이며, 쿼터별 점수는 <a href="/livescore">라이브스코어</a>에서 함께 확인할 수 있습니다.
1583        </p>
1584    </div>
1585
1586    <div class="nv_league">
1587        <h3>NBA 중계</h3>
1588        <p>
1589            미국 프로농구는 30개 구단이 팀당 82경기를 치릅니다. 10월 말에 개막해 4월 중순에 정규 시즌을
1590            마치고, 이후 플레이오프가 6월까지 이어집니다. 한국시간으로는 오전 9시부터 정오 사이에 경기가
1591            몰려 있어 출근 시간대나 점심 무렵에 보기 좋고, 주말에는 낮 경기도 편성됩니다.
1592            하루에 열 경기 이상이 동시에 열리는 날도 있어 그런 날에는 순위 경쟁에 영향이 큰 경기를 우선
1593            배치합니다. 정규 시즌 막판에는 플레이오프 마지막 자리를 두고 치르는 별도 경기가 있어
1594            순위표 하단 팀들의 경기도 의미가 커집니다. 플레이오프는 모든 라운드가 7전 4선승제로 진행돼
1595            같은 두 팀의 경기가 이틀 간격으로 이어집니다. 오늘 경기 확인
1596        </p>
1597
1598        <h3>KBL 중계</h3>
1599        <p>
1600            국내 프로농구는 10개 구단이 정규 시즌을 치른 뒤 상위 여섯 팀이 6강 플레이오프부터
1601            챔피언 결정전까지 이어갑니다. 10월에 개막해 이듬해 봄에 마치며, 평일 저녁 7시 전후에 시작해
1602            국내 시청자에게 시간대가 가장 편한 종목 가운데 하나입니다. 주말에는 오후 경기가 배치되고,
1603            설과 추석 연휴에는 낮 경기가 늘어납니다. 외국인 선수 출전 규정이 쿼터별로 정해져 있어
1604            경기 후반 어느 쿼터에 누가 나오는지가 승부에 직접 영향을 줍니다.
1605            같은 시즌에 열리는 여자프로농구 경기도 일정에 맞춰 함께 편성합니다.
1606        </p>
1607    </div>
1608</section>
1609<section class="nv_sc nv_sc_etc">
1610    <h2>배구·격투기·테니스·골프 중계</h2>
1611    <div class="nv_txt">
1612        <p>
1613            축구와 야구, 농구 외에도 시즌과 대회 일정에 맞춰 여러 종목을 편성합니다. 아래 종목은
1614            대회가 열리는 기간에만 중계 2채널에 배치되므로, 오늘 편성 여부는
1615            중계 일정에서 확인하시는 것이 정확합니다. 종목마다 경기 길이와
1616            시작 시각이 크게 다르기 때문에, 대회 기간에는 시작 시각과 함께 예상 종료 시각도 함께 표시합니다.
1617        </p>
1618    </div>
1619
1620    <div class="nv_league">
1621        <h3>배구중계</h3>
1622        <p>
1623            국내 프로배구는 남자부와 여자부가 각각 10월에 개막해 이듬해 봄 챔피언 결정전까지 이어집니다.
1624            평일 저녁 7시 전후에 시작하고 주말에는 오후 경기가 배치되며, 남자부와 여자부 경기가 같은 날
1625            시간을 나누어 열리는 경우가 많습니다. 한 세트가 25점제로 짧게 끊어지고 세트마다 흐름이
1626            바뀌기 때문에 중간에 들어와도 부담이 적은 종목입니다. 승점 방식이 세트 스코어에 따라 달라져서
1627            3대 2로 이긴 경기와 3대 0으로 이긴 경기의 승점이 다르고, 이 차이가 시즌 막판 순위를 가르기도 합니다.
1628            국제대회 기간에는 대표팀 경기도 함께 편성합니다.
1629        </p>
1630
1631        <h3>UFC 중계</h3>
1632        <p>
1633            UFC는 넘버링 대회와 파이트 나이트로 나뉘어 거의 매주 열립니다. 미국 현지 밤 시간에 시작하므로
1634            한국시간으로는 일요일 또는 월요일 오전에 메인 경기가 진행됩니다. 초반 경기부터 메인 이벤트까지
1635            대여섯 시간이 이어지기 때문에, 메인 경기가 시작되는 시각을 일정 페이지에 따로 표시해
1636            그 시간에 맞춰 보실 수 있도록 안내합니다. 대회 직전에 계체량 결과에 따라 경기 순서나 체급이
1637            바뀌는 경우가 있어, 변경 사항이 확인되면 일정에 바로 반영합니다.
1638        </p>
1639
1640        <h3>테니스중계</h3>
1641        <p>
1642            호주오픈, 프랑스오픈, 윔블던, US오픈 네 개 메이저 대회를 중심으로 편성합니다. 대회 기간에는
1643            2주 동안 매일 경기가 이어지고, 대회가 열리는 지역에 따라 한국시간 기준 시간대가 크게 달라집니다.
1644            호주오픈은 오전, 유럽에서 열리는 두 대회는 저녁부터 새벽, US오픈은 새벽과 오전에 주로 열립니다.
1645            남자 단식은 5세트 경기라 한 경기가 네 시간을 넘기는 일도 있어, 앞 경기가 길어지면 뒤 경기
1646            시작 시각이 밀립니다. 그래서 대회 기간 일정에는 확정 시각 대신 앞 경기 종료 후 시작으로
1647            표시되는 경기가 생깁니다.
1648        </p>
1649
1650        <h3>골프중계</h3>
1651        <p>
1652            남녀 프로 투어의 주요 대회를 목요일 1라운드부터 일요일 최종 라운드까지 편성합니다.
1653            미국에서 열리는 대회는 한국시간으로 새벽부터 오전 사이에 진행되고, 아시아 지역 대회는
1654            낮 시간대에 열립니다. 라운드 하나가 다섯 시간 이상 이어지기 때문에 처음부터 끝까지 보기보다는
1655            선두권 조가 도는 후반부에 시청이 몰리는 편입니다. 최종 라운드 마지막 몇 홀에서 순위가 자주
1656            뒤집히고, 동타로 끝나면 연장전이 이어지므로 종료 시각이 예정보다 늦어질 수 있습니다.
1657        </p>
1658    </div>
1659</section>
1660<section class="nv_sc nv_sc_esports">
1661    <h2>e스포츠(LoL) 중계</h2>
1662    <div class="nv_txt">
1663        <p>
1664            리그 오브 레전드 국내 리그는 봄과 여름 두 차례 정규 시즌을 치르고, 각 시즌이 끝나면
1665            플레이오프로 우승 팀을 가립니다. 경기는 평일과 주말 모두 한국시간 오후 5시 전후에 시작해
1666            밤까지 이어지며, 하루에 두 매치가 연달아 배치되는 날이 많습니다. 한 매치가 다전제로
1667            진행되기 때문에 두세 시간이 걸리고, 마지막 세트까지 가면 예정보다 늦게 끝납니다.
1668            시차 없이 볼 수 있는 종목이라 퇴근 시간대에 이어서 보기 좋습니다.
1669        </p>
1670        <p>
1671            정규 시즌 순위는 플레이오프 대진과 국제 대회 진출권으로 이어지기 때문에, 시즌 후반에는
1672            순위가 걸린 매치의 비중이 커집니다. 경기 전 밴픽 단계에서 어떤 챔피언을 걸러내는지에 따라
1673            경기 양상이 달라져, 첫 세트 밴픽만 봐도 두 팀이 준비한 방향을 가늠할 수 있습니다.
1674        </p>
1675        <p>
1676            연말에는 각 지역 리그 상위 팀들이 모이는 국제 대회가 열립니다. 개최 지역에 따라 경기 시작
1677            시각이 달라지므로 대회 기간에는 중계 일정에 매일 시작 시각을 표시합니다.
1678            주요 경기의 하이라이트는 경기가 끝나는 대로 <a href="/highlights">하이라이트</a> 페이지에 정리합니다.
1679        </p>
1680    </div>
1681</section>
1682<section class="nv_sc nv_sc_schedule">
1683    <h2>오늘의 중계 일정</h2>
1684    <div class="nv_txt">
1685        <p>
1686            오늘 편성된 경기를 시작 시간 순서로 정리했습니다. 시간은 모두 한국시간 기준이며, 리그와 팀 이름,
1687            시작 시각, 편성된 채널 번호를 함께 표시합니다. 해외 리그 경기는 날짜가 넘어간 새벽에 시작하는
1688            경우가 많은데, 그런 경기도 전날 목록에 함께 넣어 두어 밤에 확인할 수 있게 했습니다.
1689        </p>
1690        <p>
1691            우천 취소나 대회 사정으로 시간이 바뀌면 표에도 함께 반영되므로, 경기 직전에 한 번 더 확인해 주세요.
1692            내일 경기까지 한 번에 보시려면 중계 일정 페이지를 이용하시고,
1693            경기별 기록 정리는 스포츠분석에서 보실 수 있습니다.
1694        </p>
1695    </div>
1696    <div class="nv_sched_wrap nv_sched_none">
1697        <p>오늘 편성된 경기는 중계 일정 페이지에서 확인하실 수 있습니다.</p>
1698    </div>
1699</section>
1700<section class="nv_sc nv_sc_livescore">
1701    <h2>라이브스코어·라인업 안내</h2>
1702    <div class="nv_txt">
1703        <p>
1704            <a href="/livescore">라이브스코어</a> 페이지에서는 지금 진행 중인 경기의 점수와 경과 시간을
1705            종목별로 모아 봅니다. 화면을 새로 고치지 않아도 점수가 갱신되기 때문에, 여러 경기가 동시에
1706            열리는 주말 밤이나 새벽에 어느 경기를 볼지 고르는 용도로 쓰기 좋습니다. 축구는 전·후반 경과
1707            시간과 득점자, 야구는 이닝과 주자 상황, 농구는 쿼터별 점수, 배구는 세트 스코어까지 함께 표시됩니다.
1708            경기가 끝난 뒤에도 그날 결과가 남아 있어 놓친 경기의 최종 점수를 확인할 수 있습니다.
1709        </p>
1710        <p>
1711            선발 라인업은 축구의 경우 경기 시작 약 한 시간 전에 공개됩니다. 누가 선발로 나오고 누가
1712            결장하는지는 경기 흐름에 크게 영향을 주기 때문에, 라인업이 나오는 대로
1713            스포츠분석 글의 전력 변수 항목에 반영합니다. 부상이나 경고 누적으로
1714            빠지는 선수는 포지션까지 함께 적어, 어느 쪽 전력에 공백이 생기는지 알 수 있게 정리합니다.
1715        </p>
1716        <p>
1717            야구는 선발 투수가 하루 전에 예고되므로 분석 글에 양 팀 선발의 시즌 성적과 최근 등판 기록,
1718            상대 팀을 상대한 성적이 함께 들어갑니다. 농구와 배구는 경기 직전에 나오는 출전 명단을
1719            기준으로 하며, 명단이 늦게 확정되는 종목은 확인된 시점에 글을 갱신합니다.
1720        </p>
1721    </div>
1722</section>
1723<section class="nv_sc nv_sc_faq">
1724    <h2>노바티비 이용 안내</h2>
1725    <dl class="nv_faq">
1726        <dt>회원가입을 해야 시청할 수 있나요?</dt>
1727        <dd>
1728            아닙니다. 채널 페이지에 들어가 경기를 선택하면 바로 재생됩니다. 시청에는 로그인이 필요 없고
1729            아이디나 비밀번호를 입력하는 화면도 나오지 않습니다. 무언가를 내려받아 설치할 필요도 없으며,
1730            브라우저만 있으면 됩니다.
1731        </dd>
1732
1733        <dt>화면이 자꾸 멈추는데 어떻게 하나요?</dt>
1734        <dd>
1735            먼저 재생 창의 화질을 1080p에서 720p로 낮춰 보세요. 그래도 같다면 같은 경기에 다른 재생 서버가
1736            연결되어 있는지 확인해 서버를 바꿔 보시고, 브라우저를 최신 버전으로 올린 뒤 다시 시도해 주세요.
1737            광고 차단 확장 프로그램이 재생 창을 가리는 경우도 있으니, 화면이 아예 비어 보인다면 그 확장을
1738            잠시 꺼 보시기 바랍니다.
1739        </dd>
1740
1741        <dt>휴대폰으로도 볼 수 있나요?</dt>
1742        <dd>
1743            화면 크기에 맞춰 재생 창이 자동으로 조절되므로 스마트폰과 태블릿에서도 별도 설정 없이 그대로
1744            시청할 수 있습니다. 이동 중에는 화질을 낮춰 두었다가 와이파이에 연결된 뒤 올리는 방식이
1745            데이터 사용량을 줄이는 데 도움이 됩니다.
1746        </dd>
1747
1748        <dt>오늘 무슨 경기가 열리는지 어디서 보나요?</dt>
1749        <dd>
1750            중계 일정 페이지에 오늘과 내일 경기가 시작 시간 순서로 정리되어 있습니다.
1751            리그와 팀 이름, 시작 시각, 편성된 채널 번호를 함께 표시하며, 메인 화면 위쪽의 오늘의 중계 일정
1752            표에서도 같은 내용을 보실 수 있습니다.
1753        </dd>
1754
1755        <dt>스포츠분석에는 어떤 내용이 있나요?</dt>
1756        <dd>
1757            두 팀의 순위와 최근 다섯 경기 결과, 홈·원정 기록, 상대전적, 결장 선수처럼 공개된 기록을 표로
1758            정리한 글입니다. 경기 전날 올라오며, 선발 명단이 발표되면 그 내용까지 반영해 갱신하고
1759            경기가 끝나면 최종 점수를 덧붙입니다. 기록을 정리한 글이므로 승패를 단정하는 내용은 담지 않습니다.
1760        </dd>
1761
1762        <dt>경기가 일정과 다르게 진행됐어요.</dt>
1763        <dd>
1764            우천 취소나 대회 사정으로 시간이 바뀌는 경우가 있습니다. 변경 사항은 일정 페이지에 바로 반영하며,
1765            중계 자체가 어려운 상황은 <a href="/notice">공지사항</a>에 안내합니다. 자주 묻는 내용이나
1766            서비스 변경 사항도 공지사항에 올라옵니다.
1767        </dd>
1768    </dl>
1769</section>
1770<section class="nv_sc nv_sc_latest">
1771    <h2>노바티비 최신 글</h2>
1772    <div class="nv_latest_box">
1773        <div class="nv_lat">
1774    <h3 class="nv_lat_tit"><a href="https://novasportstv.com/analysis">스포츠분석</a></h3>
1775    <ul class="nv_lat_list">
1776            <li>
1777            <a href="https://novasportstv.com/analysis/467">10월 10일 프리미어리그 첼시 vs 본머스 전력 분석</a>
1778            <span class="nv_lat_date">08:43</span>
1779        </li>
1780            <li>
1781            <a href="https://novasportstv.com/analysis/466">10월 10일 프리미어리그 아스널 vs 리즈 전력 분석</a>
1782            <span class="nv_lat_date">08:58</span>
1783        </li>
1784            <li>
1785            <a href="https://novasportstv.com/analysis/465">10월 10일 분데스리가 아우크스부르크 vs 바이에른 뮌헨 전력 분석</a>
1786            <span class="nv_lat_date">08:26</span>
1787        </li>
1788            <li>
1789            <a href="https://novasportstv.com/analysis/464">10월 9일 K리그1 대전 하나시티즌 vs 전북 현대 전력 분석</a>
1790            <span class="nv_lat_date">10-08</span>
1791        </li>
1792            <li>
1793            <a href="https://novasportstv.com/analysis/463">10.09 [MLB 디비전시리즈] 뉴욕 양키스 vs 탬파베이</a>
1794            <span class="nv_lat_date">10-08</span>
1795        </li>
1796            <li>
1797            <a href="https://novasportstv.com/analysis/462">10.09 [MLB 디비전시리즈] 시카고 화이트삭스 vs 클리블랜드</a>
1798            <span class="nv_lat_date">10-08</span>
1799        </li>
1800            </ul>
1801    <a href="https://novasportstv.com/analysis" class="nv_lat_more">스포츠분석 더보기</a>
1802</div>
1803    </div>
1804    <div class="nv_latest_box">
1805                <div class="nv_lat">
1806    <h3 class="nv_lat_tit"><a href="https://novasportstv.com/schedule">중계 일정</a></h3>
1807    <ul class="nv_lat_list">
1808            <li>
1809            <a href="https://novasportstv.com/schedule/52">10월 10일(토) 스포츠 중계 일정 — 분데스리가 · 리그앙 · 라리가 · N…</a>
1810            <span class="nv_lat_date">08:36</span>
1811        </li>
1812            <li>
1813            <a href="https://novasportstv.com/schedule/51">10월 9일(금) 스포츠 중계 일정 — NBA · NHL · MLB · NFL …</a>
1814            <span class="nv_lat_date">10-08</span>
1815        </li>
1816            <li>
1817            <a href="https://novasportstv.com/schedule/50">10월 8일(목) 스포츠 중계 일정 — MLB · NBA · NHL · NPB …</a>
1818            <span class="nv_lat_date">10-07</span>
1819        </li>
1820            <li>
1821            <a href="https://novasportstv.com/schedule/49">10월 7일(수) 스포츠 중계 일정 — MLB · NBA · NHL · MLS …</a>
1822            <span class="nv_lat_date">10-06</span>
1823        </li>
1824            <li>
1825            <a href="https://novasportstv.com/schedule/48">10월 6일(화) 스포츠 중계 일정 — MLB · NBA · NHL · NFL …</a>
1826            <span class="nv_lat_date">10-05</span>
1827        </li>
1828            <li>
1829            <a href="https://novasportstv.com/schedule/47">10월 5일(월) 스포츠 중계 일정 — NFL · NHL · MLB · NBA …</a>
1830            <span class="nv_lat_date">10-04</span>
1831        </li>
1832            </ul>
1833    <a href="https://novasportstv.com/schedule" class="nv_lat_more">중계 일정 더보기</a>
1834</div>
1835    </div>
1836    <div class="nv_latest_box">
1837        <div class="nv_lat">
1838    <h3 class="nv_lat_tit"><a href="https://novasportstv.com/highlights">하이라이트</a></h3>
1839    <ul class="nv_lat_list">
1840            <li>
1841            <a href="https://novasportstv.com/highlights/232">[NHL] 9월 21일 내슈빌 프레더터스 vs 탬파베이 라이트닝 하이라이트</a>
1842            <span class="nv_lat_date">09-21</span>
1843        </li>
1844            <li>
1845            <a href="https://novasportstv.com/highlights/231">[NFL] 9월 21일 시애틀 시호크스 vs 애리조나 카디널스 하이라이트</a>
1846            <span class="nv_lat_date">09-21</span>
1847        </li>
1848            <li>
1849            <a href="https://novasportstv.com/highlights/230">[NFL] 9월 21일 워싱턴 커맨더스 vs 댈러스 카우보이스 하이라이트</a>
1850            <span class="nv_lat_date">09-21</span>
1851        </li>
1852            <li>
1853            <a href="https://novasportstv.com/highlights/229">[분데스리가] 9월 21일 프랑크푸르트 vs 프라이부르크 하이라이트</a>
1854            <span class="nv_lat_date">09-21</span>
1855        </li>
1856            <li>
1857            <a href="https://novasportstv.com/highlights/228">[MLB] 9월 21일 뉴욕 양키스 vs 애리조나 다이아몬드백스 하이라이트</a>
1858            <span class="nv_lat_date">09-21</span>
1859        </li>
1860            <li>
1861            <a href="https://novasportstv.com/highlights/227">[세리에A] 9월 21일 유벤투스 2-0 아탈란타 하이라이트</a>
1862            <span class="nv_lat_date">09-21</span>
1863        </li>
1864            </ul>
1865    <a href="https://novasportstv.com/highlights" class="nv_lat_more">하이라이트 더보기</a>
1866</div>
1867    </div>
1868    <div class="nv_latest_box">
1869        <div class="nv_lat">
1870    <h3 class="nv_lat_tit"><a href="https://novasportstv.com/notice">공지사항</a></h3>
1871    <ul class="nv_lat_list">
1872            <li>
1873            <a href="https://novasportstv.com/notice/5">저작권 정책과 삭제 요청 절차</a>
1874            <span class="nv_lat_date">09-09</span>
1875        </li>
1876            <li>
1877            <a href="https://novasportstv.com/notice/4">종목별 채널 편성표와 시간대 안내</a>
1878            <span class="nv_lat_date">09-08</span>
1879        </li>
1880            <li>
1881            <a href="https://novasportstv.com/notice/3">스마트폰·태블릿에서 데이터 아끼며 보기</a>
1882            <span class="nv_lat_date">09-07</span>
1883        </li>
1884            <li>
1885            <a href="https://novasportstv.com/notice/2">화면이 멈추거나 안 나올 때 — 원인별 해결 순서</a>
1886            <span class="nv_lat_date">09-06</span>
1887        </li>
1888            </ul>
1889    <a href="https://novasportstv.com/notice" class="nv_lat_more">공지사항 더보기</a>
1890</div>
1891    </div>
1892</section>
1893    </div>
1894</div>
1895                </div>
1896            </div>
1897        </div>
1898    </div>
1899</main>
1900
1901<footer id="new_ft" class="ft_wrap">
1902    <div class="ft_area">
1903        <div class="ft_con">
1904            <div class="ft_size">
1905                <div class="nv_ft">
1906
1907                    <a href="/" class="nv_logo nv_ft_logo" aria-label="노바티비 홈">
1908                        <span class="nv_logo_mk" aria-hidden="true"></span>
1909                        <span class="nv_logo_tx">
1910                            <b>NOVA<i>TV</i></b>
1911                            <em>스포츠중계 노바티비</em>
1912                        </span>
1913                    </a>
1914
1915                    <p class="nv_ft_note">
1916                        노바티비는 웹상에 공개된 링크 정보를 모아 안내하는 사이트입니다.
1917                        저작권에 위배되는 영상이 있을 경우 확인 즉시 삭제 조치합니다.
1918                    </p>
1919                    <p class="nv_ft_note">
1920                        실시간 스트리밍은 저작권에 위배되는 영상의 송출을 제한하며,
1921                        방송통신심의위원회의 규정을 준수합니다.
1922                    </p>
1923
1924                    <p class="nv_ft_copy">
1925                        © 2026 노바티비 · novasportstv.com · All rights reserved.
1926                    </p>
1927                    <p class="nv_ft_copy nv_ft_en">
1928                        NOVA TV operates in compliance with national and international law.
1929                        Unauthorized copying or reproduction will be reported.
1930                    </p>
1931
1932                </div>
1933            </div>
1934        </div>
1935    </div>
1936</footer>
1937
1938</div><!-- .wrapper -->
1939<div class="password_modal_wrap">
1940    <div class="password_modalcon">
1941        <div class="password_modalbox">
1942            <div class="pw_modal_ttl">정보 찾기</div>
1943            <div class="password_stat">
1944                
1945                <div class="stat_telme">
1946                    <a href="/bbs/password_lost.php">아이디 · 비밀번호 찾기</a>
1947                </div>
1948            </div>
1949            <div class="modal_close">
1950                <a href="#">창 닫기</a>
1951            </div>
1952        </div>
1953    </div>
1954</div>
1955
1956<aside id="nt_sidebar" class=" font-weight-normal">
1957
1958
1959		
1960	<!-- sidebar-content : 스크롤바 생성을 위해서 -->
1961	<div  id="nt_sidebar_body" class="sidebar-content pb-5">
1962	<!-- Top Head -->
1963	<div id="nt_sidebar_header" class="sidebar-head na-shadow  px-3 mb-0">
1964		<div class="clearfix f-mo font-weight-bold en nv_sb_head">
1965			<div class="login_name">
1966							<div class="login_lv">
1967					<img src="/nariya/skin/level/nicon/1.gif?2609102" alt="노바티비 회원 레벨 아이콘">
1968				</div>
1969				<p>
1970					<a href="/bbs/register_form.php">로그인을 해주세요!</a>
1971				</p>
1972							<a href="javascript:;" class="float-right sidebar-close" title="닫기">
1973					<i class="fa fa-times text-white" aria-hidden="true"></i>
1974					<span class="sr-only">닫기</span>
1975				</a>
1976			</div>
1977		</div>
1978	</div>
1979	
1980
1981		<div class="mt-n1">
1982							<div class="btn-group w-100" role="group" aria-label="Member Menu">
1983					<a href="https://novasportstv.com/bbs/login.php?url=https://novasportstv.com%2F" class="btn btn-primary text-white rounded-0" onclick="sidebar('login'); return false;" role="button">
1984						로그인
1985					</a>
1986					<a href="https://novasportstv.com/bbs/register.php" class="btn btn-primary text-white win" role="button">
1987						회원가입
1988					</a>
1989					<a href="https://novasportstv.com/bbs/password_lost.php" class="btn btn-primary text-white rounded-0" role="button">
1990						정보찾기
1991					</a>
1992				</div>
1993				<!-- Login -->
1994				<div id="sidebar-login" class="sidebar-item">
1995					<div class="p-3 bg-white border-bottom">
1996	<form id="sidebar_login" name="sidebar_login" method="post" action="https://novasportstv.com/bbs/login_check.php" autocomplete="off">
1997	<input type="hidden" name="url" value="https://novasportstv.com%2F">
1998
1999		<div class="form-group f-sm">
2000			<div class="custom-control custom-switch">
2001			  <input type="checkbox" name="auto_login" class="custom-control-input remember-me" id="sidebar_remember_me">
2002			  <label class="custom-control-label float-left" for="sidebar_remember_me">자동로그인</label>
2003			</div>
2004		</div>
2005
2006		<div class="form-group">
2007			<label for="sidebar_mb_id" class="sr-only">아이디<strong class="sr-only"> 필수</strong></label>						
2008			<div class="input-group">
2009				<div class="input-group-prepend">
2010					<span class="input-group-text"><i class="fa fa-user text-muted"></i></span>
2011				</div>
2012				<input type="text" name="mb_id" id="sidebar_mb_id" class="form-control required" placeholder="아이디">
2013			</div>
2014		</div>
2015		<div class="form-group">
2016			<label for="sidebar_mb_password" class="sr-only">비밀번호<strong class="sr-only"> 필수</strong></label>									
2017			<div class="input-group">
2018				<div class="input-group-prepend">
2019					<span class="input-group-text"><i class="fa fa-lock text-muted"></i></span>
2020				</div>
2021				<input type="password" name="mb_password" id="sidebar_mb_password" class="form-control required" placeholder="비밀번호">
2022			</div>
2023		</div>
2024		<div class="form-group mb-0">
2025			<button type="submit" class="btn btn-primary btn-block btn-lg en">
2026				로그인
2027			</button>    
2028		</div>	
2029	</form>
2030</div>
2031
2032<div class="position-relative p-3 pb-5 font-weight-normal">
2033	</div>				</div>
2034					</div>
2035
2036		<!-- Menu -->
2037		<div id="sidebar-menu" class="sidebar-item">
2038			<style>
2039/* 아이콘 색 — 청록 계열로 맞춤 */
2040.side_nav .side_navbox .nav_item > a .icon {
2041    filter: invert(65%) sepia(87%) saturate(616%) hue-rotate(140deg) brightness(103%) contrast(96%);
2042}
2043.side_nav .side_navbox .nav_item.item_0 > a .icon { background-image: url(/img/nav_icon_01.png); }
2044.side_nav .side_navbox .nav_item.item_1 > a .icon { background-image: url(/img/nav_icon_02.png); }
2045.side_nav .side_navbox .nav_item.item_2 > a .icon { background-image: url(/img/nav_icon_03.png); }
2046.side_nav .side_navbox .nav_item.item_3 > a .icon { background-image: url(/img/nav_icon_04.png); }
2047.side_nav .side_navbox .nav_item.item_4 > a .icon { background-image: url(/img/nav_icon_05.png); }
2048.side_nav .side_navbox .nav_item.item_5 > a .icon { background-image: url(/img/nav_icon_06.png); }
2049.side_nav .side_navbox .nav_item.item_6 > a .icon { background-image: url(/img/nav_icon_07.png); }
2050.side_nav .side_navbox .nav_item.item_7 > a .icon { background-image: url(/img/nav_icon_08.png); }
2051
2052/* ── 모바일 목록형 메뉴 ── */
2053html.is-mobile .side_nav .side_navbox,
2054html.is-mobile .nav_depsbox { display: none !important; }
2055
2056.nv_mnav { margin: 0; padding: 6px 0 14px; list-style: none; }
2057.nv_mnav_group { border-bottom: 1px solid rgba(255,255,255,.08); }
2058.nv_mnav_head {
2059    display: flex; align-items: center; gap: 10px;
2060    min-height: 52px; padding: 0 16px;
2061    font-size: 17px; font-weight: 600; line-height: 1.4; color: #e6eaed;
2062    text-decoration: none; border-left: 3px solid transparent;
2063}
2064.nv_mnav_head:hover, .nv_mnav_head:active { color: #2ec4c4; text-decoration: none; border-left-color: #2ec4c4; }
2065.nv_mnav_head .nv_mnav_txt { flex: 1 1 auto; min-width: 0; }
2066.nv_mnav_head .nv_mnav_arrow { flex: 0 0 auto; font-size: 13px; color: #7f8a92; transition: transform .18s; }
2067.nv_mnav_group.is-open > .nv_mnav_head { color: #2ec4c4; border-left-color: #2ec4c4; }
2068.nv_mnav_group.is-open > .nv_mnav_head .nv_mnav_arrow { transform: rotate(180deg); }
2069
2070.nv_mnav_sub { display: none; margin: 0; padding: 0 0 8px; list-style: none; background: rgba(0,0,0,.18); }
2071.nv_mnav_group.is-open > .nv_mnav_sub { display: block; }
2072.nv_mnav_sub > li > a {
2073    display: flex; align-items: center; min-height: 46px; padding: 0 16px 0 30px;
2074    font-size: 15.5px; line-height: 1.45; color: #b8c1c8; text-decoration: none;
2075}
2076.nv_mnav_sub > li > a:hover, .nv_mnav_sub > li > a:active { color: #2ec4c4; text-decoration: none; }
2077</style>
2078
2079
2080	<div class="side_nav">
2081		<ul class="side_navbox">
2082							<li class="nav_item item_0">
2083					<a href="/" data-link="DEPS_0">
2084						<div class="icon"></div>
2085						<span>홈</span>
2086					</a>
2087				</li>
2088							<li class="nav_item item_1">
2089					<a href="/live1" data-link="DEPS_1">
2090						<div class="icon"></div>
2091						<span>스포츠중계</span>
2092					</a>
2093				</li>
2094							<li class="nav_item item_2">
2095					<a href="/schedule" data-link="DEPS_2">
2096						<div class="icon"></div>
2097						<span>경기일정</span>
2098					</a>
2099				</li>
2100							<li class="nav_item item_3">
2101					<a href="/analysis" data-link="DEPS_3">
2102						<div class="icon"></div>
2103						<span>스포츠분석</span>
2104					</a>
2105				</li>
2106							<li class="nav_item item_4">
2107					<a href="/highlights" data-link="DEPS_4">
2108						<div class="icon"></div>
2109						<span>하이라이트</span>
2110					</a>
2111				</li>
2112							<li class="nav_item item_5">
2113					<a href="/livescore" data-link="DEPS_5">
2114						<div class="icon"></div>
2115						<span>라이브스코어</span>
2116					</a>
2117				</li>
2118							<li class="nav_item item_6">
2119					<a href="/notice" data-link="DEPS_6">
2120						<div class="icon"></div>
2121						<span>공지사항</span>
2122					</a>
2123				</li>
2124					</ul>
2125		<div class="nav_depsbox">
2126																			<ul id="DEPS_1" class="dpes_item ">
2127												<li><a href="/live1" target="_self">중계 1채널</a></li>
2128											<li><a href="/live2" target="_self">
2128중계 2채널</a></li>
2129										</ul>
2130																																												<ul id="DEPS_6" class="dpes_item ">
2131												<li><a href="/notice" target="_self">공지사항</a></li>
2132											<li><a href="/event" target="_self">이벤트</a></li>
2133										</ul>
2134									</div>
2135	</div>
2136
2137	
2137<script>
2138	    $('.nav_item > a').click(function () {
2139	        var name = $(this).attr('data-link');
2140	        $('.dpes_item').removeClass('active');
2141	        $('#' + name).addClass('active');
2142	    })
2143	</script>
2143
2144
2145		</div>
2146
2147		<!-- Noti -->
2148		<div id="sidebar-noti" class="sidebar-item">
2149			<div id="sidebar-noti-list"></div>
2150		</div>
2151
2152		<!-- [노바] 고객센터 배너 — 휴대폰에서는 채팅창이 아니라 이 메뉴 안에 둡니다.
2153		     주소는 채팅 설정(cs_url)에서 가져오며, 비어 있으면 아무것도 안 나옵니다. -->
2154		
2155	</div>
2156
2157	<div id="nt_sidebar_footer"></div>
2158</aside>
2159
2160<div id="nt_sidebar_mask" class="sidebar-close"></div>
2161
2162
2163<!-- 상단이동 버튼 -->
2164<div id="nt_sidebar_move">
2165	<span class="sidebar-move-top cursor"><i class="fa fa-chevron-up"></i></span>
2166	<span class="sidebar-move-bottom cursor"><i class="fa fa-chevron-down"></i></span>
2167</div>
2168
2169<script>
2170var sidebar_url = "https://novasportstv.com/theme/BS4-Basic/widget/sidebar";
2171var sidebar_noti_check = 0;
2172</script>
vendor: 1 bytes, line 2172
2172
2173<script src="https://novasportstv.com/theme/BS4-Basic/widget/sidebar/widget.js?ver=2609102"></script>
2173
2174<!-- } 하단 끝 -->
2175<script>
2176/* [노바] 글 안의 표가 화면보다 넓을 때 잘리지 않게, 좌우로 밀어 볼 수 있는 칸으로 감쌉니다.
2177   휴대폰에서 경기일정·경기결과 표가 오른쪽이 잘려 보이던 것을 고치기 위한 것입니다. */
2178(function () {
2179    function wrapTables() {
2180        var list = document.querySelectorAll('#bo_v_con table, .nv-info table, .nv_main table');
2181        for (var i = 0; i < list.length; i++) {
2182            var t = list[i];
2183            if (t.parentNode && t.parentNode.className === 'nv_tw') continue;
2184            var w = document.createElement('div');
2185            w.className = 'nv_tw';
2186            t.parentNode.insertBefore(w, t);
2187            w.appendChild(t);
2188        }
2189    }
2190    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', wrapTables);
2191    else wrapTables();
2192})();
2193</script>
2193
2194 
2194<script>
2195 $(document).ready(function() {
2196    $("#findPasswd").click(function() {
2197        $(".password_modal_wrap").show();
2198    });
2199
2200    $("#findPasswd2").click(function() {
2201        $(".password_modal_wrap").show();
2202    });
2203
2204    $(".modal_close").click(function() {
2205        $(".password_modal_wrap").hide();
2206    })
2207});
2208</script>
vendor: 1 bytes, line 2208
2208
2209<script>
2210// 컨텐츠 영역 최소 높이
2211$(document).ready(function() {
2212    na_content_height('nt_body', 'nt_header', 'nt_footer');
2213    $(window).resize(function() {
2214        na_content_height('nt_body', 'nt_header', 'nt_footer');
2215    });
2216});
2217</script>
2217
2218
2219
2220<script>
2221/* 메인 본문 맨 위에 '빠른 이동' 단추줄을 만들어 넣습니다 (글만 있는 화면을 덜 답답하게) */
2222(function () {
2223    function toc() {
2224        var box = document.querySelector('.nv_main .nv_box');
2225        if (!box || document.querySelector('.nv_toc')) return;
2226        var secs = box.querySelectorAll('section.nv_sc');
2227        if (secs.length < 4) return;
2228
2229        var wrap = document.createElement('div');
2230        wrap.className = 'nv_toc';
2231        var lb = document.createElement('b');
2232        lb.textContent = '빠른 이동';
2233        wrap.appendChild(lb);
2234
2235        var n = 0;
2236        for (var i = 0; i < secs.length; i++) {
2237            var h = secs[i].querySelector('h2');
2238            if (!h) continue;
2239            if (!secs[i].id) secs[i].id = 'nvs' + i;
2240            var a = document.createElement('a');
2241            a.href = '#' + secs[i].id;
2242            a.textContent = h.textContent.trim();
2243            wrap.appendChild(a);
2244            n++;
2245        }
2246        if (n >= 3) box.insertBefore(wrap, box.firstChild);
2247    }
2248    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', toc);
2249    else toc();
2250})();
2251
2252/* 게시판이 비었을 때 '최신 글' 위젯에 생기는 빈 줄을 치웁니다 */
2253(function () {
2254    function clean() {
2255        var li = document.querySelectorAll('.latest_cont li');
2256        for (var i = 0; i < li.length; i++) {
2257            var a = li[i].querySelector('a.na-subject');
2258            if (!a || a.textContent.trim() === '') li[i].className += ' nv_empty';
2259        }
2260    }
2261    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', clean);
2262    else clean();
2263})();
2264
2265/* 우리 사이트 안으로 가는 링크는 새 창을 띄우지 않고 보던 창에서 엽니다 */
2266(function () {
2267    function fix() {
2268        var a = document.querySelectorAll('a[target="_blank"]');
2269        for (var i = 0; i < a.length; i++) {
2270            if (a[i].hostname === location.hostname) {
2271                a[i].removeAttribute('target');
2272                a[i].removeAttribute('rel');
2273            }
2274        }
2275    }
2276    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fix);
2277    else fix();
2278})();
2279</script>
2279
2280
2281<!-- Nariya 나리야빌더 1.2.18 -->
2282
2283
2284
2285
2286<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"42f495e2b713494a9bb5ed80978a185a","r":1,"spa":2}' crossorigin="anonymous"></script>
2286
2287</body>
2288</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.