/* Content safeguards shared by every bundled theme, including generated CSS builds. */
body { overflow-wrap: anywhere; }
/* No faked letters. Asked for a bold that a family was not loaded in, a browser smears the regular letters wider; asked
   for an italic it does not have, it slants the upright ones. Neither is the typeface, and thirteen of fourteen themes
   drew some text that way (CMS 4.28.0). With weight synthesis off the browser draws the nearest weight the family really
   has (the heaviest below what was asked), so "bold" in a font palette loaded at 400 and 500 is the real 500. Running
   text keeps a slanted <em>: an oblique is the usual italic of a sans face. Headings and quotations, where a faked
   italic shows, take the family's own italic when the font palette loads it ("italic": true in theme.json) and stay
   upright when it does not. theme-font-weights.test.mjs holds every theme and font palette to it. */
html { font-synthesis: style; }
:where(h1, h2, h3, h4, blockquote, .kit-heading, .kit-quote__text) { font-synthesis: none; }
/* A table's column shrinks to its longest word, not to one letter: "anywhere" above let the columns of a table in an
   article narrow on a phone until "Service" stood a letter to a line. A table that is then wider than a phone's screen
   scrolls sideways inside itself instead of the page. (The kit's own table, .kit-table, has its wrapper.) */
:where(main) :where(table) :where(th, td) { overflow-wrap: break-word; }
@media (max-width: 639.98px) {
  :where(main) :where(table):not(.kit-table > table) { display: block; max-width: 100%; overflow-x: auto; }
}
/* Figures stand on the line. Several display faces (Cormorant Garamond, Playfair Display, Syne, Alegreya) draw 3, 4, 5, 7
   and 9 hanging under it unless asked; in a price, a year or a phone number that reads as a mistake ("1975" as "I975").
   A rule that sets tabular figures must ask for lining ones again: font-variant-numeric: lining-nums tabular-nums. */
html { font-variant-numeric: lining-nums; }
:where(main, header, footer, #announcement-bar) :where(*) { min-width: 0; }
:where(main, header, footer) :where(img, video, iframe, input, select, textarea) { max-width: 100%; }
/* A picture printed with its width and height keeps its shape: the attributes reserve its place, CSS sets its size. */
:where(main, header, footer) :where(img[width][height]) { height: auto; }
:where(main, header, footer) a { max-width: 100%; }
.btn-pill, .loom-button, .loom-nav__item > a { white-space: normal; max-width: 100%; }
.btn-pill > *, .loom-button > * { min-width: 0; }
#announcement-bar .flex { flex-wrap: wrap; }
/* A footer row with more in it than fits (thirteen legal links, a long copyright beside them) wraps to another line instead of
   squeezing its words letter by letter. Zero specificity: a theme's own flex-wrap wins. */
:where(footer) :where(.flex:not(.flex-nowrap)) { flex-wrap: wrap; }
/* The same for a row of links or buttons in the page (thirteen social profiles under a team member, seven buttons in a
   hero): they wrap instead of shrinking over each other. */
:where(main) :where(.flex:not(.flex-nowrap):not(.flex-col):not(.overflow-x-auto):not([class*="snap-x"]):not(.swiper-wrapper)):where(:has(> a + a, > button + button, > a + button)) { flex-wrap: wrap; }
#site-header nav[class*="lg:flex"], .loom-nav--desktop { flex-wrap: wrap; }
#site-header :is(.h-14, .h-16, .h-20) { height: auto; min-height: 4rem; padding-block: .5rem; gap: .75rem; }
#site-header nav .group:focus-within > .invisible { opacity: 1; visibility: visible; }
#site-header nav .group > .absolute { max-width: calc(100vw - 2rem); }
#site-header nav .group > .absolute > * { min-width: min(200px, calc(100vw - 2rem)); }
.loom-nav__children { visibility: hidden; }
.loom-nav__item:is(:hover, :focus-within) > .loom-nav__children { visibility: visible; }
.loom-nav--mobile .loom-nav__children { visibility: visible; }

/* Switch crowded desktop navigation to the existing menu, not clipped links (resilience.js measures; the header declares its
   parts with data-site-nav, data-site-menu-button, data-site-cta and data-site-phone). The call to action stays in the bar
   unless it does not fit there either (theme-nav-compact-cta); the menu holds it then. */
#site-header.theme-nav-compact :is([data-site-nav], [data-theme-desktop-nav], [data-site-nav-row], [data-site-phone]),
#site-header.theme-nav-compact-cta [data-site-cta],
#site-header.theme-nav-compact > div > .hidden.lg\:flex { display: none !important; }
/* Themes without the contract (made before it): their old parts. */
#site-header.theme-nav-compact:not(:has([data-site-cta])) .hidden.lg\:inline-block,
#site-header.theme-nav-compact:not(:has([data-site-phone])) a[href^="tel:"]:not(.mobile-nav *),
#site-header.theme-nav-compact:not(:has([data-site-cta])) .loom-header__actions > .loom-button { display: none !important; }
#site-header.theme-nav-compact :is([data-site-menu-button], .mobile-menu-btn),
#site-header.theme-nav-compact .loom-menu-button { display: inline-flex !important; flex-shrink: 0; }
#site-header.theme-nav-compact .loom-menu-button { display: grid !important; }
/* The parts left in a compact bar keep one line each. */
#site-header.theme-nav-compact [data-site-cta], #site-header.theme-nav-compact [data-site-cta] * { white-space: nowrap; }
.loom-mobile-panel:not([hidden]) .loom-menu-close { display: grid; }
#site-header.theme-nav-compact .mobile-nav:not(.hidden),
#site-header.theme-nav-compact > div > .flex.lg\:hidden { display: flex !important; }
#site-header.theme-nav-compact .loom-header__inner { grid-template-columns: minmax(0, 1fr) auto; }

/* A picture whose file is missing (resilience.js): a quiet tint in the picture's place instead of the broken-image sign; a
   missing logo gives way to the website's name. */
img.theme-picture-missing { background: color-mix(in srgb, currentColor 8%, transparent); object-fit: cover; min-height: 2.5rem; }
img.theme-picture-missing--logo { display: none !important; }
.theme-logo-missing { display: inline-block; max-width: min(18rem, 60vw); overflow: hidden; font-weight: 700; font-size: 1.1em; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }

/* With JavaScript disabled, navigation and answers remain available. */
@media (scripting: none) {
  .mobile-menu-btn, .loom-menu-button, .loom-menu-close, .loom-nav__submenu-toggle { display: none !important; }
  .mobile-nav.hidden { display: block !important; max-height: none !important; }
  .loom-mobile-panel[hidden] { display: block; position: static; }
  .loom-nav--mobile .loom-nav__children[hidden] { display: block; }
  .faq-answer { max-height: none !important; opacity: 1 !important; }
}

/* White text on an accent fill reads the palette's on-accent colour: a light accent (amber, sage, lavender) gets dark text. Palettes
   and custom colours set --on-accent; without it the text stays white. */
[class~="bg-accent"][class~="text-white"],
[class~="bg-accent/90"][class~="text-white"],
[class~="hover:bg-accent"][class~="hover:text-white"]:hover { color: var(--on-accent, #fff) !important; }

/* Tables in written text (articles, Markdown pages, rich text): one layout for every theme. The Markdown parser puts each
   table in .kit-table and marks a column of amounts; themes give only the colours and type of the lines and headings.
   The table is as wide as the text column, so tables on a page line up; one too wide for a phone scrolls inside the
   wrapper, never the page; a long text column wraps while a short amount keeps its line. */
.kit-table { max-width: 100%; margin: 0 0 1.5em; overflow-x: auto; overscroll-behavior-x: contain; }
.kit-table:last-child { margin-bottom: 0; }
.kit-table > table { display: table; width: 100%; max-width: none; margin: 0; border-collapse: collapse; table-layout: auto; font-variant-numeric: lining-nums tabular-nums; }
.kit-table :is(th, td) { padding: 0.65em 0.9em; text-align: start; vertical-align: top; overflow-wrap: break-word; }
.kit-table :is(th, td):first-child { padding-inline-start: 0; }
.kit-table :is(th, td):last-child { padding-inline-end: 0; }
.kit-table thead th { vertical-align: bottom; }
:where(.kit-table) :where(th, td) { border-bottom: 1px solid color-mix(in srgb, var(--text-primary, currentColor) 14%, transparent); }
:where(.kit-table) :where(thead th) { border-bottom-color: color-mix(in srgb, var(--text-primary, currentColor) 32%, transparent); font-weight: 600; }
.kit-table .kit-table__num { text-align: end; }
.kit-table .kit-table__nowrap { white-space: nowrap; }
/* A long amount still wraps, but not into a sliver beside a long name. */
.kit-table td.kit-table__num:not(.kit-table__nowrap) { min-width: min(11em, 40vw); }

/* Marked text takes the website's accent in the two themes without a rule of their own (the others set theirs). */
html:is([data-theme="chic"], [data-theme="universal"]) ::selection { background: color-mix(in srgb, var(--accent, #2563eb) 26%, transparent); color: var(--text-primary, inherit); }

/* A box that scrolls sideways inside the page gets no system scrollbar. Content a visitor has to scroll (a wide table,
   code, a slider that has not started) shows a slim bar in the colour of its own text, with no arrows; browsers without
   these parts (Firefox) take the standard pair. A row of things to tap (tabs, thumbnails) shows none: a swipe, the keyboard
   or a trackpad moves it, and its cut-off last item says there is more. Neither scrollbar-width nor scrollbar-color may be
   set on the first kind elsewhere: Chrome then ignores this look. */
:is(.kit-table, .kit-cookie-table__scroll, .kit-rich-text pre, [class*="-prose"] pre, .prose pre, .theme-swiper:not(.swiper-initialized))::-webkit-scrollbar { width: 6px; height: 6px; }
:is(.kit-table, .kit-cookie-table__scroll, .kit-rich-text pre, [class*="-prose"] pre, .prose pre, .theme-swiper:not(.swiper-initialized))::-webkit-scrollbar-track,
:is(.kit-table, .kit-cookie-table__scroll, .kit-rich-text pre, [class*="-prose"] pre, .prose pre, .theme-swiper:not(.swiper-initialized))::-webkit-scrollbar-corner { background: transparent; }
:is(.kit-table, .kit-cookie-table__scroll, .kit-rich-text pre, [class*="-prose"] pre, .prose pre, .theme-swiper:not(.swiper-initialized))::-webkit-scrollbar-thumb { border-radius: 3px; background: color-mix(in srgb, currentColor 30%, transparent); }
:is(.kit-table, .kit-cookie-table__scroll, .kit-rich-text pre, [class*="-prose"] pre, .prose pre, .theme-swiper:not(.swiper-initialized))::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, currentColor 48%, transparent); }
@supports not selector(::-webkit-scrollbar) {
  :is(.kit-table, .kit-cookie-table__scroll, .kit-rich-text pre, [class*="-prose"] pre, .prose pre, .theme-swiper:not(.swiper-initialized)) { scrollbar-width: thin; scrollbar-color: color-mix(in srgb, currentColor 30%, transparent) transparent; }
}
:is(.kit-tabs__list, .kit-account-nav, .kit-gallery__thumbs, .loom-project-card__thumbs) { scrollbar-width: none; }
:is(.kit-tabs__list, .kit-account-nav, .kit-gallery__thumbs, .loom-project-card__thumbs)::-webkit-scrollbar { display: none; }

/* Lists, quotes and rules in a table-less piece of written text keep their theme's look; these only stop a quote or a
   list from running past the column on a phone. */
:where(.kit-rich-text, [class*="-prose"], .prose) :where(ul, ol) { padding-inline-start: 1.35em; }
:where(.kit-rich-text, [class*="-prose"], .prose) :where(blockquote, pre) { max-width: 100%; }

/* A gallery tile in the shape its gallery takes (theme_gallery_ratio and theme_tile_classes in helpers.php: the picture
   shape the website chose, or the one that suits its pictures). The picture fills the tile and is cropped around its
   focus; the shape wins over a theme's own fixed height or aspect ratio on the tile and its picture. */
.theme-tile { display: block; width: 100%; height: auto !important; min-height: 0 !important; overflow: hidden; }
.theme-tile--4-3 { aspect-ratio: 4 / 3 !important; }
.theme-tile--1-1 { aspect-ratio: 1 / 1 !important; }
.theme-tile--3-4 { aspect-ratio: 3 / 4 !important; }
.theme-tile img { display: block; width: 100% !important; height: 100% !important; max-height: none !important; object-fit: cover; }

/* Grids whose rows fill (theme_balanced_grid_classes in helpers.php picks the columns from the number of items): each
   item spans two of twice as many tracks, so a short last row can start half a column in and sit centred. One set of
   column counts for a phone, a tablet and a desktop. */
/* A template may keep one of these grids for wider screens only (hidden md:grid, beside a list for phones): the grid
   must not undo that. */
.kit-balanced:not(.hidden) { display: grid; }
.kit-balanced > * { grid-column-end: span 2; min-width: 0; }
@media (max-width: 639.98px) {
  .kit-balanced.kit-bal-phone--1 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-phone--2 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-phone-last--2-1 > :nth-last-child(1) { grid-column-start: 2; }
}
@media (min-width: 640px) and (max-width: 1023.98px) {
  .kit-balanced.kit-bal-mid--1 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-mid--2 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-mid--3 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-mid-last--2-1 > :nth-last-child(1) { grid-column-start: 2; }
  .kit-balanced.kit-bal-mid-last--3-1 > :nth-last-child(1) { grid-column-start: 3; }
  .kit-balanced.kit-bal-mid-last--3-2 > :nth-last-child(2) { grid-column-start: 2; }
}
/* Rows of four or more start at 1200 px, not at 1024: on a small laptop or a tablet lying down a card in a row of four
   is about 200 px wide, and an ordinary word ("Apgyvendinimas", a surname) does not fit it. Until then such a grid keeps
   its tablet columns. Small things (figures, logos: the grids with two to a phone row) keep four to a row from 1024 px
   and take five or six from 1200. ResponsiveImages::columnSizes follows the same widths. */
@media (min-width: 1024px) {
  .kit-balanced.kit-bal--1 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kit-balanced.kit-bal--2 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .kit-balanced.kit-bal--3 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-phone--2.kit-bal--4 { grid-template-columns: repeat(8, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-last--2-1 > :nth-last-child(1) { grid-column-start: 2; }
  .kit-balanced.kit-bal-last--3-1 > :nth-last-child(1) { grid-column-start: 3; }
  .kit-balanced.kit-bal-last--3-2 > :nth-last-child(2) { grid-column-start: 2; }
  .kit-balanced.kit-bal-phone--2.kit-bal-last--4-1 > :nth-last-child(1) { grid-column-start: 4; }
  .kit-balanced.kit-bal-phone--2.kit-bal-last--4-2 > :nth-last-child(2) { grid-column-start: 3; }
  .kit-balanced.kit-bal-phone--2.kit-bal-last--4-3 > :nth-last-child(3) { grid-column-start: 2; }
}
@media (min-width: 1024px) and (max-width: 1199.98px) {
  .kit-balanced:is(.kit-bal--5, .kit-bal--6, .kit-bal--4:not(.kit-bal-phone--2)).kit-bal-mid--1 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kit-balanced:is(.kit-bal--5, .kit-bal--6, .kit-bal--4:not(.kit-bal-phone--2)).kit-bal-mid--2 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .kit-balanced:is(.kit-bal--5, .kit-bal--6, .kit-bal--4:not(.kit-bal-phone--2)).kit-bal-mid--3 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .kit-balanced:is(.kit-bal--5, .kit-bal--6, .kit-bal--4:not(.kit-bal-phone--2)).kit-bal-mid-last--2-1 > :nth-last-child(1) { grid-column-start: 2; }
  .kit-balanced:is(.kit-bal--5, .kit-bal--6, .kit-bal--4:not(.kit-bal-phone--2)).kit-bal-mid-last--3-1 > :nth-last-child(1) { grid-column-start: 3; }
  .kit-balanced:is(.kit-bal--5, .kit-bal--6, .kit-bal--4:not(.kit-bal-phone--2)).kit-bal-mid-last--3-2 > :nth-last-child(2) { grid-column-start: 2; }
}
@media (min-width: 1200px) {
  .kit-balanced.kit-bal--4 { grid-template-columns: repeat(8, minmax(0, 1fr)); }
  .kit-balanced.kit-bal--5 { grid-template-columns: repeat(10, minmax(0, 1fr)); }
  .kit-balanced.kit-bal--6 { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .kit-balanced.kit-bal-last--4-1 > :nth-last-child(1) { grid-column-start: 4; }
  .kit-balanced.kit-bal-last--4-2 > :nth-last-child(2) { grid-column-start: 3; }
  .kit-balanced.kit-bal-last--4-3 > :nth-last-child(3) { grid-column-start: 2; }
  .kit-balanced.kit-bal-last--5-1 > :nth-last-child(1) { grid-column-start: 5; }
  .kit-balanced.kit-bal-last--5-2 > :nth-last-child(2) { grid-column-start: 4; }
  .kit-balanced.kit-bal-last--5-3 > :nth-last-child(3) { grid-column-start: 3; }
  .kit-balanced.kit-bal-last--5-4 > :nth-last-child(4) { grid-column-start: 2; }
  .kit-balanced.kit-bal-last--6-1 > :nth-last-child(1) { grid-column-start: 6; }
  .kit-balanced.kit-bal-last--6-2 > :nth-last-child(2) { grid-column-start: 5; }
  .kit-balanced.kit-bal-last--6-3 > :nth-last-child(3) { grid-column-start: 4; }
  .kit-balanced.kit-bal-last--6-4 > :nth-last-child(4) { grid-column-start: 3; }
  .kit-balanced.kit-bal-last--6-5 > :nth-last-child(5) { grid-column-start: 2; }
}

/* The steps block (kit-blocks/process_steps.php, .kit-steps) on a phone, where the steps stand in one column: the number, the
   icon and the title share one line and the description runs under them, instead of number, title and icon stacked. */
@media (max-width: 639.98px) {
  .kit-steps .kit-card__content { display: grid; grid-template-columns: auto auto minmax(0, 1fr); align-items: center; column-gap: 0.75rem; }
  .kit-steps .kit-card__eyebrow { grid-column: 1; grid-row: 1; margin: 0; }
  .kit-steps .kit-card__body { display: contents; }
  .kit-steps .kit-card__body > .kit-icon:first-child { grid-column: 2; grid-row: 1; margin: 0; }
  .kit-steps .kit-card__title { grid-column: 3; grid-row: 1; margin: 0; }
  .kit-steps .kit-card__content:not(:has(> .kit-card__body > .kit-icon:first-child)) > .kit-card__title { grid-column: 2 / -1; }
  .kit-steps .kit-card__body > :not(.kit-icon:first-child) { grid-column: 1 / -1; margin-top: 0.5rem; }
  /* With an icon the icon leads the line and the number follows it as a quiet label (kit.css), then the title. */
  .kit-steps .kit-card__content:has(> .kit-card__body > .kit-icon:first-child) > .kit-card__eyebrow { grid-column: 2; }
  .kit-steps .kit-card__body > .kit-icon:first-child { grid-column: 1; }
}

/* A masonry gallery (image_gallery with layout masonry): every picture whole, in two columns on a phone, three on a
   tablet and up to four on a desktop, for a gallery page of 20 to 40 pictures. */
/* A picture that asked to be shown whole (its media object's fit: "whole", CMS 4.21.1: a map, a plan, a poster) is never
   cropped: its frame takes the picture's own shape. A picture with a focus keeps that part in view (object-position on
   the picture itself, from ResponsiveImages::img). */
img[data-fit="whole"] { object-fit: contain !important; }
.kit-picture:has(img[data-fit="whole"]) { aspect-ratio: auto !important; height: auto !important; align-self: start; }
.kit-picture:has(img[data-fit="whole"]) img { width: 100% !important; height: auto !important; aspect-ratio: auto !important; transform: none !important; animation: none !important; }

/* A flat shade a theme lays over a picture or video (Chic, Universal): the layer names its own strength (--shade) and
   follows the block's tint (--pgs-tint, 1 unless the block asked for a lighter or a darker shade; CMS 4.21.2). */
.theme-shade { background-color: rgb(0 0 0 / min(0.94, calc(var(--shade, 0.55) * var(--pgs-tint, 1)))) !important; }

/* width: inside a stack that starts its children at the left, the columns would shrink to fit their pictures and leave
   the rest of a wide window empty (4.21.1). */
.kit-masonry { columns: 2; column-gap: 0.75rem; width: 100%; }
.kit-masonry > * { display: block; width: 100%; height: auto; min-height: 0; aspect-ratio: auto; margin: 0 0 0.75rem; break-inside: avoid; }
.kit-masonry img { display: block; width: 100%; height: auto; }
@media (min-width: 640px) { .kit-masonry { columns: 3; column-gap: 1rem; } .kit-masonry > * { margin-bottom: 1rem; } }
@media (min-width: 1024px) { .kit-masonry--4 { columns: 4; } .kit-masonry--2 { columns: 2; } }

/* The top of the page on a phone: the announcement's message keeps to at most two lines, and its link is never cut or
   hidden (it is often the phone number): beside the message when both fit, on a line of its own when they do not, whole
   and tall enough to tap. The close button keeps its place at the end of the band, out of the flow, so it never moves
   to a line of its own. The phone and email band above the header gives way to the action bar's Call button (or keeps to
   one short line when there is no phone), so the page itself starts within about 120 px. */
@media (max-width: 639.98px) {
  .theme-announcement__row { position: relative !important; display: flex !important; flex-wrap: wrap !important; align-items: center !important; justify-content: center !important; gap: 0.15rem 0.6rem !important; padding-block: 0.4rem !important; font-size: 0.8125rem !important; line-height: 1.3 !important; text-align: center !important; }
  .theme-announcement__row:has(> button) { padding-inline-end: 2.5rem !important; }
  .theme-announcement__row > :not(a, button) { flex: 0 1 auto; min-width: 0; max-width: 100%; margin: 0; }
  .theme-announcement__row > a { display: inline-flex !important; align-items: center; flex: 0 1 auto; min-width: 0; min-height: 1.75rem; max-width: 100%; margin: 0; overflow: visible; white-space: normal; text-overflow: clip; overflow-wrap: anywhere; }
  .theme-announcement__row > button { position: absolute !important; inset-inline-end: 0.25rem; inset-inline-start: auto !important; top: 50% !important; flex: none; width: 2rem; height: 2rem; margin: 0 !important; transform: translateY(-50%) !important; }
  .theme-announcement__message { display: -webkit-box !important; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; text-align: center; }
  body:has(> .theme-action-bar .theme-action-bar__call) :is(.atelier-topbar, .encore-topbar, .forge-topbar, .grove-topbar, .kite-topbar, .muse-topbar, .pulse-topbar, .saffron-topbar, .loom-topline) { display: none; }
  :is(.atelier-topbar, .encore-topbar, .forge-topbar, .grove-topbar, .kite-topbar, .muse-topbar, .pulse-topbar, .saffron-topbar) { font-size: 0.8rem; }
  :is(.atelier-topbar, .encore-topbar, .forge-topbar, .grove-topbar, .kite-topbar, .muse-topbar, .pulse-topbar, .saffron-topbar) > * { flex-wrap: nowrap !important; padding-block: 0.3rem !important; overflow-x: auto; white-space: nowrap; scrollbar-width: none; }
  :is(.atelier-topbar, .encore-topbar, .forge-topbar, .grove-topbar, .kite-topbar, .muse-topbar, .pulse-topbar, .saffron-topbar) [class$="__social"] { display: none; }
}

/* The parts of a stock enquiry form a theme draws with theme_enquiry_fields_html and theme_enquiry_after_html (CMS 4.21.0):
   a yes/no question and its two answers, a ticked box with its words, the notes under the button and the call line. The
   theme's own classes give the inputs their look; these only lay out what every theme draws the same way. */
.theme-enquiry-fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.theme-enquiry-legend { display: block; margin-bottom: 0.5rem; padding: 0; font-size: 0.875rem; font-weight: 500; }
.theme-enquiry-choices { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; }
.theme-enquiry-check { display: inline-flex; align-items: center; gap: 0.6rem; min-height: 2.75rem; cursor: pointer; }
.theme-enquiry-check input { flex: none; width: 1.15rem; height: 1.15rem; margin: 0; accent-color: var(--accent, currentColor); }
.theme-enquiry-notes { display: grid; gap: 0.35rem; margin: 1rem 0 0; padding: 0; list-style: none; font-size: 0.875rem; line-height: 1.5; opacity: 0.85; }
.theme-enquiry-notes li { position: relative; padding-inline-start: 1.1rem; }
.theme-enquiry-notes li::before { content: ""; position: absolute; inset-inline-start: 0.2rem; top: 0.6em; width: 0.4rem; height: 0.4rem; border-radius: 50%; background: var(--accent, currentColor); }
.theme-enquiry-call { margin: 0.85rem 0 0; font-size: 0.9375rem; text-align: center; }
.theme-enquiry-call__link { font-weight: 700; white-space: nowrap; text-decoration: underline; text-underline-offset: 0.2em; color: inherit; }
.kit-enquiry .kit-form__call { text-align: center; }

/* Each theme's main button, for the parts every theme shares and draws outside the Theme Kit: the phone action bar below
   and the cookie notice (cookie-consent.php). The values repeat what the theme's kit-theme.css gives its primary button
   (cms/tests/theme-chrome.test.mjs holds the two together), so these parts never look borrowed from another website.
   Zero specificity: a client theme sets its own on :root. */
:where(:root) {
  --chrome-radius: 0.5rem;
  --chrome-button-radius: 0.5rem;
  --chrome-button-fill: var(--primary, #1a1a1a);
  --chrome-button-ink: var(--on-primary, #fff);
  --chrome-button-font: var(--font-body, inherit);
  --chrome-button-size: 1rem;
  --chrome-button-weight: 600;
  --chrome-button-tracking: 0;
  --chrome-button-case: none;
  --chrome-button-border: 0;
  --chrome-button-shadow: none;
  --chrome-button-clip: none;
}
:where(html[data-theme="apothecary"]) { --chrome-radius: 0.75rem; --chrome-button-radius: 0.5rem; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="arcade"]) { --chrome-radius: 0.75rem; --chrome-button-radius: 0.5rem; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="atelier"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.72rem; --chrome-button-weight: 500; --chrome-button-tracking: 0.18em; --chrome-button-case: uppercase; }
:where(html[data-theme="bankside"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.75rem; --chrome-button-tracking: 0.08em; --chrome-button-case: uppercase; }
:where(html[data-theme="bespoke"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.78125rem; --chrome-button-tracking: 0.14em; --chrome-button-case: uppercase; }
:where(html[data-theme="cargo"]) { --chrome-radius: 0.75rem; --chrome-button-radius: 0.5rem; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="chic"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.8125rem; --chrome-button-tracking: 0.08em; --chrome-button-case: uppercase; }
:where(html[data-theme="circuit"]) { --chrome-radius: 0.625rem; --chrome-button-radius: 0.375rem; --chrome-button-size: 0.9375rem; --chrome-button-tracking: 0.005em; }
:where(html[data-theme="civic"]) { --chrome-radius: 0.75rem; --chrome-button-radius: 0.5rem; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="collage"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.8125rem; --chrome-button-weight: var(--collage-body-strong, 700); --chrome-button-tracking: 0.06em; --chrome-button-case: uppercase; --chrome-button-clip: polygon(2px 3px, calc(100% - 1px) 0, 100% calc(100% - 4px), 0 100%); }
:where(html[data-theme="deco"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.75rem; --chrome-button-tracking: 0.18em; --chrome-button-case: uppercase; --chrome-button-shadow: inset 0 0 0 3px var(--primary, #0f3a30), inset 0 0 0 4px var(--accent, #c6a15b); }
:where(html[data-theme="encore"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); --chrome-button-size: 0.78rem; --chrome-button-tracking: 0.2em; --chrome-button-case: uppercase; }
:where(html[data-theme="folio"]) { --chrome-radius: 0.25rem; --chrome-button-radius: 0.25rem; --chrome-button-size: 0.9375rem; --chrome-button-tracking: 0.01em; }
:where(html[data-theme="forge"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); --chrome-button-font: var(--font-heading, inherit); --chrome-button-size: 1.05rem; --chrome-button-tracking: 0.04em; --chrome-button-case: uppercase; --chrome-button-clip: polygon(0 0, calc(100% - 0.7rem) 0, 100% 0.7rem, 100% 100%, 0.7rem 100%, 0 calc(100% - 0.7rem)); }
:where(html[data-theme="gouache"]) { --chrome-radius: 1rem; --chrome-button-radius: 1.6rem 1.1rem 1.5rem 1.2rem / 1.2rem 1.5rem 1.1rem 1.6rem; --chrome-button-size: 0.9688rem; --chrome-button-weight: var(--gouache-body-strong, 700); }
:where(html[data-theme="grove"]) { --chrome-radius: 1.5rem; --chrome-button-radius: 1.25rem 0.35rem; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); }
:where(html[data-theme="haven"]) { --chrome-radius: 0.875rem; --chrome-button-radius: 999px; --chrome-button-size: 0.9375rem; --chrome-button-weight: 500; --chrome-button-tracking: 0.01em; }
:where(html[data-theme="hearth"]) { --chrome-radius: 0.375rem; --chrome-button-radius: 0.375rem; --chrome-button-size: 1rem; --chrome-button-tracking: 0.01em; --chrome-button-shadow: inset 0 0 0 3px var(--primary, #2c3530), inset 0 0 0 4px color-mix(in srgb, var(--on-primary, #f3ecdf) 42%, transparent); }
:where(html[data-theme="heirloom"]) { --chrome-radius: 0.5rem; --chrome-button-radius: 0.375rem; --chrome-button-size: 1rem; --chrome-button-weight: var(--heirloom-body-strong, 500); --chrome-button-shadow: inset 0 -3px 0 color-mix(in srgb, #000 24%, transparent); }
:where(html[data-theme="kite"]) { --chrome-radius: 1.5rem; --chrome-button-radius: 999px; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); --chrome-button-weight: 700; --chrome-button-border: 2px solid var(--text-primary, #231942); --chrome-button-shadow: 3px 3px 0 var(--text-primary, #231942); }
:where(html[data-theme="ledger"]) { --chrome-radius: 0.25rem; --chrome-button-radius: 0.1875rem; --chrome-button-size: 0.9375rem; --chrome-button-tracking: 0.01em; }
:where(html[data-theme="loom"]) { --chrome-radius: 1.25rem; --chrome-button-radius: 999px; --chrome-button-size: 0.86rem; --chrome-button-weight: 750; }
:where(html[data-theme="lumen"]) { --chrome-radius: 1.5rem; --chrome-button-radius: 999px; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="marquee"]) { --chrome-radius: 1.25rem; --chrome-button-radius: 999px; --chrome-button-size: 0.9375rem; --chrome-button-shadow: inset 0 0 0 3px var(--primary, #1a1a1a), inset 0 0 0 4.5px color-mix(in srgb, var(--on-primary, #fff) 55%, transparent); }
:where(html[data-theme="meridian"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="modern"]) { --chrome-radius: 1.15rem; --chrome-button-radius: 9999px; --chrome-button-size: 0.9rem; }
:where(html[data-theme="mosaic"]) { --chrome-radius: 1.5rem; --chrome-button-radius: 999px; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="muse"]) { --chrome-radius: 1.5rem; --chrome-button-radius: 999px; --chrome-button-size: 0.95rem; --chrome-button-weight: 500; --chrome-button-tracking: 0.01em; }
:where(html[data-theme="neon"]) { --chrome-radius: 1rem; --chrome-button-radius: 999px; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); --chrome-button-size: 0.9375rem; --chrome-button-shadow: 0 0 0.25rem color-mix(in srgb, var(--accent, #ff3d94) 60%, transparent), 0 0 1.1rem color-mix(in srgb, var(--accent, #ff3d94) 30%, transparent); }
:where(html[data-theme="nocturne"]) { --chrome-radius: 0.5rem; --chrome-button-radius: 0.375rem; --chrome-button-size: 0.8125rem; --chrome-button-tracking: 0.06em; --chrome-button-case: uppercase; }
:where(html[data-theme="pulse"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); --chrome-button-size: 0.875rem; --chrome-button-tracking: 0.09em; --chrome-button-case: uppercase; --chrome-button-clip: polygon(0.6rem 0, 100% 0, calc(100% - 0.6rem) 100%, 0 100%); }
:where(html[data-theme="riso"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.9375rem; --chrome-button-weight: var(--riso-body-strong, 700); --chrome-button-shadow: 0.25rem 0.25rem 0 0 var(--accent, #ff48b0); }
:where(html[data-theme="riviera"]) { --chrome-radius: 1.25rem; --chrome-button-radius: 999px; --chrome-button-size: 0.8125rem; --chrome-button-tracking: 0.14em; --chrome-button-case: uppercase; }
:where(html[data-theme="saffron"]) { --chrome-radius: 0.6rem; --chrome-button-radius: 0.45rem; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); --chrome-button-size: 0.9rem; --chrome-button-tracking: 0.08em; --chrome-button-case: uppercase; --chrome-button-shadow: inset 0 -3px 0 color-mix(in srgb, #000 16%, transparent); }
:where(html[data-theme="summit"]) { --chrome-radius: 0.75rem; --chrome-button-radius: 0.5rem; --chrome-button-fill: var(--accent, #1a1a1a); --chrome-button-ink: var(--on-accent, #fff); --chrome-button-size: 0.8125rem; --chrome-button-tracking: 0.08em; --chrome-button-case: uppercase; }
:where(html[data-theme="terra"]) { --chrome-radius: 1.5rem; --chrome-button-radius: 1.6rem 1.1rem 1.5rem 1.2rem / 1.25rem 1.55rem 1.1rem 1.45rem; --chrome-button-size: 1rem; --chrome-button-weight: var(--terra-body-strong, 500); --chrome-button-tracking: 0.01em; }
:where(html[data-theme="universal"]) { --chrome-radius: 0.75rem; --chrome-button-radius: 0.5rem; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="vital"]) { --chrome-radius: 0.75rem; --chrome-button-radius: 0.5rem; --chrome-button-size: 0.9375rem; }
:where(html[data-theme="vitrine"]) { --chrome-radius: 0; --chrome-button-radius: 0; --chrome-button-size: 0.9375rem; --chrome-button-tracking: 0.01em; }
:where(html[data-theme="workbench"]) { --chrome-radius: 0.375rem; --chrome-button-radius: 0.25rem; --chrome-button-size: 0.9375rem; --chrome-button-tracking: 0.01em; --chrome-button-shadow: inset 0 0 0 3px var(--primary, #3b2b1f), inset 0 0 0 4px color-mix(in srgb, var(--on-primary, #f7efe2) 38%, transparent); }

/* The phone action bar (theme_action_bar_html, shown by resilience.js): the page's main action and a Call button fixed to
   the bottom of a phone screen, above the safe area. It slides in once the visitor has scrolled past the first screen
   and away while a form field has focus, while the place its action leads to is on screen and near the footer. The
   page keeps room for it below its last line, so nothing shifts when it appears. Its two buttons are the theme's own
   (the --chrome-button values above): the filled one for the action, the outlined one for the call. */
.theme-action-bar { display: none; }
@media (max-width: 767.98px) {
  /* The bar steps aside near the footer, so only a page without one needs room below its last line. */
  body:has(> .theme-action-bar):not(:has(footer)) { padding-bottom: calc(4.25rem + env(safe-area-inset-bottom, 0px)); }
  .theme-action-bar {
    position: fixed;
    inset-inline: 0;
    bottom: 0;
    z-index: 900;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem max(0.75rem, env(safe-area-inset-right, 0px)) calc(0.5rem + env(safe-area-inset-bottom, 0px)) max(0.75rem, env(safe-area-inset-left, 0px));
    border-top: 1px solid color-mix(in srgb, var(--text-primary, #1a1a1a) 12%, transparent);
    background: color-mix(in srgb, var(--surface, #fff) 96%, transparent);
    box-shadow: 0 -8px 24px -16px color-mix(in srgb, var(--text-primary, #1a1a1a) 45%, transparent);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    transform: translateY(110%);
    visibility: hidden;
    transition: transform 0.25s ease, visibility 0s linear 0.25s;
    will-change: transform;
  }
  .theme-action-bar.is-shown { transform: none; visibility: visible; transition: transform 0.25s ease, visibility 0s; }
  .theme-action-bar a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 3rem;
    border-radius: var(--chrome-button-radius);
    font-family: var(--chrome-button-font);
    font-size: var(--chrome-button-size);
    font-weight: var(--chrome-button-weight);
    letter-spacing: var(--chrome-button-tracking);
    text-decoration: none;
    text-transform: var(--chrome-button-case);
    -webkit-tap-highlight-color: transparent;
  }
  .theme-action-bar a:focus-visible { outline: 2px solid var(--accent, currentColor); outline-offset: 2px; }
  .theme-action-bar__primary {
    flex: 1 1 auto;
    min-width: 0;
    flex-direction: column;
    gap: 0.05rem;
    padding: 0.35rem 1rem;
    border: var(--chrome-button-border);
    background: var(--chrome-button-fill);
    box-shadow: var(--chrome-button-shadow);
    clip-path: var(--chrome-button-clip);
    color: var(--chrome-button-ink);
    line-height: 1.15;
    text-align: center;
  }
  .theme-action-bar__primary[hidden] { display: none; }
  .theme-action-bar__label, .theme-action-bar__note { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .theme-action-bar__note { font-size: 0.75rem; font-weight: 500; letter-spacing: 0; opacity: 0.9; text-transform: none; }
  .theme-action-bar__note[hidden] { display: none; }
  .theme-action-bar__call {
    flex: 0 0 auto;
    gap: 0.4rem;
    padding: 0 1rem;
    border: 1.5px solid color-mix(in srgb, var(--text-primary, #1a1a1a) 22%, transparent);
    color: var(--text-primary, #1a1a1a);
  }
  .theme-action-bar__primary[hidden] + .theme-action-bar__call { flex: 1 1 auto; }
  .theme-action-bar__call svg { flex: none; width: 1.25rem; height: 1.25rem; }
  /* The small cookie button stands above the bar, never on its first button. */
  body:has(> .theme-action-bar.is-shown) .pagestic-cookie-manage { bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px)); }
}
@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {
  .theme-action-bar, .theme-action-bar.is-shown { transition: none; }
}

/* The first section under the breadcrumb starts close to it: the breadcrumb already opens the page, so a full band of
   empty space above the first heading (about 130 px) only pushes the content down. */
main > nav[aria-label]:first-child + .kit-root:not(.pgs-page-title) > .kit-section:first-child { padding-top: clamp(1.5rem, 3.5vw, 3rem); }
main > nav[aria-label]:first-child + section { padding-top: clamp(1.5rem, 3.5vw, 3rem); }
/* With the page title header between them (kit.css, .pgs-page-title: its own compact top, nothing below), the first
   section follows the title as closely as a section follows its heading, so breadcrumb, title and content read as one. */
.pgs-page-title + .kit-root > .kit-section:first-child,
.pgs-page-title + section { padding-top: clamp(1.25rem, 3vw, 2.5rem); }
/* A page whose first block opens with its own heading gets no title header: that heading is the page's h1 (PageHead::
   promoteOpeningHeading). It keeps its block's look, eyebrow, ornament and spacing, a step larger (about the size of the
   title header's) so it reads as the page's heading, not a section's. Here, not in kit.css: a theme's own block may open the
   page on a page that draws nothing with the kit. */
h1.pgs-page-heading { zoom: 1.15; }

/* A logo in its own colours that would vanish into what is behind it (resilience.js decides from its pixels) sits on a
   plate of the opposite lightness. */
.brand-logo-original.brand-logo-plate { box-sizing: content-box; padding: 0.4rem 0.65rem; border-radius: 0.6rem; }
.brand-logo-original.brand-logo-plate--light { background: #fbfaf7; box-shadow: 0 1px 2px rgb(0 0 0 / 0.12); }
.brand-logo-original.brand-logo-plate--dark { background: #1d1f22; }

/* The footer's large name (theme_footer_wordmark, site setting footer_wordmark) in a theme with no look of its own for it: the
   heading face in a faded shade of the footer's text, as large as its length lets it be on one line of the screen (capped),
   centred under the footer, never wider than the page. Decoration: hidden from screen readers, not selectable. */
.theme-footer-wordmark {
  display: block;
  max-width: 100%;
  margin: clamp(1.5rem, 4vw, 3rem) 0 0;
  overflow: hidden;
  /* Only the sides are cut. With its tight line, a box that hid everything outside it cut the carons of Š and Ž above
     and the tails of Ų and y below ("ŠILĖNŲ" read "SILENU"; until CMS 4.28.0). */
  overflow-x: clip;
  overflow-y: visible;
  color: currentColor;
  font-family: var(--font-heading, inherit);
  font-size: clamp(2rem, calc(min(100vw, 80rem) * 0.88 / (var(--theme-wordmark-chars, 10) * 0.62)), 9rem);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 0.95;
  opacity: 0.12;
  overflow-wrap: anywhere;
  pointer-events: none;
  text-align: center;
  user-select: none;
}

/* The website's name beside its mark in a footer is never cut: the header keeps it to one line (and an ellipsis) to hold its
   bar together, but a footer has the room, so the name wraps under itself instead ("Baidarių nu…" in a footer column, CMS
   4.20). Important: the Tailwind themes write the header's limits inline (render_brand_text). */
footer .brand-lockup-text {
  max-width: 100% !important;
  overflow: visible !important;
  white-space: normal !important;
  text-overflow: clip !important;
  overflow-wrap: break-word;
  text-wrap: balance;
}

/* The name in a header drawn by render_brand_text (the themes without a header name of their own): it takes the room it
   needs, up to two fifths of the bar, and a name longer than that takes a second, balanced line; only a name that needs
   more than two lines is cut, at the end of the second. Until CMS 4.28.0 an inline limit of 12rem cut every longer name
   with an ellipsis, also on a desktop with half the bar free. Zero specificity: a theme's own rule wins. The shared
   script sets a name smaller before a word of it would break (resilience.js), and folds the menu into the menu button
   when the bar is too full. */
:where(header) :where(.brand-lockup-text) {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  min-width: 0;
  max-width: min(24rem, 40vw);
  overflow: hidden;
  white-space: normal;
  overflow-wrap: break-word;
  text-wrap: balance;
  line-height: 1.15;
  /* Room inside the box for what letters carry above and below (Š, Ž, Ų, y); the margins take it back. */
  padding-block: 0.16em;
  margin-block: -0.16em;
}

/* On a phone, where the header bar is narrowest, a name that does not fit one line beside the menu button takes a second,
   balanced line ("Baidarių / nuomėlė") instead of an ellipsis; only a name longer than two lines is cut, at the end of the
   second. This holds for every theme's header name, whatever its own rule says. */
@media (max-width: 639.98px) {
header .brand-lockup-text {
  display: -webkit-box !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  white-space: normal !important;
  text-overflow: clip !important;
  overflow-wrap: break-word;
  text-wrap: balance;
  /* The two clamped lines are a clipping box: it keeps room for the marks of its letters (a theme with a tall face
     gives more, or lets the name run to a third line as Haven and Bankside do). */
  padding-block: 0.16em;
  margin-block: -0.16em;
}
}
/* A menu entry or footer link that leads to another website ends in a small drawn arrow, in the link's own colour, so nobody
   types one into the label: OutsideLinks puts an empty .pgs-outside-arrow at the end of such a link on the finished page (an
   element, because themes draw their own underlines with a link's ::after). It shows in a header, a menu, a drawer and a
   footer; anywhere else (a link in the page's text) it stays hidden. */
.pgs-outside-arrow { display: none; }
:is(header, footer, nav, dialog, [data-site-nav], [data-site-drawer], [class*="mobile"]) .pgs-outside-arrow {
  display: inline-block;
  flex: none;
  width: 0.62em;
  height: 0.62em;
  margin-inline-start: 0.3em;
  vertical-align: 0.06em;
  background: currentColor;
  opacity: 0.75;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 17 17 7M8 7h9v9' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 17 17 7M8 7h9v9' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (forced-colors: active) {
  :is(header, footer, nav, dialog, [data-site-nav], [data-site-drawer], [class*="mobile"]) .pgs-outside-arrow { forced-color-adjust: none; background: LinkText; }
}