:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0}body{margin:0;min-width:320px;min-height:100vh}a{color:inherit;text-decoration:inherit}button{font-family:inherit;font-size:inherit;line-height:inherit}*{box-sizing:border-box}#root{width:100%;height:100vh;margin:0;padding:0}.app-layout{display:flex;flex-direction:column;height:100vh}.app-header{background:#24292e;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a}.header-left{display:flex;align-items:center;gap:.75rem}.app-title{text-decoration:none;color:#fff}.app-title h1{margin:0;font-size:1.5rem}.header-separator{color:#586069;font-size:1.25rem}.repo-link{color:#fff;text-decoration:none;font-size:1.25rem;font-weight:500}.repo-link:hover{text-decoration:underline}.header-center{position:absolute;left:50%;transform:translate(-50%)}.github-link{display:flex;align-items:center;color:#fff;opacity:.7;transition:opacity .2s}.github-link:hover{opacity:1}.user-menu{display:flex;align-items:center;gap:1rem}.user-avatar{width:32px;height:32px;border-radius:50%}.logout-btn{background:#586069;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer}.logout-btn:hover{background:#6a737d}.app-main{flex:1;overflow:hidden}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#f6f8fa}.login-container{background:#fff;padding:3rem;border-radius:12px;box-shadow:0 4px 6px #0000001a;text-align:center;max-width:400px}.login-container h1{margin-bottom:1rem;color:#24292e}.login-container p{color:#586069;margin-bottom:2rem}.github-login-btn{display:inline-flex;align-items:center;gap:.5rem;background:#24292e;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;font-size:1rem;cursor:pointer;transition:background .2s}.github-login-btn:hover{background:#1a1e22}.disclaimer{font-size:.875rem;color:#6a737d;margin-top:2rem}.token-form{margin-top:2rem}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#24292e}.token-input{width:100%;padding:.75rem;font-size:1rem;font-family:monospace;border:1px solid #e1e4e8;border-radius:6px;background:#f6f8fa}.token-input:focus{outline:none;border-color:#0366d6;background:#fff}.help-section{margin-top:2rem;text-align:left}.help-section details{background:#f6f8fa;padding:1rem;border-radius:6px;border:1px solid #e1e4e8}.help-section summary{cursor:pointer;font-weight:500;color:#0366d6}.help-section ol{margin-top:1rem;margin-left:1.5rem;line-height:1.8}.help-section code{background:#e1e4e8;padding:.2rem .4rem;border-radius:3px;font-size:.875rem}.help-section a{color:#0366d6;text-decoration:none}.help-section a:hover{text-decoration:underline}.error-message{background:#ffeef0;color:#d73a49;padding:1rem;border-radius:6px;margin-top:1rem;border:1px solid #fdaeb7}.callback-page{display:flex;align-items:center;justify-content:center;min-height:100vh}.loading,.error{text-align:center;padding:2rem}.error button{margin-top:1rem;background:#0366d6;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer}.home-page{max-width:800px;margin:0 auto;padding:3rem 2rem}.welcome-section{text-align:center;margin-bottom:3rem}.repo-form{display:flex;gap:1rem;margin-bottom:1.5rem}.note{text-align:center;color:#586069;font-size:.875rem;margin-bottom:2rem}.repo-input{flex:1;padding:.75rem;font-size:1rem;border:1px solid #e1e4e8;border-radius:6px}.explore-btn{background:#0366d6;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;cursor:pointer;font-size:1rem}.explore-btn:hover{background:#0256c7}.examples h3{margin-bottom:1rem}.examples ul{list-style:none;padding:0;display:flex;gap:1rem;flex-wrap:wrap}.examples button{background:#f6f8fa;border:1px solid #e1e4e8;padding:.5rem 1rem;border-radius:6px;cursor:pointer;transition:background .2s}.examples button:hover{background:#e1e4e8}.repository-page{height:100%;display:flex;overflow:hidden}.file-tree{width:300px;border-right:1px solid #e1e4e8;overflow-y:auto;padding:1rem}.file-tree h3{margin:0 0 1rem;font-size:1rem}.tree-node-content{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.tree-node-content:hover{background:#f6f8fa;border-radius:4px}.tree-node-icon{font-size:1rem}.tree-node-name{font-size:.875rem}.directory .tree-node-name{font-weight:500}.file-viewer{flex:1;display:flex;flex-direction:column;overflow:hidden}.file-header{padding:1rem;border-bottom:1px solid #e1e4e8;display:flex;justify-content:space-between;align-items:center}.file-header h3{margin:0;font-size:1rem;font-family:monospace}.file-language{font-size:.875rem;color:#586069;background:#f6f8fa;padding:.25rem .5rem;border-radius:4px}.file-content{flex:1;overflow:auto;background:#f6f8fa}.file-content pre{margin:0;padding:1rem;font-family:Consolas,Monaco,Courier New,monospace;font-size:.875rem;line-height:1.5}.code-line{display:flex}.line-number{color:#6a737d;margin-right:1rem;-webkit-user-select:none;user-select:none;text-align:right;min-width:3ch}.line-content{flex:1;white-space:pre}.file-viewer-with-history{flex:1;display:flex;flex-direction:column;overflow:hidden}.file-actions{display:flex;align-items:center;gap:1rem}.diff-toggle{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#586069;cursor:pointer}.diff-toggle input{cursor:pointer}.commit-info{padding:1rem;background:#f6f8fa;border-bottom:1px solid #e1e4e8;display:flex;align-items:center;gap:1rem}.commit-avatar{width:40px;height:40px;border-radius:50%}.commit-details{flex:1}.commit-link{text-decoration:none;color:inherit;display:block}.commit-link:hover .commit-message,.commit-link:hover .commit-sha{color:#0366d6;text-decoration:underline}.commit-message{font-weight:500;margin-bottom:.25rem;transition:color .2s}.commit-meta{font-size:.875rem;color:#586069;display:flex;gap:.5rem}.commit-sha{transition:color .2s}.code-line.added{background:#e6ffed}.code-line.removed{background:#ffeef0}.code-line.added .line-content:before{content:"+ ";color:#28a745;font-weight:700}.code-line.removed .line-content:before{content:"- ";color:#d73a49;font-weight:700}.history-slider-container{padding:1.5rem;background:#f6f8fa;border-top:1px solid #e1e4e8}.slider-labels{display:flex;justify-content:space-between;margin-bottom:1rem;font-size:.875rem;color:#586069;position:relative}.slider-date{color:#586069;display:flex;align-items:center;gap:.5rem}.slider-current-date{font-weight:600;color:#24292e;background:#f6f8fa;padding:.25rem .5rem;border-radius:4px;border:1px solid #e1e4e8}.load-more-btn{background:#0366d6;color:#fff;border:none;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;cursor:pointer;transition:background .2s}.load-more-btn:hover{background:#0256c7}.loading-more{font-size:.75rem;color:#586069;font-style:italic}.slider-hint{text-align:center;font-size:.75rem;color:#6a737d;margin:.5rem 0;opacity:.7}.slider-wrapper{position:relative;width:100%;margin-top:.5rem;height:40px}.history-slider{width:100%;height:40px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;outline:none;position:absolute;top:0;z-index:3;cursor:pointer}.history-slider::-webkit-slider-track{height:40px;background:transparent}.history-slider::-moz-range-track{height:40px;background:transparent}.history-slider::-webkit-slider-thumb{-webkit-appearance:none;width:1px;height:40px;background:transparent;cursor:pointer}.history-slider::-moz-range-thumb{width:1px;height:40px;background:transparent;cursor:pointer;border:none}.history-slider:focus{outline:none}.slider-wrapper:focus-within .time-thumb{box-shadow:0 0 0 3px #0366d64d}.time-track-container{position:absolute;top:0;left:0;right:0;height:100%;cursor:pointer;z-index:2;-webkit-user-select:none;user-select:none}.time-track{position:absolute;top:50%;transform:translateY(-50%);width:100%;height:8px;background:#e1e4e8;border-radius:4px}.time-tick{position:absolute;width:2px;height:24px;background:#6a737d;opacity:.4;transform:translate(-50%,-50%);top:50%;transition:all .2s;pointer-events:none}.time-track-container:hover .time-tick{opacity:.6}.time-tick.active{width:3px;height:28px;background:#0366d6;opacity:1;box-shadow:0 0 4px #0366d666}.time-thumb{position:absolute;width:20px;height:20px;background:#0366d6;border-radius:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 2px 4px #0003;pointer-events:none;z-index:2;transition:left .1s ease-out}
