:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:1.6em;line-height:1.1;margin:0}button{border-radius:6px;border:1px solid transparent;padding:.5em 1em;font-size:.9em;font-weight:500;font-family:inherit;background-color:#1a1a1a;color:inherit;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button.active{border-color:#646cff;background-color:#2a2a5a}input,select{padding:.5em;border-radius:6px;border:1px solid #444;background-color:#1a1a1a;color:inherit;font-size:.9em;width:100%}label{display:block;font-size:.85em;margin-bottom:.3em;color:#aaa}.dashboard{display:flex;flex-direction:column;height:100vh}.dashboard-header{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1.2rem;border-bottom:1px solid #333}.dashboard-body{display:flex;flex:1;overflow:hidden}.sidebar{width:280px;padding:1rem;border-right:1px solid #333;display:flex;flex-direction:column;gap:1rem;overflow-y:auto}.sidebar-wide{width:380px}.timeline-area{flex:1;overflow-y:auto;padding:1rem}.search-mode-toggle{display:flex;gap:.5rem}.search-mode-toggle button{flex:1;font-size:.8em}.filter-section{display:flex;flex-direction:column;gap:.3rem}.entity-search{display:flex;gap:.4rem}.entity-search input{flex:1}.entity-search button{white-space:nowrap}.active-search{padding:.5em;background:#1a1a3a;border-radius:6px;font-size:.85em}.required{color:#ff6b6b;margin-left:.2em}.optional{color:#666;font-weight:400}.field-error{color:#ff6b6b;font-size:.8em}.has-error select,.has-error input{border-color:#ff6b6b}.search-btn{width:100%;padding:.6em;font-weight:600;background-color:#2a2a5a;border-color:#646cff}.search-btn:hover{background-color:#3a3a6a}.login-status{display:flex;align-items:center;gap:.8rem;font-size:.85em}.loading,.error{padding:2rem;text-align:center}.error{color:#ff6b6b}.timeline-loading,.timeline-empty{padding:2rem;text-align:center;color:#888}.timeline-group{margin-bottom:1.5rem}.timeline-date{font-size:.9em;color:#888;border-bottom:1px solid #333;padding-bottom:.3em;margin-bottom:.5em}.timeline-entry{display:flex;align-items:center;gap:.8rem;padding:.5rem .6rem;border-radius:6px;cursor:pointer;font-size:.85em;transition:background-color .15s}.timeline-entry:hover{background:#2a2a3a}.timeline-time{color:#888;font-family:monospace;min-width:70px}.timeline-table{color:#8ab4f8;min-width:120px}.timeline-op{font-weight:600;font-size:.75em;padding:.15em .5em;border-radius:4px;min-width:60px;text-align:center}.timeline-op-create{background:#1b4332;color:#95d5b2}.timeline-op-update{background:#2b3a4e;color:#8ab4f8}.timeline-op-delete{background:#4a1a1a;color:#ff8a8a}.timeline-op-snapshot{background:#3a3a1a;color:#d4d48a}.timeline-key{color:#aaa;font-family:monospace;font-size:.85em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.change-detail-overlay{position:fixed;inset:0;background:#000000b3;z-index:100;display:flex;align-items:center;justify-content:center}.change-detail-panel{background:#1a1a1a;border-radius:8px;width:90vw;max-width:1200px;max-height:85vh;overflow:auto;padding:1.5rem}.change-detail-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.change-detail-header h3{flex:1;margin:0}.change-detail-time{color:#888;font-size:.85em}.close-btn{font-size:.8em}.timeline-changed-fields{color:#c9a0dc;font-size:.8em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.changed-fields-list{margin-bottom:1rem}.changed-fields-list h4{margin:0 0 .5rem;font-size:.95em;color:#aaa}.changed-fields-table{width:100%;border-collapse:collapse;font-size:.85em;font-family:monospace}.changed-fields-table th{text-align:left;padding:.4em .6em;border-bottom:1px solid #444;color:#888;font-weight:500}.changed-fields-table td{padding:.4em .6em;border-bottom:1px solid #2a2a2a;vertical-align:top;word-break:break-word;max-width:400px}.field-name{color:#8ab4f8;white-space:nowrap;font-weight:600}.field-before{color:#ff8a8a}.field-after{color:#95d5b2}.raw-diff{margin-top:1rem}.raw-diff summary{cursor:pointer;color:#888;font-size:.85em;padding:.4em 0}.raw-diff summary:hover{color:#aaa}.diff-container{border-radius:6px;overflow:hidden}.batch-progress{padding:.8rem 0;font-size:.85em;color:#aaa}.batch-progress-bar{margin-top:.4rem;height:4px;background:#333;border-radius:2px;overflow:hidden}.batch-progress-fill{height:100%;background:#646cff;border-radius:2px;transition:width .3s ease}.field-filter-row{display:flex;gap:.4rem}.field-filter-row input{flex:1;min-width:0}.filter-apply-btn{font-size:.8em;padding:.4em .7em;white-space:nowrap;background-color:#2a2a5a;border-color:#646cff}.filter-apply-btn:hover{background-color:#3a3a6a}.filter-clear-btn{font-size:.8em;padding:.4em .7em;white-space:nowrap;background-color:#1a1a1a;border-color:#666}.filter-clear-btn:hover{border-color:#888}.primary-key-textarea{padding:.5em;border-radius:6px;border:1px solid #444;background-color:#1a1a1a;color:inherit;font-size:.9em;font-family:monospace;width:100%;resize:vertical;text-transform:uppercase}.key-count{font-size:.75em;color:#888}.toggle-label{display:flex;align-items:center;gap:.5em;cursor:pointer;color:inherit;font-size:.85em}.toggle-label input[type=checkbox]{width:auto}.timeline-record-group{margin-bottom:2rem;border:1px solid #333;border-radius:8px;padding:1rem}.timeline-record-id{font-size:.85em;font-family:monospace;color:#8ab4f8;border-bottom:1px solid #333;padding-bottom:.3em;margin:0 0 .5em}.revert-btn{font-size:.7em;padding:.2em .6em;background:#4a1a1a;border-color:#ff6b6b;color:#ff8a8a;margin-left:auto;flex-shrink:0}.revert-btn:hover{background:#6a2a2a;border-color:#ff8a8a}.revert-btn:disabled{opacity:.5;cursor:not-allowed}.revert-status{display:flex;align-items:center;justify-content:space-between;padding:.6em 1em;border-radius:6px;margin-bottom:1rem;font-size:.85em}.revert-success{background:#1b4332;color:#95d5b2;border:1px solid #2d6a4f}.revert-error{background:#4a1a1a;color:#ff8a8a;border:1px solid #6a2a2a}.revert-status-close{background:transparent;border:none;color:inherit;cursor:pointer;font-size:1em;padding:0 .3em}.confirm-dialog{background:#1a1a1a;border-radius:8px;padding:1.5rem;max-width:450px;width:90vw}.confirm-dialog h3{margin:0 0 .8em}.confirm-dialog p{color:#ccc;font-size:.9em;line-height:1.5}.confirm-actions{display:flex;gap:.8rem;margin-top:1rem}.confirm-yes{background:#4a1a1a;border-color:#ff6b6b;color:#ff8a8a}.confirm-yes:hover{background:#6a2a2a}.confirm-no{background:#2a2a3a;border-color:#666}.header-left{display:flex;align-items:center;gap:.8rem}.back-btn{font-size:1.2em;padding:.2em .5em;background:transparent;border:1px solid #444}.back-btn:hover{border-color:#646cff}.landing-body{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.landing-cards{display:flex;gap:2rem;flex-wrap:wrap;justify-content:center}.landing-card{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:2rem;width:340px;background:#1a1a1a;border:1px solid #333;border-radius:12px;cursor:pointer;transition:border-color .2s,background-color .2s}.landing-card:hover{border-color:#646cff;background:#1a1a2a}.landing-card h2{margin:0 0 .5rem;font-size:1.2em}.landing-card p{margin:0;color:#aaa;font-size:.9em;line-height:1.5}.tag-info-card{background:#1a1a3a;border-radius:8px;padding:.8rem;display:flex;flex-direction:column;gap:.4rem}.tag-info-row{display:flex;flex-direction:column;gap:.1rem}.tag-info-label{font-size:.75em;color:#888;text-transform:uppercase;letter-spacing:.05em}.tag-info-value{font-size:.85em;word-break:break-all}.mono{font-family:monospace}.tag-lookup-actions{display:flex;gap:.4rem;margin-top:.4rem}.tag-lookup-actions .search-btn{flex:1}.tag-lookup-actions .filter-clear-btn{flex-shrink:0}.device-list{max-height:240px;overflow-y:auto;display:flex;flex-direction:column;gap:.2rem;margin-top:.3rem}.device-list-item{display:flex;align-items:center;gap:.5rem;padding:.35em .5em;font-size:.8em;text-align:left;background:#1a1a1a;border:1px solid #333;border-radius:4px;cursor:pointer;width:100%}.device-list-item:hover{border-color:#646cff;background:#1a1a2a}.device-list-model{color:#8ab4f8;font-weight:600;flex-shrink:0}.device-list-id{color:#aaa;font-family:monospace;font-size:.9em}.device-list-animal{color:#c9a0dc;font-size:.85em;margin-left:auto;flex-shrink:0}.loading-text{color:#888;font-size:.85em}.trigger-panel,.trigger-detail{display:flex;flex-direction:column;gap:.5rem}.trigger-description{color:#aaa;font-size:.85em;line-height:1.4;margin:0}.trigger-btn{width:100%;padding:.6em;font-weight:600;background-color:#1b4332;border-color:#2d6a4f;color:#95d5b2}.trigger-btn:hover{background-color:#2d6a4f}.trigger-btn:disabled{opacity:.5;cursor:not-allowed}.trigger-result{font-size:.85em;padding:.5em .8em;border-radius:6px}.trigger-success{background:#1b4332;color:#95d5b2;border:1px solid #2d6a4f}.trigger-error{background:#4a1a1a;color:#ff8a8a;border:1px solid #6a2a2a}.trigger-modal{background:#1a1a1a;border-radius:8px;width:90vw;max-width:500px;max-height:85vh;overflow:auto;padding:1.5rem}.trigger-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.trigger-modal-header h3{margin:0}.trigger-modal-body{display:flex;flex-direction:column;gap:.8rem}.trigger-modal-target{display:grid;grid-template-columns:auto 1fr;gap:.2rem .8rem;font-size:.85em;background:#1a1a3a;padding:.6rem .8rem;border-radius:6px}.action-history-title{margin:0 0 1rem;font-size:1.1em}.action-list{display:flex;flex-direction:column;gap:.8rem}.action-card{border:1px solid #333;border-radius:8px;overflow:hidden}.action-card-header{display:flex;align-items:center;gap:.8rem;padding:.6rem .8rem;background:#1a1a2a;border-bottom:1px solid #333}.action-type-badge{font-weight:600;font-size:.8em;padding:.2em .6em;border-radius:4px;background:#2b3a4e;color:#8ab4f8}.action-type-101{background:#2b3a4e;color:#8ab4f8}.action-type-201{background:#3a2b4e;color:#c9a0dc}.action-status{font-size:.75em;font-weight:600;padding:.15em .5em;border-radius:4px}.action-status-pending{background:#3a3a1a;color:#d4d48a}.action-status-executed{background:#1b4332;color:#95d5b2}.action-status-archived{background:#2a2a2a;color:#888}.action-time{color:#888;font-size:.85em;font-family:monospace;margin-left:auto}.action-card-body{padding:.6rem .8rem;display:flex;flex-direction:column;gap:.4rem}.action-detail-row{display:flex;gap:.8rem;font-size:.85em;align-items:flex-start}.action-detail-label{color:#888;min-width:70px;flex-shrink:0}.action-options-json{background:#1a1a1a;padding:.3em .5em;border-radius:4px;font-size:.85em;white-space:pre-wrap;word-break:break-all}.action-executions{display:flex;flex-direction:column;gap:.2rem}.action-execution-entry{display:flex;gap:.8rem;align-items:center}.action-executor{color:#8ab4f8;font-size:.85em}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}button{background-color:#f9f9f9;color:#213547}button.active{background-color:#dde4ff}input,select{background-color:#fff;border-color:#ccc;color:#213547}.dashboard-header,.sidebar{border-color:#ddd}.timeline-entry:hover{background:#f0f2ff}.active-search{background:#e8eaff}.change-detail-panel,.confirm-dialog{background:#fff}.primary-key-textarea{background-color:#fff;border-color:#ccc;color:#213547}.timeline-record-group{border-color:#ddd}.revert-success{background:#d1fae5;color:#065f46;border-color:#a7f3d0}.revert-error{background:#fee2e2;color:#991b1b;border-color:#fca5a5}.search-btn,.filter-apply-btn{background-color:#4a5abb;border-color:#4a5abb;color:#fff}.filter-clear-btn{background-color:#f0f0f0;border-color:#ccc;color:#213547}.search-btn:hover{background-color:#3a4a9b}.confirm-yes{background:#fee2e2;color:#991b1b;border-color:#fca5a5}.confirm-no{background:#f0f0f0;border-color:#ccc;color:#213547}.confirm-dialog p{color:#555}.revert-btn{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.revert-btn:hover{background:#fecaca}.back-btn{border-color:#ccc;color:#213547}.landing-card{background:#fff;border-color:#ddd}.landing-card:hover{border-color:#4a5abb;background:#f5f6ff}.landing-card p{color:#555}.tag-info-card{background:#e8eaff}.action-card{border-color:#ddd}.action-card-header{background:#f5f6ff;border-color:#ddd}.action-options-json{background:#f5f5f5}.trigger-btn{background-color:#2d6a4f;color:#fff}.trigger-success{background:#d1fae5;color:#065f46;border-color:#a7f3d0}.trigger-error{background:#fee2e2;color:#991b1b;border-color:#fca5a5}.device-list-item{background:#fff;border-color:#ddd}.device-list-item:hover{border-color:#4a5abb;background:#f5f6ff}.trigger-modal{background:#fff;color:#213547}.trigger-modal-target{background:#e8eaff;color:#213547}.trigger-description{color:#555}.trigger-btn{background-color:#2d6a4f;border-color:#2d6a4f;color:#fff}.trigger-btn:hover{background-color:#1b4332}.change-detail-overlay{background:#0006}}
