316 lines
8.1 KiB
SCSS
316 lines
8.1 KiB
SCSS
|
|
// ─── Natus (Pick Sky) overlay ────────────────────────────────────────────────
|
||
|
|
// Gaussian backdrop + centred modal, matching the gate/sig overlay pattern.
|
||
|
|
// Open state: html.natus-open (added by JS on PICK SKY click).
|
||
|
|
//
|
||
|
|
// Layout: header / two-column body (form | wheel) / footer
|
||
|
|
// Collapses to stacked single-column below 600 px.
|
||
|
|
|
||
|
|
// ── Scroll-lock ───────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
html.natus-open {
|
||
|
|
overflow: hidden;
|
||
|
|
|
||
|
|
#id_aperture_fill { opacity: 1; }
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Backdrop ──────────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
.natus-backdrop {
|
||
|
|
position: fixed;
|
||
|
|
inset: 0;
|
||
|
|
background: rgba(0, 0, 0, 0.75);
|
||
|
|
backdrop-filter: blur(5px);
|
||
|
|
z-index: 100;
|
||
|
|
pointer-events: none;
|
||
|
|
|
||
|
|
// Hidden until html.natus-open
|
||
|
|
opacity: 0;
|
||
|
|
transition: opacity 0.15s ease;
|
||
|
|
}
|
||
|
|
|
||
|
|
html.natus-open .natus-backdrop {
|
||
|
|
opacity: 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Overlay shell (positions + scrolls the modal) ─────────────────────────────
|
||
|
|
|
||
|
|
.natus-overlay {
|
||
|
|
position: fixed;
|
||
|
|
inset: 0;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
z-index: 120;
|
||
|
|
overflow-y: auto;
|
||
|
|
overscroll-behavior: contain;
|
||
|
|
pointer-events: none;
|
||
|
|
|
||
|
|
// Hidden until html.natus-open
|
||
|
|
visibility: hidden;
|
||
|
|
|
||
|
|
@media (orientation: landscape) {
|
||
|
|
$sidebar-w: 4rem;
|
||
|
|
left: $sidebar-w;
|
||
|
|
right: $sidebar-w;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
html.natus-open .natus-overlay {
|
||
|
|
visibility: visible;
|
||
|
|
pointer-events: none; // modal itself is pointer-events: auto
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Modal panel ───────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
.natus-modal {
|
||
|
|
pointer-events: auto;
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
width: 92vw;
|
||
|
|
max-width: 840px;
|
||
|
|
max-height: 92vh;
|
||
|
|
border: 0.1rem solid rgba(var(--terUser), 0.25);
|
||
|
|
border-radius: 0.5rem;
|
||
|
|
background: rgba(var(--priUser), 1);
|
||
|
|
overflow: hidden;
|
||
|
|
|
||
|
|
// Fade + slide in
|
||
|
|
opacity: 0;
|
||
|
|
transform: translateY(1rem);
|
||
|
|
transition: opacity 0.2s ease, transform 0.2s ease;
|
||
|
|
}
|
||
|
|
|
||
|
|
html.natus-open .natus-modal {
|
||
|
|
opacity: 1;
|
||
|
|
transform: translateY(0);
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Header ────────────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
.natus-modal-header {
|
||
|
|
flex-shrink: 0;
|
||
|
|
padding: 0.6rem 1rem;
|
||
|
|
border-bottom: 0.1rem solid rgba(var(--terUser), 0.15);
|
||
|
|
display: flex;
|
||
|
|
flex-direction: row;
|
||
|
|
align-items: baseline;
|
||
|
|
gap: 0.75rem;
|
||
|
|
|
||
|
|
h2 {
|
||
|
|
margin: 0;
|
||
|
|
font-size: 1.1rem;
|
||
|
|
letter-spacing: 0.06em;
|
||
|
|
|
||
|
|
span { color: rgba(var(--secUser), 1); }
|
||
|
|
}
|
||
|
|
|
||
|
|
p {
|
||
|
|
margin: 0;
|
||
|
|
font-size: 0.7rem;
|
||
|
|
opacity: 0.55;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Body: two columns ─────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
.natus-modal-body {
|
||
|
|
flex: 1;
|
||
|
|
min-height: 0;
|
||
|
|
display: flex;
|
||
|
|
flex-direction: row;
|
||
|
|
overflow: hidden;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Form column — fixed width, scrollable
|
||
|
|
.natus-form-col {
|
||
|
|
flex: 0 0 240px;
|
||
|
|
overflow-y: auto;
|
||
|
|
padding: 0.9rem 1rem;
|
||
|
|
border-right: 0.1rem solid rgba(var(--terUser), 0.12);
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
gap: 0.65rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Wheel column — fills remaining space
|
||
|
|
.natus-wheel-col {
|
||
|
|
flex: 1;
|
||
|
|
min-width: 0;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
padding: 0.75rem;
|
||
|
|
background: rgba(var(--priUser), 0.5);
|
||
|
|
position: relative;
|
||
|
|
}
|
||
|
|
|
||
|
|
.natus-svg {
|
||
|
|
display: block;
|
||
|
|
width: 100%;
|
||
|
|
height: 100%;
|
||
|
|
aspect-ratio: 1 / 1;
|
||
|
|
max-width: 400px;
|
||
|
|
max-height: 400px;
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Form fields ───────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
.natus-field {
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
gap: 0.25rem;
|
||
|
|
|
||
|
|
label {
|
||
|
|
font-size: 0.6rem;
|
||
|
|
text-transform: uppercase;
|
||
|
|
letter-spacing: 0.1em;
|
||
|
|
color: rgba(var(--quaUser), 0.8);
|
||
|
|
}
|
||
|
|
|
||
|
|
input {
|
||
|
|
width: 100%;
|
||
|
|
// inherits global input styles
|
||
|
|
}
|
||
|
|
|
||
|
|
small {
|
||
|
|
font-size: 0.58rem;
|
||
|
|
opacity: 0.45;
|
||
|
|
line-height: 1.3;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Place search field wrapper: text input + geo button inline
|
||
|
|
.natus-place-field { position: relative; }
|
||
|
|
|
||
|
|
.natus-place-wrap {
|
||
|
|
display: flex;
|
||
|
|
gap: 0.4rem;
|
||
|
|
align-items: center;
|
||
|
|
|
||
|
|
input { flex: 1; min-width: 0; }
|
||
|
|
.btn-sm { flex-shrink: 0; }
|
||
|
|
}
|
||
|
|
|
||
|
|
// Nominatim suggestion dropdown
|
||
|
|
.natus-suggestions {
|
||
|
|
position: absolute;
|
||
|
|
left: 0;
|
||
|
|
right: 0;
|
||
|
|
top: calc(100% + 2px);
|
||
|
|
z-index: 10;
|
||
|
|
background: rgba(var(--priUser), 1);
|
||
|
|
border: 0.1rem solid rgba(var(--terUser), 0.3);
|
||
|
|
border-radius: 0.3rem;
|
||
|
|
overflow-y: auto;
|
||
|
|
max-height: 10rem;
|
||
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
|
||
|
|
}
|
||
|
|
|
||
|
|
.natus-suggestion-item {
|
||
|
|
display: block;
|
||
|
|
width: 100%;
|
||
|
|
padding: 0.4rem 0.6rem;
|
||
|
|
text-align: left;
|
||
|
|
background: none;
|
||
|
|
border: none;
|
||
|
|
border-bottom: 0.05rem solid rgba(var(--terUser), 0.1);
|
||
|
|
font-size: 0.65rem;
|
||
|
|
color: rgba(var(--ninUser), 0.85);
|
||
|
|
cursor: pointer;
|
||
|
|
line-height: 1.35;
|
||
|
|
|
||
|
|
&:last-child { border-bottom: none; }
|
||
|
|
|
||
|
|
&:hover, &:focus {
|
||
|
|
background: rgba(var(--terUser), 0.12);
|
||
|
|
color: rgba(var(--ninUser), 1);
|
||
|
|
outline: none;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Coords row: lat | lon (read-only, populated by place selection)
|
||
|
|
.natus-coords {
|
||
|
|
flex-direction: row;
|
||
|
|
align-items: flex-end;
|
||
|
|
gap: 0.4rem;
|
||
|
|
|
||
|
|
> div {
|
||
|
|
flex: 1;
|
||
|
|
min-width: 0;
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
gap: 0.25rem;
|
||
|
|
|
||
|
|
label {
|
||
|
|
font-size: 0.6rem;
|
||
|
|
text-transform: uppercase;
|
||
|
|
letter-spacing: 0.1em;
|
||
|
|
color: rgba(var(--quaUser), 0.8);
|
||
|
|
}
|
||
|
|
|
||
|
|
input {
|
||
|
|
width: 100%;
|
||
|
|
opacity: 0.6;
|
||
|
|
cursor: default;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Status line ───────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
.natus-status {
|
||
|
|
font-size: 0.65rem;
|
||
|
|
opacity: 0.6;
|
||
|
|
min-height: 1rem;
|
||
|
|
text-align: center;
|
||
|
|
|
||
|
|
&--error {
|
||
|
|
opacity: 1;
|
||
|
|
color: rgba(var(--priRd), 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Footer ────────────────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
.natus-modal-footer {
|
||
|
|
flex-shrink: 0;
|
||
|
|
padding: 0.6rem 1rem;
|
||
|
|
border-top: 0.1rem solid rgba(var(--terUser), 0.15);
|
||
|
|
display: flex;
|
||
|
|
justify-content: flex-end;
|
||
|
|
gap: 0.5rem;
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Narrow / portrait ─────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
@media (max-width: 600px) {
|
||
|
|
.natus-modal {
|
||
|
|
width: 96vw;
|
||
|
|
max-height: 96vh;
|
||
|
|
}
|
||
|
|
|
||
|
|
.natus-modal-body {
|
||
|
|
flex-direction: column;
|
||
|
|
overflow-y: auto;
|
||
|
|
}
|
||
|
|
|
||
|
|
.natus-form-col {
|
||
|
|
flex: 0 0 auto;
|
||
|
|
border-right: none;
|
||
|
|
border-bottom: 0.1rem solid rgba(var(--terUser), 0.12);
|
||
|
|
}
|
||
|
|
|
||
|
|
.natus-wheel-col {
|
||
|
|
flex: 0 0 280px;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// ── Sidebar z-index sink (landscape sidebars must go below backdrop) ───────────
|
||
|
|
|
||
|
|
@media (orientation: landscape) {
|
||
|
|
html.natus-open body .container .navbar,
|
||
|
|
html.natus-open body #id_footer {
|
||
|
|
z-index: 90;
|
||
|
|
}
|
||
|
|
}
|