@import (reference) "/_bib/mixins.less"; @import "/_bib/BibForm.less"; @import "/_bib/BibDock.less"; @import "styles/utilities.less"; @import "styles/badges.less"; @import "styles/dashboard.less"; :root { /*variáveis fixas, nunca mudam*/ --font-primary: @font-primary; --font-secondary: @font-secondary; /*Paleta claro*/ --claro-texto: @claro-texto; --claro-fundo: @claro-fundo; --claro-nota: @claro-nota; --claro-link: @claro-link; --claro-titulo: @claro-titulo; --claro-borda: @claro-borda; --claro-sombra: @claro-sombra; --claro-textoTransp: @claro-textoTransp; --claro-fundoTransp: @claro-fundoTransp; /*Paleta escuro*/ --escuro-texto: @escuro-texto; --escuro-fundo: @escuro-fundo; --escuro-nota: @escuro-nota; --escuro-link: @escuro-link; --escuro-titulo: @escuro-titulo; --escuro-borda: @escuro-borda; --escuro-sombra: @escuro-sombra; --escuro-textoTransp: @escuro-textoTransp; --escuro-fundoTransp: @escuro-fundoTransp; } /*Aplicação do tema padrão (claro)*/ :root { --texto: var(--claro-texto); --fundo: var(--claro-fundo); --nota: var(--claro-nota); --link: var(--claro-link); --titulo: var(--claro-titulo); --borda: var(--claro-borda); --sombra: var(--claro-sombra); --textoTransp: var(--claro-textoTransp); --fundoTransp: var(--claro-fundoTransp); /* Aliases do framework BibCore */ --color-bg: var(--fundo); --color-text: var(--texto); --color-border: var(--borda); --color-title: var(--titulo); --color-link: var(--link); --color-shadow: var(--sombra); --color-primary: var(--titulo); --color-warning: #f1c40f; --color-error: #e74c3c; --color-success: #2ecc71; /* Ícones Multi-color (POC) */ --ico-pri: var(--destaque); --ico-sec: var(--texto); --ico-ter: var(--sucesso); /* Status das mesas */ --avulsa: rgba(0, 0, 255, 0.5); --disponivel: rgba(0, 255, 0, 0.5); --vendida: rgba(255, 0, 0, 0.5); --reservada: rgba(255, 255, 0, 0.5); } /*Tema escuro automático via sistema*/ @media (prefers-color-scheme: dark) { :root:not([data-tema="light"]):not([data-tema="dark"]) { --texto: var(--escuro-texto); --fundo: var(--escuro-fundo); --nota: var(--escuro-nota); --link: var(--escuro-link); --titulo: var(--escuro-titulo); --borda: var(--escuro-borda); --sombra: var(--escuro-sombra); --textoTransp: var(--escuro-textoTransp); --fundoTransp: var(--escuro-fundoTransp); /* Aliases do framework BibCore */ --color-bg: var(--fundo); --color-text: var(--texto); --color-border: var(--borda); --color-title: var(--titulo); --color-link: var(--link); --color-shadow: var(--sombra); --color-primary: var(--titulo); } } /*Tema escuro forçado*/ [data-tema="dark"] { --texto: var(--escuro-texto); --fundo: var(--escuro-fundo); --nota: var(--escuro-nota); --link: var(--escuro-link); --titulo: var(--escuro-titulo); --borda: var(--escuro-borda); --sombra: var(--escuro-sombra); --textoTransp: var(--escuro-textoTransp); --fundoTransp: var(--escuro-fundoTransp); /* Aliases do framework BibCore */ --color-bg: var(--fundo); --color-text: var(--texto); --color-border: var(--borda); --color-title: var(--titulo); --color-link: var(--link); --color-shadow: var(--sombra); --color-primary: var(--titulo); } /*Tema claro forçado*/ [data-tema="light"] { --texto: var(--claro-texto); --fundo: var(--claro-fundo); --nota: var(--claro-nota); --link: var(--claro-link); --titulo: var(--claro-titulo); --borda: var(--claro-borda); --sombra: var(--claro-sombra); --textoTransp: var(--claro-textoTransp); --fundoTransp: var(--claro-fundoTransp); /* Aliases do framework BibCore */ --color-bg: var(--fundo); --color-text: var(--texto); --color-border: var(--borda); --color-title: var(--titulo); --color-link: var(--link); --color-shadow: var(--sombra); --color-primary: var(--titulo); } /* Global Root Scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--borda); border-radius: 10px; border: 1.5px solid transparent; background-clip: padding-box; } ::-webkit-scrollbar-thumb:hover { background: var(--texto); border-width: 0; } /* Block: Headers Vector Anti-Sprawl Shield (M2F PWA Dynamic SVGs) */ h1 [data-icon] svg, h2 [data-icon] svg, h3 [data-icon] svg, h4 [data-icon] svg, .painel-header [data-icon] svg { width: 47px !important; height: 47px !important; max-width: 47px !important; max-height: 47px !important; display: inline-block; vertical-align: top; } /* Icon Multi-path Support (Apply to .icon class AND [data-icon] attribute) */ .icon, [data-icon] { .path-1 { fill: var(--ico-pri); } .path-2 { fill: var(--ico-sec); opacity: 0.9; } .path-3 { fill: var(--ico-ter); } } /* Compatibilidade Core LAB: BibIcons Módulo Purista */ svg.BibIcon, .bib-icon { width: 100%; height: 100%; transition: transform 0.2s cubic-bezier(0.25, 0.8, 0.25, 1); /* Ligação com o seu index.less do Produções */ --icon-pri: var(--destaque); --icon-sec: color-mix(in srgb, var(--borda), transparent 50%); --icon-dest: var(--titulo); path { transition: fill 0.2s ease; } } * { box-sizing: border-box; margin: 0; padding: 0; // transition: 1s linear background-color, color; } html, body { height: 100dvh; width: 100dvw; margin: 0; overflow: hidden; } body { font-family: var(--font-primary); background-color: var(--fundo); color: var(--texto); line-height: 1.6; display: flex; flex-direction: column; main.app-container, main, #app { height: 100%; display: block; width: 100%; flex: 1; min-height: 0; overflow-y: auto; .rolagemVertical(var(--borda), var(--texto), transparent, 4px); /* Construtor para Módulos de Lista Herdarem Rolagem (LAB) */ .lista-view { .rolagemVertical(var(--borda), var(--texto), transparent, 4px); display: flex; flex-direction: column; flex: 1; overflow-y: auto; /* O h1 do topo da view não contrai */ > h1 { flex-shrink: 0; display: block; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; svg, [data-icon], .bib-icon { display: inline-block; vertical-align: middle; } .ctx-evt { display: inline-block; vertical-align: middle; max-width: 40vw; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 0; font-size: 0.5em; opacity: 0.6; margin-left: 10px; } } /* O Container do BibList (ex: #list-cidades) cede scroll */ > div[id^="list-"] { flex: 1; min-height: 0; width: 100%; display: flex; flex-direction: column; } } /* Hack para a Home do App Mobile Scrollar Inteira */ #painel-view { .rolagemVertical(var(--borda), var(--texto), transparent, 4px); flex: 1; overflow-y: auto; padding-bottom: 80px; } /* Custom Scrollbar for Profil Modal */ #m2f-perfil-modal { .rolagemVertical(var(--color-border), var(--color-text), transparent, 4px); } /* Lookup Local Context Input Override */ #form-painel-context .bib-label input[type="text"], #form-painel-context .bib-label input[type="search"] { background: transparent !important; border: none !important; font-size: 1.25rem !important; color: var(--titulo) !important; padding: 0; box-shadow: none !important; font-weight: 600; } #form-painel-context .bib-label { border: 1px dashed var(--borda) !important; border-radius: 0 !important; } #form-painel-context .bib-label { position: relative !important; z-index: 1500 !important; /* Estabiliza Absolute-Dropdown M2F */ margin-bottom: 5px !important; } } #dock { position: fixed; left: 0; top: 0; bottom: 0; height: 100dvh; /* Dynamic viewport height */ width: 60px; background-color: var(--fundo); border-right: 1px solid var(--borda); display: flex; flex-direction: column; padding: 10px 0; z-index: 900; transition: width 0.3s ease; box-shadow: 2px 0 5px var(--sombra); overflow-y: overlay; overflow-x: auto; scrollbar-width: none; max-width: 100dvw; max-height: 100dvh; &::-webkit-scrollbar { display: none; } .dock-section { font-size: 0.75rem; text-transform: uppercase; color: var(--borda); margin-top: 5px; font-weight: bold; letter-spacing: 1.5px; opacity: 1; visibility: hidden; transition: opacity 0.2s; white-space: nowrap; height: 15px; /* Ensure consistent height even if text hidden */ flex-shrink: 0; padding: 0 15px; @media (max-width: 768px) { width: 20px; display: contents; padding-left: 0; } /* Small separator line when collapsed */ &::before { content: ''; display: block; width: 100%; height: 1px; background: var(--borda); margin-top: 5px; opacity: 1; visibility: visible; } } #tema, a, .user-info { display: flex; align-items: center; padding: 0 15px; height: 40px; color: var(--texto); text-decoration: none; white-space: nowrap; border-left: 3px solid transparent; border-right: none; border-top: none; border-bottom: none; transition: all 0.2s; background: transparent; width: 100%; font-family: inherit; font-size: 1rem; cursor: pointer; min-height: 50px; min-width: 50px; &:hover, &.active { background-color: var(--textoTransp); border-left-color: var(--link); color: var(--link); } /* Icons are always visible */ .icon, [data-icon] { opacity: 1; visibility: visible; display: inline-flex; align-items: center; justify-content: center; width: 24px; min-width: 24px; /* Fix flex shrinking */ } /* Text labels hidden by default (collapsed state) */ span:not(.icon):not([data-icon]), .label { margin-left: 15px; opacity: 0; visibility: hidden; transition: opacity 0.2s; white-space: nowrap; } } #dock-context { display: none; &.visible { display: block; @media (max-width: 768px) { display: contents; } } .event-badge { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; margin: 10px auto; border-radius: 50%; background: var(--destaque); color: #fff; font-weight: bold; font-size: 1.2rem; box-shadow: 0 2px 5px var(--sombra); cursor: default; .id { display: block; } @media (max-width: 768px) { width: 30px; height: 30px; min-width: 30px; /* Prevent squashing */ flex-shrink: 0; margin: auto 5px; font-size: 0.9rem; } } } &:hover { @media (min-width: 768px) { width: 200px; /* Show text on hover */ a span:not(.icon):not([data-icon]), #tema span:not(.icon):not([data-icon]) { opacity: 1; visibility: visible; transition-delay: 0.1s; } /* Explicitly show user label on dock hover */ .user-info .label { opacity: 1 !important; visibility: visible !important; transition-delay: 0.1s; } .dock-section { padding-left: 15px; opacity: 1 !important; visibility: visible !important; transition-delay: 0.1s; &::before { display: none; /* Hide separator line when expanded */ } } } } /* Mobile Dock */ @media (max-width: 768px) { top: auto; bottom: 0; left: 0; width: 100%; height: 60px; flex-direction: row; border-right: none; border-top: 1px solid var(--borda); padding: 0; box-shadow: 0 -2px 5px var(--sombra); transition: none; overflow-x: auto; overflow-y: hidden; &:hover { width: 100%; } /* All items are direct children now */ #tema, a, .user-info { flex-direction: column; justify-content: center; padding: 5px 10px; height: 100%; width: auto; /* Reset usage of 100% from desktop */ min-width: auto; /* Allow growth */ border: none; font-size: 0.8rem; margin: 0; flex-shrink: 0; span:not(.icon):not([data-icon]) { display: none; /* Show text */ font-size: 0.7rem; margin-top: 2px; white-space: nowrap; } span.icon, span[data-icon] { display: block; font-size: 1.4rem; margin: 0; } &:hover, &.active { border-bottom-color: var(--link); border-left-color: transparent; } } /* Special sizing for system/user items to save space */ #tema, .user-info, .logout-btn { min-width: 60px; } /* User info specifics */ .user-info .label { display: block !important; margin-left: 0; /* Reset desktop margin */ } /* Separators in mobile are spacers */ .dock-section { display: block; width: 1px; height: 60%; background: var(--borda); margin: auto 2px; padding: 0; flex-shrink: 0; opacity: 0.5; visibility: visible; /* Hide text */ font-size: 0; color: transparent; &::before { display: none; } } } } main { margin: 0 auto; width: 100%; /* Visões focadas em leitura/forms */ section, .form-view, .login-view { max-width: 800px; margin-left: auto; margin-right: auto; } /* Visões de lista expandidas */ .lista-view { height: 100%; overflow: hidden; } } /* Visão pública (Home, Login, etc) sem Dock */ &.public-view { padding: 20px !important; #dock, #bib-dock { display: none !important; } } } a { text-decoration: none; color: var(--link); } button { cursor: pointer; transition: all 0.3s; &:not(.borda) { margin: 0; padding: 0; border: none; background: transparent; /* Ensure focus ring looks good */ &:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; filter: brightness(1.1); } &.hover { outline: none; text-shadow: 2px 2px 2px var(--sombra); filter: brightness(1.1); &.afunda { text-shadow: none; filter: brightness(0.8); } } } &.borda { &:focus-visible { outline: 2px solid var(--link); outline-offset: 2px; filter: brightness(1.1); } &.hover { outline: none; box-shadow: 2px 2px 2px var(--sombra); filter: brightness(1.1); &.afunda { box-shadow: inset 2px 2px 2px var(--sombra); filter: brightness(0.8); } } } &:disabled { opacity: 0.5; cursor: default; pointer-events: none; } } /* Button .icon-only variant */ .button.icon-only { background: transparent; border: none; padding: 5px; width: auto; color: var(--texto); display: inline-flex; align-items: center; justify-content: center; &:hover { background-color: var(--textoTransp); color: var(--link); } } .notifica { position: fixed; padding: 12px 24px; background: var(--destaque, #3498db); color: #fff; border-radius: 8px; z-index: 100000; transition: opacity 0.5s, transform 0.5s; opacity: 0; white-space: normal; max-width: 90vw; text-align: center; word-wrap: break-word; font-weight: bold; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); font-size: 1.1rem; pointer-events: none; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); } /* Lookup Styles */ .icon { width: 1em; height: 1em; fill: var(--texto); vertical-align: middle; display: inline-block; } :root { --destaque: #9d9400; /* SIS_COR_CLARO_LINK fallback */ --sucesso: #2ecc71; --erro: #e74c3c; --alerta: #f1c40f; } /* Utility Classes */ .danger { color: var(--erro) !important; } .success { color: var(--sucesso) !important; } .warning { color: var(--alerta) !important; } .primary { color: var(--link) !important; } /* Icon Override for Utility Classes */ .danger .icon, .icon.danger { fill: var(--erro) !important; } .success .icon, .icon.success { fill: var(--sucesso) !important; } .warning .icon, .icon.warning { fill: var(--alerta) !important; } .primary .icon, .icon.primary { fill: var(--link) !important; } /* Button Color Variants for Icons within Buttons */ button.danger { color: var(--erro); } button.success { color: var(--sucesso); } /* Custom Button Colors requested by User - High Specificity */ body .button.primary, .form-view .actions .button.primary { color: #00FF00 !important; /* Green */ .icon, [data-icon] { fill: #00FF00 !important; } } body .button.secondary, .form-view .actions .button.secondary { color: #FFFF00 !important; /* Vivid Yellow */ .icon, [data-icon] { fill: #FFFF00 !important; } } .actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; } /* Global Loading Backdrop */ #loading-backdrop { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.4); backdrop-filter: blur(2px); z-index: 99999; display: flex; justify-content: center; align-items: center; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; &.visible { opacity: 1; pointer-events: all; } .spinner { width: 50px; height: 50px; border: 5px solid rgba(255, 255, 255, 0.3); border-top-color: var(--link); border-radius: 50%; animation: spin 1s linear infinite; } } @keyframes spin { to { transform: rotate(360deg); } } /* Input Loading Discrete Spinner */ input.loading { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cpath fill='%23888' d='M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z'%3E%3CanimateTransform attributeType='xml' attributeName='transform' type='rotate' from='0 25 25' to='360 25 25' dur='0.6s' repeatCount='indefinite'/%3E%3C/path%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; background-size: 20px 20px; padding-right: 35px; } /* Browser Autofill Styling Override */ input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus, input:-webkit-autofill:active{ -webkit-box-shadow: 0 0 0 30px var(--fundo) inset !important; -webkit-text-fill-color: var(--texto) !important; transition: background-color 5000s ease-in-out 0s; background-color: transparent !important; } /* Checkout Step 3 (Success) Styling */ #checkout-step-3 { .success-card { background: var(--fundo); color: var(--texto); padding: 20px; border-radius: 10px; max-width: 400px; margin: 20px auto; text-align: left; border: 1px solid var(--borda); box-shadow: 0 4px 10px var(--sombra); h3 { margin-top: 0; border-bottom: 1px solid var(--borda); padding-bottom: 10px; color: var(--titulo); } p { text-align: center; color: var(--nota); font-size: 0.9em; margin-top: 10px; } ul.convites-list { list-style: none; padding: 0; margin-top: 15px; li.convite-item { margin-bottom: 10px; padding: 10px; background: var(--fundoTransp); border: 1px solid var(--borda); border-radius: 5px; strong { color: var(--destaque); } small { color: var(--nota); display: block; margin-top: 2px; } .actions { margin-top: 10px; justify-content: flex-start; a.btn-open { display: inline-block; padding: 6px 15px; font-size: 0.9em; text-decoration: none; border-radius: 4px; background-color: var(--link); color: #fff; /* Always white on button */ border: none; transition: filter 0.2s; &:hover { filter: brightness(1.1); } } } } } } } /* Form Styling Enhancements */ .box-section { border: 1px solid var(--borda); padding: 15px; border-radius: 8px; background: var(--fundo); box-shadow: 0 2px 4px var(--sombra); margin-bottom: 0; legend { padding: 0 10px; font-weight: bold; color: var(--titulo); font-size: 0.9em; text-transform: uppercase; } &.highlight { background: var(--fundoTransp); border-color: var(--destaque); border-left-width: 4px; } &.collapsed-details { opacity: 0.8; border-style: dashed; background: transparent; box-shadow: none; &:hover { opacity: 1; border-style: solid; } } } .input-group { display: flex; gap: 5px; align-items: center; input { flex: 1; } } /* Typography Helpers */ .bold { font-weight: bold; } .uppercase { text-transform: uppercase; } .text-center { text-align: center; } .text-right { text-align: right; } .mono { font-family: monospace; } .small { font-size: 0.85em; } .big-value { font-size: 1.5em !important; font-weight: bold; color: var(--destaque); background: transparent !important; border: none !important; padding: 0 !important; height: auto !important; } /* Clean Table */ .table-clean { width: 100%; border-collapse: collapse; thead th { text-align: left; padding: 10px; border-bottom: 2px solid var(--borda); color: var(--titulo); font-weight: bold; text-transform: uppercase; font-size: 0.8em; } tbody td { padding: 12px 10px; border-bottom: 1px solid var(--borda); color: var(--texto); vertical-align: middle; } tbody tr:last-child td { border-bottom: none; } tbody tr:hover { background-color: var(--textoTransp); } } .section-title { font-size: 1.1em; color: var(--titulo); border-bottom: 1px solid var(--borda); padding-bottom: 10px; margin-bottom: 15px; margin-top: 30px; } .mt-2 { margin-top: 10px; } .mt-4 { margin-top: 20px; } /* ======================================= * TOASTS NATIVOS (UI Herdada do LAB) * ======================================= */ #bib-toasts { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: 10000; display: flex; flex-direction: column; gap: 10px; max-width: 90vw; pointer-events: none; .bib-toast { pointer-events: auto; background: var(--escuro-fundo, #333); color: var(--escuro-texto, #fff); padding: 8px 16px; border-radius: 20px; font-size: 0.9rem; box-shadow: 0 4px 12px rgba(0,0,0,0.3); display: flex; justify-content: space-between; align-items: center; gap: 12px; opacity: 0; transition: opacity 0.3s, transform 0.3s; transform: translateY(20px); &.show { opacity: 1; transform: translateY(0); } &.hiding { opacity: 0; transform: translateY(-20px); } /* Cores nativas para manter a coerência das paletas do app Produções que não importou _bib globais */ &.type-error { background: #d9534f; color: #fff; } &.type-warning { background: #f0ad4e; color: #000; } &.type-success { background: #5cb85c; color: #fff; } .toast-close { cursor: pointer; font-size: 1.2rem; font-weight: bold; opacity: 0.7; padding: 0 4px; background: transparent; border: none; color: inherit; &:hover { opacity: 1; } } } } #bib-modal-overlay, dialog.bib-modal::backdrop { background: var(--color-shadow, rgba(0,0,0,0.6)) !important; } #bib-auth-wrapper, .bib-modal, dialog.bib-modal { position: fixed !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; z-index: 999999 !important; background: var(--color-bg, #363636) !important; color: var(--color-text, #d7d7d7) !important; border-radius: 8px !important; border: 1px solid var(--color-border, #777) !important; box-shadow: 0 0 0 100vw var(--color-shadow, rgba(0,0,0,0.8)), 0 10px 40px var(--color-shadow, rgba(0,0,0,0.5)) !important; width: 90% !important; padding: 0 !important; margin: 0 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; } .bib-modal-header { padding: 15px !important; border-bottom: 1px solid var(--color-border, #777) !important; font-size: 18px !important; font-weight: bold !important; background: rgba(0,0,0,0.2) !important; } .bib-form-container { padding: 20px !important; background: transparent !important; overflow-y: auto !important; flex: 1 1 auto !important; min-height: 0 !important; } .bib-modal-body { padding: 20px !important; text-align: center !important; overflow-y: auto !important; flex: 1 1 auto !important; min-height: 0 !important; } .bib-modal-footer { padding: 15px !important; border-top: 1px solid var(--color-border, #777) !important; display: flex !important; justify-content: flex-end !important; gap: 10px !important; background: rgba(0,0,0,0.2) !important; button, .bib-btn { display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; padding: 8px 16px !important; border-radius: 4px !important; background: transparent !important; color: var(--escuro-texto, #fff) !important; border: none !important; font-weight: bold !important; margin: 0 !important; svg, .bib-icon { max-width: 18px !important; max-height: 18px !important; fill: currentColor !important; } &.error, &.danger, &.warn-btn { color: var(--theme-colors-semantic-error, #dc3545) !important; } &.primary { color: var(--theme-colors-shared-link, #9d9400) !important; } } } /* Limitador de Altura Flutuante Seguro para o Componente Sessões PWA */ #sessions-list-container { .bib-list-wrapper { max-height: 250px; overflow-y: auto; overflow-x: auto; } } /* Forçamento Flexível de Ícones Maciços para a Área PWA de Tema The sistema do the Perfil */ #btn-group-tema { .bib-btn { svg.bib-icon, .bib-icon { font-size: 32px !important; /* Overpower global scaling */ width: 32px !important; height: 32px !important; max-width: none !important; max-height: none !important; display: inline-block; } } } /* --- MAPA VIEW STYLES --- */ /* Mapa Engine (Adaptado da Vitrine Voxl integrado ao M2F Theme System) */ #wrapper-mapa { position: relative; width: 100%; height: 75vh; max-height: 800px; background: var(--bgSec); border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; display: flex; justify-content: center; align-items: center; } #mapa-container { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; } #mapa-container svg { max-width: 95%; max-height: 95%; width: 100%; height: 100%; } #mapa-container svg path#pathMapa { fill: var(--borda); } #mapa-container svg rect#fundo { fill: none; } #mapa-container svg #paredes, #mapa-container svg #paredes > path { fill: var(--texto); opacity: 0.3; } #mapa-container svg #mesas > g { cursor: pointer; transition: opacity 0.2s; } #mapa-container svg #mesas > g:hover { opacity: 0.8; } #mapa-container svg #mesas > g > circle, #mapa-container svg #legenda > g > circle { stroke: var(--destaque); fill: none; stroke-width: 100px; } #mapa-container svg #mesas > g rect, #legenda-container #legenda rect { transition: fill 0.3s; fill: none; stroke: var(--borda); rx: 400px; ry: 400px; } #mapa-container svg #mesas > g text, #legenda-container #legenda text { fill: var(--texto); pointer-events: none; } /* Cores de Status Compatíveis com PWA e Vitrine */ /* Usando as cores originais da vitrine como fallback fixo para coerência visual */ #mapa-container svg #mesas > g.Livre rect, #legenda-container #legenda g.disponivel rect { fill: #00e676; stroke: transparent; } #mapa-container svg #mesas > g.Vendida rect, #legenda-container #legenda g.vendida rect { fill: #dc3545; stroke: transparent; } #mapa-container svg #mesas > g.Reservada rect, #legenda-container #legenda g.reservada rect { fill: #ffc107; stroke: transparent; } #mapa-container svg #mesas > g.Avulsa rect, #legenda-container #legenda g.avulsa rect { fill: #2196f3; stroke: transparent; } #mapa-container svg .badge-metrica { font-family: 'Arial', sans-serif; font-size: 300px; stroke: none; fill: #00897b !important; } #mapa-container.mode-livre svg .badge-metrica { fill: #00897b !important; } #mapa-container.mode-ocupada svg .badge-metrica { fill: #d32f2f !important; } #mapa-container.mode-entrou svg .badge-metrica { fill: #1976d2 !important; } #mapa-container.mode-falta svg .badge-metrica { fill: #f57c00 !important; } #legenda-container { position: absolute; bottom: 10px; left: 10px; width: 150px; z-index: 10; background: var(--bg); padding: 10px; border-radius: 8px; border: 1px solid var(--borda); transition: width 0.3s ease, opacity 0.3s; opacity: 0.9; } #legenda-container:hover { width: 250px; opacity: 1; } #legenda-container svg { width: 100%; height: auto; display: block; } /* * Correção Crítica de Impressão (Print Engine) * Desbloqueia os contêineres do PWA (html, body, main, wrappers de lista) */ @media print { html, body, main, main.app-container, #app, .lista-view, .lista-view > div[id^="list-"] { height: auto !important; max-height: none !important; min-height: 100% !important; overflow: visible !important; display: block !important; } }