/* Estilos de interação e composição próprios da aplicação. */
/* Reboot complementar: os componentes controlam seus próprios espaçamentos. */
p, h1, h2, h3, h4, h5, h6 { margin: 0; font-size: inherit; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { background: transparent; border: 0; color: inherit; }
a { color: inherit; text-decoration: none; }
.app-focus-ring:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: 2px; }
.app-placeholder::placeholder { color: var(--bs-secondary-color); opacity: 1; }
.app-disabled:disabled { opacity: .5; cursor: not-allowed; box-shadow: none; }
.app-hover-surface:hover { background-color: var(--bs-tertiary-bg) !important; }
.app-hover-text-body:hover { color: var(--bs-emphasis-color) !important; }
.app-hover-border:hover { border-color: var(--bs-primary) !important; }
.app-hover-lift:hover { transform: translateY(-2px); box-shadow: var(--app-shadow-card); }
.app-hover-emphasis:hover { filter: brightness(1.08); }
.app-hover-underline:hover { text-decoration: underline; }
.app-reveal { opacity: 0; }
.app-action-group:is(:hover, :focus-within) .app-reveal { opacity: 1; }
.app-action-group:is(:hover, :focus-within) .app-action-label { color: var(--bs-primary-text-emphasis) !important; }
.app-action-arrow { transition: transform .15s; }
.app-action-group:is(:hover, :focus-within) .app-action-arrow { transform: translateX(4px); }
.app-brand-gradient { background: linear-gradient(120deg, var(--bs-primary), #7c3aed); color: #fff; }
.text-on-accent, .btn-primary.text-body-emphasis { color: #fff !important; }
.bg-accent { background-color: #8b5cf6 !important; }
.text-accent-emphasis { color: var(--app-accent-emphasis) !important; }
.bg-accent-subtle { background-color: var(--app-accent-tint) !important; }
.border-accent-subtle { border-color: var(--app-accent-border) !important; }
[data-bs-theme="dark"] { --app-accent-emphasis: #d0b8fa; --app-accent-tint: #2d2342; --app-accent-border: #655082; }
[data-bs-theme="light"] { --app-accent-emphasis: #6530ac; --app-accent-tint: #f0e9fc; --app-accent-border: #d2bcf2; }
.app-hover-primary:hover { background-color: var(--bs-primary-bg-subtle) !important; }
.app-hover-success:hover { background-color: var(--bs-success-bg-subtle) !important; }
.app-hover-warning:hover { background-color: var(--bs-warning-bg-subtle) !important; }
.app-hover-danger:hover { background-color: var(--bs-danger-bg-subtle) !important; }
.app-hover-info:hover { background-color: var(--bs-info-bg-subtle) !important; }
.app-hover-accent:hover { background-color: var(--app-accent-tint) !important; }
.app-hover-text-primary:hover { color: var(--bs-primary-text-emphasis) !important; }
.app-hover-text-success:hover { color: var(--bs-success-text-emphasis) !important; }
.app-hover-text-warning:hover { color: var(--bs-warning-text-emphasis) !important; }
.app-hover-text-danger:hover { color: var(--bs-danger-text-emphasis) !important; }
.app-hover-text-info:hover { color: var(--bs-info-text-emphasis) !important; }
.app-hover-text-accent:hover { color: var(--app-accent-emphasis) !important; }
@keyframes app-spin { to { transform: rotate(360deg); } }
@keyframes app-loading { 50% { opacity: .45; } }
@keyframes app-ping { 75%, 100% { transform: scale(2); opacity: 0; } }
@keyframes app-float { 50% { transform: translateY(-12px); } }
.app-spin { animation: app-spin 1s linear infinite; }
.app-loading, .app-pulse-glow { animation: app-loading 2s ease-in-out infinite; }
.app-ping { animation: app-ping 1.5s cubic-bezier(0, 0, .2, 1) infinite; }
.app-float { animation: app-float 6s ease-in-out infinite; }
@media (hover: none) { .app-reveal { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .app-spin, .app-loading, .app-ping, .app-float, .app-pulse-glow { animation: none; }
  .app-hover-lift:hover { transform: none; }
}
.grid { --bs-columns: 1; }
.grid > * { min-width: 0; }
.app-place-center { place-items: center; }
.app-transition { transition: background-color .15s, color .15s, border-color .15s, box-shadow .15s, opacity .15s; }
.app-font-heading { font-family: 'Sora', var(--bs-font-sans-serif); letter-spacing: -.025em; }
.app-clickable { cursor: pointer; }
.app-border-transparent { border-color: transparent !important; }
.app-stack-y-12 > :not([hidden]) ~ :not([hidden]) { margin-top: 12px; }
.app-overline { letter-spacing: .06em; }
.app-divided > :not([hidden]) ~ :not([hidden]) { border-top: 1px solid var(--bs-border-color); }
.app-stack-y-16 > :not([hidden]) ~ :not([hidden]) { margin-top: 16px; }
.app-stack-y-8 > :not([hidden]) ~ :not([hidden]) { margin-top: 8px; }
.app-grid-full { grid-column: 1 / -1; }
.app-stack-y-20 > :not([hidden]) ~ :not([hidden]) { margin-top: 20px; }
.app-stack-y-24 > :not([hidden]) ~ :not([hidden]) { margin-top: 24px; }
@media (min-width: 768px) { .app-layout-280px-1fr { grid-template-columns: 280px 1fr !important; } }
.app-pre { white-space: pre; }
.app-pre-wrap { white-space: pre-wrap; }
.app-break-all { overflow-wrap: anywhere; }
.app-min-w-full { min-width: 100%; }
.app-stack-y-6 > :not([hidden]) ~ :not([hidden]) { margin-top: 6px; }
.app-font-body { font-family: var(--bs-font-sans-serif); }
.app-stack-y-2 > :not([hidden]) ~ :not([hidden]) { margin-top: 2px; }
.app-spinner-accent { border-top-color: var(--bs-primary) !important; }
.app-shift-x-24 { transform: translateX(24px); }
.app-shift-x-4 { transform: translateX(4px); }
.app-status-glow { box-shadow: 0 0 6px var(--bs-success); }
.app-clamp-3 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
.app-numeric { font-variant-numeric: tabular-nums; }
.app-clamp-2 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.app-stack-y-10 > :not([hidden]) ~ :not([hidden]) { margin-top: 10px; }
.app-chat-height { height: calc(100vh - 9rem); }
.app-corner-top-right { border-top-right-radius: 4px !important; }
.app-pre-line { white-space: pre-line; }
.app-corner-top-left { border-top-left-radius: 4px !important; }
.app-resize-none { resize: none; }
.app-shift-x-1 { transform: translateX(1px); }
.app-stack-y-4 > :not([hidden]) ~ :not([hidden]) { margin-top: 4px; }
.app-text-normal { text-transform: none !important; }
.app-shift-y-minus-50pct { transform: translateY(-50%); }
.app-tight { letter-spacing: -.025em; }
@media (min-width: 992px) { .app-layout-340px-1fr { grid-template-columns: 340px 1fr !important; } }
.app-tracking-normal { letter-spacing: normal; }
.app-resize-y { resize: vertical; }
.app-backdrop-blur { backdrop-filter: blur(14px); }
.app-clamp-6 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6; overflow: hidden; }
.app-layer-50 { z-index: 50; }
.app-chat-max-width { max-width: calc(100vw - 2.5rem); }
.app-corner-bottom-right { border-bottom-right-radius: 4px !important; }
.app-corner-bottom-left { border-bottom-left-radius: 4px !important; }
.app-image-shadow { filter: drop-shadow(0 20px 36px rgba(79, 70, 229, .3)); }
.app-icon-stroke { stroke: currentColor; }
.app-icon-fill { fill: currentColor; }
.app-inset-0 { inset: 0px; }
.app-layer-minus-10 { z-index: -10; }
.app-decor-blur { filter: blur(100px); }
@media (min-width: 992px) { .app-layout-1d6fr-1fr { grid-template-columns: 1.6fr 1fr !important; } }
@media (min-width: 992px) { .app-layout-1d4fr-1fr { grid-template-columns: 1.4fr 1fr !important; } }
@media (min-width: 992px) { .app-layout-240px-1fr { grid-template-columns: 240px 1fr !important; } }
.app-display-leading { line-height: 1.1; }
.app-shift-x-minus-50pct { transform: translateX(-50%); }
.app-layer-30 { z-index: 30; }

.app-draggable { cursor: grab; }
.app-draggable:active { cursor: grabbing; }
.app-tab-overlap { margin-bottom: -1px; }
.app-disclosure { grid-template-rows: 0fr; transition: grid-template-rows .2s ease-out; }
.app-phone-frame { border-radius: 2.6rem; }

.app-crossfade { transition: opacity .7s ease-in-out; }
@media (prefers-reduced-motion: reduce) { .app-crossfade, .app-disclosure { transition: none; } }

.app-phone-screen { border-radius: 2.1rem; }
