:root {
--text-main: #1e1e1e;
--text-muted: #7a7a7a;
--panel: #ffffff;
--green: #22c868;
--yellow: #ffe100;
--yellow-dark: #f0d200;
--safe-top: env(safe-area-inset-top, 0px);
--safe-bottom: env(safe-area-inset-bottom, 0px);
--safe-left: env(safe-area-inset-left, 0px);
--safe-right: env(safe-area-inset-right, 0px);
--map-visible: 51%;
--pad-inline: clamp(14px, 4.4vw, 22px);
--gap-xs: clamp(6px, 1.8vw, 10px);
--gap-sm: clamp(8px, 2.4vw, 14px);
--gap-md: clamp(12px, 3.2vw, 18px);
--sheet-radius: clamp(18px, 5vw, 28px);
--control-size: clamp(44px, 12vw, 54px);
--map-ui-z: 1200;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html,
body {
margin: 0;
height: 100%;
}
html.auth-pending body {
visibility: hidden;
}
body {
font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background: #151515;
color: var(--text-main);
-webkit-font-smoothing: antialiased;
text-rendering: geometricPrecision;
min-height: 100vh;
min-height: 100dvh;
display: flex;
justify-content: center;
align-items: center;
}
button {
font-family: inherit;
cursor: pointer;
color: inherit;
}
img {
max-width: 100%;
display: block;
}
.app {
position: relative;
isolation: isolate;
width: 100%;
height: 100vh;
height: 100dvh;
overflow: hidden;
background: #d9cbcb;
}
.map-layer {
position: absolute;
inset: 0;
z-index: 1;
overflow: hidden;
}
.real-map {
position: absolute;
inset: 0;
background: #d9cdcd;
}
.real-map::before {
content: "";
position: absolute;
inset: 0;
z-index: 1;
pointer-events: none;
background: linear-gradient(180deg, rgba(18, 18, 18, 0.12), rgba(18, 18, 18, 0.1));
}
.leaflet-container {
font: inherit;
width: 100%;
height: 100%;
background: #d9cdcd;
}
.map-toolbar {
position: absolute;
top: calc(var(--safe-top) + var(--gap-md) + 20px);
left: calc(var(--safe-left) + var(--pad-inline));
z-index: var(--map-ui-z);
}
.availability-toggle {
position: relative;
width: clamp(86px, 24vw, 106px);
height: clamp(33px, 8.8vw, 40px);
padding: 0;
border: 0;
border-radius: 999px;
background: #fff;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15);
}
.availability-track {
width: 72%;
height: clamp(4px, 1vw, 5px);
border-radius: 999px;
background: #19c560;
}
.availability-knob {
position: absolute;
left: 50%;
top: 50%;
width: clamp(20px, 6vw, 26px);
height: clamp(20px, 6vw, 26px);
transform: translate(-50%, -50%);
border-radius: 50%;
display: grid;
place-items: center;
overflow: hidden;
background: #12c95b;
}
.availability-symbol {
width: 100%;
height: 100%;
display: block;
object-fit: contain;
pointer-events: none;
}
.subscription-map-icon {
position: absolute;
top: calc(var(--safe-top) + var(--gap-md) + 20px);
right: calc(var(--safe-right) + 6px);
width: clamp(62px, 17vw, 78px);
height: auto;
z-index: var(--map-ui-z);
pointer-events: none;
}
.map-tooltip {
position: absolute;
right: calc(var(--safe-right) + var(--pad-inline) + var(--control-size) + 8px);
bottom: calc((100% - var(--map-visible)) + var(--gap-md) + var(--control-size) + var(--gap-sm) + ((var(--control-size) - 32px) / 2));
margin: 0;
max-width: calc(100% - (2 * var(--pad-inline)) - var(--control-size) - 12px);
background: rgba(31, 31, 31, 0.94);
color: #fff;
padding: 7px 12px;
border-radius: 8px;
font-size: 14px;
line-height: 18px;
font-weight: 400;
white-space: nowrap;
overflow: visible;
text-overflow: ellipsis;
z-index: var(--map-ui-z);
transition: opacity 0.18s ease;
}
.map-tooltip::after {
content: "";
position: absolute;
right: -6px;
top: 50%;
width: 0;
height: 0;
border-top: 6px solid transparent;
border-bottom: 6px solid transparent;
border-left: 6px solid rgba(31, 31, 31, 0.94);
transform: translateY(-50%);
}
.back-btn {
position: absolute;
left: calc(var(--safe-left) + var(--pad-inline));
bottom: calc((100% - var(--map-visible)) + var(--gap-md));
width: var(--control-size);
height: var(--control-size);
border: 0;
border-radius: 50%;
background: #fff;
font-size: clamp(20px, 5.6vw, 26px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
z-index: var(--map-ui-z);
display: grid;
place-items: center;
}
.map-actions {
position: absolute;
right: calc(var(--safe-right) + var(--pad-inline));
bottom: calc((100% - var(--map-visible)) + var(--gap-md));
display: flex;
flex-direction: column;
gap: var(--gap-sm);
z-index: var(--map-ui-z);
}
.map-toolbar,
.back-btn,
.map-actions {
transition: opacity 0.18s ease;
}
.photo-history-btn,
.location-btn {
width: var(--control-size);
height: var(--control-size);
border: 0;
border-radius: 50%;
background: #f5f5f5;
display: grid;
place-items: center;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18);
flex-shrink: 0;
}
.button-icon,
.book-side-icon {
width: 58%;
height: 58%;
object-fit: contain;
pointer-events: none;
}
.book-side-icon {
width: 90%;
height: 90%;
}
.photo-history-btn .button-icon {
width: 85%;
height: 85%;
}
.location-btn .button-icon {
width: 90%;
height: 90%;
}
.photo-history-icon {
position: relative;
width: 46%;
aspect-ratio: 1 / 1;
border-radius: 27%;
background: #1f1f1f;
}
.photo-history-icon::before {
content: "";
position: absolute;
width: 28%;
aspect-ratio: 1 / 1;
border-radius: 50%;
background: #ffffff;
left: 50%;
top: 22%;
transform: translateX(-50%);
}
.photo-history-icon::after {
content: "";
position: absolute;
width: 54%;
height: 28%;
border-radius: 50% 50% 20% 20%;
background: #ffffff;
left: 50%;
bottom: 16%;
transform: translateX(-50%);
}
.location-tag {
position: relative;
width: 30%;
height: 46%;
border-radius: 26% 26% 38% 38%;
background: #1d1d1d;
transform: rotate(32deg);
}
.location-tag::before {
content: "";
position: absolute;
width: 34%;
aspect-ratio: 1 / 1;
border-radius: 50%;
background: #f5f5f5;
left: 50%;
top: 18%;
transform: translateX(-50%);
}
.location-tag::after {
content: "";
position: absolute;
left: 50%;
bottom: -18%;
width: 60%;
aspect-ratio: 1 / 1;
background: #1d1d1d;
transform: translateX(-50%) rotate(45deg);
border-radius: 15%;
}
.location-btn.is-active {
background: #e9f4ff;
box-shadow: 0 0 0 2px rgba(77, 146, 232, 0.45), 0 8px 20px rgba(0, 0, 0, 0.16);
}
.location-btn.is-active .location-tag,
.location-btn.is-active .location-tag::after {
background: #1f6fd6;
}
.location-btn.is-active .location-tag::before {
background: #ffffff;
}
.user-location-marker {
background: transparent;
border: 0;
}
.user-location-dot {
display: block;
width: 14px;
height: 14px;
border-radius: 50%;
background: #2275ff;
border: 2px solid #ffffff;
box-shadow: 0 0 0 10px rgba(34, 117, 255, 0.18);
}
.sheet {
position: absolute;
inset: 0;
top: var(--map-visible);
z-index: 3;
display: flex;
flex-direction: column;
min-height: 0;
background: var(--panel);
border-radius: var(--sheet-radius) var(--sheet-radius) 0 0;
box-shadow: 0 -14px 32px rgba(0, 0, 0, 0.14);
overflow: hidden;
}
.scooter-summary {
position: relative;
flex: 0 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--gap-sm);
min-height: clamp(66px, 12vh, 82px);
padding: clamp(8px, 2vh, 12px) var(--pad-inline) clamp(6px, 1.5vh, 10px);
background: #fff;
}
.summary-data {
position: relative;
z-index: 1;
min-width: 0;
}
.scooter-number {
margin: 0;
font-size: clamp(20px, 6.4vw, 28px);
line-height: 1;
letter-spacing: -0.6px;
font-weight: 650;
white-space: nowrap;
}
.summary-chips {
display: flex;
flex-wrap: wrap;
gap: var(--gap-xs);
margin-top: clamp(4px, 1.4vw, 8px);
}
.chip {
border-radius: 8px;
font-size: clamp(13px, 3.8vw, 17px);
line-height: 1;
padding: clamp(4px, 1.1vw, 5px) clamp(8px, 2.2vw, 10px);
font-weight: 500;
white-space: nowrap;
}
.chip-energy {
background: var(--green);
color: #08311a;
}
.chip-time {
background: #f2f2f2;
color: #5f5f5f;
}
.scooter-photo {
position: absolute;
right: calc(var(--pad-inline) * -1.25);
top: clamp(-8px, -1vh, -4px);
width: clamp(168px, 42vw, 243px);
aspect-ratio: 190 / 95;
object-fit: contain;
object-position: right center;
pointer-events: none;
}
.sheet-scroll {
flex: 0 0 auto;
min-height: 0;
overflow: visible;
}
.details-sheet {
padding: clamp(7px, 1.5vh, 10px) var(--pad-inline) 0;
}
.tariffs {
--tariff-gap: clamp(7px, 2vw, 10px);
display: flex;
gap: var(--tariff-gap);
overflow-x: auto;
overflow-y: hidden;
scroll-snap-type: x proximity;
-webkit-overflow-scrolling: touch;
padding-bottom: clamp(4px, 1vh, 6px);
margin-bottom: clamp(4px, 1vh, 6px);
scrollbar-width: none;
}
.tariffs::-webkit-scrollbar {
display: none;
}
.tariff-card {
scroll-snap-align: start;
flex: 0 0 calc((100% - (var(--tariff-gap) * 3)) / 4);
min-width: 0;
border: 1px solid transparent;
border-radius: 13px;
padding: clamp(7px, 1.7vw, 9px) clamp(6px, 1.7vw, 10px);
background: transparent;
text-align: left;
min-height: clamp(72px, 10.5vh, 88px);
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
}
.tariff-card.is-active {
background: #e8e8e8;
border-color: #dbdbdb;
}
.tariff-name {
display: block;
font-size: clamp(12px, 3.3vw, 14px);
font-weight: 500;
color: #686868;
}
.tariff-card.is-active .tariff-name {
font-weight: 600;
color: #2d2d2d;
}
.tariff-desc {
display: block;
margin-top: 1px;
font-size: clamp(10px, 2.8vw, 12px);
color: #878787;
line-height: 1.2;
}
.tariff-price {
display: flex;
align-items: baseline;
flex-wrap: nowrap;
gap: 4px;
margin-top: auto;
padding-top: clamp(6px, 1.6vw, 8px);
min-height: 18px;
white-space: nowrap;
}
.tariff-main {
font-size: clamp(14px, 3.7vw, 18px);
line-height: 1;
font-weight: 600;
white-space: nowrap;
}
.tariff-card:first-child .tariff-main {
font-size: 16px;
}
.tariff-old {
font-size: clamp(11px, 2.9vw, 13px);
color: #868686;
text-decoration: line-through;
white-space: nowrap;
}
.option-row {
padding: clamp(5px, 1.25vh, 8px) 0;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: var(--gap-sm);
}
.option-row h2 {
margin: 0;
font-size: clamp(15px, 4.15vw, 18px);
line-height: 1.1;
font-weight: 600;
}
.option-row p {
margin: 2px 0 0;
font-size: clamp(12px, 3.45vw, 15px);
color: var(--text-muted);
line-height: 1.12;
}
.ghost-btn {
flex-shrink: 0;
border: 0;
border-radius: 999px;
background: #efefef;
font-size: clamp(12px, 3.2vw, 14px);
font-weight: 500;
color: #2a2a2a;
padding: clamp(5px, 1.15vh, 7px) clamp(10px, 2.8vw, 13px);
}
.option-row-subscription {
align-items: center;
flex-wrap: nowrap;
gap: clamp(6px, 1.8vw, 9px);
padding-top: clamp(5px, 1.3vh, 8px);
}
.subscription-head {
display: flex;
align-items: center;
flex: 1 1 auto;
gap: clamp(7px, 2vw, 10px);
min-width: 0;
}
.subscription-head > div {
min-width: 0;
}
.mixx-chip {
flex-shrink: 0;
width: clamp(38px, 10vw, 44px);
height: clamp(25px, 6.8vw, 30px);
border-radius: 8px;
background: #ececec;
color: #5f5f5f;
font-size: clamp(10px, 2.8vw, 12px);
font-weight: 700;
letter-spacing: 0.5px;
display: grid;
place-items: center;
}
.switch {
position: relative;
flex-shrink: 0;
width: clamp(34px, 8.8vw, 42px);
height: clamp(20px, 5.4vw, 24px);
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.switch-slider {
position: absolute;
inset: 0;
border-radius: 999px;
background: #dddddd;
transition: 0.2s ease;
}
.switch-slider::before {
content: "";
position: absolute;
width: clamp(16px, 4.6vw, 20px);
height: clamp(16px, 4.6vw, 20px);
aspect-ratio: 1 / 1;
top: 2px;
left: 2px;
border-radius: 50%;
background: #fff;
transition: 0.2s ease;
}
.switch input:checked + .switch-slider {
background: var(--green);
}
.switch input:checked + .switch-slider::before {
transform: translateX(clamp(14px, 3.9vw, 18px));
}
.sheet-footer {
flex: 0 0 auto;
padding: clamp(6px, 1.2vh, 8px) var(--pad-inline) calc(clamp(4px, 1vh, 7px) + var(--safe-bottom));
}
.book-row {
display: grid;
grid-template-columns: clamp(34px, 9vw, 42px) minmax(0, 1fr) clamp(34px, 9vw, 42px);
align-items: center;
gap: clamp(7px, 2vw, 10px);
}
.book-side-btn {
border: 0;
height: clamp(28px, 7.2vw, 30px);
display: grid;
place-items: center;
}
.book-side-btn-check {
border-radius: 7px;
background: transparent;
color: #fff;
}
.check-glyph {
font-size: clamp(13px, 3.6vw, 16px);
font-weight: 500;
line-height: 1;
}
.book-side-btn-info {
width: clamp(34px, 9vw, 42px);
height: clamp(34px, 9vw, 42px);
border-radius: 50%;
background: transparent;
color: #fff;
}
.book-side-btn-info .book-side-icon {
width: 100%;
height: 100%;
}
.book-btn {
min-width: 0;
width: 100%;
min-height: clamp(50px, 12.5vw, 58px);
border: 0;
border-radius: clamp(14px, 4vw, 17px);
background: var(--yellow);
color: #181818;
padding: clamp(8px, 1.85vh, 11px) clamp(10px, 3vw, 14px) clamp(8px, 1.75vh, 10px);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 1px;
}
.book-btn:hover {
background: var(--yellow-dark);
}
.book-btn-title {
font-size: clamp(16px, 4.6vw, 19px);
line-height: 1;
font-weight: 600;
white-space: nowrap;
}
.book-btn-price {
font-size: clamp(12px, 3.35vw, 15px);
line-height: 1.1;
font-weight: 500;
white-space: nowrap;
}
.book-btn-price:empty {
display: none;
}
.book-btn.is-purchase-mode .book-btn-title {
font-size: clamp(15px, 4.2vw, 18px);
font-weight: 500;
}
.disclaimer {
margin: clamp(3px, 0.8vh, 6px) 0 0;
padding: 0;
border: 0;
background: transparent;
width: 100%;
text-align: center;
font-size: clamp(10.5px, 3vw, 13px);
color: #8b8b8b;
text-decoration: underline;
text-underline-offset: 2px;
}
.disclaimer:hover {
color: #6f6f6f;
}
.dim-overlay {
position: absolute;
inset: 0;
z-index: 8;
background: rgba(16, 16, 16, 0.14);
opacity: 0;
pointer-events: none;
transition: opacity 0.22s ease;
}
.availability-sheet,
.photo-sheet,
.terms-sheet,
.ride-info-sheet,
.partner-info-sheet,
.deposit-info-sheet {
position: absolute;
left: 0;
right: 0;
bottom: 0;
max-height: calc(100% - var(--safe-top) - var(--gap-md));
display: flex;
flex-direction: column;
background: #fff;
border-radius: var(--sheet-radius) var(--sheet-radius) 0 0;
box-shadow: 0 -18px 34px rgba(0, 0, 0, 0.16);
transform: translateY(102%);
transition: transform 0.26s ease;
overflow-y: auto;
}
.availability-sheet {
z-index: 9;
padding: clamp(18px, 4.8vw, 24px) var(--pad-inline) calc(clamp(28px, 7vw, 34px) + var(--safe-bottom));
gap: clamp(10px, 2.8vw, 14px);
}
.photo-sheet {
z-index: 10;
padding: var(--gap-md) var(--pad-inline) calc(var(--gap-sm) + var(--safe-bottom));
}
.terms-sheet {
z-index: 10;
padding: var(--gap-md) var(--pad-inline) calc(var(--gap-md) + var(--safe-bottom));
}
.ride-info-sheet {
z-index: 10;
background: transparent;
box-shadow: none;
border-radius: 0;
overflow: visible;
}
.ride-info-card {
padding: clamp(15px, 4vw, 20px) var(--pad-inline) calc(clamp(12px, 3.2vw, 16px) + var(--safe-bottom));
border-radius: var(--sheet-radius) var(--sheet-radius) 0 0;
background: #fff;
box-shadow: 0 -18px 34px rgba(0, 0, 0, 0.12);
}
.ride-info-card h2 {
margin: 0;
padding-bottom: clamp(13px, 3.5vw, 17px);
border-bottom: 1px solid #ededed;
font-size: clamp(18px, 5.1vw, 22px);
line-height: 1.1;
font-weight: 600;
color: #202020;
}
.ride-info-list {
margin: 0;
}
.ride-info-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: clamp(11px, 3.1vw, 15px) 0;
}
.ride-info-row dt,
.ride-info-row dd {
margin: 0;
font-size: clamp(14px, 4vw, 17px);
line-height: 1.2;
color: #333;
}
.ride-info-row dd {
flex-shrink: 0;
text-align: right;
font-weight: 600;
color: #2a2a2a;
}
.ride-info-link-btn {
border: 0;
padding: 0;
background: transparent;
color: #2a2a2a;
font: inherit;
font-weight: 600;
text-align: right;
}
.ride-info-close-btn {
width: 100%;
margin-top: clamp(7px, 2vw, 10px);
border: 0;
border-radius: clamp(12px, 3.4vw, 14px);
background: #eeeeee;
padding: clamp(12px, 3.2vw, 15px);
color: #222;
font-size: clamp(14px, 3.8vw, 16px);
line-height: 1.1;
font-weight: 600;
}
.partner-info-sheet {
z-index: 12;
padding: clamp(20px, 5vw, 26px) var(--pad-inline) calc(clamp(16px, 4vw, 22px) + var(--safe-bottom));
}
.deposit-info-sheet {
z-index: 12;
padding: clamp(18px, 5vw, 24px) var(--pad-inline) calc(clamp(16px, 4vw, 22px) + var(--safe-bottom));
}
.partner-info-sheet h2 {
margin: 0 0 clamp(14px, 3.8vw, 18px);
font-size: clamp(24px, 6.7vw, 29px);
line-height: 1.1;
font-weight: 700;
letter-spacing: -0.4px;
color: #202020;
}
.partner-info-sheet p {
margin: 0 0 clamp(14px, 3.8vw, 18px);
font-size: clamp(15px, 4.2vw, 18px);
line-height: 1.25;
font-weight: 400;
color: #202020;
}
.partner-info-close-btn {
width: 100%;
margin-top: clamp(10px, 2.8vw, 14px);
border: 0;
border-radius: clamp(13px, 3.8vw, 17px);
background: var(--yellow);
padding: clamp(14px, 4vw, 18px);
color: #222;
font-size: clamp(16px, 4.5vw, 19px);
line-height: 1.1;
font-weight: 600;
}
.deposit-info-icon {
width: clamp(34px, 9vw, 40px);
height: clamp(34px, 9vw, 40px);
display: block;
margin-bottom: clamp(10px, 2.8vw, 14px);
}
.deposit-info-symbol {
width: 100%;
height: 100%;
display: block;
object-fit: contain;
pointer-events: none;
}
.deposit-info-sheet h2 {
margin: 0 0 clamp(8px, 2.4vw, 12px);
font-size: clamp(24px, 6.7vw, 29px);
line-height: 1.12;
font-weight: 700;
letter-spacing: -0.4px;
color: #202020;
}
.deposit-info-sheet p {
margin: 0 0 clamp(8px, 2.2vw, 12px);
font-size: clamp(16px, 4.5vw, 19px);
line-height: 1.18;
font-weight: 400;
color: #202020;
}
.deposit-info-sheet p:last-of-type {
margin-bottom: clamp(12px, 3.2vw, 16px);
}
.deposit-info-close-btn {
width: 100%;
margin-top: clamp(8px, 2.4vw, 12px);
border: 0;
border-radius: clamp(13px, 3.8vw, 17px);
background: var(--yellow);
padding: clamp(14px, 4vw, 18px);
color: #222;
font-size: clamp(16px, 4.5vw, 19px);
line-height: 1.1;
font-weight: 600;
}
.availability-icon {
flex-shrink: 0;
width: clamp(42px, 11vw, 48px);
height: clamp(42px, 11vw, 48px);
display: block;
}
.availability-sheet h2 {
margin: 0;
font-size: clamp(24px, 6.6vw, 28px);
line-height: 1.08;
font-weight: 800;
letter-spacing: -0.5px;
}
.availability-text {
margin: 0 0 clamp(8px, 2.2vw, 12px);
font-size: clamp(16px, 4.4vw, 19px);
color: #1f1f1f;
line-height: 1.32;
}
.availability-badge {
display: block;
width: 100%;
padding: clamp(7px, 2vw, 9px) clamp(10px, 2.8vw, 12px);
border-radius: 7px;
background: #f2f2f2;
color: #8a8a8a;
font-size: clamp(13px, 3.6vw, 15px);
font-weight: 700;
margin: clamp(4px, 1vw, 6px) 0 0;
}
.availability-scale-label {
margin: 0;
font-size: clamp(14px, 3.8vw, 16px);
color: #222;
line-height: 1.1;
}
.availability-scale {
position: relative;
height: 4px;
margin-top: 0;
border-radius: 999px;
background: #24c766;
flex-shrink: 0;
}
.availability-scale-dot {
position: absolute;
top: 50%;
left: 52%;
width: clamp(22px, 5.8vw, 26px);
height: clamp(22px, 5.8vw, 26px);
border-radius: 50%;
transform: translate(-50%, -50%);
background: transparent;
border: 0;
}
.ok-btn,
.photo-close-btn {
flex-shrink: 0;
width: 100%;
margin-top: var(--gap-md);
border: 0;
border-radius: clamp(14px, 4vw, 17px);
background: var(--yellow);
padding: clamp(16px, 4.2vw, 20px);
font-size: clamp(18px, 4.8vw, 20px);
line-height: 1.1;
font-weight: 700;
}
.photo-sheet h2 {
flex-shrink: 0;
margin: 0;
font-size: clamp(19px, 5.6vw, 22px);
letter-spacing: -0.2px;
}
.terms-sheet h2 {
margin: 0;
font-size: clamp(20px, 5.8vw, 24px);
line-height: 1.15;
}
.terms-sheet p {
margin: var(--gap-xs) 0 0;
font-size: clamp(14px, 3.8vw, 16px);
color: #555;
line-height: 1.35;
}
.terms-link {
display: block;
margin-top: var(--gap-md);
padding: 12px;
border-radius: 12px;
background: #f2f2f2;
color: #1f1f1f;
font-size: clamp(13px, 3.5vw, 15px);
line-height: 1.3;
overflow-wrap: anywhere;
}
.terms-close-btn {
flex-shrink: 0;
width: 100%;
margin-top: var(--gap-md);
border: 0;
border-radius: clamp(12px, 3.4vw, 14px);
background: var(--yellow);
padding: clamp(12px, 3vw, 15px);
font-size: clamp(15px, 4.2vw, 18px);
line-height: 1.1;
font-weight: 600;
}
.photo-sheet-image {
flex-shrink: 1;
min-height: 0;
margin-top: var(--gap-md);
width: 100%;
height: clamp(220px, 42vh, 460px);
object-fit: cover;
border-radius: clamp(14px, 4vw, 20px);
border: 1px solid #e9e9e9;
}
.app.is-photo-open .map-tooltip,
.app.is-availability-open .map-tooltip,
.app.is-terms-open .map-tooltip,
.app.is-ride-info-open .map-tooltip,
.app.is-partner-info-open .map-tooltip,
.app.is-deposit-info-open .map-tooltip {
opacity: 0;
pointer-events: none;
}
.app.is-availability-open .sheet-scroll,
.app.is-availability-open .sheet-footer {
display: none;
}
.app.is-availability-open .sheet {
background: transparent;
box-shadow: none;
}
.app.is-availability-open .availability-sheet {
transform: translateY(0);
}
.app.is-availability-open .dim-overlay {
opacity: 1;
pointer-events: auto;
}
.app.is-photo-open .scooter-summary,
.app.is-photo-open .sheet-scroll,
.app.is-photo-open .sheet-footer {
display: none;
}
.app.is-photo-open .sheet {
background: transparent;
box-shadow: none;
}
.app.is-photo-open .photo-sheet {
transform: translateY(0);
}
.app.is-terms-open .terms-sheet {
transform: translateY(0);
}
.app.is-ride-info-open .ride-info-sheet {
transform: translateY(0);
}
.app.is-partner-info-open .partner-info-sheet {
transform: translateY(0);
}
.app.is-deposit-info-open .deposit-info-sheet {
transform: translateY(0);
}
.app.is-photo-open .dim-overlay,
.app.is-terms-open .dim-overlay,
.app.is-ride-info-open .dim-overlay,
.app.is-partner-info-open .dim-overlay,
.app.is-deposit-info-open .dim-overlay {
background: rgba(16, 16, 16, 0.28);
opacity: 1;
pointer-events: auto;
}
.app.is-partner-info-open .dim-overlay,
.app.is-deposit-info-open .dim-overlay {
z-index: 11;
}
@media (max-height: 700px) {
:root {
--map-visible: 47%;
}
}
@media (max-height: 540px) {
:root {
--map-visible: 42%;
}
}
@media (max-height: 380px) {
:root {
--map-visible: 34%;
}
}
@media (min-width: 640px) {
body {
padding: clamp(16px, 4vh, 40px);
}
.app {
width: min(100%, 480px);
height: min(100dvh, 880px);
border-radius: 28px;
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.45);
}
}
@media (prefers-reduced-motion: reduce) {
* {
transition-duration: 0.001ms !important;
animation-duration: 0.001ms !important;
}
}
