:root{--primary: #0f1419;--secondary: #4a5568;--tertiary: #2c5ef5;--tertiary-hover: #1f4ad6;--tertiary-soft: rgba(44, 94, 245, .1);--neutral: #f1f3f5;--surface: #ffffff;--on-primary: #ffffff;--line: #e6e8eb;--line-strong: #d8dce0;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--s-sm: 8px;--s-md: 16px;--s-lg: 32px;--font-display: "Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-body: "Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;font-family:var(--font-body);font-size:.95rem;line-height:1.55;color:var(--primary);color-scheme:light;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;background:var(--neutral);color:var(--primary)}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em;font-weight:600;color:var(--primary);margin:0}h1{font-size:2.25rem;line-height:1.15;letter-spacing:-.025em}h2{font-size:1.5rem;line-height:1.2}h3{font-size:1.0625rem;line-height:1.3}p{margin:0}a{color:var(--tertiary);text-decoration:none;text-underline-offset:2px}a:hover{text-decoration:underline}a.btn,a.btn:hover{text-decoration:none}label{display:block;font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.04em;text-transform:uppercase;color:var(--secondary);margin-bottom:6px}button,.btn{background:var(--tertiary);color:var(--on-primary);border:1px solid var(--tertiary);padding:12px 22px;border-radius:999px;font-family:var(--font-body);font-weight:500;font-size:.875rem;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}button:hover,.btn:hover{background:var(--tertiary-hover);border-color:var(--tertiary-hover)}button:disabled,.btn:disabled{background:var(--neutral);color:var(--secondary);border-color:var(--line-strong);cursor:not-allowed}.btn.btn-grad{background:linear-gradient(135deg,var(--tertiary) 0%,var(--tertiary-hover) 100%);border-color:transparent;color:var(--on-primary);box-shadow:0 1px #ffffff2e inset,0 6px 16px -8px #2c5ef58c}.btn.btn-grad:hover{background:linear-gradient(135deg,var(--tertiary-hover) 0%,#16329a 100%);border-color:transparent}button.ghost,.btn.ghost{background:transparent;color:var(--primary);border:1px solid var(--line-strong)}button.ghost:hover,.btn.ghost:hover{background:var(--surface);border-color:var(--secondary)}button.ghost:disabled,.btn.ghost:disabled{color:var(--secondary);background:transparent;border-color:var(--line)}input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line-strong);border-radius:var(--r-md);font-size:.9rem;font-family:var(--font-body);background:var(--surface);color:var(--primary);transition:border-color .12s ease,box-shadow .12s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--tertiary);box-shadow:0 0 0 3px var(--tertiary-soft)}input[type=file]{padding:8px}.field{margin-bottom:var(--s-md)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px;margin-bottom:var(--s-md)}.layout{max-width:1080px;margin:0 auto;padding:var(--s-lg)}.nav{display:flex;justify-content:space-between;align-items:center;padding:16px 32px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:600;font-size:1.0625rem;letter-spacing:-.02em;color:var(--primary);text-decoration:none}.brand:hover{text-decoration:none}.brand svg{color:var(--tertiary)}.muted{color:var(--secondary);font-size:.8125rem}.eyebrow{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--secondary);margin-bottom:4px}table{width:100%;border-collapse:collapse;font-size:.875rem}th,td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line)}th{font-family:var(--font-mono);font-weight:500;color:var(--secondary);font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;background:var(--neutral);border-bottom-color:var(--line-strong)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-family:var(--font-mono);font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.badge.draft{background:var(--neutral);color:var(--secondary)}.badge.sent{background:var(--tertiary-soft);color:var(--tertiary)}.badge.paid{background:#e8f5ee;color:#1f7a3d}.badge.failed{background:#fceaea;color:#b42318}.row-h{display:flex;gap:var(--s-sm);align-items:center}.spacer{flex:1}.error{color:#b42318;font-size:.8125rem}.success{color:#1f7a3d;font-size:.8125rem}.file-button{display:inline-flex;align-items:center;gap:8px;background:var(--tertiary);color:var(--on-primary);padding:12px 22px;border-radius:999px;font-family:var(--font-body);font-weight:500;font-size:.875rem;letter-spacing:normal;text-transform:none;margin-bottom:0;cursor:pointer;border:1px solid var(--tertiary);transition:background .12s ease,border-color .12s ease,color .12s ease}.file-button:hover{background:var(--tertiary-hover);border-color:var(--tertiary-hover)}.file-button.ghost{background:transparent;color:var(--primary);border-color:var(--line-strong)}.file-button.ghost:hover{background:var(--surface);border-color:var(--secondary)}.file-button.disabled{opacity:.6;cursor:not-allowed}.file-button input[type=file]{display:none}.step-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:var(--neutral);color:var(--secondary);font-family:var(--font-mono);font-size:.6875rem;margin-right:10px}.step-num.active{background:var(--primary);color:var(--on-primary)}details>summary{cursor:pointer;color:var(--secondary);font-size:.8125rem}details>summary:hover{color:var(--primary)}.chat-layout{max-width:none;padding:0;height:calc(100vh - 64px)}.chat-shell{display:grid;grid-template-columns:340px 1fr;height:100%;border-top:1px solid var(--line)}.chat-sidebar{border-right:1px solid var(--line);background:var(--surface);overflow-y:auto}.chat-sidebar-header{padding:20px 20px 12px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface)}.chat-list{list-style:none;margin:0;padding:0}.chat-list-item{padding:14px 18px;border-bottom:1px solid var(--line);cursor:pointer;display:flex;flex-direction:column;gap:4px}.chat-list-item:hover{background:var(--neutral)}.chat-list-item.active{background:var(--tertiary-soft)}.chat-list-item.unread .chat-list-name{font-weight:700}.chat-list-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.chat-list-name{font-weight:500}.chat-list-time,.chat-list-meta{font-size:12px}.chat-list-snippet{font-size:13px;color:var(--secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-list-badges{display:flex;gap:6px;margin-top:4px;flex-wrap:wrap}.badge{display:inline-block;font-size:11px;padding:2px 7px;border-radius:999px;font-weight:500}.badge-red{background:#fee2e2;color:#b91c1c}.badge-blue{background:var(--tertiary-soft);color:var(--tertiary)}.badge-muted{background:var(--neutral);color:var(--secondary)}.chat-main{display:flex;flex-direction:column;overflow:hidden;background:var(--neutral)}.chat-empty{display:flex;align-items:center;justify-content:center;height:100%}.chat-header{display:flex;align-items:center;gap:12px;padding:16px 24px;border-bottom:1px solid var(--line);background:var(--surface)}.banner{padding:12px 24px;font-size:13px}.banner-warning{background:#fef3c7;color:#92400e;border-bottom:1px solid var(--line)}.chat-transcript{padding:24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:12px}.chat-bubble{max-width:70%;padding:10px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--line);align-self:flex-start}.chat-bubble-user{align-self:flex-end;background:var(--tertiary);color:var(--on-primary);border-color:transparent}.chat-bubble-user .muted{color:#ffffffb3}.chat-bubble-content{white-space:pre-wrap;word-break:break-word}.chat-bubble-tools{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px}.chat-tool-chip{font-size:11px;padding:2px 6px;border-radius:6px;background:#0000000f;color:inherit}.chat-bubble-user .chat-tool-chip{background:#ffffff26}.chat-bubble-time{font-size:11px;margin-top:4px}.building-tabs{margin-bottom:var(--s-md)}.building-tabs-list{display:flex;gap:4px;list-style:none;margin:0;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:999px;width:fit-content}.building-tab{display:inline-flex;align-items:center;padding:8px 18px;border-radius:999px;font-family:var(--font-body);font-size:.875rem;font-weight:500;color:var(--secondary);text-decoration:none;cursor:pointer;transition:background .12s ease,color .12s ease}.building-tab:hover{color:var(--primary);background:var(--neutral);text-decoration:none}.building-tab[data-active],.building-tab.building-tab-active,.building-tab[data-active]:hover,.building-tab.building-tab-active:hover{background:var(--primary);color:var(--on-primary)}.building-tab:focus-visible{outline:none;box-shadow:0 0 0 3px var(--tertiary-soft)}.select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:11px 12px;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);color:var(--primary);font-family:var(--font-body);font-size:.9rem;line-height:1.2;text-align:left;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.select-trigger:hover{border-color:var(--secondary)}.select-trigger:focus,.select-trigger[data-state=open]{outline:none;border-color:var(--tertiary);box-shadow:0 0 0 3px var(--tertiary-soft)}.select-trigger[data-placeholder]{color:var(--secondary)}.select-trigger:disabled{background:var(--neutral);color:var(--secondary);cursor:not-allowed}.select-trigger-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-trigger-icon{color:var(--secondary);display:inline-flex}.select-content{min-width:var(--radix-select-trigger-width);max-height:var(--radix-select-content-available-height);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:0 8px 24px #0f141914,0 2px 6px #0f14190a;overflow:hidden;z-index:50}.select-viewport{padding:4px}.select-scroll{display:flex;align-items:center;justify-content:center;height:22px;background:var(--surface);color:var(--secondary);cursor:default}.select-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;font-size:.9rem;color:var(--primary);border-radius:var(--r-sm);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none}.select-item[data-highlighted]{background:var(--neutral)}.select-item[data-state=checked]{color:var(--primary);font-weight:500}.select-item[data-disabled]{color:var(--secondary);cursor:not-allowed}.select-item-indicator{display:inline-flex;color:var(--tertiary)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f141973;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:60;animation:dialogOverlayIn .14s ease-out}.dialog-content{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(92vw,440px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 24px 60px #0f14192e,0 4px 12px #0f141914;padding:24px;z-index:61;animation:dialogContentIn .16s ease-out}.dialog-content:focus{outline:none}.dialog-content-wide{width:min(94vw,560px)}.receipt-detail-form{display:flex;flex-direction:column;gap:14px;margin-bottom:20px}.receipt-detail-field{display:flex;flex-direction:column;gap:6px}.receipt-detail-field input{width:100%}.receipt-detail-label{font-size:.8rem;color:var(--secondary);text-transform:uppercase;letter-spacing:.04em}.row-actions{display:inline-flex;align-items:center;gap:4px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:4px 6px;line-height:0}.dialog-title{font-family:var(--font-display);font-size:1.125rem;font-weight:600;letter-spacing:-.02em;margin-bottom:8px}.dialog-description{color:var(--secondary);font-size:.9rem;margin-bottom:20px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}button.danger{background:#b42318;border-color:#b42318;color:var(--on-primary)}button.danger:hover{background:#8e1c13;border-color:#8e1c13}.month-picker{margin-bottom:20px}.month-picker-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.month-picker-year{font-family:var(--font-display);font-size:1rem;font-weight:600;letter-spacing:-.01em}button.month-picker-nav{width:32px;height:32px;padding:0;border-radius:999px;font-size:1.125rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}.month-picker-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}button.month-picker-cell{background:transparent;color:var(--primary);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:10px 0;font-size:.875rem;font-weight:500}button.month-picker-cell:hover{background:var(--surface);border-color:var(--secondary)}button.month-picker-cell.selected{background:var(--tertiary);border-color:var(--tertiary);color:var(--on-primary)}button.month-picker-cell.selected:hover{background:var(--tertiary-hover);border-color:var(--tertiary-hover)}@keyframes dialogOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes dialogContentIn{0%{opacity:0;transform:translate(-50%,-48%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.layout-wide{max-width:1240px}.flow-steps{display:flex;flex-wrap:wrap;gap:8px 24px;list-style:none;margin:0 0 var(--s-md);padding:0;font-size:.8125rem;color:var(--secondary)}.flow-steps li{display:inline-flex;align-items:center}.flow-steps li.current{color:var(--primary);font-weight:500}.flow-steps .step-num{margin-right:8px}.flow-steps li.done .step-num{background:var(--tertiary-soft);color:var(--tertiary)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--s-md);margin-bottom:var(--s-md)}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 20px}.stat-value{font-family:var(--font-display);font-size:1.5rem;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.dropzone{border:2px dashed var(--line-strong);border-radius:var(--r-md);padding:24px;text-align:center;cursor:pointer;background:var(--neutral);transition:border-color .12s ease,background .12s ease}.dropzone:hover{border-color:var(--secondary)}.dropzone-active{border-color:var(--tertiary);background:var(--tertiary-soft)}.upload-queue{list-style:none;margin:12px 0 0;padding:0;font-size:.8125rem}.upload-queue li{display:flex;gap:12px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--line)}.upload-queue li:last-child{border-bottom:none}.upload-queue-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-bars{display:grid;gap:8px;margin-top:12px}.category-bar{display:grid;grid-template-columns:minmax(120px,200px) 1fr 110px 48px;gap:12px;align-items:center;font-size:.8125rem}.category-bar-track{height:8px}.category-bar-fill{height:100%;min-width:2px;border-radius:0 4px 4px 0;background:var(--secondary)}.category-bar-num{text-align:right;font-variant-numeric:tabular-nums}.filter-pills{display:inline-flex;gap:4px}button.filter-pill{padding:6px 14px;font-size:.8125rem}button.filter-pill.active,button.filter-pill.active:hover{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}input.search-input{width:220px;padding:7px 12px;font-size:.8125rem}.table-scroll{overflow-x:auto;margin-top:12px}.items-table td{padding:6px 8px;vertical-align:middle}.items-table .icon-btn{padding:6px;border-radius:var(--r-sm)}.items-table th{padding:10px 8px}.items-table tr.needs-review td:first-child{box-shadow:inset 3px 0 #b42318}.cell-input{padding:6px 8px;border-color:transparent;background:transparent;font-size:.8125rem;min-width:90px}.cell-input:hover{border-color:var(--line-strong)}.cell-input:focus{background:var(--surface)}.cell-input.missing{border-color:#e7a7a1;background:#fceaea}.cell-input-num{text-align:right;min-width:100px}.cell-file{display:inline-block;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.cell-hint{font-size:.75rem;color:var(--secondary);margin-top:2px}button.link-button{background:none;border:none;padding:0;color:var(--tertiary);font-size:.75rem;white-space:nowrap}button.link-button:hover{background:none;text-decoration:underline}button.link-button:disabled{background:none;color:var(--secondary)}.status-note{border-radius:var(--r-md);padding:10px 14px;font-size:.8125rem;background:var(--neutral);color:var(--secondary);margin-top:12px}.status-note.warning{background:#fef3c7;color:#92400e}.status-note.danger{background:#fceaea;color:#b42318}@media(max-width:760px){.category-bar{grid-template-columns:1fr 90px}.category-bar-track,.category-bar-pct{display:none}}.nav-public{position:sticky;top:20px;z-index:50;width:calc(100% - 20px);max-width:1100px;margin:24px auto 0;padding:14px 24px;background:#ffffff8c;backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);border:1px solid rgba(255,255,255,.5);border-radius:999px;box-shadow:0 8px 32px #141e3c0f}.nav-public .brand,.brand-lg{font-size:1.375rem;gap:12px}.nav-public .nav-link{padding:0 12px}.orb-stage{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.orb{position:absolute;display:block;width:60vw;height:60vw;border-radius:50%;filter:blur(110px);opacity:.55;will-change:transform}.orb-1{top:-18vw;left:-12vw;background:radial-gradient(circle,rgba(99,130,255,.65),transparent 65%);animation:orbDrift1 22s ease-in-out infinite alternate}.orb-2{top:8vh;right:-18vw;width:55vw;height:55vw;background:radial-gradient(circle,rgba(196,158,255,.55),transparent 65%);animation:orbDrift2 28s ease-in-out infinite alternate}.orb-3{top:55vh;left:20vw;width:45vw;height:45vw;background:radial-gradient(circle,rgba(255,192,203,.45),transparent 65%);animation:orbDrift3 34s ease-in-out infinite alternate}@keyframes orbDrift1{0%{transform:translate(0) scale(1)}to{transform:translate(18vw,12vh) scale(1.1)}}@keyframes orbDrift2{0%{transform:translate(0) scale(1)}to{transform:translate(-14vw,20vh) scale(1.15)}}@keyframes orbDrift3{0%{transform:translate(0) scale(1)}to{transform:translate(10vw,-15vh) scale(1.2)}}@media(max-width:760px){.nav-public .nav-link{display:none}}.category-cell{display:flex;align-items:center;gap:8px}.category-cell select{min-width:0;flex:1}.category-confirm{flex:none;padding:4px 8px;font-size:.75rem;background:var(--tertiary-soft);color:var(--tertiary);border:1px solid transparent;border-radius:var(--r-sm)}.category-confirm:hover{background:var(--tertiary);color:var(--on-primary);border-color:var(--tertiary)}
