Refactor layout and styles in CSS; remove unused car SVG from assets
This commit is contained in:
1 parent
36040d4ddd
commit
1eb60f7c06
3 files changed
+80
-197
No files matched your search
+49
-54
@@ -43,14 +43,14 @@ header {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 14px 24px;
|
padding: 10px 24px;
|
||||||
backdrop-filter: blur(18px);
|
backdrop-filter: blur(18px);
|
||||||
background: rgba(18, 13, 10, 0.7);
|
background: rgba(18, 13, 10, 0.7);
|
||||||
border-bottom: 1px solid var(--border);
|
border-bottom: 1px solid var(--border);
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
z-index: 50;
|
z-index: 50;
|
||||||
gap: 16px;
|
gap: 12px;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,44 +82,43 @@ header {
|
|||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Layout: single column, centered */
|
/* Layout: row with golden-ratio split, collapse on small */
|
||||||
.layout {
|
.layout {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: flex-start;
|
||||||
gap: 24px;
|
gap: 20px;
|
||||||
padding: 24px;
|
padding: 20px 24px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
max-width: 960px;
|
max-width: 100%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Region filter bar */
|
/* Region filter bar */
|
||||||
.region-bar {
|
.region-bar {
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 8px;
|
gap: 6px;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
padding: 0 4px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.region-label {
|
.region-label {
|
||||||
font-size: 12px;
|
font-size: 11px;
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
margin-right: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.region-btn {
|
.region-btn {
|
||||||
padding: 5px 14px;
|
padding: 4px 12px;
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
background: var(--surface);
|
background: var(--surface);
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
font-size: 13px;
|
font-size: 12px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition:
|
transition:
|
||||||
background 0.15s,
|
background 0.15s,
|
||||||
@@ -140,10 +139,11 @@ header {
|
|||||||
|
|
||||||
/* Video Player Section */
|
/* Video Player Section */
|
||||||
.player-panel {
|
.player-panel {
|
||||||
width: 100%;
|
flex: 1 1 80%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-stage {
|
.video-stage {
|
||||||
@@ -153,7 +153,6 @@ header {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
box-shadow: var(--shadow);
|
box-shadow: var(--shadow);
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
aspect-ratio: 16 / 9;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.video-stage video {
|
.video-stage video {
|
||||||
@@ -283,33 +282,35 @@ header {
|
|||||||
Camera Selector: 3-column grid + car graphic
|
Camera Selector: 3-column grid + car graphic
|
||||||
============================================= */
|
============================================= */
|
||||||
.cam-selector {
|
.cam-selector {
|
||||||
width: 100%;
|
flex: 1 1 20%;
|
||||||
|
min-width: 240px;
|
||||||
background: var(--surface);
|
background: var(--surface);
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
padding: 20px 24px;
|
padding: 14px 18px;
|
||||||
|
align-self: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cs-heading {
|
.cs-heading {
|
||||||
font-size: 11px;
|
font-size: 10px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
margin-bottom: 16px;
|
margin-bottom: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cs-grid {
|
.cs-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr auto 1fr;
|
grid-template-columns: 1fr auto 1fr;
|
||||||
gap: 16px;
|
gap: 8px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cs-col {
|
.cs-col {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cs-col:first-child {
|
.cs-col:first-child {
|
||||||
@@ -327,13 +328,13 @@ header {
|
|||||||
.cs-btn {
|
.cs-btn {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 8px;
|
gap: 6px;
|
||||||
padding: 0.65rem 1rem;
|
padding: 0.4rem 0.75rem;
|
||||||
background: rgba(255, 255, 255, 0.03);
|
background: rgba(255, 255, 255, 0.03);
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
font-size: 13px;
|
font-size: 12px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition:
|
transition:
|
||||||
@@ -342,7 +343,7 @@ header {
|
|||||||
color 0.25s ease,
|
color 0.25s ease,
|
||||||
border-color 0.25s ease;
|
border-color 0.25s ease;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
min-width: 140px;
|
min-width: 110px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,18 +382,6 @@ header {
|
|||||||
background: rgba(0, 0, 0, 0.25);
|
background: rgba(0, 0, 0, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Model Y Top-Down Car Graphic */
|
|
||||||
.car-graphic {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.car-svg {
|
|
||||||
width: 60px;
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* =============================================
|
/* =============================================
|
||||||
Login Page
|
Login Page
|
||||||
============================================= */
|
============================================= */
|
||||||
@@ -507,9 +496,24 @@ header {
|
|||||||
Responsive
|
Responsive
|
||||||
============================================= */
|
============================================= */
|
||||||
@media (max-width: 700px) {
|
@media (max-width: 700px) {
|
||||||
|
.layout {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.player-panel {
|
||||||
|
flex: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cam-selector {
|
||||||
|
flex: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.cs-grid {
|
.cs-grid {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
gap: 10px;
|
gap: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cs-col:first-child,
|
.cs-col:first-child,
|
||||||
@@ -522,31 +526,22 @@ header {
|
|||||||
|
|
||||||
.cs-col:nth-child(2) {
|
.cs-col:nth-child(2) {
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
gap: 10px;
|
gap: 6px;
|
||||||
}
|
|
||||||
|
|
||||||
.car-graphic {
|
|
||||||
order: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.car-svg {
|
|
||||||
width: 40px;
|
|
||||||
height: 140px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.cs-btn {
|
.cs-btn {
|
||||||
min-width: 120px;
|
min-width: 100px;
|
||||||
font-size: 12px;
|
font-size: 11px;
|
||||||
padding: 8px 12px;
|
padding: 6px 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 560px) {
|
@media (max-width: 560px) {
|
||||||
header {
|
header {
|
||||||
padding: 12px 16px;
|
padding: 10px 16px;
|
||||||
}
|
}
|
||||||
.layout {
|
.layout {
|
||||||
padding: 14px 16px;
|
padding: 12px 16px;
|
||||||
}
|
}
|
||||||
.brand small {
|
.brand small {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 400" class="car-svg">
|
|
||||||
<style>
|
|
||||||
:root { --accent: #ff0000; --text-muted: #888888; }
|
|
||||||
</style>
|
|
||||||
<!-- Car body -->
|
|
||||||
<rect
|
|
||||||
x="55"
|
|
||||||
y="80"
|
|
||||||
width="90"
|
|
||||||
height="240"
|
|
||||||
rx="30"
|
|
||||||
ry="30"
|
|
||||||
fill="none"
|
|
||||||
stroke="var(--text-muted)"
|
|
||||||
stroke-width="2"
|
|
||||||
/>
|
|
||||||
<!-- Windshield -->
|
|
||||||
<line
|
|
||||||
x1="65"
|
|
||||||
y1="110"
|
|
||||||
x2="135"
|
|
||||||
y2="110"
|
|
||||||
stroke="var(--text-muted)"
|
|
||||||
stroke-width="1.5"
|
|
||||||
/>
|
|
||||||
<!-- Back view -->
|
|
||||||
<line
|
|
||||||
x1="65"
|
|
||||||
y1="290"
|
|
||||||
x2="135"
|
|
||||||
y2="290"
|
|
||||||
stroke="var(--text-muted)"
|
|
||||||
stroke-width="1.5"
|
|
||||||
/>
|
|
||||||
<!-- Front view camera dot -->
|
|
||||||
<circle cx="100" cy="78" r="5" fill="var(--accent)" />
|
|
||||||
<!-- Back view camera dot -->
|
|
||||||
<circle cx="100" cy="322" r="5" fill="var(--accent)" />
|
|
||||||
<!-- Left repeater dot -->
|
|
||||||
<circle cx="53" cy="130" r="4" fill="var(--accent)" />
|
|
||||||
<!-- Right repeater dot -->
|
|
||||||
<circle cx="147" cy="130" r="4" fill="var(--accent)" />
|
|
||||||
<!-- Left pillar dot -->
|
|
||||||
<circle cx="53" cy="200" r="4" fill="var(--accent)" />
|
|
||||||
<!-- Right pillar dot -->
|
|
||||||
<circle cx="147" cy="200" r="4" fill="var(--accent)" />
|
|
||||||
<!-- Labels -->
|
|
||||||
<text
|
|
||||||
x="100"
|
|
||||||
y="68"
|
|
||||||
text-anchor="middle"
|
|
||||||
fill="var(--text-muted)"
|
|
||||||
font-size="9"
|
|
||||||
>
|
|
||||||
Front
|
|
||||||
</text>
|
|
||||||
<text
|
|
||||||
x="100"
|
|
||||||
y="342"
|
|
||||||
text-anchor="middle"
|
|
||||||
fill="var(--text-muted)"
|
|
||||||
font-size="9"
|
|
||||||
>
|
|
||||||
Back
|
|
||||||
</text>
|
|
||||||
<text
|
|
||||||
x="42"
|
|
||||||
y="134"
|
|
||||||
text-anchor="end"
|
|
||||||
fill="var(--text-muted)"
|
|
||||||
font-size="8"
|
|
||||||
>
|
|
||||||
L Rep
|
|
||||||
</text>
|
|
||||||
<text
|
|
||||||
x="158"
|
|
||||||
y="134"
|
|
||||||
text-anchor="start"
|
|
||||||
fill="var(--text-muted)"
|
|
||||||
font-size="8"
|
|
||||||
>
|
|
||||||
R Rep
|
|
||||||
</text>
|
|
||||||
<text
|
|
||||||
x="42"
|
|
||||||
y="204"
|
|
||||||
text-anchor="end"
|
|
||||||
fill="var(--text-muted)"
|
|
||||||
font-size="8"
|
|
||||||
>
|
|
||||||
L Pil
|
|
||||||
</text>
|
|
||||||
<text
|
|
||||||
x="158"
|
|
||||||
y="204"
|
|
||||||
text-anchor="start"
|
|
||||||
fill="var(--text-muted)"
|
|
||||||
font-size="8"
|
|
||||||
>
|
|
||||||
R Pil
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.8 KiB |
+31
-41
@@ -24,13 +24,9 @@
|
|||||||
<small>TeslaCam Archive</small>
|
<small>TeslaCam Archive</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
|
||||||
|
|
||||||
<!-- Main Layout: single column, centered -->
|
|
||||||
<div class="layout">
|
|
||||||
<!-- Region filter bar -->
|
<!-- Region filter bar -->
|
||||||
<nav class="region-bar" id="regionBar">
|
<nav class="region-bar" id="regionBar">
|
||||||
<span class="region-label">Shortcuts:</span>
|
<span class="region-label">Jump:</span>
|
||||||
<button
|
<button
|
||||||
class="region-btn"
|
class="region-btn"
|
||||||
id="firstBtn"
|
id="firstBtn"
|
||||||
@@ -40,36 +36,12 @@
|
|||||||
Start
|
Start
|
||||||
</button>
|
</button>
|
||||||
</nav>
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- Main Layout: single column, centered -->
|
||||||
|
<div class="layout">
|
||||||
<!-- Video Player -->
|
<!-- Video Player -->
|
||||||
<section class="player-panel">
|
<section class="player-panel">
|
||||||
<div class="video-stage">
|
|
||||||
{% set src = "src='" ~ default_url ~ "'" if default_url else '' %} {%
|
|
||||||
set hidden = 'hidden' if not default_url else '' %}
|
|
||||||
<video
|
|
||||||
id="player"
|
|
||||||
controls
|
|
||||||
preload="metadata"
|
|
||||||
playsinline
|
|
||||||
{{src}}
|
|
||||||
></video>
|
|
||||||
<canvas id="noiseCanvas" class="noise-canvas"></canvas>
|
|
||||||
<div class="video-badge" id="videoBadge">
|
|
||||||
<span class="dot"></span><span id="badgeText">Front</span>
|
|
||||||
</div>
|
|
||||||
<div class="video-placeholder" id="videoPlaceholder" {{hidden}}>
|
|
||||||
<svg
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="1.5"
|
|
||||||
>
|
|
||||||
<rect x="2" y="6" width="14" height="12" rx="2" />
|
|
||||||
<path d="M16 10l6-3v10l-6-3" />
|
|
||||||
</svg>
|
|
||||||
<div>No front camera footage found</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% set phidden = 'hidden' if not default_url else '' %}
|
{% set phidden = 'hidden' if not default_url else '' %}
|
||||||
<div class="now-playing" id="nowPlaying" {{phidden}}>
|
<div class="now-playing" id="nowPlaying" {{phidden}}>
|
||||||
<button
|
<button
|
||||||
@@ -112,6 +84,33 @@
|
|||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="video-stage">
|
||||||
|
{% set src = "src='" ~ default_url ~ "'" if default_url else '' %} {%
|
||||||
|
set hidden = 'hidden' if not default_url else '' %}
|
||||||
|
<video
|
||||||
|
id="player"
|
||||||
|
controls
|
||||||
|
preload="metadata"
|
||||||
|
playsinline
|
||||||
|
{{src}}
|
||||||
|
></video>
|
||||||
|
<canvas id="noiseCanvas" class="noise-canvas"></canvas>
|
||||||
|
<div class="video-badge" id="videoBadge">
|
||||||
|
<span class="dot"></span><span id="badgeText">Front</span>
|
||||||
|
</div>
|
||||||
|
<div class="video-placeholder" id="videoPlaceholder" {{hidden}}>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="1.5"
|
||||||
|
>
|
||||||
|
<rect x="2" y="6" width="14" height="12" rx="2" />
|
||||||
|
<path d="M16 10l6-3v10l-6-3" />
|
||||||
|
</svg>
|
||||||
|
<div>No front camera footage found</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Camera Angle Selector: 3-column grid around Model Y graphic -->
|
<!-- Camera Angle Selector: 3-column grid around Model Y graphic -->
|
||||||
@@ -135,15 +134,6 @@
|
|||||||
<span class="cs-btn-label">{{ cam.display }}</span>
|
<span class="cs-btn-label">{{ cam.display }}</span>
|
||||||
</button>
|
</button>
|
||||||
{% if cam.key=='front' %}
|
{% if cam.key=='front' %}
|
||||||
<!-- Model Y Top-Down SVG -->
|
|
||||||
<div class="car-graphic" aria-hidden="true">
|
|
||||||
<img
|
|
||||||
src="{{ url_for('static', filename='img/car.svg') }}"
|
|
||||||
alt="Model Y Top-Down View"
|
|
||||||
height="400"
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
{% endif %} {% endfor %}
|
{% endif %} {% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
Reference in new issue
Block a user