/* Hosting options. Page layout only; components come from relmio-ui.css. */ .hosting-shell { display: flex; flex-direction: column; gap: var(--rm-space-3); width: min(100% - 2 * var(--rm-gutter), var(--rm-content-width)); margin-inline: auto; padding-block: var(--rm-space-4); } .hosting-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--rm-space-2) var(--rm-space-6); } .hosting-head__title { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--rm-space-1) var(--rm-space-4); min-width: 0; } .hosting-head__state { max-width: 34rem; min-width: 0; } .hosting-status, .hosting-error { line-height: 1.45; } .hosting-status { color: var(--rm-ink-muted); font-size: var(--rm-text-sm); } /* A failure replaces the progress line in the same slot. */ .hosting-head__state:has(> .hosting-error:not([hidden])) > .hosting-status { display: none; } .hosting-error::before { flex: none; width: 1rem; height: 1rem; margin-top: 0.125rem; background-color: currentColor; content: ""; -webkit-mask: var(--rm-icon-alert) center / contain no-repeat; mask: var(--rm-icon-alert) center / contain no-repeat; } .hosting-form { display: flex; flex-direction: column; min-height: 0; } .hosting-page[data-hosting-view="review"] .hosting-form { display: none; } .hosting-view .rm-panel__header { padding-top: var(--rm-space-4); padding-bottom: var(--rm-space-3); } .hosting-view .rm-panel__footer { justify-content: flex-end; } .hosting-footer-hint { flex: 1 1 16rem; min-width: 0; color: var(--rm-ink-muted); font-size: var(--rm-text-sm); line-height: 1.4; } .hosting-footer-hint:empty { display: none; } /* Step 1: the chooser beside a compact availability matrix. */ .hosting-compare { display: grid; grid-template-columns: minmax(15rem, 17rem) minmax(0, 1fr); align-items: start; gap: var(--rm-space-4) var(--rm-space-6); } .hosting-compare__matrix, .hosting-compare__chooser { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--rm-space-3); min-width: 0; } /* Contains the visually hidden cell text so it scrolls with the table. */ .hosting-matrix-wrap { position: relative; } .hosting-matrix { font-size: var(--rm-text-sm); } .hosting-matrix :is(th, td) { padding: 0.4375rem 0.625rem; vertical-align: middle; white-space: nowrap; } .hosting-matrix td { text-align: center; } .hosting-matrix thead th:not(:first-child) { text-align: center; } /* Experimental badges wrap under the host name instead of widening the table. */ .hosting-matrix tbody th { color: var(--rm-ink); font-weight: 600; white-space: normal; } .hosting-matrix tbody tr[data-selected="true"] > * { background: var(--rm-accent-soft); } .hosting-matrix__count { color: var(--rm-ink-subtle); font-family: var(--rm-font-mono); font-size: var(--rm-text-xs); font-weight: 500; } .hosting-mark { display: inline-grid; place-items: center; width: 1.25rem; height: 1.25rem; color: var(--rm-ink); vertical-align: middle; } .hosting-mark + .hosting-mark, .hosting-mark + .rm-visually-hidden + .hosting-mark { margin-inline-start: var(--rm-space-1); } .hosting-mark[data-mode="managed"] { color: var(--rm-accent-ink); } .hosting-mark[data-mode="external"] { color: var(--rm-ink-muted); } .hosting-mark[data-mode="unavailable"] { color: var(--rm-ink-subtle); } .hosting-mark[data-mode="unavailable"]::before { width: 0.625rem; height: 2px; border-radius: 1px; background: currentColor; content: ""; } .hosting-legend { display: flex; flex-wrap: wrap; gap: var(--rm-space-1) var(--rm-space-4); margin: 0; color: var(--rm-ink-muted); font-size: var(--rm-text-xs); line-height: 1.4; } .hosting-legend > div { display: flex; align-items: center; gap: var(--rm-space-1); } .hosting-legend dt { display: inline-flex; align-items: center; gap: var(--rm-space-1); color: var(--rm-ink); font-weight: 600; } .hosting-legend dd { margin: 0; } .hosting-capability { color: var(--rm-ink-muted); font-size: var(--rm-text-sm); line-height: 1.4; overflow-wrap: anywhere; } .hosting-capability > .rm-badge { margin-inline-end: var(--rm-space-1); } /* The root sign-in note reads as a warning through its words; color supports it. */ .hosting-capability__root { color: var(--rm-warning); font-weight: 600; } .hosting-notes-trigger { justify-self: start; margin-inline-start: -0.75rem; } /* Native popover: provider login notes open above the page, so the chooser keeps its height and the view still fits one screen. */ .hosting-notes { width: min(36rem, 100% - 2 * var(--rm-gutter)); max-height: calc(100% - 2 * var(--rm-gutter)); padding: var(--rm-space-4) var(--rm-space-5) var(--rm-space-5); overflow: auto; border: 1px solid var(--rm-line); border-radius: var(--rm-radius-xl); background: var(--rm-surface); box-shadow: var(--rm-shadow-lg); color: var(--rm-ink); font-size: var(--rm-text-md); line-height: var(--rm-leading-body); } .hosting-notes:popover-open { display: grid; gap: var(--rm-space-3); } .hosting-notes::backdrop { background: var(--rm-overlay); } .hosting-notes__header { display: flex; align-items: center; justify-content: space-between; gap: var(--rm-space-3); } .hosting-sources { display: flex; flex-wrap: wrap; gap: var(--rm-space-1) var(--rm-space-4); } .hosting-sources > a { overflow-wrap: anywhere; } /* Step 2: plan details. */ .hosting-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); align-items: start; gap: var(--rm-space-3) var(--rm-space-4); } .hosting-inputs { display: contents; } /* Optional plan details may scroll the panel body once opened. */ .hosting-review__layout { display: grid; align-content: start; gap: var(--rm-space-4); min-width: 0; } .hosting-review__side { display: grid; align-content: start; gap: var(--rm-space-4); min-width: 0; } .hosting-zip-note, .hosting-files-note { color: var(--rm-ink-muted); font-size: var(--rm-text-sm); line-height: 1.5; } .hosting-review__doc { gap: var(--rm-space-4); min-width: 0; padding-top: var(--rm-space-3); font-size: var(--rm-text-md); line-height: 1.55; } .hosting-review__doc > section { display: grid; gap: var(--rm-space-2); min-width: 0; } .hosting-review__doc h3 { font-size: var(--rm-text-md); font-weight: 650; } .hosting-review__doc :is(ol, ul) { display: grid; gap: var(--rm-space-2); margin: 0; padding-inline-start: 1.25rem; } .hosting-review__doc li { overflow-wrap: anywhere; } .hosting-code { margin: 0; padding: var(--rm-space-3) var(--rm-space-4); border-radius: var(--rm-radius-md); background: var(--rm-terminal-bg); color: var(--rm-terminal-fg); font-size: var(--rm-text-sm); line-height: 1.55; overflow-wrap: anywhere; white-space: pre-wrap; } .hosting-files { display: grid; gap: var(--rm-space-4); } .hosting-file { display: grid; gap: var(--rm-space-2); min-width: 0; } .hosting-file__header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--rm-space-2) var(--rm-space-4); } .hosting-file__name { font-family: var(--rm-font-mono); font-size: var(--rm-text-sm); font-weight: 600; overflow-wrap: anywhere; } /* One-screen shell: the active view fills the window below the heading. */ @media (min-width: 64rem) and (min-height: 37.5rem) { .rm-app--fit .hosting-shell { height: 100%; } .rm-app--fit :is(.hosting-form, .hosting-review, .hosting-form > .hosting-view) { flex: 1 1 auto; } .rm-app--fit .hosting-review__layout { flex: 1 1 auto; } } @media (max-width: 63.99rem) { .hosting-compare { grid-template-columns: minmax(0, 1fr); } } /* From 1024 to 1279px wide, and in windows under 768px tall such as 1280 x 720: a tighter shell keeps long plan forms, and step 1 with its longest capability note, on one screen. */ @media (min-width: 64rem) and (max-width: 79.99rem), (min-width: 64rem) and (min-height: 37.5rem) and (max-height: 47.99rem) { .hosting-shell { gap: var(--rm-space-2); padding-block: var(--rm-space-1); } .hosting-view .rm-panel__header { padding-top: var(--rm-space-2); padding-bottom: var(--rm-space-2); } } /* From 1024 to 1279px: five narrower field columns, and slimmer matrix cells so the availability table fits its column without scrolling sideways. */ @media (min-width: 64rem) and (max-width: 79.99rem) { .hosting-fields { grid-template-columns: repeat(auto-fill, minmax(min(100%, 11rem), 1fr)); gap: var(--rm-space-2) var(--rm-space-3); } .hosting-matrix :is(th, td) { padding-inline: 0.5rem; } }