*{margin:0;padding:0;box-sizing:border-box}body{background:#1e1e1e;color:#ddd;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;height:100vh;overflow:hidden}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#2d2d2d;padding:2rem;border-radius:8px;border:1px solid #555;text-align:center;max-width:400px;width:90%}.modal-content h2{color:#0ff;margin-bottom:1rem}.modal-content p{margin-bottom:1.5rem;color:#ccc}.modal-file-controls{display:flex;justify-content:center}.modal-btn{background:#0ff;color:#1e1e1e;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:700;transition:all .2s ease}.modal-btn:hover{background:#0cc;transform:translateY(-1px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container{display:flex;flex-direction:column;height:100vh}.header{background:#2d2d2d;padding:1rem;border-bottom:1px solid #444;display:flex;justify-content:space-between;align-items:center;gap:1rem}.header h1{color:#0ff;font-size:1.5rem}.file-controls{display:flex;align-items:center}.session-info{display:flex;align-items:center;gap:1rem;font-family:monospace}#current-command{color:#fa0;font-weight:700}#session-time{color:#aaa;font-family:monospace;margin-left:1rem}.main-content{flex:1;display:flex;min-height:0;position:relative}.terminal-container{flex:1;padding:1rem;min-height:0;transition:margin-right .3s ease}.terminal-container.sidebar-open{margin-right:300px}.command-sidebar{position:fixed;top:0;right:-300px;width:300px;height:100vh;background:#2d2d2d;border-left:1px solid #444;transition:right .3s ease;z-index:100;display:flex;flex-direction:column}.command-sidebar.open{right:0}.sidebar-header{padding:1rem;border-bottom:1px solid #444;display:flex;justify-content:space-between;align-items:center;background:#353535}.sidebar-header h3{margin:0;color:#0ff;font-size:1.1rem}.close-btn{background:none;border:none;color:#ccc;font-size:1.5rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:2px;transition:background .2s ease}.close-btn:hover{background:#555;color:#fff}.sidebar-content{flex:1;overflow:hidden}.command-list{height:100%;overflow-y:auto;padding:.5rem 0}.command-item{padding:.75rem 1rem;border-bottom:1px solid #3a3a3a;cursor:pointer;transition:background .2s ease;display:flex;flex-direction:column;gap:.25rem}.command-item:hover{background:#3a3a3a}.command-item.active{background:#06c;color:#fff}.command-text{font-family:monospace;font-size:.9rem;color:#fa0;font-weight:700}.command-time{font-family:monospace;font-size:.8rem;color:#aaa}#terminal{height:100%;border:1px solid #555;border-radius:4px}.controls{background:#2d2d2d;padding:1rem;border-top:1px solid #444;display:flex;flex-direction:column;gap:1rem}.controls-bottom{display:flex;justify-content:space-between;align-items:center;gap:1rem}.controls-left,.controls-center{display:flex;align-items:center;gap:.5rem}.controls-right{display:flex;align-items:center;gap:.5rem;min-width:100px}.control-btn{background:#3d3d3d;border:1px solid #555;color:#ddd;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:all .2s ease}.control-btn:hover{background:#4d4d4d;border-color:#666}.control-btn:active{background:#2d2d2d}.control-btn:disabled{background:#1d1d1d;color:#666;cursor:not-allowed;border-color:#333}.control-btn:disabled:hover{background:#1d1d1d;color:#666;border-color:#333}.timeline-container{display:flex;flex-direction:column;gap:.5rem}.timeline{position:relative;height:60px;background:#3d3d3d;border:1px solid #555;border-radius:4px;cursor:pointer;overflow:hidden}.timeline-progress{position:absolute;top:0;left:0;height:100%;background:linear-gradient(90deg,#0ff,#09c);width:0%;transition:width .1s ease}.timeline-commands{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.command-marker{position:absolute;top:0;width:2px;height:100%;background:#fa0;opacity:.8;pointer-events:auto;cursor:pointer}.command-tooltip{position:absolute;background:#000;color:#fff;padding:6px 10px;border-radius:4px;font-size:.8rem;font-family:monospace;white-space:nowrap;z-index:1000;pointer-events:none;box-shadow:0 2px 8px #00000080;border:1px solid #333;max-width:250px;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .2s ease}.command-tooltip.visible{opacity:1}.command-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000}.timeline-scrubber{position:absolute;top:0;left:0;width:4px;height:100%;background:#fff;transform:translate(-2px);opacity:.9;box-shadow:0 0 4px #ffffff80}.bookmarks{display:flex;gap:.25rem;min-height:20px;align-items:center}.bookmark{background:#ff6b6b;color:#fff;padding:.25rem .5rem;border-radius:3px;font-size:.8rem;cursor:pointer;transition:all .2s ease;position:relative}.bookmark:hover{background:#ff5252;transform:translateY(-1px)}.bookmark:before{content:"";position:absolute;top:-8px;left:50%;transform:translate(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:8px solid #ff6b6b}.playing .play-icon{display:none}.playing .pause-icon{display:inline!important}@media (max-width: 768px){.header{flex-direction:column;gap:.5rem;text-align:center}.session-info{justify-content:center}.controls-bottom{flex-direction:column;gap:.5rem}.controls-left,.controls-center{flex-wrap:wrap;justify-content:center}.command-sidebar{width:100%;right:-100%}.command-sidebar.open{right:0}.terminal-container.sidebar-open{margin-right:0}}/**
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
* https://github.com/chjj/term.js
* @license MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Originally forked from (with the author's permission):
*   Fabrice Bellard's javascript vt100 for jslinux:
*   http://bellard.org/jslinux/
*   Copyright (c) 2011 Fabrice Bellard
*   The original design remains. The terminal itself
*   has been extended to include xterm CSI codes, among
*   other features.
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}
