soiz1 commited on
Commit
9d28e40
·
1 Parent(s): c607128

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +718 -662
index.html CHANGED
@@ -231,667 +231,719 @@ document.addEventListener('DOMContentLoaded', function () {
231
  <link href="https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c&display=swap" rel="stylesheet">
232
  <title>文化発表会動画プレイヤー</title>
233
  <style>
234
- /* テクノロジー風背景スタイル */
235
- .tech-background {
236
- position: fixed;
237
- top: 0;
238
- left: 0;
239
- width: 100%;
240
- height: 100%;
241
- z-index: -2;
242
- background: linear-gradient(135deg, #0f0c29, #302b63, #24243e);
243
- overflow: hidden;
244
- }
245
- .circuit-line {
246
- position: absolute;
247
- background: rgba(0, 255, 255, 0.1);
248
- box-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
249
- }
250
- .grid-dot {
251
- position: absolute;
252
- width: 2px;
253
- height: 2px;
254
- background: rgba(0, 255, 255, 0.3);
255
- border-radius: 50%;
256
- }
257
- .hexagon {
258
- position: absolute;
259
- width: 40px;
260
- height: 23px;
261
- background: rgba(0, 255, 255, 0.05);
262
- border: 1px solid rgba(0, 255, 255, 0.1);
263
- box-shadow: 0 0 5px rgba(0, 255, 255, 0.2);
264
- }
265
- .hexagon:before, .hexagon:after {
266
- content: "";
267
- position: absolute;
268
- width: 0;
269
- border-left: 20px solid transparent;
270
- border-right: 20px solid transparent;
271
- }
272
- .hexagon:before {
273
- bottom: 100%;
274
- border-bottom: 11.5px solid rgba(0, 255, 255, 0.05);
275
- }
276
- .hexagon:after {
277
- top: 100%;
278
- width: 0;
279
- border-top: 11.5px solid rgba(0, 255, 255, 0.05);
280
- }
281
- .pulse {
282
- position: absolute;
283
- width: 10px;
284
- height: 10px;
285
- background: rgba(0, 255, 255, 0.7);
286
- border-radius: 50%;
287
- box-shadow: 0 0 10px 5px rgba(0, 255, 255, 0.5);
288
- animation: pulse 2s infinite;
289
- }
290
- @keyframes pulse {
291
- 0% { transform: scale(0.8); opacity: 0.7; }
292
- 50% { transform: scale(1.2); opacity: 1; }
293
- 100% { transform: scale(0.8); opacity: 0.7; }
294
- }
295
- @keyframes float {
296
- 0% { transform: translateY(0) rotate(0deg); }
297
- 50% { transform: translateY(-20px) rotate(5deg); }
298
- 100% { transform: translateY(0) rotate(0deg); }
299
- }
300
- /* メインスタイル */
301
- body {
302
- font-family: "M PLUS Rounded 1c", 'Arial', sans-serif;
303
- background-color: rgba(10, 25, 47, 0.8);
304
- color: #e6f1ff;
305
- margin: 0;
306
- padding: 20px;
307
- display: flex;
308
- flex-direction: column;
309
- align-items: center;
310
- min-height: 100vh;
311
- }
312
- h1 {
313
- color: #a2c2e8;
314
- text-align: center;
315
- margin-bottom: 30px;
316
- border-bottom: 1px solid #64ffda;
317
- padding-bottom: 10px;
318
- width: 100%;
319
- }
320
- .container {
321
- display: flex;
322
- flex-direction: column;
323
- width: 100%;
324
- max-width: 1000px;
325
- background-color: rgba(17, 34, 64, 0.3);
326
- border-radius: 10px;
327
- padding: 20px;
328
- box-shadow: 0 0 20px rgba(100, 255, 218, 0.2);
329
- backdrop-filter: blur(5px);
330
- border: 1px solid rgba(100, 255, 218, 0.1);
331
- }
332
- .video-container {
333
- position: relative;
334
- width: 100%;
335
- margin-bottom: 20px;
336
- }
337
- video {
338
- width: 100%;
339
- border-radius: 5px;
340
- background-color: #000;
341
- display: block;
342
- cursor: pointer;
343
- }
344
- .video-controls {
345
- background-color: rgba(17, 34, 64, 0.2);
346
- padding: 10px;
347
- border-radius: 0 0 5px 5px;
348
- display: flex;
349
- flex-direction: column;
350
- gap: 10px;
351
- transition: opacity 0.3s;
352
- }
353
- .progress-container {
354
- width: 100%;
355
- height: 10px;
356
- background-color: #1e2a47;
357
- border-radius: 5px;
358
- cursor: pointer;
359
- position: relative;
360
- }
361
- .progress-bar {
362
- height: 100%;
363
- background-color: #64ffda;
364
- border-radius: 5px;
365
- width: 0%;
366
- position: relative;
367
- }
368
- .progress-time {
369
- position: absolute;
370
- top: -25px;
371
- transform: translateX(-50%);
372
- background-color: rgba(30, 42, 71, 0.9);
373
- padding: 3px 6px;
374
- border-radius: 3px;
375
- font-size: 12px;
376
- display: none;
377
- white-space: nowrap;
378
- }
379
- /* プログレスバーのマーカー */
380
- .progress-marker {
381
- position: absolute;
382
- bottom: 0px;
383
- width: 0;
384
- height: 0;
385
- border-left: 5px solid transparent;
386
- border-right: 5px solid transparent;
387
- border-top: 10px solid #ff5555;
388
- transform: translateX(-50%);
389
- z-index: 2;
390
- }
391
- .main-controls {
392
- display: flex;
393
- align-items: center;
394
- gap: 15px;
395
- }
396
- .control-button {
397
- background: none;
398
- border: none;
399
- color: #e6f1ff;
400
- font-size: 18px;
401
- cursor: pointer;
402
- padding: 5px;
403
- border-radius: 50%;
404
- width: 36px;
405
- height: 36px;
406
- display: flex;
407
- align-items: center;
408
- justify-content: center;
409
- transition: background-color 0.3s;
410
- }
411
- .control-button:hover {
412
- background-color: rgba(100, 255, 218, 0.2);
413
- }
414
- .time-display {
415
- font-size: 14px;
416
- color: #ccd6f6;
417
- white-space: nowrap;
418
- }
419
- .volume-control {
420
- display: flex;
421
- align-items: center;
422
- gap: 5px;
423
- margin-left: auto;
424
- }
425
- .volume-button {
426
- background: none;
427
- border: none;
428
- color: #e6f1ff;
429
- font-size: 18px;
430
- cursor: pointer;
431
- padding: 5px;
432
- }
433
- .volume-slider {
434
- width: 80px;
435
- height: 6px;
436
- -webkit-appearance: none;
437
- background: #1e2a47;
438
- border-radius: 3px;
439
- outline: none;
440
- opacity: 0;
441
- transition: opacity 0.3s, width 0.3s;
442
- background-image: linear-gradient(#6aebfc, #6aebfc);
443
- background-size: 100% 100%;
444
- background-repeat: no-repeat;
445
- }
446
- .volume-control:hover .volume-slider {
447
- opacity: 1;
448
- width: 100px;
449
- }
450
- .volume-slider::-webkit-slider-thumb {
451
- -webkit-appearance: none;
452
- width: 12px;
453
- height: 12px;
454
- background: #6aebfc;
455
- border-radius: 50%;
456
- cursor: pointer;
457
- }
458
- .speed-control {
459
- display: flex;
460
- align-items: center;
461
- gap: 5px;
462
- }
463
- .speed-slider {
464
- width: 120px;
465
- height: 6px;
466
- -webkit-appearance: none;
467
- background: #1e2a47;
468
- border-radius: 3px;
469
- outline: none;
470
- background-image: linear-gradient(#64d1ff, #64d1ff);
471
- background-size: 100% 100%;
472
- background-repeat: no-repeat;
473
- }
474
- .speed-slider::-webkit-slider-thumb {
475
- -webkit-appearance: none;
476
- width: 12px;
477
- height: 12px;
478
- background: #5bb7de;
479
- border-radius: 50%;
480
- cursor: pointer;
481
- }
482
- .speed-value {
483
- font-size: 14px;
484
- min-width: 30px;
485
- text-align: center;
486
- }
487
- .fullscreen-button {
488
- margin-left: 10px;
489
- }
490
- .audio-controls {
491
- display: flex;
492
- flex-direction: column;
493
- gap: 10px;
494
- margin-bottom: 15px;
495
- }
496
- .audio-item {
497
- display: flex;
498
- align-items: center;
499
- gap: 10px;
500
- }
501
- .audio-item label {
502
- min-width: 50px;
503
- color: #9ab3d9;
504
- }
505
- .audio-slider {
506
- flex-grow: 1;
507
- height: 8px;
508
- -webkit-appearance: none;
509
- background: #1e2a47;
510
- border-radius: 5px;
511
- outline: none;
512
- background-image: linear-gradient(#64ffda, #64ffda);
513
- background-size: 100% 100%;
514
- background-repeat: no-repeat;
515
- }
516
- .audio-slider::-webkit-slider-thumb {
517
- -webkit-appearance: none;
518
- width: 18px;
519
- height: 18px;
520
- background: #64ffda;
521
- border-radius: 50%;
522
- cursor: pointer;
523
- }
524
- .settings {
525
- background-color: rbga(30, 42, 71, 0.3);
526
- padding: 15px;
527
- border-radius: 5px;
528
- margin-bottom: 20px;
529
- }
530
- .setting-item {
531
- display: flex;
532
- justify-content: space-between;
533
- align-items: center;
534
- margin-bottom: 10px;
535
- }
536
- .setting-item:last-child {
537
- margin-bottom: 0;
538
- }
539
- .setting-item label {
540
- color: #ccd6f6;
541
- }
542
- .global-volume-container, .playback-speed-container {
543
- display: flex;
544
- align-items: center;
545
- gap: 10px;
546
- width: 100%;
547
- }
548
- .global-volume-slider, .playback-speed-slider {
549
- flex-grow: 1;
550
- height: 8px;
551
- -webkit-appearance: none;
552
- background: #1e2a47;
553
- border-radius: 5px;
554
- outline: none;
555
- background-image: linear-gradient(#64ffda, #64ffda);
556
- background-size: 100% 100%;
557
- background-repeat: no-repeat;
558
- }
559
- .global-volume-slider::-webkit-slider-thumb,
560
- .playback-speed-slider::-webkit-slider-thumb {
561
- -webkit-appearance: none;
562
- width: 16px;
563
- height: 16px;
564
- background: #64ffda;
565
- border-radius: 50%;
566
- cursor: pointer;
567
- }
568
- .slider-value {
569
- min-width: 40px;
570
- text-align: right;
571
- }
572
- input[type="number"], input[type="checkbox"], select {
573
- background-color: #112240;
574
- border: 1px solid #64ffda;
575
- color: #e6f1ff;
576
- padding: 5px;
577
- border-radius: 3px;
578
- }
579
- .tech-decoration {
580
- width: 100%;
581
- height: 2px;
582
- background: linear-gradient(90deg, transparent, #64ffda, transparent);
583
- margin: 20px 0;
584
- }
585
- /* 全画面時のスタイル */
586
- .video-container:-webkit-full-screen {
587
- width: 100%;
588
- height: 100%;
589
- background-color: black;
590
- }
591
- .video-container:-webkit-full-screen video {
592
- width: 100%;
593
- height: 100%;
594
- }
595
- .video-container:-webkit-full-screen .video-controls {
596
- position: fixed;
597
- bottom: 0;
598
- left: 0;
599
- right: 0;
600
- width: 100%;
601
- border-radius: 0;
602
- }
603
- /* ローディングアニメーション */
604
- .loading-overlay {
605
- position: fixed;
606
- top: 0;
607
- left: 0;
608
- width: 100%;
609
- height: 100%;
610
- background-color: rgba(0, 0, 0, 0.8);
611
- display: flex;
612
- justify-content: center;
613
- align-items: center;
614
- z-index: 9998;
615
- transition: opacity 1s ease-out;
616
- }
617
- .spinner-box {
618
- width: 300px;
619
- height: 300px;
620
- display: flex;
621
- justify-content: center;
622
- align-items: center;
623
- background-color: transparent;
624
- }
625
- /* 軌道スタイル */
626
- .leo {
627
- position: absolute;
628
- display: flex;
629
- justify-content: center;
630
- align-items: center;
631
- border-radius: 50%;
632
- }
633
- .blue-orbit {
634
- width: 165px;
635
- height: 165px;
636
- border: 1px solid #91daffa5;
637
- animation: spin3D 3s linear .2s infinite;
638
- }
639
- .green-orbit {
640
- width: 120px;
641
- height: 120px;
642
- border: 1px solid #91ffbfa5;
643
- animation: spin3D 2s linear 0s infinite;
644
- }
645
- .red-orbit {
646
- width: 90px;
647
- height: 90px;
648
- border: 1px solid #ffca91a5;
649
- animation: spin3D 1s linear 0s infinite;
650
- }
651
- .white-orbit {
652
- width: 60px;
653
- height: 60px;
654
- border: 2px solid #ffffff;
655
- animation: spin3D 10s linear 0s infinite;
656
- }
657
- .w1 {
658
- transform: rotate3D(1, 1, 1, 90deg);
659
- }
660
- .w2 {
661
- transform: rotate3D(1, 2, .5, 90deg);
662
- }
663
- .w3 {
664
- transform: rotate3D(.5, 1, 2, 90deg);
665
- }
666
- /* キーフレームアニメーション */
667
- @keyframes spin3D {
668
- from {
669
- transform: rotate3d(.5,.5,.5, 360deg);
670
- }
671
- to {
672
- transform: rotate3d(0,0,0, 0deg);
673
- }
674
- }
675
- @keyframes spin {
676
- from {
677
- transform: rotate(0deg);
678
- }
679
- to {
680
- transform: rotate(360deg);
681
- }
682
- }
683
- .time-set-button {
684
- background-color: #112240;
685
- border: 1px solid #64ffda;
686
- color: #e6f1ff;
687
- padding: 5px 10px;
688
- border-radius: 3px;
689
- cursor: pointer;
690
- font-size: 12px;
691
- margin-left: 5px;
692
- transition: background-color 0.3s;
693
- }
694
- .time-set-button:hover {
695
- background-color: rgba(100, 255, 218, 0.2);
696
- }
697
- /* 合成ボタンスタイル */
698
- .combine-button {
699
- background-color: #97c2f0;
700
- color: #0a192f;
701
- border: none;
702
- padding: 10px 20px;
703
- border-radius: 5px;
704
- font-size: 16px;
705
- cursor: pointer;
706
- margin-top: 20px;
707
- transition: all 0.3s;
708
- font-weight: bold;
709
- }
710
- .combine-button:hover {
711
- background-color: #52e0c4;
712
- transform: translateY(-2px);
713
- box-shadow: 0 5px 15px rgba(100, 255, 218, 0.4);
714
- }
715
- .combine-button:disabled {
716
- background-color: #3a5a78;
717
- cursor: not-allowed;
718
- transform: none;
719
- box-shadow: none;
720
- }
721
- /* 合成ステータスメッセージ */
722
- .combine-status {
723
- margin-top: 10px;
724
- color: #97c2f0;
725
- font-size: 14px;
726
- height: 20px;
727
- }
728
- /* プレビューセクション */
729
- .preview-section {
730
- margin-top: 20px;
731
- padding: 15px;
732
- background-color: rgba(17, 34, 64, 0.7);
733
- border-radius: 5px;
734
- display: none;
735
- }
736
- .preview-section h3 {
737
- margin-top: 0;
738
- color: #97c2f0;
739
- border-bottom: 1px solid #64ffda;
740
- padding-bottom: 5px;
741
- }
742
- /* 無効状態のオーバーレイ */
743
- .disabled-overlay {
744
- position: absolute;
745
- top: 0;
746
- left: 0;
747
- width: 100%;
748
- height: 100%;
749
- background-color: rgba(10, 25, 47, 0.7);
750
- display: flex;
751
- justify-content: center;
752
- align-items: center;
753
- z-index: 10;
754
- border-radius: 5px;
755
- }
756
- .disabled-message {
757
- background-color: rgba(30, 42, 71, 0.9);
758
- padding: 20px;
759
- border-radius: 5px;
760
- text-align: center;
761
- max-width: 80%;
762
- }
763
- .disabled-message p {
764
- margin-bottom: 15px;
765
- }
766
- .loader {
767
- width: 80px;
768
- aspect-ratio: 1;
769
- border: 10px solid #000;
770
- box-sizing: border-box;
771
- background:
772
- radial-gradient(farthest-side,#fff 98%,#0000) 50%/20px 20px,
773
- radial-gradient(farthest-side,#fff 98%,#0000) 50%/20px 20px,
774
- radial-gradient(farthest-side,#fff 98%,#0000) 50%/20px 20px,
775
- radial-gradient(farthest-side,#fff 98%,#0000) 50%/20px 20px,
776
- radial-gradient(farthest-side,#fff 98%,#0000) 50%/80% 80%,
777
- #000;
778
- background-repeat: no-repeat;
779
- filter: blur(4px) contrast(10);
780
- animation: squarePulse 1s infinite alternate;
781
- }
782
- @keyframes squarePulse {
783
- 0% {
784
- background-position:
785
- 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%;
786
- }
787
- 25% {
788
- background-position:
789
- 50% 0, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%;
790
- }
791
- 50% {
792
- background-position:
793
- 50% 0, 50% 100%, 50% 50%, 50% 50%, 50% 50%, 50% 50%;
794
- }
795
- 75% {
796
- background-position:
797
- 50% 0, 50% 100%, 0 50%, 50% 50%, 50% 50%, 50% 50%;
798
- }
799
- 100% {
800
- background-position:
801
- 50% 0, 50% 100%, 0 50%, 100% 50%, 50% 50%, 50% 50%;
802
- }
803
- }
804
- #buffering-indicator {
805
- position: absolute;
806
- top: 50%;
807
- left: 50%;
808
- transform: translate(-50%, -50%);
809
- z-index: 10;
810
- display: none;
811
- }
812
- .sync-status {
813
- position: absolute;
814
- bottom: 100px;
815
- left: 10px;
816
- width: 150px; /* 固定幅 */
817
- height: 30px; /* 固定高さ */
818
- background-color: rgba(0, 0, 0, 0.7);
819
- color: #97c2f0;
820
- padding: 5px 10px;
821
- border-radius: 3px;
822
- font-size: 12px;
823
- z-index: 5;
824
- display: flex;
825
- align-items: center;
826
- gap: 5px;
827
- white-space: nowrap; /* 文字の折り返しを防止 */
828
- overflow: hidden; /* 内容がはみ出す場合に隠す */
829
- text-overflow: ellipsis; /* はみ出したテキストに「…」を表示(任意) */
830
- user-select: none; /* テキストの選択を不可にする */
831
- /* はみ出してもスクロールバーを出さない */
832
- contain: strict; /* レイアウトの影響を最小限にする */
833
- }
834
- .sync-status button {
835
- background: none;
836
- border: none;
837
- color: #fff;
838
- cursor: pointer;
839
- font-size: 12px;
840
- }
841
- .lock-controls-btn {
842
- position: fixed;
843
- bottom: 20px;
844
- right: 20px;
845
- background-color: rgba(0, 0, 0, 0.7);
846
- border: none;
847
- color: #fff;
848
- width: 36px;
849
- height: 36px;
850
- border-radius: 50%;
851
- display: flex;
852
- align-items: center;
853
- justify-content: center;
854
- cursor: pointer;
855
- z-index: 100;
856
- display: none;
857
- }
858
- .lock-controls-btn.locked {
859
- color: #97c2f0;
860
- }
861
- .time-markers-container {
862
- display: flex;
863
- flex-wrap: wrap;
864
- gap: 10px;
865
- margin: 15px 0;
866
- padding: 15px;
867
- background-color: rgba(17, 34, 64, 0.8);
868
- border-radius: 5px;
869
- }
870
- .time-marker {
871
- font-size: 80%;
872
- padding: 6px 8px;
873
- background-color: rgba(100, 255, 218, 0.05);
874
- border: 1px solid #64ffda;
875
- border-radius: 4px;
876
- cursor: grab;
877
- user-select: none;
878
- transition: background-color 0.3s;
879
- }
880
- .time-marker:hover {
881
- background-color: rgba(100, 255, 218, 0.1);
882
- }
883
- .time-marker.dragging {
884
- opacity: 0.7;
885
- cursor: grabbing;
886
- }
887
- .time-input-container {
888
- display: flex;
889
- align-items: center;
890
- gap: 5px;
891
- }
892
- .time-input-container input {
893
- width: 80px;
894
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
895
  </style>
896
  </head>
897
  <body>
@@ -1208,7 +1260,11 @@ window.addEventListener('load', async () => {
1208
  <button class="combine-button" id="apply-time-btn" disabled>時間設定を適用</button>
1209
  </div>
1210
  <h2>設定</h2>
1211
- <button class="combine-button" id="blank-mode-btn">消画モード: OFF</button>
 
 
 
 
1212
  <div class="setting-item">
1213
  <div class="global-volume-container">
1214
  <label>全体音量係数:</label>
 
231
  <link href="https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c&display=swap" rel="stylesheet">
232
  <title>文化発表会動画プレイヤー</title>
233
  <style>
234
+ /* テクノロジー風背景スタイル */
235
+ .tech - background {
236
+ position: fixed;
237
+ top: 0;
238
+ left: 0;
239
+ width: 100 %;
240
+ height: 100 %;
241
+ z - index: -2;
242
+ background: linear - gradient(135 deg, #0f0c29, # 302 b63, #24243e);
243
+ overflow: hidden;
244
+ }
245
+ .circuit-line {
246
+ position: absolute;
247
+ background: rgba(0, 255, 255, 0.1);
248
+ box-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
249
+ }
250
+ .grid-dot {
251
+ position: absolute;
252
+ width: 2px;
253
+ height: 2px;
254
+ background: rgba(0, 255, 255, 0.3);
255
+ border-radius: 50%;
256
+ }
257
+ .hexagon {
258
+ position: absolute;
259
+ width: 40px;
260
+ height: 23px;
261
+ background: rgba(0, 255, 255, 0.05);
262
+ border: 1px solid rgba(0, 255, 255, 0.1);
263
+ box-shadow: 0 0 5px rgba(0, 255, 255, 0.2);
264
+ }
265
+ .hexagon:before, .hexagon:after {
266
+ content: "";
267
+ position: absolute;
268
+ width: 0;
269
+ border-left: 20px solid transparent;
270
+ border-right: 20px solid transparent;
271
+ }
272
+ .hexagon:before {
273
+ bottom: 100%;
274
+ border-bottom: 11.5px solid rgba(0, 255, 255, 0.05);
275
+ }
276
+ .hexagon:after {
277
+ top: 100%;
278
+ width: 0;
279
+ border-top: 11.5px solid rgba(0, 255, 255, 0.05);
280
+ }
281
+ .pulse {
282
+ position: absolute;
283
+ width: 10px;
284
+ height: 10px;
285
+ background: rgba(0, 255, 255, 0.7);
286
+ border-radius: 50%;
287
+ box-shadow: 0 0 10px 5px rgba(0, 255, 255, 0.5);
288
+ animation: pulse 2s infinite;
289
+ }
290
+ @keyframes pulse {
291
+ 0% {
292
+ transform: scale(0.8);
293
+ opacity: 0.7;
294
+ }
295
+ 50% {
296
+ transform: scale(1.2);
297
+ opacity: 1;
298
+ }
299
+ 100% {
300
+ transform: scale(0.8);
301
+ opacity: 0.7;
302
+ }
303
+ }
304
+ @keyframes float {
305
+ 0% {
306
+ transform: translateY(0) rotate(0deg);
307
+ }
308
+ 50% {
309
+ transform: translateY(-20px) rotate(5deg);
310
+ }
311
+ 100% {
312
+ transform: translateY(0) rotate(0deg);
313
+ }
314
+ }
315
+ /* メインスタイル */
316
+ body {
317
+ font-family: "M PLUS Rounded 1c", 'Arial', sans-serif;
318
+ background-color: rgba(10, 25, 47, 0.8);
319
+ color: # e6f1ff;
320
+ margin: 0;
321
+ padding: 20 px;
322
+ display: flex;
323
+ flex - direction: column;
324
+ align - items: center;
325
+ min - height: 100 vh;
326
+ }
327
+ h1 {
328
+ color: #a2c2e8;
329
+ text - align: center;
330
+ margin - bottom: 30 px;
331
+ border - bottom: 1 px solid #64ffda;
332
+ padding-bottom: 10px;
333
+ width: 100%;
334
+ }
335
+ .container {
336
+ display: flex;
337
+ flex-direction: column;
338
+ width: 100%;
339
+ max-width: 1000px;
340
+ background-color: rgba(17, 34, 64, 0.3);
341
+ border-radius: 10px;
342
+ padding: 20px;
343
+ box-shadow: 0 0 20px rgba(100, 255, 218, 0.2);
344
+ backdrop-filter: blur(5px);
345
+ border: 1px solid rgba(100, 255, 218, 0.1);
346
+ }
347
+ .video-container {
348
+ position: relative;
349
+ width: 100%;
350
+ margin-bottom: 20px;
351
+ }
352
+ video {
353
+ width: 100%;
354
+ border-radius: 5px;
355
+ background-color: # 000;
356
+ display: block;
357
+ cursor: pointer;
358
+ }
359
+ .video - controls {
360
+ background - color: rgba(17, 34, 64, 0.2);
361
+ padding: 10 px;
362
+ border - radius: 0 0 5 px 5 px;
363
+ display: flex;
364
+ flex - direction: column;
365
+ gap: 10 px;
366
+ transition: opacity 0.3 s;
367
+ }
368
+ .progress - container {
369
+ width: 100 %;
370
+ height: 10 px;
371
+ background - color: #1e2a47;
372
+ border-radius: 5px;
373
+ cursor: pointer;
374
+ position: relative;
375
+ }
376
+ .progress-bar {
377
+ height: 100%;
378
+ background-color: # 64 ffda;
379
+ border - radius: 5 px;
380
+ width: 0 %;
381
+ position: relative;
382
+ }
383
+ .progress - time {
384
+ position: absolute;
385
+ top: -25 px;
386
+ transform: translateX(-50 %);
387
+ background - color: rgba(30, 42, 71, 0.9);
388
+ padding: 3 px 6 px;
389
+ border - radius: 3 px;
390
+ font - size: 12 px;
391
+ display: none;
392
+ white - space: nowrap;
393
+ }
394
+ /* プログレスバーのマーカー */
395
+ .progress - marker {
396
+ position: absolute;
397
+ bottom: 0 px;
398
+ width: 0;
399
+ height: 0;
400
+ border - left: 5 px solid transparent;
401
+ border - right: 5 px solid transparent;
402
+ border - top: 10 px solid# ff5555;
403
+ transform: translateX(-50 %);
404
+ z - index: 2;
405
+ }
406
+ .main - controls {
407
+ display: flex;
408
+ align - items: center;
409
+ gap: 15 px;
410
+ }
411
+ .control - button {
412
+ background: none;
413
+ border: none;
414
+ color: #e6f1ff;
415
+ font - size: 18 px;
416
+ cursor: pointer;
417
+ padding: 5 px;
418
+ border - radius: 50 %;
419
+ width: 36 px;
420
+ height: 36 px;
421
+ display: flex;
422
+ align - items: center;
423
+ justify - content: center;
424
+ transition: background - color 0.3 s;
425
+ }
426
+ .control - button: hover {
427
+ background - color: rgba(100, 255, 218, 0.2);
428
+ }
429
+ .time - display {
430
+ font - size: 14 px;
431
+ color: #ccd6f6;
432
+ white - space: nowrap;
433
+ }
434
+ .volume - control {
435
+ display: flex;
436
+ align - items: center;
437
+ gap: 5 px;
438
+ margin - left: auto;
439
+ }
440
+ .volume - button {
441
+ background: none;
442
+ border: none;
443
+ color: #e6f1ff;
444
+ font - size: 18 px;
445
+ cursor: pointer;
446
+ padding: 5 px;
447
+ }
448
+ .volume - slider {
449
+ width: 80 px;
450
+ height: 6 px;
451
+ - webkit - appearance: none;
452
+ background: #1e2a47;
453
+ border-radius: 3px;
454
+ outline: none;
455
+ opacity: 0;
456
+ transition: opacity 0.3s, width 0.3s;
457
+ background-image: linear-gradient(# 6 aebfc,
458
+ #6aebfc);
459
+ background-size: 100% 100%;
460
+ background-repeat: no-repeat;
461
+ }
462
+ .volume-control:hover .volume-slider {
463
+ opacity: 1;
464
+ width: 100px;
465
+ }
466
+ .volume-slider::-webkit-slider-thumb {
467
+ -webkit-appearance: none;
468
+ width: 12px;
469
+ height: 12px;
470
+ background: # 6 aebfc;
471
+ border - radius: 50 %;
472
+ cursor: pointer;
473
+ }
474
+ .speed - control {
475
+ display: flex;
476
+ align - items: center;
477
+ gap: 5 px;
478
+ }
479
+ .speed - slider {
480
+ width: 120 px;
481
+ height: 6 px;
482
+ - webkit - appearance: none;
483
+ background: #1e2a47;
484
+ border-radius: 3px;
485
+ outline: none;
486
+ background-image: linear-gradient(# 64 d1ff,
487
+ #64d1ff);
488
+ background-size: 100% 100%;
489
+ background-repeat: no-repeat;
490
+ }
491
+ .speed-slider::-webkit-slider-thumb {
492
+ -webkit-appearance: none;
493
+ width: 12px;
494
+ height: 12px;
495
+ background: # 5 bb7de;
496
+ border - radius: 50 %;
497
+ cursor: pointer;
498
+ }
499
+ .speed - value {
500
+ font - size: 14 px;
501
+ min - width: 30 px;
502
+ text - align: center;
503
+ }
504
+ .fullscreen - button {
505
+ margin - left: 10 px;
506
+ }
507
+ .audio - controls {
508
+ display: flex;
509
+ flex - direction: column;
510
+ gap: 10 px;
511
+ margin - bottom: 15 px;
512
+ }
513
+ .audio - item {
514
+ display: flex;
515
+ align - items: center;
516
+ gap: 10 px;
517
+ }
518
+ .audio - item label {
519
+ min - width: 50 px;
520
+ color: #9ab3d9;
521
+ }
522
+ .audio-slider {
523
+ flex-grow: 1;
524
+ height: 8px;
525
+ -webkit-appearance: none;
526
+ background: # 1e2 a47;
527
+ border - radius: 5 px;
528
+ outline: none;
529
+ background - image: linear - gradient(#64ffda, # 64 ffda);
530
+ background - size: 100 % 100 %;
531
+ background - repeat: no - repeat;
532
+ }
533
+ .audio - slider::-webkit - slider - thumb {
534
+ -webkit - appearance: none;
535
+ width: 18 px;
536
+ height: 18 px;
537
+ background: #64ffda;
538
+ border-radius: 50%;
539
+ cursor: pointer;
540
+ }
541
+ .settings {
542
+ background-color: rbga(30, 42, 71, 0.3);
543
+ padding: 15px;
544
+ border-radius: 5px;
545
+ margin-bottom: 20px;
546
+ }
547
+ .setting-item {
548
+ display: flex;
549
+ justify-content: space-between;
550
+ align-items: center;
551
+ margin-bottom: 10px;
552
+ }
553
+ .setting-item:last-child {
554
+ margin-bottom: 0;
555
+ }
556
+ .setting-item label {
557
+ color: # ccd6f6;
558
+ }
559
+ .global - volume - container,
560
+ .playback - speed - container {
561
+ display: flex;
562
+ align - items: center;
563
+ gap: 10 px;
564
+ width: 100 %;
565
+ }
566
+ .global - volume - slider,
567
+ .playback - speed - slider {
568
+ flex - grow: 1;
569
+ height: 8 px;
570
+ - webkit - appearance: none;
571
+ background: #1e2a47;
572
+ border-radius: 5px;
573
+ outline: none;
574
+ background-image: linear-gradient(# 64 ffda, #64ffda);
575
+ background-size: 100% 100%;
576
+ background-repeat: no-repeat;
577
+ }
578
+ .global-volume-slider::-webkit-slider-thumb,
579
+ .playback-speed-slider::-webkit-slider-thumb {
580
+ -webkit-appearance: none;
581
+ width: 16px;
582
+ height: 16px;
583
+ background: # 64 ffda;
584
+ border - radius: 50 %;
585
+ cursor: pointer;
586
+ }
587
+ .slider - value {
588
+ min - width: 40 px;
589
+ text - align: right;
590
+ }
591
+ input[type="number"],
592
+ input[type="checkbox"],
593
+ select {
594
+ background - color: #112240;
595
+ border: 1px solid # 64 ffda;
596
+ color: #e6f1ff;
597
+ padding: 5 px;
598
+ border - radius: 3 px;
599
+ }
600
+ .tech - decoration {
601
+ width: 100 %;
602
+ height: 2 px;
603
+ background: linear - gradient(90 deg, transparent, #64ffda, transparent);
604
+ margin: 20px 0;
605
+ }
606
+ /* 全画面時のスタイル */
607
+ .video-container:-webkit-full-screen {
608
+ width: 100%;
609
+ height: 100%;
610
+ background-color: black;
611
+ }
612
+ .video-container:-webkit-full-screen video {
613
+ width: 100%;
614
+ height: 100%;
615
+ }
616
+ .video-container:-webkit-full-screen .video-controls {
617
+ position: fixed;
618
+ bottom: 0;
619
+ left: 0;
620
+ right: 0;
621
+ width: 100%;
622
+ border-radius: 0;
623
+ }
624
+ /* ローディングアニメーション */
625
+ .loading-overlay {
626
+ position: fixed;
627
+ top: 0;
628
+ left: 0;
629
+ width: 100%;
630
+ height: 100%;
631
+ background-color: rgba(0, 0, 0, 0.8);
632
+ display: flex;
633
+ justify-content: center;
634
+ align-items: center;
635
+ z-index: 9998;
636
+ transition: opacity 1s ease-out;
637
+ }
638
+ .spinner-box {
639
+ width: 300px;
640
+ height: 300px;
641
+ display: flex;
642
+ justify-content: center;
643
+ align-items: center;
644
+ background-color: transparent;
645
+ }
646
+ /* 軌道スタイル */
647
+ .leo {
648
+ position: absolute;
649
+ display: flex;
650
+ justify-content: center;
651
+ align-items: center;
652
+ border-radius: 50%;
653
+ }
654
+ .blue-orbit {
655
+ width: 165px;
656
+ height: 165px;
657
+ border: 1px solid # 91 daffa5;
658
+ animation: spin3D 3 s linear .2 s infinite;
659
+ }
660
+ .green - orbit {
661
+ width: 120 px;
662
+ height: 120 px;
663
+ border: 1 px solid #91ffbfa5;
664
+ animation: spin3D 2s linear 0s infinite;
665
+ }
666
+ .red-orbit {
667
+ width: 90px;
668
+ height: 90px;
669
+ border: 1px solid # ffca91a5;
670
+ animation: spin3D 1 s linear 0 s infinite;
671
+ }
672
+ .white - orbit {
673
+ width: 60 px;
674
+ height: 60 px;
675
+ border: 2 px solid# ffffff;
676
+ animation: spin3D 10 s linear 0 s infinite;
677
+ }
678
+ .w1 {
679
+ transform: rotate3D(1, 1, 1, 90 deg);
680
+ }
681
+ .w2 {
682
+ transform: rotate3D(1, 2, .5, 90 deg);
683
+ }
684
+ .w3 {
685
+ transform: rotate3D(.5, 1, 2, 90 deg);
686
+ }
687
+ /* キーフレームアニメーション */
688
+ @keyframes spin3D {
689
+ from {
690
+ transform: rotate3d(.5, .5, .5, 360 deg);
691
+ }
692
+ to {
693
+ transform: rotate3d(0, 0, 0, 0 deg);
694
+ }
695
+ }
696
+ @keyframes spin {
697
+ from {
698
+ transform: rotate(0 deg);
699
+ }
700
+ to {
701
+ transform: rotate(360 deg);
702
+ }
703
+ }
704
+ .time - set - button {
705
+ background - color: #112240;
706
+ border: 1px solid # 64 ffda;
707
+ color: #e6f1ff;
708
+ padding: 5 px 10 px;
709
+ border - radius: 3 px;
710
+ cursor: pointer;
711
+ font - size: 12 px;
712
+ margin - left: 5 px;
713
+ transition: background - color 0.3 s;
714
+ }
715
+ .time - set - button: hover {
716
+ background - color: rgba(100, 255, 218, 0.2);
717
+ }
718
+ /* 合成ボタンスタイル */
719
+ .combine - button {
720
+ background - color: #97c2f0;
721
+ color: # 0 a192f;
722
+ border: none;
723
+ padding: 10 px 20 px;
724
+ border - radius: 5 px;
725
+ font - size: 16 px;
726
+ cursor: pointer;
727
+ margin - top: 20 px;
728
+ transition: all 0.3 s;
729
+ font - weight: bold;
730
+ }
731
+ .combine - button: hover {
732
+ background - color: #52e0c4;
733
+ transform: translateY(-2px);
734
+ box-shadow: 0 5px 15px rgba(100, 255, 218, 0.4);
735
+ }
736
+ .combine-button:disabled {
737
+ background-color: # 3 a5a78;
738
+ cursor: not - allowed;
739
+ transform: none;
740
+ box - shadow: none;
741
+ }
742
+ /* 合成ステータスメッセージ */
743
+ .combine - status {
744
+ margin - top: 10 px;
745
+ color: #97c2f0;
746
+ font-size: 14px;
747
+ height: 20px;
748
+ }
749
+ /* プレビューセクション */
750
+ .preview-section {
751
+ margin-top: 20px;
752
+ padding: 15px;
753
+ background-color: rgba(17, 34, 64, 0.7);
754
+ border-radius: 5px;
755
+ display: none;
756
+ }
757
+ .preview-section h3 {
758
+ margin-top: 0;
759
+ color: # 97 c2f0;
760
+ border - bottom: 1 px solid #64ffda;
761
+ padding-bottom: 5px;
762
+ }
763
+ /* 無効状態のオーバーレイ */
764
+ .disabled-overlay {
765
+ position: absolute;
766
+ top: 0;
767
+ left: 0;
768
+ width: 100%;
769
+ height: 100%;
770
+ background-color: rgba(10, 25, 47, 0.7);
771
+ display: flex;
772
+ justify-content: center;
773
+ align-items: center;
774
+ z-index: 10;
775
+ border-radius: 5px;
776
+ }
777
+ .disabled-message {
778
+ background-color: rgba(30, 42, 71, 0.9);
779
+ padding: 20px;
780
+ border-radius: 5px;
781
+ text-align: center;
782
+ max-width: 80%;
783
+ }
784
+ .disabled-message p {
785
+ margin-bottom: 15px;
786
+ }
787
+ .loader {
788
+ width: 80px;
789
+ aspect-ratio: 1;
790
+ border: 10px solid # 000;
791
+ box - sizing: border - box;
792
+ background:
793
+ radial - gradient(farthest - side, #fff 98 %, #0000) 50%/20px 20px,
794
+ radial-gradient(farthest-side, # fff 98 %, #0000) 50%/20px 20px,
795
+ radial-gradient(farthest-side, # fff 98 %, #0000) 50%/20px 20px,
796
+ radial-gradient(farthest-side, # fff 98 %, #0000) 50%/20px 20px,
797
+ radial-gradient(farthest-side, # fff 98 %, #0000) 50%/80% 80%,
798
+ # 000;
799
+ background - repeat: no - repeat;
800
+ filter: blur(4 px) contrast(10);
801
+ animation: squarePulse 1 s infinite alternate;
802
+ }
803
+ @keyframes squarePulse {
804
+ 0 % {
805
+ background - position: 50 % 50 %,
806
+ 50 % 50 %,
807
+ 50 % 50 %,
808
+ 50 % 50 %,
809
+ 50 % 50 %,
810
+ 50 % 50 %;
811
+ }
812
+ 25 % {
813
+ background - position: 50 % 0,
814
+ 50 % 50 %,
815
+ 50 % 50 %,
816
+ 50 % 50 %,
817
+ 50 % 50 %,
818
+ 50 % 50 %;
819
+ }
820
+ 50 % {
821
+ background - position: 50 % 0,
822
+ 50 % 100 %,
823
+ 50 % 50 %,
824
+ 50 % 50 %,
825
+ 50 % 50 %,
826
+ 50 % 50 %;
827
+ }
828
+ 75 % {
829
+ background - position: 50 % 0,
830
+ 50 % 100 %,
831
+ 0 50 %,
832
+ 50 % 50 %,
833
+ 50 % 50 %,
834
+ 50 % 50 %;
835
+ }
836
+ 100 % {
837
+ background - position: 50 % 0,
838
+ 50 % 100 %,
839
+ 0 50 %,
840
+ 100 % 50 %,
841
+ 50 % 50 %,
842
+ 50 % 50 %;
843
+ }
844
+ }
845
+ # buffering - indicator {
846
+ position: absolute;
847
+ top: 50 %;
848
+ left: 50 %;
849
+ transform: translate(-50 %, -50 %);
850
+ z - index: 10;
851
+ display: none;
852
+ }
853
+ .sync - status {
854
+ position: absolute;
855
+ bottom: 100 px;
856
+ left: 10 px;
857
+ width: 150 px;
858
+ /* 固定幅 */
859
+ height: 30 px;
860
+ /* 固定高さ */
861
+ background - color: rgba(0, 0, 0, 0.7);
862
+ color: #97c2f0;
863
+ padding: 5px 10px;
864
+ border-radius: 3px;
865
+ font-size: 12px;
866
+ z-index: 5;
867
+ display: flex;
868
+ align-items: center;
869
+ gap: 5px;
870
+ white-space: nowrap;
871
+ /* 文字の折り返しを防止 */
872
+ overflow: hidden;
873
+ /* 内容がはみ出す場合に隠す */
874
+ text-overflow: ellipsis;
875
+ /* はみ出したテキストに「…」を表示(任意) */
876
+ user-select: none;
877
+ /* テキストの選択を不可にする */
878
+ /* はみ出してもスクロールバーを出さない */
879
+ contain: strict;
880
+ /* レイアウトの影響を最小限にする */
881
+ }
882
+ .sync-status button {
883
+ background: none;
884
+ border: none;
885
+ color: # fff;
886
+ cursor: pointer;
887
+ font - size: 12 px;
888
+ }
889
+ .lock - controls - btn {
890
+ position: fixed;
891
+ bottom: 20 px;
892
+ right: 20 px;
893
+ background - color: rgba(0, 0, 0, 0.7);
894
+ border: none;
895
+ color: #fff;
896
+ width: 36 px;
897
+ height: 36 px;
898
+ border - radius: 50 %;
899
+ display: flex;
900
+ align - items: center;
901
+ justify - content: center;
902
+ cursor: pointer;
903
+ z - index: 100;
904
+ display: none;
905
+ }
906
+ .lock - controls - btn.locked {
907
+ color: #97c2f0;
908
+ }
909
+ .time-markers-container {
910
+ display: flex;
911
+ flex-wrap: wrap;
912
+ gap: 10px;
913
+ margin: 15px 0;
914
+ padding: 15px;
915
+ background-color: rgba(17, 34, 64, 0.8);
916
+ border-radius: 5px;
917
+ }
918
+ .time-marker {
919
+ font-size: 80%;
920
+ padding: 6px 8px;
921
+ background-color: rgba(100, 255, 218, 0.05);
922
+ border: 1px solid # 64 ffda;
923
+ border - radius: 4 px;
924
+ cursor: grab;
925
+ user - select: none;
926
+ transition: background - color 0.3 s;
927
+ }
928
+ .time - marker: hover {
929
+ background - color: rgba(100, 255, 218, 0.1);
930
+ }
931
+ .time - marker.dragging {
932
+ opacity: 0.7;
933
+ cursor: grabbing;
934
+ }
935
+ .time - input - container {
936
+ display: flex;
937
+ align - items: center;
938
+ gap: 5 px;
939
+ }
940
+ .time - input - container input {
941
+ width: 80 px;
942
+ }
943
+ # hide - video: checked~.video - container video {
944
+ background - color: black;
945
+ opacity: 0;
946
+ }
947
  </style>
948
  </head>
949
  <body>
 
1260
  <button class="combine-button" id="apply-time-btn" disabled>時間設定を適用</button>
1261
  </div>
1262
  <h2>設定</h2>
1263
+ <!-- 設定セクションに消画モードを追加 -->
1264
+ <div class="setting-item">
1265
+ <label for="hide-video">消画モード:</label>
1266
+ <input type="checkbox" id="hide-video">
1267
+ </div>
1268
  <div class="setting-item">
1269
  <div class="global-volume-container">
1270
  <label>全体音量係数:</label>