Files
myprojplanet_vite/src/components/Riso_Home_ParteFinale/Riso_Home_ParteFinale.scss
2025-12-18 19:45:36 +01:00

542 lines
10 KiB
SCSS

/* =========================================================
RISO Home (parte finale) — refresh estetico coerente
========================================================= */
$space-xs: 4px;
$space-sm: 8px;
$space-md: 12px;
$space-lg: 16px;
$space-xl: 20px;
$space-xxl: 24px;
.riso-modern-home {
padding: $s-md;
padding-bottom: calc(#{$s-md} + env(safe-area-inset-bottom));
max-width: 1200px;
margin: 0 auto;
min-height: 100vh;
display: flex;
flex-direction: column;
gap: $s-md;
}
/* ---- Section shell (glass card) ---- */
.content-section,
.community-actions-section,
.footer-section-modern {
border-radius: $r-lg;
padding: $s-md;
background: rgba(255, 255, 255, 0.72);
border: 1px solid rgba(255, 255, 255, 0.55);
box-shadow: 0 14px 40px rgba(16, 24, 40, 0.08);
backdrop-filter: blur(12px);
}
:global(body.body--dark) {
.content-section,
.community-actions-section,
.footer-section-modern {
background: rgba(16, 24, 40, 0.55);
border: 1px solid rgba(255, 255, 255, 0.10);
box-shadow: 0 14px 40px rgba(0, 0, 0, 0.35);
}
}
/* ---- Titles ---- */
.section-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: $s-sm;
margin-bottom: $s-sm;
}
.section-title {
font-size: 1.12rem;
font-weight: 900;
margin: 0;
display: flex;
align-items: center;
gap: $s-sm;
letter-spacing: 0.01em;
/* gradient text */
background: $gradient-primary;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
.q-icon {
background: $gradient-primary;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
}
/* ---- Organizations: horizontal scroll ---- */
.org-scroll {
display: flex;
gap: $s-sm;
overflow-x: auto;
padding-bottom: 4px;
scroll-snap-type: x mandatory;
/* smoother */
-webkit-overflow-scrolling: touch;
&::-webkit-scrollbar {
height: 8px;
}
&::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.12);
border-radius: 999px;
}
&::-webkit-scrollbar-track {
background: transparent;
}
}
:global(body.body--dark) {
.org-scroll::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.16);
}
}
.org-card-scroll {
min-width: 190px;
max-width: 240px;
padding: $s-sm;
border-radius: $r-lg;
cursor: pointer;
scroll-snap-align: start;
display: grid;
grid-template-columns: 54px 1fr;
gap: $s-sm;
align-items: center;
background: rgba(255, 255, 255, 0.86);
border: 1px solid rgba(0, 0, 0, 0.06);
transition: transform 140ms ease, box-shadow 140ms ease, filter 140ms ease;
&:hover {
transform: translateY(-2px);
box-shadow: 0 16px 36px rgba(16, 24, 40, 0.14);
filter: saturate(1.04);
}
&:active {
transform: translateY(0px) scale(0.99);
}
&:focus-visible {
outline: 3px solid rgba(102, 126, 234, 0.35);
outline-offset: 2px;
}
.org-info {
min-width: 0;
display: grid;
gap: 2px;
}
.org-name {
font-weight: 900;
font-size: 0.95rem;
line-height: 1.15;
opacity: 0.92;
/* show full titles (no truncation) */
white-space: normal;
overflow: visible;
text-overflow: unset;
word-break: break-word;
}
.org-subtitle {
font-size: 0.82rem;
opacity: 0.72;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
:global(body.body--dark) {
.org-card-scroll {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.10);
&:hover {
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.40);
}
.org-subtitle {
opacity: 0.84;
}
}
}
.org-card-scroll.see-more-card {
grid-template-columns: 1fr;
place-items: center;
text-align: center;
background: $gradient-primary;
border: 1px solid rgba(255, 255, 255, 0.18);
color: white;
.see-more-circle {
width: 54px;
height: 54px;
border-radius: 18px;
display: grid;
place-items: center;
background: rgba(255, 255, 255, 0.18);
border: 1px solid rgba(255, 255, 255, 0.20);
margin-bottom: 6px;
}
.see-more-count {
font-weight: 900;
letter-spacing: 0.02em;
}
.org-name {
color: white;
}
}
/* Small helper text under scroll */
.org-scroll-hint {
display: flex;
align-items: center;
gap: $s-xs;
font-size: 0.86rem;
opacity: 0.72;
margin-top: $s-sm;
}
/* ---- Community invite banner ---- */
.invite-banner {
display: flex;
justify-content: space-between;
align-items: center;
gap: $s-sm;
padding: $s-md;
border-radius: $r-lg;
background: linear-gradient(135deg, rgba(34, 197, 94, 0.14), rgba(16, 185, 129, 0.10));
border: 1px solid rgba(34, 197, 94, 0.22);
}
:global(body.body--dark) {
.invite-banner {
background: linear-gradient(135deg, rgba(34, 197, 94, 0.18), rgba(16, 185, 129, 0.12));
border: 1px solid rgba(34, 197, 94, 0.22);
}
}
.invite-message {
display: flex;
align-items: flex-start;
gap: $s-sm;
.invite-text {
display: grid;
gap: 4px;
}
.invite-main {
font-weight: 800;
line-height: 1.25;
}
.invite-count {
font-size: 0.86rem;
opacity: 0.78;
}
}
/* ---- Telegram ---- */
.telegram-grid-modern {
display: grid;
grid-template-columns: 1fr;
gap: $s-md;
@media (min-width: 700px) {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.telegram-card-modern {
border-radius: $r-lg;
overflow: hidden;
text-decoration: none;
display: block;
color: inherit;
position: relative;
transition: transform 140ms ease, box-shadow 140ms ease, filter 140ms ease;
background: rgba(255, 255, 255, 0.86);
border: 1px solid rgba(0, 0, 0, 0.06);
box-shadow: 0 10px 26px rgba(16, 24, 40, 0.10);
&:hover {
transform: translateY(-2px);
box-shadow: 0 16px 36px rgba(16, 24, 40, 0.14);
filter: saturate(1.03);
}
&:active {
transform: translateY(0px) scale(0.99);
}
&:focus-visible {
outline: 3px solid rgba(59, 130, 246, 0.25);
outline-offset: 2px;
}
}
:global(body.body--dark) {
.telegram-card-modern {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.10);
box-shadow: 0 10px 26px rgba(0, 0, 0, 0.35);
&:hover {
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.45);
}
}
}
.telegram-card-image {
border-radius: 0;
}
.telegram-overlay {
position: absolute;
inset: 0;
display: grid;
place-items: center;
background: linear-gradient(135deg, rgba(59, 130, 246, 0.32), rgba(14, 165, 233, 0.22));
}
.telegram-icon-wrapper {
height: 130px;
display: grid;
place-items: center;
background: linear-gradient(135deg, rgba(59, 130, 246, 0.18), rgba(14, 165, 233, 0.12));
}
.telegram-card-content {
padding: $s-md;
display: grid;
gap: 4px;
.telegram-card-title {
font-weight: 900;
font-size: 1.02rem;
line-height: 1.2;
}
.telegram-card-subtitle {
font-size: 0.86rem;
opacity: 0.74;
line-height: 1.25;
}
}
/* ---- Footer ---- */
.footer-section-modern {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: $s-sm;
@media (min-width: 700px) {
grid-template-columns: repeat(3, minmax(0, 1fr));
align-items: stretch;
}
}
.footer-btn-modern {
width: 100%;
border-radius: 16px;
font-weight: 800;
letter-spacing: 0.01em;
text-transform: none;
background: rgba(255, 255, 255, 0.86);
border: 1px solid rgba(0, 0, 0, 0.06);
&:hover {
filter: saturate(1.03);
}
}
:global(body.body--dark) {
.footer-btn-modern {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.10);
}
}
// ========================================
// Community Actions Grid
// ========================================
.community-actions-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: $space-md;
margin-bottom: $space-lg;
// Mobile: colonna singola se necessario
@media (max-width: 400px) {
grid-template-columns: 1fr;
gap: $space-sm;
}
}
.community-action-btn {
display: flex;
align-items: center;
justify-content: center;
gap: $space-sm;
padding: $space-md $space-lg;
min-height: 48px;
font-size: 14px;
font-weight: 600;
text-transform: none;
box-shadow: var(--cm-shadow-sm);
transition: all 0.3s ease;
&:hover {
transform: translateY(-2px);
box-shadow: var(--cm-shadow-md);
}
&:active {
transform: translateY(0);
}
// Quasar icon spacing fix
:deep(.q-icon) {
margin-right: $space-xs;
}
// Dark mode adjustments
.body--dark & {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
&:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}
}
}
// ========================================
// Invite Friend Dialog
// ========================================
.invite-friend-dialog {
width: 100%;
max-width: 500px;
max-height: 90vh;
display: flex;
flex-direction: column;
border-radius: $radius-xl;
overflow: hidden;
// Mobile fullscreen
@media (max-width: 599px) {
max-width: 100%;
max-height: 100vh;
height: 100vh;
border-radius: 0;
}
// Header
.dialog-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: $space-lg $space-xl;
color: white;
flex-shrink: 0;
&.invite {
background: linear-gradient(135deg, #4caf50 0%, #2e7d32 100%);
.body--dark & {
background: linear-gradient(135deg, #388e3c 0%, #1b5e20 100%);
}
}
.dialog-title {
display: flex;
align-items: center;
gap: $space-sm;
font-size: 18px;
font-weight: 700;
}
}
// Contenuto scrollabile
.dialog-content {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
padding: $space-lg;
// Scrollbar styling
&::-webkit-scrollbar {
width: 6px;
}
&::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.05);
.body--dark & {
background: rgba(255, 255, 255, 0.05);
}
}
&::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
border-radius: 3px;
&:hover {
background: rgba(0, 0, 0, 0.3);
}
.body--dark & {
background: rgba(255, 255, 255, 0.2);
&:hover {
background: rgba(255, 255, 255, 0.3);
}
}
}
}
}
// ========================================
// Fix Dialog Background - Light/Dark
// ========================================
.q-dialog__inner>.invite-friend-dialog {
background: #ffffff;
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
}
.body--dark {
.q-dialog__inner>.invite-friend-dialog {
background: #1e293b;
.dialog-content {
background: #1e293b;
}
}
}