feat: add settings modal for map display
This commit is contained in:
163
src/styles.css
163
src/styles.css
@@ -150,6 +150,13 @@ a {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.brand-header {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 0.9rem;
|
||||
}
|
||||
|
||||
.brand-header p {
|
||||
margin: 0.25rem 0 0;
|
||||
color: #66726a;
|
||||
@@ -313,6 +320,12 @@ a {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.section-heading h3 {
|
||||
margin: 0;
|
||||
font-size: 0.98rem;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.section-heading span,
|
||||
.field-note {
|
||||
color: #66726a;
|
||||
@@ -821,6 +834,12 @@ a {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.map-view-dimmed .leaflet-pane,
|
||||
.map-view-dimmed .leaflet-control-container {
|
||||
opacity: 0.55;
|
||||
transition: opacity 140ms ease;
|
||||
}
|
||||
|
||||
.map-view .leaflet-control-zoom {
|
||||
overflow: hidden;
|
||||
border: 1px solid #a7b6ad;
|
||||
@@ -867,6 +886,20 @@ a {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.map-view .leaflet-tooltip {
|
||||
border: 1px solid #a7b6ad;
|
||||
border-radius: 6px;
|
||||
background: #ffffff;
|
||||
color: #17211c;
|
||||
box-shadow: 0 4px 14px rgb(23 33 28 / 14%);
|
||||
font-size: 0.76rem;
|
||||
font-weight: 720;
|
||||
}
|
||||
|
||||
.map-view .leaflet-tooltip::before {
|
||||
border-top-color: #ffffff;
|
||||
}
|
||||
|
||||
.result-marker {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
@@ -960,6 +993,131 @@ a {
|
||||
line-height: 1.45;
|
||||
}
|
||||
|
||||
.modal-backdrop {
|
||||
position: fixed;
|
||||
z-index: 3000;
|
||||
inset: 0;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: rgb(23 33 28 / 38%);
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.settings-modal {
|
||||
display: grid;
|
||||
gap: 1rem;
|
||||
width: min(560px, 100%);
|
||||
max-height: min(760px, calc(100vh - 2rem));
|
||||
overflow: auto;
|
||||
border: 1px solid #a7b6ad;
|
||||
border-radius: 10px;
|
||||
background: #fafbf8;
|
||||
padding: 1rem;
|
||||
box-shadow:
|
||||
0 24px 70px rgb(23 33 28 / 26%),
|
||||
0 8px 24px rgb(23 33 28 / 16%);
|
||||
}
|
||||
|
||||
.settings-header {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 1rem;
|
||||
border-bottom: 1px solid #dde5de;
|
||||
padding-bottom: 0.8rem;
|
||||
}
|
||||
|
||||
.settings-header h2 {
|
||||
margin: 0;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.settings-header p {
|
||||
margin: 0.25rem 0 0;
|
||||
color: #66726a;
|
||||
font-size: 0.88rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.settings-section {
|
||||
display: grid;
|
||||
gap: 0.75rem;
|
||||
border-bottom: 1px solid #e1e6df;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.settings-section:last-child {
|
||||
border-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.settings-toggle-grid {
|
||||
display: grid;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.settings-toggle-grid label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.55rem;
|
||||
min-height: 38px;
|
||||
border: 1px solid #c8d2ca;
|
||||
border-radius: 7px;
|
||||
background: linear-gradient(#ffffff, #f7f9f6);
|
||||
padding: 0.48rem 0.6rem;
|
||||
font-weight: 620;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.settings-toggle-grid label:hover {
|
||||
border-color: #7f9588;
|
||||
background: #f3f9f6;
|
||||
}
|
||||
|
||||
.settings-toggle-grid input {
|
||||
position: relative;
|
||||
flex: 0 0 1rem;
|
||||
width: 1rem !important;
|
||||
min-width: 1rem;
|
||||
max-width: 1rem;
|
||||
height: 1rem;
|
||||
min-height: 1rem;
|
||||
margin: 0;
|
||||
border: 1px solid #8ea098;
|
||||
border-radius: 4px;
|
||||
appearance: none;
|
||||
background: #ffffff;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.settings-toggle-grid input::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 46%;
|
||||
width: 0.28rem;
|
||||
height: 0.52rem;
|
||||
border-right: 2px solid #ffffff;
|
||||
border-bottom: 2px solid #ffffff;
|
||||
transform: translate(-50%, -50%) rotate(45deg) scale(0);
|
||||
transition: transform 120ms ease;
|
||||
}
|
||||
|
||||
.settings-toggle-grid input:checked {
|
||||
border-color: #226a5d;
|
||||
background: #226a5d;
|
||||
}
|
||||
|
||||
.settings-toggle-grid input:checked::before {
|
||||
transform: translate(-50%, -50%) rotate(45deg) scale(1);
|
||||
}
|
||||
|
||||
.settings-toggle-grid label:has(input:checked) {
|
||||
border-color: #5f9488;
|
||||
background: #e5f2ee;
|
||||
box-shadow: inset 0 0 0 1px rgb(34 106 93 / 16%);
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.app-shell {
|
||||
grid-template-columns: 1fr;
|
||||
@@ -1001,4 +1159,9 @@ a {
|
||||
.query-actions button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.settings-header {
|
||||
align-items: stretch;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user