.button{height:36px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid transparent;font-weight:500;font-size:var(--text-base);white-space:nowrap;box-shadow:var(--shadow-xs);transition:background var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition),transform var(--transition)}.button:hover{text-decoration:none}.button:active{transform:scale(.98)}.button-sm{height:30px;padding:0 12px;border-radius:var(--radius-xs);box-shadow:none}
.button-primary{background:var(--primary);color:var(--primary-contrast);border-color:var(--primary)}.button-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:var(--primary-contrast)}.button-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text-soft)}.button-secondary:hover,.button-quiet:hover{background:var(--surface-alt);color:var(--text)}.button-quiet{background:transparent;border-color:transparent;color:var(--text-secondary);box-shadow:none}
.icon-button{width:36px;height:36px;padding:0;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text-soft);display:grid;place-items:center;box-shadow:var(--shadow-xs);transition:all var(--transition)}.icon-button:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.icon-button svg{width:18px;height:18px}
.link-button,.link-danger{border:0;background:none;min-height:32px;padding:5px 0;color:var(--nav-muted);text-align:left;font-size:var(--text-sm)}.link-button:hover{color:#fff}.link-danger{color:var(--danger)}
.panel,.repository-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.panel{padding:20px}.type-label{display:block;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:var(--text-xs);font-weight:500;margin-bottom:2px}
.status{display:inline-flex;align-items:center;width:max-content;gap:6px;height:22px;padding:0 8px;border-radius:var(--radius-xs);font-size:var(--text-sm);font-weight:500;white-space:nowrap;color:var(--text-secondary);background:var(--surface-sunken)}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--subtle)}.status-updated,.status-success{color:var(--success);background:var(--success-bg)}.status-updated:before,.status-success:before{background:var(--success-dot)}.status-update_available{color:var(--warning);background:var(--warning-bg)}.status-update_available:before{background:var(--warning-dot)}.status-local_changes,.status-connection_error,.status-git_error,.status-failed{color:var(--danger);background:var(--danger-bg)}.status-local_changes:before,.status-connection_error:before,.status-git_error:before,.status-failed:before{background:var(--danger-dot)}
.stat-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:24px}.stat-filter{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px 16px;border-radius:10px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-xs);text-align:left;color:var(--text);transition:border-color var(--transition),box-shadow var(--transition)}.stat-filter:hover{border-color:var(--border-hover)}.stat-filter[aria-pressed="true"]{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}.stat-label{display:flex;align-items:center;gap:8px;font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.stat-dot{width:6px;height:6px;border-radius:50%;background:var(--subtle)}.stat-value{font-size:var(--text-2xl);font-weight:600;line-height:1.2;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat-good .stat-dot{background:var(--success-dot)}.stat-warn .stat-dot{background:var(--warning-dot)}.stat-bad .stat-dot{background:var(--danger-dot)}.stat-warn.has-value .stat-value{color:var(--warning)}.stat-bad.has-value .stat-value{color:var(--danger)}
.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.chip-group{display:flex;gap:4px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-soft);font-size:var(--text-base);font-weight:500;transition:background var(--transition),border-color var(--transition),color var(--transition)}.chip:hover{border-color:var(--border-hover)}.chip[aria-pressed="true"]{background:var(--chip-active);border-color:var(--chip-active);color:var(--chip-active-text)}.chip-count{font-size:var(--text-xs);color:var(--subtle);font-variant-numeric:tabular-nums}
.search-input{height:34px;width:240px;max-width:100%;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:var(--text-base);box-shadow:var(--shadow-xs);transition:border-color var(--transition),box-shadow var(--transition)}.search-input::placeholder{color:var(--subtle)}.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring);outline:0}
.target-columns,.target-row{display:grid;grid-template-columns:minmax(0,2.4fr) 136px 160px minmax(0,1.2fr) 150px;gap:16px}.target-columns{padding:0 20px;margin-bottom:12px;font-size:var(--text-xs);font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--subtle)}.target-columns span:last-child{text-align:right}
.repository-card{overflow:hidden}.repository-head{display:flex;align-items:center;gap:12px;padding:10px 20px;background:var(--surface-alt);border-bottom:1px solid var(--border);flex-wrap:wrap}.repository-head h3{margin:0;font-size:var(--text-lg)}.type-tag{font-size:10px;font-weight:600;letter-spacing:.08em;padding:3px 7px;border-radius:5px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary)}.repo-meta{display:flex;align-items:center;gap:10px;margin-left:auto;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--muted)}.branch-pill{padding:1px 6px;border-radius:4px;background:var(--surface-sunken);color:var(--text-soft)}
.target-item+.target-item{border-top:1px solid var(--border-soft)}.target-row{align-items:center;padding:10px 20px}.target-name{display:flex;flex-direction:column;gap:2px;min-width:0}.target-name a{color:var(--text);font-size:var(--text-md);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-name a:hover{color:var(--primary)}.target-name span{font-size:var(--text-sm);color:var(--subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.commit-pair{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap}.commit-arrow{color:var(--subtle)}.commit-new{color:var(--warning);font-weight:500}
.security-toggle{display:flex;align-items:center;gap:8px;height:30px;padding:0 8px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-soft);font-size:var(--text-base);text-align:left;min-width:0;max-width:100%;justify-self:start}button.security-toggle:hover{background:var(--surface-sunken)}.security-icon{font-size:var(--text-sm);font-weight:600;color:var(--muted)}.security-ok .security-icon{color:var(--success)}.security-warning .security-icon{color:var(--warning)}.security-critical .security-icon{color:var(--danger)}.security-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.security-unknown{color:var(--muted)}.security-chevron{width:14px;height:14px;fill:none;stroke:var(--subtle);stroke-width:1.8;flex:0 0 auto;transition:transform var(--transition)}.security-toggle[aria-expanded="true"] .security-chevron{transform:rotate(180deg)}
.security-drawer{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;padding:0 20px 14px}.security-drawer[hidden]{display:none}.check-chip{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-soft);background:var(--surface-alt);font-size:var(--text-sm);color:var(--text-soft)}.check-chip>span:first-child{font-weight:600;color:var(--warning)}.check-chip>span:last-child{display:flex;flex-direction:column;min-width:0}.check-chip small{color:var(--muted);font-size:var(--text-xs);line-height:1.4}.check-ok>span:first-child{color:var(--success)}.check-critical>span:first-child{color:var(--danger)}.check-skipped>span:first-child{color:var(--subtle)}.security-drawer .button-security{align-self:center;justify-self:start;width:auto}
.row-actions,.table-actions,.form-actions,.detail-actions,.modal-actions{display:flex;gap:8px;align-items:center}.target-row .row-actions{justify-content:flex-end}
.alert{padding:12px 14px;border-radius:var(--radius-sm);margin-bottom:18px;font-size:var(--text-base)}.alert-danger{background:var(--danger-bg);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 28%,transparent)}.alert-success{background:var(--success-bg);color:var(--success);border:1px solid color-mix(in srgb,var(--success) 28%,transparent)}
.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}table{width:100%;border-collapse:collapse;font-size:var(--text-base)}th,td{padding:10px 16px;text-align:left;border-bottom:1px solid var(--border-soft);vertical-align:middle}th{background:var(--surface-alt);color:var(--subtle);text-transform:uppercase;letter-spacing:.04em;font-size:var(--text-xs);font-weight:500}tbody tr{transition:background var(--transition)}tbody tr:hover{background:var(--surface-alt)}tbody tr:last-child td{border-bottom:0}.table-actions{justify-content:flex-end}.table-actions form{margin:0}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:940px}.form-stack{display:grid;gap:16px}.form-grid label,.form-stack label{display:flex;flex-direction:column;gap:6px;font-size:var(--text-base);font-weight:500;color:var(--text-soft)}.form-grid input,.form-grid select,.form-grid textarea,.form-stack input{width:100%;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:8px 12px;min-height:36px;font-size:var(--text-md);box-shadow:var(--shadow-xs);transition:border-color var(--transition),box-shadow var(--transition),background var(--transition)}.form-grid input:hover,.form-grid select:hover,.form-grid textarea:hover,.form-stack input:hover{border-color:var(--border-hover)}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.form-stack input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring);outline:0}.form-grid textarea{resize:vertical}.form-grid small{font-weight:400;color:var(--muted);font-size:var(--text-sm)}.form-grid .field-error{color:var(--danger);font-weight:500}.span-2{grid-column:1/-1}
.empty-state{padding:40px 24px;text-align:center;font-size:var(--text-base);color:var(--muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius)}.empty-state h3{color:var(--text);margin-bottom:6px}.empty-state p{margin:0}.empty-inline{padding:14px 20px;margin:0;font-size:var(--text-base);color:var(--muted)}
.detail-list{display:grid;margin:0}.detail-list>div,.confirm-list>div{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--border-soft);font-size:var(--text-base)}dt{color:var(--muted);font-size:var(--text-base)}dd{margin:0;min-width:0;overflow-wrap:anywhere}
.diff-panel pre,.deployment-output{background:var(--code-bg);color:var(--code-text);border:1px solid color-mix(in srgb,var(--border) 55%,transparent);border-radius:var(--radius-sm);padding:16px;white-space:pre-wrap;overflow:auto;max-height:420px}
.modal{width:min(580px,calc(100% - 32px));border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;background:var(--surface-raised);color:var(--text);box-shadow:var(--shadow-lg)}.modal[open]{animation:modal-in 220ms var(--transition)}.modal::backdrop{background:var(--overlay);backdrop-filter:blur(3px)}.modal-close{float:right;border:0;background:transparent;color:var(--muted);min-height:32px}.confirm-list{margin:16px 0}.operation-result{margin-top:14px;white-space:pre-wrap;font-size:var(--text-base)}
.toast{position:fixed;right:20px;bottom:20px;z-index:100;max-width:min(380px,calc(100% - 32px));background:var(--text);color:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:12px 16px;font-size:var(--text-base);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity var(--transition),transform var(--transition)}.toast.is-visible{opacity:1;transform:none}@keyframes modal-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
.detail-actions,.modal-actions{margin-top:20px}.form-actions{padding-top:4px}
.security-providers{display:grid;gap:8px;min-width:190px}.security-provider{border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden}.security-provider summary,.security-summary{min-height:40px;display:flex;align-items:center;gap:9px;padding:8px 10px;list-style:none;cursor:pointer}.security-provider summary::-webkit-details-marker{display:none}.security-provider summary>span:nth-child(2),.security-summary>div{display:flex;min-width:0;flex:1;flex-direction:column}.security-provider summary strong,.security-summary strong{font-size:var(--text-base);font-weight:500}.security-provider summary small,.security-summary small{color:var(--muted);font-size:var(--text-sm)}.security-provider summary svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;transition:transform var(--transition)}.security-provider[open] summary svg{transform:rotate(180deg)}.security-mark{width:22px;height:22px;display:grid;place-items:center;border-radius:50%;font-size:var(--text-sm);font-weight:600;background:var(--surface-sunken);color:var(--muted)}.security-provider-ok .security-mark{color:var(--success);background:var(--success-bg)}.security-provider-warning{border-color:color-mix(in srgb,var(--warning) 38%,var(--border))}.security-provider-warning .security-mark{color:var(--warning);background:var(--warning-bg)}.security-provider-critical{border-color:color-mix(in srgb,var(--danger) 38%,var(--border))}.security-provider-critical .security-mark{color:var(--danger);background:var(--danger-bg)}.security-details{padding:4px 10px 10px;border-top:1px solid var(--border-soft)}.security-details ul{display:grid;gap:2px;margin:5px 0 8px;padding:0;list-style:none}.security-check{display:flex;gap:8px;padding:6px 0}.security-check>span{font-weight:600;color:var(--warning)}.security-check-ok>span{color:var(--success)}.security-check-critical>span{color:var(--danger)}.security-check-skipped>span{color:var(--subtle)}.security-check div{display:flex;min-width:0;flex-direction:column}.security-check strong{font-size:var(--text-base);font-weight:500}.security-check small{color:var(--muted);font-size:var(--text-sm);line-height:1.4}.button-security{width:100%;color:var(--warning);border-color:color-mix(in srgb,var(--warning) 35%,var(--border));background:var(--warning-bg)}.button-security:hover{border-color:var(--warning);color:var(--warning)}.security-panel{margin-bottom:24px}.security-panel>.security-providers{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.button-icon{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}.button-sm{gap:6px}.button-sm .button-icon{width:14px;height:14px}.button[aria-busy="true"] .button-icon{animation:spin 900ms linear infinite}
.check-overlay{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:24px;border:0;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(10px);color:var(--text)}.check-overlay[open]{display:grid;place-items:center;animation:overlay-in 240ms var(--transition)}.check-overlay::backdrop{background:var(--overlay)}
.check-stage{width:min(640px,100%);max-height:100%;display:flex;flex-direction:column;align-items:center;gap:10px;padding:32px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-lg);text-align:center}.check-stage h2{margin:8px 0 0;font-size:var(--text-xl)}.check-current{margin:0;min-height:1.5em;font-size:var(--text-md);color:var(--text-secondary)}
.check-radar{position:relative;width:72px;height:72px;display:grid;place-items:center;color:var(--primary)}.check-radar span{position:absolute;inset:0;border-radius:50%;border:2px solid var(--primary);opacity:0;animation:radar 2.4s ease-out infinite}.check-radar span:nth-child(2){animation-delay:.8s}.check-radar span:nth-child(3){animation-delay:1.6s}.check-radar svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;animation:spin 1.4s linear infinite}.check-overlay.is-done .check-radar span{animation:none}.check-overlay.is-done .check-radar svg{animation:none}.check-overlay.is-done .check-radar{color:var(--success)}
.check-progress{width:100%;height:6px;margin-top:6px;border-radius:999px;background:var(--surface-sunken);overflow:hidden}.check-progress span{display:block;width:0;height:100%;border-radius:inherit;background:var(--primary);transition:width 400ms var(--transition)}.check-count{margin:0;font-size:var(--text-sm);color:var(--muted);font-variant-numeric:tabular-nums}
.check-log{width:100%;max-height:min(46vh,420px);overflow-y:auto;margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;text-align:left}.check-entry{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--surface-alt);font-size:var(--text-base);animation:entry-in 260ms var(--transition)}.check-entry>div{min-width:0}.check-entry strong{font-weight:500}.check-entry ul{margin:4px 0 0;padding:0;list-style:none;color:var(--muted);font-size:var(--text-sm)}
.check-entry-icon{width:20px;height:20px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;font-size:var(--text-sm);font-weight:700}.check-entry.is-running .check-entry-icon{border:2px solid var(--border-strong);border-top-color:var(--primary);animation:spin 800ms linear infinite}.check-entry.is-running strong{color:var(--text-secondary)}.tone-ok .check-entry-icon{color:var(--success);background:var(--success-bg)}.tone-warn .check-entry-icon{color:var(--warning);background:var(--warning-bg)}.tone-bad .check-entry-icon,.tone-error .check-entry-icon{color:var(--danger);background:var(--danger-bg)}.tone-warn{border-color:color-mix(in srgb,var(--warning) 30%,var(--border-soft))}.tone-bad,.tone-error{border-color:color-mix(in srgb,var(--danger) 30%,var(--border-soft))}
.check-overlay-actions{display:flex;gap:8px;justify-content:center;margin-top:10px}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes radar{0%{transform:scale(.45);opacity:.55}100%{transform:scale(1.35);opacity:0}}@keyframes entry-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes overlay-in{from{opacity:0}to{opacity:1}}
