.install-shell{max-width:720px;margin:0 auto;padding:48px 20px}.install-card{padding:36px}.install-header{text-align:center;margin-bottom:26px}.install-header h1{margin:0 0 6px;color:var(--ink);font-size:26px}.install-header p{margin:0;color:var(--muted)}.install-steps{display:flex;gap:6px;margin-bottom:30px}.install-steps span{flex:1;height:6px;border-radius:4px;background:var(--border)}.install-steps span.done{background:var(--success)}.install-steps span.active{background:var(--primary)}.check-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;margin-bottom:10px;border-radius:var(--radius-sm);border:1px solid var(--border)}.check-row.ok{border-color:#a9dec2;background:#f3fbf6}.check-row.fail{border-color:#efb8bc;background:#fff5f6}.check-row .check-label{font-weight:600;color:var(--ink)}.check-row .check-detail{font-size:13px;color:var(--muted)}.check-status{font-weight:700;font-size:13px;white-space:nowrap}.check-status.ok{color:var(--success)}.check-status.fail{color:var(--danger)}.install-card label{display:grid;gap:7px;margin-bottom:16px;color:var(--ink);font-weight:600}.install-card input,.install-card select{width:100%;height:46px;padding:0 14px;border:1px solid var(--border);border-radius:8px}.install-card small{display:block;margin-top:4px;font-weight:400;color:var(--muted)}.install-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.install-actions{display:flex;align-items:center;justify-content:space-between;margin-top:24px}.install-actions .link-back{color:var(--muted);font-weight:600}.danger-zone{margin-top:18px;padding:18px;border:1px solid #efb8bc;border-radius:var(--radius);background:#fff7f7}.danger-zone h3{margin:0 0 6px;color:var(--danger);font-size:16px}.danger-zone p{margin:0 0 12px;color:var(--muted);font-size:13px}.button-danger{border-color:var(--danger);background:var(--danger)}.button-danger:hover{background:#9f262d}@media(max-width:560px){.install-grid{grid-template-columns:1fr}}
.install-content-choice { margin: 0 0 24px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-sm); }
.install-content-choice legend { padding-inline: 6px; color: var(--ink); font-weight: 700; }
.install-card .install-content-choice label { display: flex; align-items: flex-start; gap: 12px; }
.install-card .install-content-choice input { flex: 0 0 20px; width: 20px; height: 20px; margin-top: 3px; accent-color: var(--primary); }
@media (max-width: 560px) {
    .install-shell { padding: 32px 16px; }
    .install-card { padding: 20px; }
    .install-content-choice { padding: 12px; }
    .install-actions { flex-wrap: wrap; gap: 16px; }
}

/* Thai placeholders in monospace JSON fields must use the site font, not the monospace fallback. */
.install-card textarea[name="enrollment_json"]::placeholder,.hybrid-code::placeholder{font-family:"Noto Sans Thai",system-ui,sans-serif;font-size:14px;line-height:1.6}
