.route-control { position: fixed; top: calc(env(safe-area-inset-top) + .45rem); right: calc(max(.65rem, env(safe-area-inset-right)) + var(--icon-button-size) + .5rem); z-index: 10000; display: flex; align-items: flex-start; gap: .4rem; } .route-control-button, .route-control-button.ui-button { display: grid; place-items: center; width: var(--icon-button-size); min-width: var(--icon-button-size); height: var(--icon-button-size); min-height: var(--icon-button-size); box-sizing: border-box; margin: 0; padding: .45rem; overflow: hidden; border: 2px solid rgba(255, 255, 255, .9); border-radius: 50%; background: #24462b; color: #fff; box-shadow: 0 .15rem .55rem rgba(0, 0, 0, .28); cursor: pointer; touch-action: manipulation; } .route-control-button img { display: block; width: 100%; height: 100%; } .route-control-button:focus-visible, .route-control-button.ui-button:focus-visible { outline: .2rem solid #fff; outline-offset: .15rem; } .route-control-dropdown { position: absolute; top: calc(var(--icon-button-size) + .45rem); right: 0; width: min(24rem, calc(100vw - 1.3rem)); max-height: min(70dvh, 36rem); box-sizing: border-box; padding: .8rem; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; border: 1px solid rgba(49, 93, 58, .28); border-radius: 1rem; background: #f8f5eb; color: #233326; box-shadow: 0 .8rem 2rem rgba(20, 32, 22, .28); touch-action: pan-y; transform-origin: top right; transform: scaleY(0); opacity: 0; pointer-events: none; transition: transform 180ms ease-out, opacity 180ms ease-out; } .route-control-dropdown.is-open { transform: scaleY(1); opacity: 1; pointer-events: auto; } .route-control-dropdown section + section { margin-top: .85rem; padding-top: .75rem; border-top: 1px solid rgba(49, 93, 58, .18); } .route-control-dropdown h2 { margin: 0 0 .45rem; font-size: .95rem; } .route-control-list { display: grid; gap: .4rem; margin: 0; padding: 0; list-style: none; } .route-control-list li > span { display: block; padding: .6rem .7rem; border-radius: .65rem; background: #fff; color: #607160; font-size: .85rem; } .route-control-list button, .route-control-list button.ui-button { display: grid; width: 100%; min-height: 2.8rem; box-sizing: border-box; gap: .12rem; margin: 0; padding: .55rem .7rem; border: 1px solid rgba(49, 93, 58, .25); border-radius: .7rem; background: #fff; color: #233326; text-align: left; cursor: pointer; } .route-control-list button strong, .route-control-list button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .route-control-list button small { color: #607160; font-size: .75rem; } .route-control-list button[aria-current="true"] { border-color: #315d3a; background: #e7f1e9; box-shadow: inset .25rem 0 0 #315d3a; } .route-control-list button:focus-visible, .route-control-list button.ui-button:focus-visible { outline: .2rem solid #1e6fba; outline-offset: .1rem; } .route-control-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; margin-top: .85rem; padding-top: .75rem; border-top: 1px solid rgba(49, 93, 58, .18); } .editor-button, .editor-primary-button, .editor-secondary-button, .editor-danger-button, .editor-icon-button { border-radius: .75rem; font: inherit; min-height: 2.4rem; padding: .55rem .85rem; } .editor-button, .editor-primary-button { background: #315d3a; border: 1px solid #315d3a; color: #fff; } .editor-button { align-items: center; display: inline-flex; justify-content: center; min-height: 2.75rem; padding: .55rem .85rem; } .editor-media-actions { display: grid; gap: .75rem; grid-template-columns: repeat(2, minmax(0, 1fr)); } .editor-media-button { align-items: center; background: #fff; border: 1px solid rgba(49, 93, 58, .35); border-radius: .85rem; color: #233326; cursor: pointer; display: inline-flex; font: inherit; font-weight: 700; gap: .65rem; justify-content: center; min-height: 3.5rem; padding: .65rem .8rem; } .editor-media-button:hover { background: #eef5ef; border-color: #315d3a; } .editor-media-button:focus-visible { outline: .2rem solid #f2ca6b; outline-offset: .15rem; } .editor-media-icon { fill: none; flex: 0 0 2rem; height: 2rem; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; width: 2rem; } .editor-media-preview { display: grid; gap: .65rem; grid-template-columns: repeat(auto-fill, minmax(6.25rem, 1fr)); } .editor-media-preview:empty { display: none; } .editor-media-preview-card { background: #fff; border: 1px solid rgba(49, 93, 58, .22); border-radius: .8rem; min-width: 0; padding: .35rem; position: relative; } .editor-media-preview-card[data-selected="true"] { border-color: #315d3a; box-shadow: 0 0 0 .12rem rgba(49, 93, 58, .18); } .editor-media-preview-select { align-items: center; background: transparent; border: 0; color: #233326; cursor: pointer; display: flex; flex-direction: column; font: inherit; gap: .35rem; min-height: 5.2rem; padding: .25rem; width: 100%; } .editor-media-preview-select small { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .editor-media-preview-image { aspect-ratio: 1 / 1; border-radius: .55rem; display: block; object-fit: cover; width: 100%; } .editor-media-preview-audio { align-items: center; background: #eef5ef; border-radius: .55rem; display: flex; font-size: 2rem; justify-content: center; min-height: 4.1rem; width: 100%; } .editor-media-remove { align-items: center; background: #b42318; border: 2px solid #fff; border-radius: 999px; color: #fff; cursor: pointer; display: inline-flex; font-size: 1.45rem; font-weight: 800; height: 2.25rem; justify-content: center; line-height: 1; position: absolute; right: .15rem; top: .15rem; width: 2.25rem; } .editor-media-remove[hidden] { display: none; } .editor-form-actions { display: flex; flex-wrap: wrap; gap: .65rem; } .editor-form-actions > button { flex: 1 1 11rem; } .editor-danger-button { align-items: center; background: #b42318; border: 1px solid #b42318; color: #fff; display: inline-flex; font-weight: 700; gap: .55rem; justify-content: center; } .editor-danger-icon { color: #fff; font-size: 1.45rem; font-weight: 900; line-height: 1; } .editor-round-button { align-items: center; background: #315d3a; border: 0; border-radius: 999px; color: #fff; display: inline-flex; font-size: 1.8rem; font-weight: 700; height: 3rem; justify-content: center; line-height: 1; min-width: 3rem; padding: 0; } .editor-button:focus-visible, .editor-round-button:focus-visible, .editor-primary-button:focus-visible, .editor-secondary-button:focus-visible, .editor-danger-button:focus-visible, .editor-media-preview-select:focus-visible, .editor-media-remove:focus-visible, .editor-icon-button:focus-visible { outline: .2rem solid #f2ca6b; outline-offset: .15rem; } .editor-dialog { border: 0; border-radius: 1.2rem; box-shadow: 0 1.4rem 3rem rgba(20, 32, 22, .28); max-height: min(90vh, 55rem); max-width: min(92vw, 48rem); padding: 0; width: 48rem; } .editor-dialog::backdrop { background: rgba(21, 36, 24, .42); } .editor-dialog-shell { background: #f8f5eb; color: #233326; display: flex; flex-direction: column; gap: 1rem; max-height: min(90vh, 55rem); overflow-y: auto; padding: 1rem; } .editor-dialog-header, .editor-toolbar { align-items: center; display: flex; gap: .75rem; justify-content: space-between; } .editor-dialog-header h2, .editor-toolbar h3 { margin: 0; } .editor-dialog-header h2, .editor-toolbar-back h3 { flex: 1 1 auto; min-width: 0; } #editor-close { align-items: center; background: #fff; border: 1px solid rgba(49, 93, 58, .28); border-radius: 999px; color: #233326; display: inline-flex; font-size: 1.5rem; height: 2.4rem; justify-content: center; margin-left: auto; width: 2.4rem; } .editor-status { background: #fff8d7; border: 1px solid rgba(125, 92, 21, .25); border-radius: .8rem; margin: 0; padding: .7rem .85rem; } .editor-view[hidden], .editor-status[hidden] { display: none; } .editor-route-list, .editor-poi-list { display: flex; flex-direction: column; gap: .65rem; list-style: none; margin: 0; padding: 0; } .editor-route-group { display: grid; gap: .45rem; margin: .2rem 0; } .editor-route-group > h4 { margin: .45rem 0 0; color: #315d3a; font-size: .95rem; } .editor-poi-list { counter-reset: editor-poi; } .editor-route-item, .editor-poi-item { align-items: center; background: #fff; border: 1px solid rgba(49, 93, 58, .18); border-radius: .9rem; display: grid; gap: .75rem; grid-template-columns: minmax(0, 1fr) auto; padding: .75rem; } .editor-route-item > :first-child, .editor-poi-item > :first-child { min-width: 0; overflow-wrap: anywhere; } .editor-route-item strong, .editor-poi-item strong { display: block; } .editor-route-item small, .editor-poi-item small, .editor-muted { color: #607160; } .editor-form { background: #fff; border: 1px solid rgba(49, 93, 58, .18); border-radius: .9rem; display: flex; flex-direction: column; gap: .6rem; padding: .9rem; } .editor-form input, .editor-form textarea { border: 1px solid rgba(49, 93, 58, .35); border-radius: .65rem; font: inherit; padding: .65rem .75rem; } .editor-form textarea { resize: vertical; } .editor-gpx-group { display: grid; gap: .6rem; } .editor-secondary-button, .editor-icon-button { background: #fff; border: 1px solid rgba(49, 93, 58, .32); color: #233326; } .editor-icon-row { display: grid; grid-auto-flow: column; grid-auto-columns: 2.75rem; gap: .35rem; justify-self: end; } .editor-icon-button { align-items: center; display: inline-flex; justify-content: center; box-sizing: border-box; width: 2.75rem; min-width: 2.75rem; height: 2.75rem; margin: 0; padding: .35rem; } .editor-icon-danger { background: #b42318; border-color: #b42318; color: #fff; font-size: 1.3rem; font-weight: 900; } .editor-icon-danger:hover { background: #8f1c13; border-color: #8f1c13; } .editor-icon-button:disabled, .editor-icon-button[aria-disabled="true"] { cursor: not-allowed; opacity: .45; } .editor-poi-toolbar { margin-top: .5rem; } @media (max-width: 34rem) { .route-control { right: calc(max(.5rem, env(safe-area-inset-right)) + var(--icon-button-size) + .35rem); } .route-control-dropdown { position: fixed; top: calc(env(safe-area-inset-top) + var(--icon-button-size) + .9rem); right: max(.65rem, env(safe-area-inset-right)); left: max(.65rem, env(safe-area-inset-left)); width: auto; max-height: calc(100dvh - env(safe-area-inset-top) - 5.4rem); } .editor-dialog { max-width: calc(100vw - 1rem); width: calc(100vw - 1rem); } } @media (max-width: 34rem) { .editor-media-actions { grid-template-columns: 1fr; } } .current-location-button { min-width: 44px; min-height: 44px; } .current-location-button img { width: 24px; height: 24px; vertical-align: middle; }