.layout{background:var(--bg-base);display:flex;min-height:100vh}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);bottom:0;display:flex;flex-direction:column;left:0;position:fixed;top:0;transition:width .3s ease;width:260px;z-index:100}.sidebar.collapsed{width:72px}.sidebar-header{align-items:center;border-bottom:1px solid var(--border);display:flex;gap:12px;padding:20px 16px}.sidebar-logo{flex-shrink:0;font-size:28px}.sidebar-title{flex:1 1;min-width:0}.sidebar-title h2{color:var(--text-bright);font-size:1rem;font-weight:700;margin:0;white-space:nowrap}.sidebar-subtitle{color:var(--text-muted);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}.sidebar-toggle{background:none;border:none;color:var(--text-muted);cursor:pointer;flex-shrink:0;font-size:.75rem;padding:4px}.sidebar-toggle:hover{color:var(--text-secondary)}.sidebar-nav{display:flex;flex:1 1;flex-direction:column;gap:4px;padding:12px 8px}.nav-item{align-items:center;border-radius:8px;color:var(--text-secondary);display:flex;font-size:.9rem;font-weight:500;gap:12px;padding:10px 12px;text-decoration:none;transition:all .15s;white-space:nowrap}.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-item.active{background:var(--bg-sidebar-active);color:var(--accent)}.nav-icon{flex-shrink:0;font-size:1.2rem;text-align:center;width:24px}.sidebar-footer{border-top:1px solid var(--border);padding:12px}.user-info{align-items:center;display:flex;gap:8px;margin-bottom:8px;padding:8px 12px}.user-avatar{font-size:1.2rem}.user-email{font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logout-button,.user-email{color:var(--text-secondary)}.logout-button{align-items:center;background:none;border:1px solid #334155;border-radius:8px;cursor:pointer;display:flex;font-size:.85rem;gap:8px;padding:8px 12px;transition:all .15s;width:100%}.logout-button:hover{background:#ef444414;border-color:#ef44444d;color:var(--text-secondary)}.main-content{flex:1 1;margin-left:260px;min-height:100vh;padding:24px 32px;transition:margin-left .3s ease}.layout .sidebar.collapsed+main,.sidebar.collapsed+.main-content,.sidebar.collapsed~.main-content{margin-left:72px}.page-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.page-header h1{color:var(--text-bright);font-size:1.5rem;font-weight:700;margin:0}.page-description{color:var(--text-secondary);font-size:.875rem;margin:4px 0 0}.login-container{align-items:center;background:linear-gradient(135deg,var(--bg-base) 0,var(--bg-primary) 50%,var(--bg-base) 100%);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:16px;box-shadow:0 25px 50px -12px #00000080;max-width:420px;padding:48px 40px;width:100%}.login-header{margin-bottom:32px;text-align:center}.login-icon{font-size:48px;margin-bottom:16px}.login-header h1{color:var(--text-bright);font-size:1.5rem;font-weight:700;margin:0 0 8px}.login-header p{color:var(--text-secondary);font-size:.875rem;margin:0}.form-group input{background:var(--bg-base);border:1px solid var(--bg-hover);border-radius:8px;box-sizing:border-box;color:var(--text-bright);font-size:.95rem;padding:12px 16px;transition:border-color .2s,box-shadow .2s;width:100%}.form-group input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626;outline:none}.form-group input::placeholder{color:var(--border-light)}.login-button{background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;margin-top:8px;padding:12px;transition:background .2s,transform .1s;width:100%}.login-button:hover:not(:disabled){background:#2563eb}.login-button:active:not(:disabled){transform:scale(.98)}.login-button:disabled{cursor:not-allowed;opacity:.6}.login-error{background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;color:#fca5a5;font-size:.875rem;margin-bottom:20px;padding:12px 16px}.stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:24px}.stat-card{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:12px;padding:20px;text-align:center}.stat-value{color:var(--text-bright);font-size:2rem;font-weight:800;line-height:1;margin-bottom:8px}.stat-label{color:var(--text-secondary);font-size:.8rem}.stat-online{border-left:3px solid #22c55e}.stat-offline{border-left:3px solid #ef4444}.stat-total{border-left:3px solid #3b82f6}.stat-cert{border-left:3px solid #eab308}.dashboard-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:20px}.dashboard-card{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:12px;padding:20px}.dashboard-card.full-width{grid-column:1/-1}.dashboard-card h3{color:var(--text-primary);font-size:.95rem;font-weight:600;margin:0 0 16px}.card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.card-header h3{margin:0}.btn-sm{font-size:.8rem!important;padding:6px 12px!important}.lifecycle-bar{border-radius:12px;display:flex;height:24px;margin-bottom:16px;overflow:hidden}.lifecycle-segment{min-width:4px;transition:width .5s ease}.lifecycle-legend{display:flex;flex-wrap:wrap;gap:12px}.legend-item{align-items:center;color:var(--text-secondary);display:flex;font-size:.8rem;gap:6px}.legend-dot{border-radius:50%;flex-shrink:0;height:10px;width:10px}.legend-count{color:var(--text-primary);font-weight:600}.chart-empty{color:var(--text-muted);font-size:.875rem;padding:32px;text-align:center}.type-distribution{display:flex;flex-direction:column;gap:10px}.type-row{align-items:center;display:flex;gap:12px}.type-name{color:var(--text-primary);flex-shrink:0;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100px}.type-bar-wrapper{background:var(--bg-base);border-radius:4px;flex:1 1;height:8px;overflow:hidden}.type-bar-fill{background:#6366f1;border-radius:4px;height:100%;min-width:4px;transition:width .5s ease}.type-count{color:var(--text-primary);font-size:.85rem;font-weight:600;text-align:right;width:30px}.events-list{display:flex;flex-direction:column}.event-item{align-items:center;border-bottom:1px solid var(--bg-secondary);cursor:pointer;display:flex;gap:12px;padding:10px 12px;transition:background .1s}.event-item:last-child{border-bottom:none}.event-item:hover{background:#3b82f60a}.event-status{flex-shrink:0;font-size:.85rem}.event-name{color:#60a5fa;font-size:.875rem;font-weight:600;min-width:120px}.event-type{flex:1 1}.type-badge-sm{background:#6366f11f;border-radius:10px;color:#a5b4fc;font-size:.75rem;padding:2px 8px}.event-action{color:var(--text-secondary);font-size:.8rem;min-width:100px}.event-time{color:var(--text-muted);font-size:.75rem;min-width:140px;text-align:right}.events-empty{font-size:.875rem;padding:32px}.dashboard-loading,.events-empty{color:var(--text-muted);text-align:center}.dashboard-loading{padding:80px 20px}.dashboard-loading .loading-spinner{animation:spin .8s linear infinite;border:3px solid var(--bg-hover);border-radius:50%;border-top:3px solid #3b82f6;height:32px;margin:0 auto 16px;width:32px}@media (max-width:768px){.stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.event-item{flex-wrap:wrap;gap:6px}.event-time{padding-left:28px;text-align:left;width:100%}}.status-summary{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.status-card{align-items:center;background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:12px;cursor:pointer;display:flex;flex-direction:column;gap:4px;min-width:90px;padding:14px 20px;transition:all .15s}.status-card:hover{background:var(--bg-secondary);border-color:var(--border-light)}.status-card.active{background:#3b82f614;border-color:#3b82f6}.status-icon{font-size:1.2rem}.status-count{color:var(--text-bright);font-size:1.4rem;font-weight:700}.status-label{color:var(--text-secondary);font-size:.7rem;letter-spacing:.05em;text-transform:uppercase}.filter-bar{align-items:center;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.search-input-wrapper{flex:1 1;min-width:200px;position:relative}.search-icon{font-size:.9rem;left:12px;position:absolute;top:50%;transform:translateY(-50%)}.search-input{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:8px;box-sizing:border-box;color:var(--text-bright);font-size:.9rem;padding:10px 36px;width:100%}.search-input:focus{border-color:#3b82f6;outline:none}.search-input::placeholder{color:var(--text-muted)}.search-clear{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:.85rem;position:absolute;right:8px;top:50%;transform:translateY(-50%)}.filter-select{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:8px;color:var(--text-bright);font-size:.85rem;padding:10px 12px}.filter-select:focus{border-color:#3b82f6;outline:none}.btn-primary{background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:10px 20px;transition:background .15s;white-space:nowrap}.btn-primary:hover{background:#2563eb}.btn-secondary{background:#0000;border:1px solid var(--bg-hover);border-radius:8px;color:var(--text-secondary);cursor:pointer;font-size:.85rem;padding:10px 16px;transition:all .15s;white-space:nowrap}.btn-secondary:hover{border-color:var(--border-light);color:var(--text-primary)}.btn-danger{background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;color:#fca5a5;cursor:pointer;font-size:.85rem;padding:8px 16px;transition:all .15s}.btn-danger:hover{background:#ef444433}.error-banner{align-items:center;background:#ef444414;border:1px solid #ef44444d;border-radius:8px;color:#fca5a5;display:flex;font-size:.875rem;justify-content:space-between;margin-bottom:16px;padding:12px 16px}.error-banner button{background:none;border:1px solid #ef444466;border-radius:4px;color:#fca5a5;cursor:pointer;font-size:.8rem;padding:4px 12px}.device-table-wrapper{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:12px;overflow:hidden}.device-table{border-collapse:collapse;width:100%}.device-table thead th{background:var(--bg-base);border-bottom:1px solid var(--bg-hover);color:var(--text-muted);font-size:.75rem;font-weight:600;letter-spacing:.05em;padding:12px 16px;text-align:left;text-transform:uppercase}.device-table tbody td{border-bottom:1px solid var(--bg-primary);color:var(--text-primary);font-size:.875rem;padding:12px 16px}.device-row{cursor:pointer;transition:background .1s}.device-row:hover{background:#3b82f60a}.thing-name{color:#60a5fa;font-weight:600}.type-badge{background:#6366f126;border-radius:12px;color:#a5b4fc;font-size:.8rem;font-weight:500;padding:3px 10px}.type-none{color:var(--border-light)}.lifecycle-badge{align-items:center;background:#ffffff0a;border:1px solid var(--badge-color,var(--border-light));border-radius:12px;color:var(--text-secondary);color:var(--badge-color,var(--text-secondary));display:inline-flex;font-size:.8rem;font-weight:500;gap:4px;padding:3px 10px}.td-time{color:var(--text-muted);font-size:.8rem}.table-empty,.table-loading{color:var(--text-muted);padding:48px 16px!important;text-align:center}.loading-spinner{border:3px solid var(--bg-hover);border-top:3px solid #3b82f6;margin:0 auto 12px}.load-more{padding:16px;text-align:center}.result-count{color:var(--text-muted);font-size:.8rem;padding:12px;text-align:center}@media (max-width:768px){.status-summary{gap:8px}.status-card{min-width:70px;padding:10px 14px}.status-count{font-size:1.1rem}.filter-bar{align-items:stretch;flex-direction:column}.search-input-wrapper{min-width:100%}.device-table-wrapper{overflow-x:auto}.device-table{min-width:600px}}.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sortable-th:hover{background:var(--bg-hover);color:var(--text-primary)}.detail-page{max-width:1200px}.detail-loading{color:var(--text-muted);padding:80px 20px;text-align:center}.detail-header{align-items:center;display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px}.btn-back{background:none;border:1px solid var(--bg-hover);border-radius:8px;color:var(--text-secondary);cursor:pointer;font-size:.85rem;padding:8px 14px;transition:all .15s}.btn-back:hover{border-color:var(--border-light);color:var(--text-primary)}.detail-title{align-items:center;display:flex;flex:1 1;gap:12px}.detail-title h1{color:var(--text-bright);font-size:1.4rem;font-weight:700;margin:0}.detail-actions{display:flex;gap:8px}.detail-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:20px}.detail-card{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:12px;padding:20px}.detail-card.full-width{margin-bottom:20px}.detail-card h3{color:var(--text-primary);font-size:.95rem;font-weight:600;margin:0 0 16px}.sub-heading{border-top:1px solid var(--bg-secondary);color:var(--text-secondary);font-size:.85rem;font-weight:600;margin:20px 0 10px;padding-top:16px}.info-grid{display:flex;flex-direction:column;gap:8px}.info-row{align-items:flex-start;display:flex;justify-content:space-between;padding:6px 0}.info-label{color:var(--text-muted);flex-shrink:0;font-size:.8rem;min-width:100px}.info-value{color:var(--text-primary);font-size:.875rem;text-align:right;word-break:break-all}.info-value-sm{color:var(--text-secondary);font-size:.75rem}.text-muted{color:var(--border-light)}.lifecycle-current{display:flex;font-size:.875rem;gap:12px;margin-bottom:16px}.lifecycle-badge-lg,.lifecycle-current{align-items:center;color:var(--text-secondary)}.lifecycle-badge-lg{background:#ffffff0a;border:1px solid var(--badge-color,var(--border-light));border-radius:16px;color:var(--badge-color,var(--text-secondary));display:inline-flex;font-size:.9rem;font-weight:600;gap:6px;padding:6px 14px}.lifecycle-actions{margin-bottom:16px}.lifecycle-hint{color:var(--text-muted);font-size:.8rem;margin:0 0 8px}.btn-lifecycle{background:#ffffff08;border:1px solid var(--btn-color,var(--border-light));border-radius:8px;color:var(--text-secondary);color:var(--btn-color,var(--text-secondary));cursor:pointer;font-size:.85rem;margin-bottom:8px;margin-right:8px;padding:8px 16px;transition:all .15s}.btn-lifecycle:hover:not(:disabled){background:#ffffff0f}.btn-lifecycle:disabled{cursor:not-allowed;opacity:.5}.shadow-viewer{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr 1fr}.shadow-panel h4{color:var(--text-secondary);font-size:.8rem;font-weight:600;letter-spacing:.05em;margin:0 0 8px;text-transform:uppercase}.shadow-json{background:var(--bg-base);border:1px solid var(--bg-secondary);border-radius:8px;color:#a5f3fc;font-family:JetBrains Mono,Fira Code,monospace;font-size:.8rem;line-height:1.5;margin:0;max-height:300px;overflow-x:auto;overflow-y:auto;padding:12px}.shadow-empty{color:var(--text-muted);padding:32px;text-align:center}.diff-list{gap:8px}.diff-item,.diff-list{display:flex;flex-direction:column}.diff-item{background:#eab3080d;border:1px solid #eab30826;border-radius:6px;gap:4px;padding:8px 10px}.diff-path{color:#fbbf24;font-family:monospace;font-size:.8rem;font-weight:600}.diff-arrow{color:var(--text-secondary);font-size:.8rem}.diff-reported{color:#f87171;text-decoration:line-through}.diff-desired{color:#4ade80}.diff-status{font-size:.75rem}.diff-synced{color:#4ade80;font-size:.9rem;padding:20px;text-align:center}.modal-overlay{align-items:center;background:#0009;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:16px;max-height:80vh;max-width:560px;overflow-y:auto;padding:24px;width:100%}.modal-content h3{color:var(--text-bright);font-size:1.1rem;margin:0 0 8px}.modal-description{color:var(--text-secondary);font-size:.85rem;margin:0 0 16px}.shadow-editor{background:var(--bg-base);border:1px solid var(--bg-hover);border-radius:8px;box-sizing:border-box;color:#a5f3fc;font-family:JetBrains Mono,monospace;font-size:.85rem;line-height:1.5;padding:12px;resize:vertical;width:100%}.shadow-editor:focus{border-color:#3b82f6;outline:none}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:16px}@media (max-width:768px){.detail-grid,.shadow-viewer{grid-template-columns:1fr}.detail-header{align-items:flex-start;flex-direction:column}.detail-actions{justify-content:flex-end;width:100%}}.tab-bar{background:var(--bg-primary);border-radius:10px;display:flex;gap:4px;margin-bottom:20px;padding:4px;width:-webkit-fit-content;width:fit-content}.tab-item{background:none;border:none;border-radius:8px;color:var(--text-secondary);cursor:pointer;font-size:.9rem;padding:10px 20px;transition:all .15s}.tab-item:hover{color:var(--text-primary)}.tab-item.active{background:#3b82f6;color:#fff;font-weight:600}.provision-card{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:12px;max-width:640px;padding:24px}.form-group{margin-bottom:20px}.form-group label{color:var(--text-secondary);display:block;font-size:.8rem;font-weight:600;letter-spacing:.05em;margin-bottom:6px;text-transform:uppercase}.required{color:#f87171}.form-group input,.form-group select{background:var(--bg-base);border:1px solid var(--bg-hover);border-radius:8px;box-sizing:border-box;color:var(--text-bright);font-size:.9rem;padding:10px 14px;width:100%}.form-group input:focus,.form-group select:focus{border-color:#3b82f6;outline:none}.form-hint{color:var(--text-muted);display:block;font-size:.75rem;margin-top:4px}.attributes-editor{display:flex;flex-direction:column;gap:8px}.attribute-row{align-items:center;display:flex;gap:8px}.attribute-row input{background:var(--bg-base);border:1px solid var(--bg-hover);border-radius:6px;color:var(--text-bright);flex:1 1;font-size:.85rem;padding:8px 12px}.attribute-row input:focus{border-color:#3b82f6;outline:none}.btn-remove{border:none;color:#f87171;font-size:1rem;padding:4px 8px}.btn-add-attr,.btn-remove{background:none;cursor:pointer}.btn-add-attr{border:1px dashed var(--bg-hover);border-radius:6px;color:var(--text-muted);font-size:.85rem;padding:8px;transition:all .15s}.btn-add-attr:hover{border-color:#3b82f6;color:#60a5fa}.provision-info{background:#3b82f60f;border:1px solid #3b82f626;border-radius:8px;margin-bottom:20px;padding:14px 16px}.provision-info p{color:var(--text-secondary);font-size:.85rem;margin:0 0 8px}.provision-info ul{color:var(--text-muted);font-size:.8rem;line-height:1.8;margin:0;padding-left:20px}.btn-lg{font-size:1rem!important;padding:14px!important;width:100%}.result-header h3{color:#4ade80;font-size:1.2rem;margin:0 0 16px}.result-steps{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.result-step{align-items:center;color:var(--text-primary);display:flex;font-size:.85rem;gap:8px;padding:6px 0}.result-step .step-icon{flex-shrink:0}.result-warning{background:#eab30814;border:1px solid #eab30833;border-radius:8px;color:#fbbf24;font-size:.85rem;margin-bottom:16px;padding:12px 16px}.result-actions{display:flex;gap:12px;margin-bottom:16px}.result-actions .btn-primary{flex:1 1}.result-nav{border-top:1px solid var(--bg-secondary);display:flex;gap:12px;padding-top:16px}.result-nav .btn-secondary{flex:1 1}.bulk-textarea{background:var(--bg-base);border:1px solid var(--bg-hover);border-radius:8px;box-sizing:border-box;color:var(--text-bright);font-family:JetBrains Mono,monospace;font-size:.85rem;line-height:1.6;padding:12px;resize:vertical;width:100%}.bulk-textarea:focus{border-color:#3b82f6;outline:none}.bulk-summary{color:var(--text-secondary);display:flex;font-size:.9rem;gap:16px;margin-bottom:16px}.bulk-success{color:#4ade80;font-weight:600}.bulk-fail{color:#f87171;font-weight:600}.bulk-results{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.bulk-result-item{align-items:center;border-radius:6px;display:flex;font-size:.85rem;gap:8px;padding:8px 12px}.bulk-result-item.success{background:#4ade800d}.bulk-result-item.failed{background:#f871710d}.bulk-thing-name{color:var(--text-primary);font-weight:600;min-width:120px}.bulk-download{display:flex;gap:8px;margin-left:auto}.bulk-error{color:#f87171;font-size:.8rem;margin-left:auto}@media (max-width:768px){.provision-card{max-width:100%}.result-actions,.result-nav{flex-direction:column}.attribute-row{flex-wrap:wrap}}.groups-layout{grid-gap:20px;display:grid;gap:20px;grid-template-columns:280px 1fr;min-height:500px}.group-detail-panel,.groups-list-panel{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:12px;padding:16px}.group-detail-panel h3,.groups-list-panel h3{color:var(--text-primary);font-size:.9rem;font-weight:600;margin:0 0 12px}.groups-list{display:flex;flex-direction:column;gap:4px}.group-item{align-items:center;border-radius:8px;cursor:pointer;display:flex;gap:8px;padding:10px 12px;transition:all .1s}.group-item:hover{background:#3b82f60f}.group-item.active{background:#3b82f61f;border:1px solid #3b82f633}.group-icon{flex-shrink:0;font-size:1rem}.group-name{color:var(--text-primary);flex:1 1;font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-remove-sm{background:none;border:none;cursor:pointer;font-size:.8rem;opacity:.4;padding:2px 4px;transition:opacity .15s}.btn-remove-sm:hover{opacity:1}.group-detail-header{border-bottom:1px solid var(--bg-secondary);margin-bottom:20px;padding-bottom:16px}.group-desc{color:var(--text-secondary);font-size:.85rem;margin:8px 0 0}.group-things-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.group-things-header h4{color:var(--text-secondary);font-size:.85rem;font-weight:600;margin:0}.group-things-list{display:flex;flex-direction:column;gap:4px}.group-thing-item{align-items:center;border:1px solid var(--bg-secondary);border-radius:6px;display:flex;gap:8px;padding:8px 12px}.group-thing-item:hover{background:#ffffff05}.thing-icon{font-size:.9rem}.thing-name-text{color:#60a5fa;flex:1 1;font-size:.85rem;font-weight:500}.panel-loading{display:flex;justify-content:center;padding:40px}.panel-empty{color:var(--text-muted);font-size:.875rem;padding:32px;text-align:center}.panel-placeholder{align-items:center;color:var(--border-light);display:flex;font-size:.95rem;height:100%;justify-content:center;min-height:300px}@media (max-width:768px){.groups-layout{grid-template-columns:1fr}}.group-name-block{display:flex;flex:1 1;flex-direction:column;min-width:0}.group-display-name{color:var(--text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-id-hint{color:var(--text-secondary);font-size:11px;margin-top:1px}.group-id-label{color:var(--text-secondary);font-size:12px;margin-left:8px}.result-thing-name{color:var(--border-light);font-size:14px;margin-top:4px}.flight-calendar{gap:16px;height:100%}.fc-loading,.flight-calendar{display:flex;flex-direction:column}.fc-loading{align-items:center;color:var(--text-secondary);gap:12px;height:400px;justify-content:center}.fc-header{align-items:flex-end;display:flex;flex-shrink:0;justify-content:space-between}.fc-title{color:var(--text-bright);font-size:1.5rem;font-weight:700;margin:0}.fc-subtitle{color:var(--text-muted);font-size:.85rem;margin:4px 0 0}.fc-header-right{align-items:center;display:flex;gap:12px}.fc-body{display:flex;flex:1 1;gap:16px;min-height:0}.fc-sidebar{display:flex;flex-direction:column;flex-shrink:0;gap:12px;max-height:calc(100vh - 140px);overflow-y:auto;width:220px}.fc-main{flex:1 1;min-width:0;overflow:auto;padding:16px}.fc-main,.fc-widget{background:var(--bg-primary);border-radius:12px}.fc-widget{padding:14px}.fc-widget-alert{border:1px solid #f59e0b44}.fc-widget-title{align-items:center;color:var(--text-secondary);display:flex;font-size:.8rem;font-weight:600;gap:6px;letter-spacing:.05em;margin:0 0 10px;text-transform:uppercase}.fc-alert-badge{background:#ef4444;border-radius:99px;color:#fff;font-size:.7rem;margin-left:auto;padding:1px 6px}.fc-drone-list{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto;padding-right:4px}.fc-drone-list::-webkit-scrollbar{width:4px}.fc-drone-list::-webkit-scrollbar-track{background:var(--bg-base);border-radius:2px}.fc-drone-list::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:2px}.fc-drone-item{align-items:center;border-radius:8px;cursor:pointer;display:flex;font-size:.85rem;gap:8px;min-width:0;padding:6px 8px;transition:background .15s}.fc-drone-item:hover{background:#2d3f55}.fc-drone-item.active{background:#1d4ed833;outline:1px solid #3b82f6}.fc-drone-color{border-radius:50%;flex-shrink:0;height:10px;width:10px}.fc-drone-name{color:var(--text-primary);flex:1 1;font-size:.85rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fc-drone-status{border-radius:99px;font-size:.7rem;padding:2px 6px;white-space:nowrap}.fc-status-available{background:#166534;color:#86efac}.fc-status-flying{background:#1e40af;color:#93c5fd}.fc-status-maintenance{background:#92400e;color:#fcd34d}.fc-status-repair{background:#7f1d1d;color:#fca5a5}.fc-alert-list{display:flex;flex-direction:column;gap:6px}.fc-alert-item{border-left:3px solid;border-radius:8px;padding:8px}.fc-urgency-overdue{background:#7f1d1d22;border-color:#ef4444}.fc-urgency-urgent{background:#78350f22;border-color:#f59e0b}.fc-urgency-soon{background:#1e3a5f22;border-color:#3b82f6}.fc-alert-drone{color:var(--text-primary);font-size:.8rem;font-weight:600}.fc-alert-date{color:var(--text-secondary);font-size:.75rem}.fc-alert-type{color:var(--text-muted);font-size:.72rem}.fc-btn-primary{background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;padding:8px 16px;transition:background .15s;white-space:nowrap}.fc-btn-primary:hover{background:#2563eb}.fc-btn-primary:disabled{cursor:not-allowed;opacity:.5}.fc-btn-secondary{background:var(--bg-hover);border:none;border-radius:8px;color:var(--text-primary);cursor:pointer;font-size:.9rem;padding:8px 16px;transition:background .15s}.fc-btn-secondary:hover{background:var(--border-light)}.fc-btn-danger{background:#ef4444;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;padding:8px 16px;transition:background .15s}.fc-btn-danger:hover{background:#dc2626}.fc-btn-danger-outline{background:#0000;border:1px solid #ef4444;border-radius:8px;color:#ef4444;cursor:pointer;font-size:.9rem;padding:8px 16px;transition:all .15s}.fc-btn-danger-outline:hover{background:#ef444422}.fc-filter-select{background:var(--bg-primary);border:1px solid var(--bg-hover);border-radius:8px;color:var(--text-primary);cursor:pointer;font-size:.85rem;padding:7px 12px}.fc-modal-overlay{align-items:center;background:#0009;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.fc-modal{background:var(--bg-primary);border-radius:16px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;max-height:90vh;max-width:560px;width:100%}.fc-modal-header{align-items:center;border-bottom:1px solid var(--bg-hover);display:flex;flex-shrink:0;justify-content:space-between;padding:20px 24px 16px}.fc-modal-header h2{color:var(--text-bright);font-size:1.15rem;margin:0}.fc-modal-close{background:none;border:none;border-radius:6px;color:var(--text-muted);cursor:pointer;font-size:1.2rem;padding:4px 8px;transition:all .15s}.fc-modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}.fc-modal-body{flex:1 1;overflow-y:auto;padding:20px 24px}.fc-modal-footer{border-top:1px solid var(--bg-hover);display:flex;flex-shrink:0;gap:10px;justify-content:flex-end;padding:16px 24px 20px}.fc-detail-grid{display:flex;flex-direction:column;gap:12px}.fc-detail-row{align-items:flex-start;display:flex;gap:12px}.fc-detail-label{color:var(--text-muted);flex-shrink:0;font-size:.8rem;padding-top:2px;width:90px}.fc-detail-value{align-items:center;color:var(--text-primary);display:flex;flex:1 1;font-size:.9rem;gap:8px}.fc-color-dot{border-radius:50%;flex-shrink:0;height:10px;width:10px}.fc-status-badge{border-radius:99px;font-size:.78rem;font-weight:500;padding:3px 10px}.fc-status-badge.fc-status-planned{background:#1e3a5f;color:#93c5fd}.fc-status-badge.fc-status-in_flight{background:#064e3b;color:#6ee7b7}.fc-status-badge.fc-status-completed{background:var(--bg-primary);border:1px solid var(--bg-hover);color:var(--text-secondary)}.fc-form-error,.fc-status-badge.fc-status-cancelled{background:#450a0a;color:#fca5a5}.fc-form-error{border-radius:8px;font-size:.85rem;margin-bottom:16px;padding:10px 14px}.fc-form-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:1fr 1fr}.fc-form-group{display:flex;flex-direction:column;gap:6px}.fc-form-full{grid-column:1/-1}.fc-form-group label{color:var(--text-secondary);font-size:.8rem;font-weight:500}.fc-required{color:#ef4444}.fc-form-group input,.fc-form-group select,.fc-form-group textarea{background:var(--bg-base);border:1px solid var(--bg-hover);border-radius:8px;box-sizing:border-box;color:var(--text-primary);font-size:.9rem;padding:8px 12px;transition:border-color .15s;width:100%}.fc-form-group input:focus,.fc-form-group select:focus,.fc-form-group textarea:focus{border-color:#3b82f6;outline:none}.fc-form-group textarea{resize:vertical}.fc-main .fc-toolbar-title{color:var(--text-bright)!important;font-size:1.1rem!important}.fc-main .fc-button{background:var(--bg-hover)!important;border-color:var(--border-light)!important;color:var(--text-primary)!important;font-size:.8rem!important}.fc-main .fc-button:hover{background:var(--border-light)!important}.fc-main .fc-button-active{background:#3b82f6!important;border-color:#2563eb!important}.fc-main .fc-col-header-cell{background:var(--bg-base)!important;color:var(--text-secondary)!important;font-size:.8rem!important;padding:6px 0!important}.fc-main .fc-timegrid-slot-label{color:var(--text-muted)!important;font-size:.75rem!important}.fc-main .fc-daygrid-day,.fc-main .fc-timegrid-col{background:#0000!important}.fc-main .fc-scrollgrid,.fc-main .fc-scrollgrid td,.fc-main .fc-scrollgrid th{border-color:var(--bg-primary)!important}.fc-main .fc-day-today{background:#1d4ed811!important}.fc-main .fc-event{border-radius:6px!important;cursor:pointer!important;font-size:.78rem!important;padding:2px 6px!important}.fc-main .fc-now-indicator-line{border-color:#ef4444!important}.fc-main .fc-highlight{background:#3b82f622!important}.fc-main .fc-non-business{background:#0f172a44!important}.fc-main .fc-theme-standard td,.fc-main .fc-theme-standard th{border-color:var(--bg-hover)!important}.fc-group-badge{background:#3d6ef5;border-radius:10px;color:#fff;display:inline-block;font-size:11px;font-weight:500;margin-left:6px;padding:1px 8px;vertical-align:middle}.fc-confirm-top{position:relative;z-index:1100}.fc-modal-overlay:has(.fc-confirm-top){z-index:1050}.fc-drone-booked{background:#3d6ef5;border-radius:99px;color:#fff;flex-shrink:0;font-size:.65rem;margin-left:auto;padding:1px 5px;white-space:nowrap}.fc-group-list{display:flex;flex-direction:column;gap:6px}.fc-group-item{align-items:center;border-radius:8px;color:var(--text-primary);cursor:pointer;display:flex;font-size:.85rem;gap:8px;padding:6px 8px;transition:background .15s}.fc-group-item:hover{background:var(--bg-hover)}.fc-group-item.active{background:#3d6ef522;color:#3d6ef5}.fc-group-icon{font-size:1rem}.fc-group-count{color:var(--text-muted);font-size:.75rem;margin-left:auto}.fc-legend{border-top:1px solid var(--bg-hover);display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:10px;padding-top:8px}.fc-legend-item{align-items:center;color:var(--text-muted);display:flex;font-size:.7rem;gap:4px}.fc-legend-dot{border-radius:50%;flex-shrink:0;height:8px;width:8px}.fc-drone-booked-icon{flex-shrink:0;font-size:.85rem}*,:after,:before{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f172a;color:#e2e8f0;font-family:Meiryo,メイリオ,Noto Sans JP,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;margin:0;padding:0}#root{min-height:100vh}a{color:#60a5fa;text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#0f172a}::-webkit-scrollbar-thumb{background:#334155;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#475569}@keyframes spin{to{transform:rotate(1turn)}}.loading-spinner{animation:spin .8s linear infinite;border:3px solid #334155;border-radius:50%;border-top-color:#3b82f6;height:24px;margin:0 auto;width:24px}:root{--bg-base:#1a1d23;--bg-primary:#22262f;--bg-secondary:#2a2f3a;--bg-hover:#32384a;--bg-sidebar:#1e2128;--bg-sidebar-active:#2d3344;--border:#363c4e;--border-light:#444c60;--text-primary:#dce1ea;--text-secondary:#8b93a8;--text-muted:#5a6278;--text-bright:#eef0f5;--text-dark:#1a1d23;--input-bg:#161920;--accent:#7c8cf8;--accent-hover:#6470e8;--shadow:#0006}@media (prefers-color-scheme:light){:root{--bg-base:#f5f5f0;--bg-primary:#fff;--bg-secondary:#fafaf8;--bg-hover:#eeede8;--bg-sidebar:#f0efe8;--bg-sidebar-active:#e4e2d8;--border:#dddcd6;--border-light:#cccbc4;--text-primary:#1a1a18;--text-secondary:#4a4a44;--text-muted:#8a8a82;--text-bright:#0a0a08;--text-dark:#fff;--input-bg:#fff;--accent:#5c6bc0;--accent-hover:#4a58a8;--shadow:#0000001a}}
/*# sourceMappingURL=main.532f0b96.css.map*/