html,body,#root{min-height:100%;margin:0}*{box-sizing:border-box}.app{color:#111827;background:#f3f4f6;min-height:100vh;padding:16px;font-family:Arial,Helvetica,sans-serif}.top-bar{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.top-bar h1{margin:0;font-size:28px}.top-bar p{color:#6b7280;margin:4px 0 0}.toolbar{gap:8px;display:flex}.status-key{flex:1;justify-content:center;align-items:center;gap:6px;min-width:0;display:flex}.status-key-item{text-align:center;box-sizing:border-box;border-radius:8px;justify-content:center;align-items:center;width:88px;min-height:28px;padding:4px 6px;font-size:11px;font-weight:600;line-height:1.05;display:flex}button{cursor:pointer;background:#fff;border:1px solid #9ca3af;border-radius:6px;padding:7px 10px;font-weight:600}button:hover{background:#f9fafb}.board-row{gap:18px;padding-bottom:16px;display:flex;overflow-x:auto}.week-board{background:#fff;border:1px solid #d1d5db;border-radius:12px;min-width:720px;overflow:hidden;box-shadow:0 2px 8px #0000001f}.week-title{color:#fff;text-align:center;background:#1d4ed8;padding:12px;font-size:21px;font-weight:700}.week-grid{grid-template-columns:120px repeat(5,1fr);display:grid}.slot-header{border-top:1px solid #e5e7eb}.day-header{border-top:1px solid #e5e7eb;border-left:1px solid #e5e7eb;flex-direction:column;justify-content:center;align-items:center;height:72px;display:flex}.day-header strong{font-size:20px}.day-header span{margin-top:4px;font-size:14px}.today{background:#fef08a}.slot-label{background:#f9fafb;border-top:1px solid #e5e7eb;align-items:center;height:118px;padding-left:16px;font-size:20px;font-weight:700;display:flex}.job-cell{background:#fff;border-top:1px solid #e5e7eb;border-left:1px solid #e5e7eb;height:118px;padding:8px;overflow:hidden}.unallocated{background:#fff;border:1px solid #d1d5db;border-radius:12px;margin-top:22px;overflow:hidden;box-shadow:0 2px 8px #0000001f}.unallocated-title{color:#fff;background:#374151;padding:14px 16px;font-size:21px;font-weight:700}.unallocated-body{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));align-items:start;gap:12px;min-height:130px;padding:16px;display:grid}.job-card{border:1px solid #d1d5db;border-radius:12px;flex-direction:column;justify-content:space-between;min-width:0;height:100%;max-height:94px;padding:9px;display:flex;overflow:hidden;box-shadow:0 1px 4px #00000024}.job-address{white-space:normal;overflow-wrap:anywhere;font-size:12px;line-height:1.1}.job-main{flex-direction:column;gap:2px;min-width:0;display:flex}.job-main span,.job-main small{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.job-main strong{font-size:14px}.job-main span{font-size:12px}.job-main small{color:#374151;font-size:11px}.job-actions{gap:8px;font-size:11px;display:flex}.job-actions button{background:0 0;border:none;padding:0;font-size:11px;text-decoration:underline}.status-waiting{background:#fef9c3;border-color:#facc15}.status-booked{background:#dbeafe;border-color:#60a5fa}.status-inspected{background:#ede9fe;border-color:#8b5cf6}.status-report-complete{background:#e2e8f0;border-color:#64748b}.status-invoiced{background:#ffedd5;border-color:#fb923c}.status-paid{background:#fee2e2;border-color:#f87171}.status-sent{background:#dcfce7;border-color:#4ade80}.modal-backdrop{z-index:1000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:480px;padding:22px;box-shadow:0 12px 30px #00000059}.modal h2{margin-top:0}.modal label{flex-direction:column;gap:5px;margin-bottom:12px;font-weight:700;display:flex}.modal input,.modal select{border:1px solid #9ca3af;border-radius:7px;padding:9px;font-size:15px}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.modal-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.primary{color:#fff;background:#1d4ed8;border-color:#1d4ed8}.primary:hover{background:#1e40af}.search-box{width:220px;position:relative}.search-box input{width:100%}.search-results{z-index:50;background:#fff;border:1px solid #d1d5db;border-radius:8px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 8px 20px #0000002e}.search-results div{cursor:pointer;padding:8px 10px;font-size:14px}.search-results div:hover{background:#f3f4f6}.job-cell{transition:background-color .15s,box-shadow .15s;position:relative;overflow:hidden}.job-cell:hover{background:#eef6ff}.job-cell.blocked:hover{background:#fff1f2}.job-cell.blocked:after{content:"";pointer-events:none;z-index:2;background:#be1e2dcc;border-radius:999px;width:140%;height:3px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-45deg)}.job-cell.drag-over{background:#dbeafe;box-shadow:inset 0 0 0 2px #3b82f6}.job-cell.blocked.drag-over{background:#ffe4e6;box-shadow:inset 0 0 0 2px #dc2626}.job-highlighted{animation:2s ease-out job-highlight-flash}@keyframes job-highlight-flash{0%{box-shadow:0 0 0 4px #f59e0bf2,0 0 18px #f59e0bcc}70%{box-shadow:0 0 0 4px #f59e0b8c,0 0 12px #f59e0b73}to{box-shadow:0 1px 4px #00000024}}.search-result-item{cursor:pointer;border-bottom:1px solid #e5e7eb;flex-direction:column;gap:2px;padding:10px 12px;transition:background-color .15s,transform .15s;display:flex}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background:#f3f7ff;transform:translate(2px)}.search-result-item strong{color:#111827;font-size:14px}.search-result-item span{color:#4b5563;font-size:13px}.search-result-item small{color:#6b7280;margin-top:2px;font-size:12px}.cell-context-menu{z-index:1000;background:#fff;border:1px solid #cbd5e1;border-radius:8px;flex-direction:column;min-width:150px;padding:6px;display:flex;position:fixed;box-shadow:0 10px 25px #0003}.cell-context-menu button{text-align:left;cursor:pointer;background:0 0;border:none;padding:8px 10px}.cell-context-menu button:hover{background:#f1f5f9}.cell-context-title{color:#475569;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid #e2e8f0;margin-bottom:4px;padding:7px 10px 8px;font-size:12px;font-weight:700}.cell-context-cancel{color:#64748b;margin-top:5px;border-top:1px solid #e2e8f0!important;padding-top:9px!important}.cell-context-cancel:hover{color:#334155;background:#f8fafc!important}.website-request-input{resize:vertical;box-sizing:border-box;width:100%;min-height:320px;margin-top:12px;padding:10px;font-family:Consolas,monospace;font-size:13px}.checkbox-row{justify-content:flex-start;align-items:center;gap:8px;width:fit-content;margin-top:12px;display:flex;flex-direction:row!important}.checkbox-row input[type=checkbox]{flex:none;width:16px;height:16px;margin:0}.checkbox-row span{white-space:nowrap;display:inline}.blocked-label{z-index:3;text-align:center;white-space:normal;background:#fff;max-width:85%;padding:4px 12px;font-size:12px;font-weight:600;line-height:1.15;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.job-card{position:relative}.job-client-name{font-size:10px;font-weight:400;line-height:1.1}.job-note-marker{z-index:2;cursor:help;border-top:20px solid #000;border-left:20px solid #0000;width:0;height:0;font-size:0;position:absolute;top:0;right:0}.job-type-marker{color:#111;border:1.5px solid #111;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;margin-left:3px;font-size:10px;font-weight:800;line-height:1;display:inline-flex}.brand-area{align-items:center;gap:16px;margin-right:12px;display:flex}.habit-logo{width:auto;height:58px;display:block}.brand-divider{background:#ffffff73;width:1px;height:52px}.brand-area h1{white-space:nowrap;margin:0;font-size:32px;font-weight:700}
