soiz1 commited on
Commit
a59ada9
·
verified ·
1 Parent(s): 9d3202f

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +546 -553
index.html CHANGED
@@ -10,533 +10,22 @@
10
  <link rel="icon" href="icon.png" type="image/png">
11
  <script src="https://cdn.jsdelivr.net/npm/video-frames@1/dist/videoframes.umd.min.js"></script>
12
  <style>
13
- body {
14
- margin: 0;
15
- padding: 0;
16
- background-color: #0a192f;
17
- color: #00ffcc;
18
- font-family: "M PLUS Rounded 1c", monospace;
19
- min-height: 100vh;
20
- display: flex;
21
- flex-direction: column;
22
- align-items: center; /* 中央揃え */
23
- width: 100%; /* 追加 */
24
- }
25
-
26
- h1 {
27
- color: #00aaff;
28
- text-shadow: 0 0 5px #0066ff;
29
- border-bottom: 1px solid #0066ff;
30
- padding-bottom: 10px;
31
- text-align: center;
32
- }
33
-
34
- .video-container {
35
- position: relative;
36
- max-width: 800px;
37
- margin-bottom: 20px;
38
- margin-top: 30px;
39
- border: 2px solid #0066ff;
40
- box-shadow: 0 0 15px rgba(0, 102, 255, 0.5);
41
- background: #000;
42
- }
43
-
44
- video {
45
- width: 100%;
46
- display: block;
47
- }
48
-
49
- /* 字幕スタイル */
50
- video::cue {
51
- background-color: rgba(0, 0, 0, 0.7) !important;
52
- color: #c7dbed !important;
53
- font-family: "M PLUS Rounded 1c", monospace !important;
54
- text-shadow: 1px 1px 2px #000 !important;
55
- outline: 3px solid #0b3e8f !important;
56
- border-radius: 10px !important;
57
- }
58
-
59
- /* カスタム動画コントロール */
60
- video::-webkit-media-controls {
61
- display: none !important;
62
- }
63
-
64
- .custom-controls {
65
- position: absolute;
66
- bottom: 0;
67
- left: 0;
68
- right: 0;
69
- padding: 10px;
70
- display: flex;
71
- flex-direction: column;
72
- opacity: 0;
73
- transition: opacity 0.3s;
74
- }
75
-
76
- .video-container:hover .custom-controls {
77
- opacity: 1;
78
- }
79
-
80
- .progress-container {
81
- width: 100%;
82
- height: 8px;
83
- background: #001133;
84
- margin-bottom: 10px;
85
- cursor: pointer;
86
- position: relative;
87
- }
88
-
89
- .progress-bar {
90
- height: 100%;
91
- background: #00aaff;
92
- width: 0%;
93
- position: relative;
94
- }
95
-
96
- .progress-bar::after {
97
- content: '';
98
- position: absolute;
99
- right: -5px;
100
- top: 50%;
101
- transform: translateY(-50%);
102
- width: 10px;
103
- height: 10px;
104
- background: #00ccff;
105
- border-radius: 50%;
106
- box-shadow: 0 0 5px #00ccff;
107
- }
108
-
109
- .buttons-container {
110
- display: flex;
111
- align-items: center;
112
- justify-content: space-between;
113
- }
114
-
115
- .left-controls, .right-controls {
116
- display: flex;
117
- align-items: center;
118
- gap: 15px;
119
- }
120
-
121
- .control-btn {
122
- background: none;
123
- border: none;
124
- color: #00ccff;
125
- font-size: 16px;
126
- cursor: pointer;
127
- transition: all 0.3s;
128
- }
129
-
130
- .control-btn:hover {
131
- color: #00ffcc;
132
- text-shadow: 0 0 5px #00ffcc;
133
- }
134
-
135
- .time-display {
136
- font-size: 14px;
137
- color: #00aaff;
138
- box-shadow: 0.1px 0.1px 0.1px black;
139
- font-family: "M PLUS Rounded 1c", monospace;
140
- }
141
-
142
- .volume-container {
143
- display: flex;
144
- align-items: center;
145
- gap: 5px;
146
- }
147
-
148
- .volume-slider {
149
- width: 80px;
150
- -webkit-appearance: none;
151
- height: 4px;
152
- background: #001133;
153
- outline: none;
154
- }
155
-
156
- .volume-slider::-webkit-slider-thumb {
157
- -webkit-appearance: none;
158
- width: 12px;
159
- height: 12px;
160
- background: #00aaff;
161
- border-radius: 50%;
162
- cursor: pointer;
163
- }
164
-
165
- .controls {
166
- display: flex;
167
- flex-direction: column;
168
- gap: 15px;
169
- width: 100%;
170
- max-width: 800px;
171
- background-color: #0f0f1a;
172
- padding: 20px;
173
- border: 1px solid #0066ff;
174
- box-shadow: 0 0 15px rgba(0, 102, 255, 0.3);
175
- }
176
- .new {
177
- display: flex;
178
- flex-direction: column;
179
- gap: 15px;
180
- width: 100%;
181
- max-width: 800px;
182
- background-color: #0f0f1a;
183
- padding: 20px;
184
- border: 1px solid #0066ff;
185
- box-shadow: 0 0 15px rgba(0, 102, 255, 0.3);
186
- }
187
-
188
- .control-group {
189
- display: flex;
190
- flex-direction: row;
191
- align-items: center;
192
- justify-content: flex-start;
193
- gap: 10px;
194
- flex-wrap: nowrap;
195
- }
196
-
197
- .control-group label {
198
- white-space: nowrap;
199
- min-width: 100px;
200
- text-align: right;
201
- color: #00ccff;
202
- }
203
-
204
- input[type="range"] {
205
- flex-grow: 1;
206
- -webkit-appearance: none;
207
- height: 8px;
208
- background: #001133;
209
- border-radius: 5px;
210
- outline: none;
211
- }
212
-
213
- input[type="range"]::-webkit-slider-thumb {
214
- -webkit-appearance: none;
215
- width: 18px;
216
- height: 18px;
217
- background: #00aaff;
218
- border-radius: 50%;
219
- cursor: pointer;
220
- box-shadow: 0 0 5px #00aaff;
221
- }
222
-
223
- input[type="number"], select {
224
- background-color: #001133;
225
- color: #00ccff;
226
- border: 1px solid #0066ff;
227
- padding: 5px;
228
- font-family: "M PLUS Rounded 1c", monospace;
229
- }
230
-
231
- button {
232
- background-color: #001133;
233
- color: #00ccff;
234
- border: 1px solid #0066ff;
235
- padding: 8px 15px;
236
- cursor: pointer;
237
- font-family: "M PLUS Rounded 1c", monospace;
238
- transition: all 0.3s;
239
- align-self: flex-start;
240
- }
241
-
242
- button:hover {
243
- background-color: #0066ff;
244
- color: #000;
245
- box-shadow: 0 0 10px #0066ff;
246
- }
247
-
248
- select {
249
- width: 300px;
250
- background-color: #001133;
251
- color: #00ccff;
252
- border: 1px solid #0066ff;
253
- padding: 5px;
254
- }
255
-
256
- input[type="checkbox"] {
257
- -webkit-appearance: none;
258
- width: 18px;
259
- height: 18px;
260
- background: #001133;
261
- border: 1px solid #0066ff;
262
- position: relative;
263
- }
264
-
265
- input[type="checkbox"]:checked {
266
- background: #0066ff;
267
- box-shadow: 0 0 5px #0066ff;
268
- }
269
-
270
- input[type="checkbox"]:checked::after {
271
- content: "✓";
272
- position: absolute;
273
- color: #000;
274
- font-size: 14px;
275
- top: 50%;
276
- left: 50%;
277
- transform: translate(-50%, -50%);
278
- }
279
-
280
- /* 字幕設定用スタイル */
281
- .subtitle-settings {
282
- margin-top: 10px;
283
- padding: 10px;
284
- background-color: rgba(0, 20, 40, 0.5);
285
- border: 1px solid #0066ff;
286
- }
287
-
288
- /* 字幕サイズ調整用のCSS変数 */
289
- :root {
290
- --subtitle-scale: 1;
291
- --subtitle-border-radius: 10px;
292
- }
293
-
294
- video::cue {
295
- font-size: calc(16px * var(--subtitle-scale)) !important;
296
- line-height: 1.5 !important;
297
- border-radius: var(--subtitle-border-radius) !important;
298
- }
299
-
300
- /* 全画面時の字幕サイズ調整 */
301
- .video-container:fullscreen video::cue,
302
- .video-container:-webkit-full-screen video::cue,
303
- .video-container:-moz-full-screen video::cue,
304
- .video-container:-ms-fullscreen video::cue {
305
- font-size: calc(16px * var(--subtitle-scale) * var(--fullscreen-scale, 1)) !important;
306
- }
307
- body {
308
- margin: 0;
309
- padding: 0;
310
- background-color: #0a192f;
311
- height: 100vh;
312
- width: 100vw;
313
- }
314
-
315
- .ripple {
316
- position: absolute;
317
- border-radius: 50%;
318
- background: transparent;
319
- border: 1px solid rgba(100, 210, 255, 0.3);
320
- transform: translate(-50%, -50%);
321
- pointer-events: none;
322
- animation: ripple-animation 4s ease-out forwards;
323
- z-index: -1;
324
- position: absolute;
325
- }
326
-
327
- @keyframes ripple-animation {
328
- 0% {
329
- width: 0;
330
- height: 0;
331
- opacity: 0.6;
332
- }
333
- 100% {
334
- width: 600px;
335
- height: 600px;
336
- opacity: 0;
337
- }
338
- }
339
-
340
- /* ローディングアニメーション */
341
- .loading-overlay {
342
- position: fixed;
343
- top: 0;
344
- left: 0;
345
- width: 100%;
346
- height: 100%;
347
- background-color: rgba(0, 0, 0, 0.8);
348
- display: flex;
349
- justify-content: center;
350
- align-items: center;
351
- z-index: 9999;
352
- transition: opacity 1s ease-out;
353
- }
354
-
355
- .spinner-box {
356
- width: 300px;
357
- height: 300px;
358
- display: flex;
359
- justify-content: center;
360
- align-items: center;
361
- background-color: transparent;
362
- }
363
-
364
- /* 軌道スタイル */
365
- .leo {
366
- position: absolute;
367
- display: flex;
368
- justify-content: center;
369
- align-items: center;
370
- border-radius: 50%;
371
- }
372
-
373
- .blue-orbit {
374
- width: 165px;
375
- height: 165px;
376
- border: 1px solid #91daffa5;
377
- animation: spin3D 3s linear .2s infinite;
378
- }
379
-
380
- .green-orbit {
381
- width: 120px;
382
- height: 120px;
383
- border: 1px solid #91ffbfa5;
384
- animation: spin3D 2s linear 0s infinite;
385
- }
386
-
387
- .red-orbit {
388
- width: 90px;
389
- height: 90px;
390
- border: 1px solid #ffca91a5;
391
- animation: spin3D 1s linear 0s infinite;
392
- }
393
-
394
- .white-orbit {
395
- width: 60px;
396
- height: 60px;
397
- border: 2px solid #ffffff;
398
- animation: spin3D 10s linear 0s infinite;
399
- }
400
-
401
- .w1 {
402
- transform: rotate3D(1, 1, 1, 90deg);
403
- }
404
-
405
- .w2 {
406
- transform: rotate3D(1, 2, .5, 90deg);
407
- }
408
-
409
- .w3 {
410
- transform: rotate3D(.5, 1, 2, 90deg);
411
- }
412
-
413
- /* キーフレームアニメーション */
414
- @keyframes spin3D {
415
- from {
416
- transform: rotate3d(.5,.5,.5, 360deg);
417
- }
418
- to {
419
- transform: rotate3d(0,0,0, 0deg);
420
- }
421
- }
422
-
423
- @keyframes spin {
424
- from {
425
- transform: rotate(0deg);
426
- }
427
- to {
428
- transform: rotate(360deg);
429
- }
430
- }
431
-
432
- /* フレームプレビュー */
433
- .frame-preview {
434
- position: fixed;
435
- bottom: 30px;
436
- /*transform: translateX(-50%);*/
437
- width: 160px;
438
- height: 90px;
439
- background: #000;
440
- border: 2px solid #00aaff;
441
- box-shadow: 0 0 10px rgba(0, 170, 255, 0.7);
442
- display: none;
443
- z-index: 100;
444
- pointer-events: none;
445
- }
446
-
447
- .frame-preview canvas {
448
- width: 100%;
449
- height: 100%;
450
- object-fit: contain;
451
- }
452
-
453
- .frame-time {
454
- position: absolute;
455
- bottom: -25px;
456
- left: 50%;
457
- transform: translateX(-50%);
458
- background: rgba(0, 0, 0, 0.8);
459
- color: #00ccff;
460
- padding: 3px 8px;
461
- border-radius: 4px;
462
- font-size: 12px;
463
- white-space: nowrap;
464
- }
465
-
466
- /* 右クリックメニュー */
467
- .context-menu {
468
- position: fixed;
469
- background-color: #0f0f1a;
470
- border: 1px solid #0066ff;
471
- box-shadow: 0 0 15px rgba(0, 102, 255, 0.5);
472
- z-index: 1000;
473
- display: none;
474
- min-width: 200px;
475
- }
476
-
477
- .context-menu button {
478
- width: 100%;
479
- text-align: left;
480
- padding: 8px 15px;
481
- border: none;
482
- border-bottom: 1px solid #003366;
483
- background: none;
484
- color: #00ccff;
485
- font-family: "M PLUS Rounded 1c", monospace;
486
- cursor: pointer;
487
- }
488
-
489
- .context-menu button:hover {
490
- background-color: #0066ff;
491
- color: #000;
492
- }
493
-
494
- /* 音声/字幕のみモード */
495
- .audio-only-mode {
496
- position: absolute;
497
- top: 10px;
498
- right: 10px;
499
- background: rgba(0, 0, 0, 0.7);
500
- color: #00ccff;
501
- padding: 5px 10px;
502
- border-radius: 4px;
503
- font-size: 12px;
504
- display: none;
505
- z-index: 10;
506
- }
507
-
508
- .audio-only-mode.active {
509
- display: block;
510
- }
511
-
512
- .main-content {
513
- position: relative;
514
- z-index: 10;
515
- width: 100%;
516
- max-width: 1200px;
517
- padding: 20px;
518
- color: white;
519
- max-width: 1200px;
520
- margin: 0 auto;
521
- box-sizing: border-box;
522
- } </style>
523
- <style>
524
  html, body {
525
  margin: 0;
526
  padding: 0;
 
 
527
  background-color: #0a192f;
528
  color: #00ffcc;
529
  font-family: "M PLUS Rounded 1c", monospace;
530
- min-height: 100vh;
531
  display: flex;
532
  flex-direction: column;
533
  align-items: center;
534
- width: 100%;
535
  }
536
- @keyframes blink {
537
- 0% { opacity: 0.2; }
538
- 100% { opacity: 0.8; }
539
- }
540
  .wave-container {
541
  position: fixed;
542
  top: 0;
@@ -546,7 +35,8 @@ html, body {
546
  z-index: -1;
547
  overflow: hidden;
548
  }
549
- /* グリッド線を最背面に */
 
550
  .grid-lines {
551
  position: absolute;
552
  top: 0;
@@ -559,7 +49,8 @@ html, body {
559
  background-size: 50px 50px;
560
  z-index: 1;
561
  }
562
-
 
563
  .wave {
564
  position: absolute;
565
  width: 100%;
@@ -573,46 +64,548 @@ html, body {
573
  transparent
574
  );
575
  opacity: 0.7;
576
- animation: waveFlow 4s linear infinite;
577
  z-index: 2;
578
  }
579
- .wave:nth-child(2) {
580
- animation-delay: 1s;
581
- opacity: 0.5;
582
- }
583
-
584
- .wave:nth-child(3) {
585
- animation-delay: 2s;
586
- opacity: 0.3;
587
- }
588
-
589
- @keyframes waveFlow {
590
- 0% {
591
- transform: translateY(-100%);
592
- }
593
- 100% {
594
- transform: translateY(100%);
595
- }
596
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
 
598
- /* テクノロジードットの修正 */
599
- .tech-dots {
600
- position: absolute;
601
- top: 0;
602
- left: 0;
603
- width: 100%;
604
- height: 100%;
605
- z-index: 3;
606
  }
607
 
608
- .tech-dot {
609
- position: absolute;
610
- width: 3px;
611
- height: 3px;
612
- background-color: rgba(100, 200, 255, 0.7);
613
- border-radius: 50%;
614
- animation: blink 2s infinite alternate;
615
  }
 
 
 
 
 
616
  </style>
617
 
618
  </head>
 
10
  <link rel="icon" href="icon.png" type="image/png">
11
  <script src="https://cdn.jsdelivr.net/npm/video-frames@1/dist/videoframes.umd.min.js"></script>
12
  <style>
13
+ /* リセットと基本設定 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  html, body {
15
  margin: 0;
16
  padding: 0;
17
+ width: 100%;
18
+ min-height: 100vh;
19
  background-color: #0a192f;
20
  color: #00ffcc;
21
  font-family: "M PLUS Rounded 1c", monospace;
 
22
  display: flex;
23
  flex-direction: column;
24
  align-items: center;
25
+ overflow-x: hidden;
26
  }
27
+
28
+ /* 背景アニメーションコンテナ */
 
 
29
  .wave-container {
30
  position: fixed;
31
  top: 0;
 
35
  z-index: -1;
36
  overflow: hidden;
37
  }
38
+
39
+ /* グリッド線 */
40
  .grid-lines {
41
  position: absolute;
42
  top: 0;
 
49
  background-size: 50px 50px;
50
  z-index: 1;
51
  }
52
+
53
+ /* 波のアニメーション */
54
  .wave {
55
  position: absolute;
56
  width: 100%;
 
64
  transparent
65
  );
66
  opacity: 0.7;
67
+ animation: waveFlow 8s linear infinite;
68
  z-index: 2;
69
  }
70
+
71
+ .wave:nth-child(2) {
72
+ animation-delay: -2s;
73
+ opacity: 0.5;
74
+ }
75
+
76
+ .wave:nth-child(3) {
77
+ animation-delay: -4s;
78
+ opacity: 0.3;
79
+ }
80
+
81
+ @keyframes waveFlow {
82
+ 0% {
83
+ transform: translateY(-100%);
84
+ }
85
+ 100% {
86
+ transform: translateY(100%);
87
+ }
88
+ }
89
+
90
+ /* テクノロジードット */
91
+ .tech-dots {
92
+ position: absolute;
93
+ top: 0;
94
+ left: 0;
95
+ width: 100%;
96
+ height: 100%;
97
+ z-index: 3;
98
+ }
99
+
100
+ .tech-dot {
101
+ position: absolute;
102
+ width: 3px;
103
+ height: 3px;
104
+ background-color: rgba(100, 200, 255, 0.7);
105
+ border-radius: 50%;
106
+ animation: blink 2s infinite alternate;
107
+ }
108
+
109
+ @keyframes blink {
110
+ 0% { opacity: 0.2; }
111
+ 100% { opacity: 0.8; }
112
+ }
113
+
114
+ /* メインコンテンツ */
115
+ .main-content {
116
+ position: relative;
117
+ z-index: 10;
118
+ width: 100%;
119
+ max-width: 1200px;
120
+ padding: 20px;
121
+ box-sizing: border-box;
122
+ display: flex;
123
+ flex-direction: column;
124
+ align-items: center;
125
+ }
126
+
127
+ /* ヘッダー */
128
+ h1 {
129
+ color: #00aaff;
130
+ text-shadow: 0 0 5px #0066ff;
131
+ border-bottom: 1px solid #0066ff;
132
+ padding-bottom: 10px;
133
+ text-align: center;
134
+ margin-top: 20px;
135
+ }
136
+
137
+ /* ビデオコンテナ */
138
+ .video-container {
139
+ position: relative;
140
+ max-width: 800px;
141
+ width: 100%;
142
+ margin: 30px 0 20px;
143
+ border: 2px solid #0066ff;
144
+ box-shadow: 0 0 15px rgba(0, 102, 255, 0.5);
145
+ background: #000;
146
+ }
147
+
148
+ video {
149
+ width: 100%;
150
+ display: block;
151
+ }
152
+
153
+ /* 字幕スタイル */
154
+ video::cue {
155
+ background-color: rgba(0, 0, 0, 0.7) !important;
156
+ color: #c7dbed !important;
157
+ font-family: "M PLUS Rounded 1c", monospace !important;
158
+ text-shadow: 1px 1px 2px #000 !important;
159
+ outline: 3px solid #0b3e8f !important;
160
+ border-radius: 10px !important;
161
+ }
162
+
163
+ /* カスタム動画コントロール */
164
+ video::-webkit-media-controls {
165
+ display: none !important;
166
+ }
167
+
168
+ .custom-controls {
169
+ position: absolute;
170
+ bottom: 0;
171
+ left: 0;
172
+ right: 0;
173
+ padding: 10px;
174
+ display: flex;
175
+ flex-direction: column;
176
+ opacity: 0;
177
+ transition: opacity 0.3s;
178
+ }
179
+
180
+ .video-container:hover .custom-controls {
181
+ opacity: 1;
182
+ }
183
+
184
+ .progress-container {
185
+ width: 100%;
186
+ height: 8px;
187
+ background: #001133;
188
+ margin-bottom: 10px;
189
+ cursor: pointer;
190
+ position: relative;
191
+ }
192
+
193
+ .progress-bar {
194
+ height: 100%;
195
+ background: #00aaff;
196
+ width: 0%;
197
+ position: relative;
198
+ }
199
+
200
+ .progress-bar::after {
201
+ content: '';
202
+ position: absolute;
203
+ right: -5px;
204
+ top: 50%;
205
+ transform: translateY(-50%);
206
+ width: 10px;
207
+ height: 10px;
208
+ background: #00ccff;
209
+ border-radius: 50%;
210
+ box-shadow: 0 0 5px #00ccff;
211
+ }
212
+
213
+ .buttons-container {
214
+ display: flex;
215
+ align-items: center;
216
+ justify-content: space-between;
217
+ }
218
+
219
+ .left-controls, .right-controls {
220
+ display: flex;
221
+ align-items: center;
222
+ gap: 15px;
223
+ }
224
+
225
+ .control-btn {
226
+ background: none;
227
+ border: none;
228
+ color: #00ccff;
229
+ font-size: 16px;
230
+ cursor: pointer;
231
+ transition: all 0.3s;
232
+ }
233
+
234
+ .control-btn:hover {
235
+ color: #00ffcc;
236
+ text-shadow: 0 0 5px #00ffcc;
237
+ }
238
+
239
+ .time-display {
240
+ font-size: 14px;
241
+ color: #00aaff;
242
+ box-shadow: 0.1px 0.1px 0.1px black;
243
+ font-family: "M PLUS Rounded 1c", monospace;
244
+ }
245
+
246
+ .volume-container {
247
+ display: flex;
248
+ align-items: center;
249
+ gap: 5px;
250
+ }
251
+
252
+ .volume-slider {
253
+ width: 80px;
254
+ -webkit-appearance: none;
255
+ height: 4px;
256
+ background: #001133;
257
+ outline: none;
258
+ }
259
+
260
+ .volume-slider::-webkit-slider-thumb {
261
+ -webkit-appearance: none;
262
+ width: 12px;
263
+ height: 12px;
264
+ background: #00aaff;
265
+ border-radius: 50%;
266
+ cursor: pointer;
267
+ }
268
+
269
+ /* コントロールパネル */
270
+ .controls, .new {
271
+ width: 100%;
272
+ max-width: 800px;
273
+ background-color: #0f0f1a;
274
+ padding: 20px;
275
+ border: 1px solid #0066ff;
276
+ box-shadow: 0 0 15px rgba(0, 102, 255, 0.3);
277
+ margin-bottom: 20px;
278
+ }
279
+
280
+ .control-group {
281
+ display: flex;
282
+ flex-direction: row;
283
+ align-items: center;
284
+ justify-content: flex-start;
285
+ gap: 10px;
286
+ flex-wrap: nowrap;
287
+ }
288
+
289
+ .control-group label {
290
+ white-space: nowrap;
291
+ min-width: 100px;
292
+ text-align: right;
293
+ color: #00ccff;
294
+ }
295
+
296
+ input[type="range"] {
297
+ flex-grow: 1;
298
+ -webkit-appearance: none;
299
+ height: 8px;
300
+ background: #001133;
301
+ border-radius: 5px;
302
+ outline: none;
303
+ }
304
+
305
+ input[type="range"]::-webkit-slider-thumb {
306
+ -webkit-appearance: none;
307
+ width: 18px;
308
+ height: 18px;
309
+ background: #00aaff;
310
+ border-radius: 50%;
311
+ cursor: pointer;
312
+ box-shadow: 0 0 5px #00aaff;
313
+ }
314
+
315
+ input[type="number"], select {
316
+ background-color: #001133;
317
+ color: #00ccff;
318
+ border: 1px solid #0066ff;
319
+ padding: 5px;
320
+ font-family: "M PLUS Rounded 1c", monospace;
321
+ }
322
+
323
+ button {
324
+ background-color: #001133;
325
+ color: #00ccff;
326
+ border: 1px solid #0066ff;
327
+ padding: 8px 15px;
328
+ cursor: pointer;
329
+ font-family: "M PLUS Rounded 1c", monospace;
330
+ transition: all 0.3s;
331
+ align-self: flex-start;
332
+ }
333
+
334
+ button:hover {
335
+ background-color: #0066ff;
336
+ color: #000;
337
+ box-shadow: 0 0 10px #0066ff;
338
+ }
339
+
340
+ select {
341
+ width: 300px;
342
+ background-color: #001133;
343
+ color: #00ccff;
344
+ border: 1px solid #0066ff;
345
+ padding: 5px;
346
+ }
347
+
348
+ input[type="checkbox"] {
349
+ -webkit-appearance: none;
350
+ width: 18px;
351
+ height: 18px;
352
+ background: #001133;
353
+ border: 1px solid #0066ff;
354
+ position: relative;
355
+ }
356
+
357
+ input[type="checkbox"]:checked {
358
+ background: #0066ff;
359
+ box-shadow: 0 0 5px #0066ff;
360
+ }
361
+
362
+ input[type="checkbox"]:checked::after {
363
+ content: "✓";
364
+ position: absolute;
365
+ color: #000;
366
+ font-size: 14px;
367
+ top: 50%;
368
+ left: 50%;
369
+ transform: translate(-50%, -50%);
370
+ }
371
+
372
+ /* 字幕設定用スタイル */
373
+ .subtitle-settings {
374
+ margin-top: 10px;
375
+ padding: 10px;
376
+ background-color: rgba(0, 20, 40, 0.5);
377
+ border: 1px solid #0066ff;
378
+ }
379
+
380
+ /* 字幕サイズ調整用のCSS変数 */
381
+ :root {
382
+ --subtitle-scale: 1;
383
+ --subtitle-border-radius: 10px;
384
+ }
385
+
386
+ video::cue {
387
+ font-size: calc(16px * var(--subtitle-scale)) !important;
388
+ line-height: 1.5 !important;
389
+ border-radius: var(--subtitle-border-radius) !important;
390
+ }
391
+
392
+ /* 全画面時の字幕サイズ調整 */
393
+ .video-container:fullscreen video::cue,
394
+ .video-container:-webkit-full-screen video::cue,
395
+ .video-container:-moz-full-screen video::cue,
396
+ .video-container:-ms-fullscreen video::cue {
397
+ font-size: calc(16px * var(--subtitle-scale) * var(--fullscreen-scale, 1)) !important;
398
+ }
399
+
400
+ /* ローディングアニメーション */
401
+ .loading-overlay {
402
+ position: fixed;
403
+ top: 0;
404
+ left: 0;
405
+ width: 100%;
406
+ height: 100%;
407
+ background-color: rgba(0, 0, 0, 0.8);
408
+ display: flex;
409
+ justify-content: center;
410
+ align-items: center;
411
+ z-index: 9999;
412
+ transition: opacity 1s ease-out;
413
+ }
414
+
415
+ .spinner-box {
416
+ width: 300px;
417
+ height: 300px;
418
+ display: flex;
419
+ justify-content: center;
420
+ align-items: center;
421
+ background-color: transparent;
422
+ }
423
+
424
+ /* 軌道スタイル */
425
+ .leo {
426
+ position: absolute;
427
+ display: flex;
428
+ justify-content: center;
429
+ align-items: center;
430
+ border-radius: 50%;
431
+ }
432
+
433
+ .blue-orbit {
434
+ width: 165px;
435
+ height: 165px;
436
+ border: 1px solid #91daffa5;
437
+ animation: spin3D 3s linear .2s infinite;
438
+ }
439
+
440
+ .green-orbit {
441
+ width: 120px;
442
+ height: 120px;
443
+ border: 1px solid #91ffbfa5;
444
+ animation: spin3D 2s linear 0s infinite;
445
+ }
446
+
447
+ .red-orbit {
448
+ width: 90px;
449
+ height: 90px;
450
+ border: 1px solid #ffca91a5;
451
+ animation: spin3D 1s linear 0s infinite;
452
+ }
453
+
454
+ .white-orbit {
455
+ width: 60px;
456
+ height: 60px;
457
+ border: 2px solid #ffffff;
458
+ animation: spin3D 10s linear 0s infinite;
459
+ }
460
+
461
+ .w1 {
462
+ transform: rotate3D(1, 1, 1, 90deg);
463
+ }
464
+
465
+ .w2 {
466
+ transform: rotate3D(1, 2, .5, 90deg);
467
+ }
468
+
469
+ .w3 {
470
+ transform: rotate3D(.5, 1, 2, 90deg);
471
+ }
472
+
473
+ /* キーフレームアニメーション */
474
+ @keyframes spin3D {
475
+ from {
476
+ transform: rotate3d(.5,.5,.5, 360deg);
477
+ }
478
+ to {
479
+ transform: rotate3d(0,0,0, 0deg);
480
+ }
481
+ }
482
+
483
+ /* フレームプレビュー */
484
+ .frame-preview {
485
+ position: fixed;
486
+ bottom: 30px;
487
+ width: 160px;
488
+ height: 90px;
489
+ background: #000;
490
+ border: 2px solid #00aaff;
491
+ box-shadow: 0 0 10px rgba(0, 170, 255, 0.7);
492
+ display: none;
493
+ z-index: 100;
494
+ pointer-events: none;
495
+ }
496
+
497
+ .frame-preview canvas {
498
+ width: 100%;
499
+ height: 100%;
500
+ object-fit: contain;
501
+ }
502
+
503
+ .frame-time {
504
+ position: absolute;
505
+ bottom: -25px;
506
+ left: 50%;
507
+ transform: translateX(-50%);
508
+ background: rgba(0, 0, 0, 0.8);
509
+ color: #00ccff;
510
+ padding: 3px 8px;
511
+ border-radius: 4px;
512
+ font-size: 12px;
513
+ white-space: nowrap;
514
+ }
515
+
516
+ /* 右クリックメニュー */
517
+ .context-menu {
518
+ position: fixed;
519
+ background-color: #0f0f1a;
520
+ border: 1px solid #0066ff;
521
+ box-shadow: 0 0 15px rgba(0, 102, 255, 0.5);
522
+ z-index: 1000;
523
+ display: none;
524
+ min-width: 200px;
525
+ }
526
+
527
+ .context-menu button {
528
+ width: 100%;
529
+ text-align: left;
530
+ padding: 8px 15px;
531
+ border: none;
532
+ border-bottom: 1px solid #003366;
533
+ background: none;
534
+ color: #00ccff;
535
+ font-family: "M PLUS Rounded 1c", monospace;
536
+ cursor: pointer;
537
+ }
538
+
539
+ .context-menu button:hover {
540
+ background-color: #0066ff;
541
+ color: #000;
542
+ }
543
+
544
+ /* 音声/字幕のみモード */
545
+ .audio-only-mode {
546
+ position: absolute;
547
+ top: 10px;
548
+ right: 10px;
549
+ background: rgba(0, 0, 0, 0.7);
550
+ color: #00ccff;
551
+ padding: 5px 10px;
552
+ border-radius: 4px;
553
+ font-size: 12px;
554
+ display: none;
555
+ z-index: 10;
556
+ }
557
+
558
+ .audio-only-mode.active {
559
+ display: block;
560
+ }
561
+
562
+ /* リップルエフェクト */
563
+ .ripple {
564
+ position: absolute;
565
+ border-radius: 50%;
566
+ background: transparent;
567
+ border: 1px solid rgba(100, 210, 255, 0.3);
568
+ transform: translate(-50%, -50%);
569
+ pointer-events: none;
570
+ animation: ripple-animation 4s ease-out forwards;
571
+ z-index: -1;
572
+ }
573
+
574
+ @keyframes ripple-animation {
575
+ 0% {
576
+ width: 0;
577
+ height: 0;
578
+ opacity: 0.6;
579
+ }
580
+ 100% {
581
+ width: 600px;
582
+ height: 600px;
583
+ opacity: 0;
584
+ }
585
+ }
586
+
587
+ /* レスポンシブ対応 */
588
+ @media (max-width: 768px) {
589
+ .video-container,
590
+ .controls,
591
+ .new {
592
+ max-width: 95%;
593
+ }
594
 
595
+ .control-group {
596
+ flex-direction: column;
597
+ align-items: flex-start;
 
 
 
 
 
598
  }
599
 
600
+ .control-group label {
601
+ text-align: left;
602
+ margin-bottom: 5px;
 
 
 
 
603
  }
604
+
605
+ select {
606
+ width: 100%;
607
+ }
608
+ }
609
  </style>
610
 
611
  </head>