.public-hero { padding: 34px 0 58px; color: white; background: linear-gradient(135deg, rgba(67,56,202,.93), rgba(14,116,144,.86)); box-shadow: 0 20px 55px rgba(67,56,202,.18); }
.hero-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.public-hero h1 { margin: 0 0 7px; font-size: clamp(1.7rem,5vw,2.35rem); letter-spacing: -.04em; }
.public-hero p { margin: 0; color: #e0f2fe; }
.public-hero .btn-light { color: white; background: rgba(255,255,255,.14); }
.public-main { margin-top: -30px; }
.public-cards { grid-template-columns: repeat(3, 1fr); }
.tabs { display: flex; gap: 7px; margin: 24px 0 12px; overflow-x: auto; scrollbar-width: none; }
.tabs::-webkit-scrollbar { display: none; }
.tab { flex: 0 0 auto; padding: 10px 14px; color: #475569; font-weight: 750; border: 1px solid rgba(255,255,255,.8); border-radius: 12px; background: rgba(255,255,255,.48); backdrop-filter: blur(12px); cursor: pointer; }
.tab.active { color: white; border-color: transparent; background: linear-gradient(135deg,var(--primary),var(--primary-2)); box-shadow: 0 8px 18px rgba(99,102,241,.2); }
.tab-panel { display: none; }
.tab-panel.active { display: block; animation: fadeIn .2s ease; }
.saldo { color: #047857; }
.public-footer { padding: 8px 16px 30px; text-align: center; color: var(--muted); font-size: .85rem; }
@keyframes fadeIn { from { opacity: .35; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (max-width: 700px) {
    .public-hero { padding: 25px 0 42px; }
    .hero-row { align-items: flex-start; flex-direction: column; }
    .public-cards { grid-template-columns: 1fr; }
    .public-main { margin-top: -20px; }
}

/* Kas Payment Matrix */
.kas-matrix { min-width: auto; }
.kas-matrix th, .kas-matrix td { text-align: center; padding: 10px 8px; }
.kas-matrix .col-name { text-align: left; min-width: 160px; font-weight: 600; }
.kas-matrix .cell-no { width: 42px; min-width: 42px; }
.kas-matrix .col-month { font-size: .72rem; letter-spacing: .02em; min-width: 60px; }

/* Sticky first two columns */
.kas-matrix .sticky-col { position: sticky; z-index: 2; background: rgba(255,255,255,.92); backdrop-filter: blur(10px); }
.kas-matrix thead .sticky-col { z-index: 3; background: rgba(245,247,250,.97); }
.kas-matrix td.sticky-col:first-child,
.kas-matrix th.sticky-col:first-child { left: 0; }
.kas-matrix td.sticky-col:nth-child(2),
.kas-matrix th.sticky-col:nth-child(2) { left: 42px; border-right: 2px solid rgba(148,163,184,.18); }
.kas-matrix tfoot .sticky-col { background: rgba(255,255,255,.5); }

/* Bullet indicators */
.bullet-paid, .bullet-empty {
    display: inline-block;
    width: 14px; height: 14px;
    border-radius: 50%;
    vertical-align: middle;
    transition: transform .18s ease, box-shadow .18s ease;
}
.bullet-paid {
    background: linear-gradient(135deg, #3b82f6, #6366f1);
    box-shadow: 0 3px 10px rgba(59,130,246,.35);
}
.bullet-empty {
    background: rgba(203,213,225,.45);
    border: 1.5px dashed rgba(148,163,184,.5);
}
.kas-matrix tbody tr:hover .bullet-paid { transform: scale(1.25); box-shadow: 0 4px 14px rgba(59,130,246,.45); }
.kas-matrix tbody tr:hover .bullet-empty { background: rgba(203,213,225,.6); }
.cell-status { padding: 8px 4px; }
