:root{--bg:#f7f7f8;--surface:#fff;--text:#1d1d22;--muted:#6b6b76;--border:#e3e3e8;--accent:#2f6fed;--accent-soft:#e8efff;--good:#1a8f4e;--bad:#c9372c;--warn-soft:#fff6dc;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font:14px/1.45 system-ui,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#131316;--surface:#1c1c21;--text:#ececf1;--muted:#9a9aa6;--border:#2e2e36;--accent:#6c9bff;--accent-soft:#1f2a44;--good:#4cc483;--bad:#ff7a6e;--warn-soft:#3a3320;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);margin:0}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.link{color:var(--accent);background:0 0;border:none;padding:0}button.icon{color:var(--muted);background:0 0;border:none;padding:0 6px;font-size:18px}button.icon:hover{color:var(--bad)}.app{max-width:1400px;margin:0 auto;padding:24px 16px 64px}header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}h1{margin:0;font-size:22px}.stats{gap:8px;display:flex}.stat{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;align-items:center;min-width:72px;padding:6px 14px;display:flex}.stat .value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:600}.stat .label{color:var(--muted);font-size:12px}.stat.good .value{color:var(--good)}.stat.bad .value{color:var(--bad)}.dropzone{border:2px dashed var(--border);background:var(--surface);text-align:center;color:var(--muted);cursor:pointer;border-radius:10px;padding:32px 16px}.dropzone strong{color:var(--text)}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.upload-status{flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;display:flex}.upload-status progress{width:240px}.errors{width:100%;color:var(--bad);margin:0;padding-left:20px;font-size:13px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin:24px 0 12px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:8px 14px}.tabs button.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.toolbar input[type=search]{border:1px solid var(--border);background:var(--surface);color:var(--text);min-width:240px;font:inherit;border-radius:6px;padding:7px 10px}.toolbar select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 8px}.toolbar label{color:var(--muted);align-items:center;gap:6px;display:flex}.spacer{flex:1}.muted{color:var(--muted)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;background:var(--surface);padding:8px;font-size:12px;font-weight:600;position:sticky;top:0}td{border-bottom:1px solid var(--border);padding:2px 4px}tr.dupe td{background:var(--warn-soft)}.cell{width:100%;color:inherit;font:inherit;background:0 0;border:1px solid #0000;border-radius:4px;padding:5px 4px}.cell:hover{border-color:var(--border)}.cell:focus{border-color:var(--accent);background:var(--surface);outline:none}.col-name,.col-address,.col-email{min-width:170px}.col-phone{min-width:135px}.col-date{min-width:115px}.col-city{min-width:110px}.col-state{width:60px}.col-zip{width:80px}.col-notes{min-width:200px}.source{max-width:200px;font-size:12px}.source .link,.source span:not(.badge){white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.badge{background:var(--bad);color:#fff;border-radius:4px;margin-left:6px;padding:1px 5px;font-size:11px}.grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.photo{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin:0;overflow:hidden}.photo.error{border-color:var(--bad)}.photo img{object-fit:cover;cursor:zoom-in;width:100%;height:150px;display:block}.photo figcaption{flex-direction:column;gap:3px;padding:8px;font-size:12px;display:flex}.photo .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status{text-transform:capitalize;font-weight:600}.status.done{color:var(--good)}.status.error{color:var(--bad)}.status.pending,.status.processing{color:var(--muted)}.photo .error{color:var(--bad);overflow-wrap:anywhere;-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.actions{gap:12px;display:flex}.lightbox{cursor:zoom-out;z-index:10;background:#000000d9;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.lightbox img{max-width:100%;max-height:100%}.business{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:12px;padding:10px 14px}.business summary{cursor:pointer;font-weight:600}.business p{margin:8px 0;font-size:13px}.business textarea{width:100%;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);resize:vertical;border-radius:6px;padding:8px}.business .toolbar{margin:8px 0 0}.freshness{background:var(--accent-soft);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;display:flex}.freshness .link.active{font-weight:600}.hint{font-size:13px}.board{-webkit-overflow-scrolling:touch;align-items:flex-start;gap:12px;padding-bottom:12px;display:flex;overflow-x:auto}.column{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex:0 0 280px;min-height:200px;padding:8px;transition:background .15s,border-color .15s}.column.drop{border-color:var(--accent);background:var(--accent-soft)}.column h3{border-top:4px solid var(--stage,var(--border));justify-content:space-between;align-items:center;margin:4px 6px 10px;padding-top:8px;font-size:14px;display:flex}.column .count{color:var(--muted);font-weight:400}.column .empty{color:var(--muted);text-align:center;margin:24px 0;font-size:13px}.stage-new{--stage:#2f6fed}.stage-no_answer{--stage:#d6457a}.stage-contacted{--stage:#8a5cf6}.stage-scheduled{--stage:#e8a317}.stage-sent{--stage:#f07f2b}.stage-won{--stage:#1a8f4e}.stage-lost{--stage:#9a9aa6}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:8px;margin-bottom:8px;padding:10px;font-size:14px;display:flex}.card.dragging{opacity:.4}.card header{flex-wrap:nowrap;justify-content:flex-start;align-items:flex-start;gap:8px;margin:0;display:flex}.drag-handle{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;color:var(--muted);border-radius:4px;margin:-4px 0 0 -4px;padding:4px 6px;font-size:20px;line-height:1}.drag-handle:active{background:var(--accent-soft)}.card .who{flex-direction:column;min-width:0;display:flex}.card .who strong{font-size:15px}.card .when{color:var(--muted);font-size:12px}.card .when.undated{color:var(--bad)}.card .contact{flex-direction:column;gap:3px;display:flex}.card .contact a{color:var(--accent);overflow-wrap:anywhere;text-decoration:none}.card .project{background:var(--warn-soft);border-radius:6px;margin:0;padding:8px 10px 8px 24px;font-size:13px}.card .project li{margin:2px 0}.my-notes{width:100%;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);resize:vertical;border-radius:6px;padding:6px 8px;font-size:13px}.card footer{justify-content:space-between;align-items:center;gap:8px;display:flex}.card footer select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:4px 6px;font-size:13px}.drag-ghost{background:var(--accent);color:#fff;pointer-events:none;z-index:20;border-radius:6px;padding:6px 12px;font-weight:600;position:fixed;transform:translate(-50%,-120%);box-shadow:0 4px 12px #0003}.save-state{color:var(--muted);margin-top:-4px;font-size:12px}.save-state.saved{color:var(--good)}.save-state.error{color:var(--bad)}.appointment{text-align:left;border:1px dashed var(--border);background:var(--surface);width:100%;color:var(--muted);border-radius:6px;padding:8px 10px;font-size:14px;display:block}.appointment.set{background:var(--warn-soft);color:var(--text);border-style:solid;border-color:#e8a317;font-weight:600}.appointment.past{color:var(--text);border-style:solid}.dialog-backdrop{z-index:30;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);color:var(--text);border-radius:12px;flex-direction:column;gap:12px;width:100%;max-width:360px;padding:18px;display:flex;box-shadow:0 10px 30px #00000040}.dialog h3{margin:0;font-size:16px}.dialog label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.dialog input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;width:100%;min-height:44px;padding:10px;font-size:17px}.dialog-actions{align-items:center;gap:8px;display:flex}.dialog-actions button{padding:10px 16px;font-size:15px}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--bad)}.calendar-view{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px;display:grid}@media (width<=900px){.calendar-view{grid-template-columns:1fr}}.cal-nav h2{text-align:center;min-width:170px;margin:0 4px;font-size:18px}.month{border:1px solid var(--border);background:var(--border);border-radius:8px;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.weekday{background:var(--surface);text-align:center;color:var(--muted);padding:6px 0;font-size:12px;font-weight:600}.day{background:var(--surface);flex-direction:column;gap:3px;min-width:0;min-height:96px;padding:4px;display:flex}.day.other{background:var(--bg)}.day.other .num{color:var(--muted)}.day .num{border-radius:50%;justify-content:center;align-self:flex-end;align-items:center;width:22px;height:22px;font-size:12px;font-weight:600;display:flex}.day.today .num{background:var(--accent);color:#fff}.chip{text-align:left;border:none;border-left:3px solid var(--stage,var(--accent));background:var(--accent-soft);color:var(--text);border-radius:4px;flex-direction:column;min-width:0;padding:2px 5px;font-size:11px;line-height:1.25;display:flex}.chip b,.chip span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chip b{color:var(--muted);font-weight:600}.chip.active,.agenda-item.active{outline:2px solid var(--accent)}.agenda{flex-direction:column;gap:8px;display:flex}.agenda h3{margin:8px 0 0;font-size:15px}.agenda h3.warn{color:var(--bad)}.agenda h4{color:var(--muted);margin:6px 0 4px;font-size:13px}.agenda .small{margin:0;font-size:12px}.agenda-day{flex-direction:column;gap:4px;display:flex}.agenda-item{text-align:left;border:1px solid var(--border);border-left:4px solid var(--stage,var(--accent));background:var(--surface);border-radius:6px;grid-template-columns:auto 1fr;column-gap:8px;padding:6px 8px;display:grid}.agenda-item .time{font-size:13px;font-weight:600}.agenda-item .who{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.agenda-item .where{color:var(--muted);grid-column:2;font-size:12px}.appt-detail{background:var(--surface);border:1px solid var(--accent);border-radius:8px;flex-direction:column;gap:8px;padding:10px;font-size:14px;display:flex}.appt-detail .row{justify-content:space-between;align-items:center;display:flex}.appt-detail .contact{flex-direction:column;gap:3px;display:flex}.appt-detail .contact a{color:var(--accent);overflow-wrap:anywhere;text-decoration:none}.appt-detail .project{background:var(--warn-soft);border-radius:6px;margin:0;padding:8px 10px 8px 24px;font-size:13px}.my-notes-view{white-space:pre-wrap;background:var(--bg);border-radius:6px;margin:0;padding:6px 8px;font-size:13px}
