@font-face{font-display:swap;font-family:Bebas Neue;font-style:normal;font-weight:400;src:url(/assets/bebas-neue-v14-latin-regular-5LZebNIn.woff2) format("woff2")}body{font-family:monospace;background-color:#202124;color:#eee;user-select:none;-webkit-user-select:none;-ms-user-select:none;overflow:hidden}#root{height:100vh;height:100dvh;width:100vw;overflow:hidden}.main{width:100%;height:auto;max-height:100vh;max-height:100dvh;display:block;padding-top:2vh;overflow:visible}@media (max-height: 500px){.main{padding-top:10px}}.dash{max-width:60ch}span{display:inline-block}.rain,.cloud{overflow:hidden;line-height:.8}.rain{color:#4b9cd3}#coffee{cursor:pointer}.oval{fill:none;stroke:#8182da;stroke-width:5}.dan{font-family:Bebas Neue,sans-serif;font-size:48px;fill:#8182da;font-weight:700;text-anchor:middle;dominant-baseline:middle}.nichols{font-family:Bebas Neue,sans-serif;font-size:266px;fill:#eee;text-anchor:middle}.footer{font-family:Bebas Neue,sans-serif;font-size:60px;fill:#eee;text-transform:uppercase}.arrow{fill:none;stroke:#eee;stroke-width:2;stroke-linecap:square;pointer-events:bounding-box}.link{cursor:pointer}.link:hover .footer{text-decoration:underline}.tabs line{stroke:#eee;stroke-width:.5;fill:none}.tab{font-family:Bebas Neue,sans-serif;font-size:16px;dominant-baseline:middle;fill:#eee}.tab:hover{text-decoration:underline}.panel-text{font-family:Bebas Neue,sans-serif;font-size:12px;fill:#eee;text-transform:uppercase;letter-spacing:.5px}.panel-sub{font-family:sans-serif;font-size:9px;fill:#aaa;text-transform:none;letter-spacing:0}.tech{fill:#aaa;font-size:10px}body{color:#94a3b8!important}.control{padding:1rem;font-family:system-ui,-apple-system,sans-serif;max-width:600px;margin:0 auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 2rem;align-items:start}.control>.clock{grid-column:1 / -1}.control>.weather{grid-column:1 / -1;margin:0}.control>.markets{margin:0}.control>.popularity{margin:0}.control>.wifi{grid-column:2;margin:0;align-self:stretch}.control>.stats{grid-column:1 / -1;margin:0;align-self:stretch}.control>.router{grid-column:1;margin:0;align-self:stretch;min-width:0}@media (max-width: 640px){.control{grid-template-columns:1fr;gap:1rem}.control>.stats,.control>.wifi{grid-column:1}.router-grid,.router-bottom{grid-template-columns:1fr;gap:.5rem}}.clock{display:flex;align-items:center;justify-content:center;margin:0 0 1.5rem;font-family:Bebas Neue,sans-serif;font-size:2rem;color:#94a3b8}.time{font-weight:500}.separator{margin:0 .5rem;color:#94a3b8}.market{font-size:1rem;color:#94a3b8;font-weight:500}.stats .grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.grid{display:flex;flex-direction:column;gap:.5rem}.system{display:flex;flex-direction:column;gap:.25rem}.id{font-weight:500;color:#94a3b8;font-size:1rem;text-align:right}.bars{display:flex;flex-direction:column;gap:2px}.bartrack{width:100%;background:#1e293b;border-radius:1px;height:5px;overflow:hidden}.bar{height:100%;border-radius:1px;transition:width .3s ease}.cpu{background:#3b82f6}.mem{background:#10b981}.storage{background:#f59e0b}.weather{margin:1rem 0}.loading{text-align:center;color:#94a3b8;font-size:.75rem}.weather-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:.3rem}.weather-day{display:flex;flex-direction:column;gap:.2rem;align-items:center;padding:.3rem;border-radius:4px;font-size:.75rem;min-width:0}.day-header{display:flex;flex-direction:column;align-items:center;gap:.1rem}.day-name{font-weight:500;color:#94a3b8;font-size:.75rem}.day-date{font-size:.75rem}.day-weather{display:flex;flex-direction:column;gap:.3rem}.temps{display:flex;align-items:center;gap:.2rem;justify-content:center}.temp-value{font-size:1rem;font-weight:600;color:#f1f5f9}.temp-sep{font-size:.75rem}.conditions{display:flex;gap:.1rem;flex-wrap:wrap;justify-content:center}.condition{display:flex;align-items:center;gap:.1rem;padding:.1rem .2rem;border-radius:2px;font-size:.75rem;white-space:nowrap}.moon{display:flex;align-items:center;gap:.2rem;justify-content:center}.moon-icon{font-size:1rem}.moon-day{font-size:.75rem}.stats,.wifi{margin:1rem 0}.wifi-header{margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid #1e293b}.wifi-total{display:flex;align-items:baseline;justify-content:flex-end;gap:.5rem;margin-bottom:.25rem}.wifi-label{font-size:.75rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.wifi-count{font-size:1.5rem;font-weight:600;color:#10b981}.wifi-meta{display:flex;justify-content:flex-end;gap:.75rem;font-size:.75rem}.wifi-metric{color:#64748b}.wifi-grid{display:flex;flex-direction:column;gap:.25rem}.wifi-ap{display:flex;align-items:center;gap:.75rem;padding:.35rem 0}.wifi-name{flex:1;font-size:1rem;color:#94a3b8;text-align:right;min-width:80px}.wifi-band{font-size:.75rem;color:#64748b;min-width:2.5rem;text-align:center}.wifi-num{font-size:1rem;font-weight:600;color:#3b82f6;min-width:2rem;text-align:center}.wifi-sig{font-size:1rem;min-width:1.25rem;text-align:center}.wifi-bytes{font-size:.75rem;color:#64748b;min-width:3rem;text-align:right}.wifi-channels{display:flex;gap:.5rem;margin-top:.5rem;padding-top:.5rem;border-top:1px solid #1e293b;flex-wrap:wrap;align-items:baseline;justify-content:flex-end}.wifi-ch-label{font-size:.75rem;color:#64748b;text-transform:uppercase}.wifi-ch{font-size:.75rem;color:#94a3b8}.control>.router{margin:0;align-self:stretch}.router{margin:1rem 0}.router-header{margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid #1e293b;text-align:right}.router-label{font-size:.75rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.router-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid #1e293b}.router-grid>*{min-width:0}.router-ifaces{display:flex;flex-direction:column;gap:.25rem}.router-iface{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.router-name{flex:1;text-align:left;color:#94a3b8;min-width:30px;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.router-bytes{font-size:.75rem;color:#64748b;min-width:3rem;text-align:right}.router-traffic{display:flex;flex-direction:column;gap:.25rem}.router-bottom{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.router-bottom>*{min-width:0}.router-ports,.router-wan{display:flex;flex-direction:column;gap:.25rem}.router-port{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.router-port-count{font-size:.75rem;color:#64748b;min-width:3rem;text-align:right}.router-client{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.markets{margin:1rem 0}.markets-grid{display:flex;flex-direction:column;gap:.25rem}.market-item{display:flex;align-items:center;justify-content:space-between;padding:.25rem 0}.market-symbol{font-size:.75rem;color:#94a3b8;text-align:left;min-width:60px}.market-pct{font-size:.75rem;font-weight:600;text-align:right;min-width:50px}.popularity{margin:1rem 0}.popularity-grid{display:flex;flex-direction:column;gap:.25rem}.popularity-item{display:flex;align-items:center;justify-content:space-between;padding:.25rem 0}.popularity-ticker{font-size:.75rem;color:#94a3b8;text-align:left;min-width:60px}.popularity-delta{font-size:.75rem;font-weight:600;text-align:right;min-width:50px}.toolbar{padding:10px;background:#f5f5f5;border-bottom:1px solid #ddd;display:flex;flex-direction:row;align-items:center;gap:20px;width:100%;box-sizing:border-box;position:relative}.file-actions{display:flex;flex-direction:row;gap:10px;flex-shrink:0}.tools{display:flex;flex-direction:row;gap:10px;flex-grow:1;justify-content:center}.pixel-density{display:flex;flex-direction:row;align-items:center;margin-left:auto;gap:8px;background:#fff;border:1px solid #ddd;border-radius:4px;padding:4px 8px}.pixel-density label{display:flex;align-items:center;gap:4px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 8px;border-radius:3px;transition:background-color .2s}.pixel-density label:hover{background-color:#f5f5f5}.pixel-density input[type=radio]{margin:0;cursor:pointer;width:16px;height:16px}.pixel-density input[type=radio]:checked+span{color:#2196f3;font-weight:500}.pixel-density span{font-size:14px;color:#666}.pixel-density:before{content:"Scale:";font-size:14px;color:#666;margin-right:4px}.toolbar button{padding:8px 16px;background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer}.toolbar button.active{background:#e3f2fd}.canvas-container{flex:1;overflow:auto;display:flex;justify-content:flex-start;align-items:flex-start}.canvas{border:1px solid #ccc;background:#fff}.floordy{display:flex;flex-direction:column;height:100vh;background:#fff}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:#666}.floorplan-preview{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000}.preview-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#00000080}.preview-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;padding:24px;border-radius:8px;box-shadow:0 2px 10px #0000001a;width:80%;max-width:900px;max-height:85vh;overflow-y:auto}.preview-header{display:flex;justify-content:center;align-items:center;margin-bottom:24px;padding:0 16px}.preview-header h2{margin:0;font-size:1.5rem;color:#333;font-weight:500}.close-button{position:absolute;top:16px;right:16px;background:none;border:none;font-size:1.8rem;color:#666;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1;transition:all .2s ease;z-index:1}.close-button:hover{color:#333;background-color:#f5f5f5}.preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;padding:8px}.preview-item{position:relative;width:100%;aspect-ratio:1/1;border-radius:8px;overflow:hidden;transition:all .2s ease;background:#fff;box-shadow:0 2px 4px #0000000d;cursor:pointer}.preview-item:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.preview-item:hover .preview-overlay-info{background-color:#000000b3}.preview-image{position:relative;width:100%;height:100%;background-color:#f8f8f8;display:flex;align-items:center;justify-content:center}.preview-image img{width:100%;height:100%;object-fit:contain}.preview-overlay-info{position:absolute;bottom:0;left:0;width:100%;padding:12px;background-color:#00000080;color:#fff;transition:background-color .2s ease}.preview-overlay-info h3{margin:0 0 4px;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:text}.preview-overlay-info p{margin:0;font-size:.8rem;opacity:.8}.name-editor{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10;padding:16px}.name-editor input{width:100%;padding:10px;border:none;border-radius:4px;font-size:1rem}.preview-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#f5f5f5;color:#666;font-size:14px}.shortcuts-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.shortcuts-content{background:#fff;padding:24px;border-radius:8px;box-shadow:0 4px 12px #00000026;max-width:500px;width:90%}.shortcuts-content h3{margin:0 0 20px;color:#333;font-size:20px;text-align:center}.shortcuts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.shortcut-item{display:flex;align-items:center;gap:12px}.shortcut-item .key{background:#f5f5f5;padding:4px 8px;border-radius:4px;border:1px solid #ddd;font-family:monospace;font-size:14px;min-width:80px;text-align:center;color:#666}.shortcut-item .description{color:#666;font-size:14px}.close-button{display:block;margin:0 auto;padding:8px 24px;background:#2196f3;color:#666;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .2s}.close-button:hover{background:#1976d2;color:#fff}.preview-actions{display:flex;gap:12px}.preview-actions button{flex:1;padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .2s ease}.load-button{background-color:#4caf50;color:#fff}.load-button:hover{background-color:#43a047}.delete-button{background-color:#f5f5f5;color:#666}.delete-button:hover{background-color:#e0e0e0}.delete-button:disabled{background-color:#f5f5f5;color:#999;cursor:not-allowed}.preview-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#f5f5f5;color:#666;font-size:14px;border-radius:4px}.toolbar-center{flex-grow:1;display:flex;justify-content:center;align-items:center}.total-area-display{padding:6px 12px;background-color:#f0f0f0;border-radius:4px;font-size:14px;font-weight:500;color:#333}body{background-color:#131516;color:#d3cfc9}.header{margin-top:18rem}.api-outer{border-radius:4px;border:1px solid #014A95;background-color:#61affe1a;margin-top:1.5rem}.api-outer button{border-radius:3px;margin:.5rem;color:#d3cfc9;background-color:#014a95;border:none;font-size:14px}.api-outer .path{font-size:16px;font-weight:600;font-family:monospace}.api-outer .desc{margin-left:2rem;font-size:13px;font-family:sans-serif}.oscillia{display:flex;flex-direction:column;align-items:center;padding:20px;font-family:Bebas Neue,sans-serif;background:#1a1a1a;color:#7f8c8d;min-height:100vh;border-radius:8px}.oscillia h1{margin:5px 0;font-size:100px;color:#7f8c8d;text-align:center}.oscillia h2{margin:0 0 20px;font-size:1.5rem;color:#7f8c8d;text-align:center}.controls{display:grid;grid-template-columns:.8fr 1.2fr;gap:15px;margin-bottom:10px;background:#2a2a2a;padding:15px;border-radius:8px;min-width:300px;text-align:center}.controls>div:first-child .control-group{display:flex;gap:10px;align-items:center;flex-wrap:nowrap}.controls>div:first-child .control-group label{font-weight:500;width:100px;flex-shrink:0;color:#7f8c8d}.controls>div:first-child .control-group input{padding:4px 8px;border:1px solid #444;border-radius:4px;background:#333;color:#7f8c8d;font-size:14px;flex-shrink:0}.controls>div:first-child .control-group select{padding:4px 8px;border:1px solid #444;border-radius:4px;background:#333;color:#7f8c8d;font-size:14px;width:120px;flex-shrink:0}.controls>div:first-child .control-group .radio-group{display:flex;gap:8px;align-items:center;flex-shrink:0;width:auto;min-width:auto}.controls>div:first-child .control-group .radio-group label{display:flex;align-items:center;gap:3px;cursor:pointer;font-weight:400;width:auto;min-width:auto;color:#7f8c8d;flex-shrink:0}.controls>div:first-child .control-group input#rule{width:73px;flex-shrink:0}.control-group label{font-weight:500;min-width:85px;color:#7f8c8d;justify-content:flex-end;display:flex}.controls>div:last-child .control-group{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.controls>div:last-child .control-group>label{font-weight:500;width:100px;flex-shrink:0;color:#7f8c8d;min-width:100px}.control-group{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.control-group input:focus{outline:none;border-color:#666}.control-group select{padding:4px 8px;border:1px solid #444;border-radius:4px;background:#333;color:#7f8c8d;font-size:14px}.control-group button{padding:4px 8px;border:none;border-radius:4px;background:#4a4a4a;color:#fff;cursor:pointer;font-size:14px;transition:background .2s}.control-group button:hover:not(:disabled){background:#5a5a5a}.control-group button:disabled{background:#333;color:#666;cursor:not-allowed}.control-group button[title="Randomize Rule"]{background:#e74c3c!important;color:#fff!important;font-weight:700;padding:4px 10px!important;border-radius:6px!important;transition:all .2s ease!important}.control-group button[title="Randomize Rule"]:hover{background:#c0392b!important;transform:scale(1.05);box-shadow:0 2px 8px #e74c3c66}.radio-group{display:flex;gap:10px;align-items:center}.radio-group label{display:flex;align-items:center;gap:5px;cursor:pointer;font-weight:400;min-width:auto;color:#7f8c8d}.radio-group input[type=radio]{margin:0;width:auto;padding:0}.play-button{background:#27ae60!important;font-weight:500;padding:10px 20px!important;border-radius:6px!important}.play-button.playing{background:#e74c3c!important}.play-button:hover:not(:disabled){background:#229954!important}.play-button.playing:hover:not(:disabled){background:#c0392b!important}.play-button:disabled{background:#95a5a6!important;color:#ecf0f1!important}.save-button{background:#3498db!important;font-weight:500;padding:10px 20px!important;border-radius:6px!important}.save-button:hover:not(:disabled){background:#2980b9!important}.info{background-color:#333;padding:10px;border-radius:6px;margin-top:10px;grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:15px}.info p{margin:0;color:#7f8c8d}.info p:first-child{margin-bottom:5px;color:#7f8c8d}.info p:last-child{display:flex;justify-content:center;align-items:center}.info-label{display:inline-block;width:40px;color:#7f8c8d;text-align:right}.info-value{display:inline-block;font-weight:700;width:40px;color:#7f8c8d}.info-value.active{color:#7f8c8d}.info-value.active.note{color:#3498db}.info-value.active.volume{color:#27ae60}.info-value.inactive{color:#95a5a6}.info-value.rule{font-size:11px;font-family:monospace;width:auto}.presets-container{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,1fr);gap:8px;max-height:120px;overflow-y:auto;border-radius:6px;padding:8px;background-color:#2a2a2a;grid-column:1 / -1;margin:0 auto;width:100%}.preset-item{padding:8px 12px;border:1px solid #444;border-radius:6px;background-color:#333;cursor:pointer;font-size:16px;position:relative;color:#3498db;font-weight:500;transition:all .2s ease;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;justify-content:center}.preset-item:hover{background-color:#3a3a3a;border-color:#666;transform:translateY(-1px);box-shadow:0 2px 4px #0000004d}.oscillia .canvas-container{border:1px solid #444;border-radius:6px;overflow:hidden;background:#000;max-width:512px;margin-top:20px}.ca-canvas{display:block;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;border-radius:6px}.controls-full-width{grid-column:1 / -1}.controls-buttons{display:flex;gap:10px;align-items:center}.control-group span{color:#7f8c8d}.molar-container{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.molar-header{text-align:center;margin-bottom:30px;padding:20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:12px;box-shadow:0 4px 15px #0000001a}.molar-header h1{margin:0;font-size:2.5rem;font-weight:700}.molar-header p{margin:10px 0 0;font-size:1.1rem;opacity:.9}.molar-nav{display:flex;gap:10px;margin-bottom:30px;flex-wrap:wrap}.molar-nav button{padding:12px 24px;border:none;border-radius:8px;background:#f8f9fa;color:#495057;font-weight:500;cursor:pointer;transition:all .2s ease;font-size:14px}.molar-nav button:hover{background:#e9ecef;transform:translateY(-1px)}.molar-nav button.active{background:#007bff;color:#fff;box-shadow:0 2px 8px #007bff4d}.molar-main{min-height:500px}.loading{text-align:center;padding:40px;font-size:1.1rem;color:#6c757d}.customer-form,.job-form{max-width:800px;margin:0 auto;background:#fff;padding:30px;border-radius:12px;box-shadow:0 4px 15px #0000001a}.form-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #f8f9fa}.form-header h2{margin:0;color:#2c3e50;font-size:1.8rem}.back-btn{padding:8px 16px;border:none;border-radius:6px;background:#6c757d;color:#fff;cursor:pointer;transition:background .2s ease}.back-btn:hover{background:#5a6268}.form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-group label{font-weight:600;color:#495057;font-size:14px}.form-group input,.form-group select,.form-group textarea{padding:12px;border:2px solid #e9ecef;border-radius:8px;font-size:14px;transition:border-color .2s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.form-group textarea{resize:vertical;min-height:80px}.form-actions{margin-top:20px;padding-top:20px;border-top:2px solid #f8f9fa}.form-actions button{padding:12px 30px;border:none;border-radius:8px;background:#28a745;color:#fff;font-weight:600;cursor:pointer;transition:all .2s ease;font-size:16px}.form-actions button:hover:not(:disabled){background:#218838;transform:translateY(-1px)}.form-actions button:disabled{opacity:.6;cursor:not-allowed}.message{padding:12px 16px;border-radius:8px;font-weight:500;margin-top:10px}.message.success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.message.error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.customer-search{position:relative}.search-results{position:absolute;top:100%;left:0;right:0;background:#fff;border:2px solid #e9ecef;border-top:none;border-radius:0 0 8px 8px;max-height:200px;overflow-y:auto;z-index:1000;box-shadow:0 4px 12px #0000001a}.search-result-item{padding:12px 16px;cursor:pointer;border-bottom:1px solid #f8f9fa;transition:background .2s ease}.search-result-item:hover{background:#f8f9fa}.search-result-item:last-child{border-bottom:none}.customer-list,.job-list{background:#fff;border-radius:12px;box-shadow:0 4px 15px #0000001a;overflow:hidden}.list-header{padding:20px 30px;background:#f8f9fa;border-bottom:2px solid #e9ecef;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:20px}.list-header h2{margin:0;color:#2c3e50;font-size:1.5rem}.filters{display:flex;gap:15px;align-items:center;flex-wrap:wrap}.search-box input{padding:8px 12px;border:2px solid #e9ecef;border-radius:6px;font-size:14px;min-width:200px}.filter-group{display:flex;gap:10px}.filter-group select{padding:8px 12px;border:2px solid #e9ecef;border-radius:6px;font-size:14px;background:#fff}.list-content{padding:20px 30px;min-height:400px}.empty-state{text-align:center;padding:60px 20px;color:#6c757d}.empty-state p{font-size:1.1rem;margin:0}.customers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.customer-card{background:#fff;border:2px solid #e9ecef;border-radius:10px;padding:20px;cursor:pointer;transition:all .2s ease}.customer-card:hover{border-color:#007bff;transform:translateY(-2px);box-shadow:0 4px 15px #0000001a}.customer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.customer-header h3{margin:0;color:#2c3e50;font-size:1.2rem}.customer-id{background:#e9ecef;color:#6c757d;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600}.customer-details{display:flex;flex-direction:column;gap:8px;margin-bottom:15px}.detail{display:flex;align-items:center;gap:8px;font-size:14px}.detail .label{font-size:16px}.customer-footer{padding-top:15px;border-top:1px solid #f8f9fa}.created-date{font-size:12px;color:#6c757d}.jobs-list{display:flex;flex-direction:column;gap:15px}.job-card{background:#fff;border:2px solid #e9ecef;border-radius:10px;overflow:hidden;transition:all .2s ease}.job-card:hover{border-color:#007bff;box-shadow:0 4px 15px #0000001a}.job-card.expanded{border-color:#007bff}.job-header{padding:20px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;background:#f8f9fa;transition:background .2s ease}.job-header:hover{background:#e9ecef}.job-title{display:flex;align-items:center;gap:15px}.job-title h3{margin:0;color:#2c3e50;font-size:1.2rem}.job-status{display:flex;gap:10px;align-items:center}.status-badge,.priority-badge{padding:6px 12px;border-radius:20px;color:#fff;font-size:12px;font-weight:600;text-transform:capitalize}.job-summary{padding:15px 20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;border-bottom:1px solid #f8f9fa}.summary-item{display:flex;flex-direction:column;gap:4px}.summary-item .label{font-size:12px;color:#6c757d;font-weight:600}.job-details{padding:20px;background:#f8f9fa}.detail-section{margin-bottom:20px}.detail-section h4{margin:0 0 10px;color:#2c3e50;font-size:1rem}.detail-section p{margin:0;color:#495057;line-height:1.5}.timeline{display:flex;flex-direction:column;gap:10px}.timeline-item{display:flex;gap:15px;align-items:center}.timeline-item .date{background:#007bff;color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;min-width:80px;text-align:center}.timeline-item .event{font-weight:500;color:#495057}.job-actions{margin-top:20px;padding-top:20px;border-top:1px solid #e9ecef}.status-actions{display:flex;align-items:center;gap:15px}.status-actions label{font-weight:600;color:#495057;font-size:14px}.status-actions select{padding:8px 12px;border:2px solid #e9ecef;border-radius:6px;font-size:14px;background:#fff}.list-footer{padding:20px 30px;background:#f8f9fa;border-top:2px solid #e9ecef;display:flex;justify-content:space-between;align-items:center}.list-footer p{margin:0;color:#6c757d;font-weight:500}.refresh-btn{padding:8px 16px;border:none;border-radius:6px;background:#007bff;color:#fff;cursor:pointer;transition:background .2s ease;font-size:14px}.refresh-btn:hover{background:#0056b3}.service-types-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;max-height:300px;overflow-y:auto;padding:15px;border:2px solid #e9ecef;border-radius:8px;background:#f8f9fa}.service-type-checkbox{display:flex;align-items:center;gap:10px;padding:10px;background:#fff;border:1px solid #e9ecef;border-radius:6px;cursor:pointer;transition:all .2s ease;font-size:14px;font-weight:500}.service-type-checkbox:hover{border-color:#007bff;background:#f8f9ff}.service-type-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:#007bff;cursor:pointer}.service-type-checkbox input[type=checkbox]:checked+span{color:#007bff;font-weight:600}.service-type-checkbox span{flex:1;line-height:1.4}.service-types-display{display:flex;flex-wrap:wrap;gap:8px}.service-type-tag{background:#007bff;color:#fff;padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500;white-space:nowrap}@media (max-width: 768px){.molar-container{padding:10px}.molar-header h1{font-size:2rem}.molar-nav{flex-direction:column}.form-row{grid-template-columns:1fr}.list-header,.filters{flex-direction:column;align-items:stretch}.customers-grid,.job-summary{grid-template-columns:1fr}.status-actions{flex-direction:column;align-items:stretch}.service-types-grid{grid-template-columns:1fr;max-height:250px}}.invoice-container{background:#fff;border-radius:10px;padding:30px;box-shadow:0 2px 10px #0000001a}.invoice-header{text-align:center;margin-bottom:30px;border-bottom:2px solid #f8f9fa;padding-bottom:20px}.invoice-header h2{margin:0 0 10px;color:#2c3e50;font-size:1.8rem}.invoice-header p{margin:0;color:#6c757d;font-size:1rem}.invoice-content{margin-top:20px}.invoice-filters{margin-bottom:25px}.invoice-filters h3{margin:0 0 5px;color:#2c3e50;font-size:1.3rem}.invoice-filters p{margin:0;color:#6c757d;font-size:.9rem}.jobs-with-hours{margin-top:20px}.job-invoice-card{background:#fff;border:2px solid #e9ecef;border-radius:10px;padding:20px;margin-bottom:15px;display:flex;justify-content:space-between;align-items:flex-start;gap:20px;transition:all .2s ease}.job-invoice-card:hover{border-color:#007bff;box-shadow:0 4px 15px #0000001a}.job-info{flex:1}.job-header{display:flex;align-items:center;gap:15px;margin-bottom:15px}.job-header h4{margin:0;color:#2c3e50;font-size:1.2rem}.job-id{background:#e9ecef;color:#6c757d;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600}.job-details{display:flex;flex-direction:column;gap:8px}.detail-row{display:flex;align-items:center;gap:10px;font-size:14px}.detail-row .label{font-weight:600;color:#495057;min-width:80px}.status{padding:4px 8px;border-radius:12px;font-size:12px;font-weight:600;text-transform:capitalize}.status.pending{background:#fff3cd;color:#856404}.status.in_progress{background:#cce5ff;color:#004085}.status.completed{background:#d4edda;color:#155724}.status.cancelled{background:#f8d7da;color:#721c24}.invoice-details{display:flex;flex-direction:column;align-items:flex-end;gap:15px;min-width:200px}.hours-info{text-align:right}.hours-row{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:5px;font-size:14px}.hours-row .label{font-weight:600;color:#495057}.hours{color:#007bff;font-weight:600}.rate{color:#28a745;font-weight:600}.hours-row.total{border-top:1px solid #e9ecef;padding-top:8px;margin-top:8px;font-size:16px}.total-amount{color:#dc3545;font-weight:700;font-size:18px}.invoice-actions{display:flex;gap:10px}.generate-invoice-btn{background:#28a745;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .2s ease;display:flex;align-items:center;gap:8px}.generate-invoice-btn:hover:not(:disabled){background:#218838;transform:translateY(-1px)}.generate-invoice-btn:disabled{background:#6c757d;cursor:not-allowed}.job-action-buttons{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}.invoice-btn{background:#17a2b8;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;transition:all .2s ease;display:flex;align-items:center;gap:6px}.invoice-btn:hover{background:#138496;transform:translateY(-1px)}.delete-btn{background:#dc3545;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;transition:all .2s ease;display:flex;align-items:center;gap:6px}.delete-btn:hover{background:#c82333;transform:translateY(-1px)}@media (max-width: 768px){.job-invoice-card{flex-direction:column;align-items:stretch}.invoice-details{align-items:stretch;min-width:auto}.hours-info{text-align:left}.hours-row{justify-content:space-between}.job-action-buttons{justify-content:center}}
