@import url("https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Onest:wght@400;500;600;700&display=swap");:root{--green-900:#1A3A2A;--green-700:#224C36;--green-50:#EDF3EF;--gold-700:#B8860B;--gold-500:#D4A843;--gold-50:#FFF8E7;--gold-border:#E8D590;--bg:#F5F2ED;--surface:#FDFCFA;--text:#1A1713;--text-muted:#6B655B;--border:#E5E0D5;--red:#C0392B;--green-ok:#2E7D5B;--radius-sm:8px;--radius:14px;--radius-lg:20px;--shadow-sm:0 1px 2px rgba(26,23,19,0.05);--shadow:0 4px 16px rgba(26,23,19,0.06);--font-display:"Playfair Display",Georgia,serif;--font-body:"Onest",-apple-system,system-ui,sans-serif}:root[data-theme=dark]{--bg:#14110D;--surface:#1F1B16;--text:#F1ECDF;--text-muted:#A39C8C;--border:#2D2922;--green-50:#1B2A22;--gold-50:#2A2310;--gold-border:#3D3520;--shadow:0 6px 18px rgba(0,0,0,0.35)}*{box-sizing:border-box}body,html{padding:0;margin:0}body{font-family:var(--font-body);background:var(--bg);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}body,h1,h2,h3{color:var(--text)}h1,h2,h3{font-family:var(--font-display);font-weight:700;margin:0}h1{font-size:clamp(28px,4vw,40px);line-height:1.1}h2{font-size:clamp(22px,3vw,28px);line-height:1.15}h3{font-size:18px}a{color:var(--green-700);text-decoration:none}a:hover{color:var(--gold-700)}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}.container{max-width:1180px;margin:0 auto;padding:0 24px}@media (max-width:640px){.container{padding:0 16px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:10px;font-weight:500;transition:background .15s,color .15s,border-color .15s,opacity .15s}.btn-primary{background:var(--green-900);color:#fff}.btn-primary:hover{background:var(--green-700)}.btn-gold{background:var(--gold-500);color:var(--green-900)}.btn-gold:hover{background:var(--gold-700);color:#fff}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-ghost:hover{border-color:var(--green-700);color:var(--green-700)}.btn:disabled{opacity:.5;cursor:not-allowed}.input,.select{width:100%;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:10px 14px;font:inherit;transition:border-color .15s}.input:focus,.select:focus{outline:none;border-color:var(--green-700)}.label{display:block;font-size:13px;color:var(--text-muted);margin-bottom:6px}.month-grid{display:grid;grid-template-columns:repeat(10,1fr);grid-gap:6px;gap:6px;margin-top:16px}@media (max-width:560px){.month-grid{grid-template-columns:repeat(5,1fr)}}.month-cell{aspect-ratio:1/1;border-radius:6px;border:1px solid var(--border);background:var(--surface);position:relative;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-muted);cursor:pointer;transition:transform .1s,box-shadow .15s}.month-cell:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.month-cell.unpaid{background:var(--surface)}.month-cell.unpaid.checkpoint{background:var(--gold-50);border-color:var(--gold-500);color:var(--gold-700)}.month-cell.checkpoint:after{content:"";position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:50%;background:var(--gold-500)}.month-cell.paid{background:var(--green-900);color:#fff;border-color:var(--green-900)}.month-cell.partial{background:linear-gradient(90deg,var(--green-900) var(--fill,50%),var(--surface) var(--fill,50%));color:var(--text);border-color:var(--green-700)}.month-cell.corrective{box-shadow:inset 0 0 0 2px var(--red)}.month-cell.corrective:before{content:"!";position:absolute;bottom:1px;left:3px;font-size:9px;font-weight:700;color:var(--red)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500}.badge-ok{background:var(--green-50);color:var(--green-ok)}.badge-warn{background:var(--gold-50);color:var(--gold-700);border:1px solid var(--gold-border)}.badge-err{background:#FCE9E5;color:var(--red)}:root[data-theme=dark] .badge-err{background:#3a1a16}.progress{height:8px;border-radius:999px;background:var(--border);overflow:hidden}.progress>span{display:block;height:100%;background:var(--green-900);border-radius:999px;transition:width .3s ease}.header{background:var(--surface);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:10}.header-inner{display:flex;align-items:center;justify-content:space-between;padding:14px 0}.brand{font-family:var(--font-display);font-size:22px;color:var(--green-900);font-weight:700}:root[data-theme=dark] .brand{color:var(--gold-500)}.nav{display:flex;gap:22px;align-items:center}@media (max-width:640px){.nav{gap:12px}.nav a{font-size:14px}}.table{width:100%;border-collapse:collapse}.table td,.table th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:14px}.table th{color:var(--text-muted);font-weight:500}.row{gap:14px;flex-wrap:wrap}.col,.row{display:flex}.col{flex-direction:column}.muted{color:var(--text-muted)}.h-currency{font-family:var(--font-display);font-size:26px;color:var(--gold-700)}:root[data-theme=dark] .h-currency{color:var(--gold-500)}@media (max-width:920px){body{font-size:15px}.card{padding:16px;border-radius:12px}.table td,.table th{padding:8px 10px;font-size:13.5px}.h-currency{font-size:22px;word-break:break-word}}@media (max-width:640px){body{font-size:14.5px;line-height:1.5}.card{padding:14px;border-radius:12px}.btn{padding:9px 14px;font-size:14px}.input,.select{padding:10px 12px;font-size:15px}.container{padding:0 14px}.table{font-size:13px}.table td,.table th{padding:7px 8px}.month-grid{grid-template-columns:repeat(auto-fill,minmax(28px,1fr));gap:4px}.month-cell{font-size:10px}.h-currency{font-size:20px}.header-inner{padding:10px 0}.nav{gap:10px}.nav .btn{padding:6px 10px;font-size:13px}}.card>.table,.card>div>.table{display:table;width:100%}@media (max-width:480px){.contract-card{padding:12px!important}.contract-card .h-currency{font-size:18px}}@media (max-width:380px){.input,.select{font-size:16px}}@media (max-width:520px){.notif-row{padding:10px 12px!important;gap:8px!important}.notif-row .btn{width:100%}}@media (prefers-reduced-motion:no-preference){.contract-card{animation:card-in .28s ease both}@keyframes card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.btn{transition:background .14s ease,transform 80ms ease,box-shadow .14s ease}.btn:active{transform:translateY(1px)}.input,.select{transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.badge{transition:background .14s ease,color .14s ease}}