.substitute-dialog { color:var(--text); background:var(--panel); border:1px solid var(--line); border-radius:var(--r-xl) var(--r-xl) 0 0; box-shadow:var(--shadow-raise); width:min(100%, 560px); max-width:100%; margin:auto auto 0; padding:0; max-height:calc(100dvh - 24px); overflow:hidden; }
.substitute-dialog::backdrop { background:color-mix(in srgb, var(--text) 48%, transparent); }
.substitute-header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 20px 8px; }
.substitute-header h2 { margin:0; font-size:var(--fs-title-l); font-weight:700; }
.substitute-body { max-height:calc(100dvh - 104px); padding:8px 20px calc(24px + var(--safe-b)); overflow-y:auto; overscroll-behavior:contain; }
.substitute-body h3 { margin:24px 0 8px; font-size:var(--fs-title); font-weight:600; }
.substitute-help,.substitute-status,.substitute-end { font-size:var(--fs-label); color:var(--muted); line-height:1.6; overflow-wrap:anywhere; }
.substitute-status[data-error="true"] { color:var(--red); }
.substitute-summary { font-size:var(--fs-title); line-height:1.6; font-weight:600; overflow-wrap:anywhere; }
.substitute-privacy { margin:12px 0; padding:12px; border-radius:var(--r-sm); background:var(--warn-bg); color:var(--warn); font-size:var(--fs-body); line-height:1.6; }
.substitute-duration { display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:var(--fs-body-l); }
.substitute-dialog select,.substitute-url { min-height:44px; max-width:100%; font:inherit; border:1px solid var(--line-strong); border-radius:var(--r-sm); color:var(--text); background:var(--panel2); padding:8px 12px; }
.substitute-duration select { min-width:112px; width:112px; flex:0 0 112px; }
.substitute-candidates { border:0; padding:0; margin:24px 0 8px; min-width:0; }
.substitute-candidates legend { font-size:var(--fs-title); font-weight:600; margin-bottom:8px; }
.substitute-candidate { display:flex; align-items:flex-start; gap:12px; min-height:44px; padding:12px 0; border-bottom:1px solid var(--line); }
.substitute-candidate input { flex:none; width:20px; height:20px; margin:2px 0 0; accent-color:var(--gold); }
.substitute-candidate-copy { display:flex; flex-direction:column; gap:4px; min-width:0; overflow-wrap:anywhere; }
.substitute-candidate strong { font-size:var(--fs-body-l); font-weight:600; }
.substitute-candidate small { font-size:var(--fs-label); line-height:1.6; color:var(--muted); }
.substitute-button { min-height:44px; padding:10px 14px; border:1px solid var(--button-secondary-border); border-radius:var(--r-sm); background:var(--button-secondary); color:var(--button-secondary-text); font:600 var(--fs-body-l)/1.4 var(--font-ui); cursor:pointer; transition:background-color 120ms, opacity 120ms; }
.substitute-button.primary { display:block; width:100%; border-color:var(--gold); color:var(--gold-ink); background:var(--gold); }
.substitute-button:active { filter:brightness(.94); }
.substitute-button:disabled { opacity:.48; cursor:default; }
.substitute-dialog :focus-visible { outline:2px solid var(--gold); outline-offset:3px; }
.substitute-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.substitute-actions .substitute-button { flex:1; }
.substitute-output { margin-top:16px; }
.substitute-url { display:block; width:100%; box-sizing:border-box; font-size:var(--fs-label); font-family:var(--font-code); }
.substitute-link-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 0; border-bottom:1px solid var(--line); }
.substitute-link-copy { min-width:0; display:flex; flex-direction:column; gap:4px; font-size:var(--fs-body); }
.substitute-link-copy small { color:var(--muted); font-size:var(--fs-label); }
.substitute-link-actions { display:flex; flex-direction:column; flex:none; gap:8px; }
.substitute-link-actions .substitute-button { font-size:var(--fs-label); padding:8px 12px; }
.substitute-command { margin-top:16px; border-top:1px solid var(--line); padding-top:8px; }
.substitute-command .substitute-actions .primary { width:auto; }
.substitute-command-status { color:var(--red); font-size:var(--fs-body); line-height:1.6; }
@media (prefers-reduced-motion:reduce) { .substitute-dialog * { transition:none; scroll-behavior:auto; } }
