:root{--ink:#102f3c;--orange:#e94f32;--yellow:#ffcb45;--paper:#faf6ed}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 system-ui,sans-serif}header{max-width:1150px;margin:auto;padding:25px;display:flex;justify-content:space-between;align-items:center}header a{color:inherit;text-decoration:none;display:grid}header em{color:var(--orange);font-style:normal}header small{letter-spacing:5px}header>span{font-size:10px;letter-spacing:2px}main{max-width:1100px;margin:auto;padding:20px 24px 80px}h1{font-size:clamp(30px,5vw,49px);line-height:1.1;letter-spacing:-1.5px}h2{font-size:28px}h3{margin:0 0 10px}button,input,select,textarea{font:inherit}button{cursor:pointer;background:var(--ink);color:white;padding:12px 18px;border:0;border-radius:12px}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #e94f32;outline-offset:3px}.secondary{background:#e9e7df;color:var(--ink)}.danger{background:#a32b24}nav{display:flex;gap:8px;flex-wrap:wrap;padding:16px 0;border-bottom:1px solid #ddd;margin-bottom:25px}nav button{background:transparent;color:var(--ink)}nav .active{background:var(--ink);color:white}.hero{background:var(--yellow);padding:35px;border-radius:25px;display:grid;grid-template-columns:1.4fr 1fr;align-items:center;gap:25px}.hero img{width:100%;max-height:300px;object-fit:contain}.eyebrow{font-size:11px;letter-spacing:2px;text-transform:uppercase}.notice,small{color:#647075;font-size:12px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.grid article,.card{background:white;border:1px solid #e5e1d7;border-radius:18px;overflow:hidden;color:var(--ink);text-align:left}.grid article{padding:22px}.card{padding:0}.card img,.placeholder{width:100%;height:190px;object-fit:cover;background:#eee6d7}.placeholder{display:grid;place-items:center;font-size:65px}.card>div:not(.placeholder){padding:20px}.card p{font-size:13px}.card small{color:var(--orange)}.card span{font-size:12px;font-weight:bold}.filters,.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:15px 0}.filters input{flex:1}.toolbar h2{margin-right:auto}.text{white-space:pre-line}.map{position:relative;max-width:690px;margin:25px auto;line-height:0}.map>img{width:100%;height:auto;display:block;border-radius:20px}.pin{position:absolute;transform:translate(-50%,-50%);background:var(--ink);border:2px solid white;min-width:38px;height:38px;border-radius:12px;padding:4px;box-shadow:0 2px 8px #0003;font-size:13px;line-height:1;z-index:1}.pin.truck{background:var(--orange)}body[data-admin="1"] .pin{touch-action:none;cursor:grab}.pin.selected{outline:4px solid var(--yellow);z-index:2}.hidden-point{opacity:.5}.legend{display:flex;gap:8px;flex-wrap:wrap}.legend button{font-size:12px}.coordinates{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:15px;background:white;border-radius:15px}.coordinates label{max-width:110px}.admin-list article{display:flex;align-items:center;gap:15px;background:white;padding:18px;margin:10px 0;border-radius:15px}.admin-list article>div{flex:1}label{display:block;margin:14px 0;font-size:13px;font-weight:600}input,select,textarea{display:block;width:100%;padding:12px;border:1px solid #cccfc7;border-radius:9px;background:white;color:var(--ink);margin-top:5px}input[type=checkbox]{width:22px;height:22px}input[type=file]{font-size:12px}.login{max-width:400px;margin:50px auto}.login button{width:100%}dialog{border:0;border-radius:22px;padding:0;width:min(620px,calc(100% - 24px));max-height:92dvh;color:var(--ink);background:var(--paper)}dialog::backdrop{background:#102f3cbb}.dialog-body{padding:30px}.close{position:absolute;right:10px;top:10px;border-radius:50%;z-index:3}.detail-image{width:100%;max-height:300px;object-fit:contain;background:white}#form-status{color:#a32b24}#status{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);max-width:90%;padding:14px 20px;background:var(--ink);color:white;border-radius:12px;z-index:10}#status:empty{display:none}#status.error{background:#a32b24}@media(max-width:700px){header>span{display:none}.hero{grid-template-columns:1fr;padding:25px}.hero img{max-height:170px}.grid{grid-template-columns:1fr 1fr;gap:10px}main{padding:10px 15px 60px}.card img,.placeholder{height:140px}.card>div:not(.placeholder){padding:13px}.card h3{font-size:18px}.pin{height:34px;min-width:34px;font-size:11px}.grid article{grid-column:1/-1}.dialog-body{padding:24px}}
body[data-admin="0"] main {
	padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px));
}
*::-webkit-scrollbar {
  display: none;
}

/* Pour Internet Explorer et Edge */
* {
  -ms-overflow-style: none;
}

/* Pour Firefox */
* {
  scrollbar-width: none;
}
nav.public-footer {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	z-index: 20;

	display: flex;
	flex-wrap: nowrap;
	justify-content: space-around;
	gap: 0;

	margin: 0;
	padding: 8px 12px calc(8px + env(safe-area-inset-bottom, 0px));

	background: var(--ink);
	border: 0;
	box-shadow: 0 -4px 18px #102f3c20;
}
#modal.truck-sheet .truck-sheet-heading {
    touch-action: none;
    cursor: grab;
}
nav.public-footer button {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 4px;
	flex: 1;

	max-width: 180px;
	min-height: 56px;
	padding: 6px;

	background: transparent;
	color: #bacacf;
	border-radius: 12px;

	font-size: 12px;
	font-weight: 600;
}

nav.public-footer button span {
	font-size: 26px;
	line-height: 1;
}

nav.public-footer button.active {
	background: #ffffff12;
	color: var(--yellow);
}
body[data-admin="0"] > header.festival-header {
	display: block;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;

	background: #fffdf8;
	border-bottom: 1px solid #e9e4d9;
}

.festival-header-inner {
	display: flex;
	align-items: center;
	gap: 20px;

	max-width: 1100px;
	margin: 0 auto;
	padding: 24px;
}

.festival-home {
	display: grid;
	place-items: center;
	flex: 0 0 90px;
	width: 90px;
	height: 90px;
	padding: 6px;

	background: #fff0c5;
	border-radius: 24px;
	transition: transform 0.18s ease;
}

.festival-home:hover {
	transform: rotate(-3deg);
}

.festival-home img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.festival-heading {
	min-width: 0;
}

.festival-brand {
	display: block;
	margin-bottom: 7px;

	color: #b94b2d;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 1.5px;
}

.festival-heading h1 {
	margin: 0;
	color: var(--ink);
	font-size: clamp(26px, 4vw, 38px);
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: -1px;
    font-variant: small-caps;
}

.festival-heading p {
	margin: 7px 0 0;
	color: #738087;
	font-size: 13px;
	line-height: 1.4;
}

body[data-admin="0"] main {
	padding-top: 24px;
}

@media (max-width: 600px) {
	.festival-header-inner {
		gap: 14px;
		padding: 18px 16px;
	}

	.festival-home {
		flex-basis: 66px;
		width: 66px;
		height: 66px;
		border-radius: 18px;
	}

	.festival-brand {
		font-size: 11px;
		letter-spacing: 0.8px;
        line-height: 11px;
	}

	.festival-heading h1 {
		font-size: 27px;
        font-variant: small-caps;
	}

	.festival-heading p {
		font-size: 11px;
	}
}

/* Images des cards food trucks */
.public-swipe-panel[data-page="trucks"] .card > img,
.public-swipe-panel[data-page="trucks"] .card > .placeholder {
    display: block;
    width: 100%;
    height: 180px;
    min-height: 180px;
    max-height: 180px;
    object-fit: cover;
    object-position: center;
}

@media (max-width: 700px) {
    .public-swipe-panel[data-page="trucks"] .card > img,
    .public-swipe-panel[data-page="trucks"] .card > .placeholder {
        height: 150px;
        min-height: 150px;
        max-height: 150px;
    }
}

/* Toujours aligner le contenu des cards en haut */
.public-swipe-panel[data-page="trucks"] .card {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: stretch;
    padding: 0;
}

.public-swipe-panel[data-page="trucks"] .card > img,
.public-swipe-panel[data-page="trucks"] .card > .placeholder {
    flex-shrink: 0;
    margin: 0;
}

/* Contenu de la card */
.public-swipe-panel[data-page="trucks"] .card > div:not(.placeholder) {
    display: flex;
    flex-direction: column;
    flex: 1;
    width: 100%;
}

/* Voir la fiche toujours en bas */
.public-swipe-panel[data-page="trucks"] .card > div:not(.placeholder) > span {
    display: block;
    margin-top: auto;
    padding-top: 16px;
}

/* Noms des food trucks */
.public-swipe-panel[data-page="trucks"] .card h3 {
    font-size: 18px;
    line-height: 1.1;
    min-height: 2.2em;
    margin: 5px 0 8px;
}

/* Spécialités */
.public-swipe-panel[data-page="trucks"] .card p {
    margin-top: 0;
}

/* Plan du festival */
.public-swipe-panel[data-page="map"] .map {
    width: 100%;
    max-width: none;
    margin: 0;
}