/* SignLite layout renderer styles (player + dashboard). Canvas units are 1920×1080 pixels. */
.sl-root { position: relative; overflow: hidden; }
.sl-stage { position: absolute; left: 0; top: 0; transform-origin: 0 0; overflow: hidden; color: #fff; }
.sl-zone { position: absolute; overflow: hidden; box-sizing: border-box; display: flex; flex-direction: column; }
.sl-zone > * { flex: 1; min-height: 0; }
.sl-media { position: relative; }
.sl-layer { position: absolute; inset: 0; opacity: 0; transition: opacity .6s ease; }
.sl-layer.show { opacity: 1; }
.sl-layer img, .sl-layer video { width: 100%; height: 100%; display: block; }
.sl-placeholder { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
  background: repeating-linear-gradient(135deg, rgba(128,128,128,.14) 0 22px, rgba(128,128,128,.08) 22px 44px); color: rgba(255,255,255,.75); font: 600 40px/1.2 Inter, sans-serif; text-align: center; }
.sl-placeholder div { font-size: 90px; opacity: .8; } .sl-placeholder small { font-size: 26px; font-weight: 400; opacity: .7; }
.sl-frame { position: relative; background: #000; } .sl-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.sl-frame .bgthumb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .55; }
.sl-text { display: flex; flex-direction: column; white-space: pre-line; overflow: hidden; }
.sl-menu { overflow: hidden; }
.sl-menu-title { font-size: 1.9em; font-weight: 800; line-height: 1.1; margin-bottom: .35em; }
.sl-menu-body { column-gap: 1.6em; }
.sl-menu-sec { break-inside: avoid; margin-bottom: .7em; }
.sl-menu-sec-name { font-size: 1.15em; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; margin: .2em 0 .25em; }
.sl-menu-note { font-size: .6em; opacity: .7; margin: -.15em 0 .3em; }
.sl-menu-item { margin: 0 0 .42em; break-inside: avoid; } .sl-menu-item.sold { opacity: .4; text-decoration: line-through; }
.sl-menu-row { display: flex; align-items: baseline; gap: .35em; }
.sl-menu-row .n { font-weight: 600; } .sl-menu-row .p { font-weight: 700; white-space: nowrap; }
.sl-menu-row .lead { flex: 1; min-width: .6em; } .sl-menu-row .lead.dots { border-bottom: .09em dotted currentColor; opacity: .45; transform: translateY(-.25em); }
.sl-menu-row .lead.line { border-bottom: 1px solid currentColor; opacity: .25; transform: translateY(-.25em); }
.sl-menu-item .d { font-size: .62em; opacity: .72; margin-top: .08em; }
.sl-menu-item .tag { font-style: normal; font-size: .5em; border: 2px solid; border-radius: 1em; padding: .05em .5em; vertical-align: middle; }
.sl-price { display: flex; flex-direction: column; justify-content: center; font-size: 40px; }
.sl-price .l { font-size: .6em; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; }
.sl-price .t { font-size: 1.1em; font-weight: 700; line-height: 1.15; margin: .2em 0; }
.sl-price .pr { font-size: 2.6em; font-weight: 900; line-height: 1; letter-spacing: -.02em; }
.sl-price .nt { font-size: .6em; opacity: .75; margin-top: .3em; }
.sl-table { font-size: 40px; overflow: hidden; } .sl-table .tt { font-size: 1.2em; font-weight: 800; margin-bottom: .4em; }
.sl-table table { width: 100%; border-collapse: collapse; }
.sl-table th { text-align: left; font-size: .6em; text-transform: uppercase; letter-spacing: .1em; padding: 0 .4em .5em 0; }
.sl-table td { padding: .42em .4em .42em 0; border-top: 1px solid rgba(128,128,128,.28); font-weight: 500; }
.sl-table.big td { font-size: 2.4em; font-weight: 800; text-align: center; border: 0; padding: .1em; }
.sl-ticker { display: flex; align-items: center; overflow: hidden; white-space: nowrap; font-weight: 600; }
.sl-ticker-track { display: inline-flex; animation: sl-marquee 30s linear infinite; will-change: transform; }
.sl-ticker-track > span { padding-right: 0; } .sl-ticker .sep { opacity: .55; margin: 0 1em; }
@keyframes sl-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.sl-clock { display: flex; flex-direction: column; justify-content: center; } .sl-clock .t { font-size: 96px; font-weight: 800; line-height: 1; letter-spacing: -.02em; }
.sl-clock .d { font-size: 32px; opacity: .8; margin-top: 10px; }
.sl-countdown { display: flex; flex-direction: column; justify-content: center; font-weight: 800; }
.sl-countdown .l { font-size: .45em; text-transform: uppercase; letter-spacing: .12em; opacity: .8; } .sl-countdown .v { font-variant-numeric: tabular-nums; line-height: 1.1; }
.sl-weather { font-size: 34px; display: flex; flex-direction: column; justify-content: center; }
.sl-weather .cur { display: flex; align-items: center; gap: 20px; } .sl-weather .temp { font-size: 3em; font-weight: 800; line-height: 1; }
.sl-weather .desc { font-size: 1em; opacity: .85; } .sl-weather .place { font-weight: 700; margin-top: 8px; } .sl-weather .muted { font-size: .7em; opacity: .7; }
.sl-weather .days { display: flex; justify-content: space-between; margin-top: 10px; } .sl-weather .day { text-align: center; } .sl-weather .dn { font-size: .8em; opacity: .8; }
.sl-weather .hl span { opacity: .6; }
.sl-feed { font-size: 32px; overflow: hidden; } .sl-feed .ft { font-size: 1.1em; font-weight: 800; margin-bottom: .5em; }
.sl-feed .fi { display: flex; gap: .6em; padding: .5em 0; border-top: 1px solid rgba(128,128,128,.25); } .sl-feed .fi img { width: 4.5em; height: 3em; object-fit: cover; border-radius: .3em; flex: 0 0 auto; }
.sl-feed .fh { font-weight: 700; line-height: 1.2; } .sl-feed .fs { font-size: .7em; opacity: .75; margin-top: .2em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sl-qr { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; }
.sl-qr .code { flex: 1; min-height: 0; width: 100%; display: flex; justify-content: center; } .sl-qr .code svg { height: 100%; max-width: 100%; border-radius: 8px; }
.sl-qr .cap { font-size: 32px; font-weight: 700; }
.sl-queue { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; font-size: 60px; }
.sl-queue .l { font-size: .8em; text-transform: uppercase; letter-spacing: .1em; opacity: .85; } .sl-queue .num { font-size: 5em; font-weight: 900; line-height: 1; }
.sl-queue .nx { font-size: .7em; opacity: .8; margin-top: .4em; }
/* interrupt alerts */
.sl-alert { position: fixed; z-index: 1000; display: flex; align-items: center; gap: 1.2vw; color: #fff; font-family: Inter, "Helvetica Neue", Arial, sans-serif; }
.sl-alert.banner { left: 0; right: 0; bottom: 0; padding: 2.2vh 3vw; font-size: 3.4vh; box-shadow: 0 -10px 40px rgba(0,0,0,.35); }
.sl-alert.fullscreen { inset: 0; flex-direction: column; justify-content: center; text-align: center; padding: 6vw; font-size: 5vh; }
.sl-alert .at { font-weight: 800; } .sl-alert.fullscreen .at { font-size: 2em; margin-bottom: .4em; } .sl-alert .am { opacity: .95; white-space: pre-line; }
.sl-alert.info { background: #0071e3; } .sl-alert.warning { background: #d97706; } .sl-alert.emergency { background: #d70015; animation: sl-flash 1.6s ease-in-out infinite; }
@keyframes sl-flash { 50% { background: #9e0010; } }

/* photos in menus and price cards */
.sl-menu-item.withphoto { display: flex; gap: .55em; align-items: center; }
.sl-menu-item .ph { width: 2.6em; height: 2.6em; border-radius: .45em; object-fit: cover; flex: 0 0 auto; background: rgba(128,128,128,.25); }
.sl-menu-item .mi { flex: 1; min-width: 0; }
.sl-price.img { padding: 0 !important; justify-content: flex-start; }
.sl-price .pimg { flex: 1 1 58%; min-height: 0; overflow: hidden; } .sl-price .pimg img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sl-price .pbody { flex: 0 1 auto; padding: .5em .7em .6em; overflow: hidden; display: flex; flex-direction: column; justify-content: center; }
.sl-price.img .pr { font-size: 1.9em; }
.sl-overlay-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.2em 1.4em; background: linear-gradient(transparent, rgba(0,0,0,.75)); }

/* library menus: allergens, calories, specials, sold out, per-item QR, legend */
.sl-menu .alg { display: inline-block; font-style: normal; font-weight: 800; font-size: .62em; line-height: 1.5em; min-width: 1.5em; padding: 0 .3em; border-radius: .75em; color: #fff; text-align: center; margin-left: .25em; vertical-align: middle; }
.sl-menu .cal { opacity: .7; font-size: .95em; }
.sl-menu .meta { white-space: nowrap; }
.sl-menu .was { opacity: .55; font-weight: 500; font-size: .8em; }
.sl-menu .plabel { font-style: normal; font-size: .5em; text-transform: uppercase; letter-spacing: .06em; vertical-align: middle; }
.sl-menu .soldtag { font-style: normal; font-size: .5em; font-weight: 800; text-transform: uppercase; background: #d70015; color: #fff; padding: .1em .45em; border-radius: .3em; vertical-align: middle; text-decoration: none; display: inline-block; }
.sl-menu-item.sold .n, .sl-menu-item.sold .p { text-decoration: line-through; }
.sl-menu-item .iqr { width: 2.4em; height: 2.4em; flex: 0 0 auto; margin-left: .4em; } .sl-menu-item .iqr svg { width: 100%; height: 100%; border-radius: .2em; }
.sl-menu-item:has(.iqr) { display: flex; align-items: center; gap: .3em; } .sl-menu-item:has(.iqr) .mi { flex: 1; }
.sl-menu .legend { font-size: .55em; opacity: .85; margin-top: .6em; display: flex; flex-wrap: wrap; gap: .4em 1em; }
.sl-featured { display: flex; flex-direction: column; overflow: hidden; font-size: 40px; }
.sl-featured.in { animation: sl-fe-in .7s ease; } @keyframes sl-fe-in { from { opacity: 0; transform: translateY(.4em); } to { opacity: 1; transform: none; } }
.sl-featured .fe-img { flex: 1 1 60%; min-height: 0; border-radius: .4em; overflow: hidden; } .sl-featured .fe-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sl-featured .fe-body { padding-top: .5em; } .sl-featured .fe-label { font-size: .55em; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; }
.sl-featured .fe-name { font-size: 1.3em; font-weight: 800; line-height: 1.1; } .sl-featured .fe-desc { font-size: .6em; opacity: .8; margin-top: .2em; }
.sl-featured .fe-row { display: flex; align-items: center; justify-content: space-between; margin-top: .3em; }
.sl-featured .fe-price { font-size: 1.8em; font-weight: 900; } .sl-featured .fe-price s { font-size: .45em; opacity: .6; font-weight: 500; }
.sl-featured .fe-qr { display: flex; align-items: center; gap: .3em; font-size: .45em; font-weight: 700; } .sl-featured .fe-qr svg { width: 3.2em; height: 3.2em; border-radius: .2em; }
.sl-featured .fe-empty { margin: auto; opacity: .6; font-size: .7em; text-align: center; }
