@import "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap";:root{--bg-primary:#0d0d0d;--bg-secondary:#161616;--bg-card:#202020;--bg-header:#2b2b2b;--text-primary:#fff;--text-secondary:#bebebe;--text-muted:#7e7e7e;--brand-red:#df4246;--brand-red-hover:#c53538;--brand-blue:#006bb6;--brand-blue-hover:#005692;--brand-orange:#f26522;--accent-green:#2ecc71;--accent-green-hover:#27ae60;--border-color:#2f2f2f;--border-color-focus:#df4246;--font-main:"Montserrat", sans-serif;--font-title:"Montserrat", sans-serif;--shadow-sm:0 2px 4px #0000001a;--shadow-md:0 4px 8px #0003;--shadow-lg:0 8px 16px #0000004d;--border-radius:8px;--border-radius-sm:4px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-main);line-height:1.5;overflow-x:hidden}h1,h2,.page-title,.sidebar-app-title{font-family:var(--font-title);letter-spacing:-.02em;font-weight:700}h3,h4,h5,h6,.nav-group-title,th,.section-title,.tab-btn,.sidebar-nav-btn{font-family:var(--font-title);letter-spacing:-.01em;font-weight:600}body,p,td,span,input,select,textarea,button,.cell-value{font-family:var(--font-main);font-weight:400}.app-container{width:100vw;max-width:100%;min-height:100vh;margin:0;padding:0;display:flex}.sidebar{background-color:var(--bg-secondary);border-right:1px solid var(--border-color);z-index:100;flex-direction:column;gap:20px;width:280px;height:100vh;padding:24px 20px;display:flex;position:fixed;top:0;left:0;overflow-y:auto}.sidebar-logo-container{border-bottom:1px solid var(--border-color);flex-direction:column;align-items:center;gap:12px;margin-bottom:10px;padding-bottom:20px;display:flex}.sidebar-logo-img{width:160px;height:auto}.sidebar-app-title{font-family:var(--font-title);color:var(--text-primary);letter-spacing:.02em;font-size:1.35rem;font-weight:700}.sidebar-app-title span{color:#fff}.logo-text-path{fill:#fff!important}.sidebar-logo-svg{width:160px;height:auto}.sidebar-nav{flex-direction:column;gap:6px;display:flex}.sidebar-nav-btn{border-radius:var(--border-radius-sm);cursor:pointer;text-align:left;color:var(--text-secondary);background-color:#0000;border:1px solid #0000;align-items:center;gap:12px;width:100%;padding:12px 16px;font-size:.9rem;font-weight:500;transition:all .15s;display:flex}.sidebar-nav-btn:hover{background-color:var(--bg-header);color:var(--text-primary);border-color:var(--border-color)}.sidebar-nav-btn.active{background-color:var(--brand-blue);color:#fff;border-color:var(--brand-blue);box-shadow:0 2px 8px #006bb64d}.sidebar-nav-btn.active-manager{background-color:var(--brand-red);color:#fff;border-color:var(--brand-red);box-shadow:0 2px 8px #df42464d}.nav-group-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.12em;margin-top:15px;margin-bottom:6px;padding-left:8px;font-size:.7rem;font-weight:700}.main-content{background-color:var(--bg-primary);flex-direction:column;flex:1;gap:24px;min-height:100vh;margin-left:280px;padding:24px;display:flex;overflow-x:hidden}.main-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding-bottom:12px;display:flex}.page-title{font-family:var(--font-title);color:var(--text-primary);font-size:1.5rem;font-weight:600}.calendar-section{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:var(--shadow-md);padding:20px}.calendar-header-wrapper{flex-direction:column;gap:15px;margin-bottom:20px;display:flex}.week-selector-bar{background-color:var(--bg-card);border-radius:var(--border-radius);border:1px solid var(--border-color);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:15px;padding:12px 20px;display:flex}.week-grid-container{flex-direction:column;gap:6px;max-width:800px;display:flex}.week-grid-row{flex-wrap:nowrap;gap:3px;display:flex}.week-grid-btn{background-color:var(--bg-header);border:1px solid var(--border-color);cursor:pointer;width:25px;height:25px;color:var(--text-primary);border-radius:3px;justify-content:center;align-items:center;font-size:.7rem;transition:all .15s;display:flex}.week-grid-btn:hover{background-color:var(--brand-blue);color:#fff}.week-grid-btn.active{background-color:var(--brand-red);border-color:var(--brand-red);color:#fff}.current-week-display{align-items:center;gap:15px;display:flex}.arrow-btn{background-color:var(--bg-header);border:1px solid var(--border-color);cursor:pointer;color:#fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:all .2s;display:flex}.arrow-btn:hover{background-color:var(--brand-red);border-color:var(--brand-red)}.week-title{font-family:var(--font-title);text-align:center;min-width:200px;font-size:1.2rem;font-weight:500}.year-selector select{background-color:var(--bg-header);border:1px solid var(--border-color);border-radius:var(--border-radius-sm);cursor:pointer;color:#fff;padding:8px 15px}.calendar-table-wrapper{overflow-x:auto}.calendar-table{border-collapse:collapse;text-align:left;border:1px solid var(--border-color);width:100%}.calendar-table th{background-color:var(--bg-header);font-family:var(--font-title);border:1px solid var(--border-color);padding:12px 15px;font-size:.95rem;font-weight:500}.calendar-table td{border:1px solid var(--border-color);vertical-align:top;height:120px;padding:10px}.tech-info-cell{background-color:var(--bg-card);min-width:180px}.tech-name{border-bottom:2px solid var(--brand-red);margin-bottom:8px;padding-bottom:5px;font-size:1.05rem;font-weight:700}.tech-details{color:var(--text-secondary);flex-direction:column;gap:3px;font-size:.75rem;display:flex}.tech-details-row{justify-content:space-between;display:flex}.tech-details-label{color:var(--text-muted)}.tech-details-value{font-weight:500}.calendar-job-card{border-left:3px solid var(--brand-red);box-shadow:var(--shadow-sm);background-color:#df42461a;border-radius:4px;margin-bottom:6px;padding:6px 8px;font-size:.75rem}.job-card-time{color:var(--brand-orange);margin-bottom:2px;font-weight:700}.job-card-name{color:#fff;font-weight:600}.job-card-address{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin:2px 0;overflow:hidden}.job-card-status{border-radius:2px;padding:1px 4px;font-size:.65rem;font-weight:700;display:inline-block}.job-status-scheduled{color:#fff;background-color:#2980b9}.job-status-done{color:#fff;background-color:#27ae60}.job-status-cancelled{color:#fff;background-color:#c0392b}.job-status-new{color:#fff;background-color:#d35400}.planning-section{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:var(--shadow-md);overflow:hidden}.planning-header-bar{background-color:var(--brand-red);color:#fff;font-family:var(--font-title);text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;align-items:center;padding:12px 20px;font-size:1.15rem;font-weight:700;display:flex}.table-responsive-wrapper{max-height:500px;overflow:auto}.plan-table{border-collapse:collapse;width:100%}.plan-table th{background-color:var(--bg-header);color:var(--text-secondary);text-transform:uppercase;border:1px solid var(--border-color);z-index:10;padding:10px 12px;font-size:.85rem;position:sticky;top:0}.plan-table td{border:1px solid var(--border-color);padding:5px 8px}.table-input{background-color:#0000;border:1px solid #0000;border-radius:3px;width:100%;padding:6px 8px;font-size:.85rem;transition:all .15s;color:#fff!important}.table-input::placeholder{color:#fff9!important;opacity:1!important}.table-input::placeholder{color:#fff9!important;opacity:1!important}.table-input::-webkit-calendar-picker-indicator{cursor:pointer;filter:invert()!important}.table-input:hover{border-color:var(--border-color);background-color:#ffffff08}.table-input:focus{background-color:var(--bg-card);border-color:var(--brand-red);outline:none}.table-input:disabled{cursor:not-allowed;color:#fff!important;opacity:.85!important;-webkit-text-fill-color:#fff!important}.table-select{cursor:pointer;background-color:#0000;border:1px solid #0000;border-radius:3px;width:100%;padding:5px 8px;font-size:.85rem;color:#fff!important}.table-select option{background-color:var(--bg-secondary);color:#fff}.table-select:hover{border-color:var(--border-color);background-color:#ffffff08}.table-select:focus{background-color:var(--bg-card);border-color:var(--brand-red);outline:none}.table-select:disabled{cursor:not-allowed;color:#fff!important;opacity:.85!important;-webkit-text-fill-color:#fff!important}.action-btn-green{background-color:var(--accent-green);color:#000;border-radius:var(--border-radius-sm);cursor:pointer;white-space:nowrap;border:none;padding:8px 12px;font-size:.75rem;font-weight:700;transition:all .15s}.action-btn-green:hover{background-color:var(--accent-green-hover);box-shadow:0 0 10px #2ecc7166}.action-btn-green:disabled{background-color:var(--text-muted);color:var(--bg-secondary);cursor:not-allowed;box-shadow:none}.table-footer-actions{background-color:var(--bg-header);border-top:1px solid var(--border-color);justify-content:space-between;padding:15px 20px;display:flex}.btn-secondary{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius-sm);cursor:pointer;color:#fff;padding:8px 16px;font-size:.85rem;font-weight:500;transition:all .15s}.btn-secondary:hover{background-color:var(--bg-primary);border-color:var(--text-muted)}.manager-section{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:var(--shadow-md);flex-direction:column;gap:15px;padding:20px;display:flex}.manager-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:15px;display:flex}.category-tabs{gap:10px;display:flex}.category-tab{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius-sm);cursor:pointer;font-weight:500;font-family:var(--font-title);padding:10px 20px;transition:all .15s}.category-tab:hover{border-color:var(--text-muted)}.category-tab.active{background-color:var(--brand-blue);border-color:var(--brand-blue);color:#fff;box-shadow:0 0 10px #006bb666}.map-section{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--border-radius);box-shadow:var(--shadow-md);flex-direction:column;gap:15px;padding:20px;display:flex}.map-container-wrapper{border-radius:var(--border-radius);border:1px solid var(--border-color);z-index:1;width:100%;height:1000px;position:relative;overflow:hidden}.map-filter-bar{flex-wrap:wrap;gap:15px;display:flex}.map-filter-group{align-items:center;gap:8px;font-size:.85rem;display:flex}.map-filter-group select{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius-sm);padding:6px 12px;font-size:.85rem}.leaflet-container{background-color:#1e2625!important}.dark-map-layer{filter:invert()hue-rotate(180deg)brightness(95%)contrast(90%)}.leaflet-popup-content-wrapper{border:1px solid var(--border-color);background-color:var(--bg-card)!important;color:var(--text-primary)!important;border-radius:var(--border-radius)!important}.leaflet-popup-tip{background-color:var(--bg-card)!important}.map-popup-content{font-family:var(--font-main);padding:5px}.map-popup-title{font-family:var(--font-title);border-bottom:1px solid var(--border-color);color:var(--brand-red);margin-bottom:8px;padding-bottom:5px;font-size:.95rem;font-weight:700}.map-popup-detail{margin-bottom:4px;font-size:.8rem}.map-popup-detail strong{color:var(--text-secondary)}@media (width<=768px){.app-header{flex-direction:column;align-items:stretch;gap:15px}.nav-tabs{justify-content:space-around}.week-selector-bar{flex-direction:column;align-items:stretch}.week-grid-container{justify-content:center}}.toast-notification{background-color:var(--bg-card);border:1px solid var(--border-color);border-left:4px solid var(--brand-blue);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-lg);z-index:9999;align-items:center;gap:10px;padding:12px 20px;font-size:.9rem;animation:.3s forwards slideIn;display:flex;position:fixed;bottom:20px;right:20px}.toast-success{border-left-color:var(--accent-green)}.toast-error{border-left-color:var(--brand-red)}@keyframes slideIn{0%{opacity:0;transform:translateY(100px)}to{opacity:1;transform:translateY(0)}}
