:root{--maroon:#5B3A4C;--maroon-deep:#2E2029;--gold:#C79878;--gold-soft:#E3B9A0;--blush:#F3D9CE;--cream:#FBF1EA;--ivory:#FFFBF7;--charcoal:#2A2530;--line: rgba(199,152,120,.35)}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--cream);color:var(--charcoal);font-family:Jost,sans-serif;font-weight:300;line-height:1.6}h1,h2,h3,h4{font-family:Cormorant Garamond,serif;font-weight:500}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}.portal-shell{min-height:100vh;display:flex;flex-direction:column}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--maroon) 0%,var(--maroon-deep) 100%);padding:24px}.auth-card{background:var(--ivory);max-width:420px;width:100%;padding:44px 36px;border:1px solid var(--line)}.auth-card h1{font-size:1.8rem;color:var(--maroon-deep);text-align:center}.auth-card .brand-sub{text-align:center;text-transform:uppercase;letter-spacing:.2em;font-size:.7rem;color:var(--gold);margin-top:6px;margin-bottom:28px}.field{margin-bottom:16px}.field label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--maroon-deep);margin-bottom:6px}.field input{width:100%;padding:12px 14px;border:1px solid var(--line);background:var(--ivory);font-size:.95rem;color:var(--charcoal)}.field input:focus{outline:2px solid var(--gold);outline-offset:1px}.btn{display:inline-block;width:100%;padding:13px;border:1px solid var(--maroon);background:var(--maroon);color:var(--ivory);text-transform:uppercase;letter-spacing:.1em;font-size:.82rem;text-align:center;transition:.2s}.btn:hover{background:var(--maroon-deep)}.btn-outline{background:transparent;color:var(--maroon);border-color:var(--maroon)}.btn-outline:hover{background:var(--maroon);color:var(--ivory)}.auth-toggle{text-align:center;margin-top:18px;font-size:.85rem;color:#7a6a63}.auth-toggle a{color:var(--maroon);cursor:pointer;text-decoration:underline}.auth-error{background:#fbeceb;border:1px solid #e3a8a3;color:#8a3a34;padding:10px 14px;font-size:.85rem;margin-bottom:16px}.topbar{background:var(--maroon);color:var(--ivory);padding:16px 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.topbar .brand{font-family:Cormorant Garamond,serif;font-size:1.4rem}.topbar .brand span{color:var(--gold)}.topbar .who{display:flex;align-items:center;gap:16px;font-size:.85rem}.topbar .signout{background:none;border:1px solid var(--gold);color:var(--gold);padding:7px 16px;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.topbar .signout:hover{background:var(--gold);color:var(--maroon-deep)}.layout{display:flex;flex:1;min-height:0}.sidebar{width:220px;background:var(--ivory);border-right:1px solid var(--line);padding:24px 0;flex-shrink:0}.sidebar button{display:block;width:100%;text-align:left;padding:12px 24px;background:none;border:none;font-size:.9rem;color:var(--charcoal);border-left:3px solid transparent}.sidebar button:hover{background:var(--blush)}.sidebar button.active{border-left-color:var(--gold);background:var(--blush);color:var(--maroon-deep);font-weight:500}.main{flex:1;padding:36px 40px;overflow-y:auto}.main h2{font-size:1.6rem;color:var(--maroon-deep);margin-bottom:24px}.card{background:var(--ivory);border:1px solid var(--line);padding:24px;margin-bottom:16px}.card h3{font-size:1.15rem;color:var(--maroon-deep);margin-bottom:6px}.card .meta{font-size:.8rem;color:#8a7267;margin-bottom:12px}.badge{display:inline-block;padding:4px 12px;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;border-radius:2px}.badge-paid{background:#e3f0e5;color:#2f6b3a}.badge-unpaid{background:#fbeceb;color:#8a3a34}.badge-overdue{background:#f9dcb0;color:#8a5a15}.badge-planning{background:#eee3f0;color:#6b3a8a}.badge-confirmed{background:#e3f0e5;color:#2f6b3a}.badge-completed{background:#e0e0e0;color:#555}.empty-state{text-align:center;padding:60px 20px;color:#9a897f;font-size:.95rem}.timeline-item{display:flex;gap:16px;padding:14px 0;border-top:1px solid #f0e6dc}.timeline-item:first-child{border-top:none}.timeline-item .time{min-width:80px;font-family:Cormorant Garamond,serif;color:var(--gold);font-size:1.1rem}.timeline-item .title{font-weight:500;color:var(--maroon-deep)}.timeline-item .desc{font-size:.85rem;color:#7a6a63;margin-top:2px}.message-thread{display:flex;flex-direction:column;gap:12px;margin-bottom:20px;max-height:420px;overflow-y:auto}.message-bubble{max-width:70%;padding:12px 16px;font-size:.9rem}.message-bubble.mine{align-self:flex-end;background:var(--maroon);color:var(--ivory)}.message-bubble.theirs{align-self:flex-start;background:var(--blush);color:var(--charcoal)}.message-bubble .sender{font-size:.7rem;opacity:.7;margin-bottom:4px;text-transform:uppercase;letter-spacing:.05em}.message-form{display:flex;gap:10px}.message-form textarea{flex:1;padding:12px;border:1px solid var(--line);background:var(--ivory);resize:none;font-size:.9rem}.doc-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-top:1px solid #f0e6dc}.doc-row:first-child{border-top:none}.upload-zone{border:2px dashed var(--line);padding:30px;text-align:center;margin-bottom:20px;color:#8a7267;font-size:.9rem}.select-input{padding:10px 14px;border:1px solid var(--line);background:var(--ivory);font-size:.9rem;width:100%;max-width:400px}.loading{text-align:center;padding:60px;color:#8a7267}@media (max-width:800px){.layout{flex-direction:column}.sidebar{width:100%;display:flex;overflow-x:auto;padding:12px}.sidebar button{white-space:nowrap;border-left:none;border-bottom:3px solid transparent}.sidebar button.active{border-left:none;border-bottom-color:var(--gold)}.main{padding:24px 20px}}
