body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6}.App{text-align:center;overflow-x:hidden}@media(prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#282c34;display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:calc(10px + vmin);color:#fff;position:relative;padding:10px 20px}.App-header h1{flex:1;text-align:center}.header-links{position:absolute;right:20px;display:flex;align-items:center;gap:15px}.camera-page-link{position:absolute;left:20px;padding:7px 16px;border-radius:18px;background:#ff9800;color:#1a1a1a;font-size:1rem;font-weight:700;text-decoration:none;box-shadow:0 0 0 2px #ff980059;transition:background .2s}.camera-page-link:hover{background:#ffb74d}@media(min-width:800px){.App-header h1{padding:0 170px}}@media(max-width:799px){.App-header{flex-wrap:wrap;gap:0 20px}.App-header h1{flex-basis:100%;margin:.3em 0}.camera-page-link,.header-links{position:static;margin-bottom:8px}}.github-link{opacity:.8;transition:opacity .2s;display:flex;align-items:center}.github-link:hover{opacity:1}.about-button{background:transparent;border:2px solid white;border-radius:50%;width:32px;height:32px;padding:0;cursor:pointer;opacity:.8;transition:opacity .2s;display:flex;align-items:center;justify-content:center}.about-button:hover{opacity:1;background:#ffffff1a}.info-icon{color:#fff;font-family:Georgia,serif;font-style:italic;font-weight:700;font-size:18px;line-height:1}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;padding:30px;border-radius:10px;max-width:500px;width:90%;position:relative;text-align:left}.modal-content h2{margin-top:0;margin-bottom:20px;color:#333}.modal-content h3{margin-top:20px;margin-bottom:5px;color:#555}.modal-content p{margin:5px 0;color:#333;line-height:1.5}.modal-content a{color:#06c}.modal-close{position:absolute;top:10px;right:15px;background:none;border:none;font-size:28px;cursor:pointer;color:#666;padding:0;line-height:1}.modal-close:hover{color:#333}.modal-disclaimer{margin-top:25px;padding:15px;background:#f5f5f5;border-left:4px solid #ff9800;font-size:.9em;color:#666}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}input[type=text],input[type=number],select{padding:.5rem;margin-right:.5rem;border:1px solid #ccc;border-radius:5px;font-size:1rem}input[type=number]{width:100px}button{padding:.5rem 1rem;font-size:1rem;border:none;border-radius:5px;cursor:pointer;background-color:#333;color:#fff;transition:background-color .3s ease}button:hover,button:focus{background-color:#555}button:disabled{background-color:#ccc;cursor:not-allowed}.connection-status{margin-top:1rem;padding:.5rem;font-size:1rem;color:#fff;border-radius:5px;display:inline-block}.connected{margin-left:10px;background-color:#28a745}.disconnected{margin-left:10px;background-color:#dc3545}.reconnect-status{margin-top:10px;padding:10px;background-color:#fff3cd;border:1px solid #ffc107;border-radius:5px;display:flex;align-items:center;justify-content:center;gap:15px}.reconnect-status span{color:#856404;font-weight:500}.reconnect-status button{background-color:#dc3545;padding:5px 15px;font-size:.9rem}.content-container{display:grid;grid-template-columns:repeat(12,1fr);gap:20px;max-width:1500px;margin-left:auto;margin-right:auto;padding:10px}.content-container>:not(.section){order:1}.section{grid-column:span 12;outline:solid;padding:10px;margin:0}@media(min-width:900px){.section{grid-column:span 6}}.section.full-width{grid-column:span 12;overflow-x:auto}@media(min-width:900px){.section.tall{grid-row:span 2}}.trigger-table{border-collapse:collapse;margin-left:auto;margin-right:auto;width:100%;max-width:300px}.trigger-table th,.trigger-table td{padding:8px 12px;text-align:left;border:1px solid #ddd}.trigger-table th{background-color:#f2f2f2;font-weight:600}.trigger-table td:last-child{text-align:center;width:100px}.trigger-table tbody tr:hover{background-color:#f5f5f5}.trigger-table label{cursor:pointer;display:block}.trigger-table input[type=checkbox]{width:18px;height:18px;cursor:pointer}.matches-table{border-collapse:collapse;margin-left:auto;margin-right:auto;font-size:.9rem}.matches-table th,.matches-table td{padding:8px 10px;text-align:left;border:1px solid #ddd}.matches-table th{background-color:#f2f2f2;position:relative}.matches-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.matches-table th.sortable:hover{background-color:#e0e0e0}.matches-table th.sorted-asc:after{content:" ▲";font-size:.7em}.matches-table th.sorted-desc:after{content:" ▼";font-size:.7em}.matches-table th.col-group-header{text-align:center;font-weight:700;border-bottom:2px solid #999}.matches-table th.col-group-info{background-color:#e3f2fd}.matches-table th.col-group-timestamps{background-color:#fff3e0}.matches-table th.col-group-recordings{background-color:#e8f5e9}.matches-table th.col-group-screenshots{background-color:#fce4ec}.matches-table td.col-info{background-color:#f5faff}.matches-table td.col-timestamps{background-color:#fffaf5}.matches-table td.col-recordings{background-color:#f5fff5}.matches-table td.col-screenshots{background-color:#fff5f8}.matches-table tbody tr:hover td{background-color:#f1f1f1!important}.file-link{color:#06c;cursor:pointer;text-decoration:underline}.file-link:hover{color:#049}.file-link:active{color:#026}.matches-button{margin:10px}input,select{margin:5px}ol{padding-left:20px;text-align:left;margin-left:auto;margin-right:auto}ol li{margin-bottom:0}.connection-helper-steps{text-align:left;margin-left:auto;margin-right:auto;display:inline-block}.chapters-options{text-align:left;display:inline-block;margin-bottom:15px}.chapters-option-row{margin:8px 0;display:flex;align-items:center;gap:8px}.chapters-option-row label{display:flex;align-items:center;gap:8px;cursor:pointer}.chapters-option-row>label:first-child{min-width:120px}.chapters-option-row input[type=checkbox]{width:16px;height:16px;cursor:pointer}.chapters-output{margin-top:15px}.chapters-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding:0 5px}.chapters-header span{font-size:.9em;color:#666}.chapters-textarea{width:100%;max-width:600px;height:200px;font-family:monospace;font-size:.85em;padding:10px;border:1px solid #ccc;border-radius:5px;resize:vertical;background-color:#f9f9f9}.info-box{background-color:#e7f3ff;border:1px solid #b8daff;border-radius:5px;padding:15px;margin:10px 0}.success-indicator{color:#28a745;font-weight:700}.warning-box{background-color:#fff3cd;border:2px solid #ffc107;border-radius:5px;padding:15px;margin:10px 0}.warning-box strong{color:#856404}.warning-indicator{color:#856404;font-weight:700}.lower-third-url{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin-bottom:10px}.lower-third-url code{background:#f1f1f1;padding:4px 8px;border-radius:4px;word-break:break-all}.lower-third-live{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:20px;margin:15px 0}.lower-third-preview{position:relative;width:480px;height:270px;overflow:hidden;outline:1px solid #999;background:repeating-conic-gradient(#ccc,#ccc 25%,#eee 0%,#eee 50%) 50% / 20px 20px}.lower-third-preview iframe{width:1920px;height:1080px;border:0;transform:scale(.25);transform-origin:0 0}.lower-third-table{max-width:none}.lower-third-table input[type=text]{width:100%;padding:4px}.lower-third-table td:last-child{width:1%;white-space:nowrap}.lower-third-table tr.on-air td{background-color:#d4edda}.lower-third-preview-label{position:absolute;top:6px;left:6px;padding:0 8px;border-radius:4px;background:#0009;color:#fff;font-size:.8rem}.lower-third-table button{margin:0 2px}.lower-third-table button.lower-third-show{min-width:70px}.lower-third-table button.lower-third-show:disabled{pointer-events:none}.lower-third-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px}.lower-third-import{width:100%;max-width:600px;font-family:monospace}.obs-setup-options{display:flex;flex-direction:column;align-items:center;gap:4px;margin-bottom:10px}.obs-setup-options details{margin-top:5px}.obs-setup-url{width:min(600px,80vw)}.obs-setup-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin:10px 0}button.danger{background-color:#a32020}button.danger:hover,button.danger:focus{background-color:#c43030}button.danger:disabled{background-color:#ccc}.obs-setup-warnings{text-align:left;max-width:900px;margin:10px auto;padding-left:20px;color:#8a5a00}.obs-setup-log{text-align:left;max-width:900px;max-height:200px;overflow-y:auto;margin:10px auto;padding:8px;background:#f1f1f1;border-radius:4px;font-size:.85rem;white-space:pre-wrap}.obs-camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:15px;margin:10px 0}.obs-camera-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;border:1px solid #ddd;border-radius:5px}.obs-camera-card select,.obs-camera-card input[type=text]{max-width:240px}.obs-camera-help{margin-bottom:10px}.obs-camera-help p{max-width:800px;margin:6px auto}.obs-camera-preview{width:240px;height:135px;display:flex;align-items:center;justify-content:center;background:#222;color:#999;overflow:hidden}.obs-camera-preview img{width:100%;height:100%;object-fit:contain}.obs-source-warning{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vh;padding:4vw;background:#b71c1c;color:#fff;text-align:center;font-size:max(16px,2.4vw);line-height:1.4}.obs-source-warning h1{font-size:2em;line-height:1.15}.obs-source-warning-icon{width:2.4em;height:2.4em;flex-shrink:0;border:.15em solid white;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.6em;font-weight:700}.obs-source-warning ol{text-align:left;max-width:40em;padding-left:1.4em}.obs-source-warning li{margin-bottom:.4em}.obs-source-warning strong{word-break:break-all}.obs-source-warning-note{font-size:.75em;opacity:.9;max-width:50em}.lan-camera .section{text-align:left}.lan-camera-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:.5rem 0}.lan-camera-preview{display:block;width:100%;max-width:640px;aspect-ratio:16 / 9;margin-top:.5rem;background:#000}.lan-camera-hint{font-size:.9em;color:#555}.lan-camera-live{color:#1b7f3b;font-weight:700}
