:root{--ink:#183b37;--muted:#6c7f79;--paper:#f6f4ef;--card:#fffefa;--line:#dde3dc;--green:#2e7d62;--light-green:#e2f2e9;--orange:#bd6e35;--orange-soft:#fff0e5;--red:#c5584c;--shadow:0 18px 50px rgba(27,55,47,.08)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}.app-shell{max-width:1280px;margin:auto;padding:22px 34px 64px}.topbar{height:62px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{color:var(--ink);display:flex;align-items:center;gap:10px;text-decoration:none;font:700 20px 'Playfair Display',serif}.brand small{display:block;color:var(--muted);font:600 8px Manrope;letter-spacing:2px;text-transform:uppercase}.brand-mark{width:34px;height:34px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font:600 22px 'Playfair Display',serif}.apartment-tag{font:600 12px 'DM Mono',monospace;color:var(--muted)}.apartment-tag span{background:#79b494;border-radius:50%;width:7px;height:7px;display:inline-block;margin-right:6px}.text-button,.filter-button,.row-action{border:0;background:none;color:var(--green);font:700 12px Manrope;cursor:pointer}.text-button:hover{text-decoration:underline}.hero{display:grid;grid-template-columns:1.06fr .94fr;gap:75px;padding:78px 58px 72px;align-items:center}.eyebrow{color:var(--green);font:700 10px 'DM Mono',monospace;letter-spacing:1.5px;text-transform:uppercase;margin:0 0 12px}.hero h1{font:600 clamp(38px,4.2vw,62px)/1.04 'Playfair Display',serif;letter-spacing:-2px;margin:0}.hero h1 em{color:var(--green);font-style:italic}.intro{max-width:460px;line-height:1.7;color:var(--muted);font-size:14px;margin:22px 0 29px}.goal-card{position:relative;overflow:hidden;display:flex;gap:15px;align-items:center;background:var(--ink);border-radius:17px;padding:17px 21px;color:#fff;max-width:335px;box-shadow:var(--shadow)}.goal-icon{display:grid;place-items:center;border:1px solid rgba(255,255,255,.3);border-radius:12px;width:43px;height:43px;font-size:23px}.goal-card span,.goal-card small{display:block;color:#b7cec1;font:500 10px 'DM Mono',monospace}.goal-card strong{display:block;font-size:18px;margin:2px 0}.goal-orbit{width:85px;height:85px;border:1px solid rgba(146,215,173,.28);border-radius:50%;position:absolute;right:-27px}.plan-card{padding:17px;background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);transform:rotate(1.2deg)}.plan-header,.plan-caption{display:flex;justify-content:space-between;align-items:center}.plan-header{font:700 11px 'DM Mono',monospace;color:var(--muted);padding:0 3px 13px}.plan-header b{color:var(--green);font-size:15px}.plan-visual{overflow:hidden;position:relative;aspect-ratio:1.2;background:#e7e9e4;border-radius:13px}.plan-visual>img,.plan-reveal img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;filter:grayscale(1) contrast(.65) opacity(.52)}.plan-reveal{position:absolute;bottom:0;left:0;width:100%;height:0;overflow:hidden;transition:height .7s cubic-bezier(.2,.7,.2,1)}.plan-reveal img{position:absolute;bottom:0;filter:saturate(.95) contrast(1.05);height:var(--full-plan-height,100%);max-height:none}.plan-glow{position:absolute;bottom:0;left:0;right:0;height:4px;background:#62a17f;box-shadow:0 0 20px 5px rgba(72,151,107,.5);opacity:0;transition:.4s}.plan-caption{padding:13px 3px 1px;color:var(--muted);font:600 10px 'DM Mono',monospace}.plan-caption i{width:7px;height:7px;background:#62a17f;display:inline-block;border-radius:50%;margin-right:5px}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:52px}.summary-card{min-height:126px;padding:20px;border:1px solid var(--line);background:rgba(255,255,255,.42);border-radius:15px}.summary-card span{color:var(--muted);font-size:11px;font-weight:700}.summary-card strong{display:block;margin:11px 0 6px;font:600 23px 'Playfair Display',serif;letter-spacing:-.6px}.summary-card small{font:500 10px 'DM Mono',monospace;color:var(--muted)}.summary-card.accent{background:var(--light-green);border-color:#c8e1d1}.summary-card.accent strong{color:var(--green)}.summary-card.warning.is-overdue{background:var(--orange-soft);border-color:#f0cfb8}.summary-card.warning.is-overdue strong,.summary-card.warning.is-overdue small{color:var(--orange)}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:38px}.section-heading{display:flex;align-items:end;justify-content:space-between;padding-bottom:18px;border-bottom:1px solid var(--line)}h2{margin:0;font:600 29px 'Playfair Display',serif;letter-spacing:-.6px}.filter-button{background:#e4ede7;border-radius:20px;padding:7px 10px}.filter-button span{background:#fff;border-radius:12px;padding:2px 6px;margin-left:4px}.schedule-note{font-size:11px;line-height:1.5;color:var(--muted);margin:16px 0}.schedule-note code{font:10px 'DM Mono',monospace;color:var(--green)}.payments-list{display:grid;gap:7px}.payment-row{display:grid;grid-template-columns:32px 60px 1fr auto 113px;gap:13px;align-items:center;padding:11px 13px;border-radius:13px;background:rgba(255,255,255,.55);border:1px solid transparent;transition:.2s}.payment-row:hover{background:var(--card);border-color:var(--line)}.payment-row.is-paid{background:#eff8f2}.payment-toggle{width:22px;height:22px;border:1px solid #bdc9c1;border-radius:50%;color:transparent;background:#fff;cursor:pointer;font-weight:800}.payment-toggle span{font-size:13px}.is-paid .payment-toggle{background:var(--green);border-color:var(--green);color:#fff}.payment-date b{font:500 12px 'DM Mono',monospace;display:block}.payment-date small{font:500 9px 'DM Mono',monospace;color:var(--muted);text-transform:uppercase}.payment-main strong{font-size:12px;display:block}.payment-status{font:500 9px 'DM Mono',monospace;color:var(--muted)}.is-overdue .payment-status{color:var(--red)}.is-paid .payment-status{color:var(--green)}.payment-value{font:600 12px 'DM Mono',monospace;color:var(--ink);white-space:nowrap}.row-action{border:1px solid #b8d6c3;border-radius:8px;padding:7px 9px;font-size:10px}.is-paid .row-action{border-color:transparent;color:var(--muted)}.side-panel{display:grid;gap:15px;align-content:start}.timeline-card,.tip-card,.property-card{border-radius:16px;padding:21px;background:var(--card);border:1px solid var(--line)}.timeline-card{background:var(--ink);color:#fff;border:0}.timeline-card .eyebrow{color:#9ed3b1}.timeline-date{font:600 27px 'Playfair Display',serif}.timeline-card h3{font-size:13px;margin:14px 0 7px}.timeline-card p:not(.eyebrow){color:#b7cec1;font-size:11px;line-height:1.6;margin:0}.timeline-line{height:4px;background:#46685d;margin:20px 0 7px;border-radius:5px}.timeline-line span{display:block;width:0;height:100%;border-radius:5px;background:#9bd6ad;transition:width .5s}.timeline-labels{display:flex;justify-content:space-between;color:#9bb4a8;font:500 9px 'DM Mono',monospace}.tip-card{display:flex;gap:12px;background:#f5ead7;border-color:#ebdbc2}.tip-icon{color:var(--orange);font-size:20px}.tip-card strong,.property-card strong{font-size:12px}.tip-card p,.property-card p{font-size:11px;color:var(--muted);line-height:1.6;margin:5px 0 0}.property-card span{color:var(--muted);font:500 9px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:1px;display:block;margin-bottom:8px}.property-card{background:#e8f1ec}@media(max-width:850px){.app-shell{padding:15px}.hero{grid-template-columns:1fr;gap:35px;padding:52px 10px}.summary-grid{grid-template-columns:repeat(2,1fr)}.content-grid{grid-template-columns:1fr}.side-panel{grid-template-columns:repeat(3,1fr)}.topbar .text-button{display:none}}@media(max-width:560px){.topbar{height:54px}.apartment-tag{font-size:10px}.hero h1{font-size:39px}.summary-grid{grid-template-columns:1fr 1fr;gap:8px}.summary-card{padding:14px;min-height:105px}.summary-card strong{font-size:18px}.payment-row{grid-template-columns:27px 45px 1fr;gap:7px;padding:9px}.payment-value{grid-column:3}.row-action{display:none}.side-panel{grid-template-columns:1fr}.plan-card{transform:none}.goal-card{max-width:none}}

/* Kosmos palette and paid-date controls */
:root{--ink:#332452;--muted:#776d87;--paper:#f8f6fb;--card:#fffefe;--line:#e4deeb;--green:#563f8d;--light-green:#eee9f7;--orange:#b16b52;--orange-soft:#fff0ea;--red:#b85262;--shadow:0 18px 50px rgba(61,40,93,.09)}
.apartment-tag span{background:#9d85cf}.goal-card span,.goal-card small{color:#d9cfeb}.goal-orbit{border-color:rgba(209,191,239,.28)}.plan-glow{background:#8b70ba;box-shadow:0 0 20px 5px rgba(112,80,170,.45)}.plan-caption i{background:#8b70ba}.payment-row{grid-template-columns:32px 60px 1fr auto 115px 113px}.payment-row.is-paid{background:#f2edf9}.row-action{border-color:#cbbce3}.paid-date-input{display:grid;gap:3px;color:var(--muted);font:500 8px 'DM Mono',monospace;text-transform:uppercase}.paid-date-input input{min-width:0;border:1px solid #d8cdea;border-radius:6px;background:#fff;color:var(--ink);padding:5px;font:500 10px 'DM Mono',monospace}.paid-date-input input:disabled{background:transparent;border-color:transparent;color:transparent}.timeline-card .eyebrow{color:#c7b7e6}.timeline-card p:not(.eyebrow){color:#d9cfeb}.timeline-line{background:#6d5a90}.timeline-line span{background:#c6b4e8}.timeline-labels{color:#c7b9df}.property-card{background:#eee9f7}
@media(max-width:560px){.payment-row{grid-template-columns:27px 45px 1fr}.paid-date-input{grid-column:3}.row-action{display:none}}

.apartment-tag{display:flex;align-items:center;gap:6px}.apartment-tag em{padding-left:7px;border-left:1px solid #d7cde7;color:#9075bf;font:500 9px 'DM Mono',monospace;font-style:normal}.make-payment-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;width:max-content;padding:13px 19px;border-radius:10px;background:var(--green);box-shadow:0 11px 22px rgba(86,63,141,.2);color:#fff;text-decoration:none;font-size:12px;font-weight:800;transition:transform .2s,box-shadow .2s}.make-payment-button:hover{transform:translateY(-2px);box-shadow:0 15px 27px rgba(86,63,141,.28)}.make-payment-button span{font-size:18px;font-weight:400;line-height:.8}.schedule-tools{display:flex;align-items:center;justify-content:space-between;gap:18px}.schedule-tools .schedule-note{max-width:440px}.receipt-button{flex:none;display:inline-flex;align-items:center;gap:7px;padding:9px 11px;border:1px solid #cbbce3;border-radius:8px;color:var(--green);text-decoration:none;font-size:10px;font-weight:800}.receipt-button:hover{background:#f1ecf9}.receipt-button span{font-size:14px}@media(max-width:560px){.apartment-tag em{display:none}.schedule-tools{align-items:flex-start;flex-direction:column;gap:0}.receipt-button{margin:0 0 14px}.make-payment-button{width:100%}}

.balance-card{border:1px solid #ded5ec;border-radius:16px;padding:20px;background:#f3eef9}.balance-card .eyebrow{margin-bottom:15px}.balance-card>div{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-top:1px solid #ded5ec;font-size:11px}.balance-card>div span{color:var(--muted)}.balance-card>div strong{font:600 12px 'DM Mono',monospace}.balance-card strong.is-positive{color:#563f8d}.balance-card strong.is-negative{color:var(--red)}.balance-card small{display:block;margin-top:11px;color:var(--muted);font-size:10px;line-height:1.5}.payment-row.has-contributors{grid-template-columns:32px 60px minmax(115px,1fr) auto minmax(170px,1.3fr) 115px}.contributor-controls{display:flex;flex-wrap:wrap;gap:5px}.contributor-button,.cover-full-button{border:1px solid #d8cdea;border-radius:7px;background:#fff;color:var(--ink);cursor:pointer;font:600 9px Manrope;padding:6px 7px}.contributor-button{display:grid;text-align:left;gap:2px;min-width:76px}.contributor-button span{color:var(--muted);font-size:8px}.contributor-button strong{font:600 9px 'DM Mono',monospace}.contributor-button.is-covered{border-color:#9b84c7;background:#eee8f8;color:var(--green)}.cover-full-button{color:var(--green);background:transparent;font-size:8px}.payment-row.is-partial{background:#fbf8ee}.payment-row.is-partial .payment-status{color:#a16b27}@media(max-width:850px){.payment-row.has-contributors{grid-template-columns:28px 52px 1fr auto 160px}.payment-row.has-contributors .paid-date-input{grid-column:3}.payment-row.has-contributors .row-action{display:none}}@media(max-width:560px){.payment-row.has-contributors{grid-template-columns:27px 45px 1fr}.payment-row.has-contributors .payment-value,.payment-row.has-contributors .contributor-controls,.payment-row.has-contributors .paid-date-input{grid-column:3}.contributor-controls{margin-top:2px}}

.app-shell{max-width:1480px}.content-grid{grid-template-columns:minmax(0,1fr)}.side-panel{grid-template-columns:1.15fr 1fr 1fr}.payment-row.has-contributors{grid-template-columns:32px 60px minmax(130px,1fr) 130px minmax(360px,2.25fr) 115px}.contributor-controls{align-items:center}.custom-contribution{display:grid;gap:2px;min-width:82px;color:var(--muted);font:500 7px 'DM Mono',monospace;text-transform:uppercase}.custom-contribution input{width:100%;border:1px solid #d8cdea;border-radius:6px;background:#fff;color:var(--ink);padding:6px;font:500 9px 'DM Mono',monospace}.custom-contribution input:focus{outline:2px solid #d8cdea;border-color:#9b84c7}@media(max-width:850px){.side-panel{grid-template-columns:repeat(3,1fr)}.payment-row.has-contributors{grid-template-columns:28px 52px 1fr auto minmax(250px,1fr)}.payment-row.has-contributors .paid-date-input{grid-column:3}}@media(max-width:560px){.side-panel{grid-template-columns:1fr}.payment-row.has-contributors{grid-template-columns:27px 45px 1fr}.custom-contribution{min-width:90px}}

.payment-row.has-contributors{grid-template-columns:62px minmax(165px,.9fr) 135px minmax(510px,2.3fr) 170px;grid-template-areas:"date main value contributors paid";gap:20px;padding:17px 18px}.payment-row.has-contributors .payment-date{grid-area:date}.payment-row.has-contributors .payment-main{grid-area:main}.payment-row.has-contributors .payment-value{grid-area:value}.payment-row.has-contributors .contributor-controls{grid-area:contributors}.payment-row.has-contributors .paid-date-input{grid-area:paid}.payment-date b{font-size:16px}.payment-date small{font-size:10px;line-height:1.45}.payment-main strong{font-size:15px}.payment-status{font-size:11px;line-height:1.5}.payment-value{font-size:16px}.contributor-controls{display:grid;grid-template-columns:repeat(2,minmax(230px,1fr));gap:10px}.contributor-group{display:grid;grid-template-columns:minmax(124px,1fr) 105px auto;gap:7px;align-items:end;padding:9px;border:1px solid #e2dcef;border-radius:10px;background:#fff}.contributor-button{min-width:0;padding:8px 9px;font-size:11px}.contributor-button span{font-size:10px}.contributor-button strong{font-size:10px;line-height:1.3}.custom-contribution{min-width:0;font-size:9px}.custom-contribution input{padding:8px;font-size:11px}.cover-full-button{padding:8px 7px;font-size:9px;white-space:nowrap}.paid-date-input{font-size:9px}.paid-date-input input{padding:8px;font-size:12px}.separation-info{grid-column:1/-1;padding:10px 12px;border-radius:8px;background:#eee8f8;color:var(--green)}.separation-info strong,.separation-info span{display:block}.separation-info strong{font-size:12px}.separation-info span{margin-top:3px;color:var(--muted);font:500 10px 'DM Mono',monospace}@media(max-width:1050px){.payment-row.has-contributors{grid-template-columns:55px minmax(140px,1fr) 120px minmax(360px,1.7fr);grid-template-areas:"date main value paid" "date contributors contributors contributors"}.contributor-controls{grid-template-columns:repeat(2,minmax(210px,1fr))}}@media(max-width:650px){.payment-row.has-contributors{grid-template-columns:42px 1fr;grid-template-areas:"date main" "date value" "contributors contributors" "paid paid";gap:10px}.contributor-controls{grid-template-columns:1fr}.contributor-group{grid-template-columns:minmax(120px,1fr) 100px auto}.payment-row.has-contributors .paid-date-input{width:100%}}

.progress-insights{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(290px,.65fr);gap:16px;margin:0 0 38px}.progress-insights .timeline-card,.progress-insights .balance-card{height:100%}@media(max-width:700px){.progress-insights{grid-template-columns:1fr;margin-bottom:28px}}

.hero{padding-block:62px}.hero-next-payment{display:grid;grid-template-columns:auto 1fr;column-gap:10px;row-gap:2px;align-items:center;width:max-content;margin-top:15px;padding:10px 12px;border-left:3px solid #563f8d;background:rgba(255,255,255,.48);border-radius:0 9px 9px 0}.hero-next-payment span{grid-row:span 2;color:var(--muted);font:700 9px 'DM Mono',monospace;text-transform:uppercase}.hero-next-payment strong{font:700 16px 'Playfair Display',serif}.hero-next-payment small{color:var(--muted);font:500 9px 'DM Mono',monospace}.summary-grid{grid-template-columns:repeat(2,1fr);margin-bottom:28px}.progress-insights{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:34px}.payment-notice{display:flex;align-items:center;gap:8px;border:1px solid #cce6d8;background:#f0faf4;border-radius:20px;padding:7px 11px;color:#247d57}.payment-notice strong{font-size:11px}.payment-notice small{font:500 9px 'DM Mono',monospace}.payment-notice.is-overdue{border-color:#f0cfb8;background:var(--orange-soft);color:var(--orange)}.payment-row.is-paid{background:#edf9f1;border-color:#cfe9d9}.payment-row.is-paid .payment-status{color:#24865d}.payment-row.is-paid .paid-date-input input{border-color:#a9d7bc;background:#fff}.contributor-button.is-covered{border-color:#6fc090;background:#e7f7ed;color:#247d57}.plan-glow{background:#55ad79;box-shadow:0 0 20px 5px rgba(67,159,105,.38)}.plan-caption i{background:#55ad79}.celebration{position:fixed;z-index:20;left:50%;top:44%;width:1px;height:1px;pointer-events:none}.celebration i{position:absolute;width:9px;height:14px;opacity:0;transform:translate(-50%,-50%);border-radius:2px}.celebration.is-celebrating i{animation:confetti-pop .9s cubic-bezier(.16,.77,.31,1) var(--delay) both}@keyframes confetti-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}12%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--x)),160px) scale(.9) rotate(460deg)}}@media(max-width:700px){.summary-grid,.progress-insights{grid-template-columns:1fr}.hero-next-payment{width:100%}.payment-notice{margin-top:12px}.section-heading{align-items:flex-start;flex-direction:column}}
