/*
 * The digital catalogue — page-templates/page-catalogo.php (owner, 2026-10-03).
 *
 * Loaded in the <head> by inc/mwf-catalogo.php mwf_catalogo_enqueue_assets(),
 * after /custom-css/mwf.css (the .mwfe design system, whose tokens every
 * colour here uses) and after the wh-exhibitors plugin's stylesheet, whose
 * product rows this file dresses for the dark ground.
 *
 * Built for the phone first: nine visitors in ten carry this page through the
 * Kurhaus in one hand. Everything is in rem (above 1920 px the root font size
 * grows with the screen and the page follows); the floor plan stands upright
 * on a portrait screen below 900 px and lies down on anything wider or held
 * sideways (the same condition is in js/catalogo.js: keep the two alike).
 *
 * Scope: .mwfc, and the site header on this page (it scrolls away on a phone).
 */

/* ------------------------------------------------------------------ ground */
.mwfc {
	--mwfc-gutter: clamp(.9rem, 4vw, 3rem);
	--mwfc-maxw: 80rem;
	--mwfc-top: 0px;          /* what stays above the bar: the site header on wide screens */
	--mwfc-bar-h: 6.9rem;     /* the bar's height (the script measures the real one) */
	--mwfc-rail: 6.9rem;      /* the column of room names beside the upright plan */
	--mwfc-ratio: 2.6102;     /* the plan's long side over its short side (337.13 / 129.16) */
	font-family: var(--mwfe-sans);
	font-size: 1rem;
	line-height: 1.45;
	min-height: 100vh;
	padding-bottom: 6rem;
}
/* The ground. The design system lays its wave image over a page with
   background-size: cover — fine for a few screens, but this page is dozens of
   screens long on a phone and the image would be stretched over all of it. So:
   a wash of the festival's wine red behind the title and the plan, running
   into the deep ground the long list sits on. */
.mwfe.mwfc {
	background: var(--mwfe-bg-deep) linear-gradient(180deg, #5f1c24 0, #4a161d 22rem, #37151a 52rem, var(--mwfe-bg-deep) 84rem) no-repeat;
	background-size: 100% 84rem;
	background-attachment: scroll;
}
.mwfc [id] { scroll-margin-top: calc(var(--mwfc-top) + var(--mwfc-bar-h) + .7rem); }
.mwfc [hidden] { display: none !important; }
/* what only the script can work — the search, the days, the floors, the way
   to the plan — is not shown where scripting is off */
@media (scripting: none) {
	.mwfc .mwfc-js,
	.mwfc-bar { display: none !important; }
}
.mwfc button {
	font: inherit;
	color: inherit;
	background: none;
	border: 0;
	border-radius: 0;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}
.mwfc :focus-visible { outline: 2px solid var(--mwfe-brass); outline-offset: 2px; }
.mwfc .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
}

/* a phone keeps its height for the catalogue: the site header scrolls away */
@media (max-width: 899px) {
	body.page-template-page-catalogo header.header { position: relative; }
}
@media (min-width: 900px) {
	.mwfc { --mwfc-top: 14vh; --mwfc-bar-h: 4.4rem; }
}

/* -------------------------------------------------------------------- hero */
.mwfc-hero {
	max-width: var(--mwfc-maxw);
	margin: 0 auto;
	padding: clamp(1.5rem, 5vw, 3.5rem) var(--mwfc-gutter) 1.3rem;
}
.mwfc-hero .mwfe-kicker { margin-bottom: .9rem; font-size: .64rem; letter-spacing: .22em; }
.mwfc-hero .mwfe-kicker::before { width: 2em; }
.mwfc-hero { --mwfc-title-fs: clamp(2.7rem, 10vw, 5.6rem); } /* the title's size: its row sets the login symbol's */
.mwfc-title {
	font-family: var(--mwfe-serif);
	font-weight: 500;
	font-size: var(--mwfc-title-fs);
	line-height: .98;
	letter-spacing: -.015em;
	color: var(--mwfe-gold-light);
	margin: 0 0 .9rem;
}
.mwfc-title em { font-style: italic; font-weight: 400; color: var(--mwfe-brass); }

/* The login symbol (owner, 2026-10-17). On a phone it stands in the title's
   row, right of «digitale», as tall as the row (a tablet's taller row keeps it
   at 3.75rem, centred in it); on a wide screen the script sets it under the
   header's «Visitare», its foot level with the kicker's. Signed in it is gold
   (js/catalogo.js: .is-signed) and leads to the notebook. */
.mwfc-hero { position: relative; }
.mwfc-titlerow { position: relative; }
.mwfc-acc {
	--mwfc-acc: min(calc(var(--mwfc-title-fs) * .98), 3.75rem);
	position: absolute;
	top: calc((var(--mwfc-title-fs) * .98 - var(--mwfc-acc)) / 2);
	right: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--mwfc-acc);
	height: var(--mwfc-acc);
	border: 1px solid rgba(205, 173, 89, .6);
	border-radius: 50%;
	background: rgba(29, 20, 22, .35);
	color: var(--mwfe-cream);
	text-decoration: none;
	-webkit-tap-highlight-color: transparent;
	transition: color .2s, border-color .2s, background-color .2s, box-shadow .2s;
}
.mwfc-acc svg { width: 52%; height: 52%; }
.mwfc-acc.is-signed { border-color: var(--mwfe-brass); background: rgba(205, 173, 89, .14); color: var(--mwfe-brass); box-shadow: 0 0 1.1rem rgba(205, 173, 89, .22); } /* the gold of «digitale» */
.mwfc-acc:focus-visible { outline: 2px solid var(--mwfe-brass); outline-offset: 3px; }
.mwfc-acc:active { background: rgba(205, 173, 89, .22); }
@media (hover: hover) {
	.mwfc-acc:hover { background: var(--mwfe-brass); border-color: var(--mwfe-brass); color: var(--mwfe-bg-deep); }
}
@media (max-width: 899px) {
	/* the title never runs under it */
	.mwfc-titlerow--acc .mwfc-title { padding-right: calc(min(calc(var(--mwfc-title-fs) * .98), 3.75rem) + .7rem); }
}
@media (min-width: 900px) {
	.mwfc-titlerow { position: static; }
	.mwfc-acc { --mwfc-acc: 3.5rem; top: 1rem; right: var(--mwfc-gutter); }
	/* until the script has measured «Visitare» */
	.mwfc-acc:not(.is-placed) { visibility: hidden; }
}
@media (scripting: none) {
	.mwfc-acc { visibility: visible !important; }
}
/* the question: the notebook's sheet, two labelled halves at its foot */
.mwfc-accsheet .mwfn-sub { margin-top: 8px; }
.mwfc-accsheet .mwfc-acc-actions { justify-content: center; margin-top: 20px; }
.mwfc-accsheet .mwfc-acc-actions .mwfn-btn { flex: 0 1 calc((100% - 10px) / 2); display: inline-flex; align-items: center; justify-content: center; text-align: center; text-decoration: none; }
.mwfc-lead {
	font-family: var(--mwfe-serif);
	font-size: clamp(1.12rem, 1.7vw, 1.4rem);
	line-height: 1.42;
	color: #e8dfd0;
	max-width: 46rem;
	margin: 0 0 1.3rem;
}
.mwfc-stats {
	list-style: none;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--mwfe-line);
}
.mwfc-stats li { text-align: center; padding: .8rem .2rem .2rem; }
.mwfc-stats li + li { border-left: 1px solid var(--mwfe-line); }
.mwfc-stats strong {
	display: block;
	font-family: var(--mwfe-serif);
	font-weight: 600;
	font-size: clamp(1.55rem, 6vw, 2.5rem);
	line-height: 1;
	color: var(--mwfe-gold-light);
	font-variant-numeric: lining-nums;
}
.mwfc-stats span {
	display: block;
	margin-top: .35rem;
	font-size: .62rem;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--mwfe-cream-dim);
	line-height: 1.25;
}
.mwfc-unavailable {
	max-width: var(--mwfc-maxw);
	margin: 0 auto;
	padding: 2rem var(--mwfc-gutter);
	color: var(--mwfe-cream-dim);
}

/* ------------------------------------------------- the bar: search and days */
.mwfc-bar {
	position: sticky;
	top: var(--mwfc-top);
	z-index: 12;
	background: rgba(var(--mwfe-ink-rgb), .95);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	border-top: 1px solid var(--mwfe-line);
	border-bottom: 1px solid var(--mwfe-line);
}
.mwfc-bar-in {
	max-width: var(--mwfc-maxw);
	margin: 0 auto;
	padding: .55rem var(--mwfc-gutter);
	display: grid;
	gap: .5rem;
}
.mwfc-search { position: relative; }
.mwfc-search input {
	display: block;
	width: 100%;
	height: 2.75rem;
	padding: 0 2.7rem 0 2.6rem;
	border: 1px solid var(--mwfe-line);
	border-radius: 999px;
	background: rgba(255, 255, 255, .06) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23cdad59' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='m20 20-4.6-4.6'/%3E%3C/svg%3E") no-repeat .85rem 50% / 1.15rem;
	color: var(--mwfe-cream);
	font: inherit;
	font-size: 1rem; /* 16 px: below that iOS zooms the page on focus */
	-webkit-appearance: none;
	appearance: none;
}
.mwfc-search input::placeholder { color: var(--mwfe-cream-dim); opacity: .8; }
.mwfc-search input::-webkit-search-cancel-button { display: none; }
.mwfc-search input:focus { outline: none; border-color: var(--mwfe-brass); background-color: rgba(255, 255, 255, .1); }
.mwfc .mwfc-search-x {
	position: absolute;
	top: 50%;
	right: .3rem;
	width: 2.2rem;
	height: 2.2rem;
	margin-top: -1.1rem;
	border-radius: 50%;
	font-size: 1.4rem;
	line-height: 1;
	color: var(--mwfe-cream-dim);
}
.mwfc-days {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(0, 1fr);
	gap: .35rem;
}
.mwfc .mwfc-day {
	display: grid;
	justify-items: center;
	align-content: center;
	gap: .1rem;
	min-height: 2.9rem;
	padding: .3rem 0 .25rem;
	border: 1px solid var(--mwfe-line);
	border-radius: .7rem;
	background: rgba(255, 255, 255, .04);
	transition: background .2s, border-color .2s;
}
.mwfc-day span {
	font-size: .62rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--mwfe-cream-dim);
	line-height: 1;
}
.mwfc-day b {
	font-family: var(--mwfe-serif);
	font-size: 1.3rem;
	font-weight: 600;
	line-height: 1;
	color: var(--mwfe-cream);
	font-variant-numeric: lining-nums;
}
.mwfc .mwfc-day[aria-pressed="true"] { background: var(--mwfe-brass); border-color: var(--mwfe-brass); }
.mwfc-day[aria-pressed="true"] span,
.mwfc-day[aria-pressed="true"] b { color: var(--mwfe-bg-deep); }
.mwfc-day.is-today:not([aria-pressed="true"]) { border-color: var(--mwfe-brass); }
/* one event on view: the days it is not on, quieter (a tap shows that day whole) */
.mwfc .mwfc-day.is-off { opacity: .4; }
@media (min-width: 900px) {
	.mwfc-bar-in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 1.5rem; }
	.mwfc-days { justify-self: end; width: min(100%, 30rem); }
}
/* a short screen (a phone held sideways) keeps its height: the bar scrolls away */
@media (max-height: 480px) {
	.mwfc-bar { position: static; }
	.mwfc-bar-in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; }
}

/* -------------------------------------------------------------- headings */
.mwfc-map,
.mwfc-cat {
	max-width: var(--mwfc-maxw);
	margin: 0 auto;
	padding: 1.7rem var(--mwfc-gutter) 0;
}
.mwfc-cat { padding-top: 2.6rem; }
.mwfc-h2 {
	font-family: var(--mwfe-serif);
	font-weight: 500;
	font-size: clamp(1.8rem, 6.4vw, 2.7rem);
	line-height: 1.05;
	color: var(--mwfe-gold-light);
	margin: 0;
}
.mwfc-sub,
.mwfc-status { margin: .4rem 0 0; font-size: .9rem; color: var(--mwfe-cream-dim); }
.mwfc-status:empty { display: none; }

/* --------------------------------------------------- the floor plan: levels */
.mwfc-floors {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: .25rem;
	margin: 1rem 0 1.1rem;
	padding: .25rem;
	border: 1px solid var(--mwfe-line);
	border-radius: 999px;
	background: var(--mwfe-glass);
}
.mwfc .mwfc-floor-tab {
	min-height: 2.6rem;
	padding: 0 .3rem;
	border-radius: 999px;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--mwfe-cream);
	transition: background .25s, color .25s;
}
.mwfc .mwfc-floor-tab[aria-pressed="true"] { background: var(--mwfe-brass); color: var(--mwfe-bg-deep); }
/* one event on view (#e=…): the floors that hold its rooms carry a gold dot */
.mwfc .mwfc-floor-tab.is-lit::after {
	content: "";
	display: inline-block;
	width: .45rem;
	height: .45rem;
	margin-left: .45rem;
	border-radius: 50%;
	background: var(--mwfe-gold-light);
	vertical-align: .08em;
}
.mwfc .mwfc-floor-tab.is-lit[aria-pressed="true"]::after { background: var(--mwfe-bg-deep); }
@media (min-width: 900px) {
	.mwfc-floors { max-width: 30rem; }
}

/* The first look on a phone (owner, 2026-10-16): the pieces of its pictures,
   in the notebook's guide (a sheet outside <main>; .mwfn-m-* are the
   notebook's own) — a row swiped, a wine's page, the table on the piantina,
   the table's QR into the diary. */
.mwfc-t-lane { position: relative; width: 100%; max-width: 300px; overflow: hidden; border-radius: 12px; }
.mwfc-t-row { position: relative; }
.mwfc-t-field { position: absolute; top: 0; bottom: 0; width: 0; overflow: hidden; border-radius: 12px; }
.mwfc-t-field.is-in { left: 0; background: linear-gradient(90deg, #b8963e, #cdad59 55%, #e2c77d); }
.mwfc-t-field.is-out { right: 0; background: linear-gradient(270deg, #8a1c1c, #b3261e 55%, #c9443a); }
.mwfc-t-ic { position: absolute; top: 50%; width: 22px; height: 22px; margin-top: -11px; color: #fff; opacity: .5; transition: opacity .15s; }
.mwfc-t-field.is-in .mwfc-t-ic { left: 16px; }
.mwfc-t-field.is-out .mwfc-t-ic { right: 16px; }
.mwfc-t-field.is-past .mwfc-t-ic { opacity: 1; }
.mwfc-t-ic svg,
.mwfc-t-go svg,
.mwfc-t-arrow svg { display: block; width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.mwfc-t-wine { grid-template-columns: 18px minmax(0, 1fr) 30px; }
.mwfc-t-go { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: #cdad59; box-shadow: inset 0 0 0 1px rgba(205, 173, 89, .55); }
.mwfc-t-go svg { width: 15px; height: 15px; stroke-width: 2; }
.mwfc-t-site { padding: 6px 14px; border-radius: 999px; background: #f4efe4; color: #671e26; font: 700 .72rem/1.2 Raleway, system-ui, sans-serif; letter-spacing: .03em; }
.mwfc-t-btn { padding: 8px 18px; border: 1px solid rgba(205, 173, 89, .6); border-radius: 999px; font: 700 .68rem/1.2 Raleway, system-ui, sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #f1e4b8; }
.mwfc-t-plan { position: relative; width: 220px; height: 74px; border: 1px solid rgba(205, 173, 89, .45); border-radius: 6px; }
.mwfc-t-room { position: absolute; border: 1px solid rgba(205, 173, 89, .35); background: rgba(103, 30, 38, .6); }
.mwfc-t-room--a { left: 5%; top: 14%; width: 31%; height: 72%; }
.mwfc-t-room--b { left: 40%; top: 14%; width: 17%; height: 33%; }
.mwfc-t-room--c { left: 40%; top: 53%; width: 17%; height: 33%; }
.mwfc-t-room--d { left: 61%; top: 14%; width: 34%; height: 72%; }
.mwfc-t-dot { position: absolute; left: 20%; top: 50%; display: grid; place-items: center; width: 22px; height: 22px; margin: -11px 0 0 -11px; border-radius: 50%; background: #cdad59; color: #2a1d10; font: 700 .64rem/1 Raleway, system-ui, sans-serif; box-shadow: 0 0 0 3px rgba(205, 173, 89, .3); }
.mwfc-t-qrline { display: flex; align-items: center; gap: 14px; }
.mwfc-t-qr { display: grid; grid-template-columns: repeat(3, 11px); grid-auto-rows: 11px; gap: 3px; padding: 6px; border-radius: 6px; background: #f4efe4; }
.mwfc-t-qr > span { border-radius: 2px; background: #2a1d10; }
.mwfc-t-qr > .mwfc-t-qr-1,
.mwfc-t-qr > .mwfc-t-qr-5,
.mwfc-t-qr > .mwfc-t-qr-7 { background: transparent; }
.mwfc-t-arrow { width: 26px; height: 26px; color: #cdad59; }
.mwfc-t-tabs { display: flex; gap: 4px; padding: 4px; border: 1px solid rgba(205, 173, 89, .4); border-radius: 999px; }
.mwfc-t-tab { padding: 7px 10px; border-radius: 999px; font: 700 .6rem/1.2 Raleway, system-ui, sans-serif; letter-spacing: .07em; text-transform: uppercase; color: rgba(244, 239, 228, .8); transition: background .25s, color .25s; }
.mwfc-t-tab.is-on { background: #671e26; color: #f4efe4; }
/* the bar's days above the row swiped: a phone chooses its day there */
.mwfc-t-bar { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 4px; width: 100%; max-width: 300px; }
.mwfc-t-bday { display: grid; justify-items: center; gap: 3px; padding: 6px 0 5px; border: 1px solid rgba(205, 173, 89, .3); border-radius: 8px; background: rgba(255, 255, 255, .04); transition: background .25s, border-color .25s; }
.mwfc-t-bday i { font: normal 700 .5rem/1 Raleway, system-ui, sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #d3c6b4; white-space: nowrap; }
.mwfc-t-bday b { font: 600 .95rem/1 'Cormorant Garamond', 'Libre Baskerville', Baskerville, serif; font-variant-numeric: lining-nums; color: #f4efe4; white-space: nowrap; }
.mwfc-t-bday.is-on { border-color: #cdad59; background: #cdad59; }
.mwfc-t-bday.is-on i,
.mwfc-t-bday.is-on b { color: #28191b; }
@media (prefers-reduced-motion: reduce) {
	.mwfc-t-bday,
	.mwfc-t-ic,
	.mwfc-t-tab { transition: none; }
}

/* The plan's row (owner, 2026-10-16): the festival's days, each with its
   date and the name it goes by, beside the floors — above them on a tablet
   and a narrow screen; on a wide one the floors left, the days right, both
   pills the same height. The days are the bar's buttons (.mwfc-day): the
   same state, the same pressed, today's and event-off marks. Not on a phone,
   upright or held sideways (owner, 2026-10-17: «too much for phones»): the
   bar above has the same days. */
.mwfc-floorbar {
	display: grid;
	gap: .6rem;
	margin: 1rem 0 1.1rem;
}
.mwfc-floorbar .mwfc-floors { margin: 0; }
.mwfc-mapdays {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(0, 1fr);
	gap: .25rem;
	padding: .25rem;
	border: 1px solid var(--mwfe-line);
	border-radius: 1.2rem;
	background: var(--mwfe-glass);
}
.mwfc .mwfc-mapdays .mwfc-day {
	gap: .2rem;
	min-height: 3rem;
	padding: .35rem .2rem .3rem;
	border: 0;
	border-radius: .95rem;
	background: none;
	transition: background .25s, color .25s, box-shadow .25s;
}
.mwfc .mwfc-mapdays .mwfc-day b {
	font-size: 1.05rem;
	font-weight: 600;
	white-space: nowrap;
}
.mwfc .mwfc-mapdays .mwfc-day span {
	font-size: .5rem;
	letter-spacing: .07em;
	line-height: 1.15;
	text-align: center;
	text-wrap: balance;
}
.mwfc .mwfc-mapdays .mwfc-day[aria-pressed="true"] { background: var(--mwfe-brass); }
.mwfc .mwfc-mapdays .mwfc-day.is-today:not([aria-pressed="true"]) { box-shadow: inset 0 0 0 1px var(--mwfe-brass); }
@media (min-width: 30rem) {
	.mwfc .mwfc-mapdays .mwfc-day span { font-size: .56rem; letter-spacing: .09em; }
}
@media (max-width: 37.49rem), (max-height: 30rem) and (pointer: coarse) {
	.mwfc .mwfc-mapdays { display: none; }
}
@media (min-width: 68.75rem) {
	.mwfc-floorbar {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 1.5rem;
	}
	.mwfc-floorbar .mwfc-floors { order: 1; flex: 0 1 27rem; }
	.mwfc-floorbar .mwfc-mapdays { order: 2; flex: 0 1 44rem; }
	.mwfc-floorbar .mwfc-floor-tab { min-height: 3rem; }
	.mwfc .mwfc-mapdays .mwfc-day span { font-size: .58rem; letter-spacing: .1em; white-space: nowrap; }
}

/* ------------------------------------------------ the floor plan: the stage
   One drawing for the three levels (the walls an image, the rooms shapes).
   Upright on a phone: the drawing is turned a quarter clockwise, so the
   Kursaal — table 1 — is on top, the GourmetArena runs down the right, and the
   room names stand in a column on the left, on the entrance side. */
.mwfc-plan {
	--mwfc-h: min(calc((100vw - 2 * var(--mwfc-gutter) - var(--mwfc-rail) - .5rem) * var(--mwfc-ratio)), calc(100vh - var(--mwfc-bar-h) - 6rem), 48rem);
	position: relative;
	display: grid;
	grid-template-columns: var(--mwfc-rail) auto;
	column-gap: .5rem;
	justify-content: center;
}
@supports (height: 1svh) {
	.mwfc-plan { --mwfc-h: min(calc((100vw - 2 * var(--mwfc-gutter) - var(--mwfc-rail) - .5rem) * var(--mwfc-ratio)), calc(100svh - var(--mwfc-bar-h) - 6rem), 48rem); }
}
.mwfc-stage {
	grid-column: 2;
	grid-row: 1;
	position: relative;
	height: var(--mwfc-h);
	width: calc(var(--mwfc-h) / var(--mwfc-ratio));
	overflow: hidden; /* the drawing stops at its stage: zoomed in on a room, the rest of the floor must not spill over the page */
}
.mwfc-svg {
	position: absolute;
	top: 0;
	left: 0;
	width: var(--mwfc-h);
	height: calc(var(--mwfc-h) / var(--mwfc-ratio));
	max-width: none;
	transform-origin: 0 0;
	transform: rotate(90deg) translateY(-100%);
	overflow: hidden;
}
.mwfc-floor { opacity: 0; visibility: hidden; transition: opacity .35s ease, visibility 0s linear .35s; }
.mwfc-plan[data-level="0"] .mwfc-floor[data-level="0"],
.mwfc-plan[data-level="1"] .mwfc-floor[data-level="1"],
.mwfc-plan[data-level="2"] .mwfc-floor[data-level="2"] { opacity: 1; visibility: visible; transition-delay: 0s; }
.mwfc-walls { opacity: .78; pointer-events: none; }
.mwfc-ghost {
	fill: none;
	stroke: rgba(205, 173, 89, .3);
	stroke-width: 1px;
	stroke-dasharray: 4 4;
	vector-effect: non-scaling-stroke;
	pointer-events: none;
}
.mwfc-shape {
	fill: rgba(244, 239, 228, .08);
	fill-rule: evenodd;
	stroke: rgba(205, 173, 89, .5);
	stroke-width: 1px;
	vector-effect: non-scaling-stroke;
	cursor: pointer;
	outline: none;
	transition: fill .2s, stroke .2s;
}
.mwfc-shape.has-stands { fill: rgba(125, 42, 50, .82); stroke: rgba(205, 173, 89, .75); }
.mwfc-shape.is-dim { fill: rgba(244, 239, 228, .05); stroke: rgba(205, 173, 89, .3); }
.mwfc-shape:focus-visible { stroke: var(--mwfe-gold-light); stroke-width: 2px; }
@media (hover: hover) {
	.mwfc-shape:hover { fill: rgba(205, 173, 89, .5); }
}
.mwfc-shape.is-on,
.mwfc-shape.is-on:hover { fill: var(--mwfe-brass); stroke: var(--mwfe-gold-light); }

/* The plan's new parts (owner, 2026-10-18: «not coloured to fit … especially
   in GourmetArena»; PERCORSO-ROUTING-PHASE.md D5): one palette for the
   elements tools-assets/kurhaus-plan/build.py emits into
   img/catalogo/kurhaus-nav.json with these classes, in the room family of
   the dark plan — no cyan, no brown; every name mwfc-nav-*, never this
   page's own .mwfc-stage and the like. THE SAME SET is in css/mwf-notebook-plan.css
   (the two pages load one of the two files each): keep them alike
   (tools-assets/kurhaus-plan/test-route.mjs compares them). */
:root {
	--mwfc-nav-zone: rgba(125, 42, 50, .55);         /* Regione Campania: a room's wine, lighter */
	--mwfc-nav-zone-edge: rgba(205, 173, 89, .45);
	--mwfc-nav-stage: rgba(40, 25, 27, .82);         /* the Showcooking Stage: the deep ground */
	--mwfc-nav-stage-edge: rgba(205, 173, 89, .6);
	--mwfc-nav-service: rgba(205, 173, 89, .16);     /* entrances, Guardaroba, Glass Point, Ticketoffice */
	--mwfc-nav-service-edge: rgba(205, 173, 89, .55);
	--mwfc-nav-lift: rgba(40, 25, 27, .9);           /* the elevator: a quiet square … */
	--mwfc-nav-lift-edge: rgba(241, 228, 184, .55);
	--mwfc-nav-lift-on: #f1e4b8;                     /* … lit while the way changes floor */
	--mwfc-nav-stairs: #f1e4b8;                      /* a flight, its chevrons: gold light on the brass walls */
	--mwfc-nav-stairs-rim: #28191b;
}
.mwfc-nav-zone,
.mwfc-nav-stage,
.mwfc-nav-lift { stroke-width: 1px; vector-effect: non-scaling-stroke; pointer-events: none; }
.mwfc-nav-zone { fill: var(--mwfc-nav-zone); stroke: var(--mwfc-nav-zone-edge); stroke-dasharray: 3 3; }
.mwfc-nav-stage { fill: var(--mwfc-nav-stage); stroke: var(--mwfc-nav-stage-edge); }
.mwfc-nav-lift { fill: var(--mwfc-nav-lift); stroke: var(--mwfc-nav-lift-edge); }
/* a service room (opt-in: the plan marks it; nothing does in this phase) */
.mwfc-shape.is-service { fill: var(--mwfc-nav-service); stroke: var(--mwfc-nav-service-edge); }

/* The catalogue's own parts of map v2 (owner, 2026-10-19) — the planner's
   paths, stairs and arrows are never drawn on this page:
   - CERVIM, a room that tells about itself: gold on the brass walls, dimmed
     like a room without stands on the days it is closed;
   - Regione Campania, a visual aid in the GourmetArena: hatched in gold over
     a darker veil, taps go through to the GourmetArena;
   - the Showcooking Stage, a link to the programme: the deep ground;
   - the elevator, a point of interest: a small dark square with the car's
     arrows and a quiet name — less than a room.
   The names are written by js/catalogo.js (drawPlaces()), sized on screen. */
.mwfc {
	--mwfc-cervim: rgba(205, 173, 89, .46);
	--mwfc-cervim-on: rgba(205, 173, 89, .7);
	--mwfc-cervim-edge: #f1e4b8;
	--mwfc-area-veil: rgba(29, 20, 22, .26);
	--mwfc-area-line: rgba(241, 228, 184, .32);
	--mwfc-area-edge: rgba(241, 228, 184, .6);
	--mwfc-stage-ground: rgba(29, 20, 22, .8);
	--mwfc-stage-edge: rgba(241, 228, 184, .8);
	--mwfc-poi-ground: rgba(29, 20, 22, .94);
	--mwfc-poi-ink: #f1e4b8;
}
.mwfc-act { cursor: pointer; outline: none; }
.mwfc-area--cervim { fill: var(--mwfc-cervim); stroke: var(--mwfc-cervim-edge); }
.mwfc-act.is-dim .mwfc-area--cervim { fill: rgba(40, 25, 27, .82); stroke: rgba(205, 173, 89, .3); } /* closed that day: dark over the Sissi room */
.mwfc-act.is-on .mwfc-area--cervim { fill: var(--mwfe-brass); stroke: var(--mwfe-gold-light); } /* lit with its event's rooms (#e=thefestival) */
.mwfc-act:focus-visible .mwfc-shape,
.mwfc-act:focus-visible .mwfc-area { stroke: var(--mwfe-gold-light); stroke-width: 2px; }
.mwfc-area { stroke-width: 1px; vector-effect: non-scaling-stroke; transition: fill .2s; }
.mwfc-area--campania { fill: url(#mwfc-hatch); stroke: var(--mwfc-area-edge); stroke-dasharray: 4 3; pointer-events: none; }
.mwfc-hatch-bg { fill: var(--mwfc-area-veil); }
.mwfc-hatch-line { fill: var(--mwfc-area-line); }
.mwfc-area--showcooking { fill: var(--mwfc-stage-ground); stroke: var(--mwfc-stage-edge); }
@media (hover: hover) {
	.mwfc-act--modal:hover .mwfc-area--cervim { fill: var(--mwfc-cervim-on); }
	.mwfc-act--link:hover .mwfc-area--showcooking { fill: rgba(205, 173, 89, .38); }
}
.mwfc-act--modal:active .mwfc-area--cervim { fill: var(--mwfc-cervim-on); }
.mwfc-act--link:active .mwfc-area--showcooking { fill: rgba(205, 173, 89, .38); }
.mwfc-pnames,
.mwfc-poi { pointer-events: none; }
.mwfc-pname,
.mwfc-poi-name {
	font-family: var(--mwfe-sans);
	font-weight: 700;
	fill: rgba(241, 228, 184, .94);
	stroke: rgba(29, 20, 22, .72);
	stroke-linejoin: round;
	paint-order: stroke;
}
.mwfc-poi-name { font-weight: 600; fill: rgba(241, 228, 184, .82); }
/* the Showcooking Stage's name: the site's button, a gold pill */
.mwfc-pill-bg { fill: var(--mwfe-brass); stroke: var(--mwfe-bg-deep); stroke-width: 1px; vector-effect: non-scaling-stroke; transition: fill .2s; }
.mwfc-pill-t { font-family: var(--mwfe-sans); font-weight: 700; fill: var(--mwfe-bg-deep); }
@media (hover: hover) {
	.mwfc-act--link:hover .mwfc-pill-bg { fill: var(--mwfc-cervim-edge); }
}
.mwfc-act--link:active .mwfc-pill-bg { fill: var(--mwfc-cervim-edge); }
.mwfc-act--link:focus-visible .mwfc-pill-bg { stroke: var(--mwfe-gold-light); stroke-width: 2px; }
/* the elevator's name in the column of the upright plan: quieter than a room's */
.mwfc .mwfc-label.mwfc-label--poi {
	min-height: 1.6rem;
	font-size: .58rem;
	font-weight: 600;
	letter-spacing: .12em;
	color: rgba(241, 228, 184, .72);
	pointer-events: none;
}
.mwfc-poi-car { fill: none; stroke: none; }
.mwfc-poi-box { fill: var(--mwfc-poi-ground); stroke: var(--mwfc-poi-ink); stroke-width: 1px; vector-effect: non-scaling-stroke; }
.mwfc-poi-glyph { fill: var(--mwfc-poi-ink); }
/* CERVIM's name beside the plan: gold, a link, dimmed on the days it is closed */
.mwfc .mwfc-label.mwfc-label--act { color: var(--mwfc-cervim-edge); text-decoration: none; }
.mwfc .mwfc-label.mwfc-label--act.is-dim { color: rgba(211, 198, 180, .55); }
.mwfc .mwfc-label.mwfc-label--act.is-on { color: var(--mwfe-brass); }
/* lying, its name is written in the room when it fits (js/catalogo.js) */
.mwfc .mwfc-plan .mwfc-label.mwfc-label--act.is-inside[data-level] { display: none; }
.mwfc-pname--act { fill: rgba(29, 20, 22, .82); stroke: none; }
.mwfc-pname--act.is-dim { fill: rgba(241, 228, 184, .5); }
@media (hover: hover) {
	.mwfc .mwfc-label.mwfc-label--act:hover { color: var(--mwfe-brass); }
}

/* ---------------------------------------- a room's own card (CERVIM) */
/* over the page, the rest of it inert (js/catalogo.js); a small card in the
   middle of a wide screen, a sheet at the foot of a phone. The picture keeps
   its upright cut (owner: photographs stay portrait); one labelled button,
   centred, as wide as its words. */
.mwfc-modal {
	position: fixed;
	inset: 0;
	z-index: 10050;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
}
.mwfc-modal-back {
	position: absolute;
	inset: 0;
	background: rgba(14, 9, 10, .66);
	touch-action: none;
}
.mwfc-modal-card {
	position: relative;
	width: min(100%, 35rem);
	max-height: calc(100vh - 2rem);
	overflow: auto;
	overscroll-behavior: contain;
	border: 1px solid var(--mwfe-brass);
	border-radius: 1.1rem;
	background: rgba(var(--mwfe-ink-rgb), .98);
	box-shadow: 0 1.2rem 3rem rgba(0, 0, 0, .55);
	color: var(--mwfe-cream);
}
.mwfc-modal-main {
	display: grid;
	grid-template-columns: 9.5rem minmax(0, 1fr);
	gap: 1.15rem;
	align-items: start;
	padding: 1.25rem 1.25rem 1.05rem;
}
.mwfc .mwfc-modal-fig {
	margin: 0;
	aspect-ratio: 440 / 654;
	overflow: hidden;
	border: 1px solid rgba(205, 173, 89, .45);
	border-radius: .7rem;
	background: rgba(205, 173, 89, .14);
}
.mwfc-modal-fig img { display: block; width: 100%; height: 100%; object-fit: cover; }
.mwfc .mwfc-modal-kicker {
	margin: .15rem 2.6rem .45rem 0;
	font-size: .62rem;
	font-weight: 700;
	letter-spacing: .2em;
	line-height: 1.35;
	text-transform: uppercase;
	color: var(--mwfe-brass);
}
.mwfc .mwfc-modal-h {
	margin: 0 0 .45rem;
	font-family: var(--mwfe-serif);
	font-size: 1.6rem;
	font-weight: 600;
	line-height: 1.08;
	text-align: left;
	color: var(--mwfc-cervim-edge);
	outline: none;
}
.mwfc .mwfc-modal-when {
	margin: 0 0 .7rem;
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--mwfe-cream-dim);
}
.mwfc .mwfc-modal-p { margin: 0; font-size: .86rem; line-height: 1.55; }
.mwfc-modal-foot {
	display: flex;
	justify-content: center;
	padding: .85rem 1.25rem 1.1rem;
	border-top: 1px solid var(--mwfe-line);
}
.mwfc .mwfc-modal-x {
	position: absolute;
	top: .6rem;
	right: .6rem;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	padding: 0;
	border: 1px solid var(--mwfe-line);
	border-radius: 50%;
	background: rgba(var(--mwfe-ink-rgb), .9);
	color: var(--mwfe-cream);
}
@media (hover: hover) {
	.mwfc .mwfc-modal-x:hover { border-color: var(--mwfe-brass); color: var(--mwfe-brass); }
}
/* with the star (CERVIM in «Pianifica»): two labelled halves, side by side */
.mwfc-modal-foot.is-two { gap: .6rem; }
.mwfc-modal-foot.is-two > .mwfc-btn { flex: 1 1 0; min-width: 0; padding: 0 .9rem; }
.mwfc-modal-star-ic { display: inline-flex; width: 1.05rem; height: 1.05rem; }
.mwfc-modal-star-ic svg { width: 100%; height: 100%; fill: none; }
.mwfc .mwfc-modal-star .mwfc-modal-star-on,
.mwfc .mwfc-modal-star[aria-pressed="true"] .mwfc-modal-star-off { display: none; }
.mwfc .mwfc-modal-star[aria-pressed="true"] .mwfc-modal-star-on { display: inline; }
.mwfc .mwfc-modal-star[aria-pressed="true"] { border-color: var(--mwfe-brass); color: var(--mwfe-brass); }
.mwfc .mwfc-modal-star[aria-pressed="true"] .mwfc-modal-star-ic svg { fill: currentColor; }
/* a fixed entry's row (CERVIM): its few words above the buttons */
.mwfc .mwfc-fixed-p { margin: .2rem 0 .9rem; font-size: .9rem; line-height: 1.5; color: var(--mwfe-cream-dim); }
@media (max-width: 37.49rem) {
	.mwfc-modal { align-items: flex-end; padding: 0; }
	.mwfc-modal-card {
		width: 100%;
		max-height: 92vh;
		border-bottom: 0;
		border-radius: 1.1rem 1.1rem 0 0;
	}
	.mwfc-modal-main { grid-template-columns: 7rem minmax(0, 1fr); gap: .9rem; padding: 1.05rem 1rem .85rem; }
	.mwfc .mwfc-modal-h { font-size: 1.3rem; }
	.mwfc .mwfc-modal-p { font-size: .82rem; }
	.mwfc-modal-foot { padding: .8rem 1rem calc(1rem + env(safe-area-inset-bottom, 0px)); }
}

/* the room names: a column beside the upright plan, a row under the lying one */
.mwfc-rail {
	grid-column: 1;
	grid-row: 1;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: center;
	gap: .2rem;
	min-width: 0;
}
.mwfc .mwfc-label {
	display: none;
	align-items: center;
	gap: .35rem;
	max-width: var(--mwfc-rail);
	min-height: 2.3rem;
	padding: .3rem 0;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	line-height: 1.15;
	text-align: right;
	color: var(--mwfe-cream);
	transition: color .2s;
}
.mwfc-plan[data-level="0"] .mwfc-label[data-level="0"],
.mwfc-plan[data-level="1"] .mwfc-label[data-level="1"],
.mwfc-plan[data-level="2"] .mwfc-label[data-level="2"] { display: inline-flex; }
.mwfc-label-name { min-width: 0; overflow-wrap: anywhere; }
.mwfc-label-n {
	flex: 0 0 auto;
	min-width: 1.5rem;
	padding: .12rem .32rem;
	border-radius: 999px;
	background: rgba(205, 173, 89, .2);
	color: var(--mwfe-gold-light);
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1.2;
	text-align: center;
	font-variant-numeric: lining-nums tabular-nums;
}
.mwfc-label.is-dim { color: rgba(211, 198, 180, .55); }
.mwfc-label.is-dim .mwfc-label-n { display: none; }
.mwfc .mwfc-label.is-on { color: var(--mwfe-brass); }
.mwfc-label.is-on .mwfc-label-n { background: var(--mwfe-brass); color: var(--mwfe-bg-deep); }
/* placed by the script: each name level with its room, a hairline between them */
.mwfc-plan.is-laid .mwfc-label { position: absolute; z-index: 2; }
.mwfc-plan.is-laid .mwfc-label--far { text-align: left; }
.mwfc-plan.is-laid .mwfc-label--inside {
	pointer-events: none;
	padding: 0;
	max-width: none;
	font-size: .7rem;
	letter-spacing: .34em;
	white-space: nowrap;
	color: var(--mwfe-gold-light);
	writing-mode: vertical-rl;
}
/* its count stands level on the upright plan too, like every other number
   there (owner, 2026-10-19: the GourmetArena's number read sideways); on its
   room lit in brass, a dark pill (a brass one vanished there) */
.mwfc-plan.is-laid .mwfc-label--inside .mwfc-label-n { writing-mode: horizontal-tb; letter-spacing: 0; padding: .12rem .32rem; }
.mwfc-plan.is-laid .mwfc-label--inside.is-on .mwfc-label-n { background: var(--mwfe-bg-deep); color: var(--mwfe-brass); }
/* the GourmetArena's name on the floors it is not on: quieter, and a way up */
.mwfc-plan.is-laid .mwfc-label--ghost {
	pointer-events: auto;
	padding: .5rem;
	font-size: .64rem;
	letter-spacing: .22em;
	color: rgba(211, 198, 180, .6);
}
/* until the script has set them into their shape, the names that belong inside one wait */
.mwfc .mwfc-plan:not(.is-laid) .mwfc-label--inside { display: none; }
.mwfc-leaders {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	overflow: visible;
	pointer-events: none;
	z-index: 1;
}
.mwfc-leaders path { fill: none; stroke: rgba(205, 173, 89, .6); stroke-width: 1px; }
.mwfc-leaders circle { fill: var(--mwfe-brass); }
.mwfc-leaders .is-on { stroke: var(--mwfe-gold-light); }

/* ONE dot at the table asked for («Mostra sulla pianta», once the owner has
   placed the tables — inc/mwf-catalogo-tavoli.php): a gold pulse at the table,
   its number on a small tag above; the script sizes both in screen pixels,
   whatever the plan's scale, and turns the tag level on the upright plan */
.mwfc-spot { pointer-events: none; }
.mwfc-spot-dot { fill: var(--mwfe-gold-light); stroke: var(--mwfe-bg-deep); stroke-width: 1.5px; vector-effect: non-scaling-stroke; }
.mwfc-spot-halo {
	fill: var(--mwfe-gold-light);
	opacity: .55;
	transform-box: fill-box;
	transform-origin: center;
	animation: mwfc-pulse 1.5s ease-out infinite;
}
/* the table number on a shield pointing at the dot: a brass rim around a gold
   shield with a dark hairline, a soft shadow; the script draws the shape in
   screen pixels (15 px bold number) whatever the zoom */
.mwfc-spot-tag { filter: drop-shadow(0 1.5px 2.5px rgba(0, 0, 0, .5)); }
.mwfc-spot-rim { fill: none; stroke: var(--mwfe-brass); stroke-width: 4.5px; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.mwfc-spot-shield { fill: var(--mwfe-gold-light); stroke: var(--mwfe-bg-deep); stroke-width: 1.2px; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.mwfc-spot-tag text { fill: var(--mwfe-bg-deep); font-family: var(--mwfe-sans); font-weight: 700; letter-spacing: .02em; }
@keyframes mwfc-pulse {
	0% { transform: scale(1); opacity: .6; }
	100% { transform: scale(2.8); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
	.mwfc-spot-halo { animation: none; opacity: .35; transform: scale(1.8); }
}

/* one room up close («Mostra sulla pianta» from the list — js/catalogo.js
   focusRoom()): the drawing's frame closes in on the room, so the names and
   their hairlines step aside (hidden, their place kept: nothing moves) and a
   small button offers the whole floor again; the names of the rooms in the
   frame are written on the drawing instead (focusNames(): the room up close
   in dark capitals on its gold, the neighbours in gold on theirs, under the dot) */
.mwfc-fname {
	font-family: var(--mwfe-sans);
	font-weight: 600;
	fill: rgba(205, 173, 89, .88);
	stroke: rgba(29, 20, 22, .62);
	stroke-linejoin: round;
	paint-order: stroke;
	pointer-events: none;
	animation: mwfc-fname-in .35s ease both;
}
.mwfc-fname.is-on { fill: rgba(29, 20, 22, .74); stroke: none; }
@keyframes mwfc-fname-in {
	from { opacity: 0; }
	to { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
	.mwfc-fname { animation: none; }
}
.mwfc-plan.is-focus .mwfc-rail,
.mwfc-plan.is-focus .mwfc-leaders { visibility: hidden; }
/* upright: the column of names folds to nothing and the stage takes the whole
   width (its height stays, so nothing below moves); the script sizes the
   turned drawing to it */
.mwfc-plan.is-focus { grid-template-columns: 0 1fr; column-gap: 0; }
.mwfc-plan.is-focus .mwfc-stage { width: 100%; }
.mwfc .mwfc-unfocus {
	position: absolute;
	top: .45rem;
	right: .45rem;
	z-index: 3;
	display: none;
	align-items: center;
	gap: .35rem;
	padding: .42rem .8rem;
	border: 1px solid rgba(205, 173, 89, .6);
	border-radius: 999px;
	background: rgba(29, 20, 22, .82);
	color: var(--mwfe-gold-light);
	font-size: .66rem;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	backdrop-filter: blur(4px);
}
.mwfc .mwfc-unfocus span { font-size: 1rem; line-height: 0; }
.mwfc-plan.is-focus .mwfc-unfocus { display: inline-flex; }
@media (hover: hover) {
	.mwfc .mwfc-unfocus:hover { background: var(--mwfe-brass); color: var(--mwfe-bg-deep); }
}

@media (min-width: 900px), (orientation: landscape) and (min-width: 600px) {
	.mwfc-plan { display: block; }
	.mwfc-stage { width: 100%; height: auto; aspect-ratio: 337.13 / 129.16; }
	.mwfc-svg { position: static; width: 100%; height: 100%; transform: none; display: block; }
	.mwfc-rail {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: flex-start;
		justify-content: center;
		gap: .3rem 1.4rem;
		min-height: 4.6rem;
		padding-top: .8rem;
	}
	.mwfc .mwfc-label { max-width: none; font-size: .7rem; text-align: center; white-space: nowrap; }
	.mwfc-plan.is-laid .mwfc-label { justify-content: center; }
	.mwfc-plan.is-laid .mwfc-label--far { text-align: center; }
	/* when the row of names is wider than the plan (the script checks): first
	   without the counts and a little closer, then on two lines */
	.mwfc-plan.is-tight .mwfc-label:not(.mwfc-label--inside) { font-size: .64rem; letter-spacing: .04em; }
	.mwfc-plan.is-tight .mwfc-label:not(.mwfc-label--inside) .mwfc-label-n { display: none; }
	.mwfc-plan.is-tighter .mwfc-label:not(.mwfc-label--inside) { white-space: normal; max-width: 5.4rem; }
	.mwfc-plan.is-laid .mwfc-label--inside { writing-mode: horizontal-tb; font-size: .8rem; }
	.mwfc-plan.is-laid .mwfc-label--inside .mwfc-label-n { padding: .12rem .32rem; }
	/* lying, the elevator's name is written beside its marker (js/catalogo.js), not in the row */
	.mwfc .mwfc-plan .mwfc-label.mwfc-label--poi[data-level] { display: none; }
}

/* the room a visitor tapped: one slim bar — its name, its floor, how many
   exhibitors on the chosen day, the way to their list. On a phone it is fixed
   to the bottom edge, under the thumb, so the plan stays whole above it; it
   leaves when the plan scrolls out (the script sets .is-out). */
.mwfc-cards { margin-top: 1rem; }
.mwfc-roomcard {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	align-items: center;
	column-gap: .6rem;
	padding: .65rem .65rem .65rem 1.1rem;
	border: 1px solid var(--mwfe-brass);
	border-radius: 1.1rem;
	background: rgba(var(--mwfe-ink-rgb), .96);
	box-shadow: 0 .6rem 1.8rem rgba(0, 0, 0, .45);
}
.mwfc-roomcard--plain { grid-template-columns: minmax(0, 1fr) auto; }
.mwfc-roomcard-id { min-width: 0; }
.mwfc-roomcard h3 {
	margin: 0;
	font-family: var(--mwfe-serif);
	font-weight: 600;
	font-size: 1.45rem;
	line-height: 1.05;
	color: var(--mwfe-gold-light);
	overflow-wrap: anywhere;
}
.mwfc-roomcard p {
	display: flex;
	flex-wrap: wrap;
	gap: 0 .7rem;
	margin: .2rem 0 0;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	line-height: 1.4;
	color: var(--mwfe-brass);
}
.mwfc-roomcard p span + span { color: var(--mwfe-cream-dim); }
.mwfc .mwfc-x {
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid var(--mwfe-line);
	border-radius: 50%;
	font-size: 1.4rem;
	line-height: 1;
	color: var(--mwfe-cream);
}
@media (max-width: 899px) {
	.mwfc-cards {
		position: fixed;
		left: max(.7rem, env(safe-area-inset-left, 0px));
		right: max(.7rem, env(safe-area-inset-right, 0px));
		bottom: calc(.7rem + env(safe-area-inset-bottom, 0px));
		z-index: 14;
		margin: 0;
	}
	.mwfc-cards.is-out { display: none; }
}
@media (min-width: 900px) {
	.mwfc-roomcard { max-width: 36rem; margin: 0 auto; box-shadow: none; background: var(--mwfe-glass); }
}

/* ------------------------------------------------------------------ buttons */
.mwfc .mwfc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55rem;
	min-height: 2.75rem;
	padding: 0 1.25rem;
	border: 1px solid var(--mwfe-brass);
	border-radius: 999px;
	background: var(--mwfe-brass);
	color: var(--mwfe-bg-deep);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	text-decoration: none;
	line-height: 1.2;
	text-align: center;
}
.mwfc .mwfc-btn--ghost { background: transparent; border-color: var(--mwfe-line); color: var(--mwfe-cream); }
.mwfc-roomcard .mwfc-btn { padding: 0 1rem; }

/* ----------------------------------------------- the exhibitors, by room */
.mwfc-roomchip { display: flex; flex-wrap: wrap; gap: .5rem; margin: .9rem 0 0; }
.mwfc .mwfc-roomchip button {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 2.4rem;
	padding: 0 .95rem;
	border: 1px solid var(--mwfe-brass);
	border-radius: 999px;
	background: var(--mwfe-brass);
	color: var(--mwfe-bg-deep);
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}
.mwfc-roomchip i { font-style: normal; font-size: 1.1rem; line-height: 1; }
.mwfc .mwfc-roomchip .mwfc-roomchip-all { background: transparent; border-color: var(--mwfe-line); color: var(--mwfe-cream); }
/* the event on view: gold on the dark, beside the room chip's brass */
.mwfc .mwfc-roomchip .mwfc-roomchip-ev { background: transparent; color: var(--mwfe-gold-light); }
.mwfc-empty {
	display: grid;
	justify-items: start;
	gap: .8rem;
	margin: 1.4rem 0 0;
	padding: 1.2rem;
	border: 1px dashed var(--mwfe-line);
	border-radius: 1rem;
	color: var(--mwfe-cream-dim);
}

.mwfc-room { margin-top: 2.2rem; }
/* the room's name stays under the bar while its stands scroll by */
.mwfc-room-head {
	position: sticky;
	top: calc(var(--mwfc-top) + var(--mwfc-bar-h));
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .5rem 0;
	border-bottom: 1px solid var(--mwfe-brass);
	isolation: isolate;
}
/* its ground runs from edge to edge of the screen, whatever the column's width */
.mwfc-room-head::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: -100vw;
	right: -100vw;
	z-index: -1;
	background: rgba(var(--mwfe-ink-rgb), .93);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
}
/* on a short screen it scrolls with its room — still positioned: its ground
   (::before) is laid out against it, and against the whole page otherwise */
@media (max-height: 480px) {
	.mwfc-room-head { position: relative; top: auto; }
}
.mwfc-room-title { min-width: 0; }
.mwfc-room-name {
	margin: 0;
	font-family: var(--mwfe-serif);
	font-weight: 500;
	font-size: clamp(1.6rem, 6vw, 2.3rem);
	line-height: 1.02;
	color: var(--mwfe-gold-light);
}
/* the name of the days whose stands the room is showing: "TasteTerroir & The Festival" */
.mwfc-room-when {
	margin: .25rem 0 0;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	line-height: 1.35;
	color: var(--mwfe-brass);
}
.mwfc-room-when:empty { display: none; }
/* under the head: the dates and the numbered tables on show */
.mwfc-room-sub {
	display: flex;
	flex-wrap: wrap;
	gap: .2rem .9rem;
	margin: .8rem 0 .5rem;
	font-size: .84rem;
	color: var(--mwfe-cream-dim);
}
.mwfc-room-sub span:empty { display: none; }
.mwfc-room-sub:not(:has(span:not(:empty))) { display: none; }
.mwfc-room-meta {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: .7rem;
	margin: 0;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--mwfe-brass);
	white-space: nowrap;
}
.mwfc .mwfc-room-meta button {
	min-height: 2.5rem;
	padding: 0 .9rem;
	border: 1px solid var(--mwfe-line);
	border-radius: 999px;
	font-size: .66rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--mwfe-cream);
}
.mwfc-room-note { margin: .8rem 0 0; font-size: .9rem; color: var(--mwfe-cream-dim); }
.mwfc-list { border-top: 1px solid var(--mwfe-line); }
@media (min-width: 1000px) {
	.mwfc-list { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 2.5rem; align-items: start; }
}

/* one stand: the table number, the producer, the medals — closed, a single
   line of the catalogue; open, the producer's card and what it pours */
.mwfc-stand { border-bottom: 1px solid var(--mwfe-line); }
/* a stand reached by its address lands under the bar AND its room's name */
.mwfc .mwfc-stand { scroll-margin-top: calc(var(--mwfc-top) + var(--mwfc-bar-h) + 4.2rem); }
/* the row (owner, 2026-10-16): number · chevron · producer · medals — the
   chevron right after the number (the numbers flush right, so it is as near
   to a 1 as to a 107), the name a little further on; the medals end the row,
   and the visitor notebook's star (inc/mwf-notebook.php, the last thing in
   them) is its right-most element. The right padding keeps the star's tap
   area and focus ring inside the row (a closed row clips what lies past it). */
.mwfc-stand > summary {
	display: grid;
	grid-template-columns: 2.9rem auto minmax(0, 1fr) auto;
	align-items: center;
	column-gap: 0;
	min-height: 3.75rem;
	padding: .55rem .6rem .55rem .15rem;
	list-style: none;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}
.mwfc-stand > summary::-webkit-details-marker { display: none; }
.mwfc-no {
	font-family: var(--mwfe-serif);
	font-size: 1.75rem;
	font-weight: 600;
	line-height: 1;
	text-align: right;
	color: var(--mwfe-brass);
	font-variant-numeric: lining-nums;
	white-space: nowrap;
}
.mwfc-no--none::before { content: "·"; color: rgba(205, 173, 89, .45); }
/* a table named with four or five signs (100B, 33-20): smaller, inside the number's column */
.mwfc-no--long { font-size: 1.3rem; }
/* a fixed entry's table is a word (CERVIM): small capitals that fit the number's column */
.mwfc-stand--fixed .mwfc-no { font-family: var(--mwfe-sans); font-size: .6rem; font-weight: 700; letter-spacing: .04em; line-height: 1.1; overflow-wrap: anywhere; }
/* a room whose stands carry no table yet: the chevron first */
.mwfc-room--plain .mwfc-stand > summary { grid-template-columns: auto minmax(0, 1fr) auto; padding-left: .3rem; }
.mwfc-room--plain .mwfc-no { display: none; }
.mwfc-room--plain .mwfc-chev { margin-left: 0; }
@media (min-width: 700px) {
	.mwfc-room--plain .mwfc-body { padding-left: 1.55rem; } /* under the name: .3 + .55 + .7 */
}
.mwfc-who { order: 2; display: grid; gap: .12rem; min-width: 0; }
/* the name of a stand's days — only while its room lists more than one name,
   so three "table 1"s read as TasteTerroir, The Festival, Catwalk Champagne */
.mwfc-when {
	display: none;
	font-size: .62rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	line-height: 1.3;
	color: var(--mwfe-brass);
}
.mwfc-room.is-mixed .mwfc-when { display: block; }
.mwfc-name {
	font-family: var(--mwfe-serif);
	font-size: 1.3rem;
	font-weight: 600;
	line-height: 1.1;
	color: var(--mwfe-cream);
	overflow-wrap: anywhere;
}
.mwfc-place { font-size: .76rem; line-height: 1.25; color: var(--mwfe-cream-dim); }
.mwfc-medals { order: 3; display: flex; gap: .4rem; margin-left: .7rem; padding: 0 .1rem; }
/* a hairline of cream around each medal: the Rosso is the ground's own red */
.mwfc .mwfc-medals img { width: 1.3rem; height: 1.3rem; max-width: none; border-radius: 50%; box-shadow: 0 0 0 1.5px rgba(244, 239, 228, .82); }
.mwfc-chev {
	order: 1;
	width: .55rem;
	height: .55rem;
	margin: 0 .7rem 0 .35rem;
	border-right: 1.5px solid var(--mwfe-brass);
	border-bottom: 1.5px solid var(--mwfe-brass);
	transform: translateY(-25%) rotate(45deg);
	transition: transform .25s;
}
.mwfc-stand[open] > summary .mwfc-chev { transform: translateY(15%) rotate(-135deg); }
.mwfc-stand[open] > summary .mwfc-name { color: var(--mwfe-gold-light); }
.mwfc-stand[open] { background: rgba(var(--mwfe-ink-rgb), .42); }
.mwfc-stand.is-hit > summary { background: rgba(205, 173, 89, .16); }
.mwfc-body { padding: .2rem .15rem 1.2rem; }
.mwfc-card { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); gap: .9rem; align-items: start; }
.mwfc-card--nologo { grid-template-columns: minmax(0, 1fr); }
.mwfc .mwfc-logo {
	width: 4.5rem;
	height: 4.5rem;
	padding: .35rem;
	border-radius: .6rem;
	background: #fff; /* the logos keep their own colours, on a light plate */
	object-fit: contain;
}
.mwfc-facts { display: grid; gap: .3rem; min-width: 0; }
.mwfc-fact { margin: 0; font-size: .86rem; line-height: 1.35; color: var(--mwfe-cream); overflow-wrap: anywhere; }
.mwfc-fact > span {
	margin-right: .35rem;
	font-size: .64rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--mwfe-brass);
}
.mwfc-fact a { color: var(--mwfe-gold-light); text-decoration: underline; text-decoration-color: var(--mwfe-line); text-underline-offset: 3px; }
.mwfc-fact--links { display: flex; flex-wrap: wrap; gap: .15rem 1rem; }
.mwfc-actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1rem; }
.mwfc-actions .mwfc-btn { flex: 1 1 11rem; }
@media (min-width: 700px) {
	.mwfc-body { padding-left: 4.65rem; } /* under the name: .15 + 2.9 (number) + .35 + .55 (chevron) + .7 */
	.mwfc-actions .mwfc-btn { flex: 0 0 auto; }
}

/* a stand's card and products on their way (js/catalogo.js: the page's data
   file) — a quiet line while they come, a word if they did not */
.mwfc-lazy:empty { display: none; }
.mwfc-lazy.is-wait,
.mwfc-lazy.is-fail { margin: .35rem 0 0; font-size: .86rem; line-height: 1.35; color: var(--mwfe-cream-dim); }
.mwfc-lazy.is-wait { animation: mwfc-wait 1.2s ease-in-out infinite alternate; }
@keyframes mwfc-wait { from { opacity: .4; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
	.mwfc-lazy.is-wait { animation: none; }
}

/* ~900 stands: a closed one off screen is not laid out nor painted (owner,
   2026-10-16: the page took ~5 s on a phone); the browser keeps the size it
   last had, this one until it has been on screen. An open stand is the one in
   use: no containment, nothing of it clipped. Nor a stand just closed and the
   rows its closing brings on screen (.is-kept, js/catalogo.js keepNear():
   Safari painted them only after a pass of its own — seconds of empty space
   on a phone, 2026-10-19). */
.mwfc-stand:not([open]):not(.is-kept) { content-visibility: auto; contain-intrinsic-size: auto 4.85rem; }
/* a closed stand clips what is painted past its edges: the row's focus ring inside it */
.mwfc .mwfc-stand > summary:focus-visible { outline-offset: -2px; }

/* the plugin's product rows on the dark ground: its text tokens re-pointed at
   the design system's (as css/masterclass.css does), its sizes in rem */
.mwfc .wh-exhibitors {
	--text-primary: var(--mwfe-cream);
	--text-muted: var(--mwfe-cream-dim);
	--border-subtle: rgba(205, 173, 89, .17);
	--sp-3: .6rem;
	margin-top: .9rem;
	border-top: 1px solid var(--mwfe-line);
	color: var(--mwfe-cream);
}
.mwfc .wh-exhibitors .wh-catalogue-row__title,
.mwfc .wh-exhibitors .wh-catalogue-row__link { color: var(--mwfe-cream); }
/* regular weight: the site ships Raleway 400 only, and a synthesized bold
   smears at this size on the dark ground */
.mwfc .wh-exhibitors .wh-catalogue-row__title { font-size: .95rem; font-weight: 400; line-height: 1.3; }
.mwfc .wh-exhibitors .wh-catalogue-row__secondary { font-size: .8rem; color: var(--mwfe-cream-dim); }
.mwfc .wh-exhibitors .wh-catalogue-row__link { border-bottom: 0; }
.mwfc .wh-exhibitors .wh-catalogue-row__award img { border-radius: 50%; box-shadow: 0 0 0 1.5px rgba(244, 239, 228, .82); }
.mwfc .wh-exhibitors .wh-catalogue-row__link:hover,
.mwfc .wh-exhibitors .wh-catalogue-row__link::after { color: var(--mwfe-brass); }
.mwfc .wh-exhibitors .wh-catalogue-row__icon { width: 1.75rem; height: 1.75rem; max-width: none; }
.mwfc .wh-exhibitors .wh-catalogue-row__award-slot { flex-basis: 1.75rem; width: 1.75rem; height: 1.75rem; }
.mwfc .wh-exhibitors .wh-catalogue-row__icons-left,
.mwfc .wh-exhibitors .wh-catalogue-row__icons-right { gap: .2rem; }
.mwfc .wh-exhibitors [data-tip]:focus-visible { outline-color: var(--mwfe-brass); }
/* annate storiche and miniverticali: their dividers without the pill badges
   (this page prints no badge sheet), their vintages as small chips */
.mwfc .wh-exhibitors .wh-catalogue-divider { margin: 1.1rem 0 .3rem; }
.mwfc .wh-exhibitors .wh-catalogue-divider .badge { display: none; }
.mwfc .wh-exhibitors .wh-catalogue-divider__label {
	font-size: .64rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--mwfe-brass);
}
.mwfc .wh-exhibitors .wh-catalogue-historic,
.mwfc .wh-exhibitors .miniverticale-container { margin-top: 0; }
.mwfc .wh-exhibitors .minivertical-annate { justify-content: flex-start; gap: .4rem; margin-top: .5rem; }
.mwfc .wh-exhibitors .minivertical-annate h6 {
	margin: 0 0 .3rem;
	font-family: var(--mwfe-sans);
	font-size: .64rem;
	font-weight: 600;
	letter-spacing: .18em;
	text-align: left;
	text-transform: uppercase;
	color: var(--mwfe-cream-dim);
}
.mwfc .wh-exhibitors .minivertical-annate a,
.mwfc .wh-exhibitors .minivertical-annate span {
	display: inline-flex;
	align-items: center;
	min-height: 2.4rem;
	padding: 0 .9rem;
	border-color: var(--mwfe-line);
	border-radius: 999px;
	background: rgba(205, 173, 89, .12);
	font-family: var(--mwfe-sans);
	font-size: .86rem;
	color: var(--mwfe-gold-light);
}

/* ---------------------------------------------- back to the plan, one thumb */
.mwfc .mwfc-fab {
	position: fixed;
	right: max(.9rem, env(safe-area-inset-right, 0px));
	bottom: calc(.9rem + env(safe-area-inset-bottom, 0px));
	z-index: 13;
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	min-height: 2.6rem;
	padding: 0 1rem;
	border-radius: 999px;
	background: var(--mwfe-brass);
	color: var(--mwfe-bg-deep);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
	box-shadow: 0 .5rem 1.4rem rgba(0, 0, 0, .45);
}

@media (prefers-reduced-motion: reduce) {
	.mwfc *,
	.mwfc *::before,
	.mwfc *::after { transition: none !important; }
}
