Merge privacy-footer-overlay into dev (PRIVACY footer button + centered overlay note)
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m11s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m29s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m56s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m33s
Deploy DeepDrftManager / Deploy (push) Successful in 1m29s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m29s
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m11s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m29s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m56s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m33s
Deploy DeepDrftManager / Deploy (push) Successful in 1m29s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m29s
This commit is contained in:
@@ -4,8 +4,34 @@
|
||||
<ul class="deepdrft-footer-links">
|
||||
<li><a href="/about">About</a></li>
|
||||
<li><a href="#">Contact</a></li>
|
||||
<li><button class="deepdrft-footer-privacy-btn" @onclick="@OpenPrivacy" type="button" aria-haspopup="dialog">Privacy</button></li>
|
||||
</ul>
|
||||
<div class="deepdrft-footer-copy">© 2026 Deep DRFT</div>
|
||||
</div>
|
||||
<p class="deepdrft-footer-privacy">We keep a random tag in your browser so we can count how many people a track reaches — not who they are. No account, no name, nothing personal, nothing shared with anyone else. Clear your browser data and the tag’s gone.</p>
|
||||
</footer>
|
||||
|
||||
<MudOverlay Visible="@_privacyOpen"
|
||||
DarkBackground="true"
|
||||
Modal="true"
|
||||
OnClick="@ClosePrivacy"
|
||||
Class="deepdrft-privacy-overlay">
|
||||
<div class="deepdrft-privacy-modal" @onclick:stopPropagation="true">
|
||||
<div class="deepdrft-privacy-modal-header">
|
||||
<span class="deepdrft-privacy-modal-title">Privacy</span>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Close"
|
||||
Size="Size.Small"
|
||||
Color="Color.Default"
|
||||
OnClick="@ClosePrivacy"
|
||||
aria-label="Close privacy note"
|
||||
Class="deepdrft-privacy-modal-close" />
|
||||
</div>
|
||||
<p class="deepdrft-privacy-modal-body">We keep a random tag in your browser so we can count how many people a track reaches — not who they are. No account, no name, nothing personal, nothing shared with anyone else. Clear your browser data and the tag’s gone.</p>
|
||||
</div>
|
||||
</MudOverlay>
|
||||
|
||||
@code {
|
||||
private bool _privacyOpen;
|
||||
|
||||
private void OpenPrivacy() => _privacyOpen = true;
|
||||
private void ClosePrivacy() => _privacyOpen = false;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.deepdrft-footer-links a {
|
||||
.deepdrft-footer-links a,
|
||||
.deepdrft-footer-links button {
|
||||
font-family: var(--deepdrft-font-mono);
|
||||
font-size: 0.62rem;
|
||||
letter-spacing: 0.18em;
|
||||
@@ -48,7 +49,8 @@
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
.deepdrft-footer-links a:hover { color: var(--deepdrft-navy); }
|
||||
.deepdrft-footer-links a:hover,
|
||||
.deepdrft-footer-links button:hover { color: var(--deepdrft-navy); }
|
||||
|
||||
.deepdrft-footer-copy {
|
||||
font-family: var(--deepdrft-font-mono);
|
||||
@@ -57,14 +59,16 @@
|
||||
color: var(--deepdrft-muted);
|
||||
}
|
||||
|
||||
.deepdrft-footer-privacy {
|
||||
font-family: var(--deepdrft-font-mono);
|
||||
font-size: 0.55rem;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--deepdrft-muted);
|
||||
opacity: 0.7;
|
||||
/* PRIVACY trigger — reset button chrome so it reads as a link, not a button element.
|
||||
Typography/colour shared with footer <a> links via the grouped selector above. */
|
||||
.deepdrft-footer-privacy-btn {
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
line-height: 1.6;
|
||||
cursor: pointer;
|
||||
line-height: inherit;
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
@media (max-width: 440px) {
|
||||
|
||||
@@ -917,3 +917,82 @@ body:has(.deepdrft-queue-overlay) {
|
||||
max-height: 184px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
PRIVACY OVERLAY
|
||||
Screen-centered modal following the same MudOverlay idiom as the visualizer
|
||||
controls and queue overlays. MudOverlay portals to body — CSS isolation cannot
|
||||
reach portaled content, so chrome lives here in the global sheet.
|
||||
============================================================================= */
|
||||
|
||||
/* Raise above the sticky header (100), player dock (1200), and minimized FAB (1300). */
|
||||
.deepdrft-privacy-overlay {
|
||||
z-index: 1400 !important;
|
||||
}
|
||||
|
||||
/* Mild tint: doubled selector (0,2,0) outranks MudBlazor's .mud-overlay-dark (0,1,0). */
|
||||
.deepdrft-privacy-overlay .mud-overlay-scrim.mud-overlay-dark {
|
||||
background-color: rgba(var(--deepdrft-scrim-rgb), var(--deepdrft-modal-scrim-alpha));
|
||||
}
|
||||
|
||||
.deepdrft-privacy-overlay .mud-overlay-content {
|
||||
max-height: 90vh;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/* Lock body scroll while the overlay is open. */
|
||||
body:has(.deepdrft-privacy-overlay) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Panel: compact width, navy-panel ground, thin light border — matches queue/visualizer chrome. */
|
||||
.deepdrft-privacy-modal {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: min(90vw, 480px);
|
||||
background: var(--deepdrft-panel-ground);
|
||||
border: 1px solid var(--deepdrft-border-light);
|
||||
border-radius: 0;
|
||||
backdrop-filter: blur(8px);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.deepdrft-privacy-modal-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0.85rem 0.85rem 0.85rem 1rem;
|
||||
border-bottom: 1px solid var(--deepdrft-border-light);
|
||||
}
|
||||
|
||||
/* Mono uppercase eyebrow — matches queue modal title. */
|
||||
.deepdrft-privacy-modal-title {
|
||||
font-family: var(--deepdrft-font-mono);
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.2em;
|
||||
text-transform: uppercase;
|
||||
color: var(--deepdrft-white);
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
/* Tuck the close icon flush with the panel edge; keep it subtle. */
|
||||
.deepdrft-privacy-modal-close {
|
||||
opacity: 0.6;
|
||||
color: var(--deepdrft-white) !important;
|
||||
}
|
||||
|
||||
.deepdrft-privacy-modal-close:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* Privacy copy: same mono treatment as the former inline paragraph, but readable on dark ground. */
|
||||
.deepdrft-privacy-modal-body {
|
||||
font-family: var(--deepdrft-font-mono);
|
||||
font-size: 0.72rem;
|
||||
letter-spacing: 0.06em;
|
||||
line-height: 1.7;
|
||||
color: var(--deepdrft-white);
|
||||
opacity: 0.8;
|
||||
margin: 0;
|
||||
padding: 1rem 1rem 1.25rem;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user