*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0a0a;--bg1:#0f0f0f;--bg2:#141414;--border:#1e1e1e;--border2:#2a2a2a;--text:#d0d0d0;--text2:#888;--text3:#444;--accent:#5a8f5a}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:Berkeley Mono,Iosevka,Fira Mono,JetBrains Mono,ui-monospace,monospace;font-size:13px;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.layout{display:flex;flex-direction:column;min-height:100%}header{border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;align-items: center;padding:10px 24px}.header-left{display:flex;align-items: center;gap:20px}.header-logo{color:var(--text3);letter-spacing:.05em;font-size:12px}.header-nav{display:flex;gap:2px}.nav-link{color:var(--text3);border-radius:2px;padding:3px 8px;transition:color .1s;font-size:12px}.nav-link:hover{color:var(--text2)}.nav-link.active{color:var(--text)}.header-right{color:var(--text3);display:flex;align-items: center;gap:12px;font-size:11px}.header-right .logout{cursor:pointer}.header-right .logout:hover{color:var(--text2)}.page{flex:1;width:100%;max-width:960px;margin:0 auto;padding:24px}.login-page{display:flex;flex-direction:column;justify-content:center;align-items: center;gap:12px;height:100%}.login-title{color:var(--text3);font-size:12px}.login-btn{background:var(--bg1);border:1px solid var(--border2);color:var(--text2);padding:8px 18px;transition:border-color .15s,color .15s;font-size:12px}.login-btn:hover{color:var(--text);border-color:#555}.list{display:flex;flex-direction:column;gap:2px}.run-row{display:grid;grid-template-columns:60px 180px 1fr 96px 68px;background:var(--bg1);border:1px solid var(--border);cursor:pointer;align-items: center;gap:12px;padding:7px 10px;transition:border-color .1s}.run-row:hover{border-color:var(--border2)}.cell-sha{color:var(--text3);font-size:11px}.cell-repo{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell-ref{color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.cell-ts{color:var(--text3);font-size:11px}.badge{display:inline-block;border-radius:2px;padding:2px 6px;font-size:10px}.badge-pending{color:#666;background:#141414}.badge-running{color:#b88a00;background:#1a1400}.badge-success{color:#4a904a;background:#0a120a}.badge-failed{color:#a04040;background:#120a0a}.detail-back{color:var(--text3);cursor:pointer;display:inline-block;margin-bottom:16px;font-size:12px}.detail-back:hover{color:var(--text2)}.detail-meta{display:flex;color:var(--text3);flex-wrap:wrap;align-items: center;gap:16px;margin-bottom:12px;font-size:11px}.logbox{border:1px solid var(--border);overflow-y:auto;white-space:pre-wrap;word-break:break-all;background:#060606;height:calc(100vh - 190px);padding:12px 14px;font-size:11.5px;line-height:1.7}.log-line{color:#999;display:block}.log-sep{color:#333}.repo-row{display:flex;background:var(--bg1);border:1px solid var(--border);justify-content:space-between;align-items: center;gap:12px;padding:7px 10px}.repo-name{color:var(--text);font-size:12px}.repo-private{color:var(--text3);margin-left:6px;font-size:10px}.hook-btn{background:var(--bg2);border:1px solid var(--border2);color:var(--text3);flex-shrink:0;padding:3px 10px;transition:color .1s,border-color .1s;font-size:11px}.hook-btn:hover{color:var(--text2);border-color:#555}.hook-btn:disabled{opacity:.4;cursor:default}.hook-ok{color:var(--accent);flex-shrink:0;font-size:11px}.empty{color:var(--text3);padding:16px 0;font-size:12px}.section-label{color:var(--text3);margin-bottom:10px;font-size:11px}
