:root{--font: system-ui, -apple-system, "Segoe UI", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic UI", "Yu Gothic", Meiryo, Roboto, "Noto Sans", "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", Consolas, "BIZ UDGothic", "Noto Sans Mono", monospace;--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f0f2f5;--border: #dde1e7;--border-strong: #c6ccd5;--text: #1c2430;--text-2: #5a6575;--accent: #1f5f8b;--accent-hover: #184c70;--accent-soft: #e6eff6;--success: #1e7a4c;--success-soft: #e5f4ec;--warning: #9a6200;--warning-soft: #fdf3dd;--danger: #b4232f;--danger-soft: #fbe9ea;--info: #1f5f8b;--info-soft: #e6eff6;--progress: #6a4fb3;--progress-soft: #efebf9;--radius: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .06);color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #12161c;--surface: #1a2028;--surface-2: #222a34;--border: #2e3744;--border-strong: #3c4757;--text: #e4e8ee;--text-2: #9aa5b4;--accent: #6fb0dd;--accent-hover: #8cc2e6;--accent-soft: #1d3446;--success: #5ccb92;--success-soft: #173426;--warning: #e6b450;--warning-soft: #3a2d12;--danger: #f07a83;--danger-soft: #3d1a1e;--info: #6fb0dd;--info-soft: #1d3446;--progress: #a993e6;--progress-soft: #2a2442;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.7;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"palt" 0;overflow-wrap:anywhere}h1,h2,h3{line-height:1.4;margin:0;font-weight:600}h1{font-size:20px}h2{font-size:15px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--text-2)}.small{font-size:12px}.nowrap{white-space:nowrap}.break{word-break:break-all}.pre{white-space:pre-wrap}.shell{display:grid;grid-template-columns:228px 1fr;min-height:100%}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;position:sticky;top:0;height:100vh}.brand{font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px;padding:4px 8px 16px;letter-spacing:.01em}.brand-mark{color:var(--accent);font-size:18px}.brand-lg{font-size:18px;padding:0 0 4px}.nav-item{display:block;padding:7px 10px;border-radius:6px;color:var(--text);font-weight:500}.nav-item:hover{background:var(--surface-2);text-decoration:none}.nav-item.active{background:var(--accent-soft);color:var(--accent)}.sidebar-foot{margin-top:auto;display:grid;gap:8px;border-top:1px solid var(--border);padding-top:12px}.user-name{font-weight:600}.main{min-width:0}.topbar{display:none}.content{padding:24px 28px 48px;max-width:1280px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}.page-header p{margin:2px 0 0}.page-actions{display:flex;gap:8px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.grid-2.tight{gap:12px}.grid-main{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px;align-items:start}.stack{display:grid;gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:16px}.stack>.card,.grid-2>.card{margin-bottom:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.project-head{margin-bottom:18px}.crumbs{font-size:12px;color:var(--text-2)}.project-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 12px}.subnav{display:flex;gap:2px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:thin}.subnav-item{padding:8px 12px;color:var(--text-2);white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;gap:6px;align-items:center}.subnav-item:hover{color:var(--text);text-decoration:none}.subnav-item.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.subnav-item.pending{opacity:.75}.subnav-flag{font-size:10px;border:1px solid var(--border-strong);border-radius:4px;padding:0 4px;line-height:1.5;color:var(--text-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-weight:500;font-size:13px;line-height:1.4;padding:7px 14px;border-radius:6px;cursor:pointer;background:var(--surface);color:var(--text);border:1px solid var(--border-strong)}.btn:hover:not(:disabled){background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-sm{padding:4px 10px;font-size:12px}.btn-block{width:100%}.btn-danger-ghost{color:var(--danger)}.btn-link{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;font-size:12px;padding:0 4px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input[type=text],input[type=email],input[type=password],input[type=search],input:not([type]),select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;padding:7px 10px;width:100%}textarea{resize:vertical;line-height:1.6}input[type=file]{font:inherit;font-size:13px}select{width:auto}.field select{width:100%}.form{display:grid;gap:14px}.field{display:grid;gap:4px}.field label{font-weight:600;font-size:13px}.field .req{color:var(--danger)}.field-invalid input,.field-invalid textarea,.field-invalid select{border-color:var(--danger)}.field-error{color:var(--danger);font-size:12px;margin:0}.hint{color:var(--text-2);font-size:12px;margin:4px 0 0}.form-actions{display:flex;justify-content:flex-end;gap:8px}.input-row,.upload-row,.row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.upload-row input[type=text]{flex:1;min-width:160px}.inline-form{margin-top:14px;border-top:1px solid var(--border);padding-top:12px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;font-weight:600;color:var(--text-2);padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:top}.table tr:last-child td{border-bottom:none}.table.compact td{padding:5px 10px}.list{list-style:none;margin:0;padding:0}.list-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--border)}.list-row:last-child{border-bottom:none}.list.compact .list-row{padding:5px 0}.list-title{font-weight:600}.badges{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}.dl{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;margin:0}.dl dt{color:var(--text-2);font-size:12px;padding-top:2px}.dl dd{margin:0;min-width:0}.dl-wide{grid-template-columns:120px 1fr}.cmd-list{margin:0;padding-left:18px}.hash{display:inline-flex;align-items:center;gap:4px}.check{display:inline-flex;gap:8px;align-items:center;text-align:right}.badge{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;line-height:1.5;padding:1px 8px;border-radius:999px;border:1px solid transparent;white-space:nowrap}.badge-neutral{background:var(--surface-2);color:var(--text);border-color:var(--border)}.badge-muted{background:var(--surface-2);color:var(--text-2)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-progress{background:var(--progress-soft);color:var(--progress)}.code-tag{font-family:var(--mono);font-size:11px;margin-left:8px;opacity:.75}.banner{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border-radius:6px;margin-bottom:12px;border:1px solid transparent}.banner-error{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 25%,transparent)}.banner-success{background:var(--success-soft);color:var(--success);display:block}.banner-info{background:var(--info-soft);color:var(--info);display:block}.banner-info .spinner{vertical-align:-2px;margin-right:6px}.state{padding:28px 12px;text-align:center;color:var(--text-2)}.state-loading{display:flex;gap:10px;align-items:center;justify-content:center}.state-title{font-weight:600;color:var(--text);margin:0 0 4px}.spinner{width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;display:inline-block;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2.5s}}.progress{position:relative;height:22px;background:var(--surface-2);border-radius:6px;overflow:hidden;margin-top:12px}.progress-bar{position:absolute;inset:0 auto 0 0;background:var(--accent-soft);transition:width .2s}.progress span{position:relative;font-size:12px;padding-left:10px;line-height:22px}.not-implemented{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:20px;display:grid;gap:8px;justify-items:start}.not-implemented p{margin:0}.center-screen{min-height:100vh;display:grid;place-items:center;padding:16px}.pipeline{list-style:none;margin:0;padding:0;display:grid;gap:6px}.pipeline-step{display:flex;align-items:center;gap:10px}.pipeline-step .dot{width:10px;height:10px;border-radius:50%;background:var(--border-strong);flex:none}.pipeline-done .dot{background:var(--success)}.pipeline-todo{color:var(--text-2)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:28px;display:grid;gap:14px}.login-card>p{margin:0}@media(max-width:960px){.grid-2,.grid-main{grid-template-columns:1fr}}@media(max-width:760px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:20;inset:0 auto 0 0;width:250px;transform:translate(-100%);transition:transform .2s;visibility:hidden}.sidebar.open{transform:none;visibility:visible;box-shadow:0 0 24px #0003}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.small-brand{padding:0;font-size:14px}.content{padding:16px}.dl,.dl-wide{grid-template-columns:1fr;gap:2px}.dl dd{margin-bottom:8px}.list-row{flex-wrap:wrap}}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.toolbar label{font-weight:600;font-size:13px}.toolbar select{min-width:280px;max-width:100%}.banner-warning{background:var(--warning-soft);color:var(--warning);display:block}.banner-warning-text{color:var(--warning)}.job-panel{border:1px solid var(--border);border-left:3px solid var(--progress);border-radius:6px;padding:10px 12px;background:var(--surface);display:grid;gap:6px}.job-panel.job-failed,.job-panel.job-dead{border-left-color:var(--danger)}.job-panel.job-cancelled{border-left-color:var(--border-strong)}.job-panel p{margin:0}.job-row{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center}.job-error{color:var(--danger)}.an-section h3{font-size:13px;margin:6px 0 2px;color:var(--text-2)}.bullet{margin:0;padding-left:18px}.bullet li{margin:2px 0}.check-row{display:flex;gap:8px;align-items:center;font-size:13px}.dep-editor{display:grid;gap:4px;margin-top:10px}.add{color:var(--success);font-weight:600}.del{color:var(--danger);font-weight:600}.approval-row{padding:6px 0;border-bottom:1px solid var(--border);display:grid;gap:2px}.approval-row:last-child{border-bottom:none}.diff{display:grid;gap:12px}.diff-file{border:1px solid var(--border);border-radius:6px;overflow:hidden}.diff-file-head{width:100%;text-align:left;background:var(--surface-2);border:none;border-bottom:1px solid var(--border);padding:7px 10px;cursor:pointer;font:inherit;color:var(--text)}.diff-reason{padding:6px 10px;font-size:12px;background:var(--info-soft);color:var(--text);border-bottom:1px solid var(--border)}.diff-body{overflow-x:auto;font-family:var(--mono);font-size:12px;line-height:1.55}.diff-body>div{display:grid;grid-template-columns:44px 44px 16px 1fr;min-width:max-content}.diff-body .ln{color:var(--text-2);text-align:right;padding-right:8px;user-select:none;border-right:1px solid var(--border)}.diff-body .mark{text-align:center;user-select:none}.diff-body code{white-space:pre;font-size:12px;padding-right:12px}.dl-add{background:color-mix(in srgb,var(--success) 12%,transparent)}.dl-del{background:color-mix(in srgb,var(--danger) 12%,transparent)}.dl-hunk{background:var(--info-soft);color:var(--info)}.dl-meta{color:var(--text-2);font-style:italic}.log-view{margin-top:12px;border:1px solid var(--border);border-radius:6px;overflow:hidden}.log-head{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:var(--surface-2)}.log-view pre{margin:0;padding:10px;max-height:420px;overflow:auto;font-family:var(--mono);font-size:12px;background:#11161d;color:#d6dde6;white-space:pre-wrap;word-break:break-all}.evidence-row{display:flex;gap:12px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--border)}.evidence-row:last-child{border-bottom:none}.shot{width:160px;max-height:110px;object-fit:cover;border:1px solid var(--border);border-radius:4px;flex:none}.ev-main{min-width:0}.table td.mono{min-width:160px}.dl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 16px;align-items:start}.dl-grid>.field:first-child{grid-column:1 / -1}.dl-checklist{display:flex;flex-direction:column;gap:6px;margin:4px 0 8px}.dl-check{display:flex;gap:8px;align-items:flex-start;font-size:14px;line-height:1.5;cursor:pointer}.dl-check input{margin-top:4px;flex:none}.dl-actions{display:flex;gap:8px;margin:8px 0 4px;flex-wrap:wrap}.dl-plain{list-style:none;margin:4px 0 0;padding:0}.dl-plain li{margin:2px 0}.delivery-preview{border-top:1px solid var(--border);margin-top:16px;padding-top:12px}.delivery-preview h3{font-size:15px;margin:12px 0 8px;overflow-wrap:anywhere}.dl-warn{min-width:240px}
