*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:DM Sans,system-ui,-apple-system,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased;text-wrap:pretty;background:var(--bg);color:var(--t1)}:root{--bg: #f5f4f1;--surface: #ffffff;--surface2: #f0efe9;--border: #e8e7e2;--t1: #1a1916;--t2: #6b6a65;--t3: #a09f99;--accent: oklch(.52 .14 225);--accent-soft: oklch(.96 .03 225);--green: oklch(.52 .15 155);--green-soft: oklch(.95 .04 155);--amber: oklch(.65 .16 65);--red: oklch(.52 .18 20);--red-soft: oklch(.96 .04 20);--shadow: 0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 14px rgba(0,0,0,.08)}[data-theme=dark]{--bg: #111010;--surface: #1c1b18;--surface2: #232220;--border: #2e2d29;--t1: #e8e7e0;--t2: #8a8980;--t3: #55544e;--accent-soft: oklch(.22 .06 225);--green-soft: oklch(.2 .06 155);--red-soft: oklch(.22 .06 20);--shadow: 0 1px 3px rgba(0,0,0,.35);--shadow-md: 0 4px 14px rgba(0,0,0,.35)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}input,select,textarea,button{font-family:DM Sans,system-ui,-apple-system,sans-serif}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.app{display:flex;height:100vh;overflow:hidden;background:var(--bg)}.sidebar{position:fixed;top:0;left:0;height:100vh;width:220px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:100;transition:width .2s;overflow:hidden;flex-shrink:0}.sidebar--collapsed{width:56px}.sidebar-logo{display:flex;align-items:center;gap:10px;height:52px;padding:0 20px;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar--collapsed .sidebar-logo{padding:0;justify-content:center}.sidebar-logo-icon svg rect{transition:fill .2s}.sidebar-logo-text{min-width:0}.sidebar-logo-text strong{display:block;font-size:14px;font-weight:600;color:var(--t1);letter-spacing:-.01em;white-space:nowrap}.sidebar-logo-text span{display:block;font-size:11px;color:var(--t3);margin-top:-1px;white-space:nowrap}.sidebar-nav{flex:1;padding:4px 8px;overflow-y:auto}.sidebar-nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border-radius:6px;border:none;cursor:pointer;text-align:left;background:transparent;color:var(--t2);font-size:13px;font-weight:400;transition:background .15s,color .15s;margin-bottom:2px;white-space:nowrap}.sidebar--collapsed .sidebar-nav-item{justify-content:center;padding:10px 0}.sidebar-nav-item:hover{background:var(--surface2)}.sidebar-nav-item--active{background:var(--accent-soft);color:var(--accent);font-weight:600}.sidebar-nav-item--active:hover{background:var(--accent-soft)}.sidebar-nav-icon{flex-shrink:0;display:flex;align-items:center}.sidebar-footer{padding:8px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:2px}.sidebar-footer-btn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border-radius:6px;border:none;cursor:pointer;background:transparent;color:var(--t2);font-size:13px;transition:background .15s;white-space:nowrap}.sidebar--collapsed .sidebar-footer-btn{justify-content:center;padding:9px 0}.sidebar-footer-btn:hover{background:var(--surface2)}.app-main{flex:1;margin-left:220px;display:flex;flex-direction:column;height:100vh;overflow:hidden;transition:margin-left .2s}.app-main--collapsed{margin-left:56px}.app-topbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px;height:52px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.app-topbar-left{display:flex;align-items:center;gap:12px}.app-topbar-title{font-size:15px;font-weight:600;color:var(--t1)}.main-content{flex:1;padding:24px 28px;overflow-y:auto}.room-id-badge{font-family:monospace;font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--accent);background:var(--accent-soft);padding:2px 7px;border-radius:4px;border:1px solid color-mix(in oklch,var(--accent) 30%,transparent);-webkit-user-select:all;user-select:all}.btn-primary{background:var(--accent);color:#fff;border:none;padding:7px 14px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:opacity .15s;white-space:nowrap}.btn-primary:hover{opacity:.88}.btn-secondary{background:var(--surface);color:var(--t1);border:1px solid var(--border);padding:7px 14px;border-radius:6px;font-size:13px;font-weight:400;cursor:pointer;transition:background .15s;white-space:nowrap}.btn-secondary:hover{background:var(--surface2)}.btn-edit{background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in oklch,var(--accent) 25%,transparent);padding:4px 10px;border-radius:5px;font-size:12px;font-weight:500;cursor:pointer;transition:opacity .15s}.btn-edit:hover{opacity:.8}.btn-delete{background:var(--red-soft);color:var(--red);border:1px solid color-mix(in oklch,var(--red) 25%,transparent);padding:4px 10px;border-radius:5px;font-size:12px;font-weight:500;cursor:pointer;transition:opacity .15s}.btn-delete:hover{opacity:.8}.list-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:12px;flex-wrap:wrap}.list-controls{display:flex;align-items:center;gap:8px}.list-controls select{padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;color:var(--t1);background:var(--surface);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.list-controls select option{background:var(--surface);color:var(--t1)}.budget-summary{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 16px;box-shadow:var(--shadow)}.budget-label{font-size:11px;color:var(--t3);text-transform:uppercase;letter-spacing:.5px}.budget-label--upcoming{margin-left:4px}.budget-amount{font-size:18px;font-weight:700;color:var(--t1)}.budget-count{font-size:11px;color:var(--t2);background:var(--surface2);padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.star-rating{display:inline-flex;gap:2px}.star{font-size:14px;color:var(--border);line-height:1}.star.filled{color:var(--amber)}.star.clickable{cursor:pointer;transition:color .1s}.star.clickable:hover{color:var(--amber)}.empty-state{text-align:center;padding:60px 20px;color:var(--t3);font-size:14px;background:var(--surface);border-radius:10px;border:1px dashed var(--border)}.items-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:10px;overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow)}.items-table th{background:var(--surface2);padding:10px 16px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.7px;color:var(--t3);border-bottom:1px solid var(--border)}.items-table td{padding:12px 16px;border-bottom:1px solid var(--border);vertical-align:middle}.items-table tr:last-child td{border-bottom:none}.items-table tbody tr{transition:background .1s}.items-table tbody tr:hover{background:var(--surface2)}.item-name{font-weight:500;color:var(--t1);margin-bottom:2px}.item-details{font-size:12px;color:var(--t3);margin-top:3px;line-height:1.4}.item-link{font-size:12px;color:var(--accent);text-decoration:none;display:inline-block;margin-top:3px;opacity:.8}.item-link:hover{opacity:1;text-decoration:underline}.price-cell{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--t1)}.action-buttons{display:flex;gap:6px}.items-table tfoot td{background:var(--surface2);border-top:1px solid var(--border);font-size:13px}.col-check{width:40px;text-align:center}.purchase-checkbox{width:16px;height:16px;cursor:pointer;accent-color:var(--green)}.row-purchased td{opacity:.45}.row-purchased .item-name{text-decoration:line-through}.purchased-divider td{padding:5px 16px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--t3);background:var(--surface2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.phase-badge{display:inline-block;font-size:11px;font-weight:500;padding:2px 7px;border-radius:4px;white-space:nowrap}.timeline-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:10px;border:1px solid var(--border);box-shadow:var(--shadow)}.timeline-table{border-collapse:collapse;min-width:100%;background:var(--surface)}.timeline-table th{min-width:220px;padding:12px 14px;text-align:left;background:var(--surface2);border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:top}.timeline-table th:last-child{border-right:none}.month-header{display:flex;flex-direction:column;gap:2px}.month-name{font-size:13px;font-weight:600;color:var(--t1)}.month-total{font-size:12px;color:var(--accent);font-weight:600}.month-upcoming{font-size:11px;color:var(--t3)}.timeline-items-row td{vertical-align:top;padding:12px;border-right:1px solid var(--border)}.timeline-items-row td:last-child{border-right:none}.timeline-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:11px 12px;margin-bottom:8px;transition:box-shadow .15s;box-shadow:var(--shadow)}.timeline-card:last-child{margin-bottom:0}.timeline-card--purchased{opacity:.45}.timeline-card:hover{box-shadow:var(--shadow-md)}.timeline-purchased-tick{display:block;text-align:right;font-size:12px;font-weight:700;color:var(--green);margin-top:5px}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:4px;gap:8px}.card-name{font-weight:500;font-size:13px;color:var(--t1)}.card-price{font-size:13px;font-weight:600;color:var(--accent);margin-bottom:4px}.card-details{font-size:12px;color:var(--t3);margin-bottom:5px;line-height:1.4}.card-actions{display:flex;gap:6px;margin-top:8px}.phase-columns{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start}.phase-column{background:var(--surface);border:1px solid var(--border);border-radius:10px;min-width:220px;flex:1;overflow:hidden;box-shadow:var(--shadow)}.phase-column-header{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;border-bottom:1px solid var(--border);background:var(--surface2)}.phase-column-title{font-size:13px;font-weight:600;color:var(--t1)}.phase-column-amounts{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.phase-column-total{font-size:13px;font-weight:700;color:var(--accent)}.phase-column-upcoming{font-size:11px;color:var(--t3)}.phase-item-list{list-style:none;padding:6px 0}.phase-item{display:flex;justify-content:space-between;align-items:center;padding:7px 14px;gap:10px;transition:background .1s}.phase-item:hover{background:var(--surface2)}.phase-item-name{font-size:13px;color:var(--t1)}.phase-item-price{font-size:11px;font-weight:600;color:var(--t2);white-space:nowrap}.phase-item-purchased .phase-item-name{text-decoration:line-through;opacity:.45}.contributions-view .budget-summary{margin-bottom:20px}@media (max-width: 640px){.cv-summary-strip{grid-template-columns:1fr!important}}.cv-phases{display:flex;flex-direction:column;gap:16px}.cv-phase{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}.cv-phase-header{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;background:var(--surface2);border-bottom:1px solid var(--border);gap:10px}.cv-phase-title{font-size:13px;font-weight:600;color:var(--t1)}.cv-phase-totals{display:flex;gap:6px}.cv-badge{font-size:11px;font-weight:500;padding:2px 8px;border-radius:4px}.cv-badge-paid{background:var(--green-soft);color:var(--green);border:1px solid color-mix(in oklch,var(--green) 25%,transparent)}.cv-badge-upcoming{background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in oklch,var(--accent) 25%,transparent)}.cv-profile-rows{display:flex;flex-direction:column}.cv-profile-row{display:flex;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border);align-items:flex-start}.cv-profile-row:last-child{border-bottom:none}.cv-profile-meta{display:flex;align-items:center;gap:8px;min-width:120px;padding-top:2px}.cv-profile-name{font-size:13px;font-weight:500;color:var(--t1)}.cv-profile-detail{display:flex;gap:20px;flex:1;flex-wrap:wrap}.cv-section{display:flex;flex-direction:column;gap:3px;min-width:140px}.cv-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;margin-bottom:2px}.cv-section-label.paid{color:var(--green)}.cv-section-label.upcoming{color:var(--red)}.cv-item-list{list-style:none}.cv-item{display:flex;justify-content:space-between;gap:10px;padding:2px 0}.cv-item-name{font-size:12px;color:var(--t2)}.cv-item-amount{font-size:12px;font-weight:500;color:var(--t2);white-space:nowrap}.cv-subtotal{font-size:12px;font-weight:700;color:var(--green);padding-top:4px;border-top:1px solid var(--border);margin-top:2px}.cv-subtotal.upcoming{color:var(--red)}.contribution-avatar{width:26px;height:26px;border-radius:50%;background:var(--accent-soft);border:1px solid color-mix(in oklch,var(--accent) 25%,transparent);color:var(--accent);font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.paid-by-section{display:flex;flex-direction:column;gap:7px}.paid-by-header{display:flex;align-items:center;justify-content:space-between}.btn-equal-split{font-size:11px;font-weight:600;color:var(--accent);background:var(--accent-soft);border:none;border-radius:6px;padding:4px 10px;cursor:pointer;transition:opacity .15s}.btn-equal-split:hover{opacity:.8}.paid-by-label{font-size:11px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.5px}.paid-by-rows{display:flex;flex-direction:column;gap:5px}.paid-by-row{display:flex;align-items:center;gap:8px}.paid-by-name{flex:1;font-size:13px;color:var(--t1)}.paid-by-amount{width:100px;padding:6px 9px;border:1px solid var(--border);border-radius:5px;font-size:13px;color:var(--t1);background:var(--surface);font-family:inherit}.paid-by-amount:focus{outline:2px solid var(--accent);outline-offset:1px}.btn-add-profile{background:none;border:1px dashed var(--border);border-radius:5px;padding:5px 10px;font-size:12px;color:var(--t3);cursor:pointer;transition:all .15s;text-align:left}.btn-add-profile:hover{border-color:var(--accent);color:var(--accent)}.new-profile-row{display:flex;gap:5px;align-items:center}.new-profile-row input{flex:1;padding:6px 9px;border:1px solid var(--border);border-radius:5px;font-size:13px;color:var(--t1);background:var(--surface);font-family:inherit}.calendar-view{display:flex;gap:16px;align-items:flex-start;height:100%}.calendar-panel{flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}.calendar-nav{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--surface2);border-bottom:1px solid var(--border)}.cal-month-label{font-size:14px;font-weight:600;color:var(--t1)}.cal-nav-btn{background:var(--surface);border:1px solid var(--border);border-radius:5px;color:var(--t2);font-size:16px;line-height:1;width:28px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.cal-nav-btn:hover{background:var(--surface2)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:96px}.cal-day-header{padding:7px 4px;text-align:center;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--t3);border-bottom:1px solid var(--border);border-right:1px solid var(--border)}.cal-day-header:last-child{border-right:none}.cal-cell{height:96px;padding:7px 8px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);display:flex;flex-direction:column;gap:3px;overflow:hidden}.cal-cell:nth-child(7n){border-right:none}.cal-cell--empty{background:transparent}.cal-cell--today{background:var(--accent-soft)}.cal-date-num{font-size:12px;font-weight:500;color:var(--t2);line-height:1;margin-bottom:2px}.cal-date-num--today{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:var(--accent);color:#fff;border-radius:50%;font-size:11px;font-weight:600}.cal-cell-items{display:flex;flex-direction:column;gap:3px}.cal-todo-chip{background:var(--accent-soft);border:1px solid color-mix(in oklch,var(--accent) 25%,transparent);border-radius:3px;padding:2px 5px;font-size:11px;color:var(--accent);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-payment-chip{background:var(--surface2);border:1px solid var(--border);border-radius:3px;padding:3px 5px;display:flex;flex-direction:column;gap:1px}.cal-payment-chip--done{opacity:.4}.cal-payment-chip--clickable{cursor:pointer;text-align:left;width:100%}.cal-payment-chip--clickable:hover{border-color:var(--accent);background:var(--accent-soft)}.cal-payment-name{font-size:11px;font-weight:500;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-payment-price{font-size:10px;color:var(--accent);font-weight:500}.cal-overflow-btn{background:none;border:none;padding:1px 0;font-size:10px;font-weight:500;color:var(--t3);cursor:pointer;text-align:left;transition:color .15s;flex-shrink:0}.cal-overflow-btn:hover{color:var(--accent)}.cal-todo-chip--full,.cal-payment-chip--full{white-space:normal}.cal-day-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:150;padding:20px}.cal-day-modal{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;max-width:340px;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-md)}.cal-day-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--border)}.cal-day-modal-title{font-size:14px;font-weight:600;color:var(--t1)}.cal-day-modal-body{padding:12px 16px;display:flex;flex-direction:column;gap:12px}.cal-day-modal-section{display:flex;flex-direction:column;gap:5px}.cal-day-modal-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--t3);margin-bottom:1px}.cal-right-panel{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:14px}.cal-overview-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}.cal-overview-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--surface2);border-bottom:1px solid var(--border)}.cal-overview-title{font-size:13px;font-weight:600;color:var(--t1)}.cal-overview-empty{padding:14px;font-size:12px;color:var(--t3);text-align:center}.cal-overview-list{list-style:none;max-height:200px;overflow-y:auto}.cal-overview-row{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 14px;background:none;border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;transition:background .1s}.cal-overview-list li:last-child .cal-overview-row{border-bottom:none}.cal-overview-row:hover{background:var(--surface2)}.cal-overview-row--active{background:var(--accent-soft)}.cal-overview-row--active .cal-overview-month{color:var(--accent)}.cal-overview-month{font-size:12px;font-weight:500;color:var(--t1)}.cal-overview-amounts{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.cal-overview-total{font-size:12px;font-weight:600;color:var(--t1)}.cal-overview-upcoming{font-size:10px;color:var(--t3)}.todo-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;flex-shrink:0}.todo-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--surface2);border-bottom:1px solid var(--border)}.todo-panel-title{font-size:13px;font-weight:600;color:var(--t1)}.todo-add-form{display:flex;flex-direction:column;gap:7px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface2)}.todo-form-input,.todo-form-select{padding:7px 9px;border:1px solid var(--border);border-radius:5px;font-size:13px;color:var(--t1);background:var(--surface);font-family:inherit;width:100%;box-sizing:border-box}.todo-form-input::placeholder{color:var(--t3)}.todo-form-select option{background:var(--surface);color:var(--t1)}.todo-form-submit{width:100%}.todo-list{list-style:none;overflow-y:auto;padding:4px 0}.todo-empty{padding:20px 14px;text-align:center;font-size:12px;color:var(--t3)}.todo-item{display:flex;align-items:flex-start;gap:6px;padding:8px 12px;border-bottom:1px solid var(--border);transition:background .1s}.todo-item:last-child{border-bottom:none}.todo-item:hover{background:var(--surface2)}.todo-item-body{display:flex;align-items:flex-start;gap:6px;flex:1;min-width:0}.todo-urgency{font-size:11px;flex-shrink:0;padding-top:1px}.todo-desc{font-size:13px;color:var(--t1);line-height:1.4;word-break:break-word}.todo-date{font-size:11px;color:var(--t3);white-space:nowrap;flex-shrink:0;padding-top:2px}.todo-delete{background:none;border:none;color:var(--t3);font-size:15px;line-height:1;cursor:pointer;padding:0 2px;flex-shrink:0;transition:color .15s}.todo-delete:hover{color:var(--red)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-md)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:18px 20px 0;margin-bottom:16px}.modal-header h2{font-size:16px;font-weight:600;color:var(--t1)}.close-btn{background:var(--surface2);border:1px solid var(--border);border-radius:5px;font-size:13px;cursor:pointer;color:var(--t2);padding:4px 8px;line-height:1;transition:background .15s}.close-btn:hover{background:var(--border);color:var(--t1)}.modal form{padding:0 20px 20px;display:flex;flex-direction:column;gap:13px}.modal label{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.5px}.modal input:not(.paid-by-amount),.modal textarea{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px;color:var(--t1);background:var(--surface);font-family:inherit;width:100%;transition:border-color .15s}.modal input:not(.paid-by-amount)::placeholder,.modal textarea::placeholder{color:var(--t3)}.modal input:not(.paid-by-amount):focus,.modal textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.modal textarea{resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}.data-menu{position:relative}.data-menu-trigger{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px 11px;font-size:13px;font-weight:400;color:var(--t1);cursor:pointer;transition:background .15s;white-space:nowrap}.data-menu-trigger:hover{background:var(--surface2)}.data-menu-dropdown{position:fixed;top:52px;right:16px;min-width:170px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:5px;box-shadow:var(--shadow-md);z-index:200}.data-menu-section{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--t3);padding:5px 8px 3px}.data-menu-item{display:block;width:100%;text-align:left;background:none;border:none;padding:7px 9px;font-size:13px;color:var(--t1);cursor:pointer;border-radius:5px;transition:background .1s}.data-menu-item:hover{background:var(--surface2)}.data-menu-divider{height:1px;background:var(--border);margin:3px 5px}.data-toast{position:absolute;top:calc(100% + 5px);right:0;background:var(--green);color:#fff;font-size:12px;font-weight:500;padding:6px 12px;border-radius:6px;white-space:nowrap;box-shadow:var(--shadow);animation:toast-in .2s ease;z-index:201}.data-toast-error{background:var(--red)}@keyframes toast-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.landing{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.landing-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:40px 36px;width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:var(--shadow-md)}.landing-logo{font-size:40px;line-height:1}.landing-title{font-size:22px;font-weight:700;color:var(--t1);margin:0}.landing-subtitle{font-size:13px;color:var(--t3);margin:0}.landing-input-row{display:flex;gap:7px;width:100%;margin-top:6px}.landing-input{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:7px;padding:10px 13px;color:var(--t1);font-size:15px;font-family:monospace;letter-spacing:.08em;outline:none;transition:border-color .15s}.landing-input::placeholder{color:var(--t3);font-family:system-ui;letter-spacing:0}.landing-input:focus{border-color:var(--accent)}.landing-btn-generate{background:var(--surface2);border:1px solid var(--border);border-radius:7px;color:var(--t2);font-size:18px;width:42px;cursor:pointer;transition:background .15s;flex-shrink:0}.landing-btn-generate:hover{background:var(--border);color:var(--t1)}.landing-actions{display:flex;gap:8px;width:100%}.landing-btn-secondary,.landing-btn-primary{flex:1;padding:10px;border-radius:7px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:opacity .15s}.landing-btn-secondary{background:var(--surface2);border:1px solid var(--border);color:var(--t1)}.landing-btn-secondary:hover:not(:disabled){background:var(--border)}.landing-btn-primary{background:var(--accent);color:#fff}.landing-btn-primary:hover:not(:disabled){opacity:.88}.landing-btn-secondary:disabled,.landing-btn-primary:disabled{opacity:.4;cursor:not-allowed}.landing-status{font-size:13px;color:var(--red);text-align:center;margin:0}.landing-hint{font-size:12px;color:var(--t3);text-align:center;line-height:1.5;margin:0}.sync-loading{display:flex;align-items:center;justify-content:center;min-height:200px;font-size:14px;color:var(--t3)}*{min-width:0}@media (max-width: 640px){.sidebar{display:none}.app-main{margin-left:0!important}.app-topbar{padding:0 16px}.topbar-theme-toggle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--t2);cursor:pointer}.topbar-theme-toggle:hover{background:var(--surface2)}.main-content{padding:14px 16px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);z-index:100;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px;border:none;background:transparent;color:var(--t3);font-size:10px;cursor:pointer;transition:color .15s}.mobile-nav-item--active{color:var(--accent)}.main-content{padding-bottom:calc(70px + env(safe-area-inset-bottom))}.items-table,.items-table tbody{display:block;width:100%}.items-table thead{display:none}.items-table tfoot{display:block}.items-table tfoot tr{display:flex;justify-content:space-between;padding:9px 13px;background:var(--surface2);border-radius:8px;margin-top:5px}.items-table tfoot td{display:block;padding:0;border:none}.items-table tbody tr{display:grid;grid-template-columns:28px 1fr auto;grid-template-rows:auto auto auto;gap:3px 7px;background:var(--surface);border:1px solid var(--border)!important;border-radius:8px;padding:11px;margin-bottom:7px;width:100%;box-sizing:border-box;box-shadow:var(--shadow)}.items-table tbody tr.row-purchased{opacity:.5}.items-table td{display:block;padding:0;border:none!important;overflow:hidden;text-overflow:ellipsis}.col-check{grid-column:1;grid-row:1;display:flex;align-items:flex-start;padding-top:2px;width:auto;text-align:left}.items-table tbody tr td:nth-child(2){grid-column:2;grid-row:1}.items-table tbody tr td:nth-child(3){grid-column:3;grid-row:1;text-align:right}.items-table tbody tr td:nth-child(4){grid-column:2;grid-row:2;font-size:11px;color:var(--t3)}.items-table tbody tr td:nth-child(5){grid-column:3;grid-row:2;text-align:right;font-size:13px}.items-table tbody tr td:nth-child(6){display:none}.items-table tbody tr td:nth-child(7){grid-column:1 / -1;grid-row:3;padding-top:8px;border-top:1px solid var(--border)!important;margin-top:3px}.action-buttons{justify-content:flex-end}.items-table tbody tr.purchased-divider{display:block;width:100%;padding:0;background:none;border:none!important;border-radius:0;margin-bottom:3px}.items-table tbody tr.purchased-divider td{display:block;width:100%;box-sizing:border-box;border-radius:6px}.timeline-table th{min-width:clamp(150px,55vw,210px)}.phase-columns{flex-direction:column}.phase-column{min-width:unset;width:100%}.calendar-view{flex-direction:column}.calendar-panel{width:100%;flex:none;align-self:stretch}.cal-right-panel{width:100%}.calendar-grid{grid-auto-rows:60px}.cal-cell{min-height:unset;height:60px;padding:4px 5px;overflow:hidden}.cv-profile-row{flex-direction:column;gap:8px}.cv-profile-detail{flex-direction:column;gap:10px}.cv-section{min-width:unset;width:100%}.cv-phase-totals{flex-direction:column;align-items:flex-start}.modal-backdrop{align-items:flex-end;padding:0}.modal{max-width:100%;border-radius:14px 14px 0 0;max-height:92vh}.modal input[type=date]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%}.paid-by-row{flex-wrap:wrap}.paid-by-amount{width:100%}.list-toolbar{flex-direction:column;align-items:stretch;gap:9px}.budget-summary{flex-wrap:wrap;gap:7px 10px;padding:9px 13px}.budget-amount{font-size:16px}.list-controls{justify-content:space-between}}@media (min-width: 641px){.mobile-nav,.topbar-theme-toggle{display:none}}
